Example #1
0
        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;
            }
        }
Example #2
0
        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;
            }
        }
Example #3
0
        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
            {
            }
        }