--[[ 服务器下发的角色信息结构体 ]] 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