240 lines
9.8 KiB
Lua
240 lines
9.8 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 group = require "Group"
|
|
local GroupGardenShop = oo.class(group)
|
|
|
|
function GroupGardenShop:Init()
|
|
|
|
end
|
|
|
|
-- 初始化园艺铺子数据
|
|
function GroupGardenShop:InitData(player)
|
|
local cfgGarden = skynet.server.gameConfig:GetPlayerAllCfg(player, "Garden") -- 园艺铺子信息
|
|
-- 园艺铺子相关数据
|
|
player.gameData.todayGain.gardenInfo = {}
|
|
-- 园艺铺子数据赋值
|
|
for k, v in pairs(cfgGarden) do
|
|
local count = v.id
|
|
player.gameData.todayGain.gardenInfo[count] = {}
|
|
player.gameData.todayGain.gardenInfo[count].id = count -- 奖励id
|
|
player.gameData.todayGain.gardenInfo[count].dailyLimit = {v.dailyLimit, 0} -- 兑换限制 例如 {3,1} 3 本日可兑换次数 1 本日已兑换次数
|
|
player.gameData.todayGain.gardenInfo[count].contributeValue = v.contributeValue -- 贡献币需求兑换数
|
|
player.gameData.todayGain.gardenInfo[count].communityShop = v.communityShop -- 园艺铺子类别
|
|
player.gameData.todayGain.gardenInfo[count].unlock = false -- 园艺铺子家具是否解锁
|
|
end
|
|
self:GroupGardenShopSend(player)
|
|
end
|
|
|
|
-- 初始化园艺铺子兑换时间
|
|
function GroupGardenShop:InitTime(player)
|
|
local cfgGarden = skynet.server.gameConfig:GetPlayerAllCfg(player, "Garden") -- 园艺铺子信息
|
|
for k, v in pairs(cfgGarden) do
|
|
local GardenTime = skynet.server.common:DeepCopy(cfgGarden[v.id])
|
|
-- 兑换开始时间
|
|
if v.startTime == nil or v.startTime == "" or v.startTime == 0 then
|
|
GardenTime.startTime = 0
|
|
else
|
|
GardenTime.startTime = skynet.server.common:GetTime(v.startTime)
|
|
end
|
|
-- 兑换结束时间
|
|
if v.endTime == nil or v.endTime == "" or v.endTime == 0 then
|
|
GardenTime.endTime = 0
|
|
else
|
|
GardenTime.endTime = skynet.server.common:GetTime(v.endTime)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 园艺铺子解锁
|
|
function GroupGardenShop:UnlockGarden(player)
|
|
local myPartnerId = player.gameData.partner.id
|
|
local curDetail = skynet.server.personal:GetDetail(myPartnerId)
|
|
if not curDetail then
|
|
return
|
|
end
|
|
|
|
if curDetail.groupId and "" == curDetail.groupId then
|
|
return
|
|
end
|
|
|
|
local groupId = curDetail.groupId
|
|
-- 判断家园是否解锁
|
|
if not self:IsExistGroup(groupId) then
|
|
return
|
|
end
|
|
|
|
local curGroup = self:GetGroup(groupId)
|
|
if not curGroup then
|
|
return
|
|
end
|
|
|
|
local communityLevel = curGroup.communityLevel or 1 -- 家园等级
|
|
-- 根据家园等级获取解锁家具
|
|
local cfgAllCommunity = skynet.server.gameConfig:GetPlayerAllCfg(player, "Community")
|
|
for i = 1, communityLevel, 1 do
|
|
for k, v in pairs(cfgAllCommunity[i].unlockGardenStuff) do
|
|
if player.gameData.todayGain.gardenInfo[v].unlock == false then
|
|
player.gameData.todayGain.gardenInfo[v].unlock = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 园艺铺子发送消息
|
|
function GroupGardenShop:GroupGardenShopSend(player)
|
|
local data = {}
|
|
local cfgGarden = skynet.server.gameConfig:GetPlayerAllCfg(player, "Garden") -- 园艺铺子信息
|
|
self:UnlockGarden(player)
|
|
data.gardenInfos = {}
|
|
-- 处理时间
|
|
local nowTime = skynet.GetTime()
|
|
local startTime = 0
|
|
local endTime = 0
|
|
for k, v in pairs(cfgGarden) do
|
|
if v.startTime == nil or v.startTime == "" then
|
|
startTime = 0
|
|
endTime = 0
|
|
else
|
|
startTime = skynet.server.common:GetTime(v.startTime)
|
|
endTime = skynet.server.common:GetTime(v.endTime)
|
|
end
|
|
if startTime == 0 or endTime == 0 or nowTime >= startTime and nowTime <= endTime then
|
|
for k1, v1 in pairs(player.gameData.todayGain.gardenInfo) do
|
|
if v.id == v1.id and v1.unlock then
|
|
table.insert(data.gardenInfos, {
|
|
gardenId = v.id,
|
|
gardenCount = v1.dailyLimit[2],
|
|
gardenType = v1.communityShop,
|
|
gardenStartTime = startTime,
|
|
gardenEndTime = endTime
|
|
})
|
|
end
|
|
end
|
|
end
|
|
end
|
|
skynet.server.gameServer:SendMsgToUser(player.userId, "CMD_S2C_GroupGardenShopShow", data)
|
|
end
|
|
|
|
-- 园艺铺子展示
|
|
function GroupGardenShop:GroupGardenShopShow(player, c2sData, s2cData)
|
|
c2sData.data = assert(pb.decode("C2SGroupGardenShopShow", c2sData.data))
|
|
local data = {}
|
|
local cfgGarden = skynet.server.gameConfig:GetPlayerAllCfg(player, "Garden") -- 园艺铺子信息
|
|
self:UnlockGarden(player)
|
|
data.gardenInfos = {}
|
|
-- 处理时间
|
|
local nowTime = skynet.GetTime()
|
|
local startTime = 0
|
|
local endTime = 0
|
|
for k, v in pairs(cfgGarden) do
|
|
if v.startTime == nil or v.startTime == "" then
|
|
startTime = 0
|
|
endTime = 0
|
|
else
|
|
startTime = skynet.server.common:GetTime(v.startTime)
|
|
endTime = skynet.server.common:GetTime(v.endTime)
|
|
end
|
|
if startTime == 0 or endTime == 0 or nowTime >= startTime and nowTime <= endTime then
|
|
for k1, v1 in pairs(player.gameData.todayGain.gardenInfo) do
|
|
if v.id == v1.id and v1.unlock then
|
|
table.insert(data.gardenInfos, {
|
|
gardenId = v.id,
|
|
gardenCount = v1.dailyLimit[2],
|
|
gardenType = v1.communityShop,
|
|
gardenStartTime = startTime,
|
|
gardenEndTime = endTime
|
|
})
|
|
end
|
|
end
|
|
end
|
|
end
|
|
s2cData.cmd = pb.enum("MsgType", "CMD_S2C_GroupGardenShopShow")
|
|
s2cData.data = assert(pb.encode("S2CGroupGardenShopShow", data))
|
|
end
|
|
|
|
-- 园艺铺子兑换
|
|
function GroupGardenShop:GroupGardenShopRedeem(player, c2sData, s2cData)
|
|
c2sData.data = assert(pb.decode("C2SGroupGardenShopRedeem", c2sData.data))
|
|
local data = {}
|
|
local gardenId = c2sData.data.gardenId
|
|
local cfgGarden = skynet.server.gameConfig:GetPlayerAllCfg(player, "Garden") -- 园艺铺子信息
|
|
local nowTime = skynet.GetTime()
|
|
data.gardenInfos = {}
|
|
-- 判断当前时间是否满足兑换时间
|
|
local canGetPay = false
|
|
local startTime = 0
|
|
local endTime = 0
|
|
if cfgGarden[gardenId].startTime == nil or cfgGarden[gardenId].startTime == "" then
|
|
startTime = 0
|
|
endTime = 0
|
|
else
|
|
startTime = skynet.server.common:GetTime(cfgGarden[gardenId].startTime)
|
|
endTime = skynet.server.common:GetTime(cfgGarden[gardenId].endTime)
|
|
end
|
|
if startTime == 0 or endTime == 0 or nowTime >= startTime and nowTime <= endTime then
|
|
-- 判断是否满足每日消耗数
|
|
if player.gameData.todayGain.gardenInfo[gardenId].dailyLimit[1] >
|
|
player.gameData.todayGain.gardenInfo[gardenId].dailyLimit[2] or
|
|
player.gameData.todayGain.gardenInfo[gardenId].dailyLimit[1] == 0 then
|
|
-- 判断贡献币是否足够消耗数量
|
|
local eventId = pb.enum("EnumMoneyChangeEventID", "EventID_42")
|
|
local isSuc = player:MoneyChange(pb.enum("EnumGoodsType", "ContributeCoin", eventId),
|
|
-cfgGarden[gardenId].contributeValue)
|
|
if isSuc then
|
|
canGetPay = true
|
|
player.gameData.todayGain.gardenInfo[gardenId].dailyLimit[2] =
|
|
player.gameData.todayGain.gardenInfo[gardenId].dailyLimit[2] + 1
|
|
else
|
|
canGetPay = false
|
|
end
|
|
end
|
|
end
|
|
|
|
-- if cfgGarden[gardenId].startTime == 0 or cfgGarden[gardenId].endTime == 0 or nowTime >=
|
|
-- cfgGarden[gardenId].startTime and nowTime <= cfgGarden[gardenId].endTime then
|
|
-- -- 判断是否满足每日消耗数
|
|
-- if player.gameData.todayGain.gardenInfo[gardenId].dailyLimit[1] >
|
|
-- player.gameData.todayGain.gardenInfo[gardenId].dailyLimit[2] or
|
|
-- player.gameData.todayGain.gardenInfo[gardenId].dailyLimit[1] == 0 then
|
|
-- -- 判断贡献币是否足够消耗数量
|
|
-- local eventId = pb.enum("EnumMoneyChangeEventID", "EventID_42")
|
|
-- local isSuc = player:MoneyChange(pb.enum("EnumGoodsType", "ContributeCoin", eventId),
|
|
-- -player.gameData.todayGain.gardenInfo[gardenId].contributeValue)
|
|
-- -- local isSuc = player:MoneyChange(pb.enum("EnumGoodsType", "ContributeCoin"), -20)
|
|
-- if isSuc then
|
|
-- canGetPay = true
|
|
-- player.gameData.todayGain.gardenInfo[gardenId].dailyLimit[2] =
|
|
-- player.gameData.todayGain.gardenInfo[gardenId].dailyLimit[2] + 1
|
|
-- else
|
|
-- canGetPay = false
|
|
-- end
|
|
-- end
|
|
-- end
|
|
-- 是否完成扣币
|
|
if canGetPay then
|
|
data.gardenInfos = {
|
|
gardenType = player.gameData.todayGain.gardenInfo[gardenId].communityShop,
|
|
gardenId = gardenId, -- 商品ID
|
|
gardenCount = player.gameData.todayGain.gardenInfo[gardenId].dailyLimit[2],
|
|
gardenStartTime = startTime,
|
|
gardenEndTime = endTime
|
|
}
|
|
skynet.server.levelTask:Modify(player, 91, 1)
|
|
skynet.server.taskListEvent:Modify( player ,91, 1)
|
|
skynet.server.taskListEvent:Modify( player ,34, 1)
|
|
skynet.server.taskListEvent:Modify( player ,16, 1)
|
|
-- 将兑换后的景观存入背包
|
|
skynet.server.bag:AddGoods(player, dataType.GoodsType_Garden, data.gardenInfos.gardenId, 1)
|
|
player:AddExpCount(20)
|
|
end
|
|
s2cData.cmd = pb.enum("MsgType", "CMD_S2C_GroupGardenShopRedeem")
|
|
s2cData.data = assert(pb.encode("S2CGroupGardenShopRedeem", data))
|
|
end
|
|
|
|
skynet.server.groupGardenShop = GroupGardenShop
|
|
return GroupGardenShop
|