205 lines
8.5 KiB
Lua
205 lines
8.5 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 json =require "json"
|
|
local Gm = oo.class()
|
|
|
|
function Gm:Init()
|
|
|
|
end
|
|
|
|
--获取Web消息
|
|
function Gm:WebMsg( c2sData )
|
|
local player = {}
|
|
if "GMModifyTime" ~= c2sData.gameMessage then
|
|
player = skynet.server.playerCenter:GetPlayerForAccount( c2sData.playerId )
|
|
if not player then
|
|
return
|
|
end
|
|
c2sData.commandField = json:decode( c2sData.commandField )
|
|
end
|
|
|
|
if "GMCmd" == c2sData.gameMessage then
|
|
self:WebCmd( player , c2sData )
|
|
elseif "GMAddGoods" == c2sData.gameMessage then
|
|
self:WebGoods( player , c2sData )
|
|
elseif "GMModifyTime" == c2sData.gameMessage then
|
|
self:WebModifyTime( player , c2sData )
|
|
end
|
|
end
|
|
|
|
--获取该商品的配置
|
|
function Gm:WebCmd( player , c2sData )
|
|
local data = {}
|
|
|
|
--if not skynet.server.gameConfig:IsOnline() then
|
|
for k, v in pairs( c2sData.commandField ) do
|
|
local key = v.articlesName
|
|
local value = v.articlesNumber
|
|
log.info(string.format("玩家 %d GM增加 %s 数量 %d" , player.userId , key ,value))
|
|
if "coin" == key then
|
|
player:MoneyChange( dataType.MoneyType_Coin , value )
|
|
elseif "clovers" == key then
|
|
player:MoneyChange( dataType.MoneyType_Map , value )
|
|
elseif "volute" == key then
|
|
player:MoneyChange( dataType.MoneyType_Volute , value )
|
|
elseif "loveCoin" == key then
|
|
player:MoneyChange( dataType.MoneyType_LoveCoin , value )
|
|
elseif "praiseCoin" == key then
|
|
player:MoneyChange( dataType.MoneyType_PraiseCoin , value )
|
|
elseif "exp" == key then
|
|
player:AddExp( value)
|
|
elseif "咖啡豆" == key then
|
|
player.gameData.shop[ dataType.ShopType_Coffee ].currency[1] = player.gameData.shop[ dataType.ShopType_Coffee ].currency[1] + value
|
|
elseif "糖" == key then
|
|
player.gameData.shop[ dataType.ShopType_Coffee ].currency[2] = player.gameData.shop[ dataType.ShopType_Coffee ].currency[2] + value
|
|
elseif "牛奶" == key then
|
|
player.gameData.shop[ dataType.ShopType_Coffee ].currency[3] = player.gameData.shop[ dataType.ShopType_Coffee ].currency[3] + value
|
|
elseif "卷发棒" == key then
|
|
player.gameData.shop[ dataType.ShopType_Style ].money.resource1 = player.gameData.shop[ dataType.ShopType_Style ].money.resource1 + value
|
|
elseif "化妆刷" == key then
|
|
player.gameData.shop[ dataType.ShopType_Style ].money.resource2 = player.gameData.shop[ dataType.ShopType_Style ].money.resource2 + value
|
|
elseif "梳子" == key then
|
|
player.gameData.shop[ dataType.ShopType_Style ].money.resource3 = player.gameData.shop[ dataType.ShopType_Style ].money.resource3 + value
|
|
end
|
|
end
|
|
--end
|
|
end
|
|
|
|
--获取该商品的配置
|
|
function Gm:WebGoods( player , c2sData )
|
|
--if not skynet.server.gameConfig:IsOnline() then
|
|
local isAllGoods = c2sData.cmdType
|
|
for k, v in pairs( c2sData.commandField ) do
|
|
local id = v.articlesId
|
|
local count = v.articlesNumber
|
|
local goodsType = v.articlesType
|
|
local cfgAll = nil
|
|
if "Furniture" == goodsType then
|
|
goodsType = dataType.GoodsType_Furniture
|
|
cfgAll = skynet.server.gameConfig.Furniture
|
|
elseif "Decoration" == goodsType then
|
|
goodsType = dataType.GoodsType_Decorate
|
|
cfgAll = skynet.server.gameConfig.Decoration
|
|
elseif "Flowerpot" == goodsType then
|
|
goodsType = dataType.GoodsType_Flowerpot
|
|
cfgAll = skynet.server.gameConfig.Flowerpot
|
|
elseif "Seed" == goodsType then
|
|
goodsType = dataType.GoodsType_Seed
|
|
cfgAll = skynet.server.gameConfig.Seed
|
|
elseif "Plant" == goodsType then
|
|
goodsType = dataType.GoodsType_Plant
|
|
cfgAll = skynet.server.gameConfig.Plant
|
|
elseif "Clothes" == goodsType then
|
|
goodsType = dataType.GoodsType_Clothes
|
|
cfgAll = skynet.server.gameConfig.Clothes
|
|
elseif "FishType" == goodsType then
|
|
goodsType = dataType.GoodsType_Fish
|
|
cfgAll = skynet.server.gameConfig.FishType
|
|
elseif "CuisineMenu" == goodsType then
|
|
goodsType = dataType.GoodsType_CuisineMenu
|
|
cfgAll = skynet.server.gameConfig.CuisineMenu
|
|
elseif "CuisineMaterial" == goodsType then
|
|
goodsType = dataType.GoodsType_CuisineMaterial
|
|
cfgAll = skynet.server.gameConfig.CuisineMaterial
|
|
end
|
|
|
|
if isAllGoods then
|
|
--GM发送所有疝
|
|
for k, v in pairs(cfgAll) do
|
|
if "Clothes" == goodsType and v.suitId >=0 then
|
|
skynet.server.bag:AddGoods( player , goodsType , v.id , 1 )
|
|
elseif "Clothes" ~= goodsType then
|
|
skynet.server.bag:AddGoods( player , goodsType , v.id , 1 )
|
|
end
|
|
end
|
|
log.info(string.format("玩家 %d GM增加 商品类型 %s 所有道具" , player.userId , v.articlesType ))
|
|
else
|
|
log.info(string.format("玩家 %d GM增加 商品类型 %s ID %d 数量 %d" , player.userId , v.articlesType ,id ,count))
|
|
skynet.server.bag:AddGoods( player , goodsType , id , count )
|
|
end
|
|
end
|
|
--end
|
|
end
|
|
|
|
--修改时间
|
|
function Gm:WebModifyTime( player , c2sData )
|
|
if not skynet.server.gameConfig:IsOnline() then
|
|
if 1 == c2sData.cmdType then --还原
|
|
skynet.AddTime = 0
|
|
log.info("时间还原 最新时间 ", skynet.server.common:GetStrTime(skynet:GetTime()))
|
|
elseif 2 == c2sData.cmdType then --新增一小时
|
|
skynet.AddTime = skynet.AddTime + 3600
|
|
log.info("新增一小时 最新时间 ", skynet.server.common:GetStrTime(skynet:GetTime()))
|
|
elseif 3 == c2sData.cmdType then --新增一天
|
|
skynet.AddTime = skynet.AddTime + 86400
|
|
log.info("新增一天 最新时间 ", skynet.server.common:GetStrTime(skynet:GetTime()))
|
|
end
|
|
end
|
|
end
|
|
|
|
--获取该商品的配置
|
|
function Gm:Cmd( player , c2sData , s2cData )
|
|
c2sData.data = assert(pb.decode("C2SGMCmd", c2sData.data ))
|
|
local data = {}
|
|
local key = c2sData.data.key
|
|
local value = c2sData.data.value
|
|
|
|
if not key or not value then
|
|
s2cData.code = errorInfo.ErrorCode.ErrRequestParam
|
|
else
|
|
if not skynet.server.gameConfig:IsOnline() then
|
|
local isSuc = false
|
|
if "coin" == key then
|
|
isSuc = player:MoneyChange( dataType.MoneyType_Coin , value )
|
|
elseif "clovers" == key then
|
|
isSuc = player:MoneyChange( dataType.MoneyType_Map , value )
|
|
elseif "volute" == key then
|
|
isSuc = player:MoneyChange( dataType.MoneyType_Volute , value )
|
|
elseif "loveCoin" == key then
|
|
isSuc = player:MoneyChange( dataType.MoneyType_LoveCoin , value )
|
|
elseif "praiseCoin" == key then
|
|
isSuc = player:MoneyChange( dataType.MoneyType_PraiseCoin , value )
|
|
elseif "exp" == key then
|
|
isSuc = player:AddExp( value)
|
|
end
|
|
|
|
if not isSuc then
|
|
s2cData.code = errorInfo.ErrorCode.GMCmdFailed
|
|
end
|
|
end
|
|
end
|
|
|
|
s2cData.cmd = pb.enum("MsgType","CMD_S2C_GMCmd")
|
|
s2cData.data = assert(pb.encode("S2CGMCmd", data))
|
|
end
|
|
|
|
--获取该商品的配置
|
|
function Gm:AddGoods( player , c2sData , s2cData )
|
|
c2sData.data = assert(pb.decode("C2SGMAddGoods", c2sData.data ))
|
|
local data = {}
|
|
local type = c2sData.data.type
|
|
local id = c2sData.data.id
|
|
local count = c2sData.data.count
|
|
|
|
if not type or not id or not count then
|
|
s2cData.code = errorInfo.ErrorCode.ErrRequestParam
|
|
else
|
|
if not skynet.server.gameConfig:IsOnline() then
|
|
local isSuc = skynet.server.bag:AddGoods( player , type , id , count )
|
|
if not isSuc then
|
|
s2cData.code = errorInfo.ErrorCode.GMCmdFailed
|
|
end
|
|
end
|
|
end
|
|
|
|
s2cData.cmd = pb.enum("MsgType","CMD_S2C_GMAddGoods")
|
|
s2cData.data = assert(pb.encode("S2CGMAddGoods", data))
|
|
end
|
|
|
|
skynet.server.gm = Gm
|
|
return Gm
|