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

мистер вселенная
28.07.2023, 18:09
адреса кнопок открытия чата, помогите пж...

korsarsan
29.07.2023, 09:33
всмысле, че за ***ню ты советуешь? зачем отключать ассерты там же дальше чтение идет GImGui->Style и просто крашить будет


И как тогда решить, потому что если только createcontext включать он при первой загрузке загружает что нужно а потом начинает грузить не стиль из конфига. Мб ImGui::SetCurrentContext() надо, но я не шарю как его правильно использовать



адреса кнопок открытия чата, помогите пж...


Типо )

0x54Клавиша T

VK_F60x75Клавиша F6

Smeruxa
02.08.2023, 20:23
Подключил ImGui в SF плагин, если бегать с ним минуту где-то, то при открытии все меню с ума начинает сходить, иногда на что-то нажимает, а со временем проходит, будто повторяет все мои действия сделанные раннее, просто с отключенным курсором, как можно исправить?

Подгружаю я imgui_load в mainloop main.cpp

main.cpp:






if
(
SUCCEEDED
(
SF
->
getRender
(
)
->
BeginRender
(
)
)
)
{
// RENDER
rVisual
->
Render
(
)
;
// RENDER
// IMGUI
if
(
rConfig
->
imgui_active
)
{
ImGui_ImplDX9_NewFrame
(
)
;
ImGui_ImplWin32_NewFrame
(
)
;
ImGui
::
NewFrame
(
)
;
// DRAW
SF
->
getSAMP
(
)
->
getMisc
(
)
->
ToggleCursor
(
true
)
;
ImGui
::
SetNextWindowSize
(
ImVec2
(
651.f
,
296.f
)
)
;
ImGui
::
SetNextWindowPos
(
ImVec2
(
rConfig
->
ScreenResolution
[
0
]
*
0.5f
,
rConfig
->
ScreenResolution
[
1
]
*
0.5f
)
,
ImGuiCond_Always
,
ImVec2
(
0.5f
,
0.5f
)
)
;
ImGui
::
Begin
(
""
,
&
rConfig
->
imgui_active
,
ImGuiWindowFlags_NoResize
|
ImGuiWindowFlags_NoCollapse
)
;
ImGui
::
End
(
)
;
// DRAW
ImGui
::
EndFrame
(
)
;
ImGui
::
Render
(
)
;
ImGui_ImplDX9_RenderDrawData
(
ImGui
::
GetDrawData
(
)
)
;
IDirect3DDevice9
*
device
=
SF
->
getRender
(
)
->
getD3DDevice
(
)
;
device
->
SetRenderState
(
D3DRS_ZENABLE
,
FALSE
)
;
device
->
SetRenderState
(
D3DRS_ALPHABLENDENABLE
,
FALSE
)
;
device
->
SetRenderState
(
D3DRS_SCISSORTESTENABLE
,
FALSE
)
;
}
// IMGUI
SF
->
getRender
(
)
->
EndRender
(
)
;
}




C++:






LRESULT
ImGui_ImplWin32_WndProcHandler
(
HWND hWnd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
;
bool
CALLBACK
Present
(
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
;
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
(
)
;
}
void
set_style
(
)
{
ImGuiStyle
&
style
=
ImGui
::
GetStyle
(
)
;
ImGuiIO
&
io
=
ImGui
::
GetIO
(
)
;
style
.
WindowPadding
=
ImVec2
(
2
,
2
)
;
style
.
WindowRounding
=
1
;
style
.
ChildRounding
=
2
;
style
.
FramePadding
=
ImVec2
(
3
,
3
)
;
style
.
FrameRounding
=
1
;
style
.
ItemSpacing
=
ImVec2
(
2
,
2
)
;
style
.
TouchExtraPadding
=
ImVec2
(
0
,
0
)
;
style
.
IndentSpacing
=
21
;
style
.
ScrollbarSize
=
9
;
style
.
ScrollbarRounding
=
1
;
style
.
GrabMinSize
=
10
;
style
.
GrabRounding
=
1
;
style
.
WindowTitleAlign
=
ImVec2
(
0.5
,
0.5
)
;
style
.
ButtonTextAlign
=
ImVec2
(
0.5
,
0.5
)
;
style
.
Colors
[
ImGuiCol_FrameBg
]
=
ImVec4
(
0.16
,
0.29
,
0.48
,
0.54
)
;
style
.
Colors
[
ImGuiCol_FrameBgHovered
]
=
ImVec4
(
0.26
,
0.59
,
0.98
,
0.40
)
;
style
.
Colors
[
ImGuiCol_FrameBgActive
]
=
ImVec4
(
0.26
,
0.59
,
0.98
,
0.67
)
;
style
.
Colors
[
ImGuiCol_TitleBg
]
=
ImVec4
(
0.16
,
0.29
,
0.48
,
1.00
)
;
style
.
Colors
[
ImGuiCol_TitleBgActive
]
=
ImVec4
(
0.16
,
0.29
,
0.48
,
1.00
)
;
style
.
Colors
[
ImGuiCol_TitleBgCollapsed
]
=
ImVec4
(
0.16
,
0.29
,
0.48
,
1.00
)
;
style
.
Colors
[
ImGuiCol_CheckMark
]
=
ImVec4
(
0.26
,
0.59
,
0.98
,
1.00
)
;
style
.
Colors
[
ImGuiCol_SliderGrab
]
=
ImVec4
(
0.24
,
0.52
,
0.88
,
1.00
)
;
style
.
Colors
[
ImGuiCol_SliderGrabActive
]
=
ImVec4
(
0.26
,
0.59
,
0.98
,
1.00
)
;
style
.
Colors
[
ImGuiCol_Button
]
=
ImVec4
(
0.26
,
0.59
,
0.98
,
0.40
)
;
style
.
Colors
[
ImGuiCol_ButtonHovered
]
=
ImVec4
(
0.26
,
0.59
,
0.98
,
1.00
)
;
style
.
Colors
[
ImGuiCol_ButtonActive
]
=
ImVec4
(
0.06
,
0.53
,
0.98
,
1.00
)
;
style
.
Colors
[
ImGuiCol_Header
]
=
ImVec4
(
0.26
,
0.59
,
0.98
,
0.31
)
;
style
.
Colors
[
ImGuiCol_HeaderHovered
]
=
ImVec4
(
0.26
,
0.59
,
0.98
,
0.80
)
;
style
.
Colors
[
ImGuiCol_HeaderActive
]
=
ImVec4
(
0.26
,
0.59
,
0.98
,
1.00
)
;
style
.
Colors
[
ImGuiCol_Separator
]
=
style
.
Colors
[
ImGuiCol_Border
]
;
style
.
Colors
[
ImGuiCol_SeparatorHovered
]
=
ImVec4
(
0.26
,
0.59
,
0.98
,
0.78
)
;
style
.
Colors
[
ImGuiCol_SeparatorActive
]
=
ImVec4
(
0.26
,
0.59
,
0.98
,
1.00
)
;
style
.
Colors
[
ImGuiCol_ResizeGrip
]
=
ImVec4
(
0.26
,
0.59
,
0.98
,
0.25
)
;
style
.
Colors
[
ImGuiCol_ResizeGripHovered
]
=
ImVec4
(
0.26
,
0.59
,
0.98
,
0.67
)
;
style
.
Colors
[
ImGuiCol_ResizeGripActive
]
=
ImVec4
(
0.26
,
0.59
,
0.98
,
0.95
)
;
style
.
Colors
[
ImGuiCol_TextSelectedBg
]
=
ImVec4
(
0.26
,
0.59
,
0.98
,
0.35
)
;
style
.
Colors
[
ImGuiCol_Text
]
=
ImVec4
(
1.00
,
1.00
,
1.00
,
1.00
)
;
style
.
Colors
[
ImGuiCol_TextDisabled
]
=
ImVec4
(
0.50
,
0.50
,
0.50
,
1.00
)
;
style
.
Colors
[
ImGuiCol_WindowBg
]
=
ImVec4
(
0.06
,
0.06
,
0.06
,
0.94
)
;
style
.
Colors
[
ImGuiCol_ChildBg
]
=
ImVec4
(
1.00
,
1.00
,
1.00
,
0.00
)
;
style
.
Colors
[
ImGuiCol_PopupBg
]
=
ImVec4
(
0.08
,
0.08
,
0.08
,
0.94
)
;
//style.Colors[ImGuiCol_ComboBg] = style.Colors[ImGuiCol_PopupBg]; ImGuiCol_Bg
style
.
Colors
[
ImGuiCol_Border
]
=
ImVec4
(
0.43
,
0.43
,
0.50
,
0.50
)
;
style
.
Colors
[
ImGuiCol_BorderShadow
]
=
ImVec4
(
0.00
,
0.00
,
0.00
,
0.00
)
;
style
.
Colors
[
ImGuiCol_MenuBarBg
]
=
ImVec4
(
0.14
,
0.14
,
0.14
,
1.00
)
;
style
.
Colors
[
ImGuiCol_ScrollbarBg
]
=
ImVec4
(
0.02
,
0.02
,
0.02
,
0.53
)
;
style
.
Colors
[
ImGuiCol_ScrollbarGrab
]
=
ImVec4
(
0.31
,
0.31
,
0.31
,
1.00
)
;
style
.
Colors
[
ImGuiCol_ScrollbarGrabHovered
]
=
ImVec4
(
0.41
,
0.41
,
0.41
,
1.00
)
;
style
.
Colors
[
ImGuiCol_ScrollbarGrabActive
]
=
ImVec4
(
0.51
,
0.51
,
0.51
,
1.00
)
;
//style.Colors[ImGuiCol_CloseButton] = ImVec4(0.41, 0.41, 0.41, 0.50);
//style.Colors[ImGuiCol_CloseButtonHovered] = ImVec4(0.98, 0.39, 0.36, 1.00);
//style.Colors[ImGuiCol_CloseButtonActive] = ImVec4(0.98, 0.39, 0.36, 1.00);
style
.
Colors
[
ImGuiCol_PlotLines
]
=
ImVec4
(
0.61
,
0.61
,
0.61
,
1.00
)
;
style
.
Colors
[
ImGuiCol_PlotLinesHovered
]
=
ImVec4
(
1.00
,
0.43
,
0.35
,
1.00
)
;
style
.
Colors
[
ImGuiCol_PlotHistogram
]
=
ImVec4
(
0.90
,
0.70
,
0.00
,
1.00
)
;
style
.
Colors
[
ImGuiCol_PlotHistogramHovered
]
=
ImVec4
(
1.00
,
0.60
,
0.00
,
1.00
)
;
style
.
Colors
[
ImGuiCol_ModalWindowDimBg
]
=
ImVec4
(
0.80
,
0.80
,
0.80
,
0.35
)
;
}
void
ImGuiInizialization
::
Load
(
)
{
ImGui
::
CreateContext
(
)
;
ImGui_ImplWin32_Init
(
GetActiveWindow
(
)
)
;
ImGui_ImplDX9_Init
(
SF
->
getRender
(
)
->
getD3DDevice
(
)
)
;
ImGui
::
GetIO
(
)
.
Fonts
->
AddFontFromFileTTF
(
"C:\\Windows\\Fonts\\Arial.ttf"
,
16.5f
,
NULL
,
ImGui
::
GetIO
(
)
.
Fonts
->
GetGlyphRangesCyrillic
(
)
)
;
child_font
=
ImGui
::
GetIO
(
)
.
Fonts
->
AddFontFromFileTTF
(
"C:\\Windows\\Fonts\\Arial.ttf"
,
17.f
,
NULL
,
ImGui
::
GetIO
(
)
.
Fonts
->
GetGlyphRangesCyrillic
(
)
)
;
set_style
(
)
;
SF
->
getRender
(
)
->
registerD3DCallback
(
eDirect3DDeviceMethods
::
D3DMETHOD_PRESENT
,
Present
)
;
SF
->
getRender
(
)
->
registerD3DCallback
(
eDirect3DDeviceMethods
::
D3DMETHOD_RESET
,
Reset
)
;
SF
->
getGame
(
)
->
registerWndProcCallback
(
SFGame
::
MEDIUM_CB_PRIORITY
,
WndProcHandler
)
;
SF
->
getGame
(
)
->
registerGameDestructorCallback
(
PluginFree
)
;
}

funob
03.08.2023, 23:51
Курсор imgui samp api, либо дайте func w/o samp api/plugin sdk

Z3roKwq
04.08.2023, 00:19
Курсор imgui samp api, либо дайте func w/o samp api/plugin sdk



Информация - Полезные функции (https://www.blast.hk/threads/10970/post-640678)

отключает и включает возможность открывать и закрывать таб (0.3.7-R1) memcpy((void*)(GetModuleHandleA("samp.dll") + 0x6AD33), (BYTE*)"\x83\x3E\x01", 3);//отключить таб memcpy((void*)(GetModuleHandleA("samp.dll") + 0x6AD33), (BYTE*)"\x83\x3E\x00", 3);//включить таб Крашнет, т.к. протекцию памяти...

www.blast.hk

funob
04.08.2023, 02:58
есть ли аналог на самп апи SF->getGame()->emulateGTAKey(1, -128);?

F0RQU1N and
04.08.2023, 03:33
есть ли аналог на самп апи SF->getGame()->emulateGTAKey(1, -128);?


скорей всего так

gta-reversed-modern/source/game_sa/ControllerConfigManager.h at master · gta-reversed/gta-reversed-modern (https://github.com/gta-reversed/gta-reversed-modern/blob/master/source/game_sa/ControllerConfigManager.h#L127)

Reimplementation of GTA:SA 1.0 US. Contribute to gta-reversed/gta-reversed-modern development by creating an account on GitHub.

github.com


m_ButtonStates[id] = true

Z3roKwq
05.08.2023, 11:59
как сделать поиск 3д текстов для sampapi r3-1, я пытался, но как минимум фпс улетучивается, а код то ли не работает, то ли пул пустой

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

ну в любом случае дальше "if (sampapi::v037r3::CLabelPool().m_bNotEmpty) {" не идет

Snoopcheg
05.08.2023, 14:01
как сделать поиск 3д текстов для sampapi r3-1, я пытался, но как минимум фпс улетучивается, а код то ли не работает, то ли пул пустой

ну в любом случае дальше "if (sampapi::v037r3::CLabelPool().m_bNotEmpty) {" не идет



C++:






sampapi
::
v037r3
::
RefNetGame
(
)
->
m_pPools
->
m_pLabel
->
m_bNotEmpty
[
i
]

Z3roKwq
05.08.2023, 15:33
C++:






sampapi
::
v037r3
::
RefNetGame
(
)
->
m_pPools
->
m_pLabel
->
m_bNotEmpty
[
i
]





проблема с получением координат осталась, юзаю "sampapi::v037r3::RefNetGame()->m_pPools->m_pLabel->m_object.m_position)" а оно возввращает тупо нули, ну или бывает по z координате не больше 1

Artem90
05.08.2023, 16:37
stRemotePlayer* pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer;

SF 5.5.0

Ошибка:E0020 идентификатор "stRemotePlayer" не определен SFPlugin

Как решить такую ошибку?

Z3roKwq
05.08.2023, 21:17
проблема с получением координат осталась, юзаю "sampapi::v037r3::RefNetGame()->m_pPools->m_pLabel->m_object.m_position)" а оно возввращает тупо нули, ну или бывает по z координате не больше 1


жду, надеюсь, помогите pls

Fikasor
05.08.2023, 22:06
жду, надеюсь, помогите pls


Если не ошибаюсь то так --







C++:






sampapi
::
v037r3
::
RefNetGame
(
)
->
m_pPools
->
m_pLabel
->
m_object
[
id
]
.
m_position

Z3roKwq
05.08.2023, 22:15
Если не ошибаюсь то так --







C++:






sampapi
::
v037r3
::
RefNetGame
(
)
->
m_pPools
->
m_pLabel
->
m_object
[
id
]
.
m_position





Ну так я так и делаю епт, проблема в том что оно неверные, а точнее нулевые координаты возвращает

AdCKuY_DpO4uLa
05.08.2023, 22:38
Ну так я так и делаю епт, проблема в том что оно неверные, а точнее нулевые координаты возвращает



C++:






for
(
int
i
=
0
;
i
!=
SAMP
::
API
::
v037r3
::
CLabelPool
::
MAX_TEXT_LABELS
;
i
++
)
{
auto
pPool
=
SAMP
::
API
::
v037r3
::
RefNetGame
(
)
->
m_pPools
->
m_pLabel
;
if
(
pPool
->
m_bNotEmpty
[
i
]
)
{
auto
vecPos
=
pPool
->
m_object
[
i
]
.
m_position
;
ImGui
::
Text
(
"ID: %d, text: %s, pos: [ %.2f %.2f %.2f ]"
,
i
,
pPool
->
m_object
[
i
]
.
m_pText
,
vecPos
.
x
,
vecPos
.
y
,
vecPos
.
z
)
;
}
}




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

Z3roKwq
05.08.2023, 23:05
у меня немного изменены пространства имен, но всё остальное остается таким же


от души, заработало, хотя у меня по факту такой же код был, xd

DZONE
06.08.2023, 05:02
Как получить fontsize? samp-api

F0RQU1N and
06.08.2023, 05:19
Как получить fontsize? samp-api



SAMP-API/include/sampapi/0.3.7-R1/CConfig.h at 754463d930d04e139d909ad0f9962288f0dd491e · BlastHackNet/SAMP-API (https://github.com/BlastHackNet/SAMP-API/blob/754463d930d04e139d909ad0f9962288f0dd491e/include/sampapi/0.3.7-R1/CConfig.h#L50)

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

github.com


GetIntValue("fontsize")

1691284556365.pngF0RQU1N and · 6 Авг 2023 в 04:19' data-fancybox="lb-post-1356315" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/210779/" style="cursor: pointer;" title="1691284556365.png">
https://forum.antichat.xyz/attachments/28356315/

sizeoftrickster
07.08.2023, 18:22
Всем привет! Подскажите пожалуйста, есть ли способ узнать, была ли нажата клавиша без использования: wndproc hook -> uMsg -> wParam

Имеется одна функция(ниже), которая позволяет это узнать, но там ебануться какая задержка. Например: зажал клавишу D(Move Right) на +-400 мс, и только спустя это количество времени функция(ниже) выдала 128, т.е. клавиша была нажата.

Аналогично с хуком wndproc, там необходимо минимальное нажатие клавиши, а не зажатие

C++:






enum
KeysNum
{
Right
=
0x0
}
;
// enum KeysNum
BYTE
GetGameKey
(
KeysNum key
)
{
return
*
reinterpret_cast

(
0xB73458
+
key
)
;
}
if
(
GetGameKey
(
KeysNum
::
Right
)
==
0x000080
)
{
// ...
}

Digger Man52
07.08.2023, 19:34
1. Мой вопрос: Как вывести в чат SAMP`a 0.3.7 R3 сообщение?



SAMP-API/src/sampapi/0.3.7-R3-1/CChat.cpp at 754463d930d04e139d909ad0f9962288f0dd491e · BlastHackNet/SAMP-API (https://github.com/BlastHackNet/SAMP-API/blob/754463d930d04e139d909ad0f9962288f0dd491e/src/sampapi/0.3.7-R3-1/CChat.cpp#L90)

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

github.com

F0RQU1N and
08.08.2023, 04:58
Всем привет! Подскажите пожалуйста, есть ли способ узнать, была ли нажата клавиша без использования: wndproc hook -> uMsg -> wParam
Имеется одна функция(ниже), которая позволяет это узнать, но там ебануться какая задержка. Например: зажал клавишу D(Move Right) на +-400 мс, и только спустя это количество времени функция(ниже) выдала 128, т.е. клавиша была нажата.
Аналогично с хуком wndproc, там необходимо минимальное нажатие клавиши, а не зажатие

C++:






enum
KeysNum
{
Right
=
0x0
}
;
// enum KeysNum
BYTE
GetGameKey
(
KeysNum key
)
{
return
*
reinterpret_cast

(
0xB73458
+
key
)
;
}
if
(
GetGameKey
(
KeysNum
::
Right
)
==
0x000080
)
{
// ...
}





а почему бы и не юзать хук? это же тебе не дота где каждый хук/патч лишний детект

zheluk!
09.08.2023, 20:37
как через sampapi::v037r3отправлять и получать и блокировать пакеты?

вайега52
09.08.2023, 20:41
как через sampapi::v037r3отправлять и получать и блокировать пакеты?


В SAMP-API, если правильно помню нет встроенных хуков, но можно юзать это: https://www.blast.hk/threads/69666/

NightWallkeR
16.08.2023, 01:30
Приветствую Вас дорогие форумчани.

Недавно начал изучать SF API, и столкнулся по написанию рендера на какой либо объект ( допустим даже ВХ на шахту АРЗ ).

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

Заранее спасибо.

Z3roKwq
16.08.2023, 09:52
Приветствую Вас дорогие форумчани.

Недавно начал изучать SF API, и столкнулся по написанию рендера на какой либо объект ( допустим даже ВХ на шахту АРЗ ).

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

Заранее спасибо.



https://www.blast.hk/threads/43800/

Код не лучший, но как пример пойдёт :)

zheluk!
16.08.2023, 16:36
глупый вопрос но, как изменить центр тяжести для машины через plugin sdk

Если не сложно дайте пример : )

Dark_Knight
16.08.2023, 23:05
Если не сложно дайте пример : )






C++:






address to variable
=
value
;

NightWallkeR
17.08.2023, 00:55
https://www.blast.hk/threads/43800/
Код не лучший, но как пример пойдёт :)


Очень Вам благодарен, еще раз спасибо.

_doomsday_
17.08.2023, 16:34
В тексте встречаются неопределённые символы:

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

Как удалить их из строки?

вайега52
17.08.2023, 16:50
В тексте встречаются неопределённые символы:

Как удалить их из строки?


не шарю, как это красиво оформить в C++, но в теории кастуй строку в int и отсеивай лишние байты, отталкиваясь от ASCII (https://www.blast.hk/redirect/aHR0cHM6Ly9zbmlwcC5ydS9oYW5kYmsvdGFibGUtYXNjaWk)

C++:





[CODE]
#include
int
main
(
)
{
const
char
*
str
=
"hello"
;
int
number
=
(
*
(
int
*
)
str
)
;
unsigned
char
*
bytes
=
reinterpret_cast

(
&
number
)
;
for
(
int
i
=
0
;
i

(
bytes
[
i
]
)



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

C++:





[CODE]
#include
#include
int
main
(
)
{
const
std
::
string str
=
"hello"
;
unsigned
char
bytes
[
str
.
size
(
)
+
1
]
;
std
::
memcpy
(
bytes
,
str
.
c_str
(
)
,
str
.
size
(
)
+
1
)
;
for
(
std
::
size_t i
=
0
;
i

(
bytes
[
i
]
)

_doomsday_
17.08.2023, 18:55
[QUOTE="why ega"]

не шарю, как это красиво оформить в C++, но в теории кастуй строку в int и отсеивай лишние байты, отталкиваясь от ASCII (https://www.blast.hk/redirect/aHR0cHM6Ly9zbmlwcC5ydS9oYW5kYmsvdGFibGUtYXNjaWk)

C++:





[CODE]
#include
int
main
(
)
{
const
char
*
str
=
"hello"
;
int
number
=
(
*
(
int
*
)
str
)
;
unsigned
char
*
bytes
=
reinterpret_cast

(
&
number
)
;
for
(
int
i
=
0
;
i

(
bytes
[
i
]
)

#include
int
main
(
)
{
const
std
::
string str
=
"hello"
;
unsigned
char
bytes
[
str
.
size
(
)
+
1
]
;
std
::
memcpy
(
bytes
,
str
.
c_str
(
)
,
str
.
size
(
)
+
1
)
;
for
(
std
::
size_t i
=
0
;
i

(
bytes
[
i
]
)

F0RQU1N and
17.08.2023, 19:12
[QUOTE="why ega"]

for (int i = 0; i

вайега52
17.08.2023, 19:28
если что то sizeof получает размер переменной в байтах а не размер массива (вообщем это не то что ты хотел)


да, но массив-то из байтов (не зря я пару месяцев назад прочитал 100 страниц Лоспинзо 😎)

F0RQU1N and
17.08.2023, 19:32
да, но массив-то из байтов (не зря я пару месяцев назад прочитал 100 страниц Лоспинзо 😎)


так number sizeof которого ты получаешь это не массив

вайега52
17.08.2023, 19:34
так number sizeof которого ты получаешь это не массив


а, да, я дурак

вайега52
19.08.2023, 21:36
у меня есть вот такие текстурки:

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

Как их можно временно удалить/вернуть? как я понимаю, их нет в обжект пуле сампа (у них нет самповского айди), как и в обжект пуле гта (парсил его, но ничего связанного с моделями 17528 или 17531 не было)

_doomsday_
20.08.2023, 17:44
Как правильно воткнуть курл в сф проект?

Во втором проекте (не сф) подключено идентично, в нём норм работает, сф проект ошибками сыпет

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

kin4stat
20.08.2023, 19:13
Как правильно воткнуть курл в сф проект?
Во втором проекте (не сф) подключено идентично, в нём норм работает, сф проект ошибками сыпет


advapi32.lib прилинкуй

loverkis
23.08.2023, 15:39
какие курсы посоветуете для с++ ? и компилятор какой юзать. сижу на визуалке

Sadow
23.08.2023, 15:43
какие курсы посоветуете для с++ ? и компилятор какой юзать. сижу на визуалке


От SimpleCode.

Компилятор от визуал студио.

Digger Man52
23.08.2023, 17:03
какие курсы посоветуете для с++ ? и компилятор какой юзать. сижу на визуалке


cmake + clang + ninja

Лоспинозо - C++ для профи. Молниеносный старт (2021) - https://disk.yandex.ru/i/6kIggN_diKUiJw (https://www.blast.hk/redirect/aHR0cHM6Ly9kaXNrLnlhbmRleC5ydS9pLzZrSWdnTl9kaUtVaU p3)

Стивен Прата - Язык программирования С++ Лекции и упражнения

Books (https://www.blast.hk/redirect/aHR0cHM6Ly9kaXNrLnlhbmRleC5ydS9kLzdqR05WRHA3T2FMTT lBL2luZm9ybWF0aWthL2MvdWNoZWJuaWtpL3ByYXRhX3lhenlr X3Byb2dyYW1taXJvdmFuaXlhX2NfbGVrdHNpaV9pX3VwcmF6aG 5lbml5YS5yYXI)

Посмотреть и скачать с Яндекс Диска

disk.yandex.ru

F0RQU1N and
23.08.2023, 18:14
cmake + clang + ninja


новичку бы я не советовал подобную тему проще просто визуалку накатить со всем что там есть(msvc там еще чет)

Digger Man52
23.08.2023, 18:20
новичку бы я не советовал подобную тему проще просто визуалку накатить со всем что там есть(msvc там еще чет)


ну, пусть хотя бы clang-cl поставит

edgekich
24.08.2023, 01:55
samp-api

c++:






bool
__stdcall
RakClientRecvHook
(
SAMP
::
CallBacks
::
HookedStructs
::
stRakClientRecv
*
params
)
{
if
(
params
->
bitStream
->
GetData
(
)
[
0
]
==
215
&&
skip
)
{
}
}
ну и рег SAMP
::
CallBacks
::
pCallBackRegister
->
RegisterRakClientCallback
(
RakClientRecvHook
)
;




банально крашит игру сразу же после получения любого пакета 215. При этом даже условие не выполняется, там skip = false. самп 037 р3, проект радмир (хукаю кастомный 215-ые пакеты)1692828211687.pngedgekich · 24 Авг 2023 в 00:55' data-fancybox="lb-post-1366519" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/212922/" style="cursor: pointer;" title="1692828211687.png">
https://forum.antichat.xyz/attachments/28366519/

loverkis
24.08.2023, 05:09
cmake + clang + ninja
Лоспинозо - C++ для профи. Молниеносный старт (2021) - https://disk.yandex.ru/i/6kIggN_diKUiJw (https://www.blast.hk/redirect/aHR0cHM6Ly9kaXNrLnlhbmRleC5ydS9pLzZrSWdnTl9kaUtVaU p3)
Стивен Прата - Язык программирования С++ Лекции и упражнения

Books (https://www.blast.hk/redirect/aHR0cHM6Ly9kaXNrLnlhbmRleC5ydS9kLzdqR05WRHA3T2FMTT lBL2luZm9ybWF0aWthL2MvdWNoZWJuaWtpL3ByYXRhX3lhenlr X3Byb2dyYW1taXJvdmFuaXlhX2NfbGVrdHNpaV9pX3VwcmF6aG 5lbml5YS5yYXI)

Посмотреть и скачать с Яндекс Диска

disk.yandex.ru



спасибо большое. я сейчас прохожу ООП - Полифоризм. Вообще планирую писать обходы и читы для разных игр. Если бы вы посоветовали что еще изучить нужно, был бы очень благодарен)

Digger Man52
24.08.2023, 06:09
спасибо большое. я сейчас прохожу ООП - Полифоризм. Вообще планирую писать обходы и читы для разных игр. Если бы вы посоветовали что еще изучить нужно, был бы очень благодарен)


Для твоих целей… тебе нужное еще изучить Reverse Engineering

вайега52
24.08.2023, 09:57
samp-api

c++:






bool
__stdcall
RakClientRecvHook
(
SAMP
::
CallBacks
::
HookedStructs
::
stRakClientRecv
*
params
)
{
if
(
params
->
bitStream
->
GetData
(
)
[
1
]
==
215
&&
skip
)
{
}
}
ну и рег SAMP
::
CallBacks
::
pCallBackRegister
->
RegisterRakClientCallback
(
RakClientRecvHook
)
;




банально крашит игру сразу же после получения любого пакета 215. При этом даже условие не выполняется, там skip = false. самп 037 р3, проект радмир (хукаю кастомный 215-ые пакеты)


В самп апи есть хуки? Мне кажется лучше использовать ракхуки от имринга

Z3roKwq
24.08.2023, 10:16
В самп апи есть хуки? Мне кажется лучше использовать ракхуки от имринга


Это апи от дрочилы, в него встроен ракхук

loverkis
24.08.2023, 12:32
Для твоих целей… тебе нужное еще изучить Reverse Engineering


знаю. у вас нет случайно курсов?

Digger Man52
24.08.2023, 19:47
знаю. у вас нет случайно курсов?


Только книжки (

loverkis
24.08.2023, 21:16
Только книжки (


можно и книжки

Digger Man52
24.08.2023, 22:10
можно и книжки


тг дай, кину пдфки

hefesto
27.08.2023, 01:33
тг дай, кину пдфки


Решился С#/C++ изучать. Как думаешь, что из этого лучше всего? Я думаю, что нужно изучить сразу два языка, я прав?

Если да, то мог бы ты подсказать мне, какие видеоуроки смотреть на ютубе по C# и C++? Какие книги читать по этим языкам?

F0RQU1N and
27.08.2023, 07:06
samp-api

c++:






bool
__stdcall
RakClientRecvHook
(
SAMP
::
CallBacks
::
HookedStructs
::
stRakClientRecv
*
params
)
{
if
(
params
->
bitStream
->
GetData
(
)
[
0
]
==
215
&&
skip
)
{
}
}
ну и рег SAMP
::
CallBacks
::
pCallBackRegister
->
RegisterRakClientCallback
(
RakClientRecvHook
)
;




банально крашит игру сразу же после получения любого пакета 215. При этом даже условие не выполняется, там skip = false. самп 037 р3, проект радмир (хукаю кастомный 215-ые пакеты)


Мб потому что ты читаешь у любого пакета дату+8(которой у него может и не быть)

вайега52
30.08.2023, 11:35
если кто-то подменяет вмт условного ракклиента, то я смогу вызвать виртуальный метод, по указателю на ракклиент (CNetGame + 0x3C9)?

F0RQU1N and
30.08.2023, 11:37
если кто-то подменяет вмт условного ракклиента, то я смогу вызвать виртуальный метод, по указателю на ракклиент (CNetGame + 0x3C9)?


Ну да ты просто сам хук вызовешь

Z3roKwq
06.09.2023, 21:41
Помогите переписать no gears с луа

Lua:






if
isCharInAnyCar
(
PLAYER_PED
)
then
header
=
getCarModel
(
storeCarCharIsInNoSave
(
PLAYER_PED
)
)
header
=
memory
.
getint32
(
header
*
0x4
+
0xA9B0C8
,
false
)
header
=
memory
.
getint16
(
header
+
0x4A
,
false
)
memory
.
setint8
(
header
*
0xE0
+
0xC2B9DC
+
0x74
,
1
,
false
)
end




пробовал

C++:






typedef
unsigned
long
Uint
;
inline
Uint
bit_set
(
Uint number
,
Uint n
)
{
return
number
|
(
(
Uint
)
1

getSAMP
(
)
->
getVehicles
(
)
->
sampVehicle
[
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
localPlayerInfo
.
data
->
inCarData
.
vehicleId
]
->
gtaVehicle
->
base
.
model_alt_id
;
car_model
=
readUInt32FromMemory
(
reinterpret_cast

(
car_model
*
0x4
+
0xA9B0C8
)
)
;
car_model
=
readUInt16FromMemory
(
reinterpret_cast

(
car_model
+
0x4A
)
)
;
bit_set
(
(
car_model
*
0xE0
+
0xC2B9DC
+
0x74
)
,
1
)
;
}




но результата не дало

Digger Man52
06.09.2023, 22:27
Помогите переписать no gears с луа

Lua:






if
isCharInAnyCar
(
PLAYER_PED
)
then
header
=
getCarModel
(
storeCarCharIsInNoSave
(
PLAYER_PED
)
)
header
=
memory
.
getint32
(
header
*
0x4
+
0xA9B0C8
,
false
)
header
=
memory
.
getint16
(
header
+
0x4A
,
false
)
memory
.
setint8
(
header
*
0xE0
+
0xC2B9DC
+
0x74
,
1
,
false
)
end




пробовал

C++:






typedef
unsigned
long
Uint
;
inline
Uint
bit_set
(
Uint number
,
Uint n
)
{
return
number
|
(
(
Uint
)
1

getSAMP
(
)
->
getVehicles
(
)
->
sampVehicle
[
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
localPlayerInfo
.
data
->
inCarData
.
vehicleId
]
->
gtaVehicle
->
base
.
model_alt_id
;
car_model
=
readUInt32FromMemory
(
reinterpret_cast

(
car_model
*
0x4
+
0xA9B0C8
)
)
;
car_model
=
readUInt16FromMemory
(
reinterpret_cast

(
car_model
+
0x4A
)
)
;
bit_set
(
(
car_model
*
0xE0
+
0xC2B9DC
+
0x74
)
,
1
)
;
}




но результата не дало


а че за readUInt16FromMemory , покажи реализацию

Z3roKwq
06.09.2023, 22:32
а че за readUInt16FromMemory , покажи реализацию



C++:






uint16_t
readUInt16FromMemory
(
void
*
address
)
{
uint16_t
value
;
std
::
memcpy
(
&
value
,
address
,
sizeof
(
uint16_t
)
)
;
return
value
;
}
uint32_t
readUInt32FromMemory
(
void
*
address
)
{
uint32_t
value
;
std
::
memcpy
(
&
value
,
address
,
sizeof
(
uint32_t
)
)
;
return
value
;
}




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

F0RQU1N and
07.09.2023, 09:25
C++:






uint16_t
readUInt16FromMemory
(
void
*
address
)
{
uint16_t
value
;
std
::
memcpy
(
&
value
,
address
,
sizeof
(
uint16_t
)
)
;
return
value
;
}
uint32_t
readUInt32FromMemory
(
void
*
address
)
{
uint32_t
value
;
std
::
memcpy
(
&
value
,
address
,
sizeof
(
uint32_t
)
)
;
return
value
;
}




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


нихуя чо ты придумал а зачем



Помогите переписать no gears с луа

Lua:






if
isCharInAnyCar
(
PLAYER_PED
)
then
header
=
getCarModel
(
storeCarCharIsInNoSave
(
PLAYER_PED
)
)
header
=
memory
.
getint32
(
header
*
0x4
+
0xA9B0C8
,
false
)
header
=
memory
.
getint16
(
header
+
0x4A
,
false
)
memory
.
setint8
(
header
*
0xE0
+
0xC2B9DC
+
0x74
,
1
,
false
)
end




пробовал

C++:






typedef
unsigned
long
Uint
;
inline
Uint
bit_set
(
Uint number
,
Uint n
)
{
return
number
|
(
(
Uint
)
1

getSAMP
(
)
->
getVehicles
(
)
->
sampVehicle
[
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
localPlayerInfo
.
data
->
inCarData
.
vehicleId
]
->
gtaVehicle
->
base
.
model_alt_id
;
car_model
=
readUInt32FromMemory
(
reinterpret_cast

(
car_model
*
0x4
+
0xA9B0C8
)
)
;
car_model
=
readUInt16FromMemory
(
reinterpret_cast

(
car_model
+
0x4A
)
)
;
bit_set
(
(
car_model
*
0xE0
+
0xC2B9DC
+
0x74
)
,
1
)
;
}




но результата не дало


мб твоя функа isLocalPlayerInCar ***ня?

Z3roKwq
07.09.2023, 10:51
нихуя чо ты придумал а зачем

мб твоя функа isLocalPlayerInCar ***ня?



Пхах, неа, функа нормально работает, чтение из памяти тоже, проблема именно с записью

Digger Man52
07.09.2023, 18:10
Пхах, неа, функа нормально работает, чтение из памяти тоже, проблема именно с записью


ну, добавь отладочные строки, проверь, выполняется ли вообще твоя проверка

Z3roKwq
07.09.2023, 18:41
ну, добавь отладочные строки, проверь, выполняется ли вообще твоя проверка



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

Dark_Knight
07.09.2023, 18:48
Пхах, неа, функа нормально работает, чтение из памяти тоже, проблема именно с записью


Потому что ***ню делаешь. Протект памяти на запись не снятый. Плюс копирование из памяти в другую область памяти не есть чтением.

Z3roKwq
07.09.2023, 20:15
Потому что ***ню делаешь. Протект памяти на запись не снятый. Плюс копирование из памяти в другую область памяти не есть чтением.


насчет "чтения" согласен, но как я понял протекцию там вроде не нужно снимать, я прикреплял исходник на луа там выключено снятие протекции памяти

Dark_Knight
07.09.2023, 20:19
насчет "чтения" согласен, но как я понял протекцию там вроде не нужно снимать, я прикреплял исходник на луа там выключено снятие протекции памяти


На луа вполне возможно снимается автоматом.

Z3roKwq
07.09.2023, 23:00
На луа вполне возможно снимается автоматом.


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

Dark_Knight
07.09.2023, 23:38
бля я уже заебался с этой залупой сидеть, и так и сяк пробовал, не хочет работать и все, буду оооооооооооочень благодарен если предоставите хотяб пример кода


Читай топик. Тысячу раз тут отвечали уже

al3x_
07.09.2023, 23:46
Помогите переписать no gears с луа

Lua:






if
isCharInAnyCar
(
PLAYER_PED
)
then
header
=
getCarModel
(
storeCarCharIsInNoSave
(
PLAYER_PED
)
)
header
=
memory
.
getint32
(
header
*
0x4
+
0xA9B0C8
,
false
)
header
=
memory
.
getint16
(
header
+
0x4A
,
false
)
memory
.
setint8
(
header
*
0xE0
+
0xC2B9DC
+
0x74
,
1
,
false
)
end




пробовал

C++:






typedef
unsigned
long
Uint
;
inline
Uint
bit_set
(
Uint number
,
Uint n
)
{
return
number
|
(
(
Uint
)
1

getSAMP
(
)
->
getVehicles
(
)
->
sampVehicle
[
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
localPlayerInfo
.
data
->
inCarData
.
vehicleId
]
->
gtaVehicle
->
base
.
model_alt_id
;
car_model
=
readUInt32FromMemory
(
reinterpret_cast

(
car_model
*
0x4
+
0xA9B0C8
)
)
;
car_model
=
readUInt16FromMemory
(
reinterpret_cast

(
car_model
+
0x4A
)
)
;
bit_set
(
(
car_model
*
0xE0
+
0xC2B9DC
+
0x74
)
,
1
)
;
}




но результата не дало



C++:






auto
car
{
*
reinterpret_cast

(
0xBA18FC
)
}
;
if
(
car
)
{
auto
model_id
{
*
reinterpret_cast

(
car
+
0x22
)
}
;
auto
model
{
*
reinterpret_cast

(
model_id
*
0x4
+
0xA9B0C8
)
}
;
auto
handling_id
{
*
reinterpret_cast

(
model
+
0x4A
)
}
;
*
reinterpret_cast

(
handling_id
*
0xE0
+
0xC2B9DC
+
0x74
)
=
1
;
}

Z3roKwq
10.09.2023, 14:34
В какой то момент появилась проблема с компиляцией, искал в инете, ответов не нашел

Собственно сама проблема:

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

Использую: CLion + Visual Studio (компилер) + Ninja + CMake

вайега52
10.09.2023, 16:34
На что лучше стоит ставить хук по мимо конструкторов, чтобы проверить, что доступны методы ракпира? CHud::DrawRadar вызывается уже после того, как персонаж заспавнился, а проверка на CNetGame в CTimer::Update и последующая установка хука после первого вызова не хочет работать на методе RakPeer:Receive (тупо крашит, даже если юзать задержку)

Z3roKwq
12.09.2023, 23:12
Есть код на луа, хотелось бы переписать на плюсы, но чето опять идет не так




Ориг код:






if
trigger
and
not
isCharOnAnyBike
(
playerPed
)
and
not
isCharDead
(
playerPed
)
then
local
int
=
readMemory
(
0xB6F3B8
,
4
,
0
)
int
=
int
+
0x79C
local
intS
=
readMemory
(
int
,
4
,
0
)
if
intS
>
0
then
local
lol
=
0xB73458
lol
=
lol
+
34
writeMemory
(
lol
,
4
,
255
,
0
)
wait
(
100
)
local
int
=
readMemory
(
0xB6F3B8
,
4
,
0
)
int
=
int
+
0x79C
writeMemory
(
int
,
4
,
0
,
0
)
end
end







я пытался переписать, но оно детектит что игрок в прицеле, но не стреляет как в оригинале

Digger Man52
12.09.2023, 23:49
Есть код на луа, хотелось бы переписать на плюсы, но чето опять идет не так



Ориг код:






if
trigger
and
not
isCharOnAnyBike
(
playerPed
)
and
not
isCharDead
(
playerPed
)
then
local
int
=
readMemory
(
0xB6F3B8
,
4
,
0
)
int
=
int
+
0x79C
local
intS
=
readMemory
(
int
,
4
,
0
)
if
intS
>
0
then
local
lol
=
0xB73458
lol
=
lol
+
34
writeMemory
(
lol
,
4
,
255
,
0
)
wait
(
100
)
local
int
=
readMemory
(
0xB6F3B8
,
4
,
0
)
int
=
int
+
0x79C
writeMemory
(
int
,
4
,
0
,
0
)
end
end






я пытался переписать, но оно детектит что игрок в прицеле, но не стреляет как в оригинале


покажи свою реализацию

Z3roKwq
13.09.2023, 00:02
покажи свою реализацию






pizdec x2:






if
(
isEnabled
)
{
static
int
xuy
=
0
;
if
(
xuy
==
0
)
{
unsigned
idk1
=
*
reinterpret_cast

(
0xB6F3B8
)
;
idk1
+=
0x79C
;
unsigned
idk1S
=
*
reinterpret_cast

(
idk1
)
;
if
(
idk1S
>
0
)
{
unsigned
lox
=
0xB73458
;
lox
+=
34
;
*
reinterpret_cast

(
lox
)
=
255
;
xuy
+=
1
;
}
}
else
{
if
(
xuy
>
10
)
{
xuy
=
0
;
unsigned
pizda
=
*
reinterpret_cast

(
0xB6F3B8
)
;
pizda
+=
0x79C
;
*
reinterpret_cast

(
pizda
)
=
0
;
}
else
{
xuy
+=
1
;
}
}
}







писал @N08I40K (https://www.blast.hk/members/294430/) , за нейминг я отвечал (unsigned тоже я въебал ес че)

F0RQU1N and
13.09.2023, 03:07
unsigned idk1S = *reinterpret_cast(idk1); if (idk1S > 0) {


Как минимум у тебя оно не может быть меньше нуля ибо это unsigned



unsigned lox = 0xB73458;





lox += 34;





unsigned idk1 = *reinterpret_cast(0xB6F3B8); idk1 += 0x79C; unsigned idk1S = *reinterpret_cast(idk1);




А в чем прикол?)

Z3roKwq
13.09.2023, 07:35
Как минимум у тебя оно не может быть меньше нуля ибо это unsigned

А в чем прикол?)



А хер знает в чем прикол, оно по другому не читает

F0RQU1N and
13.09.2023, 09:31
А хер знает в чем прикол, оно по другому не читает


мб так

C++:






auto
x
=
*
(
uintptr_t
*
)
0xB6F3B8
;
if
(
*
(
uintptr_t
*
)
(
x
+
0x79C
)
)
{
*
(
byte
*
)
0xB7347A
=
255
;
*
(
uintptr_t
*
)
(
x
+
0x79C
)
=
0
;
}

Z3roKwq
13.09.2023, 09:41
мб так

C++:






auto
x
=
*
(
uintptr_t
*
)
0xB6F3B8
;
if
(
*
(
uintptr_t
*
)
(
x
+
0x79C
)
)
{
*
(
byte
*
)
0xB7347A
=
255
;
*
(
uintptr_t
*
)
(
x
+
0x79C
)
=
0
;
}





все равно не хочет работать

мистер вселенная
14.09.2023, 23:10
всем привет! есть загрузка txd, грузит все отлично, но бывает, что игра периодически зависает при загрузке этого тхд (повторная попытка захода все решает). есть идеи?

вайега52
15.09.2023, 13:37
Как правильно закаставать импорт в сишную функцию?





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

F0RQU1N and
15.09.2023, 17:03
Как правильно закаставать импорт в сишную функцию?


всмысле

RTD
15.09.2023, 17:29
Как правильно закаставать импорт в сишную функцию?



C++:






auto
recvfrom
=
*
reinterpret_cast

(
0x100e542c
)
;

вайега52
15.09.2023, 20:07
C++:






auto
recvfrom
=
*
reinterpret_cast

(
0x100e542c
)
;





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

с чем может быть связан краш игры после подгрузки bass.dll

C++:






HMODULE WINAPI
LoadLibraryAHooked
(
const
decltype
(
LoadLibraryAHook
)
&
hook
,
_In_ LPCSTR lpLibFileName
)
{
HMODULE libraryHandle
=
hook
.
get_trampoline
(
)
(
_In_ lpLibFileName
)
;
if
(
libraryHandle
==
NULL
)
return
libraryHandle
;
MessageBoxA
(
NULL
,
lpLibFileName
,
"LOAD LIB"
,
MB_OK
)
;
// дебагер1337
if
(
lpLibFileName
==
"MoonLoader.asi"
)
{
setURLDownloadToFileAHook
(
libraryHandle
)
;
LoadLibraryAHook
.
remove
(
)
;
}
return
libraryHandle
;
}
void
initializePlugin
(
)
{
HMODULE moonHandle
=
GetModuleHandleA
(
"MoonLoader.asi"
)
;
if
(
moonHandle
!=
NULL
)
{
setURLDownloadToFileAHook
(
moonHandle
)
;
}
else
{
HMODULE kernelHandle
=
GetModuleHandleA
(
"kernel32.dll"
)
;
if
(
kernelHandle
!=
NULL
)
{
LPVOID pvLoadLibrary
=
GetProcAddress
(
kernelHandle
,
"LoadLibraryA"
)
;
if
(
pvLoadLibrary
!=
NULL
)
{
LoadLibraryAHook
.
set_dest
(
pvLoadLibrary
)
;
LoadLibraryAHook
.
set_cb
(
&
LoadLibraryAHooked
)
;
LoadLibraryAHook
.
install
(
)
;
}
}
}
}




upd: Спустя 2 дня понял, что не то соглашение о вызове было....

Z3roKwq
16.09.2023, 20:39
Как получить ID игрока имея его CPed (plugin sdk) ?

Vintik
16.09.2023, 22:42
Как получить ID игрока имея его CPed (plugin sdk) ?



C++:






SF
->
getSAMP
(
)
->
getPlayers
(
)
->
GetSAMPPlayerIDFromGTAHandle
(
uint32_t
GTA_Ped_ID
)
;

вайега52
20.09.2023, 18:11
Есть вмтракклиента, но не совсем понимаю, что делает первый ее метод, в данном случае:

sub_10030F40


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

функция, в которую можно перейти спустя несколько оберток:

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


off_100D52E8

- та переменная, которая хранит в себе указатель на функцию из первого скрина

kin4stat
20.09.2023, 19:32
Есть вмтракклиента, но не совсем понимаю, что делает первый ее метод, в данном случае:

sub_10030F40


функция, в которую можно перейти спустя несколько оберток:


off_100D52E8

- та переменная, которая хранит в себе указатель на функцию из первого скрина


виртуальный деструктор

мистер вселенная
20.09.2023, 20:05
всем привет! получаю cped из айди игрока (samp), но при каких-либо манипуляциях с возвращаемым спед - краш. что может быть?
https://forum.antichat.xyz/attachments/28381278/

ARMOR
04.10.2023, 15:32
( Не актуально )

При вызове опкода 0165: в сампе цвет блипа берется из цвета клиста игрока чей ид укажешь вместо указания HEX цвета. Есть ли возможность менять цвет блипа через HEX цвет вместо клиста?

Решение: Юзать не самповскую функцию вызова опкодов, а игровую, например из Plugin SDK

Ya Zaregalsya
06.10.2023, 06:20
В каких случаях отправляется такой тип буллет синхры?: BULLET_HIT_TYPE_PLAYER_OBJECT (4 id).

F0RQU1N and
06.10.2023, 09:06
В каких случаях отправляется такой тип буллет синхры?: BULLET_HIT_TYPE_PLAYER_OBJECT (4 id).


ну када игрок по обьекту стреляет не

Ya Zaregalsya
06.10.2023, 11:42
ну када игрок по обьекту стреляет не


Это будет BULLET_HIT_TYPE_OBJECT (3 id).

magnettokarlos
06.10.2023, 11:46
как получить координаты полёта пули? знаю, что в bulletdata есть, как достать правильно подскажите пожалуйста)

Ну погоди!
06.10.2023, 11:55
В каких случаях отправляется такой тип буллет синхры?: BULLET_HIT_TYPE_PLAYER_OBJECT (4 id).


При стрельбе в объекты, которые прикреплены на игрока. Те же аксессуары

Ya Zaregalsya
06.10.2023, 12:02
При стрельбе в объекты, которые прикреплены на игрока. Те же аксессуары


У них нет коллизии.



как получить координаты полёта пули? знаю, что в bulletdata есть, как достать правильно подскажите пожалуйста)



C++:






struct
BulletSyncData
{
UINT8 Packet_ID
;
UINT8 hit_type
;
UINT16 hit_id
;
float
origin_x
;
float
origin_y
;
float
origin_z
;
float
hit_pos_x
;
float
hit_pos_y
;
float
hit_pos_z
;
float
offset_x
;
float
offset_y
;
float
offset_z
;
UINT8 weapon_id
;
}
;
BulletSyncData bulletSyncData
;
UINT16 playerid
;
data
->
bitStream
->
Read
(
bulletSyncData
.
Packet_ID
)
;
data
->
bitStream
->
Read
(
playerid
)
;
data
->
bitStream
->
Read
(
bulletSyncData
.
hit_type
)
;
data
->
bitStream
->
Read
(
bulletSyncData
.
hit_id
)
;
data
->
bitStream
->
Read
(
bulletSyncData
.
origin_x
)
;
data
->
bitStream
->
Read
(
bulletSyncData
.
origin_y
)
;
data
->
bitStream
->
Read
(
bulletSyncData
.
origin_z
)
;
data
->
bitStream
->
Read
(
bulletSyncData
.
hit_pos_x
)
;
data
->
bitStream
->
Read
(
bulletSyncData
.
hit_pos_y
)
;
data
->
bitStream
->
Read
(
bulletSyncData
.
hit_pos_z
)
;
data
->
bitStream
->
Read
(
bulletSyncData
.
offset_x
)
;
data
->
bitStream
->
Read
(
bulletSyncData
.
offset_y
)
;
data
->
bitStream
->
Read
(
bulletSyncData
.
offset_z
)
;
data
->
bitStream
->
Read
(
bulletSyncData
.
weapon_id
)
;
data
->
bitStream
->
ResetReadPointer
(
)
;

writeline
07.10.2023, 00:42
Всем привет.

Есть тут те кто подскажут как работать с памятью, а именно сделать огран в 640МБ и автоочистку при достижении этого лимита. (Клео и др плагины не нужны)

буду благодарен малейшей информации

ччбчлчлчъ ччччшчьпьппзвжв
13.10.2023, 01:11
Научите пожалуйста развертывать драйвер на виртуалку через visual studio, не получается почему-то, подскажите пожалуйста кто разбирается




1697145076961.pngччбчлчлчъ ччччшчьпьппзвжв · 13 Окт 2023 в 00:11' data-fancybox="lb-post-1392650" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/217732/" style="cursor: pointer;" title="1697145076961.png">
https://forum.antichat.xyz/attachments/28392650/

вайега52
14.10.2023, 21:38
кто юзал emulateRecvRPC в sf на r3? у вас стабильно работала функция?

MakF
18.10.2023, 21:09
1.Ваш вопрос : честно абсолютно не знаю не про С не про С++ , стоит-ли начинать с чего то определённого ,стоит ли изучать С\С++?

ччбчлчлчъ ччччшчьпьппзвжв
19.10.2023, 21:49
как можно хукнуть функцию loadlibrary из kernel драйвера, как лучше?

Ifadee
20.10.2023, 16:51
Напишите программу, заглушающую нежелательные слова; иначе говоря, считайте слова из потока cin и выведите их в поток cout, заменив нежелательные слова словом BLEEP. Начните с одного нежелательного слова, например

string disliked = "Broccoli";

Когда отладите программу, добавьте еще несколько нежелательных слов.

#include "std_lib_facilities.h"

#include

#include

#include

#include

#include

using namespace std;

int main()

{

setlocale( LC_ALL,"Russian" );

vector v;

vector disliked{ "darkey", "jaja", "gabe", "ok" };

for (string word; cin >> word;)

{

if (word == "exit")

break;

v.push_back(word);

}

for (int i = 0; i

[/I][/I][/I][/I][/I][/I]

Digger Man52
20.10.2023, 17:26
Напишите программу, заглушающую нежелательные слова; иначе говоря, считайте слова из потока cin и выведите их в поток cout, заменив нежелательные слова словом BLEEP. Начните с одного нежелательного слова, например

string disliked = "Broccoli";

Когда отладите программу, добавьте еще несколько нежелательных слов.
#include "std_lib_facilities.h"
#include
#include
#include
#include
#include
using namespace std;
int main()
{
setlocale( LC_ALL,"Russian" );
vector v;
vector disliked{ "darkey", "jaja", "gabe", "ok" };

for (string word; cin >> word;)
{
if (word == "exit")
break;
v.push_back(word);
}
for (int i = 0; i

[/I][/I][/I][/I][/I][/I]


getch - https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/getch-getwch?view=msvc-170 (https://www.blast.hk/redirect/aHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2NwcC 9jLXJ1bnRpbWUtbGlicmFyeS9yZWZlcmVuY2UvZ2V0Y2gtZ2V0 d2NoP3ZpZXc9bXN2Yy0xNzA)

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

что насчет if(x==v)

он проверяет равны ли значения вектора disliked(x) и значение элемента вектора v, если строки равны, то это означает, что введенное слово (v) находится в списке нежелательных слов (disliked), и устанавливается флаг flag в значение true

[QUOTE="p1cador"]

@Ifadee (https://www.blast.hk/members/525952/)

C++:





[CODE]
#include
#include
int
main
(
)
{
std
::
set

bad_words
=
{
"syka"
,
"hyi"
}
;
std
::
string word
;
while
(
std
::
cin
>>
word
)
if
(
bad_words
.
find
(
word
)
!=
bad_words
.
end
(
)
)
std
::
cout

p1cador
20.10.2023, 17:29
@Digger Man (https://www.blast.hk/members/343182/) после conio.h одновременно с iostream как-то не захотелось разбираться)

Digger Man52
22.10.2023, 20:16
Как организовать механизм обратного вызова для динамического создания QObjects в рамках архитектуры сигналов и слотов в QT5, с учетом использования QMetaObject::invokeMethod()?

ARMOR
27.10.2023, 17:27
Где самп создает маркеры для игроков на радаре? Нопал CGame::CreateMarker и CRemotePlayer::SetMarkerPosition но нихуя не отключалось.

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

UP: Решено. CPed::CreateArrow.

ччбчлчлчъ ччччшчьпьппзвжв
28.10.2023, 12:51
как можно хукнуть функцию loadlibrary из kernel драйвера, как лучше?


???

вайега52
28.10.2023, 13:34
???


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

MoonDownLoadHook/src/main.cpp at main · whyega/MoonDownLoadHook (https://github.com/whyega/MoonDownLoadHook/blob/main/src/main.cpp#L40)

Contribute to whyega/MoonDownLoadHook development by creating an account on GitHub.

github.com

ччбчлчлчъ ччччшчьпьппзвжв
28.10.2023, 13:59
Если правильно понял

MoonDownLoadHook/src/main.cpp at main · whyega/MoonDownLoadHook (https://github.com/whyega/MoonDownLoadHook/blob/main/src/main.cpp#L40)

Contribute to whyega/MoonDownLoadHook development by creating an account on GitHub.

github.com



не, это хук локальный для программы онли, а мне нужно в драйвере реализовать глобальный хук для loadlibrary

Digger Man52
28.10.2023, 20:50
Как в Qt5 реализовать множественное наследование от двух классов QObject, оба из которых имеют свои сигналы и слоты, и при этом избежать проблем с дублированием метаобъектов и конфликтами имен в сигналах и слотах?

Просто каждый QObject имеет свой метаобъект, и при наследовании от двух классов будут созданы два металбъекта с теми же именами сигналов и слотов, как избавится от такого конфликта имен?

одно из моих предположений это использовать вирт наследование, и вручную опиеделять методы qt_metacall() , qt_metacast(), metaObject() в классе потомке для правильной организации метаобъектов, но может есть другие варианты?

Basedbounty
29.10.2023, 14:47
Как в imgui на с++ сделать кнопку start, и кнопку stop, если нажать на кнопку start - бесконечно будет в консоль выводится какой либо текст, но если нажать кнопку stop - вывод текста в консоль прекратится, нажму опять на start - опять начнется вывод текста, нажму опять на stop - вывод текста в консоль прекратится. Заранее спасибо!

Digger Man52
29.10.2023, 15:20
Как в imgui на с++ сделать кнопку start, и кнопку stop, если нажать на кнопку start - бесконечно будет в консоль выводится какой либо текст, но если нажать кнопку stop - вывод текста в консоль прекратится, нажму опять на start - опять начнется вывод текста, нажму опять на stop - вывод текста в консоль прекратится. Заранее спасибо!



C++:






bool
running
=
false
;
void
RenderUI
(
)
{
if
(
!
running
&&
ImGui
::
Button
(
"Start"
)
)
{
running
=
true
;
printf
(
"Вывод текста.\n"
)
;
}
if
(
running
&&
ImGui
::
Button
(
"Stop"
)
)
{
running
=
false
;
printf
(
"Конец вывода текста.\n"
)
;
}
}




и в твое окно, после ImGui::NewFrame();

C++:






ImGui
::
NewFrame
(
)
;
RenderUI
(
)
;
ImGui
::
Render
(
)
;

Basedbounty
29.10.2023, 17:06
C++:






bool
running
=
false
;
void
RenderUI
(
)
{
if
(
!
running
&&
ImGui
::
Button
(
"Start"
)
)
{
running
=
true
;
printf
(
"Вывод текста.\n"
)
;
}
if
(
running
&&
ImGui
::
Button
(
"Stop"
)
)
{
running
=
false
;
printf
(
"Конец вывода текста.\n"
)
;
}
}




и в твое окно, после ImGui::NewFrame();

C++:






ImGui
::
NewFrame
(
)
;
RenderUI
(
)
;
ImGui
::
Render
(
)
;





спасибо за ответ! но у меня не выходит, я буду рад если ты попробуешь это добавить в исходник имгуи, и поделится конечным результатом, сам исходник меню одного из ютуберов - https://github.com/cazzwastaken/borderless-imgui-window

Digger Man52
29.10.2023, 17:12
спасибо за ответ! но у меня не выходит, я буду рад если ты попробуешь это добавить в исходник имгуи, и поделится конечным результатом, сам исходник меню одного из ютуберов - https://github.com/cazzwastaken/borderless-imgui-window


остальной код без изменений

C++:






bool
running
=
false
;
void
gui
::
Render
(
)
noexcept
{
ImGui
::
SetNextWindowPos
(
{
0
,
0
}
)
;
ImGui
::
SetNextWindowSize
(
{
WIDTH
,
HEIGHT
}
)
;
ImGui
::
Begin
(
" "
,
&
isRunning
,
ImGuiWindowFlagsNoResize
|
ImGuiWindowFlagsNoSavedSettings
|
ImGuiWindowFlagsNoCollapse
|
ImGuiWindowFlagsNoMove
)
;
if
(
!
running
&&
ImGui
::
Button
(
"Start"
)
)
{
running
=
true
;
printf
(
"Вывод текста.\n"
)
;
}
if
(
running
&&
ImGui
::
Button
(
"Stop"
)
)
{
running
=
false
;
printf
(
"Конец вывода текста.\n"
)
;
}
if
(
running
)
// будет выводится вечно, пока running не станет false, так как меню отрисовывается каждый кадр, отсюда и проверка будет происходить каждый кадр
{
printf
(
"Текст в цикле.\n"
)
;
}
ImGui
::
End
(
)
;
ImGui
::
NewFrame
(
)
;
ImGui
::
Render
(
)
;
}

Basedbounty
29.10.2023, 18:08
остальной код без изменений

C++:






bool
running
=
false
;
void
gui
::
Render
(
)
noexcept
{
ImGui
::
SetNextWindowPos
(
{
0
,
0
}
)
;
ImGui
::
SetNextWindowSize
(
{
WIDTH
,
HEIGHT
}
)
;
ImGui
::
Begin
(
" "
,
&
isRunning
,
ImGuiWindowFlagsNoResize
|
ImGuiWindowFlagsNoSavedSettings
|
ImGuiWindowFlagsNoCollapse
|
ImGuiWindowFlagsNoMove
)
;
if
(
!
running
&&
ImGui
::
Button
(
"Start"
)
)
{
running
=
true
;
printf
(
"Вывод текста.\n"
)
;
}
if
(
running
&&
ImGui
::
Button
(
"Stop"
)
)
{
running
=
false
;
printf
(
"Конец вывода текста.\n"
)
;
}
if
(
running
)
// будет выводится вечно, пока running не станет false, так как меню отрисовывается каждый кадр, отсюда и проверка будет происходить каждый кадр
{
printf
(
"Текст в цикле.\n"
)
;
}
ImGui
::
End
(
)
;
ImGui
::
NewFrame
(
)
;
ImGui
::
Render
(
)
;
}





после запуска кода - меню без всего, это просто черный прямоугольник, но если я уберу строчки " ImGui::NewFrame();

ImGui::Render();" - меню уже будет с функциями, но если я нажму кнопку start - код воспроизведется как нужно, но я не могу нажать на кнопку stop. Вот скриншот того что происходит после кнопки start














https://sun9-59.userapi.com/impg/ES701tTEHsqggQ7RtBjMrUvuBL36tL2oL91oaQ/xGjV56UWtBc.jpg?size=713x430&quality=96&sign=9a16bb63f0e98bd1aab224c836c1cba4&type=album

ARMOR
30.10.2023, 18:36
При инклуде d3d9.h к проекту в котором используется SAMP-API сразу летят ошибки от rpcnsip.h и rpcndr.h:

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

Знает ли кто какова причина этих ошибок, и есть ли возможность их пофиксить?

Basedbounty
30.10.2023, 18:44
Всем привет! я хочу спросить о моей проблеме в imgui на c++. Суть проблемы такова - У меня имеется две кнопки - start, stop. Start отвечает за начало цикла, а stop заканчивает его. Код в цикле который выполняется при кнопке Stop вызывает у меня проблему, если мне надо в коде того цикла заморозить функцию через Sleep - замораживается все imgui, и соответственно я не могу нажать на кнопку stop. Если что-либо не понятно - могу рассказать более подробно. Кусок кода ниже.

с++:






bool
running
=
false
;
void
gui
::
Render
(
)
noexcept
{
ImGui
::
SetNextWindowPos
(
{
0
,
0
}
)
;
ImGui
::
SetNextWindowSize
(
{
WIDTH
,
HEIGHT
}
)
;
ImGui
::
Begin
(
"test"
,
&
isRunning
,
ImGuiWindowFlags_NoResize
|
ImGuiWindowFlags_NoSavedSettings
|
ImGuiWindowFlags_NoCollapse
|
ImGuiWindowFlags_NoMove
)
;
if
(
!
running
&&
ImGui
::
Button
(
"Start"
)
)
{
running
=
true
;
printf
(
"Начало вывода текста.\n"
)
;
}
if
(
running
&&
ImGui
::
Button
(
"Stop"
)
)
{
running
=
false
;
printf
(
"Конец вывода текста.\n"
)
;
}
if
(
running
)
// будет выводится вечно, пока running не станет false, так как меню отрисовывается каждый кадр, отсюда и проверка будет происходить каждый кадр
{
printf
(
"Тут и происходит тот самый цикл после кнопки start"
)
;
Sleep
(
5000
)
;
}
ImGui
::
End
(
)
;
ImGui
::
Render
(
)
;
}




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

Digger Man52
30.10.2023, 20:05
Всем привет! я хочу спросить о моей проблеме в imgui на c++. Суть проблемы такова - У меня имеется две кнопки - start, stop. Start отвечает за начало цикла, а stop заканчивает его. Код в цикле который выполняется при кнопке Stop вызывает у меня проблему, если мне надо в коде того цикла заморозить функцию через Sleep - замораживается все imgui, и соответственно я не могу нажать на кнопку stop. Если что-либо не понятно - могу рассказать более подробно. Кусок кода ниже.

с++:






bool
running
=
false
;
void
gui
::
Render
(
)
noexcept
{
ImGui
::
SetNextWindowPos
(
{
0
,
0
}
)
;
ImGui
::
SetNextWindowSize
(
{
WIDTH
,
HEIGHT
}
)
;
ImGui
::
Begin
(
"test"
,
&
isRunning
,
ImGuiWindowFlags_NoResize
|
ImGuiWindowFlags_NoSavedSettings
|
ImGuiWindowFlags_NoCollapse
|
ImGuiWindowFlags_NoMove
)
;
if
(
!
running
&&
ImGui
::
Button
(
"Start"
)
)
{
running
=
true
;
printf
(
"Начало вывода текста.\n"
)
;
}
if
(
running
&&
ImGui
::
Button
(
"Stop"
)
)
{
running
=
false
;
printf
(
"Конец вывода текста.\n"
)
;
}
if
(
running
)
// будет выводится вечно, пока running не станет false, так как меню отрисовывается каждый кадр, отсюда и проверка будет происходить каждый кадр
{
printf
(
"Тут и происходит тот самый цикл после кнопки start"
)
;
Sleep
(
5000
)
;
}
ImGui
::
End
(
)
;
ImGui
::
Render
(
)
;
}




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



C++:






bool
running
=
false
;
std
::
thread additionalThread
;
void
StartAdditionalThread
(
)
{
additionalThread
=
std
::
thread
(
(
)
{
while
(
running
)
{
printf
(
"Start\n"
)
;
std
::
thisthread
::
sleepfor
(
std
::
chrono
::
milliseconds
(
5000
)
)
;
}
}
)
;
}
void
StopAdditionalThread
(
)
{
if
(
additionalThread
.
joinable
(
)
)
{
running
=
false
;
additionalThread
.
join
(
)
;
}
}
void
gui
::
Render
(
)
noexcept
{
ImGui
::
SetNextWindowPos
(
{
0
,
0
}
)
;
ImGui
::
SetNextWindowSize
(
{
WIDTH
,
HEIGHT
}
)
;
ImGui
::
Begin
(
"test"
,
&
isRunning
,
ImGuiWindowFlagsNoResize
|
ImGuiWindowFlagsNoSavedSettings
|
ImGuiWindowFlagsNoCollapse
|
ImGuiWindowFlagsNoMove
)
;
if
(
!
running
&&
ImGui
::
Button
(
"Start"
)
)
{
running
=
true
;
printf
(
"Начало вывода текста.\n"
)
;
StartAdditionalThread
(
)
;
}
if
(
running
&&
ImGui
::
Button
(
"Stop"
)
)
{
running
=
false
;
printf
(
"Конец вывода текста.\n"
)
;
StopAdditionalThread
(
)
;
}
ImGui
::
End
(
)
;
ImGui
::
Render
(
)
;
}






#include не забудь

Basedbounty
30.10.2023, 20:28
C++:






bool
running
=
false
;
std
::
thread additionalThread
;
void
StartAdditionalThread
(
)
{
additionalThread
=
std
::
thread
(
(
)
{
while
(
running
)
{
printf
(
"Start\n"
)
;
std
::
thisthread
::
sleepfor
(
std
::
chrono
::
milliseconds
(
5000
)
)
;
}
}
)
;
}
void
StopAdditionalThread
(
)
{
if
(
additionalThread
.
joinable
(
)
)
{
running
=
false
;
additionalThread
.
join
(
)
;
}
}
void
gui
::
Render
(
)
noexcept
{
ImGui
::
SetNextWindowPos
(
{
0
,
0
}
)
;
ImGui
::
SetNextWindowSize
(
{
WIDTH
,
HEIGHT
}
)
;
ImGui
::
Begin
(
"test"
,
&
isRunning
,
ImGuiWindowFlagsNoResize
|
ImGuiWindowFlagsNoSavedSettings
|
ImGuiWindowFlagsNoCollapse
|
ImGuiWindowFlagsNoMove
)
;
if
(
!
running
&&
ImGui
::
Button
(
"Start"
)
)
{
running
=
true
;
printf
(
"Начало вывода текста.\n"
)
;
StartAdditionalThread
(
)
;
}
if
(
running
&&
ImGui
::
Button
(
"Stop"
)
)
{
running
=
false
;
printf
(
"Конец вывода текста.\n"
)
;
StopAdditionalThread
(
)
;
}
ImGui
::
End
(
)
;
ImGui
::
Render
(
)
;
}





#include не забудь


В этом имгуи я писал https://drive.google.com/file/d/14YBCAqpSlPzmXeAnPSWe4E6Hlhu4fsIl/view (https://www.blast.hk/redirect/aHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2ZpbGUvZC8xNFlCQ0 FxcFNsUHptWGVBblBTV2U0RTZIbGh1NGZzSWwvdmlldw)

Digger Man52
30.10.2023, 20:46
В этом имгуи я писал https://drive.google.com/file/d/14YBCAqpSlPzmXeAnPSWe4E6Hlhu4fsIl/view (https://www.blast.hk/redirect/aHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2ZpbGUvZC8xNFlCQ0 FxcFNsUHptWGVBblBTV2U0RTZIbGh1NGZzSWwvdmlldw)



C++:






std
::
thread additionalThread
;
void
StartAdditionalThread
(
)
{
additionalThread
=
std
::
thread
(
[
]
(
)
{
while
(
running
)
{
printf
(
"Start\n"
)
;
std
::
this_thread
::
sleep_for
(
std
::
chrono
::
milliseconds
(
5000
)
)
;
}
}
)
;
}

Basedbounty
30.10.2023, 21:41
как мне сделать функцию StartAdditionalThread в отдельном файле. Чтобы при кнопке start вызывалась эта функция из другого файла

Digger Man52
30.10.2023, 23:04
как мне сделать функцию StartAdditionalThread в отдельном файле. Чтобы при кнопке start вызывалась эта функция из другого файла


создаешь другой файл, вообще поебать какое расширение(принято .h), назовем его допустим hui.lol потом #include "hui.lol" в основном файле, и прописываешь реализацию функции в hui.lol, потом вызываешь функцию

Basedbounty
02.11.2023, 19:50
C++:






void
func1
(
)
{
std
::
cout «
"func1"
;
}
void
func2
(
)
{
std
::
cout «
"func2"
;
}
int
main
(
)
{
while
(
true
)
{
func1
;
func2
;
}
return
0
;
}




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

Digger Man52
02.11.2023, 20:48
void func1(){
std::cout « "func1";
}

void func2(){
std::cout « "func2";
}

int main() {
while(true) {
func1;
func2;
}
return 0;
} - как вы видите у меня есть две функции, и третия основая, в которой я вызываю две эти функции, как мне в главной функции сделать что при вызове func1 - замараживалось на определенное время, но func2 продалжала работать, после разморозки функции func1, происходил код из func1, а потом опять замораживался, но func2 продалжал работу


создать bool переменную, и если она фолс, то пропускать func1, а когда тебе надо, сделаешь ее true, если тебе по какому то таймеру надо, тогда запускай в отдельном потоке таймер и считай, потом делай true

Digger Man52
03.11.2023, 17:52
такой вопрос, можно это реализовать на c++ в asi плагине? адреса памяти то понятно, но samp.events реально?




Lua:






local
sampev
=
require
(
"samp.events"
)
local
memory
=
require
(
"memory"
)
memory
.
write
(
0x70476E
,
0x0B32
,
4
,
true
)
;
memory
.
write
(
0x70476A
,
0xE9575653
,
4
,
true
)
--NoPostFx
memory
.
write
(
0x53EA95
,
0xB7C7F0
,
4
,
true
)
;
memory
.
setfloat
(
0xB7C7F0
,
201
,
true
)
--Drawdist
memory
.
setuint8
(
getModuleHandle
(
"samp.dll"
)
+
0x9D170
,
0xC3
,
true
)
--FpsUnlock
memory
.
copy
(
0x4EB9A0
,
memory
.
strptr
(
"\xC2\x04\x00"
)
,
3
,
true
)
--NoRadio
memory
.
copy
(
0x866C94
,
memory
.
strptr
(
"$%d"
)
,
6
,
true
)
--NoMoneyZero
memory
.
write
(
0x52228E
,
0xB6EC1C
,
4
,
true
)
-- SensitivityFix
memory
.
write
(
5497324
,
235
,
1
,
true
)
--NoTargetBlip
memory
.
write
(
8931716
,
0
,
4
,
true
)
--FixBlackRoads
memory
.
setuint8
(
0x5909AB
,
0x1
,
true
)
--FastLoad
function
main
(
)
callFunction
(
0x7469A0
,
0
,
0
)
end
function
sampev
.
onServerMessage
(
color
,
text
)
if
text
:
find
(
"Чтобы завести транспорт"
)
or
text
:
find
(
"Чтобы закрыть транспорт"
)
then
sampSendChat
(
"/engine"
)
end
end
function
sampev
.
onShowTextDraw
(
id
,
data
)
data
.
text
=
data
.
text
:
gsub
(
"~w~galaxy%-rpg%.online~n~"
,
""
)
return
{
id
,
data
}
end
function
sampev
.
onDisplayGameText
(
style
,
time
,
text
)
return
{
4
,
2000
,
text
}
end








ну, просто 3 хука…

Vintik
03.11.2023, 22:34
ну, просто 3 хука…


пытался помочь челику и найти в исходниках самп.луа адреса хуков, но не нашёл

может быть ты найдёшь?

redcode
03.11.2023, 23:23
пытался помочь челику и найти в исходниках самп.луа адреса хуков, но не нашёл
может быть ты найдёшь?


там же пакеты хукаются, какие там могут быть адреса?

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

0x73616D
04.11.2023, 19:59
What is wrong with my code? When getting into a vehicle the game crashes (R1)

Что не так с моим кодом? При посадке в транспорт игра вылетает (R1)

C++:






bool
MemoryCheck
(
int
pAddress
,
unsigned
char
cByte
)
{
unsigned
long
dwProtect
[
2
]
;
unsigned
char
cValue
=
cByte
;
VirtualProtect
(
reinterpret_cast

(
pAddress
)
,
1
,
PAGE_READWRITE
,
&
dwProtect
[
0
]
)
;
memcpy
(
&
cValue
,
reinterpret_cast

(
pAddress
)
,
1
)
;
VirtualProtect
(
reinterpret_cast

(
pAddress
)
,
1
,
dwProtect
[
0
]
,
&
dwProtect
[
1
]
)
;
return
(
cValue
>
cByte
)
;
}
DWORD
GetVehicleCPEDPtr
(
)
{
unsigned
long
dwProtect
[
2
]
;
DWORD vehicleCPEDPtr
;
VirtualProtect
(
reinterpret_cast

(
0xBA18FC
)
,
sizeof
(
DWORD
)
,
PAGE_EXECUTE_READ
,
&
dwProtect
[
0
]
)
;
memcpy
(
&
vehicleCPEDPtr
,
reinterpret_cast

(
0xBA18FC
)
,
sizeof
(
DWORD
)
)
;
return
vehicleCPEDPtr
;
}
float
GetVehicleSpeed
(
DWORD vehicleCPEDPtr
)
{
unsigned
long
dwProtect
[
2
]
;
float
speedX
,
speedY
;
VirtualProtect
(
reinterpret_cast

(
vehicleCPEDPtr
+
0x44
)
,
sizeof
(
float
)
,
PAGE_EXECUTE_READ
,
&
dwProtect
[
0
]
)
;
memcpy
(
&
speedX
,
reinterpret_cast

(
vehicleCPEDPtr
+
0x44
)
,
sizeof
(
float
)
)
;
VirtualProtect
(
reinterpret_cast

(
vehicleCPEDPtr
+
0x44
)
,
sizeof
(
float
)
,
dwProtect
[
0
]
,
&
dwProtect
[
1
]
)
;
VirtualProtect
(
reinterpret_cast

(
vehicleCPEDPtr
+
0x48
)
,
sizeof
(
float
)
,
PAGE_EXECUTE_READ
,
&
dwProtect
[
0
]
)
;
memcpy
(
&
speedY
,
reinterpret_cast

(
vehicleCPEDPtr
+
0x48
)
,
sizeof
(
float
)
)
;
VirtualProtect
(
reinterpret_cast

(
vehicleCPEDPtr
+
0x48
)
,
sizeof
(
float
)
,
dwProtect
[
0
]
,
&
dwProtect
[
1
]
)
;
float
speed
=
(
speedX
+
speedY
)
*
4.0f
;
return
speed
;
}
int
WINAPI
Thread
(
)
{
while
(
*
(
DWORD
*
)
0xC8D4C0
!=
9
)
Sleep
(
100
)
;
InitHook
(
)
;
while
(
true
)
{
if
(
MemoryCheck
(
0xBA18FC
,
1
)
)
{
if
(
GetVehicleCPEDPtr
(
)
!=
0
)
{
float
speed
=
GetVehicleSpeed
(
GetVehicleCPEDPtr
(
)
)
;
if
(
speed
>=
0
&&
speed

60
&&
speed

120
&&
speed

180
)
{
speed
=
33
;
}
else
{
speed
=
0
;
}
}
}
}
return
0
;
}




The addresses are fine since in the cheat engine, when you obtain both speeds, add them and multiply them by 4, the returned value is the correct one.

С адресами все в порядке, поскольку в чит-движке, когда вы получаете обе скорости, складываете их и умножаете на 4, возвращаемое значение является правильным.

F0RQU1N and
08.11.2023, 05:43
???



Функция PsSetLoadImageNotifyRoutine (ntddk.h) - Windows drivers (https://www.blast.hk/redirect/aHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL3J1LXJ1L3dpbm Rvd3MtaGFyZHdhcmUvZHJpdmVycy9kZGkvbnRkZGsvbmYtbnRk ZGstcHNzZXRsb2FkaW1hZ2Vub3RpZnlyb3V0aW5l)

Подпрограмма PsSetLoadImageNotifyRoutine регистрирует обратный вызов, предоставленный драйвером, который впоследствии уведомляется при загрузке образа (или сопоставлен в память).

learn.microsoft.com


Или через ssdt хукай LdrLoadDll

etereon
08.11.2023, 05:57
Или через ssdt хукай LdrLoadDll


Она лежит в ntdll.dll, так что в ядре можно перехватить только сусколлы, которые она использует

ARMOR
08.11.2023, 07:53
адреса памяти то понятно, но samp.events реально?



Исходник - RakHook 1.0-beta (https://www.blast.hk/threads/69666/)

RakHook - библиотека, которая добавляет события RakNet'a (входящие/исходящие пакеты и RPC), эмуляцию и отправку пакетов и RPC. Есть одновременная поддержка версий 0.3.7-R1, 0.3.7-R3-1, 0.3.7-R4 и 0.3DL-R1. Функции std::uintptr_t rakhook::samp_addr(std::uintptr_t offset = 0); // получить адрес...

www.blast.hk

ччбчлчлчъ ччччшчьпьппзвжв
09.11.2023, 02:16
Она лежит в ntdll.dll, так что в ядре можно перехватить только сусколлы, которые она используете


а как можно найти индекс LdrLoadDll или адресс в самой ntdll.dll? можно пожалуйста какой-нибудь гайд

F0RQU1N and
09.11.2023, 06:33
а как можно найти индекс LdrLoadDll или адресс в самой ntdll.dll? можно пожалуйста какой-нибудь гайд


Функции в ntdll в основном это обёртка для syscall`ов, то есть можно просто посмотреть их код

В начале там что-то примерно:

4C 8B D1 mov r10, rcx

B8 ...mov eax, syscallid

То есть будет примерно что-то такое

C++:






const
auto
ntdll
=
GetModuleHandleW
(
L
"ntdll.dll"
)
;
auto
syscall_num
=
*
reinterpret_cast

(
(
uintptr_t
)
GetProcAddress
(
ntdll
,
"NtMapViewOfSection"
)
+
4
)
;

ччбчлчлчъ ччччшчьпьппзвжв
09.11.2023, 12:07
Функции в ntdll в основном это обёртка для syscall`ов, то есть можно просто посмотреть их код
В начале там что-то примерно:
4C 8B D1 mov r10, rcx
B8 ...mov eax, syscallid

То есть будет примерно что-то такое

C++:






const
auto
ntdll
=
GetModuleHandleW
(
L
"ntdll.dll"
)
;
auto
syscall_num
=
*
reinterpret_cast

(
(
uintptr_t
)
GetProcAddress
(
ntdll
,
"NtMapViewOfSection"
)
+
4
)
;





получается, что если я сделаю драйвер и буду хукать LdrLoadDll из ntdll.dll, то у меня должно получится, то что мне нужно - перехват загрузки длл и я смогу что угодно сделать в этом хуке?

F0RQU1N and
09.11.2023, 13:01
получается, что если я сделаю драйвер и буду хукать LdrLoadDll из ntdll.dll, то у меня должно получится, то что мне нужно - перехват загрузки длл и я смогу что угодно сделать в этом хуке?


LdrLoadDll это не сискалл посмотри его код в ntdll. юзай https://learn.microsoft.com/en-us/w...di/ntddk/nf-ntddk-pssetloadimagenotifyroutine (https://www.blast.hk/redirect/aHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL3dpbm Rvd3MtaGFyZHdhcmUvZHJpdmVycy9kZGkvbnRkZGsvbmYtbnRk ZGstcHNzZXRsb2FkaW1hZ2Vub3RpZnlyb3V0aW5l)

etereon
09.11.2023, 17:46
а как можно найти индекс LdrLoadDll или адресс в самой ntdll.dll? можно пожалуйста какой-нибудь гайд


Это экспортируемая функция, так что можно просто вот так (но если ты хочешь что-то сделать из кернел мода, то тебе это ни к чему)

C++:






GetProcAddress
(
GetModuleHandleA
(
"ntdll.dll"
)
,
"LdrLoadDll"
)
;

yorenov
25.11.2023, 14:19
Как зарегать cmd без использования какого то апи? Короче говоря, пишу плагин, надо чтоб юзер передавал аргумент в функу через cmd, как реализовать не прибегая к использованию какого либо апи?

Аналогия сф апи - SF->getSAMP()->registerChatCommand("text", text); // юзер пишет "/test 1" в чате, вызывается функция test("1") с параметром 1. Думаю ясно объяснил что мне надо короче

Oleg1337228
25.11.2023, 20:47
Asi:
rtdhook* hook;

void* __fastcall AttachEntityToEntity(uintptr_t ptr, void* edx, uintptr_t entityTo, CVector offset, CVector rotation)
{
uint8_t type = *reinterpret_cast(entityTo + 0x36);
if ((type & 7) == 2) // If entity is attaching to vehicle
*reinterpret_cast(ptr + 0x1C) &= 0xFFFFFFFE;

return reinterpret_cast
(hook->trampoline)(ptr, entityTo, offset, rotation);
}

int main()
{
hook = new rtdhook(0x54D570, reinterpret_cast(&AttachEntityToEntity));
hook->install();
return 0;
}


Как добавить активацию и деактиваю самп?

вайега52
25.11.2023, 22:33
Как зарегать cmd без использования какого то апи? Короче говоря, пишу плагин, надо чтоб юзер передавал аргумент в функу через cmd, как реализовать не прибегая к использованию какого либо апи?
Аналогия сф апи - SF->getSAMP()->registerChatCommand("text", text); // юзер пишет "/test 1" в чате, вызывается функция test("1") с параметром 1. Думаю ясно объяснил что мне надо короче



AntiStun/AntiStun/dllmain.cpp at master · kin4stat/AntiStun (https://github.com/kin4stat/AntiStun/blob/master/AntiStun/dllmain.cpp#L114)

Contribute to kin4stat/AntiStun development by creating an account on GitHub.

github.com

ччбчлчлчъ ччччшчьпьппзвжв
27.11.2023, 20:00
как сделать самостоятельное окно imgui, чтобы было без панели управления окном directx9




1701100736957.pngччбчлчлчъ ччччшчьпьппзвжв · 27 Ноя 2023 в 19:00' data-fancybox="lb-post-1417055" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/222458/" style="cursor: pointer;" title="1701100736957.png">
https://forum.antichat.xyz/attachments/28417055/

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

1701100755408.pngччбчлчлчъ ччччшчьпьппзвжв · 27 Ноя 2023 в 19:00' data-fancybox="lb-post-1417055" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/222460/" style="cursor: pointer;" title="1701100755408.png">
https://forum.antichat.xyz/attachments/28417055/

ВСЕМ СПАСИБО ЧАТГПТ МЕНЯ СМОГ УСЛЫШАТЬ

C++:






HWND hwnd
=
::
CreateWindowW
(
wc
.
lpszClassName
,
L
"Dear ImGui Standalone Window"
,
WS_POPUP
,
100
,
100
,
1280
,
800
,
nullptr
,
nullptr
,
wc
.
hInstance
,
nullptr
)
;

y0dir1ga
04.12.2023, 18:24
Привет хотел бы узнать как скомпилировать asi и cpp

вайега52
04.12.2023, 18:27
Привет хотел бы узнать как скомпилировать asi и cpp


Если через cmake, то можешь за образец взять это (https://github.com/AnWuPP/AsiPlugin/). Если попроще, то можешь использовать Visual Studio Code, настроив проект по этому гайду (https://www.blast.hk/threads/89122/)

y0dir1ga
04.12.2023, 19:06
Если через cmake, то можешь за образец взять это (https://github.com/AnWuPP/AsiPlugin/). Если попроще, то можешь использовать Visual Studio Code, настроив проект по этому гайду (https://www.blast.hk/threads/89122/)


Дело в том что мне нужно перебиньдить кнопку активации с Insert на F3 в прикреплённом файле, кнопку в KeyHook.cpp заменил а как скомпилировать не понимаю.

вайега52
04.12.2023, 20:51
Пишу обертку на sol2 под Lua для перегруженной функции. Почему-то, когда добавляю вторую функцию, я не могу корректно вызвать функцию из под Lua

C++:






RakClientType
[
"RPC"
]
=
sol
::
overload
(
[
]
(
RakClient
&
pRakClient
,
int
rpcId
,
BitStream
*
bitStream
,
PacketPriority priority
,
PacketReliability reliability
,
char
orderingChannel
,
bool
shiftTimestamp
,
NetworkID networkId
,
BitStream
*
replyFromTarget
)
{
return
pRakClient
.
RPCd
(
&
rpcId
,
bitStream
,
priority
,
reliability
,
orderingChannel
,
shiftTimestamp
,
networkId
,
replyFromTarget
)
;
}
,
[
]
(
RakClient
&
pRakClient
,
int
rpcId
,
const
char
*
data
,
unsigned
int
bitLength
,
PacketPriority priority
,
PacketReliability reliability
,
char
orderingChannel
,
bool
shiftTimestamp
,
NetworkID networkId
,
BitStream
*
replyFromTarget
)
{
return
pRakClient
.
RPC
(
&
rpcId
,
data
,
bitLength
,
priority
,
reliability
,
orderingChannel
,
shiftTimestamp
,
networkId
,
replyFromTarget
)
;
}
)
;




На lua вызываю ее так:

Lua:






rakClient
:
RPC
(
rpcId
,
bitstream
,
RakCore
.
PacketPriority
.
HIGH_PRIORITY
,
RakCore
.
PacketReliability
.
RELIABLE_ORDERED
,
0
,
false
,
RakCore
.
UNASSIGNED_NETWORK_ID
,
nil
)




Странно, что ошибка появляется если добавить вторую перегрузку (вместо bitStream data и lenght), когда оставляю только одну перегрузку (также через sol::overload), все работает корректно. Ошибка в Lua:

Код:






sol: no matching function call takes this number of arguments and the specified types

F0RQU1N and
05.12.2023, 03:30
Дело в том что мне нужно перебиньдить кнопку активации с Insert на F3 в прикреплённом файле, кнопку в KeyHook.cpp заменил а как скомпилировать не понимаю.


В хекс эдиторе можешь просто заменить

Book
19.12.2023, 15:22
почему не выводится в консоль все кроме area1 или оно тоже не выводится? Помогите пожалуйста. Нашел уже

AKTPUCCA
02.01.2024, 00:36
У меня вопрос по многофайловым проектам на языке C++. Допустим у меня в проекте следующие файлы:
main.cpp

sum.cpp // определение функции sum(int a, int b) {return a+b};

sum.h // объявление функции

В sum.cpp мы подключаем заголовочный файл (как это говорят делать) #include "sum.h"

В main.cpp мы так же подключаем заголовочный файл #include "sum.h"

Теперь вопрос: если директива "#include" просто вставляет текст из файла, который он подключает, то как на*** работает заголовочный файл; ведь подключая "sum.h" в "main.cpp" мы по сути вставляем ТОЛЬКО объявление функции в main.cpp, но каким-то чудом тут еще и определение из sum.cpp работает, хотя мы его не подключаем, а ДАЖЕ НАОБОРОТ, ЭТО sum.cpp вставляет в себя текст sum.h. Что в итоге: sum.h не содержит в себе текст из sum.cpp, и main.cpp не содержит в себе текст sum.cpp. main.cpp вставляет текст sum.h, а sum.h НЕ вставляет в себя определение функции sum(), то есть НЕ инклудит в себя sum.cpp. Это заставляет меня сомневаться в знании "#include".

В моем понимании, чтобы функция работала, мы должны подключить ее определение, а тут с заголовками мы не подключаем определение (sum.cpp), мы подключаем заголовочный "sum.h", но в самом заголовочном мы не подключаем определение в "sum.cpp". Объясните почему так, ПОЧЕМУ ТАК?! Мозг ломается.

N08I40K
02.01.2024, 01:58
У меня вопрос по многофайловым проектам на языке C++. Допустим у меня в проекте следующие файлы:

main.cpp

sum.cpp // определение функции sum(int a, int b) {return a+b};

sum.h // объявление функции

В sum.cpp мы подключаем заголовочный файл (как это говорят делать) #include "sum.h"

В main.cpp мы так же подключаем заголовочный файл #include "sum.h"

Теперь вопрос: если директива "#include" просто вставляет текст из файла, который он подключает, то как на*** работает заголовочный файл; ведь подключая "sum.h" в "main.cpp" мы по сути вставляем ТОЛЬКО объявление функции в main.cpp, но каким-то чудом тут еще и определение из sum.cpp работает, хотя мы его не подключаем, а ДАЖЕ НАОБОРОТ, ЭТО sum.cpp вставляет в себя текст sum.h. Что в итоге: sum.h не содержит в себе текст из sum.cpp, и main.cpp не содержит в себе текст sum.cpp. main.cpp вставляет текст sum.h, а sum.h НЕ вставляет в себя определение функции sum(), то есть НЕ инклудит в себя sum.cpp. Это заставляет меня сомневаться в знании "#include".

В моем понимании, чтобы функция работала, мы должны подключить ее определение, а тут с заголовками мы не подключаем определение (sum.cpp), мы подключаем заголовочный "sum.h", но в самом заголовочном мы не подключаем определение в "sum.cpp". Объясните почему так, ПОЧЕМУ ТАК?! Мозг ломается.



Для чего нужны Header файлы в С++? Почему нельзя писать без них? (https://www.blast.hk/redirect/aHR0cHM6Ly9ydS5zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbn MvNjIxMDgyL9CU0LvRjy3Rh9C10LPQvi3QvdGD0LbQvdGLLWhl YWRlci3RhNCw0LnQu9GLLdCyLdChLdCf0L7Rh9C10LzRgy3Qvd C10LvRjNC30Y8t0L_QuNGB0LDRgtGMLdCx0LXQty3QvdC40YU)

Весь гугл перерыл, не могу понять. И википедию перечитал и вообще все что угодно перечитал. Правда не понимаю. Что мешает подключать просто .cpp файлы? Ну подключил ты его два раза, ну пусть комп...

ru.stackoverflow.com

AKTPUCCA
02.01.2024, 02:38
Для чего нужны Header файлы в С++? Почему нельзя писать без них? (https://www.blast.hk/redirect/aHR0cHM6Ly9ydS5zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbn MvNjIxMDgyL9CU0LvRjy3Rh9C10LPQvi3QvdGD0LbQvdGLLWhl YWRlci3RhNCw0LnQu9GLLdCyLdChLdCf0L7Rh9C10LzRgy3Qvd C10LvRjNC30Y8t0L_QuNGB0LDRgtGMLdCx0LXQty3QvdC40YU)

Весь гугл перерыл, не могу понять. И википедию перечитал и вообще все что угодно перечитал. Правда не понимаю. Что мешает подключать просто .cpp файлы? Ну подключил ты его два раза, ну пусть комп...

ru.stackoverflow.com



Там не описано каким образом .h присоединяет определение из .cpp без инклуда

D0glian
03.01.2024, 18:04
Итак, помогите мне выполнить упражнение на C++, нужно сделать это с включением iostream и использованием пространства имен std на базовом языке. Это упражнение пользователь должен визуализировать на следующем рисунке: 5 звездочек и тире ( *****-) под 4 звездочками и двумя тире ****-- под 3 звездочками два тире и ноль ( ** *--0) под двумя звездочками два тире и два нуля ( **--00) под звездочкой два тире три нуля ( *--000) под двумя тире и 4 нуля ( --0000)

AKTPUCCA
03.01.2024, 21:55
Итак, помогите мне выполнить упражнение на C++, нужно сделать это с включением iostream и использованием пространства имен std на базовом языке. Это упражнение пользователь должен визуализировать на следующем рисунке: 5 звездочек и тире ( *****-) под 4 звездочками и двумя тире ****-- под 3 звездочками два тире и ноль ( ** *--0) под двумя звездочками два тире и два нуля ( **--00) под звездочкой два тире три нуля ( *--000) под двумя тире и 4 нуля ( --0000)


это прям база база, просто std::cout

ARMOR
04.01.2024, 22:59
При создании ImGui окна и смене его прозрачности через стиль она не меняется а фон просто становится черным:

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

Искал решение в интернете но нихуя не смог найти. Переписывал даже с DX9 на DX11. Но нихуя.

Решение этому говну есть вообще?

UP.

Решение:

Установить для PresentParameters.BackBufferFormat формат D3DFMT_A8R8G8B8

0x73616D
05.01.2024, 08:49
Is it possible to make an http post request for a message on a discord website without using libraries like CURL?

preferably using windows libs, such as Wininet, winhttp or other native windows. (It would be nice if you give an example)

Можно ли сделать HTTP-запрос на публикацию сообщения на веб-сайте Discord без использования таких библиотек, как CURL?

желательно использовать библиотеки Windows, такие как Wininet, winhttp или другие собственные окна. (Было бы здорово, если бы вы привели пример)

Lqst31
18.01.2024, 12:28
я не знаю туда ли я пишу но вот вопрос, как мне пофиксить проблему с ImGui когда я закрываю меню у меня игра зависает но звуки кнопок и музика игры идёт но когда картинка зависает игра всеровно роботает типо если нажать на инвентарь например и нажать на кнопку открытия меню то в игре картинка поменяеться я взял обычний хук киеро 11direct x и рисовал меню вот код (и еще не роботают флаги) и не применяються темы когда я пишу ImGui::StyleColorLight все билдиться нормально но при открытии меню игра крашиться или не применяеться

C++:






#include "includes.h"
#include "offsets.h"
extern
LRESULT
ImGui_ImplWin32_WndProcHandler
(
HWND hWnd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
;
Present oPresent
;
HWND window
=
NULL
;
WNDPROC oWndProc
;
ID3D11Device
*
pDevice
=
NULL
;
ID3D11DeviceContext
*
pContext
=
NULL
;
ID3D11RenderTargetView
*
mainRenderTargetView
;
void
InitImGui
(
)
{
ImGui
::
CreateContext
(
)
;
ImGuiIO
&
io
=
ImGui
::
GetIO
(
)
;
static
ImGuiWindowFlags winFlags
=
{
ImGuiWindowFlags_NoResize
|
ImGuiWindowFlags_NoSavedSettings
|
ImGuiWindowFlags_NoMove
|
ImGuiWindowFlags_NoCollapse
}
;
ImGui_ImplWin32_Init
(
window
)
;
ImGui_ImplDX11_Init
(
pDevice
,
pContext
)
;
}
LRESULT __stdcall
WndProc
(
const
HWND hWnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
true
&&
ImGui_ImplWin32_WndProcHandler
(
hWnd
,
uMsg
,
wParam
,
lParam
)
)
return
true
;
return
CallWindowProc
(
oWndProc
,
hWnd
,
uMsg
,
wParam
,
lParam
)
;
}
bool
init
=
false
;
bool
menu
=
false
;
HRESULT __stdcall
hkPresent
(
IDXGISwapChain
*
pSwapChain
,
UINT SyncInterval
,
UINT Flags
)
{
if
(
!
init
)
{
if
(
SUCCEEDED
(
pSwapChain
->
GetDevice
(
__uuidof
(
ID3D11Device
)
,
(
void
*
*
)
&
pDevice
)
)
)
{
ImGui
::
StyleColorsLight
;
pDevice
->
GetImmediateContext
(
&
pContext
)
;
DXGI_SWAP_CHAIN_DESC sd
;
pSwapChain
->
GetDesc
(
&
sd
)
;
window
=
sd
.
OutputWindow
;
ID3D11Texture2D
*
pBackBuffer
;
pSwapChain
->
GetBuffer
(
0
,
__uuidof
(
ID3D11Texture2D
)
,
(
LPVOID
*
)
&
pBackBuffer
)
;
pDevice
->
CreateRenderTargetView
(
pBackBuffer
,
NULL
,
&
mainRenderTargetView
)
;
pBackBuffer
->
Release
(
)
;
oWndProc
=
(
WNDPROC
)
SetWindowLongPtr
(
window
,
GWLP_WNDPROC
,
(
LONG_PTR
)
WndProc
)
;
InitImGui
(
)
;
init
=
true
;
}
else
return
oPresent
(
pSwapChain
,
SyncInterval
,
Flags
)
;
}
if
(
GetAsyncKeyState
(
VK_INSERT
)
&
1
)
{
menu
=
!
menu
;
}
if
(
menu
)
{
ImGui_ImplDX11_NewFrame
(
)
;
ImGui_ImplWin32_NewFrame
(
)
;
ImGui
::
NewFrame
(
)
;
ImGui
::
Begin
(
"я гей но об этом никто не узнает"
)
;
ImGui
::
End
(
)
;
ImGui
::
Render
(
)
;
pContext
->
OMSetRenderTargets
(
1
,
&
mainRenderTargetView
,
NULL
)
;
ImGui_ImplDX11_RenderDrawData
(
ImGui
::
GetDrawData
(
)
)
;
return
oPresent
(
pSwapChain
,
SyncInterval
,
Flags
)
;
}
}
DWORD WINAPI
MainThread
(
LPVOID lpReserved
)
{
bool
init_hook
=
false
;
do
{
if
(
kiero
::
init
(
kiero
::
RenderType
::
D3D11
)
==
kiero
::
Status
::
Success
)
{
kiero
::
bind
(
8
,
(
void
*
*
)
&
oPresent
,
hkPresent
)
;
init_hook
=
true
;
}
}
while
(
!
init_hook
)
;
return
TRUE
;
}
BOOL WINAPI
DllMain
(
HMODULE hMod
,
DWORD dwReason
,
LPVOID lpReserved
)
{
switch
(
dwReason
)
{
case
DLL_PROCESS_ATTACH
:
DisableThreadLibraryCalls
(
hMod
)
;
CreateThread
(
nullptr
,
0
,
MainThread
,
hMod
,
0
,
nullptr
)
;
break
;
case
DLL_PROCESS_DETACH
:
kiero
::
shutdown
(
)
;
break
;
}
return
TRUE
;
}

g305noobo
18.01.2024, 13:50
Is it possible to make an http post request for a message on a discord website without using libraries like CURL?
preferably using windows libs, such as Wininet, winhttp or other native windows. (It would be nice if you give an example)

Можно ли сделать HTTP-запрос на публикацию сообщения на веб-сайте Discord без использования таких библиотек, как CURL?
желательно использовать библиотеки Windows, такие как Wininet, winhttp или другие собственные окна. (Было бы здорово, если бы вы привели пример)



discord-webhook-cpp/main.cpp at main · Fontesie/discord-webhook-cpp (https://github.com/Fontesie/discord-webhook-cpp/blob/main/main.cpp)

Send discord webhook embed in c++. Contribute to Fontesie/discord-webhook-cpp development by creating an account on GitHub.

github.com

Bramble
29.01.2024, 20:30
как сделать такое имгуи окно?

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

AdCKuY_DpO4uLa
29.01.2024, 21:26
как сделать такое имгуи окно?


Это не имгуи, а AntTweakBar

https://anttweakbar.sourceforge.io/doc/ (https://www.blast.hk/redirect/aHR0cHM6Ly9hbnR0d2Vha2Jhci5zb3VyY2Vmb3JnZS5pby9kb2 Mv)

Dark_Knight
30.01.2024, 03:12
Это не имгуи, а AntTweakBar
https://anttweakbar.sourceforge.io/doc/ (https://www.blast.hk/redirect/aHR0cHM6Ly9hbnR0d2Vha2Jhci5zb3VyY2Vmb3JnZS5pby9kb2 Mv)


И он малофункциональный. Не советую его использовать.

Bramble
31.01.2024, 19:50
подскажите, как за пару кликов подключить АТБ? все что мне нужно, это выведенная меню

Dark_Knight
01.02.2024, 01:26
подскажите, как за пару кликов подключить АТБ? все что мне нужно, это выведенная меню


Скачай пример и сделай по примеру. Бери имгуи. Он проще во всем

Bramble
01.02.2024, 10:20
Скачай пример и сделай по примеру. Бери имгуи. Он проще во всем


имгуи не так смотрится, как АТБ. где найти пример?

Dark_Knight
01.02.2024, 23:25
имгуи не так смотрится, как АТБ. где найти пример?


Сделай такой же визуальный стиль. Имуги гибок. Пример тебе уже дали. На офф сайте. Дальше думай сам. Там все просто и глупо одновременно.

manukhov
01.02.2024, 23:52
имгуи не так смотрится, как АТБ. где найти пример?


странный фетиш)

полно собейтов на этом ATB, тот же оверлайт:

1) https://gitlab.com/RcKoid/mod-s0beit-overlight/-/tree/master/src?ref_type=heads

2) https://github.com/grimesfive/overlight_fork

статейки:

1) https://www.blast.hk/threads/1062/

2) https://ugbase.eu/threads/tutorial-add-anttweakbar-into-your-sobeit.9988/ (https://www.blast.hk/redirect/aHR0cHM6Ly91Z2Jhc2UuZXUvdGhyZWFkcy90dXRvcmlhbC1hZG QtYW50dHdlYWtiYXItaW50by15b3VyLXNvYmVpdC45OTg4Lw)

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

Marat Krutoi
02.02.2024, 17:15
помогите хотел скачать мемори длл 64 не получается скачать его

1706879698941.pngMarat Krutoi · 2 Фев 2024 в 16:15' data-fancybox="lb-post-1450599" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/230871/" style="cursor: pointer;" title="1706879698941.png">
https://forum.antichat.xyz/attachments/28450599/

F0RQU1N and
02.02.2024, 20:53
помогите хотел скачать мемори длл 64 не получается скачать его


1706892824293.pngF0RQU1N and · 2 Фев 2024 в 19:53' data-fancybox="lb-post-1450736" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/230909/" style="cursor: pointer;" title="1706892824293.png">
https://forum.antichat.xyz/attachments/28450736/

Grisha2307
13.02.2024, 23:08
Помогите пожалуйста, при получении любого пакета игра закрывается.

код:






#include
#include "main.h"
#include
#include
#include
#include "fstream"
using
namespace
std
;
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
__stdcall
initScript
(
string
)
;
void
logSF
(
char
)
;
static
bool
isActive
=
false
;
static
bool
CALLBACK
incomingPacket
(
stRakNetHookParams
*
params
)
{
return
true
;
}
static
void
__stdcall
mainloop
(
)
{
static
bool
initialized
=
false
;
if
(
!
initialized
)
{
if
(
GAME
&&
GAME
->
GetSystemState
(
)
==
eSystemState
::
GS_PLAYING_GAME
&&
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
{
initialized
=
true
;
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_INCOMING_PACKET
,
incomingPacket
)
;
SF
->
getSAMP
(
)
->
registerChatCommand
(
"stallSkip"
,
initScript
)
;
}
}
}
void
__stdcall
initScript
(
string
)
{
string text
;
int
color
;
if
(
!
isActive
)
{
color
=
D3DCOLOR_ARGB
(
255
,
0
,
255
,
0
)
;
text
=
"[******] Активирован"
;
}
else
{
color
=
D3DCOLOR_ARGB
(
255
,
255
,
0
,
0
)
;
text
=
"[******] Деактивирован"
;
}
isActive
^=
true
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
color
,
"%s"
,
text
)
;
}
void
logSF
(
char
text
)
{
ofstream
outputFile
(
"SAMPFUNCS/logs.txt"
)
;
if
(
outputFile
.
is_open
(
)
)
{
outputFile

initPlugin
(
mainloop
,
hModule
)
;
return
TRUE
;
}

Dark_Knight
14.02.2024, 00:57
AddChatMessage не поддерживает форматирование со стрингами. юзай std::tring::data() или std::string::c_str();

0x73616D
16.02.2024, 07:10
Can someone provide a clear, direct and concise example code of an OnCloseDialog hook? (.ASI)

Может ли кто-нибудь предоставить ясный, прямой и краткий пример кода перехватчика OnCloseDialog? (.ASI)

Rvmsitow
16.02.2024, 12:17
Патч samp.dll | CreateVehicle

Здравствуйте, я хотел бы обойти ограничение на модели транспортных средств между 400 и 611 в SA:MP 0.3DL, есть идеи?

СПАСИБО !

вайега52
16.02.2024, 12:49
Can someone provide a clear, direct and concise example code of an OnCloseDialog hook? (.ASI)

Может ли кто-нибудь предоставить ясный, прямой и краткий пример кода перехватчика OnCloseDialog? (.ASI)


Попробуй что-то подобное (показал на примере kthook (https://www.blast.hk/threads/101004/))

C++:






#include
#include "kthook/kthook.hpp"
// edx - bypass MSVC
kthook
::
kthook_simple

(
CDialogCloseHook
)
;
void
__fastcall
CDialogCloseHooked
(
const
decltype
(
CDialogCloseHook
)
&
hook
,
void
*
pDialog
,
void
*
edx
,
char
button
)
{
// code
return
hook
.
get_trampoline
(
)
(
pDialog
,
edx
,
button
)
;
}
// install hoook (after initialization of SAMP)
CDialogCloseHook
.
set_cb
(
&
CDialogCloseHooked
)
;
auto
sampHandle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
;
// 0x6C040 - R1
CDialogCloseHook
.
set_dest
(
sampHandle
+
0x6C040
)
;
CDialogCloseHook
.
install
(
)
;

g305noobo
16.02.2024, 13:39
можно ли как-то проверить иниацилизацию сампа без хуков/потоков?

вайега52
16.02.2024, 13:43
можно ли как-то проверить иниацилизацию сампа без хуков/потоков?


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

kin4stat
16.02.2024, 18:03
Попробуй что-то подобное (показал на примере kthook (https://www.blast.hk/threads/101004/))

C++:






#include
#include "kthook/kthook.hpp"
// edx - bypass MSVC
kthook
::
kthook_simple

(
CDialogCloseHook
)
;
void
__fastcall
CDialogCloseHooked
(
const
decltype
(
CDialogCloseHook
)
&
hook
,
void
*
pDialog
,
void
*
edx
,
char
button
)
{
// code
return
hook
.
get_trampoline
(
)
(
pDialog
,
edx
,
button
)
;
}
// install hoook (after initialization of SAMP)
CDialogCloseHook
.
set_cb
(
&
CDialogCloseHooked
)
;
auto
sampHandle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
;
// 0x6C040 - R1
CDialogCloseHook
.
set_dest
(
sampHandle
+
0x6C040
)
;
CDialogCloseHook
.
install
(
)
;





edx bypass в ктхуке не нужен, хотя и с ним работать будет

0x73616D
16.02.2024, 22:03
Попробуй что-то подобное (показал на примере kthook (https://www.blast.hk/threads/101004/))

C++:






#include
#include "kthook/kthook.hpp"
// edx - bypass MSVC
kthook
::
kthook_simple

(
CDialogCloseHook
)
;
void
__fastcall
CDialogCloseHooked
(
const
decltype
(
CDialogCloseHook
)
&
hook
,
void
*
pDialog
,
void
*
edx
,
char
button
)
{
// code
return
hook
.
get_trampoline
(
)
(
pDialog
,
edx
,
button
)
;
}
// install hoook (after initialization of SAMP)
CDialogCloseHook
.
set_cb
(
&
CDialogCloseHooked
)
;
auto
sampHandle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
;
// 0x6C040 - R1
CDialogCloseHook
.
set_dest
(
sampHandle
+
0x6C040
)
;
CDialogCloseHook
.
install
(
)
;





great! would it be possible to get an example without KtHook?

g305noobo
16.02.2024, 22:19
great! would it be possible to get an example without KtHook?


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

вайега52
16.02.2024, 22:24
great! would it be possible to get an example without KtHook?


Можешь почитать данную статью: link (https://www.blast.hk/threads/91079/)

Rvmsitow
16.02.2024, 23:20
Можешь почитать данную статью: link (https://www.blast.hk/threads/91079/)


can u help me please with my question ?

Другое - С/С++ Вопрос - Ответ (https://www.blast.hk/threads/781/post-1456858)

Can someone provide a clear, direct and concise example code of an OnCloseDialog hook? (.ASI) Может ли кто-нибудь предоставить ясный, прямой и краткий пример кода перехватчика OnCloseDialog? (.ASI)

www.blast.hk


thanks you ! :)

вайега52
16.02.2024, 23:25
can u help me please with my question ?

Другое - С/С++ Вопрос - Ответ (https://www.blast.hk/threads/781/post-1456858)

Can someone provide a clear, direct and concise example code of an OnCloseDialog hook? (.ASI) Может ли кто-нибудь предоставить ясный, прямой и краткий пример кода перехватчика OnCloseDialog? (.ASI)

www.blast.hk


thanks you ! :)


возможно это оно: https://www.blast.hk/threads/90249/

Rvmsitow
17.02.2024, 00:13
возможно это оно: https://www.blast.hk/threads/90249/


Да, это именно то, что я ищу, но для версии 0.3DL SA:MP.

вайега52
17.02.2024, 00:51
Да, это именно то, что я ищу, но для версии 0.3DL SA:MP.


попробуй заменить адреса на

0xE5D7

и

0xE5E2

Rvmsitow
17.02.2024, 16:36
попробуй заменить адреса на

0xE5D7

и

0xE5E2



Оно работает !

Спасибо большое, правда!

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

chebocsar
21.02.2024, 15:45
почему русские символы каверкаются? локализация подключена в чем тогда проблема , никак не пойму(visual studio)

Код:





[CODE]
#include
#include
using namespace std;

void passportIndentification()
{

setlocale(LC_ALL, "rus");

int age;

string name;
cout > name;
string surname;
cout > surname;
cout > age;
string nation;
cout > nation;
string from;
cout > from;
string town;
cout > town;

cout

moreveal
21.02.2024, 15:57
[QUOTE="chebocsar"]

почему русские символы каверкаются? локализация подключена в чем тогда проблема , никак не пойму(visual studio)

Код:





[CODE]
#include
#include
using namespace std;

void passportIndentification()
{

setlocale(LC_ALL, "rus");

int age;

string name;
cout > name;
string surname;
cout > surname;
cout > age;
string nation;
cout > nation;
string from;
cout > from;
string town;
cout > town;

cout

vmprotect
21.02.2024, 16:46
[QUOTE="chebocsar"]

почему русские символы каверкаются? локализация подключена в чем тогда проблема , никак не пойму(visual studio)

Код:





[CODE]
#include
#include
using namespace std;

void passportIndentification()
{

setlocale(LC_ALL, "rus");

int age;

string name;
cout > name;
string surname;
cout > surname;
cout > age;
string nation;
cout > nation;
string from;
cout > from;
string town;
cout > town;

cout

cheboxarov.coding
22.02.2024, 10:31
[QUOTE="chebocsar"]

почему русские символы каверкаются? локализация подключена в чем тогда проблема , никак не пойму(visual studio)

Код:





[CODE]
#include
#include
using namespace std;

void passportIndentification()
{

setlocale(LC_ALL, "rus");

int age;

string name;
cout > name;
string surname;
cout > surname;
cout > age;
string nation;
cout > nation;
string from;
cout > from;
string town;
cout > town;

cout

Код:





[CODE]
#include
#include
#include
#include

using namespace std;

void passportIndentification()
{

_setmode(_fileno(stdin), _O_U16TEXT);
_setmode(_fileno(stdout), _O_U16TEXT);
setlocale(LC_ALL, "rus");

int age;

wstring name;
wcout > name;

wstring surname;
wcout > surname;

wcout > age;
wstring nation;
wcout > nation;
wstring from;
wcout > from;
wstring town;
wcout > town;

wcout

вайега52
22.02.2024, 13:42
Хочу подключить memwrapper в свой проект CMake, для этого использую что-то вроде такого:

Код:






FetchContent_Declare(
memwrapper
GIT_REPOSITORY https://github.com/The-Musaigen/memwrapper.git
GIT_TAG 7d51e3134d8f955651ef7dda8bab44b0efb0665f
)

FetchContent_MakeAvailable("memwrapper")

add_library("memwrapper" INTERFACE)

target_include_directories(${PROJECT_NAME} PUBLIC ${memwrapper_SOURCE_DIR})




Все работало стабильно до того, пока не убрал kthook из проекта: начало выдавать заранее предусмотренную ошибку only c++17 and newer. Исправил это, добавив настройку стандарта:

Makefile:






set_target_properties
(
$
{
PROJECT_NAME
}
PROPERTIES
CXX_STANDARD
"17"
CXX_STANDARD_REQUIRED ON
SUFFIX
".asi"
)




Но теперь появляется ошибки в самом memwrapper:




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

Vintik
22.02.2024, 18:08
дайте адрес хука gameloop gta sa

legendabrn
22.02.2024, 19:20
дайте адрес хука gameloop gta sa


0x748DA3

cheboxarov.coding
24.02.2024, 15:32
Хочу подключить memwrapper в свой проект CMake, для этого использую что-то вроде такого:

Код:






FetchContent_Declare(
memwrapper
GIT_REPOSITORY https://github.com/The-Musaigen/memwrapper.git
GIT_TAG 7d51e3134d8f955651ef7dda8bab44b0efb0665f
)

FetchContent_MakeAvailable("memwrapper")

add_library("memwrapper" INTERFACE)

target_include_directories(${PROJECT_NAME} PUBLIC ${memwrapper_SOURCE_DIR})




Все работало стабильно до того, пока не убрал kthook из проекта: начало выдавать заранее предусмотренную ошибку only c++17 and newer. Исправил это, добавив настройку стандарта:

Makefile:






set_target_properties
(
$
{
PROJECT_NAME
}
PROPERTIES
CXX_STANDARD
"17"
CXX_STANDARD_REQUIRED ON
SUFFIX
".asi"
)




Но теперь появляется ошибки в самом memwrapper:







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

вайега52
24.02.2024, 15:33
какой стандарт используешь?


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

cheboxarov.coding
24.02.2024, 15:37
в симейке пробовал устанавливать 17 и 20, но оба вызывают ошибки уже в самой либе


покажи как подключаешь .h

вайега52
24.02.2024, 15:45
покажи как подключаешь .h



main.hpp:






#include
// #include "kthook/kthook.hpp"
#include "memwrapper/memwrapper.h"

cheboxarov.coding
24.02.2024, 16:25
main.hpp:






#include
// #include "kthook/kthook.hpp"
#include "memwrapper/memwrapper.h"





#include

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

не знаю почему автор не включил его для умных указателей

er0or
25.02.2024, 17:48
EN:如何使 SAMP R5 未检测到此 ASI。

RU:如何使 ASI 与 SAMP-R5 兼容。

来源:https://www.blast.hk/threads/63079/

Kamal D0gg
26.02.2024, 03:50
https://media.discordapp.net/attachments/784434707257360395/1211457923197435954/image.png?ex=65ee451c&is=65dbd01c&hm=f6256340f563a5ef2ebd42a334178dabf5d50c92678b048 b9e4a637e5eeb0e9a&=&format=webp&quality=lossless

помогите пофиксить

Vintik
29.02.2024, 17:48
1709214449863.pngVintik · 29 Фев 2024 в 16:48' data-fancybox="lb-post-1462845" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/233315/" style="cursor: pointer;" title="1709214449863.png">
https://forum.antichat.xyz/attachments/28462845/

Ставлю ВиртуалПротект - что не так?

Нажимаю типа дальше - пишет "Необработанное исключение по адресу (тому же) в Project3.exe: 0xC0000005: нарушение прав доступа при исполнении по адресу "

eqzzz
29.02.2024, 19:15
Нужно убрать вот эти слова из памяти от DLL-Библиотеки, использую ManualMap. Слова берет из меню чита, также переменные.

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

kin4stat
29.02.2024, 20:28
Ставлю ВиртуалПротект - что не так?
Нажимаю типа дальше - пишет "Необработанное исключение по адресу (тому же) в Project3.exe: 0xC0000005: нарушение прав доступа при исполнении по адресу "


Для выполнения права должны быть ReadExecute

Sadow
02.03.2024, 23:49
Как отправить 2 запроса с одной сессии (с теми же куки и заголовками) при помощи curl?

iAmerican
05.03.2024, 09:40
Как отправить 2 запроса с одной сессии (с теми же куки и заголовками) при помощи curl?



C++:





[CODE]
size_t
WriteCallback
(
void
*
contents
,
size_t size
,
size_t nmemb
,
std
::
string
*
response
)
{
response
->
append
(
(
char
*
)
contents
,
size
*
nmemb
)
;
return
size
*
nmemb
;
}
int
main
(
)
{
CURL
*
curl
=
curl_easy_init
(
)
;
if
(
curl
)
{
std
::
string url
=
"http://google.com/api"
;
curl_easy_setopt
(
curl
,
CURLOPT_URL
,
url
.
c_str
(
)
)
;
curl_easy_setopt
(
curl
,
CURLOPT_COOKIEFILE
,
""
)
;
curl_easy_setopt
(
curl
,
CURLOPT_WRITEFUNCTION
,
WriteCallback
)
;
std
::
string response
;
curl_easy_setopt
(
curl
,
CURLOPT_WRITEDATA
,
&
response
)
;
CURLcode res
=
curl_easy_perform
(
curl
)
;
if
(
res
!=
CURLE_OK
)
{
std
::
cout







Нужно убрать вот эти слова из памяти от DLL-Библиотеки, использую ManualMap. Слова берет из меню чита, также переменные.



Если банально..

То тебе нужно все свои строковые переменные привести к XOR виду , уже положить XOR значения туда изначально. (Сам XOR используй с своим ключом)

При открытии меню их дешифровать , а при закрытии меню их обратно шифровать , при этом ячейка памяти должна быть одна и та же.

0x73616D
05.03.2024, 10:40
Can someone provide a function to send a command as an argument using RPC_OnSendCommand (ID 50)? (Rakhook v1.0 (https://www.blast.hk/threads/69666/))

Sadow
06.03.2024, 22:20
[QUOTE="iAmerican"]

C++:






size_t
WriteCallback
(
void
*
contents
,
size_t size
,
size_t nmemb
,
std
::
string
*
response
)
{
response
->
append
(
(
char
*
)
contents
,
size
*
nmemb
)
;
return
size
*
nmemb
;
}
int
main
(
)
{
CURL
*
curl
=
curl_easy_init
(
)
;
if
(
curl
)
{
std
::
string url
=
"http://google.com/api"
;
curl_easy_setopt
(
curl
,
CURLOPT_URL
,
url
.
c_str
(
)
)
;
curl_easy_setopt
(
curl
,
CURLOPT_COOKIEFILE
,
""
)
;
curl_easy_setopt
(
curl
,
CURLOPT_WRITEFUNCTION
,
WriteCallback
)
;
std
::
string response
;
curl_easy_setopt
(
curl
,
CURLOPT_WRITEDATA
,
&
response
)
;
CURLcode res
=
curl_easy_perform
(
curl
)
;
if
(
res
!=
CURLE_OK
)
{
std
::
cout

говнокод на c++:





[CODE]
#include
#include
#include
using
namespace
std
;
size_t
WriteCallback
(
void
*
contents
,
size_t size
,
size_t nmemb
,
std
::
string
*
response
)
;
int
main
(
)
{
CURL
*
curl
=
curl_easy_init
(
)
;
string resp
;
smatch m
;
string token
;
curl_httppost
*
formpost
=
NULL
;
curl_httppost
*
lastptr
=
NULL
;
curl_slist
*
headers
=
curl_slist_append
(
NULL
,
"Content-Type: multipart/form-data"
)
;
if
(
curl
)
{
curl_easy_setopt
(
curl
,
CURLOPT_URL
,
"https://www.blast.hk/members/451976/"
)
;
curl_easy_setopt
(
curl
,
CURLOPT_COOKIE
,
"xf_user=VALUE"
)
;
curl_easy_setopt
(
curl
,
CURLOPT_HTTPHEADER
,
headers
)
;
curl_easy_setopt
(
curl
,
CURLOPT_WRITEFUNCTION
,
WriteCallback
)
;
curl_easy_setopt
(
curl
,
CURLOPT_WRITEDATA
,
&
resp
)
;
CURLcode res
=
curl_easy_perform
(
curl
)
;
if
(
res
!=
CURLE_OK
)
{
cout

0
)
token
=
m
.
str
(
1
)
;
resp
.
clear
(
)
;
curl_easy_setopt
(
curl
,
CURLOPT_URL
,
"https://www.blast.hk/members/451976/post"
)
;
curl_formadd
(
&
formpost
,
&
lastptr
,
CURLFORM_COPYNAME
,
"xfToken"
,
CURLFORM_COPYCONTENTS
,
token
,
CURLFORM_END
)
;
curl_formadd
(
&
formpost
,
&
lastptr
,
CURLFORM_COPYNAME
,
"_xfToken"
,
CURLFORM_COPYCONTENTS
,
token
,
CURLFORM_END
)
;
curl_formadd
(
&
formpost
,
&
lastptr
,
CURLFORM_COPYNAME
,
"_xfResponseType"
,
CURLFORM_COPYCONTENTS
,
"json"
,
CURLFORM_END
)
;
curl_formadd
(
&
formpost
,
&
lastptr
,
CURLFORM_COPYNAME
,
"message_html"
,
CURLFORM_COPYCONTENTS
,
"asd"
,
CURLFORM_END
)
;
curl_easy_setopt
(
curl
,
CURLOPT_HTTPPOST
,
formpost
)
;
curl_easy_setopt
(
curl
,
CURLOPT_WRITEFUNCTION
,
WriteCallback
)
;
curl_easy_setopt
(
curl
,
CURLOPT_WRITEDATA
,
&
resp
)
;
res
=
curl_easy_perform
(
curl
)
;
if
(
res
!=
CURLE_OK
)
{
cout

append
(
(
char
*
)
contents
,
size
*
nmemb
)
;
return
size
*
nmemb
;
}

0x9
09.03.2024, 15:23
как с помощью plugin sdk можно найти определенную текстуру на машине и изменить ей цвет?

вайега52
09.03.2024, 17:52
При помощи sampapi получаю указатель на зааттаченный объект, как в дальнейшем я могу обращаться к его полям?

C++:






#include "sampapi/CObject.h"
CObject
*
pObject
=
sampapi
::
v037r3
::
RefNetGame
(
)
->
GetPlayerPool
(
)
->
m_localInfo
.
m_pObject
->
m_pPed
->
m_accessories
.
m_pObject
[
1
]
;
auto
pEntity
=
pObject
->
m_pGameEntity
// error




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

Musaigen
09.03.2024, 18:43
При помощи sampapi получаю указатель на зааттаченный объект, как в дальнейшем я могу обращаться к его полям?

C++:






#include "sampapi/CObject.h"
CObject
*
pObject
=
sampapi
::
v037r3
::
RefNetGame
(
)
->
GetPlayerPool
(
)
->
m_localInfo
.
m_pObject
->
m_pPed
->
m_accessories
.
m_pObject
[
1
]
;
auto
pEntity
=
pObject
->
m_pGameEntity
// error





plugin-sdk

вайега52
09.03.2024, 18:47
plugin-sdk


Если коротко, мне надо сделать хук на рендер объектов и если они приаттачены ко мне - пропускать отрисовку, в псдк немного покопался, не нашел того, что надо. Решил сделать путем получения всех аксессуаров и сравнения их с тем, что рендерится

C++:






void
__cdecl CPlugin
::
CRendererRenderOneNonRoadHooked
(
const
decltype
(
CRendererRenderOneNonRoadHook
)
&
hook
,
uintptr_t
*
pEntity
)
{
char
entityType
=
*
reinterpret_cast

(
*
pEntity
+
0x36
)
&
7
;
if
(
entityType
==
eEntityType
::
ENTITY_TYPE_OBJECT
&&
GetKeyState
(
VK_RBUTTON
)
&
0x8000
)
{
for
(
int
i
=
0
;
i

GetPlayerPool
(
)
->
m_localInfo
.
m_pObject
->
m_pPed
->
m_accessories
.
m_pObject
[
i
]
;
uintptr_t
*
pAccessoriesEntity
=
reinterpret_cast

(
pObject
->
m_pGameEntity
)
;
// HUY PIZDA ZALUPA ERROR
if
(
pEntity
==
pAccessoriesEntity
)
return
;
}
}
hook
.
get_trampoline
(
)
(
pEntity
)
;
}

Musaigen
09.03.2024, 22:13
Если коротко, мне надо сделать хук на рендер объектов и если они приаттачены ко мне - пропускать отрисовку, в псдк немного покопался, не нашел того, что надо. Решил сделать путем получения всех аксессуаров и сравнения их с тем, что рендерится

C++:






void
__cdecl CPlugin
::
CRendererRenderOneNonRoadHooked
(
const
decltype
(
CRendererRenderOneNonRoadHook
)
&
hook
,
uintptr_t
*
pEntity
)
{
char
entityType
=
*
reinterpret_cast

(
*
pEntity
+
0x36
)
&
7
;
if
(
entityType
==
eEntityType
::
ENTITY_TYPE_OBJECT
&&
GetKeyState
(
VK_RBUTTON
)
&
0x8000
)
{
for
(
int
i
=
0
;
i

GetPlayerPool
(
)
->
m_localInfo
.
m_pObject
->
m_pPed
->
m_accessories
.
m_pObject
[
i
]
;
uintptr_t
*
pAccessoriesEntity
=
reinterpret_cast

(
pObject
->
m_pGameEntity
)
;
// HUY PIZDA ZALUPA ERROR
if
(
pEntity
==
pAccessoriesEntity
)
return
;
}
}
hook
.
get_trampoline
(
)
(
pEntity
)
;
}





тебе просто нужен plugin-SDK чтобы определялся игровой CObject, в sampapi нет игровых структур, вместо них заглушки

вайега52
10.03.2024, 00:15
тебе просто нужен plugin-SDK чтобы определялся игровой CObject, в sampapi нет игровых структур, вместо них заглушки


Если я правильно понял, CObject наследуется от Entity. Как его можно сравнить с нужной мне сущностью, которая передается в мой хук?

возможно я туплю, но вроде как туда передается самповский CObject

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

вайега52
10.03.2024, 20:54
Попробовал провернуть такой код, но странно, что объекты все равно продолжают рендериться:

C++:






void
__cdecl CPlugin
::
CRendererRenderOneNonRoadHooked
(
const
decltype
(
CRendererRenderOneNonRoadHook
)
&
hook
,
uintptr_t
*
pEntity
)
{
char
entityType
=
*
reinterpret_cast

(
*
pEntity
+
0x36
)
&
7
;
if
(
entityType
==
eEntityType
::
ENTITY_TYPE_OBJECT
&&
GetKeyState
(
VK_RBUTTON
)
&
0x8000
)
{
for
(
int
i
=
0
;
i

GetPlayerPool
(
)
;
if
(
pPlayerPool
!=
nullptr
&&
pPlayerPool
->
m_localInfo
.
m_pObject
!=
nullptr
&&
pPlayerPool
->
m_localInfo
.
m_pObject
->
m_pPed
!=
nullptr
)
{
CObject
*
pObject
=
pPlayerPool
->
m_localInfo
.
m_pObject
->
m_pPed
->
m_accessories
.
m_pObject
[
i
]
;
if
(
pObject
!=
nullptr
)
{
// 0x40 - m_pGameEntity
uintptr_t
*
pAccessoriesEntity
=
reinterpret_cast

(
*
reinterpret_cast

(
pObject
)
+
0x40
)
;
if
(
pEntity
!=
nullptr
&&
pEntity
==
pAccessoriesEntity
)
return
;
}
}
}
}
}
hook
.
get_trampoline
(
)
(
pEntity
)
;
}

horacy
12.03.2024, 01:59
Нужно убрать вот эти слова из памяти от DLL-Библиотеки, использую ManualMap. Слова берет из меню чита, также переменные.


вам это нужно на базовом SA-MP? Если да, то сервер обычно проверяет его через rpc_clientcheck, чтобы проверить, совпадает ли данный адрес с тем, что в игре без читов, просто скопируйте ответы RPC из чистой игры и перехватите rpc_clientcheckresponse, а затем замените данные на оригинальные и отправьте их. назад.

vmprotect
12.03.2024, 10:00
ищу оффсет текста "SA-MP 0.3.7-R3 Started..."

Z3roKwq
12.03.2024, 14:55
ищу оффсет текста "SA-MP 0.3.7-R3 Started..."



Код:






GetModuleHandleA("samp.dll") + 0xE596C

vmprotect
12.03.2024, 20:53
Код:






GetModuleHandleA("samp.dll") + 0xE596C





а текста "Connecting to" есть оффсет? если есть скинь плиз

вайега52
13.03.2024, 00:28
а текста "Connecting to" есть оффсет? если есть скинь плиз


если сама строка, то samp.dll + 0xE599C, если то, где передается ссылка на нее, то здесь: samp.dll + 0x85FE. Советую, скачать IDA и самому посмотреть оффсеты строк, это довольно легко

vmprotect
13.03.2024, 21:33
как в нынешней версии kthook'a используется kthook_simple ?

пример







C++:






samp_init_hook
.
after
.
connect
(
HOOK_after_samp_init
)




в нынешней версии after, before, connect нету, каким образом можно использовать эту функцию?

вайега52
13.03.2024, 21:36
как в нынешней версии kthook'a используется kthook_simple ?

пример







C++:






samp_init_hook
.
after
.
connect
(
HOOK_after_samp_init
)




в нынешней версии after, before, connect нету, каким образом можно использовать эту функцию?



MoonDownLoadHook/src/main.hpp at main · whyega/MoonDownLoadHook (https://github.com/whyega/MoonDownLoadHook/blob/main/src/main.hpp#L14)

Contribute to whyega/MoonDownLoadHook development by creating an account on GitHub.

github.com

vmprotect
16.03.2024, 16:57
как через samp api получать никнейм игрока?

вайега52
16.03.2024, 17:10
как через samp api получать никнейм игрока?




sampapi::v037r3::CPlayerPool().m_localInfo.m_szNam e

vmprotect
16.03.2024, 18:29
sampapi::v037r3::CPlayerPool().m_localInfo.m_szNam e




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

sampapi.lib выдает подобную хрень

Adofe
16.03.2024, 18:55
sampapi.lib выдает подобную хрень


Тебе пишет что нужно сделать.

Свойства проекта --> C\C++ --> Создание кода --> Библиотека времени выполнения --> Многопоточная отладка DLL (/MDd)1710600901399.pngAdofe · 16 Мар 2024 в 17:55' data-fancybox="lb-post-1469929" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/234740/" style="cursor: pointer;" title="1710600901399.png">
https://forum.antichat.xyz/attachments/28469929/

vmprotect
16.03.2024, 19:47
Тебе пишет что нужно сделать.
Свойства проекта --> C\C++ --> Создание кода --> Библиотека времени выполнения --> Многопоточная отладка DLL (/MDd)


так прикол в том, что оно по прежнему остается

если бы оно мне не выдавало тоже самое - я бы не писал




sampapi::v037r3::CPlayerPool().m_localInfo.m_szNam e



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

Vintik
17.03.2024, 18:29
@kin4stat (https://www.blast.hk/members/161331/), не работает имгуи(

по идее ж окно не должно показываться, а у меня показывается...




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




upd. также проблема с ImGui_ImplWin32_WndProcHandler - оно не работает вообще. будто не видит событий WM

C++:






LRESULT
WndProc_Hook
(
const
HWND hWnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
ImGui_ImplWin32_WndProcHandler
(
hWnd
,
uMsg
,
wParam
,
lParam
)
;
if
(
uMsg
==
WM_KEYDOWN
||
uMsg
==
WM_SYSKEYDOWN
)
if
(
wParam
==
0x42
)
// клавиша "B"
{
listOfLawsWindow
=
!
listOfLawsWindow
;
MessageBoxA
(
GetForegroundWindow
(
)
,
listOfLawsWindow
?
"listOfLawsWindow = true"
:
"listOfLawsWindow = false"
,
"listOfLawsWindow"
,
NULL
)
;
}
return
reinterpret_cast

(
oWndProc_Hook_2
)
(
hWnd
,
uMsg
,
wParam
,
lParam
)
;
}




хотя функция успешно работает... при нажатии на B работает всё

ARMOR
22.03.2024, 07:29
@kin4stat (https://www.blast.hk/members/161331/), не работает имгуи(
по идее ж окно не должно показываться, а у меня показывается...







Почему оно должно не показываться? Параметр bool* p_open в ImGui::Begin никак не влияет на рисование окна, он используется просто для того чтобы рендерить кнопку закрытия окна

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

Потом передается в RenderWindowTitleBarContents

1711077781240.pngARMOR · 22 Мар 2024 в 06:29' data-fancybox="lb-post-1472497" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/235187/" style="cursor: pointer;" title="1711077781240.png">
https://forum.antichat.xyz/attachments/28472497/

А в ней уже при нажатии на кнопку просто изменяет её значение на false

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

Поэтому нужно делать так:

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



upd. также проблема с ImGui_ImplWin32_WndProcHandler - оно не работает вообще. будто не видит событий WM

C++:






LRESULT
WndProc_Hook
(
const
HWND hWnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
ImGui_ImplWin32_WndProcHandler
(
hWnd
,
uMsg
,
wParam
,
lParam
)
;
if
(
uMsg
==
WM_KEYDOWN
||
uMsg
==
WM_SYSKEYDOWN
)
if
(
wParam
==
0x42
)
// клавиша "B"
{
listOfLawsWindow
=
!
listOfLawsWindow
;
MessageBoxA
(
GetForegroundWindow
(
)
,
listOfLawsWindow
?
"listOfLawsWindow = true"
:
"listOfLawsWindow = false"
,
"listOfLawsWindow"
,
NULL
)
;
}
return
reinterpret_cast

(
oWndProc_Hook_2
)
(
hWnd
,
uMsg
,
wParam
,
lParam
)
;
}




хотя функция успешно работает... при нажатии на B работает всё


А это странно, у меня всё работает отлично, окно нормально обрабатывает клики по нему и т.д

1711078135739.pngARMOR · 22 Мар 2024 в 06:29' data-fancybox="lb-post-1472497" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/235190/" style="cursor: pointer;" title="1711078135739.png">
https://forum.antichat.xyz/attachments/28472497/

ARMOR
22.03.2024, 07:34
sampapi.lib выдает подобную хрень


Потому что библиотека собрана под другую Библиотеку исполнения. Тут уже или менять в своем проекте параметр Runtime Library, или в CMakeLists.txt в sampapi устанавливать её и пересобрать библиотеку.

Vintik
22.03.2024, 19:14
Почему оно должно не показываться? Параметр bool* p_open в ImGui::Begin никак не влияет на рисование окна, он используется просто для того чтобы рендерить кнопку закрытия окна

Потом передается в RenderWindowTitleBarContents

А в ней уже при нажатии на кнопку просто изменяет её значение на false

Поэтому нужно делать так:

А это странно, у меня всё работает отлично, окно нормально обрабатывает клики по нему и т.д


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

AdCKuY_DpO4uLa
22.03.2024, 19:18
Подскажи, пожалуйста, а как ты вообще включаешь курсор мыши?



SAMP_SDK/SAMP_API_REMASTERED/SAMP/SAMP.hpp at 20f6db662727eccddadfc5305e422741fecc1f1f · DpO4uLa/SAMP_SDK (https://github.com/DpO4uLa/SAMP_SDK/blob/20f6db662727eccddadfc5305e422741fecc1f1f/SAMP_API_REMASTERED/SAMP/SAMP.hpp#L1250)

Ремастер SDK для быстрого взаимодействия с SA-MP & GTA SA - DpO4uLa/SAMP_SDK

github.com


SAMP_SDK/SAMP_API_REMASTERED/SAMP/SAMP.hpp at 20f6db662727eccddadfc5305e422741fecc1f1f · DpO4uLa/SAMP_SDK (https://github.com/DpO4uLa/SAMP_SDK/blob/20f6db662727eccddadfc5305e422741fecc1f1f/SAMP_API_REMASTERED/SAMP/SAMP.hpp#L1267)

Ремастер SDK для быстрого взаимодействия с SA-MP & GTA SA - DpO4uLa/SAMP_SDK

github.com

vmprotect
25.03.2024, 20:03
как в sampapi создается команда? дайте самый простой пример плз

chromiusj
25.03.2024, 20:07
как в sampapi создается команда? дайте самый простой пример плз



Другое - С/С++ Вопрос - Ответ (https://www.blast.hk/threads/781/post-872605)

enum test { one = 1, two = 2 }; Подскажите пожалуйста, как вывести "one" или "two" std::cout

www.blast.hk

Vintik
25.03.2024, 20:08
как в sampapi создается команда? дайте самый простой пример плз



C++:






if
(
SampVersion
==
1
)
sampapi
::
v037r1
::
RefInputBox
(
)
->
AddCommand
(
"test"
,
ActivateCommand
)
;

вайега52
25.03.2024, 20:13
Другое - С/С++ Вопрос - Ответ (https://www.blast.hk/threads/781/post-872605)

enum test { one = 1, two = 2 }; Подскажите пожалуйста, как вывести "one" или "two" std::cout

www.blast.hk






C++:






if
(
SampVersion
==
1
)
sampapi
::
v037r1
::
RefInputBox
(
)
->
AddCommand
(
"test"
,
ActivateCommand
)
;





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

вайега52
25.03.2024, 22:25
если выводит пустую строку, значит проблема с либой ?


Нет, просто я дурак и дал не верный ответ. Вот этот код (https://www.blast.hk/threads/206800/)должен работать

vmprotect
26.03.2024, 09:45
Нет, просто я дурак и дал не верный ответ. Вот этот код (https://www.blast.hk/threads/206800/)должен работать


бывает, спасиб)

vmprotect
27.03.2024, 17:09
как заменять лоадинг скрин через хук

вайега52
27.03.2024, 18:08
как заменять лоадинг скрин через хук


иди в сторону функции CLoadingScreen::LoadSplashes, которая загружает txd в память -

0x5900B0


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

vmprotect
27.03.2024, 18:28
иди в сторону функции CLoadingScreen::LoadSplashes, которая загружает txd в память -

0x5900B0



а где можно чекать эти функции?

вайега52
27.03.2024, 18:42
а где можно чекать эти функции?


база для IDA, собранная другими людьми. одну из таких можно скачать из дискорд (https://www.blast.hk/threads/154835/)канала plugin sdk. либо вот (https://www.blast.hk/redirect/aHR0cHM6Ly9tZWdhLm56L2ZpbGUvazF0VmhZaVIjY29zLXVDYU hzbGJkcFZGWnpERFZnT1ZtenlydC1YZVBLeldkMF9BYzRLbw) аза, которой пользуюсь я (скорее всего она является первой же)

вайега52
28.03.2024, 11:40
У меня есть проект с такой структурой:

src/

├── hooks.hpp

├── hooks.cpp

├── patch.hpp

├── patch.cpp

├── network.hpp

├── network.cpp

├── main.hpp

└── main.cpp

Как я могу грамотно организовать получение основного класса Plugin в остальных классах, которые находятся в одноименных файлах?

C++:






#ifndef MAIN_HPP
#define MAIN_HPP
#include
#include "sampapi/sampapi.h"
#include "hooks.hpp"
#include "patch.hpp"
#include "network.hpp"
class
Plugin
{
public
:
Plugin
(
)
;
~
Plugin
(
)
;
void
Initialize
(
)
;
// Инициализация указателей происходит в методах клсса Plugin
Patch
*
patch
;
Hooks
*
hooks
;
Network
*
network
;
//
std
::
uintptr_t SAMPHandle
;
std
::
vector

accessories
;
bool
isKeyDown
=
false
;
}
plugin
;
#endif




Покажу на примере класса Network (network.hpp):

C++:






#ifndef NETWORK_HPP
#define NETWORK_HPP
#include "rakhook/rakhook.hpp"
#include "sampapi/CPlayerPool.h"
class
Network
{
private
:
static
const
char
*
clientVersion
;
// Необходимо как-либо получить доступ к объявлению класса Plugin
Plugin
*
plugin
;
public
:
Network
(
Plugin
*
plugin
)
;
~
Network
(
)
;
bool
OnSendRPC
(
std
::
int32_t
&
id
,
RakNet
::
BitStream
*
bs
,
PacketPriority
&
priority
,
PacketReliability
&
reliability
,
char
&
orderingChannel
,
bool
&
sh_timestamp
)
;
bool
OnReceiveRPC
(
std
::
uint8_t
&
id
,
RakNet
::
BitStream
*
bs
)
;
}
;
#endif

F0RQU1N and
28.03.2024, 13:22
У меня есть проект с такой структурой:
src/
├── hooks.hpp
├── hooks.cpp
├── patch.hpp
├── patch.cpp
├── network.hpp
├── network.cpp
├── main.hpp
└── main.cpp

Как я могу грамотно организовать получение основного класса Plugin в остальных классах, которые находятся в одноименных файлах?

C++:






#ifndef MAIN_HPP
#define MAIN_HPP
#include
#include "sampapi/sampapi.h"
#include "hooks.hpp"
#include "patch.hpp"
#include "network.hpp"
class
Plugin
{
public
:
Plugin
(
)
;
~
Plugin
(
)
;
void
Initialize
(
)
;
// Инициализация указателей происходит в методах клсса Plugin
Patch
*
patch
;
Hooks
*
hooks
;
Network
*
network
;
//
std
::
uintptr_t SAMPHandle
;
std
::
vector

accessories
;
bool
isKeyDown
=
false
;
}
plugin
;
#endif




Покажу на примере класса Network (network.hpp):

C++:






#ifndef NETWORK_HPP
#define NETWORK_HPP
#include "rakhook/rakhook.hpp"
#include "sampapi/CPlayerPool.h"
class
Network
{
private
:
static
const
char
*
clientVersion
;
// Необходимо как-либо получить доступ к объявлению класса Plugin
Plugin
*
plugin
;
public
:
Network
(
Plugin
*
plugin
)
;
~
Network
(
)
;
bool
OnSendRPC
(
std
::
int32_t
&
id
,
RakNet
::
BitStream
*
bs
,
PacketPriority
&
priority
,
PacketReliability
&
reliability
,
char
&
orderingChannel
,
bool
&
sh_timestamp
)
;
bool
OnReceiveRPC
(
std
::
uint8_t
&
id
,
RakNet
::
BitStream
*
bs
)
;
}
;
#endif





всм просто инклудни main.hpp в network

вайега52
28.03.2024, 13:32
всм просто инклудни main.hpp в network


в таком случае получаю подобную шнягу

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

vmprotect
28.03.2024, 16:44
как сделать функцию, которая будет загружаться только после загрузочного экрана

вайега52
28.03.2024, 16:49
как сделать функцию, которая будет загружаться только после загрузочного экрана


Если есть возможность, то можешь хукать самповский конструктор NetGame

F0RQU1N and
29.03.2024, 10:30
в таком случае получаю подобную шнягу


#pragma once мб поможет

или просто добавь перед классом нетворк

class Plugin;

или

struct Plugin;

(хз что это там у тебя но наверное это и не имеет особо значения)

вайега52
29.03.2024, 12:27
#pragma once мб поможет
или просто добавь перед классом нетворк
class Plugin;
или
struct Plugin;
(хз что это там у тебя но наверное это и не имеет особо значения)


теперь линкер решил немного дать пиздов

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

F0RQU1N and
29.03.2024, 16:03
теперь линкер решил немного дать пиздов


странно, сначало он говорил что не видит определение,теперь видит 2 определение, попробуй в настройках линкера поставить

https://forum.antichat.xyz/attachments/28476051/
/FORCE:MULTIPLE

vmprotect
30.03.2024, 15:53
как хукать MODELS\FONTS.TXD для подгрузки своих шрифтов

ARMOR
30.03.2024, 15:57
как хукать MODELS\FONTS.TXD для подгрузки своих шрифтов


CFont::Initialise 0x5BA690 Тут подгружается fonts.txd через CTxdStore, можешь просто переписать функцию и инджектнуть её, либо просто хукнуть CSprite2d::SetTexture внутри неё. для font2 - 0x5BA6CC, для font1 - 0x5BA6E0.

Ещё можешь просто после подгрузки игровых шрифтов подгрузить свои вместо них в массив CSprite2d CFont::Sprite[2] - 0xC71AD0

vmprotect
31.03.2024, 11:00
каким образом происходит подгрузка своих шрифтов для чата типа ttf

ARMOR
31.03.2024, 21:16
каким образом происходит подгрузка своих шрифтов для чата типа ttf


Для чата подгрузка происходит через CFonts::Reset(), для диалогов и т.д используется CDXUTDialog::InitFont(). Сами методы просто используют D3DXCreateFontA

yorenov
01.04.2024, 22:27
C++:






void loooooooool::rakhookSetup() {
rakhook::on_receive_rpc += [&] (unsigned char &id, RakNet::BitStream *bitStream) {
if (!enabled)
return true;
if (id != 215)
return true;

bitStream->ResetReadPointer();

char test[5]{0};
bitStream->Read(test, 5);

uint16_t test2;
bitStream->Read(test2);


sendResponse(test, test2, 0, 0);
// тут надо подождать 20 секунд
sendResponse(test, test2, 0, 0);

return true;
};
}




У нас есть лямбда, функция loooooooool::rakhookSetup() вызывается 1 раз после инициализации. Вопрос вот в чем, как мне вызвать функцию sendResponse два раза с интервалом в 20 секунд? Переменные test и test2 не хочу выносить за пределы лямбды, выносить битстрим - бяка, создавать поток не хочу, использовать ktcoro - научите). Суть просто в том, что мне надо вызвать функцию sendResponse несколько раз, передав в аргументы те самые test и test2, так же, вызывать с интервалом. Подскажите нормальные способы



C++:






void loooooooool::rakhookSetup() {
rakhook::on_receive_rpc += [&] (unsigned char &id, RakNet::BitStream *bitStream) {
if (!enabled)
return true;
if (id != 215)
return true;

bitStream->ResetReadPointer();

char test[5]{0};
bitStream->Read(test, 5);

uint16_t test2;
bitStream->Read(test2);


sendResponse(test, test2, 0, 0);
// тут надо подождать 20 секунд
sendResponse(test, test2, 0, 0);

return true;
};
}




У нас есть лямбда, функция loooooooool::rakhookSetup() вызывается 1 раз после инициализации. Вопрос вот в чем, как мне вызвать функцию sendResponse два раза с интервалом в 20 секунд? Переменные test и test2 не хочу выносить за пределы лямбды, выносить битстрим - бяка, создавать поток не хочу, использовать ktcoro - научите). Суть просто в том, что мне надо вызвать функцию sendResponse несколько раз, передав в аргументы те самые test и test2, так же, вызывать с интервалом. Подскажите нормальные способы


upd: Нашел решение

С++:






tasklist
.
add_task
(
[
]
(
int
_test
,
int
_test2
)
->
ktwait
{
looooooool
::
sendResponse
(
_test
,
_test2
,
"1"
,
false
)
;
co_await
16000
;
looooooool
::
sendResponse
(
_test
,
_test2
,
"2"
,
true
)
;
}
,
test
,
test2
)
;

vmprotect
02.04.2024, 20:34
как можно реализовать привязку сервера, например если подключаешься на IP 127.0.0.1:7777, то будет выводиться определенная функция, а если на другой IP то ничего не будет

ARMOR
02.04.2024, 20:57
как можно реализовать привязку сервера, например если подключаешься на IP 127.0.0.1:7777, то будет выводиться определенная функция, а если на другой IP то ничего не будет


Получать адрес и порт из CNetGame и проверять их