源战役客户端
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 

390 rindas
13 KiB

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