public static void WritePacket(NWriter wtr, Packet pkt, ClientProcessor psr) { MemoryStream s = new MemoryStream(); pkt.Write(psr, new NWriter(s)); byte[] content = s.ToArray(); content = pkt.Crypt(psr, content); wtr.Write(content.Length + 5); wtr.Write((byte)pkt.ID); wtr.Write(content); }
public void SendPacket(Packet pkt) { try { pending.Enqueue(pkt); sendLock.Set(); } catch { Console.WriteLine("Error sending packet with ID "+pkt.ID.ToString()); } }
public void SendPacket(Packet pkt) { pendingPackets.Enqueue(pkt); if (CanSendPacket(send, false)) { var dat = (send.UserToken as SendToken).Packet.Write(parent); sendState = SendState.Sending; send.SetBuffer(dat, 0, dat.Length); if (!skt.SendAsync(send)) IOCompleted(this, send); } }
public void SendPacket(Packet pkt) { try { pendingPackets.Enqueue(pkt); if (CanSendPacket(send, false)) { var dat = (send.UserToken as SendToken).Packet.Write(parent); sendState = SendState.Sending; send.SetBuffer(dat, 0, dat.Length); if (!skt.SendAsync(send)) IOCompleted(this, send); } } catch { Console.ForegroundColor = ConsoleColor.DarkBlue; Console.WriteLine("Error sending packet with ID " + pkt.ID.ToString()); Console.ForegroundColor = ConsoleColor.White; } }
void ReceivePacket(Packet pkt) { if (stage == ProtocalStage.Disconnected) return; if (stage == ProtocalStage.Ready && (entity == null || entity != null && entity.Owner == null)) return; Packet.BeginReadPacket(skt, this, ReceivePacket, Disconnect); try { if (pkt.ID == PacketID.Hello) ProcessHelloPacket(pkt as HelloPacket); else if (pkt.ID == PacketID.Create) ProcessCreatePacket(pkt as CreatePacket); else if (pkt.ID == PacketID.Load) ProcessLoadPacket(pkt as LoadPacket); else if (pkt.ID == PacketID.Pong) entity.Pong(pkt as PongPacket); else if (pkt.ID == PacketID.Move) RealmManager.AddPendingAction(t => entity.Move(t, pkt as MovePacket), PendingPriority.Networking); else if (pkt.ID == PacketID.PlayerShoot) RealmManager.AddPendingAction(t => entity.PlayerShoot(t, pkt as PlayerShootPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.EnemyHit) RealmManager.AddPendingAction(t => entity.EnemyHit(t, pkt as EnemyHitPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.OtherHit) RealmManager.AddPendingAction(t => entity.OtherHit(t, pkt as OtherHitPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.SquareHit) RealmManager.AddPendingAction(t => entity.SquareHit(t, pkt as SquareHitPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.PlayerHit) RealmManager.AddPendingAction(t => entity.PlayerHit(t, pkt as PlayerHitPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.ShootAck) RealmManager.AddPendingAction(t => entity.ShootAck(t, pkt as ShootAckPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.InvSwap) RealmManager.AddPendingAction(t => entity.InventorySwap(t, pkt as InvSwapPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.InvDrop) RealmManager.AddPendingAction(t => entity.InventoryDrop(t, pkt as InvDropPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.UseItem) RealmManager.AddPendingAction(t => entity.UseItem(t, pkt as UseItemPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.UsePortal) RealmManager.AddPendingAction(t => entity.UsePortal(t, pkt as UsePortalPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.PlayerText) RealmManager.AddPendingAction(t => entity.PlayerText(t, pkt as PlayerTextPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.ChooseName) RealmManager.AddPendingAction(t => ProcessChooseNamePacket(pkt as ChooseNamePacket), PendingPriority.Networking); else if (pkt.ID == PacketID.Escape) RealmManager.AddPendingAction(t => ProcessEscapePacket(pkt as EscapePacket), PendingPriority.Emergent); else if (pkt.ID == PacketID.Teleport) RealmManager.AddPendingAction(t => entity.Teleport(t, pkt as TeleportPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.GotoAck) RealmManager.AddPendingAction(t => entity.GotoAck(t, pkt as GotoAckPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.EditAccountList) RealmManager.AddPendingAction(t => entity.EditAccountList(t, pkt as EditAccountListPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.Buy) RealmManager.AddPendingAction(t => entity.Buy(t, pkt as BuyPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.RequestTrade) RealmManager.AddPendingAction(t => entity.RequestTrade(t, pkt as RequestTradePacket), PendingPriority.Networking); else if (pkt.ID == PacketID.ChangeTrade) RealmManager.AddPendingAction(t => entity.ChangeTrade(t, pkt as ChangeTradePacket), PendingPriority.Networking); else if (pkt.ID == PacketID.AcceptTrade) RealmManager.AddPendingAction(t => entity.AcceptTrade(t, pkt as AcceptTradePacket), PendingPriority.Networking); else if (pkt.ID == PacketID.CancelTrade) RealmManager.AddPendingAction(t => entity.CancelTrade(t, pkt as CancelTradePacket), PendingPriority.Networking); else if (pkt.ID == PacketID.AOEAck) RealmManager.AddPendingAction(t => entity.AOEAck(t, pkt as AOEAckPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.GroundDamage) RealmManager.AddPendingAction(t => entity.GroundDamage(t, pkt as GroundDamagePacket), PendingPriority.Networking); else if (pkt.ID == PacketID.CheckCredits) RealmManager.AddPendingAction(t => entity.CheckCredits(t, pkt as CheckCreditsPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.CreateGuild) RealmManager.AddPendingAction(t => entity.CreateGuild(pkt as CreateGuildPacket),PendingPriority.Networking); else if (pkt.ID != PacketID.Packet) { Console.WriteLine("Unhandled packet: " + pkt.ToString()); } } catch { Disconnect(); } }
internal void ProcessPacket(Packet pkt) { try { if (pkt.ID == PacketID.Hello) ProcessHelloPacket(pkt as HelloPacket); else if (pkt.ID == PacketID.Create) ProcessCreatePacket(pkt as CreatePacket); else if (pkt.ID == PacketID.Load) ProcessLoadPacket(pkt as LoadPacket); else if (pkt.ID == PacketID.Broadcast) ProcessBroadcastPacket(pkt as BroadcastPacket); else if (pkt.ID == PacketID.Pong) entity.Pong(pkt as PongPacket); else if (pkt.ID == PacketID.Move) RealmManager.Logic.AddPendingAction(t => entity.Move(t, pkt as MovePacket), PendingPriority.Networking); else if (pkt.ID == PacketID.PlayerShoot) RealmManager.Logic.AddPendingAction(t => entity.PlayerShoot(t, pkt as PlayerShootPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.EnemyHit) RealmManager.Logic.AddPendingAction(t => entity.EnemyHit(t, pkt as EnemyHitPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.OtherHit) RealmManager.Logic.AddPendingAction(t => entity.OtherHit(t, pkt as OtherHitPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.SquareHit) RealmManager.Logic.AddPendingAction(t => entity.SquareHit(t, pkt as SquareHitPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.PlayerHit) RealmManager.Logic.AddPendingAction(t => entity.PlayerHit(t, pkt as PlayerHitPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.ShootAck) //Spam RealmManager.Logic.AddPendingAction(t => entity.ShootAck(t, pkt as ShootAckPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.InvSwap) RealmManager.Logic.AddPendingAction(t => entity.InventorySwap(t, pkt as InvSwapPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.InvDrop) RealmManager.Logic.AddPendingAction(t => entity.InventoryDrop(t, pkt as InvDropPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.UseItem) RealmManager.Logic.AddPendingAction(t => entity.UseItem(t, pkt as UseItemPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.UsePortal) RealmManager.Logic.AddPendingAction(t => entity.UsePortal(t, pkt as UsePortalPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.PlayerText) RealmManager.Logic.AddPendingAction(t => entity.PlayerText(t, pkt as PlayerTextPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.ChooseName) ProcessChooseNamePacket(pkt as ChooseNamePacket); else if (pkt.ID == PacketID.Escape) ProcessEscapePacket(pkt as EscapePacket); else if (pkt.ID == PacketID.Teleport) RealmManager.Logic.AddPendingAction(t => entity.Teleport(t, pkt as TeleportPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.GotoAck) RealmManager.Logic.AddPendingAction(t => entity.GotoAck(t, pkt as GotoAckPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.EditAccountList) RealmManager.Logic.AddPendingAction(t => entity.EditAccountList(t, pkt as EditAccountListPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.Buy) RealmManager.Logic.AddPendingAction(t => entity.Buy(t, pkt as BuyPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.RequestTrade) RealmManager.Logic.AddPendingAction(t => entity.RequestTrade(t, pkt as RequestTradePacket), PendingPriority.Networking); else if (pkt.ID == PacketID.ChangeTrade) RealmManager.Logic.AddPendingAction(t => entity.ChangeTrade(t, pkt as ChangeTradePacket), PendingPriority.Networking); else if (pkt.ID == PacketID.AcceptTrade) RealmManager.Logic.AddPendingAction(t => entity.AcceptTrade(t, pkt as AcceptTradePacket), PendingPriority.Networking); else if (pkt.ID == PacketID.CancelTrade) RealmManager.Logic.AddPendingAction(t => entity.CancelTrade(t, pkt as CancelTradePacket), PendingPriority.Networking); else if (pkt.ID == PacketID.AOEAck) RealmManager.Logic.AddPendingAction(t => entity.AOEAck(t, pkt as AOEAckPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.GroundDamage) RealmManager.Logic.AddPendingAction(t => entity.GroundDamage(t, pkt as GroundDamagePacket), PendingPriority.Networking); else if (pkt.ID == PacketID.CheckCredits) RealmManager.Logic.AddPendingAction(t => entity.CheckCredits(t, pkt as CheckCreditsPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.GuildRemove) RealmManager.Logic.AddPendingAction(t => entity.GuildRemove(t, pkt as GuildRemovePacket), PendingPriority.Networking); else if (pkt.ID == PacketID.CreateGuild) RealmManager.Logic.AddPendingAction(t => entity.CreateGuild(t, pkt as CreateGuildPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.JoinGuild) RealmManager.Logic.AddPendingAction(t => entity.JoinGuild(t, pkt as JoinGuildPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.GuildInvite) RealmManager.Logic.AddPendingAction(t => entity.InviteToGuild(t, pkt as GuildInvitePacket), PendingPriority.Networking); else if (pkt.ID == PacketID.ChangeGuildRank) RealmManager.Logic.AddPendingAction(t => entity.ChangeGuildRank(t, pkt as ChangeGuildRankPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.Visibullet) RealmManager.Logic.AddPendingAction(t => entity.VisibulletHit(pkt as VisibulletPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.TextBoxButton) RealmManager.Logic.AddPendingAction(t => entity.TextBoxButton(pkt as TextBoxButtonPacket), PendingPriority.Networking); else if (pkt.ID == PacketID.UpdateAck) RealmManager.Logic.AddPendingAction(t => HandleUpdateAck(), PendingPriority.Networking); else { Console.WriteLine(@"Unhandled packet: " + pkt); } } catch (Exception e) { Console.Out.WriteLine(pkt.ToString()); Console.Out.WriteLine(e); Disconnect(); } }
public void SendPacket(Packet pkt) { handler.SendPacket(pkt); }
private bool OnPacketReceived(Packet pkt) { //return parent.ProcessPacket(pkt); if (parent.IsReady()) { RealmManager.Network.AddPendingPacket(parent, pkt); return true; } return false; }
public void SendPacket(Packet pkt) { try { handler.SendPacket(pkt); } catch (Exception e) { } }
bool OnPacketReceived(Packet pkt) { return parent.ProcessPacket(pkt); }
internal void ProcessPacket(Packet pkt) { try { switch (pkt.ID) { case PacketID.Hello: ProcessHelloPacket(pkt as HelloPacket); break; case PacketID.Create: ProcessCreatePacket(pkt as CreatePacket); break; case PacketID.Load: ProcessLoadPacket(pkt as LoadPacket); break; case PacketID.Broadcast: ProcessBroadcastPacket(pkt as BroadcastPacket); break; case PacketID.Pong: Player.Pong(pkt as PongPacket); break; case PacketID.Move: RealmManager.Logic.AddPendingAction(t => Player.Move(t, pkt as MovePacket), PendingPriority.Networking); break; case PacketID.PlayerShoot: RealmManager.Logic.AddPendingAction(t => Player.PlayerShoot(t, pkt as PlayerShootPacket), PendingPriority.Networking); break; case PacketID.EnemyHit: RealmManager.Logic.AddPendingAction(t => Player.EnemyHit(t, pkt as EnemyHitPacket), PendingPriority.Networking); break; case PacketID.OtherHit: RealmManager.Logic.AddPendingAction(t => Player.OtherHit(t, pkt as OtherHitPacket), PendingPriority.Networking); break; case PacketID.SquareHit: RealmManager.Logic.AddPendingAction(t => Player.SquareHit(t, pkt as SquareHitPacket), PendingPriority.Networking); break; case PacketID.PlayerHit: RealmManager.Logic.AddPendingAction(t => Player.PlayerHit(t, pkt as PlayerHitPacket), PendingPriority.Networking); break; case PacketID.ShootAck: RealmManager.Logic.AddPendingAction(t => Player.ShootAck(t, pkt as ShootAckPacket), PendingPriority.Networking); break; case PacketID.InvSwap: RealmManager.Logic.AddPendingAction(t => Player.InventorySwap(t, pkt as InvSwapPacket), PendingPriority.Networking); break; case PacketID.InvDrop: RealmManager.Logic.AddPendingAction(t => Player.InventoryDrop(t, pkt as InvDropPacket), PendingPriority.Networking); break; case PacketID.UseItem: RealmManager.Logic.AddPendingAction(t => Player.UseItem(t, pkt as UseItemPacket), PendingPriority.Networking); break; case PacketID.UsePortal: RealmManager.Logic.AddPendingAction(t => Player.UsePortal(t, pkt as UsePortalPacket), PendingPriority.Networking); break; case PacketID.PlayerText: RealmManager.Logic.AddPendingAction(t => Player.PlayerText(t, pkt as PlayerTextPacket), PendingPriority.Networking); break; case PacketID.ChooseName: ProcessChooseNamePacket(pkt as ChooseNamePacket); break; case PacketID.Escape: ProcessEscapePacket(pkt as EscapePacket); break; case PacketID.Teleport: RealmManager.Logic.AddPendingAction(t => Player.Teleport(t, pkt as TeleportPacket), PendingPriority.Networking); break; case PacketID.GotoAck: RealmManager.Logic.AddPendingAction(t => Player.GotoAck(t, pkt as GotoAckPacket), PendingPriority.Networking); break; case PacketID.EditAccountList: RealmManager.Logic.AddPendingAction(t => Player.EditAccountList(t, pkt as EditAccountListPacket), PendingPriority.Networking); break; case PacketID.Buy: RealmManager.Logic.AddPendingAction(t => Player.Buy(t, pkt as BuyPacket), PendingPriority.Networking); break; case PacketID.RequestTrade: RealmManager.Logic.AddPendingAction(t => Player.RequestTrade(t, pkt as RequestTradePacket), PendingPriority.Networking); break; case PacketID.ChangeTrade: RealmManager.Logic.AddPendingAction(t => Player.ChangeTrade(t, pkt as ChangeTradePacket), PendingPriority.Networking); break; case PacketID.AcceptTrade: RealmManager.Logic.AddPendingAction(t => Player.AcceptTrade(t, pkt as AcceptTradePacket), PendingPriority.Networking); break; case PacketID.CancelTrade: RealmManager.Logic.AddPendingAction(t => Player.CancelTrade(t, pkt as CancelTradePacket), PendingPriority.Networking); break; case PacketID.AOEAck: RealmManager.Logic.AddPendingAction(t => Player.AOEAck(t, pkt as AOEAckPacket), PendingPriority.Networking); break; case PacketID.GroundDamage: RealmManager.Logic.AddPendingAction(t => Player.GroundDamage(t, pkt as GroundDamagePacket), PendingPriority.Networking); break; case PacketID.CheckCredits: RealmManager.Logic.AddPendingAction(t => Player.CheckCredits(t, pkt as CheckCreditsPacket), PendingPriority.Networking); break; case PacketID.GuildRemove: RealmManager.Logic.AddPendingAction(t => Player.GuildRemove(t, pkt as GuildRemovePacket), PendingPriority.Networking); break; case PacketID.CreateGuild: RealmManager.Logic.AddPendingAction(t => Player.CreateGuild(t, pkt as CreateGuildPacket), PendingPriority.Networking); break; case PacketID.JoinGuild: RealmManager.Logic.AddPendingAction(t => Player.JoinGuild(t, pkt as JoinGuildPacket), PendingPriority.Networking); break; case PacketID.GuildInvite: RealmManager.Logic.AddPendingAction(t => Player.InviteToGuild(t, pkt as GuildInvitePacket), PendingPriority.Networking); break; case PacketID.ChangeGuildRank: RealmManager.Logic.AddPendingAction(t => Player.ChangeGuildRank(t, pkt as ChangeGuildRankPacket), PendingPriority.Networking); break; case PacketID.Visibullet: RealmManager.Logic.AddPendingAction(t => Player.VisibulletHit(pkt as VisibulletPacket), PendingPriority.Networking); break; case PacketID.TextBoxButton: RealmManager.Logic.AddPendingAction(t => Player.TextBoxButton(pkt as TextBoxButtonPacket), PendingPriority.Networking); break; case PacketID.UpdateAck: RealmManager.Logic.AddPendingAction(t => HandleUpdateAck(), PendingPriority.Networking); break; default: Logger.Error($"Unhandled packet: {pkt}"); break; } } catch (Exception ex) { Logger.Info(pkt.ToString()); Logger.Error(ex); Disconnect(); } }
public void SendPacket(Packet pkt) { pending.Enqueue(pkt); sendLock.Set(); }