|
|
@@ -365,20 +365,25 @@ function skinQuery(human)
|
|
|
|
|
|
end
|
|
|
msgRet.data[0] = cnt
|
|
|
+ msgRet.isEnd = 1
|
|
|
+ local bSend = false
|
|
|
local maxLen = #msgRet.list -- 每次最多只能传30个
|
|
|
cnt = 0
|
|
|
for id in pairs(SkinExcel) do
|
|
|
cnt = cnt + 1
|
|
|
skinNetGen(human,msgRet.list[cnt],id)
|
|
|
- --[[if cnt >= maxLen then
|
|
|
+ if cnt >= maxLen then
|
|
|
msgRet.list[0] = maxLen
|
|
|
cnt = 0
|
|
|
- msgRet.isEnd = 1
|
|
|
Msg.send(msgRet,human.fd)
|
|
|
- end]]
|
|
|
+ msgRet.isEnd = 2
|
|
|
+ bSend = true
|
|
|
+ end
|
|
|
end
|
|
|
msgRet.list[0] = cnt
|
|
|
- msgRet.isEnd = 2
|
|
|
+ if bSend then
|
|
|
+ msgRet.isEnd = 3
|
|
|
+ end
|
|
|
Msg.send(msgRet,human.fd)
|
|
|
end
|
|
|
|
|
|
@@ -491,4 +496,85 @@ function onFightBegin(human)
|
|
|
obj.isSysAttrChange = true
|
|
|
end
|
|
|
end
|
|
|
+end
|
|
|
+
|
|
|
+-- 登录检测英雄皮肤装备数据
|
|
|
+function OnLoginCheckEquipSkin(human, bSyncClient)
|
|
|
+ if not human then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ local skinBag = human.db.skinBag
|
|
|
+ if not skinBag then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ -- 检测的英雄
|
|
|
+ local tCheckHero = {}
|
|
|
+ for i = 1,#skinBag do
|
|
|
+ local data = skinBag[i]
|
|
|
+ local nSkinID = data.id
|
|
|
+
|
|
|
+ local tConfig = SkinExcel[nSkinID]
|
|
|
+ if not tConfig then
|
|
|
+ print("[OnLoginCheckEquipSkin] 严重问题, 找不到对应皮肤的配置 nSkinID = "..nSkinID)
|
|
|
+ break
|
|
|
+ end
|
|
|
+
|
|
|
+ local nHeroID = tConfig.heroId
|
|
|
+ tCheckHero[nHeroID] = tCheckHero[nHeroID] or {}
|
|
|
+
|
|
|
+ -- 找所有皮肤中是否有装备着的
|
|
|
+ local bEquip, nNowSkinID = false, 0
|
|
|
+ for nHaveSkinID, v in pairs(tCheckHero[nHeroID]) do
|
|
|
+ if v == 1 then
|
|
|
+ bEquip = true
|
|
|
+ nNowSkinID = nHaveSkinID
|
|
|
+ break
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ if data.state == 1 then
|
|
|
+ if false == bEquip then
|
|
|
+ tCheckHero[nHeroID][nSkinID] = 1 -- 装备标识
|
|
|
+
|
|
|
+ -- 所有英雄进行装备皮肤
|
|
|
+ local heroIdxList = HeroLogic.getHeroListById(human, nHeroID)
|
|
|
+ for _,idx in ipairs(heroIdxList) do
|
|
|
+ human.db.heroBag[idx].skinOn = nSkinID
|
|
|
+ RoleHeadLogic.setHead(human,tConfig.head,RoleHeadLogic.HEAD_TYPE_1)
|
|
|
+ if tConfig.body ~= 0 then
|
|
|
+ RoleHeadLogic.setHead(human,tConfig.body,RoleHeadLogic.HEAD_TYPE_3)
|
|
|
+ end
|
|
|
+ end
|
|
|
+ print("[OnLoginCheckEquipSkin] 对玩家英雄设置了皮肤 nSkinID = "..nSkinID.." nHeroID = "..nHeroID)
|
|
|
+ else
|
|
|
+ tCheckHero[nHeroID][nSkinID] = 0 -- 未装备标识
|
|
|
+ data.state = 0
|
|
|
+ print("[OnLoginCheckEquipSkin] 同一个英雄穿上了两个皮肤!! 进行修正 nHeroID = "
|
|
|
+ .. nHeroID.." nNowSkinID = "..nNowSkinID .. " nSkinID = "..nSkinID)
|
|
|
+ end
|
|
|
+ else
|
|
|
+ tCheckHero[nHeroID][nSkinID] = 0 -- 未装备标识
|
|
|
+ if false == bEquip then
|
|
|
+ local heroIdxList = HeroLogic.getHeroListById(human, nHeroID)
|
|
|
+ local heroCfg = HeroExcel[nHeroID]
|
|
|
+
|
|
|
+ for _,idx in ipairs(heroIdxList) do
|
|
|
+ -- 脱下皮肤 并且还原默认身体 icon和head
|
|
|
+ human.db.heroBag[idx].skinOn = nil
|
|
|
+ --local defaultHead = RoleHeadLogic.getDefaultHead(human)
|
|
|
+ RoleHeadLogic.setHead(human,heroCfg.head,RoleHeadLogic.HEAD_TYPE_1)
|
|
|
+
|
|
|
+ RoleHeadLogic.setHead(human,heroCfg.body,RoleHeadLogic.HEAD_TYPE_3)
|
|
|
+ end
|
|
|
+ print("[OnLoginCheckEquipSkin] 对玩家英雄设置取消了皮肤 nHeroID = "..nHeroID.." nSkinID = "..nSkinID)
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ if bSyncClient then
|
|
|
+ skinQuery(human)
|
|
|
+ print("[OnLoginCheckEquipSkin] 同步数据结束")
|
|
|
+ end
|
|
|
end
|