?? family.c.bak
字號:
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)));#ifdef _FM_RIDE_PET if(getFmridepet()==1) { int fmRides = CHAR_getInt( index, CHAR_LOWRIDEPETS); switch( CHAR_getWorkInt( index, CHAR_WORKFMFLOOR) ) { case 1041: fmRides=fmRides^RIDE_PET9; break; case 2031: fmRides=fmRides^RIDE_PET8|RIDE_PET0|RIDE_PET10|RIDE_PET11); break; case 3031: fmRides=fmRides^RIDE_PET7|RIDE_PET0|RIDE_PET10|RIDE_PET11); break; case 4031: fmRides=fmRides^RIDE_PET1|RIDE_PET0|RIDE_PET10|RIDE_PET11); break; case 5031: fmRides=fmRides^RIDE_PET3|RIDE_PET0|RIDE_PET10|RIDE_PET11); break; case 6031: fmRides=fmRides^RIDE_PET5|RIDE_PET0|RIDE_PET10|RIDE_PET11); break; case 7031: fmRides=fmRides^RIDE_PET4|RIDE_PET0|RIDE_PET10|RIDE_PET11); break; case 8031: fmRides=fmRides^RIDE_PET6|RIDE_PET0|RIDE_PET10|RIDE_PET11); break; case 9031: fmRides=fmRides^RIDE_PET2|RIDE_PET0|RIDE_PET10|RIDE_PET11); break; default: fmRides=fmRides^RIDE_PET0|RIDE_PET10|RIDE_PET11); } CHAR_setInt( index, CHAR_LOWRIDEPETS, fmRides ); CHAR_sendStatusString( index, "x"); }#endif 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" );}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -