PDA

Просмотр полной версии : С/С++ Вопрос - Ответ


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [27] 28 29 30 31

вайега52
16.10.2022, 22:17
Как убрать перенос строк в vs 2022?

https://forum.antichat.xyz/attachments/28172169/

Upd: Ctrl + W

chapo
17.10.2022, 00:21
в чем проблема?

1665951714678.pngchapo · 16 Окт 2022 в 23:21' data-fancybox="lb-post-1172281" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/173308/" style="cursor: pointer;" title="1665951714678.png">
https://forum.antichat.xyz/attachments/28172281/

C++:






std
::
string ScriptPath
=
Path
+
"\\moonloader\\myfile.lua"
;
URLDownloadToFile
(
NULL
,
L
"https://site.domain/file.json"
,
(
LPCWSTR
)
ScriptPath
.
c_str
(
)
,
NULL
,
NULL
)
;

kin4stat
17.10.2022, 00:22
в чем проблема?

C++:






std
::
string ScriptPath
=
Path
+
"\\moonloader\\myfile.lua"
;
URLDownloadToFile
(
NULL
,
L
"https://site.domain/file.json"
,
(
LPCWSTR
)
ScriptPath
.
c_str
(
)
,
NULL
,
NULL
)
;





нельзя просто взять и превратить const char* в const wchar_t*

Используй std::wstring вместо std::string(а вообще для путей лучше std::filesystem::path)

earthlord
17.10.2022, 01:11
почему выводит 0? по идее должно быть число идентичное z1

1665954677231.pngearthlord · 17 Окт 2022 в 00:11' data-fancybox="lb-post-1172306" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/173315/" style="cursor: pointer;" title="1665954677231.png">
https://forum.antichat.xyz/attachments/28172306/

Eklessey
17.10.2022, 01:34
Здравствуйте, как вытащить int значение из адреса памяти?

C++

Savchik Blazer
17.10.2022, 08:36
Здравствуйте, как вытащить int значение из адреса памяти?
C++



C++:






int
i
=
*
reinterpret_cast

(
твой адрес
)
;

вайега52
17.10.2022, 18:08
Как проверить ид на существование? Пробовал вот так:

C++:






if
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
isListed
[
std
::
stoi
(
id
)
]
!=
1
&&
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
remotePlayerInfo
[
std
::
stoi
(
id
)
]
==
NULL
&&
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
remotePlayerInfo
[
std
::
stoi
(
id
)
]
->
data
==
NULL
&&
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
remotePlayerInfo
[
std
::
stoi
(
id
)
]
->
data
->
sampActor
==
NULL
&&
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
remotePlayerInfo
[
std
::
stoi
(
id
)
]
->
data
->
sampActor
->
gtaPed
==
NULL
)
// "id" - аргумент команды
{
AddChat
(
-
1
,
"Плеер потерялся :/."
)
;
// функция AddChat() объявлена в main.hpp
}
else
{
// действия с ID
}




Но если ввожу ID, которого нет на сервере - крашит

MeG@LaDo[N] ^_^
17.10.2022, 18:32
Как проверить ид на существование? Пробовал вот так:

C++:






if
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
isListed
[
std
::
stoi
(
id
)
]
!=
1
&&
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
remotePlayerInfo
[
std
::
stoi
(
id
)
]
==
NULL
&&
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
remotePlayerInfo
[
std
::
stoi
(
id
)
]
->
data
==
NULL
&&
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
remotePlayerInfo
[
std
::
stoi
(
id
)
]
->
data
->
sampActor
==
NULL
&&
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
remotePlayerInfo
[
std
::
stoi
(
id
)
]
->
data
->
sampActor
->
gtaPed
==
NULL
)
// "id" - аргумент команды
{
AddChat
(
-
1
,
"Плеер потерялся :/."
)
;
// функция AddChat() объявлена в main.hpp
}
else
{
// действия с ID
}




Но если ввожу ID, которого нет на сервере - крашит


достаточно одного SF->getSAMP()->getPlayers()->isListed[std::stoi(id)] на сколько помню

вайега52
17.10.2022, 18:50
^_^"]

достаточно одного SF->getSAMP()->getPlayers()->isListed[std::stoi(id)] на сколько помню


Сяб, работает. А что вообще обозначает эта функция? А то вырезал ее из Гайда Клина

Как правильно получить свои коорды (для дальнейшего получения дистанции между двумя точками)?

C++:






CVector
*
mpos
=
PEDSELF
->
GetPosition
(
)
;
AddChat
(
-
1
,
"Param: %s "
,
mpos
[
0
]
)
;

Z3roKwq
17.10.2022, 20:39
Как правильно получить свои коорды (для дальнейшего получения дистанции между двумя точками)?



cc:






//Вариант 1
D3DXVECTOR3
player
(
PEDSELF
->
GetPosition
(
)
->
fX
,
PEDSELF
->
GetPosition
(
)
->
fY
,
PEDSELF
->
GetPosition
(
)
->
fZ
)
;
//Использование
player
.
x
,
player
.
y
,
player
.
z
//Вариант 2
D3DXVECTOR3
player
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetOnFootData
(
id
)
->
position
[
0
]
,
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetOnFootData
(
id
)
->
position
[
1
]
,
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetOnFootData
(
id
)
->
position
[
2
]
)
;
//Где "id" указываеш свой ид
//Использование
player
.
x
,
player
.
y
,
player
.
z




но как по мне лучше юзать первый варик он нормально показывает, если юзать 2 то корды скакать будут при движении



cc:






//Вариант 1
D3DXVECTOR3
player
(
PEDSELF
->
GetPosition
(
)
->
fX
,
PEDSELF
->
GetPosition
(
)
->
fY
,
PEDSELF
->
GetPosition
(
)
->
fZ
)
;
//Использование
player
.
x
,
player
.
y
,
player
.
z
//Вариант 2
D3DXVECTOR3
player
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetOnFootData
(
id
)
->
position
[
0
]
,
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetOnFootData
(
id
)
->
position
[
1
]
,
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetOnFootData
(
id
)
->
position
[
2
]
)
;
//Где "id" указываеш свой ид
//Использование
player
.
x
,
player
.
y
,
player
.
z




но как по мне лучше юзать первый варик он нормально показывает, если юзать 2 то корды скакать будут при движении


p.s. 2 вариант для sf api 5.5.0(1)

MeG@LaDo[N] ^_^
17.10.2022, 21:22
Сяб, работает. А что вообще обозначает эта функция? А то вырезал ее из Гайда Клина


есть ли в табе такой айди( 1 - есть, 0 - нет)

вайега52
17.10.2022, 21:42
cc:






//Вариант 1
D3DXVECTOR3
player
(
PEDSELF
->
GetPosition
(
)
->
fX
,
PEDSELF
->
GetPosition
(
)
->
fY
,
PEDSELF
->
GetPosition
(
)
->
fZ
)
;
//Использование
player
.
x
,
player
.
y
,
player
.
z
//Вариант 2
D3DXVECTOR3
player
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetOnFootData
(
id
)
->
position
[
0
]
,
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetOnFootData
(
id
)
->
position
[
1
]
,
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetOnFootData
(
id
)
->
position
[
2
]
)
;
//Где "id" указываеш свой ид
//Использование
player
.
x
,
player
.
y
,
player
.
z




но как по мне лучше юзать первый варик он нормально показывает, если юзать 2 то корды скакать будут при движении

p.s. 2 вариант для sf api 5.5.0(1)


как на 5.5.1 можно получить свой айдишник?

upd: решил

Из-за чего ошибка?

C++:






pos
[
0
]
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
remotePlayerInfo
[
std
::
stoi
(
id
)
]
->
data
->
onFootPos
[
0
]
;
// X
pos
[
1
]
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
remotePlayerInfo
[
std
::
stoi
(
id
)
]
->
data
->
onFootPos
[
1
]
;
// Y
pos
[
2
]
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
remotePlayerInfo
[
std
::
stoi
(
id
)
]
->
data
->
onFootPos
[
2
]
;
// Z
D3DXVECTOR3
player
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetOnFootData
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
localPlayerInfo
.
id
)
->
position
[
0
]
,
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetOnFootData
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
localPlayerInfo
.
id
)
->
position
[
1
]
,
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetOnFootData
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
localPlayerInfo
.
id
)
->
position
[
2
]
)
;
float
dist
=
sqrt
(
(
pos
[
0
]
-
player
.
x
)
^
2
+
(
pos
[
1
]
-
player
.
y
)
^
2
+
(
pos
[
2
]
-
player
.
z
)
^
2
)
;




Пытаюсь найти дистанцию между моим персом и чужим, но появляется ошибка

https://forum.antichat.xyz/attachments/28172853/

MeG@LaDo[N] ^_^
17.10.2022, 22:51
как на 5.5.1 можно получить свой айдишник?
upd: решил

Из-за чего ошибка?

C++:






pos
[
0
]
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
remotePlayerInfo
[
std
::
stoi
(
id
)
]
->
data
->
onFootPos
[
0
]
;
// X
pos
[
1
]
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
remotePlayerInfo
[
std
::
stoi
(
id
)
]
->
data
->
onFootPos
[
1
]
;
// Y
pos
[
2
]
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
remotePlayerInfo
[
std
::
stoi
(
id
)
]
->
data
->
onFootPos
[
2
]
;
// Z
D3DXVECTOR3
player
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetOnFootData
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
localPlayerInfo
.
id
)
->
position
[
0
]
,
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetOnFootData
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
localPlayerInfo
.
id
)
->
position
[
1
]
,
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetOnFootData
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
localPlayerInfo
.
id
)
->
position
[
2
]
)
;
float
dist
=
sqrt
(
(
pos
[
0
]
-
player
.
x
)
^
2
+
(
pos
[
1
]
-
player
.
y
)
^
2
+
(
pos
[
2
]
-
player
.
z
)
^
2
)
;




Пытаюсь найти дистанцию между моим персом и чужим, но появляется ошибка


float GetDistance(float lPos[3], float pPos[3]) {

return sqrt((lPos[0] - pPos[0]) * (lPos[0] - pPos[0]) + (lPos[1] - pPos[1]) * (lPos[1] - pPos[1]) + (lPos[2] - pPos[2]) * (lPos[2] - pPos[2]));

}

и еще,если ты/игрок будет не пешком(в тачке или пассажире) то позиция обновляться не будет, потому что ты получаешь онфут позицию

вайега52
17.10.2022, 22:55
^_^"]

и еще,если ты/игрок будет не пешком(в тачке или пассажире) то позиция обновляться не будет, потому что ты получаешь онфут позицию


А как эт можно фиксануть? Добавить проверку на кар?

MeG@LaDo[N] ^_^
17.10.2022, 22:56
А как эт можно фиксануть? Добавить проверку на кар?


+

AdCKuY_DpO4uLa
18.10.2022, 11:44
Как происходит шифрование пакета RakClientInterface::RPС? Если отправлять РПЦ, то оно идёт куда-то в ракпир, где преобразуется в пакет (ID_RPC, rpcID(byte), битстрим самого РПЦ), потом идут какие-то махинации, как я понял, с AES шифрованием и ключом в 16 байт, после чего пакет идёт в SocketLayer::SendTo уже в зашифрованном виде, где шифруется дейтаграмма, не могу понять, откуда берётся этот ключ, которым шифруется пакет до SocketLayer::SendTo

kin4stat
18.10.2022, 13:27
Как происходит шифрование пакета RakClientInterface::RPС? Если отправлять РПЦ, то оно идёт куда-то в ракпир, где преобразуется в пакет (ID_RPC, rpcID(byte), битстрим самого РПЦ), потом идут какие-то махинации, как я понял, с AES шифрованием и ключом в 16 байт, после чего пакет идёт в SocketLayer::SendTo уже в зашифрованном виде, где шифруется дейтаграмма, не могу понять, откуда берётся этот ключ, которым шифруется пакет до SocketLayer::SendTo


authkey же

AdCKuY_DpO4uLa
18.10.2022, 13:39
authkey же


auth_key есть два типа, один идёт пакетом ID_AUTH_KEY, второй идёт в RPC_ClientJoin/RPC_NPCJoin, но когда ты этот РПЦ кидаешь, он переводится в пакет в ракпире, и как-то шифруется, если выводить байты этого РПЦ до отправки через RakClientInterface::RPC, то будет виден даже ник, который находится в битстриме RPC_ClientJoin, но если выводить те же самые байты в SocketLayer::SendTo до шифрования дейтограммы, то они уже будут зашифрованны чем-то, соответственно, ник уже не показывается во всём массиве байт, но и сам массив порядком увеличивается в размере, примерно на 40+- байт

вайега52
18.10.2022, 18:37
Из-за чего ошибки во время компиляции?

C++:






