Source BOTRADE MuEmu – SSemu

Source BOTRADE MuEmu - SSemu

Bot Trader en Mu Online: Implementación y Funcionalidad

Este código C++ es de un servidor de juego, específicamente de un emulador de Mu Online (como SSEMu o MuEmu). Implementa la funcionalidad de un «Bot Trader» (Bot Comerciante), que permite a los jugadores intercambiar ítems o realizar «mezclas» (similar a una máquina Chaos Box) con un personaje no jugador (NPC) automatizado.


Propósito General del Código

El código define la clase ObjBotTrader que gestiona la creación, configuración y las interacciones de los «Bot Traders» en el juego. Estos bots actúan como NPCs especiales que pueden realizar intercambios de ítems específicos a cambio de otros ítems o moneda del juego (Zen, WCoins, WPoints, GoldPoints). También implementan una mecánica de «mezcla» donde los jugadores entregan ítems y, con una probabilidad de éxito, reciben otros ítems o recuperan ciertos ítems si la mezcla falla.


Source BOTRADE MuEmu - SSemu
Source BOTRADE MuEmu – SSemu

Análisis Detallado de la Clase y Sus Funciones

A continuación, desglosamos las partes más importantes de la clase ObjBotTrader:

Inclusiones (Includes)

Las directivas #include al inicio del archivo indican que este código depende de otras partes del emulador. Algunas importantes son:

  • stdafx.h: Archivo de cabecera precompilado común en proyectos de Visual C++.
  • BotTrade.h: Posiblemente el archivo de cabecera que declara la clase ObjBotTrader y sus estructuras.
  • Monster.h, ItemManager.h, ObjectManager.h, SkillManager.h, EffectManager.h: Proporcionan funciones para interactuar con monstruos, gestionar ítems, objetos (personajes, NPCs), habilidades y efectos.
  • ServerInfo.h, MemScript.h, Util.h: Utilidades del servidor, como lectura de archivos de configuración (MemScript) y funciones de ayuda (Util).
  • CashShop.h, Message.h, Notice.h: Para interactuar con la tienda de ítems por dinero real (Cash Shop), enviar mensajes de chat y avisos a los jugadores.
  • ChaosBox.h, Trade.h, DSProtocol.h: Funcionalidades relacionadas con la Chaos Box, el sistema de intercambio normal y protocolos de comunicación con la base de datos o el servidor de datos.

Variables Globales / Instancias

  • ObjBotTrader BotTrader: Declara una instancia global de la clase ObjBotTrader. Esto significa que solo habrá un objeto BotTrader en todo el servidor, manejando todos los bots comerciales.

Métodos de la Clase ObjBotTrader

  1. int ObjBotTrader::MixNumber(int index)
    • Función: Busca el índice interno de una mezcla en el arreglo this->Mix basándose en el index.
    • Retorno: Devuelve el índice en el arreglo this->Mix si lo encuentra, o -1 si no existe.
  2. void ObjBotTrader::Read(char * FilePath)
    • Función: Carga la configuración de los Bot Traders desde un archivo.
    • Proceso:
      • Elimina cualquier bot existente para recargar la configuración.
      • Inicializa las estructuras de bots y mezclas.
      • Usa CMemScript para leer el archivo línea por línea.

¿Cómo funciona esto en un servidor de Mu Online?

  1. Configuración: Un administrador del servidor edita un archivo de texto donde define a los Bot Traders: sus ubicaciones, apariencia, qué ítems «visten» y las «recetas» de las mezclas que pueden ofrecer.
  2. Inicio del Servidor: Cuando el servidor del juego arranca, la función ObjBotTrader::Read() se ejecuta para cargar toda esta configuración en la memoria.
  3. Interacción del Jugador: Un jugador se acerca a un Bot Trader, interactúa con él y realiza el intercambio de ítems.

 

DESCARGAR

BotTrade.cpp

BotTrade.h

 

stdafx.h

Source BOTRADE MuEmu - SSemu

ServerInfo.cpp

#if(BOTRADE==1)
    BotTrader.Read(gPath.GetFullPath("Custom\\BotSystem\\BotTrader.txt"));
    BotTrader.MakeBot();
#endif

 

Trade.cpp

#if(BOTRADE)
    {
        if (BotTrader.TradeOpen(aIndex, bIndex) == 1)
            return;
    }
#endif
#if(BOTRADE)
    {
        if (BotTrader.IsInTrade(aIndex) == 1 && lpMsg->flag == 1)
        {
            BotTrader.TradeOk(aIndex);
            return;
        }
    }
#endif

 

#if(BOTRADE)
    {
        if (BotTrader.IsInTrade(aIndex) == 1)
        {
            BotTrader.TradeCancel(aIndex);
            return;
        }
    }
#endif

 

Enlaces Internos

Enlaces Externos

  1. Foro de MU Server Files
  2. Grupo de WhatsApp

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *