 |
|

08.02.2016, 22:10
|
|
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами:
5706781
Репутация:
43
|
|
С Vitual Protect крашит еще при загрузке. В остальных случаях текстдравов нет (адрес отвечает за размер текстдравов(?)).
Пробовал так:
C++:
Код:
DWORD some
=
0x00002042
;
*
(
PDWORD
*
)
0x718D14
=
&
some
;
И так:
Код:
Код:
DWORD some = 0x42200000; // 40.0 = 0x42200000 ?
*(PDWORD*)0x718D14 = &some;
И даже так:
Код:
Код:
float some = 40.0;
*(PFLOAT*)0x718D14 = &some;
Вот код Легенд'а: https://www.blast.hk/threads/34/page-153#post-81158
Сообщение от Спойлер
code=cleo]{$CLEO}
{$INCLUDE SF}
0001: wait 0 ms
0662: "by legend2360"
0662: "BlastHack - cheating is art"
0AC6: 0@ = label @font_size offset
0A8C: write_memory 0x0718D14 size 4 value 0@ virtual_protect 1 // записываем новый адрес памяти откуда будет читаться значение
// (gta_sa.exe+318D12 - D8 0D 108A8500 - fmul dword ptr [gta_sa.exe+458A10] | gta_sa.exe+458A10 заменяем на адрес "лейбла")
0A8C: write_memory 0x0858A10 size 4 value 100.0 virtual_protect 1 // Меняем позицию радара
while true
wait 0
end
:font_size // standart
hex
00 00 20 42 // 40.0
end[/code]
[
|
|
|

08.02.2016, 23:32
|
|
Постоянный
Регистрация: 15.12.2013
Сообщений: 412
С нами:
6530249
Репутация:
133
|
|
Сообщение от AW_Rage
С Vitual Protect крашит еще при загрузке. В остальных случаях текстдравов нет (адрес отвечает за размер текстдравов(?)).
Пробовал так:
C++:
Код:
DWORD some
=
0x00002042
;
*
(
PDWORD
*
)
0x718D14
=
&
some
;
И так:
Код:
Код:
DWORD some = 0x42200000; // 40.0 = 0x42200000 ?
*(PDWORD*)0x718D14 = &some;
И даже так:
Код:
Код:
float some = 40.0;
*(PFLOAT*)0x718D14 = &some;
Вот код Легенд'а: https://www.blast.hk/threads/34/page-153#post-81158
CLEO:
Код:
{$CLEO}
{$INCLUDE SF}
0001:
wait
0
ms
0662:
"by legend2360"
0662:
"BlastHack - cheating is art"
0AC6:
0@
= label
@font_size
offset
0A8C:
write_memory
0x0718D14
size
4
value
0@
virtual_protect
1
// записываем новый адрес памяти откуда будет читаться значение
// (gta_sa.exe+318D12 - D8 0D 108A8500 - fmul dword ptr [gta_sa.exe+458A10] | gta_sa.exe+458A10 заменяем на адрес "лейбла")
0A8C:
write_memory
0x0858A10
size
4
value
100.0
virtual_protect
1
// Меняем позицию радара
while
true
wait
0
end
:font_size
// standart
hex
00
00
20
42
// 40.0
end
По нажатию на нумпад 1 изменяет позиию радара на 100.0
*Внимание на объявление RadarPos.
Сообщение от Спойлер
Код:
Код:
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS *SF = new SAMPFUNCS();
float RadarPos = 40.0;
void CALLBACK mainloop()
{
static bool init = false;
if (!init)
{
if (GAME == nullptr)
return;
if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
return;
if (!SF->getSAMP()->IsInitialized())
return;
init = true;
}
if (SF->getGame()->isKeyPressed(0x61))
{
*(DWORD*)(0x0718D14) = (DWORD)&RadarPos;
*(float*)(0x0858A10) = 100.0;
}
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
switch (dwReasonForCall)
{
case DLL_PROCESS_ATTACH:
SF->initPlugin(mainloop, hModule);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
|
|
|

08.02.2016, 23:34
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Сообщение от AW_Rage
С Vitual Protect крашит еще при загрузке. В остальных случаях текстдравов нет (адрес отвечает за размер текстдравов(?)).
Попробуй статическую переменную.
|
|
|

08.02.2016, 23:40
|
|
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами:
5706781
Репутация:
43
|
|
Сообщение от san0
По нажатию на нумпад 1 изменяет позиию радара на 100.0
*Внимание на объявление RadarPos.
Сообщение от Спойлер
Код:
Код:
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS *SF = new SAMPFUNCS();
float RadarPos = 40.0;
void CALLBACK mainloop()
{
static bool init = false;
if (!init)
{
if (GAME == nullptr)
return;
if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
return;
if (!SF->getSAMP()->IsInitialized())
return;
init = true;
}
if (SF->getGame()->isKeyPressed(0x61))
{
*(DWORD*)(0x0718D14) = (DWORD)&RadarPos;
*(float*)(0x0858A10) = 100.0;
}
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
switch (dwReasonForCall)
{
case DLL_PROCESS_ATTACH:
SF->initPlugin(mainloop, hModule);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
Работает. Спасибо! 
|
|
|

10.02.2016, 12:32
|
|
Постоянный
Регистрация: 06.07.2015
Сообщений: 310
С нами:
5712968
Репутация:
63
|
|
Как проверить выстрелил игрок или нет
|
|
|

10.02.2016, 12:41
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Какой именно?
|
|
|

10.02.2016, 12:44
|
|
Постоянный
Регистрация: 06.07.2015
Сообщений: 310
С нами:
5712968
Репутация:
63
|
|
Мой
|
|
|

10.02.2016, 12:47
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Можешь через буллет синхру сделать.
|
|
|

12.02.2016, 02:09
|
|
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами:
5706781
Репутация:
43
|
|
Таймер возможно сделать? Не 0001: wait 5000, а именно таймер.
|
|
|

12.02.2016, 02:21
|
|
Постоянный
Регистрация: 27.12.2014
Сообщений: 550
С нами:
5987262
Репутация:
0
|
|
Сообщение от AW_Rage
Таймер возможно сделать? Не 0001: wait 5000, а именно таймер.
создай новый поток и выполняй код оттуда, тогда сможешь юзать Sleep(задержка); без геймфриза, по моему удобнее.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|