Cambiar Armas en el Evento Chaos Castle de MuOnline Season 6

Cambiar Armas en el Evento Chaos Castle de MuOnline Season 6

En esta publicación, quiero compartir un fragmento de código que permite cambiar las armas durante el evento Chaos Castle en MuOnline Season 6 utilizando Muemu. Este código es útil para quienes desean personalizar la experiencia de juego y mejorar la jugabilidad en este evento tan popular.

Naked(CCDK) {
   static ObjectPreview* gPreview;
   //----
   _asm {
      MOV ECX, DWORD PTR SS : [EBP + 0x08]
      MOV gPreview, ECX
   }
   gPreview->WeaponFirstSlot = ITEM2(0, 22);
   gPreview->WeaponSecondSlot = ITEM2(0, 22);

   // ----
   gPreview->HelmLevel = 15;
   gPreview->ArmorLevel = 15;
   gPreview->PantsLevel = 15;
   gPreview->GlovesLevel = 15;
   gPreview->BootsLevel = 15;
   gPreview->WeaponFirstLevel = 15;
   gPreview->WeaponSecondLevel = 15;
   // ----
   gPreview->HelmExcellent = 1;
   gPreview->ArmorExcellent = 1;
   gPreview->PantsExcellent = 1;
   gPreview->GlovesExcellent = 1;
   gPreview->BootsExcellent = 1;
   gPreview->WeaponFirstExcellent = 1;
   gPreview->WeaponSecondExcellent = 1;
// ----
   _asm {
      MOV ECX, 0x004E675B
      JMP ECX
   }
}

SetRange((LPVOID)0x004E6730, 5, ASM::NOP);
SetOp((LPVOID)0x004E6730, (LPVOID)CCDK, ASM::JMP);

you cant include this code in CustomNPC. main souce.

 

¿Qué Hace Este Código?

El código que voy a explicar se encarga de modificar el equipo del personaje, específicamente las armas y la armadura que se utilizan en el evento. A continuación, detallo cada parte del código:

cpp

Copiar
Naked(CCDK) {
static ObjectPreview* gPreview;
//----
_asm {
MOV ECX, DWORD PTR SS : [EBP + 0x08]
MOV gPreview, ECX
}
  1. Definición de la Función: La función Naked(CCDK) es donde se realiza la modificación. Se utiliza un puntero estático gPreview para acceder a la vista previa del objeto.
  2. Acceso a la Vista Previa: A través de ensamblador (_asm), se obtiene la dirección del objeto que se va a modificar.

cpp

Copiar
gPreview->WeaponFirstSlot = ITEM2(0, 22);
gPreview->WeaponSecondSlot = ITEM2(0, 22);
  1. Cambio de Armas: Aquí se asignan las armas a los primeros y segundos espacios de armas del objeto. En este caso, se establece el mismo ítem (arma) para ambos espacios.

cpp

Copiar
// ----
gPreview->HelmLevel = 15;
gPreview->ArmorLevel = 15;
gPreview->PantsLevel = 15;
gPreview->GlovesLevel = 15;
gPreview->BootsLevel = 15;
gPreview->WeaponFirstLevel = 15;
gPreview->WeaponSecondLevel = 15;
  1. Niveles del Equipo: Se establecen los niveles de todos los elementos de equipo a 15, lo que significa que el personaje estará equipado con artículos de alto nivel.

cpp

Copiar
// ----
gPreview->HelmExcellent = 1;
gPreview->ArmorExcellent = 1;
gPreview->PantsExcellent = 1;
gPreview->GlovesExcellent = 1;
gPreview->BootsExcellent = 1;
gPreview->WeaponFirstExcellent = 1;
gPreview->WeaponSecondExcellent = 1;
  1. Calidad del Equipo: Se marca cada pieza de equipo como «excelente», lo que les otorga propiedades especiales y mejores estadísticas.

cpp

Copiar
// ----
_asm {
MOV ECX, 0x004E675B
JMP ECX
}
}
  1. Finalización de la Función: Se utiliza ensamblador nuevamente para saltar a la dirección específica donde se debe continuar la ejecución del programa.

Configuración de Rango y Operaciones

Además, se configuran rangos y operaciones para asegurarse de que el código se ejecute correctamente:

cpp

Copiar
SetRange((LPVOID)0x004E6730, 5, ASM::NOP);
SetOp((LPVOID)0x004E6730, (LPVOID)CCDK, ASM::JMP);

Esto establece un rango de 5 bytes en la dirección especificada y reemplaza la operación existente con un salto a nuestra función CCDK.

Consideraciones Finales

Es importante mencionar que este código no debe incluirse en el CustomNPC del código fuente principal. Asegúrate de integrarlo correctamente para evitar conflictos.

Espero que este tutorial te sea útil y te ayude a personalizar tu experiencia en MuOnline. ¡No dudes en dejar tus comentarios o preguntas!

Deja un comentario

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