📄 family.c
字号:
else { channel = -1;#ifndef _CHANNEL_MODIFY CHAR_talkToCli( meindex, -1, "退出家族频道。", CHAR_COLORWHITE);#else CHAR_talkToCli( meindex, -1, "关闭族长广播。", CHAR_COLORWHITE); channel = 0; i = 0; while(i < FAMILY_MAXMEMBER){ if( channelMember[fmindexi][0][i] < 0 ) { channelMember[fmindexi][0][i] = meindex; break; } i++; }#endif 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]; //if( tempindex >= 0 ) { if( CHAR_CHECKINDEX(tempindex) ) { for( i=0; i< membernum ; i++) { if( tempindex == channelMember[fmindexi][channel][i] ) { //if( CHAR_getChar( tempindex, CHAR_NAME ) == NULL ) { // familyMemberIndex[fmindexi][j] = -1; // channelMember[fmindexi][channel][i] = -1; // continue; //} bFind = 1; break; } } if( bFind ) strcat( subbuf, "|1|" ); else strcat( subbuf, "|0|" ); makeEscapeString( CHAR_getChar( tempindex, CHAR_NAME ), buf, sizeof(buf)); strcat( subbuf, buf ); num++; } } sprintf( sendbuf, "C|L|%d|%d%s", channel, num, subbuf); lssproto_FM_send( fd, sendbuf); //print(" CList:%s ", sendbuf); }}void FAMILY_Bank(int fd, int meindex, char *message){ char token[128], token2[128], buf[1024]; int fmindex, cash, bank, toBank; int MaxGold; MaxGold = CHAR_getMaxHaveGold( meindex); fmindex = CHAR_getInt( meindex, CHAR_FMINDEX); // add shan if( fmindex <= 0 && CHAR_getInt( meindex, CHAR_BANKGOLD) < 1) { CHAR_talkToCli( meindex, -1, "你必须先加入家族。", CHAR_COLORWHITE); return; } if (getStringFromIndexWithDelim(message, "|", 2, token, sizeof(token)) == FALSE) return; if( strcmp(token, "G" )==0 ) { if (getStringFromIndexWithDelim(message, "|", 3, token2, sizeof(token)) == FALSE) return; toBank = atoi( token2 ); cash = CHAR_getInt( meindex, CHAR_GOLD); bank = CHAR_getInt( meindex, CHAR_BANKGOLD); if( ((cash - toBank) >= 0) && ((cash - toBank) <= MaxGold ) &&((bank + toBank) >= 0)&&((bank + toBank) <= CHAR_MAXBANKGOLDHAVE) ) { // shan add if( toBank > 0 && CHAR_getInt( meindex, CHAR_FMINDEX ) < 1 ) { sprintf(buf, "抱歉!你没有加入任何家族,所以仅能领取存款"); CHAR_talkToCli( meindex, -1, buf, CHAR_COLORWHITE); return; } CHAR_setInt( meindex, CHAR_GOLD, cash - toBank); CHAR_setInt( meindex, CHAR_BANKGOLD, bank + toBank); CHAR_send_P_StatusString( meindex , CHAR_P_STRING_GOLD); if( toBank >= 0 ) { sprintf(buf, "存入%d到家族银行个人帐户。", toBank); CHAR_talkToCli( meindex, -1, buf, CHAR_COLORWHITE); // Syu ADD 新增家族个人银行存取Log (不含家族银行) LogFamilyBankStone( CHAR_getChar( meindex, CHAR_NAME ), CHAR_getChar( meindex, CHAR_CDKEY ), toBank, CHAR_getInt( meindex, CHAR_GOLD ), "myBank(存款)(家族个人银行)", CHAR_getInt( meindex,CHAR_FLOOR), CHAR_getInt( meindex,CHAR_X ), CHAR_getInt( meindex,CHAR_Y ), CHAR_getInt( meindex,CHAR_BANKGOLD) ); } else { sprintf(buf, "从家族银行个人帐户取出%d。", -toBank); CHAR_talkToCli( meindex, -1, buf, CHAR_COLORWHITE); // Syu ADD 新增家族个人银行存取Log (不含家族银行) LogFamilyBankStone( CHAR_getChar( meindex, CHAR_NAME ), CHAR_getChar( meindex, CHAR_CDKEY ), toBank, CHAR_getInt( meindex, CHAR_GOLD ), "myBank(提款)(家族个人银行)", CHAR_getInt( meindex,CHAR_FLOOR), CHAR_getInt( meindex,CHAR_X ), CHAR_getInt( meindex,CHAR_Y ), CHAR_getInt( meindex,CHAR_BANKGOLD) ); } // Syu ADD 新增家族个人银行存取Log (不含家族银行) LogStone( -1, CHAR_getChar( meindex, CHAR_NAME ), /* 平乓仿 */ CHAR_getChar( meindex, CHAR_CDKEY ), /* 交□扒□ID */ -toBank, /* 嗯喊 */ CHAR_getInt( meindex, CHAR_GOLD ), "myBank(家族个人银行)", CHAR_getInt( meindex,CHAR_FLOOR), CHAR_getInt( meindex,CHAR_X ), CHAR_getInt( meindex,CHAR_Y ) ); } else print(" bank_error "); } if( strcmp(token, "I" )==0 ) { } if( strcmp(token, "T" )==0 ) { int toTax; int mygold; int FMindex; if (getStringFromIndexWithDelim(message, "|", 3, token2, sizeof(token)) == FALSE) return; toTax = atoi( token2 ); #ifdef _FMVER21 if( CHAR_getInt( meindex, CHAR_FMLEADERFLAG ) != FMMEMBER_LEADER && CHAR_getInt( meindex, CHAR_FMLEADERFLAG ) != FMMEMBER_ELDER && toTax < 0 ) return;#endif FMindex = CHAR_getWorkInt( meindex, CHAR_WORKFMINDEXI ); mygold = CHAR_getInt( meindex, CHAR_GOLD); if( mygold < 0 || mygold > MaxGold || toTax == 0 ) return; if( toTax > 0 ) {//+存款 if( ((mygold-toTax) < 0) || (familyTax[ FMindex] + toTax) > CHAR_MAXFMBANKGOLDHAVE ) { return; } }else if( toTax < 0 ){ //-取款 if( ((mygold-toTax)>MaxGold) || (familyTax[ FMindex] + toTax) < 0 ) { return; } } if( toTax>0 ) { //存款预先扣款 CHAR_setInt( meindex, CHAR_GOLD, CHAR_getInt( meindex, CHAR_GOLD)-toTax ); } sprintf( buf, "家族银行%s处理中....", (toTax>0)?"存款":"取款"); CHAR_talkToCli( meindex , -1, buf, CHAR_COLORYELLOW); CHAR_send_P_StatusString( meindex , CHAR_P_STRING_GOLD); sprintf( buf, "%d", toTax ); saacproto_ACFixFMData_send(acfd, CHAR_getChar(meindex, CHAR_FMNAME), CHAR_getInt(meindex, CHAR_FMINDEX), CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), FM_FIX_FMGOLD, buf, "", CHAR_getWorkInt(meindex, CHAR_WORKFMCHARINDEX), CONNECT_getFdid(fd));#ifdef _FAMILYBANKSTONELOG saacproto_ACgetFMBankgold_send(acfd, CHAR_getChar(meindex, CHAR_FMNAME), CHAR_getInt(meindex, CHAR_FMINDEX), CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), CHAR_getWorkInt(meindex, CHAR_WORKFMCHARINDEX), CONNECT_getFdid(fd));#endif //print(" getTax:%s=%d ", CHAR_getChar(meindex, CHAR_FMNAME), toTax ); }}void ACFMPointList(int ret, char *data){}#ifdef _CK_ONLINE_PLAYER_COUNT // WON ADD 计算线上人数void GS_SEND_PLAYER_COUNT(void){ int i, count = 0; int playernum = CHAR_getPlayerMaxNum(); for( i = 0 ; i < playernum ; i++) { if( CHAR_getCharUse(i) != FALSE ) count++; } saacproto_GS_PLAYER_COUNT_SEND(acfd, count);}#endifvoid FAMILY_SetPoint(int fd, int meindex, char *message){ int i, fmpointindex, fl, x, y, fmdp, fmlevel = 0; char token[128], buf[1024]; if (!CHAR_CHECKINDEX(meindex)) return; if (CHAR_getWorkInt(meindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return; if ((CHAR_getInt(meindex, CHAR_FMINDEX) == -1) || (strcmp(CHAR_getChar(meindex, CHAR_FMNAME), "") == 0)#ifdef _FMVER21 || (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != FMMEMBER_LEADER))#else || (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) != 1))#endif { lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( "\n你不是族长,所以没有修改的权力唷!", buf, sizeof(buf))); return; } fmdp = CHAR_getWorkInt(meindex, CHAR_WORKFMDP); for (i = 0; i < arraysizeof(fmdplevelexp); i++){ if (fmdp < fmdplevelexp[i + 1] && fmdp >= fmdplevelexp[i]){ fmlevel = i; } }#ifndef _ACFMPK_NOFREE if (fmlevel < MINFMLEVLEFORPOINT){// or 人数小於30人 lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( "\n家族等级尚未到达申请家族据点的条件!", buf, sizeof(buf))); return; }#endif for (i = 1; i <= MANORNUM; i++) { if (((strcmp(fmpks[i * MAX_SCHEDULE + 1].guest_name, CHAR_getChar(meindex, CHAR_FMNAME)) == 0)) && ((fmpks[i * MAX_SCHEDULE + 1].flag = FMPKS_FLAG_MANOR_BATTLEBEGIN) || (fmpks[i * MAX_SCHEDULE + 1].flag == FMPKS_FLAG_MANOR_PREPARE))){ char tmpbuf[256]; sprintf(tmpbuf, "\n你跟%s已经有预约庄园争夺赛了~\n无法再申请庄园了喔!", fmpks[i * MAX_SCHEDULE + 1].host_name); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString(tmpbuf, buf, sizeof(buf))); return; } } if (getStringFromIndexWithDelim(message, "|", 2, token, sizeof(token)) == FALSE) return; fmpointindex = atoi(token); if (getStringFromIndexWithDelim(message, "|", 3, token, sizeof(token)) == FALSE) return; fl = atoi(token); if (getStringFromIndexWithDelim(message, "|", 4, token, sizeof(token)) == FALSE) return; x = atoi(token); if (getStringFromIndexWithDelim(message, "|", 5, token, sizeof(token)) == FALSE) return; y = atoi(token);/* print("SetFMPoint charname:%s fmindex:%d index:%d pointindex:%d fl:%d x:%d y:%d\n", CHAR_getChar(meindex, CHAR_FMNAME), CHAR_getInt(meindex, CHAR_FMINDEX), CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), fmpointindex, fl, x, y);*/ saacproto_ACSetFMPoint_send(acfd, CHAR_getChar(meindex, CHAR_FMNAME), CHAR_getInt(meindex, CHAR_FMINDEX), CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI), fmpointindex, fl, x, y, CONNECT_getFdid(fd));}void ACSetFMPoint(int ret, int r, int clifd){ int meindex = CONNECT_getCharaindex(clifd); char message[256], buf[512]; if (!CHAR_CHECKINDEX(meindex)) return; if ((CHAR_getWorkInt(meindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE) || (CHAR_getWorkInt(meindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE)) return; if (ret == 0){ if (r == -1) sprintf(message, "申请家族失败!"); else if (r == -2) sprintf(message, "你已经有家族据点了~不得重复申请!"); else if (r == -3) sprintf(message, "尚未到达申请家族据点的资格!"); else if (r == -4) sprintf(message, "家族据点已经有家族在使用中罗!"); else if (r == -5) sprintf(message, "您的家族人数未达申请标准唷!"); } else if (ret == 1) sprintf(message, "申请家族据点OK!"); lssproto_WN_send( clifd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString(message, buf, sizeof(buf)));}void ACFMAnnounce(int ret, char *fmname, int fmindex, int index, int kindflag, char *data, int color){ // kindflag 1:族长广播 2:系统公告家族被删除 3:系统通知讯息 int i, chindex; if( ret != 1 ) return;// print("fmname:%s fmindex:%d index:%d kindflag:%d data:%s color:%d\n",// fmname, fmindex, index, kindflag, data, color); for( i=0; i < FAMILY_MAXMEMBER; i++) { chindex = familyMemberIndex[index][i]; if( chindex >= 0 ) { if( CHAR_getCharUse(chindex) ) { if (kindflag == 1) {#ifdef _FMVER21 // shan 2001/12/13 //if( CHAR_getInt( chindex, CHAR_FMLEADERFLAG ) == FMMEMBER_MEMBER ) if( CHAR_getInt( chindex, CHAR_FMLEADERFLAG ) == FMMEMBER_MEMBER || CHAR_getInt( chindex, CHAR_FMLEADERFLAG ) == FMMEMBER_ELDER )#else if( CHAR_getInt( chindex, CHAR_FMLEADERFLAG ) == 2 )#endif CHAR_talkToCli( chindex, -1, data, color ); } else if (kindflag == 2) { int fd = getfdFromCharaIndex( chindex ); if (fd == -1) return; SetFMVarInit( chindex ); CHAR_talkToCli( chindex , -1, "由於您的家族在七天之内没有召收到10名家族成员,所以被迫解散了!", CHAR_COLORRED); } } else familyMemberIndex[index][i] = -1; } } if (kindflag == 3) { int meindex = 0; int clifd = getfdFromFdid(color); if (CONNECT_checkfd(clifd) == FALSE) return; meindex = CONNECT_getCharaindex(clifd); if (!CHAR_CHECKINDEX(meindex)) return; CHAR_talkToCli(meindex, -1, data, CHAR_COLORRED); } if (kindflag == 4) { int meindex = 0; char buf[1024]; int clifd = getfdFromFdid(color);// print("Here1\n"); if (CONNECT_checkfd(clifd) == FALSE) return; meindex = CONNECT_getCharaindex(clifd); if (!CHAR_CHECKINDEX(meindex)) return;// print("Here2\n"); lssproto_WN_send(clifd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString(data, buf, sizeof(buf))); }}void FAMILY_SetAcceptFlag(int
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -