?? family.c.bak
字號:
strcat( buf, subbuf ); j++; // print(" |%s| ", subbuf); } sprintf( sendbuf, "S|F|%d|%d|%d%s", familyNumTotal, atoi(token2), j, buf ); lssproto_FM_send( fd, sendbuf ); return; } // shan add if (strcmp(token, "P") == 0 ){ int personfame; char sendbuf[512];#ifdef _PERSONAL_FAME personfame = (CHAR_getInt( meindex, CHAR_FAME)/100);#else personfame = CHAR_getWorkInt( meindex, CHAR_WORKFMDP);#endif sprintf( sendbuf, "你目前的個人聲望點數為:%d", personfame); CHAR_talkToCli(meindex, -1, sendbuf, CHAR_COLORYELLOW);#ifdef _NEW_MANOR_LAW sprintf(sendbuf,"你目前的個人氣勢點數為:%d",CHAR_getInt(meindex,CHAR_MOMENTUM)/100); CHAR_talkToCli(meindex, -1, sendbuf, CHAR_COLORYELLOW);#endif } if(strcmp(token,"D") == 0){ if(getStringFromIndexWithDelim(message, "|", 3, fmname, sizeof(fmname)) == FALSE) return; if(getStringFromIndexWithDelim(message, "|", 4, token2, sizeof(token2)) == FALSE) return; fmindex = atoi( token2 ); if(getStringFromIndexWithDelim(message, "|", 5, token2, sizeof(token2)) == FALSE) return; tempindex = atoi( token2 ); //print(" send_fmname_ac:%s ", fmname); saacproto_ACFMDetail_send( acfd, fmname, fmindex, tempindex, CONNECT_getFdid(fd) ); } // shan begin else if (strcmp(token, "D2") ==0 ) { char sendbuf[2048], tmpbuf[1024], leadernamebuf[64]; int h, i = 0; int meindex = CONNECT_getCharaindex(fd); int fmindex_wk = CHAR_getWorkInt( meindex, CHAR_WORKFMINDEXI); if( fmindex_wk < 0 || fmindex_wk >= FAMILY_MAXNUM) return; for( h=0; h<FAMILY_MAXNUM; h++) if( fmdptop.fmtopid[h] == fmindex_wk ) break; strcpy(tmpbuf, ""); for (i = 0 + 1; i < FAMILY_MAXHOME + 1; i++) { int fmpks_pos = i * MAX_SCHEDULE, index; sprintf(fmname, "%s", CHAR_getChar(meindex, CHAR_FMNAME)); index = CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI); if (fmpks[fmpks_pos + 1].flag == FMPKS_FLAG_MANOR_BATTLEBEGIN || fmpks[fmpks_pos + 1].flag == FMPKS_FLAG_MANOR_PREPARE || fmpks[fmpks_pos + 1].flag == FMPKS_FLAG_MANOR_OTHERPLANET) { if ((fmpks[fmpks_pos + 1].host_index == index && strcmp(fmname, fmpks[fmpks_pos + 1].host_name) == 0) || (fmpks[fmpks_pos + 1].guest_index == index && strcmp(fmname, fmpks[fmpks_pos + 1].guest_name) == 0)) { struct tm tm1; memcpy(&tm1, localtime((time_t *)&fmpks[fmpks_pos + 1].dueltime), sizeof(tm1)); sprintf(tmpbuf, "%d/%d %d:%d【%s】 %s vs %s", tm1.tm_mon + 1, tm1.tm_mday, tm1.tm_hour, tm1.tm_min, fmpks[fmpks_pos + 2].host_name, fmpks[fmpks_pos + 1].guest_name, fmpks[fmpks_pos + 1].host_name); } } } if (strcmp(tmpbuf, "") == 0) sprintf(tmpbuf, "無挑戰排程"); getStringFromIndexWithDelim(memberlist[fmindex_wk].numberlistarray[0], "|",2,leadernamebuf,sizeof(leadernamebuf)); // sendbuf -> 家族名稱|人數|族長名稱|家族排行|家族聲望|個人聲望|個人職位|家族精靈|PK#ifdef _NEW_MANOR_LAW sprintf( sendbuf, "%s|%d|%s|%d|%d|%d|%d|%d|%s|%d|%d", #else sprintf( sendbuf, "%s|%d|%s|%d|%d|%d|%d|%d|%s", #endif CHAR_getChar(meindex, CHAR_FMNAME), memberlist[fmindex_wk].fmjoinnum, leadernamebuf, h+1,#ifdef _FMVER21 fmdptop.fmtopdp[h],#else (CHAR_getWorkInt( meindex, CHAR_WORKFMDP)/100),#endif #ifdef _PERSONAL_FAME (CHAR_getInt( meindex, CHAR_FAME)/100),#else (CHAR_getWorkInt( meindex, CHAR_WORKFMDP)/100),#endif CHAR_getInt( meindex, CHAR_FMLEADERFLAG), CHAR_getInt( meindex, CHAR_FMSPRITE ), tmpbuf#ifdef _NEW_MANOR_LAW ,fmdptop.fmMomentum[h]/100 // 家族氣勢 ,CHAR_getInt(meindex,CHAR_MOMENTUM)/100 // 個人氣勢#endif ); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_FAMILYDETAIL, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( sendbuf, buf, sizeof(buf))); } // shan end}void ACFMDetail(int ret, char *data, int clifd){ char sendbuf[1024]; //print(" Detail:%s ", data); if( ret != 1 ) { print(" ACFMDetailError!:%d ", clifd ); return; } //print(" ACFMDetail:%d:%s ", clifd, data ); /* len = strlen(data); strcpy( buf, data ); for( i=0 ; i<len ; i++ ) { if( data[i] == '|' ) buf[i] = ' '; else if( data[i] == ' ' ) buf[i] = '|'; } */ //if (getStringFromIndexWithDelim(message, "|", 10, fmname, // sizeof(fmname)) == FALSE) return; //makeStringFromEscaped( buf ); //buf2 = lssproto_demkstr_string( buf ); sprintf(sendbuf, "S|D|%s", data); lssproto_FM_send( clifd, sendbuf ); //print(" Detail:%s ", sendbuf); /* lssproto_WN_send( clifd, WINDOW_MESSAGETYPE_FAMILYDETAIL, WINDOW_BUTTONTYPE_OK, -1, -1, sendbuf ); */ // from saac data /* sprintf(data, "%d|%d|%s|%s|%d|%s|%s|%d|%d|%s|%d", index, family[index].fmindex, family[index].fmname, family[index].fmleadername, family[index].fmleadergrano, family[index].petname, family[index].petattr, family[index].fmjoinnum, family[index].fmacceptflag, family[index].fmrule, family[index].fmsprite ); */ }void FAMILY_CheckMember(int fd, int meindex, char *message){ int result, charindex, i, index = 0; char token[128], charname[128], fmname[128], buf[1024]; if (!CHAR_CHECKINDEX(meindex)){ return; } if (CHAR_getWorkInt(meindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) { return; } index = CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI); sprintf(fmname, "%s", CHAR_getChar(meindex, CHAR_FMNAME)); if ((index == -1) || (strcmp(fmname, "") == 0)#ifdef _FMVER21// || ((CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != FMMEMBER_LEADER)// && (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != FMMEMBER_ELDER)// && (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != FMMEMBER_VICELEADER))) || ((CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != FMMEMBER_LEADER) && (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != FMMEMBER_ELDER)))#else || (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != 1))#endif {// print("leaderflag:%d\n", CHAR_getInt(meindex, CHAR_FMLEADERFLAG)); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( "\n你不是族長,所以沒有修改的權力唷!", buf, sizeof(buf))); return; } if (getStringFromIndexWithDelim(message, "|", 2, token, sizeof(token)) == FALSE) return; sprintf(charname, "%s", token); if (getStringFromIndexWithDelim(message, "|", 3, token, sizeof(token)) == FALSE) return; charindex = atoi(token); if (getStringFromIndexWithDelim(message, "|", 4, token, sizeof(token)) == FALSE) return; result = atoi(token);// print("MemberCheck charname:%s charindex:%d mename:%s meworki:%d\n",// charname, charindex, CHAR_getChar(meindex, CHAR_NAME),// CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI)); if ((strcmp(charname, CHAR_getChar(meindex, CHAR_NAME)) == 0) && (charindex == CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI))) return;// print("MemberCheck message:%s\n", message); if (result == FMMEMBER_MEMBER)#ifdef _FMVER21 { // shan begin char sbuf[1024]; sprintf( sbuf, "族長代號:%d -> 人物名稱:%s 人物索引 (設該人物為族員):%d\n", CHAR_getInt(meindex, CHAR_FMLEADERFLAG), charname, charindex); LogFamily( CHAR_getChar(meindex, CHAR_FMNAME), CHAR_getInt(meindex, CHAR_FMINDEX), CHAR_getChar(meindex, CHAR_NAME), CHAR_getChar(meindex, CHAR_CDKEY), "CheckMember", sbuf ); // shan end saacproto_ACMemberJoinFM_send(acfd, CHAR_getChar(meindex, CHAR_FMNAME), CHAR_getInt(meindex, CHAR_FMINDEX), charname, charindex, CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), result, CHAR_getWorkInt(meindex, CHAR_WORKFMCHARINDEX), CONNECT_getFdid(fd)); }#else { saacproto_ACMemberJoinFM_send(acfd, CHAR_getChar(meindex, CHAR_FMNAME), CHAR_getInt(meindex, CHAR_FMINDEX), charname, charindex, CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), result, CONNECT_getFdid(fd)); }#endif#ifdef _FMVER21 else if (result == FMMEMBER_NONE)#else else if (result == 4)#endif { for (i = 0 + 1; i < FAMILY_MAXHOME + 1; i++) { int fmpks_pos = i * MAX_SCHEDULE; if ((fmpks[fmpks_pos].host_index == index && strcmp(fmname, fmpks[fmpks_pos].host_name) == 0) || (fmpks[fmpks_pos].guest_index == index && strcmp(fmname, fmpks[fmpks_pos].guest_name) == 0)) { lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( "\n家族目前正在戰斗中,所以無法審核成員。", buf, sizeof(buf)));// print("fmpks_pos:%d index:%d host:%d guest:%d\n", fmpks_pos,// index, fmpks[fmpks_pos].host_index, fmpks[fmpks_pos].guest_index); return; } }#ifdef _FMVER21 { // shan begin char sbuf[1024]; sprintf( sbuf, "族長代號:%d -> 人物名稱:%s 人物索引:%d (將該人物退出家族)\n", CHAR_getInt(meindex, CHAR_FMLEADERFLAG), charname, charindex); LogFamily( CHAR_getChar(meindex, CHAR_FMNAME), CHAR_getInt(meindex, CHAR_FMINDEX), CHAR_getChar(meindex, CHAR_NAME), CHAR_getChar(meindex, CHAR_CDKEY), "CheckMember", sbuf ); // shan end saacproto_ACMemberLeaveFM_send(acfd, CHAR_getChar(meindex, CHAR_FMNAME), CHAR_getInt(meindex, CHAR_FMINDEX), charname, charindex, CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), CHAR_getWorkInt(meindex, CHAR_WORKFMCHARINDEX), CONNECT_getFdid(fd)); }#else { saacproto_ACMemberLeaveFM_send(acfd, CHAR_getChar(meindex, CHAR_FMNAME), CHAR_getInt(meindex, CHAR_FMINDEX), charname, charindex, CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), CONNECT_getFdid(fd)); }#endif }#ifdef _FMVER21// else if (result == FMMEMBER_ELDER || result == FMMEMBER_INVITE// || result == FMMEMBER_BAILEE || result == FMMEMBER_VICELEADER ) else if (result == FMMEMBER_ELDER ) { if (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != FMMEMBER_LEADER) return;#ifdef _FMVER21 { // shan begin char sbuf[1024]; sprintf( sbuf, "族長代號:%d -> 人物名稱:%s 人物索引:%d (設該人物為長老)\n", CHAR_getInt(meindex, CHAR_FMLEADERFLAG), charname, charindex); LogFamily( CHAR_getChar(meindex, CHAR_FMNAME), CHAR_getInt(meindex, CHAR_FMINDEX), CHAR_getChar(meindex, CHAR_NAME), CHAR_getChar(meindex, CHAR_CDKEY), "CheckMember", sbuf ); // shan end saacproto_ACMemberJoinFM_send(acfd, CHAR_getChar(meindex, CHAR_FMNAME), CHAR_getInt(meindex, CHAR_FMINDEX), charname, charindex, CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), result, CHAR_getWorkInt(meindex, CHAR_WORKFMCHARINDEX), CONNECT_getFdid(fd)); }#else { saacproto_ACMemberJoinFM_send(acfd, CHAR_getChar(meindex, CHAR_FMNAME), CHAR_getInt(meindex, CHAR_FMINDEX), charname, charindex, CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), result, CONNECT_getFdid(fd)); }#endif }#endif // 要求最新家族列表 saacproto_ACShowFMList_send( acfd );}void FAMILY_Channel(int fd, int meindex, char *message){ char token[128], token2[128]; char buf[4096], subbuf[4096], sendbuf[4096]; int i, tempindex, fmindexi, channel, nowchannel, num; fmindexi = CHAR_getWorkInt( meindex, CHAR_WORKFMINDEXI); nowchannel = CHAR_getWorkInt( meindex, CHAR_WORKFMCHANNEL ); // print(" channelFM:%d ", fmindexi); if( fmindexi < 0 ) { lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( "\n你還沒有加入任何家族!", buf, sizeof(buf))); return; } if (getStringFromIndexWithDelim(message, "|", 2, token, sizeof(token)) == FALSE) return; if (getStringFromIndexWithDelim(message, "|", 3, token2, sizeof(token2)) == FALSE) return; channel = atoi( token2 ); if( strcmp( token, "J") == 0) { if( channel < -1 || channel > FAMILY_MAXCHANNEL )return; if( nowchannel >= 0 && nowchannel < FAMILY_MAXCHANNEL ) { i = 0; while( i < FAMILY_MAXMEMBER ) { if( channelMember[fmindexi][nowchannel][i] == meindex ) { channelMember[fmindexi][nowchannel][i] = -1; break; } i++; } } if( channel > 0 && channel < FAMILY_MAXCHANNEL ) { i = 0; while( i < FAMILY_MAXCHANNELMEMBER ) { if( channelMember[fmindexi][channel][i] < 0 ) { channelMember[fmindexi][channel][i] = meindex; break; } i++; } if( i >= FAMILY_MAXCHANNELMEMBER ) { CHAR_talkToCli( meindex, -1, "此頻道人數已滿。", CHAR_COLORWHITE); return; } sprintf( buf, "加入家族頻道 [%d]。", channel ); CHAR_talkToCli( meindex, -1, buf, CHAR_COLORWHITE); if( nowchannel >=0 && nowchannel < FAMILY_MAXCHANNEL ) { sprintf( buf, "%s 退出頻道。", CHAR_getChar( meindex, CHAR_NAME) ); for( i=0; i < FAMILY_MAXCHANNELMEMBER; i++ ) { if( CHAR_CHECKINDEX(channelMember[fmindexi][nowchannel][i]) && channelMember[fmindexi][nowchannel][i] != meindex ) { CHAR_talkToCli( channelMember[fmindexi][nowchannel][i], -1, buf, CHAR_COLORWHITE); } } } sprintf( buf, "%s 加入頻道。", CHAR_getChar( meindex, CHAR_NAME) ); for( i=0; i < FAMILY_MAXCHANNELMEMBER; i++ ) { if( CHAR_CHECKINDEX(channelMember[fmindexi][channel][i]) && channelMember[fmindexi][channel][i] != meindex ) { CHAR_talkToCli( channelMember[fmindexi][channel][i], -1, buf, CHAR_COLORWHITE); } } } else if( channel == 0 ) { i = 0; while( i < FAMILY_MAXMEMBER ) { if( channelMember[fmindexi][0][i] < 0 ) {
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -