| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306 |
- local UserData = class("UserData", require("DataBase"))
- local ProtocalDataNormal = require("ProtocalDataNormal")
- local LuaToCSData = require("LuaToCSData")
- local SkillData = require("SkillData")
- local petStampRPItems
- local baseAttrs
- local lastEquipAttrs
- local lastCardAttrs
- local lastFashionAttrs
- local lastTeamEquipAttrs
- local lastTeamCardAttrs
- local lastPointAttrs
- local lastBaseAttrs
- local lastSkillAttrs
- local lastPetAttrs
- local lastHeadFrameAttrs
- local lastKeepSakeAttrs
- local lastTotalAttrs
- local attrsChanged = false
- local AttrFilterList
- function UserData:ctor()
- self.data = {}
- self.initedOver = false
- end
- function UserData:InitRoleBaseData(roleBase)
- local baseAttr = SInt.Convert(GlobalConfig.Instance:GetConfigIntValue(GlobalConfig.c_base_attr_id))
- baseAttrs = {[Enum.HeroAttrType.STR] = baseAttr, [Enum.HeroAttrType.AGI] = baseAttr, [Enum.HeroAttrType.INT] = baseAttr,
- [Enum.HeroAttrType.DEX] = baseAttr, [Enum.HeroAttrType.VIT] = baseAttr, [Enum.HeroAttrType.LUK] = baseAttr}
- local oldUid
- if self.data.roleBase == nil then
- self.data.roleBase = {}
- else
- oldUid = self.data.roleBase.uid
- end
- self.data.roleBase.uid = roleBase.id
- self.data.roleBase.nickname = roleBase.nick_name
- self.data.roleBase.desc = roleBase.desc
- --self.data.roleBase.headPortraitId = roleBase.head_id
- self.data.roleBase.coin = roleBase.coin
- self.data.roleBase.diamond = roleBase.rmb
- self.data.roleBase.sex = roleBase.sex
- self.data.roleBase.country = roleBase.country
- self.data.roleBase.guideId = roleBase.guide_id
- self.data.roleBase.vipLv = roleBase.vip_level
- self.data.roleBase.questionReward = roleBase.question_reward
- self.data.roleBase.RepressSkillPvpVal = roleBase.repress_skill_pvp_val
- LogError("===========uid======"..tostring(self.data.roleBase.uid))
- ManagerContainer.DataMgr.HeadFrameDataMgr:InitData(roleBase.head_Info)
- self:InitRoleRes(roleBase.res_list)
- self:InitAdditionalRoleData(roleBase.role_data)
- self:InitViewData(roleBase.fashion_data)
- if oldUid ~= self.data.roleBase.uid then
- ManagerContainer.DataMgr.ForceGuideData:InitForceGuideData(roleBase.cguide)
- end
- end
- function UserData:InitRoleRes(resList)
- local resMap = {}
- local res = nil
- for i = 1, #resList do
- res = resList[i]
- resMap[res.key] = res.value
- end
- self.data.roleBase.resMap = resMap
- for k,v in pairs(self.data.roleBase.resMap) do
- self:NewResRefreshRP(k)
- end
- end
- function UserData:NewResRefreshRP(cfgId)
- if not petStampRPItems then
- local val = GlobalConfig.Instance:GetConfigStrValue(321)
- if val ~= "" and val ~= nil then
- petStampRPItems = CommonUtil.DeserializeGlobalStrToTable(val)
- end
- end
- if CommonUtil.EleInTable(tostring(cfgId), petStampRPItems) then
- ManagerContainer.RedPointMgr.PetRPCtr:RefreshPetStampRPState()
- end
- end
- function UserData:GetUserId()
- if self.data.roleBase == nil then
- return 0
- end
- return self.data.roleBase.uid
- end
- function UserData:GetOriUserNickname()
- return self.data.roleBase.nickname
- end
- function UserData:GetQuestionRewardState()
- return self.data.roleBase.questionReward > 0
- end
- function UserData:GetUserNickname()
- local nickName = self.data.roleBase.nickname
- return CommonUtil.GetVaildNickName(nickName)
- end
- function UserData:GetGuideId()
- if self.data.roleBase == nil then
- return 0
- end
- return self.data.roleBase.guideId
- end
- function UserData:GetUserHeadIcon()
- local actor = ManagerContainer.LuaActorDataMgr:GetActorData(true,0)
- if actor ~= nil then
- return actor.HeadIcon
- end
- return nil
- end
- --- 获得性别 Enum.SexType
- ---@return integer
- function UserData:GetSex()
- return self.data.roleBase.sex
- end
- function UserData:GetUserRoleId()
- return self.data.roleBase and self.data.roleBase.roleCfgId or 0
- end
- function UserData:GetRoleDataAttrPoints()
- return self.data.roleBase.roleData.heroData.attrPoint
- end
- --- 获得玩家其他资源列表(不放背包的资源)
- --- itemCfg的id
- function UserData:GetResById(id)
- return self.data.roleBase.resMap[id] or 0
- end
- function UserData:GetHeroExp()
- return self.data.roleBase.roleData.heroExp
- end
- function UserData:GetJobCfgId()
- return self.data.roleBase.roleData.heroData.configId
- end
- function UserData:GetJobLv()
- return self.data.roleBase.roleData.jobLevel
- end
- function UserData:GetRoleExp()
- return self.data.roleBase.roleData.baseExp
- end
- function UserData:GetRoleLv()
- return self.data.roleBase.roleData.heroData.baseLevel
- end
- function UserData:GetCruise()
- return self.data.roleBase.roleData.cruise
- end
- function UserData:GetMaxCruise()
- return self.data.roleBase.roleData.max_cruise
- end
- function UserData:GetOwnCoin()
- return self.data.roleBase.coin
- end
- function UserData:GetOwnDiamond()
- return self.data.roleBase.diamond
- end
- function UserData:GetEvilExp()
- return self:GetResById(Enum.ItemType.EvilExp) or 0
- end
- function UserData:GetSkillResetCount()
- return self.data.roleBase.roleData.skillResetCount or -1
- end
- function UserData:GetHeadFrameId()
- return self.data.roleBase.roleData.headFrameId or -1;
- end
- --设置正在使用的头像框的id
- function UserData:SetHeadFrameId(_id)
- local _newId = _id or 0;
- self.data.roleBase.roleData.headFrameId = _newId;
- local actor = ManagerContainer.LuaActorDataMgr:GetActorData(true,0)
- if actor ~= nil then
- actor.HeadFrameId = self.data.roleBase.roleData.headFrameId
- end
- local frameData = ManagerContainer.DataMgr.HeadFrameDataMgr:GetHeadFrameById(_newId)
- if frameData ~= nil then
- frameData:SetFrameState(Enum.HeadFrameState.Using)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Used_New_HeadFrame,frameData.icon)
- end
- end
- --获取不同的货币,包括银币,钻石,将来还有可能有各种积分
- function UserData:GetMoneyBuType(_type)
- if _type == Enum.ItemType.Coin then --银币
- return self:GetOwnCoin() or 0, I18N.T("Silver"), ManagerContainer.CfgMgr:GetItemById(Enum.ItemType.Coin).Icon;
- elseif _type == Enum.ItemType.Diamond then --钻石
- return self:GetOwnDiamond() or 0, I18N.T("GoldCoin"), ManagerContainer.CfgMgr:GetItemById(Enum.ItemType.Diamond).Icon;
- elseif _type == Enum.ItemType.HeroSpirit then --英灵币
- return self:GetResById(Enum.ItemType.HeroSpirit) or 0, I18N.T("ValhallaCoin"), ManagerContainer.CfgMgr:GetItemById(Enum.ItemType.HeroSpirit).Icon;
- else
- error("暂时没有记录这种类型,请确认" .. tostring(_type));
- return 0;
- end
- end
- function UserData:GetJobExp()
- return self.data.roleBase.roleData.jobExp
- end
- function UserData:GetJobPoint()
- return self.data.roleBase.jobPoint
- end
- function UserData:GetJobType()
- return self.data.roleBase.roleData.jobType
- end
- function UserData:GetJobBranch()
- return self.data.roleBase.roleData.jobBranch
- end
- function UserData:GetJobStage()
- return self.data.roleBase.roleData.jobStage
- end
- function UserData:GetJobMaxLevel()
- return self.data.roleBase.roleData.maxJoBLevel
- end
- function UserData:GetJobIcon()
- return self.data.roleBase.roleData.jobIcon
- end
- function UserData:GetHeroDataAttr(id)
- return SDataUtil.InvConvert(self.data.roleBase.roleData.heroData.attrs[id] or 0)
- end
- function UserData:GetAllAttrs()
- return self.data.roleBase.roleData.heroData.attrs
- end
- function UserData:GetId()
- return self.data.roleBase.roleData.heroData.id
- end
- function UserData:GetVipExp()
- return self:GetResById(Enum.ItemType.VipExp)
- end
- function UserData:GetVipLv()
- return self.data.roleBase.vipLv
- end
- --- 角色显示用数据,包含创建角色和装备的时装数据
- function UserData:GetViewData()
- return self.data.roleBase.viewData
- end
- function UserData:InitAdditionalRoleData(roleData)
- if self.data.roleBase.roleData == nil then
- self.data.roleBase.roleData = {}
- end
- --self.data.roleBase.roleData.attrList = roleData.attr_list
- --for _,v in pairs(self.data.roleBase.roleData.attrList) do
- -- v.value = SInt.Convert(v.value)
- --end
- self.data.roleBase.roleData.baseExp = roleData.base_exp
- --self.data.roleBase.roleData.baseLevel = roleData.base_level
- --self.data.roleBase.roleData.attrPoint = SInt.Convert(roleData.attr_point)
- self.data.roleBase.roleData.jobLevel = roleData.job_level
- self.data.roleBase.roleData.jobExp = roleData.job_exp
- self.data.roleBase.roleData.jobPoint = roleData.job_point
- self.data.roleBase.roleData.heroExp = roleData.hero_exp
- self.data.roleBase.roleData.maxFightPower = SInt.Convert(roleData.fight_power)
- self.data.roleBase.roleData.lastLogoutTime = roleData.last_login_time
- --self.data.roleBase.roleData.skillData = roleData.skill_data
- --self.data.roleBase.roleData.slot = roleData.slot
- self.data.roleBase.roleData.cruise = roleData.cruise
- self.data.roleBase.roleData.max_cruise = roleData.max_cruise
- self.data.roleBase.roleData.skillResetCount = roleData.skill_reset_count
- self:InitHeadPortrait(roleData.head_id)
- self:InitHeroData(roleData.hero_data)
- self:SetHeadFrameId(roleData.head_frame_id)
- end
- function UserData:InitHeadPortrait(headId)
- self.data.roleBase.roleData.headPortraitId = headId
- local headPortraitCfgData = ManagerContainer.CfgMgr:GetHeadPortraitDataById(self.data.roleBase.roleData.headPortraitId)
- self.data.roleBase.roleData.headPortraitName = (headPortraitCfgData and headPortraitCfgData.HeadPortraitPic or '')
- end
- function UserData:InitHeroData(heroData)
- --LogHRWarning(Inspect(heroData))
- if self.data.roleBase.roleData.heroData == nil then
- self.data.roleBase.roleData.heroData = {}
- end
- local heroData1 = self.data.roleBase.roleData.heroData
- heroData1.id = heroData.id
- heroData1.configId = heroData.config_id
- heroData1.avatar = heroData.avatar
- heroData1.isBattle = heroData.is_battle
- heroData1.baseLevel = heroData.base_level
- heroData1.slot = heroData.slot
- if heroData1.attrs == nil then
- heroData1.attrs = CommonUtil.TableClone(baseAttrs)
- end
- self.data.roleBase.roleCfgId = CommonUtil.JobIdToRoleId(heroData1.configId, self.data.roleBase.sex)
- heroData1.isMainRole = true
- heroData1.isRole = true
- heroData1.strengthLevel = 100
- if heroData1.treasureFree == nil then
- heroData1.treasureFree = 1
- end
- heroData1.attrList = heroData.attr_list
- for _,v in pairs(heroData1.attrList) do
- v.value = SInt.Convert(v.value)
- end
- heroData1.attrPoint = SInt.Convert(heroData.attr_point)
- heroData1.qualityList ={}
- if heroData.quality_list and #heroData.quality_list > 0 then
- for k, v in pairs(heroData.quality_list) do
- heroData1.qualityList[v.key] = v.value
- end
- end
- heroData1.battlePetId = heroData.battle_pet_id
- --神器
- heroData1.skillEquipSlot = ProtocalDataNormal.ParseSkillEquipSlotData(heroData1.skillEquipSlot, heroData.skill_equip_slot)
- --宠物契约
- heroData1.petQiyueData = ProtocalDataNormal.ParsePetQiyueData(heroData1.petQiyueData, heroData.pet_qiyue_data)
-
- -- ManagerContainer.DataMgr.SkillsData:InitSkillsData(heroData.skill)
- self:InitSkillData(heroData.skill)
- self:InitJobData(heroData.config_id)
- self:UpdateHeroExtGoShowData(heroData1)
- end
- function UserData:InitSkillData(skill)
- local skillData = self.data.roleBase.roleData.heroData.skillData
- if not skillData then
- skillData = SkillData:new()
- self.data.roleBase.roleData.heroData.skillData = skillData
- end
- skillData:InitData(skill)
- end
- function UserData:InitJobData(jobId)
- local jobCfg = ManagerContainer.CfgMgr:GetJobDataById(jobId);
- if self.data.roleBase.roleData.jobType ~= jobCfg.JobType or self.data.roleBase.roleData.jobStage ~= jobCfg.JobStage then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.USER_HEADPROTRAIT_CHANGED)
- end
-
- self.data.roleBase.roleData.jobName = I18N.T(jobCfg.JobName)
- self.data.roleBase.roleData.jobType = jobCfg.JobType
- self.data.roleBase.roleData.jobBranch = jobCfg.JobBranch
- self.data.roleBase.roleData.jobStage = jobCfg.JobStage
- self.data.roleBase.roleData.jobIcon = jobCfg.JobIcon
- self.data.roleBase.roleData.maxJoBLevel = jobCfg.MaxJobLv
- end
- function UserData:RefreshAddPointAttr()
- if lastPointAttrs == nil then lastPointAttrs = {} end
- if lastBaseAttrs == nil then lastBaseAttrs = {} end
- local heroData = ManagerContainer.LuaActorDataMgr:GetHeroActorData(self:GetUserRoleId())
- for _,v in pairs(Enum.HeroAttrType) do
- if v <= Enum.HeroAttrType.LUK then
- local delta = self:GetPointAttr(v)
- if lastPointAttrs ~= nil and lastPointAttrs[v] ~= nil then
- -- delta = self:GetPointAttr(v) - lastPointAttrs[v]
- delta = SDataUtil.Sub(self:GetPointAttr(v), lastPointAttrs[v])
- end
- heroData:SetBaseFirstAttr(v, SDataUtil.Add(heroData:GetBaseFirstAttr(v),delta))
- lastPointAttrs[v] = self:GetPointAttr(v)
- lastBaseAttrs[v] = heroData:GetBaseFirstAttr(v)
- end
- end
- local heroLogicData = self:GetHeroData()
- for _,v in pairs(Enum.HeroAttrType) do
- heroLogicData.attrs[v] = heroData:GetFinalAttr(v)
- end
- end
- function UserData:GetLastBaseAttrs()
- return lastBaseAttrs
- end
- function UserData:InitViewData(viewData)
- self.data.roleBase.viewData = ProtocalDataNormal.FashionDataToViewData(viewData)
- end
- function UserData:UpdateHeroExtGoShowData(heroData)
- CommonUtil.UpdateHeroExtGoShowData(heroData)
- end
- --- 更新穿上的时装
- function UserData:UpdateFashionUpData(fashionUpData)
- self.data.roleBase.viewData.fashionData = ProtocalDataNormal.FashionUpDataToData(fashionUpData)
- self:InitHeroAttrFromBattle()
- self:SyncFashionToActorData()
- AvatarRTMgr.Instance:RemoveActor(1)
- end
- function UserData:GetPlayerActorParam()
- local heroData = ManagerContainer.LuaActorDataMgr:GetHeroActorData(self:GetUserRoleId())
- return heroData;
- end
- function UserData:SyncFashionToActorData()
- local heroData = ManagerContainer.LuaActorDataMgr:GetHeroActorData(self:GetUserRoleId())
- if self.data.roleBase.viewData == nil or heroData == nil then
- return
- end
- local fashionParam = LuaToCSData.CreateFashionParamData(self.data.roleBase.roleCfgId, self.data.roleBase.roleData.heroData.configId, self.data.roleBase.viewData)
- heroData:SetFashionData(fashionParam)
- end
- function UserData:GetHeroData(heroId)
- if not heroId or self:IsLeaderHero(heroId) then
- return self.data.roleBase.roleData.heroData
- else
- return ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(heroId)
- end
- end
- function UserData:GetMainRoleData()
- return self.data.roleBase.roleData.heroData
- end
- function UserData:GetAllSlotInfos()
- local allSlots = {}
- local heroSlot = self.data.roleBase.roleData.heroData.slot
- allSlots[heroSlot.hero_id] = heroSlot
- local slots = ManagerContainer.DataMgr.PartnerData:GetAllPartnerSlots()
- for k,v in pairs(slots) do
- allSlots[k] = v
- end
- return allSlots
- end
- function UserData:GetSlotInfoById(id)
- if id == 1 then
- local heroSlot = self.data.roleBase.roleData.heroData.slot
- return heroSlot
- else
- local partnerData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(id)
- if not partnerData then
- return nil
- end
- return partnerData.slot
- end
- end
- function UserData:GetCurSlotInfos(id)
- --self:GetAllSlotInfos()
- local slot = self:GetSlotInfoById(id)
- if slot == nil then
- return nil
- end
- return slot.slot_list
- end
- function UserData:GetSlotIndexByHeroId(id)
- return id
- end
- function UserData:GetSlotInfosByHeroId(id)
- local slot = self:GetSlotInfoById(id)
- if slot then
- return slot.slot_list
- end
- return nil
- end
- function UserData:GetSlotBySlotIndex(slotIndex)
- return self:GetSlotInfoById(slotIndex)
- end
- function UserData:GetPointAttr(type)
- for _,v in pairs(self.data.roleBase.roleData.heroData.attrList) do
- if v.key == type then
- return v.value
- end
- end
- return 0
- end
- function UserData:CalcEquipAttrs()
- local heroData = ManagerContainer.LuaActorDataMgr:GetHeroActorData(self:GetUserRoleId())
- local slots = self:GetCurSlotInfos(1)
- local heroLogicData = self:GetHeroData()
- local equipTotalAttrs = self:GetSlotsEquipAttr(slots)
- for _,v in pairs(Enum.HeroAttrType) do
- if v <= Enum.HeroAttrType.RealHurt then
- local eAttr = heroData:GetAdditionalAttr(v)
- local lastAttr = (lastEquipAttrs == nil and 0 or lastEquipAttrs[v])
- heroData:SetAdditionalAttr(v, SDataUtil.Sub(SDataUtil.Add(eAttr,equipTotalAttrs[v]),lastAttr))
- elseif v >= Enum.HeroAttrType.STR_Percent then
- local eAttrPercent = heroData:GetAdditionalAttrPercent(v)
- local lastAttr = (lastEquipAttrs == nil and 0 or lastEquipAttrs[v])
- heroData:SetAdditionalAttrPercent(v, SDataUtil.Sub(SDataUtil.Add(eAttrPercent,equipTotalAttrs[v]),lastAttr))
- end
- end
- for _,v in pairs(Enum.HeroAttrType) do
- heroLogicData.attrs[v] = heroData:GetFinalAttr(v)
- end
- --if lastTeamEquipAttrs ~= nil then
- -- for k,v in pairs(lastTeamEquipAttrs) do
- -- if v ~= equipTotalAttrs[k] then
- -- attrsChanged = true
- -- break
- -- end
- -- end
- --end
- lastEquipAttrs = equipTotalAttrs
- end
- function UserData:CalcCardAttrs()
- local heroData = ManagerContainer.LuaActorDataMgr:GetHeroActorData(self:GetUserRoleId())
- local slots = self:GetCurSlotInfos(1)
- local heroLogicData = self:GetHeroData()
- --ManagerContainer.DataMgr.CardData:RefreshEquipedCardSuitData(1)
- local cardTotalAttrs = self:GetSlotsCardAttr(slots)
- local state = ManagerContainer.DataMgr.CardData:GetCardSuitStateById(1)
- if state then
- local lv = ManagerContainer.DataMgr.CardData:GetCardSuitLvById(1)
- if lv > 0 then
- local suitCfgData = ManagerContainer.CfgMgr:GetCardSuitNewCfgById(lv)
- if suitCfgData then
- for i = 1, #suitCfgData.Suit1 do
- local attr = suitCfgData.Suit1[i]
- if attr then
- local attrId = attr[1]
- local attrNum = attr[2]*0.0001
- local mapAttrData = ManagerContainer.CfgMgr:GetFightCfgByAttrId(attrId)
- local newAttrId = mapAttrData.Mapping > 0 and mapAttrData.Mapping or attrId
- if not cardTotalAttrs[newAttrId] then
- cardTotalAttrs[newAttrId] = 0
- end
- if mapAttrData.Mapping > 0 then
- cardTotalAttrs[newAttrId] = cardTotalAttrs[newAttrId] *(1 + attrNum)
- else
- cardTotalAttrs[newAttrId] = cardTotalAttrs[newAttrId] + attrNum
- end
- end
- end
- end
- end
- end
- for _,v in pairs(Enum.HeroAttrType) do
- if cardTotalAttrs[v] ~= nil then
- if v < Enum.HeroAttrType.STR_Percent then
- local eAttr = heroData:GetAdditionalAttr(v)
- local cardAttr = (cardTotalAttrs[v] - (lastCardAttrs == nil and 0 or lastCardAttrs[v]))
- local val = SDataUtil.Add(eAttr,cardAttr);
- heroData:SetAdditionalAttr(v, val)
- else
- local eAttrPercent = heroData:GetAdditionalAttrPercent(v)
- local cardAttr = cardTotalAttrs[v] - (lastCardAttrs == nil and 0 or lastCardAttrs[v])
- local val = SDataUtil.Add(eAttrPercent,cardAttr);
- heroData:SetAdditionalAttrPercent(v, val)
- end
- end
- end
- for _,v in pairs(Enum.HeroAttrType) do
- heroLogicData.attrs[v] = heroData:GetFinalAttr(v)
- end
- --
- --if lastTeamCardAttrs ~= nil then
- -- if not attrsChanged then
- -- for k,v in pairs(lastTeamCardAttrs) do
- -- if v ~= cardTotalAttrs[k] then
- -- attrsChanged = true
- -- break
- -- end
- -- end
- -- end
- --end
- lastCardAttrs = cardTotalAttrs
- end
- function UserData:CalcFashionAttrs()
- local heroData = ManagerContainer.LuaActorDataMgr:GetHeroActorData(self:GetUserRoleId())
- local heroLogicData = self:GetHeroData()
- --local fashionMap = ManagerContainer.DataMgr.FashionData:GetFashionMap()
- --local fashionTotalAttrs = CommonUtil.GetFashionAttrMap(fashionMap)
- local fashionTotalAttrs = ManagerContainer.DataMgr.FashionData:GetFashionAllAttrsByJobType(0)
- local fashionSuitAttrs = ManagerContainer.DataMgr.FashionData:GetFashionSuitAttrs()
- local totalAttrs = {}
- if fashionTotalAttrs then
- for k,v in pairs(fashionTotalAttrs) do
- if not totalAttrs[k] then
- totalAttrs[k] = 0
- end
- totalAttrs[k] = totalAttrs[k] + v
- end
- end
- if fashionSuitAttrs then
- for k,v in pairs(fashionSuitAttrs) do
- if not totalAttrs[k] then
- totalAttrs[k] = 0
- end
- totalAttrs[k] = totalAttrs[k] + v
- end
- end
- local changeNum = 0
- for _,v in pairs(Enum.HeroAttrType) do
- if totalAttrs[v] ~= nil then
- if v < Enum.HeroAttrType.STR_Percent then
- changeNum = (totalAttrs[v] - ((lastFashionAttrs == nil or not lastFashionAttrs[v]) and 0 or lastFashionAttrs[v]))
- if changeNum ~= 0 then
- -- local val = heroData:GetAdditionalAttr(v) + changeNum;
- local val = SDataUtil.Add(heroData:GetAdditionalAttr(v), changeNum)
- heroData:SetAdditionalAttr(v, val)
- attrsChanged = true
- end
- else
- changeNum = (totalAttrs[v] - ((lastFashionAttrs == nil or not lastFashionAttrs[v]) and 0 or lastFashionAttrs[v]))
- if changeNum ~= 0 then
- -- local val = heroData:GetAdditionalAttrPercent(v) + changeNum * 0.0001
- local val = SDataUtil.Add(heroData:GetAdditionalAttrPercent(v), changeNum * 0.0001)
- heroData:SetAdditionalAttrPercent(v, val)
- attrsChanged = true
- end
- end
- end
- end
- for _,v in pairs(Enum.HeroAttrType) do
- heroLogicData.attrs[v] = heroData:GetFinalAttr(v)
- end
- lastFashionAttrs = totalAttrs
- end
- function UserData:CalcSkillAttrs()
- local heroData = ManagerContainer.LuaActorDataMgr:GetHeroActorData(self:GetUserRoleId())
- local heroLogicData = self:GetHeroData()
- local skillData = self:GetSkillData(self:GetId())
- local skillTotalAttrs = skillData and skillData:GetUnlockSkillAttrs() or {}
- local attrValue = nil
- local changeNum = nil
- local isChanged = false
- for _,v in pairs(Enum.HeroAttrType) do
- attrValue = skillTotalAttrs[v]
- if not attrValue then attrValue = 0 end
- changeNum = attrValue - ((lastSkillAttrs == nil or not lastSkillAttrs[v]) and 0 or lastSkillAttrs[v])
- if changeNum ~= 0 then
- if v < Enum.HeroAttrType.STR_Percent then
- -- local val = heroData:GetAdditionalAttr(v) + changeNum
- local val = SDataUtil.Add(heroData:GetAdditionalAttr(v), changeNum)
- heroData:SetAdditionalAttr(v, val)
- else
- -- local val = heroData:GetAdditionalAttrPercent(v) + changeNum * 0.0001
- local val = SDataUtil.Add(heroData:GetAdditionalAttrPercent(v), changeNum * 0.0001)
- heroData:SetAdditionalAttrPercent(v, val)
- end
- isChanged = true
- end
- end
- for _,v in pairs(Enum.HeroAttrType) do
- heroLogicData.attrs[v] = heroData:GetFinalAttr(v)
- end
- lastSkillAttrs = skillTotalAttrs
- if isChanged then
- attrsChanged = true
- end
- return isChanged
- end
- function UserData:CalcPetAttrs()
- if not AttrFilterList then
- local val = GlobalConfig.Instance:GetConfigStrValue(230)
- if val ~= "" and val ~= nil then
- AttrFilterList = CommonUtil.DeserializeGlobalStrToTable(val)
- end
- end
- if not lastPetAttrs then
- lastPetAttrs = {}
- end
- local heroData = ManagerContainer.LuaActorDataMgr:GetHeroActorData(self:GetUserRoleId())
- local heroLogicData = self:GetHeroData()
- local petId = heroLogicData.battlePetId
- local petData = ManagerContainer.DataMgr.PetDataMgr:GetPetDataById(petId)
- local multiply = 0
- if petData then
- local petCfgData = ManagerContainer.CfgMgr:GetPetDataById(petData.cfgId)
- multiply = petCfgData.ConversionRate*0.0001
- end
- local petActorData = ManagerContainer.DataMgr.PetDataMgr:GetPetActorData(petId)
- for _,v in pairs(Enum.HeroAttrType) do
- if not CommonUtil.EleInTable(tostring(v), AttrFilterList) then
- local petAttr = petActorData and SDataUtil.Multiply(petActorData:GetFinalAttr(v), multiply) or 0
- if v <= Enum.HeroAttrType.RealHurt then
- local eAttr = heroData:GetAdditionalAttr(v)
- local lastAttr = lastPetAttrs[v] or 0
- heroData:SetAdditionalAttr(v, SDataUtil.Sub(SDataUtil.Add(eAttr,petAttr),lastAttr))
- elseif v >= Enum.HeroAttrType.STR_Percent then
- local eAttrPercent = heroData:GetAdditionalAttrPercent(v)
- local lastAttr = lastPetAttrs[v] or 0
- heroData:SetAdditionalAttrPercent(v, SDataUtil.Sub(SDataUtil.Add(eAttrPercent,petAttr),lastAttr))
- end
- lastPetAttrs[v] = petAttr
- end
- end
- for _,v in pairs(Enum.HeroAttrType) do
- heroLogicData.attrs[v] = heroData:GetFinalAttr(v)
- end
- end
- function UserData:CalcHeadFrameAttrs()
- local heroData = ManagerContainer.LuaActorDataMgr:GetHeroActorData(self:GetUserRoleId())
- local heroLogicData = self:GetHeroData()
- local headFrameAttrs = ManagerContainer.DataMgr.HeadFrameDataMgr:CalcAttrs()
- for _,v in pairs(Enum.HeroAttrType) do
- if v <= Enum.HeroAttrType.RealHurt then
- local eAttr = heroData:GetAdditionalAttr(v)
- local lastAttr = (lastHeadFrameAttrs == nil and 0 or lastHeadFrameAttrs[v])
- heroData:SetAdditionalAttr(v, SDataUtil.Sub(SDataUtil.Add(eAttr,headFrameAttrs[v]),lastAttr))
- elseif v >= Enum.HeroAttrType.STR_Percent then
- local eAttrPercent = heroData:GetAdditionalAttrPercent(v)
- local lastAttr = (lastHeadFrameAttrs == nil and 0 or lastHeadFrameAttrs[v])
- heroData:SetAdditionalAttrPercent(v, SDataUtil.Sub(SDataUtil.Add(eAttrPercent,headFrameAttrs[v]),lastAttr))
- end
- end
- for _,v in pairs(Enum.HeroAttrType) do
- heroLogicData.attrs[v] = heroData:GetFinalAttr(v)
- end
- lastHeadFrameAttrs = headFrameAttrs
- end
- function UserData:CalcKeepSakeAttrs()
- local heroData = ManagerContainer.LuaActorDataMgr:GetHeroActorData(self:GetUserRoleId())
- local keepsakeMaps = ManagerContainer.DataMgr.KeepSakeBookData:GetKeepSakeMaps()
- local heroLogicData = self:GetHeroData()
- local addAttrs = {}
- for k,v in pairs(keepsakeMaps) do
- local cfgData = ManagerContainer.CfgMgr:GetKeepSakeCfgDataById(k)
- if cfgData and CommonUtil.EleInTable(0, cfgData.Job) then
- local attrs = cfgData["AddAttrLevel"..v]
- if attrs then
- for i = 1,#attrs do
- local attrId = attrs[i][1]
- local val1 = attrs[i][2]
- if not addAttrs[attrId] then
- addAttrs[attrId] = 0
- end
- addAttrs[attrId] = addAttrs[attrId] + (attrId > 21 and val1*0.0001 or val1)
- end
- end
- end
- end
- for k,v in pairs(addAttrs) do
- if k <= Enum.HeroAttrType.RealHurt then
- local eAttr = heroData:GetAdditionalAttr(k)
- local lastAttr = (lastKeepSakeAttrs == nil and 0 or (lastKeepSakeAttrs[k] or 0))
- heroData:SetAdditionalAttr(k, SDataUtil.Sub(SDataUtil.Add(eAttr,v),lastAttr))
- elseif k >= Enum.HeroAttrType.STR_Percent then
- local eAttrPercent = heroData:GetAdditionalAttrPercent(k)
- local lastAttr = (lastKeepSakeAttrs == nil and 0 or (lastKeepSakeAttrs[k] or 0))
- heroData:SetAdditionalAttrPercent(k, SDataUtil.Sub(SDataUtil.Add(eAttrPercent,v),lastAttr))
- end
- end
- for k,v in pairs(Enum.HeroAttrType) do
- heroLogicData.attrs[v] = heroData:GetFinalAttr(v)
- end
- lastKeepSakeAttrs = addAttrs
- end
- function UserData:AddKeepSakeLvUpAttrs(keepsakeId, lv)
- local heroData = ManagerContainer.LuaActorDataMgr:GetHeroActorData(self:GetUserRoleId())
- if not lv then return end
- local heroLogicData = self:GetHeroData()
- local addAttrs = {}
- local cfgData = ManagerContainer.CfgMgr:GetKeepSakeCfgDataById(keepsakeId)
- if cfgData and CommonUtil.EleInTable(0, cfgData.Job) then
- local attrs = cfgData["AddAttrLevel"..lv]
- if attrs then
- for i = 1,#attrs do
- local attrId = attrs[i][1]
- local val1 = attrs[i][2]
- if not addAttrs[attrId] then
- addAttrs[attrId] = 0
- end
- addAttrs[attrId] = addAttrs[attrId] + (attrId > 21 and val1*0.0001 or val1)
- end
- end
- if lv > 1 then
- attrs = cfgData["AddAttrLevel"..(lv - 1)]
- if attrs then
- for i = 1,#attrs do
- local attrId = attrs[i][1]
- local val1 = attrs[i][2]
- if not addAttrs[attrId] then
- addAttrs[attrId] = 0
- end
- addAttrs[attrId] = addAttrs[attrId] - (attrId > 21 and val1*0.0001 or val1)
- end
- end
- end
- end
- for k,v in pairs(addAttrs) do
- if k <= Enum.HeroAttrType.RealHurt then
- local eAttr = heroData:GetAdditionalAttr(k)
- lastKeepSakeAttrs[k] = (lastKeepSakeAttrs[k] or 0) + v
- heroData:SetAdditionalAttr(k, SDataUtil.Add(eAttr,v))
- elseif k >= Enum.HeroAttrType.STR_Percent then
- local eAttrPercent = heroData:GetAdditionalAttrPercent(k)
- lastKeepSakeAttrs[k] = (lastKeepSakeAttrs[k] or 0) + v
- heroData:SetAdditionalAttrPercent(k, SDataUtil.Add(eAttrPercent,v))
- end
- end
- for k,v in pairs(addAttrs) do
- heroLogicData.attrs[k] = heroData:GetFinalAttr(k)
- end
- end
- function UserData:InitHeroAttrFromBattle()
- attrsChanged = false
- lastTotalAttrs = CommonUtil.TableClone(self.data.roleBase.roleData.heroData.attrs)
- self:CalcEquipAttrs()
- self:CalcCardAttrs()
- self:CalcFashionAttrs()
- self:CalcSkillAttrs()
- self:CalcPetAttrs()
- self:CalcHeadFrameAttrs()
- self:CalcKeepSakeAttrs()
- -- LogError(Inspect(self:GetHeroData()))
- end
- function UserData:GetNewActorAttrs()
- local heroData = ManagerContainer.LuaActorDataMgr:GetHeroActorData(self:GetUserRoleId())
- local heroLogicData = self:GetHeroData()
- for _,v in pairs(Enum.HeroAttrType) do
- heroLogicData.attrs[v] = heroData:GetFinalAttr(v)
- end
- end
- function UserData:SaveLastTotalAttr()
- lastTotalAttrs = CommonUtil.TableClone(self.data.roleBase.roleData.heroData.attrs)
- end
- function UserData:GetLastTotalAtttrs()
- return lastTotalAttrs
- end
- function UserData:RefreshSlotData(data)
- --self:GetAllSlotInfos()
- local function IsSlotEquipChanged(oldSlotList, newSlotList)
- if oldSlotList and newSlotList then
- for i = 1, 6 do
- local oldCards = oldSlotList[i]
- local newCards = newSlotList[i]
- if not oldCards then
- oldCards = {}
- oldCards.card_id_list = {}
- end
- if oldCards and newCards then
- if oldCards.equip_id ~= newCards.equip_id then
- return true
- end
- for j = 1, 4 do
- if oldCards.card_id_list[j] ~= newCards.card_id_list[j] then
- return true
- end
- end
- end
- end
- end
- return false
- end
- local isIn = false
- local heroData = CommonUtil.GetHeroLogicDataByUid(data.hero_id)
- if heroData.slot then
- isIn = true
- local changed = IsSlotEquipChanged(heroData.slot.slot_list, data.slot_list)
- heroData.slot = data
- if changed then
- ManagerContainer.RedPointMgr.HeroRPCtr:RefreshRoleCardRP()
- end
- return
- end
- if not isIn then
- heroData.slot = data
- end
- end
- function UserData:IsHeroSlot(hero_id)
- return hero_id == 1
- end
- function UserData:RefreshHeroesTreasureState(heroIds, isFree)
- for _,v in pairs(heroIds) do
- if v == 1 then
- local heroData = self:GetHeroData()
- heroData.treasureFree = isFree and 1 or 0
- else
- ManagerContainer.DataMgr.PartnerData:RefreshPartnerTreasureState(v, isFree)
- end
- end
- end
- function UserData:RefreshHeroCurMaxExp()
- local curRoleLv = self:GetRoleLv()
- local baseExpData = ManagerContainer.CfgMgr:GetRoleExpData(curRoleLv)
- self.data.roleBase.roleData.baseCurMaxExp = baseExpData.Name
- local curJobLv = self:GetJobLv()
- local curMaxJobExp = ManagerContainer.CfgMgr:GetCurMaxJobExpByLvAndStep(curJobLv, self:GetJobStage())
- self.data.roleBase.roleData.jobCurMaxExp = curMaxJobExp
- end
- function UserData:GetHeroCurBaseMaxExp()
- return self.data.roleBase.roleData.baseCurMaxExp
- end
- function UserData:GetHeroCurJobMaxExp()
- return self.data.roleBase.roleData.jobCurMaxExp
- end
- function UserData:InitRoleFightPower(data, _getHeroData)
- self.data.roleBase.roleData.totalFightPower = SInt.Convert(data.total_fightpower or 0)
- for _,v in pairs(data.slot_fightpower) do
- if v ~= nil then
- local heroData;
- if _getHeroData then --查看别的玩家的时候不能用自己本身的数据,这里是传过来的查找函数,不用这个就传nil
- heroData = _getHeroData(v.hero_id);
- else
- heroData = CommonUtil.GetHeroLogicDataByUid(v.hero_id)
- end
- heroData.fightPower = SInt.Convert(v.hero_fight_power or 0)
- heroData.petFightPower = SInt.Convert(v.pet_fight_power or 0)
- self:AddAsideFighterSvrPower(v.hero_id,false,v.hero_fight_power)
- self:AddAsideFighterSvrPower(heroData.battlePetId,true,v.pet_fight_power)
- --LogError("InitRoleFightPower"..tostring(heroData.fightPower).." v.hero_id "..tostring(v.hero_id) )
- end
- end
- self.petRelationFightPower = data.pet_bond_fightpower or 0
- end
- function UserData:GetPetRelationTotalFightPower()
- return self.petRelationFightPower
- end
- function UserData:GetTotalFightPower()
- return SInt.InvConvert(self.data.roleBase.roleData.totalFightPower or 0)
- end
- function UserData:GetMaxTotalFightPower()
- return SDataUtil.InvConvert(self.data.roleBase.roleData.maxFightPower or 0)
- end
- function UserData:GetSlotFightPower(id)
- local heroData = CommonUtil.GetHeroLogicDataByUid(id)
- if heroData == nil then return 0 end
- local totalPower = SDataUtil.InvConvert(heroData.fightPower or 0)
- + SDataUtil.InvConvert(heroData.petFightPower or 0)
- return totalPower
- end
- function UserData:SyncActorBaseLevel()
- local heroData = ManagerContainer.LuaActorDataMgr:GetHeroActorData(self:GetUserRoleId())
- heroData:SetLevel(self.data.roleBase.roleData.heroData.baseLevel)
- end
- function UserData:GetCreateTime()
- return self.createRoleTime
- end
- function UserData:RegisterNetEvents()
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_BASE_LEVEL_UP_NTF, function(data)
- -- 目前所有的角色信息变化都能在,SC_ROLE_BASE_INFO_NTF中获得,所以这里暂不处理
- -- self.data.roleBase.roleData.baseLevel = data.new_level
- -- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.REFRESH_ROLE_LV)
- end)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ADD_QUALITY_POINT_ACK,function (data)
- if data.error == 0 then
- local userName
- local herodata = ManagerContainer.DataMgr.UserData:GetHeroData(data.hero_id)
- if data.hero_id == 1 then
- userName = ManagerContainer.DataMgr.UserData:GetUserNickname()
- else
- local _partnerData = ManagerContainer.CfgMgr:GetPartnerDataById(herodata.configId)
- userName = string.formatbykey(_partnerData.Name)
- end
- local itemdata = ManagerContainer.CfgMgr:GetItemById(data.item_id)
- if itemdata then
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplayWithParam('UseFruit',userName,itemdata['Name'])
- end
- --ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.HERO_ATTR_ADD_SUCCESS)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.FRUIT_USE_SUCC,{data.hero_id,herodata})
- end
- end)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_STARTUP_INFO_NTF, function(data)
- --LogError("start"..Inspect(data))
- --由于该协议会发送多次,所以需要判断数据是否为空===========================================很重要
- Constant.OpenPay = (data.func_disable == nil or not data.func_disable)
- self.createRoleTime = data.create_time
- self.serverStartTime = data.service_start_time
- LogError("serverStartTime = "..Inspect(self.serverStartTime))
- ManagerContainer.LuaTimerMgr:SyncServerTime(data.server_time)
- if data.role_base then
- self:InitRoleBaseData(data.role_base)
- end
- if data.role_hero then
- ManagerContainer.LuaActorAttributeMgr:SetAllData(data.role_hero.battle_attr_list)--新号 属性
- ManagerContainer.DataMgr.PartnerData:InitPartnerData(data.role_hero)
- self:GetAllSlotInfos()
- end
- if data.role_base then
- --同步在线奖励时间
- ManagerContainer.LuaBattleMgr:SyncOnlineTime(data.role_base)
- self:RefreshHeroCurMaxExp()
- ManagerContainer.PayMgr:InitRechargeData(data.role_base)
- ManagerContainer.DataMgr.BTRechargeRewardDataMgr:InitBtTotalRecharge(data.role_base)
- end
- if data.role_bag then
- ManagerContainer.DataMgr.BagData:InitBagData(data.role_bag)
- end
- if data.role_wish_box then
- ManagerContainer.DataMgr.BagData:RefreshWishSlotData(data.role_wish_box)
- end
- if data.role_battle then
- ManagerContainer.LuaBattleMgr:SetBattleData(data.role_battle,true)
- if data.role_battle.evil_info then
- ManagerContainer.DataMgr.EvilData:SetEvilData(data.role_battle.evil_info)
- end
- if data.role_battle.expedition_info then
- ManagerContainer.DataMgr.ExpeditionDataMgr:SetData(data.role_battle.expedition_info)
- end
- ManagerContainer.DataMgr.BattleAccTimeManager:InitData(data.role_battle)
- end
-
- if data.role_fashion then
- ManagerContainer.DataMgr.FashionData:InitFashionData(data.role_fashion)
- end
-
- if data.role_task then
- ManagerContainer.DataMgr.TaskDataNew:InitRoleTask(data.role_task)
- end
-
- if data.role_competition then
- ManagerContainer.DataMgr.CompetitionData:InitCurCompetitionData(data.role_competition)
- ManagerContainer.DataMgr.ChatData:Init()
- end
-
- if data.role_tower then
- ManagerContainer.DataMgr.TowerDataMgr:InitClimbingTowerInfo(data.role_tower)
- end
-
- if data.role_bt then
- ManagerContainer.DataMgr.BoliShopData:RefreshBoliData(data.role_bt.boli_data)
- ManagerContainer.DataMgr.BTRechargeRewardDataMgr:InitData(data.role_bt.base_data)
- end
-
- if data.role_skill_equip then
- ManagerContainer.DataMgr.SkillEquipData:InitData(data.role_skill_equip)
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_HEAD_DATA_REQ)
- end
- if data.role_map then
- ManagerContainer.DataMgr.WorldBossData:ChangeWorldBossCount(data.role_map.world_boss_count)
- end
- if data.role_draw then
- ManagerContainer.DataMgr.SummonDataMgr:InitSummonMap(data.role_draw)
- -- 砸蛋
- ManagerContainer.DataMgr.LuckyEggDataMgr:InitLuckyEggMap(data.role_draw)
- end
- if data.role_daochang100 then
- ManagerContainer.DataMgr.HundredDojoDataMgr:InitData(data.role_daochang100)
- ManagerContainer.DataMgr.TrunWheelDataMgr:OnDataChangeNtf(data.role_daochang100)
- end
- if data.role_cross then
- ManagerContainer.DataMgr.VoyageDataMgr:RefreshSelfVoyageData(data.role_cross.yuanhangtrial)
- end
- if data.role_fightpower then
- self:InitRoleFightPower(data.role_fightpower)
- end
- if data.role_red then
- self:InitRedState(data.role_red)
- end
- end)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_DAO_CHANG100_WHEEL_CHANG_NTF, function(data)
- ManagerContainer.DataMgr.TrunWheelDataMgr:OnDataChangeNtf(data)
- end)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_CONVER_SKILL_EXP_ACK, function(data)
- if data.error == 0 then
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("GetAdvanceSkillExpSucc")
- end
- end)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ROLE_BASE_INFO_NTF, function(data)
- --LogError("==============SC_ROLE_BASE_INFO_NTF=================="..Inspect(data))
- local lastData = clone(self.data)
- self.data.roleBase.coin = data.coin
- self.data.roleBase.diamond = data.rmb
- self.data.roleBase.RepressSkillPvpVal = data.repress_skill_pvp_val
- self:InitRoleRes(data.res_list)
- self:InitAdditionalRoleData(data.role_data)
- --self:InitHeroAttrFromBattle()
- self:RefreshHeroCurMaxExp()
- ManagerContainer.RedPointMgr.HeroRPCtr:RoleRedPointNotify()
- self:CompareDataChange(lastData)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ROLE_UI_REDPOINT_CHANGE)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.REFRESH_COIN_AND_DIAMOND)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.REFRESH_COIN_AND_JOBEXP)
- if lastData.roleBase.roleData.cruise ~= self.data.roleBase.roleData.cruise then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.REFRESH_TREASURE_CRUISE)
- end
- if lastData.roleBase.roleData.heroData.baseLevel ~= self.data.roleBase.roleData.heroData.baseLevel then
- self:SyncActorBaseLevel()
- self:GetNewActorAttrs()
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.REFRESH_HERO_LVUP_ATTR)
- self:SDKUpdateRoleLv()
- end
- if lastData.roleBase.roleData.heroData.battlePetId ~= self.data.roleBase.roleData.heroData.battlePetId then
- self:CalcPetAttrs()
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.REFRESH_HERO_UI)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.MAIN_UI_ROLE_REDPOINT_NOTICE)
- end)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ADD_ATTR_POINT_ACK, function(data)
- if data.error == Enum.NetErrorCode.ERROR_OK then
- if data.hero_id == 1 then
- self:RefreshAddPointAttr()
- ManagerContainer.RedPointMgr.HeroRPCtr:HeroAttrRPNotify()
- else
- ManagerContainer.DataMgr.PartnerData:RefreshAddPointAttr(data.hero_id)
- ManagerContainer.RedPointMgr.HeroRPCtr:PartnerAttrRPNotify(data.hero_id)
- end
- --ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.HERO_ATTR_ADD_SUCCESS)
- end
- end)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_SLOT_DATA_NTF, function(data)
- self:RefreshSlotData(data.slot)
- if self:IsHeroSlot(data.slot.hero_id) then
- self:InitHeroAttrFromBattle()
- ManagerContainer.RedPointMgr.HeroRPCtr:HeroEquipNotify()
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.HERO_EQUIP_REFRESH)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.MAIN_UI_ROLE_REDPOINT_NOTICE)
- else
- ManagerContainer.DataMgr.PartnerData:InitPartnerAttrById(data.slot.hero_id)
- --ManagerContainer.RedPointMgr.HeroRPCtr:PartnerRedPointNotifyById(data.slot.hero_id)
- --ManagerContainer.RedPointMgr.HeroRPCtr:HeroEquipNotify()
- ManagerContainer.RedPointMgr.HeroRPCtr:PartnerEquipNotify()
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.HERO_EQUIP_REFRESH)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.MAIN_UI_ROLE_REDPOINT_NOTICE)
- end
- end)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_EQUIP_SLOT_LEVEL_UP_ACK, function(data)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.SLOT_REFINE_LV_UP_SUCCESS, data.error)
- end)
- -- 名字修改
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_NAME_ACK, self.OnUserNameChanged, self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_RENAME_ACK, self.OnUserNameChanged, self)
- --战力修改
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_FIGHT_POWER_CHAGNE_NTF, function(data)
- --LogError(Inspect(data))
- if not self.data.roleBase then return end
- local IsSaveSidePower = false
- --保存未上阵的处理 英雄战力 宠物战力(服务器约定 不为空 只同步未上阵的 战斗力) 为空走正常战力修改
- if nil ~= data.data.actor_fightpower then
- for _,v in pairs(data.data.actor_fightpower) do
- if v ~= nil then
- local Id = v.hero_id
- local fightPower = v.hero_fight_power or 0
- local petFightPower = v.pet_fight_power or 0
- if fightPower > 0 then
- self:AddAsideFighterSvrPower(Id,false,fightPower)
- end
- if petFightPower > 0 then
- self:AddAsideFighterSvrPower(Id,true,petFightPower)
- end
- IsSaveSidePower = true
- end
- end
- if IsSaveSidePower then
- --LogError("未上阵SAVE")
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.SIDEFIGHTPOWER_REFRESH)
- return
- end
- end
- --上阵的战力修改 保存当前战力 弹窗显示
- --LogError("Save 上阵")
- local lastFightPower = self:GetTotalFightPower()
- self:InitRoleFightPower(data.data)
- local newFightPower = self:GetTotalFightPower()
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.FIGHTPOWER_REFRESH)
- if newFightPower > lastFightPower then
- local data = {startNum = lastFightPower, endNum = newFightPower}
- ManagerContainer.LuaUIMgr:FightPowerAddNotice(data)
- end
- end)
- --寻宝NTF
- -- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GET_BATTLE_BOX_NTF, function(data)
- -- ManagerContainer.DataMgr.TreasureData:InitTreasureData(data)
- -- end)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_RESET_ATTR_POINT_ACK, function(data)
- if data.error == Enum.NetErrorCode.ERROR_OK then
- if data.hero_id == 1 then
- self:RefreshAddPointAttr()
- ManagerContainer.RedPointMgr.HeroRPCtr:HeroAttrRPNotify()
- else
- ManagerContainer.DataMgr.PartnerData:RefreshAddPointAttr(data.hero_id)
- ManagerContainer.RedPointMgr.HeroRPCtr:PartnerAttrRPNotify(data.hero_id)
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.HERO_ATTR_ADD_SUCCESS, true)
- end
- end)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_HERO_CHANGE_JOB_ACK, function (data)
- if data.error == Enum.NetErrorCode.ERROR_OK then
- self:OnChangeJobAck(data)
- end
- end)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_HERO_REPLACE_JOB_ACK, function (data)
- if data.error == Enum.NetErrorCode.ERROR_OK then
- self:OnChangeJobAck(data, true)
- end
- end)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_HERO_FIGH_POWER_ACK, function(data)
- if data.error == Enum.NetErrorCode.ERROR_OK then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.FIGHTPOWER_PARTNER_ACK)
- end
- end)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_VIP_CHANGE_NTF, self.OnVipChangedNtf, self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_SKILL_SLOT_DATA_NTF,self.OnSkillSlotDataNtf,self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_JOB_SKILL_DATA_NTF,self.OnJobSkillDataNtf,self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ACTIVE_SKILL_ACK,self.OnActiveSkillAck,self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_SKILL_LEVEL_UP_ACK, self.OnSkillLevelUpAck,self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_SET_SKILL_LIST_ACK, self.OnSetSkillListAck,self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_RESET_SKILL_LEVEL_ACK, self.OnResetSkillLvAck,self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_SKILL_RESET_COUNT_NTF, self.OnSkillResetCountNtf,self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_CREATE_ROLE_ACK, self.OnCreateRoleAck, self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ROLE_RED_NTF, function(data)
- self:RefreshRedState(data.red)
- end)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_SET_HEAD_ID_ACK, self.OnSetHeadIdAck, self)
- --头像交互功能
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GET_OTHER_PLAYER_DETAIL_INFO_ACK, self.SCGetOtherPlayerDetailInfoAck, self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_USE_ITEM_ACK, self.OnUseItemAck, self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_CARD_SLOT_CHANGE_NTF, self.CardSlotChangeNtf, self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_STARTUP_INFO_END_NTF, self.StartUpEnd, self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GIFT_REWARD_ACK, self.OnGiftRewardAck, self)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_QUESTION_REWARD_ACK, self.OnQuestionRewardAck, self)
- end
- function UserData:RoleChangeJobAttrSuccess()
- self:InitHeroAttrFromBattle()
- --ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.HERO_ATTR_ADD_SUCCESS)
- end
- function UserData:OnCreateRoleAck(data)
- if data.error == 0 then
- self.createRole = true
- local gameRoleInfo = SDKMgr.Instance:GetGameRoleInfo()
- if gameRoleInfo then
- gameRoleInfo.openId = ManagerContainer.LuaGameMgr.openId
- local serverData = ManagerContainer.LuaGameMgr.serverData
- if serverData then
- gameRoleInfo.serverId = serverData.id
- gameRoleInfo.serverName = serverData.name
- end
- gameRoleInfo.roleId = tostring(data.uid) or ''
- gameRoleInfo.roleName = ""
- gameRoleInfo.roleLv = 0
- gameRoleInfo.roleCreateTime = data.create_role_time
- gameRoleInfo.roleUpLvTime = data.create_role_time
- gameRoleInfo.vipLv = 0
- gameRoleInfo.gender = tostring(data.gender) or ''
- gameRoleInfo.jobId = 0
- gameRoleInfo.jobName = ""
- gameRoleInfo.guildId = 0
- gameRoleInfo.guildName = ""
- gameRoleInfo.fightPower = 0
- end
- SDKMgr.Instance:CreateRole()
- SDKMgr.Instance:ReportCreateRole()
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_CREATE_ROLE_FAILED,data.error)
- end
- function UserData:CardSlotChangeNtf(data)
- ManagerContainer.RedPointMgr.HeroRPCtr:RoleCardSlotRPNotify(data.slot_list)
- end
- function UserData:InitRedState(data)
- self.data.mailRedState = data.is_unread_mail
- end
- function UserData:HasPassedNewbie()
- -- return CommonUtil.And(self:GetGuideId(),1) == 1
- return true
- end
- function UserData:RefreshRedState(data)
- self.data.mailRedState = data.is_unread_mail
- end
- function UserData:CompareDataChange(lastData)
- local changedRes = {}
- if lastData.roleBase.coin ~= self.data.roleBase.coin then
- changedRes[Enum.ItemIds.Coin] = (self.data.roleBase.coin - lastData.roleBase.coin)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.COIN_CHANGED)
- end
- if lastData.roleBase.diamond ~= self.data.roleBase.diamond then
- changedRes[Enum.ItemIds.Diamond] = (self.data.roleBase.diamond - lastData.roleBase.diamond)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.DIAMOND_CHANGED)
- end
- if lastData.roleBase.roleData.cruise ~= self.data.roleBase.roleData.cruise then
- changedRes[Enum.ItemIds.SkillExp] = (self.data.roleBase.roleData.cruise - lastData.roleBase.roleData.cruise)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_CRUISE_CHANGED)
- end
- if lastData.roleBase.roleData.heroData.baseLevel ~= self.data.roleBase.roleData.heroData.baseLevel then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.HERO_LV_CHANGED, self:GetId())
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ROLE_LV_CHANGED)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ROLE_EXP_CHANGED)
- --等级改变 同步
- ManagerContainer.LuaBattleMgr:SetTeamData(true,false)
- elseif lastData.roleBase.roleData.baseExp ~= self.data.roleBase.roleData.baseExp then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ROLE_EXP_CHANGED)
- end
- if lastData.roleBase.roleData.jobLevel ~= self.data.roleBase.roleData.jobLevel then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.JOB_LV_CHANGED)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.JOB_EXP_CHANGED)
- elseif lastData.roleBase.roleData.jobExp ~= self.data.roleBase.roleData.jobExp then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.JOB_EXP_CHANGED)
- end
- local lastResMap = lastData.roleBase.resMap
- local curResMap = self.data.roleBase.resMap
- for k,v in pairs(curResMap) do
- local lastV = lastResMap[k]
- if lastV ~= v then
- changedRes[k] = v - (lastV or 0)
- end
- lastResMap[k] = nil
- end
- for k, v in pairs(lastResMap) do
- changedRes[k] = -v
- end
- for key, value in pairs(changedRes) do
- if key == Enum.RoleResType.HeroSpirit then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ROLE_HERO_SPIRIT_CHANGED, value)
- elseif key == Enum.ItemType.EvilExp then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_ROLE_EVIL_EXP_CHANGED)
- elseif key == Enum.ItemType.AdvanceSkillExp then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_ADVANCESKILLEXP_CHANGED)
- elseif key == Enum.ItemType.ROCoin then
- --LogError("=================ROCOIN_CHANGED=========")
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ROCOIN_CHANGED)
- elseif key == Enum.ItemType.BoliShopExp then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ROBOLISHOP_EXP_CHANGE)
- end
- end
- if not CommonUtil.TableIsEmpty(changedRes) then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.CURRENY_CHANGED, changedRes)
- end
- end
- function UserData:GetCardBuffs(index)
- local list = {}
- local slots = self:GetCurSlotInfos(index)
- if slots ~= nil then
- for i = 1,#slots do
- if slots[i].equip_id > 0 then
- local cardList = slots[i].card_id_list
- for _,v in pairs(cardList) do
- if v > 0 then
- local cardData = ManagerContainer.CfgMgr:GetCardDataById(v)
- if cardData.BUFF ~= nil then
- for _,v1 in pairs(cardData.BUFF) do
- list[#list + 1] = v1
- end
- end
- end
- end
- end
- end
- end
- return list
- end
- function UserData:GetTeamData(ignore)
- local battleIds = {}
- local petId = self.data.roleBase.roleData.heroData.battlePetId
- local petData = ManagerContainer.DataMgr.PetDataMgr:GetPetDataById(petId)
- local data = {
- uid = self.data.roleBase.roleData.heroData.id,
- id = self.data.roleBase.roleCfgId,
- jobId = self.data.roleBase.roleData.heroData.configId,
- lv = self.data.roleBase.roleData.heroData.baseLevel,
- headFrameId = self.data.roleBase.roleData.headFrameId,
- role = false,
- mainRole = true,
- -- skills = ManagerContainer.DataMgr.SkillsData:GetUsedSkills(),
- skills = self.data.roleBase.roleData.heroData.skillData:GetUsedSkills(),
- buffs = self:GetCardBuffs(1),
- fashion = self:GetViewData(),
- petId = petId > 0 and petId + Enum.ActorUidField.Pet or 0,
- petBaseId = petData and petData.cfgId or 0,
- Name = self:GetUserNickname()
- }
- CommonUtil.ReplaceBattleSkillBySkillEquip(self.data.roleBase.roleData.heroData, data.skills)
-
- battleIds[#battleIds + 1] = data
- local list = ManagerContainer.DataMgr.PartnerData:GetBattlePartnerDatas(attrsChanged, ignore)
- if list then
- for _,v in pairs(list) do
- battleIds[#battleIds + 1] = v
- end
- end
- --lastTeamEquipAttrs = lastEquipAttrs
- --lastTeamCardAttrs = lastCardAttrs
- attrsChanged = false
- self:SyncFashionToActorData()
- return battleIds
- end
- function UserData:GetHeroActorParam()
- local actors = System.Array.CreateInstance(Enum.TypeInfo.ActorData, 1)
- actors[0] = ManagerContainer.LuaActorDataMgr:GetActorData(true,0)
- return actors
- end
- function UserData:GetSuitNum(slots, slotType)
- if slots == nil then return 0 end
- if slots[slotType].equip_id == 0 then return 0 end
- local suits = {}
- local equipData = ManagerContainer.CfgMgr:GetEquipById(slots[slotType].equip_id)
- if not equipData then
- return
- end
- local suitNum = 0
- if equipData.Suit == 0 then
- return suitNum, suits
- end
- local suitId = ManagerContainer.CfgMgr:GetEquipSuitById(equipData.Suit)
- for i = 1, #slots do
- if slots[i].equip_id > 0 then
- local equipData1 = ManagerContainer.CfgMgr:GetEquipById(slots[i].equip_id)
- local suitId1 = ManagerContainer.CfgMgr:GetEquipSuitById(equipData1.Suit)
- if suitId == suitId1 or equipData1.EquipLevel >= equipData.EquipLevel then
- suitNum = suitNum + 1
- suits[equipData1.Type] = equipData1.Name
- end
- end
- end
- return suitNum, suits
- end
- function UserData:GetMinRefineLevel(slots)
- if slots == nil then return 0 end
- local minLv = 100
- for i = 1, #slots do
- if slots[i].level < minLv then
- minLv = slots[i].level
- end
- end
- if minLv == 100 then
- return 0
- end
- if minLv >= 3 then
- return minLv
- end
- return 0
- end
- function UserData:GetSlotsEquipAttr(slots)
- if slots == nil then return nil end
- local baseAttrs = {}
- for _,v in pairs(Enum.HeroAttrType) do
- baseAttrs[v] = 0
- end
- local suitIds = {}
- local suitCounts = {}
- local refineSuitLv = self:GetMinRefineLevel(slots)
- for i = 1,#slots do
- if slots[i].equip_id > 0 then
- local suitNum = ManagerContainer.DataMgr.UserData:GetSuitNum(slots, i)
- local equipCfgData = ManagerContainer.CfgMgr:GetEquipById(slots[i].equip_id)
- local refineData = ManagerContainer.CfgMgr:GetEquipRefineDataByLv(slots[i].level)
- for k,v in pairs(Enum.HeroAttrType) do
- if equipCfgData[k] and equipCfgData[k] ~= 0 then
- if v < Enum.HeroAttrType.STR_Percent then
- local refineAdd = equipCfgData[k]*(refineData ~= nil and ((refineData.Result + 100)*0.01) or 1)
- baseAttrs[Enum.HeroAttrType[k]] = baseAttrs[Enum.HeroAttrType[k]] + refineAdd
- end
- end
- if refineSuitLv > 0 then
- for j = refineSuitLv, 1, -1 do
- local data = ManagerContainer.CfgMgr:GetEquipRefineDataByLv(j)
- local refineEff = data["Suit"]
- if refineEff ~= nil and #refineEff > 0 and refineEff[1] == Enum.HeroAttrType[k] then
- if v >= Enum.HeroAttrType.STR_Percent then
- baseAttrs[Enum.HeroAttrType[k]] = baseAttrs[Enum.HeroAttrType[k]] + refineEff[1]
- end
- end
- end
- end
- end
- if equipCfgData.Suit > 0 and not CommonUtil.EleInTable(equipCfgData.Suit, suitIds) then
- suitIds[#suitIds + 1] = equipCfgData.Suit
- suitCounts[equipCfgData.Suit] = math.floor(suitNum/2)
- end
- end
- end
- for i = 1,#suitIds do
- local suitCfgData = ManagerContainer.CfgMgr:GetEquipSuitById(suitIds[i])
- for j = 1, suitCounts[suitIds[i]] do
- if suitCfgData["Suit"..j] ~= nil then
- for k, v in pairs(suitCfgData["Suit"..j]) do
- if type(v) == "table" then
- if baseAttrs[v[1]] == nil then
- baseAttrs[v[1]] = v[2]
- else
- baseAttrs[v[1]] = baseAttrs[v[1]] + v[2]
- end
- else
- if baseAttrs[suitCfgData["Suit"..j][1]] == nil then
- baseAttrs[suitCfgData["Suit"..j][1]] = suitCfgData["Suit"..j][2]
- else
- baseAttrs[suitCfgData["Suit"..j][1]] = baseAttrs[suitCfgData["Suit"..j][1]] + suitCfgData["Suit"..j][2]
- end
- break
- end
- end
- end
- end
- end
- for k, v in pairs(Enum.HeroAttrType) do
- if v >= Enum.HeroAttrType.STR_Percent then
- baseAttrs[v] = baseAttrs[v]*0.0001
- end
- end
- for k, v in pairs(Enum.HeroAttrType) do
- if v < Enum.HeroAttrType.STR_Percent then
- baseAttrs[v] = baseAttrs[v]*(1 + baseAttrs[v + 30])
- end
- end
- for k, v in pairs(Enum.HeroAttrType) do
- if v >= Enum.HeroAttrType.STR_Percent then
- baseAttrs[v] = 0
- end
- end
- return baseAttrs
- end
- function UserData:GetSlotsCardAttr(slots)
- if slots == nil then return nil end
- local baseAttrs = {}
- for _,v in pairs(Enum.HeroAttrType) do
- baseAttrs[v] = 0
- end
- for i = 1,#slots do
- --if slots[i].equip_id > 0 then
- local cardList = slots[i].card_id_list
- for _,v in pairs(cardList) do
- if v > 0 then
- local cardData = ManagerContainer.CfgMgr:GetCardDataById(v)
- for _,v1 in pairs(CommonUtil.DeserializeCfgItemList(cardData.Attribute1)) do
- if v1[1] < Enum.HeroAttrType.STR_Percent then
- baseAttrs[v1[1]] = baseAttrs[v1[1]] + v1[2]
- else
- baseAttrs[v1[1]] = baseAttrs[v1[1]] + v1[2]*0.0001
- end
- end
- end
- end
- --end
- end
- return baseAttrs
- end
- function UserData:Clear()
- self.data = {}
- self:ClearFighterSvrPowers()
- baseAttrs = nil
- lastEquipAttrs = nil
- lastCardAttrs = nil
- lastFashionAttrs = nil
- lastTeamEquipAttrs = nil
- lastTeamCardAttrs = nil
- lastPointAttrs = nil
- lastBaseAttrs = nil
- lastSkillAttrs = nil
- lastPetAttrs = nil
- lastHeadFrameAttrs = nil
- lastKeepSakeAttrs = nil
- self.initedOver = false
- --self:UnRegisterNetEvents()
- self.createRole = nil
- self.createRoleTime = nil
- self.roleUpLvTime = nil
- self.loginTime = nil
- end
- function UserData:Destroy()
- if self.Clear then
- self:Clear()
- self:ClearFighterSvrPowers()
- end
- self:UnRegisterNetEvents()
- end
- function UserData:UnRegisterNetEvents()
- --ManagerContainer.NetManager:UnRegisterPbNameCallback("SC_CREATE_ROLE_ACK")
- --ManagerContainer.NetManager:UnRegisterPbNameCallback("SC_STARTUP_INFO_NTF")
- end
- function UserData:GetCurrency(type)
- if type == Enum.ItemType.Coin then
- return self.data.roleBase.coin
- end
- if type == Enum.ItemType.Diamond then
- return self.data.roleBase.diamond
- end
- if type == Enum.ItemType.RoleBaseExp then
- return self.data.roleBase.roleData.baseExp
- end
- if type == Enum.ItemType.RoleJobExp then
- return self.data.roleBase.roleData.jobExp
- end
- if type == Enum.ItemType.ParterExp then
- return self.data.roleBase.roleData.heroExp
- end
- if type == Enum.ItemType.SkillExp then
- return self.data.roleBase.roleData.cruise
- end
- if type == Enum.ItemType.AdvanceSkillExp then
- return self.data.roleBase.resMap[Enum.ItemType.AdvanceSkillExp] or 0
- end
- return self:GetResById(type)
- end
- function UserData:OnSetHeadIdAck(data)
- if not data then return end
- local headPortraitId = data.head_id
- local cfgData = ManagerContainer.CfgMgr:GetHeadPortraitDataById(headPortraitId)
- if not cfgData then return end
- self:InitHeadPortrait(headPortraitId)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.USER_HEADPROTRAIT_CHANGED)
- end
- function UserData:OnUserNameChanged(data)
- if data.error ~= 0 then return end
- if not data.name or data.name == '' then return end
- self.data.roleBase.nickname = data.name
- local mainActor = ManagerContainer.LuaActorDataMgr:GetHeroActorData(1)
- if mainActor ~= nil then
- mainActor.Name = ManagerContainer.DataMgr.UserData:GetUserNickname()
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.NICK_NAME_CREATED)
- end
- --增加对应压制mark
- function UserData:SetActorPveMark(ActorId,actor)
- --LogError(tostring(ActorId))
- local skillData = self:GetSkillData(ActorId)
- if nil == skillData then
- return
- end
- local currNerveLv = skillData:GetCurrNerveLv()
- local allCfgDatas = ManagerContainer.CfgMgr:GetAllSkillSuitNewCfg()
- if currNerveLv > 0 then --设置压制ID
- for k, v in pairs(allCfgDatas) do
- if v.Id == currNerveLv then
- local mark = GvGMark.New(v.buffid, 1)
- actor:SetPveMark(mark)
- --LogError("添加压制markid"..tostring(v.buffid))
- end
- end
- end
- end
- function UserData:OnVipChangedNtf(data)
- -- LogError('[Wboy] OnVipChangedNtf ' .. Inspect(data))
- if ManagerContainer.NetManager:IsErrorData(data) then
- return
- end
- local exp = self.data.roleBase.resMap[Enum.ItemType.VipExp] or 0
- local lv = self.data.roleBase.vipLv
- local newExp = data.vip_exp
- local newLv = data.vip_level
- self.data.roleBase.resMap[Enum.ItemType.VipExp] = newExp
- self.data.roleBase.vipLv = newLv
- if newLv ~= lv then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.VIP_LV_CHANGED, lv, newLv)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.UI_VIP_FUNCLOCK_OPEN_NTF, Enum.TaskType.VIP_Level)
- end
- if newExp ~= exp then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.VIP_EXP_CHANGED, newLv, exp, newExp)
- end
- end
- function UserData:GetHeroLv(heroId)
- if self:IsLeaderHero(heroId) then
- return self:GetRoleLv()
- else
- return ManagerContainer.DataMgr.PartnerData:GetHeroLv(heroId)
- end
- end
- --- 获得英雄的jobCfgId
- ---@return integer 主角是JobCfgId, 伙伴是PartnerCfgId
- function UserData:GetHeroJobCfgId(heroId)
- if self:IsLeaderHero(heroId) then
- return self:GetJobCfgId()
- else
- return ManagerContainer.DataMgr.PartnerData:GetHeroCfgId(heroId)
- end
- end
- ----------------------------- 未上阵的 战斗力数据
- function UserData:GetAOrCreatesideFighterSvrPower()
- if nil == self.AsideFighterPower then
- self.AsideFighterPower = {}
- end
- return self.AsideFighterPower
- end
- function UserData:ClearFighterSvrPowers()
- self.AsideFighterPower = {}
- end
- function UserData:AddAsideFighterSvrPower(Id,IsPet,Power)
- --LogError("AddAsideFighterPower"..tostring(Id))
- local tbFigherPower = self:GetAOrCreatesideFighterSvrPower()
- for k,v in pairs(tbFigherPower) do
- if v.Id == Id and v.IsPet == IsPet then
- v.Power = Power
- return
- end
- end
- local PowerInfo = {Id = Id,IsPet = IsPet,Power = Power}
- table.insert( tbFigherPower , PowerInfo)
- end
- function UserData:RemoveAsideFighterSvrPower(Id,IsPet)
- local NewTb = {}
- local tbFigherPower = self:GetAOrCreatesideFighterSvrPower()
- for k,v in pairs(tbFigherPower) do
- local IsInsert = true
- if v.Id == Id and v.IsPet == IsPet then
- IsInsert = false
- end
- if IsInsert then
- table.insert(NewTb,v)
- end
- end
- self.AsideFighterPower = NewTb
- end
- function UserData:GetAsideFighterSvrPower(Id,IsPet)
- local tbFigherPower = self:GetAOrCreatesideFighterSvrPower()
- for k,v in pairs(tbFigherPower) do
- if v.Id == Id and v.IsPet == IsPet then
- return v.Power
- end
- end
- return -1 --服务器未同步计算
- end
- ----------------------------
- ------------------------------- 技能相关 Start -------------------------------
- function UserData:GetSkillData(heroId)
- local skillData = nil
- local heroData = nil
- if self:IsLeaderHero(heroId) then
- heroData = self.data.roleBase.roleData.heroData
- skillData = heroData.skillData
- else
- heroData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(heroId)
- skillData = heroData and heroData.skillData or nil
- end
- return skillData, heroData
- end
- function UserData:GetAllUnlockRoleSkillPress()
- local maxPress = 0
- local skillData = self.data.roleBase.roleData.heroData.skillData
- if skillData then
- maxPress = maxPress + skillData:GetMaxPress()
- end
- local allPartners = ManagerContainer.DataMgr.PartnerData:GetPartnerDatas()
- for k, v in pairs(allPartners) do
- if v.skillData then
- maxPress = maxPress + v.skillData:GetMaxPress()
- end
- end
- return maxPress
- end
- function UserData:GetCurrRoleSkillPress()
- return self.data.roleBase.RepressSkillPvpVal or 0
- end
- function UserData:OnJobSkillDataNtf(data)
- if ManagerContainer.NetManager:IsErrorData(data) then return end
- local heroId = data.hero_id
- local skillData, heroData = self:GetSkillData(heroId)
- if skillData then
- local isSlotChanged, newSkills, upLvSkills, downLvSkills = skillData:OnJobSkillDataChange(data)
- local isRefeSelectId = false
- if newSkills and #newSkills > 0 then
- -- 获得新技能
- ManagerContainer.NewGotTipsMgr:AddShowData(1, newSkills)
- isRefeSelectId = true
- self:ReportStudySkill(heroId, newSkills, true)
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_SKILL_CHANGED, heroId, newSkills, upLvSkills, downLvSkills,isRefeSelectId)
- if isSlotChanged then
- self:RefreshActorDataSkill(heroData, skillData)
- end
- else
- LogError("[Wboy] SC_JOB_SKILL_DATA_NTF Hero SkillData is not Find, heroId = " .. tostring(heroId) .. "\n" .. Inspect(data))
- end
- local isChanged
- if self:IsLeaderHero(heroId) then
- isChanged = self:CalcSkillAttrs()
- else
- isChanged = ManagerContainer.DataMgr.PartnerData:OnJobSkillDataChanged(heroId)
- end
- if isChanged then
- --ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.HERO_ATTR_ADD_SUCCESS)
- end
- end
- function UserData:ReportStudySkill(heroId, newSkills, success)
- if not SDKMgr.Instance:IsReportAction() then
- return
- end
- if self:IsLeaderHero(heroId) then
- for i = 1, #newSkills do
- local datas = System.Collections.Generic.Dictionary_object_object()
- datas:Add('event', 'mj_roleskill')
- datas:Add('num', newSkills[i].skillId)
- SDKMgr.Instance:ReportAction(datas)
- end
- else
- local datas = System.Collections.Generic.Dictionary_object_object()
- datas:Add('event', 'mj_heroskill')
- datas:Add('is_achieve', (success and 1 or 0))
- SDKMgr.Instance:ReportAction(datas)
- end
- end
- function UserData:OnSkillSlotDataNtf(data)
- if ManagerContainer.NetManager:IsErrorData(data) then return end
- local heroId = data.hero_id
- local skillData, heroData = self:GetSkillData(heroId)
- if skillData then
- skillData:OnSkillSlotDataChange(data)
- self:RefreshActorDataSkill(heroData, skillData)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_SKILL_SLOT_CHANGED, heroId)
- else
- LogError("[Wboy] SC_SET_SKILL_LIST_ACK Hero SkillData is not Find, heroId = " .. tostring(heroId) .. "\n" .. Inspect(data))
- end
- end
- function UserData:RefreshActorDataSkill(heroData, skillData)
- local heroId = heroData.id
- local heroActorData = nil
- local isBattle = false
- if self:IsLeaderHero(heroId) then
- heroActorData = ManagerContainer.LuaActorDataMgr:GetActorData(true, 0)
- isBattle = true
- else
- if heroData.owned then
- heroActorData = ManagerContainer.LuaActorDataMgr:GetActorData(false, heroData.configId)
- end
- isBattle = heroData.isBattle
- end
- if heroActorData then
- if isBattle then
- local usedSkills = skillData:GetUsedSkills() or {}
- CommonUtil.ReplaceBattleSkillBySkillEquip(heroData, usedSkills)
- ManagerContainer.LuaGameMgr:UpdateTeamSkills({{ uid = heroData.id, skills = usedSkills }})
- else
- local usedSkillParams = skillData:GetUsedSkillParams()
- CommonUtil.ReplaceBattleSkillBySkillEquip(heroData, usedSkillParams)
- heroActorData:RefreshSkills(usedSkillParams)
- end
- end
- end
- function UserData:OnActiveSkillAck(data)
- ManagerContainer.LuaBattleMgr:SetTeamData(true,true)
- -- if ManagerContainer.NetManager:IsErrorData(data) then
- -- LogError("[Wboy] SC_ACTIVE_SKILL_ACK is Error " .. Inspect(data))
- -- end
- end
- function UserData:OnSkillLevelUpAck(data)
- -- if ManagerContainer.NetManager:IsErrorData(data) then
- -- LogError("[Wboy] SC_SKILL_LEVEL_UP_ACK is Error " .. Inspect(data))
- -- end
- end
- function UserData:OnSetSkillListAck(data)
- ManagerContainer.LuaBattleMgr:SetTeamData(true,true)
- -- if ManagerContainer.NetManager:IsErrorData(data) then
- -- LogError("[Wboy] SC_SET_SKILL_LIST_ACK is Error " .. Inspect(data))
- -- end
- end
- function UserData:OnResetSkillLvAck(data)
- if ManagerContainer.NetManager:IsErrorData(data) then return end
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('SkillResetDscTxt3')
- end
- function UserData:OnSkillResetCountNtf(data)
- if ManagerContainer.NetManager:IsErrorData(data) then return end
- local lastCount = self:GetSkillResetCount()
- local count = data.reset_count or -1
- if lastCount == count then return end
- self.data.roleBase.roleData.skillResetCount = count
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_SKILL_RESET_LV_COUNT_CHANGED)
- end
- function UserData:IsLeaderHero(heroId)
- return heroId == 1
- end
- ------------------------------- 技能相关 End -------------------------------
- --开启了好友的信息界面
- function UserData:SCGetOtherPlayerDetailInfoAck(_data, isCross)
-
- if not isCross then isCross = false end
- _data._targetTag = 1;
- _data._isCross = isCross;
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRoleMessage, _data) --打开头像交互界面,显示好友的信息
- end
- --使用item的返回
- function UserData:OnUseItemAck(_data)
- if ManagerContainer.NetManager:IsErrorData(_data) then
- -- LogError("使用商品消息错误返回,错误码:" .. tostring(_data.error));
- return
- end
- CommonUtil.ACKShowRewardList(_data.item_list)
- end
- function UserData:StartUpEnd()
- if not self.initedOver then
- self.initedOver = true
- ManagerContainer.LuaActorAttributeMgr:SendAttrReq()
- ManagerContainer.DataMgr.PetDataMgr:InitPetRelationAttrs()
- ManagerContainer.LuaBattleMgr:SetTeamData(true,true)
- ManagerContainer.LuaGameMgr:LoadGameSpeed()
- ManagerContainer.RedPointMgr.HeroRPCtr:RoleRedPointNotify()
- ManagerContainer.RedPointMgr.HeroRPCtr:SkillUnlockNotify()
- ManagerContainer.DataMgr.FriendDataMgr:RequestAllData()
- ManagerContainer.DataMgr.MailData:QueryMailData()
- ManagerContainer.DataMgr.GuildDataMgr:SendGuildLoginReq()
- ManagerContainer.DataMgr.CollectionBookData:QueryCardHandBook()
- ManagerContainer.DataMgr.KeepSakeBookData:QueryKeepSakeHandBook()
- ManagerContainer.DataMgr.SignData:QuerySignUpInfoReq()
- ManagerContainer.PayMgr:SendStartUpPayComplete()
- ManagerContainer.DataMgr.RankActivitiesMgr:QueryRankActivitiesData(true)
- ManagerContainer.DataMgr.RuneShopDataMgr:QueryAirShipActivityData()
- -- ManagerContainer.DataMgr.RuneShopDataMgr:SendShopInfoReq(Enum.RuneShopType.MonthCard,nil)
- ManagerContainer.LuaUIMgr:CloseInputMask()
- --重连后刷新顶部资源
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.COIN_CHANGED)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.DIAMOND_CHANGED)
- self:StartEnterGame()
- self:SDKEnterGame()
- -- 给服务器发送数据,用于Log
- local deviceSystemData = SDKMgr.Instance:GetDeviceSystemData()
- if deviceSystemData then
- local msgData = {
- client_info = {
- device_model = deviceSystemData.deviceModel,
- device_height = deviceSystemData.deviceHeight,
- device_width = deviceSystemData.deviceWidth,
- os_name = deviceSystemData.osName,
- os_ver = deviceSystemData.osVer,
- mac_addr = deviceSystemData.macAddr,
- udid = deviceSystemData.udid,
- isp = deviceSystemData.isp,
- network = deviceSystemData.network,
- app_channel = deviceSystemData.appChannel,
- app_ver = deviceSystemData.appVer,
- trans_id = deviceSystemData.transId,
- unisdk_deviceid = deviceSystemData.deviceId,
- is_emulator = deviceSystemData.isEmulator,
- is_root = deviceSystemData.isRoot,
- account_id = deviceSystemData.accountId,
- old_accountid = deviceSystemData.oldAccountId,
- IMEI = deviceSystemData.imei,
- country_code = deviceSystemData.countryCode,
- oaid = deviceSystemData.oaid,
- engine_ver = deviceSystemData.engineVer,
- }
- }
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_CLIENT_PARAM_NTF, msgData)
- end
- end
- end
- function UserData:StartEnterGame(skipCreateRole)
- if not skipCreateRole and self.createRole then return end
- if not ManagerContainer.FSMMgr:IsFightingState() then
- -- if self:HasPassedNewbie() then
- if not self.createRole then
- ManagerContainer.LuaGameMgr:EnterBattle(true)
- else
- ManagerContainer.LuaGameMgr:EnterNewbie()
- end
- end
- end
- function UserData:IsInitedOver()
- return self.initedOver
- end
- function UserData:SendGiftCode(code)
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GIFT_REWARD_REQ, {gift_code = code, uuid = self:GetUserId()})
- end
- function UserData:OnGiftRewardAck(data)
- if data.error ~= Enum.NetErrorCode.ERROR_OK then
- return
- end
- CommonUtil.ACKShowRewardList(data.reward_list)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EXCHANGE_REWARD_SUCCESS)
- self:ReportGiftReward(true)
- end
- function UserData:ReportGiftReward(success)
- if not SDKMgr.Instance:IsReportAction() then
- return
- end
- local datas = System.Collections.Generic.Dictionary_object_object()
- datas:Add('event', 'mj_package_code')
- datas:Add('is_achieve', (success and 1 or 0))
- SDKMgr.Instance:ReportAction(datas)
- end
- function UserData:SendQuestionReward()
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_QUESTION_REWARD_REQ, {})
- end
- function UserData:OnQuestionRewardAck(data)
- if data.error ~= Enum.NetErrorCode.ERROR_OK then return end
- self.data.roleBase.questionReward = 1
- CommonUtil.ACKShowRewardList(data.reward_list)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.QUESTION_REWARD_SUCCESS)
- end
- function UserData:OnChangeJobAck(data, isReplace)
- attrsChanged = true
- if data.hero_id == 1 then
- AvatarRTMgr.Instance:RemoveActor(1)
- --ManagerContainer.LuaBattleMgr:SetTeamData(true)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.ROLE_JOB_CHANGE_SUCCESS)
- else
- --ManagerContainer.DataMgr.PartnerData:RefreshPartnerTransfer(data.hero_id)
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.HERO_JOB_CHANGE_SUCCESS, data.hero_id, isReplace)
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.JOB_CHANGE_SUCCESS, data.hero_id, isReplace)
- ManagerContainer.LuaBattleMgr:SetTeamData(true,true)
- ManagerContainer.LuaBattleMgr:UpdateTeamSkills()
-
- if data.hero_id == 1 then
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.USER_HEADPROTRAIT_CHANGED)
- end
- end
- function UserData:SyncRoleDataToSDK()
- local gameRoleInfo = SDKMgr.Instance:GetGameRoleInfo()
- if not gameRoleInfo then
- return nil
- end
- gameRoleInfo.openId = ManagerContainer.LuaGameMgr.openId
- local serverData = ManagerContainer.LuaGameMgr.serverData
- if serverData then
- gameRoleInfo.serverId = serverData.id or 0
- gameRoleInfo.serverName = serverData.name or ''
- else
- gameRoleInfo.serverId = 0
- gameRoleInfo.serverName = ''
- end
- gameRoleInfo.roleId = tostring(self:GetUserId())
- gameRoleInfo.roleName = tostring(self:GetOriUserNickname())
- gameRoleInfo.roleLv = self:GetRoleLv() or 0
- gameRoleInfo.roleCreateTime = self.createRoleTime or ManagerContainer.LuaTimerMgr:CurServerTime()
- gameRoleInfo.roleUpLvTime = self.roleUpLvTime or ManagerContainer.LuaTimerMgr:CurServerTime()
- gameRoleInfo.vipLv = self:GetVipLv() or 0
- gameRoleInfo.gender = self:GetSex() or 0
- gameRoleInfo.jobId = self:GetJobCfgId() or 0
- gameRoleInfo.jobName = self.data.roleBase.roleData.jobName
- local guildId = 0
- local guildName = ""
- local guildDataMgr = ManagerContainer.DataMgr.GuildDataMgr
- if guildDataMgr then
- if guildDataMgr:HasGuild() then
- local briefData = guildDataMgr:GetCurGuildData():GetBriefData()
- guildId = briefData.id
- guildName = briefData.name
- end
- end
- gameRoleInfo.guildId = guildId
- gameRoleInfo.guildName = guildName
- gameRoleInfo.fightPower = self:GetTotalFightPower()
- gameRoleInfo.lastLogoutTime = self.data.roleBase.roleData.lastLogoutTime
- gameRoleInfo.loginTime = self.loginTime or ManagerContainer.LuaTimerMgr:CurServerTime()
- if self.serverStartTime then
- gameRoleInfo.openServerTime = self.serverStartTime / 1000
- end
- ManagerContainer.OpenPayMgr:SetOpenData(gameRoleInfo.openId,gameRoleInfo.roleName , gameRoleInfo.roleLv, gameRoleInfo.serverName)
- return gameRoleInfo
- end
- function UserData:SDKEnterGame()
- self.loginTime = ManagerContainer.LuaTimerMgr:CurServerTime()
- self:SyncRoleDataToSDK()
- SDKMgr.Instance:EnterGame()
- SDKMgr.Instance:ReportLoginRole(0, 0, nil)
- end
- function UserData:SDKExitGame()
- self:SyncRoleDataToSDK()
- SDKMgr.Instance:ExitGame()
- SDKMgr.Instance:ReportLogoutRole(ManagerContainer.LuaTimerMgr:CurServerTime(), nil, nil, nil, 0, 0, nil)
- end
- function UserData:SDKUpdateRoleLv()
- self.roleUpLvTime = ManagerContainer.LuaTimerMgr:CurServerTime()
- self:SyncRoleDataToSDK()
- SDKMgr.Instance:UpdateRoleLv()
- end
- function UserData:GetHeroPetFightPowerByHeroId(id)
- local heroData = self:GetHeroData(id)
- if heroData then
- return heroData.petFightPower or 0
- end
- return 0
- end
- return UserData
|