
23.07.2018, 12:35
|
|
Постоянный
Регистрация: 15.04.2017
Сообщений: 602
С нами:
4778331
Репутация:
63
|
|
Это динамические библиотеки обычные только зависят от сф
|
|
|

24.07.2018, 13:23
|
|
Флудер
Регистрация: 03.08.2016
Сообщений: 2,363
С нами:
5145387
Репутация:
183
|
|
пытаюсь перевести с lua на c++, но чет хуево получается
Lua:
Код:
-- lua code
local
callback
=
ffi
.
cast
(
'void(__thiscall *)(void *_this, char *killer, char *killed, uint32_t clKiller, uint32_t clKilled, uint8_t reason)'
,
hook
)
local
detour_addr
=
tonumber
(
ffi
.
cast
(
'uintptr_t'
,
callback
)
)
local
hook_addr
=
getModuleHandle
(
'samp.dll'
)
+
0x2B2A3B
memory
.
setint8
(
hook_addr
,
0xE8
,
true
)
memory
.
setuint32
(
hook_addr
+
1
,
detour_addr
-
hook_addr
-
5
,
true
)
C++:
Код:
// c++ code
void
(
__thiscall
*
callback
)
(
void
*
,
char
*
,
char
*
,
uint32_t
,
uint32_t
,
uint8_t
)
=
(
void
(
__thiscall
*
)
(
void
*
_this
,
char
*
killer
,
char
*
killed
,
uint32_t
clKiller
,
uint32_t
clKilled
,
uint8_t
reason
)
)
(
hook
)
;
uintptr_t detour_addr
=
(
uintptr_t
)
callback
;
uintptr_t hook_addr
=
(
uintptr_t
)
GetModuleHandleA
(
"samp.dll"
)
+
0x2B2A3B
;
*
reinterpret_cast
(
hook_addr
)
=
(
INT8
)
0xE8
;
*
reinterpret_cast
(
hook_addr
+
1
)
=
detour_addr
-
hook_addr
-
5
;
виснет игра из-за этой строки:
C++:
Код:
*
reinterpret_cast
(
hook_addr
)
=
(
INT8
)
0xE8
;
|
|
|

25.07.2018, 06:48
|
|
Участник форума
Регистрация: 12.07.2013
Сообщений: 161
С нами:
6755146
Репутация:
78
|
|
Сообщение от imring
пытаюсь перевести с lua на c++, но чет хуево получается
Lua:
Код:
-- lua code
local
callback
=
ffi
.
cast
(
'void(__thiscall *)(void *_this, char *killer, char *killed, uint32_t clKiller, uint32_t clKilled, uint8_t reason)'
,
hook
)
local
detour_addr
=
tonumber
(
ffi
.
cast
(
'uintptr_t'
,
callback
)
)
local
hook_addr
=
getModuleHandle
(
'samp.dll'
)
+
0x2B2A3B
memory
.
setint8
(
hook_addr
,
0xE8
,
true
)
memory
.
setuint32
(
hook_addr
+
1
,
detour_addr
-
hook_addr
-
5
,
true
)
C++:
Код:
// c++ code
void
(
__thiscall
*
callback
)
(
void
*
,
char
*
,
char
*
,
uint32_t
,
uint32_t
,
uint8_t
)
=
(
void
(
__thiscall
*
)
(
void
*
_this
,
char
*
killer
,
char
*
killed
,
uint32_t
clKiller
,
uint32_t
clKilled
,
uint8_t
reason
)
)
(
hook
)
;
uintptr_t detour_addr
=
(
uintptr_t
)
callback
;
uintptr_t hook_addr
=
(
uintptr_t
)
GetModuleHandleA
(
"samp.dll"
)
+
0x2B2A3B
;
*
reinterpret_cast
(
hook_addr
)
=
(
INT8
)
0xE8
;
*
reinterpret_cast
(
hook_addr
+
1
)
=
detour_addr
-
hook_addr
-
5
;
виснет игра из-за этой строки:
C++:
Код:
*
reinterpret_cast
(
hook_addr
)
=
(
INT8
)
0xE8
;
Перед записью в память установи права на запись при помощи VirtualProtect, после как закончишь восстанови предыдущие права.
|
|
|

25.07.2018, 00:03
|
|
Участник форума
Регистрация: 02.06.2014
Сообщений: 177
С нами:
6287237
Репутация:
108
|
|
хотел попробовать написать аммохак
в чем проблема? не работает
Код:
Код:
void OnTimer(HWND hwnd, UINT msg, UINT idTimer, DWORD dwTime)
{
if (GetAsyncKeyState(0x2E) & 0x8000) //если нажал на delete
{
DWORD CPED = *(DWORD*)0xB6F5F0; //CPed
DWORD CWeaponSlot = *(DWORD*)(CPED + 0x0718); //CPed.m_cWeaponSlot
DWORD CWeaponSlot1 = *(DWORD*)(CWeaponSlot * 0x1C);
DWORD CWeaponSlots = *(DWORD*)(CPED + 0x5A0); //CPed.m_aclWeaponSlots
DWORD CWeaponState = *(DWORD*)(CWeaponSlots + CWeaponSlot1);
*(DWORD*)(CWeaponState + 0xC) += 40;
}
}
|
|
|

25.07.2018, 21:02
|
|
Познающий
Регистрация: 26.11.2017
Сообщений: 45
С нами:
4453790
Репутация:
8
|
|
Сообщение от hq~
хотел попробовать написать аммохак
в чем проблема? не работает
Код:
Код:
void OnTimer(HWND hwnd, UINT msg, UINT idTimer, DWORD dwTime)
{
if (GetAsyncKeyState(0x2E) & 0x8000) //если нажал на delete
{
DWORD CPED = *(DWORD*)0xB6F5F0; //CPed
DWORD CWeaponSlot = *(DWORD*)(CPED + 0x0718); //CPed.m_cWeaponSlot
DWORD CWeaponSlot1 = *(DWORD*)(CWeaponSlot * 0x1C);
DWORD CWeaponSlots = *(DWORD*)(CPED + 0x5A0); //CPed.m_aclWeaponSlots
DWORD CWeaponState = *(DWORD*)(CWeaponSlots + CWeaponSlot1);
*(DWORD*)(CWeaponState + 0xC) += 40;
}
}
чекни у него видосы, вроде код похожий так что давай
|
|
|

26.07.2018, 12:43
|
|
Участник форума
Регистрация: 17.12.2017
Сообщений: 110
С нами:
4423953
Репутация:
68
|
|
крашит
C++:
Код:
void
narko_usable
(
)
{
char
fmttext
[
13
]
;
int
id
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
sLocalPlayerID
;
stRemotePlayer
*
pPlayer
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
;
int
integer_health
=
(
int
)
pPlayer
->
pPlayerData
->
fActorHealth
;
sprintf
(
fmttext
,
"/usedrugs %d"
,
160
-
integer_health
/
10
)
;
stLocalPlayer
*
player
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
;
player
->
Say
(
fmttext
)
;
timer
=
GetTickCount
(
)
+
60000
;
}
|
|
|

26.07.2018, 12:55
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Ты получаешь с удаленной структуры игрока по айди локального игрока. Так нельзя. У удаленных игроков и локального разные структуры.
|
|
|

26.07.2018, 13:38
|
|
Участник форума
Регистрация: 17.12.2017
Сообщений: 110
С нами:
4423953
Репутация:
68
|
|
покажи как правильно получить
|
|
|

26.07.2018, 13:55
|
|
Постоянный
Регистрация: 28.03.2013
Сообщений: 495
С нами:
6908018
Репутация:
213
|
|
Сообщение от raymondique
покажи как правильно получить
2 варианта:
C++:
Код:
int
integer_health
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
.
byteHealth
;
float
myhp
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
hitpoints
;
|
|
|

26.07.2018, 14:10
|
|
Постоянный
Регистрация: 10.01.2016
Сообщений: 922
С нами:
5441999
Репутация:
133
|
|
PEDSELF->GetHealth()
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|