Files
Sun1602/ProgramCommon/Define.h
T
2022-10-26 12:25:11 +08:00

768 lines
30 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef __DEFINE_H__
#define __DEFINE_H__
#include "Version.h"
#include "Define.Build.h"
#include "DefineForLog.h"
#if defined(__KR) || defined(_KOREA)
#define GENERAL_SHOUT_LIMIT_LEVEL 1
#elif defined(__TW) || defined(_TAIWAN)
#define GENERAL_SHOUT_LIMIT_LEVEL 20
#elif defined(__CN) || defined(_CHINA)
#define GENERAL_SHOUT_LIMIT_LEVEL 15
#elif defined(__JP) || defined(_JAPAN)
#define GENERAL_SHOUT_LIMIT_LEVEL 1
#endif
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 二进制模块发布时需要的部分
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
typedef BYTE NUMTYPE;
typedef WORD DURATYPE;
typedef WORD POSTYPE;
const POSTYPE INVALID_POSTYPE_VALUE = 255;
const DURATYPE INVALID_DURATYPE_VALUE=10000;
typedef INT64 DBSERIAL;
typedef DWORD64 DBWLDSERIAL;
typedef WORD SLOTCODE;
typedef DWORD CODETYPE;
typedef WORD KEYTYPE;
typedef WORD LEVELTYPE;
typedef BYTE SLOTIDX;
typedef int FIELDID;
typedef ULONGLONG MONEY;
typedef DWORD CASH;
typedef WORD MAPCODE;
typedef WORD FIELDCODE;
typedef WORD ZONEKEY;
typedef INT64 EXPTYPE;
typedef WORD PORTALKEY;
const PORTALKEY INVALID_PORTAL_KEY = 0;
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 包装用!!优化用typedef:只在发送到客户端的包中使用
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
typedef int DAMAGETYPE; // extended by _NA001605_EP2_DAMAGETYPE_EXTENTION_
typedef short TILEINDEX;
typedef WORD MONSTERCODE;
typedef UINT PLAYERHP;
typedef WORD MPTYPE;
//__NA_001290_20090525_SHIELD_SYSTEM
typedef WORD PLAYERSD;
//_NA_007514_20140828_NEW_CHARACTER_WITCHBLADE
typedef FLOAT PLAYERFP;
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#define DAMAGETYPE_MAX (2000000000) // expanded by _NA001605_EP2_DAMAGETYPE_EXTENTION_
//跳跃相关
#define MAX_JUMP_NODE 30000
#define MIN_JUMP_NODE 200
/// [2012-5-31 by i4u4me] 通过改变跳转算法,改变最大的悬停距离
#define MAX_JUMP_DISTANCE (12) // 最大跳跃距离
//#define MAX_JUMP_DISTANCE (15) // 最大跳跃距离
#define MAX_ALLPLAYERS_PACKET_SIZE ( 1500 ) // 发送周边玩家信息时最大分组尺寸
#define MAX_ITEMNAME_LENGTH ( 64 ) // 物品名称长度
#define MAX_SKILLNAME_LENGTH ( 64 ) // 技能名称长度
#define MAX_MAPNAME_LENGTH ( 64 ) // 地图名称长度
enum { MAX_ABILITY_NUM = 5 }; // 每一个技能的最大伤害(技能效果)个数
#define MAX_SUMMONED_NUM ( 10 ) // 一次性召唤的最大数量
#define MAX_AREA_ID_LENGTH ( 4 ) // Area区域ID长度
// (NOTE) 自0816版本以来未使用的节
// removed by __NA_963_LOG_LIB_VERSION_REFACTORING
#define MAX_STATEINFOSTREAM_SIZE ( 1024 ) // 角色状态信息
#define MAX_DBSAVE_STATEINFO_NUM ( 40 ) // 存储在DB中的最大状态数
//_NA_001990_ACSYSTEM_ADD
//_NA_007422_20140716_MODIFY_MAX_ACHIEVEMENT_COUNT
#define MAX_ACHIEVEMENT_COUNT (3000) //最大成就
#define MAX_ACHIEVEMENT_REWARD (2) //成就奖励个数
#define MAX_ACHIEVEMENT_OBJECT (10) //成就和数量
#define ACHIEVEMENT_UINT_SIZE (23) //成就的长度
#define MAX_ACHIEVEMENT_PARENT_CODE (4) //先行AC代码最大个数
#define MAX_SKILL_SLOT_NUM (100)
#define MAX_VENDOR_SLOT_NUM (130) //extended by __NA000920_20080306_NPCSHOP_ITEM_SELL_HISTORY (from 125)
#ifdef _NA_0_20101124_VENDOR_SLOT_COUNT_INCREASE
#define MAX_PERSONAL_VENDOR_SLOT_NUM (40)
#else
#define MAX_PERSONAL_VENDOR_SLOT_NUM (24)
#endif
#define MAX_TOTAL_SLOT_NUM (MAX_INVENTORY_SLOT_NUM+MAX_EQUIPMENT_SLOT_NUM+MAX_SKILL_SLOT_NUM+MAX_WAREHOUSE_SLOT_NUM+MAX_TEMPINVENTORY_SLOT_NUM)
#define MAX_QUICK_SLOT_NUM (48)
#define MAX_STYLE_SLOT_NUM (4)
#define MAX_EVENT_INVENTORY_SLOT_NUM (5*5) //< 活动背包槽数一页5*5=25
#define MAX_INVENTORY_TAB_NUM (5) //< 背包基本标签个数
#define MAX_CHARGE_INVENTORY_TAB_NUM (5) //< 背包基本标签个数
#define MAX_INVENTORY_TAB_TOTAL_NUM (MAX_INVENTORY_TAB_NUM+MAX_CHARGE_INVENTORY_TAB_NUM)
#define MAX_INVENTORY_SLOT_PER_TAB (15) //< 每个背包标签的槽数
enum { MAX_PANDORA_SLOT_NUM = 8 }; // 潘多拉盒子槽数
#define MAX_CHANGE_ITEMSTAT_SLOT_NUM (4) //< 物品四重奏转换槽数
#define MAX_WAREHOUSE_INVENTORY_PWD_LENGTH (8) // 仓库库存编号
#define MAX_SSN_STREAM_LENGTH (10) // 社会团体号码 (到10字为止)
#ifdef _KR_0_20120207_CRYPT_SHA256
#define MAX_SSN_ENCODED_STREAM_LENGTH (65)
#else
#define MAX_SSN_ENCODED_STREAM_LENGTH (16)
#endif
//只在游戏服务器使用的插槽
#define MAX_TRADE_SLOT_NUM (20)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 商店列表相关
#define MAX_ONLOOKER_VENDOR_NUM (100) //商店列表NPC用户POOL的Init size(可增加)
#define COUNT_SEARCH_CONTAINER_INIT (10) //搜索商店列表时,向量的Init size(可能会增加)
#define COUNT_VENDOR_IN_PAGE (10) //进入商店列表一页的列表数
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#define TEMP_DBSERIAL_VALUE (0)
#define DBSERIAL_MASK_VALUE (0xFFFFFFFFFFFFFFFF)
#define QUICK_SLOT_NULL_VALUE (255)
#define INVALID_SLOT_POS (255)
#define MAX_LEVEL ( 250 ) // 最大等级(据说以后最大等级可以改变!!)
#define MIN_PENALTY_LEVEL ( 11 ) // 最小面板应用级别
#ifdef _NA_003966_20111227_ADD_ENCHANT
enum { MAX_ENCHANT_GRADE = 15 };
#else
enum { MAX_ENCHANT_GRADE = 12 };
#endif
enum { MAX_AWAKENING_GRADE = 9, }; // 最大觉醒等级 // _NA_008124_20150313_AWAKENING_SYSTEM
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 任务相关
#ifdef _NA_1388_20101207_EP2_INCREASED_MISSION_MAX
#ifdef _NA_003649_20111115_BATTLE_ZONE_HARDMODE
#define MAX_MISSION_NUM 100
#else
#define MAX_MISSION_NUM 50
#endif
#else
#define MAX_MISSION_NUM 32
#endif
#define MAX_HIDDEN_MISSION_NUM 16
#define MAX_MAPCODE_NUM 0xFFFF
#define BEGIN_MISSION_MAP 1 //开始任务地图代码
#define BEGIN_CHUNTING_MAP 40001 //C狩猎地图代码开始
#define BEGIN_PVP_MAP 20001 //PVP地图代码开始
//任务接力相关.
#define MISSION_RELAY_NOTICE_TIME 21000
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 级别功能限制相关
//#define CREATE_GUILD_LIMIT_LEVEL (20)
#define LIMIT_LEVEL_WARHOUSE (6)
#define LIMIT_LEVEL_RANKUP (7)
#define LIMIT_LEVEL_ENCHANT (8)
#define LIMIT_LEVEL_ACCESSORY (15)
#define LIMIT_LEVEL_SACCESSORY (30)
#ifdef _NA_007408_20140711_MODIFY_CRYSTALLIZE
// 删除结晶化等级限制
#else
#define LIMIT_LEVEL_CRYSTALIZE (9)
#endif //_NA_007408_20140711_MODIFY_CRYSTALLIZE
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
///重新定义
#define MAX_EXP_POTION_VALUE ( 500000000000 ) //经验药水提升的最大经验
#define DISTANCE_SPACE_GET_ITEM 7.0f // 空间食用的物品是10米以内的物品
#ifdef _NA_004530_20120315_1202_SKILL_RENEWAL
enum { MAX_SKILL_LEVEL = 20 }; // 最大技能等级
enum { MAX_SKILL_OVER_LEVEL = 20 }; // 最高技能等级
#else
#ifdef _NA_0_20100901_SKILLTREE_SYSTEM
enum { MAX_SKILL_LEVEL = 5 }; // 最大技能等级
enum { MAX_SKILL_OVER_LEVEL = 10 }; // 最高技能等级
#else
enum { MAX_SKILL_LEVEL = 10 }; // 最大技能等级
enum { MAX_SKILL_OVER_LEVEL = 20 }; // 最高技能等级
#endif
#endif
// 名称长度定义
#define MAX_CLIENT_CHARNAME_LENGTH ( MAX_CHARNAME_LENGTH + 1 ) // 发送到客户端的包或客户端中包含角色名字的string长度.
#define MAX_CLASSNAME_LENGTH ( 16 )
#define MAX_TITLEID_LENGTH ( 16 ) // 角色名称以外的特殊称号
#define MAX_SHOPNAME_LENGTH ( 32 ) // 商店名称长度
#define MAX_SMALLDATETIME_SIZE ( 16 ) // "2006-10-12 24:03" ( 分单位 )
#define MAX_MIDDATETIME_SIZE ( 19 ) // "2006-10-12 24:03:00" ( 秒单位 )
#define MAX_DATETIME_SIZE ( 23 ) // "2006-10-12 24:03:00.123" ( 毫秒单位 )
#ifdef _INTERNATIONAL_UI
#if defined (_GLOBAL) || defined (_RUSSIA)
#define MAX_ROOMTITLE_LENGTH ( 31 )
#else
#define MAX_ROOMTITLE_LENGTH ( 29 )
#endif//北美限制为30字以外的28字。
#else
//_NA_20110630_BATTLE_ZONE_RENEWAL
#define MAX_ROOMTITLE_LENGTH ( 31 )
#endif//_INTERNATIONAL_UI(英文限制为30字.)
#define MAX_ROOMPASSWORD_LENGTH ( 7 ) // 房间密码最大长度
#define MAX_VENDOR_TITLE_LENGTH (80) //< 个人商店标题长度
#define MAX_VENDOR_SEARCH_LENGTH (20) //< 搜索词长度
#define VENDOR_ITEMS_PER_PAGE (12) // 个人商店搜索结果每页物品数量
#define MAX_CHAT_LEN (100)
#define MAX_NOTICE_LEN (1024)
#define MAX_SHOUT_LEN (255)
// 数量定义
#define MAX_MONSTER_NUM ( 10000 ) // 游戏全体怪物数
#define MAX_PLAYER_NUM ( 1000 ) // 游戏整体的最大东接角色数
#define MAX_FIELDITEM_NUM ( 3000 ) // 全部游戏道具数
#define MAX_TARGET_NUM ( 32 ) // 范围攻击时最大可攻击的角色数
enum { MAX_FIGHTING_ENERGY_NUM = 5 }; // 最大可充值的投机数量
#define MAX_EFFECT_COUNT ( 10 ) // 施展技能时最大效果数
#define MAX_PARTYMEMBER_NUM ( 10 ) // 队员的最大个数
#define MAX_FIELD_PARTYMEMBER_NUM ( 10 ) // 场景中队员的最大个数
#ifdef _NA_002050_20110216_ADD_GENDER
#define MAX_CHARACTER_LIST_NUM (10) // 一个服务器群中可生成角色的最大个数
#define MAX_CHARACTER_SLOT_NUM (10) // 一个服务器群中可生成角色的最大个数
// 设置角色槽数相关(变更时需要重新构建)
struct MaxCharListConfig
{
enum { kDefaultSlotSize = 6 }; // 默认角色槽数
enum { kMaxSlotSize = MAX_CHARACTER_LIST_NUM }; // 最大角色槽数
enum { kUseExtension = 1 }; // 是否使用角色栏扩展(0,1
enum { kSlotSizePerExtension = 1 }; // 扩展时增加的角色槽数
};
#else
#define MAX_CHARACTER_LIST_NUM (6) // 一个服务器群中可生成角色的最大个数
#define MAX_CHARACTER_SLOT_NUM (6) // 一个服务器群中可生成角色的最大个数
#endif // _NA_002050_20110216_ADD_GENDER
#define VILLAGE_SECTOR_SIZE 200 // mail地图的扇区大小(为了处理视图的一个扇区大小(正方形)
#define FIELD_SECTOR_SIZE 200 // 场景的扇区大小
#define ROOM_SECTOR_SIZE 200 // 战区大小
#define DOMINATION_SECTOR_SIZE 200 // 区域占领战的扇区大小
#define PLAYER_MOVE_UPDATE_TICK (500) // 玩家的移动更新时间
#define SERVER_UPDATE_TICK (20) // 服务器的整体Update Tick
#define DISTANCE_NPC_MEET 6.0f // 6米以内与npc接头的位置.
#define JUMP_DAMAGE_HEIGHT 8.0f // 8米开始适用跳跃伤害
#define JUMP_METER_PER_DAMAGE 60.0f // 每米伤害
#define MAX_IPADDRESS_SIZE 15
#define DEFAULT_ADJUST_LIMIT (3.0f) // GetTileToStand的参数值
// 动画帧时间
// 引擎中DEF_NUM_FRAMES_PER_MS的值为0.03f
#define DEF_NUM_FRAMES_PER_MS (30)
#define SPEED_MULTIPLIER (0.001f) // 角色速度系数
#define MAX_MAP_NUM (100) // World.txt的Row个数
//个体商店手续费
#define TRADE_COMMISSION_RATE (0.05f) //< 5%
#if NATION_BUILD_VERSION >= 1002
#define CHAR_DESTROY_LEVEL (150) //< 角色完全删除等级 (70)
#else
#define CHAR_DESTROY_LEVEL (40) //< 角色完全删除等级 (40)
#endif
// GM命令的MAX Define值
#define GM_MAX_CREATE_ITEM_NUM ( 1000)
#define GM_MAX_CREATE_MONEY ( 1000000000)
#define GM_MAX_STAT_UP_VALUE ( 100)
#define GM_MAX_SKILLPOINT_UP_VALUE ( 100)
#define MAX_RANK_OPTION ( 49)
#define MAX_ITEM_GRADE ( 1)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// PVP相关时间延迟
#define PVP_PRESS_KEY_TIMEOUT_TIME (30*1000)
#define PVP_PRESS_KEY_LEAVE_TIME (PVP_PRESS_KEY_TIMEOUT_TIME - (10*1000)) // 20秒内如果没有回答的话就把回到村子里的包裹扔掉
#define PVP_MATCHLESSS_DELAY_TIME (10*1000)
#define PVP_REVIVAL_DELAY_TIME (20*1000)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 竞争猎人相关时间延迟
#define CHUNTING_TIMEATTACK_EXPIRE_TIME (20*60*1000) // 时间攻击维持时间
#define CHUNTING_SURVIVAL_EXPIRE_TIME (20*60*1000) // 服务器间隔维护时间
#define CHUNTING_INIT_POTION_NUM (40) // 初始任务数
#define CHUNTING_MAX_MEMBER_NUM (10) // 最大成员数
#define CHUNTING_RESURRECTION_DELAY_TIME (5*1000) // 复活延迟
#define CHUNTING_INTERVAL_START_READY (20*1000) // 进入其他队伍后到游戏开始为止延迟
#define CHUNTING_TIMEATTACK_EXPIRE_TIME_GUILD_PVP (10*60*1000)
#define CHUNTING_SURVIVAL_EXPIRE_TIME_GUILD_PVP (10*60*1000)
#define SKILL_COOLTIME_MARGIN (500) // Server: 比起Clara,选择小的冷却时间,降低冷却时间的技能失败率.
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 公会相关
#define MAX_GUILDMARKSTREAM_SIZE (3072)
#define MAX_GUILDSTYLESTREAM_SIZE (8)
#define MAX_GUILDNOTICE_LENGTH (768)
#define MAX_GUILD_INTRODUCTION_LENGTH (768)
#define CREATE_GUILD_LIMIT_LEVEL (20) //<< 创建帮派等级限制
#define GUILD_UP2GP_RATE (1000000) //<< 公会UPGP转换比率
#ifdef _NA_007239_20140521_BUG_GUILDRELATION_COUNT
#define MAX_ALLIENCE_GUILD_NUM (20) // 同盟公会最大数
#define MAX_HOSTILITY_GUILD_NUM (0) // 敌对公会最大数
#define MAX_ONE_SIDE_HOSTILITY_NUM (0) // 单方面宣布敌对公会最大数
#else // 公会更新之前-以后
#define MAX_GUILD_RELATION_NUM (10) // 每个公会关系公会最大数
#define MAX_ALLIENCE_GUILD_NUM (10) // 同盟公会最大数
#define MAX_HOSTILITY_GUILD_NUM (5) // 敌对公会最大数
#define MAX_ONE_SIDE_HOSTILITY_NUM (100) // 单方面宣布敌对公会最大数
#endif //_NA_007239_20140521_BUG_GUILDRELATION_COUNT
#define MAX_GUILD_MEMBER_NUM (200) //<< 当前可获得的最大公会成员数
#define MAX_GUILD_CORPS_MEMEBER_NUM (60) //<< 公会军团可获得的最大公会成员数
#define MAX_GUILD_CORPS_NUM (8) // 每个公会最大军团数(包括直辖军团)
#ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION
#define MAX_GUILD_JOIN_REQUEST_NUM (30) // 加入公会邀请列表最大数
#define MAX_GUILD_JOIN_REQUEST_TIME_MAX (24*60*60) // 加入公会请求维持时间(单位秒)
#define MAX_GUILD_JOIN_REQUEST_PLAYER_NUM (5) // 玩家可申请的最大加入请求数
#define MAX_GUILD_FACILITY (8) // 公会设施最大数
#define MAX_GUILD_FACILITY_OPTION (2) // 公会设施选项最大数
typedef BYTE FCODE; //公会设施种类
typedef int FLEVEL; //公会设施等级
typedef BYTE ATYPE; //帮派激活类型
#endif //_NA_007330_20140620_GUILD_SYSTEM_EXTENSION
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 堕落的寺院
#define VERSION_AREA_TILE ( 1) //WAT文件版本
typedef INT UPTYPE;
typedef INT GPTYPE;
typedef INT GUILDGUID;
typedef INT GUILDMARKIDX; ///< 映射码
typedef INT CORPSGUID;
typedef INT CAMPGUID;
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
typedef INT CHARGUID;
typedef INT USERGUID;
typedef BYTE MISSIONNO; //< 不会超过MAX_MISSION_NUM
typedef int RANKINGKEY; //< 排行榜编号
#if defined (_NA_006802_20130704_REORGANIZATION_RANK_SYSTEM)
typedef BYTE RANKINGID; //< 添加地图代码重复导致的固有密钥值。
typedef BYTE RANKINGTYPE; //< 因为地图代码相同,排名类型也会不同,所以追加。
typedef WORD RANKING; // 排名显示类型
#endif // _NA_006802_20130704_REORGANIZATION_RANK_SYSTEM
typedef WORD RANKINGNO; //< 排行榜类别编号 == MAPCODE
typedef INT CORPSGUID; //< 公会军团GUID
typedef INT GAMECHUUSN;
typedef UINT64 BETAKEY;
#ifdef _NA_0_20100819_AGGRO_RENEWAL
typedef DWORD BATTLEPOINT;
#else
typedef WORD BATTLEPOINT;
#endif
#ifdef _NA_008012_20150204_SUN_RANKING_SYSTEM
typedef INT64 SCORE; //< 排名分数
#endif // _NA_008012_20150204_SUN_RANKING_SYSTEM
/// 总是使用这个类型!!!!数据型(DATATYPE)统一
typedef WORD MAPID; ///< 服务器标识
typedef int SOUND_INDEX; ///< 声音指数:相同的声音处理
typedef DWORD PLAYERKEY;
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//WAYPOINT相关
typedef WORD WPINDEX; //< 当前DB为int
#ifdef _NA_007942_20150113_MODIFY_RUNE_STONE_WAYPOINT_MAXCOUNT
#define MAX_CHAR_WAYPOINT_NUM (15) // 个人微博积分最大个数
#else
#define MAX_CHAR_WAYPOINT_NUM (10) // 个人微博积分最大个数
#endif //_NA_007942_20150113_MODIFY_RUNE_STONE_WAYPOINT_MAXCOUNT
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//采集相关
#define MAX_COLLECTION_LIST_NUM (255) //< 脚本的最大个数(可采集采集采集物种类)
#define MAX_FIELD_COLLECTION_NUM (255) //< 场景中存在的最大个数
#define MAX_COLLECT_DISTANCE_OBJ (10) //< 采集物与可采集最大距离(采集物与距离差)
#define MAX_COLLECT_DISTANCE_CHAR (5) //< 角色可获得奖励的最大距离(起始和结束时距离差)
//{__NA001283_20090303_COLLECTION_MAPOBJECTID
// 地图目标键在生成时内部使用20000次,,
// 触发器使用从1号开始的号码,
// 与触发方相关的逻辑需要更改为触发号.
// MapObjectKey使用(200000~)值,TriggerObjectKey使用(1~)值。
//将下级密钥(1~)转换为上级密钥(200000~)
#define Conv_MapObjectKey(Key) (MAP_OBJECT_KEY>Key?Key+MAP_OBJECT_KEY:Key)
//将上位键(200000~)转换为下位键(1~)
#define Conv_TriggerObjectKey(Key) (MAP_OBJECT_KEY<=Key?Key-MAP_OBJECT_KEY:Key)
//}
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//分组系统 '__KR_001355_20090608_GROUPINGSYSTEM_DATA'
#define MAX_GROUP_MEMBER_LOW_MAX (5) //个人可拥有的最大子列表个数
#define MAX_GROUP_MEMBER_HIGH_MAX (1) //个人可拥有的最大上级列表个数
#define MAX_GROUP_MEMBER (MAX_GROUP_MEMBER_LOW_MAX + MAX_GROUP_MEMBER_HIGH_MAX)//组总人数
#define MAX_DATE_GROUPBONUS (7) //为了获得集团经验值奖金需要重新接触的日子。
#define HIGH_MEMBER_LEVEL (80) //上位成员等级,只在中国版本中使用
#define LOW_MEMBER_LEVEL (10) //下级成员等级,只在中国版本中使用
#if defined (_CHINA)
#define MAX_GROUP_EXP (10000000) //离线最大累计经验
#else
#define MAX_GROUP_EXP (3000000) //离线最大累计经验
#endif
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
typedef DWORD REGENID;
typedef DWORD UNITGROUPID;
// 认证协议中使用的值
const int GAMECHU_USN_MAX = 10;
const int INFO_MAX_LEN = 64;
#if defined(__CH1305_090303_ACCOUNT_ID_LENGTH_EXTENTION__)
const int ID_MAX_LEN = 50;
#else
const int ID_MAX_LEN = 24;
#endif
#ifndef CHECK_ID_LENGTH_BUFFER
#if defined(__CH1305_090303_ACCOUNT_ID_LENGTH_EXTENTION__) || defined(_ACCOUNT_ID_LENGTH_EXTENTION_)
#define CHECK_ID_LENGTH_BUFFER(member) \
BOOST_STATIC_ASSERT(static_cast<size_t>(sizeof(member)/sizeof(member[0])) == (ID_MAX_LEN + 1) && \
ID_MAX_LEN == 50)
#else
#define CHECK_ID_LENGTH_BUFFER(member) \
BOOST_STATIC_ASSERT(static_cast<size_t>(sizeof(member)/sizeof(member[0])) >= ID_MAX_LEN && \
ID_MAX_LEN == 24)
#endif
#endif
const int PASSWD_MAX_LEN = 24;
#define MAX_IP_STRING_LEN 15 // NOTE: f110923.1L, 已从serverstruct.h移动
const int IP_MAX_LEN = 32; // NOTE: f110923.1L, 替换为 MAX_IP_STRING_LEN. 添加Size以备Unicode16->32
const int MAX_IP_LENGTH = 16; // NOTE: f110923.1L, 不再使用,为了配合Shop服务器而添加
const int AUTH_SERIAL_KEY_LEN = 32; // 连接串行密钥(认证)
const int MAX_WORLD_NAME_LEN = 32; // 世界名称长度
const int MAX_CHANNEL_NAME_LEN = 32; // 频道名称长度
const DWORD HEARTBEAT_TICK = 20000;
#if USING_GAMEGUARD
const DWORD GAME_GUARD_CHECK_TICK = 5000; // 每5秒检查一次游戏后卫
#endif // USING_GAMEGUARD
#ifdef _KR_0_20120207_CRYPT_SHA256
enum { kCryptStringSize = 65 };
#else
enum { kCryptStringSize = 16 };
#endif
//日志文件的路径最大长度
#define MAX_LOGPATH_LEN 256
//交易一定金额以上时登录(1亿)
#define LOG_TRADE_OVER_MONEY 100000000
//任务房生成时等级差异值。
#define MISSION_LEVEL_JOIN_OFFSET 25
#define HUNTING_JOIN_LEVEL_OFFSET 15
const BYTE MAX_VALKYRIE_RELOAD_COUNT = 20; // 女武神武器最大装填数
#ifdef _NA_000094_20100622_ENHANCED_USER_BLOCK_LIST
#define MAX_FRIEND_STAT_NUM 200 // 可以进入一个分组的最大好友数
#define MAX_BLOCK_STAT_NUM 200 // 一个分组的最大屏蔽数
#define MAX_FRIENDBLOCK_STAT_NUM 400 // 包含一个分组的好友/屏蔽的最大数字
#else
#define MAX_FRIEND_STAT_NUM 90 // 可以进入一个包的最大好友数
#define MAX_BLOCK_STAT_NUM 90 // 一个分组的最大屏蔽数
#define MAX_FRIENDBLOCK_STAT_NUM 190 // 包含一个分组的好友/屏蔽的最大数字
#endif //_NA_000094_20100622_ENHANCED_USER_BLOCK_LIST
#define MAX_REVENGE_STAT_NUM 10 // 可以进入一个包的最大风险对象数字
#define MAX_FRIENDINVITATE_REWARD_NUM MAX_FRIEND_STAT_NUM * 4 // 可放入一个包的好友奖励列表信息
//_NA_0_20100527_ADD_CHAR_RELATION_MEMO
#define MAX_FRIEND_MEMO_LENGHT 114 // 详细信息窗口的便笺尺寸
#define __AUTH_TEST__
/*整理后的difine*/#define REMOVE_ATTACK_MOVE // 删除攻击移动
// 事件关联值
#define _MAX_EVENT_REGITEM 5 // 可在一个活动中登录的最大道具数
// NOTE: increased by _KR_0_20091021_FIRENDINVITATION_EXTEND //邀请朋友的活动有4种奖励。
#define _MAX_EVENT_REWARD 4 // 一个活动给予的奖励数
#define _MAX_EVENT_ROW_NUM 100 // 当前正在执行的活动最大个数
#define MAX_AKPATTERN_SIZE 1024 // 模式数据最大大小
#define MAX_MEMO_NUM 200 // 最大条数
#define MAX_MEMO_PAGENUM 20 // 发送到一页(分组单位)的最大纸条数量(共200个为20*10=200,所以发送10次)
#define MAX_MEMO_LENGTH 200 // 实际长度(BYTE
#define MAX_MEMO_STRLENGTH 201 // 包含NULL
#define MAX_SUBJECT_WLENGTH 10 // 实际长度(wchar_t
#define MAX_SUBJECT_LENGTH 20 // 实际长度(BYTE
#define MAX_SUBJECT_STRLENGTH 21 // 包含NULL
typedef ULONGLONG MEMOGUID;
// 频道聊天室最大入场人数(没有定义)
#if defined (_RUSSIA)
#define MAX_CHATZONE_USER 500
#else
#define MAX_CHATZONE_USER 255
#endif
// 将null字符变形为DWORD型的值
#define Null_Value 1819047246
// 认证服务器请求客户端连接结束时,添加理由标志-昌贤删除后再次添加。补丁时定义要解开
#define _AUTH_USERDISCONN_CODE
#define MAX_VERSION_SIZE 64 // 脚本或各种版本的尺寸
//有关报告的价格。
#define MAX_MODULE_NAME_SIZE 64
#define MAX_BUILD_VERSION_SIZE 8
#define MAX_OS_NAME_SIZE 64
#define MAX_PROCESS_NAME_SIZE 100
#define MAX_PHYSICAL_MEMORY_SIZE 32
#define MAX_DIRECTX_NAME_SIZE 64
#define MAX_DESCRIPT_SIZE 64
#define MAX_DISPLAY_MEMORY_SIZE 32
#define MAX_DRIVER_VERSION_SIZE 32
#define __NA_515_20070608_JUMP_DAMAGE
#define MAX_SOCKET_OPTION_INDEX 1024
#define MAX_ITEM_OPTION_KIND_NUM 128 // 删除 _NA_000251_20100727_SOCKET_SYSTEM
#define SKILLCODE_INVALID 0
#define SKILLCODE_NORMAL_ATTACK 65500
#define SKILLCODE_FIGHINGENERGY 2101 // 技能码
#define MAX_GUILD_DELEGATE_RIGHT 6 //__NA_000596_20070821_GUILD_CLASS_SYSTEM
#define INFINITE_ITEM_DAY 10000
#define HEIGHT_OF_STORY 20 // 一层楼高
///////////////////////////////////////////公会 ///////////////////////////////////////////
#define INVALID_GUILDGUID (0)
#define MAX_REPURCHASE_ITEM_NUM (5) // 重新购买物品列表的最大个数
#define GUILDWAREHOUSE_USING_LEVEL (1) // 无法使用公会仓库的等级
#ifdef _NA_003923_20120130_GUILD_RENEWAL
#define GUILDWAREHOUSE_SLOTEX_GUILD_GRADE (3) // 无法使用扩展槽的公会等级
#define GUILDWAREHOUSE_SLOTEXPOS (25) // 行会等级3以上开始可使用的槽位编号
#define GUILDWAREHOUSE_SLOTEXPOS_BY_CASHITEM (50) // 使用公会等级缓存道具可使用的槽位编号
#define MAX_GUILDWAREHOUSE_SLOT_PER_TAB (25) // 每个公会仓库标签的槽数
#else
#define GUILDWAREHOUSE_SLOTEX_GUILD_GRADE (2) // 无法使用扩展槽的公会等级
#define GUILDWAREHOUSE_SLOTEXPOS (24) // 行会等级2以上开始可使用的槽位编号
#define GUILDWAREHOUSE_SLOTEXPOS_BY_CASHITEM (48) // 使用公会等级缓存道具可使用的槽位编号
#define MAX_GUILDWAREHOUSE_SLOT_PER_TAB (24) // 每个公会仓库标签的槽数
#endif //_NA_003923_20120130_GUILD_RENEWAL
#define MAX_GUILDWAREHOUSE_TAB_NUM (1) // 公会仓库基本标签数
#define MAX_GRADE_GUILDWAREHOUSE_TAB_NUM (1) // 公会仓库公会等级为3,可使用的最大标签数
#define MAX_CHARGE_GUILDWAREHOUSE_TAB_NUM (1) // 公会仓库缓存可使用的最大标签数
#define MAX_GUILDWAREHOUSE_TAB_TOTAL_NUM (3) // 公会仓库中可使用的最大标签数
#define MAX_GUILDWAREHOUSE_LOGLIST_NUM (200)
#define MAX_GUILDWAREHOUSE_LOGPAGE_NUM (20)
#define GUILD_DESTROY_WAIT_TIME (3*24*60)
#define GUILDGRADE_AT_GUILDWAREHOUSE_CREATE (2) //创建公会仓库的Guild Grade
#define GUILDWAREHOUSE_TAB_COUNT_AT_GUILD_CREATE (1) //创建公会仓库时提供的仓库标签数量
#define GRADE_AT_GUILD_CREATE (1) //创建帮派时基本Guild Grade
#ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION
#define MAX_GUILDNAME_LENGTH ( 16 ) // 行会名最大长度
#endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION
////////////////////////////////////////////占领战////////////////////////////////////////
#define MAX_TILE_NODE_CNT_IN_DOMINATION 50
#define MAX_ATTACK_HEIGHT_IN_DOMINATION 4.5f
///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////BIT CONTROL///////////////////////////
#define BIT_RESET(val) (val = 0)
#define BIT_ON(val,bit) (val |= bit)
#define BIT_OFF(val,bit) (val &= (~bit))
#define IS_BIT_ON(val,bit) ((val & bit) == bit)
////////////////////////////////////////////////////////////////////////
#define PACKET_PTR_CONVERT(type, obj, Value) \
type* obj = static_cast<type*>(Value);
#define _MAKESTR(s) #s
#define MAKESTR(s) _MAKESTR(s)
enum { MAX_PET_NAME_LENGTH = 10 }; //__NA_1131_PET_NAME_SETTING
// used by __NA_001359_20090619_HEIM_LOTTO_SYSTEM = {
// 如果没有Cla/服务器/DB协议,下一个选项将无法更改
#define LOTTO_MIN_NUMBER 1 // 可选择的最小数字
#define LOTTO_MAX_NUMBER 25 // 可选择的最大数字
#define LOTTO_NUM_PICKS 4 // 应征/抽奖时选择几个数字
#define LOTTO_NUM_RECENT_DRAWS 2 // 最近第几集的海姆彩票数据(>=2)
#define LOTTO_MAX_NOTICE 10 // 保存最近几条中奖通知
#if defined (_GLOBAL) || defined (_RUSSIA)
#define LOTTO_MAX_TICKETS 30 // 一个角色可拥有的彩票纸的最大个数
#else
#define LOTTO_MAX_TICKETS 5 // 一个角色可拥有的彩票纸的最大个数
#endif
// 服务器端页面处理的常数
#define LOTTO_NUM_WINNERS_PER_PAGE 200 // 选择中奖者列表时每页记录数
// }
#define CHANNEL_DOMINATION_WAR 0
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//区域占领战系统
#define MAX_DOMINATION_ACTIONLIST (10) // 拍卖窗口显示的行会列表数字
#define MAX_DOMINATION_MAP (100) // 开始占领战地图的总个数
#define MAX_DOMINATION_AUCTION (100) // 可竞标一个地区拍卖的公会个数
#define MAX_DOMINATION_DEFENSEWALL_NUM (3) // 占领区前防墙个数
#define DOMINATION_DEFFENSWALL_POINT (5) // 虽然现在5点是MAX,但是以后可以变更。
// WARNING: 对于Gamellu,只需要测试值 (3)!, 必须还原为有效值 (20)
#define MAX_DOMINATION_MEMBER (20) // 可参与占领战的成员最大值
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#define CONDITION_DELEY (1000) // 状态触发更新时间
#if defined (_RUSSIA)
#define GIFT_REQ_USERLEVEL (20) //可赠送俄罗斯Level
#else
#define GIFT_REQ_USERLEVEL (25) //北美可礼包Level
#endif
#ifdef _CHINA //_NA_001290_20090525_MODIFY_CALC_SD
#define SDINCREASE_RATIO (3.0f) // SP计算用增加比率值
#else
//youngmoon #2996SD公式更改
//#define SDINCREASE_RATIO (8.0f)
#define SDINCREASE_RATIO (6.0f)
#endif
#define STATE_BATTLE_TIME (5000) // 战况持续时间
//_NA_20100812_INTEGRATE_SYSTEM_MEMO_DOMINATION
#ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR
#define MAX_SYSTEM_MEMO_LIST (200) // 可一次性发送的系统内存个数
#else
#define MAX_SYSTEM_MEMO_LIST (100) // 可一次性发送的系统内存个数
#endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR
//_NA_0_20100901_SKILLTREE_SYSTEM
#ifdef _NA_004530_20120315_1202_SKILL_RENEWAL
enum { CHARACTER_SKILL_LEVEL_RATIO = 1 }; // 每级1积分
enum { REQUIRE_USED_SKILL_POINT_FOR_NEXT_LINE = 20 };
#else
enum { CHARACTER_SKILL_LEVEL_RATIO = 3 }; // 角色等级3技能等级1
enum { REQUIRE_USED_SKILL_POINT_FOR_NEXT_LINE = 5 }; // 用于熟悉下一行技能的技能点数比例
#endif
//_NA_20110630_BATTLE_ZONE_RENEWAL
#define MAX_MISSION_COUNT (100) //可指定任务最大值
#define MAX_PARTYROOM_LIST (40) //战区列表中显示的队伍列表最大值
#define MAX_PARTYROOM_SEARCH_LIST (100) //搜索结果列表最大值
#define MAX_REQUIRE_ITEM (10) //要求物品种类值(必须与脚本的要求个数一致)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 与cash shop相关
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#define GIFT_MESSAGE_LENGTH 201
#define BUY_STORAGE_ITEM_PER_PAGE 30 //保管盒最大物品数量限制30改为400,增加数组长度。 by:十里坡剑神 2021-08-20
#define GIFT_STORAGE_ITEM_PER_PAGE 30
#define SHOP_MAX_ITEM_BUY_COUNT 30
#define SHOP_MAX_ITEM_GIFT_COUNT 30
#define SHOP_MAX_CASH_DETAIL_COUNT 10
#define SHOP_MAX_ITEM_PROPERTY_COUNT 10
//shop游戏代码.
#ifdef _KOREA
#define SHOP_GAMECODE 113
#define SHOP_SALESZONE 329
#define SHOP_SERVERTYPE 0 // 按游戏积分类型进行支付百分比查询(InquireInGamePoint Value)。在SUN中不使用。
#elif defined(_CHINA)
#define SHOP_GAMECODE 862
#define SHOP_SALESZONE 860
#define SHOP_SERVERTYPE 0
#elif defined(_JAPAN)
#define SHOP_GAMECODE 844
#define SHOP_SALESZONE 847
#define SHOP_SERVERTYPE 0
#elif defined(_GLOBAL)
#define SHOP_GAMECODE 503
#define SHOP_SALESZONE 505
#define SHOP_SERVERTYPE 687
#elif defined(_RUSSIA)
#define SHOP_GAMECODE 856
#define SHOP_SALESZONE 853
#define SHOP_SERVERTYPE 852
#endif
//_NA_003027_20111013_HONOR_SYSTEM
#define MAX_HONORTITLE_COUNT (300)
#define MAX_HONOR_POINT_INFO_COUNT (200)
#define MAX_DAILYQUEST_INFO_COUNT (300)
#define MAX_DAILYQUEST_PROGRESS_COUNT (24)
#define MAX_GUILD_DAILYQUEST_PROGRESS_COUNT (5)
#ifdef _NA_007407_20140710_CHALLENGE_DAILY_QUEST
#define MAX_CHALLENGE_DAILYQUEST_PROGRESS_COUNT (1000)
#endif //_NA_007407_20140710_CHALLENGE_DAILY_QUEST
//_NA004034_20120102_POINT_WALLET_SYSTEM
#define MAX_POINTWALLET_COUNT (100)
//_NA_003923_20120130_GUILD_RENEWAL
#define MAX_IN_GAME_GUILD_LOG (100)
#define MAX_IN_GAME_LOG_PARAM_STR (20)
// _NA_008283_20150511_NOTIFICATIONS_SYSTEM
#define MAX_NOTIFICATION_COUNT (50)
// _NA_008404_20150712_MINIGAME_SYSTEM
#define MINIGAME_BINGO_WIDTH (5)
#define MINIGAME_BINGO_HEIGHT (5)
#define MINIGAME_BINGO_LENGTH (MINIGAME_BINGO_WIDTH * MINIGAME_BINGO_HEIGHT)
#define MINIGAME_BINGO_MAX_REWARD_COUNT (12)
#endif // __DEFINE_H__