📄 npc_bankman.c
字号:
#include "version.h"#include <string.h>#include "char.h"#include "object.h"#include "char_base.h"#include "npcutil.h"#include "configfile.h"#include "lssproto_serv.h"#include "saacproto_cli.h"#include "npc_bankman.h"#include "family.h"extern int familyNumTotal;extern char familyListBuf[MAXFAMILYLIST]; char sendbuf[1024];char buf[1024];char subbuf[128];int i, j; struct { int windowno; int windowtype; int buttontype; int takeitem; int giveitem; char message[4096];}w;struct { BOOL use; int checkhaveitem; int checkhaveitemgotowin; int checkdonthaveitem; int checkdonthaveitemgotowin; int warp; int battle; int gotowin;}buttonproc[13]; /* ok,cancel, yes,no,prev,next 及凛及质 */enum { CHAR_WORK_MSGCOLOR = CHAR_NPCWORKINT1,};static void NPC_Bankman_selectWindow( int meindex, int toindex, int num);static BOOL NPC_Bankman_readData( int meindex, int windowno, BOOL chkflg);static int NPC_Bankman_restoreButtontype( char *data );BOOL NPC_BankmanInit( int meindex ){ char argstr[NPC_UTIL_GETARGSTR_BUFSIZE]; char buf[1024]; NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)); if( NPC_Util_GetStrFromStrWithDelim( argstr, "conff", buf, sizeof( buf))== NULL ){ print( "familyman:没有指定设定的档案 。\n"); return FALSE; } /* 赓渝凛卞涩烂犯□正毛民尼永弁仄化支月 */ if( !NPC_Bankman_readData( meindex, -1, TRUE) ) { return FALSE; } CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEWINDOWMAN ); return TRUE;}void NPC_BankmanTalked( int meindex , int talkerindex , char *szMes ,int color ){ NPC_Bankman_selectWindow( meindex, talkerindex, 1 ); }void NPC_BankmanLooked( int meindex , int lookedindex){ print(" Look:me:%d,looked:%d ",meindex,lookedindex); NPC_Bankman_selectWindow( meindex, lookedindex,1 ); }static void NPC_Bankman_selectWindow( int meindex, int toindex, int num){ int fd; char buf[256]; /* 皿伊奶乩□卞覆仄化分仃 杀允月 */ if( CHAR_getInt( toindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } /* ㄠ弘伉永玉动 及心 */ if( !NPC_Util_charIsInFrontOfChar( toindex, meindex, 1 )) return; if( !NPC_Bankman_readData( meindex, num, FALSE) ) { print( "familyman:readdata error\n"); return; } fd = getfdFromCharaIndex( toindex); if( fd != -1 ) { lssproto_WN_send( fd, w.windowtype, w.buttontype, w.windowno+100, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), makeEscapeString( w.message, buf, sizeof(buf))); }}void NPC_BankmanWindowTalked( int meindex, int talkerindex, int seqno, int select, char *data){ int button = -1; char buf[2048], buff[256]; /* ㄠ弘伉永玉动 及心 */ if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return; /* 仇及它奴件玉它 寞及犯□正毛 心 戈 */ if( !NPC_Bankman_readData( meindex, seqno - 100, FALSE) ) { print( "familyman:readdata error\n"); return; } /* 瓷仄凶示正件毛譬屯月 */ if( w.windowtype == WINDOW_MESSAGETYPE_SELECT ) { //if( w.windowtype == WINDOW_MESSAGETYPE_MESSAGE ) { // shan end button = atoi( data)+5; if( button > 12 ) { print( "familyman:invalid button[%d]\n", button); return; } } else if( select & WINDOW_BUTTONTYPE_OK) button = 0; else if( select & WINDOW_BUTTONTYPE_CANCEL) button = 1; else if( select & WINDOW_BUTTONTYPE_YES) button = 2; else if( select & WINDOW_BUTTONTYPE_NO) button = 3; else if( select & WINDOW_BUTTONTYPE_PREV) button = 4; else if( select & WINDOW_BUTTONTYPE_NEXT) button = 5; else { print( "familyman:invalid button[%d]\n", select); return; } // shan begin //if( buttonproc[button].use == TRUE ) { //if( select > 0) { if( button > 0 ) { // shan end int fd; int newwin = -1; fd = getfdFromCharaIndex( talkerindex); /* 示正件卞方匀化质 毛孔曰歹仃月 */ if( newwin == -1 ) { newwin = buttonproc[button].gotowin; } // Robin // 银行 // shan begin if( select == WINDOW_BUTTONTYPE_YES) { newwin = 5; } // shan end if( newwin == 5 ) { if( CHAR_getInt( talkerindex, CHAR_FMINDEX ) < 1 && CHAR_getInt( talkerindex, CHAR_BANKGOLD) < 1 ) lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString("\n您的资格不符合!" "\n请先加入家族!", buff, sizeof(buff))); else { sprintf(buf, "B|G|%d", CHAR_getInt( talkerindex, CHAR_BANKGOLD) ); lssproto_FM_send( fd, buf ); } return; } // 家族帐户 if( newwin == 6 ) { if( CHAR_getInt( talkerindex, CHAR_FMINDEX ) > 0 ) saacproto_ACGetFMData_send( acfd, CHAR_getChar( talkerindex, CHAR_FMNAME), CHAR_getInt( talkerindex, CHAR_FMINDEX ), CHAR_getWorkInt( talkerindex, CHAR_WORKFMINDEXI ), 1, CONNECT_getFdid(fd) ); else lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString("\n您的资格不符合!" "\n请先加入家族!", buff, sizeof(buff))); return; } // 退出 if( newwin == 7 ) { if( CHAR_getInt( talkerindex, CHAR_FMINDEX ) == -1 ) { lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString("\n您的资格不符合!" "\n请先加入家族!", buff, sizeof(buff))); return; } print(" WN2FM "); FAMILY_Leave( fd, talkerindex, "E|1"); return; } if( !NPC_Bankman_readData( meindex, newwin, FALSE) ) { print( "familyman:readdata error\n"); return; } if( fd != -1 ) { lssproto_WN_send( fd, w.windowtype, w.buttontype, w.windowno+100, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), makeEscapeString( w.message, buf, sizeof(buf))); } }}static BOOL NPC_Bankman_readData( int meindex, int windowno, BOOL chkflg){ int i; int linenum = 0; int endflg = FALSE; int buttonendflg; int winno = -1; int buttonconfmode; int b_mode; int selectnum ; int messagepos; BOOL errflg = FALSE; BOOL readflg = TRUE; FILE *fp; char argstr[NPC_UTIL_GETARGSTR_BUFSIZE]; char filename[64]; char opfile[128]; char line[1024]; char firstToken[1024]; char secondToken[1024]; NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)); NPC_Util_GetStrFromStrWithDelim( argstr, "conff", filename, sizeof( filename)); sprintf( opfile, "%s/", getNpcdir( ) ); strcat( opfile, filename); fp = fopen( opfile, "r"); if( fp == NULL ) { print( "familyman:file open error [%s]\n", opfile); return FALSE; } while( readflg == TRUE ) { endflg = FALSE; buttonendflg = TRUE; buttonconfmode = FALSE; selectnum = 0; messagepos = 0; winno = -1; b_mode = -1; errflg = FALSE; /* 赓渝祭 */ w.windowno = -1; w.windowtype = -1; w.buttontype = -1; w.takeitem = -1; w.giveitem = -1; w.message[0] = '\0'; for( i = 0; i < arraysizeof( buttonproc); i ++ ) { buttonproc[i].use = FALSE; buttonproc[i].checkhaveitem = -1; buttonproc[i].checkhaveitemgotowin = -1; buttonproc[i].checkdonthaveitem = -1; buttonproc[i].checkdonthaveitemgotowin = -1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -