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

128 lines
4.1 KiB
Lua
Raw Permalink Normal View History

2024-11-20 15:41:09 +08:00
local skynet = require "skynet"
local oo = require "Class"
local pb = require "pb"
local log = require "Log"
local errorInfo = require "ErrorInfo"
local dataType = require "DataType"
local redisKeyUrl = require "RedisKeyUrl"
local Group = oo.class()
Group.ShowType_JoinList = 1 --加入列表
Group.ShowType_GroupInfo = 2 --家园信息
Group.IdentityType_Leader = 1 --园长
Group.IdentityType_ViceLeader = 2 --副园长
Group.IdentityType_Member = 3 --成员
Group.JoinType_Freedom = 1 --自由加入
Group.JoinType_Approve = 2 --审批加入
--[[
{"group",
{
{"isAdd", false , "是否加入家园" } ,
{"data", {} , "消息提示数据" } ,
{"reward", {} , "红点奖励" } ,
} ,
"消息提示" } ,
]]
--[[
Group
ID
]]
function Group:Init()
end
--家园显示
function Group:Show( player , c2sData , s2cData )
c2sData.data = assert(pb.decode("C2SGroupShow", c2sData.data ))
local data = {}
local curGroup = player.gameData.group
if curGroup.isAdd then
data.showType = self.ShowType_JoinList
data.joinInfo = {}
else
data.showType = self.ShowType_GroupInfo
data.groupInfo = {}
end
s2cData.cmd = pb.enum("MsgType","CMD_S2C_GroupShow")
s2cData.data = assert(pb.encode("S2CGroupShow", data))
end
--家园创建
function Group:Create( player , c2sData , s2cData )
c2sData.data = assert(pb.decode("C2SGroupCreate", c2sData.data ))
local data = {}
local curGroup = player.gameData.group
local name = c2sData.data.name
local declaration = c2sData.data.declaration
local badgeId = c2sData.data.badgeId
local joinType = c2sData.data.joinType
local minJoinLevel = c2sData.data.minJoinLevel
if not name or not declaration or not badgeId or not joinType or not minJoinLevel then
s2cData.code = errorInfo.ErrorCode.ErrRequestParam
elseif 0 ~= #curGroup.id then
s2cData.code = errorInfo.ErrorCode.AlreadyExistGroup
else
while true do
local randId = skynet.server.common:RandID( 10 ) --生成10位随机ID
local redisKey = string.format( redisKeyUrl.GameServerGroupInfo , randId )
if not skynet.server.redis:exists( redisKey) then
curGroup.id = randId
skynet.server.redis:hmset( redisKey , "name" , name ,"declaration" , declaration ,"badgeId" , badgeId ,"joinType" , joinType ,"minJoinLevel" , minJoinLevel )
end
end
end
s2cData.cmd = pb.enum("MsgType","CMD_S2C_GroupCreate")
s2cData.data = assert(pb.encode("S2CGroupCreate", data))
end
--家园加入
function Group:Join( player , c2sData , s2cData )
c2sData.data = assert(pb.decode("C2SGroupJoin", c2sData.data ))
local data = {}
local curGroup = player.gameData.group
local id = c2sData.data.id
if not id or 10 ~= #id then
s2cData.code = errorInfo.ErrorCode.ErrRequestParam
elseif 0 ~= #curGroup.id then
s2cData.code = errorInfo.ErrorCode.AlreadyExistGroup
else
local redisKey = string.format( redisKeyUrl.GameServerGroupInfo , id )
if not skynet.server.redis:exists( redisKey) then
s2cData.code = errorInfo.ErrorCode.NoExistGroup
else
end
end
s2cData.cmd = pb.enum("MsgType","CMD_S2C_GroupJoin")
s2cData.data = assert(pb.encode("S2CGroupJoin", data))
end
--家园创建
function Group:test( player , c2sData , s2cData )
c2sData.data = assert(pb.decode("C2SGroupCreate", c2sData.data ))
local data = {}
local id = c2sData.data.id
if not id then
s2cData.code = errorInfo.ErrorCode.ErrRequestParam
else
end
s2cData.cmd = pb.enum("MsgType","CMD_S2C_GroupCreate")
s2cData.data = assert(pb.encode("S2CGroupCreate", data))
end
--获取能加入的家园列表
function Group:GetJoinList( player )
end
skynet.server.group = Group
return Group