HomeServer/Server/AllServer/GameServer/GameServer.lua
2024-11-20 15:41:37 +08:00

1865 lines
131 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local skynet = require "skynet"
local oo = require "Class"
local gameCmd = require "GameCmd"
local json =require "json"
local sqlUrl = require "SqlUrl"
local log = require "Log"
local dataType = require "DataType"
local errorInfo = require "ErrorInfo"
local redisKeyUrl = require "RedisKeyUrl"
local redisCache = require "RedisCache"
local serverId = tonumber(skynet.getenv "serverId")
local clusterServer = require "ClusterServer"
local serverManage = require "ServerManage"
local socket = require "skynet.socket"
local pb = require "pb"
local playerCenter = require "PlayerCenter"
local playerRecord = require "PlayerRecord"
local gameRecord = require "GameRecord"
local redeem = require "Redeem"
local mail = require "Mail"
local announcement = require "Announcement"
local house = require "House"
local generalShop = require "GeneralShop"
local decorateShop = require "DecorateShop"
local clothesShop = require "ClothesShop"
local petClothesShop = require "PetClothesShop"
local plantShop = require "PlantShop"
local coffeeShop = require "CoffeeShop"
local flowerShop = require "FlowerShop"
local styleShop = require "StyleShop"
local guGuShop = require "GuGuShop"
local lottery = require "Lottery"
local flowerpot = require "Flowerpot"
local bag = require "Bag"
local used = require "Used"
local accountCenter = require "AccountCenter"
local gashapon = require "Gashapon"
local weather = require "Weather"
local msgTips = require "MsgTips"
local gm = require "Gm"
local personal = require "Personal"
local pet = require "Pet"
local levelTask = require "LevelTask"
local dailyTask = require "DailyTask"
local achieveTask = require "AchieveTask"
local npcTask = require "NpcTask"
local friend = require "Friend"
local illustration = require "Illustration"
local flowerShop = require "FlowerShop"
local ad = require "AD"
local extraRevenue = require "ExtraRevenue"
local guide = require "Guide"
local map = require "Map"
local questionnaire = require "Questionnaire"
local dyeworkshop = require "DyeWorkShop"
local furnitureWorkShop = require "FurnitureWorkShop"
local store = require "Store"
local passCheck = require "PassCheck"
local design = require "Design"
local audit = require "Audit"
local signIn = require "SignIn"
local playerLand = require "PlayerLand"
local partner = require "Partner"
local fishShop = require "FishShop"
local cuisineShop = require "CuisineShop"
local petShop = require "PetShop"
local groupManage = require "GroupManage"
local groupScene = require "GroupScene"
local groupRank = require "GroupRank"
local groupChat = require "GroupChat"
local groupBMExchange = require "GroupBMExchange"
local groupGardenShop = require "GroupGardenShop"
local activityLabyrinth = require "ActivityLabyrinth"
local activityDecoWeek = require "ActivityDecoWeek"
local doubleSpace = require "DoubleSpace"
local activityManage = require "ActivityManage"
local activitySign = require "ActivitySign"
local houseRent = require "HouseRent"
local upLoad = require "UpLoad"
local activityCarnival = require "ActivityCarnival"
local activityDreamLife = require "ActivityDreamLife"
local npc = require "Npc"
local activityFlipCard = require "ActivityFlipCard"
local activityMatchStuff = require "ActivityMatchStuff"
local activityNewPlayerRaffle = require "ActivityNewPlayerRaffle"
local subscribe = require "Subscribe"
local gameClubTask = require "GameClubTask"
local activitySignPack = require "ActivitySignPack"
local luxuryCard = require "LuxuryCard"
local repair = require "Repair"
local activityPuzzle = require "ActivityPuzzle"
local activitySeekTreasure = require "ActivitySeekTreasure"
local specialReward = require "SpecialReward"
local activityLevelPack = require "ActivityLevelPack"
local activityStagePack = require "ActivityStagePack"
local raffle = require "Raffle"
local activityLimitedAccum =require "ActivityLimitedAccum"
local activityDailyRiddle = require "ActivityDailyRiddle"
local activitySavingPot = require "ActivitySavingPot"
local birthday = require "Birthday"
local activityReplicaStore = require "ActivityReplicaStore"
local migrateData = require "MigrateData"
local activityBindBox = require "ActivityBindBox"
local GameServer = oo.class(clusterServer)
GameServer.per5MinTotalLoginCount = 300 --每5分钟连接数
GameServer.testData =false
GameServer.isStopServerSaveAccount = false --是否停服保存账号
--初始化
function GameServer:Init()
self.lastLoginCount = 0
self.preLoginUser = {}
self.last5MinTotalLoginCount = 0
--中心服将会收到的游戏服数据
self.serverInfo.playerCount ={}
self.serverInfo.playerCount.playing = 0 --在线玩家数量
self.serverInfo.playerCount.offline = 0 --离线玩家数量
self.serverInfo.pre5MinLoginCount = 0 --每5分钟登陆次数
self.serverInfo.loginCount = 0 --启动服务后总共登录次数
self.serverInfo.needPlayerCount = 0 --需要多少玩家进入该服务器(方便测试压力)
self.serverInfo.startTime = os.date("%Y-%m-%d %H:%M:%S", skynet.GetTime()) --启动服务器时间
self.serverInfo.version = skynet.server.redis:get( redisKeyUrl.GameServerVersion ) --服务器版本
--充值服
self.cachePayFailedAccount = {} --缓存充值失败的玩家
local redisKey = redisKeyUrl.PayServerPayFailedAccountSet
local redisData = skynet.server.redis:smembers(redisKey )
for k, v in pairs( redisData ) do
self.cachePayFailedAccount[ v ] = true
log.info(string.format("从redis中获取充值失败的缓存 帐号 %s", v ))
end
--官网充值服
self.cacheOfficialPayFailedAccount = {} --缓存充值失败的玩家
local redisKey = redisKeyUrl.PayServerOfficialPayFailedAccountSet
local redisData = skynet.server.redis:smembers(redisKey )
for k, v in pairs( redisData ) do
self.cacheOfficialPayFailedAccount[ v ] = true
log.info(string.format("从redis中获取官网充值失败的缓存 帐号 %s", v ))
end
end
--跨天
function GameServer:OnNewDay()
end
--1秒Timer
function GameServer:On1SecTimer()
end
--5秒Timer
function GameServer:On5SecTimer()
self:StatData()
--self:IsTimeOut()
--[[
local test = {}
test.a = {}
table.insert(test.a,1)
table.insert(test.a,2)
table.insert(test.a,3)
test.a[0] = 100
local sql = string.format(sqlUrl.saveAccountToPlayer , json:encode({}) , json:encode(test) , 10000992 )
local queryData = skynet.server.db:QueryPlayer( 1 , sql )
]]
--[[
if not self.testData then
repair:Start()
self.testData = true
end]]
--[[
local test = {}
test.a = {}
table.insert(test.a,1)
table.insert(test.a,2)
table.insert(test.a,3)
local jsonData = json:encode({ test})
for i = 1, 1000000, 1 do
local ok , err , r = skynet.server.mongo[ "player".. 5 ]:safe_update({ _id = i} , { BasicInfo = jsonData} , true)
if not ok then
log.info("Mongo执行异常 SavePlayerToMongo", i , err , skynet.server.common:TableToString(r))
return false
end
end
]]
end
--接收集群数据
function GameServer:ClusterRecv(...)
local cmd , c2sData = ...
local s2cData = {}
s2cData.code = errorInfo.Suc
s2cData.data = {}
if self.Center2All_ServerManageCmd == cmd then --中心服集群消息
skynet.server.serverManage:DoManageCmd( c2sData , s2cData )
elseif self.Center2All_SyncClusterInfo == cmd then --同步服务器信息
self:RecvSyncClusterInfo( c2sData )
elseif self.Center2All_SyncServerConfig == cmd then --同步服务器配置
self:RecvSyncServerConfig( c2sData )
elseif self.Center2All_WebMsg == cmd then --Web消息
self:WebMsg( c2sData )
elseif self.Moniter2All_AddIPToBlack == cmd then --添加黑名单
self:RecvAddIPToBlack( c2sData )
elseif self.Route2Game_QueryUserOnline == cmd then --路由服集群消息
self:RecvQueryUserOnline( c2sData , s2cData )
elseif self.Route2Game_UserLoginToken == cmd then
self:RecvUserLoginToken( c2sData )
elseif self.Pay2Game_AddPayInfo == cmd then
self:AddPayInfo( c2sData , s2cData)
elseif self.Pay2Game_CacheFailedAccount == cmd then
self:CacheFailedAccount( c2sData , s2cData)
elseif self.GameToGame_NetMsg == cmd then
self:RecvNetMsg( c2sData , s2cData)
elseif self.GameToGame_SyncOnlineGroup == cmd then
self:RecvSyncOnlineGroup( c2sData )
elseif self.GameToGame_DelPayFailedCache == cmd then
self:RecvDelPayFailedCache( c2sData )
elseif self.Pay2Game_OfficialPayFailedAccount == cmd then
self:OfficialPayFailedAccount( c2sData , s2cData)
elseif self.Pay2Game_OfficialAddPayInfo == cmd then
self:OfficialAddPayInfo( c2sData , s2cData , true)
elseif self.GameToGame_DelOfficialPayFailedCache == cmd then
self:RecvDelOfficialPayFailedCache( c2sData )
elseif self.Pay2Game_WXNotifyAddPayInfo == cmd then
self:WXNotifyAddPayInfo( c2sData , s2cData , true)
elseif self.GameToGame_AddMail == cmd then
self:AddMail( c2sData , s2cData)
elseif self.InviteFriend_Invite == cmd then
self:InviteHandle( c2sData )
else
log.warning(string.format("集群服务器 消息接口 %d 不存在", cmd))
s2cData.code = errorInfo.ErrorCode.NoExistInterface
end
log.info(string.format("集群服 执行命令 %d 返回消息状态 %d " , cmd , s2cData.code))
return s2cData
end
--接收客户端TCP数据
function GameServer:TcpRecv( c2sData , s2cData )
function Do()
--对命令的范围进行验证,不满足条件的就反回
if pb.enum("MsgType","CMD_C2S_Archive") == c2sData.cmd or c2sData.cmd < 1000 or c2sData.cmd > 10000 then
s2cData.code = errorInfo.ErrorCode.MsgTypeError
return
end
--[[
if pb.enum("MsgType","CMD_C2S_StoreShow") ~= c2sData.cmd and
pb.enum("MsgType","CMD_C2S_PetCourseStudy") ~= c2sData.cmd and
pb.enum("MsgType","CMD_C2S_PetCourseShow") ~= c2sData.cmd and
pb.enum("MsgType","CMD_C2S_PetTravelAccelerate") ~= c2sData.cmd and
pb.enum("MsgType","CMD_C2S_PetShopLotteryAccelerate") ~= c2sData.cmd and
pb.enum("MsgType","CMD_C2S_CoffeeMergeSupplyClick") ~= c2sData.cmd and
pb.enum("MsgType","CMD_C2S_CoffeeMergeSort") ~= c2sData.cmd and
pb.enum("MsgType","CMD_C2S_CoffeeMergeAttempt") ~= c2sData.cmd then
--对IP进行校验
local errCode = skynet.server.monitor:IsVaildIP( c2sData.addr , c2sData.cmd )
if errorInfo.Suc ~= errCode then
s2cData.code = errCode
return
end
end
]]
local t1 = skynet.GetTime()
if pb.enum("MsgType","CMD_C2S_UserLogin") == c2sData.cmd then --用户登陆游戏
self:UserLogin( c2sData , s2cData )
log.info(string.format("登陆请求运行时间 %d", skynet.GetTime() - t1))
else
c2sData.userId = playerCenter:GetUserIDForSocketId( c2sData.netType , c2sData.socketId )
if nil == c2sData.userId then
--log.warning("该 sokcet 已经不存在,发来的消息不处理", c2sData.netType , c2sData.socketId )
--s2cData.cmd = c2sData.cmd + 1
s2cData.code = errorInfo.ErrorCode.NoExistSocketId
return
end
local player = playerCenter:GetPlayer( c2sData.userId )
if not playerCenter:IsPlaying( c2sData.userId ) then
--除了登陆,断线后不接收任何消息
s2cData.code = errorInfo.ErrorCode.UserOffline
return
end
player:AddMsgHistory( c2sData.cmd , t1)
playerCenter:Ping( c2sData.userId )
player.basicInfo.lastGameTime = t1
--ping消息与获取服务器时间不触发保存到mongoDB
if pb.enum("MsgType","CMD_C2S_Ping") ~= c2sData.cmd and pb.enum("MsgType","CMD_C2S_ServerTime") ~= c2sData.cmd and
pb.enum("MsgType","CMD_C2S_MsgTipsConfirm") ~= c2sData.cmd and pb.enum("MsgType","CMD_C2S_FinishGuide") ~= c2sData.cmd and
pb.enum("MsgType","CMD_C2S_TakePhotos") ~= c2sData.cmd then
player:AddSaveLevel( dataType.SaveLevel_Normal )
end
log.debug(string.format("玩家 %d cmd %d 请求", c2sData.userId , c2sData.cmd))
if pb.enum("MsgType","CMD_C2S_Ping") == c2sData.cmd then --用户Ping
self:Ping( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ServerTime") == c2sData.cmd then --获取服务器时间
self:ServerTime( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_MsgTipsConfirm") == c2sData.cmd then --消息提示完成
skynet.server.msgTips:Confirm( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ReduceTips") == c2sData.cmd then --消除指定消息提示
skynet.server.msgTips:ReduceTips( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FinishGuide") == c2sData.cmd then --完成新手引导
skynet.server.guide:FinishGuide( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_TakePhotos") == c2sData.cmd then --拍照
self:TakePhotos( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_UploadFile") == c2sData.cmd then --拍照
skynet.server.upLoad:UploadFile( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GMCmd") == c2sData.cmd then --GM命令
--skynet.server.gm:Cmd( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GMAddGoods") == c2sData.cmd then --GM商品命令
--skynet.server.gm:AddGoods( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_WXBindingPhoneSuccess") == c2sData.cmd then --微小绑定手机成功
skynet.server.specialReward:WeChatPhoneLinkReward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_BagSort") == c2sData.cmd then --背包排序
skynet.server.bag:Sort( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_BagShow") == c2sData.cmd then --背包展现
skynet.server.bag:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_BagClick") == c2sData.cmd then --背包点击
skynet.server.bag:Click( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_MoveHome ) then --房子展示
skynet.server.house:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseBuy") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_MoveHome ) then --房子购买
skynet.server.house:Buy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseMove") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_MoveHome ) then --搬家
skynet.server.house:Move( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseBuyScheme") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_HouseScheme ) then --购买方案
skynet.server.house:BuyScheme( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseSwitchScheme") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_HouseScheme ) then --切换方案
skynet.server.house:SwitchScheme( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseSchemeName") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_HouseScheme ) then --修改方案名称
skynet.server.house:SchemeName( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HousePutFurniture") == c2sData.cmd then --房屋摆放家具
skynet.server.house:PutFurniture( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseDecorate") == c2sData.cmd then --装修房间
skynet.server.house:Decorate( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseUnlockArea") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_MoveHome ) then --解锁房间区域
skynet.server.house:UnlockArea( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseGardenShow") == c2sData.cmd then --庭院展示
skynet.server.house:HouseGardenShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_RemoveHouseDecorate") == c2sData.cmd then --移除房屋装修
skynet.server.house:RemoveHouseDecorate( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ShopShow") == c2sData.cmd then --通用商店展示
skynet.server.generalShop:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ShopRefresh") == c2sData.cmd then --通用商店刷新
skynet.server.generalShop:Refresh( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ShopBuy") == c2sData.cmd then --通用商店购买
skynet.server.generalShop:Buy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DecorateShopShow") == c2sData.cmd then --装修商店展示
skynet.server.decorateShop:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DecorateShopRefresh") == c2sData.cmd then --装修商店刷新
skynet.server.decorateShop:Refresh( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DecorateShopBuy") == c2sData.cmd then --装修商店购买
skynet.server.decorateShop:Buy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ClothesShopShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Clothing ) then --服饰商店展示
skynet.server.clothesShop:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ClothesShopRefresh") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Clothing ) then --服饰商店刷新
skynet.server.clothesShop:Refresh( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ClothesShopBuy") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Clothing ) then --服饰商店购买
skynet.server.clothesShop:Buy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetClothesShopShow") == c2sData.cmd then --宠物服饰商店展示
skynet.server.petClothesShop:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetClothesShopRefresh") == c2sData.cmd then --宠物服饰商店刷新
skynet.server.petClothesShop:Refresh( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetClothesShopBuy") == c2sData.cmd then --宠物服饰商店购买
skynet.server.petClothesShop:Buy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PlantShopShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Plant ) then --植物商店展示
skynet.server.plantShop:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PlantShopManage") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Plant ) then --植物商店管理
skynet.server.plantShop:Manage( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_LevelTaskShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_LevelTask ) then --等级任务列表显示
skynet.server.levelTask:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_LevelTaskAccomplish") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_LevelTask ) then --等级任务完成
skynet.server.levelTask:Accomplish( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DailyTaskShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DailyTask ) then --每日任务列表显示
skynet.server.dailyTask:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DailyTaskOneAccomplish") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DailyTask ) then --每日任务完成
skynet.server.dailyTask:OneAccomplish( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DailyTaskAllAccomplish") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DailyTask ) then --每日任务完成
skynet.server.dailyTask:AllAccomplish( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_AchieveTaskShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_AchieveTask ) then --成就任务列表显示
skynet.server.achieveTask:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_AchieveTaskAccomplish") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_AchieveTask ) then --成就任务完成
skynet.server.achieveTask:Accomplish( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_NpcTaskShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_NpcTask ) then --Npc任务列表显示
skynet.server.npcTask:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_NpcTaskAccomplish") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_NpcTask ) then --Npc任务完成
skynet.server.npcTask:Accomplish( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_UsedShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Used ) then --闲菜展示
skynet.server.used:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_UsedBuy") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Used )then --闲菜购买
skynet.server.used:Buy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_UsedRefresh") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Used )then --闲菜刷新
skynet.server.used:Refresh( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_UsedSell") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Used )then --闲菜出售
skynet.server.used:Sell( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_UsedLogisticsShow") == c2sData.cmd then --闲菜物流展示
skynet.server.used:LogisticsShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_UsedLogistics") == c2sData.cmd then --闲菜物流
skynet.server.used:Logistics( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_UsedStorageShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Used )then --闲菜查看仓库
skynet.server.used:StorageShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_UsedSellAccelerate") == c2sData.cmd then --闲菜物流
skynet.server.used:SellAccelerate( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PersonalShow") == c2sData.cmd then --个人特征展示
skynet.server.personal:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PersonalChange") == c2sData.cmd then --个人特征改变
skynet.server.personal:Change( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PersonalRename") == c2sData.cmd then --个人特征重新改名
skynet.server.personal:Rename( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PersonalGetData") == c2sData.cmd then --个人获取资料
skynet.server.personal:GetData( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PersonalSetData") == c2sData.cmd then --个人设置资料
skynet.server.personal:SetData( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetShow") == c2sData.cmd then --宠物特征展示
skynet.server.pet:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetChange") == c2sData.cmd then --宠物特征改变
skynet.server.pet:Change( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetUnlock") == c2sData.cmd then --宠物解锁
skynet.server.pet:Unlock( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetRename") == c2sData.cmd then --宠物改名
skynet.server.pet:Rename( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_IllustrationMainShow") == c2sData.cmd then --图鉴主页展示
skynet.server.illustration:MainShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_IllustrationShow") == c2sData.cmd then --图鉴展示
skynet.server.illustration:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_IllustrationProgress") == c2sData.cmd then --图鉴进度展示
skynet.server.illustration:ProgressShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_IllustrationAward") == c2sData.cmd then --图鉴领奖
skynet.server.illustration:Award( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_IllustrationGetPoint") == c2sData.cmd then --图鉴领取积分
skynet.server.illustration:GetPoint( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_IllustrationLevelReward") == c2sData.cmd then --图鉴领取进度奖励
skynet.server.illustration:GetLevelReward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FlowerpotShow") == c2sData.cmd then --花盆展示信息
skynet.server.flowerpot:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FlowerpotPlant") == c2sData.cmd then --花盆种植
skynet.server.flowerpot:Plant( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FlowerpotShovel") == c2sData.cmd then --花盆铲除
skynet.server.flowerpot:Shovel( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FlowerpotFertilize") == c2sData.cmd then --花盆施肥
skynet.server.flowerpot:Fertilize( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FriendMsgList") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Friend) then --朋友圈消息列表
skynet.server.friend:MsgList( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FriendMsgDetail") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Friend ) then --朋友圈消息详情
skynet.server.friend:MsgDetail( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FriendMsgClient") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Friend ) then --朋友圈客户端发送消息
skynet.server.friend:MsgClient( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FriendMsgAddFriend") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Friend ) then --朋友圈消息添加好友
skynet.server.friend:AddFriend( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FriendMsgGetGift") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Friend ) then --朋友圈消息获取礼物
skynet.server.friend:GetGift( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FriendMsgEnterScene") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Friend ) then --朋友圈消息进入场景
skynet.server.friend:EnterScene( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FriendMsgLeaveScene") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Friend ) then --朋友圈消息离开场景
skynet.server.friend:LeaveScene( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FriendListShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Friend ) then --好友列表展示
skynet.server.friend:ListShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FriendGiftBag") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Friend ) then --礼物背包
skynet.server.friend:GiftBag( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FriendGiftGive") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Friend ) then --赠送礼物
skynet.server.friend:GiftGive( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FriendNewsShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Friend ) then --友圈动态
skynet.server.friend:NewsShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FriendLikeNews") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Friend ) then --友圈点赞
skynet.server.friend:LikeNews( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FriendInteract") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Friend ) then --友圈互动
skynet.server.friend:Interact( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FriendFavorabilityChange") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Friend ) then --友圈互动
skynet.server.friend:Interact( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GiftBoxShow") == c2sData.cmd then --礼盒展示
--skynet.server.giftBox:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GiftBoxPrize") == c2sData.cmd then --礼盒领奖
--skynet.server.giftBox:Prize( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GashaponShow") == c2sData.cmd then --扭蛋展示
skynet.server.gashapon:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GashaponLottery") == c2sData.cmd then --扭蛋抽奖
skynet.server.gashapon:Lottery( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GashaponGainPrize") == c2sData.cmd then --扭蛋获取奖品
skynet.server.gashapon:GainPrize( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ADWatch") == c2sData.cmd then --观看广告
skynet.server.ad:Watch( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ExtraRevenue") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Hang ) then --额外收益(在线+离线)
skynet.server.extraRevenue:Start( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_MailHistory") == c2sData.cmd then --邮件领取历史
skynet.server.mail:History( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_MailAward") == c2sData.cmd then --邮件奖励
skynet.server.mail:Award( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ReadMail") == c2sData.cmd then --邮件读取
skynet.server.mail:Read( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DeleteReadMail") == c2sData.cmd then --删除已读邮件
skynet.server.mail:DeleteRead( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_MailAllAward") == c2sData.cmd then --一键领取邮件奖励
skynet.server.mail:AllAward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_RedeemHistory") == c2sData.cmd then --兑换码领取历史
skynet.server.redeem:History( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_RedeemAward") == c2sData.cmd then --兑换码领取奖励
skynet.server.redeem:Award( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CoffeeMergeShow") == c2sData.cmd then --咖啡合成界面展示
skynet.server.coffeeShop:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CoffeeMergeSupplyClick") == c2sData.cmd then --咖啡供货盒点击
skynet.server.coffeeShop:SupplyClick( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CoffeeMergeSupplyShow") == c2sData.cmd then --咖啡供货盒展示
skynet.server.coffeeShop:SupplyShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CoffeeMergeSort") == c2sData.cmd then --咖啡排序
skynet.server.coffeeShop:Sort( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CoffeeMergeAttempt") == c2sData.cmd then --咖啡合成
skynet.server.coffeeShop:Merge( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CoffeeSupplierReplenish") == c2sData.cmd then --咖啡原料补充
skynet.server.coffeeShop:Replenish( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CoffeeResearch") == c2sData.cmd then --咖啡研发
skynet.server.coffeeShop:Research( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CoffeeIllustrationShow") == c2sData.cmd then --咖啡图鉴展示
skynet.server.coffeeShop:IllustrationShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CoffeeIllustrationPrize") == c2sData.cmd then --咖啡图鉴领取
skynet.server.coffeeShop:IllustrationPrize( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FlowerShopShow") == c2sData.cmd then --花店内容展示
skynet.server.flowerShop:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FlowerShopBuy") == c2sData.cmd then --花店展示区购买
skynet.server.flowerShop:Buy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FlowerShopRecycle") == c2sData.cmd then --花店回收区售卖
skynet.server.flowerShop:Recycle( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FlowerShelfShow") == c2sData.cmd then --花店货架展示
skynet.server.flowerShop:ShelfShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FlowerShelfBuy") == c2sData.cmd then --花店货架购买
skynet.server.flowerShop:ShelfBuy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StylingRoomMiniGameShow") == c2sData.cmd then --造型间寻物展示
skynet.server.styleShop:GridShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StylingRoomMiniGameRefresh") == c2sData.cmd then --造型间寻物刷新
skynet.server.styleShop:GridRefresh( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StylingRoomMiniGameClick") == c2sData.cmd then --造型间寻物点击
skynet.server.styleShop:GridClick( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StylingRoomMiniGameEnergyRefill") == c2sData.cmd then --造型间寻物剪刀回复
skynet.server.styleShop:RestoreEnergy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StylingRoomMiniGameEnergyShow") == c2sData.cmd then --造型间寻物剪刀展示
skynet.server.styleShop:EnergyShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StylingDesignRoomShow") == c2sData.cmd then --每次进入造型间的时候需要显示
skynet.server.styleShop:RoomShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StylingDesignRoomAttempt") == c2sData.cmd then --造型间设计
skynet.server.styleShop:RoomAttempt( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StylingDesignRewardPrize") == c2sData.cmd then --造型间奖励领取
skynet.server.styleShop:RoomReward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FishGearShopEnter") == c2sData.cmd then --进入渔店
skynet.server.fishShop:FishGearShopEnter( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FishingStart") == c2sData.cmd then --开始钓鱼
skynet.server.fishShop:FishingStart( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FishingComplete") == c2sData.cmd then --钓鱼完成之后
skynet.server.fishShop:FishingComplete( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FishingLuresBuy") == c2sData.cmd then --使用蜗壳币购买鱼饵
skynet.server.fishShop:FishingLuresBuy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FishIllustartionShow") == c2sData.cmd then --渔夫手册展示
skynet.server.fishShop:FishIllustartionShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FishRodShow") == c2sData.cmd then --鱼竿界面 可以选择鱼竿
skynet.server.fishShop:FishRodShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FishRodChange") == c2sData.cmd then --鱼竿切换
skynet.server.fishShop:FishRodChange( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FishIllustrationAward") == c2sData.cmd then --领取图鉴奖励
skynet.server.fishShop:FishIllustrationAward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FishCraftRedeem") == c2sData.cmd then --手工坊
skynet.server.fishShop:FishCraftRedeem( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisineShow") == c2sData.cmd then --进入料理店
skynet.server.cuisineShop:CuisineShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisineShowVF") == c2sData.cmd then --显示玩家可以种植的植物
skynet.server.cuisineShop:CuisineShowVF( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisinePlantVF") == c2sData.cmd then --蔬果种植
skynet.server.cuisineShop:CuisinePlantVF( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisineChangeVF") == c2sData.cmd then --改变蔬果状态
skynet.server.cuisineShop:CuisineChangeVF( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisineGetVF") == c2sData.cmd then --蔬果获取
skynet.server.cuisineShop:CuisineGetVF( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisineShowFI") == c2sData.cmd then --进货展示
skynet.server.cuisineShop:CuisineShowFI( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisineGetFI") == c2sData.cmd then --食材进货
skynet.server.cuisineShop:CuisineGetFI( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisineAccelerateRestock") == c2sData.cmd then --加速进货
skynet.server.cuisineShop:CuisineAccelerateRestock( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisineShowMaterials") == c2sData.cmd then --展示玩家拥有的蔬果和肉类
skynet.server.cuisineShop:CuisineShowMaterials( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisineMakeCuisine") == c2sData.cmd then --菜品制作
skynet.server.cuisineShop:CuisineMakeCuisine( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisineShowSetMeal") == c2sData.cmd then --展示玩家当前套餐
skynet.server.cuisineShop:CuisineShowSetMeal( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisineMakeSetMeal") == c2sData.cmd then --套餐制作
skynet.server.cuisineShop:CuisineMakeSetMeal( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisineShowMenu") == c2sData.cmd then --展示菜单
skynet.server.cuisineShop:CuisineShowMenu( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisineMenuAward") == c2sData.cmd then --领取菜单奖励
skynet.server.cuisineShop:CuisineMenuAward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisineMassProduce") == c2sData.cmd then --一键制作
skynet.server.cuisineShop:CuisineMassProduce( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_CuisineStartFI") == c2sData.cmd then --食材开始进货
skynet.server.cuisineShop:CuisineStartFI( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetShopEnter") == c2sData.cmd then --进入宠物店
skynet.server.petShop:PetShopEnter( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetCourseShow") == c2sData.cmd then --宠物学习展示
skynet.server.petShop:PetCourseShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetCourseStudy") == c2sData.cmd then --宠物课程学习
skynet.server.petShop:PetCourseStudy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetCourseAwardShow") == c2sData.cmd then --宠物学习奖励展示
skynet.server.petShop:PetCourseAwardShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetCourseAwardGet") == c2sData.cmd then --宠物学习奖励获取
skynet.server.petShop:PetCourseAwardGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetTravelShow") == c2sData.cmd then --宠物出游展示
skynet.server.petShop:PetTravelShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetTravelStart") == c2sData.cmd then --宠物出游开始
skynet.server.petShop:PetTravelStart( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetTravelAccelerate") == c2sData.cmd then --宠物出游加速
skynet.server.petShop:PetTravelAccelerate( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetTravelAward") == c2sData.cmd then --宠物出游奖励获取
skynet.server.petShop:PetTravelAward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetShopShow") == c2sData.cmd then --宠物商店展示
skynet.server.petShop:PetShopShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetShopBuy") == c2sData.cmd then --宠物商店购买
skynet.server.petShop:PetShopBuy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetShopLottery") == c2sData.cmd then --宠物商店盲盒抽取
skynet.server.petShop:PetShopLottery( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PetShopLotteryAccelerate") == c2sData.cmd then --宠物商店盲盒抽取加速
skynet.server.petShop:PetShopLotteryAccelerate( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GuGuShopShow") == c2sData.cmd then --咕咕市集数据展示
skynet.server.guGuShop:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GuGuShopBuy") == c2sData.cmd then --咕咕市集购买
skynet.server.guGuShop:Buy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_MapShowLoc") == c2sData.cmd then --外出地点展示
skynet.server.map:ShowLoc( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_MapLocEnter") == c2sData.cmd then --进入外出地点
skynet.server.map:EntryLoc( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_MapShowNPCDetail") == c2sData.cmd then --NPC详情
skynet.server.map:MapShowNPCDetail( player , c2sData , s2cData )
--elseif pb.enum("MsgType","CMD_C2S_AnnouncementHistory") == c2sData.cmd then --公告历史(准备废弃)
-- skynet.server.announcement:History( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_AnnouncementNew") == c2sData.cmd then --获取公告
skynet.server.announcement:GetLatestAnnouncement( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_QuestionnaireShow") == c2sData.cmd then --问卷调查显示
skynet.server.questionnaire:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_QuestionnaireSubmit") == c2sData.cmd then --问卷调查提交
skynet.server.questionnaire:Submit( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PassCheckRewardShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_PassCheck ) then --通行证奖励显示
skynet.server.passCheck:RewardShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PassCheckRewardGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_PassCheck ) then --通行证奖励获取
skynet.server.passCheck:RewardGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PassCheckRewardAllGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_PassCheck ) then --通行证奖励一键获取
skynet.server.passCheck:RewardAllGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PassCheckTaskShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_PassCheck ) then --通行证任务显示
skynet.server.passCheck:TaskShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PassCheckTaskGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_PassCheck ) then --通行证奖励获取
skynet.server.passCheck:TaskGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FurDyeShow") == c2sData.cmd then --染色工坊显示
skynet.server.dyeworkshop:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FurDyeAttempt") == c2sData.cmd then --染色工坊染色
skynet.server.dyeworkshop:Attempt( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FurDyeSlotPrize") == c2sData.cmd then --染色工坊领取
skynet.server.dyeworkshop:Prize( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FurDyeSlotSpeedUp") == c2sData.cmd then --染色工坊加速
skynet.server.dyeworkshop:SpeedUp( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FurDyeSlotUnlock") == c2sData.cmd then --染色空间解锁
skynet.server.dyeworkshop:Unlock( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FurMakeShowSlots") == c2sData.cmd then --家具工坊格子显示
skynet.server.furnitureWorkShop:ShowSlots( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FurMakeShowFurs") == c2sData.cmd then --家具工坊可制作家具显示
skynet.server.furnitureWorkShop:ShowFurs( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FurMakeMake") == c2sData.cmd then --家具工坊制作家具
skynet.server.furnitureWorkShop:Make( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FurMakePrize") == c2sData.cmd then --家具工坊领取制作家具
skynet.server.furnitureWorkShop:Prize( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FurMakeSpeedUp") == c2sData.cmd then --家具工坊加速
skynet.server.furnitureWorkShop:SpeedUp( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FurMakeUnlock") == c2sData.cmd then --家具工坊解锁
skynet.server.furnitureWorkShop:Unlock( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FurPurchaseShow") == c2sData.cmd then --材料采购 展示
skynet.server.furnitureWorkShop:PurchaseShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FurPurchaseStart") == c2sData.cmd then --材料采购 开始
skynet.server.furnitureWorkShop:PurchaseStart( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FurPurchaseGet") == c2sData.cmd then --材料采购 获取
skynet.server.furnitureWorkShop:PurchaseGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_FurPurchaseSpeed") == c2sData.cmd then --材料采购 加速
skynet.server.furnitureWorkShop:PurchaseSpeed( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DesignShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DesignHouse ) then --设计抽奖展示
skynet.server.raffle:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DesignLottery") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DesignHouse ) then --设计抽奖
skynet.server.raffle:Lottery( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DesignShare") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DesignHouse ) then --设计分享
skynet.server.raffle:Share( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DesignTimeAwardShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DesignHouse ) then --限时卡池奖励界面显示
skynet.server.raffle:TimeAwardShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DesignTimeAwardGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DesignHouse ) then --限时卡池奖励获取
skynet.server.raffle:TimeAwardGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DesignHighStoreShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DesignHouse ) then --高级卡池兑换商店显示
skynet.server.raffle:HighStoreShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DesignHighStoreRedeem") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DesignHouse ) then --高级卡池兑换商店兑换
skynet.server.raffle:HighStoreRedeem( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DesignTimeSignInShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DesignHouse ) then --限时卡池签到显示
skynet.server.raffle:TimeSignInShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DesignTimeSignInGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DesignHouse ) then --限时卡池签到获取
skynet.server.raffle:TimeSignInGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DesignOverviewShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DesignHouse ) then --设计概览
skynet.server.raffle:OverviewShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DesignTimePointsShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DesignHouse ) then --设计概览
skynet.server.activityLimitedAccum:TimePointsShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DesignTimePointsGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DesignHouse ) then --设计概览
skynet.server.activityLimitedAccum:TimePointsGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DesignTimeFragmentShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DesignHouse ) then --设计概览
skynet.server.raffle:TimeFragmentShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DesignTimeFragmentExchange") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DesignHouse ) then --设计概览
skynet.server.raffle:TimeFragmentExchange( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DesignTimeFragmentTransition") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DesignHouse ) then --设计概览
skynet.server.raffle:TimeFragmentTransition( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StoreShow") == c2sData.cmd then --商城展示
skynet.server.store:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StoreBuy") == c2sData.cmd then --商城购买
skynet.server.store:Buy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StoreTopUpShow") == c2sData.cmd then --首充赠礼显示
skynet.server.store:TopUpShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StoreTopUpGet") == c2sData.cmd then --首充赠礼领取
skynet.server.store:TopUpGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StorePointsShow") == c2sData.cmd then --灵感积分领取
skynet.server.store:PointsShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StorePointsGet") == c2sData.cmd then --灵感积分领取
skynet.server.store:PointsGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StoreMonthCardShow") == c2sData.cmd then --月卡界面显示
skynet.server.store:MonthCardShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StoreMonthCardBuy") == c2sData.cmd then --月卡购买
skynet.server.store:MonthCardBuy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StoreMonthCardGet") == c2sData.cmd then --月卡领取每日奖励
skynet.server.store:MonthCardGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StoreLimitPackShow") == c2sData.cmd then --限购礼包活动 展示
skynet.server.store:LimitPackShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StoreMonthCardTry") == c2sData.cmd then --月卡体验
skynet.server.store:MonthCardTry( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StoreIconPopUp") == c2sData.cmd then --拍屏礼包管理
skynet.server.store:IconPopUp( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_StoreCanBuy") == c2sData.cmd then --礼包是否还可以购买
skynet.server.store:CanBuy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ConfirmReceiptStoreBuy") == c2sData.cmd then --客户端确认商城礼包收货
skynet.server.store:ConfirmReceipt( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_SignInShow") == c2sData.cmd then --常规签到显示
skynet.server.signIn:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_SignInGet") == c2sData.cmd then --常规签到获取
skynet.server.signIn:Get( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_SignInSumGet") == c2sData.cmd then --常规签到累签获取
skynet.server.signIn:SumGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PlayerLandCheck") == c2sData.cmd then --新人签到检查
skynet.server.playerLand:Check( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PlayerLandShow") == c2sData.cmd then --新人签到显示
skynet.server.playerLand:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PlayerLandGet") == c2sData.cmd then --新人签到获取
skynet.server.playerLand:Get( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_BirthdayShow") == c2sData.cmd then --生日日期展示
skynet.server.birthday:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PersonalSetBirthdayData") == c2sData.cmd then --生日日期设置
skynet.server.birthday:BirthdayDateSet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerMyList") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --好友列表
skynet.server.partner:MyList( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerQuery") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --好友查询
skynet.server.partner:Query( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerAdd") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --好友添加
skynet.server.partner:Add( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerDelete") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --好友删除
skynet.server.partner:Delete( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerApplyList") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --好友申请列表
skynet.server.partner:ApplyList( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerApplyRespond") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --好友申请回应
skynet.server.partner:ApplyRespond( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerHistoryMsg") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --好友聊天记录
skynet.server.partner:HistoryMsg( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerSendMsg") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --好友发送消息
skynet.server.partner:SendMsg( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerGiftBag") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --好友礼物背包
skynet.server.partner:GiftBag( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerGiftGive") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --好友赠送礼物
skynet.server.partner:GiftGive( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerGiftGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --好友获取礼物
skynet.server.partner:GiftGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerDetail") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --好友详情
skynet.server.partner:Detail( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerShowFriendHouse") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --获取好友房间信息
skynet.server.partner:ShowFriendHouse( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerRecommend") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --好友推荐
skynet.server.partner:Recommend( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerClearRedDot") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --好友消除红点
skynet.server.partner:ClearRedDot( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerDoubleSpaceRequest") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --好友组建双人空间请求
skynet.server.partner:DoubleSpaceRequest( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerDoubleSpaceResponse") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --好友组建双人空间回应
skynet.server.partner:DoubleSpaceResponse( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_PartnerAllApplyRespond") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Partner ) then --好友申请回应
skynet.server.partner:AllApplyRespond( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园显示
skynet.server.groupManage:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupCreate") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园创建
skynet.server.groupManage:Create( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupJoin") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园加入
skynet.server.groupManage:Join( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupQuit") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园退出
skynet.server.groupManage:Quit( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupQuery") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园查询
skynet.server.groupManage:Query( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupUpdateInfo") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园更新信息(园长/副园长)
skynet.server.groupManage:UpdateInfo( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupChangeIdentity") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园改变身份(园长/副园长)
skynet.server.groupManage:ChangeIdentity( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupApplyList") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园加入申请的玩家列表(园长/副园长)
skynet.server.groupManage:ApplyList( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupAudit") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园审核(园长/副园长)
skynet.server.groupManage:Audit( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupKick") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园踢出成员(园长/副园长)
skynet.server.groupManage:Kick( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupDissolve") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园解散(园长)
skynet.server.groupManage:Dissolve( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupSignin") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --签到
skynet.server.groupManage:Signin( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupSceneShow") == c2sData.cmd then --家园场景展示
skynet.server.groupScene:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupScenePut") == c2sData.cmd then --家园场景放置
skynet.server.groupScene:Put( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupSceneMove") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园搬家
skynet.server.groupScene:Move( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupSceneContributeShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园建设 具体界面展示
skynet.server.groupScene:ContributeShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupSceneContribute") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园建设 贡献
skynet.server.groupScene:Contribute( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupSceneChangeStyle") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园场景公共建筑变化风格
skynet.server.groupScene:ChangeStyle( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupSceneChangeHouse") == c2sData.cmd then --家园私有土地房屋改变
skynet.server.groupScene:ChangeHouse( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupSceneGardenShow") == c2sData.cmd then --家园庭院展示
skynet.server.groupScene:GardenShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupShowRank") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园显示排行榜
skynet.server.groupRank:ShowRank( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupRankGetReward") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园排行榜领取奖励
skynet.server.groupRank:GetReward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupHistoryMsg") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园聊天记录(每次发送最近的50条)
skynet.server.groupChat:HistoryMsg( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupSendMsg") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园发送消息
skynet.server.groupChat:SendMsg( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupHelpDetail") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园建材求助详情
skynet.server.groupChat:HelpDetail( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupGiveGoods") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园给予商品
skynet.server.groupChat:GiveGoods( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupBMShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --建材兑换界面显示
skynet.server.groupBMExchange:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupBMExchange") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --建材兑换
skynet.server.groupBMExchange:Exchange( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupGardenShopShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --园艺铺子界面显示
skynet.server.groupGardenShop:GroupGardenShopShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupGardenShopRedeem") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --园艺铺子兑换
skynet.server.groupGardenShop:GroupGardenShopRedeem( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupBMConstructShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园建设 具体界面展示
skynet.server.groupBMExchange:ConstructShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupBMConstructContribute") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园建设 贡献
skynet.server.groupBMExchange:ConstructContribute( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupWelfareShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园福利展示
skynet.server.groupManage:WelfareShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupContributeRewardGain") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园贡献奖励领取
skynet.server.groupManage:ContributeRewardGain( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GroupHelpRewardGain") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_Group ) then --家园帮助奖励领取
skynet.server.groupManage:HelpRewardGain( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityLabyrinthShow") == c2sData.cmd then --迷途寻宝 展示
skynet.server.activityLabyrinth:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityLabyrinthBuyCompass") == c2sData.cmd then --迷途寻宝 购买指南针
skynet.server.activityLabyrinth:BuyCompass( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityLabyrinthStart") == c2sData.cmd then --迷途寻宝 开始走迷宫
skynet.server.activityLabyrinth:Start( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityLabyrinthGetChest") == c2sData.cmd then --迷途寻宝 获取宝箱
skynet.server.activityLabyrinth:GetChest( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityLabyrinthLoseAward") == c2sData.cmd then --迷途寻宝 惩罚宝箱选择失去的奖励
skynet.server.activityLabyrinth:LoseAward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityLabyrinthFinish") == c2sData.cmd then --迷途寻宝 完成迷宫
skynet.server.activityLabyrinth:Finish( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityLabyrinthSumGet") == c2sData.cmd then --迷途寻宝 领取累计奖励
skynet.server.activityLabyrinth:SumGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityLabyrinthBuyStep") == c2sData.cmd then --迷途寻宝 购买步数
skynet.server.activityLabyrinth:BuyStep( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DoubleSpaceShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --双人空间展示
skynet.server.doubleSpace:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DoubleSpaceSetStatus") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --双人空间设置状态
skynet.server.doubleSpace:SetStatus( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DoubleSpaceDecorate") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --双人空间装修
skynet.server.doubleSpace:Decorate( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DoubleSpacePut") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --双人空间放置家具
skynet.server.doubleSpace:Put( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DoubleSpaceRename") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --双人空间重命名
skynet.server.doubleSpace:Rename( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DoubleSpaceShopShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --双人空间商店展示
skynet.server.doubleSpace:ShopShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DoubleSpaceShopBuy") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --双人空间商店购买
skynet.server.doubleSpace:ShopBuy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DoubleSpaceDissolve") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --双人空间解散
skynet.server.doubleSpace:Dissolve( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DoubleSpaceRemoveDecorate") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --双人空间删除装修
skynet.server.doubleSpace:RemoveDecorate( player , c2sData , s2cData )
--购买房产-装修方案
elseif pb.enum("MsgType","CMD_C2S_DoubleSpaceHouseRentBuy") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --双人空间删除装修
skynet.server.doubleSpace:HouseRentBuy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DoubleSpaceHouseRentSchemeBuy") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --双人空间删除装修
skynet.server.doubleSpace:HouseRentSchemeBuy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DoubleSpaceChangeHouse") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --双人空间删除装修
skynet.server.doubleSpace:ChangeHouse( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DoubleSpaceChangeDecorateScheme") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --双人空间删除装修
skynet.server.doubleSpace:ChangeDecorateScheme( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_DoubleSpaceChangeDecorateSchemeName") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_DoubleSpace ) then --双人空间删除装修
skynet.server.doubleSpace:ChangeDecorateSchemeName( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseRentEnter") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_HouseRent ) then --进入恋家
skynet.server.houseRent:HouseRentEnter( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseRentGardenShopBuy") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_HouseRent ) then --恋家青青园艺购买
skynet.server.houseRent:HouseRentGardenShopBuy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseRentConsultShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_HouseRent ) then --恋家房产咨询展示
skynet.server.houseRent:HouseRentConsultShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseRentConsultLease") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_HouseRent ) then --恋家房产咨询出租
skynet.server.houseRent:HouseRentConsultLease( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseRentConsultCancelLease") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_HouseRent ) then --恋家房产咨询取消租赁
skynet.server.houseRent:HouseRentConsultCancelLease( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseRentConsultRentCollection") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_HouseRent ) then --恋家房产咨询收租
skynet.server.houseRent:HouseRentConsultRentCollection( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_HouseRentConsultRefresh") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_HouseRent ) then --恋家房产咨询刷新
skynet.server.houseRent:ConsultRefresh( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityManageShow") == c2sData.cmd then --活动管理 展示
skynet.server.activityManage:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivitySignShow") == c2sData.cmd then --签到活动 展示
skynet.server.activitySign:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivitySignGet") == c2sData.cmd then --签到活动 获取
skynet.server.activitySign:Get( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityCarnivalShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityCarnival ) then --嘉年华 展示
skynet.server.activityCarnival:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityCarnivalTaskShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityCarnival ) then --嘉年华 任务展示
skynet.server.activityCarnival:TaskShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityCarnivalTaskGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityCarnival ) then --嘉年华 任务奖励领取
skynet.server.activityCarnival:TaskGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityCarnivalGetChest") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityCarnival ) then --嘉年华 当天完成任务获取宝箱
skynet.server.activityCarnival:GetChest( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityCarnivalSumGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityCarnival ) then --嘉年华 七日累计大奖领取
skynet.server.activityCarnival:SumGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityFlipCardShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityFlipCard ) then --翻翻乐 展示
skynet.server.activityFlipCard:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityFlipCardStart") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityFlipCard ) then --翻翻乐 开始
skynet.server.activityFlipCard:Start( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityFlipCardFinish") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityFlipCard ) then --翻翻乐 完成
skynet.server.activityFlipCard:Finish( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityFlipCardTaskShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityFlipCard ) then --翻翻乐 任务展示
skynet.server.activityFlipCard:TaskShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityFlipCardTaskGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityFlipCard ) then --翻翻乐 任务领取
skynet.server.activityFlipCard:TaskGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityJigsawShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityPuzzle ) then --拼图 展示
skynet.server.activityPuzzle:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityJigsawRewardGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityPuzzle ) then -- 拼图 进度奖励
skynet.server.activityPuzzle:GetPuzzleReward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityJigsawBlindBoxShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityPuzzle ) then -- 拼图 盲盒展示
skynet.server.activityPuzzle:BoxShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityJigsawBlindBoxOpen") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityPuzzle ) then -- 拼图 开盲盒
skynet.server.activityPuzzle:OpenBox( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityJigsawTaskShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityPuzzle ) then -- 拼图 任务展示
skynet.server.activityPuzzle:TaskShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityJigsawTaskRewardGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityPuzzle ) then -- 拼图 任务领取奖励
skynet.server.activityPuzzle:TaskRewardGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityJigsawOnClick") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityPuzzle ) then -- 拼图 解锁指定拼图块
skynet.server.activityPuzzle:ClickPuzzle( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDecoWeekShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDecoWeek ) then --主题装修周展示
skynet.server.activityDecoWeek:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDecoWeekGetWeekReward") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDecoWeek ) then --主题装修周主动领取结算奖励
skynet.server.activityDecoWeek:GetWeekReward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDecoWeekDesignSubmit") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDecoWeek ) then --主题装修周设计投稿
skynet.server.activityDecoWeek:DesignSubmit( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDecoWeekStoreShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDecoWeek ) then --主题装修周星芒商城显示
skynet.server.activityDecoWeek:StoreShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDecoWeekStoreBuy") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDecoWeek ) then --主题装修周星芒商城购买
skynet.server.activityDecoWeek:StoreBuy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDecoWeekHotDesignShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDecoWeek ) then --主题装修周往期热门设计展示
skynet.server.activityDecoWeek:HotDesignShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDecoWeekVoteShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDecoWeek ) then --主题装修周投票展示
skynet.server.activityDecoWeek:VoteShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDecoWeekVote") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDecoWeek ) then --主题装修周投票
skynet.server.activityDecoWeek:Vote( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDecoWeekVoteRewardGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDecoWeek ) then --主题装修周投票奖励领取
skynet.server.activityDecoWeek:VoteRewardGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDecoWeekMyDesignShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDecoWeek ) then --主题装修周个人投稿展示
skynet.server.activityDecoWeek:MyDesignShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDecoWeekBuyVote") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDecoWeek ) then --主题装修周购买投票券
skynet.server.activityDecoWeek:BuyVote( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDreamLifeShopShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDreamLife ) then --若来 商店展示
skynet.server.activityDreamLife:ShopShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDreamLifeShopGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDreamLife ) then --若来 商店兑换
skynet.server.activityDreamLife:ShopGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDreamLifeTaskShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDreamLife ) then --若来 任务展示
skynet.server.activityDreamLife:TaskShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDreamLifeTaskStart") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDreamLife ) then --若来 任务开始
skynet.server.activityDreamLife:TaskStart( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDreamLifeTaskGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDreamLife ) then --若来 任务领取
skynet.server.activityDreamLife:TaskGet( player , c2sData , s2cData )
--好物匹配
elseif pb.enum("MsgType","CMD_C2S_ActivityMatchStuffShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityMatchStuff ) then --好物匹配 显示信息
skynet.server.activityMatchStuff:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityMatchStuffShopShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityMatchStuff ) then
skynet.server.activityMatchStuff:ShopShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityMatchStuffShopBuy") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityMatchStuff ) then
skynet.server.activityMatchStuff:ShopBuy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityMatchStuffGameStart") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityMatchStuff ) then
skynet.server.activityMatchStuff:GameStart( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityMatchStuffGameOver") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityMatchStuff ) then
skynet.server.activityMatchStuff:GameOver( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityMatchStuffMagnifyingGlassSupplement") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityMatchStuff ) then
skynet.server.activityMatchStuff:MagnifyingGlassSupplement( player , c2sData , s2cData )
--新手限定设计卡池活动
elseif pb.enum("MsgType","CMD_C2S_ActivityNewPlayerRaffleShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityNewPlayerRaffle ) then --新手限定设计卡池活动 显示信息
skynet.server.activityNewPlayerRaffle:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityNewPlayerRaffleAwardShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityNewPlayerRaffle ) then
skynet.server.activityNewPlayerRaffle:AwardShow( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityNewPlayerRaffleAwardGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityNewPlayerRaffle ) then
skynet.server.activityNewPlayerRaffle:AwardGet( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityNewPlayerRaffleLottery") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityNewPlayerRaffle ) then
skynet.server.activityNewPlayerRaffle:Lottery( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityNewPlayerRaffleAwardPreview") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityNewPlayerRaffle ) then
skynet.server.activityNewPlayerRaffle:AwardPreview( player , c2sData , s2cData )
--消息订阅
elseif pb.enum("MsgType","CMD_C2S_SubscribeGetSubscribeInfo") == c2sData.cmd then --and player:IsUnlockSystem( dataType.UnlockSystem_Subscription ) then --消息订阅 显示信息
skynet.server.subscribe:GetSubscribeInfo( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_SubscribeSubscribeMsg") == c2sData.cmd then --and player:IsUnlockSystem( dataType.UnlockSystem_Subscription ) then
skynet.server.subscribe:SubscribeMsg( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_SubscribeUnSubscribe") == c2sData.cmd then --and player:IsUnlockSystem( dataType.UnlockSystem_Subscription ) then
skynet.server.subscribe:UnSubscribe( player , c2sData , s2cData )
--游戏圈任务
elseif pb.enum("MsgType","CMD_C2S_GameClubTaskShow") == c2sData.cmd then --and player:IsUnlockSystem( dataType.UnlockSystem_GameClubTask ) then --游戏圈任务 显示信息
skynet.server.gameClubTask:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GameClubTaskComplete") == c2sData.cmd then -- and player:IsUnlockSystem( dataType.UnlockSystem_GameClubTask ) then
skynet.server.gameClubTask:Complete( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_GameClubTaskDrawReward") == c2sData.cmd then -- and player:IsUnlockSystem( dataType.UnlockSystem_GameClubTask ) then
skynet.server.gameClubTask:DrawReward( player , c2sData , s2cData )
--限时签到
elseif pb.enum("MsgType","CMD_C2S_ActivitySignPackShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivitySignPack ) then --限时签到 显示信息
skynet.server.activitySignPack:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivitySignPackDrawReward") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivitySignPack ) then
skynet.server.activitySignPack:DrawReward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivitySignPackBuy") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivitySignPack ) then
skynet.server.activitySignPack:Buy( player , c2sData , s2cData )
--豪华月卡
elseif pb.enum("MsgType","CMD_C2S_LuxuryMonthCardBuy") == c2sData.cmd then --豪华月卡 购买
skynet.server.luxuryCard:Buy( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_LuxuryCardShow") == c2sData.cmd then --豪华月卡 显示信息
skynet.server.luxuryCard:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_LuxuryCardGetDaliyReward") == c2sData.cmd then --豪华月卡 获得每日奖励
skynet.server.luxuryCard:GetDaliyReward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_LuxuryCardGetMonthReward") == c2sData.cmd then --豪华月卡 获得每月奖励
skynet.server.luxuryCard:GetMonthReward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_LuxuryCardDIYHeadUpload") == c2sData.cmd then --豪华月卡 上传自定义头像
skynet.server.luxuryCard:UploadDIYHead( player , c2sData , s2cData )
--寻味之旅
elseif pb.enum("MsgType","CMD_C2S_ActivitySeekTreasureShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivitySeekTreasure ) then --寻味之旅 显示信息
skynet.server.activitySeekTreasure:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivitySeekTreasureStart") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivitySeekTreasure ) then
skynet.server.activitySeekTreasure:Start( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivitySeekTreasureOpen") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivitySeekTreasure ) then
skynet.server.activitySeekTreasure:Open( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivitySeekTreasureGetReward") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivitySeekTreasure ) then --寻味之旅 显示信息
skynet.server.activitySeekTreasure:GetReward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivitySeekTreasureSkipPunish") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivitySeekTreasure ) then
skynet.server.activitySeekTreasure:SkipPunish( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivitySeekTreasureGetSettleReward") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivitySeekTreasure ) then
skynet.server.activitySeekTreasure:GetSettleReward( player , c2sData , s2cData )
--分层礼包
elseif pb.enum("MsgType","CMD_C2S_ActivityLevelPackShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityLevelPack ) then
skynet.server.activityLevelPack:Show( player , c2sData , s2cData )
--进阶礼包
elseif pb.enum("MsgType","CMD_C2S_ActivityStagePackShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityStagePack ) then
skynet.server.activityStagePack:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityStagePackDraw") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityStagePack ) then
skynet.server.activityStagePack:Draw( player , c2sData , s2cData )
--每日灯谜
elseif pb.enum("MsgType","CMD_C2S_ActivityDailyRiddleShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDailyRiddle ) then
skynet.server.activityDailyRiddle:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDailyRiddleBuyTip") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDailyRiddle ) then
skynet.server.activityDailyRiddle:BuyTip( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDailyRiddleStart") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDailyRiddle ) then
skynet.server.activityDailyRiddle:Start( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDailyRiddleGetReward") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDailyRiddle ) then
skynet.server.activityDailyRiddle:GetReward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDailyRiddleSkipCD") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDailyRiddle ) then
skynet.server.activityDailyRiddle:SkipCD( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityDailyRiddleBuyAnswer") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityDailyRiddle ) then
skynet.server.activityDailyRiddle:BuyAnswer( player , c2sData , s2cData )
--存钱罐
elseif pb.enum("MsgType","CMD_C2S_ActivitySavingPotShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivitySavingPot ) then
skynet.server.activitySavingPot:Show( player , c2sData , s2cData )
--复刻商店
elseif pb.enum("MsgType","CMD_C2S_ActivityReplicaStoreShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityReplicaStore ) then
skynet.server.activityReplicaStore:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityReplicaStoreGetFreeReward") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityReplicaStore ) then
skynet.server.activityReplicaStore:GetFreeReward( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityReplicaStoreChoose") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityReplicaStore ) then
skynet.server.activityReplicaStore:Choose( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityReplicaStoreOpenGift") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityReplicaStore ) then
skynet.server.activityReplicaStore:OpenGift( player , c2sData , s2cData )
--盲盒市场
elseif pb.enum("MsgType","CMD_C2S_ActivityBindBoxShow") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityBindBox ) then
skynet.server.activityBindBox:Show( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityBindBoxReFresh") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityBindBox ) then
skynet.server.activityBindBox:Refresh( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityBindBoxPeek") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityBindBox ) then
skynet.server.activityBindBox:PeekBox( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityBindBoxExchange") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityBindBox ) then
skynet.server.activityBindBox:Exchange( player , c2sData , s2cData )
elseif pb.enum("MsgType","CMD_C2S_ActivityBindBoxGet") == c2sData.cmd and player:IsUnlockSystem( dataType.UnlockSystem_ActivityBindBox ) then
skynet.server.activityBindBox:GetReward( player , c2sData , s2cData )
else
--正在游戏中不接收其它消息
s2cData.code = errorInfo.ErrorCode.NoUnlockFunc
s2cData.cmd = c2sData.cmd + 1
--return
end
--刷新TIPS
skynet.server.msgTips:Refresh( player )
log.debug(string.format("玩家 %d cmd %d 返回code %d 运行时间 %d", c2sData.userId , s2cData.cmd or 0 , s2cData.code or 0 , skynet.GetTime() - t1))
end
end
--Do() --测试要删
local isDo,callData = pcall( Do )
local sendMsg,sendLen = 0,0
if not isDo then
if pb.enum("MsgType","CMD_C2S_PersonalRename") == c2sData.cmd then
log.error("GameServer 内部错误PersonalRename 打印请求数据", c2sData.data)
else
-- 获取详细的调用堆栈信息
local traceback = debug.traceback(callData)
log.error("GameServer 内部错误",callData,traceback, skynet.server.common:TableToString(c2sData))
s2cData.cmd = c2sData.cmd + 1
s2cData.code = errorInfo.ErrorCode.InnerError
skynet.server.clusterServer:SendErrorInfoToCenter( nil , s2cData.code , "内部错误")
end
end
end
--redis订阅消息(废弃,后面再清理)
function GameServer:RedisMsgRecv(...)
local msg,ch= ...
if "mail" == ch then
skynet.server.mail:RedisMsgRecv( msg )
end
end
--接收用户登陆TOKEN
function GameServer:RecvUserLoginToken( c2sData )
log.info(string.format("游戏服接收路由服Token信息 平台 %s 帐号 %s Token %s", c2sData.platform , c2sData.loginAccount , c2sData.loginToken))
local platform = c2sData.platform
local loginAccount = c2sData.loginAccount
local loginToken = c2sData.loginToken
if not self.preLoginUser[ loginAccount ] then
self.preLoginUser[ loginAccount ] = {}
end
self.preLoginUser[ loginAccount ].platform = platform
self.preLoginUser[ loginAccount ].loginAccount = loginAccount
self.preLoginUser[ loginAccount ].loginToken = loginToken
self.preLoginUser[ loginAccount ].lastUpdateTime = skynet.GetTime() --上一次更新时间
end
--接收用户登陆TOKEN
function GameServer:AddPayInfo( c2sData , s2cData)
local account = c2sData.account
local storeId = c2sData.storeId
local count = math.abs(c2sData.count)
if not skynet.server.playerCenter:IsExistPlayerForAccount( account ) then
s2cData.code = errorInfo.ErrorCode.NoExistUser
else
local player = skynet.server.playerCenter:GetPlayerForAccount( account )
if not player then
s2cData.code = errorInfo.ErrorCode.NoExistUser
else
--将对应的礼包id记录到临时数据中
table.insert(player.tmpData.sendStorePackIds , storeId)
player:AddSaveLevel( dataType.SaveLevel_Pay )
--十连抽相关数据修改
--skynet.server.design:Pay( player , storeId )
--skynet.server.raffle:Pay( player , storeId )
if 7 == storeId then --通行证开启VIP礼包
skynet.server.passCheck:Pay( player , storeId )
log.info(string.format("玩家 %s 开始发放充值礼包1 %d", player.userId , storeId))
--添加限时积分
skynet.server.activityLimitedAccum:Pay( player , storeId )
else
local isGive = true
--if 8 == storeId then
--skynet.server.design:Pay( player , storeId )
--isGive = false
---log.info(string.format("玩家 %s 开始发放充值礼包2 %d", player.userId , storeId))
--else
skynet.server.store:Pay( player , storeId , s2cData)
isGive = false
log.info(string.format("玩家 %s 开始发放充值礼包3 %d", player.userId , storeId))
--end
if isGive then
--直接发货
local cfgStorePack = skynet.server.gameConfig:GetPlayerCurCfg( player , "StorePack" , storeId )
if not cfgStorePack then
s2cData.code = errorInfo.ErrorCode.ErrRequestParam
else
for i = 1, count , 1 do
player:GiveReward( cfgStorePack.rewardId )
end
end
end
end
--通知客户端
local data = {}
data.storeId = storeId
data.count = count
self:SendMsgToUser( player.userId , "CMD_S2C_PayInfo" , data )
log.info(string.format("玩家 %s 成功发放充值礼包 %d", player.userId , storeId))
end
end
end
--缓存充值失败的帐号信息(废弃)
function GameServer:CacheFailedAccount( c2sData , s2cData)
local account = c2sData.account
self.cachePayFailedAccount[ account ] = true
log.info(string.format("新增缓存充值失败的帐号信息 帐号 %s", account ))
end
--接收游戏服网络消息
function GameServer:RecvNetMsg( c2sData , s2cData )
local userId = c2sData.userId
local cmd = c2sData.cmd
local data = c2sData.data
local player = playerCenter:GetPlayer( userId )
if player then
if "CMD_S2C_PartnerSendMsg" == cmd then
skynet.server.msgTips:Add( player , 53 )
elseif "CMD_S2C_GroupSendMsg" == cmd then
skynet.server.msgTips:Add( player , 66 )
elseif "CMD_Temp_TipsMsg" == cmd then
if c2sData.isSend then
skynet.server.msgTips:Add( player , data )
else
skynet.server.msgTips:ReduceAll( player , data )
end
end
end
if "CMD_Temp_TipsMsg" ~= cmd then
self:SendMsgToUser( userId , cmd , c2sData.data )
end
end
--游戏服与游戏服之间群信息同步
function GameServer:RecvSyncOnlineGroup( c2sData )
local groupOpType = c2sData.groupOpType
local groupId = c2sData.groupId
skynet.server.group:SyncOnlineGroupInfo( groupId , groupOpType , false )
end
--游戏服与游戏服之间删除支付失败的缓存信息
function GameServer:RecvDelPayFailedCache( c2sData )
local account = c2sData.account
self.cachePayFailedAccount[ account ] = nil
log.info(string.format("删除缓存充值失败的帐号信息 帐号 %s", account ))
end
--新增官网充值信息
function GameServer:OfficialAddPayInfo( c2sData , s2cData , isSend)
local account = c2sData.account
local items = c2sData.items
if isSend == nil then
isSend = true
end
-- --是否存在玩家
-- if not skynet.server.playerCenter:IsExistPlayerForAccount( account )then
-- s2cData.code = errorInfo.ErrorCode.NoExistUser
-- return
-- end
--是否在线
if not skynet.server.playerCenter:IsPlayingByAccount( account ) then
s2cData.code = errorInfo.ErrorCode.NoExistUser
return
end
local player = skynet.server.playerCenter:GetPlayerForAccount( account )
if not player then
s2cData.code = errorInfo.ErrorCode.NoExistUser
else
--根据发的数据查找对应的配置
local cfgDiamondPrice = skynet.server.gameConfig.DiamondPrice
local cfgEffectives = {}
for k, v in pairs(cfgDiamondPrice) do
for _, item in ipairs(items) do
if tonumber(item.itemId) == v.diamondPackId then
table.insert(cfgEffectives, v)
end
end
end
--检查配置 不准确
if next(cfgEffectives) == nil or #cfgEffectives ~= #items or #items == 0 then
s2cData.code = errorInfo.ErrorCode.ErrRequestParam
log.info("官网充值 配置数量不正确 ")
return
end
--通知客户端
local data = {}
data.officialPayInfos={}
--循环领取奖励
for _, item in pairs(items) do
--参数
local itemId = tonumber(item.itemId)
local num = tonumber(item.num)
--获取配置
local cfgEffective={}
for _, value in ipairs(cfgEffectives) do
if value.diamondPackId == itemId then
cfgEffective = value
end
end
--配置不存在
if not next(cfgEffective) then
s2cData.code = errorInfo.ErrorCode.ErrRequestParam
log.info("官网充值 Item不存在 ",itemId)
return
end
--判断是否领取(这里不需要,无限购买)
-- if player.gameData.officialPayData ~=nil
-- and player.gameData.officialPayData.reward[itemId] ~= nil then
-- end
--发货
local eventId = pb.enum("EnumMoneyChangeEventID","EventID_122")
player:GiveReward(cfgEffective.rewardId,eventId,num )
player:AddSaveLevel( dataType.SaveLevel_Pay )
--添加购买记录,方便日志查询
if player.gameData.officialPayData == nil then
player.gameData.officialPayData={}
end
if player.gameData.officialPayData[itemId] == nil then
player.gameData.officialPayData[itemId] = 0
end
--添加购买记录
player.gameData.officialPayData[itemId] =player.gameData.officialPayData[itemId] + num
--是否需要推送
if isSend then
--添加返回值,返回给客户端
table.insert(data.officialPayInfos,{diamondPackId=itemId,count=num})
end
end
if next(data) then
self:SendMsgToUser( player.userId , "CMD_S2C_OfficialPayInfo" , data )
end
end
end
--缓存官网充值失败的帐号信息
function GameServer:OfficialPayFailedAccount( c2sData , s2cData)
local account = c2sData.account
self.cacheOfficialPayFailedAccount[ account ] = true
log.info(string.format("新增缓存官网充值失败的帐号信息 帐号 %s", account ))
end
--游戏服与游戏服之间删除支付失败的缓存信息
function GameServer:RecvDelOfficialPayFailedCache( c2sData )
local account = c2sData.account
self.cacheOfficialPayFailedAccount[ account ] = nil
log.info(string.format("删除缓存官网充值失败的帐号信息 帐号 %s", account ))
end
--新增微信通知信息
function GameServer:WXNotifyAddPayInfo( c2sData , s2cData , isSend)
local account = c2sData.account
local mailId = c2sData.mailId
if isSend == nil then
isSend = true
end
--是否在线
if not skynet.server.playerCenter:IsPlayingByAccount( account ) then
s2cData.code = errorInfo.ErrorCode.NoExistUser
return
end
local player = skynet.server.playerCenter:GetPlayerForAccount( account )
if not player then
s2cData.code = errorInfo.ErrorCode.NoExistUser
else
--获取邮件信息
local mailCfg = skynet.server.mail:FindMailByMailId(mailId)
if mailCfg == nil then
log.info("微信通知 邮件不存在mailId:",mailId)
return
end
--发送邮件
local award = {}
local mailTitle =mailCfg.mailModel.mailTitle
local mailText =mailCfg.mailModel.mailText
for _, value in ipairs(mailCfg.giftArticlesModels) do
table.insert(award, { type = skynet.server.common:AwardTypeStrToInt( value.articlesType ) , id = value.articlesId , count = value.articlesNumber })
end
if not next(award) then
log.info("微信通知 邮件奖励不存在mailId:",mailId)
return
end
skynet.server.mail:AddNewMail( player , skynet.server.mail.MailType_Award,mailTitle, mailText, award, true)
end
end
--新增邮件
function GameServer:AddMail( c2sData , s2cData )
local userId = c2sData.userId
local player = skynet.server.playerCenter:GetPlayer( userId )
if not player then
s2cData.code = errorInfo.ErrorCode.NoExistUser
else
local mailData = c2sData.mailData
local mailType = mailData.mailType
local mailTitle = mailData.mailTitle
local mailText = mailData.mailText
local award = mailData.award
skynet.server.mail:AddNewMail( player , mailType , mailTitle, mailText, award, false )
end
end
--微小好友邀请通知
function GameServer:InviteHandle( c2sData )
local partnerId = c2sData.data.partnerId
local playerInfo = skynet.server.personal:GetDetail( partnerId )
local player = skynet.server.playerCenter:GetPlayer( playerInfo.userId )
local accountName = c2sData.data.accountName
gameClubTask:InviteHandle(player,accountName)
end
--Web消息
function GameServer:WebMsg( c2sData )
log.info("后台发来的消息GS ",skynet.server.common:TableToString(c2sData))
--if "GMCmd" == c2sData.gameMessage or "GMAddGoods" == c2sData.gameMessage then
skynet.server.gm:WebMsg( c2sData )
--end
end
--添加黑名单
function GameServer:RecvAddIPToBlack( c2sData )
if c2sData.sendServerId ~= serverId then
skynet.server.monitor:AddIPBlackList( c2sData.ip )
end
end
--查询用户登陆状态
function GameServer:RecvQueryUserOnline( c2sData , s2cData )
s2cData.isExistPlayer = playerCenter:IsExistPlayer( c2sData.loginAccount )
end
--用户登陆游戏
function GameServer:UserLogin( c2sData , s2cData )
local t1 = skynet.GetTime()
local socketId = c2sData.socketId
c2sData.data = assert(pb.decode("C2SUserLogin", c2sData.data ))
--c2sData.data = skynet.server.common:DesDecode( skynet.desKey , c2sData.data )
--对于配置类型传过来是空串就默认取Main
c2sData.data.configType = ("" ~=c2sData.data.configType and c2sData.data.configType or "Main")
--检查下登录参数是不是全部合法
local isVaildParam = true
for k, v in pairs( c2sData.data ) do
isVaildParam = accountCenter:CheckParam( k , v )
if not isVaildParam then
s2cData.code = errorInfo.ErrorCode.ErrRequestParam
return s2cData
end
end
local platform = c2sData.data.platform
local loginAccount = c2sData.data.loginAccount
log.info(string.format("平台 %s 玩家 %s 登陆请求 Token %s 硬件码 %s",platform , loginAccount , c2sData.data.loginToken , c2sData.data.hardwareCode ))
local redisKey = string.format( redisKeyUrl.RouteServerLoginInfoHash , loginAccount )
local redisData = skynet.server.redis:hmget( redisKey , "GameServerID" , "LoginToken")
if not redisData or not redisData[1] or not redisData[2] then
s2cData.code = errorInfo.ErrorCode.NoExistPreLogin
log.warning(string.format("平台 %s 玩家 %s 不存在预登陆信息", platform , loginAccount))
return s2cData
end
local gameServerId = tonumber( redisData[1] )
local loginToken = redisData[2]
if gameServerId ~= serverId or loginToken ~= c2sData.data.loginToken then
s2cData.code = errorInfo.ErrorCode.VerifyTokenFailed
log.warning(string.format("平台 %s 玩家 %s 预登陆不匹配 %s %s", platform,loginAccount , loginToken , c2sData.data.loginToken))
return s2cData
end
--从帐号模块获取数据
accountCenter:UserLoginGame(c2sData , s2cData)
local userData = {}
if errorInfo.Suc == s2cData.code then
local playerData = json:decode(s2cData.data.playerData)
playerCenter:UserEnter( c2sData , playerData )
local userId = tonumber(playerData.basicInfo.userID)
userData = playerCenter:GetLoginInfo( userId )
if not userData then
s2cData.code = errorInfo.ErrorCode.NoExistUser
userData ={}
end
log.info(string.format("玩家 %s 登陆游戏成功", loginAccount))
else
log.info(string.format("玩家 %s 登陆游戏失败", loginAccount))
end
self.serverInfo.loginCount = self.serverInfo.loginCount + 1
s2cData.code = s2cData.code
s2cData.cmd = pb.enum("MsgType","CMD_S2C_UserLogin")
s2cData.data = assert(pb.encode("S2CUserLogin", userData))
end
--PING消息
function GameServer:Ping( player , c2sData , s2cData )
playerCenter:Ping( c2sData.userId )
local data = {}
s2cData.cmd = pb.enum("MsgType","CMD_S2C_Ping")
s2cData.data = assert(pb.encode("S2CPing", data))
end
--服务器时间
function GameServer:ServerTime( player , c2sData , s2cData )
local data = {}
data.serverTime = skynet.GetTime()
s2cData.cmd = pb.enum("MsgType","CMD_S2C_ServerTime")
s2cData.data = assert(pb.encode("S2CServerTime", data))
end
--拍照
function GameServer:TakePhotos( player , c2sData , s2cData )
c2sData.data = assert(pb.decode("C2STakePhotos", c2sData.data ))
local data = {}
skynet.server.levelTask:Modify( player , 84 , 1 )
skynet.server.taskListEvent:Modify( player , 84 , 1 )
s2cData.cmd = pb.enum("MsgType","CMD_S2C_TakePhotos")
s2cData.data = assert(pb.encode("S2CTakePhotos", data))
end
--客户端连接断开
function GameServer:UserOffline( netType , socketId )
local userId = playerCenter:GetUserIDForSocketId( netType , socketId )
playerCenter:UserOffline( userId )
end
--向用户发送消息
function GameServer:SendMsgToUser( userId , cmd , userData , errorCode )
--命令进行裁剪组装一下
local cmdName = string.sub(cmd, 9)
cmdName= "S2C"..cmdName
local netType , socketId , agentId = playerCenter:GetSocketIdForUserID( userId )
if -1 == socketId then
return
end
local c2sData = {}
c2sData.code = (nil == errorCode) and errorInfo.Suc or errorCode
c2sData.cmd = assert(pb.enum("MsgType",cmd))
c2sData.data = assert(pb.encode(cmdName, userData))
c2sData = assert(pb.encode("S2CMsgData", c2sData))
if dataType.NetType_Tcp == netType then
return skynet.call( "TcpSocket", "lua", cmd , socketId , c2sData )
elseif agentId and dataType.NetType_WebSocket == netType then
return skynet.call( "WebSocketAgent", "lua", cmd , socketId , agentId , c2sData )
end
end
--发送消息给在线用户 如果是同服直接发送,如果是跨服将转到另一台服务器
function GameServer:SendMsgToOnlineUser( partnerId , cmd , data )
local playerInfo = skynet.server.personal:GetDetail( partnerId )
if playerInfo and playerInfo.isOnline and playerInfo.gameServerId then
if serverId == playerInfo.gameServerId then
--玩家在线,直接发到同一服
self:SendMsgToUser( playerInfo.userId , cmd , data )
local player = playerCenter:GetPlayer( playerInfo.userId )
if player then
if "CMD_S2C_PartnerSendMsg" == cmd then
skynet.server.msgTips:Add( player , 53 )
elseif "CMD_Temp_TipsMsg" == cmd then
skynet.server.msgTips:Add( player , 54 )
end
end
else
--玩家在线,将聊天消息推到玩家所在的游戏服
local sendData = {}
sendData.userId = playerInfo.userId
sendData.cmd = cmd
sendData.data = data
local serverCmd = self.GameToGame_NetMsg
self:SendMsgToServer( playerInfo.gameServerId , serverCmd, sendData )
end
return true
else
return false
end
end
--是否停止服务器
function GameServer:StopServer( c2sData , s2cData )
function Do()
local playerList = skynet.server.playerCenter:GetPlayerList()
local sucSaveCount = 0
log.info("开始强制关闭游戏服")
self.isStopServerSaveAccount = true --开启停服保存
for userId, value in pairs( playerList ) do
if skynet.server.accountCenter:SavePlayerToMysql( value.player , false ) then
sucSaveCount = sucSaveCount + 1
else
skynet.server.accountCenter:SaveFailedPlayerDataToFile( value.player )
end
skynet.server.accountCenter:OfflineProcess( value.player )
end
log.info("结束强制关闭游戏服" , sucSaveCount)
s2cData.data.allPlayerCount = #playerList
s2cData.data.sucSaveCount = sucSaveCount
self.isStopServerSaveAccount = false
return true
end
local ret,err = pcall(Do)
if not ret or not err then
self.isStopServerSaveAccount = false
log.info("内部错误信息 GameServer:StopServer",ret ,err)
return false
end
return true
end
--统计数据
function GameServer:StatData()
if math.abs(skynet.GetTime() - self.last5MinTotalLoginCount) >= self.per5MinTotalLoginCount then
skynet.server.mail:RefreshMailList()
skynet.server.announcement:RefreshAnnouncementList()
self.serverInfo.pre5MinLoginCount = self.serverInfo.loginCount - self.lastLoginCount
self.lastLoginCount = self.serverInfo.loginCount
self.last5MinTotalLoginCount = skynet.GetTime()
log.info(string.format("5分钟共有 %d 次登陆 , 当前总登陆次数 %d",self.serverInfo.pre5MinLoginCount, self.serverInfo.loginCount))
end
self.serverInfo.playerCount = playerCenter:GetPlayerCount()
end
--是否超时
function GameServer:IsTimeOut()
--一旦检查到游戏服务器超时,保存所有玩家数据,进行重启服务
if self.clusterInfo and self.clusterInfo[ serverId ] and self.clusterInfo[ serverId ].status == self.Status_PingTimeout then
log.info(string.format("游戏服 %d 已经下线,开始保存玩家数据" , serverId ))
self:StopServer() --停止服务器,保存玩家数据
self:Restart() --向中心服发送重启请求
log.info(string.format("游戏服 %d 已经下线,结束保存玩家数据" , serverId ))
end
end
--检查是否有失败的充值信息(下一个版本废弃)
function GameServer:CheckFailedPay( player )
local account = player.basicInfo.accountName
if not self.cachePayFailedAccount[ account ] then
return
end
local redisKey = string.format( redisKeyUrl.PayServerPayFailedAccountList , account )
local queryData = skynet.server.redis:lrange( redisKey , 0 , -1 )
for k, v in pairs( queryData ) do
local payInfo = json:decode(v)
local c2sData = {}
local s2cData = {}
c2sData.account = account
c2sData.storeId = payInfo.storeId
c2sData.count = 1
self:AddPayInfo( c2sData , s2cData )
local award = {}
skynet.server.mail:AddNewMail( player , skynet.server.mail.MailType_Msg, "充值物品已到账", "亲爱的小蜗:\
因一些异常情况,导致您之前购买的物品未能及时到货,现在为您补发,请小蜗注意查收~", award, true)
log.info(string.format("玩家 %s 从缓存中发放充值礼包 %d 数量 %d", payInfo.account , payInfo.storeId , payInfo.count ))
end
--删除我缓存的失败充值
skynet.server.redis:del(redisKey)
redisKey = redisKeyUrl.PayServerPayFailedAccountSet
skynet.server.redis:srem( redisKey , account )
local c2sData = {}
c2sData.account = account
self:SendMsgToAllGameServer( self.GameToGame_DelPayFailedCache , c2sData )
end
--检查是否有官网充值失败的充值信息
function GameServer:CheckOfficialFailedPay( player )
local account = player.basicInfo.accountName
if not self.cacheOfficialPayFailedAccount[ account ] then
return
end
local redisKey = string.format( redisKeyUrl.PayServerOfficialPayFailedAccountList , account )
local queryData = skynet.server.redis:lrange( redisKey , 0 , -1 )
for k, v in pairs( queryData ) do
local payInfo = json:decode(v)
local c2sData = {}
local s2cData = {}
c2sData.account = account
c2sData.items =payInfo.items
self:OfficialAddPayInfo( c2sData , s2cData , false)
local award = {}
skynet.server.mail:AddNewMail( player , skynet.server.mail.MailType_Msg, "官方充值到账", "亲爱的小蜗:\
您的官方充值物品已到账,请小蜗注意背包查收~\
如发现有不到账的异常情况,请联系客服处理", award, true)
for _, item in ipairs(payInfo.items) do
--添加到临时数据用于客户端提示
table.insert(player.tmpData.officialPayDatas , {diamondPackId=item.itemId,count=item.num})
end
end
--删除我缓存的失败充值
skynet.server.redis:del(redisKey)
redisKey = redisKeyUrl.PayServerOfficialPayFailedAccountSet
skynet.server.redis:srem( redisKey , account )
local c2sData = {}
c2sData.account = account
self:SendMsgToAllGameServer( self.GameToGame_DelOfficialPayFailedCache , c2sData )
end
--检查是否有 微信通知 失败的充值信息
function GameServer:CheckWXNotifyFailedPay( player )
local account = player.basicInfo.accountName
-- if not self.cacheWXNotifyPayFailedAccount[ account ] then
-- return
-- end
local redisKey = string.format( redisKeyUrl.PayServerWXNotifyFailedAccountList , account )
local queryData = skynet.server.redis:lrange( redisKey , 0 , -1 )
--不存在数据直接返回
if queryData == nil or not next(queryData) then
return
end
for k, v in pairs( queryData ) do
local payInfo = json:decode(v)
local c2sData = {}
local s2cData = {}
c2sData.account = account
c2sData.mailId =payInfo.mailId
self:WXNotifyAddPayInfo( c2sData , s2cData , false)
end
--删除我缓存的失败充值
skynet.server.redis:del(redisKey)
redisKey = redisKeyUrl.PayServerWXNotifyFailedAccountSet
skynet.server.redis:srem( redisKey , account )
-- local c2sData = {}
-- c2sData.account = account
-- self:SendMsgToAllGameServer( self.GameToGame_DelWXNotifyPayFailedCache , c2sData )
end
skynet.server.gameServer = GameServer
return GameServer