|
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами:
6438231
Репутация:
133
|
|
Сообщение от gafaskara
1.Как правильно выполнить проверку через if при работает с адресами памяти игры . Просто когда значение должно быть верным и должен выполнится код он не выполнятся . Я написал быстро код который приводит мой пример и описал все что там есть вроде . Типа если денег у меня 100 долларов то вывестись на экран подсказка в игре samp или gta sa типа у вас 100 долларов или что-то такое . А если не 100 то будет раз в 10 сек писаться типа не 100 долларов у вас . Но
проблема в том что когда денег ряльно 100 и даже если через CE ( Чит движок , Чит энерджи , cheat engine ) и поставить там 100 то это один хер не будет работать я уже замучился искать ответ . Спрашивать на форуме и мне там только администратор форума отвечает но он не понимает в чом проблема или не знает почему это так .
Вопрос.CPP:
Код:
#include
#include
#include "main.h"
void
__cdecl
MainThread
(
void
*
pArg
)
{
while
(
true
)
Sleep
(
1
)
;
{
if
(
$
==
100
)
// Проверка на то что $ = 100 и если оно верное ( true ) то выполнится код нижу.
{
Sleep
(
1
)
;
//Задержка 1 мс. Добавил чисто для безопасности шобы не было просадки , ну а вдруг нада .
AddMessageJumpQ
(
"Проверка выполнена и денег 100 . "
,
1500
,
NULL
,
false
)
;
//Выводит подсказку с текстом , ну это стандарт функция)
}
else
{
//Если $ не равна 100 то выполнится этот код ниже .
Sleep
(
10000
)
;
// Задержка 10 Сек.
AddMessageJumpQ
(
"Проверка на то что денег 100 не верно"
,
1500
,
NULL
,
false
)
;
//Выводит подсказку с текстом , ну это стандарт функция)
}
}
}
BOOL WINAPI
DllMain
(
_In_ HINSTANCE hinstDLL
,
_In_ DWORD fdwReason
,
_In_ PVOID lpvReserved
)
{
if
(
fdwReason
==
DLL_PROCESS_ATTACH
)
_beginthread
(
MainThread
,
NULL
,
nullptr
)
;
return
TRUE
;
}
// Проблема в том что когда $ равно в игре 100 но код не выполнятся , вобще хоть функцию хп 0 добавить она не выполнится .
Проблема в коде в том что проверка не проходит даже если оно равно 100 .
main.h:
Код:
DWORD Cped
=
*
(
DWORD
*
)
0xB6F5F0
;
// тут мы прочитали указатель на игрока ну адрес игрока типо .
DWORD $
=
(
Cped
+
0x756
)
;
// а это смещение адреса для денег , мы его прочитали и записали в $ ну или в что-то другое разницы нету вроде ) . Хоть в 1 .
#define FUNC_CMessages__AddMessageJumpQ 0x69F1E0
void
AddMessageJumpQ
(
PCHAR text
,
UINT time
,
USHORT flag
,
bool
bPreviousBrief
)
// Функция показа сообщения на экране.
{
(
(
void
(
__cdecl
*
)
(
PCHAR
,
UINT
,
USHORT
,
bool
)
)
FUNC_CMessages__AddMessageJumpQ
)
(
text
,
time
,
flag
,
bPreviousBrief
)
;
}
0xB7CE50 - [dword] Деньги \\ - пробуй через это
и поменяй название перменной
P.s. а вообще у тебя цикл while постоянно идет
Писал в блокноте , может что то и не так , но суть думаю понятна будет
sad:
Код:
DWORD Cped
=
*
(
DWORD
*
)
0xB6F5F0
;
// тут мы прочитали указатель на игрока ну адрес игрока типо .
DWORD dwMoney
=
(
Cped
+
0x756
)
;
// а это смещение адреса для денег , мы его прочитали и записали в $ ну или в что-то другое разницы нету вроде ) . Хоть в 1 .
#define FUNC_CMessages__AddMessageJumpQ 0x69F1E0
void
AddMessageJumpQ
(
PCHAR text
,
UINT time
,
USHORT flag
,
bool
bPreviousBrief
)
// Функция показа сообщения на экране.
{
(
(
void
(
__cdecl
*
)
(
PCHAR
,
UINT
,
USHORT
,
bool
)
)
FUNC_CMessages__AddMessageJumpQ
)
(
text
,
time
,
flag
,
bPreviousBrief
)
;
}
void
__cdecl
MainThread
(
void
*
pArg
)
{
static
DWORD dwOldMoney
=
0
;
static
bool
_bInit
=
false
;
while
(
true
)
{
if
(
!
_bInit
)
{
dwOldMoney
=
(
Cped
+
0x756
)
;
// Или тот адресс который я кинул выше.
_bInit
=
true
;
}
if
(
dwOldMoney
!=
(
Cped
+
0x756
)
)
{
if
(
$
==
100
)
{
AddMessageJumpQ
(
"Проверка выполнена и денег 100 . "
,
1500
,
NULL
,
false
)
;
dwOldMoney
=
(
Cped
+
0x756
)
;
}
else
{
AddMessageJumpQ
(
"Проверка на то что денег 100 не верно"
,
1500
,
NULL
,
false
)
;
dwOldMoney
=
(
Cped
+
0x756
)
;
}
}
Sleep
(
100
)
;
}
}
|