public static bool ChangeDifficulty(Players.Player player, ColonyState state, string difficulty) { if (SettlersConfiguration.DifficutlyCanBeChanged) { if (!GameDifficulty.GameDifficulties.ContainsKey(difficulty)) { UnknownCommand(player, difficulty); return(true); } var newDiff = GameDifficulty.GameDifficulties[difficulty]; if (newDiff.Rank >= SettlersConfiguration.MinDifficulty.Rank) { state.Difficulty = newDiff; SettlerManager.UpdateFoodUse(state); state.Difficulty.Print(player); PandaChat.Send(player, "Settlers! Mod difficulty set to {0}.", ChatColor.green, state.Difficulty.Name); NetworkUI.NetworkMenuManager.SendColonySettingsUI(player); return(true); } NetworkUI.NetworkMenuManager.SendColonySettingsUI(player); PandaChat.Send(player, "The server administrator had disabled setting your difficulty below {0}.", ChatColor.green, SettlersConfiguration.MinDifficulty.Name); } return(true); }
public static void ChangedSetting(ValueTuple <Players.Player, JSONNode, string> data) { if (data.Item1.ActiveColony != null) { switch (data.Item3) { case "server_popup": var cs = ColonyState.GetColonyState(data.Item1.ActiveColony); var maxToggleTimes = SettlersConfiguration.GetorDefault("MaxSettlersToggle", 4); if (cs != null) { if (!SettlersConfiguration.GetorDefault("SettlersEnabled", true)) { PandaChat.Send(data.Item1, _localizationHelper, "AdminDisabledSettlers", ChatColor.red); } else if (!HasToggeledMaxTimes(maxToggleTimes, cs, data.Item1)) { var def = (int)cs.SettlersEnabled; var enabled = data.Item2.GetAsOrDefault(_Setters, def); if (def != enabled) { TurnSettlersOn(data.Item1, cs, maxToggleTimes, (SettlersState)enabled); PandaChat.Send(data.Item1, _localizationHelper, "SettlersState", ChatColor.green, cs.SettlersEnabled.ToString()); } } } break; } } }
public static void ChangedSetting(TupleStruct <Players.Player, JSONNode, string> data) { switch (data.item3) { case "world_settings": var ps = PlayerState.GetPlayerState(data.item1); var maxToggleTimes = Configuration.GetorDefault("MaxSettlersToggle", 4); if (ps != null && data.item2.GetAsOrDefault(_Setters, Convert.ToInt32(ps.SettlersEnabled)) != Convert.ToInt32(ps.SettlersEnabled)) { if (!Configuration.GetorDefault("SettlersEnabled", true)) { PandaChat.Send(data.item1, "The server administrator had disabled the changing of Settlers.", ChatColor.red); } else if (!HasToggeledMaxTimes(maxToggleTimes, ps, data.item1)) { TurnSettlersOn(data.item1, ps, maxToggleTimes, data.item2.GetAsOrDefault(_Setters, Convert.ToInt32(ps.SettlersEnabled)) != 0); } PandaChat.Send(data.item1, "Settlers! Mod Settlers are now " + (ps.SettlersEnabled ? "on" : "off"), ChatColor.green); } break; } }
public bool TryDoCommand(Players.Player player, string chat) { var array = CommandManager.SplitCommand(chat); var gitVer = VersionChecker.GetGitVerion(); var versionCompare = GameLoader.MOD_VER.Major.CompareTo(gitVer.Major); PandaChat.Send(player, "Settlers! Mod version: {0}.", ChatColor.green, GameLoader.MOD_VER.ToString()); PandaChat.Send(player, "Settlers! Git version: {0}.", ChatColor.green, gitVer.ToString()); if (versionCompare < 0) { if (!VersionChecker.NewVer) { PandaChat.Send(player, "Settlers! version is out of date. The mod will automatically update now.", ChatColor.red); VersionChecker.WriteVersionsToConsole(); } else { PandaChat.Send(player, "Settlers! Has been updated. Restart the server/game to apply.", ChatColor.red); } } return(true); }
internal static void LogError(Exception e, string message, params object[] args) { ServerLog.LogAsyncExceptionMessage(new Pipliz.LogExceptionMessage(PandaChat.BuildMessage(GetFormattedMessage(string.Format(message, args)), ChatColor.red), e)); if (e.InnerException != null) { LogError(e.InnerException); } }
internal static void LogError(Exception e) { ServerLog.LogAsyncExceptionMessage(new Pipliz.LogExceptionMessage(PandaChat.BuildMessage("Exception", ChatColor.red), e)); if (e.InnerException != null) { LogError(e.InnerException); } }
private static bool HasToggeledMaxTimes(int maxToggleTimes, ColonyState state, Players.Player player) { if (state.SettlersToggledTimes >= maxToggleTimes) { PandaChat.Send(player, _localizationHelper, "AbuseWarning", ChatColor.red, maxToggleTimes.ToString()); return(true); } return(false); }
internal static void LogError(Exception e, string message) { ServerLog.LogAsyncExceptionMessage(new LogExceptionMessage(PandaChat.BuildMessage(GetFormattedMessage(message), ChatColor.red), e)); if (e.InnerException != null) { LogError(e.InnerException); } }
private static bool HasToggeledMaxTimes(int maxToggleTimes, PlayerState state, Players.Player player) { if (state.SettlersToggledTimes >= maxToggleTimes) { PandaChat.Send(player, $"To limit abuse of the /settlers command you can no longer toggle settlers on or off. You have used your alloted {maxToggleTimes} times.", ChatColor.red); return(true); } return(false); }
public static void PossibleCommands(Players.Player player, ChatColor color) { PandaChat.Send(player, "Current Difficulty: " + PlayerState.GetPlayerState(player).Difficulty.Name, color); PandaChat.Send(player, "Possible commands:", color); var diffs = string.Empty; foreach (var diff in GameDifficulty.GameDifficulties) { diffs += diff.Key + " | "; } PandaChat.Send(player, "/difficulty " + diffs.Substring(0, diffs.Length - 2), color); }
public bool TryDoCommand(Players.Player player, string chat, List <string> split) { if (!chat.StartsWith("/settlers", StringComparison.OrdinalIgnoreCase)) { return(false); } if (player == null || player.ID == NetworkID.Server || player.ActiveColony == null) { return(true); } var array = new List <string>(); CommandManager.SplitCommand(chat, array); var state = ColonyState.GetColonyState(player.ActiveColony); var maxToggleTimes = SettlersConfiguration.GetorDefault("MaxSettlersToggle", 4); if (maxToggleTimes == 0 && !SettlersConfiguration.GetorDefault("SettlersEnabled", true)) { PandaChat.Send(player, _localizationHelper, "AdminDisabledSettlers.", ChatColor.red); return(true); } if (HasToggeledMaxTimes(maxToggleTimes, state, player)) { return(true); } if (array.Count == 1) { PandaChat.Send(player, _localizationHelper, "SettlersToggleTime", ChatColor.green, state.SettlersEnabled.ToString(), state.SettlersToggledTimes.ToString(), maxToggleTimes.ToString()); return(true); } if (array.Count == 2 && state.SettlersToggledTimes <= maxToggleTimes && Enum.TryParse <SettlersState>(array[1].ToLower().Trim(), out var settlersState)) { TurnSettlersOn(player, state, maxToggleTimes, settlersState); } return(true); }
private static void TurnSettlersOn(Players.Player player, PlayerState state, int maxToggleTimes, bool enabled) { if (!state.SettlersEnabled) { state.SettlersToggledTimes++; } state.SettlersEnabled = enabled; PandaChat.Send(player, $"Settlers! Mod Settlers are now on. You have toggled this {state.SettlersToggledTimes} out of {maxToggleTimes} times.", ChatColor.green); NetworkUI.NetworkMenuManager.SendWorldSettingsUI(player); }
public bool TryDoCommand(Players.Player player, string chat, List <string> split) { if (!chat.StartsWith("/difficulty", StringComparison.OrdinalIgnoreCase) || !chat.StartsWith("/dif", StringComparison.OrdinalIgnoreCase)) { return(false); } if (player == null || player.ID == NetworkID.Server || player.ActiveColony == null) { return(true); } var array = new List <string>(); CommandManager.SplitCommand(chat, array); var state = ColonyState.GetColonyState(player.ActiveColony); if (array.Count == 1) { PandaChat.Send(player, "Settlers! Mod difficulty set to {0}.", ChatColor.green, state.Difficulty.Name); return(true); } if (array.Count < 2) { UnknownCommand(player, chat); return(true); } if (array.Count == 2) { var difficulty = array[1].Trim(); return(ChangeDifficulty(player, state, difficulty)); } if (!SettlersConfiguration.DifficutlyCanBeChanged) { PandaChat.Send(player, "The server administrator had disabled the changing of game difficulty.", ChatColor.green); } return(true); }
private static void TurnSettlersOn(Players.Player player, ColonyState state, int maxToggleTimes, SettlersState enabled) { if (state.SettlersEnabled == SettlersState.Disabled && enabled != SettlersState.Disabled) { state.SettlersToggledTimes++; } state.SettlersEnabled = enabled; PandaChat.Send(player, _localizationHelper, "SettlersToggleTime", ChatColor.green, state.SettlersEnabled.ToString(), state.SettlersToggledTimes.ToString(), maxToggleTimes.ToString()); NetworkUI.NetworkMenuManager.SendColonySettingsUI(player); }
public bool TryDoCommand(Players.Player player, string chat) { if (player == null || player.ID == NetworkID.Server) { return(true); } var array = CommandManager.SplitCommand(chat); var colony = Colony.Get(player); var state = PlayerState.GetPlayerState(player); var maxToggleTimes = Configuration.GetorDefault("MaxSettlersToggle", 4); if (maxToggleTimes == 0 && !Configuration.GetorDefault("SettlersEnabled", true)) { PandaChat.Send(player, "The server administrator had disabled the changing of Settlers.", ChatColor.red); return(true); } if (HasToggeledMaxTimes(maxToggleTimes, state, player)) { return(true); } if (array.Length == 1) { PandaChat.Send(player, "Settlers! Settlers are {0}. You have toggled this {1} out of {2} times.", ChatColor.green, state.SettlersEnabled ? "on" : "off", state.SettlersToggledTimes.ToString(), maxToggleTimes.ToString()); return(true); } if (array.Length == 2 && state.SettlersToggledTimes <= maxToggleTimes) { TurnSettlersOn(player, state, maxToggleTimes, array[1].ToLower().Trim() == "on" || array[1].ToLower().Trim() == "true"); } return(true); }
public bool TryDoCommand(Players.Player player, string chat) { if (player == null || player.ID == NetworkID.Server) { return(true); } var array = CommandManager.SplitCommand(chat); var colony = Colony.Get(player); var state = PlayerState.GetPlayerState(player); if (array.Length == 1) { PandaChat.Send(player, "Settlers! Mod difficulty set to {0}.", ChatColor.green, state.Difficulty.Name); return(true); } if (array.Length < 2) { UnknownCommand(player, chat); return(true); } if (array.Length == 2) { var difficulty = array[1].Trim(); return(ChangeDifficulty(player, state, difficulty)); } if (!Configuration.DifficutlyCanBeChanged) { PandaChat.Send(player, "The server administrator had disabled the changing of game difficulty.", ChatColor.green); } return(true); }
public bool TryDoCommand(Players.Player player, string chat) { if (player == null || player.ID == NetworkID.Server) { return(true); } string[] array = CommandManager.SplitCommand(chat); Colony colony = Colony.Get(player); PlayerState state = PlayerState.GetPlayerState(player); if (array.Length == 1) { PandaChat.Send(player, "Settlers! Mod difficulty is set to {0}.", ChatColor.green, state.Difficulty.Name); return(true); } if (array.Length < 2) { UnknownCommand(player, chat); return(true); } if (!GameDifficulty.GameDifficulties.ContainsKey(array[1].Trim())) { UnknownCommand(player, array[1].Trim()); return(true); } state.Difficulty = GameDifficulty.GameDifficulties[array[1].Trim()]; PandaChat.Send(player, "Settlers! Mod difficulty set to {0}.", ChatColor.green, state.Difficulty.Name); Managers.SettlerManager.UpdateFoodUse(player); return(true); }
private static void UnknownCommand(Players.Player player, string command) { PandaChat.Send(player, "Unknown command {0}", ChatColor.white, command); PossibleCommands(player, ChatColor.white); }
public void Print(Players.Player player) { PandaChat.Send(player, $"FoodMultiplier: {FoodMultiplier}", ChatColor.green); PandaChat.Send(player, $"MonsterDamage: {MonsterDamage}", ChatColor.green); PandaChat.Send(player, $"MonsterDamageReduction: {MonsterDamageReduction}", ChatColor.green); }
internal static void Log(ChatColor color, string message, params object[] args) { ServerLog.LogAsyncMessage(new LogMessage(PandaChat.BuildMessage(GetFormattedMessage(string.Format(message, args)), color), LogType.Log)); }
public static void WriteVersionsToConsole() { try { var gitVer = GetGitVerion(); var bkFolder = GameLoader.GAMEDATA_FOLDER + "Pandaros.bk"; PandaLogger.Log(ChatColor.green, "Mod version: {0}.", GameLoader.MOD_VER.ToString()); PandaLogger.Log(ChatColor.green, "Git version: {0}.", gitVer.ToString()); var versionCompare = GameLoader.MOD_VER.CompareTo(gitVer); if (versionCompare < 0) { PandaLogger.Log(ChatColor.red, "Settlers! version is out of date. Downloading new version from: {0}", GIT_URL); var releases = GetReleases(); var iName = releases.IndexOf(ASSETS); var nameSub = releases.Substring(iName + ASSETS.Length); var zip = releases.IndexOf(ZIP); var zipSub = releases.Substring(zip + ZIP.Length); var iEndName = zipSub.IndexOf("\""); var verString = zipSub.Substring(0, iEndName); var newVer = GameLoader.MODS_FOLDER + $"/{gitVer}.zip"; var oldVer = GameLoader.MODS_FOLDER + $"/{GameLoader.MOD_VER}.zip"; ServicePointManager.ServerCertificateValidationCallback += (s, ce, ca, p) => true; var webClient = new WebClient(); webClient.Headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"; webClient.Headers["Content-Type"] = "text"; webClient.DownloadFileCompleted += (s, e) => { if (!NewVer) { NewVer = true; var error = false; try { if (Directory.Exists(bkFolder)) { Directory.Delete(bkFolder, true); } PandaLogger.Log(ChatColor.green, $"Settlers! update {gitVer} downloaded. Making a backup.."); Directory.Move(GameLoader.MODS_FOLDER + "/Pandaros", bkFolder); if (File.Exists(oldVer)) { File.Delete(oldVer); } PandaLogger.Log(ChatColor.green, $"Installing..."); try { var fastZip = new FastZip(); fastZip.ExtractZip(newVer, GameLoader.MODS_FOLDER, null); } catch (Exception ex) { error = true; if (Directory.Exists(bkFolder)) { Directory.Move(bkFolder, GameLoader.MODS_FOLDER + "/Pandaros"); } PandaLogger.LogError(ex); PandaLogger.Log(ChatColor.red, $"There was an error updating to the latest version of Settlers!"); } if (!error) { PandaLogger.Log(ChatColor.green, $"Settlers! update {gitVer} installed. Restart to update!"); PandaChat.SendToAll($"Settlers! update {gitVer} installed. Restart server to update!", ChatColor.maroon, ChatStyle.bolditalic); } } catch (Exception) { if (Directory.Exists(bkFolder)) { Directory.Move(bkFolder, GameLoader.MODS_FOLDER + "/Pandaros"); } } if (File.Exists(newVer)) { File.Delete(newVer); } } }; webClient.DownloadFileAsync(new Uri(verString), newVer); } } catch (Exception) { } }