public PrefabInstance FindPrefabsNear() { var pos = this.theEntity.position; EntityPlayer player = null; if (this.theEntity.Buffs.HasCustomVar("Leader")) { player = theEntity.world.GetEntity((int)this.theEntity.Buffs.GetCustomVar("Leader")) as EntityPlayerLocal; } else { return(null); } if (theEntity) { DynamicPrefabDecorator dynamicPrefabDecorator = GameManager.Instance.World.ChunkCache.ChunkProvider.GetDynamicPrefabDecorator(); if (dynamicPrefabDecorator == null) { return(null); } Vector3 position = player.position; int num = (player.ChunkObserver == null) ? GamePrefs.GetInt(EnumGamePrefs.OptionsViewDistance) : player.ChunkObserver.viewDim; num = (num - 1) * 16; if (!player.isEntityRemote) { dynamicPrefabDecorator.GetPrefabsAround(position, (float)num, (float)1000f, this.prefabsAroundFar, this.prefabsAroundNear, true); GameManager.Instance.prefabLODManager.UpdatePrefabsAround(this.prefabsAroundFar, this.prefabsAroundNear); } return(this.prefabsAroundNear.Values.FirstOrDefault(d => pos.x >= d.boundingBoxPosition.x && pos.x < d.boundingBoxPosition.x + d.boundingBoxSize.x && pos.z >= d.boundingBoxPosition.z && pos.z < d.boundingBoxPosition.z + d.boundingBoxSize.z)); } return(null); }
//NOTE : Requires [{daycolor|always}] variable in xml element 'windowCompass' in file windows.xml static void Postfix(XUiC_CompassWindow __instance, ref string value, ref BindingItem binding) { string fieldName = binding.FieldName; if (fieldName != null && fieldName == "daycolor") { value = "FFFFFF"; if (XUi.IsGameRunning()) { int v4 = GameUtils.WorldTimeToDays(GameManager.Instance.World.worldTime); int warning = GameStats.GetInt(EnumGameStats.BloodMoonWarning); if (warning != -1) { int bloodMoon = GameStats.GetInt(EnumGameStats.BloodMoonDay); if (v4 == bloodMoon) { value = "FF0000"; } // Only highlight previous 2 days if the BM is on a fixed cycle, i.e. every 3 days otherwise the warning willm spoil the suprise! if (GamePrefs.GetInt(EnumGamePrefs.BloodMoonRange) == 0) { if (v4 == bloodMoon - 1) { value = "FFA500"; } else if (v4 == bloodMoon - 2) { value = "FFFF00"; } } } } } }
public static void PlayerLoginRPC_Prefix(ClientInfo _cInfo, string _playerName, ValueTuple <PlatformUserIdentifierAbs, string> _platformUserAndToken, ValueTuple <PlatformUserIdentifierAbs, string> _crossplatformUserAndToken, out bool __state) { __state = false; try { if (_platformUserAndToken.Item1 != null && _crossplatformUserAndToken.Item1 != null) { if (ReservedSlots.IsEnabled) { int maxPlayers = GamePrefs.GetInt(EnumGamePrefs.ServerMaxPlayerCount); if (ConnectionManager.Instance.ClientCount() > maxPlayers && ReservedSlots.FullServer(_cInfo, _platformUserAndToken.Item1, _crossplatformUserAndToken.Item1)) { GamePrefs.Set(EnumGamePrefs.ServerMaxPlayerCount, maxPlayers + 1); __state = true; return; } } } } catch (Exception e) { Log.Out(string.Format("[SERVERTOOLS] Error in Injections.PlayerLoginRPC_Prefix: {0}", e.Message)); } }
public static void Load() { if (!Directory.Exists(API.ConfigPath)) { Directory.CreateDirectory(API.ConfigPath); Log.Out(string.Format("[SERVERTOOLS] Created new directory '{0}'", API.ConfigPath)); } else { Log.Out(string.Format("[SERVERTOOLS] Located directory '{0}'", API.ConfigPath)); } if (!Directory.Exists(API.ConfigPath + "/Logs/ChatLogs")) { Directory.CreateDirectory(API.ConfigPath + "/Logs/ChatLogs"); } if (!Directory.Exists(API.ConfigPath + "/Logs/DetectionLogs")) { Directory.CreateDirectory(API.ConfigPath + "/Logs/DetectionLogs"); } if (!Directory.Exists(API.ConfigPath + "/Logs/BountyLogs")) { Directory.CreateDirectory(API.ConfigPath + "/Logs/BountyLogs"); } if (!Directory.Exists(API.ConfigPath + "/Logs/AuctionLog")) { Directory.CreateDirectory(API.ConfigPath + "/Logs/AuctionLogs"); } if (!Directory.Exists(API.ConfigPath + "/Logs/BankLogs")) { Directory.CreateDirectory(API.ConfigPath + "/Logs/BankLogs"); } if (!Directory.Exists(API.ConfigPath + "/Logs/DupeLogs")) { Directory.CreateDirectory(API.ConfigPath + "/Logs/DupeLogs"); } if (!Directory.Exists(API.ConfigPath + "/Logs/PlayerLogs")) { Directory.CreateDirectory(API.ConfigPath + "/Logs/PlayerLogs"); } if (!Directory.Exists(API.ConfigPath + "/Logs/PlayerReports")) { Directory.CreateDirectory(API.ConfigPath + "/Logs/PlayerReports"); } if (!Directory.Exists(API.ConfigPath + "/Logs/PollLogs")) { Directory.CreateDirectory(API.ConfigPath + "/Logs/PollLogs"); } if (!Directory.Exists(API.ConfigPath + "/Logs/ChatCommandLogs")) { Directory.CreateDirectory(API.ConfigPath + "/Logs/ChatCommandLogs"); } if (!Directory.Exists(API.ConfigPath + "/Logs/DamageLogs")) { Directory.CreateDirectory(API.ConfigPath + "/Logs/DamageLogs"); } if (!Directory.Exists(API.ConfigPath + "/Logs/BlockLogs")) { Directory.CreateDirectory(API.ConfigPath + "/Logs/BlockLogs"); } if (!Directory.Exists(API.ConfigPath + "/Logs/ConsoleCommandLogs")) { Directory.CreateDirectory(API.ConfigPath + "/Logs/ConsoleCommandLogs"); } if (!Directory.Exists(API.ConfigPath + "/Logs/WebPanelLogs")) { Directory.CreateDirectory(API.ConfigPath + "/Logs/WebPanelLogs"); } if (!Directory.Exists(API.ConfigPath + "/Logs/OutputLogs")) { Directory.CreateDirectory(API.ConfigPath + "/Logs/OutputLogs"); } if (!Directory.Exists(API.GamePath + "/Mods/ServerTools/Config")) { Directory.CreateDirectory(API.GamePath + "/Mods/ServerTools/Config"); } if (!Directory.Exists(API.GamePath + "/Mods/ServerTools/Config/XUi")) { Directory.CreateDirectory(API.GamePath + "/Mods/ServerTools/Config/XUi"); } StateManager.Awake(); RunTimePatch.PatchAll(); Config.Load(); Log.Out("[SERVERTOOLS] Running ServerTools v.{0}", Config.Version); CommandList.BuildList(); CommandList.Load(); PersistentOperations.SetFolders(); PersistentOperations.CreateCustomXUi(); PersistentOperations.GetCurrencyName(); PersistentOperations.EntityIdList(); PersistentOperations.Player_Killing_Mode = GamePrefs.GetInt(EnumGamePrefs.PlayerKillingMode); Mods.Load(); Phrases.Load(); HowToSetup.Load(); if (Fps.IsEnabled) { Fps.SetTarget(); } if (SleeperRespawn.IsEnabled) { try { SingletonMonoBehaviour <SdtdConsole> .Instance.ExecuteSync(string.Format("sleeperreset"), null); } catch (XmlException e) { Log.Out("[SERVERTOOLS] Failed to reset sleeper spawn points. Error = {0}", e.Message); } } try { DeleteFiles("DetectionLogs"); DeleteFiles("BountyLogs"); DeleteFiles("AuctionLogs"); DeleteFiles("BankLogs"); DeleteFiles("DupeLogs"); DeleteFiles("PlayerLogs"); DeleteFiles("PlayerReports"); DeleteFiles("PollLogs"); DeleteFiles("ChatLogs"); DeleteFiles("ChatCommandLogs"); DeleteFiles("DamageLogs"); DeleteFiles("BlockLogs"); DeleteFiles("ConsoleCommandLogs"); DeleteFiles("WebPanelLogs"); DeleteFiles("OutputLogs"); Log.Out(string.Format("[SERVERTOOLS] Xml log clean up complete")); } catch (XmlException e) { Log.Out("[SERVERTOOLS] Failed to delete old logs. Error = {0}", e.Message); } if (PersistentContainer.Instance.WorldSeed == 0) { PersistentContainer.Instance.WorldSeed = GameManager.Instance.World.Seed; PersistentContainer.DataChange = true; } else if (PersistentContainer.Instance.WorldSeed != GameManager.Instance.World.Seed) { PersistentContainer.Instance.WorldSeed = GameManager.Instance.World.Seed; PersistentContainer.DataChange = true; if (!CleanBin.IsEnabled && PersistentContainer.Instance.Players.IDs.Count > 0) { Log.Out("[SERVERTOOLS] Detected a new world. You have old ServerTools data saved from the last map. Run the Clean_Bin tool to remove the data of your choice"); } } if (PersistentContainer.Instance.Connections == null) { Dictionary <string, byte[]> connections = new Dictionary <string, byte[]>(); PersistentContainer.Instance.Connections = connections; Dictionary <string, DateTime> timeOuts = new Dictionary <string, DateTime>(); PersistentContainer.Instance.ConnectionTimeOut = timeOuts; PersistentContainer.DataChange = true; } if (CleanBin.IsEnabled) { CleanBin.Exec(); Log.Out("[SERVERTOOLS] ServerTools.bin has been cleaned. The tool will now disable automatically"); CleanBin.IsEnabled = false; Config.WriteXml(); Config.LoadXml(); } Track.Cleanup(); DroppedBagProtection.BuildList(); BlackJack.BuildDeck(); ActiveTools.Exec(true); Timers.Thirty_Second_Delay(); Timers.PersistentDataSave(); }