?? 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 + -