📄 npc_timeman.c
字号:
#include "version.h"#include <string.h>#include "object.h"#include "char_base.h"#include "char.h"#include "util.h"#include "npcutil.h"#include "npc_oldman.h"#include "title.h"#include "char_data.h"#include "readmap.h"#include "lssproto_serv.h"#include "log.h"#include "handletime.h"enum { E_INT_GRAPHIC = CHAR_NPCWORKINT1, /* 褥蟆及 飓 */ E_INT_GRAPHIC2 = CHAR_NPCWORKINT2, /* 褥 及 飓 */ E_INT_BORN = CHAR_NPCWORKINT3, /* 藕戏凛棉 */ E_INT_DEAD = CHAR_NPCWORKINT4, /* 壅尹月凛棉*/ E_INT_MODE = CHAR_NPCWORKINT5, /* 蜇箕及乒□玉 */ E_INT_NOWGRAPHIC = CHAR_NPCWORKINT6, /* 蜇箕及弘仿白奴永弁瓜件田□ */};typedef struct { char arg[32]; int born; int dead;}NPC_TimeMan;#define YOAKE 700#define NICHIBOTU 300#define SHOUGO 125#define YONAKA 500static NPC_TimeMan TimeTble[] = { {"ALLNIGHT", NICHIBOTU+1, YOAKE}, /* 脐 互请化中卅中凛 */ {"ALLNOON", YOAKE+1, NICHIBOTU},/* 脐 互请化中月凛 */ {"AM", YONAKA+1, SHOUGO}, /* AM 凛及心 */ {"PM", SHOUGO+1, YONAKA}, /* PM 凛及心 */ {"FORE", YOAKE+1, SHOUGO}, /* 脐 互匹化井日恳诟引匹 */ {"AFTER", SHOUGO+1, NICHIBOTU},/* 恳诟井日脐 互释戈引匹 */ {"EVNING", NICHIBOTU+1, YONAKA}, /* 脐 互释氏匹井日蕞 引匹 */ {"MORNING", YONAKA+1, YOAKE}, /* 蕞 井日脐 互哝月引匹 */ {"FREE", 0, 1024},};BOOL NPC_TimeManInit( int meindex ){ int i=0; char argstr[NPC_UTIL_GETARGSTR_BUFSIZE]; char buf[32]; if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr))==NULL){ print("GetArgStrErr"); return FALSE; } CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPETOWNPEOPLE ); if( NPC_Util_GetStrFromStrWithDelim( argstr, "change_no", buf, sizeof( buf)) != NULL ){ if(strstr(buf,"CLS")!=NULL){ CHAR_setWorkInt( meindex,E_INT_GRAPHIC2, 9999 ); }else{ CHAR_setWorkInt( meindex,E_INT_GRAPHIC2, atoi(buf) ); } }else{ CHAR_setWorkInt( meindex,E_INT_GRAPHIC2, 9999 ); } CHAR_setWorkInt( meindex, E_INT_GRAPHIC, CHAR_getInt( meindex, CHAR_BASEIMAGENUMBER) ); if( NPC_Util_GetStrFromStrWithDelim( argstr, "time", buf, sizeof( buf)) != NULL ){ for(i=0 ; i<9 ; i++){ if(strstr(buf,TimeTble[i].arg) != NULL){ CHAR_setWorkInt( meindex, E_INT_BORN, TimeTble[i].born); CHAR_setWorkInt( meindex, E_INT_DEAD, TimeTble[i].dead); return TRUE; } } } return FALSE;}void NPC_TimeManTalked( int meindex , int talkerindex , char *msg ,int color ){ char argstr[NPC_UTIL_GETARGSTR_BUFSIZE]; char token[512]; char buf[512]; int tokennum=0; int i; if(NPC_Util_isFaceToFace( meindex ,talkerindex ,2)==FALSE){ if( NPC_Util_CharDistance( talkerindex ,meindex ) > 1) return; } if(CHAR_getInt(meindex,CHAR_BASEIMAGENUMBER)==9999){ /*--壅尹化中月乒□玉--*/ return; } if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr))==NULL){ print("GetArgStrErr"); return; } if( CHAR_getInt(talkerindex,CHAR_WHICHTYPE) != CHAR_TYPEPLAYER )return; if( NPC_Util_charIsInFrontOfChar( talkerindex, meindex, 3 ) ==FALSE) return; if(CHAR_getWorkInt(meindex,E_INT_MODE)==0){ /*--丢永本□斥毛忒允 */ NPC_Util_GetStrFromStrWithDelim(argstr,"main_msg",buf,sizeof( buf) ); }else{ NPC_Util_GetStrFromStrWithDelim(argstr,"change_msg",buf,sizeof( buf) ); } tokennum = 1; /* 戊件穴匹嗉濠日木凶玄□弁件互窒仇丐月井醒尹月 */ for( i=0;buf[i]!='\0';i++ ){ if( buf[i] == ',' ) tokennum++; } getStringFromIndexWithDelim( buf,",", rand()%tokennum+1,token, sizeof(token)); /*--仄扎屯月--*/ CHAR_talkToCli( talkerindex, meindex, token, CHAR_COLORWHITE );}/** 引歹曰卞窒井互粟仇匀凶午五卞裟壬木月*/void NPC_TimeManWatch( int meobjindex, int objindex, CHAR_ACTION act, int x,int y,int dir, int* opt,int optlen ){ int meindex=0; int index; LSTIME nowlstime; int born; int dead; if( OBJECT_getType( objindex) != OBJTYPE_CHARA) return; index = OBJECT_getIndex( objindex); if( CHAR_getInt( index, CHAR_WHICHTYPE) != CHAR_TYPEPLAYER) return; meindex = OBJECT_getIndex( meobjindex); born = CHAR_getWorkInt( meindex , E_INT_BORN ); dead = CHAR_getWorkInt( meindex , E_INT_DEAD );// print("now_hour=%d",nowlstime.hour); /* 凛棉毛苇化橇谪毛瑁户月 */ if(born < dead){ RealTimeToLSTime( NowTime.tv_sec, &nowlstime); if( (born < nowlstime.hour) && (dead > nowlstime.hour) ){ if(CHAR_getWorkInt(meindex,E_INT_NOWGRAPHIC) ==CHAR_getWorkInt( meindex, E_INT_GRAPHIC)) return; CHAR_setInt(meindex,CHAR_BASEIMAGENUMBER, CHAR_getWorkInt( meindex, E_INT_GRAPHIC)); CHAR_sendCToArroundCharacter( CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX ) ); CHAR_setWorkInt(meindex,E_INT_MODE,0); CHAR_setWorkInt(meindex,E_INT_NOWGRAPHIC, CHAR_getInt(meindex,CHAR_BASEIMAGENUMBER)); }else{ /*-壅尹化中月--*/ if(CHAR_getWorkInt(meindex,E_INT_NOWGRAPHIC) ==CHAR_getWorkInt( meindex, E_INT_GRAPHIC2)) return; CHAR_setInt(meindex,CHAR_BASEIMAGENUMBER, CHAR_getWorkInt( meindex, E_INT_GRAPHIC2)); CHAR_sendCToArroundCharacter( CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX ) ); CHAR_setWorkInt(meindex,E_INT_MODE,1); CHAR_setWorkInt(meindex,E_INT_NOWGRAPHIC, CHAR_getInt(meindex,CHAR_BASEIMAGENUMBER)); } }else{ RealTimeToLSTime( NowTime.tv_sec, &nowlstime); if( (born < nowlstime.hour && 1024 > nowlstime.hour) || ( 0 < nowlstime.hour && dead > nowlstime.hour) ){ if(CHAR_getWorkInt(meindex,E_INT_NOWGRAPHIC) ==CHAR_getWorkInt( meindex, E_INT_GRAPHIC)) return; CHAR_setInt(meindex,CHAR_BASEIMAGENUMBER, CHAR_getWorkInt( meindex, E_INT_GRAPHIC)); CHAR_sendCToArroundCharacter( CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX ) ); CHAR_setWorkInt(meindex,E_INT_MODE,0); CHAR_setWorkInt(meindex,E_INT_NOWGRAPHIC, CHAR_getInt(meindex,CHAR_BASEIMAGENUMBER)); }else{ if(CHAR_getWorkInt(meindex,E_INT_NOWGRAPHIC) ==CHAR_getWorkInt( meindex, E_INT_GRAPHIC2)) return; CHAR_setInt(meindex,CHAR_BASEIMAGENUMBER, CHAR_getWorkInt( meindex, E_INT_GRAPHIC2)); CHAR_sendCToArroundCharacter( CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX ) ); CHAR_setWorkInt(meindex,E_INT_MODE,1); CHAR_setWorkInt(meindex,E_INT_NOWGRAPHIC, CHAR_getInt(meindex,CHAR_BASEIMAGENUMBER)); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -