Commit a93ce9c0bf887ecb35493fcc2353cb58e6cbb365

Authored by zhangqijia
1 parent 8c154e11

fix: 特殊道具兑换, 增加活动判断,活动过期则返回错误码

Showing 1 changed file with 22 additions and 12 deletions   Show diff stats
src/actions/RoleAction.lua
@@ -1716,31 +1716,41 @@ function _M.itemConvertSpecialRpc(agent, data) @@ -1716,31 +1716,41 @@ function _M.itemConvertSpecialRpc(agent, data)
1716 local role = agent.role 1716 local role = agent.role
1717 local msg = MsgPack.unpack(data) 1717 local msg = MsgPack.unpack(data)
1718 local itemId = msg.item_id 1718 local itemId = msg.item_id
1719 - local count = msg.count or 1  
1720 - local exchangeId = msg.exchange_id 1719 + local exchangeId = tonumber(msg.exchange_id)
1721 1720
1722 local itemData = csvdb["itemCsv"][itemId] 1721 local itemData = csvdb["itemCsv"][itemId]
1723 if not itemData then return 1 end 1722 if not itemData then return 1 end
1724 1723
1725 - if not role:checkItemEnough({[itemId] = count}) then return 2 end  
1726 - role:costItems({[itemId] = count}, {log = {desc = "itemConvertSpecial", int1 = itemId, int2 = itemData.type}})  
1727 -  
1728 local rechargeData = csvdb["shop_rechargeCsv"][exchangeId] 1724 local rechargeData = csvdb["shop_rechargeCsv"][exchangeId]
1729 if not rechargeData then 1725 if not rechargeData then
1730 skynet.error("[recharge] recharge id not exist", exchangeId) 1726 skynet.error("[recharge] recharge id not exist", exchangeId)
1731 - return 3 1727 + return 2
1732 end 1728 end
1733 - local reward = {}  
1734 - for i = 1, count do  
1735 - local tmpreward, _ = role.storeData:onBuyCard(rechargeData.type, rechargeData.id , rechargeData.activity_id) 1729 +
  1730 + if not role:checkItemEnough({[itemId] = 1}) then return 3 end
  1731 +
  1732 + local reward = {}
  1733 + if rechargeData.type == CardType.ActBattleCommandCard then
  1734 + if role.activity:isOpenById(rechargeData.activity_id, "ActShopGoods") then
  1735 + local tmpreward, _ = role.storeData:onBuyCard(rechargeData.type, rechargeData.time, rechargeData.id, rechargeData.activity_id)
  1736 + if tmpreward then
  1737 + table.rewardMerge(reward, tmpreward)
  1738 + end
  1739 + else
  1740 + skynet.error("not open id: ".. rechargeData.id .. "; actid: " .. rechargeData.activity_id)
  1741 + SendPacket(actionCodes.Role_itemConvertSpecialRpc, MsgPack.pack({result = 4}))
  1742 + return true
  1743 + end
  1744 + else
  1745 + local tmpreward, _ = role.storeData:onBuyCard(rechargeData.type, rechargeData.time, rechargeData.id, rechargeData.activity_id)
1736 if tmpreward then 1746 if tmpreward then
1737 table.rewardMerge(reward, tmpreward) 1747 table.rewardMerge(reward, tmpreward)
1738 - else  
1739 - return  
1740 end 1748 end
1741 end 1749 end
1742 1750
1743 - SendPacket(actionCodes.Role_itemConvertMonthCardRpc, MsgPack.pack(role:packReward(reward))) 1751 + role:costItems({[itemId] = 1}, {log = {desc = "itemConvertSpecial", int1 = itemId, int2 = itemData.type}})
  1752 +
  1753 + SendPacket(actionCodes.Role_itemConvertSpecialRpc, MsgPack.pack(role:packReward(reward)))
1744 return true 1754 return true
1745 end 1755 end
1746 1756