| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319 |
- 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,I18N.T(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()
- local level = self:GetRoleLv()
- if level==5 or level == 10 or level ==20 then
- --LogError("----------达成目标等级----------");
- local sdkrptMgr = ManagerContainer.SDKEventReportMgr
- local type = sdkrptMgr.EventType.level_5
- if level == 10 then
- type = sdkrptMgr.EventType.level_10
- elseif level == 20 then
- type = sdkrptMgr.EventType.level_20
- end
- sdkrptMgr:SendEvent(type)
- end
- end
- function UserData:GetHeroPetFightPowerByHeroId(id)
- local heroData = self:GetHeroData(id)
- if heroData then
- return heroData.petFightPower or 0
- end
- return 0
- end
- return UserData
|