ADD-ON [COMANDO] Editar Furniture desde el client Automático [PLUSEMU]

  • 7 Respuestas
  • 1082 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

*

Desconectado Distorsion

Primero que todo, feliz año a la comunidad de ForoZone, disculpen mi gran ausencia en este mundo de los hoteles, he estado ocupado con un proyecto nuevo (debbux.es) y asuntos de mi vida personal.

El día de hoy les traigo un comando que desarrollé, la función principal del mismo es editar las características de la furniture de los diferentes items desde el client, sin necesidad de editarlo en la db uno por uno.

¿Cómo funciona el comando?

Debes colocarte encima de uno(O MÁS) furni(s) en tu sala y utilizar el comando respectivo según lo que quieras editar de la furniture de el/los furni(s). Para ver las diferentes opciones de edición debes colocar el siguiente comando :item Utilidad y se mostrará la siguiente lista:


Para actualizar el item solo debes recogerlo y volverlo a poner en la sala o bien refrescar la misma.

Sin mas que decir, les dejo el código desarrollado por mi persona:

Código
using System;
using System.Linq;
using System.Text;
using System.Collections.Generic;

using Plus.Communication.Packets.Outgoing.Moderation;
using Plus.HabboHotel.Items;
using Plus.Communication.Packets.Outgoing.Notifications;
using Plus.Database.Interfaces;
using System.Data;

namespace Plus.HabboHotel.Rooms.Chat.Commands.Moderator
{
    class UpdateFurniture : IChatCommand
    {
        public string PermissionRequired
        {
            get { return "command_furniture"; }
        }


        public string Parameters
        {
            get { return "(tipo) (cantidad)"; }
        }

