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

kin4stat
30.04.2021, 23:29
Помогите сконвертировать самповскую строку 1251 в utf-8 для последующего использования в imgui

C++:






ImGui
::
BulletText
(
"Text: %s"
,
SAMP
::
convert1251toUTF8
(
pTextLabel
.
m_pText
)
.
c_str
(
)
)
;




C++:






std
::
string
convert1251toUTF8
(
const
char
*
szString
)
{
if
(
szString
==
nullptr
)
{
return
std
::
string
(
)
;
}
std
::
string szMultiByteString
=
szString
;
std
::
wstring szWideCharString
;
MultiByteToWideChar
(
1251
,
0
,
szMultiByteString
.
data
(
)
,
szMultiByteString
.
size
(
)
,
szWideCharString
.
data
(
)
,
szMultiByteString
.
size
(
)
)
;
WideCharToMultiByte
(
65001
,
0
,
szWideCharString
.
data
(
)
,
szWideCharString
.
size
(
)
,
szMultiByteString
.
data
(
)
,
szWideCharString
.
size
(
)
,
nullptr
,
nullptr
)
;
return
szMultiByteString
;
}






C++:






std
::
string szMultiByteString
{
szString
}
;
std
::
wstring szWideCharString
;
szWideCharString
.
reserve
(
szMultiByteString
.
size
(
)
*
2
)
;
MultiByteToWideChar
(
1251
,
0
,
szMultiByteString
.
data
(
)
,
-
1
,
szWideCharString
.
data
(
)
,
szMultiByteString
.
size
(
)
)
;
szMultiByteString
.
reserve
(
szMultiByteString
.
size
(
)
*
4
)
;
WideCharToMultiByte
(
65001
,
0
,
szWideCharString
.
data
(
)
,
-
1
,
szMultiByteString
.
data
(
)
,
szWideCharString
.
size
(
)
,
nullptr
,
nullptr
)
;

Dark_Knight
01.05.2021, 01:08
Помогите сконвертировать самповскую строку 1251 в utf-8 для последующего использования в imgui

C++:






ImGui
::
BulletText
(
"Text: %s"
,
SAMP
::
convert1251toUTF8
(
pTextLabel
.
m_pText
)
.
c_str
(
)
)
;




C++:






std
::
string
convert1251toUTF8
(
const
char
*
szString
)
{
if
(
szString
==
nullptr
)
{
return
std
::
string
(
)
;
}
std
::
string szMultiByteString
=
szString
;
std
::
wstring szWideCharString
;
MultiByteToWideChar
(
1251
,
0
,
szMultiByteString
.
data
(
)
,
szMultiByteString
.
size
(
)
,
szWideCharString
.
data
(
)
,
szMultiByteString
.
size
(
)
)
;
WideCharToMultiByte
(
65001
,
0
,
szWideCharString
.
data
(
)
,
szWideCharString
.
size
(
)
,
szMultiByteString
.
data
(
)
,
szWideCharString
.
size
(
)
,
nullptr
,
nullptr
)
;
return
szMultiByteString
;
}





30 секунд поиска в гугле.

https://ru.stackoverflow.com/questions/783946/ (https://www.blast.hk/redirect/aHR0cHM6Ly9ydS5zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbn MvNzgzOTQ2Lw)

Cake_
01.05.2021, 01:14
@pMozze (https://www.blast.hk/members/123482/)

https://github.com/ocornut/imgui/bl...f2cff29d15/backends/imgui_impl_win32.cpp#L380 (https://github.com/ocornut/imgui/blob/2c3f25d2d92f08170dbcd7bbd92876f2cff29d15/backends/imgui_impl_win32.cpp#L380) замени на

C++:






case
WM_CHAR
:
wchar_t
wch
;
MultiByteToWideChar
(
CP_ACP
,
MB_PRECOMPOSED
,
(
char
*
)
&
wParam
,
1
,
&
wch
,
1
)
;
io
.
AddInputCharacter
(
wch
)
;
break
;

Dark_Knight
01.05.2021, 01:18
@pMozze (https://www.blast.hk/members/123482/)
https://github.com/ocornut/imgui/bl...f2cff29d15/backends/imgui_impl_win32.cpp#L380 (https://github.com/ocornut/imgui/blob/2c3f25d2d92f08170dbcd7bbd92876f2cff29d15/backends/imgui_impl_win32.cpp#L380) замени на

C++:






case
WM_CHAR
:
wchar_t
wch
;
MultiByteToWideChar
(
CP_ACP
,
MB_PRECOMPOSED
,
(
char
*
)
&
wParam
,
1
,
&
wch
,
1
)
;
io
.
AddInputCharacter
(
wch
)
;
break
;





Это тоже сделай.



Я пастил этот код. Он тоже не работает


Работает. Ты же не сказал, что не работает в инпате. В буллете все работает прекрасно. Не раз уже тестилось.

kin4stat
01.05.2021, 01:23
Я пастил этот код. Он тоже не работает


Лично проверял - работает.

kin4stat
01.05.2021, 01:44
Работает, да?


Может ты еще шрифт для русского языка подгрузишь?)

K_E_N_T
01.05.2021, 06:04
Как правильно установить Visual Studio для написания SF скриптов и какую версию лучше использовать.

Я чайник и сижу над этим уже 4-й день с плешью на голове постоянно какие-то ошибки и не имею понятия на БХ гайдов по этому вообще нету.

frit
01.05.2021, 12:44
Как правильно установить Visual Studio для написания SF скриптов и какую версию лучше использовать.
Я чайник и сижу над этим уже 4-й день с плешью на голове постоянно какие-то ошибки и не имею понятия на БХ гайдов по этому вообще нету.


Видимо ты даже часа не просидел, ибо ответ можно было давно найти в гугле. Тебе не нужна разработка игр, тебе нужна "Разработка классических приложений на C++" и поставить две верхние галочки в сводке: "Пакет Windows SDK" и ещё какая-то галочка(не помню уже). Нажать кнопку "Установить".

#Kai-
02.05.2021, 10:18
https://forum.antichat.xyz/attachments/27731055/

Начал изучать дремучий лес под названием C++ and plugin sdk от DK22Pac

В чем собственно проблема, понять не могу. Вылезает при компиляции по "гайду (https://github.com/DK22Pac/plugin-sdk/wiki/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D 0%B0-plugin-sdk)".

Когда компилю тестовый свой проект:

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

Не нужно писать про SF API, принципиально не хочу зависимость от SF

#Kai-
02.05.2021, 12:05
В инсталляторе укажи папку Plugin SDK если не пропустил последний шаг


2021-05-02_15-02-55.png#Kai- · 2 Май 2021 в 11:05' data-fancybox="lb-post-731140" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/95430/" style="cursor: pointer;" title="2021-05-02_15-02-55.png">
https://forum.antichat.xyz/attachments/27731140/

указанный? Generate нажат)

Все как на github'e

Dark_Knight
02.05.2021, 12:19
@#Kai- (https://www.blast.hk/members/422005/) Файл проекта ВСки появился? Ты его запустил?

#Kai-
02.05.2021, 12:25
@#Kai- (https://www.blast.hk/members/422005/) Файл проекта ВСки появился? Ты его запустил?


Ты про plugin.sln? В папке plugin-sdk - Да, первый скрин при его сборке, ошибка вылезает.

S7XA
02.05.2021, 13:07
Что не так?

Code:






#include
#include "main.h"

SAMPFUNCS *SF = new SAMPFUNCS();

void CALLBACK WHO_TEST(std::string params)
{
int iFormInt = 1;
SF->getSAMP()->getChat()->AddChatMessage(0xFFFFFF, "Command Worked %d", iFormInt);
}

void __stdcall mainloop()
{
static bool initialized = false;
if (!initialized)
{
if (GAME && GAME->GetSystemState() == eSystemState::GS_PLAYING_GAME && SF->getSAMP()->IsInitialized())
{
initialized = true;
SF->getSAMP()->getChat()->AddChatMessage(0xFFFFFF, "SAMPFUNCS Plugin loaded.");
SF->getSAMP()->registerChatCommand("who", WHO_TEST);
}
}
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
if (dwReasonForCall == DLL_PROCESS_ATTACH)
SF->initPlugin(mainloop, hModule);
return TRUE;
}




Лог ошибок -

memir
02.05.2021, 13:17
Что не так?

Code:






#include
#include "main.h"

SAMPFUNCS *SF = new SAMPFUNCS();

void CALLBACK WHO_TEST(std::string params)
{
int iFormInt = 1;
SF->getSAMP()->getChat()->AddChatMessage(0xFFFFFF, "Command Worked %d", iFormInt);
}

void __stdcall mainloop()
{
static bool initialized = false;
if (!initialized)
{
if (GAME && GAME->GetSystemState() == eSystemState::GS_PLAYING_GAME && SF->getSAMP()->IsInitialized())
{
initialized = true;
SF->getSAMP()->getChat()->AddChatMessage(0xFFFFFF, "SAMPFUNCS Plugin loaded.");
SF->getSAMP()->registerChatCommand("who", WHO_TEST);
}
}
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
if (dwReasonForCall == DLL_PROCESS_ATTACH)
SF->initPlugin(mainloop, hModule);
return TRUE;
}




Лог ошибок -


надо DirectX SDK поставить

Dark_Knight
02.05.2021, 14:43
Ты про plugin.sln? В папке plugin-sdk - Да, первый скрин при его сборке, ошибка вылезает.


Что за ошибка? Давай показывай.

#Kai-
02.05.2021, 14:57
Что за ошибка? Давай показывай.



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

Я открываю plugin.sln ( У меня MVS 2019 ) ничего более не выбираю, нажимаю F5 и все...

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

AdCKuY_DpO4uLa
02.05.2021, 18:35
Я открываю plugin.sln ( У меня MVS 2019 ) ничего более не выбираю, нажимаю F5 и все...

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


У тебя все правильно, просто при компиляции на f5, студия пытается запустить скомпилированный файл, а ты компилил .lib файл, который не является исполняемым. Отсюда и ошибка о том, что его запустить нельзя. Тебе сейчас осталось только через студию создать plugin sdk проект и все должно работать

#Kai-
02.05.2021, 18:56
У тебя все правильно, просто при компиляции на f5, студия пытается запустить скомпилированный файл, а ты компилил .lib файл, который не является исполняемым. Отсюда и ошибка о том, что его запустить нельзя. Тебе сейчас осталось только через студию создать plugin sdk проект и все должно работать


в этом и дело, что создаю проект... просто нажимаю F5 и ошибка

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

У меня единственный выход это данная тема, нашел на форуме всего 2 вопроса и то в их просто как обычно мнение свое высказали и не помогли, а кому-то вообще не ответили.

Musaigen
02.05.2021, 19:19
в этом и дело, что создаю проект... просто нажимаю F5 и ошибка

У меня единственный выход это данная тема, нашел на форуме всего 2 вопроса и то в их просто как обычно мнение свое высказали и не помогли, а кому-то вообще не ответили.


Ок..
https://forum.antichat.xyz/attachments/27731720/

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

#Kai-
02.05.2021, 19:41
Ок..


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

первый раз в этой среде, Pawno, sublime, atom, Блокнот)

sc6ut
02.05.2021, 19:57
Не понимаю почему никто не обратил внимание выше





при компиляции на f5, студия пытается запустить скомпилированный файл, а ты компилил .lib файл, который не является исполняемым.


ну да, никто)

#Kai-
02.05.2021, 20:06
ну да, никто)


он объяснил почему ошибка эта вылезала, но никак что неправильно компилю)

DS.
02.05.2021, 20:19
Решил перенести привязку с exe файла в аси, оба на плюсах. Но вот в ехе все работает идеально, а асишник умерает на инициализации

https://sun9-6.userapi.com/impg/HIlGPfhyDXQ2wxckYZ6pOEGoR8CPuxVfZqP5kw/mviWGE8hY1U.jpg?size=677x298&quality=96&sign=21778f032ed3443345d17b4bbf1f2ad5&type=album

Проверка на интернет работает, если его нет в игру ты не зайдешь, если есть все будет работать.

А вот инициализация убивает скрипт и тот вообще не работает, да же пытался ввести неверный ключ все равно до кода exit(1); он не доходит.

Помогите, уже больше месяца ломаю голову и не могу понять в чем проблема.

Сама инициализация выглядит так.

https://sun9-23.userapi.com/impg/6EYv012FqPZKfGqW9t3XzX7HkHmW0HXR9z3ALQ/Q7Cqq2FteK8.jpg?size=571x326&quality=96&sign=314187b2109eba785a99ab2f88a58e8e&type=album

yung milonov
04.05.2021, 15:08
При сборке решения вылазит ошибка. Visual Studio 2013



1620126461828.pngyung milonov · 4 Май 2021 в 14:08' data-fancybox="lb-post-733711" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/95819/" style="cursor: pointer;" title="1620126461828.png">
https://forum.antichat.xyz/attachments/27733711/

imring
05.05.2021, 00:06
Можно ли узнать, что самп загрузился через SAMP-API? github.com/BlastHackNet/SAMP-API (http://github.com/BlastHackNet/SAMP-API)



C++:






bool
samp_loaded
=
sampapi
::
GetBase
(
)
!=
0
;

kin4stat
05.05.2021, 00:07
C++:






bool
samp_loaded
=
sampapi
::
GetBase
(
)
!=
0
;





Я думаю что он все же имел ввиду инициализацию сампа, а не загрузку. Проверка на загрузку чересчур примитивное дело

imring
05.05.2021, 00:10
Я думаю что он все же имел ввиду инициализацию сампа, а не загрузку. Проверка на загрузку чересчур примитивное дело


проверять все структуры (CDialog, CNetGame, CInput, CScoreboard и т.д.) или



хукнуть CNetGame::CNetGame:

псевдо код:






void
hooked_construct_cnetgame
(
.
.
.
)
{
hook_cnetgame
->
call_orig
(
.
.
.
)
;
// самп инициализирован
}

kin4stat
05.05.2021, 00:13
Это не лучший вариант. Если инжектиться после инита класса, то не сработает


Проверить CNetGame на nullptr, и если nullptr то поставить хук ¯\_(ツ)_/¯

kin4stat
05.05.2021, 00:25
с таким же успехом можно проверить на загруженность без хука


На потоке?)

memir
05.05.2021, 00:51
И что за дискриминация потоков? В большинстве читах для разных игр в основном создается поток и они прекрасно работают, хук геймлупа не для всех всех игр найден. Именно на gta sa сложилось так, что если в чите поток - ты говнокодер. fucking why?


Потому что взаимодействие с игрой со своего потока это русская рулетка

memir
05.05.2021, 01:11
Еще ниразу сталкивался с проблемами из-за потока. Разжуй несколько случаев "когда из-за потока пошло что-то не так"


Одновременно с игрой вызвал не тредсейф функцию, коих в SA большинство; Записал что-то в структуру, которую в этот момент читала игра

Погугли про гонки данных, там и примеры кода приведут

Lil Xean
07.05.2021, 12:18
возможно ли использовать push_back так, чтобы у уже существующих классов в этом векторе не вызывался деструктор?

Dark_Knight
07.05.2021, 13:45
А что ты там такое накодил, что у тебя деструктор вызывается при добавлении в контейнер О_О

memir
10.05.2021, 23:06
возможно ли использовать push_back так, чтобы у уже существующих классов в этом векторе не вызывался деструктор?


Использовать другую коллекцию, либо хранить смарт-указатели на элементы в куче внутри вектора



А что ты там такое накодил, что у тебя деструктор вызывается при добавлении в контейнер О_О


push_back/emplace_back производит реалокацию и перещение/копирование объектов в новый буфер как только size становится больше capacity

ewin
14.05.2021, 22:09
скачал плагин sampfuncs (https://blast.hk/threads/17/), запустил проект и просто все функции/переменные не находят, как решить проблему?



1621015727707.pngewin · 14 Май 2021 в 21:09' data-fancybox="lb-post-742780" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/97131/" style="cursor: pointer;" title="1621015727707.png">
https://forum.antichat.xyz/attachments/27742780/

kizn
14.05.2021, 22:14
скачал плагин sampfuncs (https://blast.hk/threads/17/), запустил проект и просто все функции/переменные не находят, как решить проблему?







DirectX SDK есть?

ewin
14.05.2021, 22:24
DirectX SDK есть?


попробовал скачать отсюда (https://www.blast.hk/redirect/aHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9kb3dubG 9hZC9kZXRhaWxzLmFzcHg_aWQ9NjgxMg), ничего не изменилось

kizn
14.05.2021, 22:34
попробовал скачать отсюда (https://www.blast.hk/redirect/aHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9kb3dubG 9hZC9kZXRhaWxzLmFzcHg_aWQ9NjgxMg), ничего не изменилось


Открой Visual Studio Installer, найди у Visual Studio кнопочку изменить и посмотри, у тебя установлен пакет SDK или нет:

1621017188254.pngkizn · 14 Май 2021 в 21:34' data-fancybox="lb-post-742804" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/97134/" style="cursor: pointer;" title="1621017188254.png">
https://forum.antichat.xyz/attachments/27742804/

ewin
14.05.2021, 22:47
Открой Visual Studio Installer, найди у Visual Studio кнопочку изменить и посмотри, у тебя установлен пакет SDK или нет:


не помогло

sc6ut
14.05.2021, 22:53
скачал плагин sampfuncs (https://blast.hk/threads/17/), запустил проект и просто все функции/переменные не находят, как решить проблему?










ПКМ по решению -> перенацелить решение

F0RQU1N and
15.05.2021, 12:13
скиньте, если у кого есть сурсы сампа 0.2.5, которые компилируются?

kin4stat
15.05.2021, 17:47
скачал плагин sampfuncs (https://blast.hk/threads/17/), запустил проект и просто все функции/переменные не находят, как решить проблему?







в настройках проекта смени версию windows sdk с 7.0 на свою

ewin
15.05.2021, 18:26
в настройках проекта смени версию windows sdk с 7.0 на свою


уже дали ответ выше, благодарю

kin4stat
17.05.2021, 00:05
Как сделать так чтобы эта ***ня выводила не первую букву текста, а весь?

C++:






wchar_t
*
inpt
=
SF
->
getSAMP
(
)
->
getDialog
(
)
->
GetInputText
(
)
;






C++:






std
::
wstring
{
SF
->
getSAMP
(
)
->
getDialog
(
)
->
GetInputText
(
)
}
;

Dark_Knight
17.05.2021, 12:14
А ничего что там указатель на чар, а не на вчар?

Majunti
17.05.2021, 12:18
А ничего что там указатель на чар, а не на вчар?


Visual Studio сам решает куда ставить указатель

Dark_Knight
17.05.2021, 12:27
Visual Studio сам решает куда ставить указатель


А ничего что самп, что сф собран под windows-1251 и в wchar один символ занимает 2 байта, а не один как в char?

kin4stat
17.05.2021, 13:41
А ничего что самп, что сф собран под windows-1251 и в wchar один символ занимает 2 байта, а не один как в char?


Так дхут же wchar хранит....

SR_team
17.05.2021, 13:48
Так дхут же wchar хранит....


У калкора он как-то странно собран. Там в одних местах wchar_t, а в других char. Хотя по сурсам MS, там везде TCHAR, который должен развернуть только во что-то одно - везде wchar_t, либо везде char

EclipsedFlow
18.05.2021, 15:52
Есть аналог функции Lua: printStringNow в SF Api?

F0RQU1N and
18.05.2021, 16:26
Есть аналог функции Lua: printStringNow в SF Api?


SF->getCLEO()->callOpcode("0ACD: show_text_highpriority \"text\" time 1000000"); попробуй

dekname
19.05.2021, 00:54
Как в ASI можно захукать обработчик диалогов?

kin4stat
19.05.2021, 01:00
Как в ASI можно захукать обработчик диалогов?



SAMP-API/src/0.3.7-R3-1/CDialog.cpp at 0d43a3603239f2f4bc65b8305ffc72177386cc29 · DarkP1xel/SAMP-API (https://github.com/DarkP1xel/SAMP-API/blob/0d43a3603239f2f4bc65b8305ffc72177386cc29/src/0.3.7-R3-1/CDialog.cpp#L39)

It is a library for interacting with functions, classes and structures of SAMP. - DarkP1xel/SAMP-API

github.com

greamc
19.05.2021, 15:23
Объясните пожалуйста,в чем проблема

Dark_Knight
19.05.2021, 21:25
Нет функции в плагине такой с которой был собран проект.

DS.
20.05.2021, 00:13
1.Проверка на черный индикатор над головой(когда чел дохнет)

2.Проверка на ближайшего игрока.

3.Рестарт сервера(только у себя), то есть как отключить инет для сервера хоть на 1 секунду.

iliyasyeskhatov
24.05.2021, 21:11
1621876213110.pngiliyasyeskhatov · 24 Май 2021 в 20:11' data-fancybox="lb-post-750216" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/98323/" style="cursor: pointer;" title="1621876213110.png">
https://forum.antichat.xyz/attachments/27750216/

Из за чего так ?

Использую R3 SF SDK

dekname
29.05.2021, 19:17
Можно ли где-то посмотреть логику, каким образом выдается стан и какие анимки при этом выдает игра/SA-MP?

manukhov
30.05.2021, 00:57
Привет. Это код который записывает игровые координаты педа в файл. После чего читает коорды и бегает по ним, но читается только первая строка.

Как можно перейти к следующей строке после выполнения проверки на дистанцию.

C++:






{
std
::
ofstream
cfg
(
"n1ght.txt"
)
;
static
std
::
string writestr
;
if
(
g_class
.
events
->
gameKeyState
(
SRKeys
::
GameKeysOnFoot
::
Forward_or_Backward
)
||
g_class
.
events
->
gameKeyState
(
SRKeys
::
GameKeysOnFoot
::
Left_or_Right
)
)
{
static
ULONGLONG iTick
=
GetTickCount64
(
)
;
if
(
GetTickCount64
(
)
-
iTick
>
(
ULONGLONG
)
2000
)
{
writestr
+=
(
std
::
to_string
(
LOCAL_PLAYER
->
getPosition
(
)
.
fX
)
+
":"
+
std
::
to_string
(
LOCAL_PLAYER
->
getPosition
(
)
.
fY
)
+
"\n"
)
;
iTick
=
GetTickCount64
(
)
;
}
}
cfg
.
write
(
writestr
.
c_str
(
)
,
writestr
.
length
(
)
)
;
}
std
::
ofstream
rd
(
"read.txt"
)
;
static
std
::
string writestr
;
{
std
::
cmatch result
;
std
::
regex
reg
(
"(.*):(.*)"
)
;
//Файл откуда берутся координаты
std
::
ifstream
fileread
(
"n1ght.txt"
)
;
//Делаем перебор всех строк в файле
for
(
std
::
string line
;
std
::
getline
(
fileread
,
line
)
;
)
{
//Получаем две координаты в виде чисел из регекса и записываем их в result[1] и result[2]
std
::
regex_match
(
line
.
c_str
(
)
,
result
,
reg
)
;
//Переводим наши координаты из string в float для дальнейшей работы
float
posX
=
std
::
stof
(
result
[
1
]
.
str
(
)
)
;
float
posY
=
std
::
stof
(
result
[
2
]
.
str
(
)
)
;
float
dist
=
dist2D
(
LOCAL_PLAYER
->
getPosition
(
)
.
fX
,
LOCAL_PLAYER
->
getPosition
(
)
.
fY
,
posX
,
posY
)
;
/* По идеии мы должны сделать проверку на расстояние между педом и самими координатами
* Если пед ближе к нашей точке то переключаем на следующие координаты из файла
* только я хз как)
*/
if
(
dist
>=
1.5f
)
continue
;
}
//Направляем нашу камеру на координаты из файла
CameraSet
(
posX
,
posY
)
;




А вот так только последняя.

C++:





[CODE]
//Получаем две координаты в виде чисел из регекса и записываем их в result[1] и result[2]
std
::
regex_match
(
line
.
c_str
(
)
,
result
,
reg
)
;
//Переводим наши координаты из string в float для дальнейшей работы
posX
=
std
::
stof
(
result
[
1
]
.
str
(
)
)
;
posY
=
std
::
stof
(
result
[
2
]
.
str
(
)
)
;
float
dist
=
dist2D
(
LOCAL_PLAYER
->
getPosition
(
)
.
fX
,
LOCAL_PLAYER
->
getPosition
(
)
.
fY
,
posX
,
posY
)
;
if
(
dist

Musaigen
30.05.2021, 01:41
[QUOTE="T4yz1e"]

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

C++:






{
std
::
ofstream
cfg
(
"n1ght.txt"
)
;
static
std
::
string writestr
;
if
(
g_class
.
events
->
gameKeyState
(
SRKeys
::
GameKeysOnFoot
::
Forward_or_Backward
)
||
g_class
.
events
->
gameKeyState
(
SRKeys
::
GameKeysOnFoot
::
Left_or_Right
)
)
{
static
ULONGLONG iTick
=
GetTickCount64
(
)
;
if
(
GetTickCount64
(
)
-
iTick
>
(
ULONGLONG
)
2000
)
{
writestr
+=
(
std
::
to_string
(
LOCAL_PLAYER
->
getPosition
(
)
.
fX
)
+
":"
+
std
::
to_string
(
LOCAL_PLAYER
->
getPosition
(
)
.
fY
)
+
"\n"
)
;
iTick
=
GetTickCount64
(
)
;
}
}
cfg
.
write
(
writestr
.
c_str
(
)
,
writestr
.
length
(
)
)
;
}
std
::
ofstream
rd
(
"read.txt"
)
;
static
std
::
string writestr
;
{
std
::
cmatch result
;
std
::
regex
reg
(
"(.*):(.*)"
)
;
//Файл откуда берутся координаты
std
::
ifstream
fileread
(
"n1ght.txt"
)
;
//Делаем перебор всех строк в файле
for
(
std
::
string line
;
std
::
getline
(
fileread
,
line
)
;
)
{
//Получаем две координаты в виде чисел из регекса и записываем их в result[1] и result[2]
std
::
regex_match
(
line
.
c_str
(
)
,
result
,
reg
)
;
//Переводим наши координаты из string в float для дальнейшей работы
float
posX
=
std
::
stof
(
result
[
1
]
.
str
(
)
)
;
float
posY
=
std
::
stof
(
result
[
2
]
.
str
(
)
)
;
float
dist
=
dist2D
(
LOCAL_PLAYER
->
getPosition
(
)
.
fX
,
LOCAL_PLAYER
->
getPosition
(
)
.
fY
,
posX
,
posY
)
;
/* По идеии мы должны сделать проверку на расстояние между педом и самими координатами
* Если пед ближе к нашей точке то переключаем на следующие координаты из файла
* только я хз как)
*/
if
(
dist
>=
1.5f
)
continue
;
}
//Направляем нашу камеру на координаты из файла
CameraSet
(
posX
,
posY
)
;




А вот так только последняя.

C++:






//Получаем две координаты в виде чисел из регекса и записываем их в result[1] и result[2]
std
::
regex_match
(
line
.
c_str
(
)
,
result
,
reg
)
;
//Переводим наши координаты из string в float для дальнейшей работы
posX
=
std
::
stof
(
result
[
1
]
.
str
(
)
)
;
posY
=
std
::
stof
(
result
[
2
]
.
str
(
)
)
;
float
dist
=
dist2D
(
LOCAL_PLAYER
->
getPosition
(
)
.
fX
,
LOCAL_PLAYER
->
getPosition
(
)
.
fY
,
posX
,
posY
)
;
if
(
dist

C++:





[CODE]
std
::
ifstream
stream
(
"n1ght.txt"
)
;
std
::
string line
;
while
(
std
::
getline
(
stream
,
line
)
)
// code

Киндер2
30.05.2021, 18:49
как отключить данные, отправленные с вашего плеера на сервер

iliyasyeskhatov
30.05.2021, 22:46
stRemotePlayer* pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer;

SF 5.5.0 не работает функция или у него другая функция ?

oukibt
01.06.2021, 02:11
Как узнать, открыт ли чат в данный момент?

F0RQU1N and
01.06.2021, 03:24
Как узнать, открыт ли чат в данный момент?



Опкод 0B21 (https://wiki.blast.hk/ru/gta-sa/opcodes/0B21)

Проверяет, открыт ли чат

wiki.blast.hk


callOpcode

kin4stat
01.06.2021, 03:26
Как узнать, открыт ли чат в данный момент?


SF->getSamp()->getInput()->bEnabled

ROBERT PUSHER
05.06.2021, 18:19
Как вывести в чат сообщение на чистых плюсах?

kin4stat
05.06.2021, 18:22
Как вывести в чат сообщение на чистых плюсах?


По оффсету относительно базового адреса samp.dll вызвать функцию добавления сообщения в чат

ROBERT PUSHER
05.06.2021, 19:15
По оффсету относительно базового адреса samp.dll вызвать функцию добавления сообщения в чат


понял, но можно кодом?

#Northn
05.06.2021, 19:33
понял, но можно кодом?


0.3.7-R3

C++:






uintptr_t CChatPtr
=
*
reinterpret_cast

(
0x26E8C8
)
;
reinterpret_cast

(
0x679F0
)
(
CChatPtr
,
color
,
text
)
;




Или:

GitHub - BlastHackNet/SAMP-API: A library for interacting with functions, classes and structures of SA-MP client (https://github.com/BlastHackNet/SAMP-API/)

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

github.com

kin4stat
05.06.2021, 19:35
понял, но можно кодом?



C++:






constexpr
auto
SAMP_037_R1_CHAT_OFFSET
=
0x21A0E4
;
constexpr
auto
SAMP_037_R3_CHAT_OFFSET
=
0x26E8C8
;
constexpr
auto
SAMP_037_R1_ADDCHATMSG_FUNC
=
0x64010
;
constexpr
auto
SAMP_037_R3_ADDCHATMSG_FUNC
=
0x67460
;
inline
void
AddChatMessage_R1
(
int
nType
,
const
char
*
szText
,
const
char
*
szPrefix
,
unsigned
int
textColor
,
unsigned
int
prefixColor
)
{
using
AddChatMsgProt
=
void
(
__thiscall
*
)
(
void
*
,
int
,
const
char
*
,
const
char
*
,
unsigned
int
,
unsigned
int
)
;
auto
pChat
=
*
reinterpret_cast

(
dwSAMP
+
SAMP_037_R1_CHAT_OFFSET
)
;
return
reinterpret_cast

(
SAMP_037_R1_ADDCHATMSG_FUNC
)
(
pChat
,
nType
,
szText
,
szPrefix
,
textColor
,
prefixColor
)
;
}
inline
void
AddChatMessage_R3
(
int
nType
,
const
char
*
szText
,
const
char
*
szPrefix
,
unsigned
int
textColor
,
unsigned
int
prefixColor
)
{
using
AddChatMsgProt
=
void
(
__thiscall
*
)
(
void
*
,
int
,
const
char
*
,
const
char
*
,
unsigned
int
,
unsigned
int
)
;
auto
pChat
=
*
reinterpret_cast

(
dwSAMP
+
SAMP_037_R3_CHAT_OFFSET
)
;
return
reinterpret_cast

(
SAMP_037_R3_ADDCHATMSG_FUNC
)
(
pChat
,
nType
,
szText
,
szPrefix
,
textColor
,
prefixColor
)
;
}

ROBERT PUSHER
07.06.2021, 00:28
C++:






constexpr
auto
SAMP_037_R1_CHAT_OFFSET
=
0x21A0E4
;
constexpr
auto
SAMP_037_R3_CHAT_OFFSET
=
0x26E8C8
;
constexpr
auto
SAMP_037_R1_ADDCHATMSG_FUNC
=
0x64010
;
constexpr
auto
SAMP_037_R3_ADDCHATMSG_FUNC
=
0x67460
;
inline
void
AddChatMessage_R1
(
int
nType
,
const
char
*
szText
,
const
char
*
szPrefix
,
unsigned
int
textColor
,
unsigned
int
prefixColor
)
{
using
AddChatMsgProt
=
void
(
__thiscall
*
)
(
void
*
,
int
,
const
char
*
,
const
char
*
,
unsigned
int
,
unsigned
int
)
;
auto
pChat
=
*
reinterpret_cast

(
dwSAMP
+
SAMP_037_R1_CHAT_OFFSET
)
;
return
reinterpret_cast

(
SAMP_037_R1_ADDCHATMSG_FUNC
)
(
pChat
,
nType
,
szText
,
szPrefix
,
textColor
,
prefixColor
)
;
}
inline
void
AddChatMessage_R3
(
int
nType
,
const
char
*
szText
,
const
char
*
szPrefix
,
unsigned
int
textColor
,
unsigned
int
prefixColor
)
{
using
AddChatMsgProt
=
void
(
__thiscall
*
)
(
void
*
,
int
,
const
char
*
,
const
char
*
,
unsigned
int
,
unsigned
int
)
;
auto
pChat
=
*
reinterpret_cast

(
dwSAMP
+
SAMP_037_R3_CHAT_OFFSET
)
;
return
reinterpret_cast

(
SAMP_037_R3_ADDCHATMSG_FUNC
)
(
pChat
,
nType
,
szText
,
szPrefix
,
textColor
,
prefixColor
)
;
}





Требуется объявление dwSAMP, загуглил, ничего не нашёл. только начинаю свой путь в с++ )

AdCKuY_DpO4uLa
07.06.2021, 00:36
Требуется объявление dwSAMP, загуглил, ничего не нашёл. только начинаю свой путь в с++ )


DWORD dwSAMP = (DWORD)GetModuleHandle("samp.dll");

dekname
08.06.2021, 17:15
Где можно найти описание параметров RPC_InitGame?

EclipsedFlow
08.06.2021, 19:18
Как сделать задержку перед отправкой пакета?

C++:






//пример
sendFake
(
)
;
//задерка 100 милисекунд
sendFuck
(
)
;

legendabrn
08.06.2021, 20:32
Как сделать задержку перед отправкой пакета?

C++:






//пример
sendFake
(
)
;
//задерка 100 милисекунд
sendFuck
(
)
;





Sleep(100);

но перед этим создай поток что бы не зафризило игру

или же



Разработчики, только перешедшие с клео\луа на C++ негодуют из-за необходимости использовать разного рода таймеры и лапшу из GetTickCount'ов вместо полюбившихся функций wait. Но особо ярых фанатов клео это не устраивает, отчего они начинают использовать потоки ради функций вроде Sleep для того чтобы не блокировать цикл игры. Однако это не безопасно. Функции ни GTA ни SAMP'а абсолютно не предназначены для использования в разных потоках и их использование может привести к рандомным крашам.

Выход есть!

Example:






#include
#include
#include "Yet-another-hook-library/hook.h"
#include "sampapi/CChat.h"
#include "coro_wait/coro_wait.h"
using
namespace
sampapi
::
v037r1
;
void
foo
(
)
{
using
namespace
std
::
chrono_literals
;
CChat
*
&
pChat
=
RefChat
(
)
;
while
(
!
pChat
)
{
this_coro
::
wait
(
100
ms
)
;
}
unsigned
int
counter
=
0
;
while
(
true
)
{
pChat
->
AddMessage
(
-
1
,
(
std
::
string
(
"Hello "
)
+
std
::
to_string
(
counter
)
)
.
c_str
(
)
)
;
counter
++
;
this_coro
::
wait
(
1
s
)
;
}
}
void
CGame_Process_hk
(
)
{
static
coro_wait instance
{
foo
}
;
instance
.
process
(
)
;
}
class
coro_wait_example
{
public
:
coro_wait_example
(
)
{
using
CGame_Process_t
=
void
(
__cdecl
*
)
(
)
;
CGame_Process_t CGame_Process
=
reinterpret_cast

(
0x53BEE0
)
;
static
hook
CGame_Process_hook
(
CGame_Process
,
CGame_Process_hk
)
;
}
}
coro_wait_example
;




Выполнение функции foo приостанавливается на время, переданное функции this_coro::wait, и продолжается с того же места. Все это работает в одном потоке, благодаря чему можно не переживать за потокобезопасность вызываемых внутри функций.
В бесконечных или очень больших циклах требуется вызывать wait(0), все по канонам клео.
Функция coro_wait::process должна вызываться в потоке игры (перехваченном как в примере, либо в функции mainloop для SF API).

Требуется библиотека Boost.Context!

Исходный код:

GitHub - allwanttokissme/coro_wait: Suspending coroutines by time (https://github.com/allwanttokissme/coro_wait)

Suspending coroutines by time. Contribute to allwanttokissme/coro_wait development by creating an account on GitHub.

github.com


хуки (https://github.com/allwanttokissme/Yet-another-hook-library)
sampapi (https://github.com/BlastHackNet/SAMP-API)

legendabrn
10.06.2021, 07:19
Где можно найти описание параметров RPC_InitGame?



SA-MP/server/netgame.cpp at a69cfc9ea8278a8481508ad34d457dc3e2ea8eb9 · dashr9230/SA-MP (https://github.com/dashr9230/SA-MP/blob/a69cfc9ea8278a8481508ad34d457dc3e2ea8eb9/server/netgame.cpp#L1362)

A repository for making the latest SA-MP version open source - dashr9230/SA-MP

github.com

Mitrel123
13.06.2021, 03:05
ENG:

How can I NOP RemovePlayerFromVehicle from C++? I have tried getting the opcodes from s0beit and finding in CE the address of RemovePlayerFromVehicle by creating a pointer with samp.dll+opcode however I didn’t have success. I’m pretty new to samp hacking scene and I am trying to develop a fully internal cheat.

RU:

Как я могу NOP RemovePlayerFromVehicle из C ++? Я попытался получить коды операций из s0beit и найти в CE адрес RemovePlayerFromVehicle, создав указатель с кодом операции samp.dll +opcode, но мне это не удалось. Я новичок в самп-хакерской сцене и пытаюсь разработать полностью внутренний чит.

Yuriy Code
16.06.2021, 08:24
Как получить CVehicle авто по ID?

В CPools есть:

virtual CVehicle* GetVehicle ( unsigned long ulID ) = 0;

virtual CVehicle* GetVehicle ( DWORD* pGameInterface ) = 0;

Пытался хендл авто вписывать в GetVehicle, SAMP крашит...

yurathe
30.06.2021, 21:27
1.Ваш вопрос: Можно пожалуйста узнать как сделать что был шаблон "Консольное приложение Win32". При нажатие установки пакетов, каждый из пакетов выдает ошибку.




загружено.pngyurathe · 30 Июн 2021 в 20:27' data-fancybox="lb-post-780784" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/103281/" style="cursor: pointer;" title="загружено.png">
https://forum.antichat.xyz/attachments/27780784/

loganhackerdff
01.07.2021, 13:43
В какой адрес пишет опкод

0B56: set_game_key 1@ state 2@

или какую функцию вызывает



C++:






enum
etInput
{
Right
=
0x0
,
Left
=
0x1
,
Backwards
=
0x2
,
Forward
=
0x3
,
Look_Right
=
0x4
,
Look_Left
=
0x5
,
Look_Down
=
0x6
,
Look_Up
=
0x7
,
Action
=
0x8
,
Previous_Weapon
=
0xA
,
Aim_Weapon
=
0xC
,
Next_Weapon
=
0xE
,
Group_CTRL_Forward
=
0x10
,
Group_CTRL_Back
=
0x12
,
Conversatin_NO
=
0x14
,
Conversation_YES
=
0x16
,
Change_Camera
=
0x1A
,
Jump
=
0x1C
,
Enter_Exit
=
0x1E
,
Sprint
=
0x20
,
Fire
=
0x22
,
Crouch
=
0x24
,
Look_Behind
=
0x26
,
Unused
=
0x28
,
Walk
=
0x2A
}
;
void
SetGameKeyState
(
BYTE key
,
BYTE state
)
{
*
(
uint8_t
*
)
(
0xB73458
+
key
)
=
state
;
}
BYTE
GetGameKeyState
(
BYTE key
)
{
return
*
(
uint8_t
*
)
(
0xB73458
+
key
)
;
}

frosjkee
01.07.2021, 14:25
Как записать это в с++ ?


writeByteArray((IntPtr)6185760, new byte[] { 195 });

Musaigen
01.07.2021, 14:59
Как записать это в с++ ?


writeByteArray((IntPtr)6185760, new byte[] { 195 });





*reinterpret_cast(0x5E6320) = 0xC3;

frosjkee
01.07.2021, 15:30
*reinterpret_cast(0x5E6320) = 0xC3;



Спасибо, как ты перевел массив ?

loganhackerdff
01.07.2021, 15:32
Спасибо, как ты перевел массив ?


твой массив состоит из одного елемента, 195 это 0xC3 (тут переведи) (https://www.blast.hk/redirect/aHR0cHM6Ly93d3cuYmluYXJ5aGV4Y29udmVydGVyLmNvbS9kZW NpbWFsLXRvLWhleC1jb252ZXJ0ZXI)

kin4stat
01.07.2021, 15:37
твой массив состоит из одного елемента, 195 это 0xC3 (тут переведи) (https://www.blast.hk/redirect/aHR0cHM6Ly93d3cuYmluYXJ5aGV4Y29udmVydGVyLmNvbS9kZW NpbWFsLXRvLWhleC1jb252ZXJ0ZXI)


Обычный виндовый калькулятор(который еще и удобнее) видимо не в моде

loganhackerdff
01.07.2021, 15:38
Обычный виндовый калькулятор(который еще и удобнее) видимо не в моде


хз, у меня калькулятора нету в windows

Mr.Falcone
01.07.2021, 18:28
хз, у меня калькулятора нету в windows


у геймхакера он всегда должен быть.

loganhackerdff
01.07.2021, 18:39
у геймхакера он всегда должен быть.


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

loganhackerdff
05.07.2021, 15:13
В plugin sdk это не работает


это из собеита.

у меня это не работало на radmir rp, я юзал это

C++:






inline
UINT Lippets
::
KeyBoard
::
GetScanCodeByVK
(
UINT VK
)
{
return
MapVirtualKeyA
(
VK
,
MAPVK_VK_TO_VSC
)
;
}
inline
UINT Lippets
::
KeyBoard
::
GetVKCodeByScan
(
UINT SCAN
)
{
return
MapVirtualKeyA
(
SCAN
,
MAPVK_VSC_TO_VK
)
;
}
inline
void
Lippets
::
KeyBoard
::
SendKeyRelease
(
UINT key
,
ULONG_PTR dwExtraInfo
)
{
keybd_event
(
key
,
GetScanCodeByVK
(
key
)
,
KEYEVENTF_EXTENDEDKEY
|
KEYEVENTF_KEYUP
,
dwExtraInfo
)
;
}
inline
void
Lippets
::
KeyBoard
::
SendKeyPress
(
UINT key
,
ULONG_PTR dwExtraInfo
)
{
keybd_event
(
key
,
GetScanCodeByVK
(
key
)
,
KEYEVENTF_EXTENDEDKEY
|
0
,
dwExtraInfo
)
;
}

loganhackerdff
05.07.2021, 15:24
Это не будет работать при открытом чате или диалоге


да. Протести через GetGameKeyState и кнопку какую-то например etInput::Forward когда W нажата оно 255 равно должно быть

loganhackerdff
07.07.2021, 18:09
пытаюсь научиться писать хуки на длл, прочитал этот (https://www.blast.hk/threads/91079/) гайд много раз, получилось перехватить но всё же остался вопрос.
Как понять в какой именно адрес вставлять хук? Не перебирать же их по очереди? Попытавшись вписать в другие похожие адреса или ловил краши или сообщения не хукались.


https://github.com/DK22Pac/plugin-sdk, там в .cpp файлах вызов функции по адресу, этот адрес и пиши

oukibt
08.07.2021, 02:06
Приветствую. При рендеринге определённой сцены встроенным рендером на SAMPFUNCS съедается стабильно порядка 10-15 FPS, в независимости от разрешения экрана. Возможно ли как-нибудь ускорить рендеринг, или определить его в другом потоке?

F0RQU1N and
08.07.2021, 04:19
как узнать убил ли моего педа игрок, и если да, то как получть его ид?

Dark_Knight
08.07.2021, 10:50
Приветствую. При рендеринге определённой сцены встроенным рендером на SAMPFUNCS съедается стабильно порядка 10-15 FPS, в независимости от разрешения экрана. Возможно ли как-нибудь ускорить рендеринг, или определить его в другом потоке?


На код надо смотреть. В другом потоке нельзя рендерить. Если мне память не изменяет.

oukibt
08.07.2021, 11:35
На код надо смотреть. В другом потоке нельзя рендерить. Если мне память не изменяет.


При рендеринге используется алгоритм, который указывает, где рисовать линии, если закомментировать отрисовку, и оставить только алгоритм - проблем с ФПС не будет, даже с флагом -O0. Линий порядка 70 штук

kin4stat
08.07.2021, 12:03
При рендеринге используется алгоритм, который указывает, где рисовать линии, если закомментировать отрисовку, и оставить только алгоритм - проблем с ФПС не будет, даже с флагом -O0. Линий порядка 70 штук


Ты код покажи, а не алгоритмы колдуй

oukibt
08.07.2021, 12:09
Ты код покажи, а не алгоритмы колдуй


Файл main.cpp (50 строка) и ResDraw.cpp

samp-equalizer/src at main · oukibt/samp-equalizer (https://github.com/oukibt/samp-equalizer/tree/main/src)

Contribute to oukibt/samp-equalizer development by creating an account on GitHub.

github.com

Dark_Knight
08.07.2021, 12:45
Нихуя себе сколько у тебя действий с конвертацией и обчислениями. Конечно, оно лагать, как по мне, будет. Вечером смогу код скинуть, как я давным давно делал без дропа фпса. Вот тебе демонстрация.

oukibt
08.07.2021, 12:48
Нихуя себе сколько у тебя действий с конвертацией и обчислениями. Конечно, оно лагать, как по мне, будет. Вечером смогу код скинуть, как я давным давно делал без дропа фпса. Вот тебе демонстрация.







Этот алгоритм, грубо говоря, вообще не дропает ФПС. Он садится из-за отрисовки. Говорил, вроде, сверху, закомментировав отрисовку, дропа не будет

Dark_Knight
08.07.2021, 13:17
ну а ты что думал. Ты же рисуешь каждую линию отдельно и в ней ещё обчисления делаешь

#Northn
08.07.2021, 13:44
в отдельном потоке отрисовывай всё в какую-то текстуру, а потом рендерь текстуру

kin4stat
08.07.2021, 13:46
в отдельном потоке отрисовывай всё в какую-то текстуру, а потом рендерь текстуру


А еще потрахайся с синхронизацией потоков, хороший совет.

Тут нужно рендер оптимизировать, а не на потоке рендерить. Тем более он скорее всего сделает CPU-Side рендер, что ему не особо то и поможет. Тут нужно рендер оптимизировать. Я бы попробовал имгуи рендер заюзать

oukibt
08.07.2021, 14:49
в отдельном потоке отрисовывай всё в какую-то текстуру, а потом рендерь текстуру


Можно какой-нибудь пример, как рисовать линии на текстуре, а затем выводить текстуру?

oukibt
09.07.2021, 19:05
Вечером смогу код скинуть, как я давным давно делал без дропа фпса.


Я, конечно, ни на что не намекаю, но..

loganhackerdff
11.07.2021, 18:32
Парни, почему когда я рисую текстуру на экране у меня ники людей улетают в лево вверх?

класс для рисования - https://guidedhacking.com/threads/dx9-image-class.7620/ (https://www.blast.hk/redirect/aHR0cHM6Ly9ndWlkZWRoYWNraW5nLmNvbS90aHJlYWRzL2R4OS 1pbWFnZS1jbGFzcy43NjIwLw)

SR_team
11.07.2021, 18:42
Парни, почему когда я рисую текстуру на экране у меня ники людей улетают в лево вверх?

класс для рисования - https://guidedhacking.com/threads/dx9-image-class.7620/ (https://www.blast.hk/redirect/aHR0cHM6Ly9ndWlkZWRoYWNraW5nLmNvbS90aHJlYWRzL2R4OS 1pbWFnZS1jbGFzcy43NjIwLw)


матрицы похерил. Если не хочешь менять место хука, то сохраняй их, но это ударит по fps

loganhackerdff
11.07.2021, 18:43
матрицы похерил. Если не хочешь менять место хука, то сохраняй их, но это ударит по fps


менять место хука это как?



матрицы похерил. Если не хочешь менять место хука, то сохраняй их, но это ударит по fps


пасибо

хукнул через это: починильось

C++:





[CODE]
DWORD
FindDevice
(
DWORD dwLen
)
{
DWORD dwObjBase
=
(
DWORD
)
LoadLibraryA
(
"d3d9.dll"
)
;
if
(
dwObjBase
==
0x0
)
return
0x0
;
while
(
dwObjBase
++

kin4stat
11.07.2021, 21:39
Парни, почему когда я рисую текстуру на экране у меня ники людей улетают в лево вверх?



Ломается рендер сампа (https://www.blast.hk/threads/69282/)

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

www.blast.hk

loganhackerdff
11.07.2021, 21:41
Ломается рендер сампа (https://www.blast.hk/threads/69282/)

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

www.blast.hk



А почему тот хук который я скинул (он не мой) не вызывает такой эффект?

kin4stat
11.07.2021, 22:19
А почему тот хук который я скинул (он не мой) не вызывает такой эффект?


Он хукает саму библиотеку, и по сути является последним в цепочке рендера

Dark_Knight
11.07.2021, 23:58
Я, конечно, ни на что не намекаю, но..



C++:






float
FXT
[
2048
]
;
int
_lines
=
25
;
BASS_ChannelGetData
(
curTrack
,
FXT
,
BASS_DATA_FFT1024
)
;
int
_x1
,
_y1
;
int
b0
=
0
;
for
(
_x1
=
0
;
_x1

511
)
b1
=
511
;
if
(
b1

70
)
_y1
=
70
;
if
(
_y1

DrawHeight
(
)
+
(
int
)
setting
.
fSong
->
DrawHeight
(
)
+
hHeader
+
100
-
19
;
render
->
DrawBox
(
_x2
,
_y2
-
_y1
,
5
,
_y1
,
setting
.
mColor
)
;
}

oukibt
12.07.2021, 09:58
C++:






float
FXT
[
2048
]
;
int
_lines
=
25
;
BASS_ChannelGetData
(
curTrack
,
FXT
,
BASS_DATA_FFT1024
)
;
int
_x1
,
_y1
;
int
b0
=
0
;
for
(
_x1
=
0
;
_x1

511
)
b1
=
511
;
if
(
b1

70
)
_y1
=
70
;
if
(
_y1

DrawHeight
(
)
+
(
int
)
setting
.
fSong
->
DrawHeight
(
)
+
hHeader
+
100
-
19
;
render
->
DrawBox
(
_x2
,
_y2
-
_y1
,
5
,
_y1
,
setting
.
mColor
)
;
}





Ничем мне это не помогло. Мне интереснее, как создавать и формировать текстуру в другом потоке, а затем просто рендерить её

MISTER_GONWIK
12.07.2021, 10:19
Ничем мне это не помогло. Мне интереснее, как создавать и формировать текстуру в другом потоке, а затем просто рендерить её


забудь об этом, это бред

Dark_Knight
12.07.2021, 17:15
Ничем мне это не помогло. Мне интереснее, как создавать и формировать текстуру в другом потоке, а затем просто рендерить её


Жаль. На моём старом компе это не вызывало никаких дропов

oukibt
13.07.2021, 04:43
Жаль. На моём старом компе это не вызывало никаких дропов


Не знаю, я компилировал с флагом -O2, и некоторый код вообще было не узнать после дизассемблирования, он очень сильно преображался. Может это потому, что у тебя 30 линий, а у меня 90?

Dark_Knight
13.07.2021, 14:34
Вполне может быть. Просто сильно много линий прям не надо рисовать. Имхо

sdanny
13.07.2021, 14:47
There is an address for incoming packets on SAMP RakClient?

oukibt
13.07.2021, 16:06
Вполне может быть. Просто сильно много линий прям не надо рисовать. Имхо


Но в этом, вроде, и есть идея эквалайзера

kin4stat
13.07.2021, 16:29
Но в этом, вроде, и есть идея эквалайзера


Не знаю почему у вас проседает фпс от 90 линий, в эквалайзере по ссылке ниже 8к линий спокойно рендерится лол

ASI - Sound Visualizer [R1/R3] (https://www.blast.hk/threads/86716/)

При публикации плагина на другом ресурсе обязательно указывать ссылку на эту тему! (Ютуберов тоже касается!) Описание: Визуализирует звук с аудио-выходов на экран, имеет множество бесполезных настроек Установка: Файлы из архива перенести в корень игры с заменой Активация меню - F12 Порядок...

www.blast.hk

oukibt
14.07.2021, 09:31
Не знаю почему у вас проседает фпс от 90 линий, в эквалайзере по ссылке ниже 8к линий спокойно рендерится лол

ASI - Sound Visualizer [R1/R3] (https://www.blast.hk/threads/86716/)

При публикации плагина на другом ресурсе обязательно указывать ссылку на эту тему! (Ютуберов тоже касается!) Описание: Визуализирует звук с аудио-выходов на экран, имеет множество бесполезных настроек Установка: Файлы из архива перенести в корень игры с заменой Активация меню - F12 Порядок...

www.blast.hk



Может потому, что я использую рендер SAMPFUNCS?

Как это можно рендерить через DX, или через что оно там работает?

legendabrn
14.07.2021, 10:57
Может потому, что я использую рендер SAMPFUNCS?
Как это можно рендерить через DX, или через что оно там работает?


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

Dark_Knight
14.07.2021, 11:41
Может потому, что я использую рендер SAMPFUNCS?
Как это можно рендерить через DX, или через что оно там работает?


Рендер сф и есть рендер дх. Чё у тебя там за система что дропы башенные.

loganhackerdff
14.07.2021, 17:10
Я хочу заюзать PieMenu, pie menu отсюда: https://gist.github.com/thennequin/64b4b996ec990c6ddc13a48c6a0ba68c (https://www.blast.hk/redirect/aHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vdGhlbm5lcXVpbi82NG I0Yjk5NmVjOTkwYzZkZGMxM2E0OGM2YTBiYTY4Yw)

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

1626268235037.pngloganhackerdff · 14 Июл 2021 в 16:10' data-fancybox="lb-post-792879" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/105276/" style="cursor: pointer;" title="1626268235037.png">
https://forum.antichat.xyz/attachments/27792879/

Krisp
22.07.2021, 20:14
Как це пофиксить?

@KiN4StAt (https://www.blast.hk/members/161331/)

error C2039: "fY": не является членом "CVector".

SR_team
22.07.2021, 20:19
Как це пофиксить?
@KiN4StAt (https://www.blast.hk/members/161331/)
error C2039: "fY": не является членом "CVector".


В чем твоя проблема? Просто прочитай, что написано в ошибке и посмотри из чего у тебя состоит структура CVector

Krisp
22.07.2021, 20:25
В чем твоя проблема? Просто прочитай, что написано в ошибке и посмотри из чего у тебя состоит структура CVector


Да вообщем то я не могу верно закомпилить Stealth Remastered, автора Stickey21

Ссылка на его тему->https://www.blast.hk/threads/63079/

SR_team
22.07.2021, 20:27
Да вообщем то я не могу верно закомпилить Stealth Remastered, автора Stickey21

Ссылка на его тему->https://www.blast.hk/threads/63079/


А я и не спрашивал, что ты пытаешься собрать. Ты в принципе буквы игноришь? Что мои, что ошибки?

Krisp
22.07.2021, 20:29
А я и не спрашивал, что ты пытаешься собрать. Ты в принципе буквы игноришь? Что мои, что ошибки?


Да я не знаю из чего состроит структура CVector!!!

MIckromax
22.07.2021, 20:29
А я и не спрашивал, что ты пытаешься собрать. Ты в принципе буквы игноришь? Что мои, что ошибки?


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

SR_team
22.07.2021, 20:31
Да я не знаю из чего состроит структура CVector!!!


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

Krisp
22.07.2021, 20:34
А чё тут конкретно вписать надо?

code:






#pragma once
#include "PluginBase.h"
#include "RenderWare.h"

class CVector {
public:
float x, y, z;

CVector();
CVector(float X, float Y, float Z);

inline CVector(CVector const& src) {
x = src.x; y = src.y; z = src.z;
}

inline CVector(RwV3d const &right) {
FromRwV3d(right);
}

// Returns length of vector
float Magnitude();

// Returns length of 2d vector
float Magnitude2D();

// Normalises a vector
void Normalise();

// Normalises a vector and returns length
float NormaliseAndMag();

// Performs cross calculation
void Cross(const CVector& left, const CVector &right);

// Adds left + right and stores result
void Sum(const CVector& left, const CVector &right);

// Subtracts left - right and stores result
void Difference(const CVector& left, const CVector &right);

void operator=(const CVector& right);
void operator+=(const CVector& right);
void operator-=(const CVector& right);
void operator *= (float multiplier);
void operator /= (float divisor);

// matrix * vector multiplication
void FromMultiply(class CMatrix const& matrix, CVector const& vector);
void FromMultiply3x3(class CMatrix const& matrix, CVector const& vector);

inline void Set(float X, float Y, float Z) {
x = X; y = Y; z = Z;
}

inline RwV3d ToRwV3d() const {
return{ x, y, z };
}

inline void FromRwV3d(RwV3d const &rwvec) {
x = rwvec.x; y = rwvec.y; z = rwvec.z;
}
};

inline CVector operator-(const CVector& vecOne, const CVector& vecTwo) {
return CVector(vecOne.x - vecTwo.x, vecOne.y - vecTwo.y, vecOne.z - vecTwo.z);
}

inline CVector operator+(const CVector& vecOne, const CVector& vecTwo) {
return CVector(vecOne.x + vecTwo.x, vecOne.y + vecTwo.y, vecOne.z + vecTwo.z);
}

inline CVector operator*(const CVector& vec, float multiplier) {
return CVector(vec.x * multiplier, vec.y * multiplier, vec.z * multiplier);
}

inline CVector operator*(float multiplier, const CVector& vec) {
return CVector(vec.x * multiplier, vec.y * multiplier, vec.z * multiplier);
}

inline float DistanceBetweenPoints(const CVector &pointOne, const CVector &pointTwo) {
CVector diff = pointTwo - pointOne;
return diff.Magnitude();
}

VALIDATE_SIZE(CVector, 0xC);

SR_team
22.07.2021, 20:35
А чё тут конкретно вписать надо?

code:






#pragma once
#include "PluginBase.h"
#include "RenderWare.h"

class CVector {
public:
float x, y, z;

CVector();
CVector(float X, float Y, float Z);

inline CVector(CVector const& src) {
x = src.x; y = src.y; z = src.z;
}

inline CVector(RwV3d const &right) {
FromRwV3d(right);
}

// Returns length of vector
float Magnitude();

// Returns length of 2d vector
float Magnitude2D();

// Normalises a vector
void Normalise();

// Normalises a vector and returns length
float NormaliseAndMag();

// Performs cross calculation
void Cross(const CVector& left, const CVector &right);

// Adds left + right and stores result
void Sum(const CVector& left, const CVector &right);

// Subtracts left - right and stores result
void Difference(const CVector& left, const CVector &right);

void operator=(const CVector& right);
void operator+=(const CVector& right);
void operator-=(const CVector& right);
void operator *= (float multiplier);
void operator /= (float divisor);

// matrix * vector multiplication
void FromMultiply(class CMatrix const& matrix, CVector const& vector);
void FromMultiply3x3(class CMatrix const& matrix, CVector const& vector);

inline void Set(float X, float Y, float Z) {
x = X; y = Y; z = Z;
}

inline RwV3d ToRwV3d() const {
return{ x, y, z };
}

inline void FromRwV3d(RwV3d const &rwvec) {
x = rwvec.x; y = rwvec.y; z = rwvec.z;
}
};

inline CVector operator-(const CVector& vecOne, const CVector& vecTwo) {
return CVector(vecOne.x - vecTwo.x, vecOne.y - vecTwo.y, vecOne.z - vecTwo.z);
}

inline CVector operator+(const CVector& vecOne, const CVector& vecTwo) {
return CVector(vecOne.x + vecTwo.x, vecOne.y + vecTwo.y, vecOne.z + vecTwo.z);
}

inline CVector operator*(const CVector& vec, float multiplier) {
return CVector(vec.x * multiplier, vec.y * multiplier, vec.z * multiplier);
}

inline CVector operator*(float multiplier, const CVector& vec) {
return CVector(vec.x * multiplier, vec.y * multiplier, vec.z * multiplier);
}

inline float DistanceBetweenPoints(const CVector &pointOne, const CVector &pointTwo) {
CVector diff = pointTwo - pointOne;
return diff.Magnitude();
}

VALIDATE_SIZE(CVector, 0xC);





Тут надо прочитать 7 строку, и использовать CVector::y, а не CVector::fY

Krisp
22.07.2021, 20:38
Тут надо прочитать 7 строку, и использовать CVector::y, а не CVector::fY


Тоесть мне везде где fX, нужно заменить на x?

loganhackerdff
22.07.2021, 20:48
Тоесть мне везде где fX, нужно заменить на x?


Yes

AdCKuY_DpO4uLa
23.07.2021, 13:23
Привет! Хочу сделать бота для сервера, а именно для водолазов, как ему задать маршрут? Напишите или скиньте какой-то туториал по этому? Если что хочу сделать в формате dll


Пачка туторов по написанию dll (https://www.blast.hk/redirect/aHR0cHM6Ly9nLnplb3MuaW4vP3E9JUQxJTgzJUQxJTgwJUQwJU JFJUQwJUJBJUQwJUI4JTIwJUQxJTgxJTJCJTJCJTIwJUQwJUI0 JUQwJUJCJUQxJThGJTIwJUQwJUJEJUQwJUIwJUQxJTg3JUQwJU I4JUQwJUJEJUQwJUIwJUQxJThFJUQxJTg5JUQwJUI4JUQxJTg1 )

|| NN - NoName ||
24.07.2021, 02:16
Долго искал и до сих пор ищу ответ на интересующий меня вопрос.

Суть вопроса: как мне подключить SAMP-api к проекту?

Вот у меня есть SAMP-api. Что мне делать дальше? Как его подключить к моему проекту?





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

Мне нужно только 0.3.7-R1

.deserve
24.07.2021, 07:48
Долго искал и до сих пор ищу ответ на интересующий меня вопрос.

Суть вопроса: как мне подключить SAMP-api к проекту?

Вот у меня есть SAMP-api. Что мне делать дальше? Как его подключить к моему проекту?

Мне нужно только 0.3.7-R1


Я не совсем понимаю что ты тогда мог искать, если не смог найти как подключить статическую/динамическую библиотеку к своему проекту.

Я не знаю, что это за проект и что он генерит, но тебе в любом случае нужно подключить хидеры (.h files) в свой проект, а после этого скомпилить проект и подключить библиотеку к проекту, в зависимости от того че там и от того че ты хочешь. Если статика - то делать особо нечего, в msdn даже есть: тык (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvY3BwL2 J1aWxkL3dhbGt0aHJvdWdoLWNyZWF0aW5nLWFuZC11c2luZy1h LXN0YXRpYy1saWJyYXJ5LWNwcD92aWV3PW1zdmMtMTYw)

А если динамическая, то тебе решать как ты хочешь юзать её функции и как ее подключать. Но они все равно объявлены в header files, поэтому их тебе нужно все равно подключать. А далее смотришь тут (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9kbGxzL2R5bmFtaWMtbGluay1saWJyYXJpZXM)

По твоим хотелкам дальше - либо явное связывание, либо неявное, либо если тебе надо чтобы все шло по маслу до того как ты вызовешь функцию из библиотеки, то используй отложенную загрузку (только не с kernel32.dll, но тебе её и не нужно отложенно загружать), но при этом не используй FreeLibrary.

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

По сути всё. И это применимо не только к твоему проекту, но и ко всем сторонним библиотекам.

|| NN - NoName ||
24.07.2021, 16:25
Я не совсем понимаю что ты тогда мог искать, если не смог найти как подключить статическую/динамическую библиотеку к своему проекту.

Я не знаю, что это за проект и что он генерит, но тебе в любом случае нужно подключить хидеры (.h files) в свой проект, а после этого скомпилить проект и подключить библиотеку к проекту, в зависимости от того че там и от того че ты хочешь. Если статика - то делать особо нечего, в msdn даже есть: тык (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvY3BwL2 J1aWxkL3dhbGt0aHJvdWdoLWNyZWF0aW5nLWFuZC11c2luZy1h LXN0YXRpYy1saWJyYXJ5LWNwcD92aWV3PW1zdmMtMTYw)
А если динамическая, то тебе решать как ты хочешь юзать её функции и как ее подключать. Но они все равно объявлены в header files, поэтому их тебе нужно все равно подключать. А далее смотришь тут (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9kbGxzL2R5bmFtaWMtbGluay1saWJyYXJpZXM)
По твоим хотелкам дальше - либо явное связывание, либо неявное, либо если тебе надо чтобы все шло по маслу до того как ты вызовешь функцию из библиотеки, то используй отложенную загрузку (только не с kernel32.dll, но тебе её и не нужно отложенно загружать), но при этом не используй FreeLibrary.
Тебе я так полагаю больше неявное связывание подойдет, ибо меньше мороки.
По сути всё. И это применимо не только к твоему проекту, но и ко всем сторонним библиотекам.


Благодарю. Мне все объяснили и я сразу понял в чём была моя ошибка.

loganhackerdff
25.07.2021, 15:55
Привет всем

мне нужна хелпа с имги

у меня есть функция получения названия раскладки:

C++:






std
::
string
GetKeyBoardLocaleName
(
)
{
char
OutBuff
[
16
]
;
GetKeyboardLayoutNameA
(
OutBuff
)
;
char
buffer
[
255
]
;
GetLocaleInfoA
(
strtol
(
OutBuff
,
(
char
*
*
)
OutBuff
[
strlen
(
OutBuff
)
]
,
16
)
,
LOCALE_SLANGUAGE
,
buffer
,
sizeof
(
buffer
)
/
sizeof
(
char
)
)
;
return
buffer
;
}




Я также загуражю шрифт с поддержкой Кирилицы, русский текст у меня рисуеться, но вот вместо названия раскладки знаки вопроса

C++:






char
szBuffer
[
128
]
;
sprintf
(
szBuffer
,
(
const
char
*
)
u8
"Раскладка: %s"
,
GetKeyBoardLocaleName
(
)
.
c_str
(
)
)
;
ImGui
::
TextColored
(
ImVec4
(
m_v4Color
.
x
,
m_v4Color
.
y
,
m_v4Color
.
z
,
1.f
)
,
szBuffer
)
;




В MessageBoxA() текст выводиться, раньше я рендерил через Font на SF, сейчас всё через ImGui

SR_team
25.07.2021, 15:56
Привет всем
мне нужна хелпа с имги
у меня есть функция получения названия раскладки:

C++:






std
::
string
GetKeyBoardLocaleName
(
)
{
char
OutBuff
[
16
]
;
GetKeyboardLayoutNameA
(
OutBuff
)
;
char
buffer
[
255
]
;
GetLocaleInfoA
(
strtol
(
OutBuff
,
(
char
*
*
)
OutBuff
[
strlen
(
OutBuff
)
]
,
16
)
,
LOCALE_SLANGUAGE
,
buffer
,
sizeof
(
buffer
)
/
sizeof
(
char
)
)
;
return
buffer
;
}




Я также загуражю шрифт с поддержкой Кирилицы, русский текст у меня рисуеться, но вот вместо названия раскладки знаки вопроса

C++:






char
szBuffer
[
128
]
;
sprintf
(
szBuffer
,
(
const
char
*
)
u8
"Раскладка: %s"
,
GetKeyBoardLocaleName
(
)
.
c_str
(
)
)
;
ImGui
::
TextColored
(
ImVec4
(
m_v4Color
.
x
,
m_v4Color
.
y
,
m_v4Color
.
z
,
1.f
)
,
szBuffer
)
;





у тебя слово "Раскладка" в UTF-8, а GetLocaleInfoA отдает cp1251

TheD1sl1ke
27.07.2021, 23:44
Всем привет. Каким образом можно прочитать адрес памяти в C#/C++?

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

kin4stat
27.07.2021, 23:47
Всем привет. Каким образом можно прочитать адрес памяти в C#/C++?
Если быть конкретнее то мне нужно получить значение адреса памяти, для дальнейшего использования в качестве переменной.



C++:






template

T
ReadMemory
(
uintptr_t address
)
{
DWORD old
;
VirtualProtect
(
reinterpret_cast

(
address
)
,
sizeof
(
T
)
,
PAGE_READWRITE
,
&
old
)
;
T value
=
*
reinterpret_cast

(
address
)
;
VirtualProtect
(
reinterpret_cast

(
address
)
,
sizeof
(
T
)
,
old
,
&
old
)
;
return
value
;
}

loganhackerdff
27.07.2021, 23:47
Всем привет. Каким образом можно прочитать адрес памяти в C#/C++?
Если быть конкретнее то мне нужно получить значение адреса памяти, для дальнейшего использования в качестве переменной.


с++ :

C++:






auto
value
=
*
(
тип переменной
*
)
адрес
;




для C# по идее тоже самое только в unsafe блок и auto заменить на var

huulysuka
30.07.2021, 17:24
1. Как конвертировать RGBA Buffer в виде HEX (\xFF\x00\x00\xFF) в изображение?

loganhackerdff
30.07.2021, 17:27
Привет всем, кто знает как открыть меню (которое на ESC) чё может куда-то записать или чо вызвать?

kin4stat
30.07.2021, 19:38
Привет всем, кто знает как открыть меню (которое на ESC) чё может куда-то записать или чо вызвать?


Думаю поймешь:

Как уйти в ESC (не фейк афк) (https://www.blast.hk/threads/71394/#post-617629)

Как можно цивилизованно выйти в ESC без костылей?

www.blast.hk

LaRossa
02.08.2021, 21:27
Привет, нашёл указатель на чат и пытаюсь открыть его, но появляется только курсор, чат как бы появляется его не видно (но когда нажимаю ENTER он на секунды появляется и пропадает)

CE:






mov eax, [ecx+14E0]
mov eax, [esi + 14E0]
mov [esi + 14E0], 1

samp.DLL+26E8CC + 14E0




Подскажите в чём может быть ошибка

C++:






int
addr
=
*
(
int
*
)
(
var
.
sAPI
.
dwSampModule
+
0x26E8CC
)
;
*
(
bool
*
)
(
addr
+
0x14E0
)
=
1
;

loganhackerdff
03.08.2021, 16:57
всем ку я не научился пользоваться гидрой, скажите пж адрес функции скриншота для samp 0.3.7 R3

для 0.3.7 R1 я знаю - samp.dll + 0x70FC0

(и если не сложно напишите как блять в этой гидре прыгнуть на функцию)

Cake_
03.08.2021, 20:08
@LaRossa (https://www.blast.hk/members/122159/)

close/open chat r3:






#define FUNC_CChat_Close 0x0068E10
#define FUNC_CChat_Open 0x0068D10
void
ToggleSAMPChat
(
bool
status
=
true
)
{
uintptr_t pSamp
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
;
uintptr_t pChat
=
*
reinterpret_cast

(
pSamp
+
0x26E8CC
)
;
status
?
reinterpret_cast

(
pSamp
+
FUNC_CChat_Open
)
(
pChat
)
:
reinterpret_cast

(
pSamp
+
FUNC_CChat_Close
)
(
pChat
)
;
}




@loganhackerdff (https://www.blast.hk/members/143988/) 0074EB0

damag
07.08.2021, 00:38
искал искал и не нашел, вообщем. Нужны две функции, это фриз камеры и фриз педа.(sf)

Констанций
07.08.2021, 18:18
искал искал и не нашел, вообщем. Нужны две функции, это фриз камеры и фриз педа.(sf)



C++:






// bControllable: 0 - заморозить, 1 - разморозить
// Действия можно выполнять и до инициализации сампа, главное чтоб сам модуль был загружен в игру
void
sampTogglePlayerControllable
(
class
CPed
*
targetPed
,
::
BOOL bControllable
)
{
static
auto
sampLibrary
{
std
::
uintptr_t
(
::
GetModuleHandle
(
"samp.dll"
)
)
}
;
reinterpret_cast

(
sampLibrary
+
0xA7050
)
(
targetPed
,
bControllable
)
;
}
// false - заморозить, true - разморозить
void
setCameraControllable
(
bool
status
)
{
*
reinterpret_cast

(
0x52B730
)
=
status
?
0x81
:
0xC3
;
}






всем ку я не научился пользоваться гидрой, скажите пж адрес функции скриншота для samp 0.3.7 R3
для 0.3.7 R1 я знаю - samp.dll + 0x70FC0
(и если не сложно напишите как блять в этой гидре прыгнуть на функцию)


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

C++:






// R3
void
takeScreenshot
(
)
{
static
auto
sampLibrary
{
std
::
uintptr_t
(
::
GetModuleHandle
(
"samp.dll"
)
)
}
;
reinterpret_cast

(
sampLibrary
+
0x74EB0
)
(
)
;
}

loganhackerdff
12.08.2021, 00:22
всем ку, я хочу емулировать нажатие клавиши alt, для этого юзаю https://www.blast.hk/threads/52553/ но ничего не работает,

(значение там меняется от нажатия alt)

походу это надо использовать не в хуке 0x748DA3

kin4stat
12.08.2021, 01:22
всем ку, я хочу емулировать нажатие клавиши alt, для этого юзаю https://www.blast.hk/threads/52553/ но ничего не работает,
(значение там меняется от нажатия alt)
походу это надо использовать не в хуке 0x748DA3


Хукай CPad::UpdatePads

loganhackerdff
13.08.2021, 14:37
hi, мне нужна помощь с rakhook, хукаю onFootSync:

C++:






bool
onPacketOutcoming
(
RakNet
::
BitStream
*
&
bs
)
override
{
stOnFootData
*
data
;
if
(
*
bs
->
GetData
(
)
==
207
)
{
data
=
(
stOnFootData
*
)
bs
->
GetData
(
)
;
vars
::
pChat
->
AddMessage
(
-
1
,
std
::
to_string
(
data
->
byteHealth
)
.
c_str
(
)
)
;
}
return
true
;
}




Структуры:

C++:






struct
stSAMPKeys
{
uint8_t
keys_primaryFire
:
1
;
uint8_t
keys_horn__crouch
:
1
;
uint8_t
keys_secondaryFire__shoot
:
1
;
uint8_t
keys_accel__zoomOut
:
1
;
uint8_t
keys_enterExitCar
:
1
;
uint8_t
keys_decel__jump
:
1
;
// on foot: jump or zoom in
uint8_t
keys_circleRight
:
1
;
uint8_t
keys_aim
:
1
;
// hydra auto aim or on foot aim
uint8_t
keys_circleLeft
:
1
;
uint8_t
keys_landingGear__lookback
:
1
;
uint8_t
keys_unknown__walkSlow
:
1
;
uint8_t
keys_specialCtrlUp
:
1
;
uint8_t
keys_specialCtrlDown
:
1
;
uint8_t
keys_specialCtrlLeft
:
1
;
uint8_t
keys_specialCtrlRight
:
1
;
uint8_t
keys__unused
:
1
;
}
;
struct
stOnFootData
{
uint8_t
packet
;
uint16_t
sLeftRightKeys
;
uint16_t
sUpDownKeys
;
union
{
uint16_t
sKeys
;
struct
stSAMPKeys
stSampKeys
;
}
;
float
fPosition
[
3
]
;
float
fQuaternion
[
4
]
;
uint8_t
byteHealth
;
uint8_t
byteArmor
;
uint8_t
byteCurrentWeapon
;
uint8_t
byteSpecialAction
;
float
fMoveSpeed
[
3
]
;
float
fSurfingOffsets
[
3
]
;
uint16_t
sSurfingVehicleID
;
short
sCurrentAnimationID
;
short
sAnimFlags
;
}
;




Но всегда в чат выводится 0

loganhackerdff
13.08.2021, 15:32
тебя не смущает что до данных лежит еще и айди пакета?


чекни структуру, я добавил byte packerID в stOnFootData

kin4stat
13.08.2021, 16:21
hi, мне нужна помощь с rakhook, хукаю onFootSync:

C++:






bool
onPacketOutcoming
(
RakNet
::
BitStream
*
&
bs
)
override
{
stOnFootData
*
data
;
if
(
*
bs
->
GetData
(
)
==
207
)
{
data
=
(
stOnFootData
*
)
bs
->
GetData
(
)
;
vars
::
pChat
->
AddMessage
(
-
1
,
std
::
to_string
(
data
->
byteHealth
)
.
c_str
(
)
)
;
}
return
true
;
}




Структуры:

C++:






struct
stSAMPKeys
{
uint8_t
keys_primaryFire
:
1
;
uint8_t
keys_horn__crouch
:
1
;
uint8_t
keys_secondaryFire__shoot
:
1
;
uint8_t
keys_accel__zoomOut
:
1
;
uint8_t
keys_enterExitCar
:
1
;
uint8_t
keys_decel__jump
:
1
;
// on foot: jump or zoom in
uint8_t
keys_circleRight
:
1
;
uint8_t
keys_aim
:
1
;
// hydra auto aim or on foot aim
uint8_t
keys_circleLeft
:
1
;
uint8_t
keys_landingGear__lookback
:
1
;
uint8_t
keys_unknown__walkSlow
:
1
;
uint8_t
keys_specialCtrlUp
:
1
;
uint8_t
keys_specialCtrlDown
:
1
;
uint8_t
keys_specialCtrlLeft
:
1
;
uint8_t
keys_specialCtrlRight
:
1
;
uint8_t
keys__unused
:
1
;
}
;
struct
stOnFootData
{
uint8_t
packet
;
uint16_t
sLeftRightKeys
;
uint16_t
sUpDownKeys
;
union
{
uint16_t
sKeys
;
struct
stSAMPKeys
stSampKeys
;
}
;
float
fPosition
[
3
]
;
float
fQuaternion
[
4
]
;
uint8_t
byteHealth
;
uint8_t
byteArmor
;
uint8_t
byteCurrentWeapon
;
uint8_t
byteSpecialAction
;
float
fMoveSpeed
[
3
]
;
float
fSurfingOffsets
[
3
]
;
uint16_t
sSurfingVehicleID
;
short
sCurrentAnimationID
;
short
sAnimFlags
;
}
;




Но всегда в чат выводится 0


#pragma pack(push, 1)

loganhackerdff
15.08.2021, 15:12
похоже что это раздел только для меня, чувствую себя тупым, ну да ладно,

кароче я юзаю sampapi и (https://github.com/BlastHackNet/SAMP-API)рисую чамсы вот так:

C++:






if
(
m_bChams
&&
g
::
pDXDevice
)
{
DWORD dwCONSTANT
{
0
}
,
dwARG2
{
0
}
,
dwCULL
{
0
}
;
g
::
pDXDevice
->
GetRenderState
(
D3DRS_CULLMODE
,
&
dwCULL
)
;
g
::
pDXDevice
->
GetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
&
dwCONSTANT
)
;
g
::
pDXDevice
->
GetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
&
dwARG2
)
;
g
::
pDXDevice
->
SetRenderState
(
D3DRS_CULLMODE
,
D3DCULL_CW
)
;
g
::
pDXDevice
->
SetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
0xFFFFFFFF
)
;
g
::
pDXDevice
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
D3DTA_CONSTANT
)
;
(
(
void
(
__thiscall
*
)
(
void
*
)
)
(
*
(
void
*
*
*
)
pPlayer
->
m_pPed
->
m_pGameEntity
)
[
18
]
)
(
player
.
pPlayer
->
m_pPed
->
m_pGameEntity
)
;
g
::
pDXDevice
->
SetRenderState
(
D3DRS_CULLMODE
,
dwCULL
)
;
g
::
pDXDevice
->
SetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
dwCONSTANT
)
;
g
::
pDXDevice
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
dwARG2
)
;
}
}




Перед этим проверка всего что можно для педа

C++:






(
player
&&
player
->
m_pPed
&&
player
->
DoesExist
(
)
&&
player
->
m_pPed
->
DoesExist
(
)
&&
player
->
m_pPed
->
m_pGamePed
&&
player
->
m_pPed
->
m_pGameEntity
)




выглядит как будто наговнокожено но всё равно вылетают exceptions на строке после

C++:






(
(
void
(
__thiscall
*
)
(
void
*
)
)
(
*
(
void
*
*
*
)
pPlayer
->
m_pPed
->
m_pGameEntity
)
[
18
]
)
(
player
.
pPlayer
->
m_pPed
->
m_pGameEntity
)
;




пример кода взят отсюда: https://github.com/Stickey21/Stealt.../Stealth Remastered/Features/Visuals.cpp#L269 (https://github.com/Stickey21/Stealth-Remastered/blob/origin/Stealth%20Remastered/Features/Visuals.cpp#L269)

kin4stat
15.08.2021, 15:45
похоже что это раздел только для меня, чувствую себя тупым, ну да ладно,

кароче я юзаю sampapi и (https://github.com/BlastHackNet/SAMP-API)рисую чамсы вот так:

C++:






if
(
m_bChams
&&
g
::
pDXDevice
)
{
DWORD dwCONSTANT
{
0
}
,
dwARG2
{
0
}
,
dwCULL
{
0
}
;
g
::
pDXDevice
->
GetRenderState
(
D3DRS_CULLMODE
,
&
dwCULL
)
;
g
::
pDXDevice
->
GetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
&
dwCONSTANT
)
;
g
::
pDXDevice
->
GetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
&
dwARG2
)
;
g
::
pDXDevice
->
SetRenderState
(
D3DRS_CULLMODE
,
D3DCULL_CW
)
;
g
::
pDXDevice
->
SetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
0xFFFFFFFF
)
;
g
::
pDXDevice
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
D3DTA_CONSTANT
)
;
(
(
void
(
__thiscall
*
)
(
void
*
)
)
(
*
(
void
*
*
*
)
pPlayer
->
m_pPed
->
m_pGameEntity
)
[
18
]
)
(
player
.
pPlayer
->
m_pPed
->
m_pGameEntity
)
;
g
::
pDXDevice
->
SetRenderState
(
D3DRS_CULLMODE
,
dwCULL
)
;
g
::
pDXDevice
->
SetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
dwCONSTANT
)
;
g
::
pDXDevice
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
dwARG2
)
;
}
}




Перед этим проверка всего что можно для педа

C++:






(
player
&&
player
->
m_pPed
&&
player
->
DoesExist
(
)
&&
player
->
m_pPed
->
DoesExist
(
)
&&
player
->
m_pPed
->
m_pGamePed
&&
player
->
m_pPed
->
m_pGameEntity
)




выглядит как будто наговнокожено но всё равно вылетают exceptions на строке после

C++:






(
(
void
(
__thiscall
*
)
(
void
*
)
)
(
*
(
void
*
*
*
)
pPlayer
->
m_pPed
->
m_pGameEntity
)
[
18
]
)
(
player
.
pPlayer
->
m_pPed
->
m_pGameEntity
)
;




пример кода взят отсюда: https://github.com/Stickey21/Stealth-Remastered/blob/origin/Stealth Remastered/Features/Visuals.cpp#L269 (https://github.com/Stickey21/Stealth-Remastered/blob/origin/Stealth%20Remastered/Features/Visuals.cpp#L269)



CEntityRender:






using
CEntity__Render
=
void
(
__thiscall
*
)
(
::
CEntity
*
)
;
reinterpret_cast

(
0x59F180
)
(
player
.
pPlayer
->
m_pPed
->
m_pGameEntity
)
;




chams:






DWORD dwCONSTANT
,
dwARG0
,
dwARG1
,
dwARG2
;
struct
CPed
*
pPed
=
pSAMP
->
g_Players
->
m_pObject
[
i
]
->
m_pPlayer
->
m_pPed
->
m_pGamePed
;
m_pDev
->
GetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
&
dwCONSTANT
)
;
m_pDev
->
GetTextureStageState
(
0
,
D3DTSS_COLORARG0
,
&
dwARG0
)
;
m_pDev
->
GetTextureStageState
(
0
,
D3DTSS_COLORARG1
,
&
dwARG1
)
;
m_pDev
->
GetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
&
dwARG2
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
floatToHex
(
colors
->
PlayerChamsColor
)
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG0
,
D3DTA_CONSTANT
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG1
,
D3DTA_CONSTANT
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
D3DTA_CONSTANT
)
;
pPed
->
Render
(
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
dwCONSTANT
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG0
,
dwARG0
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG1
,
dwARG1
)
;
m_pDev
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
dwARG2
)
;

kin4stat
15.08.2021, 15:52
Кстати выше - не самое лучшее решение. Лучше хукать DrawIndexedPrimitive в пайплайне рендера педов(0x761142) и выставлять цвет пикселей через константы или пиксельный шейдер. Пример:

C:






sampler2D tex0
:
register
(
s0
)
;
extern
float3 dy
:
register
(
c0
)
;
float4
main
(
float2 tc
:
TEXCOORD0
)
:
COLOR
{
return
tex2D
(
tex0
,
tc
)
*
float4
(
dy
[
0
]
,
dy
[
1
]
,
dy
[
2
]
,
1.0
)
;
}




C++:






{
HRSRC hsrc
=
FindResourceW
(
reinterpret_cast

(
hmdl
)
,
MAKEINTRESOURCEW
(
IDR_HLSL2
)
,
L
"HLSL"
)
;
PVOID shader
=
LockResource
(
LoadResource
(
reinterpret_cast

(
hmdl
)
,
hsrc
)
)
;
pDevice
->
CreatePixelShader
(
reinterpret_cast

(
shader
)
,
&
pPixelShader
)
;
}




C++:






pDevice
->
SetPixelShader
(
pPixelShader
)
;
// Rainbow lol
if
(
bTact
)
{
HSVtoRGB
(
RGB
[
0
]
,
RGB
[
1
]
,
RGB
[
2
]
,
color
[
0
]
,
color
[
1
]
,
color
[
2
]
)
;
color
[
0
]
+=
2.0f
;
if
(
color
[
0
]
>=
360.0f
)
color
[
0
]
-=
360.0f
;
bTact
=
false
;
}
pDevice
->
SetPixelShaderConstantF
(
0
,
RGB
,
1
)
;
fpHkDrawIndexedPrimitive
(
pDevice
,
Type
,
BaseVertexIndex
,
MinVertexIndex
,
NumVertices
,
startIndex
,
primCount
)
;
pDevice
->
SetPixelShader
(
nullptr
)
;
return
D3D_OK
;

loganhackerdff
15.08.2021, 15:55
Кстати выше - не самое лучшее решение. Лучше хукать DrawIndexedPrimitive в пайплайне рендера педов(0x761142) и выставлять цвет пикселей через константы или пиксельный шейдер. Пример:

C:






sampler2D tex0
:
register
(
s0
)
;
extern
float3 dy
:
register
(
c0
)
;
float4
main
(
float2 tc
:
TEXCOORD0
)
:
COLOR
{
return
tex2D
(
tex0
,
tc
)
*
float4
(
dy
[
0
]
,
dy
[
1
]
,
dy
[
2
]
,
1.0
)
;
}




C++:






{
HRSRC hsrc
=
FindResourceW
(
reinterpret_cast

(
hmdl
)
,
MAKEINTRESOURCEW
(
IDR_HLSL2
)
,
L
"HLSL"
)
;
PVOID shader
=
LockResource
(
LoadResource
(
reinterpret_cast

(
hmdl
)
,
hsrc
)
)
;
pDevice
->
CreatePixelShader
(
reinterpret_cast

(
shader
)
,
&
pPixelShader
)
;
}




C++:






pDevice
->
SetPixelShader
(
pPixelShader
)
;
// Rainbow lol
if
(
bTact
)
{
HSVtoRGB
(
RGB
[
0
]
,
RGB
[
1
]
,
RGB
[
2
]
,
color
[
0
]
,
color
[
1
]
,
color
[
2
]
)
;
color
[
0
]
+=
2.0f
;
if
(
color
[
0
]
>=
360.0f
)
color
[
0
]
-=
360.0f
;
bTact
=
false
;
}
pDevice
->
SetPixelShaderConstantF
(
0
,
RGB
,
1
)
;
fpHkDrawIndexedPrimitive
(
pDevice
,
Type
,
BaseVertexIndex
,
MinVertexIndex
,
NumVertices
,
startIndex
,
primCount
)
;
pDevice
->
SetPixelShader
(
nullptr
)
;
return
D3D_OK
;





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

kin4stat
15.08.2021, 15:55
а как понять что рисуется полигон из модели педа


Адрес который я дал - вызов DrawIndexedPrimitive из пайплайна рендера педов

loganhackerdff
16.08.2021, 17:23
Кстати выше - не самое лучшее решение. Лучше хукать DrawIndexedPrimitive в пайплайне рендера педов(0x761142) и выставлять цвет пикселей через константы или пиксельный шейдер. Пример:

C:






sampler2D tex0
:
register
(
s0
)
;
extern
float3 dy
:
register
(
c0
)
;
float4
main
(
float2 tc
:
TEXCOORD0
)
:
COLOR
{
return
tex2D
(
tex0
,
tc
)
*
float4
(
dy
[
0
]
,
dy
[
1
]
,
dy
[
2
]
,
1.0
)
;
}




C++:






{
HRSRC hsrc
=
FindResourceW
(
reinterpret_cast

(
hmdl
)
,
MAKEINTRESOURCEW
(
IDR_HLSL2
)
,
L
"HLSL"
)
;
PVOID shader
=
LockResource
(
LoadResource
(
reinterpret_cast

(
hmdl
)
,
hsrc
)
)
;
pDevice
->
CreatePixelShader
(
reinterpret_cast

(
shader
)
,
&
pPixelShader
)
;
}




C++:






pDevice
->
SetPixelShader
(
pPixelShader
)
;
// Rainbow lol
if
(
bTact
)
{
HSVtoRGB
(
RGB
[
0
]
,
RGB
[
1
]
,
RGB
[
2
]
,
color
[
0
]
,
color
[
1
]
,
color
[
2
]
)
;
color
[
0
]
+=
2.0f
;
if
(
color
[
0
]
>=
360.0f
)
color
[
0
]
-=
360.0f
;
bTact
=
false
;
}
pDevice
->
SetPixelShaderConstantF
(
0
,
RGB
,
1
)
;
fpHkDrawIndexedPrimitive
(
pDevice
,
Type
,
BaseVertexIndex
,
MinVertexIndex
,
NumVertices
,
startIndex
,
primCount
)
;
pDevice
->
SetPixelShader
(
nullptr
)
;
return
D3D_OK
;





я сделал шейдер с расширение .hlsl как ресурс его вроде добавил

но код крашит

C++:






HRSRC hsrc
=
FindResourceW
(
g
::
instance
,
MAKEINTRESOURCEW
(
101
)
,
L
"HLSL"
)
;
PVOID shader
=
LockResource
(
LoadResource
(
g
::
instance
,
hsrc
)
)
;
g
::
pDXDevice
->
CreatePixelShader
(
reinterpret_cast

(
shader
)
,
&
m_d3d9Shader
)
;




В дебугере hsrc = NULL shader тоже

ошибки ещё сыпит если шейдер в проекте в сборке

kin4stat
16.08.2021, 17:34
я сделал шейдер с расширение .hlsl как ресурс его вроде добавил
но код крашит

C++:






HRSRC hsrc
=
FindResourceW
(
g
::
instance
,
MAKEINTRESOURCEW
(
101
)
,
L
"HLSL"
)
;
PVOID shader
=
LockResource
(
LoadResource
(
g
::
instance
,
hsrc
)
)
;
g
::
pDXDevice
->
CreatePixelShader
(
reinterpret_cast

(
shader
)
,
&
m_d3d9Shader
)
;




В дебугере hsrc = NULL shader тоже
ошибки ещё сыпит если шейдер в проекте в сборке


PixelShader 2.0 ставь в настройках компилятора

loganhackerdff
16.08.2021, 19:04
я сделал шейдер с расширение .hlsl как ресурс его вроде добавил
но код крашит

C++:






HRSRC hsrc
=
FindResourceW
(
g
::
instance
,
MAKEINTRESOURCEW
(
101
)
,
L
"HLSL"
)
;
PVOID shader
=
LockResource
(
LoadResource
(
g
::
instance
,
hsrc
)
)
;
g
::
pDXDevice
->
CreatePixelShader
(
reinterpret_cast

(
shader
)
,
&
m_d3d9Shader
)
;




В дебугере hsrc = NULL shader тоже
ошибки ещё сыпит если шейдер в проекте в сборке


шейдер не компилиться, онлайн компилятором тоже

Musaigen
16.08.2021, 19:13
шейдер не компилиться, онлайн компилятором тоже


Какая ошибка?

loganhackerdff
16.08.2021, 19:14
Какая ошибка?


в визуалке dxc.exe вернуло 1 в онлайн компиляторе

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

я не шарю игрался только с opengl шейдерами

Musaigen
16.08.2021, 19:15
в визуалке dxc.exe вернуло 1 в онлайн компиляторе

я не шарю игрался только с opengl шейдерами


Ошибка при компиляции в визуал студио...

loganhackerdff
16.08.2021, 19:15
Ошибка при компиляции в визуалке...


бля

ландно, тогда почему старые чамсы, рисованые через метод не дружат с CD3DFont из sobeit,

и появляется такая ***ня




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

Musaigen
16.08.2021, 19:48
бля
ландно, тогда почему старые чамсы, рисованые через метод не дружат с CD3DFont из sobeit,
и появляется такая ***ня







Отрисовка педа может сбрасывать текстуру или что-то в этом вроде. Ты скажешь какая у тебя ошибка при компиляции шейдера?

loganhackerdff
16.08.2021, 19:49
Отрисовка педа может сбрасывать текстуру или что-то в этом вроде. Ты скажешь какая у тебя ошибка при компиляции шейдера?


ну щас я разберусь как его компилировать но у меня в ошибках просто "dxc.exe вернул 1"

Musaigen
16.08.2021, 19:50
ну щас я разберусь как его компилировать


Ctrl+F7 в файле с шейдером.

loganhackerdff
16.08.2021, 19:54
Ctrl+F7 в файле с шейдером.


сначала

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

Потом после шаманизма

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

Типо вот файл:

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

мб я тупой и не то расширение файла поставил

может просто файл в байты перевести и подгрузить так?

Musaigen
16.08.2021, 19:57
сначала

Потом после шаманизма

Типо вот файл:

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


Выставь в свойствах шейдера "Шейдер пикселей /ps" и Shader Model 2.0

loganhackerdff
16.08.2021, 20:16
Выставь в свойствах шейдера "Шейдер пикселей /ps" и Shader Model 2.0


1629130593243.pngloganhackerdff · 16 Авг 2021 в 19:16' data-fancybox="lb-post-821998" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/110376/" style="cursor: pointer;" title="1629130593243.png">
https://forum.antichat.xyz/attachments/27821998/

hsrc и shader не NULL а m_pShader NULL

Musaigen
16.08.2021, 20:18
hsrc и shader не NULL а m_pShader NULL


функция init где вызывается, и на каком состоянии игры?

loganhackerdff
16.08.2021, 20:23
функция init где вызывается, и на каком состоянии игры?


по команде только что сделал, вылетела ошибка, мб это надо в презент ?



по команде только что сделал, вылетела ошибка, мб это надо в презент ?


а вообще после этого и инициализации ImGui, и хуков present reset and wndproc
https://forum.antichat.xyz/attachments/27822003/

Musaigen
16.08.2021, 20:27
мб это надо в презент ?


Попробуй. С таким приколом не сталкивался.

loganhackerdff
16.08.2021, 20:47
Попробуй. С таким приколом не сталкивался.


Дабро пожаловать в дурку

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

kin4stat
16.08.2021, 21:57
Дабро пожаловать в дурку


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

loganhackerdff
16.08.2021, 21:58
А ты не хочешь скомпилированный шейдер закинуть в ресурсы, а не его код?


хочу, только не могу найти его в билде

kin4stat
16.08.2021, 21:59
хочу, только не могу найти его в билде


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

loganhackerdff
16.08.2021, 22:00
Там пишется куда он сохраняется(а вообще папке выхода файлов должен быть, если ты компиляцию файла не отклбчил)


.cso ?

kin4stat
16.08.2021, 22:03
.cso ?


Да

loganhackerdff
16.08.2021, 22:20
Спс парни, шейдёр загрузил, с хуком попробую сам разобраться

Cake_
16.08.2021, 23:20
@loganhackerdff (https://www.blast.hk/members/143988/) https://github.com/grimesfive/overl...61c5ab9e8611d/proxyIDirect3DDevice9.cpp#L4954 (https://github.com/grimesfive/overlight_fork/blob/1617a1b1c6ded2235d357720f8561c5ab9e8611d/proxyIDirect3DDevice9.cpp#L4954)

тут тебе будет проще разобраться если с ресурс. шейдером не получается

loganhackerdff
16.08.2021, 23:23
@loganhackerdff (https://www.blast.hk/members/143988/) https://github.com/grimesfive/overl...61c5ab9e8611d/proxyIDirect3DDevice9.cpp#L4954 (https://github.com/grimesfive/overlight_fork/blob/1617a1b1c6ded2235d357720f8561c5ab9e8611d/proxyIDirect3DDevice9.cpp#L4954)

тут тебе будет проще разобраться если с ресурс. шейдером не получается


спасибо, я это уже нашёл

Парни спасибо 😎




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





1629144111174.pngloganhackerdff · 16 Авг 2021 в 22:23' data-fancybox="lb-post-822186" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/110428/" style="cursor: pointer;" title="1629144111174.png">
https://forum.antichat.xyz/attachments/27822186/

Smeruxa
21.08.2021, 05:04
Как узнать ид игрока на которого я навелся

al3x_
21.08.2021, 05:22
Как узнать ид игрока на которого я навелся


sf api если:



Получаем id и координаты игрока по зеленому треугольнику:

C++:






Cvector enpos
;
int
enid
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
sAimingAtPid
;
if
(
enid
!=
65535
)
{
enpos
.
fX
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
enid
]
->
pPlayerData
->
onFootData
.
fPosition
[
0
]
;
enpos
.
fY
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
enid
]
->
pPlayerData
->
onFootData
.
fPosition
[
1
]
;
enpos
.
fZ
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
enid
]
->
pPlayerData
->
onFootData
.
fPosition
[
2
]
;
}




второй вариант получения id игрока с помощью этой функции - https://blast.hk/threads/10970/#post-124093

C++:






int
enid
=
GetPlayerTarget
(
50
)
;
if
(
enid
!=
-
1
)
{
enpos
.
fX
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
enid
]
->
pPlayerData
->
onFootData
.
fPosition
[
0
]
;
enpos
.
fY
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
enid
]
->
pPlayerData
->
onFootData
.
fPosition
[
1
]
;
enpos
.
fZ
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
enid
]
->
pPlayerData
->
onFootData
.
fPosition
[
2
]
;
}

Smeruxa
22.08.2021, 17:32
как сбить анимацию?

F0RQU1N and
22.08.2021, 17:35
как сбить анимацию?


установить другую или вызвать опкод из клео 0792: disembark_instantly_actor

Musaigen
22.08.2021, 17:36
как сбить анимацию?



plugin-sdk/plugin_sa/game_sa/CPedIntelligence.cpp at c7df07a7aa8e639ac5ced7f81356efbb1139ae4a · DK22Pac/plugin-sdk (https://github.com/DK22Pac/plugin-sdk/blob/c7df07a7aa8e639ac5ced7f81356efbb1139ae4a/plugin_sa/game_sa/CPedIntelligence.cpp#L145)

An SDK for developing ASI/CLEO plugins for GTA San Andreas, GTA Vice City and GTA III - DK22Pac/plugin-sdk

github.com


Эта же функция в опкоде сверху вызывается вроде.

kin4stat
22.08.2021, 17:44
как сбить анимацию?


То же самое что выше, но самодельное(игра также делает)

C++:






CTaskManager
*
TaskManager
=
PEDSELF
->
GetPedIntelligence
(
)
->
GetTaskManager
(
)
;
for
(
int
i
=
0
;
i

GetTask
(
i
)
;
if
(
pTask
)
{
pTask
->
MakeAbortable
(
PEDSELF
,
ABORT_PRIORITY_IMMEDIATE
,
NULL
)
;
TaskManager
->
RemoveTask
(
i
)
;
}
}
for
(
int
i
=
0
;
i

GetTaskSecondary
(
i
)
;
if
(
pTask
)
{
pTask
->
MakeAbortable
(
PEDSELF
,
ABORT_PRIORITY_IMMEDIATE
,
NULL
)
;
if
(
i
!=
TASK_SECONDARY_FACIAL_COMPLEX
)
TaskManager
->
RemoveTaskSecondary
(
i
)
;
}
}

Retr0vk
23.08.2021, 01:35
Пытаюсь написать чамсы для чита, однако при включении функции игра вылетает без какой либо ошибки, подскажете?

C++:






void
ESP_Chams
(
)
{
DWORD
*
dwConstant
;
DWORD
*
dwARG0
;
DWORD
*
dwARG2
;
IDirect3DDevice9
*
pDevice
;
pDevice
=
SF
->
getRender
(
)
->
getD3DDevice
(
)
;
pDevice
->
GetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
dwConstant
)
;
pDevice
->
GetTextureStageState
(
0
,
D3DTSS_COLORARG0
,
dwARG0
)
;
pDevice
->
GetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
dwARG2
)
;
pDevice
->
SetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
0xFF00FF00
)
;
pDevice
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG0
,
6
)
;
pDevice
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
6
)
;
PEDSELF
->
Render
(
)
;
pDevice
->
SetTextureStageState
(
0
,
D3DTSS_CONSTANT
,
dwConstant
[
0
]
)
;
pDevice
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG0
,
dwARG0
[
0
]
)
;
pDevice
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
dwARG2
[
0
]
)
;
}

Dark_Knight
23.08.2021, 01:52
Указатели ты объявил, но память не выделил. Где-то тут уже был выше код где чувак чамсы рисовал.

Smeruxa
23.08.2021, 02:47
как исправить, при закрытии имгуи окна мой персонаж начинает бить, ну как обычно нажимаешь ЛКМ, хотя не должен

kin4stat
23.08.2021, 04:39
как исправить, при закрытии имгуи окна мой персонаж начинает бить, ну как обычно нажимаешь ЛКМ, хотя не должен


в WNDProc

C++:






if
(
state
.
bMenuOpened
)
{
if
(
ImGui_ImplWin32_WndProcHandler
(
hWnd
,
msg
,
wParam
,
lParam
)
)
{
return
true
;
}
ImGuiIO
&
io
=
ImGui
::
GetIO
(
)
;
if
(
io
.
WantCaptureMouse
||
io
.
WantCaptureKeyboard
)
{
return
true
;
}
}

SheriffKBR
23.08.2021, 13:38
Как можно реализовать ASI скрипт который спарсит ники игроков на сервере

Frederico3133
23.08.2021, 22:59
Всем привет, делаю свой проект на samp mobile и заметел, что анимации которые я делаю - не видят другие игроки? если не сложно обьясните, в чем причина, где я ошибся?

loganhackerdff
24.08.2021, 14:22
Всем привет, делаю свой проект на samp mobile и заметел, что анимации которые я делаю - не видят другие игроки? если не сложно обьясните, в чем причина, где я ошибся?


В 135 строчке ошибка и ещё в 3 замени deque на vector

Retr0vk
24.08.2021, 18:05
как можно отключить nametag?

loganhackerdff
26.08.2021, 21:22
Кстати выше - не самое лучшее решение. Лучше хукать DrawIndexedPrimitive в пайплайне рендера педов(0x761142) и выставлять цвет пикселей через константы или пиксельный шейдер. Пример:

C:






sampler2D tex0
:
register
(
s0
)
;
extern
float3 dy
:
register
(
c0
)
;
float4
main
(
float2 tc
:
TEXCOORD0
)
:
COLOR
{
return
tex2D
(
tex0
,
tc
)
*
float4
(
dy
[
0
]
,
dy
[
1
]
,
dy
[
2
]
,
1.0
)
;
}




C++:






{
HRSRC hsrc
=
FindResourceW
(
reinterpret_cast

(
hmdl
)
,
MAKEINTRESOURCEW
(
IDR_HLSL2
)
,
L
"HLSL"
)
;
PVOID shader
=
LockResource
(
LoadResource
(
reinterpret_cast

(
hmdl
)
,
hsrc
)
)
;
pDevice
->
CreatePixelShader
(
reinterpret_cast

(
shader
)
,
&
pPixelShader
)
;
}




C++:






pDevice
->
SetPixelShader
(
pPixelShader
)
;
// Rainbow lol
if
(
bTact
)
{
HSVtoRGB
(
RGB
[
0
]
,
RGB
[
1
]
,
RGB
[
2
]
,
color
[
0
]
,
color
[
1
]
,
color
[
2
]
)
;
color
[
0
]
+=
2.0f
;
if
(
color
[
0
]
>=
360.0f
)
color
[
0
]
-=
360.0f
;
bTact
=
false
;
}
pDevice
->
SetPixelShaderConstantF
(
0
,
RGB
,
1
)
;
fpHkDrawIndexedPrimitive
(
pDevice
,
Type
,
BaseVertexIndex
,
MinVertexIndex
,
NumVertices
,
startIndex
,
primCount
)
;
pDevice
->
SetPixelShader
(
nullptr
)
;
return
D3D_OK
;





а может знаешь пайплайн рендера авто?

loganhackerdff
28.08.2021, 18:26
всем привет, я столкнулся с прикольной проблемой, она заключается в том, что ИНОГДА std::vector при emplace_back у меня выбивает исключение this = nullptr

код класса

C++:






class
RenderClass
{
public
:
bool
m_bIsEnabled
{
false
}
;
// визуалка 2019 показывает ошибку тут
std
::
string m_sName
{
""
}
;
private
:
std
::
vector

m_objectsRenders
;
std
::
vector

m_text3dRenders
;
std
::
vector

m_pickupRenders
;
public
:
RenderClass
(
)
;
RenderClass
(
const
char
*
szName
)
;
void
ReadWrite
(
READ_WRITE_PARAMS
)
;
bool
areAnyObjectRendersEnabled
(
)
;
bool
areAnyickupRendersEnabled
(
)
;
bool
areAnyText3DRendersEnabled
(
)
;
void
renderPickups
(
RenderPickup_ObjectData
*
pRenderPickupData
)
;
void
renderObjects
(
RenderPickup_ObjectData
*
pRenderObjectData
)
;
void
render3DTexts
(
Render3DTextData
*
p3DTextData
)
;
void
drawEditor
(
size_t spl
)
;
void
drawMenu
(
size_t i
)
;
}
;




Код с самим emplace_back()

C++:





[CODE]
void
CustomRender
::
ReadWrite
(
READ_WRITE_PARAMS
)
{
using
namespace
std
::
chrono_literals
;
try
{
FIELD_IV4
(
customRenderData
.
vec4Color
)
;
FIELD
(
customRenderData
.
bDrawLine
)
;
FIELD
(
customRenderData
.
m_fFontScale
)
;
FIELD
(
m_bEnabled
)
;
if
(
bRead
)
{
size_t i
=
0
;
while
(
true
)
{
if
(
data
[
"class"
]
[
std
::
to_string
(
i
)
.
c_str
(
)
]
.
is_null
(
)
)
break
;
auto
&&
renderClass
=
m_classes
.
emplace_back
(
)
;
// вот тут ошибка
renderClass
.
ReadWrite
(
data
[
"class"
]
[
std
::
to_string
(
i
)
.
c_str
(
)
]
,
bRead
)
;
i
++
;
}
}
else
{
for
(
size_t i
=
0
;
i






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

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

kin4stat
28.08.2021, 18:33
[QUOTE="loganhackerdff"]

всем привет, я столкнулся с прикольной проблемой, она заключается в том, что ИНОГДА std::vector при emplace_back у меня выбивает исключение this = nullptr
код класса

C++:






class
RenderClass
{
public
:
bool
m_bIsEnabled
{
false
}
;
// визуалка 2019 показывает ошибку тут
std
::
string m_sName
{
""
}
;
private
:
std
::
vector

m_objectsRenders
;
std
::
vector

m_text3dRenders
;
std
::
vector

m_pickupRenders
;
public
:
RenderClass
(
)
;
RenderClass
(
const
char
*
szName
)
;
void
ReadWrite
(
READ_WRITE_PARAMS
)
;
bool
areAnyObjectRendersEnabled
(
)
;
bool
areAnyickupRendersEnabled
(
)
;
bool
areAnyText3DRendersEnabled
(
)
;
void
renderPickups
(
RenderPickup_ObjectData
*
pRenderPickupData
)
;
void
renderObjects
(
RenderPickup_ObjectData
*
pRenderObjectData
)
;
void
render3DTexts
(
Render3DTextData
*
p3DTextData
)
;
void
drawEditor
(
size_t spl
)
;
void
drawMenu
(
size_t i
)
;
}
;




Код с самим emplace_back()

C++:





[CODE]
void
CustomRender
::
ReadWrite
(
READ_WRITE_PARAMS
)
{
using
namespace
std
::
chrono_literals
;
try
{
FIELD_IV4
(
customRenderData
.
vec4Color
)
;
FIELD
(
customRenderData
.
bDrawLine
)
;
FIELD
(
customRenderData
.
m_fFontScale
)
;
FIELD
(
m_bEnabled
)
;
if
(
bRead
)
{
size_t i
=
0
;
while
(
true
)
{
if
(
data
[
"class"
]
[
std
::
to_string
(
i
)
.
c_str
(
)
]
.
is_null
(
)
)
break
;
auto
&&
renderClass
=
m_classes
.
emplace_back
(
)
;
// вот тут ошибка
renderClass
.
ReadWrite
(
data
[
"class"
]
[
std
::
to_string
(
i
)
.
c_str
(
)
]
,
bRead
)
;
i
++
;
}
}
else
{
for
(
size_t i
=
0
;
i

Dark_Knight
28.08.2021, 18:33
А зачем 2 &&? Один вроде нужен. Да и лучше обращаться к елементам контейнеров через at и попробуй еще в try catch взять код и посмотреть, что за ошибку выдает.

loganhackerdff
28.08.2021, 18:36
Ну как минимум emlace_back возвращает lvalue reference, а у тебя auto&&, который rvalue reference





А зачем 2 &&? Один вроде нужен. Да и лучше обращаться к елементам контейнеров через at и попробуй еще в try catch взять код и посмотреть, что за ошибку выдает.


всё равно выбивает, в консоль не выводиться сообщение о исключении, не доходит до него(я не забыл добавить)

kin4stat
28.08.2021, 18:37
try catch взять код и посмотреть, что за ошибку выдает.


try catch не ловит сегфолты

loganhackerdff
28.08.2021, 18:38
так похоже что выбивает только при отладке в визуал студии

или просто намного чаще

kin4stat
28.08.2021, 18:40
так похоже что выбивает только при отладке в визуал студии

или просто намного чаще


попробуй добавить

RenderClass(RenderClass&) = default;

RenderClass(RenderClass&&) = default;

loganhackerdff
28.08.2021, 18:53
cпс пацаны, замена && на & помогла, странно, у меня почти везде auto&& было написано, заменил, а с

RenderClass(RenderClass&) = default;

RenderClass(RenderClass&&) = default;

вообще не компилилось, даже по одной

А нет не помогла

kin4stat
28.08.2021, 19:19
RenderClass(RenderClass&) = default;
RenderClass(RenderClass&&) = default;


Их надо в паблик область видимости, внутрь класса RenderClass(надеюсь ты также пробовал)

И еще: C++17 стоит?

loganhackerdff
28.08.2021, 19:55
Их надо в паблик область видимости, внутрь класса RenderClass(надеюсь ты также пробовал)

И еще: C++17 стоит?


с++ last они были в publi:

.deserve
29.08.2021, 09:19
У тебя не с кодом проблемы, а с тем, где у тебя он вызывается

У тебя указатель на объект CustomRender похерился и сейчас там нул птр

loganhackerdff
29.08.2021, 09:39
У тебя не с кодом проблемы, а с тем, где у тебя он вызывается
У тебя указатель на объект CustomRender похерился и сейчас там нул птр


нет, в этом классе и вызывается

san0
29.08.2021, 11:47
Ну как минимум emplace_back возвращает lvalue reference, а у тебя auto&&, который rvalue reference


Неа, в этом случае оба объявления являются идентичными https://en.cppreference.com/w/cpp/language/reference (https://www.blast.hk/redirect/aHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL2xhbm d1YWdlL3JlZmVyZW5jZQ).

C++:






auto
&&
lvref
=
objs
.
emplace_back
(
)
;
auto
&
fref
=
objs
.
emplace_back
(
)
;
static_assert
(
std
::
is_same

(
)
)
;






RenderClass(RenderClass&) = default;
RenderClass(RenderClass&&) = default;


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

А вообще зачем это? Использования вектора априори накладывает ограничения на тип элементов CopyAssignable и CopyConstructible, а emplace_back - MoveInsertable and EmplaceConstructible. Компилятор и так сгенерирует нужные конструкторы.



вообще не компилилось, даже по одной


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

C++:






RenderClass
(
)
=
default
;

kin4stat
29.08.2021, 15:29
Так как вы явно указали компилятору, что необходимо создать два конструктора, в частности копирования и перемещения, то также нужно и указать, что требуется создать конструктор по умолчанию.


Он у него и так объявлен был

kin4stat
31.08.2021, 21:52
Хочу сделать беск.бег, но когда захочу долго побегать персонаж устает, помогите пожалуйста 🙂

123:






#include
BOOL APIENTRY
DllMain
(
HMODULE
,
DWORD fdwReason
,
LPVOID
)
{
if
(
fdwReason
==
DLL_PROCESS_ATTACH
)
{
*
reinterpret_cast

(
0xB7CEE4
)
=
true
;
// 0xB7CEE4 - [byte/boolean] Вкл/выкл бесконечный бег
}
return
TRUE
;
}





Переменная при загрузке игры скорее всего сбрасывается. Делай это после загрузки игры

loganhackerdff
01.09.2021, 00:45
пацаны как хукать wndproc до сампа, чтоб можно было отменить ввод в чат например, самп быстрее чем я походу хукает, есть варик Lowlevel kbd hook, но я не хочу его ставить

мой хук

C++:






D3DDEVICE_CREATION_PARAMETERS d3dcp
;
pGame
->
GetDevice
(
)
->
GetCreationParameters
(
&
d3dcp
)
;
OrigWndProc
=
(
WNDPROC
)
SetWindowLongPtr
(
d3dcp
.
hFocusWindow
,
GWL_WNDPROC
,
(
LONG
)
(
LONG_PTR
)
funcWndProc
)
;

kin4stat
01.09.2021, 01:40
пацаны как хукать wndproc до сампа, чтоб можно было отменить ввод в чат например, самп быстрее чем я походу хукает, есть варик Lowlevel kbd hook, но я не хочу его ставить
мой хук

C++:






D3DDEVICE_CREATION_PARAMETERS d3dcp
;
pGame
->
GetDevice
(
)
->
GetCreationParameters
(
&
d3dcp
)
;
OrigWndProc
=
(
WNDPROC
)
SetWindowLongPtr
(
d3dcp
.
hFocusWindow
,
GWL_WNDPROC
,
(
LONG
)
(
LONG_PTR
)
funcWndProc
)
;





До создания CNetGame надо свой хук ставить вроде. Правда некоторые клавиши типа F4 и F5 все равно работают почему-то. Лень разбираться было

CleanLegend
01.09.2021, 09:10
пацаны как хукать wndproc до сампа, чтоб можно было отменить ввод в чат например, самп быстрее чем я походу хукает, есть варик Lowlevel kbd hook, но я не хочу его ставить
мой хук

C++:






D3DDEVICE_CREATION_PARAMETERS d3dcp
;
pGame
->
GetDevice
(
)
->
GetCreationParameters
(
&
d3dcp
)
;
OrigWndProc
=
(
WNDPROC
)
SetWindowLongPtr
(
d3dcp
.
hFocusWindow
,
GWL_WNDPROC
,
(
LONG
)
(
LONG_PTR
)
funcWndProc
)
;





можешь хукать WndProc gta_sa или samp, сюда выкладывали адрес или посмотри в других сурсах читов

PanSeek
02.09.2021, 01:21
Можно ли как-то оставлять или пересылать ImGui::BeginTabItem?

Как для теста, самое основное:

C++:






bool
test
=
false
;
__int32 test2
=
0
;
// frame
if
(
ImGui
::
BeginTabItem
(
test
?
"One"
:
"Two"
)
)
{
ImGui
::
Text
(
"Text"
)
;
ImGui
::
EndTabItem
(
)
;
}
if
(
ImGui
::
BeginTabItem
(
"Testing"
)
)
{
if
(
ImGui
::
RadioButton
(
"One"
,
&
test2
,
0
)
)
{
test
=
true
;
}
ImGui
::
SameLine
(
)
;
if
(
ImGui
::
RadioButton
(
"Two"
,
&
test2
,
1
)
)
{
test
=
false
;
}
ImGui
::
SameLine
(
)
;
ImGui
::
EndTabItem
(
)
;
}




После переключения RadioButton'а кидает на первый (в позиции) TabItem, а не на "Testing", можно ли как-то чтобы всегда было на "Testing" при обращении к этим RadioButton'ам?

{$FANTOMCODER .cs}
03.09.2021, 23:49
Можно ли в последней Visual Studio 2019 создавать .sf плагины и .dll(.asi) плагины?

AdCKuY_DpO4uLa
03.09.2021, 23:49
можно

legendabrn
05.09.2021, 12:14
как на плюсах подменить структуру из памяти, на свою?

Musaigen
05.09.2021, 12:49
как на плюсах подменить структуру из памяти, на свою?


Так же, как и любое значение из памяти, через reinterpret_cast, наверно.

legendabrn
05.09.2021, 13:01
Так же, как и любое значение из памяти, через reinterpret_cast, наверно.



Код:






#pragma pack(push, 1)
struct CAR_MOD_INFO
{
int test;
} mTest[24];
#pragma pack(pop)

*reinterpret_cast(0xABCFFF + 0xAB) = *reinterpret_cast(&mTest[1]);




пытался таким способом, безуспешно

Musaigen
05.09.2021, 13:08
Код:






#pragma pack(push, 1)
struct CAR_MOD_INFO
{
int test;
} mTest[24];
#pragma pack(pop)

*reinterpret_cast(0xABCFFF + 0xAB) = *reinterpret_cast(&mTest[1]);




пытался таким способом, безуспешно


Попробуй так

*reinterpret_cast(addr) = &mTest[1];

Dark_Knight
05.09.2021, 13:09
Код:






#pragma pack(push, 1)
struct CAR_MOD_INFO
{
int test;
} mTest[24];
#pragma pack(pop)

*reinterpret_cast(0xABCFFF + 0xAB) = *reinterpret_cast(&mTest[1]);




пытался таким способом, безуспешно


Лучше опиши всю задачу, что тебе надо сделать

legendabrn
05.09.2021, 13:16
Лучше опиши всю задачу, что тебе надо сделать


В структуре хранится переменная типа char, но она позволяет хранить значения до 255, я подумал а почему бы не заменить на свою структуру с int и все будет заебумба))

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



Попробуй так

*reinterpret_cast(addr) = &mTest[1];



не работает

#Northn
05.09.2021, 14:01
я подумал а почему бы не заменить на свою структуру с int и все будет заебумба))


не будет, оффсеты сместятся

.deserve
06.09.2021, 11:28
В структуре хранится переменная типа char, но она позволяет хранить значения до 255, я подумал а почему бы не заменить на свою структуру с int и все будет заебумба))
Просмотрев в IDA где используется данная структура, на работоспособность никак не должна повлиять

не работает


Проверь защиту страницы памяти по этому адресу.

Если это адрес структуры, то ты не сможешь поменять структуру по нему, т.к выравнивание по границам страниц похерится.

А если это адрес указателя, то ты можешь записать в него адрес начала своей структуры и читать оттуда по 4 байта. Но всё остальное всё равно будет читать оттуда по 1 байту. При этом, если у тебя будет прямой порядок байт (big endian), то когда по этому адресу будут читать 1 байт, то будет читаться старший байт из 4 байтового целочисленного типа. А если little endian, как на большинстве x86, то всё будет ок: младший байт и будет первым.

И еще мне не понятно: нахера тебе для этой структуры выравнивание упаковки в 1 байт, если у тебя там 1 4 байтовый мембер. А по дефолту выравнивание стоит на 8 байт.

PawnHelp
08.09.2021, 23:47
Всем приветик, помогите решить проблему с сервер коннектом





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

Код:






#define SAMP_CHAT_INFO_OFFSET 0x26E8C8
#define SAMP_FUNC_ADDTOCHATWND 0x67460
SAMPBase
*
pSAMP
;
void
mainThread
(
void
*
pvParams
)
{
if
(
pSAMP
)
{
while
(
!
pSAMP
->
tryInit
(
)
)
Sleep
(
100
)
;
while
(
!
pSAMP
->
isInited
)
continue
;
strcpy
(
pSAMP
->
getInfo
(
)
->
m_szHostAddress
,
"217.106.106.86"
)
;
pSAMP
->
getInfo
(
)
->
m_nPort
=
7024
;
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
switch
(
dwReasonForCall
)
{
case
DLL_PROCESS_ATTACH
:
{
pSAMP
=
new
SAMPBase
(
GetModuleHandle
(
"samp.dll"
)
)
;
_beginthread
(
mainThread
,
NULL
,
NULL
)
;
break
;
}
}
return
TRUE
;
}

AdCKuY_DpO4uLa
09.09.2021, 01:05
Дайте адрес, который вызывается, когда самп полностю проинициализировался (структуры там всякие и т.д.), если есть

#Northn
09.09.2021, 01:21
Дайте адрес, который вызывается, когда самп полностю проинициализировался (структуры там всякие и т.д.), если есть


Конструктор CNetGame, но после его вызова, а не до

loganhackerdff
10.09.2021, 19:40
кроче хук 36 rpc create 3d text выводит в чат херню всякую

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

sc6ut
10.09.2021, 21:01
кроче хук 36 rpc create 3d text выводит в чат херню всякую


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

loganhackerdff
10.09.2021, 23:30
кусок кода который ты показал просто прелестен, идеален. но может всё же покажешь как хукаешь, какая версия самп, ну или на крайний случай дашь хоть какуе-то информацию, кроме того как ты читаешь непонятно еще правильный ли битстрим.


всё кароче,надо было bool на char заменить

kin4stat
12.09.2021, 21:58
Помогите пожалуйста, нема курсора когда активна менюшка



213:






if
(
SF
->
getGame
(
)
->
isKeyPressed
(
VK_HOME
)
)
{
renderW
=
!
renderW
;
SF
->
getSAMP
(
)
->
getMisc
(
)
->
ToggleCursor
(
renderW
)
;
}








попробуй

C++:





[CODE]
if
(
SF
->
getGame
(
)
->
isKeyPressed
(
VK_HOME
)
)
{
renderW
=
!
renderW
;
SF
->
getSAMP
(
)
->
getMisc
(
)
->
ToggleCursor
(
renderW
?
2
:
0
)
;
// renderW

vbg
18.09.2021, 14:19
Привет, хотел перевести на плюсы вот эту запись.

memory lua:






mem
.
setint8
(
0x969152
,
1
,
false
)




На с++ получилось что такое:

функция для записи в память:






template

void
writeMem
(
DWORD address
,
T value
)
{
DWORD oldProtect
=
0
;
VirtualProtectEx
(
GetCurrentProcess
(
)
,
(
void
*
)
address
,
sizeof
(
value
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
WriteProcessMemory
(
GetCurrentProcess
(
)
,
(
void
*
)
address
,
&
value
,
sizeof
(
value
)
,
0
)
;
VirtualProtectEx
(
GetCurrentProcess
(
)
,
(
void
*
)
address
,
sizeof
(
value
)
,
oldProtect
,
NULL
)
;
}




дальше вызываю в коде:

вызов функции в коде:






unsigned
char
driveOnWater
=
1
;
writeMem

(
0x969152
,
driveOnWater
)
;




Ну и не работает кароче. Изменяю память в цикле.

bottom_text
18.09.2021, 14:26
Привет, хотел перевести на плюсы вот эту запись.

memory lua:






mem
.
setint8
(
0x969152
,
1
,
false
)




На с++ получилось что такое:

функция для записи в память:






template

void
writeMem
(
DWORD address
,
T value
)
{
DWORD oldProtect
=
0
;
VirtualProtectEx
(
GetCurrentProcess
(
)
,
(
void
*
)
address
,
sizeof
(
value
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
WriteProcessMemory
(
GetCurrentProcess
(
)
,
(
void
*
)
address
,
&
value
,
sizeof
(
value
)
,
0
)
;
VirtualProtectEx
(
GetCurrentProcess
(
)
,
(
void
*
)
address
,
sizeof
(
value
)
,
oldProtect
,
NULL
)
;
}




дальше вызываю в коде:

вызов функции в коде:






unsigned
char
driveOnWater
=
1
;
writeMem

(
0x969152
,
driveOnWater
)
;




Ну и не работает кароче. Изменяю память в цикле.


unsigned char driveOnWater = 1;

*reinterpret_cast(0x969152) = driveOnWater;

попробуй

#Northn
18.09.2021, 14:37
Привет, хотел перевести на плюсы вот эту запись.

memory lua:






mem
.
setint8
(
0x969152
,
1
,
false
)




На с++ получилось что такое:

функция для записи в память:






template

void
writeMem
(
DWORD address
,
T value
)
{
DWORD oldProtect
=
0
;
VirtualProtectEx
(
GetCurrentProcess
(
)
,
(
void
*
)
address
,
sizeof
(
value
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
WriteProcessMemory
(
GetCurrentProcess
(
)
,
(
void
*
)
address
,
&
value
,
sizeof
(
value
)
,
0
)
;
VirtualProtectEx
(
GetCurrentProcess
(
)
,
(
void
*
)
address
,
sizeof
(
value
)
,
oldProtect
,
NULL
)
;
}




дальше вызываю в коде:

вызов функции в коде:






unsigned
char
driveOnWater
=
1
;
writeMem

(
0x969152
,
driveOnWater
)
;




Ну и не работает кароче. Изменяю память в цикле.





mem.setint8(0x969152, 1, false)


последний аргумент -- false, соответственно протекцию снимать не нужно.

Значит, тебе достаточно просто использовать это:

C++:






*
reinterpret_cast

(
0x969152
)
=
1
;




А так, если ты хочешь повторить код как на луа:

C++:






template

void
writeMem
(
uintptr_t address
,
T value
,
bool
unprotect
=
false
)
{
DWORD old_protection
;
auto
address_
=
reinterpret_cast

(
address
)
;
if
(
unprotect
)
VirtualProtect
(
address_
,
sizeof
(
value
)
,
PAGE_EXECUTE_READWRITE
,
&
old_protection
)
;
memcpy
(
&
value
,
address_
,
sizeof
(
value
)
)
;
if
(
unprotect
)
VirtualProtect
(
address_
,
sizeof
(
value
)
,
old_protection
,
&
old_protection
)
;
}

Musaigen
18.09.2021, 15:25
последний аргумент -- false, соответственно протекцию снимать не нужно.
Значит, тебе достаточно просто использовать это:

C++:






*
reinterpret_cast

(
0x969152
)
=
1
;




А так, если ты хочешь повторить код как на луа:

C++:






template

void
writeMem
(
uintptr_t address
,
T value
,
bool
unprotect
=
false
)
{
DWORD old_protection
;
auto
address_
=
reinterpret_cast

(
address
)
;
if
(
unprotect
)
VirtualProtect
(
address_
,
sizeof
(
value
)
,
PAGE_EXECUTE_READWRITE
,
&
old_protection
)
;
memcpy
(
&
value
,
address_
,
sizeof
(
value
)
)
;
if
(
unprotect
)
VirtualProtect
(
address_
,
sizeof
(
value
)
,
old_protection
,
&
old_protection
)
;
}





Ты в value записуешь байты из _address?

kin4stat
18.09.2021, 15:27
Привет, хотел перевести на плюсы вот эту запись.

memory lua:






mem
.
setint8
(
0x969152
,
1
,
false
)




На с++ получилось что такое:

функция для записи в память:






template

void
writeMem
(
DWORD address
,
T value
)
{
DWORD oldProtect
=
0
;
VirtualProtectEx
(
GetCurrentProcess
(
)
,
(
void
*
)
address
,
sizeof
(
value
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
WriteProcessMemory
(
GetCurrentProcess
(
)
,
(
void
*
)
address
,
&
value
,
sizeof
(
value
)
,
0
)
;
VirtualProtectEx
(
GetCurrentProcess
(
)
,
(
void
*
)
address
,
sizeof
(
value
)
,
oldProtect
,
NULL
)
;
}




дальше вызываю в коде:

вызов функции в коде:






unsigned
char
driveOnWater
=
1
;
writeMem

(
0x969152
,
driveOnWater
)
;




Ну и не работает кароче. Изменяю память в цикле.



C++:






template

void
WriteMemory
(
std
::
uintptr_t address
,
T value
,
bool
protect
=
true
)
{
unsigned
long
oldProt
;
if
(
protect
)
VirtualProtect
(
reinterpret_cast

(
address
)
,
sizeof
(
T
)
,
0x04
,
&
oldProt
)
;
*
reinterpret_cast

(
address
)
=
value
;
if
(
protect
)
VirtualProtect
(
reinterpret_cast

(
address
)
,
sizeof
(
T
)
,
oldProt
,
&
oldProt
)
;
}




Usage:

C++:






WriteMemory
(
0x969152
,
'\x01'
)
;

Silence Scripts
22.09.2021, 14:35
Как сделать рендер объектов как на скрине в asi?

sa-mp-093-min.pngSilence Scripts · 22 Сен 2021 в 13:35' data-fancybox="lb-post-847848" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/115211/" style="cursor: pointer;" title="sa-mp-093-min.png">
https://forum.antichat.xyz/attachments/27847848/
sa-mp-094-min.pngSilence Scripts · 22 Сен 2021 в 13:35' data-fancybox="lb-post-847848" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/115212/" style="cursor: pointer;" title="sa-mp-094-min.png">
https://forum.antichat.xyz/attachments/27847848/

loganhackerdff
24.09.2021, 22:30
Всем ку, у кого-то есть аналог convertGameScreenCoordsToWindowScreenCoords из lua?

kin4stat
24.09.2021, 22:34
Всем ку, у кого-то есть аналог convertGameScreenCoordsToWindowScreenCoords из lua?



C++:






constexpr
auto
kRwEngineScreenW
=
0x00C17044
;
constexpr
auto
kRwEngineScreenH
=
0x00C17048
;
constexpr
auto
kGameScreenW
=
640.f
;
constexpr
auto
kGameScreenH
=
448.f
;
Vec2
gameScreenToWindow
(
Vec2 point
)
{
const
int
sx
=
*
reinterpret_cast

(
kRwEngineScreenW
)
;
const
int
sy
=
*
reinterpret_cast

(
kRwEngineScreenH
)
;
Vec2 result
{
}
;
result
.
x
=
(
point
.
x
/
kGameScreenW
)
*
sx
;
result
.
y
=
(
point
.
y
/
kGameScreenH
)
*
sy
;
return
result
;
}

loganhackerdff
24.09.2021, 22:40
C++:






constexpr
auto
kRwEngineScreenW
=
0x00C17044
;
constexpr
auto
kRwEngineScreenH
=
0x00C17048
;
constexpr
auto
kGameScreenW
=
640.f
;
constexpr
auto
kGameScreenH
=
448.f
;
Vec2
gameScreenToWindow
(
Vec2 point
)
{
const
int
sx
=
*
reinterpret_cast

(
kRwEngineScreenW
)
;
const
int
sy
=
*
reinterpret_cast

(
kRwEngineScreenH
)
;
Vec2 result
{
}
;
result
.
x
=
(
point
.
x
/
kGameScreenW
)
*
sx
;
result
.
x
=
(
point
.
y
/
kGameScreenH
)
*
sy
;
return
result
;
}





id текстдравов улетают в лево вверх

C++:






auto
onScreenPos
{
gameScreenToWindow
(
{
pTextdraw
->
m_data
.
m_fX
,
pTextdraw
->
m_data
.
m_fY
}
)
}
;
ImGui
::
GetForegroundDrawList
(
)
->
AddText
(
{
onScreenPos
.
x
,
onScreenPos
.
y
}
,
0xFFFFFFFF
,
tos
(
i
)
)
;






kGameScreenW и kGameScreenH попробовал заменить, не помогли

kin4stat
25.09.2021, 01:28
id текстдравов улетают в лево вверх

C++:






auto
onScreenPos
{
gameScreenToWindow
(
{
pTextdraw
->
m_data
.
m_fX
,
pTextdraw
->
m_data
.
m_fY
}
)
}
;
ImGui
::
GetForegroundDrawList
(
)
->
AddText
(
{
onScreenPos
.
x
,
onScreenPos
.
y
}
,
0xFFFFFFFF
,
tos
(
i
)
)
;




kGameScreenW и kGameScreenH попробовал заменить, не помогли


как минимум там мой проеб в том, что result.x два раза подряд(уже исправил)

Musaigen
25.09.2021, 10:35
Всем ку, у кого-то есть аналог convertGameScreenCoordsToWindowScreenCoords из lua?


Ширина экрана в пикселях / 640 * x,

Высота экрана в пикселях / 448 * y

loganhackerdff
25.09.2021, 10:37
как минимум там мой проеб в том, что result.x два раза подряд(уже исправил)


блинб не заметил, всё отлично работает

Leatington
28.09.2021, 19:15
Как выгрузить ASI из игрового процесса?