126 lines
4.4 KiB
Lua
126 lines
4.4 KiB
Lua
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 |