HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #61  
Старый 20.02.2021, 21:00
sc6ut
Постоянный
Регистрация: 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
)
;
}
 
Ответить с цитированием

  #62  
Старый 21.02.2021, 09:31
Gunborg Johansson
Познающий
Регистрация: 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
 
Ответить с цитированием

  #63  
Старый 21.02.2021, 10:57
kin4stat
Флудер
Регистрация: 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
)
;
}
}

 
Ответить с цитированием

  #64  
Старый 27.03.2021, 03:35
ANZR
Участник форума
Регистрация: 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
)
;
 
Ответить с цитированием

  #65  
Старый 09.07.2021, 11:57
bottom_text
Постоянный
Регистрация: 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
)
)
;
}
 
Ответить с цитированием

  #66  
Старый 17.08.2021, 23:02
sc6ut
Постоянный
Регистрация: 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
}
}
;
 
Ответить с цитированием

  #67  
Старый 22.08.2021, 01:36
Smeruxa
Познавший АНТИЧАТ
Регистрация: 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
;
}
 
Ответить с цитированием

  #68  
Старый 22.08.2021, 05:06
kin4stat
Флудер
Регистрация: 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
;
}
 
Ответить с цитированием

  #69  
Старый 18.02.2022, 19:10
Vegas
Новичок
Регистрация: 03.08.2007
Сообщений: 11
С нами: 9879517

Репутация: 1
По умолчанию

Приведение строки к нижнему регистру, работает как с латиницей так и с кирилицей

C++:





[CODE]
string
LowerString
(
string str
)
{
for
(
int
i
=
0
;
i
=
'A'
&&
str
[
i
]
=
'А'
&&
str
[
i
]

 
Ответить с цитированием

  #70  
Старый 18.02.2022, 19:28
ALF
Постоянный
Регистрация: 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)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.