using System; using System.Collections.Generic; using System.Linq; using SnowLight.Game.Sessions; using SnowLight.Communication.Outgoing; using SnowLight.Game.Infobus; using SnowLight.Game.Rooms; using SnowLight.Game.Bots; using SnowLight.Storage; using SnowLight.Game.Achievements; using SnowLight.Util; using System.Text; using SnowLight.Game.Moderation; using System.Data; using MySql.Data.MySqlClient; using SnowLight.Config; using SnowLight.Game.Characters; namespace SnowLight.Game.Misc { public static class ChatCommands { public static bool HandleCommand(Session Session, string Input) { Input = Input.Substring(1, Input.Length - 1); string[] Bits = Input.Split(' '); string[] Params = Input.Split(' '); RoomInstance Instance = RoomManager.GetInstanceByRoomId(Session.CurrentRoomId); RoomActor Actor = (Instance == null ? null : Instance.GetActorByReferenceId(Session.CharacterId)); switch (Bits[0].ToLower()) { case "commands": { if ((int)ConfigManager.GetValue("commands.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { Session.SendData(MessageOfTheDayComposer.Compose("Los comandos para usuarios normales son:\n\n$commands - Muestra esta ventana\n$online - Muestra los usuarios online\n$about - Muestra informacion acerca del emulador\n$pickall - Recoges todos los furnis de tu sala\n$moonwalk - Te permite andar al revés.")); } else { Session.SendData(MessageOfTheDayComposer.Compose("Los comandos para usuarios normales son:\n\n$commands - Muestra esta ventana\n$online - Muestra los usuarios online\n$about - Muestra informacion acerca del emulador\n$pickall - Recoges todos los furnis de tu sala\n$moonwalk - Te permite andar al revés\n\nComandos de los Staffs\n\n$floorwater - Transforma el suelo en agua de forma que todo el mundo se unde como si estubieran en un mar profundo\n$masseffect - Te pones el efecto descrito\n$userinfo - Muestra informacion sobre un usuario\n$drink - Te da la bebida cuyo id hayas escrito\n$offline - Desconectas al usuario escrito\n$transport - Mezcla de $Override y $Teleport\n$cleartiles - Resetea las baldosas Battle de la sala Actual\n$reload_catalog - Recarga el catalogo de forma que mostrará las nuevas categorías y/o furnis añadid@s\n$override - Permite atravesar y andar por cualquier lado\n$clipping - Réplica de $override\n$superkick - Réplica del $offline\n$kick - Kickea a un usuario de una sala\n$roomunmute - Desmutea a una sala entera\n$roommute - Muteas a todos los usuarios de la sala\n$unmute - Desmuteas a un usuario\n$mute - Muteas a un usuario\n$t - Muestra las coordenadas de el usuario en la sala\n$emptyinv - Elimina todos los objetos de tu inventario\n$rank - Permite dar rango a un usuario\n$quitrank - Permite quitar el rango al usuario introducido\n$inforank - Muestra informacion sobre el uso y los datos que han de ser introducidos al usar los comandos $rank y $quitrank\n$useralert - Mandas una alerta a el usuario especificado\n$moveto - Mueves un usuario a donde hayas especificado\n$teleport - Te teletransporta a donde elijas\n$ha - Mandas una alerta a todos los usuario del Hotel\n$halink - Mandas una alerta, que debajo tendra un botón que redireccionara al link descrito\n$anonymateha - Mandas una alerta en la que no aparece quien la envía\n$globalpixels - Mandas un determinado número de píxeles a todos los usuario del hotel\n$globalcredits - Mandas un determinado número de creditos a todos los usuarios del Hotel\n$pixels - Mandas píxeles a un determinado usuario\n$credits - Mandas un determinado número de creditos a un usuario\n$lessglobalcredits - Quitas una cantidad determinada de creditos a todo el hotel\n$lessglobalpixels - Quitas una cantidad determinada de píxeles a todo el hotel\n$lesscredits - Quitas a un usuario una determinada cantidad de créditos\n$lesspixels - Quitas a un usuario una determinada cantidad de píxeles\n$directglobalcredits -> La cantidad de creditos de todos los usuarios del hotel es modificada por la definida anteriormente\n$directglobalpixels -> La cantidad de pixeles de todos los usuarios del hotel es modificada por la definida anteriormente\n$directcredits -> Permite cambiar la cantidad de creditos de el usuario introducido por la escrita anteriormente\n$directpixels -> Permite cambiar la cantidad de pixeles de el usuario introducido por la escrita anteriormente")); } return true; } case "masseffect": { if ((int)ConfigManager.GetValue("masseffect.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } int EffectID; try { if (int.TryParse(Bits[1], out EffectID)) { foreach (Session ses in SessionManager.Sessions.Values) { RoomInstance inst = RoomManager.GetInstanceByRoomId(ses.CurrentRoomId); RoomActor act = (inst == null ? null : inst.GetActorByReferenceId(ses.CharacterId)); act.ApplyEffect(EffectID); ses.CurrentEffect = EffectID; } return true; } } catch (Exception) { Session.SendData(MessageOfTheDayComposer.Compose("El efecto que has introducido no puede ser puesto a toda la sala.\nEs posible que sea debido a alguien con los comandos Teleport/Override/Clipping o que esten sentados/tumbados/sobre algún objeto")); } return false; } case "floorwater": { if ((int)ConfigManager.GetValue("floorwater.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } try { if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } foreach (Session ses in SessionManager.Sessions.Values) { RoomInstance inst = RoomManager.GetInstanceByRoomId(ses.CurrentRoomId); RoomActor act = (inst == null ? null : inst.GetActorByReferenceId(ses.CharacterId)); act.ApplyEffect(28); ses.CurrentEffect = 28; } } catch (Exception) { Session.SendData(MessageOfTheDayComposer.Compose("El suelo no ha podido ser convertido en agua.\nSeguramente sea debido a alguien en una alfombra, sentado o tumbado")); } } return true; case "cleartiles": { if (!Session.HasRight("moderation_tool")) { return false; } using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { Session TargetSession = SessionManager.GetSessionByCharacterId(CharacterResolverCache.GetUidFromName(Actor.Name)); RoomInfo RoomInfo = RoomInfoLoader.GetRoomInfo(TargetSession.CurrentRoomId, true); uint roo = RoomInfo.Id; MySqlClient.ExecuteNonQuery("UPDATE Items SET tile = '0' WHERE room_id LIKE '" + roo + "'"); } } return true; case "userinfo": { if ((int)ConfigManager.GetValue("userinfo.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if (!Session.HasRight("moderation_tool")) { return false; } string Username = UserInputFilter.FilterString(Bits[1].Trim()); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { CharacterInfo Info = CharacterInfoLoader.GetCharacterInfo(MySqlClient, CharacterResolverCache.GetUidFromName(Username)); if (Info == null) { Session.SendData(RoomChatComposer.Compose(Actor.Id, "No se pudo encontrar al usuario " + Username, 0, ChatType.Whisper)); return true; } StringBuilder MessageText = new StringBuilder("User info for user " + Info.Username + ":\n"); MessageText.Append('\n'); MessageText.Append("- ID del usuario: " + Info.Id); MessageText.Append('\n'); MessageText.Append("- Online: " + Info.HasLinkedSession); MessageText.Append('\n'); MessageText.Append("- Nombre: " + Info.Motto); MessageText.Append('\n'); MessageText.Append("- Genero: " + Info.Gender); MessageText.Append('\n'); MessageText.Append("- Creditos: " + Info.CreditsBalance); MessageText.Append('\n'); MessageText.Append("- Pixeles: " + Info.ActivityPointsBalance); MessageText.Append('\n'); MessageText.Append("- Muteado: " + Info.IsMuted); MessageText.Append('\n'); MessageText.Append("- Room count: " + Info.GetRoomCount()); if (Info.HasLinkedSession) { Session TargetSession = SessionManager.GetSessionByCharacterId(CharacterResolverCache.GetUidFromName(Username)); if (TargetSession.CurrentRoomId != 0) { RoomInfo RoomInfo = RoomInfoLoader.GetRoomInfo(TargetSession.CurrentRoomId, true); MessageText.Append('\n'); MessageText.Append("- Está en la sala: " + TargetSession.CurrentRoomId); MessageText.Append('\n'); MessageText.Append('\n'); MessageText.Append("Informacuin de la sala: " + RoomInfo.Name); MessageText.Append('\n'); MessageText.Append("ID de la sala: " + RoomInfo.Id); MessageText.Append('\n'); MessageText.Append("Dueño: " + RoomInfo.OwnerName); MessageText.Append('\n'); MessageText.Append("Usuarios en la sala: " + RoomInfo.CurrentUsers + "/" + RoomInfo.MaxUsers); } } Session.SendData(NotificationMessageComposer.Compose(MessageText.ToString())); } return true; } case "moveto": { if ((int)ConfigManager.GetValue("moveto.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } Session ses = SessionManager.GetSessionByCharacterId(CharacterResolverCache.GetUidFromName(Bits[1])); try { RoomInstance inst = RoomManager.GetInstanceByRoomId(ses.CurrentRoomId); if (inst == null) { Session.SendData(RoomChatComposer.Compose(Actor.Id, "Este usuario no esta en una sala o no está online...", 0, ChatType.Whisper)); return true; } RoomActor act = (inst == null ? null : inst.GetActorByReferenceId(ses.CharacterId)); act.MoveTo(new Specialized.Vector2(int.Parse(Bits[2]), int.Parse(Bits[3]))); } catch(Exception) { Session.SendData(MessageOfTheDayComposer.Compose("No se pudo desplazar al usuario a la posición descrita.")); } return true; } case "teleport": { if ((int)ConfigManager.GetValue("teleport.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } Actor.Teleport = !Actor.Teleport; Actor.ApplyEffect(!Actor.Teleport ? 0 : 59); return true; } case "drink": { if ((int)ConfigManager.GetValue("drink.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } try { Actor.CarryItem(int.Parse(Bits[1]), true); Session.SendData(RoomChatComposer.Compose(Actor.Id, "¡Disfruta tu bebida!", 0, ChatType.Whisper)); } catch (Exception) { Session.SendData(RoomChatComposer.Compose(Actor.Id, "La bebida no existe", 0, ChatType.Whisper)); } return true; } case "online": { if ((int)ConfigManager.GetValue("online.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } List OnlineUsers = SessionManager.ConnectedUserData.Values.ToList(); StringBuilder MessageText = new StringBuilder("En este momento hay " + OnlineUsers.Count + " usuarios online:\n"); foreach (string OnlineUser in OnlineUsers) { MessageText.Append('\n'); MessageText.Append("- " + OnlineUser); } Session.SendData(NotificationMessageComposer.Compose(MessageText.ToString())); return true; } case "moonwalk": { if ((int)ConfigManager.GetValue("moonwalk.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } Actor.WalksBackwards = !Actor.WalksBackwards; Actor.Dance(Actor.WalksBackwards ? 4 : 0); return true; } case "offline": { if ((int)ConfigManager.GetValue("offline.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string Username = UserInputFilter.FilterString(Bits[1].Trim()); Session TargetSession = SessionManager.GetSessionByCharacterId(CharacterResolverCache.GetUidFromName(Username)); if (TargetSession == null || TargetSession.HasRight("moderation_tool") || !TargetSession.InRoom) { Session.SendData(RoomChatComposer.Compose(Actor.Id, "El usuario '" + Username + "' no está conectado o no puede ser kikeado.", 0, ChatType.Whisper)); return true; } SessionManager.StopSession(TargetSession.Id); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { ModerationLogs.LogModerationAction(MySqlClient, Session, "Usuario desconectado por el comando Offline", "Usuario: '" + TargetSession.CharacterInfo.Username + "' (ID: " + TargetSession.CharacterId + ")."); } return true; } case "superkick": { if ((int)ConfigManager.GetValue("superkick.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string Username = UserInputFilter.FilterString(Bits[1].Trim()); Session TargetSession = SessionManager.GetSessionByCharacterId(CharacterResolverCache.GetUidFromName(Username)); if (TargetSession == null || TargetSession.HasRight("moderation_tool") || !TargetSession.InRoom) { Session.SendData(RoomChatComposer.Compose(Actor.Id, "El usuario '" + Username + "' no está conectado o no puede ser kikeado.", 0, ChatType.Whisper)); return true; } SessionManager.StopSession(TargetSession.Id); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { ModerationLogs.LogModerationAction(MySqlClient, Session, "Usuario desconectado por el comando Offline", "Usuario: '" + TargetSession.CharacterInfo.Username + "' (ID: " + TargetSession.CharacterId + ")."); } return true; } case "kick": { if ((int)ConfigManager.GetValue("kick.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if (!Session.HasRight("moderation_tool")) { return false; } string Username = UserInputFilter.FilterString(Bits[1].Trim()); Session TargetSession = SessionManager.GetSessionByCharacterId(CharacterResolverCache.GetUidFromName(Username)); if (TargetSession == null || TargetSession.HasRight("moderation_tool") || !TargetSession.InRoom) { Session.SendData(RoomChatComposer.Compose(Actor.Id, "El usuario '" + Username + "' está desconectado, no está en ninguna sala o no puede ser kickeado.", 0, ChatType.Whisper)); return true; } RoomManager.RemoveUserFromRoom(TargetSession, true); TargetSession.SendData(NotificationMessageComposer.Compose("Has sido kikado por un Admin")); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { ModerationLogs.LogModerationAction(MySqlClient, Session, "Usuario explulsado de una sala con el comando Kick", "Usuario: '" + TargetSession.CharacterInfo.Username + "' (ID: " + TargetSession.CharacterId + ")."); } return true; } case "roomunmute": { if ((int)ConfigManager.GetValue("roomunmute.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if (!Session.HasRight("mute")) { return false; } if (Instance.RoomMuted) { Instance.RoomMuted = false; Session.SendData(RoomChatComposer.Compose(Actor.Id, "La sala a sido desmuteada correctamente.", 0, ChatType.Whisper)); } else { Session.SendData(RoomChatComposer.Compose(Actor.Id, "La sala no ha podido ser desmuteada.", 0, ChatType.Whisper)); } using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { ModerationLogs.LogModerationAction(MySqlClient, Session, "Desmuteda la ", "sala '" + Instance.Info.Name + "' (ID: " + Instance.RoomId + ")"); } return true; } case "roommute": { if ((int)ConfigManager.GetValue("roommute.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if (!Session.HasRight("mute")) { return false; } if (!Instance.RoomMuted) { Instance.RoomMuted = true; Session.SendData(RoomChatComposer.Compose(Actor.Id, "La sala ha sido muteada correctamente.", 0, ChatType.Whisper)); } else { Session.SendData(RoomChatComposer.Compose(Actor.Id, "Esta sala ya esta muteada.", 0, ChatType.Whisper)); } using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { ModerationLogs.LogModerationAction(MySqlClient, Session, "Sala muteada; ", "Sala '" + Instance.Info.Name + "' (ID: " + Instance.RoomId + ")"); } return true; } case "unmute": { if ((int)ConfigManager.GetValue("unmute.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if (!Session.HasRight("mute")) { return false; } string Username = UserInputFilter.FilterString(Bits[1].Trim()); Session TargetSession = SessionManager.GetSessionByCharacterId(CharacterResolverCache.GetUidFromName(Username)); if (TargetSession == null) { Session.SendData(RoomChatComposer.Compose(Actor.Id, "El usuario '" + Username + "' no existe o no esta Online", 0, ChatType.Whisper)); return true; } if (!TargetSession.CharacterInfo.IsMuted) { Session.SendData(RoomChatComposer.Compose(Actor.Id, "EL usuario '" + Username + "' no pudo ser muteado.", 0, ChatType.Whisper)); return true; } using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { TargetSession.CharacterInfo.Unmute(MySqlClient); } TargetSession.SendData(NotificationMessageComposer.Compose("Has sido desmuteado.")); Session.SendData(RoomChatComposer.Compose(Actor.Id, "El usuario '" + Username + "' a sido desmuteado.", 0, ChatType.Whisper)); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { ModerationLogs.LogModerationAction(MySqlClient, Session, "Usuario muteado", "Usuario: '" + TargetSession.CharacterInfo.Username + "' (ID: " + TargetSession.CharacterId + ")."); } return true; } case "mute": { if ((int)ConfigManager.GetValue("mute.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if (!Session.HasRight("mute")) { return false; } string Username = UserInputFilter.FilterString(Bits[1].Trim()); int TimeToMute = 0; if (Bits.Length >= 3) { int.TryParse(Bits[2], out TimeToMute); } if (TimeToMute <= 0) { TimeToMute = 300; } if (TimeToMute > 3600) { Session.SendData(RoomChatComposer.Compose(Actor.Id, "El muteo máximo es de una hora.", 0, ChatType.Whisper)); return true; } Session TargetSession = SessionManager.GetSessionByCharacterId(CharacterResolverCache.GetUidFromName(Username)); if (TargetSession == null || TargetSession.HasRight("mute")) { Session.SendData(RoomChatComposer.Compose(Actor.Id, "El usuario '" + Username + "' no existe, no esta Online o no puede ser muteado.", 0, ChatType.Whisper)); return true; } using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { TargetSession.CharacterInfo.Mute(MySqlClient, TimeToMute); ModerationLogs.LogModerationAction(MySqlClient, Session, "Usuario Muteado", "Usuario: '" + TargetSession.CharacterInfo.Username + "' (ID: " + TargetSession.CharacterId + ") durante " + TimeToMute + " segundos."); } TargetSession.SendData(RoomMutedComposer.Compose(TimeToMute)); Session.SendData(RoomChatComposer.Compose(Actor.Id, "El usuario '" + Username + "' a sido muteado durante " + TimeToMute + " segundos correctamente.", 0, ChatType.Whisper)); return true; } case "transport": if ((int)ConfigManager.GetValue("transport.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } Actor.OverrideClipping = !Actor.OverrideClipping; Actor.ApplyEffect(Actor.ClippingEnabled ? 0 : 4); Actor.Teleport = !Actor.Teleport; return true; case "override": if ((int)ConfigManager.GetValue("override.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } Actor.OverrideClipping = !Actor.OverrideClipping; Actor.ApplyEffect(Actor.ClippingEnabled ? 0 : 23); Session.CurrentEffect = 0; return true; case "clipping": if ((int)ConfigManager.GetValue("clippling.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } Actor.OverrideClipping = !Actor.OverrideClipping; Actor.ApplyEffect(Actor.ClippingEnabled ? 0 : 23); Session.CurrentEffect = 0; return true; case "about": if ((int)ConfigManager.GetValue("about.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } Session.SendData(MessageOfTheDayComposer.Compose("SnowLight V3 by Meth0d and edited by Darkenental and Forex\n\nSnowLight V3 es un emulador desarrollado por Roy(Meth0d) y mejorado/desarrollado por Darkenental y Forex\nCredits to:\nRoy(Meth0d)\nDarkenental\nForex\nNillus\n\nSnowLight V3 CopyLeft & Open Source")); return true; case "t": if ((int)ConfigManager.GetValue("t.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } Session.SendData(NotificationMessageComposer.Compose("Posición: " + Actor.Position.str() + "; Rotación: " + Actor.BodyRotation)); return true; case "emptyinv": if ((int)ConfigManager.GetValue("emptyinv.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } Session.InventoryCache.ClearAndDeleteAll(); Session.SendData(InventoryRefreshComposer.Compose()); Session.SendData(NotificationMessageComposer.Compose("Tu inventario ha sido vaciado correctamente.")); return true; case "inforank": if ((int)ConfigManager.GetValue("inforank.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } Session.SendData(MessageOfTheDayComposer.Compose("Información sobre los comandos $rank y $quitrank:\n\n$rank\nSintaxis:\n$rank \nDa el rango introducido al usuario descrito\nRangos disponibles:\n1 -> Rango de Xpert/Guía\n2 -> VIP\n3 -> Moderador\n4 -> Administrador\n5 -> Dueño, hotel manager\n\n$quitrank\nSintaxis:\n$quitrank \nDetecta y quita el rango del usuario introducido")); return true; case "reload_catalog": { if ((int)ConfigManager.GetValue("update_catalog.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { SnowLight.Game.Catalog.CatalogManager.RefreshCatalogData(MySqlClient); } Session.SendData(NotificationMessageComposer.Compose("Catalog recargado")); return true; } case "createbot": string Username1; string Name; string motto; /* Formulario: $createbot tunombre nombredebot motto */ Username1 = Bits[1].Trim(); Name = Bits[2].Trim(); motto = Bits[3].Trim(); Session TargetSession1 = SessionManager.GetSessionByCharacterId(CharacterResolverCache.GetUidFromName(Username1)); RoomInfo RoomInfo1 = RoomInfoLoader.GetRoomInfo(TargetSession1.CurrentRoomId, true); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.ExecuteNonQuery("INSERT INTO `bots` (`id`, `ai_type`, `name`, `look`, `motto`, `room_id`, `pos_start`, `pos_serve`, `pos_defined_range`, `walk_mode`, `enabled`, `kickable`, `rotation`, `effect`, `response_distance`, `pet_type_handler_id`) VALUES (NULL, 'hom', '" + Name + "', 'cc-3007-62-62.ch-3015-104.hd-3103-1.sh-3035-96.he-3070-93.lg-3023-110.hr-3043-1345', '" + motto + "', '" + RoomInfo1.Id + "', '5|5|0', '6|4|0', '', 'freeroam', '1', '1', '-1', '0', '5', '0')"); } return true; case "quitrank": if ((int)ConfigManager.GetValue("quitrank.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string User2 = Bits[1].Trim(); try{ using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { string ID2 = MySqlClient.ReadString("SELECT `id` FROM `characters` WHERE `username` LIKE '" + User2 + "'"); MySqlClient.ExecuteNonQuery("UPDATE `badges` SET `user_id` = '0' WHERE `user_id` = " + ID2 + " AND `badge_id` = 11"); MySqlClient.ExecuteNonQuery("UPDATE `badges` SET `user_id` = '0' WHERE `user_id` = " + ID2 + " AND `badge_id` = 12"); MySqlClient.ExecuteNonQuery("UPDATE `badges` SET `user_id` = '0' WHERE `user_id` = " + ID2 + " AND `badge_id` = 13"); MySqlClient.ExecuteNonQuery("UPDATE `badges` SET `user_id` = '0' WHERE `user_id` = " + ID2 + " AND `badge_id` = 14"); MySqlClient.ExecuteNonQuery("UPDATE `badges` SET `user_id` = '0' WHERE `user_id` = " + ID2 + " AND `badge_id` = 15"); Session.SendData(MessageOfTheDayComposer.Compose("Felicidades, Le Has quitado el Rango a: " + User2 + "\nNo olvides decir que reinicie")); Console.WriteLine("El Usuario: " + Actor.Name + "; Ha quitado Rango a: " + User2); } } catch(Exception) { Session.SendData(MessageOfTheDayComposer.Compose("El usuario que has introducido no existe.")); } return true; case "rank": if ((int)ConfigManager.GetValue("rank.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string User = Bits[1].Trim(); string rank = Bits[2]; if (rank == "7") { rank = "11"; } if (rank == "1") { rank = "15"; } if (rank == "2") { rank = "14"; } if (rank == "3") { rank = "13"; } if (rank == "4") { rank = "12"; } if (rank == "5") { rank = "11"; } try { using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { string ID = MySqlClient.ReadString("SELECT `id` FROM `characters` WHERE `username` LIKE '" + User + "'"); MySqlClient.ExecuteNonQuery("INSERT INTO `badges` (`id`, `user_id`, `badge_id`, `source_type`, `source_data`, `slot_id`) VALUES ('', '" + ID + "', '" + rank + "', 'static', '', '0')"); Session.SendData(MessageOfTheDayComposer.Compose("Felicidades, Le Has Dado Rango: " + rank + "; a: " + User + ";\n" + Actor.Name + ", no te Ovlides de Decirle que recargue")); Console.WriteLine("El Usuario: " + Actor.Name + "; Ha Dado Rango a: " + User + "; De Nivel: " + rank + ";"); } } catch(Exception) { Session.SendData(MessageOfTheDayComposer.Compose("El usuario escrito no existe.")); } return true; case "ha": if ((int)ConfigManager.GetValue("ha.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string Alert = Input.Substring(3); SessionManager.BroadcastPacket(UserAlertModernComposer.Compose("Noticia importante de los Administradores:", Alert + "\r\n-" + Session.CharacterInfo.Username)); return true; case "halink": if ((int)ConfigManager.GetValue("halink.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string Link = UserInputFilter.FilterString(Bits[1]); string Message = Input.Substring(7); SessionManager.BroadcastPacket(NotificationMessageComposer.Compose(Message, Link)); return true; case "globalpixels": if ((int)ConfigManager.GetValue("globalpixels.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string pixelesg = UserInputFilter.FilterString(Bits[1]); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.ExecuteNonQuery("UPDATE characters SET activity_points_balance = activity_points_balance + " + pixelesg); } return true; case "globalcredits": if ((int)ConfigManager.GetValue("globalcredits.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string creditosg = UserInputFilter.FilterString(Bits[1]); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.ExecuteNonQuery("UPDATE characters SET credits_balance = credits_balance + " + creditosg); } return true; case "pixels": if ((int)ConfigManager.GetValue("pixels.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string usuario = UserInputFilter.FilterString(Bits[1]); string pixeles = UserInputFilter.FilterString(Bits[2]); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.ExecuteNonQuery("UPDATE characters SET activity_points_balance = activity_points_balance + " + pixeles + " WHERE username = '" + usuario + "'"); } return true; case "credits": if ((int)ConfigManager.GetValue("credits.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string usuario2 = UserInputFilter.FilterString(Bits[1]); string creditos = UserInputFilter.FilterString(Bits[2]); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.ExecuteNonQuery("UPDATE characters SET credits_balance = credits_balance + " + creditos + " WHERE username = '" + usuario2 + "'"); } return true; case "lessglobalpixels": if ((int)ConfigManager.GetValue("lessglobalpixels.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string lesspixelesg = UserInputFilter.FilterString(Bits[1]); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.ExecuteNonQuery("UPDATE characters SET activity_points_balance = activity_points_balance - " + lesspixelesg); } return true; case "lessglobalcredits": if ((int)ConfigManager.GetValue("lessglobalcredits.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string lesscreditosg = UserInputFilter.FilterString(Bits[1]); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.ExecuteNonQuery("UPDATE characters SET credits_balance = credits_balance - " + lesscreditosg); } return true; case "lesspixels": if ((int)ConfigManager.GetValue("lesspixels.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string lessusuario = UserInputFilter.FilterString(Bits[1]); string lesspixeles = UserInputFilter.FilterString(Bits[2]); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.ExecuteNonQuery("UPDATE characters SET activity_points_balance = activity_points_balance - " + lesspixeles + " WHERE username = '" + lessusuario + "'"); } return true; case "lesscredits": if ((int)ConfigManager.GetValue("lesscredits.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string lessusuario2 = UserInputFilter.FilterString(Bits[1]); string lesscreditos = UserInputFilter.FilterString(Bits[2]); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.ExecuteNonQuery("UPDATE characters SET credits_balance = credits_balance - " + lesscreditos + " WHERE username = '" + lessusuario2 + "'"); } return true; case "directglobalpixels": if ((int)ConfigManager.GetValue("directglobalpixels.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string directpixelesg = UserInputFilter.FilterString(Bits[1]); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.ExecuteNonQuery("UPDATE characters SET activity_points_balance = " + directpixelesg); } return true; case "directglobalcredits": if ((int)ConfigManager.GetValue("directglobalcredits.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string directcreditosg = UserInputFilter.FilterString(Bits[1]); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.ExecuteNonQuery("UPDATE characters SET credits_balance = " + directcreditosg); } return true; case "directpixels": if ((int)ConfigManager.GetValue("directpixels.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string directusuario = UserInputFilter.FilterString(Bits[1]); string directpixeles = UserInputFilter.FilterString(Bits[2]); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.ExecuteNonQuery("UPDATE characters SET activity_points_balance = " + directpixeles + " WHERE username = '" + directusuario + "'"); } return true; case "directcredits": if ((int)ConfigManager.GetValue("directcredits.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string directusuario2 = UserInputFilter.FilterString(Bits[1]); string directcreditos = UserInputFilter.FilterString(Bits[2]); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { MySqlClient.ExecuteNonQuery("UPDATE characters SET credits_balance = " + directcreditos + " WHERE username = '" + directusuario2 + "'"); } return true; case "anonymateha": if ((int)ConfigManager.GetValue("anonymateha.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if ((int)ConfigManager.GetValue("masseffect.on") == 0) { return false; } string Alert2 = Input.Substring(12); SessionManager.BroadcastPacket(UserAlertModernComposer.Compose("Noticia importante de la Administración", Alert2)); return true; case "pickall": if ((int)ConfigManager.GetValue("pickall.on") == 1) { } else { Session.SendData(MessageOfTheDayComposer.Compose("¡COMANDO DESACTIVADO!")); return false; } if (!Instance.CheckUserRights(Session, true)) { Session.SendData(NotificationMessageComposer.Compose("No tienes permiso para pickallear esta sala.")); return true; } Instance.PickAllToUserInventory(Session); return true; default: { Session.SendData(MessageOfTheDayComposer.Compose("¡¡¡ALERTA!!!\n\nHas introducido un comando inexistente\nPara ver los comandos disponibles, escribe $commands y presiona <>")); } break; } return false; } } }