📄 family.c
字号:
} if (getStringFromIndexWithDelim(message, "|", 3, token, sizeof(token)) == FALSE) return; havepetindex = atoi(token); petindex = CHAR_getCharPet(meindex, havepetindex); if (!CHAR_CHECKINDEX(petindex)) { lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( "\n请选择一只宠物作为家族守护兽!", buf, sizeof(buf))); return; } if (getStringFromIndexWithDelim(message, "|", 4, token, sizeof(token)) == FALSE) return; fmsprite = atoi(token); if (getStringFromIndexWithDelim(message, "|", 5, token, sizeof(token)) == FALSE) return; if (strcmp(token, "") == 0) sprintf(fmrule, "无"); else sprintf(fmrule, "%s", token); sprintf(charname, "%s", CHAR_getChar(meindex, CHAR_NAME)); sprintf(charid, "%s", CHAR_getChar(meindex, CHAR_CDKEY)); charlv = CHAR_getInt(meindex, CHAR_LV); chargrano = CHAR_getInt(meindex, CHAR_FACEIMAGENUMBER); if (strlen(CHAR_getChar(petindex, CHAR_USERPETNAME)) == 0) sprintf(petname, "%s", CHAR_getChar(petindex, CHAR_NAME)); else sprintf(petname, "%s", CHAR_getChar(petindex, CHAR_USERPETNAME)); sprintf(petattr, "%d %d %d %d", CHAR_getInt(petindex, CHAR_BASEIMAGENUMBER), CHAR_getWorkInt(petindex, CHAR_WORKATTACKPOWER), CHAR_getWorkInt(petindex, CHAR_WORKDEFENCEPOWER), CHAR_getWorkInt(petindex, CHAR_WORKQUICK)); CHAR_setInt(petindex, CHAR_PETFAMILY, 1); CHAR_setChar(meindex, CHAR_FMNAME, fmname);#ifdef _FMVER21 CHAR_setInt(meindex, CHAR_FMLEADERFLAG, FMMEMBER_LEADER);#else CHAR_setInt(meindex, CHAR_FMLEADERFLAG, 1);#endif CHAR_setInt(meindex, CHAR_FMSPRITE, fmsprite); // print("%s %s %s %d %s %s %s %d %d\n", fmname, charname, charid, charlv, petname, // petattr, fmrule, fmsprite, chargrano);#ifdef _PERSONAL_FAME saacproto_ACAddFM_send(acfd, fmname, charname, charid, charlv, petname, petattr, fmrule, fmsprite, chargrano, CHAR_getInt(meindex, CHAR_FAME), CONNECT_getFdid(fd)); // print("ACAddFM acfd:%d meindex:%d fmname:%s charname:%s fame:%d Connectfd:%d fd:%d\n", // acfd, meindex, fmname, charname, CHAR_getInt(meindex, CHAR_FAME), CONNECT_getFdid(fd), fd);#else saacproto_ACAddFM_send(acfd, fmname, charname, charid, charlv, petname, petattr, fmrule, fmsprite, chargrano, CONNECT_getFdid(fd));#endif // 要求最新家族列表 //saacproto_ACShowFMList_send( acfd ); }/* ┐┌ ┘└┘└ └┐..┌┘─ ┴──┤★~~├ │o o│ │● ┬── │ ~~~~~~~~~哞 ▲△▲△▲△▲△▲△▲△▲△▲△ */void ACAddFM(int fd, int result, int fmindex, int index){ int meindex = CONNECT_getCharaindex(fd); char buf[1024]; // print("ACAddFM result:%d fmindex:%d meindex:%d\n", result, fmindex, meindex); // test if (!CHAR_CHECKINDEX(meindex)) return;// print("ACAddFM_2!\n"); if (CHAR_getWorkInt(meindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return;// print("ACAddFM_3!\n"); if(result == 1) { CHAR_setInt(meindex, CHAR_FMINDEX, fmindex); CHAR_setWorkInt(meindex, CHAR_WORKFMINDEXI, index); CHAR_setWorkInt(meindex, CHAR_WORKFMSETUPFLAG, 0);#ifdef _NEW_MANOR_LAW CHAR_setInt(meindex,CHAR_MOMENTUM,0); CHAR_talkToCli(meindex,-1,"成立家族个人气势归零",CHAR_COLORYELLOW);#endif lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( "\n恭喜你成立了新的家族!但请在7天之内召集到10名族人加入,不然会取消家族资格喔。", buf, sizeof(buf))); JoinMemberIndex( meindex, index); CHAR_charSaveFromConnect(fd, FALSE); // 要求最新家族资料 saacproto_ACShowFMList_send( acfd ); saacproto_ACShowMemberList_send( acfd, index ); saacproto_ACShowTopFMList_send(acfd, FM_TOP_INTEGRATE); LogFamily( CHAR_getChar( meindex, CHAR_FMNAME), CHAR_getInt( meindex, CHAR_FMINDEX), CHAR_getChar( meindex, CHAR_NAME), CHAR_getChar( meindex, CHAR_CDKEY), "ADDFAMILY(成立家族)", "" ); } else { int i = 0, petindex = 0; char tmpbuf[256]; int gold = CHAR_getInt(meindex, CHAR_GOLD); CHAR_setInt(meindex, CHAR_GOLD, gold + 10000); CHAR_send_P_StatusString( meindex , CHAR_P_STRING_GOLD); SetFMVarInit(meindex); for (i = 0; i < CHAR_MAXPETHAVE; i++) { petindex = CHAR_getCharPet(meindex, i); if (!CHAR_CHECKINDEX(petindex)) continue; CHAR_setInt(petindex, CHAR_PETFAMILY, -1); } if (fmindex == -2) sprintf(tmpbuf, "\n已经有相同名字的家族成立了!"); else sprintf(tmpbuf, "\n申请成立家族失败!"); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString(tmpbuf, buf, sizeof(buf))); } CHAR_sendStatusString( meindex, "F");}void FAMILY_Join(int fd, int meindex, char *message){ int fmindex, charlv, index, fmsprite; char token[128], fmname[128], charname[128], charid[128], buf[1024]; if (!CHAR_CHECKINDEX(meindex)) return; if ((CHAR_getWorkInt(meindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE) || (CHAR_getWorkInt(meindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE)) return; if (CheckFMMember(meindex) < 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; index = atoi(token); if (getStringFromIndexWithDelim(message, "|", 3, token, sizeof(token)) == FALSE) return; fmindex = atoi(token); if (getStringFromIndexWithDelim(message, "|", 4, token, sizeof(token)) == FALSE) return; sprintf(fmname, "%s", token); if (getStringFromIndexWithDelim(message, "|", 5, token, sizeof(token)) == FALSE) return; fmsprite = atoi(token); sprintf(charname, "%s", CHAR_getChar(meindex, CHAR_NAME)); sprintf(charid, "%s", CHAR_getChar(meindex, CHAR_CDKEY)); charlv = CHAR_getInt(meindex, CHAR_LV); CHAR_setInt(meindex, CHAR_FMINDEX, fmindex); CHAR_setChar(meindex, CHAR_FMNAME, fmname);#ifdef _FMVER21 CHAR_setInt(meindex, CHAR_FMLEADERFLAG, FMMEMBER_APPLY);#else CHAR_setInt(meindex, CHAR_FMLEADERFLAG, 0);#endif CHAR_setInt(meindex, CHAR_FMSPRITE, fmsprite); CHAR_setWorkInt(meindex, CHAR_WORKFMINDEXI, index);// print("JoinFM index:%d fmindex:%d fmname:%s charname:%s charid:%s charlv:%d sprite:%d\n",// index, fmindex, fmname, charname, charid, charlv, fmsprite);#ifdef _PERSONAL_FAME // Arminius: 家族个人声望// print("fame:%d charfdid:%d\n", CHAR_getInt(meindex, CHAR_FAME),// CONNECT_getFdid(fd)); saacproto_ACJoinFM_send(acfd, fmname, fmindex, charname, charid, charlv, index, CHAR_getInt(meindex, CHAR_FAME), CONNECT_getFdid(fd));#else // print("charfdid:%d\n", CONNECT_getFdid(fd)); saacproto_ACJoinFM_send(acfd, fmname, fmindex, charname, charid, charlv, index, CONNECT_getFdid(fd));#endif}void ACJoinFM(int fd, int result, int recv){ int meindex = CONNECT_getCharaindex(fd); char buf[1024]; if(!CHAR_CHECKINDEX(meindex)) return; if ((CHAR_getWorkInt(meindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE) || (CHAR_getWorkInt(meindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE)) return; if (result == 1) { lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( "\n谢谢你的加入申请!请先等族长对你的审核通过之後,才算正式加入。", buf, sizeof(buf))); JoinMemberIndex( meindex, CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI) );#ifdef _NEW_MANOR_LAW CHAR_setInt(meindex,CHAR_MOMENTUM,0); CHAR_talkToCli(meindex,-1,"加入家族个人气势归零",CHAR_COLORYELLOW);#endif sprintf(buf,"fame:%d",CHAR_getInt(meindex,CHAR_FAME)); LogFamily( CHAR_getChar( meindex, CHAR_FMNAME), CHAR_getInt( meindex, CHAR_FMINDEX), CHAR_getChar( meindex, CHAR_NAME), CHAR_getChar( meindex, CHAR_CDKEY), "JOINFAMILY(申请加入家族)", buf ); } else { SetFMVarInit(meindex); if (recv == -2) { lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( "\n此家族目前不愿意招收成员!", buf, sizeof(buf))); } else if (recv == -3) { lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( "\n此家族目前无法招收成员,家族成员人数已到达上限!", buf, sizeof(buf))); } else lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( "\n申请加入家族失败!", buf, sizeof(buf))); } CHAR_sendStatusString( meindex, "F"); }void FAMILY_Leave(int fd, int meindex, char *message){ int result, fmindex, index; char token[128], fmname[128], charname[128], charid[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_NONE))#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; } { int i, fmpks_pos; for( i=1; i<=MANORNUM; i++){ // CoolFish 4->MANORNUM 2002/2/25 fmpks_pos = i * MAX_SCHEDULE;#ifdef _FMVER21 if (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) == FMMEMBER_LEADER){#else if (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) == 1){#endif if( (fmpks[fmpks_pos+1].host_index+1) == CHAR_getInt(meindex, CHAR_FMINDEX) || (fmpks[fmpks_pos+1].guest_index+1) == CHAR_getInt(meindex, CHAR_FMINDEX) ){ 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; result = atoi(token); if (result == 1) { fmindex = CHAR_getInt(meindex, CHAR_FMINDEX); index = CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI); sprintf(fmname, "%s", CHAR_getChar(meindex, CHAR_FMNAME)); sprintf(charname, "%s", CHAR_getChar(meindex, CHAR_NAME)); sprintf(charid, "%s", CHAR_getChar(meindex, CHAR_CDKEY));#ifdef _FMVER21 if (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) == FMMEMBER_LEADER) {#else if (CHAR_getInt(meindex, CHAR_FMLEADERFLAG) == 1) {#endif // print("DelFM index:%d fmindex:%d fmname:%s\n", index, fmindex, fmname); saacproto_ACDelFM_send(acfd, fmname, fmindex, index, charname, charid, CONNECT_getFdid(fd)); // 要求最新家族列表 //saacproto_ACShowFMList_send( acfd ); } else {// print("LeaveFM index:%d fmindex:%d fmname:%s charname:%s charid:%s\n",// index, fmindex, fmname, charname, charid); saacproto_ACLeaveFM_send(acfd, fmname, fmindex, charname, charid, index, CONNECT_getFdid(fd)); } }}void ACLeaveFM( int fd, int result, int resultflag){ int meindex = CONNECT_getCharaindex(fd); char buf[1024]; if (!CHAR_CHECKINDEX(meindex)) return; if (result == 1){ // won 2002/01/05 LogFamily( CHAR_getChar( meindex, CHAR_FMNAME), CHAR_getInt( meindex, CHAR_FMINDEX), CHAR_getChar( meindex, CHAR_NAME), CHAR_getChar( meindex, CHAR_CDKEY), "LEAVEFAMILY(离开家族)", "" ); if( CHAR_getWorkInt( meindex, CHAR_WORKFMCHANNEL) != -1 ) CHAR_setWorkInt( meindex, CHAR_WORKFMCHANNEL, -1 ); LeaveMemberIndex( meindex, CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI) ); SetFMVarInit(meindex); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( "\n申请退出家族OK!", buf, sizeof(buf))); CHAR_setWorkInt( meindex, CHAR_WORKFMFLOOR, -1);#ifdef _FM_JOINLIMIT CHAR_setInt( meindex, CHAR_FMTIMELIMIT, (int)time(NULL)+(7*24)*(60*60) );#endif#ifdef _NEW_MANOR_LAW CHAR_setInt(meindex,CHAR_MOMENTUM,0); CHAR_talkToCli(meindex,-1,"退出家族个人气势归零",CHAR_COLORYELLOW);#endif }else lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( "\n申请退出家族失败!", buf, sizeof(buf))); CHAR_sendStatusString( meindex, "F" );}void ACDelFM(int fd, int result){ char buf[1024]; int meindex = CONNECT_getCharaindex(fd); if (!CHAR_CHECKINDEX(meindex)) return; //if ((CHAR_getWorkInt(meindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE) // || (CHAR_getWorkInt(meindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE)) // return; if (result == 1) {// WON ADD LogFamily( CHAR_getChar( meindex, CHAR_FMNAME), CHAR_getInt( meindex, CHAR_FMINDEX), CHAR_getChar( meindex, CHAR_NAME), CHAR_getChar( meindex, CHAR_CDKEY), "DELFAMILY(家族解散)", "" ); LeaveMemberIndex( meindex, CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI) ); /* for( i=0; i<FAMILY_MAXMEMBER; i++) { familyMemberIndex[ CHAR_getWorkInt(meindex, CHAR_WORKFMINDEXI) ][i] = -1; } */ SetFMVarInit(meindex); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( "\n家族已经解散了!", buf, sizeof(buf))); // 要求最新家族列表 saacproto_ACShowFMList_send( acfd );// won 移到前面去
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -