Noticias:

SMF - Just Installed!

Menú principal

Source DelayMouseLock Para SSEMu - Muemu

Publicado por Dakosmu, Mayo 02, 2025, 08:07 AM

Tema anterior - Siguiente tema

Dakosmu

Source DelayMouseLock Para SSEMu - Muemu



Creditos
Dakosmu

Estructura General

Inclusiones de Archivos:
#include "stdafx.h"
#include "CBUtil.h"
#include "Util.h"
#include "Interface.h"
#include "Import.h"
#include "Defines.h"
#include "Protect.h"
#include "TMemory.h"
#include "WindowsStruct.h"
#include "UITextInputBox.h"
Estos son archivos de cabecera que probablemente contienen definiciones y declaraciones utilizadas en el código, como funciones y estructuras necesarias para la interfaz gráfica y la manipulación de memoria.

Definición de Variables Globales:
#define WorldTime *(float*)0x5EF5A1C
CBUtil gCBUtil; // Instancia global de CBUtil
WorldTime es un puntero a una dirección de memoria que almacena el tiempo del mundo del juego. 
gCBUtil es una instancia de la clase CBUtil, que parece ser responsable de diversas utilidades para la interfaz.

Constructor de CBUtil
CBUtil::CBUtil() {
    SetOp((LPVOID)0x004D935C, (LPVOID)CBUtil::CheckMouseUse, ASM::CALL);
    // Más llamadas a SetOp...
    this->DelayMouseLock = 0;
    gCBUtil.LockButtonHover = 0;
    gCBUtil.LockScrollMouse = 0;
    this->vCaptcha = this->generateCaptcha(4);
}
SetOp: Esta función se usa para reemplazar la funcionalidad de ciertas direcciones de memoria con la función CheckMouseUse. Esto permite personalizar el comportamiento del mouse en el juego. 
Inicialización: Se inicializan varias variables, incluyendo un captcha generado aleatoriamente.

Métodos de CBUtil
  • CheckMouseUse
bool CBUtil::CheckMouseUse(int ThisA) {
    if (gCBUtil.DelayMouseLock > 0) {
        gCBUtil.DelayMouseLock--;
        return 1;
    }
    return ((bool(__thiscall*)(int ThisA)) 0x00860A60)(ThisA);
}
Este método controla el uso del mouse, implementando un retraso (DelayMouseLock). Si hay un retraso activo, se decrementa y se permite el uso del mouse; de lo contrario, se llama a una función original en la dirección 0x00860A60.

  • DrawFrame
void CBUtil::DrawFrame(DWORD ModelID, float X, float Y, float W, float H, float SourceX, float SourceY, float SourceW, float SourceH, float ScaleW, float ScaleH, bool ScaleUp) {
    // Cálculos para escalar y dibujar un marco basado en los parámetros dados.
    ((void(__cdecl*)(DWORD ModelID, float PosX, float PosY, float Width, float Height, float SourceX, float SourceY, float ScaleX, float ScaleY, bool Scale, bool Arg11, float Arg12)) 0x637C60)(ModelID, X, Y, W, H, SourceX / SourceW, SourceY / SourceH, v1, v2, ScaleUp, 1, 0.0);
}
Dibuja un marco en la pantalla utilizando OpenGL, calculando las escalas necesarias para adaptarse a las dimensiones dadas.

  • DrawText
int CBUtil::DrawText(HFONT font, int PosX, int PosY, DWORD color, DWORD bkcolor, int Width, int Height, BYTE Align, LPCTSTR Text, ...) {
    // Formatea y dibuja texto en la pantalla.
}
Este método se encarga de formatear y dibujar texto en la interfaz. Utiliza vsprintf_s para manejar argumentos variables.

  • MoveWindows
void CBUtil::MoveWindows(int eNumWindow) {
    // Maneja el movimiento de las ventanas en la interfaz.
}
Permite arrastrar ventanas en la interfaz gráfica utilizando el mouse, actualizando su posición según la entrada del usuario.

  • gDrawWindowCustom
bool CBUtil::gDrawWindowCustom(float* StartX, float* StartY, float CuaSoW, float CuaSoH, int eNumWindow, LPCSTR Text, ...) {
    // Dibuja una ventana personalizada con el texto y maneja la interacción del mouse.
}
Dibuja una ventana personalizada en la interfaz, maneja la interacción del mouse y verifica si el cursor está sobre la ventana.

  • generateCaptcha
std::string CBUtil::generateCaptcha(int n) {
    // Genera un captcha aleatorio de longitud n.
}
Crea un captcha aleatorio utilizando números, que puede ser útil para verificar la identidad del usuario.
[/list]

Conclusión
El código en general se centra en la creación y manipulación de la interfaz gráfica de un juego, permitiendo la interacción del usuario a través del mouse y el teclado. Utiliza funciones de bajo nivel para engancharse con el comportamiento original del juego.

Bon Dia

🡱 🡳