📄 npc_fmdengon.c
字号:
if( CHAR_getInt(talker, CHAR_FMINDEX) > 0 ){ if( fmindex_wk < 0 || fmindex_wk >= FMMAXNUM){ print("FamilyNumber Data Error!!"); return; } } buttonevent = atoi(data); switch( buttonevent ){ case FM_MEMBERLIST: { int fd; fd = getfdFromCharaIndex( talker ); if( fd == -1 ) return; if( CHAR_getInt(talker, CHAR_FMINDEX) <= 0){ sprintf( NPC_sendbuf, " 『警 告』\n 抱歉!你不是家族人员,不得使用公布栏。"); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( NPC_sendbuf, buf, sizeof(buf))); return; } /* #ifdef _FMVER21 if( CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_LEADER || CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_ELDER ){ #else if( CHAR_getInt( talker, CHAR_FMLEADERFLAG) == 1){ #endif saacproto_ACShowMemberList_send( acfd, fmindex_wk); READTIME1 = NowTime.tv_sec+FM_WAITTIME; }else */ if( NowTime.tv_sec > READTIME1 ){ saacproto_ACShowMemberList_send( acfd, fmindex_wk); READTIME1 = NowTime.tv_sec+FM_WAITTIME; } #ifdef _FMVER21 // if( CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_LEADER || // CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_ELDER || // CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_VICELEADER ){ if( CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_LEADER || CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_ELDER ){#else if( CHAR_getInt( talker, CHAR_FMLEADERFLAG) == 1 ){#endif sprintf( NPC_sendbuf, " 『族 长 需 知』\n请小心处理族员的资料,一经修改後就无法回复原态,敬请小心。"); }else{ sprintf( NPC_sendbuf, " 『列 表 需 知』\n 此表族长可作修改,族员仅能查看。"); } lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, CHAR_WINDOWTYPE_FM_MESSAGE2,#ifndef _FM_MODIFY CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else -1,#endif makeEscapeString( NPC_sendbuf, buf, sizeof(buf))); } break; case FM_FMPOINT: { int fd; fd = getfdFromCharaIndex( talker ); if( fd == -1 ) return; #ifdef _FMVER21 if( CHAR_getInt( talker, CHAR_FMLEADERFLAG) == FMMEMBER_LEADER ){#else if( CHAR_getInt( talker, CHAR_FMLEADERFLAG) == 1 ){#endif saacproto_ACFMPointList_send(acfd); sprintf( NPC_sendbuf, " 『族 长 需 知』\n请小心慎选所申请的据点,一但选取据点後就无法回复原态,敬请小心。"); READTIME4 = NowTime.tv_sec+FM_WAITTIME; } else{ sprintf( NPC_sendbuf, " 『列 表 需 知』\n此表族长可以申请,其馀仅能查看。"); } if( NowTime.tv_sec > READTIME4 ){ saacproto_ACFMPointList_send(acfd); READTIME4 = NowTime.tv_sec+FM_WAITTIME; } lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, CHAR_WINDOWTYPE_FM_MESSAGE1,#ifndef _FM_MODIFY CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else -1,#endif makeEscapeString( NPC_sendbuf, buf, sizeof(buf))); } break; case FM_FMDPTOP: { 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; } memset(NPC_sendbuf,0,sizeof(NPC_sendbuf)); 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 FM_MEMBERMEMO: { int fd,i,dengonindex; char tmp[4096]; fd = getfdFromCharaIndex( talker ); if( fd == -1 ) return; if( CHAR_getInt(talker, CHAR_FMINDEX) <= 0){ sprintf( NPC_sendbuf, " 『警 告』\n 抱歉!你不是家族人员,不得使用公布栏。"); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString( NPC_sendbuf, buf, sizeof(buf))); return; } if( NowTime.tv_sec > READTIME2 ){ saacproto_ACFMReadMemo_send( acfd, fmindex_wk); READTIME2 = NowTime.tv_sec+FM_WAITTIME; } dengonindex = memberlist[fmindex_wk].memoindex; if( memberlist[fmindex_wk].memoindex < 6 && memberlist[fmindex_wk].memonum < DENGONFILELINENUM ){ dengonindex = 6; } if( dengonindex >= 6 ){ strcpy( NPC_sendbuf, memberlist[fmindex_wk].memo[dengonindex - 6]); strcat( NPC_sendbuf, "\n"); for( i=(dengonindex - 5); i<=dengonindex; i++){ strcat( NPC_sendbuf, memberlist[fmindex_wk].memo[i]); strcat( NPC_sendbuf, "\n"); } sprintf(tmp, "%d\n", dengonindex); strcat( NPC_sendbuf, tmp); } if( dengonindex < 6 ){ strcpy( NPC_sendbuf, memberlist[fmindex_wk].memo[memberlist[fmindex_wk].memonum + (dengonindex - 6)]); strcat( NPC_sendbuf, "\n"); for( i=memberlist[fmindex_wk].memonum + (dengonindex - 5); i<memberlist[fmindex_wk].memonum; i++){ strcat( NPC_sendbuf, memberlist[fmindex_wk].memo[i]); strcat( NPC_sendbuf, "\n"); } for( i=0; i<=dengonindex; i++){ strcat( NPC_sendbuf, memberlist[fmindex_wk].memo[i]); strcat( NPC_sendbuf, "\n"); } sprintf(tmp, "%d\n", dengonindex); strcat( NPC_sendbuf, tmp); } lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_DENGON, WINDOW_BUTTONTYPE_OKCANCEL| WINDOW_BUTTONTYPE_PREV, CHAR_WINDOWTYPE_FM_DENGON,#ifndef _FM_MODIFY CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else -1,#endif makeEscapeString( NPC_sendbuf, buf, sizeof(buf))); } break; case FM_FMMEMO: { int fd,i,dengonindex; char tmp[4096]; fd = getfdFromCharaIndex( talker ); if( fd == -1 ) return; if( NowTime.tv_sec > READTIME3 ){ saacproto_ACFMReadMemo_send( acfd, FMSDENGON_SN); READTIME3 = NowTime.tv_sec+FM_WAITTIME; } dengonindex = fmsmemo.memoindex; if( fmsmemo.memoindex<6 || fmsmemo.memonum>FMSDENGONFILELINENUM ){ dengonindex = 6; } if( dengonindex >= 6 ){ strcpy( NPC_sendbuf, fmsmemo.memo[dengonindex - 6]); strcat( NPC_sendbuf, "\n"); for( i=(dengonindex - 5); i<=dengonindex; i++){ strcat( NPC_sendbuf, fmsmemo.memo[i]); strcat( NPC_sendbuf, "\n"); } sprintf(tmp, "%d\n", dengonindex); strcat( NPC_sendbuf, tmp); } if( dengonindex < 6 ){ if( (fmsmemo.memonum + (dengonindex - 6)) < 0 || (fmsmemo.memonum + (dengonindex - 6)) >= 140 ) return; strcpy( NPC_sendbuf, fmsmemo.memo[fmsmemo.memonum + (dengonindex - 6)]); strcat( NPC_sendbuf, "\n"); for( i=fmsmemo.memonum + (dengonindex - 5); i<fmsmemo.memonum; i++){ strcat( NPC_sendbuf, fmsmemo.memo[i]); strcat( NPC_sendbuf, "\n"); } for( i=0; i<=dengonindex; i++){ strcat( NPC_sendbuf, fmsmemo.memo[i]); strcat( NPC_sendbuf, "\n"); } sprintf(tmp, "%d\n", dengonindex); strcat( NPC_sendbuf, tmp); } lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_FMSDENGON, WINDOW_BUTTONTYPE_OKCANCEL| WINDOW_BUTTONTYPE_PREV, CHAR_WINDOWTYPE_FM_FMSDENGON,#ifndef _FM_MODIFY CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else -1,#endif makeEscapeString( NPC_sendbuf, buf, sizeof(buf))); } break; default: break; } } // 成员列表 else if( seqno == CHAR_WINDOWTYPE_FM_MEMBERLIST) { char numberlistbuf[4096],tmp_buffer[4096],dutybuf[64]; int numberlistindex; int fmindex_wk; fmindex_wk = CHAR_getWorkInt( talker, CHAR_WORKFMINDEXI); if( fmindex_wk < 0 || fmindex_wk >= FMMAXNUM) return; getStringFromIndexWithDelim(data,"|",1,tmp_buffer,sizeof(tmp_buffer)); numberlistindex = atoi(tmp_buffer); getStringFromIndexWithDelim(data,"|",2,tmp_buffer,sizeof(tmp_buffer)); buttonevent = atoi(tmp_buffer); getStringFromIndexWithDelim(data,"|",3,dutybuf,sizeof(dutybuf)); #ifdef _FMVER21 // if( buttonevent>=1 && buttonevent<=11 && // ( CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_LEADER || // CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_ELDER || // CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_VICELEADER )) if( buttonevent>=1 && buttonevent<=11 && ( CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_LEADER || CHAR_getInt( talker, CHAR_FMLEADERFLAG ) == FMMEMBER_ELDER ))#else if( buttonevent>=1 && buttonevent<=11 && CHAR_getInt( talker, CHAR_FMLEADERFLAG) == 1 )#endif { int fd,i; int int_status; char getstatus[4096]; fd = getfdFromCharaIndex( talker ); if( fd == -1 ) return; strcpy( getstatus, memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1] + (strlen( memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1]) - 1)); int_status = atoi(getstatus); // 家族的加入、退出、申请等选项 if( buttonevent!=11 )#ifdef _FMVER21 strcpy( memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1] + (strlen(memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1]) - 1), dutybuf); #else switch( int_status ){ case 1: case 3: strcpy( memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1] + (strlen(memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1]) - 1), "4"); break; case 2: strcpy( memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1] + (strlen(memberlist[fmindex_wk].numberlistarray[numberlistindex+buttonevent - 1]) - 1), "1"); break; default: break; } #endif // 家族的召募选项 if( buttonevent == 11 ) { strcpy( getstatus, enlistbuf + (strlen(enlistbuf) - 1)); int_status = atoi(getstatus); switch( int_status ){ case 1: memberlist[fmindex_wk].accept = 0; sprintf(enlistbuf, "是否继续召募家族人员|%d|%d",numberlistindex,memberlist[fmindex_wk].accept); break; case 0: memberlist[fmindex_wk].accept = 1; sprintf(enlistbuf, "是否继续召募家族人员|%d|%d",numberlistindex,memberlist[fmindex_wk].accept); break; default: break; } } strcpy( numberlistbuf, memberlist[fmindex_wk].numberlistarray[numberlistindex]); strcat( numberlistbuf, "\n"); for( i=(numberlistindex + 1); i<numberlistindex + 10; i++){ strcat( numberlistbuf, memberlist[fmindex_wk].numberlistarray[i]); strcat( numberlistbuf, "\n"); } sprintf(enlistbuf, "是否继续召募家族人员|%d|%d",numberlistindex,memberlist[fmindex_wk].accept); strcat( numberlistbuf, enlistbuf); strcat( numberlistbuf, "\n"); buttontype = WINDOW_BUTTONTYPE_OK; if( (numberlistindex + 10) > memberlist[fmindex_wk].fmnum) buttontype |= WINDOW_BUTTONTYPE_PREV; else if( numberlistindex == 0 ) buttontype |= WINDOW_BUTTONTYPE_NEXT; else{ buttontype |= WINDOW_BUTTONTYPE_PREV; buttontype |= WINDOW_BUTTONTYPE_NEXT; } lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_SELECT, buttontype, CHAR_WINDOWTYPE_FM_MEMBERLIST,#ifndef _FM_MODIFY CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else -1,#endif makeEscapeString( numberlistbuf, buf, sizeof(buf))); } // end if switch( select ){ case WINDOW_BUTTONTYPE_NEXT: case WINDOW_BUTTONTYPE_PREV: { int fd,i; fd = getfdFromCharaIndex( talker ); if( fd == -1 ) return; numberlistindex += 10 * (( select == WINDOW_BUTTONTYPE_NEXT) ? 1 : -1); if( numberlistindex >= memberlist[fmindex_wk].fmnum) numberlistindex -= 10; else if( numberlistindex < 1 ) numberlistindex = 0; buttontype = WINDOW_BUTTONTYPE_OK; if( (numberlistindex + 10) >= memberlist[fmindex_wk].fmnum) buttontype |= WINDOW_BUTTONTYPE_PREV; else if( numberlistindex==0 ) buttontype |= WINDOW_BUTTONTYPE_NEXT; else{ buttontype |= WINDOW_BUTTONTYPE_PREV; buttontype |= WINDOW_BUTTONTYPE_NEXT; } strcpy( numberlistbuf, memberlist[fmindex_wk].numberlistarray[numberlistindex]); strcat( numberlistbuf, "\n"); for( i=(numberlistindex+1); i<numberlistindex+10; i++){ strcat( numberlistbuf, memberlist[fmindex_wk].numberlistarray[i]); strcat( numberlistbuf, "\n"); } sprintf(enlistbuf, "是否继续召募家族人员|%d|%d",numberlistindex,memberlist[fmindex_wk].accept); strcat( numberlistbuf, enlistbuf); strcat( numberlistbuf, "\n"); lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_SELECT, buttontype, CHAR_WINDOWTYPE_FM_MEMBERLIST,#ifndef _FM_MODIFY CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),#else -1,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -