Просмотр полной версии : С/С++ Вопрос - Ответ
twixjr12s
23.09.2019, 20:33
Lua:
[CODE]
function
main
(
)
for
i
=
48
,
57
do
if
isKeyJustPressed
(
i
)
then
if
state
как перенести данное произведение на C++, isKeyPressed не работает в диалоге, GetAsyncState флудит
-raymond-
24.09.2019, 18:09
[QUOTE="twixjr12s"]
Lua:
[CODE]
function
main
(
)
for
i
=
48
,
57
do
if
isKeyJustPressed
(
i
)
then
if
state
C++:
[CODE]
void
checkKey
(
)
{
static
DWORD tick
=
GetTickCount
(
)
;
if
(
tick
-
GetTickCount
(
)
twixjr12s
24.09.2019, 20:37
[QUOTE="raymondique"]
я же ответил, хукни wndprochandler или юзай функцию в потоке
C++:
[CODE]
void
checkKey
(
)
{
static
DWORD tick
=
GetTickCount
(
)
;
if
(
tick
-
GetTickCount
(
)
вообще не работает)
C++:
// 1 способ
bool
CheckPress
(
)
{
static
bool
was_pressed
=
false
;
bool
pressed
=
GetAsyncKeyState
(
key
)
&
0x8000
;
if
(
was_pressed
!=
pressed
)
{
was_pressed
=
pressed
;
if
(
pressed
)
return
true
;
}
return
false
;
}
void
CALLBACK
mainloop
(
)
{
if
(
CheckPress
(
)
)
{
// code
}
// ...
}
C++:
// 2 способ
void
CheckPressThread
(
)
{
bool
was_pressed
=
false
;
while
(
true
)
{
bool
pressed
=
GetAsyncKeyState
(
key
)
&
0x8000
;
if
(
was_pressed
!=
pressed
)
{
was_pressed
=
pressed
;
if
(
pressed
)
{
// code
}
}
Sleep
(
50
)
;
}
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
.
.
.
)
return
;
CreateThread
(
0
,
0
,
(
LPTHREAD_START_ROUTINE
)
&
CheckPressThread
,
0
,
0
,
0
)
;
init
=
true
;
}
}
C++:
// 3 способ
#define GTA_HWND **(HWND**)0xC97C1C
static
WNDPROC g_OriginalWndProc
=
nullptr
;
LRESULT __stdcall
WndProc
(
HWND hWnd
,
UINT msg
,
LPARAM lParam
,
WPARAM wParam
)
{
switch
(
msg
)
{
case
WM_KEYDOWN
:
case
WM_SYSKEYDOWN
:
{
if
(
wParam
==
key
)
{
// code
}
}
break
;
}
return
CallWindowProc
(
g_OriginalWndProc
,
hWnd
,
msg
,
lParam
,
wParam
)
;
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
.
.
.
)
return
;
g_OriginalWndProc
=
SetWindowLongPtrA
(
GTA_HWND
,
GWLP_WNDPROC
,
(
LONG_PTR
)
&
WndProc
)
;
init
=
true
;
}
}
twixjr12s
25.09.2019, 18:44
mainloop
C++:
// 1 способ
bool
CheckPress
(
)
{
static
bool
was_pressed
=
false
;
bool
pressed
=
GetAsyncKeyState
(
key
)
&
0x8000
;
if
(
was_pressed
!=
pressed
)
{
was_pressed
=
pressed
;
if
(
pressed
)
return
true
;
}
return
false
;
}
void
CALLBACK
mainloop
(
)
{
if
(
CheckPress
(
)
)
{
// code
}
// ...
}
C++:
// 2 способ
void
CheckPressThread
(
)
{
bool
was_pressed
=
false
;
while
(
true
)
{
bool
pressed
=
GetAsyncKeyState
(
key
)
&
0x8000
;
if
(
was_pressed
!=
pressed
)
{
was_pressed
=
pressed
;
if
(
pressed
)
{
// code
}
}
Sleep
(
50
)
;
}
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
.
.
.
)
return
;
CreateThread
(
0
,
0
,
(
LPTHREAD_START_ROUTINE
)
&
CheckPressThread
,
0
,
0
,
0
)
;
init
=
true
;
}
}
C++:
// 3 способ
#define GTA_HWND **(HWND**)0xC97C1C
static
WNDPROC g_OriginalWndProc
=
nullptr
;
LRESULT __stdcall
WndProc
(
HWND hWnd
,
UINT msg
,
LPARAM lParam
,
WPARAM wParam
)
{
switch
(
msg
)
{
case
WM_KEYDOWN
:
case
WM_SYSKEYDOWN
:
{
if
(
wParam
==
key
)
{
// code
}
}
break
;
}
return
CallWindowProc
(
g_OriginalWndProc
,
hWnd
,
msg
,
lParam
,
wParam
)
;
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
.
.
.
)
return
;
g_OriginalWndProc
=
SetWindowLongPtrA
(
GTA_HWND
,
GWLP_WNDPROC
,
(
LONG_PTR
)
&
WndProc
)
;
init
=
true
;
}
}
C++:
wchar_t
*
text
=
SF
->
getSAMP
(
)
->
getDialog
(
)
->
GetInputText
(
)
;
if
(
CheckPress
(
49
)
)
{
switch
(
strlen
(
(
char
*
)
SF
->
getSAMP
(
)
->
getDialog
(
)
->
GetInputText
(
)
)
)
{
case
0
:
sprintf
(
result
,
"с"
)
;
break
;
case
1
:
sprintf
(
result
,
"са"
)
;
break
;
case
2
:
sprintf
(
result
,
"сас"
)
;
break
;
case
3
:
sprintf
(
result
,
"саса"
)
;
break
;
case
3
:
sprintf
(
result
,
"сасат"
)
;
break
;
default
:
sprintf
(
result
,
"сасать"
)
;
break
;
}
SF
->
getSAMP
(
)
->
getDialog
(
)
->
SetInputText
(
result
)
;
}
else
SF
->
getSAMP
(
)
->
getDialog
(
)
->
SetInputText
(
(
char
*
)
text
)
;
Застревает на первой букве, я понимаю что это из-за этой строчки SF->getSAMP()->getDialog()->SetInputText((char*)text), но не знаю чем заменить
C++:
wchar_t
*
text
=
SF
->
getSAMP
(
)
->
getDialog
(
)
->
GetInputText
(
)
;
if
(
CheckPress
(
49
)
)
{
switch
(
strlen
(
(
char
*
)
SF
->
getSAMP
(
)
->
getDialog
(
)
->
GetInputText
(
)
)
)
{
case
0
:
sprintf
(
result
,
"с"
)
;
break
;
case
1
:
sprintf
(
result
,
"са"
)
;
break
;
case
2
:
sprintf
(
result
,
"сас"
)
;
break
;
case
3
:
sprintf
(
result
,
"саса"
)
;
break
;
case
3
:
sprintf
(
result
,
"сасат"
)
;
break
;
default
:
sprintf
(
result
,
"сасать"
)
;
break
;
}
SF
->
getSAMP
(
)
->
getDialog
(
)
->
SetInputText
(
result
)
;
}
else
SF
->
getSAMP
(
)
->
getDialog
(
)
->
SetInputText
(
(
char
*
)
text
)
;
Застревает на первой букве, я понимаю что это из-за этой строчки SF->getSAMP()->getDialog()->SetInputText((char*)text), но не знаю чем заменить
Попробуй использовать getDialog()->pText вместо Get/SetInputText
Ошибка пикрелейтед, sf-plugin. Возникает от случая к случаю. Обычно после 10-20 минут работы цикла в отдельном потоке. Раскрыть код, увы, не могу. Могу лишь подчеркнуть, что это обычный бесконечный цикл, в котором вызываются некоторые функции. Есть ли какие-нибудь решения этого недоразумения, за исключением переноса цикла в мэйнлуп?
https://i.imgur.com/lkFaptM.png
rraggerr
26.09.2019, 13:00
Ошибка пикрелейтед, sf-plugin. Возникает от случая к случаю. Обычно после 10-20 минут работы цикла в отдельном потоке. Раскрыть код, увы, не могу. Могу лишь подчеркнуть, что это обычный бесконечный цикл, в котором вызываются некоторые функции. Есть ли какие-нибудь решения этого недоразумения, за исключением переноса цикла в мэйнлуп?
https://i.imgur.com/lkFaptM.png
Через сампфункс нельзя создавать потоки вообще, колхозь с таймерами
Ошибка пикрелейтед, sf-plugin. Возникает от случая к случаю. Обычно после 10-20 минут работы цикла в отдельном потоке. Раскрыть код, увы, не могу. Могу лишь подчеркнуть, что это обычный бесконечный цикл, в котором вызываются некоторые функции. Есть ли какие-нибудь решения этого недоразумения, за исключением переноса цикла в мэйнлуп?
https://i.imgur.com/lkFaptM.png
Ты создаёшь поток в mainloop? Если да, то это не лучший вариант, создавай его в DLL_PROCESS_ATTACH
Ты создаёшь поток в mainloop? Если да, то это не лучший вариант, создавай его в DLL_PROCESS_ATTACH
в теле команды. спасибо, буду пробовать.
twixjr12s
26.09.2019, 14:49
Предлагаю использовать wcslen вместо strlen, дать нормальную нумерацию кейсам и убрать последнюю строчку кода. Не вижу в ней смысла.
смысл в том чтобы заблокировать ввод своего текста
Попробуй использовать getDialog()->pText вместо Get/SetInputText
pText получает текст диалога, нужно получать input (введённый текст)
1.Как правильно выполнить проверку через if при работает с адресами памяти игры . Просто когда значение должно быть верным и должен выполнится код он не выполнятся . Я написал быстро код который приводит мой пример и описал все что там есть вроде . Типа если денег у меня 100 долларов то вывестись на экран подсказка в игре samp или gta sa типа у вас 100 долларов или что-то такое . А если не 100 то будет раз в 10 сек писаться типа не 100 долларов у вас . Но
проблема в том что когда денег ряльно 100 и даже если через CE ( Чит движок , Чит энерджи , cheat engine ) и поставить там 100 то это один хер не будет работать я уже замучился искать ответ . Спрашивать на форуме и мне там только администратор форума отвечает но он не понимает в чом проблема или не знает почему это так .
Если что я просто пример пример , это не адрес денег а адрес хер пойми чего ))) . Типа он равен 80 но его можно поменять через CE на 100 и один хер не чего не случится . И значение не будет обратно прыгать оно равно таму значению которое записал хоть 1 оно будет равно 1 всю игру . Это так к слову . Просто записал рандом адрес из моей фонотеки.
Вопрос.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 ZZZ
=
(
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
)
;
}
iAmerican
28.09.2019, 20:02
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
)
;
}
}
twixjr12s
28.09.2019, 20:26
Как производить отладку SF скриптов через x32dbg?
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
)
;
}
}
Неа , 0 эмоции . Я если что в том коде который кидал там есть пару косяков и недочетов . Но смысл вроде я донес . По логике цикл бесконечный лаги не вызывает у меня и работает стабильно . И по логике если цикл бесконечный то он проверяет всегда эту = или нет ( я про if ) , мне просто не понятно почему при считывании из памяти игры и потом проверки это значения толку 0 . Я хотел это реализовать типа проверку координат игрока и потом уже выполнение кода типа если ровно то это а если нет то будет то-то выполнено , а когда я вроде проверяю и значение одинаковы толку 0 . Я даже ставил промежуток между этими значениями типа проверку между 1 и 4 ( типа если равно 1 или 2 или 3 или 4) то код выполнится но нет . Ну у меня были предположение что иза того что значение флоат и типа оно плавает ( проще говоря с точкой ) то тогда можно же выполнить проверку денег и если оно верно то вывести на экран но и это тоже не хочет . Типа сама проблема в том что у меня не получается сделать проверку значения из адреса памяти ( if как будто его не читает ) . Код который ты дал я поправил ( там был старый мой косяк , указатели были не все заменены ) и вгрызся в игру ( заинжектил) то не чего не показало ( там должно было высветится типа подсказки ) . Потом поставив через CE значение на 100 и там и там и поменяв на 1-4 байт то толку не было ( менял для того что-бы убедится что точно не работает ) .
CleanLegend
29.09.2019, 08:29
1.Как правильно выполнить проверку через if при работает с адресами памяти игры .
Попробуй так.
C++:
0xB7CE50
-
адрес денег
if
(
*
(
DWORD
*
)
0xB7CE50
==
100
)
Еще можешь использовать вот этот плагин для логирований значений - https://blast.hk/threads/22179/
twixjr12s
29.09.2019, 10:10
как сделать shadow by pass? как я понял в ShadowPlay можно не записывать рабочий стол и скрипт запускается от имени explorer'a или самого shadowplay, no kak?
Попробуй так.
C++:
0xB7CE50
-
адрес денег
if
(
*
(
DWORD
*
)
0xB7CE50
==
100
)
Еще можешь использовать вот этот плагин для логирования значений - https://blast.hk/threads/22179/
2.Cпасибо заработало , лайк поставил . А не подскажешь как можно еще реализовать это с 1-2 смещениями ? ( смещения адреса памяти )
CleanLegend
29.09.2019, 16:56
2.Cпасибо заработало , лайк поставил . А не подскажешь как можно еще реализовать это с 1-2 смещениями ? ( смещения адреса памяти )
Вопрос.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
)
;
//Выводит подсказку с текстом , ну это стандарт функция)
}
}
}
main.h:
DWORD Cped
=
*
(
DWORD
*
)
0xB6F5F0
;
// тут мы прочитали указатель на игрока ну адрес игрока типо .
DWORD ZZZ
=
(
Cped
+
0x756
)
;
// а это смещение адреса для денег , мы его прочитали и записали в $ ну или в что-то другое разницы нету вроде ) . Хоть в 1 .
Выше в коде ты передаешь не адрес, а значение, получается $ у тебя имеет константу, которая задается один раз при инициализации, а при инициализации игры она скорее всего 0.
Можно сделать сразу так:
C++:
if
(
*
(
DWORD
*
)
(
0xB6F5F0
+
0x756
)
==
100
)
Либо передать указатель и потом его использовать из свое переменной:
C++:
DWORD
*
money
=
(
DWORD
*
)
(
0xB6F5F0
+
0x756
)
if
(
(
DWORD
*
)
money
==
100
)
Выше в коде ты передаешь не адрес, а значение, получается $ у тебя имеет константу, которая задается один раз при инициализации, а при инициализации игры она скорее всего 0.
Можно сделать сразу так:
C++:
if
(
*
(
DWORD
*
)
(
0xB6F5F0
+
0x756
)
==
100
)
Либо передать указатель и потом его использовать из свое переменной:
C++:
DWORD
*
money
=
(
DWORD
*
)
(
0xB6F5F0
+
0x756
)
if
(
(
DWORD
*
)
money
==
100
)
Вроде написал все верно , проверил но почему значение не верное (( не true) код уходит всегда на else ). Написал без указателей .
Отрывок кода.cpp:
#include
// тут мы подгрузили инелуиды для работы всего что ниже есть .
#include
// тут мы подгрузили инелуиды для работы всего что ниже есть .
#include "main.h"
// в main.h лежит сама функция (внутрености я хз как называются )-AddMessageJumpQ
#define VK_Z 0x5A
// Индификатор для красоты что-бы конпка VK_Z была красивее а не прросто 0x5A , и понятно будет что это конпка Z
void
__cdecl
MainThread
(
void
*
pArg
)
// cтандарт
{
while
(
true
)
{
//тут цикл бесконечный (лагов нет)
if
(
GetAsyncKeyState
(
VK_CONTROL
)
&&
GetAsyncKeyState
(
VK_Z
)
)
{
// проверка на то что нажата кнопки CTR и Z
if
(
*
(
float
*
)
(
(
(
0xB6F5F0
)
+
0x14
)
+
0x30
)
==
1903.640259f
)
{
// там я написал float а DWORD это 4 байт вроде как и он не подходит в моем случаее.
AddMessageJumpQ
(
"VERNO"
,
1500
,
NULL
,
false
)
;
// Функция вывода подсказки или субритров если их так можно называть в самом сампе
Sleep
(
100
)
;
// зажерка а дальше все ясно , я так подумал вы и так все знаете ))))))).
}
else
{
AddMessageJumpQ
(
"NE-ROBIT-IDI-DUMAI"
,
1500
,
NULL
,
false
)
;
Sleep
(
100
)
;
}
}
}
}
BOOL WINAPI
DllMain
(
_In_ HINSTANCE hinstDLL
,
_In_ DWORD fdwReason
,
_In_ PVOID lpvReserved
)
{
if
(
fdwReason
==
DLL_PROCESS_ATTACH
)
_beginthread
(
MainThread
,
NULL
,
nullptr
)
;
return
TRUE
;
}
(я комментарии к коду пишу , если не надо то не буду больше . )
По логике все должно работать но почему то не хочет . И если я тебя понял если оно равно 0 при запуске игры и вить там цикл идет оно его всегда чекает каждый раз без остановки ( ну если не добавить проверка на клавиши ) или я вообще не понял того что ты сказал , но как мне кажется понял .
И насчет того asi плагина , не понимаю как он работает но при запуске сампа не чего не появляться или как мне кажется его надо в сингле юзать ?
CleanLegend
29.09.2019, 21:32
Вроде написал все верно , проверил но почему значение не верное (( не true) код уходит всегда на else ). Написал без указателей .
Отрывок кода.cpp:
if
(
*
(
float
*
)
(
(
(
0xB6F5F0
)
+
0x14
)
+
0x30
)
==
1903.640259f
)
{
// там я написал float а DWORD это 4 байт вроде как и он не подходит в моем случаее.
ты делаешь просто смещение, а надо через указатель. координаты находятся в матрице по указателю:
C++:
DWORD
*
CPED
=
(
DWORD
*
)
0xB6F5F0
;
// передаем адрес в наш указатель
DWORD
*
pMtrx
=
(
DWORD
*
)
(
(
*
CPED
)
+
0x14
)
;
//получаем указатель по адресу со смещением и также передаем его
float
*
PosX
=
(
float
*
)
(
(
*
pMtrx
)
+
0x30
)
;
if
(
*
PosX
==
1000.0f
)
в собейте есть структура актора - https://github.com/BlastHackNet/mod_s0beit_sa-1/blob/master/src/cheat.h#L412
структура base_object имеет начало структура с координатами с этими смещениями - https://github.com/BlastHackNet/mod_s0beit_sa-1/blob/master/src/cheat.h#L347
+0x14(20 в десятичной) это выход на матрицу
использовать так:
C++:
actor_struct
*
pGTA_Ped
=
(
actor_struct
*
)
0xB6F5F0
float
PosX
=
pGTA_Ped
->
base
.
matrix
[
12
]
ты делаешь просто смещение, а надо через указатель. координаты находятся в матрице по указателю:
C++:
DWORD
*
CPED
=
(
DWORD
*
)
0xB6F5F0
;
// передаем адрес в наш указатель
DWORD
*
pMtrx
=
(
DWORD
*
)
(
(
*
CPED
)
+
0x14
)
;
//получаем указатель по адресу со смещением и также передаем его
float
*
PosX
=
(
float
*
)
(
(
*
pMtrx
)
+
0x30
)
;
if
(
*
PosX
==
1000.0f
)
в собейте есть структура актора - https://github.com/BlastHackNet/mod_s0beit_sa-1/blob/master/src/cheat.h#L412
структура base_object имеет начало структура с координатами с этими смещениями - https://github.com/BlastHackNet/mod_s0beit_sa-1/blob/master/src/cheat.h#L347
+0x14(20 в десятичной) это выход на матрицу
использовать так:
C++:
actor_struct
*
pGTA_Ped
=
(
actor_struct
*
)
0xB6F5F0
float
PosX
=
pGTA_Ped
->
base
.
matrix
[
12
]
Спасибо , Просто я думал если я могу добавить к этому указателю += 1 ( пример) то все работало ну я и думал что если так работает значит и в if будет работать . Спасибо еще раз , не кто не мог помочь и описать и рассказать как ты )) , кого спрашивал либо игнорили либо говорили типа хз , ну или ряльно не знали . Как я понял в эту тему эффективнее писать чем просто создавать тему и там задавать вопрос . Лайк поставил .
Dark_Knight
29.09.2019, 22:44
Вроде написал все верно , проверил но почему значение не верное (( не true) код уходит всегда на else ). Написал без указателей .
Лучше используй std::thread;
Накидаю для примера.
C++:
[CODE]
#include
#include
#include
#include
#include
using
namespace
std
;
void
func
(
mutex
&
mut
,
string
&
text
)
{
mut
.
lock
(
)
;
for
(
int
i
=
0
;
i
[QUOTE="Dark_Knight"]
Лучше используй std::thread;
Накидаю для примера.
C++:
[CODE]
#include
#include
#include
#include
#include
using
namespace
std
;
void
func
(
mutex
&
mut
,
string
&
text
)
{
mut
.
lock
(
)
;
for
(
int
i
=
0
;
i
Dark_Knight
29.09.2019, 23:32
По мне так то лучше )) . Я просто не знаю чем это лучше .
C STL куда удобней работать. Твой код более сишный, чем цппшный
C STL куда удобней работать.
в больших проектах
Dark_Knight
30.09.2019, 00:55
в больших проектах
Мое мнение, что к хорошему и простому лучше приучатся сначала
#include (https://www.blast.hk/redirect/aHR0cHM6Ly92ay5jb20vaW0_c2VsPTQyMTE0MjI5MyZzdD0lMj NpbmNsdWRl)
#include (https://www.blast.hk/redirect/aHR0cHM6Ly92ay5jb20vaW0_c2VsPTQyMTE0MjI5MyZzdD0lMj NpbmNsdWRl)
using namespace std;
void main();
{
setlocale(LC_ALL, "RUS");
int a, b, c;
b = 2019;
cout « "Введите год рождения»\n";
Cin » a;
c == b - a;
cout«"Ваш возраст »"«c;
}
почему не работает? ошибки на инклуды
#include (https://www.blast.hk/redirect/aHR0cHM6Ly92ay5jb20vaW0_c2VsPTQyMTE0MjI5MyZzdD0lMj NpbmNsdWRl)
#include (https://www.blast.hk/redirect/aHR0cHM6Ly92ay5jb20vaW0_c2VsPTQyMTE0MjI5MyZzdD0lMj NpbmNsdWRl)
using namespace std;
void main();
{
setlocale(LC_ALL, "RUS");
int a, b, c;
b = 2019;
cout « "Введите год рождения»\n";
Cin » a;
c == b - a;
cout«"Ваш возраст »"«c;
}
почему не работает? ошибки на инклуды
c = b - a;
c = b - a;
Там ошибки на нклуды идут, типа их нету.
Можешь дать свой вк еще?
1:19: fatal error: conio.h: No such file or directory
compilation terminated.
Там ошибки на нклуды идут, типа их нету.
Можешь дать свой вк еще?
убери из инклудов conio.h, не нужно и его походу нету в стандарте, но это не точно, насчет вк сорян не сижу там давно, в 2021 или 2020 разблокируют
убери из инклудов conio.h, не нужно и его походу нету в стандарте, но это не точно, насчет вк сорян не сижу там давно, в 2021 или 2020 разблокируют
6:11: error: '::main' must return 'int'
7:1: error: expected unqualified-id before '{' token
теперь такое
6:11: error: '::main' must return 'int'
7:1: error: expected unqualified-id before '{' token
теперь такое
убери кавычки после void main()
замени void на int и в конце функции return 0;
убери кавычки после void main()
замени void на int и в конце функции return 0;
Не получается чёт, можешь дать дс или чёт другое? ответить в личке на бх.
7:1: error: expected unqualified-id before '{' to
Код:
#include
using namespace std;
int main();
{
setlocale(LC_ALL, "RUS");
int a, b, c;
b = 2019;
cout « "Введите год рождения»\n";
Cin » a;
c = b - a;
cout«"Ваш возраст »"«c;
return 0;
}
_getch();
@Stiopko (https://www.blast.hk/members/185191/)
Не получается чёт, можешь дать дс или чёт другое? ответить в личке на бх.
7:1: error: expected unqualified-id before '{' to
Код:
#include
using namespace std;
int main();
{
setlocale(LC_ALL, "RUS");
int a, b, c;
b = 2019;
cout « "Введите год рождения»\n";
Cin » a;
c = b - a;
cout«"Ваш возраст »"«c;
return 0;
}
_getch();
@Stiopko (https://www.blast.hk/members/185191/)
убери кавычки после int main()
убери кавычки после int main()
7:1: error: stray '\302' in program
7:1: error: stray '\253' in program
8:1: error: stray '\302' in program
8:1: error: stray '\273' in program
10:1: error: stray '\302' in program
10:1: error: stray '\253' in program
10:1: error: stray '\302' in program
10:1: error: stray '\253' in program
7:1: error: stray '\302' in program
7:1: error: stray '\253' in program
8:1: error: stray '\302' in program
8:1: error: stray '\273' in program
10:1: error: stray '\302' in program
10:1: error: stray '\253' in program
10:1: error: stray '\302' in program
10:1: error: stray '\253' in program
смотри
int main(); - есть кавычки
int main() - нету кавычек
смотри
int main(); - есть кавычки
int main() - нету кавычек
убрал
убрал
маладец, скинь код пожалуйста
маладец, скинь код пожалуйста
Код:
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
int a, b, c;
b = 2019;
cout « "Введите год рождения»\n";
Cin » a;
c = b - a;
cout«"Ваш возраст »"«c;
return 0;
}
_getch();
_getch();
УБЕРИ
и поставь после
cout«"Ваш возраст »"«c;
УБЕРИ
и поставь после
cout«"Ваш возраст »"«c;
In function 'int main()':
10:9: error: expected ';' before string constant
10:53: warning: statement has no effect [-Wunused-value]
11:1: error: 'Cin' was not declared in this scope
13:7: error: expected ';' before string constant
13:36: warning: statement has no effect [-Wunused-value]
14:8: error: '_getch' was not declared in this scope
Код:
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
int a, b, c;
b = 2019;
cout « "Введите год рождения»\n";
Cin » a;
c = b - a;
cout«"Ваш возраст »"«c;
_getch();
return 0;
}
10:53: warning: statement has no effect [-Wunused-value]
11:1: error: 'Cin' was not declared in this scope
13:7: error: expected ';' before string constant
13:36: warning: statement has no effect [-Wunused-value]
код, пожалуйста
код, пожалуйста
в прошлом сообщении всё кинул, еще больше ошибок стало
в прошлом сообщении всё кинул, еще больше ошибок стало
Код:
[CODE]
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
int a, b, c;
b = 2019;
cout > a;
c = b - a;
cout
не проверял, но должно работать
Советую подучить хотя бы основы синтаксиса.
[QUOTE="Stiopko"]
Код:
[CODE]
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
int a, b, c;
b = 2019;
cout > a;
c = b - a;
cout
ты делаешь просто смещение, а надо через указатель. координаты находятся в матрице по указателю:
C++:
DWORD
*
CPED
=
(
DWORD
*
)
0xB6F5F0
;
// передаем адрес в наш указатель
DWORD
*
pMtrx
=
(
DWORD
*
)
(
(
*
CPED
)
+
0x14
)
;
//получаем указатель по адресу со смещением и также передаем его
float
*
PosX
=
(
float
*
)
(
(
*
pMtrx
)
+
0x30
)
;
if
(
*
PosX
==
1000.0f
)
в собейте есть структура актора - https://github.com/BlastHackNet/mod_s0beit_sa-1/blob/master/src/cheat.h#L412
структура base_object имеет начало структура с координатами с этими смещениями - https://github.com/BlastHackNet/mod_s0beit_sa-1/blob/master/src/cheat.h#L347
+0x14(20 в десятичной) это выход на матрицу
использовать так:
C++:
actor_struct
*
pGTA_Ped
=
(
actor_struct
*
)
0xB6F5F0
float
PosX
=
pGTA_Ped
->
base
.
matrix
[
12
]
А если адрес с dll. (samp.dll+38A88C) то нужно сначала как-то прочитать dll файл и потом к нему прибавлять смещение ? И если не сложно подскажи как читать dll. файлы для памяти , просто в первые с таким столкнулся искал через CE разные плюшки и нашел координаты метки на карте а они получились в таком виде ).
Не то действие, тут нужно что бы от Б отнимало А и получало С а тут отнимает 2019 раз
Все, ну на***, заебал, иди в пизду
c = b - a;
ОТ ББББ отнемаем АААААААААААА а ЗАПИСЫВАЕМ В ССССССССССССука, это переменная такая
Все, ну на***, заебал, иди в пизду
c = b - a;
ОТ ББББ отнемаем АААААААААААА а ЗАПИСЫВАЕМ В ССССССССССССука, это переменная такая
Да оно не записывает C, Работает до момента c = b -a; дальше не выводит ответ.
Да оно не записывает C, Работает до момента c = b -a; дальше не выводит ответ.
Проблема в тебе, а код рабочий.
Проблема в тебе, а код рабочий.
Я ваще не шарю, в шкалке задали это я хз как делать.
Я ваще не шарю, в шкалке задали это я хз как делать.
[QUOTE="Stiopko"]
Код:
[CODE]
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
int a, b, c;
b = 2019;
cout > a;
c = b - a;
cout
Не работает
https://forum.antichat.xyz/attachments/27405740/
Не работает
код верный, используй другой компилятор
CleanLegend
01.10.2019, 08:10
А если адрес с dll. (samp.dll+38A88C) то нужно сначала как-то прочитать dll файл и потом к нему прибавлять смещение ? И если не сложно подскажи как читать dll. файлы для памяти , просто в первые с таким столкнулся искал через CE разные плюшки и нашел координаты метки на карте а они получились в таком виде ).
C++:
DWORD adr
=
GetModuleHandle
(
"samp.dll"
)
+
0x12345
Carrentine
01.10.2019, 09:57
Не работает
ты пишешь в раздел для помощи где помогают в основном по DLL а не по EXE
C++:
if
(
GetAsyncKeyState
(
0x39
)
)
{
//Code
while
(
GetAsyncKeyState
(
0x39
)
)
Sleep
(
100
)
;
}
нахуя тут слип
ты пишешь в раздел для помощи где помогают в основном по DLL а не по EXE
нахуя тут слип
это общий раздел с++, да и разница с длл и exe не велика, не неси ***ни
Carrentine
01.10.2019, 10:07
это общий раздел с++, да и разница с длл и exe не велика, не неси ***ни
я сказал в основном.
в EXE мы работаем со своим процессом, а в DLL с чужим.
форум в основном посвещен GTA:SAMP, т.е соответственно работа с чужим процессом 😀
C++:
DWORD adr
=
GetModuleHandle
(
"samp.dll"
)
+
0x12345
Если ее юзать то выдает ошибку - значение типа "HMODULE" нельзя использовать для инициализации сущности типа "DWORD" .
Отрывок из main.h:
float* KZ = (float*)(("samp.dll") + 0x38A888);
= так тоже не хочет , и если вроде как прочитать тоже не получатся .
Если ее юзать то выдает ошибку - значение типа "HMODULE" нельзя использовать для инициализации сущности типа "DWORD" .
Отрывок из main.h:
float* KZ = (float*)(("samp.dll") + 0x38A888);
= так тоже не хочет , и если вроде как прочитать тоже не получатся .
C++:
DWORD dwSamp
=
(
DWORD
)
GetModuleHandle
(
L
"samp.dll"
)
;
DWORD var
=
(
DWORD
)
(
dwSamp
+
0x000
)
;
0xNull_Dll
08.10.2019, 21:40
Слушайте, такое дело:
Есть кастомный самп клиент, там оффсеты другие (луашные методы, связанные с сампом там не работают)
Нужно как-то ловить функцию SetPlayerHealth (0x15BA0) и игнорировать её посредством чтения памяти, а не какими-либо готовыми функциями sampfuncs'a или луа.
Как это можно сделать?
Как я понял, сначала нужно взять хэндл dll'а сампа
GetModuleHandle(L"samp.dll");
И к этому значению прибавить 0x15BA0?
Как это вообще работает?
Dark_Knight
08.10.2019, 22:21
Советую уйти в RakPeer и RakClient хуки. ПО твоей теме пару страниц назад уже был подобный вопрос.
_=Gigant=_
08.10.2019, 22:23
are there any tutorials on how to find this SAMP_CMP "F8036A004050518D4C24" ?
are there any tutorials on how to find this SAMP_CMP "F8036A004050518D4C24" ?
Слушайте, такое дело:
Есть кастомный самп клиент, там оффсеты другие (луашные методы, связанные с сампом там не работают)
Нужно как-то ловить функцию SetPlayerHealth (0x15BA0) и игнорировать её посредством чтения памяти, а не какими-либо готовыми функциями sampfuncs'a или луа.
Как это можно сделать?
Как я понял, сначала нужно взять хэндл dll'а сампа
GetModuleHandle(L"samp.dll");
И к этому значению прибавить 0x15BA0?
Как это вообще работает?
Как вариант, в Cheat Engine поставить брейкпоинт на запись в адрес здоровья игрока, заставить сервер вызвать SetPlayerHealth, найти место где устанавливается хп, это и будет функция SetPlayerHealth. Для нопа функции в ее начале установить байты C2 04 00
Помомогите пожалуйста с опредением загруженого модуля(сф плагина) в гташку?
Так как название файла сф плагина можна пожно изменить я написал функцию которая по идее должна определять загружен ли плагин в игру или нет, название плагина CMDHelper.sf
я хотел делать так если в памяти выделенной под модуль есть определенная строка то это тот модуль который мне нужен, но не не работает
C++:
#define CMDHELPER_CHECK 0x172C8
HANDLE CmdEdit
::
CheckCMDHelperHANDLE
(
)
{
static
const
char
*
checkStr
=
"{FFA0661D}[blast.hk] {FFFFFF}CMD helper by {FFA0661D}MISTER_GONWIK"
;
HANDLE hProcess
;
HMODULE hMods
[
1024
]
;
DWORD cbNeeded
;
hProcess
=
GetCurrentProcess
(
)
;
if
(
NULL
==
hProcess
)
return
NULL
;
HMODULE ret
=
NULL
;
if
(
K32EnumProcessModules
(
hProcess
,
hMods
,
sizeof
(
hMods
)
,
&
cbNeeded
)
!=
NULL
)
{
DWORD dwProt
;
MODULEINFO module_info
;
MEMORY_BASIC_INFORMATION mem_info
;
TCHAR szModName
[
MAX_PATH
]
;
DWORD base
;
for
(
int
i
=
0
;
i
CMDHELPER_CHECK
+
strlen
(
checkStr
)
+
1
)
{
if
(
VirtualQuery
(
(
void
*
)
(
base
+
CMDHELPER_CHECK
)
,
&
mem_info
,
sizeof
(
mem_info
)
)
!=
NULL
)
{
if
(
mem_info
.
Protect
==
PAGE_READONLY
&&
(
DWORD
)
mem_info
.
AllocationBase
+
mem_info
.
RegionSize
>
base
+
CMDHELPER_CHECK
+
strlen
(
checkStr
)
+
1
)
{
if
(
!
strcmp
(
(
const
char
*
)
(
hMods
[
i
]
+
CMDHELPER_CHECK
)
,
checkStr
)
)
ret
=
hMods
[
i
]
;
else
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"INC STR %s"
,
szModName
)
;
}
}
else
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"ERR %s (0x%08X) %u"
,
szModName
,
hMods
[
i
]
,
GetLastError
(
)
)
;
}
}
}
CloseHandle
(
hProcess
)
;
return
ret
;
}
Dark_Knight
14.10.2019, 00:30
Я что-то не понял. Что ты конкретно хочешь сделать?
Я что-то не понял. Что ты конкретно хочешь сделать?
я хочу определить загружен ли в игру определенный плагин, но не по его названию а по его внутренностям, ну типа плагин+оффсет и по этому адресу должна быть определенная строчка если это так, то плагин загружен
я хочу определить загружен ли в игру определенный плагин, но не по его названию а по его внутренностям, ну типа плагин+оффсет и по этому адресу должна быть определенная строчка если это так, то плагин загружен
Нихуя ты выдал, мне даже интересно стало для чего ?🙃
Нихуя ты выдал, мне даже интересно стало для чего ?🙃
Ну CMDHelper популярный плагин, у меня в плагине есть функция подмены главного символа команды типа / на что-то другое например на #, если я заменяю на # то CMDHelper перестает подсказывать доступные команды, я нашел адрес для патча плагина, теперь нужно только определить загружен он или нет)
Carrentine
14.10.2019, 00:58
Помомогите пожалуйста с опредением загруженого модуля(сф плагина) в гташку?
Так как название файла сф плагина можна пожно изменить я написал функцию которая по идее должна определять загружен ли плагин в игру или нет, название плагина CMDHelper.sf
я хотел делать так если в памяти выделенной под модуль есть определенная строка то это тот модуль который мне нужен, но не не работает
C++:
#define CMDHELPER_CHECK 0x172C8
HANDLE CmdEdit
::
CheckCMDHelperHANDLE
(
)
{
static
const
char
*
checkStr
=
"{FFA0661D}[blast.hk] {FFFFFF}CMD helper by {FFA0661D}MISTER_GONWIK"
;
HANDLE hProcess
;
HMODULE hMods
[
1024
]
;
DWORD cbNeeded
;
hProcess
=
GetCurrentProcess
(
)
;
if
(
NULL
==
hProcess
)
return
NULL
;
HMODULE ret
=
NULL
;
if
(
K32EnumProcessModules
(
hProcess
,
hMods
,
sizeof
(
hMods
)
,
&
cbNeeded
)
!=
NULL
)
{
DWORD dwProt
;
MODULEINFO module_info
;
MEMORY_BASIC_INFORMATION mem_info
;
TCHAR szModName
[
MAX_PATH
]
;
DWORD base
;
for
(
int
i
=
0
;
i
CMDHELPER_CHECK
+
strlen
(
checkStr
)
+
1
)
{
if
(
VirtualQuery
(
(
void
*
)
(
base
+
CMDHELPER_CHECK
)
,
&
mem_info
,
sizeof
(
mem_info
)
)
!=
NULL
)
{
if
(
mem_info
.
Protect
==
PAGE_READONLY
&&
(
DWORD
)
mem_info
.
AllocationBase
+
mem_info
.
RegionSize
>
base
+
CMDHELPER_CHECK
+
strlen
(
checkStr
)
+
1
)
{
if
(
!
strcmp
(
(
const
char
*
)
(
hMods
[
i
]
+
CMDHELPER_CHECK
)
,
checkStr
)
)
ret
=
hMods
[
i
]
;
else
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"INC STR %s"
,
szModName
)
;
}
}
else
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"ERR %s (0x%08X) %u"
,
szModName
,
hMods
[
i
]
,
GetLastError
(
)
)
;
}
}
}
CloseHandle
(
hProcess
)
;
return
ret
;
}
Нихуя не понял, но очень интересно.
Roger571
14.10.2019, 10:32
Ну CMDHelper популярный плагин, у меня в плагине есть функция подмены главного символа команды типа / на что-то другое например на #, если я заменяю на # то CMDHelper перестает подсказывать доступные команды, я нашел адрес для патча плагина, теперь нужно только определить загружен он или нет)
Определяй не по строке, а по массиву байт. Пример можешь посмотреть в собейте, там так детектится версия сампа
Каким способом лучше всего проверять директорию плагина? Как извлечь расширение файла из строки? Нуждаюсь в самых лучших способах
Как из исходника сделать длл?
Открыть .sln файл с собрать проект
Каким способом лучше всего проверять директорию плагина? Как извлечь расширение файла из строки? Нуждаюсь в самых лучших способах
найти плагины в папке? если я правильно понял, то вот
C++:
#include
#include
namespace
fs
=
std
::
filesystem
;
std
::
vector
FindFiles
(
)
{
std
::
vector
vFiles
;
for
(
auto
p
:
fs
::
directory_iterator
(
fs
::
current_path
(
)
.
string
(
)
.
append
(
"\\SAMPFUNCS"
)
)
)
{
if
(
!
is_regular_file
(
p
.
status
(
)
)
)
continue
;
auto
strExtension
=
p
.
path
(
)
.
extension
(
)
.
string
(
)
;
std
::
transform
(
strExtension
.
begin
(
)
,
strExtension
.
end
(
)
,
strExtension
.
begin
(
)
,
[
]
(
BYTE c
)
{
return
std
::
tolower
(
c
)
;
}
)
;
if
(
!
strExtension
.
compare
(
".sf"
)
)
vFiles
.
push_back
(
p
.
path
(
)
.
filename
(
)
.
string
(
)
)
;
}
return
vFiles
;
}
ребят есть у кого getproccessbyid, вставлять char, получать int?
ребят есть у кого getproccessbyid, вставлять char, получать int?
C++:
DWORD
GetPID
(
char
*
window
)
{
HWND idf
=
FindWindowA
(
NULL
,
window
)
;
DWORD pid
;
return
GetWindowThreadProcessId
(
idf
,
&
pid
)
;
}
ну попробуй
blessave
17.10.2019, 15:33
биндер с настройкой клавиш, через ини файл
биндер с настройкой клавиш, через ини файл
И что?
Dark_Knight
17.10.2019, 23:11
есть исходник dll, как его скомпилить в дебаге(visual studio). Желательно видео
Выбрать в отладке "запуск без отладки"
https://forum.antichat.xyz/attachments/27413106/
NOOBPAndA
18.10.2019, 20:08
С АХК можно перейти на С++?
С АХК можно перейти на С++?
Все можно
Dark_Knight
18.10.2019, 22:06
С АХК можно перейти на С++?
Нужно.
Как узнать адрес импортируемой функции в чужом процессе?
Здравствуйте, может кто подсказать как будут выглядеть эти функции на C++
Lua:
memory
.
setuint8
-- to c++
memory
.
fill
-- to c++
memory
.
tostring
-- to c++
traceattack
22.10.2019, 17:31
Здравствуйте, может кто подсказать как будут выглядеть эти функции на C++
Lua:
memory
.
setuint8
-- to c++
memory
.
fill
-- to c++
memory
.
tostring
-- to c++
В луа особо не шарю , но по аналогии должно быть
1) *(DWORD *)ТвойАдрес = Твое Значение;
2) memset
3) string * str = (string *)Твой Адрес;
speed_min, speed_max = string.match(memory.tostring(0x00C71780, 12, false), "(%d+)[^%d]+(%d+)")
на плюсах как будет выглядить?
regex
ReganRomov
22.10.2019, 23:43
Вопрос! Как эта функця будет выглядеть на плюсах?
speed_min, speed_max = string.match(memory.tostring(0x00C71780, 12, false), "(%d+)[^%d]+(%d+)")
Dark_Knight
23.10.2019, 01:29
Что ты вообще хочешь сделать? Откуда ты такой адрес взял? Ты уверен что он статичный? И чего у тебя в коде для speed_min и speed_max один и тот же адрес?
checkdasound
23.10.2019, 18:35
Есть меню имгуи, где много чекбоксов, которые не умещаются в одно окно и надо листать вниз. Можно ли сделать так, чтобы чекбоксы автоматически переносились, когда доходили до границы меню или хотя-бы разделить по столбцам как-то?
_=Gigant=_
24.10.2019, 01:05
Есть меню имгуи, где много чекбоксов, которые не умещаются в одно окно и надо листать вниз. Можно ли сделать так, чтобы чекбоксы автоматически переносились, когда доходили до границы меню или хотя-бы разделить по столбцам как-то?
int menu = 1;
BeginChild;
switch(menu)
{
case 1:
Checkbox(...) //1
break;
case 2:
Checkbox(...) //2
break;
default:
menu = 1;
break;
}
EndChild;
if imgui.button "menu 2"
if menu != 2
menu = 2;
pretlant
26.10.2019, 22:41
Нужно написать программу на C++, которая бы имитировала движение игрока (бег вперёд, спринт, прыжок).
Я пробовал использовать функции keybd_event(...), но никак не помогает. По факту нажатие передается, но персонаж ествественным образом не бежит.
Господа, как в ++ используется - sampSendDialogResponse(lua)?
nt_qwark
27.10.2019, 22:37
В луа особо не шарю , но по аналогии должно быть
1) *(DWORD *)ТвойАдрес = Твое Значение;
2) memset
3) string * str = (string *)Твой Адрес;
а чё за
int AlmostMain ( int argc, char ** argv )
{
int C = 2019;
//C++;
size_t _( &C != &C );
for(;C&(_=(_?_
Как sleep() сделать в цикле, просто когда юзаю sleep игра зависает...
traceattack
28.10.2019, 19:56
Как sleep() сделать в цикле, просто когда юзаю sleep игра зависает...
Новый поток создай и в нем уже используй sleep
[QUOTE="ForHax"]
а чё за
int AlmostMain ( int argc, char ** argv )
{
int C = 2019;
//C++;
size_t _( &C != &C );
for(;C&(_=(_?_
Возможно ли определить примерные координаты прицеливания игрока?
@Adder (https://www.blast.hk/members/11531/) aim sync читай
Всем привет 👋
Есть нужда в создании плагина, который бы запускался на всех последних версиях SAMP, а значит возможность написания SF плагина сразу отпадает. Собственно, в C++ я новичок, можно сказать, но всё равно попытался всё сделать сам - ничего не получилось, по итогам тестирования было установлено, что игра офигевает от происходящего и крашится. Мои цели в данный момент достаточно простые - заставить ASI плагин выводить сообщение в чат после инициализации SAMP'a.
Пожалуйста, не нужно советовать различные ASI Framework - это не то, что мне нужно. Помогите разобраться с тем, как это работает в идеале, пожалуйста.
main.cpp:
#include "main.h"
void
MainThread
(
)
{
do
{
samp
.
dwModule
=
(
DWORD
)
GetModuleHandle
(
L
"samp.dll"
)
;
}
while
(
!
samp
.
dwModule
)
;
do
{
Sleep
(
1
)
;
}
while
(
IsSampInit
(
)
!=
TRUE
)
;
Sleep
(
2500
)
;
AddChatMessage
(
"Hello world!"
)
;
}
BOOL WINAPI
DllMain
(
HINSTANCE hModule
,
DWORD dwReason
,
LPVOID lpReserved
)
{
switch
(
dwReason
)
{
case
DLL_PROCESS_ATTACH
:
{
DisableThreadLibraryCalls
(
hModule
)
;
_beginthread
(
(
_beginthread_proc_type
)
MainThread
,
NULL
,
NULL
)
;
break
;
}
}
}
main.h:
#pragma once
#include
#include
#include
#include
#include
struct
SAMPStruct
{
DWORD dwModule
;
}
samp
;
struct
SAMPOffsets
{
DWORD registerClientCommand
=
0x65AC0
;
DWORD addChatMessage
=
0x64520
;
}
offset
;
bool
IsSampInit
(
)
{
return
(
(
bool
(
__thiscall
*
)
(
)
)
(
samp
.
dwModule
+
0x9BF70
)
)
(
)
;
}
void
RegisterChatCommand
(
const
char
*
command
,
void
*
function
)
{
(
(
void
(
__thiscall
*
)
(
DWORD str
,
const
char
*
cmd
,
void
*
func
)
)
(
samp
.
dwModule
+
offset
.
registerClientCommand
)
)
(
*
(
DWORD
*
)
(
samp
.
dwModule
+
0x21A0E8
)
,
command
,
function
)
;
}
void
AddChatMessage
(
const
char
*
message
)
{
(
(
void
(
__thiscall
*
)
(
DWORD str
,
const
char
*
text
)
)
(
samp
.
dwModule
+
offset
.
addChatMessage
)
)
(
*
(
DWORD
*
)
(
samp
.
dwModule
+
0x21A0E4
)
,
message
)
;
}
Warning!Указатели, находящиеся в моём коде неправильные. Всё, что они Вам дадут - краш игры.
Roger571
01.11.2019, 18:23
Всем привет 👋
Есть нужда в создании плагина, который бы запускался на всех последних версиях SAMP, а значит возможность написания SF плагина сразу отпадает. Собственно, в C++ я новичок, можно сказать, но всё равно попытался всё сделать сам - ничего не получилось, по итогам тестирования было установлено, что игра офигевает от происходящего и крашится. Мои цели в данный момент достаточно простые - заставить ASI плагин выводить сообщение в чат после инициализации SAMP'a.
Пожалуйста, не нужно советовать различные ASI Framework - это не то, что мне нужно. Помогите разобраться с тем, как это работает в идеале, пожалуйста.
main.cpp:
#include "main.h"
void
MainThread
(
)
{
do
{
samp
.
dwModule
=
(
DWORD
)
GetModuleHandle
(
L
"samp.dll"
)
;
}
while
(
!
samp
.
dwModule
)
;
do
{
Sleep
(
1
)
;
}
while
(
IsSampInit
(
)
!=
TRUE
)
;
Sleep
(
2500
)
;
AddChatMessage
(
"Hello world!"
)
;
}
BOOL WINAPI
DllMain
(
HINSTANCE hModule
,
DWORD dwReason
,
LPVOID lpReserved
)
{
switch
(
dwReason
)
{
case
DLL_PROCESS_ATTACH
:
{
DisableThreadLibraryCalls
(
hModule
)
;
_beginthread
(
(
_beginthread_proc_type
)
MainThread
,
NULL
,
NULL
)
;
break
;
}
}
}
main.h:
#pragma once
#include
#include
#include
#include
#include
struct
SAMPStruct
{
DWORD dwModule
;
}
samp
;
struct
SAMPOffsets
{
DWORD registerClientCommand
=
0x65AC0
;
DWORD addChatMessage
=
0x64520
;
}
offset
;
bool
IsSampInit
(
)
{
return
(
(
bool
(
__thiscall
*
)
(
)
)
(
samp
.
dwModule
+
0x9BF70
)
)
(
)
;
}
void
RegisterChatCommand
(
const
char
*
command
,
void
*
function
)
{
(
(
void
(
__thiscall
*
)
(
DWORD str
,
const
char
*
cmd
,
void
*
func
)
)
(
samp
.
dwModule
+
offset
.
registerClientCommand
)
)
(
*
(
DWORD
*
)
(
samp
.
dwModule
+
0x21A0E8
)
,
command
,
function
)
;
}
void
AddChatMessage
(
const
char
*
message
)
{
(
(
void
(
__thiscall
*
)
(
DWORD str
,
const
char
*
text
)
)
(
samp
.
dwModule
+
offset
.
addChatMessage
)
)
(
*
(
DWORD
*
)
(
samp
.
dwModule
+
0x21A0E4
)
,
message
)
;
}
Определяй версию сампа при загрузке плагина и уже после инициализируй оффсеты для конкретной версии. Пример определения посмотри в собейте, основан на проверке массива байт
Определяй версию сампа при загрузке плагина и уже после инициализируй оффсеты для конкретной версии. Пример определения посмотри в собейте, основан на проверке массива байт
Посмотри исходный код под спойлером, там есть всё, кроме определения, но оно даже так не работает. Там явно где-то есть ошибка, но я её не вижу.
Roger571
01.11.2019, 21:13
Посмотри исходный код под спойлером, там есть всё, кроме определения, но оно даже так не работает. Там явно где-то есть ошибка, но я её не вижу.
Проблема в прототипе функции.
C++:
void
AddChatMessage
(
const
char
*
message
)
{
(
(
void
(
__cdecl
*
)
(
DWORD str
,
const
char
*
text
,
.
.
.
)
)
(
samp
.
dwModule
+
offset
.
addChatMessage
)
)
(
*
(
DWORD
*
)
(
samp
.
dwModule
+
0x21A0E4
)
,
message
)
;
}
mrdiimax
04.11.2019, 15:51
Как через .exe C++ получить уровень хп игрока? К примеру, через Read Process Memory
Как через .exe C++ получить уровень хп игрока? К примеру, через Read Process Memory
C++:
unsigned
cPED_ptr
;
float
health
;
ReadProcessMemory
(
hGTA
,
0xB6F5F0
,
&
cPED_ptr
,
4
,
0
)
;
ReadProcessMemory
(
hGTA
,
cPED_ptr
+
0x540
,
&
health
,
4
,
0
)
;
mrdiimax
04.11.2019, 16:33
C++:
unsigned
cPED_ptr
;
float
health
;
ReadProcessMemory
(
hGTA
,
0xB6F5F0
,
&
cPED_ptr
,
4
,
0
)
;
ReadProcessMemory
(
hGTA
,
cPED_ptr
+
0x540
,
&
health
,
4
,
0
)
;
Что не так?
Что не так?
Я конечно не эксперт, но мне кажется, что Sleep не стоит засовывать в цикл, и ещё ты дважды объявил hGTA, а вообще где main?
а мне кажется, что тут нет энтри поинта????????
mrdiimax
04.11.2019, 16:46
Я конечно не эксперт, но мне кажется, что Sleep не стоит засовывать в цикл, и ещё ты дважды объявил hGTA, а вообще где main?
Вроде починил, но всегда выдает единицу))
Вроде починил, но всегда выдает единицу))
Попробуй читать память в цикле или поиграться с типами переменных, но мне кажется, что у тебя где-то ошибка.
@mrdiimax (https://www.blast.hk/members/84482/)
Всё работает, нужно было от имени администратора запустить. Исходный код ниже.
main.cpp:
[CODE]
#include
#include
int
main
(
)
{
HWND hGTAWindow
=
FindWindow
(
NULL
,
L
"GTA:SA:MP"
)
;
DWORD pId
;
GetWindowThreadProcessId
(
hGTAWindow
,
&
pId
)
;
HANDLE hGTA
=
OpenProcess
(
PROCESS_VM_READ
,
TRUE
,
pId
)
;
DWORD plPtr
;
float
plHealth
;
while
(
true
)
{
ReadProcessMemory
(
hGTA
,
(
LPCVOID
)
0xB6F5F0
,
&
plPtr
,
sizeof
plPtr
,
NULL
)
;
ReadProcessMemory
(
hGTA
,
(
LPCVOID
)
(
plPtr
+
0x540
)
,
&
plHealth
,
sizeof
plHealth
,
NULL
)
;
std
::
cout
https://forum.antichat.xyz/attachments/27421441/
Выдаёт такую ошибку при инжекте, как пофиксить?
Как правильно считать char из адреса памяти а точнее как правильно записать текст из памяти в формате текста . Типа там вроде нужно *char [сюда количество символов +1] XZ = Тут уже адрес и тд . Типа сначала объявить char XZ ; или char [3 ]XZ; - это вроде не так , float и тд вроде легко а тут чот не как .
Dark_Knight
06.11.2019, 22:29
memcpy не катит?
Vadim.dll
07.11.2019, 20:18
Кто-нибудь знает, как вызвать SCM функцию по опкоду?
Кто-нибудь знает, как вызвать SCM функцию по опкоду?
Если я правильно тебя понял то тебе нужен сам адрес вызова нужной функции ( опкода ) Ниже пример вызова текста-подсказки
C++:
#define FUNC_CMessages__AddMessageJumpQ 0x69F1E0
void
AddMessageJumpQ
(
char
*
text
,
unsigned
int
time
,
unsigned
short
flag
,
bool
bPreviousBrief
)
{
(
(
void
(
__cdecl
*
)
(
char
*
,
unsigned
int
,
unsigned
short
,
bool
)
)
FUNC_CMessages__AddMessageJumpQ
)
(
text
,
time
,
flag
,
bPreviousBrief
)
;
}
Если юзаешь сф апи то там есть callOpcode()
Как пример считывания текста из адреса памяти игры. Который в cheat engine находишь. Там просто как я понял надо указывать размер ну количество символов.
Нееет, мне надо пример считывания текста из адреса памяти игры.
ну вот пример
C++:
char
szPath
[
MAX_PATH
]
=
{
0
}
;
strcpy
(
szPath
,
reinterpret_cast
(
0xC9ADD8
)
)
;
// путь до gta_sa.exe
ну вот пример
C++:
char
szPath
[
MAX_PATH
]
=
{
0
}
;
strcpy
(
szPath
,
reinterpret_cast
(
0xC9ADD8
)
)
;
// путь до gta_sa.exe
667:
char
XZ
[
10
]
;
strcpy
(
XZ
,
reinterpret_cast
(
тут адрес памяти и смещение
)
)
;
Использовать как то так, как я понял.
_=Gigant=_
08.11.2019, 22:46
667:
char
XZ
[
10
]
;
strcpy
(
XZ
,
reinterpret_cast
(
тут адрес памяти и смещение
)
)
;
Использовать как то так, как я понял.
check
Why is address of char data not displayed? (https://www.blast.hk/redirect/aHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvND g2MDc4OC93aHktaXMtYWRkcmVzcy1vZi1jaGFyLWRhdGEtbm90 LWRpc3BsYXllZA)
class Address { int i ; char b; string c; public: void showMap ( void ) ; }; void Address :: showMap ( void ) { cout
stackoverflow.com
Musaigen
09.11.2019, 17:31
Как проверить установлен ли уже на адрес памяти хук через функции HookInstall, HookInstallCall?
Как проверить установлен ли уже на адрес памяти хук через функции HookInstall, HookInstallCall?
сразу говорю, вариант не лучший и я не советую это использовать, но в большинстве простых ситуаций этого достаточно
C++:
// 0xE8 - call
// 0xE9 - jmp
if
(
*
reinterpret_cast
(
address
)
==
0xE9
)
{
// do something
}
Как выполнить проверку(if) с char ?
if (XZ == "DA PRIVET")
просто либо я не так проверяю либо не правильно считываю адрес из памяти .
Как выполнить проверку(if) с char ?
if (XZ == "DA PRIVET")
просто либо я не так проверяю либо не правильно считываю адрес из памяти .
Чтение из адреса:
ну вот пример
C++:
char
szPath
[
MAX_PATH
]
=
{
0
}
;
strcpy
(
szPath
,
reinterpret_cast
(
0xC9ADD8
)
)
;
// путь до gta_sa.exe
Сравнение char'ов:
strstr/strcmp
Чтение из адреса:
Сравнение char'ов:
strstr/strcmp
ок
Что я не так делаю ? Беру делаю вроде все верно . Значение всегда true , даже если будет написано шо я гей он один хер будет мне говорить Привет номер 2 . То есть не важно что там будет написано он будет тру а должно быть что если написано привет номер 2 будет тру а если чото левое то фалсе (false)
main.cpp:
#include
#include
char
BT
[
]
=
"/Privet_Nomer_2"
;
char
Сhat
[
40
]
;
void
__cdecl
MainThread
(
void
*
pArg
)
{
while
(
true
)
{
Sleep
(
1
)
;
strcpy
(
Chat
,
reinterpret_cast
(
0x11111
)
)
;
// адрес я записал рандомный , но если через CE чекать то там то что нужно , просто указатель не могу найти там смещение не понятное типа eax+esi .
if
(
GetAsyncKeyState
(
VK_NUMPAD3
)
)
{
if
(
strcmp
(
BT
,
Chat
)
)
{
AddMessageJumpQ
(
"Privet Nomer 2"
,
500
,
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
;
}
На адрес не обращайте внимание , я записывал динамический , но там один хрен будет же работать , чекая через си я вижу шо он верный и если он изменится пофиг , главное что-бы я научился с текстом в С++ работать .
Dark_Knight
10.11.2019, 03:28
Как выполнить проверку(if) с char ?
if (XZ == "DA PRIVET")
просто либо я не так проверяю либо не правильно считываю адрес из памяти .
Ideone.com (https://www.blast.hk/redirect/aHR0cHM6Ly9pZGVvbmUuY29tL1ZtSzJDTg)
Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.
ideone.com
Для начала глянь в отладчике 11 строку, что она возвращает(if != strcmp надо)
А для чего мне значение смотреть, я просто не понял?
А для чего мне значение смотреть, я просто не понял?
strcmp, wcscmp, _mbscmp, _mbscmp_l (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvY3BwL2 MtcnVudGltZS1saWJyYXJ5L3JlZmVyZW5jZS9zdHJjbXAtd2Nz Y21wLW1ic2NtcD92aWV3PXZzLTIwMTkjcmV0dXJuLXZhbHVl)
Создал визуальный объект и хотел бы сделать на нём MoveObject.
Реально ли это?
Создал визуальный объект и хотел бы сделать на нём MoveObject.
Реально ли это?
да, помню в цлео был такой опкод
Есть ли аналог string.match (https://www.blast.hk/redirect/aHR0cHM6Ly91b3BpbG90LnVva2l0LmNvbS93aWtpL2luZGV4Ln BocD90aXRsZT1TdHJpbmcubWF0Y2hfKEx1YSk) в C++? И если есть, то какой?
Есть ли аналог string.match (https://www.blast.hk/redirect/aHR0cHM6Ly91b3BpbG90LnVva2l0LmNvbS93aWtpL2luZGV4Ln BocD90aXRsZT1TdHJpbmcubWF0Y2hfKEx1YSk) в C++? И если есть, то какой?
regex preg match, brah
Такой вопрос от куда берут функции?
Как их находят и как находят что делает эта функция может кто то рассказать или дать гайд в видео или текстовом формате где обьесняется все, просто залез в исходники соба и так и не понял откуда это то-то и тд.
Такой вопрос от куда берут функции?
Как их находят и как находят что делает эта функция может кто то рассказать или дать гайд в видео или текстовом формате где обьесняется все, просто залез в исходники соба и так и не понял откуда это то-то и тд.
реверс инженеринг в гугл
реверс инженеринг в гугл
Охохо , я посмотрел что это целая история и надо пойти научится этому ремеслу , так как без этого не как . И еще такой вопрос сложно ли их искать ? ( я еще не начел читать а просто пробежал глазами и понял что мне предстоит делать )
Охохо , я посмотрел что это целая история и надо пойти научится этому ремеслу , так как без этого не как . И еще такой вопрос сложно ли их искать ? ( я еще не начел читать а просто пробежал глазами и понял что мне предстоит делать )
сложно.
сложно.
А список есть с функциями gta sa (я вроде лазил по гуглу и там чото не то что я искал а точнее не чего того )? Или интереснее будет самому искать и делать чем найти уже готовое и стоить тот код который ты планируешь ( я ) .
А список есть с функциями gta sa (я вроде лазил по гуглу и атм чото не то что я искал а точнее не чего того )? Или интереснее будет самому искать и делать чем найти уже готовое и стоить тот код который ты планируешь ( я ) .
plugin sdk
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
)
;
}
plugin sdk
В нем функции gta sa или это типа сф или что-то похожее , ну типа самописные .Просто вроде этой функции там нету а она вроде игры .
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
)
;
}
В нем функции gta sa или это типа сф или что-то похожее , ну типа самописные .Просто вроде этой функции там нету а она вроде игры .
функции игры
функции игры
Ок ,понял пойду в нем разбираться , я его ставил но какие то траблы были и мне было проще работать с памятью игры ) .
_=Gigant=_
18.11.2019, 19:56
how to find samp addresses like this SAMP_FUNC_RESTARTGAME 0xA060 ?
how to find samp addresses like this SAMP_FUNC_RESTARTGAME 0xA060 ?
https://github.com/sr-tream/mod_s0beit_sa_asi/blob/master/src/samp.h or https://blast.hk/threads/34908/
помогите пофиксить
C++:
1
>
--
--
--
Сборка начата
:
проект
:
SFPlugin
,
Конфигурация
:
Release Win32
--
--
--
1
>
E
:
\Visual Studio\Common7\IDE\VC\VCTargets\Microsoft
.
Cpp
.
Platform
.
targets
(
65
,
5
)
:
error MSB8020
:
Не удается найти средства сборки для Visual Studio
2010
(
набор инструментов платформы
=
"v100"
)
.
Чтобы выполнить сборку с использованием средств сборки v100 установите средства сборки Visual Studio
2010.
Кроме того
,
можно выполнить обновление до текущей версии средств Visual Studio
,
перейдя в меню
"Проект"
или щелкнув решение правой кнопкой мыши и выбрав
"Обновить решение..."
.
1
>
Сборка проекта
"SFPlugin.vcxproj"
завершена с ошибкой
.
==
==
==
==
==
Сборка
:
успешно
:
0
,
с ошибками
:
1
,
без изменений
:
0
,
пропущено
:
0
==
==
==
==
==
помогите пофиксить
C++:
1
>
--
--
--
Сборка начата
:
проект
:
SFPlugin
,
Конфигурация
:
Release Win32
--
--
--
1
>
E
:
\Visual Studio\Common7\IDE\VC\VCTargets\Microsoft
.
Cpp
.
Platform
.
targets
(
65
,
5
)
:
error MSB8020
:
Не удается найти средства сборки для Visual Studio
2010
(
набор инструментов платформы
=
"v100"
)
.
Чтобы выполнить сборку с использованием средств сборки v100 установите средства сборки Visual Studio
2010.
Кроме того
,
можно выполнить обновление до текущей версии средств Visual Studio
,
перейдя в меню
"Проект"
или щелкнув решение правой кнопкой мыши и выбрав
"Обновить решение..."
.
1
>
Сборка проекта
"SFPlugin.vcxproj"
завершена с ошибкой
.
==
==
==
==
==
Сборка
:
успешно
:
0
,
с ошибками
:
1
,
без изменений
:
0
,
пропущено
:
0
==
==
==
==
==
Проект -> Свойства -> Общие -> Набор инструментов платформы
Проект -> Свойства -> Общие -> Набор инструментов платформы
C++:
1
>
--
--
--
Сборка начата
:
проект
:
SFPlugin
,
Конфигурация
:
Release Win32
--
--
--
1
>
E
:
\Visual Studio\Common7\IDE\VC\VCTargets\Microsoft
.
Cpp
.
WindowsSDK
.
targets
(
46
,
5
)
:
error MSB8036
:
не удалось найти Windows SDK версии
8.1
.
Установите нужную версию Windows SDK или измените версию SDK на страницах свойств проекта либо щелкнув правой кнопкой мыши решение и выбрав
"Изменить целевую платформу решения"
.
1
>
Сборка проекта
"SFPlugin.vcxproj"
завершена с ошибкой
.
==
==
==
==
==
Сборка
:
успешно
:
0
,
с ошибками
:
1
,
без изменений
:
0
,
пропущено
:
0
==
==
==
==
==
Установите нужную версию Windows SDK или измените версию SDK на страницах свойств проекта либо щелкнув правой кнопкой мыши решение и выбрав "Изменить целевую платформу решения"
Ты читать умеешь? Русским языком написано же.
Dark_Knight
20.11.2019, 01:30
C++:
1
>
--
--
--
Сборка начата
:
проект
:
SFPlugin
,
Конфигурация
:
Release Win32
--
--
--
1
>
E
:
\Visual Studio\Common7\IDE\VC\VCTargets\Microsoft
.
Cpp
.
WindowsSDK
.
targets
(
46
,
5
)
:
error MSB8036
:
не удалось найти Windows SDK версии
8.1
.
Установите нужную версию Windows SDK или измените версию SDK на страницах свойств проекта либо щелкнув правой кнопкой мыши решение и выбрав
"Изменить целевую платформу решения"
.
1
>
Сборка проекта
"SFPlugin.vcxproj"
завершена с ошибкой
.
==
==
==
==
==
Сборка
:
успешно
:
0
,
с ошибками
:
1
,
без изменений
:
0
,
пропущено
:
0
==
==
==
==
==
В том же окне можно выбрать версию СДК.
задача: запросить у пользователя два целых числа и вычислить диапазон, заданный этими числами (обязательно через while и только через него)
диапазон:
[CODE]
#include
using namespace std;
int main()
{
int a, b;
cout > a >> b;
while (a
так вот, если ввести допустим первым числом 5, а вторым 8 то на выходе получим 6 7 и 8, которая не является диапазоном.
понимаю, почему она выводится, но не понимаю, как это пофиксить.
вопрос тупой, но все же, если не трудно - помогите
Musaigen
21.11.2019, 22:37
задача: запросить у пользователя два целых числа и вычислить диапазон, заданный этими числами (обязательно через while и только через него)
диапазон:
#include
using namespace std;
int main()
{
int a, b;
cout > a >> b;
while (a
C++:
[CODE]
if
(
a
==
b
)
a
-=
1
;
[QUOTE="ddr2"]
было бы все так просто, я бы сюда не отписывался, после того как мы получили 7 и вывели ее на экран - ide дальше продолжает цикл так как 7 не больше и не равняется 8, цикл продолжается - a (7)++ и сразу же сиаутом выводит результат (8)
я нуб в плюсах, но можешь попробовать ++a;
[QUOTE="Musaigen"]
[CODE]
while (a
Petr_Sergeevich
21.11.2019, 22:47
было бы все так просто, я бы сюда не отписывался, после того как мы получили 7 и вывели ее на экран - ide дальше продолжает цикл так как 7 не больше и не равняется 8, цикл продолжается - a (7)++ и сразу же сиаутом выводит результат (8)
b - 1, не?
Если нужно включая границы,
while (a 6, 7, 8, 9
?
b - 1, не?
5, 8 => 6, 7, 8, 9
?
если а
Dark_Knight
22.11.2019, 00:05
В каком плане вычислить диапазон?
в том плане что, пользователь задает два числа, например 5 и 8, следовательно диапазон обусловленный этими двумя числами - 6 и 7.
и границы, коими являются числа 5 и 8 выводить не нужно, нужен только один лишь диапазон.
Dark_Knight
22.11.2019, 02:03
Ну на. Пробуй.
C++:
[CODE]
#include
using
namespace
std
;
int
main
(
)
{
int
min
,
max
,
a
,
b
;
min
=
max
=
a
=
b
=
0
;
cout
>
min
>>
max
;
if
(
min
>
max
)
{
cout
=
b
)
{
cout
@ddr2 (https://www.blast.hk/members/127440/)
C++:
[CODE]
while
(
++
a
1. Подскажите пожалуйста, что я не так сделал. Программа должна сделать следующее условие: Необходимо найти минимальный m1 и максимальный m2 нечётные элементы (если в массиве нет нечётных элементов, m1 и m2 считаются равными нулю), уменьшить все чётные элементы, значения которых попадают в интервал (m1; m2), на величину m1 и вывести изменённый массив. Например, для исходного массива из пяти элементов 30, 89, 27, 90, 68 программа должна вывести числа 3, 89, 27, 90, 41 (минимум и максимум равны 27 и 89, все чётные элементы из интервала (27; 89) уменьшены на 27).
Код:
[CODE]
#include
using namespace std;
void main()
{
setlocale(0, "");
int a[5], m1=INT_MAX, m2=INT_MIN, i=5;
for (int i = 0; i > a[i];
if (a[i] % 2 != 0 && a[i] > m2) m2 = a[i];
if (a[i] % 2 != 0 && a[i] m2&& a[i]
[QUOTE="bet.io"]
1. Подскажите пожалуйста, что я не так сделал. Программа должна сделать следующее условие: Необходимо найти минимальный m1 и максимальный m2 нечётные элементы (если в массиве нет нечётных элементов, m1 и m2 считаются равными нулю), уменьшить все чётные элементы, значения которых попадают в интервал (m1; m2), на величину m1 и вывести изменённый массив. Например, для исходного массива из пяти элементов 30, 89, 27, 90, 68 программа должна вывести числа 3, 89, 27, 90, 41 (минимум и максимум равны 27 и 89, все чётные элементы из интервала (27; 89) уменьшены на 27).
Код:
[CODE]
#include
using namespace std;
void main()
{
setlocale(0, "");
int a[5], m1=INT_MAX, m2=INT_MIN, i=5;
for (int i = 0; i > a[i];
if (a[i] % 2 != 0 && a[i] > m2) m2 = a[i];
if (a[i] % 2 != 0 && a[i] m2&& a[i]
C++:
[CODE]
#include
using
namespace
std
;
int
main
(
)
{
int
a
[
5
]
,
m1
=
0
,
m2
=
0
;
for
(
int
i
=
0
;
i
>
a
[
i
]
;
if
(
a
[
i
]
%
2
!=
0
&&
m2
==
0
)
m2
=
a
[
i
]
;
if
(
a
[
i
]
%
2
!=
0
&&
a
[
i
]
>
m1
)
m1
=
a
[
i
]
;
if
(
a
[
i
]
%
2
!=
0
&&
a
[
i
]
m2
&&
a
[
i
]
[QUOTE="Pakulichev"]
C++:
[CODE]
#include
using
namespace
std
;
int
main
(
)
{
int
a
[
5
]
,
m1
=
0
,
m2
=
0
;
for
(
int
i
=
0
;
i
>
a
[
i
]
;
if
(
a
[
i
]
%
2
!=
0
&&
m2
==
0
)
m2
=
a
[
i
]
;
if
(
a
[
i
]
%
2
!=
0
&&
a
[
i
]
>
m1
)
m1
=
a
[
i
]
;
if
(
a
[
i
]
%
2
!=
0
&&
a
[
i
]
m2
&&
a
[
i
]
Код:
[CODE]
if (i == 4)
cout
[QUOTE="bet.io"]
Поясни пожалуйста что делают эти строки
Код:
[CODE]
if (i == 4)
cout
Receiver
22.11.2019, 21:23
есть упаковщик / протектор для sf ?
есть упаковщик / протектор для sf ?
vm/themida
ilya12121222812
22.11.2019, 21:43
хочу начать изучать C/С++ с чего лучше начать?
Receiver
22.11.2019, 22:08
https://forum.antichat.xyz/attachments/27427514/
Как можно скрыть/зашифровать эту строку??
Здравствуйте, подскажите пожалуйста, как я могу экспортировать чёртов EXE из Visual Basic?
Проводил отладку в режиме RELEASE и DEBUG, но как только я вытаскиваю сам EXE из папки (где все сурсы трейнера) он перестает запускаться.
Далее я его эскпортировал через публикацию, тоже самое, стоит вытащить из папки, - он не работает.
посмотри какие библиотеки ему нужны и либо таскай их с exe, либо линкуй статикой
Jack_Savage
23.11.2019, 19:16
Может шарит кто, что за функции CEntity::RegisterReference/CEntity::CleanUpOldReference в sa ?
Shell :3
23.11.2019, 22:03
Как кракозябрики в имгуи окне изменить на нормальный русский текст, как поменять кодировку?
Как кракозябрики в имгуи окне изменить на нормальный русский текст, как поменять кодировку?
Так, забыли про мой первый ответ, я перепутал тему.
Нужно использовать другой шрифт, так как стандартный не поддерживает кириллицу.
Shell :3
23.11.2019, 22:16
Так, забыли про мой первый ответ, я перепутал тему.
Нужно использовать другой шрифт, так как стандартный не поддерживает кириллицу.
Помоги, как его подгружать.
Желательно как для дурака объясни.
Помоги, как его подгружать.
Желательно как для дурака объясни.
Вот так, например. Если ничего не путаю, вставлять нужно после инициализации ImGUI.
C++:
ImGui
::
GetIO
(
)
.
Fonts
->
AddFontFromFileTTF
(
"C:\\Windows\\Fonts\\Arial.ttf"
,
16.5f
,
NULL
,
ImGui
::
GetIO
(
)
.
Fonts
->
GetGlyphRangesCyrillic
(
)
)
;
Shell :3
24.11.2019, 00:36
Где можно глянуть все функи? Мб файл какой-то, в котором они есть
Где можно глянуть все функи? Мб файл какой-то, в котором они есть
imgui.h
1. Вопрос снова такой.
Представим что мы имеем адрес памяти игры гта са, в нем хранится строка в которой слово слово "привет объект номер 667" в этом слове 22 буквы если с пробелом. Но иногда в этой строке хранится другое слово.
И нам нужно провести проверку этого адреса и узнать правдоли там хранится слово "привет объект номер 667" . И если оно верно значит что то поменяется а если нет то будет цикл ожидающий пока проверка не будет правдой. Можно мне пример кода исходящий из примера который выше я описал. Просто я не как не могу понять что я делаю не так, я уже очаился и потерял надежду. У меня всегда проверка выдаёт правду, даже если там написано не то что нужно в адресе памяти. Помогите знающие люди, ну серьёзно я лазил по инету и не смог найти подобное где выполняется проверка текста из адреса памяти игры или приложения.
1. Вопрос снова такой.
Представим что мы имеем адрес памяти игры гта са, в нем хранится строка в которой слово слово "привет объект номер 667" в этом слове 22 буквы если с пробелом. Но иногда в этой строке хранится другое слово.
И нам нужно провести проверку этого адреса и узнать правдоли там хранится слово "привет объект номер 667" . И если оно верно значит что то поменяется а если нет то будет цикл ожидающий пока проверка не будет правдой. Можно мне пример кода исходящий из примера который выше я описал. Просто я не как не могу понять что я делаю не так, я уже очаился и потерял надежду. У меня всегда проверка выдаёт правду, даже если там написано не то что нужно в адресе памяти. Помогите знающие люди, ну серьёзно я лазил по инету и не смог найти подобное где выполняется проверка текста из адреса памяти игры или приложения.
strstr/strcmp/regex
Хотел бы спросить,на каком языке, я могу написать бота для вк?
И ещё,что могу я написать на C++
Заранее спасибо:)
Хотел бы спросить,на каком языке, я могу написать бота для вк?
И ещё,что могу я написать на C++
Заранее спасибо:)
API for Chatbots | Développeurs | VK (https://www.blast.hk/redirect/aHR0cHM6Ly92ay5jb20vZGV2L2JvdHNfZG9jcw)
vk.com
API for Chatbots | Développeurs | VK (https://www.blast.hk/redirect/aHR0cHM6Ly92ay5jb20vZGV2L2JvdHNfZG9jcw)
vk.com
Подскажи плз,какой язык сейчас легкий и популярный в 2к19
Подскажи плз,какой язык сейчас легкий и популярный в 2к19
python
Подскажите пожалуйста где накосячил. Условие такое:
Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых оба числа двузначные. В данной задаче под парой подразумевается два подряд идущих элемента массива.
Например, для массива из пяти элементов: 16 2 14 91 21 — ответ: 2
Код:
[CODE]
int a[5], k=0, j;
for (int i = 0; i > a[i];
if ((a[i] / 10. >= 1) && (a[i] / 10. = 1) && (a[i + 1] / 10.
itsLegend
25.11.2019, 18:19
[QUOTE="bet.io"]
Подскажите пожалуйста где накосячил. Условие такое:
Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых оба числа двузначные. В данной задаче под парой подразумевается два подряд идущих элемента массива.
Например, для массива из пяти элементов: 16 2 14 91 21 — ответ: 2
Код:
[CODE]
int a[5], k=0, j;
for (int i = 0; i > a[i];
if ((a[i] / 10. >= 1) && (a[i] / 10. = 1) && (a[i + 1] / 10.
Зачем деление? Стоит ли оно того? У двухзначных чисел диапазон от 10 до 99, в чём проблема проверять по нему?
Сути то не меняет, изменю я на диапазон, всё равно будет выводить 0
itsLegend
25.11.2019, 18:46
Сути то не меняет, изменю я на диапазон, всё равно будет выводить 0
Сначала заполни массив, а только потом читай его. У тебя после ввода значения сразу вычисляется k, по факту - следующего значения в массиве ещё нет.
traceattack
25.11.2019, 18:48
Сути то не меняет, изменю я на диапазон, всё равно будет выводить 0
1:
[CODE]
#include
//Если не работает abs() , то #include
using
namespace
std
;
int
main
(
)
{
int
count
=
0
;
int
N
;
cin
>>
N
;
int
arr
[
N
]
;
for
(
int
i
=
0
;
i
>
arr
[
i
]
;
for
(
int
i
=
0
;
i
9
&&
temp1
9
&&
temp2
Receiver
25.11.2019, 19:08
не воркает ImGUI
https://forum.antichat.xyz/attachments/27428753/
https://forum.antichat.xyz/attachments/27428753/
https://forum.antichat.xyz/attachments/27428753/
а почему а зачем
SF LOG
[18:04:55] SAMPFUNCS v5.3.3 release #19 (SA-MP 0.3.7) loaded. Base address: 0x7BAC0000.
[18:04:55] Compiled: Aug 8 2016 13:19:58
[18:04:55] Initializing opcodes...
[18:04:55] Opcodes initialized successfully. Total opcodes count: 382.
[18:04:55] Initializing plugins...
[18:04:55] SF Plugin "FastScreen.sf" loaded.
[18:04:55] SF Plugin "FixReconnect.sf" loaded.
[18:04:55] SF Plugin "Sosiska.sf" loaded.
Подскажите пожалуйста, как перевести число в двоичную, восьмеричную, десятичную и т.д. запись?
Receiver
25.11.2019, 20:10
acivew не иницилизирована
https://forum.antichat.xyz/attachments/27428788/
[19:08:28] SAMPFUNCS v5.3.3 release #19 (SA-MP 0.3.7) loaded. Base address: 0x7B8A0000.
[19:08:28] Compiled: Aug 8 2016 13:19:58
[19:08:28] Initializing opcodes...
[19:08:28] Opcodes initialized successfully. Total opcodes count: 382.
[19:08:28] Initializing plugins...
[19:08:28] SF Plugin "FastScreen.sf" loaded.
[19:08:28] SF Plugin "FixReconnect.sf" loaded.
[19:08:28] SF Plugin "Sosiska.sf" loaded.
тоже самое
я решил проблему, оказывается она была из-за этого
https://forum.antichat.xyz/attachments/27428788/
хз почему, но вот так работает
https://forum.antichat.xyz/attachments/27428788/
тоже самое
я решил проблему, оказывается она была из-за этого
хз почему, но вот так работает
у тебя до этого и dll_thread_detach/attach гуй выгружался, посмотри как использовать оператор switch (нету break'a)
Receiver
26.11.2019, 19:06
у тебя до этого и dll_thread_detach/attach гуй выгружался, посмотри как использовать оператор switch (нету break'a)
https://forum.antichat.xyz/attachments/27429178/
Receiver
27.11.2019, 19:00
В ImGUI окне, при вводе в InputText, нажимая T открывается чат, можно как-нибудь его заблокировать при открытии ImGUI окна и разблокировать при закрытии?
В ImGUI окне, при вводе в InputText, нажимая T открывается чат, можно как-нибудь его заблокировать при открытии ImGUI окна и разблокировать при закрытии?
Можно сделать вот так:
C++:
bool
CALLBACK
WndProcHandler
(
HWND hwd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
{
static
bool
show_cursor
=
false
;
if
(
render
)
{
show_cursor
=
true
;
SF
->
getSAMP
(
)
->
getMisc
(
)
->
ToggleCursor
(
1
)
;
SF
->
getSAMP
(
)
->
getInput
(
)
->
DisableInput
(
)
;
ImGui_ImplWin32_WndProcHandler
(
hwd
,
msg
,
wParam
,
lParam
)
;
if
(
msg
==
WM_KEYDOWN
)
{
if
(
wParam
==
VK_ESCAPE
)
render
^=
true
;
return
true
;
}
}
else
{
if
(
show_cursor
)
{
SF
->
getSAMP
(
)
->
getMisc
(
)
->
ToggleCursor
(
0
)
;
show_cursor
=
false
;
}
}
return
true
;
}
Receiver
30.11.2019, 11:55
как сделать обход shadowplay, bandicam, obs? как оно работает?
Подскажите пожалуйста что не так сделал, с комментариями того, что вы добавляете. Был бы оооочень признателен :3
Напишите программу, находящую в этом массиве два соседних элемента, значения которых наименее близки, то есть абсолютная величина их разности максимальна. Если таких пар несколько, можно взять любую из них
Код:
[CODE]
#include
using namespace std;
void main()
{
setlocale(0, "");
int a[5], k = INT_MIN;
for (int i = 0; i > a[i];
for (int i = 0; i k) k= (abs(a[i + 1]) - abs(a[i])) / (abs(a[i + 1]) + abs(a[i]));
cout
traceattack
01.12.2019, 20:24
[QUOTE="bet.io"]
Подскажите пожалуйста что не так сделал, с комментариями того, что вы добавляете. Был бы оооочень признателен :3
Напишите программу, находящую в этом массиве два соседних элемента, значения которых наименее близки, то есть абсолютная величина их разности максимальна. Если таких пар несколько, можно взять любую из них
Код:
[CODE]
#include
using namespace std;
void main()
{
setlocale(0, "");
int a[5], k = INT_MIN;
for (int i = 0; i > a[i];
for (int i = 0; i k) k= (abs(a[i + 1]) - abs(a[i])) / (abs(a[i + 1]) + abs(a[i]));
cout
C++:
[CODE]
#include
using
namespace
std
;
int
main
(
void
)
{
const
int
N
=
5
;
int
k
=
-
1
;
int
arr
[
N
]
;
int
m1
,
m2
;
for
(
int
i
=
0
;
i
>
arr
[
i
]
;
for
(
int
i
=
0
;
i
k
)
{
k
=
temp
;
m1
=
arr
[
i
]
;
m2
=
arr
[
i
+
1
]
;
}
}
cout
[QUOTE="Niji"]
В твоей "Мега - формуле" не очень хочется разбираться.
А так , читай задание внимательней
C++:
[CODE]
#include
using
namespace
std
;
int
main
(
void
)
{
const
int
N
=
5
;
int
k
=
-
1
;
int
arr
[
N
]
;
int
m1
,
m2
;
for
(
int
i
=
0
;
i
>
arr
[
i
]
;
for
(
int
i
=
0
;
i
k
)
{
k
=
temp
;
m1
=
arr
[
i
]
;
m2
=
arr
[
i
+
1
]
;
}
}
cout
Код:
[CODE]
#include
using namespace std;
void main()
{
setlocale(0, "");
float d, r;
int a[5], k = INT_MIN;
for (int i = 0; i > a[i];
for (int i = 0; i k))
{
k = abs(a[i + 1] - a[i]);
d = a[i];
r = a[i + 1];
}
}
cout
traceattack
01.12.2019, 20:38
[QUOTE="bet.io"]
Разве m1 и m2 не должны быть float? И да, как я написал будет работать, либо где-то накосячил?
Код:
[CODE]
#include
using namespace std;
void main()
{
setlocale(0, "");
float d, r;
int a[5], k = INT_MIN;
for (int i = 0; i > a[i];
for (int i = 0; i k))
{
k = abs(a[i + 1] - a[i]);
d = a[i];
r = a[i + 1];
}
}
cout
Ты сам изначально писал код в *int*, теперь ты меня спрашиваешь о float, хотя задание изначально у тебя. Плюс переиначил в каком-то роде мой код и спрашиваешь о его работоспособности , у тебя там все хорошо??? 😕
Хахахахах, да не, я просто некоторые переменные там заменил. Я бы протестил на числах, да не совсем понимаю как отбирается абсолютная велечина
traceattack
01.12.2019, 21:28
Хахахахах, да не, я просто некоторые переменные там заменил. Я бы протестил на числах, да не совсем понимаю как отбирается абсолютная величина
Абсолютная величина - это модуль обычный: | 1 | == 1 , | -1 | == 1 ;
Если смотреть допустим на примере этой задачи , есть некий массив с элементами 1 , 2 , -10 ;
Сначала рассматриваем первую пару и находим абсолютную величину их разности : | 1 - 2 | == 1
Теперь рассматриваем вторую пару и находим уже у нее : | 2 - (-10) | == 12
Т.к 12 > 1 , то мы выводим вторую пару , а именно числа 2 и -10 в любом порядке
Абсолютная величина - это модуль обычный: | 1 | == 1 , | -1 | == 1 ;
Если смотреть допустим на примере этой задачи , есть некий массив с элементами 1 , 2 , -10 ;
Сначала рассматриваем первую пару и находим абсолютную величину их разности : | 1 - 2 | == 1
Теперь рассматриваем вторую пару и находим уже у нее : | 2 - (-10) | == 12
Т.к 12 > 1 , то мы выводим вторую пару , а именно числа 2 и -10 в любом порядке
Понял. Пасибо большое :3 В интернете посмотрел, там чего только не написано насчёт этой темы, ты сразу же ясно и простыми словами написал
legendabrn
03.12.2019, 19:57
как изменить в адресе памяти значение string:
https://forum.antichat.xyz/attachments/27431717/
Адрес известен, нужен код на c++ для изменения
пытался через reinterpret_cast, не получается
как изменить в адресе памяти значение string:
Адрес известен, нужен код на c++ для изменения
пытался через reinterpret_cast, не получается
ну вот пример
C++:
char
szPath
[
MAX_PATH
]
=
{
0
}
;
strcpy
(
szPath
,
reinterpret_cast
(
0xC9ADD8
)
)
;
// путь до gta_sa.exe
C++:
DWORD dwProtect
=
PAGE_EXECUTE_READWRITE
;
VirtualProtect
(
reinterpret_cast
(
samp
.
dll
+
0xE5B98
)
,
size
,
dwProtect
,
&
dwProtect
)
;
strcpy
(
reinterpret_cast
(
samp
.
dll
+
0xE5B98
)
,
"text"
)
;
VirtualProtect
(
reinterpret_cast
(
samp
.
dll
+
0xE5B98
)
,
size
,
dwProtect
,
nullptr
)
;
Дарова всем, не особо по теме самого языка, но к нему относится. Я решил закомпилить файлик, но понял, что он не компилится. Выдает ошибку "файл не найден". Чекал в инете, ничего дельного не нашел, решил создать пустой файл (так в гайде было), не помогло, хз что делать. Сам визуал работает прекрасно, все компилится, но когда беру сурс для создания чего либо на сф апи, ничего не компилится. Компилится только фул мои проекту. Надеюсь на помощь новичку.
скриншот сделай
Он и не должен запускаться. Переходи по этому пути, там будет файл.
Как заставить работать при открытом диалоге?
C:
SF
->
getGame
(
)
->
isKeyPressed
(
0x4B
)
)
Как заставить работать при открытом диалоге?
C:
SF
->
getGame
(
)
->
isKeyPressed
(
0x4B
)
)
Хук wndprc
Как заставить работать при открытом диалоге?
C:
SF
->
getGame
(
)
->
isKeyPressed
(
0x4B
)
)
C++:
// не забудь инициализировать хук (InitHooks())
LRESULT CALLBACK
WindowProc
(
HWND hWnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
uMsg
==
WM_KEYUP
&&
wParam
==
VK_F2
)
{
// code
}
return
CallWindowProcA
(
(
WNDPROC
)
prevWndProc
,
hWnd
,
uMsg
,
wParam
,
lParam
)
;
}
void
InitHooks
(
)
{
prevWndProc
=
SetWindowLongA
(
FindWindowA
(
NULL
,
"GTA:SA:MP"
)
,
GWL_WNDPROC
,
(
LONG
)
WindowProc
)
;
}
mrdiimax
08.12.2019, 15:15
Как получить здоровье игрока через DK22 plugin SDK, я нашел CPed, но как вызвать оттуда функцию
Как узнать цвет пикселя в игре? (Старый добрый горара раен САНАН ДРЕС)
Babayka2016
10.12.2019, 19:56
Кто-нибудь в курсе как устроена функция multiprocessing в sampfuncs'e?
Или же по-другому:
Стоит задача запустить несколько окон сампа без sampfuncs, без замены gta_sa.exe, без песочницы, чисто программными методами. Как это можно сделать?
Объясните пожалуйста, что в этой программе делает строка scanf("%d %d", &a, &b); и printf("%d", k);
Код:
[CODE]
int main(){
int a, b, s, k;
scanf("%d %d", &a, &b);
s = 1;
k = a;
while (s
traceattack
13.12.2019, 18:09
[QUOTE="bet.io"]
Объясните пожалуйста, что в этой программе делает строка scanf("%d %d", &a, &b); и printf("%d", k);
Код:
[CODE]
int main(){
int a, b, s, k;
scanf("%d %d", &a, &b);
s = 1;
k = a;
while (s
scanf | Программирование на C и C++ (https://www.blast.hk/redirect/aHR0cDovL3d3dy5jLWNwcC5ydS9jb250ZW50L3NjYW5m)
www.c-cpp.ru
Papercut
14.12.2019, 14:57
Делаю SF плагин, нужно усложие, чтобы при нажатии TAB и открытом чате... У меняя так:
C++:
if
(
SF
->
getGame
(
)
->
isKeyPressed
(
'TAB'
)
&&
SF
->
getSAMP
(
)
->
getInput
(
)
->
iInputEnabled
==
1
)
prt
(
)
;
что-то тут не так
Изучаю С++, возникла идея избавиться от стандартов C#.
Имею код
C++:
case
ScriptRPCEnumeration
::
RPC_ScrClientMessage
:
uint32 color
;
std
::
string msg
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
color
)
;
params
->
bitStream
->
SetReadOffset
(
32
)
;
params
->
bitStream
->
Read
(
msg
)
;
print
(
msg
)
;
Но он не хочет работать с классом std нормально.
Читал, что тип std::string самостоятельно устанавливает конец строки и ему не нужно дополнительно узнавать размер, по крайней мере так говорит сам VS
https://forum.antichat.xyz/attachments/27435553/
Если туда ещё и передавать размер:
https://forum.antichat.xyz/attachments/27435553/
Я что-то не так понимаю?
Musaigen
14.12.2019, 15:29
Изучаю С++, возникла идея избавиться от стандартов C#.
Имею код
C++:
case
ScriptRPCEnumeration
::
RPC_ScrClientMessage
:
uint32 color
;
std
::
string msg
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
color
)
;
params
->
bitStream
->
SetReadOffset
(
32
)
;
params
->
bitStream
->
Read
(
msg
)
;
print
(
msg
)
;
Но он не хочет работать с классом std нормально.
Читал, что тип std::string самостоятельно устанавливает конец строки и ему не нужно дополнительно узнавать размер, по крайней мере так говорит сам VS
Если туда ещё и передавать размер:
Я что-то не так понимаю?
Другое - С/С++ Вопрос - Ответ (https://blast.hk/threads/781/post-356424)
Собейт не установлен, "этот дом" потому что пробовал полностью - тоже не работает. Как оно должно заработать если строка не полная ?! Уже сколько раз отвечал как работает функция strcmp и strstr У кого-то руки не от туда растут, скорее всего Собейт не установлен, "этот дом" потому что пробовал...
blast.hk
Другое - С/С++ Вопрос - Ответ (https://blast.hk/threads/781/post-356424)
Собейт не установлен, "этот дом" потому что пробовал полностью - тоже не работает. Как оно должно заработать если строка не полная ?! Уже сколько раз отвечал как работает функция strcmp и strstr У кого-то руки не от туда растут, скорее всего Собейт не установлен, "этот дом" потому что пробовал...
blast.hk
Я не хочу использовать char, я же упомянул об этом.
Musaigen
14.12.2019, 15:57
Я не хочу использовать char, я же упомянул об этом.
std::string msg(szMsg);
traceattack
14.12.2019, 16:49
Делаю SF плагин, нужно усложие, чтобы при нажатии TAB и открытом чате... У меняя так:
C++:
if
(
SF
->
getGame
(
)
->
isKeyPressed
(
'TAB'
)
&&
SF
->
getSAMP
(
)
->
getInput
(
)
->
iInputEnabled
==
1
)
prt
(
)
;
что-то тут не так
1:
if
(
SF
->
getGame
(
)
->
isKeyPressed
(
VK_TAB
)
&&
SF
->
getSAMP
(
)
->
getInput
(
)
->
iInputEnabled
)
prt
(
)
;
Я не хочу использовать char, я же упомянул об этом.
2:
UINT32 dColor
;
UINT32 dMessageLength
;
char
temp
[
144
]
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
dColor
)
;
params
->
bitStream
->
Read
(
dMessageLength
)
;
params
->
bitStream
->
Read
(
temp
,
dMessageLength
)
;
temp
[
dMessageLength
]
=
'\0'
;
std
::
string str
=
temp
;
std::string msg(szMsg);
В классе стринг , нет такого конструктора насколько я знаю;
Papercut
14.12.2019, 19:00
1:
if
(
SF
->
getGame
(
)
->
isKeyPressed
(
VK_TAB
)
&&
SF
->
getSAMP
(
)
->
getInput
(
)
->
iInputEnabled
)
prt
(
)
;
Неа, не срабатывает(
traceattack
14.12.2019, 19:35
Неа, не срабатывает(
Код скинь
Papercut
14.12.2019, 19:36
Код скинь
Думаю, этог одостаточно будет:
void
CALLBACK
prt
(
)
{
std
::
string startstr
=
"{5e625d}[SF]{ffffff}: {c7de39}TAB-nick {5ede37}LOADED"
;
char
*
start
=
_strdup
(
startstr
.
c_str
(
)
)
;
char
t
[
10
]
;
sprintf
(
t
,
"%d"
,
SF
->
getSAMP
(
)
->
getInput
(
)
->
iInputEnabled
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
start
)
;
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
init
=
true
;
}
if
(
SF
->
getGame
(
)
->
isKeyPressed
(
VK_TAB
)
&&
SF
->
getSAMP
(
)
->
getInput
(
)
->
iInputEnabled
)
prt
(
)
;
}
traceattack
14.12.2019, 19:49
\
Думаю, этог одостаточно будет:
void
CALLBACK
prt
(
)
{
std
::
string startstr
=
"{5e625d}[SF]{ffffff}: {c7de39}TAB-nick {5ede37}LOADED"
;
char
*
start
=
_strdup
(
startstr
.
c_str
(
)
)
;
char
t
[
10
]
;
sprintf
(
t
,
"%d"
,
SF
->
getSAMP
(
)
->
getInput
(
)
->
iInputEnabled
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
start
)
;
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
init
=
true
;
}
if
(
SF
->
getGame
(
)
->
isKeyPressed
(
VK_TAB
)
&&
SF
->
getSAMP
(
)
->
getInput
(
)
->
iInputEnabled
)
prt
(
)
;
}
Не вижу никакой логики в программе , что ты конкретно хочешь?
Papercut
14.12.2019, 19:57
\
Не вижу никакой логики в программе , что ты конкретно хочешь?
Я же не прошу помочь мне с логикой программы. Конкретно тут я хочу вывести сообщение, если нажат таб и открыто окно ввода(чат)
traceattack
14.12.2019, 20:08
Я же не прошу помочь мне с логикой программы. Конкретно тут я хочу вывести сообщение, если нажат таб и открыто окно ввода(чат)
хукай wndproc
Lil Xean
14.12.2019, 20:11
Можно пожалуйста простенький гайд по структуре самой дллки, и как её перегнать в .asi?
traceattack
14.12.2019, 20:12
Можно пожалуйста простенький гайд по структуре самой дллки, и как её перегнать в .asi?
asi это тоже самое что и dll , только с другим расширением для загрузки в игру asi loader'ом
Papercut
14.12.2019, 21:58
хукай wndproc
Да, спасибо за совет(без рофла). Только из этого следует вопрос по wndproc:
При компиляции этого кода
По плану он должен исполняться:
void
CALLBACK
prtbtn
(
std
::
string c
)
{
char
*
btn
=
_strdup
(
c
.
c_str
(
)
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
btn
)
;
}
LRESULT CALLBACK
WndProc
(
HWND hWnd
,
UINT message
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
message
==
WM_KEYDOWN
)
{
if
(
wParam
==
'Y'
)
prtbtn
(
"Pressed"
)
;
return
0L
;
}
return
DefWindowProc
(
hWnd
,
message
,
wParam
,
lParam
)
;
}
Выходит ошибка:
Ошибка LNK2019 ссылка на неразрешенный внешний символ __imp__DefWindowProcA@16 в функции "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)
Musaigen
15.12.2019, 18:31
Какой адрес у функции, которую вызывает опкод 00с2 в клео?
randazzo
16.12.2019, 00:28
Какой адрес у функции, которую вызывает опкод 00с2 в клео?
mod-s0beit-sa/src/game_sa/CEntitySA.cpp at b89a1ec3ce683062e89b91ea59af0b9a02e02e3f · BIG686/mod-s0beit-sa (https://github.com/BIG686/mod-s0beit-sa/blob/b89a1ec3ce683062e89b91ea59af0b9a02e02e3f/src/game_sa/CEntitySA.cpp#L404)
Automatically exported from code.google.com/p/mod-s0beit-sa - BIG686/mod-s0beit-sa
github.com
есть две переменные типа string, под названием name, surname
вывод фразы: "Введите ваше имя и фамилию", если бы нужно было бы вести одно слово - можно было бы использовать просто cin, но так как вводится два слова, которых разделяет пробел - cin записывает второе слово (фамилию) сразу же второй переменной surname.
так как эти две переменные не являются символьным массивом (char), то cin.get или cin.getline становится проблематично использовать,, так как первый параметр - имя массива, а у меня просто переменная.
хотелось бы узнать, как в данном случае поступить.
спасибо за ответ.
есть две переменные типа string, под названием name, surname
вывод фразы: "Введите ваше имя и фамилию", если бы нужно было бы вести одно слово - можно было бы использовать просто cin, но так как вводится два слова, которых разделяет пробел - cin записывает второе слово (фамилию) сразу же второй переменной surname.
так как эти две переменные не являются символьным массивом (char), то cin.get или cin.getline становится проблематично использовать,, так как первый параметр - имя массива, а у меня просто переменная.
хотелось бы узнать, как в данном случае поступить.
спасибо за ответ.
Тебе надо записать оба слова в одну переменную? Почему возникли проблемы с cin? код покажи, и отметь строки на которых возникают проблемы, а еще лучше пропиши проблемы комментариями к коду
mod-s0beit-sa/src/game_sa/CEntitySA.cpp at b89a1ec3ce683062e89b91ea59af0b9a02e02e3f · BIG686/mod-s0beit-sa (https://github.com/BIG686/mod-s0beit-sa/blob/b89a1ec3ce683062e89b91ea59af0b9a02e02e3f/src/game_sa/CEntitySA.cpp#L404)
Automatically exported from code.google.com/p/mod-s0beit-sa - BIG686/mod-s0beit-sa
github.com
И зачем тебе asm и вообще вызов каких-либо функций?
CGame/CEntity.cpp · master · Prime-Hack / SAMP / Plugins / Templates / AsiBase · GitLab (https://gitlab.com/prime-hack/samp/plugins/templates/AsiBase/blob/master/CGame/CEntity.cpp#L25)
GitLab.com
gitlab.com
Да, спасибо за совет(без рофла). Только из этого следует вопрос по wndproc:
При компиляции этого кода
По плану он должен исполняться:
void
CALLBACK
prtbtn
(
std
::
string c
)
{
char
*
btn
=
_strdup
(
c
.
c_str
(
)
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
btn
)
;
}
LRESULT CALLBACK
WndProc
(
HWND hWnd
,
UINT message
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
message
==
WM_KEYDOWN
)
{
if
(
wParam
==
'Y'
)
prtbtn
(
"Pressed"
)
;
return
0L
;
}
return
DefWindowProc
(
hWnd
,
message
,
wParam
,
lParam
)
;
}
Выходит ошибка:
Ошибка LNK2019 ссылка на неразрешенный внешний символ __imp__DefWindowProcA@16 в функции "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)
Надо использовать CallWindowProc, а не DefWindowProc
Можно пожалуйста простенький гайд по структуре самой дллки, и как её перегнать в .asi?
Тебе надо записать оба слова в одну переменную? Почему возникли проблемы с cin? код покажи, и отметь строки на которых возникают проблемы, а еще лучше пропиши проблемы комментариями к коду
заранее извиняюсь за ***ню которую написал выше, сам сейчас прочитал и понял что это выглядит так, как будто это писал умственно-отсталый
да, нужно записать два слова в одну переменную стринг.
зайду с далека, с символьных массивов.
Код:
[CODE]
char name[30], dessert[35];
cout > name;
cout > dessert;
cout
- если написать код таким образом, то при вводе имени и фамилии (два слова, которых разделяет пробел) второе слово записывается сразу же в dessert, а фиксится это следующим образом:
Код:
[CODE]
char name[30], dessert[35];
cout
либо же используя getline, разница не велика, суть одна и та же.
вот я хочу проделать тоже самое с string(сделать возможным записать в нее два слова, между которыми стоит пробел), но get() и getline() просто не дает мне этого сделать, ибо первый параметр название символьного массива, вместо которого я использую обычный string.
[QUOTE="f.lux"]
заранее извиняюсь за ***ню которую написал выше, сам сейчас прочитал и понял что это выглядит так, как будто это писал умственно-отсталый
да, нужно записать два слова в одну переменную стринг.
зайду с далека, с символьных массивов.
Код:
[CODE]
char name[30], dessert[35];
cout > name;
cout > dessert;
cout
Дано натуральное число A > 0. Требуется вывести такое минимально возможное нечётное натуральное число K, при котором сумма 1*2 + 3*4 + … + K*(K+1) окажется больше A.
Объясните нормальным языком, что нужно сделать? Если сразу напишите программу, то сделайте пожалуйста комментарии
Дано натуральное число A > 0. Требуется вывести такое минимально возможное нечётное натуральное число K, при котором сумма 1*2 + 3*4 + … + K*(K+1) окажется больше A.
Объясните нормальным языком, что нужно сделать? Если сразу напишите программу, то сделайте пожалуйста комментарии
А чо сам домашку никак не можешь сделать? Вбей в гугл, давно решенная задачка.
А чо сам домашку никак не можешь сделать? Вбей в гугл, давно решенная задачка.
Да не, так скучно. Там объяснений нихера нет
Да не, так скучно. Там объяснений нихера нет
есть, но раз гуглить не хочешь - плати
как сделать exe file и через него подгружать в процесс gta sa файл?
ImmortalDev
18.12.2019, 15:44
Всем привет!
Решил поиграться с анимациями игрока.
В общем, имеется смещение - +0x15C, некоторые статусы анимации.
0 = прыгает от земли
61 = ударяет
102 = остановился
154 = спринт (бежит с ускорением)
205 = бежит
Так вот, как установить одну из этих анимок игроку?
Пробовал так:
C++:
DWORD anim
=
*
(
DWORD
*
)
0xB6F5F0
+
0x15C
;
anim
=
205
;
Не работает.
Dark_Knight
18.12.2019, 15:54
Потому что ты не правильно записываешь. Ты читаешь значение с записываешь в свою собственную переменную, а надо записывать значение в адрес переменной или тебе надо получить указатель переменной и записывать значение в него.
Бубликов И.И
18.12.2019, 15:58
Всем привет!
Решил поиграться с анимациями игрока.
В общем, имеется смещение - +0x15C, некоторые статусы анимации.
0 = прыгает от земли
61 = ударяет
102 = остановился
154 = спринт (бежит с ускорением)
205 = бежит
Так вот, как установить одну из этих анимок игроку?
Пробовал так:
C++:
DWORD anim
=
*
(
DWORD
*
)
0xB6F5F0
+
0x15C
;
anim
=
205
;
Не работает.
C++:
DWORD
*
anim
=
(
DWORD
*
)
(
0xB6F5F0
+
0x15C
)
;
*
anim
=
205
;
Вот так ведь это записывается
ImmortalDev
18.12.2019, 15:59
Потому что ты не правильно записываешь. Ты читаешь значение с записываешь в свою собственную переменную, а надо записывать значение в адрес переменной или тебе надо получить указатель переменной и записывать значение в него.
Хорошо, спасибо тебе.
C++:
DWORD
*
anim
=
(
DWORD
*
)
(
0xB6F5F0
+
0x15C
)
;
*
anim
=
205
;
Вот так ведь это записывается
не рабит, проверял
CleanLegend
18.12.2019, 20:43
как сделать exe file и через него подгружать в процесс gta sa файл?
Информация - Гайд - Пишем свой инжектор с выгрузкой [LoadLibraryA] (https://blast.hk/threads/34101/)
Привет, сегодня напишем простой инжектор с выгрузкой, с использованием функций LoadLibraryA и FreeLibrary Алгоритм инжекта: - получаем хэндл процесса в который будем инжектить - получаем путь до нашей dll - выделяем память для нашего пути - записываем его - получаем адрес LoadLibraryA и...
blast.hk
не рабит, проверял
Этот адрес дает только информацию, после изменения ничего не произойдет.
если хочешь задать анимацию, нужно вызвать нужную функцию, в собейте должны быть примеры
есть код, в котором описывается принцип работы ctime_t, но вот пару моментов мне не понятны, а автор их не объяснил, поэтому прошу помощи у вас, порылся малость на других сайтах, но толком ответа нормального не нашел.
Код:
[CODE]
using namespace std;
cout > secs;
clock_t delay = secs * CLOCKS_PER_SEC;
cout
благодарю за ответ.
[QUOTE="f.lux"]
есть код, в котором описывается принцип работы ctime_t, но вот пару моментов мне не понятны, а автор их не объяснил, поэтому прошу помощи у вас, порылся малость на других сайтах, но толком ответа нормального не нашел.
Код:
[CODE]
using namespace std;
cout > secs;
clock_t delay = secs * CLOCKS_PER_SEC;
cout
Dark_Knight
19.12.2019, 20:55
благодарю за ответ.
Советую разобраться с std::chrono. Удобная либа.
ImmortalDev
19.12.2019, 23:09
Пытался поставить флаги на игрока, нашел вот такую вот инфу:
CPed +0x42 = [float] Специальные флаги BP/EP/FP/DP игрока (неуязвимость к выстрелам, огню и т.д).
Сложите эти значения и запишите их сумму в +66 (0x42).
1 = отключает модель коллизии педа(тоесть, пед может проходить сквозь всего) (другими словами, режим noclip)
2 = замораживает педа (тоесть, пед не может двигаться)
4 = иммунитет к выстрелам
8 = иммунитет к огню
Пробовал вот так вот:
C++:
float
pflag
=
*
(
DWORD
*
)
(
0xB6F5F0
+
0x42
)
;
pflag
=
1.0f
;
Оно не рабит.
Что я делаю не так?
Dark_Knight
19.12.2019, 23:29
Потому что ты глуп - вот почему. Ты уже данную ошибку делал и тебе рассказали как надо работать.
ImmortalDev
19.12.2019, 23:46
Потому что ты глуп - вот почему. Ты уже данную ошибку делал и тебе рассказали как надо работать.
Типо, оно содержит инфу, но редачить нельзя?
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot