Server.Multis.BaseBoat.Teleport C# (CSharp) Méthode

Teleport() public méthode

public Teleport ( int xOffset, int yOffset, int zOffset ) : void
xOffset int
yOffset int
zOffset int
Résultat void
		public void Teleport( int xOffset, int yOffset, int zOffset )
		{
			List<IEntity> toMove = GetMovingEntities();

			for ( int i = 0; i < toMove.Count; ++i )
			{
				IEntity e = toMove[i];

				if ( e is Item )
				{
					Item item = (Item)e;

					item.Location = new Point3D( item.X + xOffset, item.Y + yOffset, item.Z + zOffset );
				}
				else if ( e is Mobile )
				{
					Mobile m = (Mobile)e;

					m.Location = new Point3D( m.X + xOffset, m.Y + yOffset, m.Z + zOffset );
				}
			}

			Location = new Point3D( X + xOffset, Y + yOffset, Z + zOffset );
		}

Usage Example

Exemple #1
0
        public void RemoveBoat(BaseBoat boat)
        {
            if (boat == null)
                return;

            //First, we'll try and put the boat in the cooresponding location where it warped in
            if (boat.Map != null && boat.Map != Map.Internal && m_Altar != null && m_Altar.WarpRegion != null)
            {
                Map map = boat.Map;
                Rectangle2D rec = m_Altar.WarpRegion.Bounds;

                int x = boat.X - m_Bounds.X;
                int y = boat.Y - m_Bounds.Y;
                int z = map.GetAverageZ(x, y);

                Point3D ePnt = new Point3D(rec.X + x, rec.Y + y, -5);

                int offsetX = ePnt.X - boat.X;
                int offsetY = ePnt.Y - boat.Y;
                int offsetZ = map.GetAverageZ(ePnt.X, ePnt.Y) - boat.Z;

                if (boat.CanFit(ePnt, this.Map, boat.ItemID))
                {
                    boat.Teleport(offsetX, offsetY, offsetZ);

                    //int z = this.Map.GetAverageZ(boat.X, boat.Y);
                    if (boat.Z != -5)
                        boat.Z = -5;

                    if (boat.TillerMan != null)
                        boat.TillerManSay(501425); //Ar, turbulent water!
                    return;
                }
            }

            //Plan B, lets kick to some random location who-knows-where
            for (int i = 0; i < 25; i++)
            {
                Rectangle2D rec = CorgulAltar.BoatKickLocation;
                Point3D ePnt = CorgulAltar.GetRandomPoint(rec, Map);

                int offsetX = ePnt.X - boat.X;
                int offsetY = ePnt.Y - boat.Y;
                int offsetZ = ePnt.Z - boat.Z;

                if (boat.CanFit(ePnt, this.Map, boat.ItemID))
                {
                    boat.Teleport(offsetX, offsetY, -5);
                    boat.SendMessageToAllOnBoard("A rough patch of sea has disoriented the crew!");

                    //int z = this.Map.GetAverageZ(boat.X, boat.Y);
                    if (boat.Z != -5)
                        boat.Z = -5;

                    if (boat.TillerMan != null)
                        boat.TillerManSay(501425); //Ar, turbulent water!
                    break;
                }
            }
        }
All Usage Examples Of Server.Multis.BaseBoat::Teleport