📄 family.c
字号:
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 sprintf( sendbuf, "%s|%d|%s|%d|%d|%d|%d|%d|%s", 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 ); 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 ) { CHAR_talkToCli( meindex, -1, "此频道人数已满。", CHAR_COLORWHITE); return; } 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); } } }#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); } else { channel = -1; CHAR_talkToCli( meindex, -1, "退出家族频道。", CHAR_COLORWHITE); 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); } } } CHAR_setWorkInt( meindex, CHAR_WORKFMCHANNEL, channel); if( channel != -1 ) CHAR_setWorkInt( meindex, CHAR_WORKFMCHANNELQUICK, channel); sprintf( sendbuf, "C|J|%d", channel); lssproto_FM_send( fd, sendbuf); } else if( strcmp( token, "L") == 0) { int j, membernum, bFind = 0; if( channel < 0 || channel >= FAMILY_MAXCHANNEL ) return; subbuf[0] = '\0'; num = 0; if( channel != 0 ) membernum = FAMILY_MAXCHANNELMEMBER; else membernum = FAMILY_MAXMEMBER; for( j = 0 ; j < FAMILY_MAXMEMBER ; j++ ) { bFind = 0; tempindex = familyMemberIndex[fmindexi][j];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -