Fix C++: Personaje Camina al Hacer Clic en Botones del MuHelper (Click-Through) - Source Mu - Mu Server Files
 

Fix C++: Personaje Camina al Hacer Clic en Botones del MuHelper (Click-Through)

Publicado por Dakosmu, Abr 22, 2026, 06:39 PM

Tema anterior - Siguiente tema

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

Keywords click-through MuHelperpersonaje camina al hacer clicBotones del MuHelperFix C++

Dakosmu

Fix C++: Personaje Camina al Hacer Clic en Botones del MuHelper (Click-Through)

Regístrate para ver el enlace


Aprende a solucionar el molesto error donde tu personaje camina automáticamente al hacer clic en las opciones del MuHelper o interfaces custom. Con este código, bloquearemos el clic en el mapa de forma nativa para que tu interfaz responda perfectamente.

Este problema, conocido en el desarrollo como "Click-through", ocurre porque el cliente detecta el clic en el botón pero no lo "consume", haciendo que el piso 3D del juego también registre la acción y mueva al personaje.

Asegúrate de realizar una copia de seguridad de tu archivo fuente antes de hacer modificaciones en tu entorno de Visual Studio 2022.

Pasos para implementar el Fix:

  • Abre el proyecto de tu cliente (Source) y localiza el archivo CMacroUIEx.cpp.
  • Presiona CTRL+F y busca la función original llamada
    char FixHelperMouseClick(int a1)
  • Elimina esa pequeña función por completo y reemplázala con el siguiente bloque de código optimizado:

char FixHelperMouseClick(int a1)
{
// 1. Si el baúl o la máquina chaos están abiertos, el Helper se ignora
if(gInterface.CheckWindow(ChaosBox) || gInterface.CheckWindow(Warehouse))
return 0;

}


REMPLAZAR POR ESTA


char FixHelperMouseClick(int a1)
{
    // 1. Si el baúl o la máquina chaos están abiertos, el Helper se ignora (comportamiento normal).
    if(gInterface.CheckWindow(ChaosBox) || gInterface.CheckWindow(Warehouse))
        return 0;

    // 2. Ejecutamos la función original PRIMERO. Esto es lo que hace que tu ventana de Config sí se abra.
    char result = pHelperMouseClick(a1);

    // 3. Forzamos el bloqueo del "Click-through".
    // Si el mouse está sobre cualquiera de las zonas de tus botones, devolvemos 1.
    // 1 significa: "El clic chocó con la interfaz, detén el movimiento del personaje".
    if (gInterface.IsWorkZone(ButtonSettings) ||
        gInterface.IsWorkZone(ButtonStart) ||
        gInterface.IsWorkZone(ButtonStop) ||
        gInterface.IsWorkZone(eMenu) ||
        gInterface.IsWorkZone(ButtonStartAttack)) // Agregué el botón de OffHelper por si acaso
    {
        return 1;
    }

    // 4. Si diste clic en cualquier otra parte de la pantalla, devuelve el resultado normal.
    return result;
}



¿Qué hace exactamente este código?
  • Validación IsWorkZone: Comprueba en tiempo real si el puntero del mouse está sobre las coordenadas exactas de tus botones personalizados.
  • Retorno 1: Le indica al motor del juego que la acción del clic ya fue completada por el menú, cancelando la orden de caminar en las coordenadas del suelo.

¡Todo listo! Recompila tu main.exe y ahora podrás abrir la configuración, ver los logs o usar tu Switch Server integrado sin que tu personaje se mueva de su sitio.

¿Pudiste implementarlo correctamente en tus sources Season 3 o 5.2? ¡Deja un comentario aquí en Regístrate para ver el enlace si tienes alguna duda con el código o si necesitas ayuda para añadir las coordenadas de nuevos botones!


Keywords:
Mu Online, fix C++, click-through MuHelper, personaje camina al hacer clic, CMacroUIEx, source Season 3, source 5.2, interfaz custom, muserverfiles, desarrollo Mu Online, solucionar bug clic, programación C+
Bon Dia

RemaMaKiller


🡱 🡳
Real Time Web Analytics