HomeServer/lualib-src/Server-main/AllServer/GameServer/Store.lua
2024-11-20 15:41:37 +08:00

564 lines
33 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local skynet = require "skynet"
local oo = require "Class"
local log = require "Log"
local pb = require "pb"
local dataType = require "DataType"
local errorInfo = require "ErrorInfo"
local bag = require "Bag"
local design = require "Design"
local Store = oo.class()
--初始化商城礼包数据
function Store:Init()
--StorePack_data.json
local StorePack = skynet.server.gameConfig.StorePack --获取配置文件StorePack中的数据
--StorePrice_data.json
local StorePrice = skynet.server.gameConfig.StorePrice --获取配置文件StorePrice中的数据
--House_data.json
local House = skynet.server.gameConfig.House --获取配置文件House中的数据
self.TriggerGiftBag = skynet.server.gameConfig.SValue.triggerGiftBag --获取配置文件SValue中的数据
self.StorePack = {}
--初始化礼包相关信息
for k , v in pairs(StorePack) do
local count = v.id
self.StorePack [ count ] = {}
self.StorePack [ count ].storeId = v.id --礼包id
self.StorePack [ count ].packType = v.packType --礼包类型 1常驻礼包 2限时礼包 3特殊礼包 4首充礼包 5非付费兑换礼包 6免费礼包 7功能触发礼包
self.StorePack [ count ].packUI = v.packUI --礼包界面 1-货币售卖 2-常规售卖 3-活动售卖 4-衣服售卖
self.StorePack [ count ].rewardId = v.rewardId --礼包对应的奖励id
self.StorePack [ count ].packLimit = v.packLimit --礼包对应的购买次数 例 [1,2] (1日限购 2周限购 3限购购买) 每日限购2次
if v.startTime==nil or v.startTime=='' then
self.StorePack [ count ].startTime = 0 --礼包对应的生效时间
else
self.StorePack [ count ].startTime = skynet.server.common:GetTime(v.startTime)
end
if v.endTime==nil or v.endTime=='' then
self.StorePack [ count ].failureTime = 0 --礼包对应的失效时间
else
self.StorePack [ count ].failureTime = skynet.server.common:GetTime(v.endTime)
end
self.StorePack [ count ].packGift = v.packGift --礼包赠礼 0=每次购买赠送 1=首次购买赠送 [赠礼类型,奖励id]
--找得到的礼包进行赋值 找不到的礼包赋值为0
self.StorePack [ count ].price = 0
for k2 ,v2 in pairs(StorePrice) do
if v.id==v2.storePackId then
self.StorePack [ count ].price = v2.price --礼包对应的价格
end
end
self.StorePack [ count ].packExchange = v.packExchange --存储兑换礼包的相关信息
self.StorePack [ count ].icon = v.icon --存储礼包入口
self.StorePack [ count ].reward = skynet.server.gameConfig:AwardInfo(v.rewardId) --礼包对应的奖励信息
end
self.House = {}
--存储功能触发礼包的相关信息
for k ,v in pairs(House) do
local houseId = v.id
self.House [ houseId ] = {}
self.House [ houseId ].id = houseId --户型对应的id
self.House [ houseId ].unlockPack = v.unlockPack --户型对应的解锁礼包
self.House [ houseId ].packValid = v.packValid --对应礼包的有效时间
end
end
--玩家礼包数据初始化
function Store:InitData( player )
--重置商城红点
skynet.server.msgTips:Reset(player , 27)
skynet.server.msgTips:Reset(player , 28)
skynet.server.msgTips:Reset(player , 29)
skynet.server.msgTips:Reset(player , 30)
--9级开启商城 判断是否是第一次加载
if player.gameData.level >= skynet.server.gameConfig.SValue.storeUnlockLvl and next(player.gameData.storePack.storePackInfo)==nil then
log.info("第一次加载商城")
for k ,v in pairs(self.StorePack) do
--如果是功能触发礼包需要判断是否满足条件
if 7==v.packType then
--满足购买了对应户型的条件 进行添加触发礼包
for k1 , v1 in pairs(player.gameData.house) do
if v1.status>=3 and next(self.House[v1.id].unlockPack)~=nil then
--添加该礼包
for k2 ,v2 in pairs(self.House[v1.id].unlockPack) do
if v2==v.storeId then
local count = v.storeId
player.gameData.storePack.storePackInfo[ count ] = {}
player.gameData.storePack.storePackInfo[ count ].storeId = v.storeId --礼包id
player.gameData.storePack.storePackInfo[ count ].buyTimes = 0 --玩家购买的次数
player.gameData.storePack.storePackInfo[ count ].historyBuyTimes = 0 --玩家历史购买次数
player.gameData.storePack.storePackInfo[ count ].buyStatus = false --玩家是否购买该礼包 付费成功 改为true ; 发放奖励后 改为false
player.gameData.storePack.storePackInfo[ count ].packLimit = v.packLimit --礼包对应的购买次数 例 [1,2] (1日限购 2周限购 3限购购买) 每日限购2次
player.gameData.storePack.storePackInfo[ count ].look = false --玩家是否看过该礼包(配合限时礼包)
--同时添加该礼包的存在时间
player.gameData.storePack.storePackInfo[ count ].startTime = os.time()
player.gameData.storePack.storePackInfo[ count ].failureTime = skynet.server.common:GetAfterSomeHour(self.House[v1.id].packValid)
player.gameData.storePack.storePackInfo[ count ].IsShow = true --是否继续展示packLimit[0] = 3 ,即限制购买的礼包 默认为true
self:SendIconPackToUser(player)
end
end
end
end
else
local count = v.storeId
player.gameData.storePack.storePackInfo[ count ] = {}
player.gameData.storePack.storePackInfo[ count ].storeId = v.storeId --礼包id
player.gameData.storePack.storePackInfo[ count ].buyTimes = 0 --玩家购买的次数
player.gameData.storePack.storePackInfo[ count ].historyBuyTimes = 0 --玩家历史购买次数
player.gameData.storePack.storePackInfo[ count ].buyStatus = false --玩家是否购买该礼包 付费成功 改为true ; 发放奖励后 改为false
player.gameData.storePack.storePackInfo[ count ].packLimit = v.packLimit --礼包对应的购买次数 例 [1,2] (1日限购 2周限购 3限购购买) 每日限购2次
if v.startTime>0 then
player.gameData.storePack.storePackInfo[ count ].look = false --玩家是否看过该礼包(配合限时礼包)
else
player.gameData.storePack.storePackInfo[ count ].look = true --普通礼包不用该字段
end
player.gameData.storePack.storePackInfo[ count ].IsShow = true --是否继续展示packLimit[0] = 3 ,即限制购买的礼包 默认为true
end
end
elseif player.gameData.level >= skynet.server.gameConfig.SValue.storeUnlockLvl and next(player.gameData.storePack.storePackInfo)~=nil then
log.info("第n次加载商城")
for k ,v in pairs(self.StorePack) do
--判断该礼包是否应该添加给该玩家
local isExist = false
for k1 , v1 in pairs(player.gameData.storePack.storePackInfo) do
if v.storeId==v1.storeId then
isExist = true
break
end
end
--将该礼包赋值给该玩家
if not isExist and 7~=v.packType then
local count = v.storeId
player.gameData.storePack.storePackInfo[ count ] = {}
player.gameData.storePack.storePackInfo[ count ].storeId = v.storeId --礼包id
player.gameData.storePack.storePackInfo[ count ].buyTimes = 0 --玩家购买的次数
player.gameData.storePack.storePackInfo[ count ].historyBuyTimes = 0 --玩家历史购买次数
player.gameData.storePack.storePackInfo[ count ].buyStatus = false --玩家是否购买该礼包 付费成功 改为true ; 发放奖励后 改为false
player.gameData.storePack.storePackInfo[ count ].packLimit = v.packLimit --礼包对应的购买次数 例 [1,2] (1日限购 2周限购 3限购购买) 每日限购2次
if v.startTime>0 then
player.gameData.storePack.storePackInfo[ count ].look = false --玩家是否看过该礼包(配合限时礼包)
else
player.gameData.storePack.storePackInfo[ count ].look = true --普通礼包不用该字段
end
player.gameData.storePack.storePackInfo[ count ].IsShow = true --是否继续展示packLimit[0] = 3 ,即限制购买的礼包 默认为true
elseif not isExist and 7==v.packType then
--满足购买了对应户型的条件 进行添加对应礼包
for k1 , v1 in pairs(player.gameData.house) do
if v1.status>=3 and next(self.House[v1.id].unlockPack)~=nil then
--添加该礼包
for k2 ,v2 in pairs(self.House[v1.id].unlockPack) do
if v2==v.storeId then
local count = v.storeId
player.gameData.storePack.storePackInfo[ count ] = {}
player.gameData.storePack.storePackInfo[ count ].storeId = v.storeId --礼包id
player.gameData.storePack.storePackInfo[ count ].buyTimes = 0 --玩家购买的次数
player.gameData.storePack.storePackInfo[ count ].historyBuyTimes = 0 --玩家历史购买次数
player.gameData.storePack.storePackInfo[ count ].buyStatus = false --玩家是否购买该礼包 付费成功 改为true ; 发放奖励后 改为false
player.gameData.storePack.storePackInfo[ count ].packLimit = v.packLimit --礼包对应的购买次数 例 [1,2] (1日限购 2周限购 3限购购买) 每日限购2次
player.gameData.storePack.storePackInfo[ count ].look = false --玩家是否看过该礼包(配合限时礼包)
--同时添加该礼包的存在时间
player.gameData.storePack.storePackInfo[ count ].startTime = os.time()
player.gameData.storePack.storePackInfo[ count ].failureTime = skynet.server.common:GetAfterSomeHour(self.House[v1.id].packValid)
player.gameData.storePack.storePackInfo[ count ].IsShow = true --是否继续展示packLimit[0] = 3 ,即限制购买的礼包 默认为true
self:SendIconPackToUser(player)
end
end
end
end
--满足购买了对应商城礼包的条件 进行添加触发礼包
local triggeredGiftBagTime = skynet.server.gameConfig.SValue.triggeredGiftBagTime --被触发的超优礼包id持续时间分钟
if v.storeId==triggeredGiftBagTime[1] then
for k1 ,v1 in pairs(player.gameData.storePack.storePackInfo) do
for k2 ,v2 in pairs(self.TriggerGiftBag) do
if v1.storeId==v2 and v1.buyTimes>0 then
local count = triggeredGiftBagTime[1]
player.gameData.storePack.storePackInfo[ count ] = {}
player.gameData.storePack.storePackInfo[ count ].storeId = triggeredGiftBagTime[1] --礼包id
player.gameData.storePack.storePackInfo[ count ].buyTimes = 0 --玩家购买的次数
player.gameData.storePack.storePackInfo[ count ].historyBuyTimes = 0 --玩家历史购买次数
player.gameData.storePack.storePackInfo[ count ].buyStatus = false --玩家是否购买该礼包 付费成功 改为true ; 发放奖励后 改为false
player.gameData.storePack.storePackInfo[ count ].packLimit = self.StorePack[triggeredGiftBagTime[1]].packLimit --礼包对应的购买次数 例 [1,2] (1日限购 2周限购 3限购购买) 每日限购2次
player.gameData.storePack.storePackInfo[ count ].look = false --玩家是否看过该礼包(配合限时礼包)
--同时添加该礼包的存在时间
player.gameData.storePack.storePackInfo[ count ].startTime = os.time()
player.gameData.storePack.storePackInfo[ count ].failureTime = skynet.server.common:GetAfterSomeHour(triggeredGiftBagTime[2])
player.gameData.storePack.storePackInfo[ count ].IsShow = true --是否继续展示packLimit[0] = 3 ,即限制购买的礼包 默认为true
self:SendIconPackToUser(player)
end
end
end
end
end
end
end
--如果有免费礼包可以获取则 商城显示红点
for k , v in pairs(self.StorePack) do
if v.packType==6 then
for k1 , v1 in pairs(player.gameData.storePack.storePackInfo) do
--找到对应礼包 判断是否可以领取
if v.storeId==v1.storeId and v1.buyTimes==0 then
if v.packUI==1 then
skynet.server.msgTips:Add(player , 27)
elseif v.packUI==2 then
skynet.server.msgTips:Add(player , 28)
elseif v.packUI==3 then
skynet.server.msgTips:Add(player , 29)
elseif v.packUI==4 then
skynet.server.msgTips:Add(player , 30)
end
break
end
end
end
end
--如果有限时礼包未查看 商城显示红点
local nowTime = os.time()
for k , v in pairs(player.gameData.storePack.storePackInfo) do
if v.look==false and v.IsShow then
for k1 , v1 in pairs(self.StorePack) do
if v.storeId==v1.storeId and nowTime>=v1.startTime then
if v1.packUI==1 then
skynet.server.msgTips:Add(player , 27)
elseif v1.packUI==2 then
skynet.server.msgTips:Add(player , 28)
elseif v1.packUI==3 then
skynet.server.msgTips:Add(player , 29)
elseif v1.packUI==4 then
skynet.server.msgTips:Add(player , 30)
end
end
end
end
end
end
--商城显示
function Store:Show( player , c2sData , s2cData )
c2sData.data = assert(pb.decode("C2SStoreShow", c2sData.data ))
local packUI = c2sData.data.packUI
local data = {}
data.packUI = packUI
data.storeInfos = {}
local nowTime = os.time()
for k , v in pairs(self.StorePack) do
--将满足条件的礼包进行显示
if v.packUI==packUI and nowTime>=v.startTime then
--获取玩家对应的礼包数据
for k1 ,v1 in pairs(player.gameData.storePack.storePackInfo) do
if v.storeId==v1.storeId and v1.look and v1.IsShow then
if v1.failureTime==nil and v.failureTime==0 then
table.insert(data.storeInfos , {storeId=v.storeId , buyTimes=v1.buyTimes , failureTime = v.failureTime , redDot = false})
elseif v1.failureTime==nil and v.failureTime~=0 and nowTime<=v.failureTime then
table.insert(data.storeInfos , {storeId=v.storeId , buyTimes=v1.buyTimes , failureTime = v.failureTime , redDot = false})
elseif v1.failureTime~=nil and nowTime<=v1.failureTime then
table.insert(data.storeInfos , {storeId=v.storeId , buyTimes=v1.buyTimes , failureTime = v1.failureTime , redDot = false})
end
elseif v.storeId==v1.storeId and not v1.look and v1.IsShow then
if v1.failureTime==nil and v.failureTime==0 then
table.insert(data.storeInfos , {storeId=v.storeId , buyTimes=v1.buyTimes , failureTime = v.failureTime , redDot = true})
elseif v1.failureTime==nil and v.failureTime~=0 and nowTime<=v.failureTime then
table.insert(data.storeInfos , {storeId=v.storeId , buyTimes=v1.buyTimes , failureTime = v.failureTime , redDot = true})
elseif v1.failureTime~=nil and nowTime<=v1.failureTime then
table.insert(data.storeInfos , {storeId=v.storeId , buyTimes=v1.buyTimes , failureTime = v1.failureTime , redDot = true})
end
self:DelRedDot(player , packUI)
--修改玩家对应礼包的读取状态
v1.look=true
end
end
end
end
s2cData.cmd = pb.enum("MsgType","CMD_S2C_StoreShow")
s2cData.data = assert(pb.encode("S2CStoreShow", data))
end
--商城购买
function Store:Buy( player , c2sData , s2cData )
c2sData.data = assert(pb.decode("C2SStoreBuy", c2sData.data ))
local storeId = c2sData.data.storeId
local buyCount = c2sData.data.buyCount
if buyCount<0 then
buyCount = -buyCount
end
local data = {}
data.storeInfo = {}
data.buyCount = buyCount
--判断是否进行发放物品
local nowTime = os.time()
for k ,v in pairs(self.StorePack) do
if v.storeId==storeId and nowTime >= v.startTime then
log.info("找到对应的礼包" .. skynet.server.common:TableToString(v))
if v.price>0 and next(v.packExchange) == nil then --判断礼包是不是付费礼包
if player.gameData.storePack.storePackInfo[storeId]~=nil and player.gameData.storePack.storePackInfo[storeId].buyStatus then
--if true then
--判断该礼包有没有额外奖励
if next(v.packGift)~=nil then
--将该礼包的奖励信息返回给客户端 并给该玩家增加对应的物品
for k1 ,v1 in pairs(player.gameData.storePack.storePackInfo) do
--判断购买次数是否有限制
if v1.storeId==storeId and next(v1.packLimit)==nil then
if v.packGift[ 1 ]==0 then
--每次购买赠送
player:GiveReward(v.rewardId,buyCount)
elseif v.packGift[ 1 ]==1 and player.gameData.storePack.storePackInfo[storeId].historyBuyTimes==0 then
--首次购买赠送
player:GiveReward(v.rewardId,buyCount)
end
--原本应获取的物品
player:GiveReward(v.rewardId,buyCount)
--修改玩家对应礼包的购买次数
self:ChangeBuyTimes( player , storeId)
break
elseif v1.storeId==storeId and v1.packLimit[2]-v1.buyTimes>=buyCount then --限制数-已购买数 >= 购买数
if v.packGift[ 1 ]==0 then
--每次购买赠送
player:GiveReward(v.rewardId,buyCount)
elseif v.packGift[ 1 ]==1 and player.gameData.storePack.storePackInfo[storeId].historyBuyTimes==0 then
--首次购买赠送
player:GiveReward(v.rewardId,buyCount)
end
--原本应获取的物品
player:GiveReward(v.rewardId,buyCount)
--修改玩家对应礼包的购买次数
self:ChangeBuyTimes( player , storeId)
break
elseif v1.storeId==storeId and v1.packLimit[2]-v1.buyTimes < buyCount then
s2cData.code=errorInfo.ErrorCode.StorePackBuyError
break
end
end
else
--将该礼包的奖励信息返回给客户端 并给该玩家增加对应的物品
for k1 ,v1 in pairs(player.gameData.storePack.storePackInfo) do
if v1.storeId==storeId and next(v1.packLimit)==nil then
--无限制
player:GiveReward(v.rewardId,buyCount)
--修改玩家对应礼包的购买次数
self:ChangeBuyTimes( player , storeId)
break
elseif v1.storeId==storeId and v1.packLimit[2]-v1.buyTimes>=buyCount then
--有限制
player:GiveReward(v.rewardId,buyCount)
--修改玩家对应礼包的购买次数
self:ChangeBuyTimes( player , storeId)
break
elseif v1.storeId==storeId and v1.packLimit[2]-v1.buyTimes < buyCount then
s2cData.code=errorInfo.ErrorCode.StorePackBuyError
break
end
end
end
--发放奖励后将状态修改为false
player.gameData.storePack.storePackInfo[storeId].buyStatus = false
break
else
s2cData.code=errorInfo.ErrorCode.StorePackBuyError
end
elseif next(v.packExchange) ~= nil then --判断是不是兑换礼包
--判断该礼包是否是无限制的
if next(v.packLimit)~=nil then
for k1 ,v1 in pairs(player.gameData.storePack.storePackInfo) do
--判断是否还可以购买
if v.packLimit[ 2 ] - v1.buyTimes >=buyCount and v1.storeId==storeId then
--先扣除玩家货币
local isSuccess = player:MoneyChange(v.packExchange[1] , -v.packExchange[2]*buyCount)
--再增加对应的物品
if isSuccess~=false then
player:GiveReward(v.rewardId,buyCount)
self:ChangeBuyTimes( player , storeId ,buyCount)
else
s2cData.code=errorInfo.ErrorCode.StorePackBuyError
end
break
end
end
else
for k1 ,v1 in pairs(player.gameData.storePack.storePackInfo) do
if v1.storeId==storeId then
--先扣除玩家货币
local isSuccess = player:MoneyChange(v.packExchange[1] , -v.packExchange[2]*buyCount)
--再增加对应的物品
if isSuccess~=false then
player:GiveReward(v.rewardId,buyCount)
self:ChangeBuyTimes( player , storeId ,buyCount)
else
s2cData.code=errorInfo.ErrorCode.StorePackBuyError
end
break
end
end
end
elseif v.packType==6 then --判断是不是免费礼包
--判断该礼包是否是无限制的
if next(v.packLimit)~=nil then
for k1 ,v1 in pairs(player.gameData.storePack.storePackInfo) do
if v1.storeId==storeId then
--判断是否还可以购买
if v.packLimit[ 2 ]-v1.buyTimes >= buyCount then
player:GiveReward(v.rewardId,buyCount)
self:ChangeBuyTimes( player , storeId ,buyCount)
--消除红点
self:DelRedDot( player , v.packUI)
else
s2cData.code=errorInfo.ErrorCode.StorePackBuyError
end
break
end
end
end
end
break
elseif v.storeId==storeId then
s2cData.code=errorInfo.ErrorCode.StorePackBuyError
break
end
end
for k ,v in pairs(player.gameData.storePack.storePackInfo) do
if storeId==v.storeId then
data.storeInfo = {storeId=storeId , buyTimes=v.buyTimes , failureTime = v.failureTime ,redDot = false}
end
end
--判断购买的礼包是否会触发相应礼包
for k , v in pairs(self.TriggerGiftBag) do
if storeId==v then
self:InitData(player)
--主动推送一下对应礼包的packUI的信息
local c2sData1 = {}
local s2cData1 = {}
local showData = {}
showData.packUI = self.StorePack[skynet.server.gameConfig.SValue.triggeredGiftBagTime[1]].packUI
c2sData1.data = assert(pb.encode("C2SStoreShow", showData))
self:Show(player , c2sData1 , s2cData1)
local data1 = assert(pb.decode("S2CStoreShow", s2cData1.data))
skynet.server.gameServer:SendMsgToUser(player.userId, "CMD_S2C_StoreShow", data1)
end
end
--判断购买的礼包是否达到购买限制 若达到则不进行商城展示了
for k , v in pairs(player.gameData.storePack.storePackInfo) do
if storeId == v.storeId and v.packLimit[1] == 3 and v.buyTimes>=v.packLimit [2] then
v.IsShow = false
end
end
s2cData.cmd = pb.enum("MsgType","CMD_S2C_StoreBuy")
s2cData.data = assert(pb.encode("S2CStoreBuy", data))
end
--主动推送含有icon的可购买礼包
function Store:SendIconPackToUser( player )
local data = {}
data.storeInfos ={}
--找到该玩家还可以购买含有icon的所有礼包
for k , v in pairs(self.StorePack) do
if v.icon ~= nil and v.icon~="" then
for k1 , v1 in pairs(player.gameData.storePack.storePackInfo) do
if v.storeId==v1.storeId and not v1.look and v1.buyTimes<v1.packLimit[ 2 ] and v1.IsShow then
table.insert(data.storeInfos , {storeId=v.storeId , buyTimes=v1.buyTimes , failureTime = v1.failureTime ,redDot = true})
elseif v.storeId==v1.storeId and v1.look and v1.buyTimes<v1.packLimit[ 2 ] and v1.IsShow then
table.insert(data.storeInfos , {storeId=v.storeId , buyTimes=v1.buyTimes , failureTime = v1.failureTime ,redDot = false})
end
end
end
end
skynet.server.gameServer:SendMsgToUser( player.userId , "CMD_S2C_StoreIconShow" , data )
end
--礼包购买
function Store:Pay( player , storeId)
local c2sData = {}
local s2cData = {}
local buyData = {}
buyData.storeId = storeId
--充值礼包默认为1
buyData.buyCount = 1
c2sData.data = assert(pb.encode("C2SStoreBuy", buyData))
for k , v in pairs(player.gameData.storePack.storePackInfo) do
--将对应礼包的购买状态置为 true
if v.storeId==storeId then
player.gameData.storePack.storePackInfo[storeId].buyStatus = true
end
end
self:Buy(player , c2sData , s2cData)
local data = assert(pb.decode("S2CStoreBuy", s2cData.data))
skynet.server.gameServer:SendMsgToUser(player.userId, "CMD_S2C_StoreBuy", data)
end
--发放物品并修改对应数据(取消)
function Store:SendAward( player , rewardId , reward , storeId , buyCount)
log.info("开始发放奖励")
local ticket1 = tostring(design.LotteryType_1)
local ticket2 = tostring(design.LotteryType_2)
local ticket3 = tostring(design.LotteryType_3)
--先发放货币奖励
local cfgReward = skynet.server.gameConfig:GetCurCfg("Reward" , rewardId )
if cfgReward.coin > 0 then
player:MoneyChange( dataType.MoneyType_Coin , cfgReward.coin )
log.info(string.format("玩家 %d 发放金币 %d" , player.userId,cfgReward.coin ))
end
if cfgReward.mapCoin > 0 then
player:MoneyChange( dataType.MoneyType_Map , cfgReward.mapCoin )
log.info(string.format("玩家 %d 发放地图币 %d" , player.userId,cfgReward.mapCoin ))
end
if cfgReward.voluteCoin > 0 then
player:MoneyChange( dataType.MoneyType_Volute , cfgReward.voluteCoin )
log.info(string.format("玩家 %d 发放蜗壳 %d" , player.userId,cfgReward.voluteCoin ))
end
--增加礼包中的物品奖励
if buyCount~=nil then
for k ,v in pairs(reward) do
--判断是不是抽奖卷 若是则直接增加,不通过礼包增加
if dataType.GoodsType_Prop == v.type then
if ticket1 == v.id then
player.gameData.design.ticket1 = player.gameData.design.ticket1 + buyCount*v.count
elseif ticket2 == v.id then
player.gameData.design.ticket2 = player.gameData.design.ticket2 + buyCount*v.count
elseif ticket3 == v.id then
player.gameData.design.ticket3 = player.gameData.design.ticket3 + buyCount*v.count
end
else
skynet.server.bag:AddGoods(player , v.type , v.id , buyCount*v.count)
end
end
else
for k ,v in pairs(reward) do
--判断是不是抽奖卷 若是则直接增加,不通过礼包增加
if dataType.GoodsType_Prop == v.type then
if ticket1 == v.id then
player.gameData.design.ticket1 = player.gameData.design.ticket1 + v.count
elseif ticket2 == v.id then
player.gameData.design.ticket2 = player.gameData.design.ticket2 + v.count
elseif ticket3 == v.id then
player.gameData.design.ticket3 = player.gameData.design.ticket3 + v.count
end
else
skynet.server.bag:AddGoods(player , v.type , v.id , v.count)
end
end
end
end
--修改玩家对应礼包的购买次数
function Store:ChangeBuyTimes( player , storeId , buyCount)
for k ,v in pairs(player.gameData.storePack.storePackInfo) do
if v.storeId==storeId and buyCount==nil then
player.gameData.storePack.storePackInfo[storeId].buyTimes=player.gameData.storePack.storePackInfo[storeId].buyTimes+1
player.gameData.storePack.storePackInfo[storeId].historyBuyTimes=player.gameData.storePack.storePackInfo[storeId].historyBuyTimes+1
elseif v.storeId==storeId and buyCount~=nil then
player.gameData.storePack.storePackInfo[storeId].buyTimes=player.gameData.storePack.storePackInfo[storeId].buyTimes+buyCount
player.gameData.storePack.storePackInfo[storeId].historyBuyTimes=player.gameData.storePack.storePackInfo[storeId].historyBuyTimes+buyCount
end
end
end
--消除红点
function Store:DelRedDot( player , packUI)
--消除红点
if packUI==1 then
skynet.server.msgTips:Reduce(player , 27)
elseif packUI==2 then
skynet.server.msgTips:Reduce(player , 28)
elseif packUI==3 then
skynet.server.msgTips:Reduce(player , 29)
elseif packUI==4 then
skynet.server.msgTips:Reduce(player , 30)
end
end
skynet.server.store = Store
return Store