void c_ClientMovementInfo(object sender, ClientMovementInfoEventArgs e) { Client c = (Client)sender; MovementInfo mi = e.Info; Client[] nearbyClients = GetNearByClients(c); c.MyCharacter.X = mi.FromX; c.MyCharacter.Y = mi.FromY; Npc[] nearbyNpcs = mapEngine.GetNearbyNpcs(c.MyCharacter); byte[] bufferSendNpcList = PacketManager.SendSpawnNpc(nearbyNpcs.Cast <Npc>().ToList(), c.Map.MapID); c.Send(bufferSendNpcList); switch (mi.PacketID) { case 1: byte[] SendStartMoving = PacketManager.SendStartMoving(mi, c.MyCharacter.MovingSpeed); SendSpecific(nearbyClients, SendStartMoving); break; case 2: byte[] SendKeepMoving = PacketManager.SendKeepMoving(mi, c.MyCharacter.MovingSpeed); c.Send(SendKeepMoving); break; case 3: byte[] SendStopMoving = PacketManager.SendStopMoving(mi); SendSpecific(nearbyClients, SendStopMoving); break; } }
void c_ClientMovementInfo(object sender, ClientMovementInfoEventArgs e) { Client c = (Client)sender; MovementInfo mi = e.Info; Client[] nearbyClients = GetNearByClients(c); c.MyCharacter.X = mi.FromX; c.MyCharacter.Y = mi.FromY; Npc[] nearbyNpcs = mapEngine.GetNearbyNpcs(c.MyCharacter); byte[] bufferSendNpcList = PacketManager.SendSpawnNpc(nearbyNpcs.Cast<Npc>().ToList(), c.Map.MapID); c.Send(bufferSendNpcList); switch (mi.PacketID) { case 1: byte[] SendStartMoving = PacketManager.SendStartMoving(mi, c.MyCharacter.MovingSpeed); SendSpecific(nearbyClients, SendStartMoving); break; case 2: byte[] SendKeepMoving = PacketManager.SendKeepMoving(mi, c.MyCharacter.MovingSpeed); c.Send(SendKeepMoving); break; case 3: byte[] SendStopMoving = PacketManager.SendStopMoving(mi); SendSpecific(nearbyClients, SendStopMoving); break; } }
void c_ClientMovementInfo(object sender, ClientMovementInfoEventArgs e) { Client c = (Client)sender; MovementInfo mi = e.Info; MapEngine mapEngine = GetMapEngine(c.MyCharacter.MapId); Client[] clients = GetClientsForChars(mapEngine.GetCharactersInRange(c.MyCharacter.Position, 150).ToArray()); try { foreach (Client client in clients) { if (client != c && client.MyCharacter.MapId == c.MyCharacter.MapId) { client.Send(PacketManager.SendSpawnPlayers(c.MyCharacter)); c.Send(PacketManager.SendSpawnPlayers(client.MyCharacter)); c.Send(PacketManager.SendPlayerActiveSkills(client.MyCharacter)); if (client.MyCharacter.Pet != null && !client.MyCharacter.Pet.IsSealed) { c.Send(PacketManager.SendPetOtherPlayerSpawn2(client.MyCharacter.Pet)); } } } c.MyCharacter.Position.X = mi.FromX; c.MyCharacter.Position.Y = mi.FromY; //GuildTown t = new GuildTown //{ // ID = 1, // Grade = 1, // CurDura = 1, // MaxDura = 1, // MapID = 7, // Name = "Test MunpaTown", // OwnerID = 6, // Position = new Position(400, 1600, 0) //}; //c.Send(PacketManager.SendGuildTown(t)); // SAY NO TO WALLHACKERS IN OUR SERVER!!, though this increases ram cost alot :/ if (!MapEngine.IsWalkableTile(c.MyCharacter)) { SendChatToAll(string.Format("{0} has been kicked for wallhacking!!", c.MyCharacter.Name)); c.Dispose(); return; } Npc[] nearbyNpcs = mapEngine.GetNearbyNpcs(c.MyCharacter); if (nearbyNpcs != null) { byte[] bufferSendNpcList = PacketManager.SendSpawnNpc(nearbyNpcs.Cast<Npc>().ToList(), c.Map.MapID); c.Send(bufferSendNpcList); } switch (mi.PacketID) { case 1: byte[] SendStartMoving = PacketManager.SendStartMoving(mi, c.MyCharacter); SendToClients(SendStartMoving, clients); break; case 2: byte[] SendKeepMoving = PacketManager.SendKeepMoving(mi, c.MyCharacter); SendToClients(SendKeepMoving, clients); break; case 3: byte[] SendStopMoving = PacketManager.SendStopMoving(mi, c.MyCharacter); SendToClients(SendStopMoving, clients); break; } } catch { } }