📄 npc_fmdengon.c
字号:
#endif makeEscapeString( numberlistbuf, buf, sizeof(buf))); } break; case WINDOW_BUTTONTYPE_OK: break; default: break; } } // 家族强者表(前叁十) else if( seqno == CHAR_WINDOWTYPE_FM_DPTOP) { char listbuf[4096],tmp_buffer[4096]; int listindex; getStringFromIndexWithDelim(data,"|",1,tmp_buffer,sizeof(tmp_buffer)); listindex = atoi(tmp_buffer); switch( select ){ case WINDOW_BUTTONTYPE_NEXT: case WINDOW_BUTTONTYPE_PREV: { int fd,i; fd = getfdFromCharaIndex( talker ); if( fd == -1 ) return; listindex += 10 * (( select == WINDOW_BUTTONTYPE_NEXT) ? 1 : -1); if( listindex >= 30) return; //listindex = 20; //listindex -= 10; //else if( listindex < 1 ) // listindex = 0; if (listindex < 0) return; buttontype = WINDOW_BUTTONTYPE_OK; if( (listindex + 10) >= 30) buttontype |= WINDOW_BUTTONTYPE_PREV; else if( listindex==0 ) buttontype |= WINDOW_BUTTONTYPE_NEXT; else{ buttontype |= WINDOW_BUTTONTYPE_PREV; buttontype |= WINDOW_BUTTONTYPE_NEXT; } strcpy( listbuf, fmdptop.topmemo[listindex]); strcat( listbuf, "\n"); for( i=(listindex+1); i<listindex+10; i++){ strcat( listbuf, fmdptop.topmemo[i]); strcat( listbuf, "\n"); } sprintf(tmp_buffer, "%d\n", listindex); strcat( listbuf, tmp_buffer); #ifdef _FMVER21 lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_TOP30DP,#else lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_DP,#endif buttontype, CHAR_WINDOWTYPE_FM_DPTOP,#ifndef _FM_MODIFY CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else -1,#endif makeEscapeString( listbuf, buf, sizeof(buf))); } break; case WINDOW_BUTTONTYPE_OK: break; default: break; } } // 据点列表 else if( seqno == CHAR_WINDOWTYPE_FM_POINTLIST) { char pointbuf[1024]; int pointlistindex; strcpy( pointbuf, ""); pointlistindex = 0; buttonevent = atoi(data); switch( select ){ case WINDOW_BUTTONTYPE_NEXT: case WINDOW_BUTTONTYPE_PREV: { int fd; fd = getfdFromCharaIndex( talker ); if( fd == -1 ) return;#ifdef _FIX_FM_FMPOINT char x[4]; char y[4]; char fmindex[4]; char name[32]; int windowtype = WINDOW_MESSAGETYPE_MESSAGE; pointlistindex += 5 * (( select == WINDOW_BUTTONTYPE_NEXT) ? 1 : -1); if( pointlistindex > 5) pointlistindex -= 5; else if( pointlistindex < 1 ) pointlistindex = 0; buttontype = WINDOW_BUTTONTYPE_OK; if( CHAR_getInt( talker, CHAR_FMLEADERFLAG) == FMMEMBER_LEADER && CHAR_getWorkInt(talker, CHAR_WORKFMSETUPFLAG)==1){ if(select==WINDOW_BUTTONTYPE_NEXT) CHAR_setInt( talker, CHAR_LISTPAGE,1); else if(select==WINDOW_BUTTONTYPE_PREV) CHAR_setInt( talker, CHAR_LISTPAGE,0); int tkfmindex = CHAR_getWorkInt(talker, CHAR_WORKFMINDEXI); int i,check=TRUE; char fmindex[4]; for(i=0; i<MANORNUM; i++){ // 10个庄园 getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 5, fmindex, sizeof(fmindex)); if(tkfmindex==atoi(fmindex)-1 ){ check=FALSE; break; } } if(check==TRUE){ for (i=CHAR_getInt( talker, CHAR_LISTPAGE); i<CHAR_getInt( talker, CHAR_LISTPAGE)+5; i++){ // 10个庄园 getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 5, fmindex, sizeof(fmindex)); if(atoi(fmindex)<=0 ){ check=TRUE; break; } } } if(check==TRUE){ windowtype = WINDOW_MESSAGETYPE_SELECT; strcpy(pointbuf,"3\n “家族据地列表”\n\n"); }else{ windowtype = WINDOW_MESSAGETYPE_MESSAGE; strcpy(pointbuf," “家族据地列表”\n\n"); } }else{ strcpy(pointbuf," “家族据地列表”\n\n"); } strcat(pointbuf," “地 点”“东”“南”“状 态”\n"); if( (pointlistindex + 5) > 5){ getStringFromIndexWithDelim( fmpointlist.pointlistarray[5],"|",3, x, sizeof( x)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[5],"|",4, y, sizeof( y)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[5],"|",5, fmindex, sizeof( fmindex)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[5],"|",6, name, sizeof( name)); if(atoi(fmindex)<=0)strcpy(name," 未占领"); sprintf(pointbuf,"%s 塔 尔 塔 %3s %3s %s\n", pointbuf, x, y, name); getStringFromIndexWithDelim( fmpointlist.pointlistarray[6],"|",3, x, sizeof( x)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[6],"|",4, y, sizeof( y)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[6],"|",5, fmindex, sizeof( fmindex)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[6],"|",6, name, sizeof( name)); if(atoi(fmindex)<=0)strcpy(name," 未占领"); sprintf(pointbuf,"%s 尼 克 斯 %3s %3s %s\n", pointbuf, x, y, name); getStringFromIndexWithDelim( fmpointlist.pointlistarray[7],"|",3, x, sizeof( x)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[7],"|",4, y, sizeof( y)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[7],"|",5, fmindex, sizeof( fmindex)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[7],"|",6, name, sizeof( name)); if(atoi(fmindex)<=0)strcpy(name," 未占领"); sprintf(pointbuf,"%s 弗 列 顿 %3s %3s %s\n", pointbuf, x, y, name); getStringFromIndexWithDelim( fmpointlist.pointlistarray[8],"|",3, x, sizeof( x)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[8],"|",4, y, sizeof( y)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[8],"|",5, fmindex, sizeof( fmindex)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[8],"|",6, name, sizeof( name)); if(atoi(fmindex)<=0)strcpy(name," 未占领"); sprintf(pointbuf,"%s 亚 伊 欧 %3s %3s %s\n", pointbuf, x, y, name); getStringFromIndexWithDelim( fmpointlist.pointlistarray[9],"|",3, x, sizeof( x)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[9],"|",4, y, sizeof( y)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[9],"|",5, fmindex, sizeof( fmindex)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[9],"|",6, name, sizeof( name)); if(atoi(fmindex)<=0)strcpy(name," 未占领"); sprintf(pointbuf,"%s 瑞尔亚斯 %3s %3s %s\n", pointbuf, x, y, name); buttontype |= WINDOW_BUTTONTYPE_PREV; }else if( pointlistindex==0 ){ getStringFromIndexWithDelim( fmpointlist.pointlistarray[0],"|",3, x, sizeof( x)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[0],"|",4, y, sizeof( y)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[0],"|",5, fmindex, sizeof( fmindex)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[0],"|",6, name, sizeof( name)); if(atoi(fmindex)<=0)strcpy(name," 未占领"); sprintf(pointbuf,"%s 萨姆吉尔 %3s %3s %s\n", pointbuf, x, y, name); getStringFromIndexWithDelim( fmpointlist.pointlistarray[1],"|",3, x, sizeof( x)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[1],"|",4, y, sizeof( y)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[1],"|",5, fmindex, sizeof( fmindex)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[1],"|",6, name, sizeof( name)); if(atoi(fmindex)<=0)strcpy(name," 未占领"); sprintf(pointbuf,"%s 玛丽娜斯 %3s %3s %s\n", pointbuf, x, y, name); getStringFromIndexWithDelim( fmpointlist.pointlistarray[2],"|",3, x, sizeof( x)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[2],"|",4, y, sizeof( y)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[2],"|",5, fmindex, sizeof( fmindex)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[2],"|",6, name, sizeof( name)); if(atoi(fmindex)<=0)strcpy(name," 未占领"); sprintf(pointbuf,"%s 加 加 %3s %3s %s\n", pointbuf, x, y, name); getStringFromIndexWithDelim( fmpointlist.pointlistarray[3],"|",3, x, sizeof( x)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[3],"|",4, y, sizeof( y)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[3],"|",5, fmindex, sizeof( fmindex)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[3],"|",6, name, sizeof( name)); if(atoi(fmindex)<=0)strcpy(name," 未占领"); sprintf(pointbuf,"%s 卡鲁他那 %3s %3s %s\n", pointbuf, x, y, name); getStringFromIndexWithDelim( fmpointlist.pointlistarray[4],"|",3, x, sizeof( x)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[4],"|",4, y, sizeof( y)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[4],"|",5, fmindex, sizeof( fmindex)); getStringFromIndexWithDelim( fmpointlist.pointlistarray[4],"|",6, name, sizeof( name)); if(atoi(fmindex)<=0)strcpy(name," 未占领"); sprintf(pointbuf,"%s 伊 甸 %3s %3s %s\n", pointbuf, x, y, name); buttontype |= WINDOW_BUTTONTYPE_NEXT; }else{ buttontype |= WINDOW_BUTTONTYPE_PREV; buttontype |= WINDOW_BUTTONTYPE_NEXT; }#else int i; pointlistindex += 10 * (( select == WINDOW_BUTTONTYPE_NEXT) ? 1 : -1); if( pointlistindex > FMPOINTNUM) pointlistindex -= 10; else if( pointlistindex < 1 ) pointlistindex = 0; buttontype = WINDOW_BUTTONTYPE_OK; if( (pointlistindex + 10) > FMPOINTNUM) buttontype |= WINDOW_BUTTONTYPE_PREV; else if( pointlistindex==0 ) buttontype |= WINDOW_BUTTONTYPE_NEXT; else{ buttontype |= WINDOW_BUTTONTYPE_PREV; buttontype |= WINDOW_BUTTONTYPE_NEXT; } strcpy( pointbuf, fmpointlist.pointlistarray[pointlistindex]); strcat( pointbuf, "\n"); for( i=(pointlistindex+1); i<pointlistindex+10; i++){ strcat( pointbuf, fmpointlist.pointlistarray[i]); strcat( pointbuf, "\n"); }#endif#ifdef _FIX_FM_FMPOINT lssproto_WN_send( fd, windowtype,#else lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_POINTLIST,#endif buttontype, CHAR_WINDOWTYPE_FM_POINTLIST,#ifndef _FM_MODIFY CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else -1,#endif#ifndef _FIX_FM_FMPOINT pointbuf); #else makeEscapeString( pointbuf, buf, sizeof(buf)));#endif } break; case WINDOW_BUTTONTYPE_OK: break; default:#ifdef _FIX_FM_FMPOINT ApplyFamilyPoint( index, talker, atoi(data)+CHAR_getInt( talker, CHAR_LISTPAGE)*5);#endif break; } } // 家族强者表(自己及前十大) else if( seqno == CHAR_WINDOWTYPE_FM_DPME ) { switch( select ){ case WINDOW_BUTTONTYPE_PREV: { int fd; fd = getfdFromCharaIndex( talker ); if( fd == -1 ) return; if( NowTime.tv_sec > READTIME3 ){ saacproto_ACShowTopFMList_send(acfd, FM_TOP_INTEGRATE); saacproto_ACShowTopFMList_send(acfd, FM_TOP_ADV); saacproto_ACShowTopFMList_send(acfd, FM_TOP_FEED); saacproto_ACShowTopFMList_send(acfd, FM_TOP_SYNTHESIZE); saacproto_ACShowTopFMList_send(acfd, FM_TOP_DEALFOOD); saacproto_ACShowTopFMList_send(acfd, FM_TOP_PK); READTIME3 = NowTime.tv_sec+FM_WAITTIME; } strcpy( NPC_sendbuf, "\n 三十大家族声望列表\n"); strcat( NPC_sendbuf, " 十大冒险家族\n"); strcat( NPC_sendbuf, " 十大饲育家族\n"); strcat( NPC_sendbuf, " 十大合成家族\n"); strcat( NPC_sendbuf, " 十大料理家族\n"); strcat( NPC_sendbuf, " 十大战斗家族\n"); strcat( NPC_sendbuf, " 自己家族声望列表\n"); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_SELECT, WINDOW_BUTTONTYPE_NONE, CHAR_WINDOWTYPE_FM_DPSELECT,#ifndef _FM_MODIFY CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else -1,#endif makeEscapeString( NPC_sendbuf, buf, sizeof(buf))); } break; case WINDOW_BUTTONTYPE_OK: break; default: break; } } }// call FmDengon NPC event#ifndef _FM_MODIFYvoid NPC_FmDengonLooked( int meindex, int lookedindex ){ char buf[DENGONFILEENTRYSIZE*MESSAGEINONEWINDOW*2]; char menubuf[4096]; int fd; if (!CHAR_CHECKINDEX(lookedindex)) return; fd = getfdFromCharaIndex( lookedindex ); if( fd == -1 ) return; // 必须站在布告栏的前面一格 if( NPC_Util_CharDistance( lookedindex, meindex ) > 1) return; // 空白处请勿更动 strcpy( menubuf, " 『家族布告栏』\n\n"); strcat( menubuf, " 家族成员列表\n"); strcat( menubuf, " 家族留言\n"); strcat( menubuf, " 家族之间留言板\n"); strcat( menubuf, " 申请家族据点\n"); strcat( menubuf, " 家族之间强者表"); lssproto_WN_send(fd, WINDOW_MESSAGETYPE_SELECT, WINDOW_BUTTONTYPE_CANCEL, CHAR_WINDOWTYPE_FM_SELECT, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), makeEscapeString( menubuf, buf, sizeof(buf))); }#elsevoid NPC_FmDengonLooked( int meindex, int lookedindex ){ char buf[DENGONFILEENTRYSIZE*MESSAGEINONEWINDOW*2]; char menubuf[4096]; int fd; if (!CHAR_CHECKINDEX(lookedindex)) return; fd = getfdFromCharaIndex( lookedindex ); if( fd == -1 ) return; // 空白处请勿更动 strcpy( menubuf, " 『家族布告栏』\n\n"); strcat( menubuf, " 家族成员列表\n"); strcat( menubuf, " 家族留言\n"); strcat( menubuf, " 家族之间留言板\n"); strcat( menubuf, " 申请家族据点\n"); strcat( menubuf, " 家族之间强者表"); lssproto_WN_send(fd, WINDOW_MESSAGETYPE_SELECT, WINDOW_BUTTONTYPE_CANCEL, CHAR_WINDOWTYPE_FM_SELECT, -1, makeEscapeString( menubuf, buf, sizeof(buf))); }#endif#ifdef _FIX_FM_FMPOINTvoid ApplyFamilyPoint( int meindex, int toindex, int select){ int fd = getfdFromCharaIndex(toindex); if (fd == -1) return; char fmindex[4]; char buf[64]; int tkfmindex = CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI); int i,check=0; for (i=0; i<=MANORNUM-1; i++) { // 10个庄园 getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 5, fmindex, sizeof(fmindex)); if (tkfmindex==atoi(fmindex)-1){ return; } } if(memberlist[tkfmindex].fmjoinnum<30) check=1; else if(CHAR_getInt( toindex, CHAR_FAME)<300000) check=2; getStringFromIndexWithDelim( fmpointlist.pointlistarray[select-1],"|",5, fmindex, sizeof( fmindex)); if(atoi(fmindex)<=0 && check==0){ saacproto_ACFixFMPoint_send(acfd,CHAR_getChar(toindex, CHAR_FMNAME),tkfmindex+1,tkfmindex, CHAR_getChar(toindex, CHAR_FMNAME),tkfmindex+1,tkfmindex,select); sprintf(buf, "恭喜你!\n 该庄园已经是你的了。"); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, 0, CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX), buf); }else{ if(check==0) sprintf(buf, "该庄园据点已有人占领了,请到该庄园的踢馆管理员处申请踢馆抢夺庄园吧!"); else if(check==1) sprintf(buf, "很抱歉,申请庄园据点家族人必数需满30人!"); else if(check==2) sprintf(buf, "很抱歉,申请庄园据点家族声望必需3000以上!"); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, 0, CHAR_getWorkInt(meindex, CHAR_WORKOBJINDEX), buf); }}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -