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