コード例 #1
0
        void c_ClientWalkToPortalInfo(object sender, ClientWalkToPortalEventArgs e)
        {
            Client c     = (Client)sender;
            int    MapID = e.MapID;

            Portal p = GetNearbyPortal(c);

            Client[] nearbyClients = GetNearByClients(c);

            if (p != null)
            {
                c.MyCharacter.X     = p.ToX;
                c.MyCharacter.Y     = p.ToY;
                c.MyCharacter.MapId = p.ToMapID;

                byte[] bufferRemoveMe = PacketManager.SendRemoveCharacter(c.MyCharacter);
                SendSpecific(nearbyClients, bufferRemoveMe);

                byte[] bufferSendPortal = PacketManager.SendPortal(p);
                c.Send(bufferSendPortal);
            }
            //c.Send(PacketManager.SendPortal());
            // need portal codes here
        }
コード例 #2
0
        void c_ClientWalkToPortalInfo(object sender, ClientWalkToPortalEventArgs e)
        {
            Client c = (Client)sender;
            int MapID = e.MapID;

            Portal p = GetNearbyPortal(c);
            Client[] nearbyClients = GetNearByClients(c);

            if (p != null)
            {
                c.MyCharacter.X = p.ToX;
                c.MyCharacter.Y = p.ToY;
                c.MyCharacter.MapId = p.ToMapID;

                byte[] bufferRemoveMe = PacketManager.SendRemoveCharacter(c.MyCharacter);
                SendSpecific(nearbyClients, bufferRemoveMe);

                byte[] bufferSendPortal = PacketManager.SendPortal(p);
                c.Send(bufferSendPortal);
            }
            //c.Send(PacketManager.SendPortal());
            // need portal codes here
        }
コード例 #3
0
        void c_ClientWalkToPortalInfo(object sender, ClientWalkToPortalEventArgs e)
        {
            Client c = (Client)sender;
            int MapID = e.MapID;
            Map m = GetMapEngine(MapID).Map;
            MapEngine mapEngine = GetMapEngine(c.MyCharacter.MapId);
            Client[] clients = GetClientsForChars(mapEngine.GetCharactersInRange(c.MyCharacter.Position, 150).ToArray());

            Portal p = GetNearbyPortal(c);

            if (p != null)
            {
                c.MyCharacter.Position.X = p.ToX;
                c.MyCharacter.Position.Y = p.ToY;
                c.MyCharacter.OldMapId = c.MyCharacter.MapId;
                c.MyCharacter.MapId = p.ToMapID;
                c.MyCharacter.Map = m;

                characterManager.UpdateCharacter(c.MyCharacter);

                byte[] bufferRemoveMe = PacketManager.SendRemoveCharacter(c.MyCharacter, RemoveCharacterEffect.None);
                SendToClients(bufferRemoveMe, clients);

                if (c.MyCharacter.Pet != null && !c.MyCharacter.Pet.IsSealed)
                {
                    byte[] bufferRemovePet = PacketManager.SendRemovePet(c.MyCharacter.Pet);
                    SendToClients(bufferRemovePet, clients);

                    c.MyCharacter.Pet.Position.X = c.MyCharacter.Position.X;
                    c.MyCharacter.Pet.Position.Y = c.MyCharacter.Position.Y;
                    c.MyCharacter.Pet.MapID = c.MyCharacter.MapId;
                }

                byte[] bufferSendPortal = PacketManager.SendPortal(p);
                c.Send(bufferSendPortal);
            }
            else if (p == null && !c.MyCharacter.Alive)
            {
                Portal dead = new Portal()
                {
                    ToMapID = c.MyCharacter.MapId,
                    ToX = (short)c.MyCharacter.Map.SpawnX,
                    ToY = (short)c.MyCharacter.Map.SpawnY
                };

                c.MyCharacter.Position.X = (short)c.MyCharacter.Map.SpawnX;
                c.MyCharacter.Position.Y = (short)c.MyCharacter.Map.SpawnY;
                c.MyCharacter.Map = m;

                characterManager.UpdateCharacter(c.MyCharacter);

                byte[] bufferRemoveMe = PacketManager.SendRemoveCharacter(c.MyCharacter, RemoveCharacterEffect.None);
                SendToClients(bufferRemoveMe, clients);

                if (c.MyCharacter.Pet != null && !c.MyCharacter.Pet.IsSealed)
                {
                    byte[] bufferRemovePet = PacketManager.SendRemovePet(c.MyCharacter.Pet);
                    SendToClients(bufferRemovePet, clients);

                    c.MyCharacter.Pet.Position.X = c.MyCharacter.Position.X;
                    c.MyCharacter.Pet.Position.Y = c.MyCharacter.Position.Y;
                    c.MyCharacter.Pet.MapID = c.MyCharacter.MapId;
                }

                byte[] bufferSendPortal = PacketManager.SendPortal(dead);
                c.Send(bufferSendPortal);
            }
        }