📄 recv.c
字号:
if (r < 0){ saacproto_ACMemberLeaveFM_send(fd, FAILED, charfdid); }else{ saacproto_ACMemberLeaveFM_send(fd, SUCCESSFUL, charfdid); }#endif}#ifdef _FM_MODIFYvoid saacproto_ACFMCharLogin_recv(int fd, char *fmname, int fmindex, char *charname, char *charid, int charlv, int eventflag, int charfdid,int gsnum)#else #ifdef _FMVER21 void saacproto_ACFMCharLogin_recv(int fd, char *fmname, int fmindex, char *charname, char *charid, int charlv, int eventflag, int charfdid) #else void saacproto_ACFMCharLogin_recv(int fd, char *fmname, int fmindex, char *charname, char *charid, int charlv, int charfdid) #endif#endif{#ifdef __FAMILY int r = 0, floor = 0, fmpopular = 0, joinflag = 0, fmsetupflag = 0; int flag = 0, charindex = 0;#ifdef _PERSONAL_FAME // Arminius: 家族个人声望 int charfame = 0;#endif#ifdef _NEW_MANOR_LAW int momentum = 0;#endif#ifdef _FM_MODIFY r = ACFMCharLogin(fd, -1, fmname, fmindex, charname, charid, charlv, &floor, &fmpopular, &joinflag, &fmsetupflag, &charindex, charfdid, &charfame, eventflag,gsnum #ifdef _NEW_MANOR_LAW ,&momentum #endif );#else #ifdef _PERSONAL_FAME // Arminius: 家族个人声望 r = ACFMCharLogin(fd, -1, fmname, fmindex, charname, charid, charlv, &floor, &fmpopular, &joinflag, &fmsetupflag, &charindex, charfdid, &charfame, eventflag); #else r = ACFMCharLogin(fd, -1, fmname, fmindex, charname, charid, charlv, &floor, &fmpopular, &joinflag, &fmsetupflag, &charindex, charfdid); #endif#endif#ifdef _PERSONAL_FAME // Arminius: 家族个人声望 if (r < 0){ saacproto_ACFMCharLogin_send(fd, FAILED, r, floor, fmpopular, joinflag, fmsetupflag, flag, charindex, charfame, charfdid #ifdef _NEW_MANOR_LAW ,momentum #endif ); }else{ saacproto_ACFMCharLogin_send(fd, SUCCESSFUL, r, floor, fmpopular, joinflag, fmsetupflag, flag, charindex, charfame, charfdid #ifdef _NEW_MANOR_LAW ,momentum #endif ); }#else if (r < 0){ saacproto_ACFMCharLogin_send(fd, FAILED, r, floor, fmpopular, joinflag, fmsetupflag, flag, charindex, charfdid); }else{ saacproto_ACFMCharLogin_send(fd, SUCCESSFUL, r, floor, fmpopular, joinflag, fmsetupflag, flag, charindex, charfdid); }#endif#endif}void saacproto_ACFMCharLogout_recv(int fd, char *fmname, int fmindex, char *charname, char *charid, int charlv, int index,int charfdid){#ifdef __FAMILY int r = 0; r = ACFMCharLogout(index, fmname, fmindex, charname, charid, charlv, charfdid); if (r < 0){ saacproto_ACFMCharLogout_send(fd, FAILED, charfdid); }else{ saacproto_ACFMCharLogout_send(fd, SUCCESSFUL, charfdid); }#endif}void saacproto_ACFMReadMemo_recv(int fd, int index){#ifdef __FAMILY int r = 0, dataindex; char data[15000]; r = ACFMReadMemo(index, &dataindex, data); if (r < 0){ saacproto_ACFMReadMemo_send(fd, FAILED, index, r, dataindex, "Nothing"); }else{ saacproto_ACFMReadMemo_send(fd, SUCCESSFUL, index, r, dataindex, data); }#endif} void saacproto_ACFMWriteMemo_recv(int fd, char *fmname, int fmindex, char *data, int index){#ifdef __FAMILY int r = 0; r = ACFMWriteMemo(index, fmname, fmindex, data); if (r < 0){ saacproto_ACFMWriteMemo_send(fd, FAILED, index); }else{ saacproto_ACFMWriteMemo_send(fd, SUCCESSFUL, index); }#endif}void saacproto_ACFMPointList_recv(int fd){#ifdef __FAMILY int r = 0; char data[15000]; r = ACFMPointList(data); if (r < 0) { saacproto_ACFMPointList_send(fd, FAILED, "nothing"); }else{ saacproto_ACFMPointList_send(fd, SUCCESSFUL, data); }#endif}#ifdef _CK_ONLINE_PLAYER_COUNT // WON ADD 计算线上人数void PlayerCount(void){ int i, total_count=0; char msg[64], out_msg[1024]; FILE *fpcount; extern gmsv gs[MAXCONNECTION]; strcpy(out_msg, ""); for(i=0; i<MAXCONNECTION; i++){ if( gs[i].use ){ sprintf(msg, "%s:%d Item ratio-->0%%\n", gs[i].name, online_player[i].playcount ); strcat( out_msg, msg ); total_count += online_player[i].playcount; } } sprintf(msg, "-----------------------\n"); strcat( out_msg, msg ); sprintf(msg, "Total:%d\n", total_count); strcat( out_msg, msg ); fpcount = fopen("count.txt","w"); if (fpcount!=NULL){ fprintf(fpcount,"%s", out_msg ); fclose(fpcount); }}void saacproto_GS_ACK_PLAYER_COUNT_recv( int fd, int playcount ){ online_player[fd].playcount = playcount;}#endifvoid saacproto_ACSetFMPoint_recv(int fd, char *fmname, int fmindex, int index, int fmpointindex, int fl, int x, int y, int charfdid){#ifdef __FAMILY int r = 0; r = ACSetFMPoint(index, fmname, fmindex, fmpointindex, fl, x, y); if (r < 0){ saacproto_ACSetFMPoint_send(fd, FAILED, r, charfdid); }else{ saacproto_ACSetFMPoint_send(fd, SUCCESSFUL, r, charfdid); }#endif}void saacproto_ACFixFMPoint_recv(int fd, char *winfmname, int winfmindex, int winindex, char *losefmname, int losefmindex, int loseindex, int village){#ifdef __FAMILY int r = 0; r = ACFixFMPoint(winindex, winfmname, winfmindex, loseindex, losefmname, losefmindex, village); if (r < 0){ saacproto_ACFixFMPoint_send(fd, FAILED, r); }else{ saacproto_ACFixFMPoint_send(fd, SUCCESSFUL, r); }#endif}void saacproto_ACFMAnnounce_recv(int fd, char *fmname, int fmindex, int index, char *data, int color){#ifdef __FAMILY int r = 0, i = 0; r = ACFMAnnounce(fmname, fmindex, index, data, color); if (r < 0){ saacproto_ACFMAnnounce_send(fd, FAILED, fmname, fmindex, index, 1, data, color); }else{ extern gmsv gs[MAXCONNECTION]; for (i = 0; i < MAXCONNECTION; i ++) { if (gs[i].use && gs[i].name[0]) { saacproto_ACFMAnnounce_send(i, SUCCESSFUL, fmname, fmindex, index, 1, data, color); } } } #endif}void saacproto_ACShowTopFMList_recv(int fd, int kindflag){#ifdef __FAMILY int r = 0; char data[150 * MAX_FAMILY]; strcpy(data, ""); r = ACShowTopFMList(data, sizeof(data), kindflag); if (r < 0) { saacproto_ACShowTopFMList_send(fd, FAILED, kindflag, r, "Nothing"); }else { saacproto_ACShowTopFMList_send(fd, SUCCESSFUL, kindflag, r, data); }#endif}#ifdef _FAMILYBANKSTONELOGvoid saacproto_ACgetFMBankgold_recv(int fd, char *fmname, int fmindex, int index, int charindex, int charfdid){ int r = 0; r = ACgetFMBankgold(index, fmname, fmindex, charindex); saacproto_ACgetFMBankgold_send(fd,charfdid,r);}#endifvoid saacproto_ACFixFMData_recv(int fd, char *fmname, int fmindex, int index, int kindflag, char *data1, char *data2, int charindex, int charfdid){#ifdef __FAMILY int r = 0; r = ACFixFMData(index, fmname, fmindex, kindflag, charindex, data1, data2); if (r < 0){ saacproto_ACFixFMData_send(fd, FAILED, kindflag, data1, data2, charfdid); }else{ saacproto_ACFixFMData_send(fd, SUCCESSFUL, kindflag, data1, data2, charfdid); }#endif}void saacproto_ACFixFMPK_recv(int fd, char *winfmname, int winfmindex, int winindex, char *losefmname, int losefmindex, int loseindex){#ifdef __FAMILY int r = 0; r = ACFixFMPK(winindex, winfmname, winfmindex, loseindex, losefmname, losefmindex); if (r < 0){ saacproto_ACFixFMPK_send(fd, FAILED, r, winindex, loseindex); }else{ saacproto_ACFixFMPK_send(fd, SUCCESSFUL, r, winindex, loseindex); }#endif}void saacproto_ACGMFixFMData_recv(int fd, int index, char *charid, char *cmd, char *data, int charfdid){#ifdef __FAMILY int r = 0; char fmname[256]; r = ACGMFixFMData(index, fmname, charid, cmd, data); if (r < 0){ saacproto_ACGMFixFMData_send(fd, FAILED, fmname, charfdid); } else{ saacproto_ACGMFixFMData_send(fd, SUCCESSFUL, fmname, charfdid); }#endif}void saacproto_ACGetFMData_recv(int fd, char *fmname, int fmindex, int index, int kindflag, int charfdid){#ifdef __FAMILY int r = 0, data = 0; r = ACGetFMData(index, fmname, fmindex, kindflag, &data); if (r < 0){ saacproto_ACGetFMData_send(fd, FAILED, kindflag, data, charfdid); }else{ saacproto_ACGetFMData_send(fd, SUCCESSFUL, kindflag, data, charfdid); }#endif}void saacproto_ACreLoadFmData_recv(int fd, int type, int data){ int i=0;extern gmsv gs[MAXCONNECTION]; switch( type){ case 1: log( "reload FM_DATA:%d !\n", data); readOneFamilyFromTi( data); break; case 2: { char data[15000]; readFMPoint( fmpointdir); if( ACFMPointList( data) >= 0 ){ log( "reload FM_POINT !\n" ); for (i=0; i<MAXCONNECTION; i++){ if( gs[i].use && gs[i].name[0] ) saacproto_ACFMPointList_send( i, SUCCESSFUL, data); } } } break; case 3: //fmpk_list { int j=0; log( "reload FMPK_LIST !\n" ); FMPK_InitList(); FMPK_LoadList(); for( j=0; j<FMPKLIST_MAXNUM; j++){ for (i=0; i<MAXCONNECTION; i++){ if( gs[i].use && gs[i].name[0] ) saacproto_ACLoadFmPk_send(i, FMPK_GetData( j) ); } } } break; }}#ifdef _AC_SEND_FM_PK // WON ADD 庄园对战列表储存在AC#ifdef _ACFMPK_LISTvoid saacproto_ACLoadFmPk_recv(int fd, int fmpks_pos){ if( fmpks_pos < 0 || fmpks_pos > MAX_FMPOINT) return; saacproto_ACLoadFmPk_send( fd, FMPK_GetData( fmpks_pos-1) );}void saacproto_ACSendFmPk_recv(int fd, int fmpks_pos, int userindex, int flg, char *data){ extern gmsv gs[MAXCONNECTION]; char buf[1024]; int i=0; sprintf( buf, "%d|%s", fmpks_pos, data); if( ( userindex != -1 && FMPK_GetTypeFlg( fmpks_pos-1) == 1 )|| FMPK_SetData( fmpks_pos-1, flg, buf, strlen( buf)) != 1 ){ if(userindex != -1) saacproto_ACSendFmPk_send( fd, userindex, 0); log("err ACSendFmPk_send(%d, %d)\n", userindex, 0); return; } FMPK_BackUpList(); for (i=0; i<MAXCONNECTION; i++){ if( gs[i].use && gs[i].name[0] ){ saacproto_ACLoadFmPk_send(i, FMPK_GetData( fmpks_pos-1) ); } } //送确认讯息 if(userindex != -1) saacproto_ACSendFmPk_send( fd, userindex, 1);}#elsevoid saacproto_ACLoadFmPk_recv(int fd, int fmpks_pos){ extern char fm_pk_list[9][255]; if(fmpks_pos > MAX_FMPOINT){ log("\n fmpks_pos(%d) too big", fmpks_pos); } saacproto_ACLoadFmPk_send(fd, fm_pk_list[fmpks_pos-1]);}void saacproto_ACSendFmPk_recv(int fd, int fmpks_pos, char *data){ extern gmsv gs[MAXCONNECTION]; int i=0; if( (fmpks_pos>MAX_FMPOINT) || (fmpks_pos<1) ){ log("\n fmpks_pos(%d) err !!", fmpks_pos); } sprintf(fm_pk_list[fmpks_pos-1], "%d|%s", fmpks_pos, data); for (i=0; i<MAXCONNECTION; i++){ if (gs[i].use && gs[i].name[0] && i!=fd){ saacproto_ACLoadFmPk_send(i, fm_pk_list[fmpks_pos-1]); } } save_fm_pk_list();}#endif#endif#ifdef _RECAL_BACKUP_PLAYER // WON 回溯功能#define arraysizeof( x ) (sizeof(x)/sizeof(x[0]))void saacproto_ACRecalPlayer_recv(int fd, char *uid, int userfdid, int GmCliId, char *id, int char_num, int date, int backup_flag){ if( strlen(id) < 1 ) { log("\n id(%s) too shout !!", id); return; } if( char_num<0 || char_num>1) { log("\n char_num(%d) err !!", char_num); return; } if( date<20000000 ) { log("\n date(%d) format err!!", date); return; } if( backup_flag == 1 ){ // 备份日期 // 回传有备份的日期 get_backup_date(fd, uid, userfdid, GmCliId, id, char_num, date); }else if( backup_flag == 2 ){ // 人物资料 get_online_player_data(fd, uid, userfdid, GmCliId, id, char_num, date); // 传回线上人物资料 get_backup_player_data(fd, uid, userfdid, GmCliId, id, char_num, date); // 传回备份人物资料 }}void saacproto_ACRecalBackup_recv(int fd, char *uid, int userfdid, int GmCliId, char *id, int char_num, int date, char *char_data, int backup_flag){ extern struct ITEM_PET_CHANG item_pet_chang; char temp[64]; int i, count=0; char filename1[128], filename2[128]; char body[256]; if(backup_flag == 1){ // 回溯人物 // 线上人物 sprintf(filename1, "~/saac/char/0x%x/%s.%d.char", (getHash(id)&0xff), id, char_num ); // 备份人物 sprintf(filename2, "%s/char/0x%x/%s.%d.char", BACKUP_DIR, (getHash(id)&0xff), id, char_num ); // 移动备份人物至线上人物 strcpy(body, ""); sprintf(body, "mv %s %s", filename2, filename1); system(body); /* 回溯成功 */ saacproto_ACRecalPlayer_send(fd, uid, userfdid, GmCliId, id, char_num, date, char_data, 4); }else if(backup_flag == 2 ){ // 部分回溯人物 log("\n won test 44 ==> char_data_chang(%s)", char_data); // 取出需回溯项目 for(i=0;i<5;i++){ memset(temp, 0, sizeof(temp)); easyGetTokenFromString( char_data , count , temp , sizeof( temp )); item_pet_chang.equit_item[i] = atoi(temp); count++; } for(i=0;i<15;i++){ memset(temp, 0, sizeof(temp)); easyGetTokenFromString( char_data , count , temp , sizeof( temp )); item_pet_chang.have_item[i] = atoi(temp); count++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -