⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 map_deal.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 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 + -