public override void SettingsLoadedEvent() { IDASettingsClass settings = DASettingsManager.GetSettings("da.ini"); UnregisterChatCommand(ACmdTriggers); UnregisterChatCommand(CmdTriggers); IINISection section = settings.GetSection("JoinSounds"); foreach (IINIEntry entry in section.EntryList) { switch (entry.Entry) { case "CommandsTriggers": CmdTriggers = entry.Value; break; case "AdminCommandsTriggers": ACmdTriggers = entry.Value; break; case "DatabaseFile": DBFile = entry.Value; break; case "MaxDelay": MaxDelay = (float)Convert.ToDouble(entry.Value.Replace(".", ",")); break; case "MinDelay": MinDelay = (float)Convert.ToDouble(entry.Value.Replace(".", ",")); break; case "DisableList": //DA.HostMessage(entry.Value); DisableList = entry.Value.Split('|').ToList(); break; case "AdminLevel": AdminLevel = Convert.ToInt32(entry.Value); break; case "ClearLevel": ClearLevel = Convert.ToInt32(entry.Value); break; case "GameLog": GameLogEnabled = Convert.ToBoolean(entry.Value); break; default: Engine.ConsoleOutput($"[Join Sounds] Invalid entry detected under Join Sounds section in configuration file!\n" + $"[Join Sounds] Key: \"{entry.Entry}\" | Value: \"{entry.Value}\"\n"); break; } } if (!File.Exists(JoinSounds.DBFile)) { File.WriteAllText(JoinSounds.DBFile, "[\r\n\r\n]"); } PlayersDatabase.ReloadSettings(); RegisterChatCommand(JoinSoundsGenericCommand, CmdTriggers, 1); RegisterChatCommand(JoinSoundsAdminGenericCommand, ACmdTriggers, 1); }
bool JoinSoundsAdminGenericCommand(IcPlayer player, string command, IDATokenClass text, TextMessageEnum chatType, object data) { int Size = text.Size; //Had to use like that cuz of a RenSharp problem :/P/PP if ((int)player.DAPlayer.AccessLevel >= AdminLevel) { if (text[1].ToLower() == "set" || text[1].ToLower() == "change") { if (Size > 2) { if (!DisableList.Contains(text[3].ToLower())) { var Pl = PlayersDatabase.GetPlayer(text[2]); if (Pl != null) { Pl.Sound = text[3]; PlayersDatabase.Update(Pl.Name, Pl); Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] {text[2]}'s join sound has been updated with \"{text[3]}\"."); } else { Pl = new PlayerClass(); Pl.Name = player.PlayerName.ToLower(); Pl.Sound = text[3]; Pl.Delay = MinDelay; PlayersDatabase.Add(Pl); Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] {text[2]}'s join sound has successfully added with \"{text[3]}\" sound. Delay is set to minimum by default."); } } else { Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] This sound is not allowed: {text[3]}."); } } else { DA.PagePlayer(player, $"Usage: {ACmdTriggers.Split('|')[0]} set <player name> <sound filename>"); } } else if (text[1].ToLower() == "delete" || text[1].ToLower() == "del" || text[1].ToLower() == "rem" || text[1].ToLower() == "remove") { if (Size > 1) { PlayersDatabase.Remove(player.PlayerName); Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] {text[2]}'s join sound has successfully removed."); } else { DA.PagePlayer(player, $"Usage: {ACmdTriggers.Split('|')[0]} remove <player name>"); } } else if (text[1].ToLower() == "delay") { if (Size > 2) { if (Convert.ToDouble(text[3]) <= MaxDelay && Convert.ToDouble(text[3]) >= MinDelay) { var Pl = PlayersDatabase.GetPlayer(player.PlayerName); Pl.Delay = (float)Convert.ToDouble(text[3]); PlayersDatabase.Update(Pl.Name, Pl); Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] {text[2]}'s sound delay has been updated with \"{Convert.ToDouble(text[3])}\"."); } else { DA.PagePlayer(player, $"[Join Sounds] Delay value must be between {MinDelay} and {MaxDelay}."); } } else { DA.PagePlayer(player, $"Usage: {ACmdTriggers.Split('|')[0]} delay <player name> <decimal>"); } } else if (text[1].ToLower() == "backup" || text[1].ToLower() == "bkup") { string BackupName = $"{Path.GetFileNameWithoutExtension(JoinSounds.DBFile)}-{DateTime.Now.ToString("yyyyMMddHHmmss")}-COMMAND.{Path.GetExtension(JoinSounds.DBFile)}"; PlayersDatabase.Backup(BackupName); Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] A backup of current database has been saved as \"{BackupName}\"."); } else if (text[1].ToLower() == "clear") { if ((int)player.DAPlayer.AccessLevel >= JoinSounds.ClearLevel) { if (Size < 2) { Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] This command is very sensitive. Please use \"{ACmdTriggers.Split('|')[0]} clear CONFIRM\" to clear database."); } else if (text[2] == "CONFIRM") { string BackupName = $"{Path.GetFileNameWithoutExtension(JoinSounds.DBFile)}-{DateTime.Now.ToString("yyyyMMddHHmmss")}-CLEARBKUP.{Path.GetExtension(JoinSounds.DBFile)}"; PlayersDatabase.Backup(BackupName); PlayersDatabase.Clear(); PlayersDatabase.Save(); Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] Player database is successfully removed. A backup of it saved as \"{BackupName}\"."); } else { Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] Invalid text entered. Please use \"{ACmdTriggers.Split('|')[0]} clear CONFIRM\" to clear database."); } } else { DA.PagePlayer(player.GameObj, "You don't have access to use this command."); } } else if (text[1].ToLower() == "reload") { PlayersDatabase.ReloadSettings(); Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] Database is successfully reloaded!"); } else if (text[1].ToLower() == "save") { PlayersDatabase.Save(); Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] Database is successfully saved!"); } else if (text[1].ToLower() == "dlist") { DA.PagePlayer(player, "Full list of disabled sounds:"); foreach (string s in DisableList) { DA.PagePlayer(player, s); } } else if (text[1].ToLower() == "show") { if (text.Size > 1) { PlayerClass Player = PlayersDatabase.GetPlayer(text[2]); if (Player != null) { Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] Player data of {Player.Name} - Sound: {Player.Sound} | Delay: {Player.Delay}"); } else { Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] Failed to find player {text[2]}"); } } else { DA.PagePlayer(player, $"Usage: {ACmdTriggers.Split('|')[0]} show <player name>"); } } else if (text[1].ToLower() == "help") { Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] {ACmdTriggers.Split('|')[0]} set <player name> <music filename>: Sets or changes players join sound."); Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] {ACmdTriggers.Split('|')[0]} delay <player name> <decimal>: Changes your delay time before join sound will be played."); Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] {ACmdTriggers.Split('|')[0]} remove <player name>: Removes your join sound."); Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] {ACmdTriggers.Split('|')[0]} clear: Clears the player database."); Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] {ACmdTriggers.Split('|')[0]} dlist: Lists all disabled sounds."); Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] {ACmdTriggers.Split('|')[0]} reload: Reloads the player database."); Engine.SendMessagePlayer(player.GameObj, Color.Cyan, $"[Join Sounds] {ACmdTriggers.Split('|')[0]} save: Saves current player datas. This is automatically ran when a value changes."); } } else { DA.PagePlayer(player.GameObj, "You don't have access to use this command."); } return(false); }