        public string Description
        {
            get { return "Envia una alerta a todo el hotel."; }
        }
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            RoomUser RUser = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
            List<Item> Items = Room.GetGameMap().GetRoomItemForSquare(RUser.X, RUser.Y);
            if (Params.Length == 1 || Params[1] == "utilidad")
            {
                StringBuilder Lista = new StringBuilder();
                Lista.Append("Lista de usos: (Nota: Edita TODOS los items abajo de ti): \r\r");
                Lista.Append("1) :item width numero (Edita la anchura del Item) \r");
                Lista.Append("2) :item length numero (Edita la longitud del Item) \r");
                Lista.Append("3) :item height numero (Edita la altura del Item) \r");
                Lista.Append("4) :item cansit si/no (Permite / No Permite sentarse sobre el Item) \r");
                Lista.Append("5) :item canwalk si/no (Permite / No Permite caminar sobre el Item) \r");
                Lista.Append("6) :item canstack si/no (Permite / No Permite apilar sobre el Item) \r");
                Lista.Append("7) :item mercadillo si/no (Permite / No Permite la venta del Item en mercadillo) \r");
                Lista.Append("8) :item interaction nombre (Asigna una interacción al Item) \r");
                Lista.Append("9) :item interactioncount numero (Asigna la cantidad de interacciones del Item) \r\r");
                Lista.Append("Nota: Para que se actualice el Item debes recogerlo y ponerlo en la sala nuevamente o refrescar la sala.");
                Session.SendMessage(new MOTDNotificationComposer(Lista.ToString()));
                return;
            }
            String Type = Params[1].ToLower();
            int numeroint = 0, FurnitureID = 0;
            double numerodouble = 0;
            DataRow Item = null;
            String opcion = "";
            switch (Type)
            {
                case "width":
                    {
                        try
                        {
                            numeroint = Convert.ToInt32(Params[2]);
                            foreach (Item IItem in Items.ToList())
                            {
                                if (IItem == null)
                                    continue;
                                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                                {
                                    dbClient.SetQuery("SELECT base_item FROM items WHERE id = '" + IItem.Id + "' LIMIT 1");
                                    Item = dbClient.getRow();
                                    if (Item == null)
                                        continue;
                                    FurnitureID = Convert.ToInt32(Item[0]);
                                    dbClient.RunQuery("UPDATE `furniture` SET `width` = '" + numeroint + "' WHERE `id` = '" + FurnitureID + "' LIMIT 1");
                                }
                                Session.SendWhisper("Anchura del Item: " + FurnitureID + " editada con éxito (Valor de anchura ingresado: "+numeroint.ToString()+")");
                            }
                            PlusEnvironment.GetGame().GetItemManager().Init();
                        }
                        catch (Exception)
                        {
                            Session.SendNotification("Ha ocurrido un error (Ingrese números válidos)");
                        }
                    }
                    break;
                case "length":
                    {
                        try
                        {
                            numeroint = Convert.ToInt32(Params[2]);
                            foreach (Item IItem in Items.ToList())
                            {
                                if (IItem == null)
                                    continue;
                                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                                {
                                    dbClient.SetQuery("SELECT base_item FROM items WHERE id = '" + IItem.Id + "' LIMIT 1");
                                    Item = dbClient.getRow();
                                    if (Item == null)
                                        continue;
                                    FurnitureID = Convert.ToInt32(Item[0]);
                                    dbClient.RunQuery("UPDATE `furniture` SET `length` = '" + numeroint + "' WHERE `id` = '" + FurnitureID + "' LIMIT 1");
                                }
                                Session.SendWhisper("Longitud del Item: " + FurnitureID + " editada con éxito (Valor de longitud ingresado: " + numeroint.ToString() + ")");
                            }
                            PlusEnvironment.GetGame().GetItemManager().Init();
                        }
                        catch (Exception)
                        {
                            Session.SendNotification("Ha ocurrido un error (Ingrese números válidos)");
                        }
                    }
                    break;
                case "height":
                    {
                        try
                        {
                            numerodouble = Convert.ToDouble(Params[2]);
                            foreach (Item IItem in Items.ToList())
                            {
                                if (IItem == null)
                                    continue;
                                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                                {
                                    dbClient.SetQuery("SELECT base_item FROM items WHERE id = '" + IItem.Id + "' LIMIT 1");
                                    Item = dbClient.getRow();
                                    if (Item == null)
                                        continue;
                                    FurnitureID = Convert.ToInt32(Item[0]);
                                    dbClient.RunQuery("UPDATE `furniture` SET `stack_height` = '" + numerodouble + "' WHERE `id` = '" + FurnitureID + "' LIMIT 1");
                                }
                                Session.SendWhisper("Altura del Item: " + FurnitureID + " editada con éxito (Valor de altura ingresado: " + numerodouble.ToString() + ")");
                            }
                            PlusEnvironment.GetGame().GetItemManager().Init();
                        }
                        catch (Exception)
                        {
                            Session.SendNotification("Ha ocurrido un error (Ingrese números válidos)");
                        }
                    }
                    break;
                case "interactioncount":
                    {
                        try
                        {
                            numeroint = Convert.ToInt32(Params[2]);
                            foreach (Item IItem in Items.ToList())
                            {
                                if (IItem == null)
                                    continue;
                                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                                {
                                    dbClient.SetQuery("SELECT base_item FROM items WHERE id = '" + IItem.Id + "' LIMIT 1");
                                    Item = dbClient.getRow();
                                    if (Item == null)
                                        continue;
                                    FurnitureID = Convert.ToInt32(Item[0]);
                                    dbClient.RunQuery("UPDATE `furniture` SET `interaction_modes_count` = '" + numeroint + "' WHERE `id` = '" + FurnitureID + "' LIMIT 1");
                                }
                                Session.SendWhisper("Numero de interacciones del Item: " + FurnitureID + " editado con éxito (Valor ingresado: " + numeroint.ToString() + ")");
                            }
                            PlusEnvironment.GetGame().GetItemManager().Init();
                        }
                        catch (Exception)
                        {
                            Session.SendNotification("Ha ocurrido un error (Ingrese números válidos)");
                        }
                    }
                    break;
                case "cansit":
                    {
                        try
                        {
                            opcion = Params[2].ToLower();
                            if (!opcion.Equals("si") && !opcion.Equals("no"))
                            {
                                Session.SendWhisper("Ingresa una opción valida (si/no)");
                                return;
                            }
                            if (opcion.Equals("si"))
                                opcion = "1";
                            else if (opcion.Equals("no"))
                                opcion = "0";
                            foreach (Item IItem in Items.ToList())
                            {
                                if (IItem == null)
                                    continue;
                                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                                {
                                    dbClient.SetQuery("SELECT base_item FROM items WHERE id = '" + IItem.Id + "' LIMIT 1");
                                    Item = dbClient.getRow();
                                    if (Item == null)
                                        continue;
                                    FurnitureID = Convert.ToInt32(Item[0]);
                                    dbClient.RunQuery("UPDATE `furniture` SET `can_sit` = '" + opcion + "' WHERE `id` = '" + FurnitureID + "' LIMIT 1");
                                }
                                Session.SendWhisper("can_sit del Item: " + FurnitureID + " editado con éxito");
                            }
                            PlusEnvironment.GetGame().GetItemManager().Init();
                        }
                        catch (Exception)
                        {
                            Session.SendNotification("Ha ocurrido un error.");
                        }
                    }
                    break;
                case "canstack":
                    {
                        try
                        {
                            opcion = Params[2].ToLower();
                            if (!opcion.Equals("si") && !opcion.Equals("no"))
                            {
                                Session.SendWhisper("Ingresa una opción valida (si/no)");
                                return;
                            }
                            if (opcion.Equals("si"))
                                opcion = "1";
                            else if (opcion.Equals("no"))
                                opcion = "0";
                            foreach (Item IItem in Items.ToList())
                            {
                                if (IItem == null)
                                    continue;
                                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                                {
                                    dbClient.SetQuery("SELECT base_item FROM items WHERE id = '" + IItem.Id + "' LIMIT 1");
                                    Item = dbClient.getRow();
                                    if (Item == null)
                                        continue;
                                    FurnitureID = Convert.ToInt32(Item[0]);
                                    dbClient.RunQuery("UPDATE `furniture` SET `can_stack` = '" + opcion + "' WHERE `id` = '" + FurnitureID + "' LIMIT 1");
                                }
                                Session.SendWhisper("can_stack del Item: " + FurnitureID + " editado con éxito");
                            }
                            PlusEnvironment.GetGame().GetItemManager().Init();
                        }
                        catch (Exception)
                        {
                            Session.SendNotification("Ha ocurrido un error.");
                        }
                    }
                    break;
                case "canwalk":
                    {
                        try
                        {
                            opcion = Params[2].ToLower();
                            if (!opcion.Equals("si") && !opcion.Equals("no"))
                            {
                                Session.SendWhisper("Ingresa una opción valida (si/no)");
                                return;
                            }
                            if (opcion.Equals("si"))
                                opcion = "1";
                            else if (opcion.Equals("no"))
                                opcion = "0";
                            foreach (Item IItem in Items.ToList())
                            {
                                if (IItem == null)
                                    continue;
                                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                                {
                                    dbClient.SetQuery("SELECT base_item FROM items WHERE id = '" + IItem.Id + "' LIMIT 1");
                                    Item = dbClient.getRow();
                                    if (Item == null)
                                        continue;
                                    FurnitureID = Convert.ToInt32(Item[0]);
                                    dbClient.RunQuery("UPDATE `furniture` SET `is_walkable` = '" + opcion + "' WHERE `id` = '" + FurnitureID + "' LIMIT 1");
                                }
                                Session.SendWhisper("can_walk del Item: " + FurnitureID + " editado con éxito");
                            }
                            PlusEnvironment.GetGame().GetItemManager().Init();
                        }
                        catch (Exception)
                        {
                            Session.SendNotification("Ha ocurrido un error.");
                        }
                    }
                    break;
                case "mercadillo":
                    {
                        try
                        {
                            opcion = Params[2].ToLower();
                            if (!opcion.Equals("si") && !opcion.Equals("no"))
                            {
                                Session.SendWhisper("Ingresa una opción valida (si/no)");
                                return;
                            }
                            if (opcion.Equals("si"))
                                opcion = "1";
                            else if (opcion.Equals("no"))
                                opcion = "0";
                            foreach (Item IItem in Items.ToList())
                            {
                                if (IItem == null)
                                    continue;
                                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                                {
                                    dbClient.SetQuery("SELECT base_item FROM items WHERE id = '" + IItem.Id + "' LIMIT 1");
                                    Item = dbClient.getRow();
                                    if (Item == null)
                                        continue;
                                    FurnitureID = Convert.ToInt32(Item[0]);
                                    dbClient.RunQuery("UPDATE `furniture` SET `is_rare` = '" + opcion + "' WHERE `id` = '" + FurnitureID + "' LIMIT 1");
                                }
                                Session.SendWhisper("Opción de venta en el mercadillo del Item: " + FurnitureID + " editado con éxito");
                            }
                            PlusEnvironment.GetGame().GetItemManager().Init();
                        }
                        catch (Exception)
                        {
                            Session.SendNotification("Ha ocurrido un error.");
                        }
                    }
                    break;
                case "interaction":
                    {
                        try
                        {
                            opcion = Params[2].ToLower();
                            foreach (Item IItem in Items.ToList())
                            {
                                if (IItem == null)
                                    continue;
                                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                                {
                                    dbClient.SetQuery("SELECT base_item FROM items WHERE id = '" + IItem.Id + "' LIMIT 1");
                                    Item = dbClient.getRow();
                                    if (Item == null)
                                        continue;
                                    FurnitureID = Convert.ToInt32(Item[0]);
                                    dbClient.RunQuery("UPDATE `furniture` SET `interaction_type` = '" + opcion + "' WHERE `id` = '" + FurnitureID + "' LIMIT 1");
                                }
                                Session.SendWhisper("Interacción del Item: "+FurnitureID+" editada con éxito. (Valor ingresado: "+opcion+")");
                            }
                            PlusEnvironment.GetGame().GetItemManager().Init();
                        }
                        catch (Exception)
                        {
                            Session.SendNotification("Ha ocurrido un error.");
                        }
                    }
                    break;
                default:
                    {
                        Session.SendNotification("La opción ingrsada no existe, para saber las opciones decir :item utilidad");
                        return;
                    }break;
            }


        }
   }
}





