 |
|

20.02.2021, 21:00
|
|
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами:
3174020
Репутация:
213
|
|
Отключает/Включает воиспроизвидение звука в гта (лишь не дает воиспрозвести новый звук, старые звуки не отключает).
C++:
Код:
void
toggle_sound
(
bool
toggle
)
{
DWORD Protect
=
PAGE_EXECUTE_READWRITE
;
VirtualProtect
(
reinterpret_cast
(
0x4D86B0
)
,
8
,
Protect
,
&
Protect
)
;
memcpy
(
reinterpret_cast
(
0x4D86B0
)
,
(
toggle
?
"\xB8\x00\x00\x00\x00\xC2\x1C\x00"
:
"\x51\x56\x57\x8B\x7C\x24\x10\x66"
)
,
8
)
;
VirtualProtect
(
reinterpret_cast
(
0x4D86B0
)
,
8
,
Protect
,
&
Protect
)
;
}
|
|
|

21.02.2021, 09:31
|
|
Познающий
Регистрация: 30.10.2020
Сообщений: 32
С нами:
2914352
Репутация:
8
|
|
Сообщение от SC6UT
Отключает/Включает воиспроизвидение звука в гта (лишь не дает воиспрозвести новый звук, старые звуки не отключает).
C++:
Код:
void
toggle_sound
(
bool
toggle
)
{
DWORD Protect
=
PAGE_EXECUTE_READWRITE
;
VirtualProtect
(
reinterpret_cast
(
0x4D86B0
)
,
8
,
Protect
,
&
Protect
)
;
memcpy
(
reinterpret_cast
(
0x4D86B0
)
,
(
toggle
?
"\xB8\x00\x00\x00\x00\xC2\x1C\x00"
:
"\x51\x56\x57\x8B\x7C\x24\x10\x66"
)
,
8
)
;
VirtualProtect
(
reinterpret_cast
(
0x4D86B0
)
,
8
,
Protect
,
&
Protect
)
;
}
Unsafe code, VirtualProtect function returns BOOL (using BOOL = int), u should check it out
|
|
|

21.02.2021, 10:57
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от Gunborg Johansson
Unsafe code, VirtualProtect function returns BOOL (using BOOL = int), u should check it out
ok.
Сообщение от Gunborg Johansson
Alternative realization (w/o plugin sdk):
C++:
Код:
void
showCursor
(
bool
state
)
{
using
RwD3D9GetCurrentD3DDevice_t
=
LPDIRECT3DDEVICE9
(
__cdecl
*
)
(
)
;
auto
rwCurrentD3dDevice
{
reinterpret_cast
(
0x7F9D50U
)
(
)
}
;
if
(
nullptr
==
rwCurrentD3dDevice
)
{
return
;
}
static
DWORD
updateMouseProtection
,
rsMouseSetPosProtFirst
,
rsMouseSetPosProtSecond
;
if
(
state
)
{
::
VirtualProtect
(
reinterpret_cast
(
0x53F3C6U
)
,
5U
,
PAGE_EXECUTE_READWRITE
,
&
updateMouseProtection
)
;
::
VirtualProtect
(
reinterpret_cast
(
0x53E9F1U
)
,
5U
,
PAGE_EXECUTE_READWRITE
,
&
rsMouseSetPosProtFirst
)
;
::
VirtualProtect
(
reinterpret_cast
(
0x748A1BU
)
,
5U
,
PAGE_EXECUTE_READWRITE
,
&
rsMouseSetPosProtSecond
)
;
// NOP: CPad::UpdateMouse
*
reinterpret_cast
(
0x53F3C6U
)
=
0xE9U
;
*
reinterpret_cast
(
0x53F3C6U
+
1U
)
=
0x15BU
;
// NOP: RsMouseSetPos
memset
(
reinterpret_cast
(
0x53E9F1U
)
,
0x90
,
5U
)
;
memset
(
reinterpret_cast
(
0x748A1BU
)
,
0x90
,
5U
)
;
rwCurrentD3dDevice
->
ShowCursor
(
TRUE
)
;
}
else
{
// Original: CPad::UpdateMouse
memcpy
(
reinterpret_cast
(
0x53F3C6U
)
,
"\xE8\x95\x6C\x20\x00"
,
5U
)
;
// Original: RsMouseSetPos
memcpy
(
reinterpret_cast
(
0x53E9F1U
)
,
"\xE8\xAA\xAA\x0D\x00"
,
5U
)
;
memcpy
(
reinterpret_cast
(
0x748A1BU
)
,
"\xE8\x80\x0A\xED\xFF"
,
5U
)
;
using
CPad_ClearMouseHistory_t
=
void
(
__cdecl
*
)
(
)
;
using
CPad_UpdatePads_t
=
void
(
__cdecl
*
)
(
)
;
reinterpret_cast
(
0x541BD0U
)
(
)
;
reinterpret_cast
(
0x541DD0U
)
(
)
;
::
VirtualProtect
(
reinterpret_cast
(
0x53F3C6U
)
,
5U
,
updateMouseProtection
,
&
updateMouseProtection
)
;
::
VirtualProtect
(
reinterpret_cast
(
0x53E9F1U
)
,
5U
,
rsMouseSetPosProtFirst
,
&
rsMouseSetPosProtFirst
)
;
::
VirtualProtect
(
reinterpret_cast
(
0x748A1BU
)
,
5U
,
rsMouseSetPosProtSecond
,
&
rsMouseSetPosProtSecond
)
;
rwCurrentD3dDevice
->
ShowCursor
(
FALSE
)
;
}
}
|
|
|

