Inheritance: DeployedRespawn, IContextRequestable, IContextRequestableQuick, IContextRequestableStatus, IContextRequestableText, IContextRequestablePointText, IComponentInterface, IComponentInterface, IComponentInterface
Exemplo n.º 1
0
        public static void respawn_sleepingbag(Arg args)
        {
            BasePlayer basePlayer = ArgEx.Player(args);

            if (!basePlayer || !basePlayer.IsDead())
            {
                return;
            }
            uint uInt = args.GetUInt(0);

            if (uInt == 0)
            {
                args.ReplyWith("Missing sleeping bag ID");
            }
            else if (basePlayer.CanRespawn())
            {
                if (SleepingBag.SpawnPlayer(basePlayer, uInt))
                {
                    basePlayer.MarkRespawn();
                }
                else
                {
                    args.ReplyWith("Couldn't spawn in sleeping bag!");
                }
            }
            else
            {
                basePlayer.ConsoleMessage("You can't respawn again so quickly, wait a while");
            }
        }
Exemplo n.º 2
0
    public static bool SpawnPlayer(BasePlayer player, uint sleepingBag)
    {
        SleepingBag[] sleepingBagArray = SleepingBag.FindForPlayer(player.userID, true);
        SleepingBag   sleepingBag1     = sleepingBagArray.FirstOrDefault <SleepingBag>((SleepingBag x) => {
            if (x.deployerUserID != player.userID || x.net.ID != sleepingBag)
            {
                return(false);
            }
            return(x.unlockTime < UnityEngine.Time.realtimeSinceStartup);
        });

        if (sleepingBag1 == null)
        {
            return(false);
        }
        Vector3    vector3     = sleepingBag1.transform.position + sleepingBag1.spawnOffset;
        Quaternion quaternion  = sleepingBag1.transform.rotation;
        Quaternion quaternion1 = Quaternion.Euler(0f, quaternion.eulerAngles.y, 0f);

        player.RespawnAt(vector3, quaternion1);
        SleepingBag[] sleepingBagArray1 = sleepingBagArray;
        for (int i = 0; i < (int)sleepingBagArray1.Length; i++)
        {
            SleepingBag sleepingBag2 = sleepingBagArray1[i];
            if (Vector3.Distance(vector3, sleepingBag2.transform.position) <= ConVar.Server.respawnresetrange)
            {
                sleepingBag2.unlockTime = UnityEngine.Time.realtimeSinceStartup + sleepingBag2.secondsBetweenReuses;
            }
        }
        return(true);
    }
Exemplo n.º 3
0
 public PlayerData(SleepingBag bag)
 {
     PosX = bag.transform.position.x;
     PosY = bag.transform.position.y;
     PosZ = bag.transform.position.z;
     ID   = bag.net.ID;
 }
Exemplo n.º 4
0
    private void SpawnNewPlayer(Network.Connection connection)
    {
        BasePlayer.SpawnPoint spawnPoint = ServerMgr.FindSpawnPoint();
        BasePlayer            player     = GameManager.server.CreateEntity("assets/prefabs/player/player.prefab", spawnPoint.pos, spawnPoint.rot, true).ToPlayer();

        if (Interface.CallHook("OnPlayerSpawn", (object)player) != null)
        {
            return;
        }
        player.health                = 0.0f;
        player.lifestate             = BaseCombatEntity.LifeState.Dead;
        player.ResetLifeStateOnSpawn = false;
        player.limitNetworking       = true;
        player.Spawn();
        player.limitNetworking = false;
        player.PlayerInit(connection);
        if (SleepingBag.FindForPlayer(player.userID, true).Length == 0 && !player.hasPreviousLife)
        {
            player.Respawn();
        }
        else
        {
            player.SendRespawnOptions();
        }
        DebugEx.Log((object)(((object)player.net.get_connection()).ToString() + " joined [" + (object)player.net.get_connection().os + "/" + (object)(ulong)player.net.get_connection().ownerid + "]"), (StackTraceLogType)0);
    }
Exemplo n.º 5
0
    private void SetDeployedBy(BasePlayer player)
    {
        if (player == null)
        {
            return;
        }
        this.deployerUserID = player.userID;
        float single = UnityEngine.Time.realtimeSinceStartup;

        SleepingBag[] array = SleepingBag.sleepingBags.Where <SleepingBag>((SleepingBag x) => {
            if (x.deployerUserID != player.userID)
            {
                return(false);
            }
            return(x.unlockTime > UnityEngine.Time.realtimeSinceStartup);
        }).ToArray <SleepingBag>();
        for (int i = 0; i < (int)array.Length; i++)
        {
            SleepingBag sleepingBag = array[i];
            if (sleepingBag.unlockTime > single && Vector3.Distance(sleepingBag.transform.position, base.transform.position) <= ConVar.Server.respawnresetrange)
            {
                single = sleepingBag.unlockTime;
            }
        }
        this.unlockTime = Mathf.Max(single, UnityEngine.Time.realtimeSinceStartup + this.secondsBetweenReuses);
        base.SendNetworkUpdate(BasePlayer.NetworkQueue.Update);
    }
Exemplo n.º 6
0
        private void SetCooldown(SleepingBag entity, ConfigData.OInfo info)
        {
            var value = entity.ShortPrefabName.Contains("bed") ? info.bed : info.bag;

            entity.secondsBetweenReuses = value;
            entity.SendNetworkUpdate();
        }
Exemplo n.º 7
0
        void cmdChatRemoveHome(BasePlayer player, string command, string[] args)
        {
            if (args.Length != 1)
            {
                SendReply(player, Messages["removehomeArgsError"]);
                return;
            }
            if (!homes.ContainsKey(player.userID))
            {
                SendReply(player, Messages["homesmissing"]);
                return;
            }
            var name        = args[0];
            var playerHomes = homes[player.userID];

            if (!playerHomes.ContainsKey(name))
            {
                SendReply(player, Messages["homenotexist"]);
                return;
            }
            foreach (var sleepingBag in SleepingBag.FindForPlayer(player.userID, true))
            {
                if (Vector3.Distance(sleepingBag.transform.position, playerHomes[name]) < 1)
                {
                    sleepingBag.Kill();
                    break;
                }
            }
            playerHomes.Remove(name);
            SendReply(player, Messages["removehomesuccess"]);
        }
Exemplo n.º 8
0
    public static bool SpawnPlayer(BasePlayer player, uint sleepingBag)
    {
        SleepingBag[] forPlayer    = SleepingBag.FindForPlayer(player.userID, true);
        SleepingBag   sleepingBag1 = ((IEnumerable <SleepingBag>)forPlayer).FirstOrDefault <SleepingBag>((Func <SleepingBag, bool>)(x =>
        {
            if ((long)x.deployerUserID == (long)player.userID && x.net.ID == (int)sleepingBag)
            {
                return((double)x.unlockTime < (double)Time.get_realtimeSinceStartup());
            }
            return(false);
        }));

        if (Object.op_Equality((Object)sleepingBag1, (Object)null))
        {
            return(false);
        }
        Vector3    position  = Vector3.op_Addition(((Component)sleepingBag1).get_transform().get_position(), sleepingBag1.spawnOffset);
        Quaternion rotation1 = ((Component)sleepingBag1).get_transform().get_rotation();
        Quaternion rotation2 = Quaternion.Euler(0.0f, (float)((Quaternion) ref rotation1).get_eulerAngles().y, 0.0f);

        player.RespawnAt(position, rotation2);
        foreach (SleepingBag sleepingBag2 in forPlayer)
        {
            if ((double)Vector3.Distance(position, ((Component)sleepingBag2).get_transform().get_position()) <= (double)Server.respawnresetrange)
            {
                sleepingBag2.unlockTime = Time.get_realtimeSinceStartup() + sleepingBag2.secondsBetweenReuses;
            }
        }
        return(true);
    }
Exemplo n.º 9
0
        public void SleepingBag_ToString()
        {
            var sleepingBag = new SleepingBag("Wonderful Sleeping bag", 20M, 2, 1.2M);

            Console.WriteLine(sleepingBag);
            Assert.AreEqual(sleepingBag.ToString(), sleepingBag.GetDescription());
        }
Exemplo n.º 10
0
        private void PushOut(BasePlayer kickedPlayer)
        {
            var  bags         = SleepingBag.FindForPlayer(kickedPlayer.userID, true);
            bool willTeleport = bags.Length > 0 && TeleportBeforeKick;
            int  kickseconds  = KickWaitSeconds;

            if (willTeleport)
            {
                kickedPlayer.ChatMessage(
                    GetMessage("TeleportKickNotice", kickedPlayer.UserIDString).Replace("{kickseconds}", KickWaitSeconds.ToString())
                    );
            }
            else
            {
                kickedPlayer.ChatMessage(
                    GetMessage("KickNotice", kickedPlayer.UserIDString).Replace("{kickseconds}", KickWaitSeconds.ToString())
                    );
            }

            timer.Once(kickseconds, () =>
            {
                kickedPlayer.ChatMessage(GetMessage("KickNow", kickedPlayer.UserIDString));
                if (willTeleport)
                {
                    var destinationBag = bags[UnityEngine.Random.Range(0, bags.Length)];
                    kickedPlayer.Teleport(destinationBag.ServerPosition);
                }
                kickedPlayer.Kick(
                    GetMessage("KickedForPriorPlayer", kickedPlayer.UserIDString)
                    );
            });
        }
Exemplo n.º 11
0
    private void SpawnNewPlayer(Network.Connection connection)
    {
        BasePlayer.SpawnPoint spawnPoint = ServerMgr.FindSpawnPoint();
        BasePlayer            player     = GameManager.server.CreateEntity("assets/prefabs/player/player.prefab", spawnPoint.pos, spawnPoint.rot, true).ToPlayer();

        if (Interface.CallHook("OnPlayerSpawn", player) != null)
        {
            return;
        }
        player.health                = 0f;
        player.lifestate             = BaseCombatEntity.LifeState.Dead;
        player.ResetLifeStateOnSpawn = false;
        player.limitNetworking       = true;
        player.Spawn();
        player.limitNetworking = false;
        player.PlayerInit(connection);
        if (SleepingBag.FindForPlayer(player.userID, true).Length != 0 || player.hasPreviousLife)
        {
            player.SendRespawnOptions();
        }
        else
        {
            player.Respawn();
        }
        DebugEx.Log(string.Concat(new object[] { player.net.connection.ToString(), " joined [", player.net.connection.os, "/", player.net.connection.ownerid, "]" }), StackTraceLogType.None);
    }
Exemplo n.º 12
0
 public RustPlayerAssigningSleepingBagEvent(
     RustPlayer player,
     SleepingBag sleepingBag,
     ulong targetPlayerId) : base(player)
 {
     SleepingBag    = sleepingBag;
     TargetPlayerId = targetPlayerId;
 }
 private void ResetSpawnTargets(BasePlayer player)
 {
     SleepingBag[] bags = SleepingBag.FindForPlayer(player.userID, true);
     foreach (SleepingBag bag in bags)
     {
         bag.unlockTime = 0f;
     }
 }
Exemplo n.º 14
0
 private void ResetSpawnTargets(BasePlayer player)
 {
     SleepingBag[] bags = SleepingBag.FindForPlayer(player.userID, true);
     foreach (var entry in bags)
     {
         BagCooldown.SetValue(entry, 0);
     }
 }
Exemplo n.º 15
0
 public RustPlayerRenamingSleepingBagEvent(
     RustPlayer player,
     SleepingBag sleepingBag,
     string newName) : base(player)
 {
     SleepingBag = sleepingBag;
     NewName     = newName;
 }
Exemplo n.º 16
0
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Sleeping Bag Search
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        Dictionary <string, object> GetSleepingBagData(SleepingBag bag)
        {
            var bagdata = new Dictionary <string, object>();

            bagdata.Add("name", bag.niceName);
            bagdata.Add("pos", bag.transform.position);

            return(bagdata);
        }
Exemplo n.º 17
0
        public void GetDescriptionOfSleepingBag()
        {
            var sleepingBag = new SleepingBag("Nice sleeping bad", 20M, 2, 1M);

            Assert.AreEqual(sleepingBag.Name + ": Soft and fluffy sleeping bag", sleepingBag.GetDescription());

            sleepingBag.Name = "Outdoor Research Kids Sleeping Bag";
            Assert.AreEqual("Outdoor Research Kids Sleeping Bag: Soft and fluffy sleeping bag", sleepingBag.GetDescription());
        }
Exemplo n.º 18
0
            public static bool CanUseSleepingBag(BasePlayer player, SleepingBag bag)
            {
                if (player.userID == bag.deployerUserID)
                {
                    return(true);
                }

                return(false);
            }
Exemplo n.º 19
0
        private void OnChanged_RaycastObject()
        {
            bool inventoryClosed = InventoryController.Instance.IsClosed;

            if (!inventoryClosed)
            {
                m_OpenMessage.SetActive(false);
                m_GrabMessage.Toggle(false);
                if (m_CurrentCrosshair)
                {
                    m_CurrentCrosshair.SetActive(false);
                }

                return;
            }

            IInventoryTrigger openable = null;
            ItemPickup        pickup   = null;

            SleepingBag bag  = null;
            Lamp        lamp = null;

            var raycastData = Player.RaycastData.Get();

            if (raycastData && raycastData.ObjectIsInteractable)
            {
                openable = raycastData.GameObject.GetComponent <IInventoryTrigger>();
                pickup   = raycastData.GameObject.GetComponent <ItemPickup>();

                bag  = raycastData.GameObject.GetComponent <SleepingBag>();
                lamp = raycastData.GameObject.GetComponent <Lamp>();
            }

            m_OpenMessage.SetActive(openable != null);

            if (pickup != null && pickup.ItemToAdd != null)
            {
                m_GrabMessage.Toggle(true);
                m_GrabMessage.SetText(pickup.ItemToAdd.Name + (pickup.ItemToAdd.CurrentInStack > 1 ? (" x " + pickup.ItemToAdd.CurrentInStack) : ""));
            }

            else if (bag != null)
            {
                m_GrabMessage.Toggle(true);
                m_GrabMessage.SetText(TimeOfDay.Instance.State.Get() == ET.TimeOfDay.Night ? "Sleep..." : "You can only sleep at night time!");
            }
            else if (lamp != null)
            {
                m_GrabMessage.Toggle(true);
                m_GrabMessage.SetText(string.Format("Turn {0}", !lamp.State ? "<color=yellow>ON</color>" : "<color=red>OFF</color>"));
            }
            else
            {
                m_GrabMessage.Toggle(false);
            }
        }
 void RemoveSleepingBagsFor(ulong player_id)
 {
     if (Config.Get <bool>("RemoveMurdererBags"))
     {
         foreach (SleepingBag bag in SleepingBag.FindForPlayer(player_id, true))
         {
             bag.Kill();
         }
     }
 }
Exemplo n.º 21
0
        List <Dictionary <string, object> > FindSleepingBags(string userid)
        {
            var   bags    = new List <Dictionary <string, object> >();
            ulong ulongid = ulong.Parse(userid);

            foreach (SleepingBag bag in SleepingBag.FindForPlayer(ulongid, true))
            {
                bags.Add(GetSleepingBagData(bag));
            }

            return(bags);
        }
Exemplo n.º 22
0
        private bool playerSpawnedAtSleepingBag(BasePlayer player)
        {
            SleepingBag[] sleepingBags = SleepingBag.FindForPlayer(player.userID, false);
            foreach (SleepingBag sleepingBag in sleepingBags)
            {
                if (sleepingBag.transform.position.Equals(player.transform.position))
                {
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 23
0
 private object CanRenameBed(BasePlayer player, SleepingBag bed, string bedName)
 {
     if (bed == null || bed.OwnerID.ToString() == null || player == null || bedName == null)
     {
         return(true);
     }
     if (bed.OwnerID.ToString() != player.UserIDString)
     {
         player.ChatMessage(Lang("NotOwner", player.UserIDString));
         return(true);
     }
     return(null);
 }
Exemplo n.º 24
0
 public void SetCooldowns(BasePlayer player, Vector3 deathPosition)
 {
     foreach (var bag in SleepingBag.FindForPlayer(player.userID, true))
     {
         float distance       = bag.Distance2D(player);
         float targetCooldown = Mathf.Clamp(Settings.MaxCooldown - distance / Settings.CooldownPerDistance, 0, Settings.MaxCooldown);
         //Puts($"Target cooldown for distance {distance} is {targetCooldown}");
         if (bag.unlockSeconds < targetCooldown)
         {
             SetBagCooldown(bag, targetCooldown);
         }
     }
 }
Exemplo n.º 25
0
        object CanAssignBed(SleepingBag bag, BasePlayer player, ulong targetPlayerId)
        {
            if (FindBedsNearby(0, player.transform.position, targetPlayerId) > 1)
            {
                return(null);
            }

            if (FindBedsNearby(0, player.transform.position, player.userID) > 1 && (FindBedsNearby(bag) + 1) > bedsConfig.maxplayers)
            {
                SendReply(player, Lang("CantGiveBed", player.UserIDString));
                bag.deployerUserID = player.userID;
                return(true);
            }
            return(null);
        }
Exemplo n.º 26
0
        public static void respawn_sleepingbag_remove(ConsoleSystem.Arg args)
        {
            BasePlayer basePlayer = args.Player();

            if (!basePlayer)
            {
                return;
            }
            uint num = args.GetUInt(0, 0);

            if (num == 0)
            {
                args.ReplyWith("Missing sleeping bag ID");
                return;
            }
            SleepingBag.DestroyBag(basePlayer, num);
        }
Exemplo n.º 27
0
        public static void respawn_sleepingbag_remove(Arg args)
        {
            BasePlayer basePlayer = ArgEx.Player(args);

            if ((bool)basePlayer)
            {
                uint uInt = args.GetUInt(0);
                if (uInt == 0)
                {
                    args.ReplyWith("Missing sleeping bag ID");
                }
                else
                {
                    SleepingBag.DestroyBag(basePlayer, uInt);
                }
            }
        }
Exemplo n.º 28
0
        void CreateSleepingBag(BasePlayer player, Vector3 pos, string name)
        {
            SleepingBag sleepingBag =
                GameManager.server.CreateEntity("assets/prefabs/deployable/sleeping bag/sleepingbag_leather_deployed.prefab", pos,
                                                Quaternion.identity) as SleepingBag;

            if (sleepingBag == null)
            {
                return;
            }
            sleepingBag.skinID         = 893086724;
            sleepingBag.deployerUserID = player.userID;
            sleepingBag.niceName       = name;
            sleepingBag.OwnerID        = player.userID;
            SleepingBagUnlockTimeField.SetValue(sleepingBag, Time.realtimeSinceStartup + 300f);
            sleepingBag.Spawn();
        }
Exemplo n.º 29
0
        bool CheckMaxBags(ulong userid)
        {
            int count = 0;

            foreach (SleepingBag bag in SleepingBag.FindForPlayer(userid, true))
            {
                count++;
            }

            if (count > MaximumBags)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemplo n.º 30
0
        public static void respawn_sleepingbag_remove(ConsoleSystem.Arg args)
        {
            BasePlayer player = args.Player();

            if (!Object.op_Implicit((Object)player))
            {
                return;
            }
            uint sleepingBag = args.GetUInt(0, 0U);

            if (sleepingBag == 0U)
            {
                args.ReplyWith("Missing sleeping bag ID");
            }
            else
            {
                SleepingBag.DestroyBag(player, sleepingBag);
            }
        }
Exemplo n.º 31
0
 private void GetDeployedItemOwner(BasePlayer player, SleepingBag ditem)
 {
     SendReply(player, string.Format("Sleeping Bag '{0}': {1} - {2}", ditem.niceName.ToString(), FindPlayerName(ditem.deployerUserID), ditem.deployerUserID.ToString()));
 }