void Unload() { Puts("Saving protection database..."); if (ProtectionTimer != null) { ProtectionTimer.Destroy(); } SaveData(); }
private void SPCommand(BasePlayer player, string command, string[] args) { if (Convert.ToBoolean(Config["bProtectionEnabled"]) == false && player.net.connection.authLevel != Convert.ToInt32(Config["iAuthLevel"])) { PrintToChatEx(player, GetMessage("tDisabled", player.UserIDString)); return; } if (args.Length == 0 || args.Length > 2) { PrintToChatEx(player, "USAGE: /sp <time | end>"); if (player.net.connection.authLevel >= Convert.ToInt32(Config["iAuthLevel"])) { PrintToChatEx(player, "<color=yellow>ADMIN: /sp <toggle | togglesleep | cleardb | me></color>"); } } else if (args[0] == "me") { if (player.net.connection.authLevel >= Convert.ToInt32(Config["iAuthLevel"])) { OnPlayerFirstInit(player.userID); ProtectionInfo p = null; if (storedData.Players.TryGetValue(player.userID, out p)) { string minutes = Convert.ToInt32(TimeSpan.FromSeconds(p.TimeLeft).TotalMinutes).ToString(); Puts("Start protection enabled for " + player.displayName + " [" + player.userID.ToString() + "] - Duration: " + minutes + " minutes."); string parsed_config = GetMessage("tFirstSpawn", player.UserIDString); parsed_config = parsed_config.Replace("{minutes_left}", minutes.ToString()); PrintToChatEx(player, parsed_config); } else { Puts("Failed..."); } } else { PrintToChatEx(player, GetMessage("tNoAuthLevel", player.UserIDString)); } } else if (args[0] == "cleardb") { if (player.net.connection.authLevel >= Convert.ToInt32(Config["iAuthLevel"])) { storedData.Players.Clear(); PrintToChatEx(player, GetMessage("tDBCleared", player.UserIDString)); SaveData(); } else { PrintToChatEx(player, GetMessage("tNoAuthLevel", player.UserIDString)); } } else if (args[0] == "togglesleep") { if (player.net.connection.authLevel >= Convert.ToInt32(Config["iAuthLevel"])) { if (Convert.ToBoolean(Config["bSleeperProtection"]) == true) { PrintToChatEx(player, "Sleep Protection: <color=red>disabled</color>."); Puts("Start Protection sleeper protection has been disabled by " + player.displayName + " (type /sp togglesleep to enable)."); Config["bSleeperProtection"] = false; SaveConfig(); } else { PrintToChatEx(player, "Sleep Protection: <color=green>enabled</color>."); Puts("Start Protection sleeper protection has been enabled by " + player.displayName + " (type /sp togglesleep to disabled)."); Config["bSleeperProtection"] = true; SaveConfig(); } } else { PrintToChatEx(player, GetMessage("tNoAuthLevel", player.UserIDString)); } } else if (args[0] == "toggle") { if (player.net.connection.authLevel >= Convert.ToInt32(Config["iAuthLevel"])) { if (Convert.ToBoolean(Config["bProtectionEnabled"]) == true) { if (ProtectionTimer != null) { ProtectionTimer.Destroy(); } PrintToChatEx(player, GetMessage("tDisabled", player.UserIDString)); Puts("Start Protection has been disabled by " + player.displayName + " (type /sp toggle to enable)."); Config["bProtectionEnabled"] = false; SaveConfig(); } else { int seconds = Convert.ToInt32(Config["iUpdateTimerInterval"]); ProtectionTimer = timer.Repeat(seconds, 0, () => UpdateProtectedList()); PrintToChatEx(player, GetMessage("tEnabled", player.UserIDString)); int minutes = Convert.ToInt32(TimeSpan.FromSeconds(Convert.ToInt32(Config["iTime"])).TotalMinutes); Puts("Start Protection has been enabled by " + player.displayName + " [Minutes: " + minutes.ToString() + "] (type /sp toggle to disable)."); Config["bProtectionEnabled"] = true; SaveConfig(); } } else { PrintToChatEx(player, GetMessage("tNoAuthLevel", player.UserIDString)); } } else if (args[0] == "end") { ProtectionInfo p = null; if (storedData.Players.TryGetValue(player.userID, out p)) { PunishPlayer(player, Convert.ToInt32(Config["iTime"]) + 1, false); } else { PrintToChatEx(player, GetMessage("tNoProtection", player.UserIDString)); } } else if (args[0] == "time") { ProtectionInfo p = null; if (storedData.Players.TryGetValue(player.userID, out p)) { string minutes = Convert.ToInt32(TimeSpan.FromSeconds(p.TimeLeft).TotalMinutes).ToString(); string parsed_config = GetMessage("tSpawn", player.UserIDString); parsed_config = parsed_config.Replace("{minutes_left}", minutes.ToString()); PrintToChatEx(player, parsed_config); } else { PrintToChatEx(player, GetMessage("tNoProtection", player.UserIDString)); } } }