27.03.2021, 03:35
|
|
Участник форума
Регистрация: 03.08.2019
Сообщений: 168
С нами:
3568604
Репутация:
48
|
|
Возвращает координаты прицела на экране (подходит для всех разрешений).
C++:
Код:
void
getCrossHairPos
(
int
&
crosshairPosX
,
int
&
crosshairPosY
)
{
int
iHeight
,
iWidth
;
SF
->
getGame
(
)
->
getScreenResolution
(
&
iWidth
,
&
iHeight
)
;
float
chOff1
=
*
(
float
*
)
0xB6EC10
,
chOff2
=
*
(
float
*
)
0xB6EC14
;
crosshairPosX
=
iWidth
*
chOff2
;
// Координаты прицела по оси Z
crosshairPosY
=
iHeight
*
chOff1
;
// Координаты прицела по оси Y
}
Использование:
С++:
Код:
int
crosshairPosX
,
int
crosshairPosY
getCrossHairPos
(
crosshairPosX
,
crosshairPosY
)
;
|
|
|

09.07.2021, 11:57
|
|
Постоянный
Регистрация: 28.06.2018
Сообщений: 676
С нами:
4145990
Репутация:
118
|
|
0.3.7 R-1
Проверяет, открыт ли чат
C++:
Код:
bool
isChatOpen
(
)
{
return
*
reinterpret_cast
(
*
reinterpret_cast
(
sampAddress
+
0x12E350
)
+
0x3C
)
;
}
Проверяет, открыт ли ScoreBoard(Tab)
C++:
Код:
bool
isScoreBoardOpen
(
)
{
return
*
reinterpret_cast
(
*
reinterpret_cast
(
sampAddress
+
0x21A0B4
)
)
;
}
|
|
|

