📄 callfromac.c
字号:
return; }else { if( atoi(data1) < 0 ) { CHAR_setInt( charaindex, CHAR_GOLD, CHAR_getInt( charaindex, CHAR_GOLD ) -atoi(data1) ); CHAR_send_P_StatusString( charaindex , CHAR_P_STRING_GOLD); }#ifdef _FAMILYBANKSTONELOG CHAR_setInt(charaindex,CHAR_FMBANKGOLD,CHAR_getInt(charaindex,CHAR_FMBANKGOLD)+intdata); LogFamilyBankStone( CHAR_getChar( charaindex, CHAR_NAME ), CHAR_getChar( charaindex, CHAR_CDKEY ), intdata, CHAR_getInt( charaindex, CHAR_GOLD ), (intdata>0)?"FMBank(存款)(家族银行)":"FMBank(取款)(家族银行)", CHAR_getInt( charaindex,CHAR_FLOOR), CHAR_getInt( charaindex,CHAR_X ), CHAR_getInt( charaindex,CHAR_Y ), CHAR_getInt( charaindex,CHAR_FMBANKGOLD) );#else LogStone( atoi(data2), CHAR_getChar( charaindex, CHAR_NAME ), CHAR_getChar( charaindex, CHAR_CDKEY ), -intdata, CHAR_getInt( charaindex, CHAR_GOLD ), "FMBank(家族银行)", CHAR_getInt( charaindex,CHAR_FLOOR), CHAR_getInt( charaindex,CHAR_X ), CHAR_getInt( charaindex,CHAR_Y ) );#endif } }else if( kindflag == FM_FIX_FMLEADERCHANGE ){ ACFMJob( clifd, ret, data1, data2 ); } // 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];#ifdef _NEW_MANOR_LAW int i;#endif 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);#ifdef _NEW_MANOR_LAW for(i=0;i<FAMILY_MAXNUM;i++){ // 家族索引 if(fmdptop.fmtopid[i] == CHAR_getWorkInt(charaindex,CHAR_WORKFMINDEXI)) break; } if(i < FAMILY_MAXNUM){ sprintf(tmpbuf, "MOMENTUM::%d %s %d",CHAR_getInt(charaindex,CHAR_FMINDEX), CHAR_getChar(charaindex,CHAR_FMNAME),fmdptop.fmMomentum[i]); LogFMPOP(tmpbuf); }#endif }}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_LISTvoid 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); } // 主队 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))) { 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, ""); }}#endifvoid 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 _NEW_PLAYERGOLDvoid saacproto_ACNEWPlayerList_recv( int fd, char *CdKey, char *UserName, int charaindex, int RunType){ char buf[256]; if( !CHAR_CHECKINDEX( charaindex)){ return; } switch( RunType){ case NEW_ERR: //无法预期的错误! CHAR_talkToCli( charaindex, -1, "无法预期的错误!", CHAR_COLORYELLOW); break; case NEW_DELOK://新帐号人物删除完成! sprintf( buf,"新帐号人物[%s]确认完成!", CdKey); CHAR_talkToCli( charaindex, -1, buf, CHAR_COLORYELLOW); if( CHAR_getInt( charaindex, CHAR_GOLD) >= 990000 ){ sprintf( buf,"帐号人物[%s]持有石币将超过100万,取消领取资格!", CdKey); CHAR_talkToCli( charaindex, -1, buf, CHAR_COLORYELLOW); }else{ NPC_ActionAddGold( charaindex, 10000); } break; case NEW_DELERR: //新帐号人物删除发生错误! CHAR_talkToCli( charaindex, -1, "此帐号人物无法领取石币!", CHAR_COLORYELLOW); break; case NEW_ADDOK: sprintf( buf,"新帐号人物[%s]增加完成!", CdKey); CHAR_talkToCli( charaindex, -1, buf, CHAR_COLORYELLOW); break; case NEW_ADDERR: sprintf( buf,"新帐号人物[%s]增加发生错误!", CdKey); CHAR_talkToCli( charaindex, -1, buf, CHAR_COLORYELLOW); break; case NEW_LISTFULL: CHAR_talkToCli( charaindex, -1, "新帐号人物列表已满!", CHAR_COLORYELLOW); break; }}#endif#ifdef _NEW_PLAYERGOLDvoid saacproto_LoadNEWPlayer_recv(int fd , int charaindex, char *data){ CHAR_talkToCli( charaindex, -1, data, CHAR_COLORYELLOW);}#endif#ifdef _WAEI_KICKvoid saacproto_ACKick_recv(int fd , int act, char* data ,int retfd){ int clifd = getfdFromFdid(retfd); //char cdkey[CDKEYLEN]; int cindex = getCharindexFromFdid(retfd); print("状态:%s \n", data); switch( act) { case 0: //FAIL if( CONNECT_checkfd(clifd) == FALSE) return; CHAR_talkToCli( cindex, -1, data, CHAR_COLORYELLOW); break; case 1: //跨星球踢人 { char cdkey[256]; char szName[256]; int i, MAX_USER=0; BOOL find=FALSE; print(" SAAC踢人:%s ", data); MAX_USER=getFdnum(); for(i=0;i<MAX_USER;i++){ int i_use; 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); }#ifdef _CHANGEGALAXY else if( retfd == -2 ){ // Robin add print(" 因准备移民:%d->%s ", fd_charaindex, cdkey); CHAR_talkToCli( fd_charaindex, -1, "因准备移民而断线!", CHAR_COLORYELLOW); }#endif#ifdef _TIMEOUTKICK else if( retfd == -3 ){ // Robin add print(" 因WGS点数不足:%d->%s ", fd_charaindex, cdkey); CHAR_talkToCli( fd_charaindex, -1, "您的WGS点数不足!", CHAR_COLORYELLOW); }#endif 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#ifdef _CHAR_POOLITEMvoid saacproto_ACCharSavePoolItem_recv(int fd ,char* result, char* data,int retfd){ int charaindex = getCharindexFromFdid( retfd); //print("\n ACCharSavePoolItem_recv:%s ", data); if( !CHAR_CHECKINDEX(charaindex) ) return; if( strstr( result, FAILED ) != NULL ){ CHAR_talkToCli( charaindex, -1, "道具仓库资料存档失败!", CHAR_COLORYELLOW); return; }}void saacproto_ACCharGetPoolItem_recv(int fd ,char* result, char* data,int retfd, int meindex) { Char* ch = NULL; int i, clifd, charaindex; //print("\n ACCharGetPoolItem_recv:%s ", data); if( strcmp( result , SUCCESSFUL ) != 0 ) return; charaindex = getCharindexFromFdid(retfd); if( !CHAR_CHECKINDEX( charaindex) ) return; clifd = getfdFromCharaIndex( charaindex); if( CHAR_CheckDepotItem( charaindex) ) return;//仓库已存在
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -