Forráskód Böngészése

修改皮肤相关协议

gitxsm 4 hónapja
szülő
commit
6ac531cb0e
2 módosított fájl, 113 hozzáadás és 10 törlés
  1. 28 1
      script/module/bag/Proto.lua
  2. 85 9
      script/module/present/HeroSkinLogic.lua

+ 28 - 1
script/module/bag/Proto.lua

@@ -1,4 +1,5 @@
 local Attr = require("role.Proto").Attr
+local BuyItem = require("topup.Proto").BuyItem
 
 -- 碎片
 SuiPian = {
@@ -313,10 +314,36 @@ GC_SUIPIAN_SYNTHESIS = {
 	{"status",1,"int"}, --碎片一键合成结果通知刷新 0:合成成功 1:合成失败
 }
 
+
+Skin_Info = {
+	{"Id", 				1,		"int"},
+	{"attrs", 			5,		Attr},
+}
+
+Skin_Show_Info = {
+	{"id", 				1,		"int"},
+	{"desc", 			1,		"string"},
+	{"keepTime", 		1,		"int"},
+	{"name", 			1,		"string"},
+	{"camp", 			1,		"int"},
+	{"attrs", 			5,		Attr},
+}
+
+SkinBuyData = {
+	{"id", 				1,		"int"},
+	{"buyItem", 		1,		BuyItem},
+	{"skinData", 		1,		Skin_Info},
+	{"Iconframe", 		1,		Skin_Show_Info},
+}
+
+
 -- 发送合成道具对应的皮肤信息
 GC_ITEM_SKIN_INFO = {
 	{"nItemID", 1,	"int"},
-	{"data",	1,	"string"}
+	-- {"data",	1,	"string"}
+	{"data",	10,	SkinBuyData},
+	{"isEnd",	1,	"byte"},      -- 0-否,1-是
+	{"isStart",	1,	"byte"},      -- 0-否,1-是
 }
 
 -- 选择对应的皮肤

+ 85 - 9
script/module/present/HeroSkinLogic.lua

@@ -87,6 +87,36 @@ local function populateMsg(human, net, id)
 end
 
 
+local function populateMsg2(human, net, id)
+    local cfg = HeroSkinExcel[id]
+    local skinId = cfg.content[1]
+    local skinCfg = SkinExcel[skinId]
+
+    net.id = id
+    BuyLogic.fontBuyItem(human, net.buyItem, cfg.buyId)
+    net.skinData.Id = skinId
+    net.skinData.attrs[0] = #skinCfg.attrs
+    for i, v in ipairs(skinCfg.attrs) do
+        net.skinData.attrs[i].key = v[1]
+        net.skinData.attrs[i].value = v[2]
+    end
+
+    local iconframeId = cfg.content[2]
+    local iconframeCfg = HeadFrameExcel[iconframeId]
+
+    net.Iconframe.id = iconframeId
+    net.Iconframe.desc = iconframeCfg.desc or ""
+    net.Iconframe.keepTime = iconframeCfg.keepTime or 0
+    net.Iconframe.name = iconframeCfg.name or ""
+    net.Iconframe.camp = iconframeCfg.camp or 0
+    net.Iconframe.attrs[0] = #iconframeCfg.attrs
+
+    for i, v in ipairs(iconframeCfg.attrs) do
+        net.Iconframe.attrs[i].key = v[1]
+        net.Iconframe.attrs[i].value = v[2]
+    end
+end
+
 
 -----------------------------------------
 
@@ -192,7 +222,36 @@ function SendSkinInfoByMoney(human, nMoney, nItemID)
         return
     end
 
-    local ret = {}
+    -- 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)
+
+
+    local msgRet = Msg.gc.GC_ITEM_SKIN_INFO
+    msgRet.nItemID = nItemID
+    msgRet.data[0] = 0
+    msgRet.isEnd = 0
+    msgRet.isStart = 1
+
+    local skinArr = {}
     for id,cfg in pairs(HeroSkinExcel) do
         local nBuyID = cfg.buyId
         local tBuyCfg = BuyExcel[nBuyID]
@@ -200,19 +259,36 @@ function SendSkinInfoByMoney(human, nMoney, nItemID)
             local region = human.region or "CN"
             local nTrueMoney = tBuyCfg[region]
             if nMoney == nTrueMoney then
-                ret[#ret+1] = genSkinUnit(human,id)
+                skinArr[#skinArr+1] = id
             end
         end
     end
 
-    local data = {
-        list = ret
-    }
-    local msgRet = Msg.gc.GC_ITEM_SKIN_INFO
-    msgRet.nItemID = nItemID
-    msgRet.data = Json.Encode(data)
+    local skinNum = #skinArr
+    local len, msgOneceLen = 0, 10
 
-    Msg.send(msgRet,human.fd)
+    for _, skinId in ipairs(skinArr) do
+        len = len + 1
+        msgRet.data[0] = len
+        populateMsg2(human, msgRet.data[len], skinId)
+
+        if len >= msgOneceLen then
+            skinNum = skinNum - len
+            if skinNum <= 0 then
+                msgRet.isEnd = 1
+                return Msg.send(msgRet,human.fd)
+            end
+
+            Msg.send(msgRet,human.fd)
+            len = 0
+            msgRet.isStart = 0
+        end
+    end
+
+    if len > 0 then
+        msgRet.isEnd = 1
+        Msg.send(msgRet,human.fd)
+    end
 end
 
 function BuySkinBySuiPian(human, nSkinID, nItemID)