Luego, deben correr el siguiente query en su base de datos:

Spoiler para Oculto:
Código
INSERT INTO `permissions_commands` (`command`, `group_id`, `subscription_id) VALUES ('command_furniture',IDRango, IDSubscription)

Nota: IDRango es el número del rango que podrá utilizar el comando y IDSubscription es el número de la subscripción que deseas que utilice el comando (no recomendable).

Recuerden colocar el comando en CommandManager.cs respectivamente.

Si tienen alguna duda de como subir y asignar el comando dejen su mensaje en este tema.

Ejemplo de uso:

Spoiler para Oculto:
Créditos:

- Yo (Félix Morales / Distorsion)

Saludos.
« Última modificación: Enero 01, 2017, 08:43:03 pm por Distorsion »
Distorsion ~ Desarrollador de InstaServ (Hornet Emulator)


*

Desconectado JuanZkYT

Re:[COMANDO] Editar Furniture desde el client Automático [PLUSEMU]
« Respuesta #1 en: Enero 01, 2017, 08:57:44 pm »
WOW!  <:o
Increible comndo bro!  <3_<3
Gracias, lo usare en mi hotel  :!D
Vivan las Patatas :u

*

Desconectado System

Re:[COMANDO] Editar Furniture desde el client Automático [PLUSEMU]
« Respuesta #2 en: Enero 01, 2017, 10:33:20 pm »
¡Increible, y yo pensando qué erá otro técnico de Debbux! :)

*

Desconectado DoneteRVL

Re:[COMANDO] Editar Furniture desde el client Automático [PLUSEMU]
« Respuesta #3 en: Enero 02, 2017, 02:19:00 pm »
 Este comando nos sera muy util, gracias por traer este fantastico comando  :!D

*

Desconectado Josemy

Re:[COMANDO] Editar Furniture desde el client Automático [PLUSEMU]
« Respuesta #4 en: Enero 02, 2017, 07:53:23 pm »
Comandazo, una idea muy buena si señor. Pero ten cuidado, si lo usais muchos a la vez, puedes causar a llegar a causar mucho lagg con tanta query...

*

Spyro

Re:[COMANDO] Editar Furniture desde el client Automático [PLUSEMU]
« Respuesta #5 en: Enero 02, 2017, 08:19:26 pm »
Excelente comando, me has sorprendido wey  <3_<3

*

Skylake

Re:[COMANDO] Editar Furniture desde el client Automático [PLUSEMU]
« Respuesta #6 en: Enero 17, 2017, 05:01:11 pm »
Lo mas útil que se publicó desde la creación de este foro  <3_<3

*

Desconectado Blex

Re:[COMANDO] Editar Furniture desde el client Automático [PLUSEMU]
« Respuesta #7 en: Enero 17, 2017, 05:38:31 pm »
Simplemente Fantástico, muchas gracias!! saludos amigo
« Última modificación: Enero 17, 2017, 06:52:53 pm por xJosue- »
Loading...

 

Temas relacionados

  Asunto / Iniciado por Respuestas Último mensaje
8 Respuestas
1500 Vistas
Último mensaje Septiembre 17, 2016, 08:08:02 pm
por Ulimos
2 Respuestas
275 Vistas
Último mensaje Mayo 03, 2017, 09:02:08 am
por Redex
4 Respuestas
253 Vistas
Último mensaje Mayo 05, 2017, 08:22:35 pm
por Hackerman
5 Respuestas
319 Vistas
Último mensaje Julio 03, 2017, 09:10:14 pm
por Tony,
12 Respuestas
1501 Vistas
Último mensaje Julio 02, 2018, 10:03:35 pm
por DjAlexander