Muchas gracias por la guia!
Habia cosas que no podia localizar pero sobretodo con la opcion de revisar el decrecimiento me a facilitado mucho
Pero en el juego, sheltered, no he logrado "capturar" el tiempo,
el tiempo ahi se muestran por minutos, horas y dias,
intente con los minutos y despues con las horas, una cosa a la vez, uso la tecla ESC para poner en pausa el juego
y modifico las direcciones que resultan, tres en cada caso,
pero al quitar la pausa el tiempo sigue corriendo igual y si lo pauso de nuevo, el valor que habia puesto se muestra en el reloj, pero solo mientras esta pausado puesto que al correr el juego todo sigue normal
Mi objetivo es capturar el tiempo para despues hacer que corra mas lento, solo el tiempo, no que vaya mas lento el juego, ya use el speedhack y la funcion de este no es lo que busco,
me ha gustado mucho el juego pero la cuestion del tiempo es que va demasiado rapido a mi gusto
que puedo hacer en ese caso? hay que hacer alguna operacion mas compleja ya que el tiempo no es el usual contador hacia atras?
Hola
Vayamos por partes… Dices que has encontrado la variable del tiempo, logras editarla pero cuando quitas el pause en el juego vuelve a su valor original, verdad? Eso ocurre porque has encontrado la variable que “pinta” o “dibuja” el tiempo en pantalla, pongamos un ejemplo:
Tengo una variable que almacena la vida del jugado, el jugador tiene 100 puntos de vida pero en lugar de almacenar 100 lo que hago es almacenarlo de forma ofuscada, por ejemplo en hexadecimal (64). Luego programo una rutina que me transforme el valor de mi variable de vida (64) a decimal (100) y lo muestro en pantalla, aquí te dejo el código de ejemplo:
Variable varVidaReal
Variable varVidaContador
varVidaReal = 0x64;
varVidaContador = Hex2Dec(varVidaReal)
Call dibujaVidaPantalla(varVidaContador)
Si utilizo el CE y busco el valor de la vida por su número absoluto (decimal = 100) terminaré encontrando la dirección de memoria que apunta a
varVidaContador, editaré ese valor e inmediatamente la función
dibujaVidaPantalla() pintará en la pantalla del juego la vida modificada. En la siguiente interacción,
varVidaContador calculará su valor a partir de
varVidaReal, eliminando tu “hack” y volviendo a pintar el valor real de la vida (100).
Espero que hayas podido entender éste ejemplo, lo que te ocurre en tu juego es exactamente lo mismo, pero con otras variables y funciones. ¿Cómo solucionarlo? No es complicado, pero tampoco es fácil…
Una vez encuentres el valor del tiempo “contador” deberás ver que instrucción escribe en esa dirección, para ello pulsa F5 sobre el address para meter un breakpoint on access, CE te dumpeará todos los opcodes que accedan a la variable contador. Uno de esos opcodes será el que almacene el valor real del tiempo (posiblemente expresado en segundos o milisegundos).
Si tengo tiempo me bajo ese juego e intento hacerlo yo mismo…