📄 char_event.c
字号:
#include "version.h"#include <ctype.h>#include "common.h"#include "char.h"#include "item_event.h"#include "net.h"#include "item.h"#include "object.h"#include "lssproto_serv.h"#include "util.h"#include "char_data.h"#include "readmap.h"#include "map_deal.h"#include "item.h"#include "saacproto_cli.h"#include "npccreate.h"#include "handletime.h"#include "anim_tbl.h"#include "family.h"#define SPR_kmydam CG_HIT_MARK_00BOOL CHAR_allprewalk( int index,int* dir,int* mode){ int poisonvalue; poisonvalue = CHAR_getInt(index, CHAR_POISON ); if( poisonvalue >= 1 ){ CHAR_setInt(index,CHAR_HP , CHAR_getInt(index,CHAR_HP) - poisonvalue ); CHAR_setWorkInt(index,CHAR_WORKLASTATTACKCHARAINDEX,-2); { int opt[2] = { SPR_kmydam,poisonvalue}; CHAR_sendWatchEvent( CHAR_getWorkInt(index,CHAR_WORKOBJINDEX), CHAR_ACTDAMAGE,opt,2,TRUE); CHAR_sendStatusString( index,"M"); } poisonvalue--; if( poisonvalue <= 0)poisonvalue = 1; CHAR_setInt(index,CHAR_POISON,poisonvalue); } if( CHAR_getInt(index,CHAR_CONFUSION) != 0 ) *dir = RAND(0,7); if( CHAR_getInt(index,CHAR_STONE) != 0 ) return FALSE; return TRUE;}void CHAR_allpostwalk( int index ){ return;}BOOL CHAR_makeCADefaultString( int objindex,char* buf,int buflen, int act ){ char objindexbuf[64]; /* 民尼永弁 */ if( CHECKOBJECT(objindex) == FALSE ) return FALSE; if( OBJECT_getType(objindex) != OBJTYPE_CHARA ) return FALSE; snprintf( buf,buflen,"%s|%d|%d|%d|%d", cnv10to62( objindex,objindexbuf, sizeof(objindexbuf)), OBJECT_getX(objindex), OBJECT_getY(objindex), act, CHAR_getInt(OBJECT_getIndex(objindex),CHAR_DIR)); return TRUE;}static void CHAR_makeCADAMAGEStringFromSpecifiedCoordinate( int x , int y, char* buf,int buflen,int ef1,int damagevalue ){ snprintf( buf,buflen,"%d|%d|%d|%d|%d|%d|%d", -1,x,y, CHAR_ACTDAMAGE,0, ef1,damagevalue);}BOOL CHAR_makeCAOPT1String( int objindex,char* buf, int buflen, int act,int opt1 ){ char objindexbuf[64]; if( CHECKOBJECT(objindex) == FALSE ) return FALSE; if( OBJECT_getType(objindex) != OBJTYPE_CHARA ) return FALSE; snprintf( buf,buflen,"%s|%d|%d|%d|%d|%d", cnv10to62( objindex,objindexbuf, sizeof(objindexbuf)), OBJECT_getX(objindex), OBJECT_getY(objindex), act, CHAR_getInt(OBJECT_getIndex(objindex),CHAR_DIR), opt1); return TRUE;}BOOL CHAR_makeCAOPT3String( int objindex,char* buf, int buflen, int act,int opt1,int opt2,int opt3 ){ char objindexbuf[64]; if( CHECKOBJECT(objindex) == FALSE ) return FALSE; if( OBJECT_getType(objindex) != OBJTYPE_CHARA ) return FALSE; snprintf( buf,buflen,"%s|%d|%d|%d|%d|%d|%d|%d", cnv10to62( objindex,objindexbuf, sizeof(objindexbuf)), OBJECT_getX(objindex), OBJECT_getY(objindex), act, CHAR_getInt(OBJECT_getIndex(objindex),CHAR_DIR), opt1,opt2,opt3); return TRUE;}void CHAR_playerWatchfunc( int objmeindex, int objmoveindex, CHAR_ACTION act, int x, int y, int dir, int* opt, int optlen ){ int fd; int meindex; if( !CHECKOBJECTUSE(objmeindex) )return; if( !CHECKOBJECTUSE(objmoveindex))return; if( OBJECT_getType(objmeindex) != OBJTYPE_CHARA )return; meindex = OBJECT_getIndex(objmeindex); if( CHAR_getInt( meindex,CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER )return; fd = getfdFromCharaIndex( meindex ); if( fd == -1 )return; switch( OBJECT_getType(objmoveindex) ){ case OBJTYPE_CHARA: { char buf[128]; if( !CHAR_getFlg( OBJECT_getIndex(objmoveindex),CHAR_ISVISIBLE) ) return; switch( act ){ case CHAR_ACTSTAND: case CHAR_ACTWALK: case CHAR_ACTATTACK: case CHAR_ACTDEAD: case CHAR_ACTMAGIC: case CHAR_ACTITEM: case CHAR_ACTDOWN: case CHAR_ACTSIT: case CHAR_ACTHAND: case CHAR_ACTPLEASURE: case CHAR_ACTANGRY: case CHAR_ACTSAD: case CHAR_ACTDAMAGE: case CHAR_ACTGUARD: case CHAR_ACTTURN: case CHAR_ACTWARP: case CHAR_ACTACTIONWALK: case CHAR_ACTNOD: case CHAR_ACTTHROW: case CHAR_ACTACTIONSTAND: if( CHAR_makeCADefaultString(objmoveindex,buf,sizeof(buf),act) ) { CONNECT_appendCAbuf( fd,buf,strlen(buf)); } break; // shan begin case CHAR_ACTTRADE: if( optlen == 1 ) if( CHAR_makeCAOPT1String( objmoveindex, buf, sizeof( buf), act, opt[0] ) ) CONNECT_appendCAbuf( fd, buf, strlen(buf)); break; // shan end#ifdef _MIND_ICON case CHAR_MIND: if( optlen == 1 ) if( CHAR_makeCAOPT1String( objmoveindex, buf, sizeof(buf), act, opt[0])) CONNECT_appendCAbuf( fd, buf, strlen(buf)); break;#endif#ifdef _ITEM_CRACKER case CHAR_ITEM_CRACKER: if( optlen == 1 ) if( CHAR_makeCAOPT1String( objmoveindex, buf, sizeof(buf), act, opt[0])) CONNECT_appendCAbuf( fd, buf, strlen(buf)); break;#endif case CHAR_ACTEFFECT: if( optlen == 1 ) if( CHAR_makeCAOPT1String(objmoveindex,buf, sizeof(buf),act,opt[0] ) ) CONNECT_appendCAbuf( fd,buf,strlen(buf)); break; case CHAR_ACTPOPUPNAME: case CHAR_ACTLEADER: case CHAR_ACTBATTLEWATCH: if( optlen == 1 ) if( CHAR_makeCAOPT1String(objmoveindex,buf, sizeof(buf),act,opt[0] ) ) CONNECT_appendCAbuf( fd,buf,strlen(buf)); break; case CHAR_ACTBATTLE: if( optlen == 3 ) if( CHAR_makeCAOPT3String( objmoveindex,buf, sizeof(buf), act,opt[0],opt[1],opt[2] ) ) CONNECT_appendCAbuf( fd,buf,strlen(buf)); break; default: break; } break; } case OBJTYPE_ITEM: case OBJTYPE_GOLD: CHAR_sendSpecifiedobjindexCToCharaindex(meindex,objmoveindex); break; default: break; }}void CHAR_sendWallDamage( int charaindex,int x, int y, int damage ){ int fd; char cabuf[256]=""; fd = getfdFromCharaIndex(charaindex); if( fd == -1 )return; CHAR_makeCADAMAGEStringFromSpecifiedCoordinate( x,y,cabuf,sizeof(cabuf),SPR_kmydam,damage ); CONNECT_appendCAbuf( fd,cabuf,strlen(cabuf));}static struct ParamShow{ int paramindex; /* 由仿丢□正及奶件犯永弁旦 */ char* offmessage; /* 匀凶凛及丢永本□斥 侬 */}pShow[]={ {CHAR_PARALYSIS, CHAR_RECOVERPARALYSISSTRING}, {CHAR_SLEEP, CHAR_RECOVERSILENCESTRING}, {CHAR_STONE, CHAR_RECOVERSTONESTRING}, {CHAR_DRUNK, CHAR_RECOVERDARKNESSSTRING}, {CHAR_CONFUSION, CHAR_RECOVERCONFUSIONSTRING},};void CHAR_recoveryStatus( int charaindex ){ int i; int cure=FALSE; if( !CHAR_CHECKINDEX(charaindex) )return; for( i=0 ; i < arraysizeof(pShow) ; i ++ ){ if( CHAR_getInt(charaindex,pShow[i].paramindex) > 0 ){ int old; old = CHAR_setInt(charaindex,pShow[i].paramindex, CHAR_getInt(charaindex, pShow[i].paramindex) - 1 ); if( old == 1 ){ if( CHAR_getInt(charaindex,CHAR_WHICHTYPE) == CHAR_TYPEPLAYER){ CHAR_talkToCli( charaindex,-1, pShow[i].offmessage, CHAR_COLORWHITE );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -