public override void Execute(GameClient Client, byte* pPacket) { AttackRequest* Request = (AttackRequest*)pPacket; if (Request->AttackType == AttackTypes.Magic) { Request->Decrypt(); if (Request->SpellID == 1045) { AttackTargetPacket* Packet = PacketHelper.AttackPacket(); Packet->UID = Client.Entity.UID; Packet->SpellID = 1045; Packet->SpellLevel = 4; Packet->X = Request->TargetX; Packet->Y = Request->TargetY; Client.SendScreen(Packet, Packet->Size, true); Memory.Free(Packet); } } }
public override void Execute(GameClient Client, byte *pPacket) { AttackRequest *Request = (AttackRequest *)pPacket; if (Request->AttackType == AttackTypes.Magic) { Request->Decrypt(); if (Request->SpellID == 1045) { AttackTargetPacket *Packet = PacketHelper.AttackPacket(); Packet->UID = Client.Entity.UID; Packet->SpellID = 1045; Packet->SpellLevel = 4; Packet->X = Request->TargetX; Packet->Y = Request->TargetY; Client.SendScreen(Packet, Packet->Size, true); Memory.Free(Packet); } } }
public override void Execute(GameClient Client, byte *pPacket) { Chat *Packet = (Chat *)pPacket; string[] Parameters = PacketHelper.ParseChat(Packet); CommandAction Action = CommandAction.None; if ((Action = CommandProcessor.Process(Client, Parameters)) != CommandAction.None) { if (Action == CommandAction.Processed) { } else if (Action == CommandAction.ClearNpcScripts) { NpcScriptEngine.Clear(); } return; } switch (Packet->ChatType) { case ChatType.Talk: Client.SendScreen(Packet, Packet->Size); break; case ChatType.Whisper: GameClient Receiver = EntityManager.FindByName(Parameters[1]); if (Receiver != null) { Receiver.Send(Packet, Packet->Size); } else { Client.Message("It appears that " + Parameters[1] + " is offline", ChatType.Top, Color.White); } break; } }
public override void Execute(GameClient Client, byte* pPacket) { EntityMovement* Packet = (EntityMovement*)pPacket; if (Packet->UID == Client.Entity.UID) { ConquerAngle Direction = (ConquerAngle)(Packet->Direction % 8); Client.Entity.Walk(Direction); if (!Kernel.IsWalkable(Client.Entity.Location.MapID, Client.Entity.Location.X, Client.Entity.Location.Y)) { Client.Disconnect(); } else { Client.SendScreen(Packet, Packet->Size, true); Kernel.GetScreen(Client, null); } } else { Client.Disconnect(); } }
public override void Execute(GameClient Client, byte* pPacket) { Chat* Packet = (Chat*)pPacket; string[] Parameters = PacketHelper.ParseChat(Packet); CommandAction Action = CommandAction.None; if ((Action = CommandProcessor.Process(Client, Parameters)) != CommandAction.None) { if (Action == CommandAction.Processed) { } else if (Action == CommandAction.ClearNpcScripts) { NpcScriptEngine.Clear(); } return; } switch (Packet->ChatType) { case ChatType.Talk: Client.SendScreen(Packet, Packet->Size); break; case ChatType.Whisper: GameClient Receiver = EntityManager.FindByName(Parameters[1]); if (Receiver != null) { Receiver.Send(Packet, Packet->Size); } else { Client.Message("It appears that " + Parameters[1] + " is offline", ChatType.Top, Color.White); } break; } }
private void HandleJumping(GameClient Client, GeneralData *Packet) { ushort X1 = Packet->ValueA; ushort Y1 = Packet->ValueB; if ((X1 != Client.Entity.Location.X) || (Y1 != Client.Entity.Location.Y)) { Client.Disconnect(); } else { ushort X2 = Packet->ValueD_High; ushort Y2 = Packet->ValueD_Low; Client.Entity.Angle = ConquerMath.GetAngle(Client.Entity.Location, new Location() { X = X2, Y = Y2 }); Client.Entity.Location.X = X2; Client.Entity.Location.Y = Y2; if (!Kernel.IsWalkable(Client.Entity.Location.MapID, Client.Entity.Location.X, Client.Entity.Location.Y)) { Client.Disconnect(); } else { Client.Send(Packet, Packet->Size); Client.SendScreen(Packet, Packet->Size); Kernel.GetScreen(Client, ConquerCallbackKernel.GetScreenReply); } } }
public override void Execute(GameClient Client, byte *pPacket) { EntityMovement *Packet = (EntityMovement *)pPacket; if (Packet->UID == Client.Entity.UID) { ConquerAngle Direction = (ConquerAngle)(Packet->Direction % 8); Client.Entity.Walk(Direction); if (!Kernel.IsWalkable(Client.Entity.Location.MapID, Client.Entity.Location.X, Client.Entity.Location.Y)) { Client.Disconnect(); } else { Client.SendScreen(Packet, Packet->Size, true); Kernel.GetScreen(Client, null); } } else { Client.Disconnect(); } }
private void HandleJumping(GameClient Client, GeneralData* Packet) { ushort X1 = Packet->ValueA; ushort Y1 = Packet->ValueB; if ((X1 != Client.Entity.Location.X) || (Y1 != Client.Entity.Location.Y)) { Client.Disconnect(); } else { ushort X2 = Packet->ValueD_High; ushort Y2 = Packet->ValueD_Low; Client.Entity.Angle = ConquerMath.GetAngle(Client.Entity.Location, new Location() { X = X2, Y = Y2 }); Client.Entity.Location.X = X2; Client.Entity.Location.Y = Y2; if (!Kernel.IsWalkable(Client.Entity.Location.MapID, Client.Entity.Location.X, Client.Entity.Location.Y)) { Client.Disconnect(); } else { Client.Send(Packet, Packet->Size); Client.SendScreen(Packet, Packet->Size); Kernel.GetScreen(Client, ConquerCallbackKernel.GetScreenReply); } } }
private void HandleChangeAngle(GameClient Client, GeneralData* Packet) { Client.Entity.Angle = (ConquerAngle)Packet->ValueC; Client.SendScreen(Packet, Packet->Size); }
private void HandleChangeAction(GameClient Client, GeneralData* Packet) { Client.Entity.Action = (ConquerAction)Packet->ValueD_High; Client.SendScreen(Packet, Packet->Size); }
private void HandleChangeAction(GameClient Client, GeneralData *Packet) { Client.Entity.Action = (ConquerAction)Packet->ValueD_High; Client.SendScreen(Packet, Packet->Size); }
private void HandleChangeAngle(GameClient Client, GeneralData *Packet) { Client.Entity.Angle = (ConquerAngle)Packet->ValueC; Client.SendScreen(Packet, Packet->Size); }