public byte IsPutOn; //是否穿戴 public byte[] ToArray(MMO_MemoryStream ms, bool isChild = false) { ms.SetLength(0); if (!isChild) { ms.WriteUShort(ProtoCode); } ms.WriteInt(EnchantLevel); ms.WriteByte(BaseAttr1Type); ms.WriteInt(BaseAttr1Value); ms.WriteByte(BaseAttr2Type); ms.WriteInt(BaseAttr2Value); ms.WriteInt(HP); ms.WriteInt(MP); ms.WriteInt(Attack); ms.WriteInt(Defense); ms.WriteInt(Hit); ms.WriteInt(Dodge); ms.WriteInt(Cri); ms.WriteInt(Res); ms.WriteByte(IsPutOn); return(ms.ToArray()); }
/// <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 byte[] ToArray(MMO_MemoryStream ms, bool isChild = false) { ms.SetLength(0); if (!isChild) { ms.WriteUShort(ProtoCode); } ms.WriteInt(RoleCount); for (int i = 0; i < RoleCount; i++) { var item = ItemList[i]; ms.WriteInt(item.RoleId); ms.WriteUTF8String(item.RoleNickName); ms.WriteInt(item.RoleLevel); ms.WriteInt(item.RoleMaxHP); ms.WriteInt(item.RoleCurrHP); ms.WriteInt(item.RoleMaxMP); ms.WriteInt(item.RoleCurrMP); ms.WriteInt(item.RoleJobId); ms.WriteFloat(item.RolePosX); ms.WriteFloat(item.RolePosY); ms.WriteFloat(item.RolePosZ); ms.WriteFloat(item.RoleYAngle); } return(ms.ToArray()); }
public byte[] ToArray(MMO_MemoryStream ms, bool isChild = false) { ms.SetLength(0); if (!isChild) { ms.WriteUShort(ProtoCode); } ms.WriteInt(GameLevelId); ms.WriteByte(Grade); ms.WriteByte(Star); ms.WriteInt(Exp); ms.WriteInt(Gold); ms.WriteInt(KillTotalMonsterCount); for (int i = 0; i < KillTotalMonsterCount; i++) { var item = KillMonsterList[i]; ms.WriteInt(item.MonsterId); ms.WriteInt(item.MonsterCount); } ms.WriteInt(GoodsTotalCount); for (int i = 0; i < GoodsTotalCount; i++) { var item = GetGoodsList[i]; ms.WriteByte(item.GoodsType); ms.WriteInt(item.GoodsId); ms.WriteInt(item.GoodsCount); } return(ms.ToArray()); }
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(RoleCount); for (int i = 0; i < RoleCount; i++) { var item = RoleList[i]; ms.WriteInt(item.RoleId); ms.WriteUTF8String(item.RoleNickName); ms.WriteByte(item.RoleJob); ms.WriteInt(item.RoleLevel); } byte[] retBuffer = ms.ToArray(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(retBuffer); }
/// <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 byte[] ToArray(MMO_MemoryStream ms, bool isChild = false) { ms.SetLength(0); if (!isChild) { ms.WriteUShort(ProtoCode); } ms.WriteInt(AttackRoleId); ms.WriteInt(SkillId); ms.WriteInt(SkillLevel); ms.WriteFloat(RolePosX); ms.WriteFloat(RolePosY); ms.WriteFloat(RolePosZ); ms.WriteFloat(RoleYAngle); ms.WriteInt(BeAttackCount); for (int i = 0; i < BeAttackCount; i++) { var item = ItemList[i]; ms.WriteInt(item.BeAttackRoleId); ms.WriteInt(item.ReduceHp); ms.WriteByte(item.IsCri); } return(ms.ToArray()); }
public int SellCount; //出售数量 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(roleBackpackId); ms.WriteByte(GoodsType); ms.WriteInt(GoodsId); ms.WriteInt(GoodsServerId); ms.WriteInt(SellCount); byte[] retBuffer = ms.ToArray(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(retBuffer); }
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(BackpackItemCount); for (int i = 0; i < BackpackItemCount; i++) { var item = ItemList[i]; ms.WriteInt(item.BackpackItemId); ms.WriteByte(item.GoodsType); ms.WriteInt(item.GoodsId); ms.WriteInt(item.GoodsServerId); ms.WriteInt(item.GoodsOverlayCount); } byte[] retBuffer = ms.ToArray(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(retBuffer); }
public byte[] ToArray() { using (MMO_MemoryStream ms = new MMO_MemoryStream()) { ms.WriteUShort(ProtoCode); ms.WriteBool(IsSucess); if (IsSucess) { ms.WriteUTF8String(RoleNickName); ms.WriteInt(Level); ms.WriteInt(RoleId); ms.WriteInt(JobId); ms.WriteInt(Money); ms.WriteInt(Gold); ms.WriteInt(Exp); ms.WriteInt(MaxHP); ms.WriteInt(CurrentHP); ms.WriteInt(MaxMP); ms.WriteInt(CurrentMP); ms.WriteInt(Attack); ms.WriteInt(Defense); ms.WriteInt(Hit); ms.WriteInt(Dodge); ms.WriteInt(Cri); ms.WriteInt(Fighting); ms.WriteInt(Res); ms.WriteInt(LastSceneId); } else { ms.WriteInt(MessageId); } return(ms.ToArray()); } }
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()); }
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(TaskCount); for (int i = 0; i < TaskCount; i++) { var item = CurrTaskItemList[i]; ms.WriteInt(item.Id); ms.WriteUTF8String(item.Name); ms.WriteInt(item.Status); ms.WriteUTF8String(item.Content); } byte[] retBuffer = ms.ToArray(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(retBuffer); }
public List <int> ItemNameList; //道具名称 public byte[] ToArray() { using (MMO_MemoryStream ms = new MMO_MemoryStream()) { ms.WriteUShort(ProtoCode); ms.WriteInt(Count); ms.WriteBool(IsSuccess); if (IsSuccess) { ms.WriteUTF8String(SuccMsg); ms.WriteUTF8String(SuccCode); } else { ms.WriteInt(ErrorCode); } ms.WriteInt(ItemCount); for (int i = 0; i < ItemCount; i++) { ms.WriteInt(ItemIdList[i]); ms.WriteInt(ItemNameList[i]); } return(ms.ToArray()); } }
public byte[] ToArray() { using (MMO_MemoryStream ms = new MMO_MemoryStream()) { ms.WriteUShort(ProtoCode); ms.WriteInt(GameLevelId); ms.WriteByte(Grade); ms.WriteByte(Star); ms.WriteInt(Exp); ms.WriteInt(Gold); ms.WriteInt(KillTotalMonsterCount); for (int i = 0; i < KillTotalMonsterCount; i++) { ms.WriteInt(KillMonsterList[i].MonsterId); ms.WriteInt(KillMonsterList[i].MonsterCount); } ms.WriteInt(GoodsTotalCount); for (int i = 0; i < GoodsTotalCount; i++) { ms.WriteByte(GetGoodsList[i].GoodsType); ms.WriteInt(GetGoodsList[i].GoodsId); ms.WriteInt(GetGoodsList[i].GoodsCount); } return(ms.ToArray()); } }
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="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); }
public int GoodsId; //物品编号 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.WriteBool(IsSuccess); if (IsSuccess) { ms.WriteInt(GoodsId); } else { ms.WriteInt(MsgCode); } byte[] retBuffer = ms.ToArray(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(retBuffer); }
public int NeedTime; //客户端移动所需时间 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(RoleId); ms.WriteFloat(TargetPosX); ms.WriteFloat(TargetPosY); ms.WriteFloat(TargetPosZ); ms.WriteLong(ServerTime); ms.WriteInt(NeedTime); byte[] retBuffer = ms.ToArray(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(retBuffer); }
/// <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); }
/// <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); }
/// <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); }
/// <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()); } }
// 封装数据包 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 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(ConfigCount); for (int i = 0; i < ConfigCount; i++) { var item = ServerConfigList[i]; ms.WriteUTF8String(item.ConfigCode); ms.WriteBool(item.IsOpen); ms.WriteUTF8String(item.Param); } byte[] retBuffer = ms.ToArray(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(retBuffer); }
public float yAngle; //y轴旋转 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.WriteFloat(x); ms.WriteFloat(y); ms.WriteFloat(z); ms.WriteFloat(yAngle); byte[] retBuffer = ms.ToArray(); if (isChild) { GameEntry.Pool.EnqueueClassObject(ms); } return(retBuffer); }
public int MagicDefense; //魔法防御力 public byte[] ToArray(MMO_MemoryStream ms, bool isChild = false) { ms.SetLength(0); if (!isChild) { ms.WriteUShort(ProtoCode); } ms.WriteBool(IsSuccess); if (IsSuccess) { ms.WriteInt(RoldId); ms.WriteUTF8String(RoleNickName); ms.WriteByte(JobId); ms.WriteInt(Level); ms.WriteInt(TotalRechargeMoney); ms.WriteInt(Money); ms.WriteInt(Gold); ms.WriteInt(Exp); ms.WriteInt(MaxHP); ms.WriteInt(MaxMP); ms.WriteInt(CurrHP); ms.WriteInt(CurrMP); ms.WriteInt(ToSpeed); ms.WriteInt(WeaponDamageMin); ms.WriteInt(WeaponDamageMax); ms.WriteInt(AttackNumber); ms.WriteInt(StrikePower); ms.WriteInt(PiercingPower); ms.WriteInt(MagicPower); ms.WriteInt(LastInWorldMapId); ms.WriteUTF8String(LastInWorldMapPos); ms.WriteInt(Equip_Weapon); ms.WriteInt(Equip_Pants); ms.WriteInt(Equip_Clothes); ms.WriteInt(Equip_Belt); ms.WriteInt(Equip_Cuff); ms.WriteInt(Equip_Necklace); ms.WriteInt(Equip_Shoe); ms.WriteInt(Equip_Ring); ms.WriteInt(Equip_WeaponTableId); ms.WriteInt(Equip_PantsTableId); ms.WriteInt(Equip_ClothesTableId); ms.WriteInt(Equip_BeltTableId); ms.WriteInt(Equip_CuffTableId); ms.WriteInt(Equip_NecklaceTableId); ms.WriteInt(Equip_ShoeTableId); ms.WriteInt(Equip_RingTableId); ms.WriteInt(ChoppingDefense); ms.WriteInt(PuncturDefense); ms.WriteInt(MagicDefense); } else { ms.WriteInt(MsgCode); } return(ms.ToArray()); }
public byte[] ToArray() { using (MMO_MemoryStream ms = new MMO_MemoryStream()) { ms.WriteUShort(ProtoCode); return(ms.ToArray()); } }
public byte[] Creadata(string str) { using (MMO_MemoryStream ms = new MMO_MemoryStream()) { ms.WriteUTF8String(str); return(ms.ToArray()); } }
/* * private void GetCallBack(NetWorkHttp.CallBackArgs obj) * { * * if (obj.HasError)//如果返回为空 * { * Debug.Log(obj.ErrorMsg); * } * else * { * //AccountEntity entity = LitJson.JsonMapper.ToObject<AccountEntity>(obj.Json); * Debug.Log(obj.Json); * } * * * } * * private void PostCallBack(NetWorkHttp.CallBackArgs obj) * { * * if (obj.HasError)//如果返回为空 * { * Debug.Log(obj.ErrorMsg); * } * else * { * Debug.Log(obj.Json); * } * * * } */ private void Send(string msg) { //2.发消息 using (MMO_MemoryStream ms = new MMO_MemoryStream()) { ms.WriteUTF8String(msg); NetWorkSocket.Instance.SendMsg(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()); } } }