715 lines
23 KiB
Lua
715 lines
23 KiB
Lua
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 activity = require "Activity"
|
||
local json =require "json"
|
||
local ActivityMatchStuff = oo.class()
|
||
|
||
ActivityMatchStuff.ActivityType = dataType.ActivityType_MatchStuff
|
||
|
||
--构造函数
|
||
function ActivityMatchStuff:Init()
|
||
|
||
end
|
||
|
||
-- 每次登录需要进行修改的数据
|
||
function ActivityMatchStuff:LoginInitData(player)
|
||
|
||
--log.debug("好物匹配 登录初始化")
|
||
|
||
-- 重置红点
|
||
skynet.server.msgTips:Reset(player, 104)
|
||
skynet.server.msgTips:Reset(player, 105)
|
||
|
||
--获取玩家数据 检查活动是否结束,并结算银星币
|
||
if not next(player.gameData.matchStuffMap) then
|
||
return
|
||
end
|
||
|
||
--获取开启的活动
|
||
local activityId, startTime, endTime, id = activity:GetActivityInfo(player, ActivityMatchStuff.ActivityType)
|
||
|
||
--循环配置
|
||
--没有开启的活动处理银星币结算
|
||
for key, matchStuff in pairs(player.gameData.matchStuffMap) do
|
||
if (key ~= activityId and activityId == 0) and not matchStuff.isSettle then
|
||
|
||
self:settle(player,matchStuff)
|
||
return
|
||
end
|
||
end
|
||
end
|
||
|
||
function ActivityMatchStuff:settle(player,matchStuff)
|
||
|
||
-- 查询道具是否足够-道具id 是26 银星币 这里写死以往规则
|
||
local goodsCount=skynet.server.bag:GetGoodsCount(player,dataType.GoodsType_Prop, 26)
|
||
if goodsCount<=0 then
|
||
log.debug(string.format("银星币无需结算,玩家:%s,银星币数量:%d",player.userId,skynet.server.bag:GetGoodsCount(player,dataType.GoodsType_Prop, 26)))
|
||
|
||
matchStuff.isSettle = true
|
||
return
|
||
end
|
||
|
||
local cfgSValue = skynet.server.gameConfig:GetAllCfg( "SValue")
|
||
|
||
--计算可以获取的金币数量
|
||
local coinCount= goodsCount * tonumber(cfgSValue.silverCoinIntegralCoin)
|
||
if coinCount<tonumber(cfgSValue.silverCoinIntegralCoinLimit) then
|
||
coinCount=tonumber(cfgSValue.silverCoinIntegralCoinLimit)
|
||
end
|
||
|
||
--扣除道具--道具id 是26 银星币 这里写死以往规则
|
||
skynet.server.bag:RemoveGoods(player,dataType.GoodsType_Prop, 26,goodsCount)
|
||
|
||
--发放金币
|
||
local eventId = pb.enum("EnumMoneyChangeEventID","EventID_117")
|
||
player:MoneyChange(pb.enum("EnumGoodsType","Coin") , coinCount , eventId)
|
||
|
||
matchStuff.isSettle = true
|
||
end
|
||
|
||
--初始玩家数据
|
||
function ActivityMatchStuff:CheckData(player)
|
||
if player==nil then
|
||
--log.debug("好物匹配活动checkdata, player is nil")
|
||
return 0
|
||
end
|
||
--获取开启的活动
|
||
local activityId, startTime, endTime, id = activity:GetActivityInfo(player, ActivityMatchStuff.ActivityType)
|
||
|
||
--没有开启的活动
|
||
if activityId == 0 then
|
||
--log.debug("好物匹配活动未开启-未获取到有效的活动1")
|
||
return 0
|
||
end
|
||
|
||
local cfgActivity = skynet.server.gameConfig:GetPlayerAllCfg(player, "Activity")
|
||
if cfgActivity == nil then
|
||
--log.debug("好物匹配活动未开启-未获取到有效的活动2")
|
||
return 0
|
||
end
|
||
|
||
local ifContain = false
|
||
|
||
for index, v in pairs(cfgActivity) do
|
||
if v.id==id and v.level<=player.gameData.level then
|
||
ifContain=true
|
||
break
|
||
end
|
||
end
|
||
|
||
if not ifContain then
|
||
|
||
--log.debug("好物匹配活动未开启-玩家未满足条件")
|
||
return 0
|
||
end
|
||
|
||
--初始化
|
||
if player.gameData.matchStuffMap==nil then
|
||
player.gameData.matchStuffMap={}
|
||
end
|
||
|
||
--如果玩家已经存在活动,检查是否需要重置数据
|
||
if player.gameData.matchStuffMap[activityId] then
|
||
--获取当前时间
|
||
local now = os.date("*t", skynet.GetTime())
|
||
local today = os.time({ year = now.year, month=now.month, day=now.day })
|
||
|
||
--是否需要重置数据
|
||
if player.gameData.matchStuffMap[activityId].ActivityTime==nil
|
||
or player.gameData.matchStuffMap[activityId].ActivityTime~=today then
|
||
|
||
--获取配置
|
||
local cfMatchStuff=self:GetMatchStuffConfig(player,activityId)
|
||
player.gameData.matchStuffMap[activityId].ActivityTime=today
|
||
|
||
--重置数据
|
||
player.gameData.matchStuffMap[activityId].magnifierAd=cfMatchStuff~=nil and cfMatchStuff.magnifierAd or 0 --广告次数
|
||
player.gameData.matchStuffMap[activityId].magnifierDaily=cfMatchStuff~=nil and cfMatchStuff.magnifierDaily or 0--剩余放大镜次数
|
||
end
|
||
|
||
--删除过期活动,减少数据产生
|
||
local removeKeyList = {}
|
||
for exceedActivityId, value in pairs(player.gameData.matchStuffMap) do
|
||
if exceedActivityId ~= activityId and value.id ~= id then
|
||
table.insert(removeKeyList, exceedActivityId)
|
||
end
|
||
end
|
||
if next(removeKeyList) then
|
||
for _, removeKey in ipairs(removeKeyList) do
|
||
player.gameData.matchStuffMap[removeKey]=nil
|
||
end
|
||
end
|
||
|
||
return activityId
|
||
end
|
||
|
||
local levelId=0
|
||
local magnifierDaily=0
|
||
local magnifierAd=0
|
||
|
||
local cfMatchStuff=self:GetMatchStuffConfig(player,activityId)
|
||
|
||
--未获取到有效的活动
|
||
if cfMatchStuff==nil then
|
||
return activityId
|
||
end
|
||
|
||
if cfMatchStuff~=nil then
|
||
levelId= GetNextLevel(cfMatchStuff.levelContent,0)
|
||
magnifierDaily=cfMatchStuff.magnifierDaily
|
||
magnifierAd=cfMatchStuff.magnifierAd
|
||
end
|
||
|
||
--存在活动初始化玩家数据
|
||
local playerActivityMatchSuff = {}
|
||
playerActivityMatchSuff.id = id
|
||
playerActivityMatchSuff.activityId = activityId
|
||
playerActivityMatchSuff.levelId = levelId --默认关卡
|
||
playerActivityMatchSuff.magnifierDaily=magnifierDaily--剩余放大镜次数
|
||
playerActivityMatchSuff.magnifierAd=magnifierAd --广告次数
|
||
playerActivityMatchSuff.LevelisFinish=false--是否完成挑战
|
||
playerActivityMatchSuff.StoreInfo={}
|
||
|
||
local now = os.date("*t", skynet.GetTime())
|
||
playerActivityMatchSuff.ActivityTime=os.time({ year = now.year, month=now.month, day=now.day })
|
||
|
||
--更新缓存
|
||
player.gameData.matchStuffMap[activityId] = playerActivityMatchSuff
|
||
|
||
return activityId
|
||
|
||
end
|
||
|
||
--商城是否可以购买
|
||
function ActivityMatchStuff:IsCanBuy(player)
|
||
|
||
local isCanBuy=false
|
||
|
||
--不存在开启的活动
|
||
local activityId=ActivityMatchStuff:CheckData(player)
|
||
|
||
--活动未开启,是否通关
|
||
if activityId==0 or player.gameData.matchStuffMap[activityId].LevelisFinish then
|
||
return isCanBuy
|
||
end
|
||
|
||
--获取该活动的默认初始关卡
|
||
local cfMatchStuffStores=skynet.server.gameConfig:GetPlayerAllCfg(player, "MatchStuffStore")
|
||
if cfMatchStuffStores==nil then
|
||
return isCanBuy
|
||
end
|
||
|
||
--循环配置
|
||
for key, cfMatchStuffStore in pairs(cfMatchStuffStores) do
|
||
|
||
-- 是否可以购买
|
||
if cfMatchStuffStore.limitExchange>0
|
||
and player.gameData.matchStuffMap[activityId]~=nil
|
||
and player.gameData.matchStuffMap[activityId].StoreInfo[cfMatchStuffStore.id]~=nil
|
||
and player.gameData.matchStuffMap[activityId].StoreInfo[cfMatchStuffStore.id].BuyCount>=cfMatchStuffStore.limitExchange
|
||
then
|
||
goto continue
|
||
end
|
||
|
||
-- 查询道具是否足够-道具id 是26 银星币 这里写死以往规则
|
||
if skynet.server.bag:GetGoodsCount(player,dataType.GoodsType_Prop, 26)<cfMatchStuffStore.silverCoinPrice then
|
||
goto continue
|
||
end
|
||
|
||
--可以购买
|
||
isCanBuy= true
|
||
break
|
||
|
||
--提前结束当前循环
|
||
::continue::
|
||
end
|
||
|
||
return isCanBuy
|
||
end
|
||
|
||
--获取下一个挑战节点
|
||
function GetNextLevel(tbl,thisLevel)
|
||
local nextLevel = thisLevel
|
||
|
||
if tbl==nil or #tbl==0 then
|
||
log.error("GetNextLevel tbl==nil or #tbl==0")
|
||
return nextLevel
|
||
end
|
||
|
||
for _, value in ipairs(tbl) do
|
||
if value > thisLevel and (nextLevel > value or nextLevel == 0 or nextLevel == thisLevel) then
|
||
nextLevel = value
|
||
end
|
||
end
|
||
return nextLevel
|
||
end
|
||
|
||
--获取配置信息
|
||
function ActivityMatchStuff:GetMatchStuffConfig(player,activityId)
|
||
|
||
local cfMatchStuff=nil
|
||
|
||
--获取该活动的默认初始关卡
|
||
local cfMatchStuffs=skynet.server.gameConfig:GetPlayerAllCfg(player, "MatchStuff")
|
||
if cfMatchStuffs==nil then
|
||
|
||
--log.debug("cfMatchStuff is nil")
|
||
return cfMatchStuff
|
||
end
|
||
|
||
for index, value in pairs(cfMatchStuffs) do
|
||
if value.id==activityId then
|
||
cfMatchStuff=value
|
||
break
|
||
end
|
||
end
|
||
|
||
return cfMatchStuff
|
||
end
|
||
|
||
--获取显示信息
|
||
function ActivityMatchStuff:Show( player , c2sData , s2cData )
|
||
|
||
c2sData.data = assert(pb.decode("C2SActivityMatchStuffShow", c2sData.data ))
|
||
s2cData.cmd = pb.enum("MsgType","CMD_S2C_ActivityMatchStuffShow")
|
||
local data = {}
|
||
data.magnifyingGlassNum = 0
|
||
data.curLevelId = 0
|
||
data.haveWatchAD = 0
|
||
|
||
--不存在开启的活动
|
||
local activityId=self:CheckData(player)
|
||
|
||
--活动未开启
|
||
if activityId==0 then
|
||
--log.debug("activityId==0")
|
||
s2cData.code = errorInfo.ErrorCode.ActivityClosed
|
||
return
|
||
end
|
||
|
||
if player.gameData.matchStuffMap[activityId]~=nil then
|
||
|
||
--处理错误数据
|
||
if player.gameData.matchStuffMap[activityId].magnifierDaily < 0 then
|
||
player.gameData.matchStuffMap[activityId].magnifierDaily = 0
|
||
end
|
||
|
||
data.magnifyingGlassNum = player.gameData.matchStuffMap[activityId].magnifierDaily
|
||
data.curLevelId = player.gameData.matchStuffMap[activityId].levelId
|
||
data.haveWatchAD = player.gameData.matchStuffMap[activityId].magnifierAd
|
||
data.curLevelisFinish=player.gameData.matchStuffMap[activityId].LevelisFinish
|
||
end
|
||
|
||
s2cData.data = assert(pb.encode("S2CActivityMatchStuffShow", data))
|
||
end
|
||
|
||
--获取商店显示信息
|
||
function ActivityMatchStuff:ShopShow( player , c2sData , s2cData )
|
||
c2sData.data = assert(pb.decode("C2SActivityMatchStuffShopShow", c2sData.data ))
|
||
s2cData.cmd = pb.enum("MsgType","CMD_S2C_ActivityMatchStuffShopShow")
|
||
local data = {}
|
||
data.shopGoodsInfos = {}
|
||
|
||
|
||
--不存在开启的活动
|
||
local activityId=self:CheckData(player)
|
||
|
||
--活动未开启
|
||
if activityId==0 then
|
||
s2cData.code = errorInfo.ErrorCode.ActivityClosed
|
||
return
|
||
end
|
||
|
||
--获取该活动的默认初始关卡
|
||
local cfMatchStuffStore=skynet.server.gameConfig:GetPlayerAllCfg(player, "MatchStuffStore")
|
||
if cfMatchStuffStore==nil then
|
||
return
|
||
end
|
||
|
||
local cfgMatchStuff=self:GetMatchStuffConfig(player,activityId)
|
||
if cfgMatchStuff==nil then
|
||
return
|
||
end
|
||
|
||
--循环获取商城配置
|
||
for k,cofg in pairs(cfMatchStuffStore) do
|
||
|
||
local buyCount=0
|
||
--是否存在玩家数据
|
||
if player.gameData.matchStuffMap[activityId]~=nil and player.gameData.matchStuffMap[activityId].StoreInfo[cofg.id]~=nil then
|
||
buyCount=player.gameData.matchStuffMap[activityId].StoreInfo[cofg.id].BuyCount
|
||
end
|
||
|
||
local shopGoodsInfos={}
|
||
shopGoodsInfos.id=cofg.id
|
||
shopGoodsInfos.buyCount=buyCount
|
||
shopGoodsInfos.todayBuyCount=0
|
||
|
||
local index=0
|
||
for tmpIndex, value in ipairs(cfgMatchStuff.silverStoreContent) do
|
||
if value == cofg.id then
|
||
index=tmpIndex
|
||
end
|
||
end
|
||
|
||
--添加到列表
|
||
data.shopGoodsInfos[index]=shopGoodsInfos
|
||
end
|
||
|
||
s2cData.data = assert(pb.encode("S2CActivityMatchStuffShopShow", data))
|
||
end
|
||
|
||
--是否可以挑战
|
||
function ActivityMatchStuff:CanChallenge( player )
|
||
|
||
--活动未开启
|
||
local activityId=self:CheckData(player)
|
||
if activityId == 0 then
|
||
return false
|
||
end
|
||
|
||
--放大镜不足
|
||
if player.gameData.matchStuffMap[activityId].magnifierDaily<=0 then
|
||
return false
|
||
end
|
||
|
||
--已全部挑战
|
||
if player.gameData.matchStuffMap[activityId].LevelisFinish then
|
||
return false
|
||
end
|
||
|
||
return true
|
||
end
|
||
|
||
--商品购买
|
||
function ActivityMatchStuff:ShopBuy( player , c2sData , s2cData )
|
||
c2sData.data = assert(pb.decode("C2SActivityMatchStuffShopBuy", c2sData.data ))
|
||
s2cData.cmd = pb.enum("MsgType","CMD_S2C_ActivityMatchStuffShopBuy")
|
||
|
||
--参数
|
||
local goodsId = c2sData.data.goodsId
|
||
|
||
--返回信息
|
||
local data = {}
|
||
data.buyShopGoodsInfo = {}
|
||
|
||
--不存在开启的活动
|
||
local activityId=self:CheckData(player)
|
||
|
||
--活动未开启
|
||
if activityId==0 then
|
||
s2cData.code = errorInfo.ErrorCode.ActivityClosed
|
||
--log.debug("errorInfo.ErrorCode.ActivityClosed")
|
||
return
|
||
end
|
||
|
||
--获取该活动的默认初始关卡
|
||
local cfMatchStuffStore=skynet.server.gameConfig:GetPlayerAllCfg(player, "MatchStuffStore")
|
||
if cfMatchStuffStore==nil then
|
||
--log.debug("cfMatchStuffStore==nil ")
|
||
return
|
||
end
|
||
|
||
local storeCofg=nil
|
||
|
||
--循环获取商城配置
|
||
for index, cofg in pairs(cfMatchStuffStore) do
|
||
if cofg.id==goodsId then
|
||
storeCofg=cofg
|
||
break
|
||
end
|
||
end
|
||
|
||
--配置不存在
|
||
if storeCofg==nil then
|
||
s2cData.code = errorInfo.ErrorCode.NoExistShopType
|
||
--log.debug("storeCofg==nil ")
|
||
return
|
||
end
|
||
|
||
--判断是否限购
|
||
if storeCofg.limitExchange>0
|
||
and player.gameData.matchStuffMap[activityId]~=nil
|
||
and player.gameData.matchStuffMap[activityId].StoreInfo[goodsId]~=nil
|
||
and player.gameData.matchStuffMap[activityId].StoreInfo[goodsId].BuyCount>=storeCofg.limitExchange
|
||
then
|
||
s2cData.code = errorInfo.ErrorCode.StoreMaxLimit
|
||
--log.debug("判断是否限购")
|
||
return
|
||
end
|
||
|
||
-- 查询道具是否足够-道具id 是26 银星币 这里写死以往规则
|
||
if skynet.server.bag:GetGoodsCount(player,dataType.GoodsType_Prop, 26)<storeCofg.silverCoinPrice then
|
||
s2cData.code = errorInfo.ErrorCode.SilverCoinPriceNotEnough
|
||
--log.debug( string.format(" skynet.server.bag:GetGoodsCount(player,dataType.GoodsType_Prop, 26)>=storeCofg.silverCoinPrice then,playerPrice:%d, Price:%d",skynet.server.bag:GetGoodsCount(player,dataType.GoodsType_Prop, 26),storeCofg.silverCoinPrice))
|
||
return
|
||
end
|
||
|
||
--扣除道具--道具id 是26 银星币 这里写死以往规则
|
||
skynet.server.bag:RemoveGoods(player,dataType.GoodsType_Prop, 26,storeCofg.silverCoinPrice)
|
||
|
||
--发放奖励
|
||
local eventId = pb.enum("EnumMoneyChangeEventID","EventID_114")
|
||
player:GiveReward(storeCofg.rewardId ,eventId,1)
|
||
|
||
--添加购买次数
|
||
if player.gameData.matchStuffMap[activityId].StoreInfo[goodsId]==nil then
|
||
player.gameData.matchStuffMap[activityId].StoreInfo[goodsId]={ BuyCount=0 }
|
||
end
|
||
|
||
player.gameData.matchStuffMap[activityId].StoreInfo[goodsId].BuyCount =player.gameData.matchStuffMap[activityId].StoreInfo[goodsId].BuyCount + 1
|
||
|
||
--返回购买结果
|
||
data.buyShopGoodsInfo={id=storeCofg.id,buyCount=player.gameData.matchStuffMap[activityId].StoreInfo[goodsId].BuyCount,todayBuyCount=0}
|
||
|
||
--处理红点
|
||
if not self:IsCanBuy(player) then
|
||
skynet.server.msgTips:ReduceAll(player, 105)
|
||
end
|
||
|
||
s2cData.data = assert(pb.encode("S2CActivityMatchStuffShopBuy", data))
|
||
end
|
||
|
||
--游戏开始
|
||
function ActivityMatchStuff:GameStart(player,c2sData,s2cData)
|
||
c2sData.data = assert(pb.decode("C2SActivityMatchStuffGameStart", c2sData.data ))
|
||
s2cData.cmd = pb.enum("MsgType","CMD_S2C_ActivityMatchStuffGameStart")
|
||
|
||
--参数
|
||
local curLevelId = c2sData.data.curLevelId
|
||
|
||
--返回信息
|
||
local data = {}
|
||
|
||
--不存在开启的活动
|
||
local activityId=self:CheckData(player)
|
||
|
||
--活动未开启
|
||
if activityId==0 then
|
||
s2cData.code = errorInfo.ErrorCode.ActivityClosed
|
||
return
|
||
end
|
||
|
||
local matchStuff=player.gameData.matchStuffMap[activityId]
|
||
|
||
--获取当前可以挑战的关卡
|
||
if curLevelId~=matchStuff.levelId then
|
||
|
||
s2cData.code = errorInfo.ErrorCode.ThisNodeNotFight
|
||
return
|
||
end
|
||
|
||
--添加挑战状态
|
||
matchStuff.isFightingLevel = true
|
||
|
||
--log.debug("好物匹配 玩家开始游戏 !")
|
||
|
||
s2cData.data = assert(pb.encode("S2CActivityMatchStuffGameStart", data))
|
||
|
||
end
|
||
|
||
--游戏结束
|
||
function ActivityMatchStuff:GameOver(player,c2sData,s2cData)
|
||
c2sData.data = assert(pb.decode("C2SActivityMatchStuffGameOver", c2sData.data ))
|
||
s2cData.cmd = pb.enum("MsgType","CMD_S2C_ActivityMatchStuffGameOver")
|
||
|
||
--参数
|
||
local isFinish = c2sData.data.isFinish
|
||
local extraRewards=c2sData.data.extraRewards
|
||
|
||
--返回信息
|
||
local data = {}
|
||
|
||
--不存在开启的活动
|
||
local activityId=self:CheckData(player)
|
||
|
||
--活动未开启
|
||
if activityId==0 then
|
||
s2cData.code = errorInfo.ErrorCode.ActivityClosed
|
||
return
|
||
end
|
||
|
||
local matchStuff=player.gameData.matchStuffMap[activityId]
|
||
|
||
--消耗资源是否足够
|
||
if matchStuff.magnifierDaily <= 0 then
|
||
s2cData.code = errorInfo.ErrorCode.NoEnoughMoney
|
||
return
|
||
end
|
||
|
||
--是否可以结束挑战
|
||
if not matchStuff.isFightingLevel then
|
||
s2cData.code = errorInfo.ErrorCode.AlreadyFinish
|
||
return
|
||
end
|
||
|
||
--更新缓存
|
||
if isFinish then
|
||
|
||
--获取配置
|
||
local matchStuffCfg={}
|
||
local matchStuffCfgs= skynet.server.gameConfig:GetPlayerAllCfg(player, "MatchStuff")
|
||
|
||
for index,data in pairs(matchStuffCfgs) do
|
||
if data.id==activityId then
|
||
matchStuffCfg=data
|
||
end
|
||
end
|
||
|
||
if matchStuffCfg==nil then
|
||
s2cData.code = errorInfo.ErrorCode.NoGoodsID
|
||
return
|
||
end
|
||
|
||
--当前节点
|
||
local levelId=player.gameData.matchStuffMap[activityId].levelId
|
||
|
||
--获取节点配置
|
||
local cfgMatchStuffLevel=nil
|
||
local cfgMatchStuffLevels=skynet.server.gameConfig:GetPlayerAllCfg(player, "MatchStuffLevel")
|
||
for index,data in pairs(cfgMatchStuffLevels) do
|
||
if data.level==levelId then
|
||
cfgMatchStuffLevel=data
|
||
end
|
||
end
|
||
|
||
if cfgMatchStuffLevel==nil then
|
||
s2cData.code = errorInfo.ErrorCode.NoGoodsID
|
||
return
|
||
end
|
||
|
||
--发奖节点奖励
|
||
local eventId = pb.enum("EnumMoneyChangeEventID","EventID_115")
|
||
player:GiveReward(cfgMatchStuffLevel.levelReward ,eventId,1)
|
||
|
||
--获取下一个挑战节点
|
||
local nextLevelId= GetNextLevel(matchStuffCfg.levelContent,levelId)
|
||
|
||
if nextLevelId==levelId then
|
||
--log.debug(string.format("玩家 % d 挑战节点 %d 已完成",player.id,levelId))
|
||
player.gameData.matchStuffMap[activityId].LevelisFinish=true
|
||
end
|
||
|
||
--log.debug(string.format("nextLevelId:%d",nextLevelId))
|
||
player.gameData.matchStuffMap[activityId].levelId = nextLevelId
|
||
|
||
-- 发放额外奖励
|
||
if #matchStuffCfg.timeExchangeSilverCoin==2 then
|
||
local totalCoin=matchStuffCfg.timeExchangeSilverCoin[2]*extraRewards
|
||
skynet.server.bag:AddGoods(player,dataType.GoodsType_Prop, 26,totalCoin)
|
||
end
|
||
end
|
||
|
||
--消耗放大镜
|
||
player.gameData.matchStuffMap[activityId].magnifierDaily =player.gameData.matchStuffMap[activityId].magnifierDaily -1
|
||
|
||
data.magnifyingGlassNum = player.gameData.matchStuffMap[activityId].magnifierDaily
|
||
data.curLevelId = player.gameData.matchStuffMap[activityId].levelId
|
||
data.curLevelisFinish = player.gameData.matchStuffMap[activityId].LevelisFinish
|
||
|
||
--处理红点
|
||
if self:CanChallenge(player) then
|
||
skynet.server.msgTips:ReduceAll(player, 104)
|
||
end
|
||
|
||
--处理商城红点
|
||
if self:IsCanBuy(player) then
|
||
skynet.server.msgTips:Add(player, 105)
|
||
end
|
||
|
||
--处理当前挑战关卡
|
||
matchStuff.isFightingLevel = false
|
||
|
||
s2cData.data = assert(pb.encode("S2CActivityMatchStuffGameOver", data))
|
||
|
||
end
|
||
|
||
--购买放大镜
|
||
function ActivityMatchStuff:MagnifyingGlassSupplement(player,c2sData,s2cData)
|
||
c2sData.data = assert(pb.decode("C2SActivityMatchStuffMagnifyingGlassSupplement", c2sData.data ))
|
||
s2cData.cmd = pb.enum("MsgType","CMD_S2C_ActivityMatchStuffMagnifyingGlassSupplement")
|
||
|
||
--参数
|
||
local methodType = c2sData.data.methodType
|
||
|
||
--返回信息
|
||
local data = {}
|
||
|
||
--不存在开启的活动
|
||
local activityId=self:CheckData(player)
|
||
|
||
--活动未开启
|
||
if activityId==0 then
|
||
s2cData.code = errorInfo.ErrorCode.ActivityClosed
|
||
return
|
||
end
|
||
|
||
--获取配置
|
||
local matchStuffCfg={}
|
||
local matchStuffCfgs= skynet.server.gameConfig:GetPlayerAllCfg(player, "MatchStuff")
|
||
|
||
for index,data in pairs(matchStuffCfgs) do
|
||
if data.id==activityId then
|
||
matchStuffCfg=data
|
||
end
|
||
end
|
||
|
||
if matchStuffCfg==nil then
|
||
s2cData.code = errorInfo.ErrorCode.NoGoodsID
|
||
return
|
||
end
|
||
|
||
--1-蜗壳币
|
||
if methodType == dataType.AccelerateType_Volute then
|
||
|
||
-- 消耗玩家蜗壳币
|
||
local eventId = pb.enum("EnumMoneyChangeEventID","EventID_116")
|
||
if player:MoneyChange(dataType.MoneyType_Volute, -matchStuffCfg.magnifierPrice, eventId) then
|
||
|
||
-- -- 使用蜗壳币进行刷新 修改相关数据
|
||
-- player.gameData.todayGain.updateUseCount = player.gameData.todayGain.updateUseCount + 1
|
||
-- if player.gameData.todayGain.updateUseCount == cfgSValue.triggerUpdatePack[1] then
|
||
-- skynet.server.store:TriggerPack(player, skynet.server.store.TriggerPack_Update)
|
||
-- end
|
||
else
|
||
s2cData.code = errorInfo.ErrorCode.NoEnoughMoney
|
||
return
|
||
end
|
||
elseif methodType == dataType.AccelerateType_WatchAD then -- 4-观看广告
|
||
--判断进入观看次数
|
||
if player.gameData.matchStuffMap[activityId].magnifierAd==0 then
|
||
--log.debug(string.format("观看次数已用完,activityId:%d,已看次数:%d,总次数:%d",activityId,matchStuffCfg.magnifierAd-player.gameData.matchStuffMap[activityId].magnifierAd,matchStuffCfg.magnifierAd))
|
||
s2cData.code = errorInfo.ErrorCode.OPFailed
|
||
return
|
||
end
|
||
|
||
player.gameData.matchStuffMap[activityId].magnifierAd= player.gameData.matchStuffMap[activityId].magnifierAd - 1
|
||
|
||
else--参数不支持
|
||
s2cData.code = errorInfo.ErrorCode.ErrRequestParam
|
||
return
|
||
end
|
||
|
||
--添加放大镜
|
||
player.gameData.matchStuffMap[activityId].magnifierDaily =player.gameData.matchStuffMap[activityId].magnifierDaily +1
|
||
|
||
if self:CanChallenge(player) then
|
||
--处理红点
|
||
skynet.server.msgTips:Add(player, 104)
|
||
end
|
||
|
||
--日志
|
||
--log.debug(string.format("玩家 %d 购买放大镜 1 购买类型" , player.userId , methodType))
|
||
|
||
data.magnifyingGlassNum= player.gameData.matchStuffMap[activityId].magnifierDaily
|
||
s2cData.data = assert(pb.encode("S2CActivityMatchStuffMagnifyingGlassSupplement", data))
|
||
|
||
end
|
||
|
||
skynet.server.activityMatchStuff = ActivityMatchStuff
|
||
return ActivityMatchStuff |