Beispiel #1
0
        /// <summary>
        /// treq packet
        /// </summary>
        /// <param name="treqPacket"></param>
        public void GetTreq(TreqPacket treqPacket)
        {
            ScriptedInstance timespace = Session.CurrentMapInstance.ScriptedInstances.FirstOrDefault(s => treqPacket.X == s.PositionX && treqPacket.Y == s.PositionY).GetClone();

            if (timespace == null)
            {
                return;
            }
            if (treqPacket.StartPress == 1 || treqPacket.RecordPress == 1)
            {
                timespace.LoadScript(MapInstanceType.TimeSpaceInstance);
                if (timespace.FirstMap == null)
                {
                    return;
                }
                foreach (Gift i in timespace.RequieredItems)
                {
                    if (Session.Character.Inventory.CountItem(i.VNum) < i.Amount)
                    {
                        Session.SendPacket(UserInterfaceHelper.Instance.GenerateMsg(string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_REQUIERED_ITEM"), ServerManager.Instance.GetItem(i.VNum).Name), 0));
                        return;
                    }
                    Session.Character.Inventory.RemoveItemAmount(i.VNum, i.Amount);
                }
                if (timespace.LevelMinimum > Session.Character.Level)
                {
                    Session.SendPacket(UserInterfaceHelper.Instance.GenerateMsg(Language.Instance.GetMessageFromKey("NOT_REQUIERED_LEVEL"), 0));
                    return;
                }

                Session.Character.MapX = timespace.PositionX;
                Session.Character.MapY = timespace.PositionY;
                ServerManager.Instance.TeleportOnRandomPlaceInMap(Session, timespace.FirstMap.MapInstanceId);
                timespace.FirstMap.InstanceBag.Creator = Session.Character.CharacterId;
                Session.SendPackets(timespace.GenerateMinimap());
                Session.SendPacket(timespace.GenerateMainInfo());
                Session.SendPacket(timespace.FirstMap.InstanceBag.GenerateScore());
            }
            else
            {
                Session.SendPacket(timespace.GenerateRbr());
            }
        }
        internal static void EnterInstance(this ClientSession session, ScriptedInstance input)
        {
            if (input != null)
            {
                ScriptedInstance instance = new ScriptedInstance(input);
                instance.LoadGlobals();
                instance.LoadScript(MapInstanceType.TimeSpaceInstance);
                if (instance.FirstMap == null)
                {
                    return;
                }

                if (session.Character.Level < instance.LevelMinimum)
                {
                    session.SendPacket(
                        UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("NOT_REQUIERED_LEVEL"), 0));
                    return;
                }

                foreach (Gift gift in instance.RequiredItems)
                {
                    if (session.Character.Inventory.CountItem(gift.VNum) < gift.Amount)
                    {
                        session.SendPacket(UserInterfaceHelper.GenerateMsg(
                                               string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_REQUIERED_ITEM"),
                                                             ServerManager.GetItem(gift.VNum).Name), 0));
                        return;
                    }

                    session.Character.Inventory.RemoveItemAmount(gift.VNum, gift.Amount);
                }

                session.Character.MapX = instance.PositionX;
                session.Character.MapY = instance.PositionY;
                ServerManager.Instance.TeleportOnRandomPlaceInMap(session, instance.FirstMap.MapInstanceId);
                instance.InstanceBag.CreatorId = session.Character.CharacterId;
                session.SendPackets(instance.GenerateMinimap());
                session.SendPacket(instance.GenerateMainInfo());
                session.SendPacket(instance.FirstMap.InstanceBag.GenerateScore());

                session.Character.Timespace = instance;
            }
        }