public byte[] ToArray(MMO_MemoryStream ms, bool isChild = false) { ms.SetLength(0); if (!isChild) { ms.WriteUShort(ProtoCode); } ms.WriteInt(RoleType); byte[] buff_CurrRole = CurrRole.ToArray(new MMO_MemoryStream(), true); ms.WriteInt(buff_CurrRole.Length); ms.Write(buff_CurrRole, 0, buff_CurrRole.Length); if (RoleList != null) { int len_RoleList = RoleList.Count; ms.WriteInt(len_RoleList); for (int i = 0; i < len_RoleList; i++) { Role_DataProto _Role_DataProto = RoleList[i]; byte[] _buff_Curr = _Role_DataProto.ToArray(new MMO_MemoryStream(), true); ms.WriteInt(_buff_Curr.Length); ms.Write(_buff_Curr, 0, _buff_Curr.Length); } } else { ms.WriteInt(0); } return(ms.ToArray()); }
/// <summary> /// 检查发送队列 /// </summary> private void CheckSendQueue() { if (m_SendCount >= GameEntry.Socket.MaxSendCount) { //等待下一帧发送 m_SendCount = 0; return; } lock (m_SendQueue) { if (m_SendQueue.Count > 0 || m_IsHasUnDealBytes) { //int smallCount = 0; MMO_MemoryStream ms = m_SocketSendMS; ms.SetLength(0); //先处理未处理的包 if (m_IsHasUnDealBytes) { m_IsHasUnDealBytes = false; ms.Write(m_UnDealBytes, 0, m_UnDealBytes.Length); //smallCount++; } while (true) { if (m_SendQueue.Count == 0) { break; } //取出一个字节数组 byte[] buffer = m_SendQueue.Dequeue(); if ((buffer.Length + ms.Length) <= GameEntry.Socket.MaxSendByteCount) { //smallCount++; ms.Write(buffer, 0, buffer.Length); } else { //已经取出了一个要发送的字节数组 m_UnDealBytes = buffer; m_IsHasUnDealBytes = true; break; //非常重要 } } m_SendCount++; //Debug.LogError("拼凑了小包数量=" + smallCount); Send(ms.ToArray()); } } }
/// <summary> /// 封装数据包 /// </summary> /// <param name="data"></param> /// <returns></returns> private byte[] MakeData(byte[] data) { byte[] retBuffer = null; using (MMO_MemoryStream ms = new MMO_MemoryStream()) { ms.Write((ushort)(data.Length)); ms.Write(data, 0, data.Length); retBuffer = ms.ToArray(); } return(retBuffer); }
public static RoleOperation_CreateRoleProto GetProto(byte[] buffer, bool isChild = false) { RoleOperation_CreateRoleProto proto = new RoleOperation_CreateRoleProto(); MMO_MemoryStream ms = null; if (!isChild) { ms = GameEntry.Socket.SocketSendMS; } else { ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>(); } ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.JobId = (byte)ms.ReadByte(); proto.RoleNickName = ms.ReadUTF8String(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(proto); }
/// <summary> /// 封装数据包 /// </summary> /// <param name="buffer"></param> private byte[] MakeDataPackage(byte[] buffer) { //1.压缩 bool isCompress = buffer.Length > m_CompressLen; if (isCompress) { buffer = ZlibHelper.CompressBytes(buffer); } //2.异或 buffer = SecurityUtil.Xor(buffer); //3.计算CRC ushort crc = Crc16.CalculateCrc16(buffer); byte[] retData; using (MMO_MemoryStream ms = new MMO_MemoryStream()) { ms.WriteUShort((ushort)(buffer.Length + 3)); ms.WriteBool(isCompress); ms.WriteUShort(crc); ms.Write(buffer, 0, buffer.Length); retData = ms.ToArray(); } return(retData); }
public static GameLevel_VictoryProto GetProto(MMO_MemoryStream ms, byte[] buffer) { GameLevel_VictoryProto proto = new GameLevel_VictoryProto(); ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.GameLevelId = ms.ReadInt(); proto.Grade = (byte)ms.ReadByte(); proto.Star = (byte)ms.ReadByte(); proto.Exp = ms.ReadInt(); proto.Gold = ms.ReadInt(); proto.KillTotalMonsterCount = ms.ReadInt(); proto.KillMonsterList = new List <MonsterItem>(); for (int i = 0; i < proto.KillTotalMonsterCount; i++) { MonsterItem _KillMonster = new MonsterItem(); _KillMonster.MonsterId = ms.ReadInt(); _KillMonster.MonsterCount = ms.ReadInt(); proto.KillMonsterList.Add(_KillMonster); } proto.GoodsTotalCount = ms.ReadInt(); proto.GetGoodsList = new List <GoodsItem>(); for (int i = 0; i < proto.GoodsTotalCount; i++) { GoodsItem _GetGoods = new GoodsItem(); _GetGoods.GoodsType = (byte)ms.ReadByte(); _GetGoods.GoodsId = ms.ReadInt(); _GetGoods.GoodsCount = ms.ReadInt(); proto.GetGoodsList.Add(_GetGoods); } return(proto); }
public static System_HeartbeatReturnProto GetProto(byte[] buffer, bool isChild = false) { System_HeartbeatReturnProto proto = new System_HeartbeatReturnProto(); MMO_MemoryStream ms = null; if (!isChild) { ms = GameEntry.Socket.SocketSendMS; } else { ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>(); } ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.LocalTime = ms.ReadFloat(); proto.ServerTime = ms.ReadLong(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(proto); }
public static WorldMap_InitRoleProto GetProto(MMO_MemoryStream ms, byte[] buffer) { WorldMap_InitRoleProto proto = new WorldMap_InitRoleProto(); ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.RoleCount = ms.ReadInt(); proto.ItemList = new List <RoleItem>(); for (int i = 0; i < proto.RoleCount; i++) { RoleItem _Item = new RoleItem(); _Item.RoleId = ms.ReadInt(); _Item.RoleNickName = ms.ReadUTF8String(); _Item.RoleLevel = ms.ReadInt(); _Item.RoleMaxHP = ms.ReadInt(); _Item.RoleCurrHP = ms.ReadInt(); _Item.RoleMaxMP = ms.ReadInt(); _Item.RoleCurrMP = ms.ReadInt(); _Item.RoleJobId = ms.ReadInt(); _Item.RolePosX = ms.ReadFloat(); _Item.RolePosY = ms.ReadFloat(); _Item.RolePosZ = ms.ReadFloat(); _Item.RoleYAngle = ms.ReadFloat(); proto.ItemList.Add(_Item); } return(proto); }
/// <summary> /// 封装数据包 /// </summary> /// <param name="data"></param> /// <returns></returns> private byte[] MakeData(byte[] data) { byte[] retBuffer = null; //0.压缩标志 //数据包长度大于设定长度则压缩 bool isCompress = data.Length > m_CompressLength ? true : false; if (isCompress) { data = ZlibHelper.CompressBytes(data); } //1.异或 data = SecurityUtil.Xor(data); //2.CRC校验 ushort crc = Crc16.CalculateCrc16(data); using (MMO_MemoryStream ms = new MMO_MemoryStream()) { //3.写入包长度 //往ms中写入数据(包长度),数据的长度+压缩标志(1byte)+CRC校验(UShort(2byte)) ms.WriteUShort((ushort)(data.Length + 3)); //往ms中写入数据(压缩标识) ms.WriteBool(isCompress); ms.WriteUShort(crc); ms.Write(data, 0, data.Length); retBuffer = ms.ToArray(); } return(retBuffer); }
public static WorldMap_OtherRoleUpdateInfoProto GetProto(byte[] buffer, bool isChild = false) { WorldMap_OtherRoleUpdateInfoProto proto = new WorldMap_OtherRoleUpdateInfoProto(); MMO_MemoryStream ms = null; if (!isChild) { ms = GameEntry.Socket.SocketSendMS; } else { ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>(); } ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.RoldId = ms.ReadInt(); proto.RoleNickName = ms.ReadUTF8String(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(proto); }
public static WorldMap_PosProto GetProto(byte[] buffer, bool isChild = false) { WorldMap_PosProto proto = new WorldMap_PosProto(); MMO_MemoryStream ms = null; if (!isChild) { ms = GameEntry.Socket.SocketSendMS; } else { ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>(); } ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.x = ms.ReadFloat(); proto.y = ms.ReadFloat(); proto.z = ms.ReadFloat(); proto.yAngle = ms.ReadFloat(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(proto); }
// 封装数据包 byte[] MakeData(byte[] data) { byte[] retBuffer = null; // 1.1 压缩 bool isCompress = data.Length > m_CompressLen; if (isCompress) { data = ZlibHelper.CompressBytes(data); } // 2 异或加密 data = SecurityUtil.Xor(data); // 3 加验证 ushort crc = Crc16.CalculateCrc16(data); using (MMO_MemoryStream ms = new MMO_MemoryStream()) { ms.WriteUShort((ushort)(data.Length + 3)); ms.WriteBool(isCompress); ms.WriteUShort(crc); ms.Write(data, 0, data.Length); retBuffer = ms.ToArray(); } return(retBuffer); }
public static Goods_UseItemReturnProto GetProto(byte[] buffer, bool isChild = false) { Goods_UseItemReturnProto proto = new Goods_UseItemReturnProto(); MMO_MemoryStream ms = null; if (!isChild) { ms = GameEntry.Socket.SocketSendMS; } else { ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>(); } ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.IsSuccess = ms.ReadBool(); if (proto.IsSuccess) { proto.GoodsId = ms.ReadInt(); } else { proto.MsgCode = ms.ReadInt(); } if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(proto); }
/// <summary> /// 封装数据包 /// </summary> /// <param name="data"></param> /// <returns></returns> private byte[] MakeData(byte[] data) { byte[] retBuffer = null; //1.如果数据包的长度 大于了m_CompressLen 则进行压缩 bool isCompress = data.Length > m_CompressLen ? true : false; if (isCompress) { data = ZlibHelper.CompressBytes(data); } //2.异或 data = SecurityUtil.Xor(data); //3.Crc校验 压缩后的 ushort crc = Crc16.CalculateCrc16(data); Console.WriteLine("crc=" + crc); MMO_MemoryStream ms = this.m_SocketSendMS; ms.SetLength(0); ms.WriteUShort((ushort)(data.Length + 3)); ms.WriteBool(isCompress); ms.WriteUShort(crc); ms.Write(data, 0, data.Length); retBuffer = ms.ToArray(); return(retBuffer); }
public static WorldMap_CurrRoleUseSkillProto GetProto(MMO_MemoryStream ms, byte[] buffer) { WorldMap_CurrRoleUseSkillProto proto = new WorldMap_CurrRoleUseSkillProto(); ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.SkillId = ms.ReadInt(); proto.SkillLevel = ms.ReadInt(); proto.RolePosX = ms.ReadFloat(); proto.RolePosY = ms.ReadFloat(); proto.RolePosZ = ms.ReadFloat(); proto.RoleYAngle = ms.ReadFloat(); proto.BeAttackCount = ms.ReadInt(); proto.ItemList = new List <BeAttackItem>(); for (int i = 0; i < proto.BeAttackCount; i++) { BeAttackItem _Item = new BeAttackItem(); _Item.BeAttackRoleId = ms.ReadInt(); proto.ItemList.Add(_Item); } return(proto); }
public static System_GameServerConfigReturnProto GetProto(byte[] buffer, bool isChild = false) { System_GameServerConfigReturnProto proto = new System_GameServerConfigReturnProto(); MMO_MemoryStream ms = null; if (!isChild) { ms = GameEntry.Socket.SocketSendMS; } else { ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>(); } ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.ConfigCount = ms.ReadInt(); proto.ServerConfigList = new List <ConfigItem>(); for (int i = 0; i < proto.ConfigCount; i++) { ConfigItem _ServerConfig = new ConfigItem(); _ServerConfig.ConfigCode = ms.ReadUTF8String(); _ServerConfig.IsOpen = ms.ReadBool(); _ServerConfig.Param = ms.ReadUTF8String(); proto.ServerConfigList.Add(_ServerConfig); } if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(proto); }
public static Goods_SearchEquipDetailProto GetProto(byte[] buffer, bool isChild = false) { Goods_SearchEquipDetailProto proto = new Goods_SearchEquipDetailProto(); MMO_MemoryStream ms = null; if (!isChild) { ms = GameEntry.Socket.SocketSendMS; } else { ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>(); } ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.GoodsServerId = ms.ReadInt(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(proto); }
public void Recharge(Socket socket) { int len = socket.Receive(m_ReceiveBuffer); using (MMO_MemoryStream stream = new MMO_MemoryStream()) { stream.Write(m_ReceiveBuffer, 0, len); byte[] buff = stream.ToArray(); string str = System.Text.UTF8Encoding.UTF8.GetString(buff); Console.WriteLine("游戏服收到 {0}", str); //处理充值的逻辑 string[] arr = str.Split('_'); short channelId = arr[0].ToShort(); int roleId = arr[1].ToInt(); int rechargeProductId = arr[2].ToInt(); Role role = RoleMgr.Instance.GetRole(roleId); if (role != null) { role.Recharge(channelId, rechargeProductId); //游戏服 告诉这个这个角色 我要给你充值 充值的产品id=rechargeProductId } buff = null; socket.Disconnect(false); socket.Dispose(); } }
/// <summary> /// 创建包数据:包头+包体 /// </summary> /// <param name="buffer"></param> /// <returns></returns> private byte[] MakeData(byte[] buffer) { //1.压缩 bool isCompress = buffer.Length > m_CompressLen ? true : false; if (isCompress) { buffer = ZlibHelper.CompressBytes(buffer); } //2.CRC1校验 ushort crc = Crc16.CalculateCrc16(buffer); Console.WriteLine(crc); //3.异或 buffer = SecurityUtil.Xor(buffer); using (MMO_MemoryStream ms = new MMO_MemoryStream()) { //包头长度 压缩标识1+CRC16校验+buffer的长度 ms.WriteUShort((ushort)(buffer.Length + 3)); ms.WriteBool(isCompress); ms.WriteUShort(crc); ms.Write(buffer, 0, buffer.Length); return(ms.ToArray()); } }
/// <summary> /// 封装数据包 /// </summary> /// <param name="data"></param> /// <returns></returns> private byte[] MakeData(byte[] data) { byte[] retBuffer = null; //1.长度压缩判断 bool isCompress = data.Length > m_CompressLen ? true : false; if (isCompress) { //2.进行压缩 data = ZlibHelper.CompressBytes(data); } //3.异或 data = SecurityUtil.Xor(data); //4.异或因子 Crc 校验码 ushort crc = Crc16.CalculateCrc16(data); Console.WriteLine("crc=" + crc); //写入 using (MMO_MemoryStream ms = new MMO_MemoryStream()) { ms.WriteUShort((ushort)(data.Length + 3)); //数据长度 ms.WriteBool(isCompress); //压缩判断 ms.WriteUShort(crc); //异或 ms.Write(data, 0, data.Length); //数据写入 retBuffer = ms.ToArray(); } return(retBuffer); }
public static WorldMap_OtherRoleDieProto GetProto(byte[] buffer, bool isChild = false) { WorldMap_OtherRoleDieProto proto = new WorldMap_OtherRoleDieProto(); MMO_MemoryStream ms = null; if (!isChild) { ms = GameEntry.Socket.SocketSendMS; } else { ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>(); } ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.AttackRoleId = ms.ReadInt(); proto.DieCount = ms.ReadInt(); proto.RoleIdList = new List <int>(); for (int i = 0; i < proto.DieCount; i++) { int _RoleId = ms.ReadInt(); //角色编号 proto.RoleIdList.Add(_RoleId); } if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(proto); }
public static RoleOperation_SelectRoleInfoProto GetProto(byte[] buffer, bool isChild = false) { RoleOperation_SelectRoleInfoProto proto = new RoleOperation_SelectRoleInfoProto(); MMO_MemoryStream ms = null; if (!isChild) { ms = GameEntry.Socket.SocketSendMS; } else { ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>(); } ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.RoldId = ms.ReadInt(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(proto); }
public static WorldMap_OtherRoleMoveProto GetProto(byte[] buffer, bool isChild = false) { WorldMap_OtherRoleMoveProto proto = new WorldMap_OtherRoleMoveProto(); MMO_MemoryStream ms = null; if (!isChild) { ms = GameEntry.Socket.SocketSendMS; } else { ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>(); } ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.RoleId = ms.ReadInt(); proto.TargetPosX = ms.ReadFloat(); proto.TargetPosY = ms.ReadFloat(); proto.TargetPosZ = ms.ReadFloat(); proto.ServerTime = ms.ReadLong(); proto.NeedTime = ms.ReadInt(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(proto); }
public static Task_SearchTaskProto GetProto(byte[] buffer, bool isChild = false) { Task_SearchTaskProto proto = new Task_SearchTaskProto(); MMO_MemoryStream ms = null; if (!isChild) { ms = GameEntry.Socket.SocketSendMS; } else { ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>(); } ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(proto); }
/// <summary> /// 沾包,加密数据包 /// </summary> /// <param name="data"></param> /// <returns></returns> public byte[] MakeData(byte[] data) { byte[] retBuffer = null; //1、是否压缩 bool IsComPressLen = data.Length > mComPressLen ? true : false; if (IsComPressLen) { //压缩 data = ZlibHelper.CompressBytes(data); } //2、异或 data = SecurityUtil.Xor(data); //3、crc校验 ushort crc = CRC16.CalculateCrc16(data); using (MMO_MemoryStream ms = new MMO_MemoryStream()) { //1、包头(+3==Crc(2字节)+IsComPressLen(2字节)) ms.WriteUShort((ushort)(data.Length + 3)); ms.WriteBool(IsComPressLen); ms.WriteUShort(crc); ms.Write(data, 0, data.Length); retBuffer = ms.ToArray(); } return(retBuffer); }
/// <summary> /// 封装数据包 /// </summary> /// <param name="data"></param> /// <returns></returns> private byte[] MakeData(byte[] data) { byte[] retBuffer = null; //1.如果数据包的长度 大于了m_CompressLen 则进行压缩 bool isCompress = data.Length > m_CompressLen ? true : false; if (isCompress) { data = ZlibHelper.CompressBytes(data); } //2.异或 data = SecurityUtil.Xor(data); //3.Crc校验 压缩后的 ushort crc = Crc16.CalculateCrc16(data); using (MMO_MemoryStream ms = new MMO_MemoryStream()) { ms.WriteUShort((ushort)(data.Length + 3)); ms.WriteBool(isCompress); ms.WriteUShort(crc); ms.Write(data, 0, data.Length); retBuffer = ms.ToArray(); } return(retBuffer); }
public static Goods_SearchEquipDetailReturnProto GetProto(byte[] buffer) { Goods_SearchEquipDetailReturnProto proto = new Goods_SearchEquipDetailReturnProto(); MMO_MemoryStream ms = GameEntry.Socket.SocketReceiveMS; ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.EnchantLevel = ms.ReadInt(); proto.BaseAttr1Type = (byte)ms.ReadByte(); proto.BaseAttr1Value = ms.ReadInt(); proto.BaseAttr2Type = (byte)ms.ReadByte(); proto.BaseAttr2Value = ms.ReadInt(); proto.HP = ms.ReadInt(); proto.MP = ms.ReadInt(); proto.Attack = ms.ReadInt(); proto.Defense = ms.ReadInt(); proto.Hit = ms.ReadInt(); proto.Dodge = ms.ReadInt(); proto.Cri = ms.ReadInt(); proto.Res = ms.ReadInt(); proto.IsPutOn = (byte)ms.ReadByte(); return(proto); }
public static Backpack_GoodsChangeReturnProto GetProto(byte[] buffer) { Backpack_GoodsChangeReturnProto proto = new Backpack_GoodsChangeReturnProto(); MMO_MemoryStream ms = GameEntry.Socket.SocketReceiveMS; ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.BackpackItemChangeCount = ms.ReadInt(); proto.ItemList = new List <ChangeItem>(); for (int i = 0; i < proto.BackpackItemChangeCount; i++) { ChangeItem _Item = new ChangeItem(); _Item.BackpackId = ms.ReadInt(); _Item.ChangeType = (byte)ms.ReadByte(); _Item.GoodsType = (byte)ms.ReadByte(); _Item.GoodsId = ms.ReadInt(); _Item.GoodsCount = ms.ReadInt(); _Item.GoodsServerId = ms.ReadInt(); proto.ItemList.Add(_Item); } return(proto); }
public static RoleOperation_SelectRoleInfoReturnProto GetProto(MMO_MemoryStream ms, byte[] buffer) { RoleOperation_SelectRoleInfoReturnProto proto = new RoleOperation_SelectRoleInfoReturnProto(); ms.SetLength(0); ms.Write(buffer, 0, buffer.Length); ms.Position = 0; proto.IsSuccess = ms.ReadBool(); if (proto.IsSuccess) { proto.RoldId = ms.ReadInt(); proto.RoleNickName = ms.ReadUTF8String(); proto.JobId = (byte)ms.ReadByte(); proto.Level = ms.ReadInt(); proto.TotalRechargeMoney = ms.ReadInt(); proto.Money = ms.ReadInt(); proto.Gold = ms.ReadInt(); proto.Exp = ms.ReadInt(); proto.MaxHP = ms.ReadInt(); proto.MaxMP = ms.ReadInt(); proto.CurrHP = ms.ReadInt(); proto.CurrMP = ms.ReadInt(); proto.ToSpeed = ms.ReadInt(); proto.WeaponDamageMin = ms.ReadInt(); proto.WeaponDamageMax = ms.ReadInt(); proto.AttackNumber = ms.ReadInt(); proto.StrikePower = ms.ReadInt(); proto.PiercingPower = ms.ReadInt(); proto.MagicPower = ms.ReadInt(); proto.LastInWorldMapId = ms.ReadInt(); proto.LastInWorldMapPos = ms.ReadUTF8String(); proto.Equip_Weapon = ms.ReadInt(); proto.Equip_Pants = ms.ReadInt(); proto.Equip_Clothes = ms.ReadInt(); proto.Equip_Belt = ms.ReadInt(); proto.Equip_Cuff = ms.ReadInt(); proto.Equip_Necklace = ms.ReadInt(); proto.Equip_Shoe = ms.ReadInt(); proto.Equip_Ring = ms.ReadInt(); proto.Equip_WeaponTableId = ms.ReadInt(); proto.Equip_PantsTableId = ms.ReadInt(); proto.Equip_ClothesTableId = ms.ReadInt(); proto.Equip_BeltTableId = ms.ReadInt(); proto.Equip_CuffTableId = ms.ReadInt(); proto.Equip_NecklaceTableId = ms.ReadInt(); proto.Equip_ShoeTableId = ms.ReadInt(); proto.Equip_RingTableId = ms.ReadInt(); proto.ChoppingDefense = ms.ReadInt(); proto.PuncturDefense = ms.ReadInt(); proto.MagicDefense = ms.ReadInt(); } else { proto.MsgCode = ms.ReadInt(); } return(proto); }
public byte[] ToArray(bool isChild = false) { MMO_MemoryStream ms = null; if (!isChild) { ms = GameEntry.Socket.SocketSendMS; ms.SetLength(0); ms.WriteUShort(ProtoCode); } else { ms = GameEntry.Pool.DequeueClassObject <MMO_MemoryStream>(); ms.SetLength(0); } ms.WriteInt(RoleType); byte[] buff_CurrRole = CurrRole.ToArray(true); ms.WriteInt(buff_CurrRole.Length); ms.Write(buff_CurrRole, 0, buff_CurrRole.Length); if (RoleList != null) { int len_RoleList = RoleList.Count; ms.WriteInt(len_RoleList); for (int i = 0; i < len_RoleList; i++) { Role_DataProto _Role_DataProto = RoleList[i]; byte[] _buff_Curr = _Role_DataProto.ToArray(true); ms.WriteInt(_buff_Curr.Length); ms.Write(_buff_Curr, 0, _buff_Curr.Length); } } else { ms.WriteInt(0); } byte[] retBuffer = ms.ToArray(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(retBuffer); }