package org.nieo.seerproject.common.net.info.login; import lombok.Data; import org.nieo.seerproject.common.annotations.FieldDescription; import org.nieo.seerproject.common.annotations.OutboundMessageType; import org.nieo.seerproject.common.annotations.serialize.ArraySerialize; import org.nieo.seerproject.common.annotations.serialize.AutoCodec; import org.nieo.seerproject.common.annotations.serialize.UInt; import org.nieo.seerproject.common.annotations.serialize.UShort; import org.nieo.seerproject.common.net.MessageCommandIDRegistry; import org.nieo.seerproject.common.net.OutboundMessage; import org.nieo.seerproject.common.net.info.item.PeopleItemInfo; import org.nieo.seerproject.common.net.info.pet.PetInfo; import org.nieo.seerproject.common.net.info.team.TeamInfo; import org.nieo.seerproject.common.net.info.team.TeamPKInfo; import org.nieo.seerproject.common.net.serialize.ArraySerializeType; import org.nieo.seerproject.common.structs.Point; import org.nieo.seerproject.common.util.ArrayUtilities; import java.util.ArrayList; import java.util.List; @SuppressWarnings("SpellCheckingInspection") @Data @AutoCodec @FieldDescription("登录信息") @OutboundMessageType(MessageCommandIDRegistry.Login_In) public class LoginUserInfo implements OutboundMessage { @FieldDescription("米米号 通过sid拿到") private @UInt long userId; @FieldDescription("注册时间(按秒的时间戳)") private @UInt long registerTime; @FieldDescription("16字节昵称") @ArraySerialize(value = ArraySerializeType.FIXED_LENGTH, fixedLength = 16) private String nick; @FieldDescription("暂时不明建议先给固定值0") private @UShort int vip; @FieldDescription("暂时不明建议先给固定值15") private @UShort int viped = 15; @FieldDescription("暂时不明建议先给固定值0") private @UInt long dsFlag; @FieldDescription("机器人人物颜色 00 rgb") private @UInt long color; @FieldDescription("暂时不明建议先给固定值0") private @UInt long texture; @FieldDescription("暂时不明建议先给固定值3000") private @UInt long energy = 3000; @FieldDescription("赛尔豆") private @UInt long coins; @FieldDescription("暂时不明建议先给固定值0") private @UInt long fightBadge; @FieldDescription("上线的地图id") private @UInt long mapID; @FieldDescription("上线的坐标 2个uint") private Point pos = new Point(); @FieldDescription("已经消耗掉的时间(秒为单位)") private @UInt long timeToday; @FieldDescription("总电池限制(秒为单位)") private @UInt long timeLimit; @FieldDescription("暂时不明感觉是某种活动建议先给固定值0(只能0或1)") private byte isClothHalfDay; @FieldDescription("暂时不明感觉是某种活动建议先给固定值0(只能0或1)") private byte isRoomHalfDay; @FieldDescription("暂时不明感觉是某种活动建议先给固定值0(只能0或1)") private byte iFortressHalfDay; @FieldDescription("暂时不明感觉是某种活动建议先给固定值0(只能0或1)") private byte isHQHalfDay; @FieldDescription("暂时不明建议先给固定值0") private @UInt long loginCount; @FieldDescription("邀请活动建议先给固定值0") private @UInt long inviter; @FieldDescription("邀请活动建议先给固定值0") private @UInt long newInviteeCount; @FieldDescription("超no等级建议固定8") private @UInt long vipLevel = 8; @FieldDescription("超no的vip值建议固定80000") private @UInt long vipValue = 80000; @FieldDescription("超no的外形等级建议固定1(暂定)") private @UInt long vipStage = 1; @FieldDescription("nono是否自动充电 建议固定1") private @UInt long autoCharge = 1; @FieldDescription("超no的结束时间建议尽可能大") private @UInt long vipEndTime = Integer.MAX_VALUE; @FieldDescription("邀请活动建议先给固定值0") private @UInt long freshManBonus; @FieldDescription("超no芯片列表*(80字节)") @ArraySerialize(value = ArraySerializeType.FIXED_LENGTH, fixedLength = 80) private byte[] nonoChipList = new byte[80]; @FieldDescription("50字节,默认值为3") @ArraySerialize(value = ArraySerializeType.FIXED_LENGTH, fixedLength = 50) private byte[] dailyResArr = ArrayUtilities.generateByteArrayWithInitialValueAndLength((byte) 3, 50); @FieldDescription("教官id") private @UInt long teacherID; @FieldDescription("学员id") private @UInt long studentID; @FieldDescription("毕业人数") private @UInt long graduationCount; @FieldDescription("默认值为0") private @UInt long maxPuniLv; @FieldDescription("精灵的最高等级") private @UInt long petMaxLevel; @FieldDescription("所有的精灵的数量") private @UInt long allPetNumber; @FieldDescription("精灵王之战胜场") private @UInt long monKingWin; @FieldDescription("勇者之塔当前到达的层数") private @UInt long currentStage; @FieldDescription("试炼之塔最大胜利的层数") private @UInt long maxStage; @FieldDescription("试炼之塔当前到达的层数") private @UInt long currentFreshStage; @FieldDescription("试炼之塔最大胜利的层数") private @UInt long maxFreshStage; @FieldDescription("星际擂台连胜") private @UInt long maxArenaWins; @FieldDescription("未知默认0") private @UInt long twoTimes; @FieldDescription("未知默认0") private @UInt long threeTimes; @FieldDescription("是否自动战斗(未知默认值0)") private @UInt long autoFight; @FieldDescription("自动战斗剩余的场次(未知默认值0)") private @UInt long autoFightTime; @FieldDescription("能量吸收仪剩余次数(未知待定默认值0)") private @UInt long energyTime; @FieldDescription("学习力吸收仪剩余次数(未知待定默认值0)") private @UInt long learnTimes; @FieldDescription("未知默认0") private @UInt long monBattleMedal; @FieldDescription("未知默认0") private @UInt long recordCount; @FieldDescription("未知默认0") private @UInt long obtainTm; @FieldDescription("当前在孵化的元神珠id") private @UInt long soulBeadItemID; @FieldDescription("未知默认0") private @UInt long expireTm; @FieldDescription("未知默认0") private @UInt long fuseTimes; @FieldDescription("玩家有没有nono") private @UInt long hasNono = 1; @FieldDescription("玩家有没有超能nono") private @UInt long superNono = 1; @FieldDescription("默认值-1") private @UInt long nonoState = 0xFFFFFFFFL; @FieldDescription("nono的颜色") private @UInt long nonoColor; @FieldDescription("nono的名字 必须要补齐到16位") @ArraySerialize(value = ArraySerializeType.FIXED_LENGTH, fixedLength = 16) private String nonoNick = "nono"; @FieldDescription("猜测为战队信息24字节") private TeamInfo teamInfo = new TeamInfo(); @FieldDescription("8字节") private TeamPKInfo teamPkInfo = new TeamPKInfo(); @FieldDescription("1字节 无内容") private byte reserved; @FieldDescription("默认值为0") private @UInt long badge; @FieldDescription("未知(27字节,默认值为3)") @ArraySerialize(value = ArraySerializeType.FIXED_LENGTH, fixedLength = 27) private byte[] reserved1 = ArrayUtilities.generateByteArrayWithInitialValueAndLength((byte) 3, 27); @FieldDescription("任务状态数组(500字节,3为已经完成,建议默认值为3)") @ArraySerialize(value = ArraySerializeType.FIXED_LENGTH, fixedLength = 500) private byte[] taskList = ArrayUtilities.generateByteArrayWithInitialValueAndLength((byte) 3, 500); @FieldDescription("精灵背包内的信息由于特性精灵的存在精灵背包不定长 如果有特性占199字节 如果没特性 一个精灵占175字节") private List petList = new ArrayList<>(); @FieldDescription("穿戴装备 8字节") private List clothes = new ArrayList<>(); }