--- 英雄皮肤 local Grid = require("bag.Grid") local BuyExcel = require("excel.buy").buy local BagLogic = require("bag.BagLogic") local HeroSkinExcel = require("excel.present").heroSkin local SkinExcel = require("excel.skin").skin local SkinLogic = require("skin.SkinLogic") local HeadFrameExcel = require("excel.role").headFrame local RoleHeadLogic = require("role.RoleHeadLogic") local Msg = require("core.Msg") local Json = require("common.Json") local BuyLogic = require("topup.BuyLogic") local GC_SKIN_QUERY = 54 local function genSkinUnit(human,id) local cfg = HeroSkinExcel[id] local buyCfg = BuyExcel[cfg.buyId] local region = human.region or "CN" local buyItem = {} BuyLogic.fontBuyItem(human, buyItem, cfg.buyId) local skinId = cfg.content[1] local skinCfg = SkinExcel[skinId] local attrs = {} for _,v in pairs(skinCfg.attrs) do attrs[#attrs + 1] = { key = v[1], value = v[2], } end local iconframeId = cfg.content[2] local iconframeCfg = HeadFrameExcel[iconframeId] local headNet = {} headNet.id = iconframeId headNet.desc = iconframeCfg.desc or "" headNet.keepTime = iconframeCfg.keepTime headNet.name = iconframeCfg.name or "" headNet.camp = iconframeCfg.camp or 0 local len = #iconframeCfg.attrs headNet.attrs = {} for i = 1,len do headNet.attrs[i] = { key = iconframeCfg.attrs[i][1], value = iconframeCfg.attrs[i][2], } end return { id = id, buyItem = buyItem, skinData = { Id = skinId, attrs = attrs }, Iconframe = headNet } end ----------------------------------------- function query(human,panelId) local ret = {} for id,cfg in pairs(HeroSkinExcel) do if cfg.panelId == panelId then ret[#ret+1] = genSkinUnit(human,id) end end return { list = ret } end function buy(human,buyId) local skinCfg for _,cfg in pairs(HeroSkinExcel) do if cfg.buyId == buyId then skinCfg = cfg break end end assert(skinCfg,"invalid buyId") -- 解锁皮肤和头像 SkinLogic.skinUnlock(human,skinCfg.content[1]) --BagLogic.addItemList(human,skinCfg.content,"skin_buy") RoleHeadLogic.active(human,RoleHeadLogic.HEAD_TYPE_2,skinCfg.content[2]) --刷新 local data=query(human,skinCfg.panelId) RefreshClient(human,GC_SKIN_QUERY,data) end function RefreshClient(human,type,data) local msgRet = Msg.gc.GC_ROLE_CHANGE_BASEINFO msgRet.ret = type msgRet.tip = Json.Encode(data) Msg.send(msgRet,human.fd) end function SendSkinInfoByMoney(human, nMoney, nItemID) if not human or 0 >= nMoney then return end local ret = {} for id,cfg in pairs(HeroSkinExcel) do local nBuyID = cfg.buyId local tBuyCfg = BuyExcel[nBuyID] if tBuyCfg then local region = human.region or "CN" local nTrueMoney = tBuyCfg[region] if nMoney == nTrueMoney then ret[#ret+1] = genSkinUnit(human,id) end end end local data = { list = ret } local msgRet = Msg.gc.GC_ITEM_SKIN_INFO msgRet.nItemID = nItemID msgRet.data = Json.Encode(data) Msg.send(msgRet,human.fd) end function BuySkinBySuiPian(human, nSkinID, nItemID) local skinCfg for _,cfg in pairs(HeroSkinExcel) do if cfg.content[1] == nSkinID then skinCfg = cfg break end end assert(skinCfg,"invalid buyId") SkinLogic.skinUnlock(human,skinCfg.content[1]) --BagLogic.addItemList(human,skinCfg.content,"skin_buy") RoleHeadLogic.active(human,RoleHeadLogic.HEAD_TYPE_2,skinCfg.content[2]) --刷新 local data=query(human,skinCfg.panelId) RefreshClient(human,GC_SKIN_QUERY,data) BagLogic.delItem(human, nItemID, 1, "item_use") end