510 lines
22 KiB
Lua
510 lines
22 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 taskListEvent = require "TaskListEvent"
|
|
local ActivityCarnival = oo.class()
|
|
|
|
ActivityCarnival.ActivityType = dataType.ActivityType_Carnival
|
|
|
|
-- -- 根据玩家的配置获取不同的数据
|
|
-- ActivityCarnival.ActivityInfo = {}
|
|
|
|
-- local configType = skynet.server.gameConfig:GetConfigType("Main", 1)
|
|
-- ActivityCarnival.ActivityInfo[configType] = {}
|
|
-- ActivityCarnival.ActivityInfo[configType].ActivityId = 0 -- 该活动在配置中的id
|
|
-- ActivityCarnival.ActivityInfo[configType].StartTime = 0 -- 嘉年华活动的开始时间
|
|
-- ActivityCarnival.ActivityInfo[configType].EndTime = 0 -- 嘉年华活动的结束时间
|
|
|
|
-- configType = skynet.server.gameConfig:GetConfigType("A", 1)
|
|
-- ActivityCarnival.ActivityInfo[configType] = {}
|
|
-- ActivityCarnival.ActivityInfo[configType].ActivityId = 0 -- 该活动在配置中的id
|
|
-- ActivityCarnival.ActivityInfo[configType].StartTime = 0 -- 嘉年华活动的开始时间
|
|
-- ActivityCarnival.ActivityInfo[configType].EndTime = 0 -- 嘉年华活动的结束时间
|
|
|
|
-- configType = skynet.server.gameConfig:GetConfigType("B", 1)
|
|
-- ActivityCarnival.ActivityInfo[configType] = {}
|
|
-- ActivityCarnival.ActivityInfo[configType].ActivityId = 0 -- 该活动在配置中的id
|
|
-- ActivityCarnival.ActivityInfo[configType].StartTime = 0 -- 嘉年华活动的开始时间
|
|
-- ActivityCarnival.ActivityInfo[configType].EndTime = 0 -- 嘉年华活动的结束时间
|
|
|
|
function ActivityCarnival:Init()
|
|
|
|
end
|
|
|
|
-- -- 设置活动信息
|
|
-- function ActivityCarnival:SetCarnivalInfo(player, keyName, keyValue)
|
|
-- local configType = player.basicInfo.configType
|
|
-- self.ActivityInfo[configType][keyName] = tonumber(keyValue)
|
|
-- end
|
|
|
|
-- -- 获取活动信息
|
|
-- function ActivityCarnival:GetCarnivalInfo(player, keyName)
|
|
-- local configType = player.basicInfo.configType
|
|
-- return self.ActivityInfo[configType][keyName]
|
|
-- end
|
|
|
|
-- 玩家礼包数据初始化
|
|
function ActivityCarnival:InitData(player, activityType)
|
|
-- 嘉年华数据
|
|
local activityId, startTime, endTime,id = skynet.server.activity:GetActivityInfo(player, activityType)
|
|
-- if activityId > 0 then
|
|
-- self:SetCarnivalInfo(player, "ActivityId", activityId) -- 获取满足开放时间的嘉年华id
|
|
-- self:SetCarnivalInfo(player, "StartTime", startTime) -- 嘉年华开始时间
|
|
-- self:SetCarnivalInfo(player, "EndTime", endTime) -- 嘉年华结束时间
|
|
-- end
|
|
-- 玩家嘉年华活动相关数据
|
|
player.gameData.activity[activityType] = {}
|
|
local cfgActivity = skynet.server.gameConfig:GetPlayerAllCfg(player, "Activity")
|
|
local level = 0
|
|
for k, v in pairs(cfgActivity) do
|
|
if v.activityType == dataType.ActivityType_Carnival then -- 活动嘉年华
|
|
level = v.level
|
|
break
|
|
end
|
|
end
|
|
|
|
player.gameData.activity[activityType].id = id -- 记录该活动的id
|
|
if activityId > 0 and player.gameData.level >= level then
|
|
-- 玩家对应配置
|
|
local cfgCarnivalTask = skynet.server.gameConfig:GetPlayerAllCfg(player, "CarnivalTask")
|
|
local cfgCarnival = skynet.server.gameConfig:GetPlayerCurCfg(player, "Carnival", activityId)
|
|
player.gameData.activity[activityType].rewardInfos = {} -- 嘉年华的累计奖励信息
|
|
player.gameData.activity[activityType].sumRewardInfo = {} -- 嘉年华大奖信息
|
|
player.gameData.activity[activityType].Carnival = {} -- 嘉年华的任务相关信息
|
|
|
|
-- 玩家嘉年华任务奖励数据赋值
|
|
for i = 1, #cfgCarnival.packReward, 1 do
|
|
player.gameData.activity[activityType].rewardInfos[i] = {}
|
|
player.gameData.activity[activityType].rewardInfos[i].id = i -- 任务id
|
|
player.gameData.activity[activityType].rewardInfos[i].status = 0 -- 0 不可领取 1 可以领取 2 已经领取
|
|
player.gameData.activity[activityType].rewardInfos[i].rewardId = cfgCarnival.packReward[i]
|
|
player.gameData.activity[activityType].rewardInfos[i].taskReward = false -- 是否有可领取的任务奖励
|
|
end
|
|
|
|
-- 七日大奖累计数据
|
|
player.gameData.activity[activityType].sumRewardInfo[1] = {}
|
|
player.gameData.activity[activityType].sumRewardInfo[1].id = 8 -- 大奖id
|
|
player.gameData.activity[activityType].sumRewardInfo[1].finishCount = 0 -- 当前嘉年华的累计完成次数
|
|
player.gameData.activity[activityType].sumRewardInfo[1].status = 0 -- 当前任务状态 0-未解锁 1-已解锁 2-已完成
|
|
-- 后面用完挪到player
|
|
-- if player.gameData.level >= 10 and not player:IsUnlockSystem(dataType.UnlockSystem_ActivityCarnival) then
|
|
-- player:AddUnlockSystem(dataType.UnlockSystem_ActivityCarnival)
|
|
-- end
|
|
--
|
|
self:CheckNew(player)
|
|
self:CheckActivity(player)
|
|
end
|
|
end
|
|
|
|
-- 初始化任务数据
|
|
function ActivityCarnival:CheckNew(player)
|
|
if not player:IsUnlockSystem(dataType.UnlockSystem_ActivityCarnival) then
|
|
return
|
|
end
|
|
-- log.info('初始化嘉年华任务')
|
|
-- 根据开始和结束时间找到当期的任务
|
|
-- local curCfgCarnival = self:GetCurPeriodCfg(player)
|
|
local Carnival = player.gameData.activity[self.ActivityType].Carnival
|
|
Carnival.tasks = {}
|
|
local cfgCarnivalTask = skynet.server.gameConfig:GetPlayerAllCfg(player, "CarnivalTask")
|
|
local activityId, startTime, endTime = skynet.server.activity:GetActivityInfo(player, self.ActivityType)
|
|
if cfgCarnivalTask then
|
|
for k, v in pairs(cfgCarnivalTask) do
|
|
if activityId == v.carnivalId then
|
|
table.insert(Carnival.tasks, {
|
|
id = v.id,
|
|
type = v.days,
|
|
kind = v.taskType,
|
|
progress = 0,
|
|
endTime = endTime,
|
|
status = skynet.server.task.TaskStatus_NoComplete
|
|
})
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 初始化数据
|
|
function ActivityCarnival:CheckActivity(player)
|
|
local activityId, startTime, endTime = skynet.server.activity:GetActivityInfo(player, self.ActivityType)
|
|
-- log.info("初始化数据activityId", activityId)
|
|
local cfgActivity = skynet.server.gameConfig:GetPlayerAllCfg(player, "Activity")
|
|
local level = 0
|
|
for k, v in pairs(cfgActivity) do
|
|
if v.activityType == dataType.ActivityType_Carnival then -- 活动嘉年华
|
|
level = v.level
|
|
break
|
|
end
|
|
end
|
|
if activityId > 0 and player.gameData.level >= level then
|
|
player.gameData.activity[self.ActivityType].carnivalInfo = {} -- 嘉年华任务解锁信息
|
|
local cfgCarnival = skynet.server.gameConfig:GetPlayerCurCfg(player, "Carnival", activityId)
|
|
local nowTime = skynet.GetTime()
|
|
local dayCount = math.ceil((nowTime - startTime) / (24 * 60 * 60))
|
|
-- log.info('dayCount', dayCount)
|
|
-- -- 玩家嘉年华任务数据赋值
|
|
for i = 1, #cfgCarnival.packReward, 1 do
|
|
player.gameData.activity[self.ActivityType].carnivalInfo[i] = {}
|
|
player.gameData.activity[self.ActivityType].carnivalInfo[i].id = i -- 任务id
|
|
if i <= dayCount then
|
|
-- 当前任务状态 0-未解锁 1-已解锁
|
|
player.gameData.activity[self.ActivityType].carnivalInfo[i].status = 1
|
|
else
|
|
player.gameData.activity[self.ActivityType].carnivalInfo[i].status = 0
|
|
end
|
|
player.gameData.activity[self.ActivityType].carnivalInfo[i].startTime = startTime + (i - 1) * 24 * 60 * 60
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 每次登录需要进行修改的数据
|
|
function ActivityCarnival:LoginInitData(player)
|
|
-- 重置嘉年华红点
|
|
-- skynet.server.msgTips:Reset(player, 87)
|
|
skynet.server.msgTips:Reset(player, 88)
|
|
skynet.server.msgTips:Reset(player, 89)
|
|
-- 检查应该初始还是结束活动
|
|
local cfgActivity = skynet.server.gameConfig:GetPlayerAllCfg(player, "Activity")
|
|
local activityId, startTime, endTime,id = skynet.server.activity:GetActivityInfo(player, self.ActivityType)
|
|
local level = 0
|
|
for k, v in pairs(cfgActivity) do
|
|
if v.activityType == dataType.ActivityType_Carnival then -- 活动嘉年华
|
|
level = v.level
|
|
break
|
|
end
|
|
end
|
|
-- 判断玩家活动是否开启
|
|
if player.gameData.level >= level then
|
|
if player.gameData.activity[self.ActivityType] and next(player.gameData.activity[self.ActivityType]) ~= nil then
|
|
-- 判断该活动是否到期,活动为0 则结束活动,活动id 与当前活动id不同
|
|
if skynet.GetTime() > endTime or activityId == 0 or (player.gameData.activity[self.ActivityType].id~=nil and player.gameData.activity[self.ActivityType].id ~= id) then
|
|
-- player.gameData.activity[self.ActivityType].id = v.id -- 记录该活动的id
|
|
-- 初始玩家数据
|
|
player.gameData.activity[self.ActivityType] = {}
|
|
|
|
--删除红点
|
|
skynet.server.msgTips:Reset(player, 87)
|
|
else
|
|
-- 红点系统
|
|
self:CheckActivity(player)
|
|
self:CheckTask(player)
|
|
self:CheckDayTaskReward(player)
|
|
self:CheckSumTask(player)
|
|
end
|
|
else
|
|
self:InitData(player, self.ActivityType)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 嘉年华 展示
|
|
function ActivityCarnival:Show(player, c2sData, s2cData)
|
|
c2sData.data = assert(pb.decode("C2SActivityCarnivalShow", c2sData.data))
|
|
local data = {}
|
|
local activityId, startTime, endTime = skynet.server.activity:GetActivityInfo(player, self.ActivityType)
|
|
local cfgCarnival = skynet.server.gameConfig:GetPlayerAllCfg(player, "Carnival")
|
|
local Carnival = cfgCarnival[activityId] -- 嘉年华活动相关数据
|
|
-- 判断一下是否需要初始化玩家数据
|
|
if player.gameData.activity[self.ActivityType] == nil or next(player.gameData.activity[self.ActivityType]) == nil then
|
|
self:InitData(player, self.ActivityType)
|
|
end
|
|
self:CheckTask(player)
|
|
self:CheckDayTaskReward(player)
|
|
self:CheckSumTask(player)
|
|
-- 重置一下游玩数据
|
|
if next(player.gameData.activity[self.ActivityType]) ~= nil then
|
|
data.rewardInfos = player.gameData.activity[self.ActivityType].rewardInfos
|
|
data.sumRewardInfo = {
|
|
id = player.gameData.activity[self.ActivityType].sumRewardInfo[1].id,
|
|
status = player.gameData.activity[self.ActivityType].sumRewardInfo[1].status,
|
|
rewardId = Carnival.otherId
|
|
}
|
|
data.carnivalInfos = player.gameData.activity[self.ActivityType].carnivalInfo
|
|
data.endTime = endTime
|
|
end
|
|
-- log.info('嘉年华展示数据' .. skynet.server.common:TableToString(data))
|
|
s2cData.cmd = pb.enum("MsgType", "CMD_S2C_ActivityCarnivalShow")
|
|
s2cData.data = assert(pb.encode("S2CActivityCarnivalShow", data))
|
|
end
|
|
|
|
-- 检查是否完成所有每日任务
|
|
function ActivityCarnival:CheckDayTaskReward(player)
|
|
if player.gameData.activity[self.ActivityType] == nil or next(player.gameData.activity[self.ActivityType]) == nil then
|
|
return
|
|
end
|
|
for k1, v1 in pairs(player.gameData.activity[self.ActivityType].rewardInfos) do
|
|
local finish = true
|
|
if v1.status == 0 then
|
|
for k2, v2 in pairs(player.gameData.activity[self.ActivityType].Carnival.tasks) do
|
|
if v2.type == v1.id and v2.status == 1 then
|
|
finish = false
|
|
end
|
|
end
|
|
if finish then
|
|
v1.status = 1
|
|
skynet.server.msgTips:Add(player, 88)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 检查是否有完成的任务
|
|
function ActivityCarnival:CheckTask(player)
|
|
if player.gameData.activity[self.ActivityType] == nil or next(player.gameData.activity[self.ActivityType]) == nil then
|
|
return
|
|
end
|
|
for k1, v1 in pairs(player.gameData.activity[self.ActivityType].rewardInfos) do
|
|
local finish = true
|
|
if v1.status == 0 or v1.status == 2 then
|
|
for k2, v2 in pairs(player.gameData.activity[self.ActivityType].Carnival.tasks) do
|
|
if v2.type == v1.id and v2.status == 2 then
|
|
v1.taskReward = true
|
|
finish = false
|
|
end
|
|
end
|
|
if finish then
|
|
v1.taskReward = false
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 检查是否完成嘉年华累计奖励
|
|
function ActivityCarnival:CheckSumTask(player)
|
|
if player.gameData.activity[self.ActivityType] == nil or next(player.gameData.activity[self.ActivityType]) == nil then
|
|
return
|
|
end
|
|
local finish = true
|
|
for k, v in pairs(player.gameData.activity[self.ActivityType].rewardInfos) do
|
|
if v.status == 0 or v.status == 1 then
|
|
finish = false
|
|
break
|
|
end
|
|
end
|
|
if finish and player.gameData.activity[self.ActivityType].sumRewardInfo[1].status == 0 then
|
|
player.gameData.activity[self.ActivityType].sumRewardInfo[1].status = 1
|
|
skynet.server.msgTips:Add(player, 89)
|
|
end
|
|
end
|
|
|
|
-- 嘉年华 任务展示
|
|
function ActivityCarnival:TaskShow(player, c2sData, s2cData)
|
|
c2sData.data = assert(pb.decode("C2SActivityCarnivalTaskShow", c2sData.data))
|
|
local data = {}
|
|
local id = c2sData.data.id
|
|
if not id then
|
|
s2cData.code = errorInfo.ErrorCode.ErrRequestParam
|
|
else
|
|
-- 获取任务信息
|
|
data.taskInfo = self:GetShowTaskData(player, id)
|
|
local count = 0
|
|
for k, v in pairs(data.taskInfo) do
|
|
if v.status == 2 or v.status == 3 then
|
|
count = count + 1
|
|
end
|
|
end
|
|
data.progress = count
|
|
end
|
|
-- log.info('嘉年华任务展示数据' .. skynet.server.common:TableToString(data))
|
|
s2cData.cmd = pb.enum("MsgType", "CMD_S2C_ActivityCarnivalTaskShow")
|
|
s2cData.data = assert(pb.encode("S2CActivityCarnivalTaskShow", data))
|
|
end
|
|
|
|
-- 获取显示的任务信息
|
|
function ActivityCarnival:GetShowTaskData(player, id)
|
|
local data = {}
|
|
local Carnival = player.gameData.activity[self.ActivityType].Carnival
|
|
for k, v in pairs(Carnival.tasks) do
|
|
-- 显示对应天数的任务
|
|
if id == v.type then
|
|
table.insert(data, {
|
|
id = v.id,
|
|
progress = v.progress,
|
|
status = v.status,
|
|
endTime = v.endTime
|
|
})
|
|
end
|
|
end
|
|
return data
|
|
end
|
|
|
|
-- 嘉年华 任务领取奖励
|
|
function ActivityCarnival:TaskGet(player, c2sData, s2cData)
|
|
c2sData.data = assert(pb.decode("C2SActivityCarnivalTaskGet", c2sData.data))
|
|
local data = {}
|
|
local taskId = c2sData.data.taskId
|
|
local Carnival = player.gameData.activity[self.ActivityType].Carnival
|
|
data.taskInfo = {}
|
|
-- 判断任务是否完成
|
|
for k, v in pairs(Carnival.tasks) do
|
|
if taskId == v.id and skynet.server.task.TaskStatus_AlreadyComplete == v.status then
|
|
-- 只有状态为任务已完成才能领取
|
|
local cfgOne = skynet.server.gameConfig:GetPlayerCurCfg(player, "CarnivalTask", v.id)
|
|
local eventId = pb.enum("EnumMoneyChangeEventID", "EventID_104")
|
|
player:GiveReward(cfgOne.rewardId, eventId)
|
|
v.status = skynet.server.task.TaskStatus_AlreadyGet
|
|
player:AddExpCount(cfgOne.expNum, true)
|
|
skynet.server.msgTips:Reduce(player, 87)
|
|
data.taskInfo = {
|
|
id = taskId,
|
|
progress = v.progress,
|
|
status = v.status,
|
|
endTime = v.endTime
|
|
}
|
|
log.debug(string.format("玩家 %d 嘉年华任务 任务完成 ID %d ", player.basicInfo.userID, taskId))
|
|
break
|
|
end
|
|
end
|
|
-- data.taskInfo = self:GetShowTaskData(player, id)
|
|
-- log.info('嘉年华任务领取奖励' .. skynet.server.common:TableToString(data))
|
|
s2cData.cmd = pb.enum("MsgType", "CMD_S2C_ActivityCarnivalTaskGet")
|
|
s2cData.data = assert(pb.encode("S2CActivityCarnivalTaskGet", data))
|
|
end
|
|
|
|
-- 嘉年华 当天完成任务获取宝箱
|
|
function ActivityCarnival:GetChest(player, c2sData, s2cData)
|
|
c2sData.data = assert(pb.decode("C2SActivityCarnivalGetChest", c2sData.data))
|
|
local data = {}
|
|
local id = c2sData.data.id
|
|
-- 判断当天任务奖励是否可以领取
|
|
local activityId, startTime, endTime = skynet.server.activity:GetActivityInfo(player, self.ActivityType)
|
|
local cfgCarnival = skynet.server.gameConfig:GetPlayerAllCfg(player, "Carnival")
|
|
local Carnival = cfgCarnival[activityId] -- 嘉年华活动相关数据
|
|
local eventId = pb.enum("EnumMoneyChangeEventID", "EventID_105")
|
|
if player.gameData.activity[self.ActivityType].rewardInfos[id].status == 1 then
|
|
player.gameData.activity[self.ActivityType].rewardInfos[id].status = 2
|
|
data.rewardId = Carnival.packReward[id]
|
|
player:GiveReward(Carnival.packReward[id], eventId)
|
|
self:CheckSumTask(player)
|
|
skynet.server.msgTips:Reduce(player, 88)
|
|
end
|
|
-- log.info('当天完成任务获取宝箱' .. skynet.server.common:TableToString(data))
|
|
s2cData.cmd = pb.enum("MsgType", "CMD_S2C_ActivityCarnivalGetChest")
|
|
s2cData.data = assert(pb.encode("S2CActivityCarnivalGetChest", data))
|
|
end
|
|
|
|
-- 嘉年华 七日累计大奖领取
|
|
function ActivityCarnival:SumGet(player, c2sData, s2cData)
|
|
c2sData.data = assert(pb.decode("C2SActivityCarnivalSumGet", c2sData.data))
|
|
local data = {}
|
|
local activityId, startTime, endTime = skynet.server.activity:GetActivityInfo(player, self.ActivityType)
|
|
local cfgCarnival = skynet.server.gameConfig:GetPlayerAllCfg(player, "Carnival")
|
|
local Carnival = cfgCarnival[activityId] -- 嘉年华活动相关数据
|
|
-- 判断七日大奖是否可以领取
|
|
if player.gameData.activity[self.ActivityType].sumRewardInfo[1].status == 1 then
|
|
local finish = true
|
|
for k, v in pairs(player.gameData.activity[self.ActivityType].rewardInfos) do
|
|
if v.status == 0 then
|
|
finish = false
|
|
break
|
|
end
|
|
end
|
|
if finish then
|
|
player.gameData.activity[self.ActivityType].sumRewardInfo[1].status = 2
|
|
local eventId = pb.enum("EnumMoneyChangeEventID", "EventID_106")
|
|
data.rewardId = Carnival.otherId
|
|
player:GiveReward(Carnival.otherId, eventId)
|
|
skynet.server.msgTips:Reduce(player, 89)
|
|
end
|
|
else
|
|
s2cData.code = errorInfo.ErrorCode.ErrRequestParam
|
|
end
|
|
-- log.info('七日累计大奖领取' .. skynet.server.common:TableToString(data))
|
|
s2cData.cmd = pb.enum("MsgType", "CMD_S2C_ActivityCarnivalSumGet")
|
|
s2cData.data = assert(pb.encode("S2CActivityCarnivalSumGet", data))
|
|
end
|
|
|
|
-- 获得当前期配置
|
|
function ActivityCarnival:GetCurPeriodCfg(player)
|
|
local curCfgCarnival = nil
|
|
|
|
local activityId = skynet.server.activity:GetActivityInfo(player, dataType.ActivityType_Carnival)
|
|
-- activityId = 1
|
|
if activityId > 0 then
|
|
local cfgCarnival = skynet.server.gameConfig:GetPlayerCurCfg(player, "CarnivalTask", activityId)
|
|
curCfgCarnival = cfgCarnival -- 获取当前嘉年华任务信息
|
|
end
|
|
|
|
return curCfgCarnival
|
|
end
|
|
|
|
-- 嘉年华 修改任务
|
|
function ActivityCarnival:Modify(player, kind, count)
|
|
local activityId, startTime, endTime = skynet.server.activity:GetActivityInfo(player, self.ActivityType)
|
|
-- 判断是否解锁
|
|
if not player:IsUnlockSystem(dataType.UnlockSystem_ActivityCarnival) then
|
|
return
|
|
end
|
|
|
|
--嘉年华活动未开启
|
|
if player.gameData.activity[self.ActivityType] == nil
|
|
or next(player.gameData.activity[self.ActivityType]) == nil
|
|
or player.gameData.activity[self.ActivityType].Carnival == nil
|
|
or next(player.gameData.activity[self.ActivityType].Carnival) == nil
|
|
or player.gameData.activity[self.ActivityType].Carnival.tasks == nil then
|
|
return
|
|
end
|
|
local nowTime = skynet.GetTime()
|
|
local dayCount = math.ceil((nowTime - startTime) / (24 * 60 * 60))
|
|
local day = 1
|
|
count = count or 1
|
|
log.debug(string.format("玩家 %d 嘉年华 任务修改 种类 %d 数量 %d", player.userId, kind, count))
|
|
local maxProgress = 0
|
|
local Carnival = player.gameData.activity[self.ActivityType].Carnival
|
|
for k, v in pairs(Carnival.tasks) do
|
|
if kind == v.kind and skynet.server.task.TaskStatus_NoComplete == v.status then
|
|
-- 获取最大进度
|
|
day = v.type
|
|
if dayCount < day and v.kind == 39 then
|
|
maxProgress = skynet.server.gameConfig:GetPlayerCurCfg(player, "CarnivalTask", v.id).value
|
|
v.progress = v.progress + count
|
|
-- log.info('v.progress', v.progress)
|
|
-- 检查是否完成任务
|
|
if v.progress >= maxProgress then
|
|
if skynet.server.task.TaskStatus_NoComplete == v.status then
|
|
skynet.server.msgTips:Add(player, 87)
|
|
end
|
|
v.status = skynet.server.task.TaskStatus_AlreadyComplete
|
|
v.progress = maxProgress
|
|
log.debug(string.format("玩家 %d 嘉年华 任务种类 %d 任务ID %d 完成 ", player.userId,
|
|
kind, v.id))
|
|
end
|
|
elseif dayCount >= day then
|
|
maxProgress = skynet.server.gameConfig:GetPlayerCurCfg(player, "CarnivalTask", v.id).value
|
|
v.progress = v.progress + count
|
|
-- log.info('v.progress', v.progress)
|
|
-- 检查是否完成任务
|
|
if v.progress >= maxProgress then
|
|
if skynet.server.task.TaskStatus_NoComplete == v.status then
|
|
skynet.server.msgTips:Add(player, 87)
|
|
end
|
|
v.status = skynet.server.task.TaskStatus_AlreadyComplete
|
|
v.progress = maxProgress
|
|
log.debug(string.format("玩家 %d 嘉年华 任务种类 %d 任务ID %d 完成 ", player.userId,
|
|
kind, v.id))
|
|
end
|
|
end
|
|
end
|
|
end
|
|
self:CheckTask(player)
|
|
self:CheckDayTaskReward(player)
|
|
self:CheckSumTask(player)
|
|
end
|
|
|
|
-- 定义一个回调函数
|
|
local function onEventFired(player , taskId , count)
|
|
|
|
--处理活动
|
|
ActivityCarnival:Modify(player , taskId , count)
|
|
end
|
|
|
|
-- 注册事件处理函数
|
|
taskListEvent:Register(onEventFired,"嘉年华任务")
|
|
|
|
skynet.server.activityCarnival = ActivityCarnival
|
|
return ActivityCarnival
|