|
--[[
|
|
服务器下发的角色信息结构体
|
|
]]
|
|
require("game.pet.vo.PetBaseVo")
|
|
require("game.sharedata.RoleVo")
|
|
MainRoleVo = MainRoleVo or BaseClass(RoleVo)
|
|
local MainRoleVo = MainRoleVo
|
|
local UserMsgAdapter_ReadFmt = UserMsgAdapter.ReadFmt
|
|
local UserMsgAdapter_ReadFmt2 = UserMsgAdapter.ReadFmt2
|
|
|
|
MainRoleVo.TOP_LEVEL = 370 --传奇等级
|
|
function MainRoleVo:__init( )
|
|
self.vo_type = SceneBaseType.MainRole
|
|
self.gm_flag = 0 -- int:8 gm
|
|
self.level = 0 -- int:16 等级
|
|
self.turn = 0 --转生
|
|
|
|
self.attack_speed = 0.8 -- int:16 攻击速度(秒)
|
|
self.attack_range = 2 -- int:8 攻击范围(格子数)
|
|
self.exp = 0 -- int:64 经验(有符号)
|
|
self.exp_lim = 0 -- int:32 经验上限
|
|
|
|
|
|
self.jin=0 --int:32 彩钻
|
|
self.jinLock=0 --int:32 礼券
|
|
self.jinPink = 0 -- nt:32 粉钻
|
|
self.tong=0 --int:32 金币
|
|
self.tongLock=0 --int:32 绑定金币
|
|
self.guild_contribute = 0 --int:32 社团贡献
|
|
self.slot_info = {}
|
|
|
|
self.anger = 0 --怒气
|
|
|
|
self.lastSceneId = 0 --玩家上次下线所在的场景id
|
|
|
|
self.hp = 0 -- int:32 气血
|
|
self.maxHp = 0 -- int:32 气血上限
|
|
|
|
self.enemy_id = 0 --当前敌人id
|
|
self.particle_priority = 1
|
|
|
|
self.role_id = 1
|
|
self.plat_name = "测试"
|
|
self.server_id = 1
|
|
|
|
self.chaosTime = 0
|
|
self.peace_cd_time = 0
|
|
|
|
self.worldLv = 0 -- 世界等级
|
|
self.worldLvExp = 0 -- 世界等级经验加成
|
|
|
|
self.hatred = 0
|
|
self.hatred_time = 0
|
|
self.date_role_id = 0
|
|
self.kill_mon_exp = 0
|
|
|
|
self.last_level_time = 0
|
|
self.creat_role_time = 0
|
|
|
|
self.mate_title = ""
|
|
self.mate_name = ""
|
|
self.mate_lv = 0
|
|
|
|
self.sup_vip_type = 0 --是否是永久贵族 0|否 1|体验 2|永久
|
|
|
|
self.angry_value = 0 --怒气技能值
|
|
self.max_angry_value = 0
|
|
self.pet_wing_id = 0
|
|
self.pet_weapon_id = 0
|
|
self.pet_farmour = 0
|
|
|
|
self.god_id = 0 --式神id
|
|
self.god_hp = 0 --式神血量
|
|
self.god_max_hp = 0 --式神血量上限
|
|
|
|
self.evil_type_id = 0 --跟随守护type_id
|
|
end
|
|
|
|
|
|
function MainRoleVo:ReadFrom13001( )
|
|
self.role_id = UserMsgAdapter_ReadFmt("l") --用户id
|
|
self.plat_name = UserMsgAdapter_ReadFmt("s")
|
|
self.server_id = UserMsgAdapter_ReadFmt("h")-- 服id(唯一标识)
|
|
self.server_num = UserMsgAdapter_ReadFmt("h")-- 服标识(显示用)
|
|
self.server_name = UserMsgAdapter_ReadFmt("s") -- 所选服务器名字
|
|
|
|
FigureProtoVo.ReadFmt(self)
|
|
BattleProtoVo.ReadFmt(self)
|
|
self.lastSceneId, -- int:32 地图唯一ID
|
|
self.pos_x, -- int:16 X坐标
|
|
self.pos_y, -- int:16 Y坐标
|
|
self.dun_id, -- int:32 副本id
|
|
self.exp, -- int:64 经验(有符号)
|
|
self.exp_lim, -- int:32 经验上限
|
|
self.jin, --int:32 彩钻
|
|
self.jinLock, --int:32 礼券
|
|
self.jinPink, --int:32 粉钻
|
|
self.tong, --int:32 金币
|
|
self.honor, --int:32荣誉
|
|
self.guild_contribute, --int:32 社团贡献
|
|
self.fighting, --int:32 战斗力
|
|
self.guild_id --int:64 社团id
|
|
= UserMsgAdapter_ReadFmt2("ihhilliiiiiill")
|
|
self.guild_name --string 社团名字(2020年3月9日修改,避免纯数字的社团名在UserMsgAdapter_ReadFmt2中首位0被当作多余位删掉)
|
|
= UserMsgAdapter_ReadFmt("s")
|
|
-- print("self.peace_cd_time = ",UserMsgAdapter_ReadFmt("h"))
|
|
self:ChangeVar("peace_cd_time", UserMsgAdapter_ReadFmt("h"))
|
|
self.hatred = UserMsgAdapter_ReadFmt("h") --int16 : 仇恨值
|
|
self.team_id = UserMsgAdapter_ReadFmt("l") --int:64 队伍id(为0时没队伍)
|
|
self.date_role_id = UserMsgAdapter_ReadFmt("l") --约会id
|
|
self.creat_role_time = UserMsgAdapter_ReadFmt("i") --创角时间
|
|
self:ChangeVar("mate_title_role_id", UserMsgAdapter_ReadFmt("l")) --使用的羁绊称号角色id
|
|
|
|
self.god_id = UserMsgAdapter_ReadFmt("h") --int:16 式神id
|
|
self.god_hp = UserMsgAdapter_ReadFmt("l") --int:64 式神血量
|
|
self.god_max_hp = UserMsgAdapter_ReadFmt("l") --int:64 式神血量上限
|
|
|
|
--第一次优先请求降神协议,获取最新上阵id
|
|
GlobalEventSystem:Fire(EventName.FAST_GAME_START)
|
|
|
|
self:ChangeVar(BaseVo.ALL_VAR)
|
|
end
|
|
|
|
|
|
function MainRoleVo:ReadFrom13032()
|
|
BaseAttrProtoVo.ReadFmt3(self)
|
|
end
|
|
|
|
|
|
--通过秘籍改变属性
|
|
function MainRoleVo:ReadFrom13033()
|
|
|
|
-- self.fighting = UserMsgAdapter_ReadFmt("i") --用户id
|
|
self:ChangeVar("fighting", UserMsgAdapter_ReadFmt("l"))
|
|
BattleProtoVo.ReadFmt(self)
|
|
-- self:ChangeVar(BaseVo.ALL_VAR)
|
|
self:Fire(EventName.UPDATE_MAIN_ROLE_INFO_VIEW)
|
|
end
|
|
|
|
--通过秘籍改变属性
|
|
function MainRoleVo:ReadFrom13034()
|
|
local hatred = UserMsgAdapter_ReadFmt("h")
|
|
local time = UserMsgAdapter_ReadFmt("i") --清除一点罪恶值的时间戳
|
|
self.hatred_time = math.max(0,hatred * 3 * 3600 + time - TimeUtil:getServerTime()) --清除所有罪恶值所需要的时间end
|
|
-- if hatred == 0 then
|
|
-- Message.show("您已消除所有红名值,祝您游戏愉快")
|
|
-- ChatModel.Instance:AddInfoToChatView("您已消除所有红名值,祝您游戏愉快", ChatModel.CHANNEL_SYSTEM, 0)
|
|
-- end
|
|
self.hatred = -1
|
|
self:ChangeVar("hatred",hatred)
|
|
end
|
|
|
|
function MainRoleVo:ReadFrom13003()
|
|
local old_level = self.level
|
|
|
|
local new_exp = 0
|
|
self.level, new_exp, self.exp_lim = UserMsgAdapter_ReadFmt("hll")
|
|
self:ChangeVar("exp",new_exp)
|
|
if old_level > 0 and old_level < self.level then
|
|
self.last_level_time = Time.time
|
|
MainUIModel:getInstance():AddUpgradeInfo(self.level)
|
|
self:DelayFire(EventName.CHANGE_LEVEL, self.level)
|
|
self:Fire(EventName.IMMEDIATE_CHANGE_LEVEL,self.level)
|
|
|
|
if Config.ConfigHelper.LevelStopList[self.level] then
|
|
GuideModel:getInstance():SetNeedFinishGuideFirst(true)
|
|
end
|
|
--升级UI表现
|
|
local data = {type = SceneSpecialTipType.upgrade,}
|
|
CommonController.Instance:Fire(EventName.OPEN_SCENESPECIALTIPVIEW,data)
|
|
end
|
|
end
|
|
|
|
-- 世界等级
|
|
function MainRoleVo:ReadFrom13011()
|
|
self.worldLvExp = UserMsgAdapter_ReadFmt("H")
|
|
self.worldLv = UserMsgAdapter_ReadFmt("h")
|
|
end
|
|
|
|
function MainRoleVo:SetGuildId(value)
|
|
self.guild_id = value
|
|
end
|
|
|
|
function MainRoleVo:SetTeamId(value)
|
|
self.teamID = value
|
|
end
|
|
|
|
function MainRoleVo:ChangeFromVo(roleVo)
|
|
self:ChangeVar("activity_flags",roleVo.activity_flags, true, true) --活动标志,延迟触发;在其他参数之前,因为在其他参数触发的事件中可能用到
|
|
self:ChangeVar("name",roleVo.name)
|
|
self:ChangeVar("maxHp",roleVo.maxHp)
|
|
self:ChangeVar("hp",roleVo.hp)
|
|
self:ChangeVar("move_speed",roleVo.move_speed)
|
|
self:ChangeVar("wing_id",roleVo.wing_id)
|
|
self:ChangeVar("att_speed",roleVo.att_speed)
|
|
self:ChangeVar("hide_flag",roleVo.hide_flag)
|
|
self:ChangeVar("ghost_mode",roleVo.ghost_mode)
|
|
self:ChangeVar("dance_status",roleVo.dance_status)
|
|
self:ChangeVar("team_id",roleVo.team_id)
|
|
self:ChangeVar("team_job",roleVo.team_job)
|
|
self:ChangeVar("pk_status",roleVo.pk_status)
|
|
self:ChangeVar("guild_id",roleVo.guild_id)
|
|
self:ChangeVar("is_ride",roleVo.is_ride)
|
|
self:ChangeVar("horse_id",roleVo.horse_id)
|
|
self:ChangeVar("warGroup",roleVo.warGroup)
|
|
self:ChangeVar("flag_state",roleVo.flag_state)
|
|
-- self:ChangeVar("fashion_model_list",roleVo.fashion_model_list, nil, true)
|
|
self:ChangeVar("battle_title",roleVo.battle_title)
|
|
self:ChangeVar("sky_flags",roleVo.sky_flags, nil, true)
|
|
self:ChangeVar("state_type",roleVo.state_type)
|
|
self:ChangeVar("weapon_effect",roleVo.weapon_effect)
|
|
self:ChangeVar("grade_id",roleVo.grade_id)
|
|
self:ChangeVar("pokemon_id",roleVo.pokemon_id)
|
|
self:ChangeVar("pokemon_star",roleVo.pokemon_star)
|
|
self:ChangeVar("pet_status",roleVo.pet_status)
|
|
self:ChangeVar("is_marriage",roleVo.is_marriage)
|
|
self:ChangeVar("marriage_id",roleVo.marriage_id)
|
|
self:ChangeVar("marriage_name",roleVo.marriage_name)
|
|
self:ChangeVar("boss_flag",roleVo.boss_flag)
|
|
self:ChangeVar("baby_id",roleVo.baby_id)
|
|
self:ChangeVar("child_follow_status",roleVo.child_follow_status)
|
|
self:ChangeVar("escort_state",roleVo.escort_state)
|
|
self:ChangeVar("protect_time",roleVo.protect_time)
|
|
self:ChangeVar("career",roleVo.career)
|
|
self:ChangeVar("mate_title",roleVo.mate_title)
|
|
self:ChangeVar("mate_name",roleVo.mate_name)
|
|
self:ChangeVar("mate_lv",roleVo.mate_lv)
|
|
--时装只要赋值就好,降神会刷新模型
|
|
self.fashion_model_list = roleVo.fashion_model_list
|
|
self.foster_skin_list = roleVo.foster_skin_list
|
|
self:ChangeVar("god_id",roleVo.god_id,nil,true) --通过降神改变模型
|
|
self:ChangeVar("casual_state_flags",roleVo.casual_state_flags,nil,true)
|
|
-------------------------
|
|
--进阶部分
|
|
local sprite_res_id = 0--法宝
|
|
local pet_res_id = 0--AI娘
|
|
local pet_wing_id = 0--ai娘翅膀
|
|
local horse_id = 0--ai娘翅膀
|
|
local wing_id = 0
|
|
local pet_weapon_id = 0
|
|
local pet_farmour = 0
|
|
-------------------------
|
|
for k,v in pairs(self.foster_skin_list) do
|
|
if v.type_id == FosterConst.ModuleId.FWeapon then
|
|
--武器的珍宝需要手动折算2次成资源名
|
|
v.skin_id = ShapeModel:GetModelRes( v.type_id, v.sub_id, v.star )
|
|
if v.skin_id > 0 then
|
|
v.skin_id = GameResPath:GetFWeaponResName( self.career,v.skin_id)
|
|
end
|
|
else
|
|
v.skin_id = ShapeModel:GetModelRes( v.type_id, v.sub_id, v.star )
|
|
end
|
|
end
|
|
-------------------------
|
|
|
|
local function get_foster_skin( type_id )
|
|
for k,v in pairs(self.foster_skin_list) do
|
|
if v.type_id == type_id and v.skin_id > 0 then
|
|
return v.skin_id
|
|
end
|
|
end
|
|
for k,v in pairs(self.foster_sub_skin_list) do
|
|
if v.type_id == type_id and v.skin_id > 0 then
|
|
return v.skin_id
|
|
end
|
|
end
|
|
end
|
|
|
|
for k,v in pairs(roleVo.foster_list) do
|
|
if v.type_id == FosterConst.ModuleId.FPearl then
|
|
sprite_res_id = get_foster_skin(v.type_id) or FosterModel:GetInstance():GetModuleResIdByStage(v.type_id,v.stage_id)
|
|
elseif v.type_id == FosterConst.ModuleId.FJarvis then
|
|
pet_res_id = get_foster_skin(v.type_id) or FosterModel:GetInstance():GetModuleResIdByStage(v.type_id,v.stage_id)
|
|
elseif v.type_id == FosterConst.ModuleId.FCloud then
|
|
pet_wing_id = get_foster_skin(v.type_id) or FosterModel:GetInstance():GetModuleResIdByStage(v.type_id,v.stage_id)
|
|
elseif v.type_id == FosterConst.ModuleId.FHorse then
|
|
horse_id = get_foster_skin(v.type_id) or FosterModel:GetInstance():GetModuleResIdByStage(v.type_id,v.stage_id)
|
|
elseif v.type_id == FosterConst.ModuleId.FWing then
|
|
wing_id = get_foster_skin(v.type_id) or FosterModel:GetInstance():GetModuleResIdByStage(v.type_id,v.stage_id)
|
|
elseif v.type_id == FosterConst.ModuleId.FGun then
|
|
pet_weapon_id = get_foster_skin(v.type_id) or FosterModel:GetInstance():GetModuleResIdByStage(v.type_id,v.stage_id)
|
|
elseif v.type_id == FosterConst.ModuleId.FArmour then
|
|
pet_farmour = get_foster_skin(v.type_id) or FosterModel:GetInstance():GetModuleResIdByStage(v.type_id,v.stage_id)
|
|
end
|
|
end
|
|
self:ChangeVar("sprite_id",sprite_res_id)
|
|
self:ChangeVar("pet_id",pet_res_id)
|
|
self:ChangeVar("pet_wing_id",pet_wing_id)
|
|
self:ChangeVar("horse_id",horse_id)
|
|
self:ChangeVar("wing_id",wing_id)
|
|
self:ChangeVar("pet_weapon_id",pet_weapon_id)
|
|
self:ChangeVar("pet_farmour",pet_farmour)
|
|
--进阶部分
|
|
-------------------------
|
|
local role = Scene.Instance:GetRole(RoleManager.Instance.mainRoleInfo.role_id)
|
|
if role then
|
|
role:ChangeWeapon( )
|
|
end
|
|
end
|
|
|
|
function MainRoleVo:getAttackRange()
|
|
local rangerX = 0
|
|
local rangerY = 0
|
|
if self.career==2 then--如果是逍遥,写死攻击距离
|
|
rangerX=5
|
|
rangerY=7
|
|
else
|
|
rangerX=2
|
|
rangerY=2
|
|
end
|
|
return rangerX, rangerY
|
|
end
|
|
|
|
function MainRoleVo:ReadFrom13013()
|
|
local fullBodyLen = UserMsgAdapter_ReadFmt("h")
|
|
local fullBodyRewardList = {}
|
|
|
|
local fullBodyVo = nil
|
|
for i = 1, fullBodyLen do
|
|
fullBodyVo = {}
|
|
fullBodyVo.type = UserMsgAdapter_ReadFmt("c")
|
|
fullBodyVo.level = UserMsgAdapter_ReadFmt("i")
|
|
fullBodyVo.currNum = UserMsgAdapter_ReadFmt("i")
|
|
fullBodyVo.nextNum = UserMsgAdapter_ReadFmt("i")
|
|
fullBodyRewardList[fullBodyVo.type] = fullBodyVo
|
|
end
|
|
|
|
self.fullBodyRewardList={}
|
|
self:ChangeVar("fullBodyRewardList",fullBodyRewardList)
|
|
end
|
|
|
|
--[[
|
|
int:32 社团声望
|
|
int:32 魅力声望
|
|
int:32 竞技场积分
|
|
int:32 塔防副本积分
|
|
]]
|
|
function MainRoleVo:ReadFrom13014()
|
|
local gangPrestige=UserMsgAdapter_ReadFmt("i")
|
|
local charm=UserMsgAdapter_ReadFmt("i")
|
|
local fightSc=UserMsgAdapter_ReadFmt("i")
|
|
local td_integral=UserMsgAdapter_ReadFmt("i")
|
|
|
|
self:ChangeVar("gangPrestige",gangPrestige)
|
|
self:ChangeVar("charm",charm)
|
|
self:ChangeVar("fightSc",fightSc)
|
|
self:ChangeVar("td_integral",td_integral)
|
|
end
|
|
|
|
-- 战力改变
|
|
function MainRoleVo:changePower()
|
|
local changeFight = self.fighting - self.old_fighting
|
|
if self.firstChange==true then
|
|
GlobalEventSystem:Fire(EventName.CHANGEATT_POWER, changeFight)
|
|
end
|
|
self.firstChange=true
|
|
|
|
self.old_fighting = self.fighting
|
|
end
|
|
|
|
|
|
function MainRoleVo:GetTotalJin()
|
|
return self.jin + self.jinLock
|
|
end
|
|
|
|
function MainRoleVo:GetRealJin()
|
|
return self.jin
|
|
end
|
|
|
|
--玩家信息本人更改
|
|
function MainRoleVo:ReadFrom13015()
|
|
local len = UserMsgAdapter_ReadFmt("h")
|
|
for i=1,len do
|
|
local type_id = UserMsgAdapter_ReadFmt("c")
|
|
local value = UserMsgAdapter_ReadFmt("s")
|
|
--类型(1羁绊佩戴)
|
|
if type_id == 1 then
|
|
self:ChangeVar("mate_title_role_id", value) --使用的羁绊称号角色id
|
|
end
|
|
end
|
|
end
|
|
|
|
function MainRoleVo:GetGodID( )
|
|
return self.god_id or 0
|
|
end
|
|
|
|
--是否正在神灵附身状态
|
|
function MainRoleVo:IsGodState( )
|
|
return self.god_id and self.god_id ~= 0
|
|
end
|