📄 npc_fmdengon.c
字号:
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,
#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 pointlistbuf[4096];
int pointlistindex;
pointlistindex = 0;
buttonevent = atoi(data);
switch( select ){
case WINDOW_BUTTONTYPE_NEXT:
case WINDOW_BUTTONTYPE_PREV:
{
int fd,i;
fd = getfdFromCharaIndex( talker );
if( fd == -1 ) return;
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( pointlistbuf, fmpointlist.pointlistarray[pointlistindex]);
strcat( pointlistbuf, "\n");
for( i=(pointlistindex+1); i<pointlistindex+10; i++){
strcat( pointlistbuf, fmpointlist.pointlistarray[i]);
strcat( pointlistbuf, "\n");
}
lssproto_WN_send( fd, WINDOW_FMMESSAGETYPE_POINTLIST,
buttontype,
CHAR_WINDOWTYPE_FM_POINTLIST,
#ifndef _FM_MODIFY
CHAR_getWorkInt( index, CHAR_WORKOBJINDEX),
#else
-1,
#endif
makeEscapeString( pointlistbuf, buf, sizeof(buf)));
}
break;
case WINDOW_BUTTONTYPE_OK:
break;
default:
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);
#ifdef _NEW_MANOR_LAW
saacproto_ACShowTopFMList_send(acfd, FM_TOP_MOMENTUM);
#endif
READTIME3 = NowTime.tv_sec+FM_WAITTIME;
}
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 WINDOW_BUTTONTYPE_OK:
break;
default:
break;
}
}
}
// call FmDengon NPC event
#ifndef _FM_MODIFY
void 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");
#ifdef _UN_FMMEMO
#else
strcat( menubuf, " 家族之间留言板\n");
#endif
#ifdef _UN_FMPOINT
#else
strcat( menubuf, " 申请家族据点\n");
#endif
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)));
}
#else
void 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");
#ifdef _UN_FMMEMO
#else
strcat( menubuf, " 家族之间留言板\n");
#endif
#ifdef _UN_FMPOINT
#else
strcat( menubuf, " 申请家族据点\n");
#endif
strcat( menubuf, " 家族之间强者表");
lssproto_WN_send(fd,
WINDOW_MESSAGETYPE_SELECT,
WINDOW_BUTTONTYPE_CANCEL,
CHAR_WINDOWTYPE_FM_SELECT,
-1,
makeEscapeString( menubuf, buf, sizeof(buf)));
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -