📄 npc_fmwarpman.c
字号:
char fmindex[4]; for (fmid=0; fmid<MANORNUM; fmid++){ // 10个庄园 getStringFromIndexWithDelim(fmpointlist.pointlistarray[fmid], "|", 5, fmindex, sizeof(fmindex)); if (fmpks[fmpks_pos].guest_index==atoi(fmindex)-1) break; }#endif saacproto_ACFixFMPoint_send(acfd, fmpks[fmpks_pos].guest_name, fmpks[fmpks_pos].guest_index + 1, fmpks[fmpks_pos].guest_index, fmpks[fmpks_pos].host_name, fmpks[fmpks_pos].host_index + 1, fmpks[fmpks_pos].host_index, meid); //Syu 增加庄园战胜负Log Logfmpk( fmpks[fmpks_pos].guest_name, fmpks[fmpks_pos].guest_index, num2, fmpks[fmpks_pos].host_name, fmpks[fmpks_pos].host_index, num1, token, "", "", 2);#ifdef _FM_POINT_PK if(fmid>=0 && fmid<MANORNUM){ saacproto_ACFixFMPoint_send(acfd, fmpks[fmpks_pos].host_name, fmpks[fmpks_pos].host_index + 1, fmpks[fmpks_pos].host_index, fmpks[fmpks_pos].host_name, fmpks[fmpks_pos].host_index + 1, fmpks[fmpks_pos].host_index, fmid+1); }#endif } CHAR_setWorkInt(meindex, NPC_WORK_MODEFLAG, NPC_STATEFREE); CHAR_setInt(meindex, CHAR_LOOPINTERVAL, FMWARPMAN_FREE_LOOPTIME); print("FMWarpMan State:%d\n", CHAR_getWorkInt(meindex, NPC_WORK_MODEFLAG)); } } if (winflag == 1) { CHAR_setWorkChar(meindex, NPC_WORK_WINFMNAME, fmpks[fmpks_pos].host_name); } else if (winflag == 2) { CHAR_setWorkChar(meindex, NPC_WORK_WINFMNAME, fmpks[fmpks_pos].guest_name); } NPC_WarpFamily(floor, fmpks[fmpks_pos].host_index, fmpks[fmpks_pos].guest_index, CHAR_getInt(meindex, CHAR_FLOOR), CHAR_getInt(meindex, CHAR_X), CHAR_getInt(meindex, CHAR_Y)); if (meid > MANORNUM){// CoolFish 2002/2/25 Change MANOR -> MANORNUM CHAR_setWorkInt(meindex, NPC_WORK_MODEFLAG, NPC_STATEWAIT); CHAR_setInt(meindex, CHAR_LOOPINTERVAL, FMWARPMAN_WAIT_LOOPTIME); } }else if( winflag == 3 ){ if (meid > 0 && meid <= MANORNUM) // CoolFish 2002/2/25 Change MANOR -> MANORNUM fmpks[fmpks_pos + 1].flag = FMPKS_FLAG_MANOR_BATTLEEND; NPC_talkToFloor(floor, fmpks[fmpks_pos].host_index, fmpks[fmpks_pos].guest_index, "双方平手,不分胜负!!"); NPC_WarpFamily(floor, fmpks[fmpks_pos].host_index, fmpks[fmpks_pos].guest_index, CHAR_getInt(meindex, CHAR_FLOOR), CHAR_getInt(meindex, CHAR_X), CHAR_getInt(meindex, CHAR_Y)); CHAR_setWorkInt(meindex, NPC_WORK_MODEFLAG, NPC_STATEWAIT); CHAR_setInt(meindex, CHAR_LOOPINTERVAL, FMWARPMAN_WAIT_LOOPTIME); } }else if (CHAR_getWorkInt(meindex, NPC_WORK_MODEFLAG) == NPC_STATEWAIT){ // andy_edit 2002/07/29 if (tm1.tm_min == FMWARPMAN_CLEANPLACE) CHAR_setInt(meindex, CHAR_LOOPINTERVAL, FMWARPMAN_FREE_LOOPTIME); NPC_CleanPK(floor, meindex); if (tm1.tm_min == 0){ CHAR_setWorkInt(meindex, NPC_WORK_MODEFLAG, NPC_STATEFREE); // shan add NPC_FMBATTLESET(floor, fmpks[fmpks_pos].host_index, fmpks[fmpks_pos].guest_index, -1); CHAR_setInt(meindex, CHAR_LOOPINTERVAL, FMWARPMAN_FREE_LOOPTIME); // 将 fmwarpman 初始化 CHAR_setWorkInt(meindex, NPC_WORK_FMNUMI, 0); CHAR_setWorkInt(meindex, NPC_WORK_FMNUMII, 0); CHAR_setWorkInt(meindex, NPC_WORK_TIMEFLAG, 0); CHAR_setWorkInt(meindex, NPC_WORK_TALKFLAG, -1); CHAR_setWorkChar(meindex, NPC_WORK_WINFMNAME, ""); } }}void NPC_FMWarpManWindowTalked( int meindex, int talkerindex, int seqno, int select, char *data){ char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE]; char buf[1024], buff2[256], tmpbuf[256]; int fl, x, y, fmpks_pos, fd; if( !CHAR_CHECKINDEX( talkerindex) )return; fd = getfdFromCharaIndex(talkerindex); if (fd == -1) return; if( NPC_Util_CharDistance( talkerindex, meindex ) > 2) { return; } if(select==WINDOW_BUTTONTYPE_OK){ return; } if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){ print("GetArgStrErr"); return ; } // shan add fmpks_pos = CHAR_getWorkInt(meindex, NPC_WORK_ID) * MAX_SCHEDULE; if (CHAR_getWorkInt(talkerindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].host_index){ if( NPC_Util_GetStrFromStrWithDelim( npcarg, "WARP1", buf, sizeof( buf)) == NULL ){ print("FM WARPMAN Can't Read WARP1!\n"); return; } }else if (CHAR_getWorkInt(talkerindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].guest_index){ if( NPC_Util_GetStrFromStrWithDelim( npcarg, "WARP2", buf, sizeof( buf)) == NULL ){ print("FM WARPMAN Can't Read WARP2!\n"); return; } }else{ CHAR_talkToCli( talkerindex, meindex, "你并非对战双方所属任一家族成员!", CHAR_COLORYELLOW); return; } getStringFromIndexWithDelim(buf,",",1,buff2,sizeof(buff2)); fl=atoi(buff2); getStringFromIndexWithDelim(buf,",",2,buff2,sizeof(buff2)); x=atoi(buff2); getStringFromIndexWithDelim(buf,",",3,buff2,sizeof(buff2)); y=atoi(buff2); switch (seqno){ case CHAR_WINDOWTYPE_WINDOWWARPMAN_MAIN: if(select==WINDOW_BUTTONTYPE_YES){ if( CHAR_getWorkInt( talkerindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return; if(CHAR_getWorkInt(talkerindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE){ CHAR_talkToCli( talkerindex, meindex, "请解散团队!", CHAR_COLORYELLOW); return; } if(CHAR_getWorkInt( talkerindex , CHAR_WORKSHOPRELEVANTTRD) <= 0){ if( CHAR_getWorkInt( talkerindex, CHAR_WORKWARPCHECK ) == TRUE ) { if (CHAR_getWorkInt(meindex, NPC_WORK_MODEFLAG) == NPC_STATEFREE){ if (CHAR_getWorkInt(talkerindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].host_index){ int tmpnum1 = CHAR_getWorkInt(meindex, NPC_WORK_FMNUMI) + 1; CHAR_setWorkInt(meindex, NPC_WORK_FMNUMI, tmpnum1); }else if (CHAR_getWorkInt(talkerindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].guest_index){ int tmpnum2 = CHAR_getWorkInt(meindex, NPC_WORK_FMNUMII) + 1; CHAR_setWorkInt(meindex, NPC_WORK_FMNUMII, tmpnum2); }else{ CHAR_talkToCli( talkerindex, meindex, "你并非对战双方所属任一家族成员!", CHAR_COLORYELLOW); } CHAR_setWorkInt(talkerindex, CHAR_WORKFMPKFLAG, 1); CHAR_setWorkInt(talkerindex, CHAR_WORKFMMANINDEX, meindex); CHAR_setWorkInt( talkerindex, CHAR_WORKWARPCHECK, FALSE ); CHAR_warpToSpecificPoint(talkerindex, fl, x,y);/* { FILE *fp; struct tm tm1; char szFileName[128]; memcpy(&tm1, localtime((time_t *)&NowTime.tv_sec), sizeof(tm1)); memset(szFileName,0,sizeof(szFileName)); sprintf(szFileName,"FMPkWarp.%d%d%d.log",tm1.tm_mon,tm1.tm_hour,tm1.tm_min); fp = fopen(szFileName,"a+"); if(fp != NULL){ fprintf(fp,"FMName:%s\tName:%s\tWarpHost:%d\tWarpGuest:%d\tFloor:%d,%d,%d\tMaxPlayer:%d\n", CHAR_getChar(talkerindex,CHAR_FMNAME),CHAR_getChar(talkerindex,CHAR_NAME), CHAR_getWorkInt(meindex,NPC_WORK_FMNUMI), CHAR_getWorkInt(meindex,NPC_WORK_FMNUMII), fl,x,y, fmpks[fmpks_pos].max_player); fclose(fp); } else printf("%s(errno:%x)\n",sys_errlist[errno],errno); }*/ } else return; { struct tm tm1; int clock = 0; int fmpks_pos = CHAR_getWorkInt(meindex, NPC_WORK_ID) * MAX_SCHEDULE; memcpy(&tm1, localtime((time_t *)&NowTime.tv_sec), sizeof(tm1)); clock = ((fmpks[fmpks_pos].dueltime % 100) + fmpks[fmpks_pos].prepare_time) - tm1.tm_min; if (clock >= 60) clock = clock - 60; sprintf(tmpbuf, "\n请等候双方准备完毕後再开战!" "\n战斗时请不要随意登出或离开。" "\n赢得胜利的家族也请先稍後一下," "\n等待裁判的宣布後再离场!" "\n谢谢您的合作!" "\n距离对战时间还剩下:%4d分钟", clock); lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString(tmpbuf, buff2, sizeof(buff2))); } } } else{ if(CHAR_getInt(talkerindex,CHAR_GOLD) < CHAR_getWorkInt(talkerindex,CHAR_WORKSHOPRELEVANTTRD)){ NPC_ERR_FMDiSP( meindex, talkerindex, 2); return ; } CHAR_DelGold( talkerindex, CHAR_getWorkInt(talkerindex,CHAR_WORKSHOPRELEVANTTRD )); CHAR_setWorkInt( talkerindex, CHAR_WORKWARPCHECK, FALSE ); CHAR_warpToSpecificPoint(talkerindex, fl, x,y); } } break; }}void NPC_ERR_FMDiSP(int meindex,int talker,int errNO){ char token[1024]; int i=0; int otherindex; int fd = getfdFromCharaIndex( talker); char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE]; if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){ print("GetArgStrErr"); return ; } if(errNO==1){ /*--由□ 奴□匹 仄井仃凶--*/ if(NPC_Util_GetStrFromStrWithDelim( npcarg, "PartyMsg",token, sizeof( token))==NULL) { /*--涩烂今木化卅仃木壬}票及丢永本□斥毛银丹--*/ sprintf(token, "\n\n无法加入团队,请先解散团队!"); } if(CHAR_getWorkInt(talker,CHAR_WORKPARTYMODE)==CHAR_PARTY_CLIENT){ }else{ /*--伉□母□互 仄井仃凶桦宁及心--*/ /*--由□ 奴□蝈够卞丢永本□斥毛请允--*/ for( i=0 ; i < CHAR_PARTYMAX ;i++) { otherindex=CHAR_getWorkInt(talker,CHAR_WORKPARTYINDEX1+i); if(otherindex != -1){ fd = getfdFromCharaIndex( otherindex); /*-仇仇匹霜耨允月--*/ lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, CHAR_WINDOWTYPE_WINDOWWARPMAN_ERR, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), token); } } return ; } }else if (errNO==2){ /*--嗯互凶曰卅中匹允[--*/ if(NPC_Util_GetStrFromStrWithDelim( npcarg, "MoneyMsg", token, sizeof( token))==NULL){ /*--云嗯互箫曰卅中及卞}涩烂今木化卅井匀凶日}票及丢永本□斥毛 歹曰卞请允--*/ sprintf(token,"\n\n金钱似乎不足唷,请存好钱後再过来。"); } } /*-仇仇匹霜耨允月--*/ lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, CHAR_WINDOWTYPE_WINDOWWARPMAN_ERR, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), token);}static void NPC_FMWarpMan_selectWindow( int meindex, int toindex, int num,int select){ struct tm tm1; char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE]; char token[1024]; char buf[256]; char buf2[1024]; char buf3[256]; int fl = 0, num1 = 0, num2 = 0; int fmpks_pos = CHAR_getWorkInt(meindex, NPC_WORK_ID) * MAX_SCHEDULE; int floor = CHAR_getWorkInt(meindex, NPC_WORK_WARPFLOOR); int fd = getfdFromCharaIndex( toindex); if( fd == -1 ) { fprint( "getfd err\n"); return; } if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){ print("GetArgStrErr"); return ; } /*--涩烂白央奶伙及 卞白夫失谛醒互隙烂今木化中月井今木化中木壬白夫失谛醒及喃曰请仄*/ if(strstr(npcarg,"%4d")!=NULL){ NPC_Util_GetStrFromStrWithDelim( npcarg, "WARP1", buf, sizeof( buf)); getStringFromIndexWithDelim(buf,",",1,buf3,sizeof(buf3)); fl = NPC_FMFloorUse(atoi(buf3)); } CHAR_setWorkInt(toindex, CHAR_WORKWARPCHECK, TRUE); CHAR_setWorkInt(toindex, NPC_WORK_WARPFLOOR, fl); memcpy(&tm1, localtime((time_t *)&NowTime.tv_sec), sizeof(tm1)); if (CHAR_getWorkInt(meindex, NPC_WORK_MODEFLAG) == NPC_STATEFREE) { if (((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].host_index) && (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos].host_name) == 0)) || ((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].guest_index) && (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos].guest_name) == 0))) { if ((fmpks[fmpks_pos].host_index != -1) && (CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].host_index)) { // WON ADD 修正家族pk场的约战问题 if(fmpks[fmpks_pos].flag == -1) return; if (fmpks[fmpks_pos].flag != FMPKS_FLAG_SCHEDULED) { lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString("\n这场战斗对方好像还没同意呢!\n下次请记得先邀约对方後再来登记吧~", token, sizeof(token))); return; }#ifdef _FMVER21 if (CHAR_getInt(toindex, CHAR_FMLEADERFLAG) == FMMEMBER_APPLY)#else if (CHAR_getInt(toindex, CHAR_FMLEADERFLAG) == 0)#endif { char tmpbuf[256]; sprintf(tmpbuf, "\n你还没有正式加入%s家族,所以不能进场!", fmpks[fmpks_pos].host_name); lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString(tmpbuf, token, sizeof(token))); return; } //andy_add 2003/06/17 CHECK_FMPknumInFloor( meindex); if (CHAR_getWorkInt(meindex, NPC_WORK_FMNUMI) > (fmpks[fmpks_pos].max_player - 1)){ lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString("\n已经不能再进去罗~!\n家族进场人数已经到达设定上限了!", token, sizeof(token))); return; } } else if ((fmpks[fmpks_pos].guest_index != -1) && (CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].guest_index)) { // WON ADD 修正家族pk场的约战问题 if(fmpks[fmpks_pos].flag == -1) return; if (fmpks[fmpks_pos].flag != FMPKS_FLAG_SCHEDULED)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -