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"); } }
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); }
public PlayerData(SleepingBag bag) { PosX = bag.transform.position.x; PosY = bag.transform.position.y; PosZ = bag.transform.position.z; ID = bag.net.ID; }
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); }
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); }
private void SetCooldown(SleepingBag entity, ConfigData.OInfo info) { var value = entity.ShortPrefabName.Contains("bed") ? info.bed : info.bag; entity.secondsBetweenReuses = value; entity.SendNetworkUpdate(); }
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"]); }
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); }
public void SleepingBag_ToString() { var sleepingBag = new SleepingBag("Wonderful Sleeping bag", 20M, 2, 1.2M); Console.WriteLine(sleepingBag); Assert.AreEqual(sleepingBag.ToString(), sleepingBag.GetDescription()); }
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) ); }); }
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); }
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; } }
private void ResetSpawnTargets(BasePlayer player) { SleepingBag[] bags = SleepingBag.FindForPlayer(player.userID, true); foreach (var entry in bags) { BagCooldown.SetValue(entry, 0); } }
public RustPlayerRenamingSleepingBagEvent( RustPlayer player, SleepingBag sleepingBag, string newName) : base(player) { SleepingBag = sleepingBag; NewName = newName; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// 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); }
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()); }
public static bool CanUseSleepingBag(BasePlayer player, SleepingBag bag) { if (player.userID == bag.deployerUserID) { return(true); } return(false); }
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(); } } }
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); }
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); }
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); }
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); } } }
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); }
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); }
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); } } }
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(); }
bool CheckMaxBags(ulong userid) { int count = 0; foreach (SleepingBag bag in SleepingBag.FindForPlayer(userid, true)) { count++; } if (count > MaximumBags) { return(true); } else { return(false); } }
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); } }
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())); }