Exemple #1
0
        private void update(GameClient client, GameDoor targetDoor)
        {
            delete(client, targetDoor);

            if (targetDoor != null)
            {
                if (doorType != 7 && doorType != 9)
                {
                    var door = new DBDoor();
                    door.ObjectId   = null;
                    door.InternalID = DoorID;
                    door.Name       = "door";
                    door.Type       = DoorID / 100000000;
                    door.Level      = targetDoor.Level;
                    door.Realm      = (byte)targetDoor.Realm;
                    door.Health     = targetDoor.Health;
                    door.Locked     = targetDoor.Locked;
                    door.X          = client.Player.X;
                    door.Y          = client.Player.Y;
                    door.Z          = client.Player.Z;
                    door.Heading    = client.Player.Heading;
                    GameServer.Database.AddObject(door);
                    targetDoor.AddToWorld();
                    client.Player.Out.SendMessage("Added door " + DoorID + " to the database", eChatType.CT_Important,
                                                  eChatLoc.CL_SystemWindow);
                    return;
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// load the keep door object from DB object
        /// </summary>
        /// <param name="obj"></param>
        public override void LoadFromDatabase(DataObject obj)
        {
            DBDoor door = obj as DBDoor;

            if (door == null)
            {
                return;
            }
            base.LoadFromDatabase(obj);

            Zone curZone = WorldMgr.GetZone((ushort)(door.InternalID / 1000000));

            if (curZone == null)
            {
                return;
            }
            this.CurrentRegion = curZone.ZoneRegion;
            m_name             = door.Name;
            m_Heading          = (ushort)door.Heading;
            Position           = new Vector3(door.X, door.Y, door.Z);
            m_level            = 0;
            m_model            = 0xFFFF;
            m_doorID           = door.InternalID;
            m_state            = eDoorState.Closed;
            this.AddToWorld();

            m_health = MaxHealth;
            StartHealthRegeneration();
        }
Exemple #3
0
        private void add(GameClient client, GameDoor targetDoor)
        {
            var DOOR = GameServer.Database.SelectObject <DBDoor>("InternalID = '" + DoorID + "'");

            if (DOOR != null)
            {
                client.Out.SendMessage("The door is already in the database", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                return;
            }
            if (DOOR == null)
            {
                if (doorType != 7 && doorType != 9)
                {
                    var door = new DBDoor();
                    door.ObjectId   = null;
                    door.InternalID = DoorID;
                    door.Name       = "door";
                    door.Type       = DoorID / 100000000;
                    door.Level      = 20;
                    door.Realm      = 6;
                    door.X          = targetDoor.X;
                    door.Y          = targetDoor.Y;
                    door.Z          = targetDoor.Z;
                    door.Heading    = targetDoor.Heading;
                    door.Health     = 2545;
                    GameServer.Database.AddObject(door);
                    (targetDoor).AddToWorld();
                    client.Player.Out.SendMessage("Added door ID:" + DoorID + "to the database", eChatType.CT_Important,
                                                  eChatLoc.CL_SystemWindow);
                    //DoorMgr.Init( );
                    return;
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// save this door to a door table slot
        /// </summary>
        public override void SaveIntoDatabase()
        {
            DBDoor obj = null;

            if (InternalID != null)
            {
                obj = GameServer.Database.FindObjectByKey <DBDoor>(InternalID);
            }

            if (obj == null)
            {
                obj = new DBDoor();
            }

            obj.Name       = Name;
            obj.InternalID = DoorID;
            obj.Type       = DoorID / 100000000;
            obj.Guild      = GuildName;
            obj.Flags      = Flag;
            obj.Realm      = (byte)Realm;
            obj.Level      = Level;
            obj.MaxHealth  = MaxHealth;
            obj.Health     = MaxHealth;
            obj.Locked     = Locked;
            if (InternalID == null)
            {
                GameServer.Database.AddObject(obj);
                InternalID = obj.ObjectId;
            }
            else
            {
                GameServer.Database.SaveObject(obj);
            }
        }
Exemple #5
0
        /// <summary>
        /// Loads this door from a door table slot
        /// </summary>
        /// <param name="obj">DBDoor</param>
        public override void LoadFromDatabase(DataObject obj)
        {
            base.LoadFromDatabase(obj);
            DBDoor m_dbdoor = obj as DBDoor;

            if (m_dbdoor == null)
            {
                return;
            }
            Zone curZone = WorldMgr.GetZone((ushort)(m_dbdoor.InternalID / 1000000));

            if (curZone == null)
            {
                return;
            }
            this.CurrentRegion = curZone.ZoneRegion;
            m_name             = m_dbdoor.Name;
            m_Heading          = (ushort)m_dbdoor.Heading;
            m_x         = m_dbdoor.X;
            m_y         = m_dbdoor.Y;
            m_z         = m_dbdoor.Z;
            m_level     = 0;
            m_model     = 0xFFFF;
            m_doorID    = m_dbdoor.InternalID;
            m_guildName = m_dbdoor.Guild;
            m_Realm     = (eRealm)m_dbdoor.Realm;
            m_level     = m_dbdoor.Level;
            m_health    = m_dbdoor.MaxHealth;
            m_maxHealth = m_dbdoor.MaxHealth;
            m_locked    = m_dbdoor.Locked;
            m_flags     = m_dbdoor.Flags;

            this.AddToWorld();
        }
        /// <summary>
        /// load the keep door object from DB object
        /// </summary>
        /// <param name="obj"></param>
        public override void LoadFromDatabase(DataObject obj)
        {
            DBDoor door = obj as DBDoor;

            if (door == null)
            {
                return;
            }

            base.LoadFromDatabase(obj);

            Zone curZone = WorldMgr.GetZone((ushort)(door.InternalID / 1000000));

            if (curZone == null)
            {
                return;
            }

            CurrentRegion = curZone.ZoneRegion;
            m_name        = door.Name;
            m_Heading     = (ushort)door.Heading;
            X             = door.X;
            Y             = door.Y;
            Z             = door.Z;
            m_level       = 0;
            m_model       = 0xFFFF;
            m_doorID      = door.InternalID;
            m_state       = eDoorState.Closed;
            AddToWorld();

            foreach (AbstractArea area in CurrentAreas)
            {
                if (area is KeepArea)
                {
                    AbstractGameKeep keep = (area as KeepArea).Keep;
                    if (!keep.Doors.Contains(door.InternalID))
                    {
                        Component = new GameKeepComponent();
                        Component.AbstractKeep = keep;
                        keep.Doors.Add(door.InternalID, this);
                    }

                    break;
                }
            }

            m_health = MaxHealth;
            StartHealthRegeneration();
            DoorMgr.RegisterDoor(this);
        }
Exemple #7
0
        /// <summary>
        /// load the keep door object from DB object
        /// </summary>
        /// <param name="obj"></param>
        public override void LoadFromDatabase(DataObject obj)
        {
            DBDoor door = obj as DBDoor;

            if (door == null)
            {
                return;
            }
            base.LoadFromDatabase(obj);

            Zone curZone = WorldMgr.GetZone((ushort)(door.InternalID / 1000000));

            if (curZone == null)
            {
                return;
            }
            this.CurrentRegion = curZone.ZoneRegion;
            m_name             = door.Name;
            m_Heading          = (ushort)door.Heading;
            Position           = new Vector3(door.X, door.Y, door.Z);
            m_level            = 0;
            m_model            = 0xFFFF;
            m_doorID           = door.InternalID;
            m_state            = eDoorState.Closed;
            this.AddToWorld();

            foreach (AbstractArea area in this.CurrentAreas)
            {
                if (area is KeepArea keepArea)
                {
                    string sKey = door.InternalID.ToString();
                    if (!keepArea.Keep.Doors.ContainsKey(sKey))
                    {
                        Component      = new GameKeepComponent();
                        Component.Keep = keepArea.Keep;
                        keepArea.Keep.Doors.Add(sKey, this);
                    }
                    break;
                }
            }

            m_health = MaxHealth;
            StartHealthRegeneration();
            DoorMgr.RegisterDoor(this);
        }
Exemple #8
0
        /// <summary>
        /// Loads this door from a door table slot
        /// </summary>
        /// <param name="obj">DBDoor</param>
        public override void LoadFromDatabase(DataObject obj)
        {
            base.LoadFromDatabase(obj);
            DBDoor m_dbdoor = obj as DBDoor;

            if (m_dbdoor == null)
            {
                return;
            }
            Zone curZone = WorldMgr.GetZone((ushort)(m_dbdoor.InternalID / 1000000));

            if (curZone == null)
            {
                return;
            }
            this.CurrentRegion = curZone.ZoneRegion;
            m_name             = m_dbdoor.Name;
            m_Heading          = (ushort)m_dbdoor.Heading;
            m_x         = m_dbdoor.X;
            m_y         = m_dbdoor.Y;
            m_z         = m_dbdoor.Z;
            m_level     = 0;
            m_model     = 0xFFFF;
            m_doorID    = m_dbdoor.InternalID;
            m_guildName = m_dbdoor.Guild;
            m_Realm     = (eRealm)m_dbdoor.Realm;
            m_level     = m_dbdoor.Level;
            m_health    = m_dbdoor.MaxHealth;
            m_maxHealth = m_dbdoor.MaxHealth;
            m_locked    = m_dbdoor.Locked;
            m_flags     = m_dbdoor.Flags;

            // Open mile gates on PVE and PVP server types
            if (CurrentRegion.IsFrontier && (GameServer.Instance.Configuration.ServerType == eGameServerType.GST_PvE ||
                                             GameServer.Instance.Configuration.ServerType == eGameServerType.GST_PvP))
            {
                State = eDoorState.Open;
            }

            this.AddToWorld();
        }
        public void AddingDoor(GamePlayer player, byte response)
        {
            if (response != 0x01)
            {
                return;
            }

            int doorType = HandlerDoorId / 100000000;

            if (doorType == 7)
            {
                PositionMgr.CreateDoor(HandlerDoorId, player);
            }
            else
            {
                var door = new DBDoor
                {
                    ObjectId   = null,
                    InternalID = HandlerDoorId,
                    Name       = "door",
                    Type       = HandlerDoorId / 100000000,
                    Level      = 20,
                    Realm      = 6,
                    MaxHealth  = 2545,
                    Health     = 2545,
                    Locked     = 0,
                    X          = player.X,
                    Y          = player.Y,
                    Z          = player.Z,
                    Heading    = player.Heading
                };

                GameServer.Database.AddObject(door);

                player.Out.SendMessage($"Added door {HandlerDoorId} to the database!", eChatType.CT_Important, eChatLoc.CL_SystemWindow);
                DoorMgr.Init();
            }
        }
Exemple #10
0
        public static bool LoadDoor(DBDoor door)
        {
            IDoor  mydoor = null;
            ushort zone   = (ushort)(door.InternalID / 1000000);

            Zone currentZone = WorldMgr.GetZone(zone);

            if (currentZone == null)
            {
                return(false);
            }

            //check if the door is a keep door
            foreach (AbstractArea area in currentZone.GetAreasOfSpot(door.X, door.Y, door.Z))
            {
                if (area is KeepArea)
                {
                    mydoor = new GameKeepDoor();
                    mydoor.LoadFromDatabase(door);
                    break;
                }
            }

            //if the door is not a keep door, create a standard door
            if (mydoor == null)
            {
                mydoor = new GameDoor();
                mydoor.LoadFromDatabase(door);
            }

            //add to the list of doors
            if (mydoor != null)
            {
                RegisterDoor(mydoor);
            }

            return(true);
        }
Exemple #11
0
        public void AddingDoor(GamePlayer player, byte response)
        {
            if (response != 0x01)
            {
                return;
            }

            int doorType = m_handlerDoorID / 100000000;

            if (doorType == 7)
            {
                PositionMgr.CreateDoor(m_handlerDoorID, player);
            }
            else
            {
                var door = new DBDoor();
                door.ObjectId   = null;
                door.InternalID = m_handlerDoorID;
                door.Name       = "door";
                door.Type       = m_handlerDoorID / 100000000;
                door.Level      = 20;
                door.Realm      = 6;
                door.MaxHealth  = 2545;
                door.Health     = 2545;
                door.Locked     = 0;
                door.X          = (int)player.Position.X;
                door.Y          = (int)player.Position.Y;
                door.Z          = (int)player.Position.Z;
                door.Heading    = player.Heading;
                GameServer.Database.AddObject(door);

                player.Out.SendMessage("Added door " + m_handlerDoorID + " to the database!", eChatType.CT_Important,
                                       eChatLoc.CL_SystemWindow);
                DoorMgr.Init();
            }
        }