#ifndef _DB_RANK_H_ #define _DB_RANK_H_ #include "container/static_array_list.h" #include "common/datalist.h" #include "common/gem_def.h" #include "item_data.h" #include "wing_data.h" #include "achieve_data.h" using namespace container; #define MAX_USER_EQUIP 19 #define MAX_PET_SKILL 16 #define MAX_PET_BASE 8 #define MAX_FIGHT 40 #define NEED_REMEMBER_PROPERTY 20 #define MAX_PET_EQUIP 4 enum RankType { rtNone = 0, rtFightVal = 1, // 战力排行 rtLevel = 2, // 等级排行 rtCharmWeek = 3,// 每周魅力排行 rtAchieve = 4, // 成就排行 rtPet = 5, // 宠物排行榜 rtMount = 6, // 坐骑排行 rtWing = 7, // 翅膀排行榜 rtSpirit = 8, // 精灵排行 rtCharm = 9, // 魅力排行(无用) rtRoot = 10, // 灵根排行(无用) rtMax, }; #pragma pack(push, 1) struct RankDbItem { ActorId actorId_; int rankId_; // 排行榜的编号 int point_; // 排行的分数(如果是等级排行,这个就是等级,如果是魅力排行,这个就是魅力值) int camp_; // 服务器id int level_; // 等级 int job_; // 职业 int sex_; // 性别 int fightVal_; // 战斗力 int mount_id_;// 坐骑的阶值,用于客户端取得坐骑的名字 int spirit_id_; // 法宝的境界,用于客户端取得法宝的名字,注意,这些字段只有特定的排行榜才有用 int wing_; // 翅膀id int pet_type_; // 宠物类型id int pet_id_; // 宠物id int qq_vip_; // qqvip等级 int weapon_; // 武器外观 int model_; // 衣服外观 int hair_; // 头发外观 int stone_effect_;//宝石特效 int stage_effect_;//阶级特效 int wing_model_;//翅膀外观 int last_rank_; // 上一次的排名 int like_; //点赞次数 int srvid_; // 服务器id char actorName_[32]; //角色名 char guild_[32]; //仙宗名 char petName_[32]; //宠物名 static const int MAX_COUNT = 100; RankDbItem() : actorId_(0), rankId_(0), point_(0), camp_(0), level_(1), job_(0), sex_(0), fightVal_(0), mount_id_(0), spirit_id_(0), wing_(0), pet_type_(0), pet_id_(0), qq_vip_(0), weapon_(0), model_(0), hair_(0), stone_effect_(0), stage_effect_(0), wing_model_(0), last_rank_(0), like_(0), srvid_(0) { actorName_[0] = 0; guild_[0] = 0; petName_[0] = 0; } }; #pragma pack(pop) #pragma pack(push, 1) struct PetRankDbItem { ActorId actorId_; int jingjie_; //宠物境界 int nature_; //宠物性格 short pet_type_; //宠物外观idx short skill_count_; //技能个数 int skill_list_[MAX_PET_SKILL]; //一个int包含技能id和等级 (低16 技能id 高16 等级) StaticDataList items_;//宠物装备 static const int MAX_COUNT = 100; PetRankDbItem() : actorId_(0), jingjie_(0), nature_(0), pet_type_(0), skill_count_(0) { memset(skill_list_, 0, sizeof(skill_list_)); } }; #pragma pack(pop) typedef StaticArrayList RankList; typedef StaticArrayList PetRankList; typedef StaticHashTable LastRankList; typedef StaticDataList AllRankList; typedef StaticDataList AllLastRankList; #pragma pack(push, 1) struct RankData { int property_[NEED_REMEMBER_PROPERTY]; //属性值 int fight_list_[MAX_FIGHT]; //战斗力值 RankData() { memset(property_, (int)0, sizeof(property_)); memset(fight_list_, (int)-1, sizeof(fight_list_)); } }; #pragma pack(pop) struct ActorRankData { ActorId actorId_; //角色id int dragon_; //神龙信息(无用) int hasMount_; //是否有坐骑数据 //MountDataDb mount_data_;//坐骑数据 StaticDataList items_;//玩家装备 int hasWing_; //是否有翅膀数据 WingRankDbData wing_data_;//翅膀数据 int hasSpirit_; //是否有精灵数据 SpiritRankData spirit_data_; //精灵数据 AchieveRankData achieve_data_; //成就数据 RankData rank_data_; //排行榜杂七杂八数据 uint8_t rankNum_[rtMax]; // 在每个榜的排名,如果没排上,就是0 ActorRankData() : actorId_(0), dragon_(0), hasMount_(0), hasWing_(0), hasSpirit_(0) { memset(rankNum_, 0, sizeof(rankNum_)); } }; struct ActorRankDataEx { ActorRankData base_; char guild_[32]; // 冗余,方便查找 int mount_id_; // 坐骑的阶值,用于客户端取得坐骑的名字 int spirit_id_; // 法宝的境界,用于客户端取得法宝的名字,注意,这些字段只有特定的排行榜才有用 int root_; // 灵根的等级数据 int wing_; // 翅膀 ActorRankDataEx() : mount_id_(0), spirit_id_(0), root_(0), wing_(0) { guild_[0] = 0; } }; #endif