17.08.2021, 23:02
|
|
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами:
3174020
Репутация:
213
|
|
кусок говнокода позволяющий получать название кнопки по ее айди и наоброт.
keys.h:
Код:
#include
#include
#include
static
const
std
::
unordered_map
g_keysIdToName
{
// letters
{
65
,
"A"
}
,
{
66
,
"B"
}
,
{
67
,
"C"
}
,
{
68
,
"D"
}
,
{
69
,
"E"
}
,
{
70
,
"F"
}
,
{
71
,
"G"
}
,
{
72
,
"H"
}
,
{
73
,
"I"
}
,
{
74
,
"J"
}
,
{
75
,
"K"
}
,
{
76
,
"L"
}
,
{
77
,
"M"
}
,
{
78
,
"N"
}
,
{
79
,
"O"
}
,
{
80
,
"P"
}
,
{
81
,
"Q"
}
,
{
82
,
"R"
}
,
{
83
,
"S"
}
,
{
84
,
"T"
}
,
{
85
,
"U"
}
,
{
86
,
"V"
}
,
{
87
,
"W"
}
,
{
88
,
"X"
}
,
{
89
,
"Y"
}
,
{
90
,
"Z"
}
,
// numbers
{
48
,
"0"
}
,
{
49
,
"1"
}
,
{
50
,
"2"
}
,
{
51
,
"3"
}
,
{
52
,
"4"
}
,
{
53
,
"5"
}
,
{
54
,
"6"
}
,
{
55
,
"7"
}
,
{
56
,
"8"
}
,
{
57
,
"9"
}
,
// f-keys
{
112
,
"F1"
}
,
{
113
,
"F2"
}
,
{
114
,
"F3"
}
,
{
115
,
"F4"
}
,
{
116
,
"F5"
}
,
{
117
,
"F6"
}
,
{
118
,
"F7"
}
,
{
119
,
"F8"
}
,
{
120
,
"F9"
}
,
{
121
,
"F10"
}
,
{
122
,
"F11"
}
,
{
123
,
"F12"
}
,
// numpad
{
96
,
"NUM0"
}
,
{
97
,
"NUM1"
}
,
{
98
,
"NUM2"
}
,
{
99
,
"NUM3"
}
,
{
100
,
"NUM4"
}
,
{
101
,
"NUM5"
}
,
{
102
,
"NUM6"
}
,
{
103
,
"NUM7"
}
,
{
104
,
"NUM8"
}
,
{
105
,
"NUM9"
}
,
// math opers
{
106
,
"*"
}
,
{
107
,
"+"
}
,
{
108
,
"|"
}
,
{
109
,
"-"
}
,
{
110
,
"."
}
,
{
111
,
"/"
}
,
// other
{
19
,
"PAUSE"
}
,
{
35
,
"END"
}
,
{
36
,
"HOME"
}
,
{
45
,
"INSERT"
}
,
{
46
,
"DELETE"
}
,
{
160
,
"LSHIFT"
}
,
{
161
,
"RSHIFT"
}
,
{
162
,
"LCTRL"
}
,
{
163
,
"RCTRL"
}
,
{
164
,
"LALT"
}
,
{
165
,
"RALT"
}
}
;
static
const
std
::
unordered_map
g_keysNameToId
{
// letters
{
"A"
,
65
}
,
{
"B"
,
66
}
,
{
"C"
,
67
}
,
{
"D"
,
68
}
,
{
"E"
,
69
}
,
{
"F"
,
70
}
,
{
"G"
,
71
}
,
{
"H"
,
72
}
,
{
"I"
,
73
}
,
{
"J"
,
74
}
,
{
"K"
,
75
}
,
{
"L"
,
76
}
,
{
"M"
,
77
}
,
{
"N"
,
78
}
,
{
"O"
,
79
}
,
{
"P"
,
80
}
,
{
"Q"
,
81
}
,
{
"R"
,
82
}
,
{
"S"
,
83
}
,
{
"T"
,
84
}
,
{
"U"
,
85
}
,
{
"V"
,
86
}
,
{
"W"
,
87
}
,
{
"X"
,
88
}
,
{
"Y"
,
89
}
,
{
"Z"
,
90
}
,
// numbers
{
"0"
,
48
}
,
{
"1"
,
49
}
,
{
"2"
,
50
}
,
{
"3"
,
51
}
,
{
"4"
,
52
}
,
{
"5"
,
53
}
,
{
"6"
,
54
}
,
{
"7"
,
55
}
,
{
"8"
,
56
}
,
{
"9"
,
57
}
,
// f-keys
{
"F1"
,
112
}
,
{
"F2"
,
113
}
,
{
"F3"
,
114
}
,
{
"F4"
,
115
}
,
{
"F5"
,
116
}
,
{
"F6"
,
117
}
,
{
"F7"
,
118
}
,
{
"F8"
,
119
}
,
{
"F9"
,
120
}
,
{
"F10"
,
121
}
,
{
"F11"
,
122
}
,
{
"F12"
,
123
}
,
// numpad
{
"NUM0"
,
96
}
,
{
"NUM1"
,
97
}
,
{
"NUM2"
,
98
}
,
{
"NUM3"
,
99
}
,
{
"NUM4"
,
100
}
,
{
"NUM5"
,
101
}
,
{
"NUM6"
,
102
}
,
{
"NUM7"
,
103
}
,
{
"NUM8"
,
104
}
,
{
"NUM9"
,
105
}
,
// math opers
{
"*"
,
106
}
,
{
"+"
,
107
}
,
{
"|"
,
108
}
,
{
"-"
,
109
}
,
{
"."
,
110
}
,
{
"/"
,
111
}
,
// other
{
"PAUSE"
,
19
}
,
{
"END"
,
35
}
,
{
"HOME"
,
36
}
,
{
"INSERT"
,
45
}
,
{
"DELETE"
,
46
}
,
{
"LSHIFT"
,
160
}
,
{
"RSHIFT"
,
161
}
,
{
"LCTRL"
,
162
}
,
{
"RCTRL"
,
163
}
,
{
"LALT"
,
164
}
,
{
"RALT"
,
165
}
}
;
|
|
|

