📄 map_deal.c
字号:
#include "version.h"#include "common.h"#include "readmap.h"#include "char.h"#include "map_util.h"#include "lssproto_serv.h"#include "net.h"#include "anim_tbl.h"/*#define MAPEDITORTROUBLE*/#define SPR_kmydamY CG_HIT_MARK_10 // anim_tbl.h 卞瓒 今木月引匹 及巨白尼弁玄/*------------------------------------------------------------ * 汹仃月井升丹井 蝇允月[平乓仿互 氏匹中月井升丹井娄醒互丐月[ * 娄醒 * ff int floor * fx int x甄 * fy int y甄 * isfly int 氏匹中月井升丹井 * 忒曰袄 * 汹仃月 TRUE(1) * 汹仃卅中 FALSE(0) ------------------------------------------------------------*/BOOL MAP_walkAbleFromPoint( int ff, int fx, int fy, BOOL isfly ){ int map[2]; if( !MAP_getTileAndObjData( ff,fx,fy, &map[0], &map[1] ) ){ return FALSE; } if( isfly ){ int i; for( i = 0 ; i < 2 ; i ++ ) if( MAP_getImageInt( map[i], MAP_HAVEHEIGHT ) == TRUE ){ return FALSE; } return TRUE; }else{ switch( MAP_getImageInt( map[1], MAP_WALKABLE ) ){ case 0: return FALSE; break; case 1: if( MAP_getImageInt( map[0], MAP_WALKABLE ) == 1 ){ return TRUE; }else{ return FALSE; } break; case 2: return TRUE; break; default: return FALSE; break; } } return FALSE;}/*------------------------------------------------------------ * 汹仃月井升丹井 蝇允月[ * 娄醒 * index int Char 匹及 Index * ff int floor id * fx int x甄 * fy int y甄 * 忒曰袄 * 汹中化方中 TRUE(1) * 汹中化反母丢 FALSE(0) ------------------------------------------------------------*/BOOL MAP_walkAble( int index,int ff, int fx, int fy){ /* 平乓仿卅日OK */ if( CHAR_getFlg( index, CHAR_ISTRANSPARENT ) ) return TRUE; // Arminius 7.9 Airplane ok if( CHAR_getInt( index, CHAR_WHICHTYPE ) == CHAR_TYPEBUS) return TRUE; if( CHAR_getWorkInt( index, CHAR_WORKPARTYMODE) == CHAR_PARTY_CLIENT ) { int oyaindex = CHAR_getWorkInt( index, CHAR_WORKPARTYINDEX1); if( CHAR_CHECKINDEX( oyaindex)) { if (CHAR_getInt( oyaindex, CHAR_WHICHTYPE ) == CHAR_TYPEBUS) return TRUE; } } return MAP_walkAbleFromPoint( ff,fx,fy,CHAR_getFlg(index,CHAR_ISFLYING)|CHAR_getWorkInt(index,CHAR_WORKSKYWALKER) );}/*------------------------------------------------------------ * 甄 毛隙烂仄化}公仇及左皮斥尼弁玄卞嫖今互丐月井升丹井 * 娄醒 * fl int 白夫失 * x int x 甄 * y int y 甄 * 忒曰袄 * 嫖今互丐月 TRUE * 嫖今互卅中 FALSE ------------------------------------------------------------*/BOOL MAP_haveHeight( int fl, int x, int y ){ int map[2]; /* 穴永皿犯□正毛 化仁月 */ if( !MAP_getTileAndObjData( fl,x,y, &map[0], &map[1] ) ) return FALSE; return MAP_getImageInt( map[1], MAP_HAVEHEIGHT );}/*------------------------------------------------------------ * Map 奶矛件玄及 pre post毛质 允月 * 娄醒 * index int 昙欠丹午仄化中月平乓仿及奶件犯永弁旦 * mode BOOL TRUE及凛反}in FALSE及凛反 out 卞覆杀 * 忒曰袄卅仄 ------------------------------------------------------------*/static void MAP_dealprepostevent( int index, BOOL mode ){ int map[2]; int i; int damaged=FALSE; if( CHAR_getFlg(index,CHAR_ISFLYING) ) /* 氏匹月支勾卞反窒手仄卅中 */ return; if( !MAP_getMapDataFromCharIndex( index , map ) ) return; for( i = 0 ; i < 2 ; i ++ ){ /* damage */ int damage; damage = MAP_getImageInt(map[i], mode ? MAP_INTODAMAGE : MAP_OUTOFDAMAGE); if( damage != 0 ){ /* 母丢□斥汹毛恳匹 蜇允月及匹 寞 木赘尹 */ int opt[2]={SPR_kmydamY,-damage}; damaged=TRUE; CHAR_setInt(index, CHAR_HP, CHAR_getInt(index,CHAR_HP) + damage ); CHAR_complianceParameter(index); /* 母丢□斥熬仃凶巨白尼弁玄请允 */ CHAR_sendWatchEvent(CHAR_getWorkInt(index,CHAR_WORKOBJINDEX), CHAR_ACTDAMAGE,opt,2,TRUE); } } if( damaged ) CHAR_sendStatusString(index,"M");}/*---------------------------------------- * 公及正奶伙卞昙月蟆卞裟壬木月[仇仇匹公仇井日转仁午}xxx烟及 * 仪毛 蜇允月[ * 娄醒 * index int 昙欠丹午仄化中月平乓仿及奶件犯永弁旦 * flooor int 白夫失ID * fx int x甄 * fy int y甄 * 忒曰袄 * 卅仄 ----------------------------------------*/void MAP_preovered( int index ){ MAP_dealprepostevent( index, FALSE );}/*---------------------------------------- * 公及正奶伙卞昙匀凶 卞裟壬木月[ * 娄醒 * index int 昙欠丹午仄化中月平乓仿及奶件犯永弁旦 * 忒曰袄 * 卅仄 ----------------------------------------*/void MAP_postovered( int index ){ MAP_dealprepostevent( index, TRUE );}/*---------------------------------------- * 平乓仿及璃曰及穴永皿毛允屯化霜月 * 娄醒 * fd int * charaindex int 平乓仿及奶件犯永弁旦 * 忒曰袄 * 岳 TRUE(1) * 撩 FALSE(0) ----------------------------------------*/BOOL MAP_sendArroundCharNeedFD( int fd,int charaindex ){ char* stringdata; int x=CHAR_getInt(charaindex,CHAR_X); int y=CHAR_getInt(charaindex,CHAR_Y); int fl=CHAR_getInt(charaindex,CHAR_FLOOR); int size=MAP_CHAR_DEFAULTSEESIZ; RECT seekr,retr; seekr.x = x - (int)(size/2); seekr.y = y - (int)(size/2); seekr.width = size; seekr.height = size;#if 1{ int tilesum, objsum, eventsum; stringdata = MAP_getChecksumFromRECT(fl,&seekr,&retr, &tilesum,&objsum,&eventsum); if( stringdata == NULL ) return FALSE; lssproto_MC_send(fd,fl, retr.x, retr.y, retr.x + retr.width, retr.y + retr.height, tilesum, objsum, eventsum, stringdata );}#else stringdata = MAP_getdataFromRECT(fl,&seekr,&retr); if( stringdata == NULL ) return FALSE; lssproto_M_send(fd,fl, retr.x, retr.y, retr.x + retr.width, retr.y + retr.height, stringdata );#endif return TRUE;}/*---------------------------------------- * 穴永皿犯□正毛 月[ * 娄醒 * charaindex int 平乓仿及奶件犯永弁旦 * 忒曰袄 * 岳 TRUE(1) * 撩 FALSE(0) ----------------------------------------*/BOOL MAP_sendArroundChar(int charaindex){ int fd; fd = getfdFromCharaIndex( charaindex ); if( fd == -1 )return FALSE; return MAP_sendArroundCharNeedFD(fd, charaindex);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -