npc_fmdengon.c
来自「最新主流石器時代源代碼,包含諸多目前流行功能代碼.」· C语言 代码 · 共 1,530 行 · 第 1/4 页
C
1,530 行
strcat( listbuf, "\n");
}
#ifdef _FMVER21
lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_TOP30DP,
#else
lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_DP,
#endif
WINDOW_BUTTONTYPE_OK|
WINDOW_BUTTONTYPE_PREV,
CHAR_WINDOWTYPE_FM_DPME,
#ifndef _FM_MODIFY
CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),
#else
-1,
#endif
makeEscapeString( listbuf, buf, sizeof(buf)));
}
break;
#ifdef _NEW_MANOR_LAW
case 7: // 自己家族气势排名
{
int fd,h,fmid;
char listbuf[4096];
char szTempbuf[12];
fd = getfdFromCharaIndex( talker );
if( fd == -1 ) return;
fmid = CHAR_getWorkInt(talker, CHAR_WORKFMINDEXI);
if( fmid < 0 ){
sprintf( NPC_sendbuf, " 『警 告』\n 抱歉!你不是家族人员,无法查看。");
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK,
-1,
-1,
makeEscapeString( NPC_sendbuf, buf, sizeof(buf)));
return;
}
for( h=0; h<FMMAXNUM; h++)
if( fmdptop.momentum_topid[h] == fmid )
break;
strcpy( listbuf, fmdptop.momentum_topmemo[h]);
sprintf(szTempbuf,"|%d",CHAR_getInt(talker,CHAR_MOMENTUM)/100);
strcat(listbuf,szTempbuf);
lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_FM_MEMONTUM,
WINDOW_BUTTONTYPE_OK|
WINDOW_BUTTONTYPE_PREV,
CHAR_WINDOWTYPE_FM_DPME,
-1,
makeEscapeString( listbuf, buf, sizeof(buf)));
}
break;
#endif
default:
break;
}
}
// 选项视窗
else if( seqno == CHAR_WINDOWTYPE_FM_SELECT)
{
int fmindex_wk;
fmindex_wk = CHAR_getWorkInt( talker, CHAR_WORKFMINDEXI);
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;
#ifdef _UN_FMPOINT
#else
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;
#endif //_UN_FMPOINT
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 );
#ifdef _NEW_MANOR_LAW
saacproto_ACShowTopFMList_send(acfd, FM_TOP_MOMENTUM);
#endif
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");
#ifndef _NEW_MANOR_LAW
strcat( NPC_sendbuf, " 十大合成家族\n");
strcat( NPC_sendbuf, " 十大料理家族\n");
#endif
strcat( NPC_sendbuf, " 十大战斗家族\n");
#ifdef _NEW_MANOR_LAW
strcat( NPC_sendbuf, " 十大气势家族\n");
#endif
strcat( NPC_sendbuf, " 自己家族声望列表\n");
#ifdef _NEW_MANOR_LAW
strcat( NPC_sendbuf, " 自己家族气势排名\n");
#endif
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;
#ifdef _UN_FMMEMO
#else
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)));
}
#endif//_UN_FMMEMO
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));
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?