#include "imgui.h"
#include "imgui_impl_dx9.h"
#include "imgui_impl_win32.h"
#include
#define DIRECTINPUT_VERSION 0x0800
#include
#include
extern
LRESULT
ImGui_ImplWin32_WndProcHandler
(
HWND hWnd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
;
void
__stdcall
mainloop
(
)
{
static
bool
initialized
=
false
;
if
(
!
initialized
)
{
if
(
GAME
&&
GAME
->
GetSystemState
(
)
==
eSystemState
::
GS_PLAYING_GAME
&&
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
{
initialized
=
true
;
SF
->
getGame
(
)
->
registerGameDestructorCallback
(
PluginFree
)
;
SF
->
getRender
(
)
->
registerD3DCallback
(
eDirect3DDeviceMethods
::
D3DMETHOD_PRESENT
,
Present
)
;
SF
->
getRender
(
)
->
registerD3DCallback
(
eDirect3DDeviceMethods
::
D3DMETHOD_RESET
,
Reset
)
;
SF
->
getGame
(
)
->
registerWndProcCallback
(
SFGame
::
MEDIUM_CB_PRIORITY
,
WndProcHandler
)
;
ImGui
::
CreateContext
(
)
;
ImGuiIO
&
io
=
ImGui
::
GetIO
(
)
;
(
void
)
io
;
ImGui_ImplWin32_Init
(
GetActiveWindow
(
)
)
;
ImGui_ImplDX9_Init
(
SF
->
getRender
(
)
->
getD3DDevice
(
)
)
;
SF
->
getSAMP
(
)
->
registerChatCommand
(
"menui"
,
[
]
(
std
::
string
)
{
menu
=
!
menu
;
}
)
;
}
}
}
bool
CALLBACK
Present
(
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
if
(
SUCCEEDED
(
SF
->
getRender
(
)
->
BeginRender
(
)
)
)
{
ImGui_ImplDX9_NewFrame
(
)
;
ImGui_ImplWin32_NewFrame
(
)
;
ImGui
::
NewFrame
(
)
;
if
(
menu
)
{
ImGui
::
Begin
(
"ImGui меню"
,
&
menu
)
;
{
ImGui
::
Text
(
"Abc"
)
;
}
ImGui
::
End
(
)
;
}
ImGui
::
EndFrame
(
)
;
ImGui
::
Render
(
)
;
ImGui_ImplDX9_RenderDrawData
(
ImGui
::
GetDrawData
(
)
)
;
SF
->
getRender
(
)
->
EndRender
(
)
;
}
return
true
;
}
HRESULT CALLBACK
Reset
(
D3DPRESENT_PARAMETERS
*
pPresentationParameters
)
{
ImGui_ImplDX9_InvalidateDeviceObjects
(
)
;
return
true
;
}
bool
CALLBACK
WndProcHandler
(
HWND hwd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
{
ImGui_ImplWin32_WndProcHandler
(
hwd
,
msg
,
wParam
,
lParam
)
;
return
true
;
}
void
CALLBACK
PluginFree
(
)
{
ImGui_ImplDX9_Shutdown
(
)
;
ImGui_ImplWin32_Shutdown
(
)
;
ImGui
::
DestroyContext
(
)
;
}




main.hpp:






#pragma once
#include "SAMPFUNCS_API.h"
#include "game_api.h"
bool
CALLBACK
Present
(
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
;
HRESULT CALLBACK
Reset
(
D3DPRESENT_PARAMETERS
*
pPresentationParameters
)
;
bool
CALLBACK
WndProcHandler
(
HWND hwd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
;
void
CALLBACK
PluginFree
(
)
;
static
bool
menu
=
false
;
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
extern
SAMPFUNCS
*
SF
;




Код:






1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "struct ImGuiContext * __cdecl ImGui::CreateContext(struct ImFontAtlas *)" (?CreateContext@ImGui@@YAPAUImGuiContext@@PAUImFon tAtlas@@@Z) в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::DestroyContext(struct ImGuiContext *)" (?DestroyContext@ImGui@@YAXPAUImGuiContext@@@Z) в функции "void __stdcall PluginFree(void)" (?PluginFree@@YGXXZ).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "struct ImGuiIO & __cdecl ImGui::GetIO(void)" (?GetIO@ImGui@@YAAAUImGuiIO@@XZ) в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::NewFrame(void)" (?NewFrame@ImGui@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA @@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::EndFrame(void)" (?EndFrame@ImGui@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA @@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::Render(void)" (?Render@ImGui@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA @@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "struct ImDrawData * __cdecl ImGui::GetDrawData(void)" (?GetDrawData@ImGui@@YAPAUImDrawData@@XZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA @@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "bool __cdecl ImGui::Begin(char const *,bool *,int)" (?Begin@ImGui@@YA_NPBDPA_NH@Z) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA @@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::End(void)" (?End@ImGui@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA @@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::Text(char const *,...)" (?Text@ImGui@@YAXPBDZZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA @@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "bool __cdecl ImGui_ImplDX9_Init(struct IDirect3DDevice9 *)" (?ImGui_ImplDX9_Init@@YA_NPAUIDirect3DDevice9@@@Z) в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplDX9_Shutdown(void)" (?ImGui_ImplDX9_Shutdown@@YAXXZ) в функции "void __stdcall PluginFree(void)" (?PluginFree@@YGXXZ).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplDX9_NewFrame(void)" (?ImGui_ImplDX9_NewFrame@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA @@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplDX9_RenderDrawData(struct ImDrawData *)" (?ImGui_ImplDX9_RenderDrawData@@YAXPAUImDrawData@@ @Z) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA @@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplDX9_InvalidateDeviceObjects(void)" (?ImGui_ImplDX9_InvalidateDeviceObjects@@YAXXZ) в функции "long __stdcall Reset(struct _D3DPRESENT_PARAMETERS_ *)" (?Reset@@YGJPAU_D3DPRESENT_PARAMETERS_@@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "bool __cdecl ImGui_ImplWin32_Init(void *)" (?ImGui_ImplWin32_Init@@YA_NPAX@Z) в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplWin32_Shutdown(void)" (?ImGui_ImplWin32_Shutdown@@YAXXZ) в функции "void __stdcall PluginFree(void)" (?PluginFree@@YGXXZ).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplWin32_NewFrame(void)" (?ImGui_ImplWin32_NewFrame@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA @@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "long __cdecl ImGui_ImplWin32_WndProcHandler(struct HWND__ *,unsigned int,unsigned int,long)" (?ImGui_ImplWin32_WndProcHandler@@YAJPAUHWND__@@II J@Z) в функции "bool __stdcall WndProcHandler(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProcHandler@@YG_NPAUHWND__@@IIJ@Z).




https://forum.antichat.xyz/attachments/28173364/

sf 5.5.1

kin4stat
18.10.2022, 18:45
auth_key есть два типа, один идёт пакетом ID_AUTH_KEY, второй идёт в RPC_ClientJoin/RPC_NPCJoin, но когда ты этот РПЦ кидаешь, он переводится в пакет в ракпире, и как-то шифруется, если выводить байты этого РПЦ до отправки через RakClientInterface::RPC, то будет виден даже ник, который находится в битстриме RPC_ClientJoin, но если выводить те же самые байты в SocketLayer::SendTo до шифрования дейтограммы, то они уже будут зашифрованны чем-то, соответственно, ник уже не показывается во всём массиве байт, но и сам массив порядком увеличивается в размере, примерно на 40+- байт


Вообще, там либо AES шифрование ключом из пакета ID_AUTH_KEY, либо сжатие, только сегодня это рыл.

А к самому клиентджоину если мне память не изменяет еще дополнительные данные приписываются

Z3roKwq
18.10.2022, 20:39
Можно ли отрегистрировать(отменить регистрацию(я хз как сказать)) крч в муне есть функция sampUnregisterChatCommand() есть ли что то подобное в сф ну или как такое можно реализовать

AdCKuY_DpO4uLa
18.10.2022, 22:07
Можно ли отрегистрировать(отменить регистрацию(я хз как сказать)) крч в муне есть функция sampUnregisterChatCommand() есть ли что то подобное в сф ну или как такое можно реализовать



C++:






void
unregisterChatCommand
(
void
*
func
)
{
for
(
int
i
=
0
;
i

pCMDs
[
i
]
==
func
)
{
memset
(
&
g_Input
->
pCMDs
[
i
]
,
0
,
4
)
;
memset
(
g_Input
->
szCMDNames
[
i
]
,
0
,
33
)
;
memset
(
&
g_Input
->
szCMDNames
[
i
]
,
0
,
4
)
;
}
}
}

MeG@LaDo[N] ^_^
21.10.2022, 00:59
как отправить GET/POST запрос на https?? (без curl, бо установить его та еще дрочь)

и спарсить текст с определенного div-a

Savchik Blazer
21.10.2022, 01:01
^_^"]

как отправить GET/POST запрос на https?? (без curl, бо установить его та еще дрочь)
и спарсить текст с определенного div-a



Исходник - SendGet (https://www.blast.hk/threads/24280/)

Класс для отправки get запроса и получения ответа. CleanLegend/SendGet(https://github.com/CleanLegend/SendGet) Пример использования: MyGet MyGetGet; std::string myotvet; MyGetGet.Init("mysite.com"); MyGetGet.SendGet("test.php?user=test", myotvet); MyGetGet.DeInit();

www.blast.hk

MeG@LaDo[N] ^_^
21.10.2022, 01:10
Исходник - SendGet (https://www.blast.hk/threads/24280/)

Класс для отправки get запроса и получения ответа. CleanLegend/SendGet(https://github.com/CleanLegend/SendGet) Пример использования: MyGet MyGetGet; std::string myotvet; MyGetGet.Init("mysite.com"); MyGetGet.SendGet("test.php?user=test", myotvet); MyGetGet.DeInit();

www.blast.hk



это для http как я понял

nbljlb_bbljloro
22.10.2022, 05:29
C++:






fnSetInputMode
=
{
[
'0_3_7-R1'
]
=
0x09BD30
,
[
'0_3_DL-R1'
]
=
0x0A0530
}
,




Ищу данный оффсет только для р3

вайега52
23.10.2022, 01:59
Что такое ракпир/ракклиент?

ARMOR
23.10.2022, 13:31
C++:






fnSetInputMode
=
{
[
'0_3_7-R1'
]
=
0x09BD30
,
[
'0_3_DL-R1'
]
=
0x0A0530
}
,




Ищу данный оффсет только для р3



C++:






"0.3.7 R2"
=
0x9BDD0
"0.3.7 R3"
=
0x9FFE0
"0.3.7 R4"
=
0xA0720

AdCKuY_DpO4uLa
23.10.2022, 15:12
крашит игру при отправке пакета

codee:






bool
CALLBACK
incomingPacket
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
215
)
{
BitStream bs
;
char
*
rpc
=
"OnPlayerStartLogin"
,
*
password
=
"123456"
;
params
->
bitStream
->
IgnoreBits
(
8
)
;
if
(
params
->
bitStream
->
Read
(
bs
)
==
2
)
{
uint32 a
=
params
->
bitStream
->
Read
(
bs
)
;
char
e
[
1028
]
=
{
}
;
for
(
int
i
=
1
;
params
->
bitStream
->
Read
(
bs
)
;
i
++
)
{
uint32 l
=
params
->
bitStream
->
Read
(
bs
)
;
params
->
bitStream
->
Read
(
e
,
l
)
;
}
if
(
std
::
size
(
e
)
>
0
)
{
char
text
=
e
[
1
]
;
if
(
text
==
'Auth'
)
{
BitStream bsn
;
params
->
bitStream
->
Write
(
(
uint8
)
215
)
;
params
->
bitStream
->
Write
(
(
uint16
)
2
)
;
params
->
bitStream
->
Write
(
(
uint32
)
0
)
;
params
->
bitStream
->
Write
(
(
uint32
)
18
)
;
params
->
bitStream
->
Write
(
rpc
)
;
params
->
bitStream
->
Write
(
(
uint32
)
2
)
;
params
->
bitStream
->
Write
(
(
uint8
)
115
)
;
params
->
bitStream
->
Write
(
(
uint16
)
strlen
(
password
)
)
;
params
->
bitStream
->
Write
(
(
uint16
)
0
)
;
params
->
bitStream
->
Write
(
password
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsn
)
;
}
}
}
SF
->
getRakNet
(
)
->
SendPacket
(
&
bs
)
;
//как я понял крашит именно на этой отправке
}
;
return
true
;
}
;





это каша какая-то, что ты вообще хотел написать?

Z3roKwq
23.10.2022, 15:52
это каша какая-то, что ты вообще хотел написать?


Так то автологин(авторизация там на цефе,), ну тут больше не то что написать, скорее переписать с луа, я щас вгляделся реально каша, xd

вайега52
23.10.2022, 15:56
В каких играх кроме самп используется ракнет?

Ceonas
23.10.2022, 21:49
Как происходить работа со звуком в SF ?

Пример: при нажатии клавиши N проигрывается звук выстрела

AdCKuY_DpO4uLa
23.10.2022, 23:51
Как происходить работа со звуком в SF ?
Пример: при нажатии клавиши N проигрывается звук выстрела



PlaySound function (Windows) (https://www.blast.hk/redirect/aHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL3ByZX Zpb3VzLXZlcnNpb25zL2RkNzQzNjgwKHY9dnMuODUp)

learn.microsoft.com

ччбчлчлчъ ччччшчьпьппзвжв
26.10.2022, 00:51
C++:





[CODE]
template

struct
ExtendStack
:
public
std
::
stack

{
ExtendStack
(
)
{
}
;
ExtendStack
(
std
::
initializer_list

l
)
:
std
::
stack

(
l
)
{
}
void
Reverse
(
)
{
stack

_t
;
while
(
this
->
size
(
)
!=
0
)
{
_t
.
push
(
this
->
top
(
)
)
;
this
->
pop
(
)
;
}
stack

(
_t
)
;
//



https://forum.antichat.xyz/attachments/28178950/

как решается это?

Eklessey
26.10.2022, 01:13
[QUOTE="rinkу"]

C++:





[CODE]
template

struct
ExtendStack
:
public
std
::
stack

{
ExtendStack
(
)
{
}
;
ExtendStack
(
std
::
initializer_list

l
)
:
std
::
stack

(
l
)
{
}
void
Reverse
(
)
{
stack

_t
;
while
(
this
->
size
(
)
!=
0
)
{
_t
.
push
(
this
->
top
(
)
)
;
this
->
pop
(
)
;
}
stack

(
_t
)
;
//

ччбчлчлчъ ччччшчьпьппзвжв
26.10.2022, 02:05
Идентификаторы определены более одного раза, или последующее объявления отличаются от предыдущего


Ахуеть спасибо, я то и не знал как решить это, ебать огромное спасибо, а этот код что ты написал куда вставлять? Дырка мне в кеды

Вопрос открыт, что нужно изменить чтобы все заработало, помогите пожалуйста

KOLBASKA@
27.10.2022, 14:47
Здарова кенты, подскажите кто шарит на чём можно написать вот такую вот фигнюшку кароче.

У меня есть картинка с символами например "FD3DSAD" Типо капчи, как мне сделать так что бы оно считовалось и само ниже вводилось можно на сайте, вот пример нашёл что бы поняли

вайега52
27.10.2022, 15:02
Здарова кенты, подскажите кто шарит на чём можно написать вот такую вот фигнюшку кароче.
У меня есть картинка с символами например "FD3DSAD" Типо капчи, как мне сделать так что бы оно считовалось и само ниже вводилось можно на сайте, вот пример нашёл что бы поняли


Это текстдрав? Чекни исходники автокапчи на луа и переделай под спп

KOLBASKA@
27.10.2022, 15:17
на гит хабе есть исходинки автокапчи?



Это текстдрав? Чекни исходники автокапчи на луа и переделай под спп

вайега52
27.10.2022, 16:15
на гит хабе есть исходинки автокапчи?



Lua - [ARZ] [OpenSource] Слив KeySpoof (Lua + Python) (https://www.blast.hk/threads/61603/)

Разработчики Arizona RP забили болт на ловлю и теперь почти каждый бизнес забирает софт, а обычные ловцы страдают. Данный скрипт сливаю для того, чтобы у всех были равные условия. Описание: скрипт считывает капчу, реагируя на любые нажатия цифр, вводит правильные символы. Установка...

www.blast.hk

x301
29.10.2022, 10:39
Можете скинуть memset для c++?

AdCKuY_DpO4uLa
29.10.2022, 12:32
Можете скинуть memset для c++?



memset, wmemset (https://www.blast.hk/redirect/aHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL3J1LXJ1L2NwcC 9jLXJ1bnRpbWUtbGlicmFyeS9yZWZlcmVuY2UvbWVtc2V0LXdt ZW1zZXQ_dmlldz1tc3ZjLTE3MCZ2aWV3RmFsbGJhY2tGcm9tPX ZzLTIwMTk)

Дополнительные сведения: memset, wmemset

learn.microsoft.com

ччбчлчлчъ ччччшчьпьппзвжв
29.10.2022, 12:35
[QUOTE="rinkу"]

C++:





[CODE]
template

struct
ExtendStack
:
public
std
::
stack

{
ExtendStack
(
)
{
}
;
ExtendStack
(
std
::
initializer_list

l
)
:
std
::
stack

(
l
)
{
}
void
Reverse
(
)
{
stack

_t
;
while
(
this
->
size
(
)
!=
0
)
{
_t
.
push
(
this
->
top
(
)
)
;
this
->
pop
(
)
;
}
stack

(
_t
)
;
//

x301
29.10.2022, 16:50
Кто может скинуть memset + VirtualProtect? Срочно

Eklessey
29.10.2022, 19:01
Кто может скинуть memset + VirtualProtect? Срочно



memset – функция языка Си. "Все о Hi-Tech" (https://www.blast.hk/redirect/aHR0cDovL2FsbC1odC5ydS9pbmYvcHJvZy9jL2Z1bmMvbWVtc2 V0Lmh0bWw)

all-ht.ru


Функция VirtualProtect (memoryapi.h) - Win32 apps (https://www.blast.hk/redirect/aHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL3J1LXJ1L3dpbm Rvd3Mvd2luMzIvYXBpL21lbW9yeWFwaS9uZi1tZW1vcnlhcGkt dmlydHVhbHByb3RlY3Q)

Изменяет защиту в регионе зафиксированных страниц в виртуальном адресном пространстве вызывающего процесса. (VirtualProtect)

learn.microsoft.com

MeG@LaDo[N] ^_^
29.10.2022, 20:13
Как можно вернуть два значения или больше в результат функции луа? как вот тут

1667059888889.pngMeG@LaDo[N] ^_^ · 29 Окт 2022 в 19:13' data-fancybox="lb-post-1181702" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/175139/" style="cursor: pointer;" title="1667059888889.png">
https://forum.antichat.xyz/attachments/28181702/

попробовал заюзать std::tuple но осознал что это бред

https://forum.antichat.xyz/attachments/28181702/

вот регистрация функции

https://forum.antichat.xyz/attachments/28181702/

использую lua51 + LuaBridge

update:

я понял как это реализовать

https://forum.antichat.xyz/attachments/28181702/

https://forum.antichat.xyz/attachments/28181702/

https://forum.antichat.xyz/attachments/28181702/

https://forum.antichat.xyz/attachments/28181702/

x301
29.10.2022, 23:05
Помогите убрать лимит машин в клиенте самп

Eklessey
30.10.2022, 00:49
Помогите убрать лимит машин в клиенте самп


https://www.blast.hk/threads/90249/ (исходник)

или вот файл

Софт - DontLimitVehicle (https://www.blast.hk/threads/78024/)

DontLimitVehicle Этот патч, увеличивает лимит моделей машин с 211 (400-611) до 19600 (400-20000) Работает только на ВДС или Локальной сети! Этот патч ранее я не видел чтобы сливался! Установка очень простая изменить ваш samp-server на этот патч! Удачи в использований)

www.blast.hk

san0
30.10.2022, 01:02
как решается это?



C++:






void
Reverse
(
)
{
typename
std
::
remove_pointer

::
type temp
{
}
;
for
(
;
!
this
->
empty
(
)
;
this
->
pop
(
)
)
temp
.
push
(
this
->
top
(
)
)
;
*
this
=
std
::
move
(
temp
)
;
}

x301
30.10.2022, 07:10
https://www.blast.hk/threads/90249/ (исходник)
или вот файл

Софт - DontLimitVehicle (https://www.blast.hk/threads/78024/)

DontLimitVehicle Этот патч, увеличивает лимит моделей машин с 211 (400-611) до 19600 (400-20000) Работает только на ВДС или Локальной сети! Этот патч ранее я не видел чтобы сливался! Установка очень простая изменить ваш samp-server на этот патч! Удачи в использований)

www.blast.hk



Ошибка с Utils::Memory::MemoryFill

Eklessey
30.10.2022, 13:54
Ошибка с Utils::Memory::MemoryFill


Не пробывал глянуть гитхаб проекта?

ну или заменить эти строчки

1:






Utils
::
Memory
::
MemoryFill
(
PatchAddressFirst
,
0x90
,
6
,
true
)
;
// Off Vehicles Check
Utils
::
Memory
::
MemoryFill
(
PatchAddressSecond
,
0x90
,
6
,
true
)
;
// Off Vehicles Check




на другой оператор который изменяет память, тот же reinterpret_cast

Z3roKwq
30.10.2022, 18:38
как можно выгрузить плагин? без ручного написания pfree в консоль

пробоал:






SF
->
execConsoleCommand
(
"pfree "
+
SF
->
getSAMP
(
)
->
getPluginInfo
(
)
->
getPluginName
(
)
)
;




и так пробовал:






SF
->
unloadPlugin
(
SF
->
getSAMP
(
)
->
getPluginInfo
(
)
->
getPluginName
(
)
)
;




ну и конечно крашит, где то в теме с сф я прочитал что нельзя "Нельзя самого себя выгружать из плагина", но должен же быть какой то выход

moreveal
31.10.2022, 00:55
Пытаюсь изменять текст, введенный в консоль SAMPFUNCS. Стандартных функций не нашел, поэтому с помощью CE нашел указатель:

[ "SAMPFUNCS.asi" + 0x11572C -> 0xB0 -> 0x38 -> 0x5C -> 0x0 ]

Написал функцию, получающую сам адрес, но при попытке записать/прочесть значение - крашится игра, жалуясь на необработанное исключение в SAMPFUNCS.asi

Может что-то не так делаю? Можете ли поделиться примером того, как записать/прочитать строку по найденному адресу?

Savchik Blazer
31.10.2022, 01:24
Написал функцию


Скинь код



Можете ли поделиться примером того, как записать/прочитать строку по найденному адресу?



C++:






reinterpret_cast

(
твой адрес
)
;




C++:






std
::
strcpy
(
reinterpret_cast

(
адрес
)
,
"твое значение"
)
;

x301
31.10.2022, 10:26
C++:






Utils
::
Memory
::
MemoryFill
(
PatchAddressFirst
,
0x90
,
6
,
true
)
;
// Off Vehicles Check
Utils
::
Memory
::
MemoryFill
(
PatchAddressSecond
,
0x90
,
6
,
true
)
;
// Off Vehicles Check




Ошибки в этих строках "Utils::Memory::MemoryFill", можете подробно описать как устранить ошибку?

AdCKuY_DpO4uLa
31.10.2022, 10:57
C++:






Utils
::
Memory
::
MemoryFill
(
PatchAddressFirst
,
0x90
,
6
,
true
)
;
// Off Vehicles Check
Utils
::
Memory
::
MemoryFill
(
PatchAddressSecond
,
0x90
,
6
,
true
)
;
// Off Vehicles Check




Ошибки в этих строках "Utils::Memory::MemoryFill", можете подробно описать как устранить ошибку?


Заюзать memset и VitrualProtect

x301
31.10.2022, 11:03
Заюзать memset и VitrualProtect


можешь инклюды скинуть?

AdCKuY_DpO4uLa
31.10.2022, 11:15
можешь инклюды скинуть?


Windows.h, memory.h

x301
31.10.2022, 11:55
Windows.h, memory.h


не помогло

Z3roKwq
31.10.2022, 12:01
как можно выгрузить плагин?


up

Eklessey
31.10.2022, 12:30
up


Если я правильно понял то -

Попробуй это:

C++:






// Ждем нажатия клавиши END и всё. В случае нажатия,
// выходим из цикла и потока
while
(
!
GetAsyncKeyState
(
VK_END
)
&
1
)
{
std
::
this_thread
::
sleep_for
(
std
::
chrono
::
milliseconds
(
10
)
)
;
}
FreeConsole
(
)
;
Sleep
(
2000
)
;
FreeLibraryAndExitThread
(
static_cast

(
lpReserved
)
,
0
)
;
return
TRUE
;




Или

DLL_PROCESS_DETACH

мистер вселенная
31.10.2022, 18:06
Где найти адреса для перевода samp.dll? Имею ввиду сообщения при подключении к серверу и остальной интерфейс с текстом. (версия r3)

MeG@LaDo[N] ^_^
31.10.2022, 18:14
Где найти адреса для перевода samp.dll? Имею ввиду сообщения при подключении к серверу и остальной интерфейс с текстом. (версия r3)


в иде искать по строкам (шифт + ф12 генерирует их)

либо чекни мои темы и найди Украинский самп и просто меняй текст, там для всех версий

ARMOR
31.10.2022, 18:15
Где найти адреса для перевода samp.dll? Имею ввиду сообщения при подключении к серверу и остальной интерфейс с текстом. (версия r3)


Через IDA сгенерировать строки, найти нужные и потом менять строки которые тебе нужны.

MeG@LaDo[N] ^_^
31.10.2022, 18:44
есть смысл ставить const в аргументы функции если в теле ты его не меняешь?

ARMOR
31.10.2022, 18:48
^_^"]

есть смысл ставить const в аргументы функции если в теле ты его не меняешь?


Просто как меру предосторожности лучше ставить.

MeG@LaDo[N] ^_^
31.10.2022, 18:49
Просто как меру предосторожности лучше ставить.


а на оптимизацию как то влияет? я где то слышал что да но слабо, хочу уточнить

мистер вселенная
31.10.2022, 18:52
^_^"]

в иде искать по строкам (шифт + ф12 генерирует их)
либо чекни мои темы и найди Украинский самп и просто меняй текст, там для всех версий



https://forum.antichat.xyz/attachments/28183397/

Вот адрес смещения, если я правильно понял.

https://forum.antichat.xyz/attachments/28183397/

я делаю так и по итогу у меня вот че за ***ня

https://forum.antichat.xyz/attachments/28183397/

https://forum.antichat.xyz/attachments/28183397/

MeG@LaDo[N] ^_^
31.10.2022, 18:54
Вот адрес смещения, если я правильно понял.

я делаю так и по итогу у меня вот че за ***ня


превысил лимит байтов

мистер вселенная
31.10.2022, 19:07
https://forum.antichat.xyz/attachments/28183427/

во дела

https://forum.antichat.xyz/attachments/28183427/

Musaigen
31.10.2022, 19:08
Вот адрес смещения, если я правильно понял.

я делаю так и по итогу у меня вот че за ***ня


Замени адрес где строка используется, чтобы такого не было.

MeG@LaDo[N] ^_^
31.10.2022, 19:08
во дела


кастуй в void*, static_cast вроде пропустит, а если нет юзай reinterpret_cast

Musaigen
31.10.2022, 19:09
во дела


static_cast(const_cast(stroka));

x301
31.10.2022, 19:32
C++:






Utils
::
Memory
::
MemoryFill
(
PatchAddressFirst
,
0x90
,
6
,
true
)
;
// Off Vehicles Check
Utils
::
Memory
::
MemoryFill
(
PatchAddressSecond
,
0x90
,
6
,
true
)
;
// Off Vehicles Check




Помогите исправить ошибку: имя, за которым следует выражение "::", должно определять класс или пространство имен

MeG@LaDo[N] ^_^
31.10.2022, 21:27
C++:






Utils
::
Memory
::
MemoryFill
(
PatchAddressFirst
,
0x90
,
6
,
true
)
;
// Off Vehicles Check
Utils
::
Memory
::
MemoryFill
(
PatchAddressSecond
,
0x90
,
6
,
true
)
;
// Off Vehicles Check




Помогите исправить ошибку: имя, за которым следует выражение "::", должно определять класс или пространство имен


изучи основы плюсов бро

ARMOR
31.10.2022, 21:31
Пытаюсь хукнуть диалоги на чистых плюсах.

Возник попрос как записывать такое значение из стека при его вытаскивании:

https://forum.antichat.xyz/attachments/28183615/

типо

C++:






mov eax
,
[
esp
+
-
0x0C
]
mov eax
,
[
esp
+
-
0x08
]




Или как?

x301
31.10.2022, 21:55
^_^"]

изучи основы плюсов бро


Мне для одного плагина С учить?)

MeG@LaDo[N] ^_^
31.10.2022, 21:57
Мне для одного плагина С учить?)


да,и не C а C++

x301
31.10.2022, 21:58
^_^"]

да


Сложно помочь?

RTD
31.10.2022, 21:58
Пытаюсь хукнуть диалоги на чистых плюсах.
Возник попрос как записывать такое значение из стека при его вытаскивании:

типо

C++:






mov eax
,
[
esp
+
-
0x0C
]
mov eax
,
[
esp
+
-
0x08
]




Или как?


Чистые плюсы это в твоем понимании обмазаться асемблером? Напиши прототип и не еби мозги

ARMOR
31.10.2022, 22:07
Чистые плюсы это в твоем понимании обмазаться асемблером? Напиши прототип и не еби мозги


Я делаю jmp хук по гайду кинча

Гайд - Хуки – что это такое и как с ними работать [2] (https://www.blast.hk/threads/91079/)

Хотел продолжить первый гайд, но понял что нужно объяснить что такое хуки Создание ASI-плагина с нуля Хуки – что это такое и как с ними работать Безопасная инициализация и работа с SAMP Работа с рендером и Directx9 Обработка событий окна + ImGui В этом гайде я расскажу что такое хуки, как...

www.blast.hk


Только ставлю прототип и асемблер от диалогов.

Код:

C++:






void
dialogHook
(
void
*
pDialog
,
uint16_t
wID
,
uint8_t
iStyle
,
const
char
*
szCaption
,
const
char
*
szText
,
const
char
*
szButton1
,
const
char
*
szButton2
,
BOOL bSend
)
{
AddMessageJumpQ
(
"~r~Hello from blast.hk"
,
5000
,
0
,
false
)
;
}
void
__declspec
(
naked
)
HOOK_Raw_Dialog
(
void
)
{
static
void
*
pDialog
;
static
int
wId
;
static
int
iStyle
;
static
const
char
*
szCaption
;
static
const
char
*
szText
;
static
const
char
*
szButton1
;
static
const
char
*
szButton2
;
static
BOOL bSend
;
__asm
{
// Вытаскиваем все аргументы со стека
mov eax
,
[
esp
+
-
0x0C
]
mov wId
,
eax
mov eax
,
[
esp
+
-
0x08
]
mov iStyle
,
eax
mov eax
,
[
esp
+
0x04
]
mov szCaption
,
eax
mov eax
,
[
esp
+
0x08
]
mov szText
,
eax
mov eax
,
[
esp
+
0x0C
]
mov szButton1
,
eax
mov eax
,
[
esp
+
0x10
]
mov szButton2
,
eax
mov eax
,
[
esp
+
0x1C
]
mov bSend
,
eax
pushad
// Сохраняем все регистры
}
dialogHook
(
pDialog
,
wId
,
iStyle
,
szCaption
,
szText
,
szButton1
,
szButton2
,
bSend
)
;
__asm
{
popad
// вытаскиваем сохраненные регистры
// Прыгаем в трамплин для продолжения исполнения. Если не нужно продолжать исполнение - нужно поставить опкод ret
jmp pOriginalFunction
}
}

RTD
31.10.2022, 22:34
Я делаю jmp хук по гайду кинча

Гайд - Хуки – что это такое и как с ними работать [2] (https://www.blast.hk/threads/91079/)

Хотел продолжить первый гайд, но понял что нужно объяснить что такое хуки Создание ASI-плагина с нуля Хуки – что это такое и как с ними работать Безопасная инициализация и работа с SAMP Работа с рендером и Directx9 Обработка событий окна + ImGui В этом гайде я расскажу что такое хуки, как...

www.blast.hk


Только ставлю прототип и асемблер от диалогов.

Код:

C++:






void
dialogHook
(
void
*
pDialog
,
uint16_t
wID
,
uint8_t
iStyle
,
const
char
*
szCaption
,
const
char
*
szText
,
const
char
*
szButton1
,
const
char
*
szButton2
,
BOOL bSend
)
{
AddMessageJumpQ
(
"~r~Hello from blast.hk"
,
5000
,
0
,
false
)
;
}
void
__declspec
(
naked
)
HOOK_Raw_Dialog
(
void
)
{
static
void
*
pDialog
;
static
int
wId
;
static
int
iStyle
;
static
const
char
*
szCaption
;
static
const
char
*
szText
;
static
const
char
*
szButton1
;
static
const
char
*
szButton2
;
static
BOOL bSend
;
__asm
{
// Вытаскиваем все аргументы со стека
mov eax
,
[
esp
+
-
0x0C
]
mov wId
,
eax
mov eax
,
[
esp
+
-
0x08
]
mov iStyle
,
eax
mov eax
,
[
esp
+
0x04
]
mov szCaption
,
eax
mov eax
,
[
esp
+
0x08
]
mov szText
,
eax
mov eax
,
[
esp
+
0x0C
]
mov szButton1
,
eax
mov eax
,
[
esp
+
0x10
]
mov szButton2
,
eax
mov eax
,
[
esp
+
0x1C
]
mov bSend
,
eax
pushad
// Сохраняем все регистры
}
dialogHook
(
pDialog
,
wId
,
iStyle
,
szCaption
,
szText
,
szButton1
,
szButton2
,
bSend
)
;
__asm
{
popad
// вытаскиваем сохраненные регистры
// Прыгаем в трамплин для продолжения исполнения. Если не нужно продолжать исполнение - нужно поставить опкод ret
jmp pOriginalFunction
}
}





msvc компиль?

C++:






void
__fastcall
dialogHook
(
void
*
pDialog
,
void
*
fastcallshit
,
uint16_t
wID
,
uint8_t
iStyle
,
const
char
*
szCaption
,
const
char
*
szText
,
const
char
*
szButton1
,
const
char
*
szButton2
,
BOOL bSend
)
{
AddMessageJumpQ
(
"~r~Hello from blast.hk"
,
5000
,
0
,
false
)
;
reinterpret_cast

(
pOriginalFunction
)
(
pDialog
,
fastcallshit
,
wID
,
iStyle
,
"Kek"
,
szText
,
szButton1
,
szButton2
,
bSend
)
;
//decltype потому что мне лень писать...
}

Eklessey
31.10.2022, 22:37
Мне для одного плагина С учить?)


Если тебе уж нужен только 1 плагин, то закажи его.

Ceonas
01.11.2022, 11:43
Как узнать есть ли игрок в поле видимости по ID(как пример не за стеной ли)

Savchik Blazer
04.11.2022, 02:09
Как изменить шаблон проекта в vs который нацелен на сборку dll, на тот, что собирает kernel драйвер (.sys)?



Creating a Driver Package - Windows drivers (https://www.blast.hk/redirect/aHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL3dpbm Rvd3MtaGFyZHdhcmUvZHJpdmVycy9kZXZlbG9wL2NyZWF0aW5n LWEtZHJpdmVyLXBhY2thZ2U)

Creating a Driver Package

learn.microsoft.com

мистер вселенная
05.11.2022, 22:55
как отключить весь рендер чата в сампе r3?

то есть включая все задействоавнные кнопки (ф6, t, pgdown, pgup)

скроллбар и мышь

dinky
06.11.2022, 14:31
не собирается прога, из-за инклудов что делать?

C++:





[CODE]
#include
#include
#include
//из-за этих инклудов не собирается прога
#include
//из-за этих инклудов не собирается прога
int
main
(
)
{
using
namespace
std
;
string
sda
(
"dadasdasdadafdfgsdf"
)
;
transform
(
sda
.
begin
(
)
,
sda
.
end
(
)
,
sda
.
begin
(
)
,
toupper
)
;
cout



1667730718225.pngdinky · 6 Ноя 2022 в 13:31' data-fancybox="lb-post-1188663" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/176453/" style="cursor: pointer;" title="1667730718225.png">
https://forum.antichat.xyz/attachments/28188663/

#Northn
06.11.2022, 14:36
[QUOTE="dinky"]

не собирается прога, из-за инклудов что делать?

C++:






#include
#include
#include
//из-за этих инклудов не собирается прога
#include
//из-за этих инклудов не собирается прога
int
main
(
)
{
using
namespace
std
;
string
sda
(
"dadasdasdadafdfgsdf"
)
;
transform
(
sda
.
begin
(
)
,
sda
.
end
(
)
,
sda
.
begin
(
)
,
toupper
)
;
cout

C++:





[CODE]
transform
(
sda
.
cbegin
(
)
,
sda
.
cend
(
)
,
sda
.
begin
(
)
,
[
]
(
unsigned
char
c
)
{
return
std
::
toupper
(
c
)
;
}
)
;

мистер вселенная
06.11.2022, 23:26
как отключить весь рендер чата в сампе r3?
то есть включая все задействоавнные кнопки (ф6, t, pgdown, pgup)
скроллбар и мышь


ап

Ceonas
07.11.2022, 00:06
Как узнать есть ли игрок в поле видимости по ID(как пример не за стеной ли)


бамп

kin4stat
07.11.2022, 00:12
бамп


ProcessLineOfSight

AdCKuY_DpO4uLa
08.11.2022, 10:07
У кого-нибудь есть адрес


bool RakPeer::RunUpdateCycle( void )

под r1/r3?

maynkraftpro2010
08.11.2022, 18:55
Где искать адреса и прототипы функций?

Пример: я хочу хукнуть CVehicle::CreateCar (адрес 0x0043A0B6), но не знаю прототип

Ещё нужно хукнуть функцию спавна любого педа, но я не знаю ни прототип, ни адрес

Как быть?

AdCKuY_DpO4uLa
08.11.2022, 19:58
Где искать адреса и прототипы функций?
Пример: я хочу хукнуть CVehicle::CreateCar (адрес 0x0043A0B6), но не знаю прототип
Ещё нужно хукнуть функцию спавна любого педа, но я не знаю ни прототип, ни адрес
Как быть?


В plugin sdk можешь посмотреть

EclipsedFlow
08.11.2022, 20:33
Где искать адреса и прототипы функций?
Пример: я хочу хукнуть CVehicle::CreateCar (адрес 0x0043A0B6), но не знаю прототип
Ещё нужно хукнуть функцию спавна любого педа, но я не знаю ни прототип, ни адрес
Как быть?


Plugin SDK либо IDA перейди по адресу функции и гляну прототип функи

мистер вселенная
10.11.2022, 14:38
где найти адрес рендера всего чата?

Savchik Blazer
10.11.2022, 14:49
где найти адрес рендера всего чата?



SAMP-API/src/sampapi/0.3.7-R1/CChat.cpp at multiver · BlastHackNet/SAMP-API (https://github.com/BlastHackNet/SAMP-API/blob/multiver/src/sampapi/0.3.7-R1/CChat.cpp)

A library for interacting with functions, classes and structures of SA-MP client - BlastHackNet/SAMP-API

github.com

MeG@LaDo[N] ^_^
10.11.2022, 14:53
Как записать в .json файл кириллицу?

использую nlohmann::json

знаю шо можно сделать вот так u8"Пися" но мне нужно записать текст из переменной в которую я буду записывать строку при помощи std::cin

chapo
10.11.2022, 17:55
В чем проблема?

https://forum.antichat.xyz/attachments/28191904/

https://forum.antichat.xyz/attachments/28191904/

другие плагины загружаются/выгружаются нормально

ARMOR
10.11.2022, 18:03
В чем проблема?

другие плагины загружаются/выгружаются нормально


Уверен что ты на той сборке играешь в которую ты закинул плагин?

chapo
10.11.2022, 18:05
Уверен что ты на той сборке играешь в которую ты закинул плагин?


да, только что скачал плагин, закинул и загрузил его через pload

ARMOR
10.11.2022, 18:16
1668089772615.pngARMOR · 10 Ноя 2022 в 17:16' data-fancybox="lb-post-1191924" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/177104/" style="cursor: pointer;" title="1668089772615.png">
https://forum.antichat.xyz/attachments/28191924/

В чём причина данных ошибок? Точнее как их можно пофиксить?

AdCKuY_DpO4uLa
10.11.2022, 18:42
В чём причина данных ошибок? Точнее как их можно пофиксить?


явным текстом написана ошибка, у тебя определение одной функции "распиано" в двух файлах. как вариант юзать #pragma once, либо смотри по коду, как у тебя инклюдятся файлы с этими функами

Savchik Blazer
10.11.2022, 22:11
как, используя D, вернуть в хуке значение, кроме false

D:






extern
(
C
)
auto
hook
(
void
*
_this
,
char
*
sometext
,
char
*
sometext2
)
@nogc
{
MessageBoxA
(
NULL
,
sometext
,
sometext2
,
0
)
;
return
false
;
}

Musaigen
10.11.2022, 22:38
В чем проблема?

другие плагины загружаются/выгружаются нормально


Накакал в коде значит, поэтому плагин не загружается, покажи сурс хотя бы

Savchik Blazer
10.11.2022, 22:57
как используя D вернуть в хуке значение, кроме false

D:






extern
(
C
)
auto
hook
(
void
*
_this
,
char
*
sometext
,
char
*
sometext2
)
@nogc
{
MessageBoxA
(
NULL
,
sometext
,
sometext2
,
0
)
;
return
false
;
}





Использовать

D:






return
tuple
(
sometext
,
sometext2
)
;




Не вариант

Shelok_Kholmes
11.11.2022, 01:18
Здравствуйте, бластхаковцы. Есть ли у кого програмная реализация "Код контроля целостности данных – CRC"?

мистер вселенная
14.11.2022, 20:34
есть ли какой то лимит на предмет айдишников моделей (.ide) в самп? можно ли уйти за 20000?

Z3roKwq
19.11.2022, 12:54
SF R3-1 (ес че)

крашит при использовании:

C++:






GAME
->
GetPools
(
)
->
GetObjectA
(
i
)
->
IsOnScreen
(
)




или

C++:






GAME
->
GetPools
(
)
->
GetObjectA
(
i
)
->
GetPosition
(
)
->
fX
GAME
->
GetPools
(
)
->
GetObjectA
(
i
)
->
GetPosition
(
)
->
fY
GAME
->
GetPools
(
)
->
GetObjectA
(
i
)
->
GetPosition
(
)
->
fZ




проверка на существование есть, ну и как я понял оно крашит с любой функцией из GAME->GetPools()->GetObjectA(i)

AdCKuY_DpO4uLa
19.11.2022, 17:58
Мб гет пулс возвращает нульптр?

Z3roKwq
19.11.2022, 18:10
Мб гет пулс возвращает нульптр?


Возможно, надо будет проверить

Ltall
20.11.2022, 02:06
SF R3-1 (ес че)

крашит при использовании:

C++:






GAME
->
GetPools
(
)
->
GetObjectA
(
i
)
->
IsOnScreen
(
)




или

C++:






GAME
->
GetPools
(
)
->
GetObjectA
(
i
)
->
GetPosition
(
)
->
fX
GAME
->
GetPools
(
)
->
GetObjectA
(
i
)
->
GetPosition
(
)
->
fY
GAME
->
GetPools
(
)
->
GetObjectA
(
i
)
->
GetPosition
(
)
->
fZ




проверка на существование есть, ну и как я понял оно крашит с любой функцией из GAME->GetPools()->GetObjectA(i)


Проверяй, если GetObjectA(i) == NULL то continue;

Marver13881
20.11.2022, 03:39
Всем привет, никак не могу решить данную ошибку, #define _CRT_SECURE_NO_WARNINGS не помогает.

C4996 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

legendabrn
20.11.2022, 12:35
Всем привет, никак не могу решить данную ошибку, #define _CRT_SECURE_NO_WARNINGS не помогает.

C4996 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.


свойства проекта -> C/C++ -> определение препроцессора -> _CRT_SECURE_NO_WARNINGS

Z3roKwq
20.11.2022, 13:40
Всем привет, никак не могу решить данную ошибку, #define _CRT_SECURE_NO_WARNINGS не помогает.

C4996 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.


если ошибка вылазит из sparsehash и у тебя компилятор v143(17.4), то не поможет, единственный вариант который я нашел это юзать v143(17.2)

Marver13881
20.11.2022, 16:05
свойства проекта -> C/C++ -> определение препроцессора -> _CRT_SECURE_NO_WARNINGS



https://forum.antichat.xyz/attachments/28199227/

При использовании _CRT_SECURE_NO_WARNINGS

Z3roKwq
20.11.2022, 16:36
При использовании _CRT_SECURE_NO_WARNINGS


мб хотя бы функцию покажеш, мы тут не гадалки

Marver13881
20.11.2022, 18:01
мб хотя бы функцию покажеш, мы тут не гадалки



1:






void
WriteString
(
LPCSTR lpName
,
LPSTR lpString
,
.
.
.
)
{
va_list ap
;
char
*
szStr
=
new
char
[
strlen
(
lpString
)
*
2
+
1024
]
;
va_start
(
ap
,
lpString
)
;
vsprintf
(
szStr
,
lpString
,
ap
)
;
va_end
(
ap
)
;
no_error
=
SetRegister
(
lpName
,
REG_SZ
,
szStr
,
strlen
(
szStr
)
)
;
delete
[
]
szStr
;
}
std
::
string
ReadString
(
LPCSTR lpName
)
{
char
szStr
[
0x1000
]
;
no_error
=
GetRegister
(
lpName
,
REG_SZ
,
szStr
,
0x1000
)
;
return
szStr
;
}

Papercut
22.11.2022, 22:18
Как в SAMP API (https://github.com/BlastHackNet/SAMP-API) дождаться загрузки сампа? Плагин через поток работает, без хуков, то есть там while(1). Вообще если бы кто нибудь подкинул ссылку на исходники какого-нибудь проекта с SAMP API, я бы разобрался

AdCKuY_DpO4uLa
22.11.2022, 22:22
Как в SAMP API (https://github.com/BlastHackNet/SAMP-API) дождаться загрузки сампа? Плагин через поток работает, без хуков, то есть там while(1). Вообще если бы кто нибудь подкинул ссылку на исходники какого-нибудь проекта с SAMP API, я бы разобрался



SAMP_API/SAMP_API_ONE_HEADER/SAMP/SAMP.hpp at 0980facd56acfddf219b548a1763046158a0a107 · DpO4uLa/SAMP_API (https://github.com/DpO4uLa/SAMP_API/blob/0980facd56acfddf219b548a1763046158a0a107/SAMP_API_ONE_HEADER/SAMP/SAMP.hpp#L2769)

SDK для быстрого взаимодействия с SA-MP & Gta SA. Contribute to DpO4uLa/SAMP_API development by creating an account on GitHub.

github.com

Savchik Blazer
22.11.2022, 22:23
Как в SAMP API (https://github.com/BlastHackNet/SAMP-API) дождаться загрузки сампа? Плагин через поток работает, без хуков, то есть там while(1). Вообще если бы кто нибудь подкинул ссылку на исходники какого-нибудь проекта с SAMP API, я бы разобрался


а не проще ли?

C++:






*
reinterpret_cast

(
GetSAMPHandle
(
)
+
0x21A0F8
)
!=
nullptr
;

AdCKuY_DpO4uLa
22.11.2022, 22:25
а не проще ли?

C++:






*
reinterpret_cast

(
GetSAMPHandle
(
)
+
0x21A0F8
)
!=
nullptr
;





Он проверяет в потоке, в то время, пока класс по адресу samp.dll+0x21A0F8 проинициализировался, остальные могли не успеть этого сделать

А вообще, вот адрес под R1 samp.dll+0x21A114 (bool), если самп загрузился, там будет true

kin4stat
22.11.2022, 22:31
Харош велосипеды придумывать, все за вас придумали уже

Гайд - Безопасная инициализация и работа с SAMP [3] (https://www.blast.hk/threads/101433/)

Создание ASI-плагина с нуля Хуки – что это такое и как с ними работать Безопасная инициализация и работа с SAMP Работа с рендером и Directx9 Обработка событий окна + ImGui В этом гайде будет рассказано как инициализироваться без потоков, а также как работать с SAMP'ом При использовании на...

www.blast.hk

Papercut
22.11.2022, 23:40
Харош велосипеды придумывать, все за вас придумали уже

Гайд - Безопасная инициализация и работа с SAMP [3] (https://www.blast.hk/threads/101433/)

Создание ASI-плагина с нуля Хуки – что это такое и как с ними работать Безопасная инициализация и работа с SAMP Работа с рендером и Directx9 Обработка событий окна + ImGui В этом гайде будет рассказано как инициализироваться без потоков, а также как работать с SAMP'ом При использовании на...

www.blast.hk



Гайд и ридми пора подправить, после обновы *Nov 21, 2021* даже такого конструктора kthook_simple_t нету.

Поставил версию от 11 ноября 21, все работает

https://en.meming.world/images/en/thumb/9/9d/The_Engineer.jpg/300px-The_Engineer.jpg

eze
23.11.2022, 04:18
1.Как можно сделать авто обновление exe файла любыми возможными методами

sizeoftrickster
23.11.2022, 05:32
Гайд и ридми пора подправить, после обновы *Nov 21, 2021* даже такого конструктора kthook_simple_t нету.
Поставил версию от 11 ноября 21, все работает

https://en.meming.world/images/en/thumb/9/9d/The_Engineer.jpg/300px-The_Engineer.jpg


К вашему вниманию несколько видов защиты:

1) скачать и закинуть в папки: ktsignal и xbyak [Уровень: hard]

2) подключить к проекту [Уровень: easy]

И последнее, самое сложное! Когда просто скопировать не получится, нужно будет разбираться и искать нужное тебе через намеспасе) [Уровень: insane]

Musaigen
23.11.2022, 11:07
скачать и закинуть в папки: ktsignal и xbyak [Уровень: hard]


git submodule update --recursive вродь

Papercut
24.11.2022, 00:24
К вашему вниманию несколько видов защиты:
1) скачать и закинуть в папки: ktsignal и xbyak [Уровень: hard]
2) подключить к проекту [Уровень: easy]
И последнее, самое сложное! Когда просто скопировать не получится, нужно будет разбираться и искать нужное тебе через намеспасе) [Уровень: insane]


Вместо того, чтобы умничать, могли бы объяснить как работают новые хуки, про которые ни слова нигде не написано. В readme и "гайде" описаны методы, которые были больше года назад актуальны.

Вместо методов из примера есть set_cb, который чтобы использовать, надо преисполнится в плюсах. Код с reset remove, выглядит как заклинание, написанное insane'ом(безумцем)

C++:






window_init_hook
.
set_cb
(
[
this
]
(
const
auto
&
hook
,
auto
&&
hinst
)




Я, конечно, понимаю, что лямбда функции это супер удобно. Но вариант из гайда явно проще и понятнее. А объяснение почему функция принимает ссылку на хук и, как я понимаю, ссылку на ссылку на адрес ,который указан при инициализации хука?

AdCKuY_DpO4uLa
24.11.2022, 01:21
Вместо того, чтобы умничать, могли бы объяснить как работают новые хуки, про которые ни слова нигде не написано. В readme и "гайде" описаны методы, которые были больше года назад актуальны.
Вместо методов из примера есть set_cb, который чтобы использовать, надо преисполнится в плюсах. Код с reset remove, выглядит как заклинание, написанное insane'ом(безумцем)

C++:






window_init_hook
.
set_cb
(
[
this
]
(
const
auto
&
hook
,
auto
&&
hinst
)




Я, конечно, понимаю, что лямбда функции это супер удобно. Но вариант из гайда явно проще и понятнее. А объяснение почему функция принимает ссылку на хук и, как я понимаю, ссылку на ссылку на адрес ,который указан при инициализации хука?


если тебе нужен пример того, как ставить хуки, то вот, когда-то че-то хукал, не помню когда и что, мейби разберешься

C++:






kthook
::
kthook_simple

unkHook
{
}
;
unsigned
__int8
*
*
__fastcall
Unk_HOOKED
(
const
decltype
(
unkHook
)
&
hook
,
unsigned
__int64
*
param_1
)
{
printf
(
"0x%llX\n"
,
(
std
::
uintptr_t
)
param_1
)
;
return
hook
.
get_trampoline
(
)
(
param_1
)
;
}
//install
std
::
uintptr_t UnkAddrHook
=
0x10B1B60
;
unkHook
.
set_dest
(
UnkAddrHook
)
;
unkHook
.
set_cb
(
&
Unk_HOOKED
)
;
unkHook
.
install
(
)
;

Papercut
24.11.2022, 05:16
если тебе нужен пример того, как ставить хуки, то вот, когда-то че-то хукал, не помню когда и что, мейби разберешься

C++:






kthook
::
kthook_simple

unkHook
{
}
;
unsigned
__int8
*
*
__fastcall
Unk_HOOKED
(
const
decltype
(
unkHook
)
&
hook
,
unsigned
__int64
*
param_1
)
{
printf
(
"0x%llX\n"
,
(
std
::
uintptr_t
)
param_1
)
;
return
hook
.
get_trampoline
(
)
(
param_1
)
;
}
//install
std
::
uintptr_t UnkAddrHook
=
0x10B1B60
;
unkHook
.
set_dest
(
UnkAddrHook
)
;
unkHook
.
set_cb
(
&
Unk_HOOKED
)
;
unkHook
.
install
(
)
;





Спасибо. Сделал, правда, уже по твоему гайду через sdk и samp api.

Вопрос: Как зафорсить отправку синхронизации, которая отправляется при открытии скорборда? Как я понимаю, это RPC_UpdateScoresPingsIPs. Но мне нужно именно зафорсить чтобы сама игра отправила этот рпк(если это рпк) и сама заполнила значениями все пулы. Иначе пока игрок не откроет таб, у всех 0 лвл.

al3x_
24.11.2022, 17:54
Вопрос: Как зафорсить отправку синхронизации, которая отправляется при открытии скорборда? Как я понимаю, это RPC_UpdateScoresPingsIPs. Но мне нужно именно зафорсить чтобы сама игра отправила этот рпк(если это рпк) и сама заполнила значениями все пулы. Иначе пока игрок не откроет таб, у всех 0 лвл.



C++:






reinterpret_cast

(
samp
.
dll
+
0x8A10
\
0x8BA0
r1\r3
-
1
)
(
pSAMP
)
;

Andrinall
24.11.2022, 18:04
1.Как можно сделать авто обновление exe файла любыми возможными методами


Когда-то интересовался авто-обновлением SF плагина, наткнулся на это, где наткнулся - уже не помню, но осталось в записях.

Запускается данное чудо в консоли.

Не знаю, сработает ли так, но вот:

C++:






system
(
"taskkill /f /im \"your.exe\" && timeout /t 1 && del \"your.exe\" && ren \"temp_file.exe\" \"your.exe\" && \"your.exe\""
)
;




upd: если что, перед выполнением этого надо скачать новую версию exeшника. (temp_file.exe - путь к новой версии)

Digger Man52
27.11.2022, 03:40
Какой оффсетик может отвечать за тюнинг машинок в сингле

kin4stat
27.11.2022, 03:56
Какой оффсетик может отвечать за тюнинг машинок в сингле


tHandlingData в CVehicle

VRush
06.12.2022, 03:53
шо такое public

MeG@LaDo[N] ^_^
06.12.2022, 11:24
шо такое public



https://ravesli.com/urok-114-spetsifikatory-dostupa-public-i-private/ (https://www.blast.hk/redirect/aHR0cHM6Ly9yYXZlc2xpLmNvbS91cm9rLTExNC1zcGV0c2lmaW thdG9yeS1kb3N0dXBhLXB1YmxpYy1pLXByaXZhdGUv)

AdCKuY_DpO4uLa
08.12.2022, 22:07
дайте адрес конструктора CTaskSimpleRunNamedAnim

EclipsedFlow
09.12.2022, 21:29
Не получается сделать асинхронный http/https запрос. Крашит или зависает игра(но потом крашит).

Кстати - Мне нужно постоянно получать данные у сайта, так что функция вызывается в цикле

C++:






#include
#include
#include
mutex mtx
{
}
;
void
GetAsyncRequest
(
const
string
&
Address
)
{
cpr
::
Response
{
}
;
auto
Resp
=
[
&
]
(
)
{
mtx
.
lock
(
)
;
Response
=
cpr
::
Get
(
Address
)
;
mtx
.
unlock
(
)
;
}
;
thread
(
Resp
)
.
detach
(
)
;
return
Response
;
}
const
string Address
{
"https:\\blast.hk"
}
;
auto
Responce
=
GetAsyncRequest
(
Address
)
;

вайега52
10.12.2022, 23:16
вроде сделал все по гайду, но чет не изменяется погода

main.cpp:






#include "main.hpp"
LRESULT CALLBACK
WindowProc
(
HWND hwnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
switch
(
uMsg
)
{
case
WM_KEYUP
:
{
switch
(
wParam
)
{
case
VK_F10
:
{
*
reinterpret_cast

(
0xC81320
)
+=
1
;
printStringNow
(
"2"
,
1000
,
NULL
,
false
)
;
break
;
}
case
VK_F2
:
{
*
reinterpret_cast

(
0xC81320
)
-=
1
;
printStringNow
(
"3"
,
1000
,
NULL
,
false
)
;
break
;
}
}
}
}
return
CallWindowProcA
(
WNDPROC
(
wHandle
)
,
hwnd
,
uMsg
,
wParam
,
lParam
)
;
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD fdwReason
,
LPVOID lpReserved
)
{
switch
(
fdwReason
)
{
case
DLL_PROCESS_ATTACH
:
{
DisableThreadLibraryCalls
(
hModule
)
;
wHandle
=
SetWindowLongA
(
FindWindowA
(
NULL
,
"GTA:SA:MP"
)
,
GWL_WNDPROC
,
LONG
(
WindowProc
)
)
;
break
;
}
case
DLL_PROCESS_DETACH
:
{
break
;
}
}
return
TRUE
;
}




main.hpp:






#pragma once
#include
#include
LONG wHandle
;
void
printStringNow
(
const
char
*
text
,
unsigned
int
time
,
unsigned
short
flag
,
bool
bPreviousBrief
)
{
(
(
void
(
__cdecl
*
)
(
const
char
*
,
unsigned
int
,
unsigned
short
,
bool
)
)
0x69F1E0
)
(
text
,
time
,
flag
,
bPreviousBrief
)
;
}

ARMOR
10.12.2022, 23:23
вроде сделал все по гайду, но чет не изменяется погода

main.cpp:






#include "main.hpp"
LRESULT CALLBACK
WindowProc
(
HWND hwnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
switch
(
uMsg
)
{
case
WM_KEYUP
:
{
switch
(
wParam
)
{
case
VK_F10
:
{
*
reinterpret_cast

(
0xC81320
)
+=
1
;
printStringNow
(
"2"
,
1000
,
NULL
,
false
)
;
break
;
}
case
VK_F2
:
{
*
reinterpret_cast

(
0xC81320
)
-=
1
;
printStringNow
(
"3"
,
1000
,
NULL
,
false
)
;
break
;
}
}
}
}
return
CallWindowProcA
(
WNDPROC
(
wHandle
)
,
hwnd
,
uMsg
,
wParam
,
lParam
)
;
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD fdwReason
,
LPVOID lpReserved
)
{
switch
(
fdwReason
)
{
case
DLL_PROCESS_ATTACH
:
{
DisableThreadLibraryCalls
(
hModule
)
;
wHandle
=
SetWindowLongA
(
FindWindowA
(
NULL
,
"GTA:SA:MP"
)
,
GWL_WNDPROC
,
LONG
(
WindowProc
)
)
;
break
;
}
case
DLL_PROCESS_DETACH
:
{
break
;
}
}
return
TRUE
;
}




main.hpp:






#pragma once
#include
#include
LONG wHandle
;
void
printStringNow
(
const
char
*
text
,
unsigned
int
time
,
unsigned
short
flag
,
bool
bPreviousBrief
)
{
(
(
void
(
__cdecl
*
)
(
const
char
*
,
unsigned
int
,
unsigned
short
,
bool
)
)
0x69F1E0
)
(
text
,
time
,
flag
,
bPreviousBrief
)
;
}





Там нужно сам плагин подгрузить с помощью pload( команда для консоли sf ), или процесс хакером

вайега52
10.12.2022, 23:25
Там нужно сам плагин подгрузить с помощью pload( команда для консоли sf ), или процесс хакером


та я вроде асишник сделал, поидее его аси лоадер должен подгружать

ARMOR
10.12.2022, 23:55
та я вроде асишник сделал, поидее его аси лоадер должен подгружать


Там wndProc подключается к GTA:SA:MP, а во время окна загрузки игры у окна игры другое название.



дайте адрес конструктора CTaskSimpleRunNamedAnim


0x61A990

Прототип (спиздил с иды) :

C++:






CTaskSimpleRunNamedAnim
*
__thiscall CTaskSimpleRunNamedAnim
::
CTaskSimpleRunNamedAnim
(
CTaskSimpleRunNamedAnim
*
this
,
int
animName
,
int
fileName
,
int
flags
,
float
frameDelta
,
int
time
,
char
nonInterruptable
,
char
isActiveSequence
,
char
dontLockZ
,
char
a10
)

вайега52
11.12.2022, 00:17
Там wndProc подключается к GTA:SA:MP, а во время окна загрузки игры у окна игры другое название.


не пон, так вродя мне и надо, шоб к уже загруженному сампу регался вндпрок

https://forum.antichat.xyz/attachments/28213018/

ARMOR
11.12.2022, 00:23
не пон, так вродя мне и надо, шоб к уже загруженному сампу регался вндпрок


Плагин загружается к игре моментально после запуска игры. Но когда плагин подключается - игра ещё на загрузочном екране ( Где у тебя идёт полоска и пишет ГТА САН АНДРЕАС МУЛЬТИПЛЕЕР, САМПФУНКС, и прочая херь. ) и у её окна в этот момент другое название. А когдя игра уже загружается( ты появляешься на пляже и подключаешься к серверу ) окно меняет свое название на GTA:SA:MP, но подключение плагина, и самого wndProc'а уже прошло в момент запуска игры.

Название во время загрузочного экрана:

https://forum.antichat.xyz/attachments/28213024/

Название во время уже запущеной игры

https://forum.antichat.xyz/attachments/28213024/

вайега52
11.12.2022, 00:40
Плагин загружается к игре моментально после запуска игры. Но когда плагин подключается - игра ещё на загрузочном екране ( Где у тебя идёт полоска и пишет ГТА САН АНДРЕАС МУЛЬТИПЛЕЕР, САМПФУНКС, и прочая херь. ) и у её окна в этот момент другое название. А когдя игра уже загружается( ты появляешься на пляже и подключаешься к серверу ) окно меняет свое название на GTA:SA:MP, но подключение плагина, и самого wndProc'а уже прошло в момент запуска игры.

Название во время загрузочного экрана:

Название во время уже запущеной игры


получается надо регать вндпрок уже после смены названия окна?



Название во время уже запущеной игры


Да, выгрузил плагин, потом заинжектил, заработало

ARMOR
11.12.2022, 00:42
получается надо регать вндпрок уже после смены названия окна?


По правильному нужно хукать wndProc. Ну или уже после запуска игры, да.

вайега52
11.12.2022, 15:42
Как можно заменять asi файл в активной гта, если выходной путь при компиляции это корень сборки?

AdCKuY_DpO4uLa
11.12.2022, 15:43
pfree название.asi перед помпиляцией

вайега52
11.12.2022, 16:54
pfree название.asi перед помпиляцией


как можно сделать так, шоб не крашилась игра после выгрузики асишника (мб из-за виндовс прока)?

AdCKuY_DpO4uLa
11.12.2022, 17:04
как можно сделать так, шоб не крашилась игра после выгрузики асишника (мб из-за виндовс прока)?


чистить всё за собой нужно и тогда крашить не будет

вайега52
11.12.2022, 17:37
чистить всё за собой нужно и тогда крашить не будет


де и как правильно почистить тут за собой?

C++:






#include "main.hpp"
LRESULT CALLBACK
WindowProc
(
HWND hwnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
switch
(
uMsg
)
{
case
WM_KEYUP
:
{
switch
(
wParam
)
{
case
0x31
:
{
*
reinterpret_cast

(
0xC81320
)
+=
1
;
/*
sprintf(buffer, "weatherID: %d", *(unsigned __int16*)0xC81320);
printStringNow(buffer, 1000, NULL, false);
*/
break
;
}
case
0x32
:
{
*
reinterpret_cast

(
0xC81320
)
-=
1
;
/*
sprintf(buffer, "weatherID: %d", *(unsigned __int16*)0xC81320);
printStringNow(buffer, 1000, NULL, false);
*/
break
;
}
}
}
}
return
CallWindowProcA
(
WNDPROC
(
wHandle
)
,
hwnd
,
uMsg
,
wParam
,
lParam
)
;
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD fdwReason
,
LPVOID lpReserved
)
{
switch
(
fdwReason
)
{
case
DLL_PROCESS_ATTACH
:
{
DisableThreadLibraryCalls
(
hModule
)
;
wHandle
=
SetWindowLongA
(
FindWindowA
(
NULL
,
"GTA:SA:MP"
)
,
GWL_WNDPROC
,
LONG
(
WindowProc
)
)
;
break
;
}
case
DLL_PROCESS_DETACH
:
{
break
;
}
}
return
TRUE
;
}

AdCKuY_DpO4uLa
11.12.2022, 17:51
де и как правильно почистить тут за собой?

C++:






#include "main.hpp"
LRESULT CALLBACK
WindowProc
(
HWND hwnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
switch
(
uMsg
)
{
case
WM_KEYUP
:
{
switch
(
wParam
)
{
case
0x31
:
{
*
reinterpret_cast

(
0xC81320
)
+=
1
;
/*
sprintf(buffer, "weatherID: %d", *(unsigned __int16*)0xC81320);
printStringNow(buffer, 1000, NULL, false);
*/
break
;
}
case
0x32
:
{
*
reinterpret_cast

(
0xC81320
)
-=
1
;
/*
sprintf(buffer, "weatherID: %d", *(unsigned __int16*)0xC81320);
printStringNow(buffer, 1000, NULL, false);
*/
break
;
}
}
}
}
return
CallWindowProcA
(
WNDPROC
(
wHandle
)
,
hwnd
,
uMsg
,
wParam
,
lParam
)
;
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD fdwReason
,
LPVOID lpReserved
)
{
switch
(
fdwReason
)
{
case
DLL_PROCESS_ATTACH
:
{
DisableThreadLibraryCalls
(
hModule
)
;
wHandle
=
SetWindowLongA
(
FindWindowA
(
NULL
,
"GTA:SA:MP"
)
,
GWL_WNDPROC
,
LONG
(
WindowProc
)
)
;
break
;
}
case
DLL_PROCESS_DETACH
:
{
break
;
}
}
return
TRUE
;
}





юзай хукер, а не эту шляпу, для перехвата wnd proc

вайега52
11.12.2022, 17:53
юзай хукер, а не эту шляпу, для перехвата wnd proc


скинь инфу об этом плез

AdCKuY_DpO4uLa
11.12.2022, 17:54
скинь инфу об этом плез


любой хукер, как пример, могу дать это https://github.com/DpO4uLa/DialogKeySelect/blob/main/KeyHook.hpp

Shkololo
11.12.2022, 20:25
Как изменить код под

E10b OLED-дисплей 0,96" 128х64 белый Uпит=3,3...5В i2c/iic на SSD1306 27х27х4мм​и сделать управление не 2-мя джостиками а одним

F05 джойстик 2х-осевой для Arduino {=KY-023}​на Arduino.

C++:






////////////////////////////////////
// -OLED RF Controller- //
////////////////////////////////////
//Libraries
#include
#include
#include
#include
#include
#include
//Initialize NRF24L01
RF24
radio
(
9
,
10
)
;
//(CE, CSN)
//Initialize OLED
Adafruit_SH1106G display
=
Adafruit_SH1106G
(
128
,
64
,
&
Wire
,
-
1
)
;
///////////////////////////
// -VARIABLES- //
///////////////////////////
const
byte address
[
6
]
=
"00001"
;
struct
Data_Package
{
byte X1
;
byte Y1
;
byte X2
;
byte Y2
;
byte b1
;
byte B2
;
byte B3
;
byte B4
;
byte B5
;
byte T1
;
byte T2
;
byte T3
;
byte T4
;
byte T5
;
byte S1
;
byte S2
;
byte S3
;
byte S4
;
byte S5
;
}
;
Data_Package data
;
//buzzer pin
const
int
buzzer_Pin
=
5
;
//runNRF24L01
const
int
X1_Pin
=
A0
,
Y1_Pin
=
A1
,
X2_Pin
=
A2
,
Y2_Pin
=
A3
;
const
int
B1_Pin
=
3
,
B2_Pin
=
2
;
int
B1_Val
=
0
,
B2_Val
=
0
,
B3_Val
=
0
,
B4_Val
=
0
,
B5_Val
=
0
;
int
T1_Val
=
0
,
T2_Val
=
0
,
T3_Val
=
0
,
T4_Val
=
0
,
T5_Val
=
0
;
int
S1_Val
=
0
,
S2_Val
=
0
,
S3_Val
=
0
,
S4_Val
=
0
,
S5_Val
=
0
;
//timeDelay
int
cursorDelay
=
0
;
int
actionDelay
=
0
;
//drawCursor
int
cursorPot
=
0
;
int
cursorY
=
11
,
yOffset
=
0
;
int
num
=
0
,
num2
=
0
,
num3
=
0
;
//drawMenu
bool
B1_Flag
=
false
,
B1_Flag2
=
false
,
B2_Flag
=
false
;
bool
menu
=
false
,
action
=
false
,
buzzer
=
false
;
bool
toggle1
=
false
,
toggle2
=
false
,
toggle3
=
false
,
toggle4
=
false
,
toggle5
=
false
;
int
sliderPot
=
0
,
slider1
=
0
,
slider2
=
0
,
slider3
=
0
,
slider4
=
0
,
slider5
=
0
;
bool
multiply
=
true
;
///////////////////////
// -SETUP- //
///////////////////////
void
setup
(
)
{
//Begin Serial Communication
//Serial.begin(9600);
//Pin Setup
pinMode
(
B1_Pin
,
INPUT_PULLUP
)
;
pinMode
(
B2_Pin
,
INPUT_PULLUP
)
;
pinMode
(
buzzer_Pin
,
OUTPUT
)
;
//NRF24L01 Setup
radio
.
begin
(
)
;
radio
.
openWritingPipe
(
address
)
;
radio
.
setPALevel
(
RF24_PA_MIN
)
;
radio
.
stopListening
(
)
;
//OLED Setup
display
.
begin
(
0x3C
,
true
)
;
display
.
display
(
)
;
delay
(
500
)
;
display
.
clearDisplay
(
)
;
display
.
setTextColor
(
SH110X_WHITE
)
;
//Initial Values
data
.
X1
=
0
;
data
.
Y1
=
0
;
data
.
X2
=
0
;
data
.
Y2
=
0
;
data
.
b1
=
0
;
data
.
B2
=
0
;
data
.
B3
=
0
;
data
.
T1
=
0
;
data
.
T2
=
0
;
data
.
T3
=
0
;
data
.
S1
=
0
;
data
.
S2
=
0
;
data
.
S3
=
0
;
}
//setup
//////////////////////
// -LOOP- //
//////////////////////
void
loop
(
)
{
runNRF24L01
(
)
;
runOLED
(
)
;
timeDelay
(
)
;
runBuzzer
(
)
;
}
//loop
///////////////////////////
// -FUNCTIONS- //
///////////////////////////
void
runNRF24L01
(
)
{
if
(
menu
==
false
)
{
data
.
X1
=
map
(
analogRead
(
X1_Pin
)
,
0
,
1023
,
0
,
255
)
;
data
.
Y1
=
map
(
analogRead
(
Y1_Pin
)
,
0
,
1023
,
0
,
255
)
;
data
.
X2
=
map
(
analogRead
(
X2_Pin
)
,
0
,
1023
,
0
,
255
)
;
data
.
Y2
=
map
(
analogRead
(
Y2_Pin
)
,
0
,
1023
,
0
,
255
)
;
}
data
.
b1
=
B1_Val
;
data
.
B2
=
B2_Val
;
data
.
B3
=
B3_Val
;
data
.
B4
=
B4_Val
;
data
.
B5
=
B5_Val
;
data
.
T1
=
T1_Val
;
data
.
T2
=
T2_Val
;
data
.
T3
=
T3_Val
;
data
.
T4
=
T4_Val
;
data
.
T5
=
T5_Val
;
data
.
S1
=
S1_Val
;
data
.
S2
=
S2_Val
;
data
.
S3
=
S3_Val
;
data
.
S4
=
S4_Val
;
data
.
S5
=
S5_Val
;
radio
.
write
(
&
data
,
sizeof
(
Data_Package
)
)
;
}
//runNRF24L01
void
runOLED
(
)
{
display
.
clearDisplay
(
)
;
drawCursor
(
)
;
drawMenu
(
)
;
display
.
display
(
)
;
}
//runOLED
void
timeDelay
(
)
{
if
(
cursorDelay

11
||
ignore
==
true
)
{
display
.
setTextSize
(
Size
)
;
display
.
setCursor
(
xPos
,
yPos
)
;
display
.
println
(
Name
)
;
}
}
//drawText
void
drawCursor
(
)
{
if
(
menu
==
true
)
{
cursorPot
=
map
(
analogRead
(
X1_Pin
)
,
0
,
1023
,
0
,
100
)
;
if
(
cursorPot
=
2
)
{
cursorY
+=
17
;
if
(
action
==
false
)
{
num
++
;
}
num3
++
;
cursorDelay
=
0
;
}
if
(
cursorPot
>=
70
&&
cursorDelay
>=
2
)
{
cursorY
-=
17
;
if
(
action
==
false
)
{
num
--
;
}
num3
--
;
cursorDelay
=
0
;
}
//limits movement
if
(
cursorY
>
45
)
{
cursorY
=
45
;
yOffset
-=
17
;
}
if
(
cursorY
=
0
)
{
yOffset
=
0
;
}
if
(
num
=
28
&&
num2
==
3
)
{
cursorY
=
28
;
num3
=
1
;
}
if
(
yOffset
=
10
)
{
if
(
toggle1
==
false
)
{
toggle1
=
true
;
}
else
{
toggle1
=
false
;
}
actionDelay
=
0
;
}
break
;
case
1
:
if
(
digitalRead
(
B1_Pin
)
==
LOW
&&
actionDelay
>=
10
)
{
if
(
toggle2
==
false
)
{
toggle2
=
true
;
}
else
{
toggle2
=
false
;
}
actionDelay
=
0
;
}
break
;
case
2
:
if
(
digitalRead
(
B1_Pin
)
==
LOW
&&
actionDelay
>=
10
)
{
if
(
toggle3
==
false
)
{
toggle3
=
true
;
}
else
{
toggle3
=
false
;
}
actionDelay
=
0
;
}
break
;
case
3
:
if
(
digitalRead
(
B1_Pin
)
==
LOW
&&
actionDelay
>=
10
)
{
if
(
toggle4
==
false
)
{
toggle4
=
true
;
}
else
{
toggle4
=
false
;
}
actionDelay
=
0
;
}
break
;
case
4
:
if
(
digitalRead
(
B1_Pin
)
==
LOW
&&
actionDelay
>=
10
)
{
if
(
toggle5
==
false
)
{
toggle5
=
true
;
}
else
{
toggle5
=
false
;
}
actionDelay
=
0
;
}
break
;
case
5
:
if
(
digitalRead
(
B1_Pin
)
==
LOW
)
{
B1_Flag
=
true
;
}
if
(
B1_Flag
==
true
)
{
if
(
digitalRead
(
B1_Pin
)
==
HIGH
)
{
B1_Flag
=
false
;
num
=
0
;
num2
=
-
1
;
num3
=
0
;
yOffset
=
0
;
cursorY
=
11
;
action
=
false
;
}
}
break
;
}
break
;
case
2
:
drawText
(
"SLIDERS"
,
1
,
42
,
0
,
true
)
;
drawText
(
"S1"
,
2
,
3
,
13
+
yOffset
,
false
)
;
drawText
(
"S2"
,
2
,
3
,
30
+
yOffset
,
false
)
;
drawText
(
"S3"
,
2
,
3
,
47
+
yOffset
,
false
)
;
drawText
(
"S4"
,
2
,
3
,
64
+
yOffset
,
false
)
;
drawText
(
"S5"
,
2
,
3
,
81
+
yOffset
,
false
)
;
drawText
(
"Back"
,
2
,
3
,
98
+
yOffset
,
false
)
;
sliderPot
=
map
(
analogRead
(
Y2_Pin
)
,
0
,
1023
,
0
,
100
)
;
drawText
(
String
(
slider1
)
,
2
,
92
,
13
+
yOffset
,
false
)
;
drawText
(
String
(
slider2
)
,
2
,
92
,
30
+
yOffset
,
false
)
;
drawText
(
String
(
slider3
)
,
2
,
92
,
47
+
yOffset
,
false
)
;
drawText
(
String
(
slider4
)
,
2
,
92
,
64
+
yOffset
,
false
)
;
drawText
(
String
(
slider5
)
,
2
,
92
,
81
+
yOffset
,
false
)
;
S1_Val
=
slider1
;
S2_Val
=
slider2
;
S3_Val
=
slider3
;
S4_Val
=
slider4
;
S5_Val
=
slider5
;
if
(
digitalRead
(
B1_Pin
)
==
LOW
)
{
B1_Flag2
=
true
;
}
if
(
B1_Flag2
==
true
)
{
if
(
digitalRead
(
B1_Pin
)
==
HIGH
)
{
B1_Flag2
=
false
;
if
(
multiply
==
false
&&
num3
!=
3
)
{
multiply
=
true
;
}
else
if
(
num3
!=
3
)
{
multiply
=
false
;
}
}
}
switch
(
num3
)
{
case
0
:
if
(
sliderPot
=
70
)
{
if
(
multiply
==
true
)
{
slider1
+=
10
;
}
else
{
slider1
++
;
}
}
if
(
slider1
=
255
)
{
slider1
=
255
;
}
break
;
case
1
:
if
(
sliderPot
=
70
)
{
if
(
multiply
==
true
)
{
slider2
+=
10
;
}
else
{
slider2
++
;
}
}
if
(
slider2
=
255
)
{
slider2
=
255
;
}
break
;
case
2
:
if
(
sliderPot
=
70
)
{
if
(
multiply
==
true
)
{
slider3
+=
10
;
}
else
{
slider3
++
;
}
}
if
(
slider3
=
255
)
{
slider3
=
255
;
}
break
;
case
3
:
if
(
sliderPot
=
70
)
{
if
(
multiply
==
true
)
{
slider4
+=
10
;
}
else
{
slider4
++
;
}
}
if
(
slider4
=
255
)
{
slider4
=
255
;
}
break
;
case
4
:
if
(
sliderPot
=
70
)
{
if
(
multiply
==
true
)
{
slider5
+=
10
;
}
else
{
slider5
++
;
}
}
if
(
slider5
=
255
)
{
slider5
=
255
;
}
break
;
case
5
:
if
(
digitalRead
(
B1_Pin
)
==
LOW
)
{
B1_Flag
=
true
;
}
if
(
B1_Flag
==
true
)
{
if
(
digitalRead
(
B1_Pin
)
==
HIGH
)
{
B1_Flag
=
false
;
num
=
0
;
num2
=
-
1
;
num3
=
0
;
yOffset
=
0
;
cursorY
=
11
;
action
=
false
;
}
}
break
;
}
break
;
case
3
:
drawText
(
"BUZZER"
,
1
,
48
,
0
,
true
)
;
drawText
(
"On"
,
2
,
3
,
13
+
yOffset
,
false
)
;
drawText
(
"Off"
,
2
,
3
,
30
+
yOffset
,
false
)
;
switch
(
num3
)
{
case
0
:
if
(
digitalRead
(
B1_Pin
)
==
LOW
)
{
B1_Flag
=
true
;
}
if
(
B1_Flag
==
true
)
{
if
(
digitalRead
(
B1_Pin
)
==
HIGH
)
{
B1_Flag
=
false
;
num
=
0
;
num2
=
-
1
;
num3
=
0
;
yOffset
=
0
;
cursorY
=
11
;
action
=
false
;
buzzer
=
true
;
}
}
break
;
case
1
:
if
(
digitalRead
(
B1_Pin
)
==
LOW
)
{
B1_Flag
=
true
;
}
if
(
B1_Flag
==
true
)
{
if
(
digitalRead
(
B1_Pin
)
==
HIGH
)
{
B1_Flag
=
false
;
num
=
0
;
num2
=
-
1
;
num3
=
0
;
yOffset
=
0
;
cursorY
=
11
;
action
=
false
;
buzzer
=
false
;
digitalWrite
(
buzzer_Pin
,
LOW
)
;
}
}
break
;
}
break
;
}
}
}
//drawMenu
void
runBuzzer
(
)
{
if
(
menu
==
true
&&
buzzer
==
true
)
{
if
(
B1_Flag
==
true
)
{
digitalWrite
(
buzzer_Pin
,
HIGH
)
;
analogWrite
(
buzzer_Pin
,
20
)
;
}
else
{
digitalWrite
(
buzzer_Pin
,
LOW
)
;
}
}
}
//runBuzzer

вайега52
11.12.2022, 21:45
Попробовал закинуть в проект самп апи. Но после того, как настроил компановщик как в гайде от кинча, проект как бы компилируется, но за 15 минут так и не скомпилировался (даже в консоль ничего не написало, кроме сообщения о начале сборки).





https://forum.antichat.xyz/attachments/28213633/

RazorRw
12.12.2022, 13:39
Попробовал закинуть в проект самп апи. Но после того, как настроил компановщик как в гайде от кинча, проект как бы компилируется, но за 15 минут так и не скомпилировался (даже в консоль ничего не написало, кроме сообщения о начале сборки).


он у тебя скомпилен уже

AdCKuY_DpO4uLa
16.12.2022, 02:03
при записи json объекта в файл в бусте, не создается табуляция в файле, есть какое-нибудь решение этому?

C++:





[CODE]
int
main
(
)
{
setlocale
(
LC_ALL
,
"ru"
)
;
std
::
ofstream oFileStream
{
"settings.json"
}
;
boost
::
json
::
object js_obj
;
js_obj
[
u8
"test zero string"
]
.
emplace_string
(
)
=
u8
"the null позиция"
;
js_obj
[
u8
"test zero"
]
.
emplace_array
(
)
=
{
u8
"арра 0"
,
u8
"арра 1"
,
u8
"арра 2"
}
;
oFileStream






https://forum.antichat.xyz/attachments/28216408/


решение (https://www.blast.hk/redirect/aHR0cHM6Ly93d3cuYm9vc3Qub3JnL2RvYy9saWJzLzFfNzZfMC 9saWJzL2pzb24vZG9jL2h0bWwvanNvbi9leGFtcGxlcy5odG1s Izp-OnRleHQ9dm9pZCUwQXByZXR0eV9wcmludCglMjBzdGQlM0ElM0 Fvc3RyZWFtJTI2JTIwb3MlMkMlMjBqc29uJTNBJTNBdmFsdWUl MjBjb25zdCUyNiUyMGp2JTJDJTIwc3RkJTNBJTNBc3RyaW5nKi UyMGluZGVudCUyMCUzRCUyMG51bGxwdHIlMjAp)

0xff
17.12.2022, 22:33
Как-то можно перехватить Read у BitStream для разбора пакета? R3

AdCKuY_DpO4uLa
18.12.2022, 00:52
Как-то можно перехватить Read у BitStream для разбора пакета? R3


Можно прохукать RakPeer::Receive и там ломать пакет как тебе нужно

ARMOR
20.12.2022, 05:06
Знает ли кто адрес указателя на CLocalPlayer? ( На версию сампа по***, дайте под любую, там уже сам под все найду )

EclipsedFlow
20.12.2022, 10:53
Знает ли кто адрес указателя на CLocalPlayer? ( На версию сампа по***, дайте под любую, там уже сам под все найду )


0xB6F5F0

вайега52
20.12.2022, 12:03
Дополнения скачивал?


Всм?

вайега52
20.12.2022, 15:31
Ну для языка на котором пишешь


Да вроде

Papercut
20.12.2022, 16:36
sampIsLocalPlayerSpawned (https://wiki.blast.hk/ru/moonloader/lua/sampIsLocalPlayerSpawned)

Проверяет, заспавнился ли игрок

wiki.blast.hk


Подскажите, что именно тут проверяется? Какой оффсет? Или это встроенная в самп длл функция?

Как нативно вызвать ее или аналог?

Savchik Blazer
21.12.2022, 13:46
Товарищи, есть ли у кого-нибудь адрес surface'а диалога, желательно для R1?

guts
25.12.2022, 22:17
Какая функция в памяти для того чтобы сесть в ближайшее авто?

Musoni
27.12.2022, 03:36
#include

using namespace std;

string repeat(string w, int n) {

string repeat;

for (int i = 0; i >w>>n;

cout

horacy
27.12.2022, 08:40
#include

using namespace std;

string repeat(string w, int n) {
string repeat;

for (int i = 0; i >w>>n;

cout

C++:






repeat
+=
w
+=
"\n"
;




В следующий раз, когда вы будете писать пост с исходным кодом, используйте функции встраивания кода, иначе это будет выглядеть как дерьмо.

[QUOTE="Pozzibros71299"]

Какая функция в памяти для того чтобы сесть в ближайшее авто?


если вы имеете в виду телепортацию в транспортное средство с помощью кнопки Home или End

mod_sa/src/cheat.cpp at dc9b3b13599a8b6325e566f567b5391b0b2a6dc8 · BlastHackNet/mod_sa (https://github.com/BlastHackNet/mod_s0beit_sa-1/blob/dc9b3b13599a8b6325e566f567b5391b0b2a6dc8/src/cheat.cpp#L447)

Multi-purpose cheat tool for GTA San Andreas and SA-MP - BlastHackNet/mod_sa

github.com

loganhackerdff
28.12.2022, 19:54
Всем привет, в последнее время вижу тренд на использование конструктора для инициализации плагина, например как в этом плагине (https://www.blast.hk/threads/147012/)

у меня вопрос, как в нем без проверки на то, что samp.dll загружен, сразу идет запись в него, наверно нужно что-то указать в настройках проекта

как сделать так?

MeG@LaDo[N] ^_^
28.12.2022, 21:44
Всем привет, в последнее время вижу тренд на использование конструктора для инициализации плагина, например как в этом плагине (https://www.blast.hk/threads/147012/)
у меня вопрос, как в нем без проверки на то, что samp.dll загружен, сразу идет запись в него, наверно нужно что-то указать в настройках проекта
как сделать так?


samp.dll загружется раньше чем мой плагин,а структуры которые инициализируются после загрузки не юзаются, по этому и проверки не нужны

loganhackerdff
28.12.2022, 22:58
^_^"]

samp.dll загружется раньше чем мой плагин,а структуры которые инициализируются после загрузки не юзаются, по этому и проверки не нужны


а, блин я твой плагин не проверял, ну вот что с твоим





https://forum.antichat.xyz/attachments/28224534/

MeG@LaDo[N] ^_^
29.12.2022, 00:20
а, блин я твой плагин не проверял, ну вот что с твоим


мб аси лоадер не ласт версия,у меня все путем с ним,да и никто не писал шо плагин не рабочий

Musoni
29.12.2022, 00:34
Пример : "Hello World"

Выход :

****************

* Hello World *

****************

Не могу подставить правильные значение, путаюсь (char, string, int) надеюсь суть кода уловили. Проблема какая-то в length

C++:





[CODE]
#include
#include
#include
#include
using
namespace
std
;
int
main
(
)
{
string a
;
cin
>>
a
;
string i
=
"* "
+
a
+
" *"
;
string s
=
""
;
for
(
int
j
=
0
;
j

EclipsedFlow
29.12.2022, 00:42
[QUOTE="Musoni"]

Пример : "Hello World"

Выход :

****************

* Hello World *

****************

Не могу подставить правильные значение, путаюсь (char, string, int) надеюсь суть кода уловили

C++:





[CODE]
#include
#include
#include
#include
using
namespace
std
;
int
main
(
)
{
string a
;
cin
>>
a
;
string i
=
"* "
+
a
+
" *"
;
string s
=
""
;
for
(
int
j
=
0
;
j

C++:





[CODE]
cout

Musoni
29.12.2022, 00:43
[QUOTE="Scar_"]

C++:





[CODE]
cout

EclipsedFlow
29.12.2022, 00:53
ты вводил код на VSC или другой компилятор? Там это роли не играет


Тогда используй так, а "+" используй со std::string.

C++:





[CODE]
cout

Papercut
29.12.2022, 03:23
sampIsLocalPlayerSpawned (https://wiki.blast.hk/ru/moonloader/lua/sampIsLocalPlayerSpawned)

Проверяет, заспавнился ли игрок

wiki.blast.hk


Подскажите, что именно тут проверяется? Какой оффсет? Или это встроенная в самп длл функция?
Как нативно вызвать ее или аналог?


пж пж помогите

ARMOR
29.12.2022, 04:09
пж пж помогите


Я не уверен, но возможно m_bIsActive из CLocalPlayer. Завтра уже скажу точно если не ответят раньше.

Papercut
29.12.2022, 23:05
Я не уверен, но возможно m_bIsActive из CLocalPlayer. Завтра уже скажу точно если не ответят раньше.


Да, спасибо

Ltall
01.01.2023, 11:15
Как нарисовать 3D круг при помощи imgui?

Unknown_251
02.01.2023, 15:21
Как в SAMPFUNCS получить, грубо говоря, указатель на структуру stFontInfo, который хранить в себе стандартный шрифт samp.

Или все же лучше самому инициализировать этот шрифт? (Имею ввиду используя функцию CreateNewFont).

Dark_Knight
02.01.2023, 21:17
Как в SAMPFUNCS получить, грубо говоря, указатель на структуру stFontInfo, который хранить в себе стандартный шрифт samp.
Или все же лучше самому инициализировать этот шрифт? (Имею ввиду используя функцию CreateNewFont).


Сделай сам и все. Там не stFontInfo используется.

Unknown_251
02.01.2023, 22:17
Сделай сам и все. Там не stFontInfo используется.


Просто хотел удостовериться, что это действительно так.

Wilhelm Groener
03.01.2023, 13:16
Как нарисовать 3D круг при помощи imgui?


Using ImGui to draw 3D objects is not rational. Explore Direct3D.

D3DXCreateSphere function (D3dx9shape.h) - Win32 apps (https://www.blast.hk/redirect/aHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL3dpbm Rvd3Mvd2luMzIvZGlyZWN0M2Q5L2QzZHhjcmVhdGVzcGhlcmU)

Uses a left-handed coordinate system to create a mesh containing a sphere.

learn.microsoft.com




Как-то можно перехватить Read у BitStream для разбора пакета? R3



GitHub - imring/RakHook: RakNet events for SA:MP (https://github.com/imring/RakHook)

RakNet events for SA:MP. Contribute to imring/RakHook development by creating an account on GitHub.

github.com




Знает ли кто адрес указателя на CLocalPlayer? ( На версию сампа по***, дайте под любую, там уже сам под все найду )



SAMP-API/src/sampapi/0.3.7-R1/CPlayerPool.cpp at f89b35edb7eaf5db374e32a63f2366c4bb714418 · BlastHackNet/SAMP-API (https://github.com/BlastHackNet/SAMP-API/blob/f89b35edb7eaf5db374e32a63f2366c4bb714418/src/sampapi/0.3.7-R1/CPlayerPool.cpp#L91)

A library for interacting with functions, classes and structures of SA-MP client - BlastHackNet/SAMP-API

github.com




sampIsLocalPlayerSpawned (https://wiki.blast.hk/ru/moonloader/lua/sampIsLocalPlayerSpawned)

Проверяет, заспавнился ли игрок

wiki.blast.hk


Подскажите, что именно тут проверяется? Какой оффсет? Или это встроенная в самп длл функция?
Как нативно вызвать ее или аналог?


The player is not spawned only if he is a spectator. In that case, it is enough to check whether it is.

SAMP-API/include/sampapi/0.3.7-R1/CLocalPlayer.h at f89b35edb7eaf5db374e32a63f2366c4bb714418 · BlastHackNet/SAMP-API (https://github.com/BlastHackNet/SAMP-API/blob/f89b35edb7eaf5db374e32a63f2366c4bb714418/include/sampapi/0.3.7-R1/CLocalPlayer.h#L70)

A library for interacting with functions, classes and structures of SA-MP client - BlastHackNet/SAMP-API

github.com




Товарищи, есть ли у кого-нибудь адрес surface'а диалога, желательно для R1?


All information about the dialog is contained in the CDialog class.

On the client, unfortunately, you can only get information about the current dialog.

The RefDialog() function returns a pointer to it.

SAMP-API/include/sampapi/0.3.7-R1/CDialog.h at f89b35edb7eaf5db374e32a63f2366c4bb714418 · BlastHackNet/SAMP-API (https://github.com/BlastHackNet/SAMP-API/blob/f89b35edb7eaf5db374e32a63f2366c4bb714418/include/sampapi/0.3.7-R1/CDialog.h#L17)

A library for interacting with functions, classes and structures of SA-MP client - BlastHackNet/SAMP-API

github.com


SAMP-API/src/sampapi/0.3.7-R1/CDialog.cpp at f89b35edb7eaf5db374e32a63f2366c4bb714418 · BlastHackNet/SAMP-API (https://github.com/BlastHackNet/SAMP-API/blob/f89b35edb7eaf5db374e32a63f2366c4bb714418/src/sampapi/0.3.7-R1/CDialog.cpp#L15)

A library for interacting with functions, classes and structures of SA-MP client - BlastHackNet/SAMP-API

github.com

AdCKuY_DpO4uLa
04.01.2023, 00:52
Help!!


У тебя объявлена функция StrStr, но в коде нет ее реализации, если тебе нужно узнать, если ли в строке подстрока, то можешь юзать strstr()

Z3roKwq
04.01.2023, 04:00
есть строка на луа:

writeMemory(sampGetBase() + 0x9C0A0, 4, 0x000008C2, true)

пытался переписать на плюсы но чет нихуя не выходит, пробовал:

WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (void*)4, 0x0008C2); патч срабатывал, Но игра крашилась

был вариант

WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (uint8_t*)0x0008C2, 4); нихера не срабатывало, а игра все равно крашилась

крч помогите плз💞

Wilhelm Groener
04.01.2023, 12:04
есть строка на луа:
writeMemory(sampGetBase() + 0x9C0A0, 4, 0x000008C2, true)

пытался переписать на плюсы но чет нихуя не выходит, пробовал:
WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (void*)4, 0x0008C2); патч срабатывал, Но игра крашилась
был вариант
WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (uint8_t*)0x0008C2, 4); нихера не срабатывало, а игра все равно крашилась

крч помогите плз💞


The most obvious mistake in your code is that you are trying to add int to the pointer returned by the GetModuleHandleA function. In this case, pointer arithmetic works. The pointer is shifted by 0x9C0A0*sizeof(the type the pointer points to, in this case it is HINSTANCE__ whose size is equal to 4).

The second mistake is that you do not remove the memory protection.

C++:






void
make_night
(
)
{
const
auto
samp
=
reinterpret_cast

(
GetModuleHandle
(
"samp.dll"
)
)
;
if
(
const
auto
ptr
=
reinterpret_cast

(
samp
+
0x9C0A0
)
)
{
// prevent contamination of the local namespace
const
char
raw
[
]
=
"\xC2\x08\x00\x00"
;
::
DWORD old_prot
{
}
;
VirtualProtect
(
ptr
,
sizeof
(
raw
)
-
1
,
PAGE_READWRITE
,
&
old_prot
)
;
std
::
memcpy
(
ptr
,
raw
,
4
)
;
VirtualProtect
(
ptr
,
sizeof
(
raw
)
-
1
,
old_prot
,
&
old_prot
)
;
}
}








Help!!


Do not use strstr.

C++:






#include
if
(
std
::
string_view
{
cmdline
}
.
find
(
"-samp"
)
!=
std
::
string
::
npos
)
{
// C++17 and higher
// ...
}

Smeruxa
06.01.2023, 22:07
The most obvious mistake in your code is that you are trying to add int to the pointer returned by the GetModuleHandleA function. In this case, pointer arithmetic works. The pointer is shifted by 0x9C0A0*sizeof(the type the pointer points to, in this case it is HINSTANCE__ whose size is equal to 4).
The second mistake is that you do not remove the memory protection.

C++:






void
make_night
(
)
{
const
auto
samp
=
reinterpret_cast

(
GetModuleHandle
(
"samp.dll"
)
)
;
if
(
const
auto
ptr
=
reinterpret_cast

(
samp
+
0x9C0A0
)
)
{
// prevent contamination of the local namespace
const
char
raw
[
]
=
"\xC2\x08\x00\x00"
;
::
DWORD old_prot
{
}
;
VirtualProtect
(
ptr
,
sizeof
(
raw
)
-
1
,
PAGE_READWRITE
,
&
old_prot
)
;
std
::
memcpy
(
ptr
,
raw
,
4
)
;
VirtualProtect
(
ptr
,
sizeof
(
raw
)
-
1
,
old_prot
,
&
old_prot
)
;
}
}






Do not use strstr.

C++:






#include
if
(
std
::
string_view
{
cmdline
}
.
find
(
"-samp"
)
!=
std
::
string
::
npos
)
{
// C++17 and higher
// ...
}





where from u got this string? i want to know

C++:






const
char
raw
[
]
=
"\xC2\x08\x00\x00"
;

manukhov
07.01.2023, 16:31
есть строка на луа:
writeMemory(sampGetBase() + 0x9C0A0, 4, 0x000008C2, true)

пытался переписать на плюсы но чет нихуя не выходит, пробовал:
WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (void*)4, 0x0008C2); патч срабатывал, Но игра крашилась
был вариант
WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (uint8_t*)0x0008C2, 4); нихера не срабатывало, а игра все равно крашилась

крч помогите плз💞


как ты вообще собрал это если вместо wpm у тебя луашная функция

C++:






unsigned
long
sampGetBase
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
;
unsigned
long
data
=
0x000008C2
;
WriteProcessMemory
(
GetCurrentProcess
(
)
,
reinterpret_cast

(
sampGetBase
+
0x9C0A0
)
,
&
data
,
4
,
NULL
)
;




WriteProcessMemory function (memoryapi.h) - Win32 apps (https://www.blast.hk/redirect/aHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL3dpbm Rvd3Mvd2luMzIvYXBpL21lbW9yeWFwaS9uZi1tZW1vcnlhcGkt d3JpdGVwcm9jZXNzbWVtb3J5)

Writes data to an area of memory in a specified process. The entire area to be written to must be accessible or the operation fails.

learn.microsoft.com

Хз кто я
07.01.2023, 19:09
Вопрос:

Load Runtime

Failed to load "cef/vccorlib140.dll" 7e

Can't load Runtime

Это строка из гэймлога в лаунчере аризоны. Это хрень связана с Microsoft Visual C++ как мне говорят технари аризоны. Я уже их 100 раз скачивал и ничего. Кто то смог решить? Из-за нее проблемы с cef.

Z3roKwq
08.01.2023, 19:16
как ты вообще собрал это если вместо wpm у тебя луашная функция


ну как минимум я мог написать функцию с таким же названием, что собственно я и сделал



Вопрос:


тебе не в этот раздел, но все же:

Важно - Популярные ошибки и способы их решения (https://www.blast.hk/redirect/aHR0cHM6Ly9mb3J1bS5yb2RpbmEtcnAuY29tL3RocmVhZHMvND E2ODgwLw)

➤ Игра крашится/не запускается/вылетает. Первым делом Вам необходимо открыть лаунчер и нажать кнопку «Починить игру» Если починка игры не помогла, то Вам необходимо зайти в папку с игрой по пути «ARIZONA GAMES -> bin -> Arizona», если проблема на Родине, то папка "Rodina" соответственно и...

forum.rodina-rp.com


!GAMELOG с лаунчера Аризоны (https://www.blast.hk/threads/87667/?ysclid=lcnir9py2722967543)

В общем, я пытаюсь исправить у себя ошибку одну, и мне нужно убедиться, что эта ошибка есть только у меня (а если она не только у меня, хотелось бы узнать у какого количества людей она есть). Я пытаюсь для начала понять, может это ошибка вообще на стороне лаунчера. Кому не сложно, пожалуйста...

www.blast.hk

Wilhelm Groener
09.01.2023, 13:57
where from u got this string? i want to know

C++:






const
char
raw
[
]
=
"\xC2\x08\x00\x00"
;





The number 0x000008C2 in little-endian, represented as a string with a sequence of bytes. In memory, the little-endian number is arranged in reverse byte order. So it turns out that the number 00 00 08 C2 in memory has a sequence C2 08 00 00, which is represented as a string as "\xC2\x08\x00\x00"

Young123
12.01.2023, 18:54
Я решил сделать чит для samp или crmp mobile и столкнулся с такой проблемой, я могу сделать имгуи для чита и вшить его, но не понимаю как писать сам функционал, к примеру я видел что в сурсах sampmodmobile или каких то других есть код с функционалом телепорт, rpc и тд, но это все сделано на libsamp.so, а я делаю на отдельной либке, и вопрос такой как сделать функционал по типу того же rpc и тд на отдельной либке и использовать его на проектах (крупных, по типу бр, орп и тд), может как то можно ее подключать к либ(типо либку самп к моей имею ввиду) или же есть какой то samp api для мобилки?

Yuriy Code
18.01.2023, 07:06
Решил немного залезть в реверс.

Открыл иду и в неё кинул samp.dll.

Решил пропатчить строку от сампа, нашёл её адрес в IDA (наверное), пытаюсь пропатчить, но, она не патчится. То есть, текст там изменить хочу, но, он не изменяется.

1674010999189.pngYuriy Code · 18 Янв 2023 в 06:06' data-fancybox="lb-post-1239293" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/186387/" style="cursor: pointer;" title="1674010999189.png">
https://forum.antichat.xyz/attachments/28239293/

C++:






SF
->
getSAMP
(
)
->
registerChatCommand
(
"patch"
,
[
]
(
std
::
string params
)
{
strcpy
(
(
char
*
)
0x100D3A78
,
"SWWWWW CCCCCC the connection."
)
;
AddChat
(
-
1
,
"Наверное, пропатчилось..."
)
;
}
)
;




https://forum.antichat.xyz/attachments/28239293/

ARMOR
18.01.2023, 07:22
Решил немного залезть в реверс.
Открыл иду и в неё кинул samp.dll.

Решил пропатчить строку от сампа, нашёл её адрес в IDA (наверное), пытаюсь пропатчить, но, она не патчится. То есть, текст там изменить хочу, но, он не изменяется.

C++:






SF
->
getSAMP
(
)
->
registerChatCommand
(
"patch"
,
[
]
(
std
::
string params
)
{
strcpy
(
(
char
*
)
0x100D3A78
,
"SWWWWW CCCCCC the connection."
)
;
AddChat
(
-
1
,
"Наверное, пропатчилось..."
)
;
}
)
;





Адрес должен быть не 0x100D3A78, а 0xD3DA78, и ты не добавил GetModuleHandleA("samp.dll") к адресу. Так что игра думает что ты обращаешься к памяти ГТА, а не сампа.

Вот патч как по мне правильный( мб ***ню сморозил )

C++:






// Функция для записи строки в память ( Автор вроде Скаут )
inline
void
writeString
(
char
*
memory
,
const
char
*
str
)
{
DWORD NewProtection
;
VirtualProtect
(
memory
,
sizeof
(
str
)
,
PAGE_EXECUTE_READWRITE
,
&
NewProtection
)
;
std
::
strcpy
(
memory
,
str
)
;
VirtualProtect
(
memory
,
sizeof
(
str
)
,
NewProtection
,
&
NewProtection
)
;
}
// Сам патч
writeString
(
(
char
*
)
GetModuleHandleA
(
"samp"
)
+
0xD3A78
,
"Сервер сдох на***"
)




Кстати при записи строк в память ( и вообще записи чего либо в память ) смотри не залезь на байты которые ты менять не должен ( к примеру в строке 5 символов, а ты записал 20, тем самым ты запишешь лишних 14 байтов в память которая вообще может не быть строкой )

Yuriy Code
18.01.2023, 08:11
Как найти функцию через IDA? К примеру, добавления сообщения в чат.

Пытаюсь, но, увы, не получается.

Прошу объяснить пошагово.

Открыл в IDA samp.dll, пытался по строкам найти функцию.

https://forum.antichat.xyz/attachments/28239298/

https://forum.antichat.xyz/attachments/28239298/

https://forum.antichat.xyz/attachments/28239298/

Digger Man52
18.01.2023, 08:51
Как найти функцию через IDA? К примеру, добавления сообщения в чат.
Пытаюсь, но, увы, не получается.
Прошу объяснить пошагово.

Открыл в IDA samp.dll, пытался по строкам найти функцию.

Yuriy Code
18.01.2023, 08:59
Мне надо не переменную найти, а функцию! 😕

Digger Man52
18.01.2023, 09:18
Мне надо не переменную найти, а функцию! 😕


В самп апи все есть

ARMOR
18.01.2023, 17:42
Как найти функцию через IDA? К примеру, добавления сообщения в чат.
Пытаюсь, но, увы, не получается.
Прошу объяснить пошагово.

Открыл в IDA samp.dll, пытался по строкам найти функцию.


Вот тут можешь увидеть вот эту строчку:

https://forum.antichat.xyz/attachments/28239519/

Это вызов функции 64520. В неё передается два параметра: Указатель на структуру чата, и сообщение ( Эта функция в САМП'е отвечает за отправление в чат сообщений по типу "Connecting to 185.189.15.89:7228...", "The server is full. Retrying"). Цвет ты тут указать не можешь, ибо функция берет цвет из структуры CChat.

Цвет у тебя будет такой:

https://forum.antichat.xyz/attachments/28239519/

Ну, или если у тебя замененный samp.dll то цвет может отличаться.

Если ты хочешь указывать цвет сам - тебе нужна функция CChat_AddMessage. В R1 её смещение 645A0. Принимает агрументы в таком порядке:

C++:






(
CChat
*
this_
,
int
color
,
const
char
*
text
)

Yuriy Code
18.01.2023, 23:07
Пытаюсь вызвать функцию из samp.dll, но крашит. Что не так?

https://forum.antichat.xyz/attachments/28239794/

https://forum.antichat.xyz/attachments/28239794/

C++:






SF
->
getSAMP
(
)
->
registerChatCommand
(
"func"
,
[
]
(
std
::
string params
)
{
using
func_type
=
int
(
__stdcall
*
)
(
const
char
*
a1
,
int
a2
,
int
a3
)
;
func_type func
=
reinterpret_cast

(
(
DWORD
)
(
GetModuleHandle
(
"samp.dll"
)
+
0x9C2C0
)
)
;
func
(
"Func called"
,
0x3E8
,
5
)
;
}
)
;

kin4stat
19.01.2023, 02:56
Пытаюсь вызвать функцию из samp.dll, но крашит. Что не так?

C++:






SF
->
getSAMP
(
)
->
registerChatCommand
(
"func"
,
[
]
(
std
::
string params
)
{
using
func_type
=
int
(
__stdcall
*
)
(
const
char
*
a1
,
int
a2
,
int
a3
)
;
func_type func
=
reinterpret_cast

(
(
DWORD
)
(
GetModuleHandle
(
"samp.dll"
)
+
0x9C2C0
)
)
;
func
(
"Func called"
,
0x3E8
,
5
)
;
}
)
;





В оригинале там

thiscall

, и сигнатура выглядит вот так:


void __thiscall sub_A05D0(CGame *this, char *text, int duration, int style)


Но CGame можно опустить, потому что он не используется. Короче тебе просто повезло.

А ошибка в том, что ты прибавляешь к результату GetModuleHandle число напрямую. А под ним лежит указатель, поэтому прибавляется неверное количество байт. Правильно будет вот так:

C++:






SF
->
getSAMP
(
)
->
registerChatCommand
(
"func"
,
[
]
(
std
::
string params
)
{
using
func_type
=
void
(
__stdcall
*
)
(
const
char
*
,
int
,
int
)
;
auto
sampbase
=
reinterpret_cast

(
GetModuleHandle
(
"samp.dll"
)
)
;
func_type func
=
reinterpret_cast

(
sampbase
+
0x9C2C0
)
;
func
(
"Func called"
,
1000
,
5
)
;
}
)
;




А еще правильнее вот так:

C++:






SF
->
getSAMP
(
)
->
registerChatCommand
(
"func"
,
[
]
(
std
::
string params
)
{
using
func_type
=
void
(
__thiscall
*
)
(
void
*
,
const
char
*
,
int
,
int
)
;
auto
sampbase
=
reinterpret_cast

(
GetModuleHandle
(
"samp.dll"
)
)
;
func_type func
=
reinterpret_cast

(
sampbase
+
0x9C2C0
)
;
func
(
*
reinterpet_cast

(
sampbase
+
/* R3 Addr: 0x26E8F4 */
)
,
"Func called"
,
1000
,
5
)
;
}
)
;

writeline
19.01.2023, 14:22
Решил немного залезть в реверс.
Открыл иду и в неё кинул samp.dll.

Решил пропатчить строку от сампа, нашёл её адрес в IDA (наверное), пытаюсь пропатчить, но, она не патчится. То есть, текст там изменить хочу, но, он не изменяется.

C++:






SF
->
getSAMP
(
)
->
registerChatCommand
(
"patch"
,
[
]
(
std
::
string params
)
{
strcpy
(
(
char
*
)
0x100D3A78
,
"SWWWWW CCCCCC the connection."
)
;
AddChat
(
-
1
,
"Наверное, пропатчилось..."
)
;
}
)
;






C++ R3:






std
::
string str_kicked
{
"Сервер закрыл соединение."
}
;
//0x8A77
class
patchstr_kicked
{
private
:
uintptr_t module_samp
{
0
}
;
public
:
patchstr_kicked
(
)
{
module_samp
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
;
DWORD lpflOldProtect
;
VirtualProtect
(
reinterpret_cast

(
module_samp
+
0x8A77
)
,
0x4
,
PAGE_EXECUTE_READWRITE
,
&
lpflOldProtect
)
;
*
reinterpret_cast

(
module_samp
+
0x8A77
)
=
&
str_kicked
[
0
]
;
VirtualProtect
(
reinterpret_cast

(
module_samp
+
0x8A77
)
,
0x4
,
lpflOldProtect
,
&
lpflOldProtect
)
;
}
}
pstr_kicked
;




Цвет можешь указывать вот так:

С++:






std::string str_kicked{ " {ff0000} Сервер закрыл соединение." };




Либо

С++:






std::string str_kicked{ " {red} Сервер закрыл соединение." };

ARMOR
23.01.2023, 22:26
Как можно получить ID процесса по его названию? Нашел такую функцию в интернете:

https://forum.antichat.xyz/attachments/28242938/




C++:






DWORD
GetProcessID
(
const
char
*
processName
)
{
if
(
!
processName
)
return
0
;
DWORD id
=
0
;
HANDLE hSnap
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPPROCESS
,
0
)
;
if
(
hSnap
)
{
PROCESSENTRY32 pe32
=
{
sizeof
(
PROCESSENTRY32
)
}
;
if
(
Process32First
(
hSnap
,
&
pe32
)
)
{
while
(
Process32Next
(
hSnap
,
&
pe32
)
)
{
if
(
strcmp
(
processName
,
pe32
.
szExeFile
)
==
0
)
{
id
=
pe32
.
th32ProcessID
;
break
;
}
}
}
}
CloseHandle
(
hSnap
)
;
return
id
;
}





Но она выдает ошибку:

1674498319091.pngARMOR · 23 Янв 2023 в 21:26' data-fancybox="lb-post-1242938" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/187046/" style="cursor: pointer;" title="1674498319091.png">
https://forum.antichat.xyz/attachments/28242938/

Dark_Knight
23.01.2023, 22:27
Поставь компиляцию строк в мультибайте, а не в unicode

EclipsedFlow
23.01.2023, 22:29
Как можно получить ID процесса по его названию? Нашел такую функцию в интернете:




C++:






DWORD
GetProcessID
(
const
char
*
processName
)
{
if
(
!
processName
)
return
0
;
DWORD id
=
0
;
HANDLE hSnap
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPPROCESS
,
0
)
;
if
(
hSnap
)
{
PROCESSENTRY32 pe32
=
{
sizeof
(
PROCESSENTRY32
)
}
;
if
(
Process32First
(
hSnap
,
&
pe32
)
)
{
while
(
Process32Next
(
hSnap
,
&
pe32
)
)
{
if
(
strcmp
(
processName
,
pe32
.
szExeFile
)
==
0
)
{
id
=
pe32
.
th32ProcessID
;
break
;
}
}
}
}
CloseHandle
(
hSnap
)
;
return
id
;
}





Но она выдает ошибку:


В настройках проекта выбери - многобайтовую кодировку.




https://forum.antichat.xyz/attachments/28242943/

Young123
26.01.2023, 14:13
Как можно вызвать функции из libsamp.so или libgtasa.so на samp mobile? Я в этом мало знаю, как это можно сделать? (К примеру вывод текста в чат)

Young123
26.01.2023, 14:31
Посмотри исходники samp mobile


Смотрел, но не че не нашел похожего на вызов функций

Young123
29.01.2023, 17:29
Помогите, компилю, но текст не выводится (делаю на самп мобайл)

Код:






#include "main.h"
#include "armhook.h"

void AddMessageJumpQ(const char* text, unsigned int time, unsigned short flag, bool bPreviousBrief)
{
((void(__cdecl*)(const char*, unsigned int, unsigned short, bool))(g_libGTASA+0x4D1EA4))(text, time, flag, bPreviousBrief);
}

void InitializeAndLoad() {
while (*reinterpret_cast(g_libGTASA+0x9E75B8) != 9) {
std::this_thread::sleep_for(std::chrono::milliseco nds(100u));
}
AddMessageJumpQ("~r~Hello from blast.hk", 5000, 0, false);
}

writeline
06.02.2023, 06:05
Есть какой либо сорц по смени имени окна уже после подключения к серверу либо инициализации плагина?​По типу такого:


https://forum.antichat.xyz/attachments/28251196/

Может кто то, что нибудь подсказать?

AdCKuY_DpO4uLa
06.02.2023, 13:29
Есть какой либо сорц по смени имени окна уже после подключения к серверу либо инициализации плагина?​По типу такого:

https://forum.antichat.xyz/attachments/28251280/

Может кто то, что нибудь подсказать?


SetWindowText(handle, "Заголовок");

writeline
06.02.2023, 22:58
SetWindowText(handle, "Заголовок");


Подскажи если сможешь, почему не хочет работать? 🧐

C++:






void
windtext
(
)
{
HWND hwnd
=
FindWindow
(
NULL
,
"GTA:SA:MP"
)
;
if
(
hwnd
==
NULL
)
{
MessageBox
(
NULL
,
"Window not found!"
,
"Error"
,
MB_OK
)
;
}
std
::
string newText
=
"GTA:BLAST.HK"
;
SetWindowText
(
hwnd
,
newText
.
c_str
(
)
)
;
}

AdCKuY_DpO4uLa
07.02.2023, 01:01
Подскажи если сможешь, почему не хочет работать? 🧐

C++:






void
windtext
(
)
{
HWND hwnd
=
FindWindow
(
NULL
,
"GTA:SA:MP"
)
;
if
(
hwnd
==
NULL
)
{
MessageBox
(
NULL
,
"Window not found!"
,
"Error"
,
MB_OK
)
;
}
std
::
string newText
=
"GTA:BLAST.HK"
;
SetWindowText
(
hwnd
,
newText
.
c_str
(
)
)
;
}





У меня работает. Возможно ты используешь это в DLL и код вызывается до того, как самп инициализировался, а до того, как самп инициализировался, работать не будет, ибо там другое название окна

writeline
07.02.2023, 09:22
У меня работает


Можешь свой вариант кода скинуть пожалуйста?



Помогите, компилю, но текст не выводится (делаю на самп мобайл)


Адреса не одинаковые с ПК сампом что ли? На ПК адреса 0x69F1E0 и 0xC8D4C0

Я конечно в мобийл 0, но попробуй вот так

С++:






#include "pch.h"
#include
#include "main.h"
#include "armhook.h"
void
AddMessageJumpQ
(
const
char
*
text
,
unsigned
int
time
,
unsigned
short
flag
,
bool
bPreviousBrief
)
{
(
(
void
(
__cdecl
*
)
(
const
char
*
,
unsigned
int
,
unsigned
short
,
bool
)
)
0x4D1EA4
)
(
text
,
time
,
flag
,
bPreviousBrief
)
;
}
void
InitializeAndLoad
(
)
{
while
(
*
reinterpret_cast

(
0x9E75B8
)
!=
9
)
{
std
::
this_thread
::
sleep_for
(
std
::
chrono
::
milliseconds
(
100u
)
)
;
}
AddMessageJumpQ
(
"~Hello from blast.hk"
,
5000
,
0
,
false
)
;
}
}








Как можно получить ID процесса по его названию? Нашел такую функцию в интернете:



C++:






#include
int
main
(
)
{
int
process_id
=
psutil
::
GetProcessId
(
"process_name"
)
;
return
0
;
}

hhkiyuujv
08.02.2023, 00:40
Как пользоваться сампфунксом? На вики удалили раздел со списком функций.

horacy
08.02.2023, 18:39
Как отключить функцию /NOP/patch в C++, найденную в IDA в samp.dll, чтобы она не работала в игре?

SAMP 03DL, пишет код в mod_sa.

sub_1006A2B0




https://forum.antichat.xyz/attachments/28252680/

writeline
08.02.2023, 18:46
Как отключить функцию /NOP/patch в C++, найденную в IDA в samp.dll, чтобы она не работала в игре?
SAMP 03DL, пишет код в mod_sa.
sub_1006A2B0


Замени sub_1006A2B0 на пустую функцию

horacy
08.02.2023, 18:50
Замени sub_1006A2B0 на пустую функцию


И можно ли это сделать без редактирования samp.dll? Только переопределение функций С++ в mod_sa?

writeline
08.02.2023, 18:53
можно ли это сделать без редактирования samp.dll


Нет

Пиши плагин)

horacy
08.02.2023, 19:00
Нет
Пиши плагин)


Я имел в виду, как переопределить эту функцию на C++, я пишу в проекте mod_sa, поэтому я хотел бы написать это там, если только по какой-то причине это не может. Можете ли вы привести пример кода, который заменяет sub пустой функцией?

ARMOR
08.02.2023, 20:36
Я имел в виду, как переопределить эту функцию на C++, я пишу в проекте mod_sa, поэтому я хотел бы написать это там, если только по какой-то причине это не может. Можете ли вы привести пример кода, который заменяет sub пустой функцией?


Так нопни нужный тебе вызов этой функции

0x73616D
08.02.2023, 21:08
Как я могу сделать то же самое, но на C++? (Я просто хочу научиться отправлять данные в дискорд)) (.asi — .sf)

Lua:






local
encoding
=
require
'encoding'
-- подключаем для корректной отправки русских букв
encoding
.
default
=
'CP1251'
u8
=
encoding
.
UTF8
local
sampev
=
require
'lib.samp.events'
-- подключаем для хука отправки ответа на диалог
local
effil
=
require
'effil'
-- для ассинхронных запросов
local
url
=
'URL'
local
data
=
{
[
'content'
]
=
''
,
-- текст (меняется через команду, так что можно оставить пустым)
[
'username'
]
=
'Sended from .lua script!'
,
-- ник отправителя
[
'avatar_url'
]
=
'https://c.tenor.com/Z9mXH7-MlcsAAAAS/sexy-black-man-thirst-trap.gif'
,
-- ссылка на аватарку (можно убрать, будет дефолтная)
[
'tts'
]
=
false
,
-- tts - text to speech - читалка сообщений (true/false)
-- так же можно сделать еще много чего, подробнее тут: https://discord.com/developers/docs/resources/webhook
}
function
main
(
)
while
not
isSampAvailable
(
)
do
wait
(
0
)
end
sampRegisterChatCommand
(
'ds.msg'
,
function
(
arg
)
data
[
'username'
]
=
sampGetPlayerNickname
(
select
(
2
,
sampGetPlayerIdByCharHandle
(
PLAYER_PED
)
)
)
-- ник отправителя = ник в игре
data
[
'content'
]
=
arg
-- делаем что бы текст сообщения был равен тексту который мы ввели после команды
-- отправляем запрос
asyncHttpRequest
(
'POST'
,
url
,
{
headers
=
{
[
'content-type'
]
=
'application/json'
}
,
data
=
u8
(
encodeJson
(
data
)
)
}
,
function
(
response
)
print
(
'[WebHook] [OK] отправлено!'
)
end
,
function
(
err
)
print
(
'[WebHook] [ERROR] error: '
..
err
)
end
)
end
)
wait
(
-
1
)
end
-- функция для отправки ассинхронных сообщений
function
asyncHttpRequest
(
method
,
url
,
args
,
resolve
,
reject
)
local
request_thread
=
effil
.
thread
(
function
(
method
,
url
,
args
)
local
requests
=
require
'requests'
local
result
,
response
=
pcall
(
requests
.
request
,
method
,
url
,
args
)
if
result
then
response
.
json
,
response
.
xml
=
nil
,
nil
return
true
,
response
else
return
false
,
response
end
end
)
(
method
,
url
,
args
)
-- Если запрос без функций обработки ответа и ошибок.
if
not
resolve
then
resolve
=
function
(
)
end
end
if
not
reject
then
reject
=
function
(
)
end
end
-- Проверка выполнения потока
lua_thread
.
create
(
function
(
)
local
runner
=
request_thread
while
true
do
local
status
,
err
=
runner
:
status
(
)
if
not
err
then
if
status
==
'completed'
then
local
result
,
response
=
runner
:
get
(
)
if
result
then
resolve
(
response
)
else
reject
(
response
)
end
return
elseif
status
==
'canceled'
then
return
reject
(
status
)
end
else
return
reject
(
err
)
end
wait
(
0
)
end
end
)
end

Musaigen
09.02.2023, 11:58
Я имел в виду, как переопределить эту функцию на C++, я пишу в проекте mod_sa, поэтому я хотел бы написать это там, если только по какой-то причине это не может. Можете ли вы привести пример кода, который заменяет sub пустой функцией?


Покажи эпилог функции, где видно инструкцию ret/retn

xoris82
11.02.2023, 09:12
How to send packets to other players and make them disconnected from the server (kicked) in c++?

kin4stat
11.02.2023, 11:19
How to send packets to other players and make them disconnected from the server (kicked) in c++?



C++:






sampapi
::
v037r3
::
RefInput
(
)
->
Send
(
"Please send /q to chat"
)

maynkraftpro2010
11.02.2023, 12:00
Пакеты голосового чата на серверах идут через синхронизацию сампа или через сторонний сервер?

kin4stat
11.02.2023, 12:01
Пакеты голосового чата на серверах идут через синхронизацию сампа или через сторонний сервер?


От реализации зависит

maynkraftpro2010
11.02.2023, 12:03
От реализации зависит


Ну тогда самый известный пример - арз. Как дела происходят там? Просто интересно, если я с их лаунчером и своим реплей модом зайду и сделаю запись, будут ли слышны голоса при повторе

kin4stat
11.02.2023, 12:06
Ну тогда самый известный пример - арз. Как дела происходят там? Просто интересно, если я с их лаунчером и своим реплей модом зайду и сделаю запись, будут ли слышны голоса при повторе


Только что спросил у сртима - через ракнет как обычная самповская синхра

xoris82
11.02.2023, 18:12
what function to set other player health in sobeit ?

ARMOR
12.02.2023, 20:03
Как вообще можно работать с рендером D3D8? В Direct SDK нет ничего связаного с D3D8 Где каким-то чудестным методом можно взять d3d8.h, d3dx8.h?

takiyama
13.02.2023, 08:41
Как подключить активацию по команде?

Digger Man52
13.02.2023, 21:05
57DC8562-C1C7-426D-ACDC-CCAE38295C3A.jpegDigger Man52 · 13 Фев 2023 в 20:05' data-fancybox="lb-post-1255867" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/189883/" style="cursor: pointer;" title="57DC8562-C1C7-426D-ACDC-CCAE38295C3A.jpeg">
https://forum.antichat.xyz/attachments/28255867/
Товарищи, помогайте, есть оффсетики под р3, надо найти под р1, но там жопа какая то, а не оффсетики… Помогите пожалуйста

AdCKuY_DpO4uLa
13.02.2023, 22:01
[QUOTE="Digger Man"]

Товарищи, помогайте, есть оффсетики под р3, надо найти под р1, но там жопа какая то, а не оффсетики… Помогите пожалуйста

C++:






0x12FAF
0x12FBA
0x12FD3
0x12FE2
0x12FF7

xoris82
14.02.2023, 18:58
How to make a knife sync that I can slit the player's throat? (0.3dl)

ARMOR
14.02.2023, 21:44
Как получить текст из инпута чата? CInput + 0x14E4 не работает. Выводятся пустые сообщения.

Musaigen
14.02.2023, 22:11
Как получить текст из инпута чата? CInput + 0x14E4 не работает. Выводятся пустые сообщения.


прореверси SAMPFUNCS.asi там должна быть такая функция

AdCKuY_DpO4uLa
17.02.2023, 16:28
Есть какой-нибудь аналог GetTickCount64() на Linux?

EclipsedFlow
17.02.2023, 17:18
Есть какой-нибудь аналог GetTickCount64() на Linux?



asm-linux/src/gettickcount.c at master · Killswitch00/asm-linux (https://github.com/Killswitch00/asm-linux/blob/master/src/gettickcount.c)

Arma Server Monitor for Linux. Contribute to Killswitch00/asm-linux development by creating an account on GitHub.

github.com

AdCKuY_DpO4uLa
17.02.2023, 17:53
asm-linux/src/gettickcount.c at master · Killswitch00/asm-linux (https://github.com/Killswitch00/asm-linux/blob/master/src/gettickcount.c)

Arma Server Monitor for Linux. Contribute to Killswitch00/asm-linux development by creating an account on GitHub.

github.com



Возвращаемое значение - 4 байта, мне 8 нужно

EclipsedFlow
17.02.2023, 19:24
Возвращаемое значение - 4 байта, мне 8 нужно



C++:






#include
#include
std
::
uint64_t
GetTickCount64
(
void
)
{
timespec ts
;
clock_gettime
(
CLOCK_MONOTONIC
,
&
ts
)
;
return
(
std
::
uint64_t
)
ts
.
tv_sec
*
1000
+
(
std
::
uint64_t
)
ts
.
tv_nsec
/
1000000
;
}




Или-же можно попробовать сторонние библиотеки типа boost::chrono, std::chrono

_=Gigant=_
18.02.2023, 17:23
Code which you can use to load images from folder into Imgui::Image

Includes you need


#define WIN32_LEAN_AND_MEAN
#include
#include
#include
#include
#include
#include
#include
#include "imgui/imgui.h"
#include "imgui/examples/imgui_impl_win32.h"
#include "imgui/examples/imgui_impl_dx9.h"
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")


https://forum.antichat.xyz/attachments/28258546/

After that just implement

for (int i = 0; i

Daniel_Biznesmen
19.02.2023, 12:10
Вопрос: как исправить ошибку?1676758549491.jpgDaniel_Biznesmen · 19 Фев 2023 в 11:10' data-fancybox="lb-post-1258982" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/190568/" style="cursor: pointer;" title="1676758549491.jpg">
https://forum.antichat.xyz/attachments/28258982/

key
20.02.2023, 02:30
Как вообще можно работать с рендером D3D8? В Direct SDK нет ничего связаного с D3D8 Где каким-то чудестным методом можно взять d3d8.h, d3dx8.h?


Используй конвертер d3d8to9 и работай уже с d3d9))

Sadow
20.02.2023, 23:05
как имитировать нажатие шифта7

moreveal
20.02.2023, 23:06
используя этот гайд (https://www.blast.hk/threads/18061/) сделал модуль, но при подключении любой графической библиотеки (boost gil, sfml graphics, freeimage) и последующем добавлении любых из их функций в код (т.е. даже в тот участок кода, который не вызывается), скрипт перестаёт видеть dll с соответствующей ошибкой в логе, как это можно исправить?

Код:






[21:53:28.481123] (error) test.lua: error loading module 'library' from file 'D:\gta\moonloader\lib\library.dll':
Не найден указанный модуль.

stack traceback:
[C]: in ?
[C]: in function 'require'
D:\gta\moonloader\test.lua:4: in main chunk

Sadow
21.02.2023, 14:20
Как заблокировать нажатие клавиши7

Digger Man52
21.02.2023, 14:54
как имитировать нажатие шифта7





Как заблокировать нажатие клавиши7


Winapi хукай

0x73616D
21.02.2023, 21:55
Why does the string "CambiarColor" not work for me?

I mean, in the sprintf the text is not shown

I have the "CambiarColor" stored as char

C++:





[CODE]
string CambiarColor
=
"{0000FF}"
;
}
if
(
!
pshow