📄 map.h
字号:
#ifndef _MAP_H_
#define _MAP_H_
#include <stdarg.h>
#include "mmo.h"
#define MAX_PC_CLASS (1+6+6+1+6+1+1+1+1)
#define MAX_NPC_PER_MAP 512
#define BLOCK_SIZE 8
#define AREA_SIZE 20
#define LOCAL_REG_NUM 16
#define LIFETIME_FLOORITEM 60
#define DAMAGELOG_SIZE 30
#define LOOTITEM_SIZE 10
#define MAX_SKILL_LEVEL 100
#define MAX_STATUSCHANGE 192
#define MAX_SKILLUNITGROUP 32
#define MAX_MOBSKILLUNITGROUP 8
#define MAX_SKILLUNITGROUPTICKSET 128
#define MAX_SKILLTIMERSKILL 32
#define MAX_MOBSKILLTIMERSKILL 10
#define MAX_MOBSKILL 32
#define MAX_EVENTQUEUE 2
#define MAX_EVENTTIMER 32
#define NATURAL_HEAL_INTERVAL 500
#define MAX_FLOORITEM 500000
#define MAX_LEVEL 255
#define MAX_WALKPATH 48
#define DEFAULT_AUTOSAVE_INTERVAL 60*1000
#define MAP_CONF_NAME "conf/map_athena.conf"
enum { BL_NUL, BL_PC, BL_NPC, BL_MOB, BL_ITEM, BL_CHAT, BL_SKILL , BL_PET };
enum { WARP, SHOP, SCRIPT, MONS };
struct block_list {
struct block_list *next,*prev;
int id;
short m,x,y;
unsigned char type;
unsigned char subtype;
};
struct walkpath_data {
unsigned char path_len,path_pos,path_half;
unsigned char path[MAX_WALKPATH];
};
struct script_reg {
int index;
int data;
};
struct script_regstr {
int index;
char data[256];
};
struct status_change {
int timer;
int val1,val2,val3,val4;
};
struct vending {
short index;
short amount;
int value;
};
struct skill_unit_group;
struct skill_unit {
struct block_list bl;
struct skill_unit_group *group;
int limit;
int val1,val2;
short alive,range;
};
struct skill_unit_group {
int src_id;
int party_id;
int guild_id;
int map,range;
int target_flag;
unsigned int tick;
int limit,interval;
int skill_id,skill_lv;
int val1,val2;
char *valstr;
int unit_id;
int group_id;
int unit_count,alive_count;
struct skill_unit *unit;
};
struct skill_unit_group_tickset {
unsigned int tick;
int group_id;
};
struct skill_timerskill {
int timer;
int src_id;
int target_id;
int map;
short x,y;
short skill_id,skill_lv;
int type;
int flag;
};
struct npc_data;
struct pet_db;
struct item_data;
struct square;
struct map_session_data {
struct block_list bl;
struct {
unsigned auth : 1 ;
unsigned change_walk_target : 1 ;
unsigned attack_continue : 1 ;
unsigned menu_or_input : 1;
unsigned dead_sit : 2;
unsigned skillcastcancel : 1;
unsigned waitingdisconnect : 1;
unsigned lr_flag : 2;
unsigned connect_new : 1;
unsigned arrow_atk : 1;
unsigned attack_type : 3;
unsigned skill_flag : 1;
unsigned gangsterparadise : 1;
unsigned produce_flag : 1;
unsigned make_arrow_flag : 1;
unsigned potionpitcher_flag : 1;
unsigned storage_flag : 1;
} state;
struct {
unsigned restart_full_recover : 1;
unsigned no_castcancel : 1;
unsigned no_castcancel2 : 1;
unsigned no_sizefix : 1;
unsigned no_magic_damage : 1;
unsigned no_weapon_damage : 1;
unsigned no_gemstone : 1;
unsigned infinite_endure : 1;
} special_state;
int char_id,login_id1,login_id2,sex;
struct mmo_charstatus status;
struct item_data *inventory_data[MAX_INVENTORY];
short equip_index[11];
int weight,max_weight;
int cart_weight,cart_max_weight,cart_num,cart_max_num;
char mapname[24];
int fd,new_fd;
short to_x,to_y;
short speed,prev_speed;
short opt1,opt2;
char dir,head_dir;
unsigned int client_tick,server_tick;
struct walkpath_data walkpath;
int walktimer;
int npc_id,npc_shopid;
int npc_pos;
int npc_menu;
int npc_amount;
char npc_str[256];
unsigned int chatID;
int attacktimer;
int attacktarget;
unsigned int attackabletime;
short attackrange,attackrange_;
int skilltimer;
int skilltarget;
short skillx,skilly;
short skillid,skilllv;
short skillitem,skillitemlv;
short skillid_old,skilllv_old;
struct skill_unit_group skillunit[MAX_SKILLUNITGROUP];
struct skill_unit_group_tickset skillunittick[MAX_SKILLUNITGROUPTICKSET];
struct skill_timerskill skilltimerskill[MAX_SKILLTIMERSKILL];
int cloneskill_id,cloneskill_lv;
int potion_hp,potion_sp,potion_per_hp,potion_per_sp;
int invincible_timer;
unsigned int canact_tick;
unsigned int canmove_tick;
int hp_sub,sp_sub;
int inchealhptick,inchealsptick,inchealspirittick;
short view_class;
short weapontype1,weapontype2;
int paramb[6],paramc[6],parame[6],paramcard[6];
int hit,flee,flee2,aspd,amotion,dmotion;
int watk,watk2,atkmods[3];
int def,def2,mdef,mdef2,critical,matk1,matk2;
int atk_ele,def_ele,star,overrefine;
int castrate,hprate,sprate,dsprate;
int addele[10],addrace[12],addsize[3],subele[10],subrace[12];
int addeff[10],reseff[10];
int watk_,watk_2,atkmods_[3],addele_[10],addrace_[12],addsize_[3]; //擇搧棳偺偨傔偵捛壛
int atk_ele_,star_,overrefine_; //擇搧棳偺偨傔偵捛壛
int base_atk,atk_rate;
int arrow_atk,arrow_ele,arrow_cri,arrow_hit,arrow_range;
int arrow_addele[10],arrow_addrace[12],arrow_addsize[3],arrow_addeff[10];
int nhealhp,nhealsp,nshealhp,nshealsp,nsshealhp,nsshealsp;
int aspd_rate,speed_rate,hprecov_rate,sprecov_rate,critical_def,double_rate;
int near_attack_def_rate,long_attack_def_rate,magic_def_rate,misc_def_rate;
int matk_rate,ignore_def_ele,ignore_def_race,ignore_def_ele_,ignore_def_race_;
int ignore_mdef_ele,ignore_mdef_race;
int magic_addele[10],magic_addrace[12],magic_subrace[12];
int perfect_hit,get_zeny_num;
int critical_rate,hit_rate,flee_rate,flee2_rate,def_rate,def2_rate,mdef_rate,mdef2_rate;
int def_ratio_atk_ele,def_ratio_atk_ele_,def_ratio_atk_race,def_ratio_atk_race_;
int add_damage_class_count,add_damage_class_count_,add_magic_damage_class_count;
short add_damage_classid[10],add_damage_classid_[10],add_magic_damage_classid[10];
int add_damage_classrate[10],add_damage_classrate_[10],add_magic_damage_classrate[10];
short add_def_class_count,add_mdef_class_count;
short add_def_classid[10],add_mdef_classid[10];
int add_def_classrate[10],add_mdef_classrate[10];
short monster_drop_item_count;
short monster_drop_itemid[10];
int monster_drop_race[10],monster_drop_itemrate[10];
int double_add_rate,speed_add_rate,aspd_add_rate,perfect_hit_add, get_zeny_add_num;
short splash_range,splash_add_range;
short autospell_id,autospell_lv,autospell_rate;
short hp_drain_rate,hp_drain_per,sp_drain_rate,sp_drain_per;
short hp_drain_rate_,hp_drain_per_,sp_drain_rate_,sp_drain_per_;
int short_weapon_damage_return,long_weapon_damage_return;
int weapon_coma_ele[10],weapon_coma_race[12];
short spiritball, spiritball_old;
int spirit_timer[MAX_SKILL_LEVEL];
int reg_num;
struct script_reg *reg;
int regstr_num;
struct script_regstr *regstr;
struct status_change sc_data[MAX_STATUSCHANGE];
short sc_count;
struct square dev;
int trade_partner;
int deal_item_index[10];
int deal_item_amount[10];
int deal_zeny;
short deal_locked;
int party_sended,party_invite,party_invite_account;
int party_hp,party_x,party_y;
int guild_sended,guild_invite,guild_invite_account;
int guild_emblem_id,guild_alliance,guild_alliance_account;
int vender_id;
int vend_num;
char message[80];
struct vending vending[12];
int catch_target_class;
struct s_pet pet;
struct pet_db *petDB;
struct pet_data *pd;
int pet_hungry_timer;
int pvp_point,pvp_rank,pvp_timer,pvp_lastusers;
char eventqueue[MAX_EVENTQUEUE][50];
int eventtimer[MAX_EVENTTIMER];
};
struct npc_timerevent_list {
int timer,pos;
};
struct npc_label_list {
char name[24];
int pos;
};
struct npc_item_list {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -