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

126 lines
4.4 KiB
Lua
Raw Permalink 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 log = require "Log"
local pb = require "pb"
local dataType = require "DataType"
local errorInfo = require "ErrorInfo"
local Personal = oo.class()
Personal.MaxClothesType = 8 --最大服饰类型
Personal.MaxColorType = 3 --最大颜色类型
--初始数据
function Personal:InitData( player )
player.gameData.personal.isInit = false
player.gameData.personal.clothesData = {}
player.gameData.personal.colorData = {}
if not player.gameData.personal.isInit then
--所有数据默认为0
for i = 1, self.MaxClothesType , 1 do
player.gameData.personal.clothesData[ i ] = 0
end
for i = 1, self.MaxColorType, 1 do
player.gameData.personal.colorData[ i ] = 0
end
--默认服饰 2,3,10,14,17,16
local cfgDefalutClothes = skynet.server.gameConfig.SValue.characterDefalutClothes
local cfgClothes = skynet.server.gameConfig.Clothes
for k1, v1 in pairs( cfgDefalutClothes ) do
for k2, v2 in pairs( cfgClothes ) do
if v1 == v2.id then
player.gameData.personal.clothesData[ v2.type ] = v1
break
end
end
--将该商品赠送到玩家背包里
skynet.server.bag:AddGoods( player , dataType.GoodsType_Clothes , v1 , 1)
end
--默认颜色 1 6 26
local cfgDefalutColor = skynet.server.gameConfig.SValue.characterDefalutColor
local cfgColor = skynet.server.gameConfig.Color
for k1, v1 in pairs( cfgDefalutColor ) do
for k2, v2 in pairs( cfgColor ) do
if v1 == v2.id then
player.gameData.personal.colorData[ v2.types ] = v1
break
end
end
end
player.gameData.personal.isInit = true
end
end
--个人特征展示
function Personal:Show( player , c2sData , s2cData )
c2sData.data = assert(pb.decode("C2SPersonalShow", c2sData.data ))
local data ={}
data.personalInfo = self:GetData( player )
s2cData.cmd = pb.enum("MsgType","CMD_S2C_PersonalShow")
s2cData.data = assert(pb.encode("S2CPersonalShow", data))
end
--个人特征改变
function Personal:Change( player , c2sData , s2cData )
c2sData.data = assert(pb.decode("C2SPersonalChange", c2sData.data ))
local personalInfo = c2sData.data.personalInfo
local data ={}
if not personalInfo or not personalInfo.nickName or not personalInfo.clothesData or not personalInfo.colorData then
s2cData.code = errorInfo.ErrorCode.ErrRequestParam
else
player.gameData.nickName = personalInfo.nickName
--更新服装数据
for k, v in pairs( personalInfo.clothesData ) do
--背包中没有该商品并且商品id不等于0
if player:IsBuyGoods( dataType.GoodsType_Clothes , v ) or 0 == v then
player.gameData.personal.clothesData[ k ] = v
skynet.server.levelTask:Modify( player , 22 , 1 )
end
end
--更新色彩数据
for k, v in pairs( personalInfo.colorData ) do
--背包中没有该商品并且商品id不等于0
if skynet.server.gameConfig:GetColorCfg( v ) then
player.gameData.personal.colorData[ k ] = v
end
end
end
data.personalInfo = self:GetData( player )
s2cData.cmd = pb.enum("MsgType","CMD_S2C_PersonalChange")
s2cData.data = assert(pb.encode("S2CPersonalChange", data))
end
--个人特征改变
function Personal:Rename( player , c2sData , s2cData )
c2sData.data = assert(pb.decode("C2SPersonalRename", c2sData.data ))
local nickName = c2sData.data.nickName
local data ={}
if not nickName then
s2cData.code = errorInfo.ErrorCode.ErrRequestParam
else
player.gameData.nickName = nickName
end
data.nickName = nickName
s2cData.cmd = pb.enum("MsgType","CMD_S2C_PersonalRename")
s2cData.data = assert(pb.encode("S2CPersonalRename", data))
end
--获取数据
function Personal:GetData( player )
local data = {}
data.nickName = player.gameData.nickName
data.clothesData = player.gameData.personal.clothesData
data.colorData = player.gameData.personal.colorData
return data
end
skynet.server.personal = Personal
return Personal