📄 callfromac.c
字号:
// CoolFish: 2001/10/03
else if (kindflag == FM_FIX_FMADV || kindflag == FM_FIX_FMFEED
|| kindflag == FM_FIX_FMSYNTHESIZE || kindflag == FM_FIX_FMDEALFOOD)
{
char tmpbuf[1024], flag[128];
if (kindflag == FM_FIX_FMADV) strcpy(flag, "ADV");
else if (kindflag == FM_FIX_FMFEED) strcpy(flag, "FEED");
else if (kindflag == FM_FIX_FMSYNTHESIZE) strcpy(flag, "SYN");
else if (kindflag == FM_FIX_FMDEALFOOD) strcpy(flag, "FOOD");
sprintf(tmpbuf, "%s::%d %s %s", flag,
CHAR_getInt(charaindex, CHAR_FMINDEX),
CHAR_getChar(charaindex, CHAR_FMNAME), data1);
// print("ACFixFMData tmpbuf:%s\n", tmpbuf);
LogFMPOP(tmpbuf);
}
}
void saacproto_ACFixFMPK_recv(int fd, char *result, int data, int winindex,
int loseindex)
{
int ret;
if (strcmp(result, SUCCESSFUL) == 0) ret = 1;
else ret = 0;
// print("FixFMPK_recv result:%s data:%d winindex:%d loseindex:%d\n", result, data, winindex, loseindex);
if (ret == 1)
{
char tmpbuf[256];
ACFixFMPK(winindex, loseindex, data);
sprintf(tmpbuf, "FMPK(家族PK)::win(优胜家族):%d lose(落败家族):%d point:%d", winindex, loseindex, data);
//print("FixFMPK tmpbuf:%s\n", tmpbuf);
LogFMPOP(tmpbuf);
}
}
void saacproto_ACGMFixFMData_recv(int fd, char *result, char *fmname, int charfdid)
{
int ret;
int clifd = getfdFromFdid(charfdid);
char buf[256];
if( CONNECT_checkfd(clifd) == FALSE )return;
if (strcmp(result, SUCCESSFUL) == 0) ret = 1;
else ret = 0;
print("GMFixFMData_recv result:%s\n", result);
if (ret == 1)
{
sprintf(buf, "修改%s资料OK!", fmname);
CHAR_talkToCli(CONNECT_getCharaindex(clifd) , -1, buf, CHAR_COLORWHITE);
}
else
{
sprintf(buf, "修改%s资料失败!", fmname);
CHAR_talkToCli(CONNECT_getCharaindex(clifd) , -1, buf, CHAR_COLORWHITE);
}
}
extern int familyTax[];
void saacproto_ACGetFMData_recv(int fd, char *result, int kindflag, int data,
int charfdid)
{
int ret;
char buf[256];
int clifd = getfdFromFdid(charfdid);
if( CONNECT_checkfd(clifd) == FALSE )return;
if (strcmp(result, SUCCESSFUL) == 0) ret = 1;
else ret = 0;
//print(" FMBank2_%d_%d_%d ", ret, kindflag, data );
if( ret == 0 ) return;
if( kindflag == 1 ) {
int fmindex = CHAR_getWorkInt(CONNECT_getCharaindex(clifd), CHAR_WORKFMINDEXI);
if( fmindex < 0 || fmindex >= FAMILY_MAXNUM ){
print(" fmindex:%d if FALSE !!\n", fmindex);
return;
}
familyTax[ fmindex] = data;
sprintf( buf, "B|T|%d", data );
lssproto_FM_send( clifd, buf );
}
}
void saacproto_ACFMClearPK_recv(int fd, char *result, char *fmname, int fmindex,
int index)
{
int ret, i = 0;
if (strcmp(result, SUCCESSFUL) == 0) ret = 1;
else ret = 0;
for (i = 0; i < MAX_SCHEDULEMAN * MAX_SCHEDULE; i++)
{
{
if (fmpks[i].flag == -1) continue;
if (fmpks[i].host_index == index
|| fmpks[i].guest_index == index)
{
fmpks[i].host_index = -1;
strcpy(fmpks[i].host_name, "");
fmpks[i].guest_index = -1;
strcpy(fmpks[i].guest_name, "");
fmpks[i].prepare_time = -1;
fmpks[i].max_player = -1;
fmpks[i].win = -1;
fmpks[i].flag = -1;
}
}
}
}
#ifdef _ACFMPK_LIST
void saacproto_ACSendFmPk_recv( int fd, int toindex, int flg)
{
char buf[256];
if( flg == 0){
sprintf( buf, "庄园挑战登录失败!!");
CHAR_talkToCli( toindex, -1, buf, CHAR_COLORRED);
}else{
sprintf( buf, "庄园挑战登录确认OK,请好好准备。");
CHAR_talkToCli( toindex, -1, buf, CHAR_COLORYELLOW);
}
}
void saacproto_ACLoadFmPk_recv(int fd, char *data)
{
char buf[10], fm_pk_data[128];
char token[256], skip[256];
int fm_pk_num , fmpks_pos=-1;
easyGetTokenFromString( data , 1 , buf , sizeof(buf));
fm_pk_num = atoi(buf);
sprintf(fm_pk_data , "%s", data+2 );
if( ((fmpks_pos=fm_pk_num*MAX_SCHEDULE)== -1) || (fm_pk_num > FMPOINTNUM) ){
print("\n err fm_pk_num(%d)", fm_pk_num );
return;
}
if (getStringFromIndexWithDelim(data,"|",2,token,sizeof(token))) {
fmpks[fmpks_pos+1].dueltime=atoi(token);
}
if (getStringFromIndexWithDelim(data,"|",3,token,sizeof(token))) {
fmpks[fmpks_pos+1].host_index=atoi(token);
}
if (getStringFromIndexWithDelim(data,"|",4,token,sizeof(token))) {
strcpy(fmpks[fmpks_pos+1].host_name,makeStringFromEscaped(token));
}
if (getStringFromIndexWithDelim(data,"|",5,token,sizeof(token))) {
fmpks[fmpks_pos+1].guest_index=atoi(token);
}
if (getStringFromIndexWithDelim(data,"|",6,token,sizeof(token))) {
strcpy(fmpks[fmpks_pos+1].guest_name,makeStringFromEscaped(token));
}
if (getStringFromIndexWithDelim(data,"|",7,token,sizeof(token))) {
fmpks[fmpks_pos+1].prepare_time=atoi(token);
}
if (getStringFromIndexWithDelim(data,"|",8,token,sizeof(token))) {
int maxnum = atoi( token);
if( maxnum < 50 ) maxnum = 50;
fmpks[fmpks_pos+1].max_player = maxnum;
}
if (getStringFromIndexWithDelim(data,"|",9,token,sizeof(token))) {
fmpks[fmpks_pos+1].flag=atoi(token);
}
if( fmpks[fmpks_pos+1].flag == FMPKS_FLAG_MANOR_OTHERPLANET ){
if (getStringFromIndexWithDelim(data,"|",10,token,sizeof(token))) {
strcpy(fmpks[fmpks_pos+2].host_name,makeStringFromEscaped(token));
strcpy(skip, makeStringFromEscaped(token));
if (strcmp(getGameserverID(), skip)==0) {
fmpks[fmpks_pos+1].flag=8;
}else if( fmpks[fmpks_pos+1].flag == 8) {
fmpks[fmpks_pos+1].flag=10;
}
}
}else{
strcpy( fmpks[fmpks_pos+2].host_name, "");
}
}
#endif
void saacproto_ACManorPKAck_recv(int fd, char *data)
{
// 更新这个 server 的 庄园 pk scheduleman
int i;
char token[256], skip[256];
int char_max=CHAR_getCharNum();
print("ACManorPKAck_recv: %s\n",data);
for (i=0; i<char_max; i++) {
if (CHAR_getCharUse(i)) {
if (CHAR_getInt( i, CHAR_WHICHTYPE )==CHAR_TYPEMANORSCHEDULEMAN) {
if (getStringFromIndexWithDelim(data,"|",1,token,sizeof(token))) {
if (CHAR_getWorkInt(i, CHAR_NPCWORKINT2)==atoi(token)) { // manor id
int fmpks_pos = CHAR_getWorkInt(i, CHAR_NPCWORKINT1)*MAX_SCHEDULE;
// 对战星球
if (getStringFromIndexWithDelim(data,"|",10,token,sizeof(token))) {
strcpy(skip, makeStringFromEscaped(token));
print("ACManorPKAck: %d %s\n", fmpks_pos, skip);
if (strcmp(getGameserverID(), skip)!=0) {
strcpy(fmpks[fmpks_pos+2].host_name, skip);
// 时间
if (getStringFromIndexWithDelim(data,"|",2,token,sizeof(token))) {
fmpks[fmpks_pos+1].dueltime=atoi(token);
}
// 主队 familyindex
if (getStringFromIndexWithDelim(data,"|",3,token,sizeof(token))) {
fmpks[fmpks_pos+1].host_index=atoi(token);
}
// 主队 家族名
if (getStringFromIndexWithDelim(data,"|",4,token,sizeof(token))) {
strcpy(fmpks[fmpks_pos+1].host_name,makeStringFromEscaped(token));
}
// 客队 familyindex
if (getStringFromIndexWithDelim(data,"|",5,token,sizeof(token))) {
fmpks[fmpks_pos+1].guest_index=atoi(token);
}
// 客队 家族名
if (getStringFromIndexWithDelim(data,"|",6,token,sizeof(token))) {
strcpy(fmpks[fmpks_pos+1].guest_name,makeStringFromEscaped(token));
}
// 准备时间
if (getStringFromIndexWithDelim(data,"|",7,token,sizeof(token))) {
fmpks[fmpks_pos+1].prepare_time=atoi(token);
}
// 最大人数
if (getStringFromIndexWithDelim(data,"|",8,token,sizeof(token))) {
fmpks[fmpks_pos+1].max_player=atoi(token);
}
// 旗标
if (getStringFromIndexWithDelim(data,"|",9,token,sizeof(token))) {
fmpks[fmpks_pos+1].flag=atoi(token);
}
// 对战星球
if (getStringFromIndexWithDelim(data,"|",10,token,sizeof(token))) {
strcpy(fmpks[fmpks_pos+2].host_name,makeStringFromEscaped(token));
}
}
}
}
}
}
}
}
}
#ifdef _WAEI_KICK
void saacproto_ACKick_recv(int fd , int act, char* data ,int retfd)
{
int clifd = getfdFromFdid(retfd);
//char cdkey[CDKEYLEN];
int cindex = getCharindexFromFdid(retfd);
print("状态:%s ", data);
switch( act) {
case 0: //FAIL
if( CONNECT_checkfd(clifd) == FALSE) return;
CHAR_talkToCli( cindex, -1, data, CHAR_COLORYELLOW);
break;
case 1: //跨星球踢人
{
char cdkey[64];
char szName[64];
int i, MAX_USER=0;
BOOL find=FALSE;
print("跨服踢人:%s", data);
MAX_USER=getFdnum();
for(i=0;i<MAX_USER;i++){
int i_use;
if(fd==i)continue;
i_use=CONNECT_getUse(i);
if(i_use){
CONNECT_getCdkey( i, cdkey, sizeof( cdkey ));
if( !strcmp( cdkey, data) ){
int fd_charaindex = CONNECT_getCharaindex( i );
CONNECT_getCharname( i, szName, sizeof( szName ) );
if( retfd == -1 ){
print("因重复登入");
CHAR_talkToCli( fd_charaindex, -1, "因重复帐号登入而断线!",CHAR_COLORYELLOW);
}else{
print("因做坏事 ");
CHAR_talkToCli(fd_charaindex, -1, "因做坏事而断线。",CHAR_COLORYELLOW);
}
CONNECT_setCloseRequest( i , 1 );
find=TRUE;
}
}
}
if( find == TRUE && retfd != -1 && CHAR_CHECKINDEX( cindex) ) {
char buf1[256];//, buf2[256];
sprintf(buf1,"系统将[%s]逐出伺服器。", /*CHAR_getChar( cindex, CHAR_NAME),*/ szName);
for( i=0; i<MAX_USER; i++){
if( CONNECT_getUse(i) ) {
int fd_charaindex = CONNECT_getCharaindex( i);
if( !CHAR_CHECKINDEX( fd_charaindex) ) continue;
CHAR_talkToCli( fd_charaindex, -1, buf1, CHAR_COLORYELLOW);
// CHAR_talkToCli(fd_charaindex, -1, buf2, CHAR_COLORYELLOW);
}
}
}
}
break;
case 2:
print("\n CASE 2");
break;
}
}
#endif
void saacproto_ACCharLogin_recv(int fd , int clifd, int flag)
{
if(flag==1)
lssproto_ClientLogin_send( clifd , "ok" );
else{
lssproto_ClientLogin_send( clifd , "no" );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -