📄 family.c
字号:
// 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 ) { channelMember[fmindexi][0][i] = meindex; break; } i++; } if( i >= FAMILY_MAXMEMBER ) {#ifndef _CHANNEL_MODIFY CHAR_talkToCli( meindex, -1, "此频道人数已满。", CHAR_COLORWHITE);#endif return; }#ifndef _CHANNEL_MODIFY sprintf( buf, "加入家族频道 [全]。"); 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); } }#endif }#ifdef _FMVER21 else if( channel == FAMILY_MAXCHANNEL && CHAR_getInt( meindex, CHAR_FMLEADERFLAG ) == FMMEMBER_LEADER )#else else if( channel == FAMILY_MAXCHANNEL && CHAR_getInt( meindex, CHAR_FMLEADERFLAG ) == 1 )#endif { CHAR_talkToCli( meindex, -1, "启动族长广播。", CHAR_COLORWHITE); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -