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