22.08.2021, 01:36
|
|
Познавший АНТИЧАТ
Регистрация: 27.11.2020
Сообщений: 1,431
С нами:
2874035
Репутация:
183
|
|
Проверяет активность текст дравов ( sf api crmp )
C++:
Код:
bool
check_textdraw_active
(
)
{
bool
text_draw_active
=
false
;
for
(
int
i
=
0
;
i
getSAMP
(
)
->
getNetGame
(
)
->
pools
->
textdrawPool
->
IsExists
(
i
)
)
text_draw_active
=
true
;
}
return
text_draw_active
;
}
|
|
|

22.08.2021, 05:06
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от Smeruxa
Проверяет активность текст дравов ( sf api crmp )
C++:
Код:
bool
check_textdraw_active
(
)
{
bool
text_draw_active
=
false
;
for
(
int
i
=
0
;
i
getSAMP
(
)
->
getNetGame
(
)
->
pools
->
textdrawPool
->
IsExists
(
i
)
)
text_draw_active
=
true
;
}
return
text_draw_active
;
}
C++:
Код:
bool
check_textdraw_active
(
)
{
for
(
int
i
=
0
;
i
getSAMP
(
)
->
getNetGame
(
)
->
pools
->
textdrawPool
->
IsExists
(
i
)
)
return
true
;
}
return
false
;
}
|
|
|

18.02.2022, 19:10
|
|
Новичок
Регистрация: 03.08.2007
Сообщений: 11
С нами:
9879517
Репутация:
1
|
|
Приведение строки к нижнему регистру, работает как с латиницей так и с кирилицей
C++:
[CODE]
string
LowerString
(
string str
)
{
for
(
int
i
=
0
;
i
=
'A'
&&
str
[
i
]
=
'А'
&&
str
[
i
]
|
|
|

18.02.2022, 19:28
|
|
Постоянный
Регистрация: 14.11.2017
Сообщений: 319
С нами:
4472205
Репутация:
163
|
|
[QUOTE="vegas~"]
Приведение строки к нижнему регистру, работает как с латиницей так и с кирилицей
C++:
[CODE]
string
LowerString
(
string str
)
{
for
(
int
i
=
0
;
i
=
'A'
&&
str
[
i
]
=
'А'
&&
str
[
i
]
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|