HomeServer/lualib-src/Server-main/AllServer/GameServer/Gm.lua

205 lines
8.5 KiB
Lua
Raw Permalink Normal View History

2024-11-20 15:41:09 +08:00
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