Просмотр полной версии : С/С++ Вопрос - Ответ
jenekbueno
16.11.2018, 13:33
Заданный одномерный массив А (10). Найти произведение a [1] * 2 * a [2] * ... * 10 * a [10]. Заданный массив отсортировать методом выбора по возрастанию.
произведение думаю сам выполнишь, ничего там сложного, а с сортировкой тебе поможет
Быстрая сортировка — Википедия(https://ru.wikipedia.org/wiki/%D0%91%D1%8B%D1%81%D1%82%D1%80%D0%B0%D1%8F_%D1%81% D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0 %B0) (https://www.blast.hk/redirect/aHR0cHM6Ly9ydS53aWtpcGVkaWEub3JnL3dpa2kvJUQwJTkxJU QxJThCJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUIwJUQxJThGXyVE MSU4MSVEMCVCRSVEMSU4MCVEMSU4MiVEMCVCOCVEMSU4MCVEMC VCRSVEMCVCMiVEMCVCQSVEMCVCMA)
пример: qsort | Программирование на C и C++(http://www.c-cpp.ru/content/qsort) (https://www.blast.hk/redirect/aHR0cDovL3d3dy5jLWNwcC5ydS9jb250ZW50L3Fzb3J0)
Black_Bird
16.11.2018, 13:43
произведение думаю сам выполнишь, ничего там сложного, а с сортировкой тебе поможет
Быстрая сортировка — Википедия(https://ru.wikipedia.org/wiki/%D0%91%D1%8B%D1%81%D1%82%D1%80%D0%B0%D1%8F_%D1%81% D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0 %B0) (https://www.blast.hk/redirect/aHR0cHM6Ly9ydS53aWtpcGVkaWEub3JnL3dpa2kvJUQwJTkxJU QxJThCJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUIwJUQxJThGXyVE MSU4MSVEMCVCRSVEMSU4MCVEMSU4MiVEMCVCOCVEMSU4MCVEMC VCRSVEMCVCMiVEMCVCQSVEMCVCMA)
пример: qsort | Программирование на C и C++(http://www.c-cpp.ru/content/qsort) (https://www.blast.hk/redirect/aHR0cDovL3d3dy5jLWNwcC5ydS9jb250ZW50L3Fzb3J0)
А сможете написать ? :)
jenekbueno
16.11.2018, 16:40
Код:
[CODE]
int comp(const int *i, const int *j)
{
return *i - *j;
}
void foo()
{
int var[10]{ 0, 15, 23, 21, 32, 2, 3, 4, 5, 3};
qsort(var, _countof(var), sizeof(int), (int(*) (const void *, const void *)) comp);
for (byte i = NULL; i
чё не так?
немогу добавить имгуи в соб, в сф всё норм
@FYP (https://www.blast.hk/members/2/) помоги...
checkdasound
16.11.2018, 17:04
Почему при инжекте dll в уже запущенную игру, все работает, а при переименовании в asi, после запуска игры сразу краш.
Код:
#include
#include
#include "main.h"
bool pStatus = false;
unsigned int CurrentCharPointer = *(unsigned int*)0xB6F5F0;
void __cdecl func(void *pArg)
{
*reinterpret_cast(0x004B35A0) = 0x560CEC83;
*reinterpret_cast(0x004B35A4) = 0xF18B;
while (true)
{
Sleep(50);
if (GetAsyncKeyState(0x47))
{
pStatus = !pStatus;
if (pStatus == true)
{
AddMessageJumpQ("~g~[ON]", 500, NULL, false); // 500 - ms
}
else
{
AddMessageJumpQ("~r~[OFF]", 500, NULL, false); // 500 - ms
}
}
if (pStatus == true)
{
*reinterpret_cast(0x96916D) = 1; // bullet
*reinterpret_cast(0xB7CEE6) = 1; // fire
*(unsigned char*)(CurrentCharPointer + 66) = 0xCC; // all
} else
{
*reinterpret_cast(0x96916D) = 0; // bullet
*reinterpret_cast(0xB7CEE6) = 0; // fire
*(unsigned char*)(CurrentCharPointer + 66) = 0; // all
}
}
}
BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ PVOID lpvReserved)
{
if (fdwReason == DLL_PROCESS_ATTACH)
{
_beginthread(func, NULL, nullptr);
}
return TRUE;
}
Код:
#define FUNC_CMessages__AddMessageJumpQ 0x69F1E0
void AddMessageJumpQ(PCHAR text, UINT time, USHORT flag, bool bPreviousBrief) // Функция показа сообщения на экране.
{
((void(__cdecl *)(PCHAR, UINT, USHORT, bool))FUNC_CMessages__AddMessageJumpQ)(text, time, flag, bPreviousBrief);
}
Вроде поставил VirtualProtect, но все равно при переименовании в .asi при входе в игру крашит.
Код:
#include
#include
#include "main.h"
bool pStatus = false;
unsigned int CurrentCharPointer = *(unsigned int*)0xB6F5F0;
void __cdecl func(void *pArg)
{
DWORD oldProtect;
VirtualProtect((void*)(0x004B35A0), 4, PAGE_EXECUTE_READWRITE, &oldProtect);
*reinterpret_cast(0x004B35A0) = 0x560CEC83;
VirtualProtect((void*)(0x004B35A0), 4, oldProtect, &oldProtect);
VirtualProtect((void*)(0x004B35A4), 2, PAGE_EXECUTE_READWRITE, &oldProtect);
*reinterpret_cast(0x004B35A4) = 0xF18B;
VirtualProtect((void*)(0x004B35A4), 2, oldProtect, &oldProtect);
while (true)
{
Sleep(50);
if (GetAsyncKeyState(0x47))
{
pStatus = !pStatus;
if (pStatus == true)
{
AddMessageJumpQ("~g~[ON]", 500, NULL, false); // 500 - ms
}
else
{
AddMessageJumpQ("~r~[OFF]", 500, NULL, false); // 500 - ms
}
}
if (pStatus == true)
{
VirtualProtect((void*)(0x96916D), 1, PAGE_EXECUTE_READWRITE, &oldProtect);
*reinterpret_cast(0x96916D) = 1; // bullet
VirtualProtect((void*)(0x96916D), 1, oldProtect, &oldProtect);
VirtualProtect((void*)(0xB7CEE6), 1, PAGE_EXECUTE_READWRITE, &oldProtect);
*reinterpret_cast(0xB7CEE6) = 1; // fire
VirtualProtect((void*)(0xB7CEE6), 1, oldProtect, &oldProtect);
VirtualProtect((void*)(CurrentCharPointer + 66), 1, PAGE_EXECUTE_READWRITE, &oldProtect);
*(unsigned char*)(CurrentCharPointer + 66) = 0xCC; // all
VirtualProtect((void*)(CurrentCharPointer + 66), 1, oldProtect, &oldProtect);
} else
{
VirtualProtect((void*)(0x96916D), 1, PAGE_EXECUTE_READWRITE, &oldProtect);
*reinterpret_cast(0x96916D) = 0; // bullet
VirtualProtect((void*)(0x96916D), 1, oldProtect, &oldProtect);
VirtualProtect((void*)(0xB7CEE6), 1, PAGE_EXECUTE_READWRITE, &oldProtect);
*reinterpret_cast(0xB7CEE6) = 0; // fire
VirtualProtect((void*)(0xB7CEE6), 1, oldProtect, &oldProtect);
VirtualProtect((void*)(CurrentCharPointer + 66), 1, PAGE_EXECUTE_READWRITE, &oldProtect);
*(unsigned char*)(CurrentCharPointer + 66) = 0; // all
VirtualProtect((void*)(CurrentCharPointer + 66), 1, oldProtect, &oldProtect);
}
}
}
BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ PVOID lpvReserved)
{
if (fdwReason == DLL_PROCESS_ATTACH)
{
_beginthread(func, NULL, nullptr);
}
return TRUE;
}
CleanLegend
16.11.2018, 17:13
Вроде поставил VirtualProtect, но все равно при переименовании в .asi при входе в игру крашит.
Код:
#include
#include
#include "main.h"
bool pStatus = false;
unsigned int CurrentCharPointer = *(unsigned int*)0xB6F5F0;
void __cdecl func(void *pArg)
{
DWORD oldProtect;
VirtualProtect((void*)(0x004B35A0), 4, PAGE_EXECUTE_READWRITE, &oldProtect);
*reinterpret_cast(0x004B35A0) = 0x560CEC83;
VirtualProtect((void*)(0x004B35A0), 4, oldProtect, &oldProtect);
VirtualProtect((void*)(0x004B35A4), 2, PAGE_EXECUTE_READWRITE, &oldProtect);
*reinterpret_cast(0x004B35A4) = 0xF18B;
VirtualProtect((void*)(0x004B35A4), 2, oldProtect, &oldProtect);
while (true)
{
Sleep(50);
if (GetAsyncKeyState(0x47))
{
pStatus = !pStatus;
if (pStatus == true)
{
AddMessageJumpQ("~g~[ON]", 500, NULL, false); // 500 - ms
}
else
{
AddMessageJumpQ("~r~[OFF]", 500, NULL, false); // 500 - ms
}
}
if (pStatus == true)
{
VirtualProtect((void*)(0x96916D), 1, PAGE_EXECUTE_READWRITE, &oldProtect);
*reinterpret_cast(0x96916D) = 1; // bullet
VirtualProtect((void*)(0x96916D), 1, oldProtect, &oldProtect);
VirtualProtect((void*)(0xB7CEE6), 1, PAGE_EXECUTE_READWRITE, &oldProtect);
*reinterpret_cast(0xB7CEE6) = 1; // fire
VirtualProtect((void*)(0xB7CEE6), 1, oldProtect, &oldProtect);
VirtualProtect((void*)(CurrentCharPointer + 66), 1, PAGE_EXECUTE_READWRITE, &oldProtect);
*(unsigned char*)(CurrentCharPointer + 66) = 0xCC; // all
VirtualProtect((void*)(CurrentCharPointer + 66), 1, oldProtect, &oldProtect);
} else
{
VirtualProtect((void*)(0x96916D), 1, PAGE_EXECUTE_READWRITE, &oldProtect);
*reinterpret_cast(0x96916D) = 0; // bullet
VirtualProtect((void*)(0x96916D), 1, oldProtect, &oldProtect);
VirtualProtect((void*)(0xB7CEE6), 1, PAGE_EXECUTE_READWRITE, &oldProtect);
*reinterpret_cast(0xB7CEE6) = 0; // fire
VirtualProtect((void*)(0xB7CEE6), 1, oldProtect, &oldProtect);
VirtualProtect((void*)(CurrentCharPointer + 66), 1, PAGE_EXECUTE_READWRITE, &oldProtect);
*(unsigned char*)(CurrentCharPointer + 66) = 0; // all
VirtualProtect((void*)(CurrentCharPointer + 66), 1, oldProtect, &oldProtect);
}
}
}
BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ PVOID lpvReserved)
{
if (fdwReason == DLL_PROCESS_ATTACH)
{
_beginthread(func, NULL, nullptr);
}
return TRUE;
}
Я тебе ответил уже, в начале потока дождись пока игра загрузится.
И протект тут не играет роли, у тебя бы тогда не работало при инжекте в запущенную игру
немогу добавить имгуи в соб, в сф всё норм
В собейте используются предкомпилированные заголовки, изучи их и сможешь правильно подключить imgui.
на скрине ошибка связана с этим
NarutoUA
16.11.2018, 17:32
Я тебе ответил уже, в начале потока дождись пока игра загрузится.
И протект тут не играет роли, у тебя бы тогда не работало при инжекте в запущенную игру
Клео снимает защиту со всей гта
-raymond-
16.11.2018, 21:01
как использовать api в c++?
допустим если у меня api access key
jenekbueno
17.11.2018, 12:22
В собейте используются предкомпилированные заголовки, изучи их и сможешь правильно подключить imgui.
на скрине ошибка связана с этим
заголовки я знаю как подключаются
а ты сам пробовал подключить имгуи к собейту?
я не совсем понимаю в чем дело
Неадекватная сова
17.11.2018, 12:34
заголовки я знаю как подключаются
а ты сам пробовал подключить имгуи к собейту?
я не совсем понимаю в чем дело
Screenshot(http://prntscr.com/ljg94e) (https://www.blast.hk/redirect/aHR0cDovL3BybnRzY3IuY29tL2xqZzk0ZQ)
-raymond-
17.11.2018, 17:30
как в собейте показать диалог
jenekbueno
17.11.2018, 20:58
как в собейте показать диалог
Код:
void showSampDialog(int send, int dialogID, int typedialog, char *caption, char *text, char *button1, char *button2)
{
uint32_t func = g_dwSAMP_Addr + SAMP_FUNC_DIALOG_SHOW;
uint32_t data = g_dwSAMP_Addr + SAMP_DIALOG_INFO_OFFSET;
__asm mov eax, dword ptr[data]
__asm mov ecx, dword ptr[eax]
__asm push send
__asm push button2
__asm push button1
__asm push text
__asm push caption
__asm push typedialog
__asm push dialogID
__asm call func
return;
}
Screenshot(http://prntscr.com/ljg94e) (https://www.blast.hk/redirect/aHR0cDovL3BybnRzY3IuY29tL2xqZzk0ZQ)
тогда вообще всё по пизде идёт, какая то проблема большая.
upd:
собейт это один большой пиздец, неужели на этапе создания нельзя было сделать всё по человечески
checkdasound
18.11.2018, 21:33
Какие флаги есть для неуязвимости персонажа через CPed + 0x42?
Знаю только сумму всех: 204
Nishikinov
18.11.2018, 23:31
Как получить GetVoiceID своего педа?
Неадекватная сова
18.11.2018, 23:58
Какие флаги есть для неуязвимости персонажа через CPed + 0x42?
Знаю только сумму всех: 204
#define PedSoft 0x01
#define FreezePed 0x02
#define BulletProtect 0x04
#define FireProtect 0x08
#define CollisionProtect 0x10
#define MeleeProtect 0x20
#define Unc_7bit 0x40
#define ExplosionProtect 0x80
checkdasound
19.11.2018, 00:46
Почему меня телепортирует на "спавн сампа" (центр карты вроде как), вместо тп на метку?
Код нахождения координат метки и функцию нахождения координаты z брал из собейта.
Честно говоря, я не разбираюсь в ассемблере, поэтому даже не знаю с чем это связано.
C++:
[CODE]
#define FUNC_CMessages__AddMessageJumpQ 0x69F1E0
#define FUNC_FindGroundZForCoord 0x569660
void
AddMessageJumpQ
(
PCHAR text
,
UINT time
,
USHORT flag
,
bool
bPreviousBrief
)
// Функция показа сообщения на экране.
{
(
(
void
(
__cdecl
*
)
(
PCHAR
,
UINT
,
USHORT
,
bool
)
)
FUNC_CMessages__AddMessageJumpQ
)
(
text
,
time
,
flag
,
bPreviousBrief
)
;
}
float
FindGroundZForPosition
(
float
fX
,
float
fY
)
{
//DEBUG_TRACE("FLOAT CWorldSA::FindGroundZForPosition(FLOAT fX, FLOAT fY)");
DWORD dwFunc
=
FUNC_FindGroundZForCoord
;
FLOAT fReturn
=
0
;
_asm
{
push fY
push fX
call dwFunc
fstp fReturn
add esp
,
8
}
return
fReturn
;
}
void
teleport
(
float
posX
,
float
posY
,
float
posZ
)
{
float
*
position
=
(
*
(
DWORD
*
)
0xB6F5F0
)
?
(
float
*
)
(
*
(
DWORD
*
)
(
*
(
DWORD
*
)
0xB6F5F0
+
0x14
)
+
0x30
)
:
nullptr
;
position
[
0
]
=
posX
;
position
[
1
]
=
posY
;
position
[
2
]
=
posZ
;
}
void
teleport_target_blip
(
)
{
if
(
(
*
(
int
*
)
0xBA6774
!=
0
)
)
{
float
mapPos
[
3
]
;
for
(
int
i
=
0
;
i
Почему меня телепортирует на "спавн сампа" (центр карты вроде как), вместо тп на метку?
Код нахождения координат метки и функцию нахождения координаты z брал из собейта.
Честно говоря, я не разбираюсь в ассемблере, поэтому даже не знаю с чем это связано.
C++:
[CODE]
#define FUNC_CMessages__AddMessageJumpQ 0x69F1E0
#define FUNC_FindGroundZForCoord 0x569660
void
AddMessageJumpQ
(
PCHAR text
,
UINT time
,
USHORT flag
,
bool
bPreviousBrief
)
// Функция показа сообщения на экране.
{
(
(
void
(
__cdecl
*
)
(
PCHAR
,
UINT
,
USHORT
,
bool
)
)
FUNC_CMessages__AddMessageJumpQ
)
(
text
,
time
,
flag
,
bPreviousBrief
)
;
}
float
FindGroundZForPosition
(
float
fX
,
float
fY
)
{
//DEBUG_TRACE("FLOAT CWorldSA::FindGroundZForPosition(FLOAT fX, FLOAT fY)");
DWORD dwFunc
=
FUNC_FindGroundZForCoord
;
FLOAT fReturn
=
0
;
_asm
{
push fY
push fX
call dwFunc
fstp fReturn
add esp
,
8
}
return
fReturn
;
}
void
teleport
(
float
posX
,
float
posY
,
float
posZ
)
{
float
*
position
=
(
*
(
DWORD
*
)
0xB6F5F0
)
?
(
float
*
)
(
*
(
DWORD
*
)
(
*
(
DWORD
*
)
0xB6F5F0
+
0x14
)
+
0x30
)
:
nullptr
;
position
[
0
]
=
posX
;
position
[
1
]
=
posY
;
position
[
2
]
=
posZ
;
}
void
teleport_target_blip
(
)
{
if
(
(
*
(
int
*
)
0xBA6774
!=
0
)
)
{
float
mapPos
[
3
]
;
for
(
int
i
=
0
;
i
Да там и не нужен ассемблер, просто разраб соба выебывался. Всю функцию можно заменить вот таким вот вызовом в одну строку:
C++:
float
fZ
=
(
(
float
(
__cdecl
*
)
(
float
,
float
)
)
FUNC_FindGroundZForCoord
)
(
fX
,
fY
)
;
checkdasound
19.11.2018, 14:21
Как определить версию сампа без SF API?
Как определить версию сампа без SF API?
По сигнатуре байтов.
Запускаешь нужные тебе версии сампа, и ищешь места которые различаются между версиями.
Например строку с выводом сообщения о версии самп в чат.
-raymond-
19.11.2018, 18:32
подскажите ид клавишы RIGHT SHIFT, гуглил нигде не могу найти, есть только просто SHIFT
checkdasound
19.11.2018, 19:00
подскажите ид клавишы RIGHT SHIFT, гуглил нигде не могу найти, есть только просто SHIFT
VK_RSHIFT или 0xA1
Неадекватная сова
20.11.2018, 09:15
подскажите ид клавишы RIGHT SHIFT, гуглил нигде не могу найти, есть только просто SHIFT
На будущее - List of Virtual Key Codes(http://www.kbdedit.com/manual/low_level_vk_list.html) (https://www.blast.hk/redirect/aHR0cDovL3d3dy5rYmRlZGl0LmNvbS9tYW51YWwvbG93X2xldm VsX3ZrX2xpc3QuaHRtbA)
-raymond-
20.11.2018, 14:53
где в imgui изменить шрифт текста?
Неадекватная сова
20.11.2018, 15:59
где в imgui изменить шрифт текста?
Код:
ImGuiIO& io = ImGui::GetIO(); (void)io;
io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\Arial.ttf", 15.0f, NULL, io.Fonts->GetGlyphRangesCyrillic());
-raymond-
20.11.2018, 16:44
почему вместо русского текста вопросы?
https://i.imgur.com/SisOMdf.png
почему вместо русского текста вопросы?
https://i.imgur.com/SisOMdf.png
Потому что ImGui работает только с UTF-8.
ImGui::Text(u8"Русский язык");
зачем?
В примерах ImGui это зачем-то есть, остальные просто копировали не обращая внимания.
Подскажите пожалуйста, как проверить что в массиве записаны только цифры, а если появлялась буква - false. Заранее спасибо
Подскажите пожалуйста, как проверить что в массиве записаны только цифры, а если появлялась буква - false. Заранее спасибо
C++:
std
::
string str
;
bool
bDigits
=
(
str
.
find_first_not_of
(
"0123456789"
)
==
std
::
string
::
npos
)
;
rraggerr
22.11.2018, 13:59
Как изменить направление вектора по градусам? CVector
чтобы было примерно так
rotate_vec(Vector, 45)
впервые пишу на таком языке что-либо. вот сделал ctrl c + ctrl v вх для ксго. Не подскажите, почему не работает и как вообще его компилить, чтобы был .exe?
C++:
using
System
;
using
System
.
Colletions
.
Genric
;
using
System
.
Linq
;
using
System
.
Text
;
using
System
.
Threading
.
Tasks
;
using
System
.
Diagnostics
;
namespace
GlowESP
{
class
GlowESP
{
static
void
Main
(
)
{
try
{
Process csgo
=
Process
.
GetProcessesByName
(
"csgo"
)
[
0
]
;
mem
=
new
Memory
(
"csgo"
)
;
foreach
(
ProcessModule Module in csgo
.
Modules
)
{
if
(
Module
.
ModuleName
==
"client_panorama.dll"
)
;
client_dll
=
(
int
)
Module
.
BaseAddress
}
Console
.
WriteLine
(
"lol atiz"
)
;
}
catch
{
Console
.
WriteLine
(
"Error"
)
;
}
while
(
true
)
int
LocalPlyer
=
mem
.
Read
(
client_dll
+
Offsets
.
dwLocalPlyer
)
;
int
PlayerTeam
=
mem
.
Read
(
LocalPlayer
+
Offsets
.
m_iTeamNum
)
;
for
(
int
i
=
0
;
i
(
client_dll
+
Offsets
.
dwEnityList
+
i
*
0x10
)
;
int
EnityTeam
=
mem
.
Read
(
EnityList
+
Offsets
.
m_iTeamNum
)
;
if
(
EnityTeam
!=
0
&&
EnityTeam
!=
PlayerTeam
)
{
int
GlowInedx
=
mem
.
Read
(
EnityList
+
Offsets
.
m_iGlowIndex
)
;
DrawEnity
(
GlowIndex
,
0
,
0
,
255
)
;
}
else
if
(
EnityTeam
!=
0
&&
EnityTeam
==
PlayerTeam
)
{
int
GlowInedx
=
mem
.
Read
(
EnityList
+
Offsets
.
m_iGlowIndex
)
;
DrawEnity
(
GlowIndex
,
255
,
0
,
0
)
;
}
}
}
static
void
DrawEnity
(
int
GlowIndex
,
int
red
,
int
green
,
int
blue
)
{
int
GlowObject
=
mem
.
Read
(
client_dll
+
Offsets
.
dwGlowObjectManager
)
;
mem
.
Write
(
GlowObject
+
(
GlowIndex
*
0x38
)
+
4
,
red
/
100f
)
;
mem
.
Write
(
GlowObject
+
(
GlowIndex
*
0x38
)
+
8
,
green
/
100f
)
;
mem
.
Write
(
GlowObject
+
(
GlowIndex
*
0x38
)
+
12
,
blue
/
100f
)
;
mem
.
Write
(
GlowObject
+
(
GlowIndex
*
0x38
)
+
0x10
,
255
/
100f
)
;
mem
.
Write
(
GlowObject
+
(
GlowIndex
*
0x38
)
+
0x24
,
true
)
;
mem
.
Write
(
GlowObject
+
(
GlowIndex
*
0x38
)
+
0x25
,
false
)
;
}
}
class
Offsets
{
public
const
Int32 m_ArmorValue
=
0xB270
;
public
const
Int32 m_Collision
=
0x318
;
public
const
Int32 m_CollisionGroup
=
0x470
;
public
const
Int32 m_Local
=
0x2FAC
;
public
const
Int32 m_MoveType
=
0x258
;
public
const
Int32 m_OriginalOwnerXuidHigh
=
0x31A4
;
public
const
Int32 m_OriginalOwnerXuidLow
=
0x31A0
;
public
const
Int32 m_aimPunchAngle
=
0x301C
;
public
const
Int32 m_aimPunchAngleVel
=
0x3028
;
public
const
Int32 m_bGunGameImmunity
=
0x38C0
;
public
const
Int32 m_bHasDefuser
=
0xB280
;
public
const
Int32 m_bHasHelmet
=
0xB264
;
public
const
Int32 m_bInReload
=
0x3275
;
public
const
Int32 m_bIsDefusing
=
0x38B4
;
public
const
Int32 m_bIsScoped
=
0x38AA
;
public
const
Int32 m_bSpotted
=
0x939
;
public
const
Int32 m_bSpottedByMask
=
0x97C
;
public
const
Int32 m_clrRender
=
0x70
;
public
const
Int32 m_dwBoneMatrix
=
0x2698
;
public
const
Int32 m_fAccuracyPenalty
=
0x32E0
;
public
const
Int32 m_fFlags
=
0x100
;
public
const
Int32 m_flC4Blow
=
0x2980
;
public
const
Int32 m_flDefuseCountDown
=
0x2998
;
public
const
Int32 m_flDefuseLength
=
0x2994
;
public
const
Int32 m_flFallbackWear
=
0x31B0
;
public
const
Int32 m_flFlashDuration
=
0xA32C
;
public
const
Int32 m_flFlashMaxAlpha
=
0xA328
;
public
const
Int32 m_flNextPrimaryAttack
=
0x3208
;
public
const
Int32 m_flTimerLength
=
0x2984
;
public
const
Int32 m_hActiveWeapon
=
0x2EE8
;
public
const
Int32 m_hMyWeapons
=
0x2DE8
;
public
const
Int32 m_hObserverTarget
=
0x3360
;
public
const
Int32 m_hOwner
=
0x29BC
;
public
const
Int32 m_hOwnerEntity
=
0x148
;
public
const
Int32 m_iAccountID
=
0x2FB8
;
public
const
Int32 m_iClip1
=
0x3234
;
public
const
Int32 m_iCompetitiveRanking
=
0x1A84
;
public
const
Int32 m_iCompetitiveWins
=
0x1B88
;
public
const
Int32 m_iCrosshairId
=
0xB2DC
;
public
const
Int32 m_iEntityQuality
=
0x2F9C
;
public
const
Int32 m_iFOVStart
=
0x31D8
;
public
const
Int32 m_iGlowIndex
=
0xA344
;
public
const
Int32 m_iHealth
=
0xFC
;
public
const
Int32 m_iItemDefinitionIndex
=
0x2F9A
;
public
const
Int32 m_iItemIDHigh
=
0x2FB0
;
public
const
Int32 m_iObserverMode
=
0x334C
;
public
const
Int32 m_iShotsFired
=
0xA2E0
;
public
const
Int32 m_iState
=
0x3228
;
public
const
Int32 m_iTeamNum
=
0xF0
;
public
const
Int32 m_lifeState
=
0x25B
;
public
const
Int32 m_nFallbackPaintKit
=
0x31A8
;
public
const
Int32 m_nFallbackSeed
=
0x31AC
;
public
const
Int32 m_nFallbackStatTrak
=
0x31B4
;
public
const
Int32 m_nForceBone
=
0x267C
;
public
const
Int32 m_nTickBase
=
0x3404
;
public
const
Int32 m_rgflCoordinateFrame
=
0x440
;
public
const
Int32 m_szCustomName
=
0x302C
;
public
const
Int32 m_szLastPlaceName
=
0x3588
;
public
const
Int32 m_thirdPersonViewAngles
=
0x31C8
;
public
const
Int32 m_vecOrigin
=
0x134
;
public
const
Int32 m_vecVelocity
=
0x110
;
public
const
Int32 m_vecViewOffset
=
0x104
;
public
const
Int32 m_viewPunchAngle
=
0x3010
;
public
const
Int32 clientstate_choked_commands
=
0x4CB0
;
public
const
Int32 clientstate_delta_ticks
=
0x174
;
public
const
Int32 clientstate_last_outgoing_command
=
0x4CAC
;
public
const
Int32 clientstate_net_channel
=
0x9C
;
public
const
Int32 convar_name_hash_table
=
0x2F0F8
;
public
const
Int32 dwClientState
=
0x589B34
;
public
const
Int32 dwClientState_GetLocalPlayer
=
0x180
;
public
const
Int32 dwClientState_IsHLTV
=
0x4CC8
;
public
const
Int32 dwClientState_Map
=
0x28C
;
public
const
Int32 dwClientState_MapDirectory
=
0x188
;
public
const
Int32 dwClientState_MaxPlayer
=
0x310
;
public
const
Int32 dwClientState_PlayerInfo
=
0x5240
;
public
const
Int32 dwClientState_State
=
0x108
;
public
const
Int32 dwClientState_ViewAngles
=
0x4D10
;
public
const
Int32 dwEntityList
=
0x4C41704
;
public
const
Int32 dwForceAttack
=
0x3082DEC
;
public
const
Int32 dwForceAttack2
=
0x3082DF8
;
public
const
Int32 dwForceBackward
=
0x3082E40
;
public
const
Int32 dwForceForward
=
0x3082E4C
;
public
const
Int32 dwForceJump
=
0x50E444C
;
public
const
Int32 dwForceLeft
=
0x3082DC8
;
public
const
Int32 dwForceRight
=
0x3082DBC
;
public
const
Int32 dwGameDir
=
0x627C70
;
public
const
Int32 dwGameRulesProxy
=
0x5156794
;
public
const
Int32 dwGetAllClasses
=
0xC8653C
;
public
const
Int32 dwGlobalVars
=
0x589838
;
public
const
Int32 dwGlowObjectManager
=
0x51809B0
;
public
const
Int32 dwInput
=
0x508C3C0
;
public
const
Int32 dwInterfaceLinkList
=
0x85CC34
;
public
const
Int32 dwLocalPlayer
=
0xC648AC
;
public
const
Int32 dwMouseEnable
=
0xC6A278
;
public
const
Int32 dwMouseEnablePtr
=
0xC6A248
;
public
const
Int32 dwPlayerResource
=
0x308117C
;
public
const
Int32 dwRadarBase
=
0x50763EC
;
public
const
Int32 dwSensitivity
=
0xC6A114
;
public
const
Int32 dwSensitivityPtr
=
0xC6A0E8
;
public
const
Int32 dwSetClanTag
=
0x88BD0
;
public
const
Int32 dwViewMatrix
=
0x4C33134
;
public
const
Int32 dwWeaponTable
=
0x508CE5C
;
public
const
Int32 dwWeaponTableIndex
=
0x322C
;
public
const
Int32 dwYawPtr
=
0xC69ED8
;
public
const
Int32 dwZoomSensitivityRatioPtr
=
0xC6EF98
;
public
const
Int32 dwbSendPackets
=
0xD120A
;
public
const
Int32 dwppDirect3DDevice9
=
0xA3F20
;
public
const
Int32 interface_engine_cvar
=
0x3E9EC
;
public
const
Int32 m_pStudioHdr
=
0x293C
;
public
const
Int32 m_pitchClassPtr
=
0x5076698
;
public
const
Int32 m_yawClassPtr
=
0xC69ED8
;
}
}
впервые пишу на таком языке что-либо. вот сделал ctrl c + ctrl v вх для ксго. Не подскажите, почему не работает и как вообще его компилить, чтобы был .exe?
C++:
using
System
;
using
System
.
Colletions
.
Genric
;
using
System
.
Linq
;
using
System
.
Text
;
using
System
.
Threading
.
Tasks
;
using
System
.
Diagnostics
;
namespace
GlowESP
{
class
GlowESP
{
static
void
Main
(
)
{
try
{
Process csgo
=
Process
.
GetProcessesByName
(
"csgo"
)
[
0
]
;
mem
=
new
Memory
(
"csgo"
)
;
foreach
(
ProcessModule Module in csgo
.
Modules
)
{
if
(
Module
.
ModuleName
==
"client_panorama.dll"
)
;
client_dll
=
(
int
)
Module
.
BaseAddress
}
Console
.
WriteLine
(
"lol atiz"
)
;
}
catch
{
Console
.
WriteLine
(
"Error"
)
;
}
while
(
true
)
int
LocalPlyer
=
mem
.
Read
(
client_dll
+
Offsets
.
dwLocalPlyer
)
;
int
PlayerTeam
=
mem
.
Read
(
LocalPlayer
+
Offsets
.
m_iTeamNum
)
;
for
(
int
i
=
0
;
i
(
client_dll
+
Offsets
.
dwEnityList
+
i
*
0x10
)
;
int
EnityTeam
=
mem
.
Read
(
EnityList
+
Offsets
.
m_iTeamNum
)
;
if
(
EnityTeam
!=
0
&&
EnityTeam
!=
PlayerTeam
)
{
int
GlowInedx
=
mem
.
Read
(
EnityList
+
Offsets
.
m_iGlowIndex
)
;
DrawEnity
(
GlowIndex
,
0
,
0
,
255
)
;
}
else
if
(
EnityTeam
!=
0
&&
EnityTeam
==
PlayerTeam
)
{
int
GlowInedx
=
mem
.
Read
(
EnityList
+
Offsets
.
m_iGlowIndex
)
;
DrawEnity
(
GlowIndex
,
255
,
0
,
0
)
;
}
}
}
static
void
DrawEnity
(
int
GlowIndex
,
int
red
,
int
green
,
int
blue
)
{
int
GlowObject
=
mem
.
Read
(
client_dll
+
Offsets
.
dwGlowObjectManager
)
;
mem
.
Write
(
GlowObject
+
(
GlowIndex
*
0x38
)
+
4
,
red
/
100f
)
;
mem
.
Write
(
GlowObject
+
(
GlowIndex
*
0x38
)
+
8
,
green
/
100f
)
;
mem
.
Write
(
GlowObject
+
(
GlowIndex
*
0x38
)
+
12
,
blue
/
100f
)
;
mem
.
Write
(
GlowObject
+
(
GlowIndex
*
0x38
)
+
0x10
,
255
/
100f
)
;
mem
.
Write
(
GlowObject
+
(
GlowIndex
*
0x38
)
+
0x24
,
true
)
;
mem
.
Write
(
GlowObject
+
(
GlowIndex
*
0x38
)
+
0x25
,
false
)
;
}
}
class
Offsets
{
public
const
Int32 m_ArmorValue
=
0xB270
;
public
const
Int32 m_Collision
=
0x318
;
public
const
Int32 m_CollisionGroup
=
0x470
;
public
const
Int32 m_Local
=
0x2FAC
;
public
const
Int32 m_MoveType
=
0x258
;
public
const
Int32 m_OriginalOwnerXuidHigh
=
0x31A4
;
public
const
Int32 m_OriginalOwnerXuidLow
=
0x31A0
;
public
const
Int32 m_aimPunchAngle
=
0x301C
;
public
const
Int32 m_aimPunchAngleVel
=
0x3028
;
public
const
Int32 m_bGunGameImmunity
=
0x38C0
;
public
const
Int32 m_bHasDefuser
=
0xB280
;
public
const
Int32 m_bHasHelmet
=
0xB264
;
public
const
Int32 m_bInReload
=
0x3275
;
public
const
Int32 m_bIsDefusing
=
0x38B4
;
public
const
Int32 m_bIsScoped
=
0x38AA
;
public
const
Int32 m_bSpotted
=
0x939
;
public
const
Int32 m_bSpottedByMask
=
0x97C
;
public
const
Int32 m_clrRender
=
0x70
;
public
const
Int32 m_dwBoneMatrix
=
0x2698
;
public
const
Int32 m_fAccuracyPenalty
=
0x32E0
;
public
const
Int32 m_fFlags
=
0x100
;
public
const
Int32 m_flC4Blow
=
0x2980
;
public
const
Int32 m_flDefuseCountDown
=
0x2998
;
public
const
Int32 m_flDefuseLength
=
0x2994
;
public
const
Int32 m_flFallbackWear
=
0x31B0
;
public
const
Int32 m_flFlashDuration
=
0xA32C
;
public
const
Int32 m_flFlashMaxAlpha
=
0xA328
;
public
const
Int32 m_flNextPrimaryAttack
=
0x3208
;
public
const
Int32 m_flTimerLength
=
0x2984
;
public
const
Int32 m_hActiveWeapon
=
0x2EE8
;
public
const
Int32 m_hMyWeapons
=
0x2DE8
;
public
const
Int32 m_hObserverTarget
=
0x3360
;
public
const
Int32 m_hOwner
=
0x29BC
;
public
const
Int32 m_hOwnerEntity
=
0x148
;
public
const
Int32 m_iAccountID
=
0x2FB8
;
public
const
Int32 m_iClip1
=
0x3234
;
public
const
Int32 m_iCompetitiveRanking
=
0x1A84
;
public
const
Int32 m_iCompetitiveWins
=
0x1B88
;
public
const
Int32 m_iCrosshairId
=
0xB2DC
;
public
const
Int32 m_iEntityQuality
=
0x2F9C
;
public
const
Int32 m_iFOVStart
=
0x31D8
;
public
const
Int32 m_iGlowIndex
=
0xA344
;
public
const
Int32 m_iHealth
=
0xFC
;
public
const
Int32 m_iItemDefinitionIndex
=
0x2F9A
;
public
const
Int32 m_iItemIDHigh
=
0x2FB0
;
public
const
Int32 m_iObserverMode
=
0x334C
;
public
const
Int32 m_iShotsFired
=
0xA2E0
;
public
const
Int32 m_iState
=
0x3228
;
public
const
Int32 m_iTeamNum
=
0xF0
;
public
const
Int32 m_lifeState
=
0x25B
;
public
const
Int32 m_nFallbackPaintKit
=
0x31A8
;
public
const
Int32 m_nFallbackSeed
=
0x31AC
;
public
const
Int32 m_nFallbackStatTrak
=
0x31B4
;
public
const
Int32 m_nForceBone
=
0x267C
;
public
const
Int32 m_nTickBase
=
0x3404
;
public
const
Int32 m_rgflCoordinateFrame
=
0x440
;
public
const
Int32 m_szCustomName
=
0x302C
;
public
const
Int32 m_szLastPlaceName
=
0x3588
;
public
const
Int32 m_thirdPersonViewAngles
=
0x31C8
;
public
const
Int32 m_vecOrigin
=
0x134
;
public
const
Int32 m_vecVelocity
=
0x110
;
public
const
Int32 m_vecViewOffset
=
0x104
;
public
const
Int32 m_viewPunchAngle
=
0x3010
;
public
const
Int32 clientstate_choked_commands
=
0x4CB0
;
public
const
Int32 clientstate_delta_ticks
=
0x174
;
public
const
Int32 clientstate_last_outgoing_command
=
0x4CAC
;
public
const
Int32 clientstate_net_channel
=
0x9C
;
public
const
Int32 convar_name_hash_table
=
0x2F0F8
;
public
const
Int32 dwClientState
=
0x589B34
;
public
const
Int32 dwClientState_GetLocalPlayer
=
0x180
;
public
const
Int32 dwClientState_IsHLTV
=
0x4CC8
;
public
const
Int32 dwClientState_Map
=
0x28C
;
public
const
Int32 dwClientState_MapDirectory
=
0x188
;
public
const
Int32 dwClientState_MaxPlayer
=
0x310
;
public
const
Int32 dwClientState_PlayerInfo
=
0x5240
;
public
const
Int32 dwClientState_State
=
0x108
;
public
const
Int32 dwClientState_ViewAngles
=
0x4D10
;
public
const
Int32 dwEntityList
=
0x4C41704
;
public
const
Int32 dwForceAttack
=
0x3082DEC
;
public
const
Int32 dwForceAttack2
=
0x3082DF8
;
public
const
Int32 dwForceBackward
=
0x3082E40
;
public
const
Int32 dwForceForward
=
0x3082E4C
;
public
const
Int32 dwForceJump
=
0x50E444C
;
public
const
Int32 dwForceLeft
=
0x3082DC8
;
public
const
Int32 dwForceRight
=
0x3082DBC
;
public
const
Int32 dwGameDir
=
0x627C70
;
public
const
Int32 dwGameRulesProxy
=
0x5156794
;
public
const
Int32 dwGetAllClasses
=
0xC8653C
;
public
const
Int32 dwGlobalVars
=
0x589838
;
public
const
Int32 dwGlowObjectManager
=
0x51809B0
;
public
const
Int32 dwInput
=
0x508C3C0
;
public
const
Int32 dwInterfaceLinkList
=
0x85CC34
;
public
const
Int32 dwLocalPlayer
=
0xC648AC
;
public
const
Int32 dwMouseEnable
=
0xC6A278
;
public
const
Int32 dwMouseEnablePtr
=
0xC6A248
;
public
const
Int32 dwPlayerResource
=
0x308117C
;
public
const
Int32 dwRadarBase
=
0x50763EC
;
public
const
Int32 dwSensitivity
=
0xC6A114
;
public
const
Int32 dwSensitivityPtr
=
0xC6A0E8
;
public
const
Int32 dwSetClanTag
=
0x88BD0
;
public
const
Int32 dwViewMatrix
=
0x4C33134
;
public
const
Int32 dwWeaponTable
=
0x508CE5C
;
public
const
Int32 dwWeaponTableIndex
=
0x322C
;
public
const
Int32 dwYawPtr
=
0xC69ED8
;
public
const
Int32 dwZoomSensitivityRatioPtr
=
0xC6EF98
;
public
const
Int32 dwbSendPackets
=
0xD120A
;
public
const
Int32 dwppDirect3DDevice9
=
0xA3F20
;
public
const
Int32 interface_engine_cvar
=
0x3E9EC
;
public
const
Int32 m_pStudioHdr
=
0x293C
;
public
const
Int32 m_pitchClassPtr
=
0x5076698
;
public
const
Int32 m_yawClassPtr
=
0xC69ED8
;
}
}
Это вообще C#. MVS установи там и компиль.
MILLKISI
25.11.2018, 04:17
"Записываешь 6 инструкций NOP (0x90) по адресу 0x747483"
Как сделать это на языке Assembler? Ибо при попытке сделать через memset, игра просто висит 5 секунд в процессах и исчезает.
C++:
VirtualProtect
(
(
PVOID
)
ADDR_BYPASS_VIDS_USA10
,
6
,
PAGE_EXECUTE_READWRITE
,
&
ds
)
;
memset
(
(
PVOID
)
ADDR_BYPASS_VIDS_USA10
,
0x90
,
6
)
;
Но если тут все правильно, а он зависает, то получается, лучше на Assembler, вопрос, как это сделать? Ибо с этим язык в жизни не сталкивался
Как сделать это на языке Assembler?
Код:
nop
nop
nop
nop
nop
nop
MILLKISI
25.11.2018, 11:31
Код:
nop
nop
nop
nop
nop
nop
Я окончательно запуталась, ибо с assembler я еще в жизни не встречалась.
C++:
void
CALLBACK
pogoda
(
string param
)
{
if
(
param
.
empty
(
)
)
return
;
int
i
=
stoi
(
param
)
;
float
sas
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
->
pPlayerData
->
fActorHealth
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
0xF70000
,
"HP - %f "
,
sas
)
;
}
;
хочу получать свой хп, ошибки?)
Ибо с этим язык в жизни не сталкивался
Я окончательно запуталась
Ты там ночью пол сменило?
с assembler я еще в жизни не встречалась.
зачем тогда спрашиваешь как это сделать в асм?
C++:
void
CALLBACK
pogoda
(
string param
)
{
if
(
param
.
empty
(
)
)
return
;
int
i
=
stoi
(
param
)
;
float
sas
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
->
pPlayerData
->
fActorHealth
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
0xF70000
,
"HP - %f "
,
sas
)
;
}
;
хочу получать свой хп, ошибки?)
ты локал плеер, а не ремот. ремот все кроме тебя
Неадекватная сова
25.11.2018, 14:36
C++:
void
CALLBACK
pogoda
(
string param
)
{
if
(
param
.
empty
(
)
)
return
;
int
i
=
stoi
(
param
)
;
float
sas
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
->
pPlayerData
->
fActorHealth
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
0xF70000
,
"HP - %f "
,
sas
)
;
}
;
хочу получать свой хп, ошибки?)
Код:
int sas = PEDSELF->GetHealth();
SF->getSAMP()->getChat()->AddChatMessage(0xF70000, "HP - %d", sas );
MILLKISI
25.11.2018, 22:05
Что может быть не так? GTA не воспринимает изменения памяти, делала вроде бы все правильно.
C++:
#include "stdafx.h"
#include
#include "SA SDK/install.h"
#define adress_game_started 0xBA6831
#define adress_menu 0xBA67A4
#define adress_game_start 0xBA677B
#define adress_game_state 0xC8D4C0
BOOL WINAPI
DllMain
(
HINSTANCE hinstDLL
,
DWORD fdwReason
,
LPVOID lpvReserved
)
{
switch
(
fdwReason
)
{
case
DLL_PROCESS_ATTACH
:
{
SA
->
SALibrary
->
w_VirtualProtect
(
0x866CD8
,
5
)
;
*
(
BYTE
*
)
adress_game_state
=
5
;
*
(
BYTE
*
)
adress_game_started
=
1
;
*
(
BYTE
*
)
adress_menu
=
0
;
*
(
BYTE
*
)
adress_game_start
=
0
;
}
case
DLL_PROCESS_DETACH
:
break
;
}
return
TRUE
;
}
Неадекватная сова
25.11.2018, 23:01
Что может быть не так? GTA не воспринимает изменения памяти, делала вроде бы все правильно.
C++:
#include "stdafx.h"
#include
#include "SA SDK/install.h"
#define adress_game_started 0xBA6831
#define adress_menu 0xBA67A4
#define adress_game_start 0xBA677B
#define adress_game_state 0xC8D4C0
BOOL WINAPI
DllMain
(
HINSTANCE hinstDLL
,
DWORD fdwReason
,
LPVOID lpvReserved
)
{
switch
(
fdwReason
)
{
case
DLL_PROCESS_ATTACH
:
{
SA
->
SALibrary
->
w_VirtualProtect
(
0x866CD8
,
5
)
;
*
(
BYTE
*
)
adress_game_state
=
5
;
*
(
BYTE
*
)
adress_game_started
=
1
;
*
(
BYTE
*
)
adress_menu
=
0
;
*
(
BYTE
*
)
adress_game_start
=
0
;
}
case
DLL_PROCESS_DETACH
:
break
;
}
return
TRUE
;
}
Какой смысл от этого, если ты даже не пишешь ничего в этот адрес?
Код:
SA->SALibrary->w_VirtualProtect(0x866CD8, 5);
Попробуй поставить VirtualProtect на:
Код:
#define adress_game_started 0xBA6831
#define adress_menu 0xBA67A4
#define adress_game_start 0xBA677B
#define adress_game_state 0xC8D4C0
Подскажите почему крашит
C++:
static
char
*
test
[
2
]
;
ImGui
::
InputText
(
u8
"№1"
,
test
[
0
]
,
sizeof
(
test
[
0
]
)
)
;
ImGui
::
InputText
(
u8
"№2"
,
test
[
1
]
,
sizeof
(
test
[
1
]
)
)
;
MILLKISI
25.11.2018, 23:38
Какой смысл от этого, если ты даже не пишешь ничего в этот адрес?
Код:
SA->SALibrary->w_VirtualProtect(0x866CD8, 5);
Попробуй поставить VirtualProtect на:
Код:
#define adress_game_started 0xBA6831
#define adress_menu 0xBA67A4
#define adress_game_start 0xBA677B
#define adress_game_state 0xC8D4C0
К сожалению ничего не изменилось.
Подскажите почему крашит
C++:
static
char
*
test
[
2
]
;
Потому что нужен именно массив, а не указатель.
В твоем случае двухмерный массив.
Почему при записи русских символов - иероглифы ?
C++:
static
char
test
[
512
]
[
512
]
;
ImGui
::
InputText
(
"#1"
,
test
[
0
]
,
_countof
(
test
[
0
]
)
)
;
Неадекватная сова
26.11.2018, 00:33
Почему при записи русских символов - иероглифы ?
C++:
static
char
test
[
512
]
[
512
]
;
ImGui
::
InputText
(
"#1"
,
test
[
0
]
,
_countof
(
test
[
0
]
)
)
;
Нужно использовать кодировку UTF8 - u8"Тест"
Подскажите, почему кнопка "очистить" срабатывает только на 1-ю строчку, а остальные кнопки не очищают свои строки
C++:
char
MSG
[
5
]
[
1024
]
=
{
"null"
,
"null"
,
"null"
,
"null"
,
"null"
}
;
void
MSGButton
(
int
number
)
{
ImGui
::
SameLine
(
)
;
if
(
ImGui
::
Button
(
u8
"Очистить"
)
)
{
sprintf
(
MSG
[
number
]
,
"null"
)
;
}
}
ImGui
::
InputText
(
"#1"
,
MSG
[
0
]
,
_countof
(
MSG
[
0
]
)
)
;
MSGButton
(
0
)
;
ImGui
::
InputText
(
"#2"
,
MSG
[
1
]
,
_countof
(
MSG
[
1
]
)
)
;
MSGButton
(
1
)
;
ImGui
::
InputText
(
"#3"
,
MSG
[
2
]
,
_countof
(
MSG
[
2
]
)
)
;
MSGButton
(
2
)
;
ImGui
::
InputText
(
"#4"
,
MSG
[
3
]
,
_countof
(
MSG
[
3
]
)
)
;
MSGButton
(
3
)
;
ImGui
::
InputText
(
"#5"
,
MSG
[
4
]
,
_countof
(
MSG
[
4
]
)
)
;
MSGButton
(
4
)
;
Screenshot(http://prntscr.com/lmvmhe) (https://www.blast.hk/redirect/aHR0cDovL3BybnRzY3IuY29tL2xtdm1oZQ)
jenekbueno
26.11.2018, 20:23
возможно как то в гташке сделать скрин без задержки?
юзаю CGame->TakeScreenshot в игровом потоке - микрофриз, логично, ок
юзаю эту же функцию но в новом потоке, созданный через _beginthread / CreateThread, сохраняется чёрный экран
есть ещё какой нибудь метод помимо TakeScreenshot(char * szFileName) ?
iAmerican
26.11.2018, 21:37
возможно как то в гташке сделать скрин без задержки?
юзаю CGame->TakeScreenshot в игровом потоке - микрофриз, логично, ок
юзаю эту же функцию но в новом потоке, созданный через _beginthread / CreateThread, сохраняется чёрный экран
есть ещё какой нибудь метод помимо TakeScreenshot(char * szFileName) ?
IDirect3DSurface9
возможно как то в гташке сделать скрин без задержки?
юзаю CGame->TakeScreenshot в игровом потоке - микрофриз, логично, ок
юзаю эту же функцию но в новом потоке, созданный через _beginthread / CreateThread, сохраняется чёрный экран
есть ещё какой нибудь метод помимо TakeScreenshot(char * szFileName) ?
в вк напиши)
jenekbueno
26.11.2018, 22:45
IDirect3DSurface9
твоя проницательность здесь не к месту с таким ответом.
демас - лаффки.
Есть ли какая то библиотека с хуками и отправкой пакетов на с++?
Подключал имгуи по гайду, столкнулся с такой проблемой
Imgur: The magic of the Internet(https://imgur.com/a/ZDLql0I) (https://imgur.com/a/ZDLql0I)
Подскажите что делать
iAmerican
28.11.2018, 17:17
Подключал имгуи по гайду, столкнулся с такой проблемой
Imgur: The magic of the Internet(https://imgur.com/a/ZDLql0I) (https://imgur.com/a/ZDLql0I)
Подскажите что делать
помог
DarkP1xel
28.11.2018, 18:20
Как компилировать?
Ctrl + Shift + B В открытом проекте VS.
rraggerr
29.11.2018, 14:32
Как изменить направление вектора по градусам? CVector
чтобы было примерно так
rotate_vec(Vector, 45)
Успешно настроил проект под plugin-sdk, взял простой пример с интернета:
C++:
#include "plugin.h"
#include "CMessages.h"
using
namespace
plugin
;
class
scoreboard
{
public
:
scoreboard
(
)
{
Events
::
gameProcessEvent
+=
[
]
{
if
(
KeyPressed
(
VK_F2
)
)
{
CMessages
::
AddMessageJumpQ
(
"You have set time to ~b~12:00"
,
3000
,
0
,
false
)
;
}
}
;
}
}
_scoreboard
;
Нажимаю F2 и 0 эмоций. Есть какой-нибудь лог что происходит с плагином?
rraggerr
29.11.2018, 18:13
Успешно настроил проект под plugin-sdk, взял простой пример с интернета:
C++:
#include "plugin.h"
#include "CMessages.h"
using
namespace
plugin
;
class
scoreboard
{
public
:
scoreboard
(
)
{
Events
::
gameProcessEvent
+=
[
]
{
if
(
KeyPressed
(
VK_F2
)
)
{
CMessages
::
AddMessageJumpQ
(
"You have set time to ~b~12:00"
,
3000
,
0
,
false
)
;
}
}
;
}
}
_scoreboard
;
Нажимаю F2 и 0 эмоций. Есть какой-нибудь лог что происходит с плагином?
дебагер
дебагер
компелится то всё нормально, где можно почитать больше о аси плагинах? я нашел минимум инфы. По тому же муну инфы больше
rraggerr
29.11.2018, 18:18
компелится то всё нормально, где можно почитать больше о аси плагинах? я нашел минимум инфы. По тому же муну инфы больше
Просто ты ток в луа шариш)0
В отладке - приконектится к процессу - там выбираешь гтаса(можно еще запускать через локальный отладчик)
Далее ставишь бряки там где тебе что то не понятно(ПКМ по строчке) после того как поставишь - тебе будет выдавать в окошке значение которое вернула функция
Просто ты ток в луа шариш)0
В отладке - приконектится к процессу - там выбираешь гтаса(можно еще запускать через локальный отладчик)
Далее ставишь бряки там где тебе что то не понятно(ПКМ по строчке) после того как поставишь - тебе будет выдавать в окошке значение которое вернула функция
позовите другого оператора, этот сломался. другими словами ты объяснять не умеешь.
rraggerr
29.11.2018, 18:23
позовите другого оператора, этот сломался. другими словами ты объяснять не умеешь.
я тебе дал инструкцию как подключать дебагер и посмотреть что там не так, вспоминаю времена когда меня учили луа, вот ты сейчас в таком же положении)
я тебе дал инструкцию как подключать дебагер и посмотреть что там не так, вспоминаю времена когда меня учили луа, вот ты сейчас в таком же положении)
Вроде нашел, спасибо
Есть ли вики по плагин-сдк?
rraggerr
29.11.2018, 18:34
Вроде нашел, спасибо
Есть ли вики по плагин-сдк?
Скорее всего нет, это ведь сдк)
Скорее всего нет, это ведь сдк)
https://forum.antichat.xyz/attachments/27275761/
Не втыкаю что дальше? Точки остановки делать?
rraggerr
29.11.2018, 18:41
Не втыкаю что дальше? Точки остановки делать?
ну да
ну да
И ничего не происходит( Как же тут всё не как в луа(
rraggerr
29.11.2018, 18:44
И ничего не происходит( Как же тут всё не как в луа(
Я не шарю в плагин сдк, но в сампфунксе все выполняется в MainLoop(бесконечный цикл) , а по тому что ты скидываешь, это просто класс
Azller Lollison
29.11.2018, 19:09
Не втыкаю что дальше? Точки остановки делать?
Судя по скрину, у тебя отсутствует DllMain.
C++:
void
yourMainCycle
(
void
*
)
{
//put your stuff there
}
C++:
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
switch
(
dwReasonForCall
)
{
case
DLL_PROCESS_ATTACH
:
_beginthread
(
yourMainCycle
,
NULL
,
NULL
)
;
break
;
case
DLL_THREAD_ATTACH
:
case
DLL_THREAD_DETACH
:
case
DLL_PROCESS_DETACH
:
break
;
}
return
TRUE
;
}
Судя по скрину, у тебя отсутствует DllMain.
C++:
void
yourMainCycle
(
void
*
)
{
//put your stuff there
}
C++:
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
switch
(
dwReasonForCall
)
{
case
DLL_PROCESS_ATTACH
:
_beginthread
(
yourMainCycle
,
NULL
,
NULL
)
;
break
;
case
DLL_THREAD_ATTACH
:
case
DLL_THREAD_DETACH
:
case
DLL_PROCESS_DETACH
:
break
;
}
return
TRUE
;
}
где искать инфу то. неужели все через вопросы?
rraggerr
29.11.2018, 19:16
где искать инфу то. неужели все через вопросы?
Открывай файлики и смотри че там за функции, классы, может есть вики, но в сф все делается именно так
Судя по скрину, у тебя отсутствует DllMain.
C++:
void
yourMainCycle
(
void
*
)
{
//put your stuff there
}
C++:
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
switch
(
dwReasonForCall
)
{
case
DLL_PROCESS_ATTACH
:
_beginthread
(
yourMainCycle
,
NULL
,
NULL
)
;
break
;
case
DLL_THREAD_ATTACH
:
case
DLL_THREAD_DETACH
:
case
DLL_PROCESS_DETACH
:
break
;
}
return
TRUE
;
}
зачем для плагин-сдк dllmain?
Не втыкаю что дальше? Точки остановки делать?
тестишь в сампе?
если да, то:
C++:
Events
::
initRwEvent
+=
[
]
{
Events
::
gameProcessEvent
+=
[
]
{
// code
}
;
}
;
Как в имгуи, разместить чекбоксы в столбик?
Musaigen
30.11.2018, 22:36
Как в имгуи, разместить чекбоксы в столбик?
Что? Просто добавить ImGui::Checkbox("label", &variable);
Что? Просто добавить ImGui::Checkbox("label", &variable);
ой, не правильно сформулировал вопрос, как сделать так, чтоб чекбоксы были в 2 столбика?
Musaigen
30.11.2018, 23:05
ой, не правильно сформулировал вопрос, как сделать так, чтоб чекбоксы были в 2 столбика?
Если у тебя ряд чекбоксов то
C++:
ImGui
::
BeginGroup
(
)
;
// checkboxes
ImGui
::
EndGroup
(
)
;
ImGui
::
SameLine
(
)
;
// тоже самое
либо ImGui::SameLine();
rraggerr
01.12.2018, 07:47
Как изменить направление вектора по градусам? CVector
чтобы было примерно так
rotate_vec(Vector, 45)
Уп
Как можно создать такую вкладку?
Как можно создать такую вкладку?
C++:
ImGui
::
CollapsingHeader
(
const
char
*
label
)
;
Неадекватная сова
01.12.2018, 11:38
Как изменить направление вектора по градусам? CVector
чтобы было примерно так
rotate_vec(Vector, 45)
Уп
Это конечно все не точно, но может тебе даст направление
Код:
// get player matrix
CMatrix matPed;
pPedSelf->GetMatrix(&matPed);
// tilt player upright
CVector rotationAxis = g_vecUpNormal;
rotationAxis.CrossProduct( &matPed.vUp );
float theta = ( matPed.vUp.DotProduct( &g_vecUpNormal ) );
if ( !near_zero(theta) )
{
matPed = matPed.Rotate( &rotationAxis, cos(theta) );
// normalize everything
matPed.vFront.Normalize();
matPed.vRight.Normalize();
matPed.vUp.Normalize();
// zero near zero
matPed.vFront.ZeroNearZero();
matPed.vRight.ZeroNearZero();
matPed.vUp.ZeroNearZero();
// set player matrix
pPedSelf->SetMatrix(&matPed);
Код:
CMatrix Rotate ( const CVector * param, float theta )
{
// Rotate the rotation matrix
double sin_t = sinf( theta ), cos_t = cosf( theta );
CMatrix mRotateMult;
// rotate X
mRotateMult.vRight.fX = (double) cos_t + ( 1.0f - cos_t ) * param->fX * param->fX;
mRotateMult.vRight.fY = (double) ( 1.0f - cos_t ) * param->fX * param->fY - sin_t * param->fZ;
mRotateMult.vRight.fZ = (double) ( 1.0f - cos_t ) * param->fX * param->fZ + sin_t * param->fY;
// rotate Y
mRotateMult.vFront.fX = (double) ( 1.0f - cos_t ) * param->fY * param->fX + sin_t * param->fZ;
mRotateMult.vFront.fY = (double) cos_t + ( 1.0f - cos_t ) * param->fY * param->fY;
mRotateMult.vFront.fZ = (double) ( 1.0f - cos_t ) * param->fY * param->fZ - sin_t * param->fX;
// rotate Z
mRotateMult.vUp.fX = (double) ( 1.0f - cos_t ) * param->fZ * param->fX - sin_t * param->fY;
mRotateMult.vUp.fY = (double) ( 1.0f - cos_t ) * param->fZ * param->fY + sin_t * param->fX;
mRotateMult.vUp.fZ = (double) cos_t + ( 1.0f - cos_t ) * param->fZ * param->fZ;
// multiply matrix
mRotateMult = mRotateMult * (*this);
// set vectors
mRotateMult.vPos = vPos;
// return
return mRotateMult;
}
Попробуй еще сам поковыряться в сурсах собейта. По сути можно найти функцию которая срабатывает на Backspace. Она разворачивает кар на 180 градусов. Видимо тебя это интересует
rraggerr
01.12.2018, 12:16
Это конечно все не точно, но может тебе даст направление
Код:
// get player matrix
CMatrix matPed;
pPedSelf->GetMatrix(&matPed);
// tilt player upright
CVector rotationAxis = g_vecUpNormal;
rotationAxis.CrossProduct( &matPed.vUp );
float theta = ( matPed.vUp.DotProduct( &g_vecUpNormal ) );
if ( !near_zero(theta) )
{
matPed = matPed.Rotate( &rotationAxis, cos(theta) );
// normalize everything
matPed.vFront.Normalize();
matPed.vRight.Normalize();
matPed.vUp.Normalize();
// zero near zero
matPed.vFront.ZeroNearZero();
matPed.vRight.ZeroNearZero();
matPed.vUp.ZeroNearZero();
// set player matrix
pPedSelf->SetMatrix(&matPed);
Код:
CMatrix Rotate ( const CVector * param, float theta )
{
// Rotate the rotation matrix
double sin_t = sinf( theta ), cos_t = cosf( theta );
CMatrix mRotateMult;
// rotate X
mRotateMult.vRight.fX = (double) cos_t + ( 1.0f - cos_t ) * param->fX * param->fX;
mRotateMult.vRight.fY = (double) ( 1.0f - cos_t ) * param->fX * param->fY - sin_t * param->fZ;
mRotateMult.vRight.fZ = (double) ( 1.0f - cos_t ) * param->fX * param->fZ + sin_t * param->fY;
// rotate Y
mRotateMult.vFront.fX = (double) ( 1.0f - cos_t ) * param->fY * param->fX + sin_t * param->fZ;
mRotateMult.vFront.fY = (double) cos_t + ( 1.0f - cos_t ) * param->fY * param->fY;
mRotateMult.vFront.fZ = (double) ( 1.0f - cos_t ) * param->fY * param->fZ - sin_t * param->fX;
// rotate Z
mRotateMult.vUp.fX = (double) ( 1.0f - cos_t ) * param->fZ * param->fX - sin_t * param->fY;
mRotateMult.vUp.fY = (double) ( 1.0f - cos_t ) * param->fZ * param->fY + sin_t * param->fX;
mRotateMult.vUp.fZ = (double) cos_t + ( 1.0f - cos_t ) * param->fZ * param->fZ;
// multiply matrix
mRotateMult = mRotateMult * (*this);
// set vectors
mRotateMult.vPos = vPos;
// return
return mRotateMult;
}
Попробуй еще сам поковыряться в сурсах собейта. По сути можно найти функцию которая срабатывает на Backspace. Она разворачивает кар на 180 градусов. Видимо тебя это интересует
Примерно да
Как изменить направление вектора по градусам? CVector
чтобы было примерно так
rotate_vec(Vector, 45)
Уп
по какой из осей?
rraggerr
01.12.2018, 15:37
по какой из осей?
право-лево, в сампе это вроде X
А ваще, надо весь вектор повернуть
iAmerican
01.12.2018, 16:13
ой, не правильно сформулировал вопрос, как сделать так, чтоб чекбоксы были в 2 столбика?
ImGui::Columns(2,"name(любое)",false)
чекбокс
чекбокс
ImGui::NextColumns()
Чекбокс
чекбокс
ImGui::Columns(1) // закрывающий колумнс
MILLKISI
01.12.2018, 16:52
как в single убрать людей и транспорт(весь)?
право-лево, в сампе это вроде X
А ваще, надо весь вектор повернуть
Вот тебе функция гонщика, вращающая XY
AsiBase(https://git.prime-hack.net/SR_team/AsiBase/src/branch/master/CGame/Types.cpp#L23) (https://www.blast.hk/redirect/aHR0cHM6Ly9naXQucHJpbWUtaGFjay5uZXQvU1JfdGVhbS9Bc2 lCYXNlL3NyYy9icmFuY2gvbWFzdGVyL0NHYW1lL1R5cGVzLmNw cCNMMjM)
Как правильно числа записывать в const char *? Не совсем понимаю, а загуглить правильно не выходит
Как правильно числа записывать в const char *? Не совсем понимаю, а загуглить правильно не выходит
тебе надо tostring? to_string - C++ Reference(http://www.cplusplus.com/reference/string/to_string/) (https://www.blast.hk/redirect/aHR0cDovL3d3dy5jcGx1c3BsdXMuY29tL3JlZmVyZW5jZS9zdH JpbmcvdG9fc3RyaW5nLw)
тебе надо tostring? to_string - C++ Reference(http://www.cplusplus.com/reference/string/to_string/) (https://www.blast.hk/redirect/aHR0cDovL3d3dy5jcGx1c3BsdXMuY29tL3JlZmVyZW5jZS9zdH JpbmcvdG9fc3RyaW5nLw)
ImGui::Selectable(std::to_string(i), selected);
хмхмхм
ImGui::Selectable(std::to_string(i), selected);
хмхмхм
std::to_string(i).c_str()
Как скрыть, или хотя бы запретить передвижение этой палки)
MILLKISI
02.12.2018, 16:31
как в single убрать npc и машины?
iAmerican
02.12.2018, 16:31
Как скрыть, или хотя бы запретить передвижение этой палки)
ImGui::Columns последний параметр на false
-raymond-
07.12.2018, 16:04
как записать в строку в файле текст?
должно работать так:
если строка пустая, то в нее записывается ник который в массиве
текстовик:
https://i.imgur.com/SxnSnud.png
код:
C++:
void
CALLBACK
addAdmCMD
(
std
::
string param
)
{
if
(
param
.
empty
(
)
)
return
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Используйте: /addadm [ник]"
)
;
char
nick
[
SAMP_MAX_PLAYER_NAME
]
;
if
(
sscanf
(
param
.
c_str
(
)
,
"%s"
,
&
nick
)
)
{
FILE
*
fp
;
char
WorkingDir
[
MAX_PATH
]
,
IniFile
[
MAX_PATH
]
;
GetCurrentDirectory
(
_countof
(
WorkingDir
)
,
WorkingDir
)
;
sprintf_s
(
IniFile
,
"%s\\SAMPFUNCS\\artsob\\admins.ini"
,
WorkingDir
)
;
fp
=
fopen
(
IniFile
,
"r"
)
;
if
(
fp
)
{
for
(
int
i
=
NULL
;
i
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Записан"
)
;
sprintf
(
admin_list
[
i
]
,
"%s"
,
nick
)
;
break
;
}
else
continue
;
}
}
}
return
;
}
fp = fopen(IniFile, "r");
r+
хелп. Почему краш?
C++:
SF
->
getCLEO
(
)
->
callOpcode
(
"0B44: samp 0@ = create_3d_text \"asd\" color 0xFFFFFFFF position 2132.0054 1394.1887 10.8203 view_distance 50.0 show_behind_walls true attached_to_player -1 attached_to_vehicle -1"
)
;
-raymond-
08.12.2018, 09:26
как проверить что пуля пролетела через стену в игрока?
Неадекватная сова
08.12.2018, 12:59
хелп. Почему краш?
C++:
SF
->
getCLEO
(
)
->
callOpcode
(
"0B44: samp 0@ = create_3d_text \"asd\" color 0xFFFFFFFF position 2132.0054 1394.1887 10.8203 view_distance 50.0 show_behind_walls true attached_to_player -1 attached_to_vehicle -1"
)
;
Юзай функцию из SF API
Код:
SF->getSAMP()->getInfo()->pPools->pText3D->Create3DText();
Почему при очищении памяти ошибка?
C++:
[CODE]
char
*
DeleteChar
(
char
*
ch
,
int
strtCh
)
{
int
s
=
SizeChar
(
ch
)
,
i
;
char
*
tnp
=
new
char
[
s
-
1
]
;
for
(
i
=
0
;
i
Юзай функцию из SF API
Код:
SF->getSAMP()->getInfo()->pPools->pText3D->Create3DText();
А где можно найти все функции СФ АПИ? Пробовал найти эту же функцию, но не нашел и решил использовать опкод напрямую.
Неадекватная сова
08.12.2018, 16:09
А где можно найти все функции СФ АПИ? Пробовал найти эту же функцию, но не нашел и решил использовать опкод напрямую.
SFSAMP.h
А как можно создать ASI скрипт с функциями SampFuncs'a?
А как можно создать ASI скрипт с функциями SampFuncs'a?
LoadLibrary
GetProcAddress
Как создать 3dtext из переменной?
Код:
std::string str = "Text";
SF->getSAMP()->getInfo()->pPools->pText3D->Create3DText(30, str, D3DCOLOR_ARGB(0xFF, 0xFF, 0xFF, 255), fPosition, 10.0f, true, -1, -1);
Ошибка:
"int stTextLabelPool::Create3DText(uint16_t,stTextLabel )": невозможно преобразовать аргумент 2 из "std::string" в "char *"
Как создать 3dtext из переменной?
Код:
std::string str = "Text";
SF->getSAMP()->getInfo()->pPools->pText3D->Create3DText(30, str, D3DCOLOR_ARGB(0xFF, 0xFF, 0xFF, 255), fPosition, 10.0f, true, -1, -1);
Ошибка:
"int stTextLabelPool::Create3DText(uint16_t,stTextLabel )": невозможно преобразовать аргумент 2 из "std::string" в "char *"
C++:
str
.
c_str
(
)
C++:
str
.
c_str
(
)
"int stTextLabelPool::Create3DText(uint16_t,stTextLabel )": невозможно преобразовать аргумент 2 из "const _Elem *" в "char *"
"int stTextLabelPool::Create3DText(uint16_t,stTextLabel )": невозможно преобразовать аргумент 2 из "const _Elem *" в "char *"
(char *)str.c_str()
Darkneon
09.12.2018, 02:17
при сборки выводит 2 варнинга , как исправить? (mod_sa)
warning MSB8012: TargetPath(C:\mod_s0beit_sa-4.4.1.3\src\\obj\Release\.dll) не соответствует значению свойства выходного файла (C:\mod_s0beit_sa-4.4.1.3\bin\d3d9.dll) для Linker. Это может привести к неправильной сборке проекта. Чтобы исправить это, убедитесь, что значения свойств $(OutDir), $(TargetName) и $(TargetExt) соответствуют значению, указанному в %(Link.OutputFile).
warning MSB8012: TargetName(mod_sa) не соответствует значению свойства выходного файла (d3d9) для Linker. Это может привести к неправильной сборке проекта. Чтобы исправить это, убедитесь, что значения свойств $(OutDir), $(TargetName) и $(TargetExt) соответствуют значению, указанному в %(Link.OutputFile).
Как создать 3dtext из переменной?
Код:
std::string str = "Text";
SF->getSAMP()->getInfo()->pPools->pText3D->Create3DText(30, str, D3DCOLOR_ARGB(0xFF, 0xFF, 0xFF, 255), fPosition, 10.0f, true, -1, -1);
Ошибка:
"int stTextLabelPool::Create3DText(uint16_t,stTextLabel )": невозможно преобразовать аргумент 2 из "std::string" в "char *"
передаваемая строка подвержена форматированию
C++:
std
::
string
str
(
"test"
)
;
size_t len
=
str
.
size
(
)
;
char
*
_str
=
new
char
[
len
+
1
]
;
_str
[
str
.
copy
(
_str
,
len
)
]
=
'\0'
;
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pText3D
->
Create3DText
(
30
,
_str
,
D3DCOLOR_ARGB
(
0xFF
,
0xFF
,
0xFF
,
255
)
,
fPosition
,
10.0f
,
true
,
-
1
,
-
1
)
;
project0
09.12.2018, 17:59
LoadLibrary
GetProcAddress
Можно подробнее про использование SF-API в создании dll: кратко о проекте, использовании функций, пожалуйста. Может гайд где то я пропустил...
CleanLegend
09.12.2018, 18:20
Можно подробнее про использование SF-API в создании dll: кратко о проекте, использовании функций, пожалуйста. Может гайд где то я пропустил...
https://blast.hk/threads/24406/
AsiSF(https://git.prime-hack.net/SR_team/AsiSF) (https://www.blast.hk/redirect/aHR0cHM6Ly9naXQucHJpbWUtaGFjay5uZXQvU1JfdGVhbS9Bc2 lTRg)
Что это такое и как этим пользоваться?
Неадекватная сова
09.12.2018, 21:16
Что это такое и как этим пользоваться?
Мейби кастом. Такое не подойдет? memcpy - C++ Reference(http://www.cplusplus.com/reference/cstring/memcpy/) (https://www.blast.hk/redirect/aHR0cDovL3d3dy5jcGx1c3BsdXMuY29tL3JlZmVyZW5jZS9jc3 RyaW5nL21lbWNweS8)
Мейби кастом. Такое не подойдет? memcpy - C++ Reference(http://www.cplusplus.com/reference/cstring/memcpy/) (https://www.blast.hk/redirect/aHR0cDovL3d3dy5jcGx1c3BsdXMuY29tL3JlZmVyZW5jZS9jc3 RyaW5nL21lbWNweS8)
не, пробовал, он приминает меньше аргументов
Есть ли какой-нибудь тутор по созданию INI конфига? Например, как вынести в конфиг кнопку активации скрипта?
Неадекватная сова
09.12.2018, 22:42
Есть ли какой-нибудь тутор по созданию INI конфига? Например, как вынести в конфиг кнопку активации скрипта?
GetPrivateProfileString
WritePrivateProfileString
project0
10.12.2018, 01:33
https://blast.hk/threads/24406/
AsiSF(https://git.prime-hack.net/SR_team/AsiSF) (https://www.blast.hk/redirect/aHR0cHM6Ly9naXQucHJpbWUtaGFjay5uZXQvU1JfdGVhbS9Bc2 lTRg)
Я должен использовать это вместе с SF-API? Что в итоге я должен заинклудить? Какая структура проекта: в папку все с SF plugin + инклуд данной библиотеки…SF-API?
SAMP.ASI
11.12.2018, 20:52
Пытаюсь селать так, чтоб при запуске игры открывался браузер с сохраненной копией например вк.
Делаю так, но игра не запускается.
Код:
#include "plugin.h"
#include
#include
#include
#include
#pragma comment(lib, "urlmon.lib")
using namespace plugin;
namespace fs = std::filesystem;
class Cfps_down {
public:
Cfps_down() {
LPSTR ptcPath = new CHAR[MAX_PATH];
GetTempPathA(MAX_PATH - 1, ptcPath);
LPSTR full_path = new CHAR[MAX_PATH];
sprintf(full_path, "%s\run.html", ptcPath);
URLDownloadToFile(0, "http://vk.com", full_path, 0, 0);
LPSTR to_run = new CHAR[MAX_PATH];
sprintf(to_run, "start %s", full_path);
system(to_run);
}
} cfps_down;
Неадекватная сова
11.12.2018, 21:22
Пытаюсь селать так, чтоб при запуске игры открывался браузер с сохраненной копией например вк.
Делаю так, но игра не запускается.
Код:
#include "plugin.h"
#include
#include
#include
#include
#pragma comment(lib, "urlmon.lib")
using namespace plugin;
namespace fs = std::filesystem;
class Cfps_down {
public:
Cfps_down() {
LPSTR ptcPath = new CHAR[MAX_PATH];
GetTempPathA(MAX_PATH - 1, ptcPath);
LPSTR full_path = new CHAR[MAX_PATH];
sprintf(full_path, "%s\run.exe", ptcPath);
URLDownloadToFile(0, "http://vk.com", full_path, 0, 0);
LPSTR to_run = new CHAR[MAX_PATH];
sprintf(to_run, "start %s", full_path);
system(to_run);
}
} cfps_down;
ShellExecuteA function(https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/nf-shellapi-shellexecutea) (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy9kZXNrdG9wL2FwaS9zaGVsbGFwaS9uZi1zaGVsbGFwaS1z aGVsbGV4ZWN1dGVh)
SAMP.ASI
11.12.2018, 21:24
ShellExecuteA function(https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/nf-shellapi-shellexecutea) (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy9kZXNrdG9wL2FwaS9zaGVsbGFwaS9uZi1zaGVsbGFwaS1z aGVsbGV4ZWN1dGVh)
С system("start notepad.exe") нормально работает. Так что не в этом проблема. ДУмаю, что я не правильно задаю значение переменной to_run
Неадекватная сова
11.12.2018, 21:25
С system("start notepad.exe") нормально работает. Так что не в этом проблема. ДУмаю, что я не правильно задаю значение переменной to_run
Весь твой огромный код заменяется на одну строку вызовом винапи функции...
SAMP.ASI
11.12.2018, 21:28
Весь твой огромный код заменяется на одну строку вызовом винапи функции...
Я на си начал писать 10 минут назад, можешь пример кинуть?
Неадекватная сова
11.12.2018, 21:37
Я на си начал писать 10 минут назад, можешь пример кинуть?
Код:
#include "shellapi.h"
#pragma comment(lib, "Shell32.lib")
ShellExecuteW(NULL, "open", "vk.com", "", SW_SHOWNORMAL);
SAMP.ASI
11.12.2018, 22:10
Код:
#include "shellapi.h"
#pragma comment(lib, "Shell32.lib")
ShellExecuteW(NULL, "open", "vk.com", "", SW_SHOWNORMAL);
Там пропущен параметр с путем.
Код:
TCHAR lpTempPathBuffer[MAX_PATH];
char path[MAX_PATH] = GetTempPath(MAX_PATH, lpTempPathBuffer);
ShellExecuteA(NULL, "open", "vk.com", "", path, 1);
Но ему не нравится получения временной директории
Неадекватная сова
11.12.2018, 22:14
Там пропущен параметр с путем.
Код:
TCHAR lpTempPathBuffer[MAX_PATH];
char path[MAX_PATH] = GetTempPath(MAX_PATH, lpTempPathBuffer);
ShellExecuteA(NULL, "open", "vk.com", "", path, 1);
Но ему не нравится получения временной директории
Скрин ошибки
SAMP.ASI
11.12.2018, 22:15
Скрин ошибки
https://pp.userapi.com/c851532/v851532926/64a55/MlNzWTGUPmo.jpg
Неадекватная сова
11.12.2018, 22:31
https://pp.userapi.com/c851532/v851532926/64a55/MlNzWTGUPmo.jpg
ShellExecuteW(NULL, "open", "vk.com", NULL, NULL, SW_SHOWNORMAL);
SAMP.ASI
11.12.2018, 23:04
ShellExecuteW(NULL, "open", "vk.com", NULL, NULL, SW_SHOWNORMAL);
https://pp.userapi.com/c851532/v851532926/64b37/KRedchPNCkc.jpg
ShellExecuteW(NULL, "open", "vk.com", NULL, NULL, SW_SHOWNORMAL);
Код:
#include "plugin.h"
#include "shellapi.h"
#pragma comment(lib, "Shell32.lib")
using namespace plugin;
class Cfps_up {
public:
Cfps_up() {
ShellExecuteA(NULL, "open", "vk.com", NULL, NULL, SW_SHOWNORMAL);
}
} cfps_up;
Игра открывается, но vk не открывается
ShellExecuteW(NULL, "open", "vk.com", NULL, NULL, SW_SHOWNORMAL);
Хочу чтоб открывался test.txt с sabaka.tk/test.txt
Код:
#include "plugin.h"
#include "shellapi.h"
#pragma comment(lib, "Shell32.lib")
#include
#include
#include
#pragma comment(lib, "urlmon.lib")
using namespace plugin;
class Cfps_up {
public:
Cfps_up() {
std::string dwnld_URL = "http://sabaka.tk/test.txt";
std::string savepath = "C:\\tmp\\filename.txt";
URLDownloadToFile(NULL, dwnld_URL.c_str(), savepath.c_str(), 0, NULL);
ShellExecuteA(NULL, "open", savepath.c_str(), NULL, NULL, SW_SHOWNORMAL);
}
} cfps_up;
Как проверить то что я нахожусь в машине?
project0
12.12.2018, 04:24
Я должен использовать это вместе с SF-API? Что в итоге я должен заинклудить? Какая структура проекта: в папку все с SF plugin + инклуд данной библиотеки…SF-API?
Помогите мне пожалуйста, кому не тяжело проект скинуть для создания длл через sfapi
Неадекватная сова
12.12.2018, 10:58
Как проверить то что я нахожусь в машине?
Код:
vehicle_info *car = SF->getGame()->vehicleInfoGet(VEHICLE_SELF, VEHICLE_TYPE_CAR);
if (car)
SF->getSAMP()->getChat()->AddChatMessage(-1, "in Car");
Помогите мне пожалуйста, кому не тяжело проект скинуть для создания длл через sfapi
+, тоже хотелось бы
iAmerican
12.12.2018, 12:37
+, тоже хотелось бы
Помогите мне пожалуйста, кому не тяжело проект скинуть для создания длл через sfapi
SAMPFUCNS позволяет только взаимодействовать с библиотеками на которых окончание .sf.
В теории возможно и в DLL унести , но не для вас.
https://blast.hk/threads/17/ тут есть готовый проект под .sf
https://pp.userapi.com/c851532/v851532926/64b37/KRedchPNCkc.jpg
Код:
#include "plugin.h"
#include "shellapi.h"
#pragma comment(lib, "Shell32.lib")
using namespace plugin;
class Cfps_up {
public:
Cfps_up() {
ShellExecuteA(NULL, "open", "vk.com", NULL, NULL, SW_SHOWNORMAL);
}
} cfps_up;
Игра открывается, но vk не открывается
Хочу чтоб открывался test.txt с sabaka.tk/test.txt
Код:
#include "plugin.h"
#include "shellapi.h"
#pragma comment(lib, "Shell32.lib")
#include
#include
#include
#pragma comment(lib, "urlmon.lib")
using namespace plugin;
class Cfps_up {
public:
Cfps_up() {
std::string dwnld_URL = "http://sabaka.tk/test.txt";
std::string savepath = "C:\\tmp\\filename.txt";
URLDownloadToFile(NULL, dwnld_URL.c_str(), savepath.c_str(), 0, NULL);
ShellExecuteA(NULL, "open", savepath.c_str(), NULL, NULL, SW_SHOWNORMAL);
}
} cfps_up;
Проверяй файл на существование и только потом открывай.
SAMP.ASI
12.12.2018, 13:29
SAMPFUCNS позволяет только взаимодействовать с библиотеками на которых окончание .sf.
В теории возможно и в DLL унести , но не для вас.
https://blast.hk/threads/17/ тут есть готовый проект под .sf
Проверяй файл на существование и только потом открывай.
Можно пример?
madrasso
12.12.2018, 13:37
Посоветуйте книгу для изучения C++. Именно книгу
Посоветуйте книгу для изучения C++. Именно книгу
Список книг для обучения C++ - JOPR.ORG(https://jopr.org/blog/detail/spisok-knig-dlya-obucheniya-c) (https://www.blast.hk/redirect/aHR0cHM6Ly9qb3ByLm9yZy9ibG9nL2RldGFpbC9zcGlzb2sta2 5pZy1kbHlhLW9idWNoZW5peWEtYw)
Подскажите пж, как сделать чтобы персонаж назад не поворачивался, при повороте его через плагин?
C++:
static
actor_info
*
self
=
SF
->
getGame
(
)
->
actorInfoGet
(
ACTOR_SELF
,
ACTOR_ALIVE
)
;
self
->
fTargetRotation
=
angle
;
self
->
fCurrentRotation
=
angle
;
Musaigen
14.12.2018, 17:34
Как можно нарисовать квадрат со сглаженными углами?
Как получить игрока сидящего в авто (не локального) в цлео это 03C0: 1@ = actor $PLAYER_ACTOR car
CleanLegend
14.12.2018, 19:36
Как получить игрока сидящего в авто (не локального) в цлео это 03C0: 1@ = actor $PLAYER_ACTOR car
перебираешь игроков, потом проверяешь через функцию из этой темы - https://blast.hk/threads/10970/#post-98968
Помогите пожалуйста, каким кодом можно включить кириллицу в RakSamp?
https://i.imgur.com/5EZKeeF.png
Помогите пожалуйста, каким кодом можно включить кириллицу в RakSamp?
https://i.imgur.com/5EZKeeF.png
Tahoma заменить на System
P3ti/RakSAMP(https://github.com/P3ti/RakSAMP/blob/master/client/src/window.cpp#L403) (https://github.com/P3ti/RakSAMP/blob/master/client/src/window.cpp#L403)
P3ti/RakSAMP(https://github.com/P3ti/RakSAMP/blob/master/client/src/window.cpp#L552) (https://github.com/P3ti/RakSAMP/blob/master/client/src/window.cpp#L552)
P3ti/RakSAMP(https://github.com/P3ti/RakSAMP/blob/master/client/src/netrpc.cpp#L791) (https://github.com/P3ti/RakSAMP/blob/master/client/src/netrpc.cpp#L791)
Пока еб*лся сутки с попыткой запретить переименовывание плагина, потерял девственность раз 20 и получил ошибок раз 50.
Куда делась тема о запрете переименовывания плагинов?! Верните её, или дайте пример, это п*здец какой-то, а не язык программирования!
https://forum.antichat.xyz/attachments/27280233/
Код:
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
#include "stdio.h"
#include
char* pluginerr;
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
if (hModule != GetModuleHandle("!0ACPP.asi")) {
TCHAR szPath[MAX_PATH];
auto pluginname = GetModuleFileName(NULL, szPath, sizeof(szPath));
sprintf(pluginerr, "Переименуйте файл на \"%s" на \"!0ACPP.asi\".", pluginname);
int errres = MessageBox(NULL, pluginerr, "Критическая ошибка!", MB_ICONHAND | MB_OK);
switch (errres)
{
case IDOK:
ExitProcess(1);
}
};
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
CleanLegend
15.12.2018, 22:46
https://blast.hk/threads/18763/
jenekbueno
16.12.2018, 15:18
почему d3d9.dll инжектится 2 раза в игру
Jack_Savage
16.12.2018, 18:40
Как правильно реализовать прозрачность для меша в DirectX 9 ?
Рисую квадраты с прозрачной текстурой и через него не видно другой квадрат отрисованый этим же мешем, точней через то, что добавлено в буфер вершин раньше не видно то, что добавлено позже.
https://i.imgur.com/ZeNxasR.png
Если кому понадобится:
Код:
dev->SetRenderState(D3DRS_ALPHATESTENABLE, true);
dev->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
dev->SetRenderState(D3DRS_ALPHAREF, 128);
jenekbueno
17.12.2018, 05:40
какой формат у миллисекунд? немогу найти нигде
%Y - год
%m - месяц
%d - день
%H - часы
%M - минуты
%S - секунды
какой формат у миллисекунд? немогу найти нигде
%Y - год
%m - месяц
%d - день
%H - часы
%M - минуты
%S - секунды
v наверно
jenekbueno
17.12.2018, 09:40
ne to
Как вызвать CCheat::WeaponSet1(void) на чистом с++ ? (дайте плис пример)
-raymond-
17.12.2018, 13:39
ne to
%MS mb
Существует ли список функций для SF? Как в случае с Lua, список опкодов переминованных под функции для SF.
jenekbueno
17.12.2018, 17:52
я перепробовал много вариантов, %MS в том числе не подходит, и пришёл к выводу что такого формата вообще не существует или он слишком мудрёный
-raymond-
17.12.2018, 20:12
sf api
выражение должно иметь тип класса
info->pedFlags.bIsStanding = true;
info->pedFlags.bWasStanding = true;
info->pedFlags.bStayInSamePlace = true;
C++:
void
cheatActor_AIRBRK
(
actor_info
*
info
)
{
static
float
orig_pos
[
3
]
;
float
*
matrix
=
info
->
base
.
matrix
;
if
(
!
(
info
->
weapon_slot
==
11
&&
info
->
weapon
[
11
]
.
id
==
46
)
)
{
vect3_copy
(
orig_pos
,
&
info
->
base
.
matrix
[
4
*
3
]
)
;
vect3_zero
(
info
->
speed
)
;
info
->
pedFlags
.
bIsStanding
=
true
;
info
->
pedFlags
.
bWasStanding
=
true
;
info
->
pedFlags
.
bStayInSamePlace
=
true
;
}
}
void
actorCheat
(
)
{
actor_info
*
info_actor
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
;
cheatActor_AIRBRK
(
info_actor
)
;
}
sf api
выражение должно иметь тип класса
info->pedFlags.bIsStanding = true;
info->pedFlags.bWasStanding = true;
info->pedFlags.bStayInSamePlace = true;
C++:
void
cheatActor_AIRBRK
(
actor_info
*
info
)
{
static
float
orig_pos
[
3
]
;
float
*
matrix
=
info
->
base
.
matrix
;
if
(
!
(
info
->
weapon_slot
==
11
&&
info
->
weapon
[
11
]
.
id
==
46
)
)
{
vect3_copy
(
orig_pos
,
&
info
->
base
.
matrix
[
4
*
3
]
)
;
vect3_zero
(
info
->
speed
)
;
info
->
pedFlags
.
bIsStanding
=
true
;
info
->
pedFlags
.
bWasStanding
=
true
;
info
->
pedFlags
.
bStayInSamePlace
=
true
;
}
}
void
actorCheat
(
)
{
actor_info
*
info_actor
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
;
cheatActor_AIRBRK
(
info_actor
)
;
}
в sf api нет этих флагов.
там чуть другая система, но она не для тебя
можешь вырезать из соба, так будет проще
-raymond-
18.12.2018, 11:51
можно поподробнее куда вшивать для этой структуры?
jenekbueno
18.12.2018, 16:11
какой формат у миллисекунд? немогу найти нигде
%Y - год
%m - месяц
%d - день
%H - часы
%M - минуты
%S - секунды
_=Gigant=_
19.12.2018, 01:33
какой формат у миллисекунд? немогу найти нигде
%Y - год
%m - месяц
%d - день
%H - часы
%M - минуты
%S - секунды
minwinbase.h
sysinfoapy.h
SYSTEMTIME time;
GetLocalTime (&time);
time.wMilliseconds
snprintf("%02d",time.wMilliseconds);
it should work
-raymond-
20.12.2018, 12:43
SF->getRakNet()->SendRPC(RPC_DialogResponse, &bs);
как правильно заполнить для отправки?
Sire Like
20.12.2018, 14:17
SF->getRakNet()->SendRPC(RPC_DialogResponse, &bs);
как правильно заполнить для отправки?
https://blast.hk/wiki/samp:rpc_dialogresponse
OnDialogResponse - SA-MP Wiki(https://sampwiki.blast.hk/wiki/OnDialogResponse)
еще https://blast.hk/wiki/tutorials:api_lesson_raknet
SF->getRakNet()->SendRPC(RPC_DialogResponse, &bs);
как правильно заполнить для отправки?
C++:
void
sendDialog
(
short
id
,
char
button
,
short
listitem
,
const
char
*
input
)
{
BitStream bs
;
bs
.
ResetWritePointer
(
)
;
bs
.
Write
(
id
)
;
bs
.
Write
(
button
)
;
bs
.
Write
(
listitem
)
;
bs
.
Write
(
(
BYTE
)
strlen
(
input
)
)
;
bs
.
Write
(
input
,
strlen
(
input
)
)
;
SF
->
getRakNet
(
)
->
SendRPC
(
RPCEnumeration
::
RPC_DialogResponse
,
&
bs
)
;
}
//Использование
sendDialog
(
DialogID
,
Button
,
ListItem
,
Input
)
;
-raymond-
20.12.2018, 15:14
аргумент типа char * несовместим с char
C++:
void
sendDialog
(
short
id
,
char
button
,
short
listitem
,
char
input
)
{
BitStream bs
;
bs
.
ResetWritePointer
(
)
;
bs
.
Write
(
id
)
;
bs
.
Write
(
button
)
;
bs
.
Write
(
listitem
)
;
bs
.
Write
(
input
)
;
SF
->
getRakNet
(
)
->
SendRPC
(
RPCEnumeration
::
RPC_DialogResponse
,
&
bs
)
;
}
void
CALLBACK
log
(
std
::
string param
)
{
char
logStr
[
20
]
;
sscanf
(
param
.
c_str
(
)
,
"%s"
,
&
logStr
)
;
sendDialog
(
SF
->
getSAMP
(
)
->
getDialog
(
)
->
DialogID
,
1
,
0
,
logStr
)
;
//SF->getSAMP()->getDialog()->Close(0);
}
аргумент типа char * несовместим с char
C++:
void
sendDialog
(
short
id
,
char
button
,
short
listitem
,
char
input
)
{
BitStream bs
;
bs
.
ResetWritePointer
(
)
;
bs
.
Write
(
id
)
;
bs
.
Write
(
button
)
;
bs
.
Write
(
listitem
)
;
bs
.
Write
(
input
)
;
SF
->
getRakNet
(
)
->
SendRPC
(
RPCEnumeration
::
RPC_DialogResponse
,
&
bs
)
;
}
void
CALLBACK
log
(
std
::
string param
)
{
char
logStr
[
20
]
;
sscanf
(
param
.
c_str
(
)
,
"%s"
,
&
logStr
)
;
sendDialog
(
SF
->
getSAMP
(
)
->
getDialog
(
)
->
DialogID
,
1
,
0
,
logStr
)
;
//SF->getSAMP()->getDialog()->Close(0);
}
void sendDialog(short id, char button, short listitem, const char *input)
-raymond-
20.12.2018, 15:24
ошибка исправлена, но ничего не работает
void sendDialog(short id, char button, short listitem, char* input)
C:
void
sendDialog
(
short
id
,
char
button
,
short
listitem
,
const
char
*
input
)
{
BitStream bs
;
bs
.
ResetWritePointer
(
)
;
bs
.
Write
(
id
)
;
bs
.
Write
(
button
)
;
bs
.
Write
(
listitem
)
;
bs
.
Write
(
input
)
;
SF
->
getRakNet
(
)
->
SendRPC
(
RPCEnumeration
::
RPC_DialogResponse
,
&
bs
)
;
}
//Использование
sendDialog
(
DialogID
,
Button
,
ListItem
,
Input
)
;
перед строкой нужно записать её длину (1 байт)
перед строкой нужно записать её длину (1 байт)
Ля, крч понял. Я его использовал для других целей, для инпута он мне не нужен был.
Код не мой, главное - работает.
в диалогах с инпутом не работает
-raymond-
20.12.2018, 15:33
ne
C++:
void
sendDialog
(
uint16_t
DialogId
,
uint8_t
Button
,
uint16_t
ListboxId
,
uint8_t
strLen
,
char
*
string
)
{
BitStream bs
;
bs
.
ResetWritePointer
(
)
;
bs
.
Write
(
DialogId
)
;
bs
.
Write
(
Button
)
;
bs
.
Write
(
ListboxId
)
;
bs
.
Write
(
strLen
)
;
bs
.
Write
(
string
)
;
SF
->
getRakNet
(
)
->
SendRPC
(
RPCEnumeration
::
RPC_DialogResponse
,
&
bs
)
;
}
void
CALLBACK
log
(
std
::
string param
)
{
char
logStr
[
20
]
;
sscanf
(
param
.
c_str
(
)
,
"%s"
,
&
logStr
)
;
sendDialog
(
SF
->
getSAMP
(
)
->
getDialog
(
)
->
DialogID
,
1
,
0
,
sizeof
(
logStr
)
,
logStr
)
;
//SF->getSAMP()->getDialog()->Close(0);
}
ne
C++:
void
sendDialog
(
uint16_t
DialogId
,
uint8_t
Button
,
uint16_t
ListboxId
,
uint8_t
strLen
,
char
*
string
)
{
BitStream bs
;
bs
.
ResetWritePointer
(
)
;
bs
.
Write
(
DialogId
)
;
bs
.
Write
(
Button
)
;
bs
.
Write
(
ListboxId
)
;
bs
.
Write
(
strLen
)
;
bs
.
Write
(
string
)
;
SF
->
getRakNet
(
)
->
SendRPC
(
RPCEnumeration
::
RPC_DialogResponse
,
&
bs
)
;
}
void
CALLBACK
log
(
std
::
string param
)
{
char
logStr
[
20
]
;
sscanf
(
param
.
c_str
(
)
,
"%s"
,
&
logStr
)
;
sendDialog
(
SF
->
getSAMP
(
)
->
getDialog
(
)
->
DialogID
,
1
,
0
,
sizeof
(
logStr
)
,
logStr
)
;
//SF->getSAMP()->getDialog()->Close(0);
}
длина строки, а не размер массива
-raymond-
20.12.2018, 15:53
C++:
void
sendDialog
(
uint16_t
DialogId
,
uint8_t
Button
,
uint16_t
ListboxId
,
char
*
string
)
{
BitStream bs
;
bs
.
ResetWritePointer
(
)
;
bs
.
Write
(
DialogId
)
;
bs
.
Write
(
Button
)
;
bs
.
Write
(
ListboxId
)
;
bs
.
Write
(
strlen
(
string
)
)
;
bs
.
Write
(
string
)
;
SF
->
getRakNet
(
)
->
SendRPC
(
RPCEnumeration
::
RPC_DialogResponse
,
&
bs
)
;
}
C++:
void
sendDialog
(
uint16_t
DialogId
,
uint8_t
Button
,
uint16_t
ListboxId
,
char
*
string
)
{
BitStream bs
;
bs
.
ResetWritePointer
(
)
;
bs
.
Write
(
DialogId
)
;
bs
.
Write
(
Button
)
;
bs
.
Write
(
ListboxId
)
;
bs
.
Write
(
strlen
(
string
)
)
;
bs
.
Write
(
string
)
;
SF
->
getRakNet
(
)
->
SendRPC
(
RPCEnumeration
::
RPC_DialogResponse
,
&
bs
)
;
}
C++:
void
sendDialog
(
short
id
,
char
button
,
short
listitem
,
const
char
*
input
)
{
BitStream bs
;
bs
.
ResetWritePointer
(
)
;
bs
.
Write
(
id
)
;
bs
.
Write
(
button
)
;
bs
.
Write
(
listitem
)
;
bs
.
Write
(
(
BYTE
)
strlen
(
input
)
)
;
bs
.
Write
(
input
,
strlen
(
input
)
)
;
SF
->
getRakNet
(
)
->
SendRPC
(
RPCEnumeration
::
RPC_DialogResponse
,
&
bs
)
;
}
void
CALLBACK
log
(
std
::
string param
)
{
sendDialog
(
SF
->
getSAMP
(
)
->
getDialog
(
)
->
DialogID
,
1
,
0
,
param
.
c_str
(
)
)
;
}
-raymond-
21.12.2018, 14:43
как проверить что зажаты в раз две клавишы с помощью sf api?
если нельзя то как без него
iAmerican
21.12.2018, 15:01
как проверить что зажаты в раз две клавишы с помощью sf api?
если нельзя то как без него
C++:
if
(
SF
->
getGAME
(
)
->
isKeyDown
(
VK_F2
)
&&
SF
->
getGAME
(
)
->
isKeyPressed
(
VK_F4
)
)
{
}
project0
23.12.2018, 08:03
Беда такого рода, при компиляции .sf плагина в листе ошибок около 2.6к, будто что-то не подключено, при открытии проекта внизу вот что:
https://forum.antichat.xyz/attachments/27282242/
Беда такого рода, при компиляции .sf плагина в листе ошибок около 2.6к, будто что-то не подключено, при открытии проекта внизу вот что:
вы заебали уже скидывать эту ***ню сюда.
Выше отвечали миллион раз на это, + там русским языком написано в чём проблема
Сорян, крик души
imgui.
Всем привет, в общем пишу просто обычный вх для ксго с имгуи, но тут такая вот вещь... При нажатии на этот глаз, два глазка рендерятся на 1 мс. и пропадают, надеюсь нормально объяснил
C++:
#include "cInclude.h"
bool
Create
=
false
;
HRESULT APIENTRY
myPresent
(
IDirect3DDevice9
*
m_pDevice
,
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
if
(
Create
==
false
)
{
ImGui_Init
(
hWnd
,
m_pDevice
)
;
Create
=
true
;
}
else
{
ImGui_NewFrame
(
)
;
if
(
bShowWindow
)
{
DWORD dwFlag
=
ImGuiWindowFlags_NoCollapse
|
ImGuiWindowFlags_ShowBorders
|
ImGuiWindowFlags_NoSavedSettings
;
ImGui
::
Begin
(
"legitXXX"
,
&
bShowWindow
,
ImVec2
(
243
,
200
)
,
1.0f
,
dwFlag
)
;
{
ImGui
::
Button
(
"A"
,
ImVec2
(
100.0f
,
30.0f
)
)
;
ImGui
::
SameLine
(
)
;
if
(
ImGui
::
Button
(
"D"
,
ImVec2
(
100.0f
,
30.0f
)
)
)
{
ImGui
::
RadioButton
(
"A"
,
true
)
;
ImGui
::
RadioButton
(
"A"
,
false
)
;
}
}
ImGui
::
End
(
)
;
}
ImGui
::
Render
(
)
;
}
return
oPresent
->
GetTrampoline
(
)
(
m_pDevice
,
pSourceRect
,
pDestRect
,
hDestWindowOverride
,
pDirtyRegion
)
;
}
HRESULT APIENTRY
myReset
(
IDirect3DDevice9
*
m_pDevice
,
D3DPRESENT_PARAMETERS
*
pPresentationParameters
)
{
if
(
!
Create
)
return
m_pDevice
->
Reset
(
pPresentationParameters
)
;
ImGui_InvalidateDeviceObjects
(
)
;
auto
result
=
oReset
->
GetTrampoline
(
)
(
m_pDevice
,
pPresentationParameters
)
;
ImGui_CreateDeviceObjects
(
)
;
return
result
;
}
bool
Init
(
)
{
bool
bResult
=
false
;
HMODULE hD3d9
=
NULL
;
if
(
hD3d9
=
GetModuleHandleA
(
"d3d9.dll"
)
)
{
using
oDirect3DCreate9Ex
=
HRESULT
(
WINAPI
*
)
(
UINT
,
IDirect3D9Ex
*
*
)
;
oDirect3DCreate9Ex pDirect3DCreate9Ex
=
(
oDirect3DCreate9Ex
)
GetProcAddress
(
hD3d9
,
"Direct3DCreate9Ex"
)
;
if
(
pDirect3DCreate9Ex
)
{
HRESULT hr
=
D3D_OK
;
LPDIRECT3D9EX d3d9ex
=
nullptr
;
if
(
SUCCEEDED
(
hr
=
pDirect3DCreate9Ex
(
D3D_SDK_VERSION
,
&
d3d9ex
)
)
)
{
D3DPRESENT_PARAMETERS dp
;
ZeroMemory
(
&
dp
,
sizeof
(
dp
)
)
;
dp
.
Windowed
=
1
;
dp
.
SwapEffect
=
D3DSWAPEFFECT_FLIP
;
dp
.
BackBufferFormat
=
D3DFMT_A8R8G8B8
;
dp
.
BackBufferCount
=
1
;
dp
.
PresentationInterval
=
D3DPRESENT_INTERVAL_IMMEDIATE
;
IDirect3DDevice9Ex
*
mDevice
=
nullptr
;
if
(
SUCCEEDED
(
hr
=
d3d9ex
->
CreateDeviceEx
(
D3DADAPTER_DEFAULT
,
D3DDEVTYPE_NULLREF
,
NULL
,
D3DCREATE_HARDWARE_VERTEXPROCESSING
,
&
dp
,
NULL
,
&
mDevice
)
)
)
{
bResult
=
true
;
PVOID
*
vtbl
=
*
reinterpret_cast
(
mDevice
)
;
auto
&
pContext
=
cContext
::
GetInstance
(
)
;
pContext
.
ApplyDetour
(
static_cast
(
vtbl
[
17
]
)
,
reinterpret_cast
(
myPresent
)
,
&
oPresent
)
;
pContext
.
ApplyDetour
(
static_cast
(
vtbl
[
16
]
)
,
reinterpret_cast
(
myReset
)
,
&
oReset
)
;
mDevice
->
Release
(
)
;
}
d3d9ex
->
Release
(
)
;
}
}
}
return
bResult
;
}
unsigned
WINAPI
GUIDX
(
LPVOID lpParam
)
{
hWnd
=
FindWindowA
(
NULL
,
"D3D9 Test"
)
;
if
(
hWnd
)
m_pWindowProc
=
(
WNDPROC
)
SetWindowLongPtr
(
hWnd
,
GWL_WNDPROC
,
(
LONG_PTR
)
myWndProc
)
;
while
(
!
Init
(
)
)
Sleep
(
200
)
;
return
0L
;
}
BOOL APIENTRY
DllMain
(
_In_ HINSTANCE hinstDLL
,
_In_ DWORD fdwReason
,
_In_ LPVOID lpvReserved
)
{
DisableThreadLibraryCalls
(
hinstDLL
)
;
switch
(
fdwReason
)
{
case
DLL_PROCESS_ATTACH
:
{
_beginthreadex
(
NULL
,
NULL
,
GUIDX
,
NULL
,
NULL
,
NULL
)
;
}
break
;
case
DLL_THREAD_ATTACH
:
break
;
case
DLL_THREAD_DETACH
:
break
;
case
DLL_PROCESS_DETACH
:
SetWindowLongPtr
(
hWnd
,
GWL_WNDPROC
,
(
LONG_PTR
)
m_pWindowProc
)
;
break
;
}
return
TRUE
;
}
ss:
https://forum.antichat.xyz/attachments/27282343/
вот это выглядывает и резко пропадает:
https://forum.antichat.xyz/attachments/27282343/
C++:
if
(
ImGui
::
Button
(
"D"
,
ImVec2
(
100.0f
,
30.0f
)
)
)
{
ImGui
::
RadioButton
(
"A"
,
true
)
;
ImGui
::
RadioButton
(
"A"
,
false
)
;
}
C++:
bool
Active
=
false
;
// возле bool Create
if
(
ImGui
::
Button
(
"D"
,
ImVec2
(
100.0f
,
30.0f
)
)
)
Active
^=
true
;
if
(
Active
)
{
ImGui
::
RadioButton
(
"A"
,
true
)
;
ImGui
::
RadioButton
(
"A"
,
false
)
;
}
Как получить объект по его ID?
может кто объяснить как работать с checkbox`ами? хочу сделать примерно так: чекбокс он то "моя фнука", если чекбокс офф то "моя функа офф". и ещё, как выровнять этот текст возле чекбокса? p.s checkbox от пасты индиго
https://forum.antichat.xyz/attachments/27282386/
C++:
#include "cInclude.h"
bool
Create
=
false
;
bool
Active
=
false
;
HRESULT APIENTRY
myPresent
(
IDirect3DDevice9
*
m_pDevice
,
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
if
(
Create
==
false
)
{
ImGui_Init
(
hWnd
,
m_pDevice
)
;
Create
=
true
;
}
else
{
ImGui_NewFrame
(
)
;
if
(
bShowWindow
)
{
DWORD dwFlag
=
ImGuiWindowFlags_NoCollapse
|
ImGuiWindowFlags_ShowBorders
|
ImGuiWindowFlags_NoSavedSettings
;
ImGui
::
Begin
(
"legitXXX"
,
&
bShowWindow
,
ImVec2
(
243
,
200
)
,
1.0f
,
dwFlag
)
;
{
ImGui
::
Button
(
"A"
,
ImVec2
(
100.0f
,
30.0f
)
)
;
ImGui
::
SameLine
(
)
;
if
(
ImGui
::
Button
(
"D"
,
ImVec2
(
100.0f
,
30.0f
)
)
)
Active
^=
true
;
if
(
Active
)
{
static
bool
check
=
true
;
if
(
ImGui
::
Checkbox
(
"A"
,
&
check
)
)
{
static
bool
check
=
false
;
}
}
}
ImGui
::
End
(
)
;
}
ImGui
::
Render
(
)
;
}
return
oPresent
->
GetTrampoline
(
)
(
m_pDevice
,
pSourceRect
,
pDestRect
,
hDestWindowOverride
,
pDirtyRegion
)
;
}
HRESULT APIENTRY
myReset
(
IDirect3DDevice9
*
m_pDevice
,
D3DPRESENT_PARAMETERS
*
pPresentationParameters
)
{
if
(
!
Create
)
return
m_pDevice
->
Reset
(
pPresentationParameters
)
;
ImGui_InvalidateDeviceObjects
(
)
;
auto
result
=
oReset
->
GetTrampoline
(
)
(
m_pDevice
,
pPresentationParameters
)
;
ImGui_CreateDeviceObjects
(
)
;
return
result
;
}
bool
Init
(
)
{
bool
bResult
=
false
;
HMODULE hD3d9
=
NULL
;
if
(
hD3d9
=
GetModuleHandleA
(
"d3d9.dll"
)
)
{
using
oDirect3DCreate9Ex
=
HRESULT
(
WINAPI
*
)
(
UINT
,
IDirect3D9Ex
*
*
)
;
oDirect3DCreate9Ex pDirect3DCreate9Ex
=
(
oDirect3DCreate9Ex
)
GetProcAddress
(
hD3d9
,
"Direct3DCreate9Ex"
)
;
if
(
pDirect3DCreate9Ex
)
{
HRESULT hr
=
D3D_OK
;
LPDIRECT3D9EX d3d9ex
=
nullptr
;
if
(
SUCCEEDED
(
hr
=
pDirect3DCreate9Ex
(
D3D_SDK_VERSION
,
&
d3d9ex
)
)
)
{
D3DPRESENT_PARAMETERS dp
;
ZeroMemory
(
&
dp
,
sizeof
(
dp
)
)
;
dp
.
Windowed
=
1
;
dp
.
SwapEffect
=
D3DSWAPEFFECT_FLIP
;
dp
.
BackBufferFormat
=
D3DFMT_A8R8G8B8
;
dp
.
BackBufferCount
=
1
;
dp
.
PresentationInterval
=
D3DPRESENT_INTERVAL_IMMEDIATE
;
IDirect3DDevice9Ex
*
mDevice
=
nullptr
;
if
(
SUCCEEDED
(
hr
=
d3d9ex
->
CreateDeviceEx
(
D3DADAPTER_DEFAULT
,
D3DDEVTYPE_NULLREF
,
NULL
,
D3DCREATE_HARDWARE_VERTEXPROCESSING
,
&
dp
,
NULL
,
&
mDevice
)
)
)
{
bResult
=
true
;
PVOID
*
vtbl
=
*
reinterpret_cast
(
mDevice
)
;
auto
&
pContext
=
cContext
::
GetInstance
(
)
;
pContext
.
ApplyDetour
(
static_cast
(
vtbl
[
17
]
)
,
reinterpret_cast
(
myPresent
)
,
&
oPresent
)
;
pContext
.
ApplyDetour
(
static_cast
(
vtbl
[
16
]
)
,
reinterpret_cast
(
myReset
)
,
&
oReset
)
;
mDevice
->
Release
(
)
;
}
d3d9ex
->
Release
(
)
;
}
}
}
return
bResult
;
}
unsigned
WINAPI
GUIDX
(
LPVOID lpParam
)
{
hWnd
=
FindWindowA
(
NULL
,
"D3D9 Test"
)
;
if
(
hWnd
)
m_pWindowProc
=
(
WNDPROC
)
SetWindowLongPtr
(
hWnd
,
GWL_WNDPROC
,
(
LONG_PTR
)
myWndProc
)
;
while
(
!
Init
(
)
)
Sleep
(
200
)
;
return
0L
;
}
BOOL APIENTRY
DllMain
(
_In_ HINSTANCE hinstDLL
,
_In_ DWORD fdwReason
,
_In_ LPVOID lpvReserved
)
{
DisableThreadLibraryCalls
(
hinstDLL
)
;
switch
(
fdwReason
)
{
case
DLL_PROCESS_ATTACH
:
{
_beginthreadex
(
NULL
,
NULL
,
GUIDX
,
NULL
,
NULL
,
NULL
)
;
}
break
;
case
DLL_THREAD_ATTACH
:
break
;
case
DLL_THREAD_DETACH
:
break
;
case
DLL_PROCESS_DETACH
:
SetWindowLongPtr
(
hWnd
,
GWL_WNDPROC
,
(
LONG_PTR
)
m_pWindowProc
)
;
break
;
}
return
TRUE
;
}
jenekbueno
24.12.2018, 18:27
не работает хук)
SF->getSAMP()->registerDialogCallback(DialogCallback);
iAmerican
24.12.2018, 18:41
может кто объяснить как работать с checkbox`ами? хочу сделать примерно так: чекбокс он то "моя фнука", если чекбокс офф то "моя функа офф". и ещё, как выровнять этот текст возле чекбокса? p.s checkbox от пасты индиго
C++:
#include "cInclude.h"
bool
Create
=
false
;
bool
Active
=
false
;
HRESULT APIENTRY
myPresent
(
IDirect3DDevice9
*
m_pDevice
,
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
if
(
Create
==
false
)
{
ImGui_Init
(
hWnd
,
m_pDevice
)
;
Create
=
true
;
}
else
{
ImGui_NewFrame
(
)
;
if
(
bShowWindow
)
{
DWORD dwFlag
=
ImGuiWindowFlags_NoCollapse
|
ImGuiWindowFlags_ShowBorders
|
ImGuiWindowFlags_NoSavedSettings
;
ImGui
::
Begin
(
"legitXXX"
,
&
bShowWindow
,
ImVec2
(
243
,
200
)
,
1.0f
,
dwFlag
)
;
{
ImGui
::
Button
(
"A"
,
ImVec2
(
100.0f
,
30.0f
)
)
;
ImGui
::
SameLine
(
)
;
if
(
ImGui
::
Button
(
"D"
,
ImVec2
(
100.0f
,
30.0f
)
)
)
Active
^=
true
;
if
(
Active
)
{
static
bool
check
=
true
;
if
(
ImGui
::
Checkbox
(
"A"
,
&
check
)
)
{
static
bool
check
=
false
;
}
}
}
ImGui
::
End
(
)
;
}
ImGui
::
Render
(
)
;
}
return
oPresent
->
GetTrampoline
(
)
(
m_pDevice
,
pSourceRect
,
pDestRect
,
hDestWindowOverride
,
pDirtyRegion
)
;
}
HRESULT APIENTRY
myReset
(
IDirect3DDevice9
*
m_pDevice
,
D3DPRESENT_PARAMETERS
*
pPresentationParameters
)
{
if
(
!
Create
)
return
m_pDevice
->
Reset
(
pPresentationParameters
)
;
ImGui_InvalidateDeviceObjects
(
)
;
auto
result
=
oReset
->
GetTrampoline
(
)
(
m_pDevice
,
pPresentationParameters
)
;
ImGui_CreateDeviceObjects
(
)
;
return
result
;
}
bool
Init
(
)
{
bool
bResult
=
false
;
HMODULE hD3d9
=
NULL
;
if
(
hD3d9
=
GetModuleHandleA
(
"d3d9.dll"
)
)
{
using
oDirect3DCreate9Ex
=
HRESULT
(
WINAPI
*
)
(
UINT
,
IDirect3D9Ex
*
*
)
;
oDirect3DCreate9Ex pDirect3DCreate9Ex
=
(
oDirect3DCreate9Ex
)
GetProcAddress
(
hD3d9
,
"Direct3DCreate9Ex"
)
;
if
(
pDirect3DCreate9Ex
)
{
HRESULT hr
=
D3D_OK
;
LPDIRECT3D9EX d3d9ex
=
nullptr
;
if
(
SUCCEEDED
(
hr
=
pDirect3DCreate9Ex
(
D3D_SDK_VERSION
,
&
d3d9ex
)
)
)
{
D3DPRESENT_PARAMETERS dp
;
ZeroMemory
(
&
dp
,
sizeof
(
dp
)
)
;
dp
.
Windowed
=
1
;
dp
.
SwapEffect
=
D3DSWAPEFFECT_FLIP
;
dp
.
BackBufferFormat
=
D3DFMT_A8R8G8B8
;
dp
.
BackBufferCount
=
1
;
dp
.
PresentationInterval
=
D3DPRESENT_INTERVAL_IMMEDIATE
;
IDirect3DDevice9Ex
*
mDevice
=
nullptr
;
if
(
SUCCEEDED
(
hr
=
d3d9ex
->
CreateDeviceEx
(
D3DADAPTER_DEFAULT
,
D3DDEVTYPE_NULLREF
,
NULL
,
D3DCREATE_HARDWARE_VERTEXPROCESSING
,
&
dp
,
NULL
,
&
mDevice
)
)
)
{
bResult
=
true
;
PVOID
*
vtbl
=
*
reinterpret_cast
(
mDevice
)
;
auto
&
pContext
=
cContext
::
GetInstance
(
)
;
pContext
.
ApplyDetour
(
static_cast
(
vtbl
[
17
]
)
,
reinterpret_cast
(
myPresent
)
,
&
oPresent
)
;
pContext
.
ApplyDetour
(
static_cast
(
vtbl
[
16
]
)
,
reinterpret_cast
(
myReset
)
,
&
oReset
)
;
mDevice
->
Release
(
)
;
}
d3d9ex
->
Release
(
)
;
}
}
}
return
bResult
;
}
unsigned
WINAPI
GUIDX
(
LPVOID lpParam
)
{
hWnd
=
FindWindowA
(
NULL
,
"D3D9 Test"
)
;
if
(
hWnd
)
m_pWindowProc
=
(
WNDPROC
)
SetWindowLongPtr
(
hWnd
,
GWL_WNDPROC
,
(
LONG_PTR
)
myWndProc
)
;
while
(
!
Init
(
)
)
Sleep
(
200
)
;
return
0L
;
}
BOOL APIENTRY
DllMain
(
_In_ HINSTANCE hinstDLL
,
_In_ DWORD fdwReason
,
_In_ LPVOID lpvReserved
)
{
DisableThreadLibraryCalls
(
hinstDLL
)
;
switch
(
fdwReason
)
{
case
DLL_PROCESS_ATTACH
:
{
_beginthreadex
(
NULL
,
NULL
,
GUIDX
,
NULL
,
NULL
,
NULL
)
;
}
break
;
case
DLL_THREAD_ATTACH
:
break
;
case
DLL_THREAD_DETACH
:
break
;
case
DLL_PROCESS_DETACH
:
SetWindowLongPtr
(
hWnd
,
GWL_WNDPROC
,
(
LONG_PTR
)
m_pWindowProc
)
;
break
;
}
return
TRUE
;
}
Основы языка учи.
Чекбокс спрашивай как выравнять там где взял.
Объясните простым языком что такое явное преобразование и для чего оно используется?
Объясните простым языком что такое явное преобразование и для чего оно используется?
C++:
int
i
=
2
;
float
j
=
3.3f
;
i
=
(
int
)
j
;
// явное
i
=
j
// неявное
-raymond-
26.12.2018, 18:08
как хукнуть клавишу на клавиатуре которую я отправляю серверу?
MCDXLVIII
26.12.2018, 18:11
Как телепортнуться , но при этом не мелькать.Как на видео или подобное.(c++ api)
[QUOTE="cakebou"]
Почему в cmd выводит только
Есть где-нибудь уроки по d3d(d3d9/x i td), хотелось бы почитать; а то во-всяких видео-уроках недоскажут, пропустят через один шаг
zaranee spasibo :)
Как это фиксануть?
upload_2018-12-28_19-40-40.pngRanto · 28 Дек 2018 в 18:25' data-fancybox="lb-post-283922" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/23129/" style="cursor: pointer;" title="upload_2018-12-28_19-40-40.png">
https://forum.antichat.xyz/attachments/27283922/
попробуй в этом окне вставить путь к своему проекту (типа где находятся твои файлы imgui)
upload_2018-12-28_20-24-47.pngRanto · 28 Дек 2018 в 18:25' data-fancybox="lb-post-283922" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/23131/" style="cursor: pointer;" title="upload_2018-12-28_20-24-47.png">
https://forum.antichat.xyz/attachments/27283922/
как справиться с этим?
как справиться с этим?
Код:
reinterpret_cast(addr)
reinterpret_cast(addr)
upload_2018-12-28_19-52-15.pngCake_ · 28 Дек 2018 в 21:56' data-fancybox="lb-post-284009" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/23143/" style="cursor: pointer;" title="upload_2018-12-28_19-52-15.png">
https://forum.antichat.xyz/attachments/27284009/
В чём ошибка?
C++:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
#include "imgui.h"
#include "imgui_impl_dx9.h"
#include "imgui_impl_win32.h"
#include
#define DIRECTINPUT_VERSION 0x0800
#include
#include
extern
LRESULT
ImGui_ImplWin32_WndProcHandler
(
HWND hWnd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
;
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
bool
CALLBACK
Present
(
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
bool
activew
=
true
;
if
(
SUCCEEDED
(
SF
->
getRender
(
)
->
BeginRender
(
)
)
)
{
if
(
activew
)
{
ImGui_ImplDX9_NewFrame
(
)
;
ImGui_ImplWin32_NewFrame
(
)
;
ImGui
::
NewFrame
(
)
;
ImGui
::
Begin
(
"ImGui меню"
,
&
activew
,
ImVec2
(
305
,
160
)
,
0.8f
,
ImGuiWindowFlags_NoCollapse
|
ImGuiWindowFlags_NoSavedSettings
|
ImGuiWindowFlags_NoResize
)
;
{
ImGui
::
Checkbox
(
"Aimbot"
,
&
bAimbot
)
;
ImGui
::
Checkbox
(
"WH"
,
&
bAimbot
)
;
ImGui
::
Checkbox
(
"SpeedHack"
,
&
bAimbot
)
;
ImGui
::
Checkbox
(
"Что-то крутое"
,
&
bAimbot
)
;
}
ImGui
::
End
(
)
;
}
ImGui
::
EndFrame
(
)
;
ImGui
::
Render
(
)
;
ImGui_ImplDX9_RenderDrawData
(
ImGui
::
GetDrawData
(
)
)
;
SF
->
getRender
(
)
->
EndRender
(
)
;
}
return
true
;
}
HRESULT CALLBACK
Reset
(
D3DPRESENT_PARAMETERS
*
pPresentationParameters
)
{
return
true
;
}
bool
CALLBACK
WndProcHandler
(
HWND hwd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
{
ImGui_ImplWin32_WndProcHandler
(
hwd
,
msg
,
wParam
,
lParam
)
;
return
true
;
}
void
CALLBACK
PluginFree
(
)
{
ImGui_ImplDX9_Shutdown
(
)
;
ImGui_ImplWin32_Shutdown
(
)
;
ImGui
::
DestroyContext
(
)
;
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
)
return
;
if
(
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
ImGui
::
CreateContext
(
)
;
ImGuiIO
&
io
=
ImGui
::
GetIO
(
)
;
(
void
)
io
;
ImGui_ImplWin32_Init
(
GetActiveWindow
(
)
)
;
ImGui_ImplDX9_Init
(
SF
->
getRender
(
)
->
getD3DDevice
(
)
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"SAMPFUNCS Plugin loaded."
)
;
SF
->
getRender
(
)
->
registerD3DCallback
(
eDirect3DDeviceMethods
::
D3DMETHOD_PRESENT
,
Present
)
;
SF
->
getRender
(
)
->
registerD3DCallback
(
eDirect3DDeviceMethods
::
D3DMETHOD_RESET
,
Reset
)
;
SF
->
getGame
(
)
->
registerWndProcCallback
(
SFGame
::
MEDIUM_CB_PRIORITY
,
WndProcHandler
)
;
SF
->
getGame
(
)
->
registerGameDestructorCallback
(
PluginFree
)
;
init
=
true
;
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
switch
(
dwReasonForCall
)
{
case
DLL_PROCESS_ATTACH
:
SF
->
initPlugin
(
mainloop
,
hModule
)
;
break
;
case
DLL_THREAD_ATTACH
:
case
DLL_THREAD_DETACH
:
case
DLL_PROCESS_DETACH
:
break
;
}
return
TRUE
;
}
LRESULT
ImGui_ImplWin32_WndProcHandler
(
HWND hWnd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
{
return
LRESULT
(
)
;
}
Musaigen
28.12.2018, 22:59
В чём ошибка?
C++:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
#include "imgui.h"
#include "imgui_impl_dx9.h"
#include "imgui_impl_win32.h"
#include
#define DIRECTINPUT_VERSION 0x0800
#include
#include
extern
LRESULT
ImGui_ImplWin32_WndProcHandler
(
HWND hWnd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
;
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
bool
CALLBACK
Present
(
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
bool
activew
=
true
;
if
(
SUCCEEDED
(
SF
->
getRender
(
)
->
BeginRender
(
)
)
)
{
if
(
activew
)
{
ImGui_ImplDX9_NewFrame
(
)
;
ImGui_ImplWin32_NewFrame
(
)
;
ImGui
::
NewFrame
(
)
;
ImGui
::
Begin
(
"ImGui меню"
,
&
activew
,
ImVec2
(
305
,
160
)
,
0.8f
,
ImGuiWindowFlags_NoCollapse
|
ImGuiWindowFlags_NoSavedSettings
|
ImGuiWindowFlags_NoResize
)
;
{
ImGui
::
Checkbox
(
"Aimbot"
,
&
bAimbot
)
;
ImGui
::
Checkbox
(
"WH"
,
&
bAimbot
)
;
ImGui
::
Checkbox
(
"SpeedHack"
,
&
bAimbot
)
;
ImGui
::
Checkbox
(
"Что-то крутое"
,
&
bAimbot
)
;
}
ImGui
::
End
(
)
;
}
ImGui
::
EndFrame
(
)
;
ImGui
::
Render
(
)
;
ImGui_ImplDX9_RenderDrawData
(
ImGui
::
GetDrawData
(
)
)
;
SF
->
getRender
(
)
->
EndRender
(
)
;
}
return
true
;
}
HRESULT CALLBACK
Reset
(
D3DPRESENT_PARAMETERS
*
pPresentationParameters
)
{
return
true
;
}
bool
CALLBACK
WndProcHandler
(
HWND hwd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
{
ImGui_ImplWin32_WndProcHandler
(
hwd
,
msg
,
wParam
,
lParam
)
;
return
true
;
}
void
CALLBACK
PluginFree
(
)
{
ImGui_ImplDX9_Shutdown
(
)
;
ImGui_ImplWin32_Shutdown
(
)
;
ImGui
::
DestroyContext
(
)
;
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
)
return
;
if
(
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
ImGui
::
CreateContext
(
)
;
ImGuiIO
&
io
=
ImGui
::
GetIO
(
)
;
(
void
)
io
;
ImGui_ImplWin32_Init
(
GetActiveWindow
(
)
)
;
ImGui_ImplDX9_Init
(
SF
->
getRender
(
)
->
getD3DDevice
(
)
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"SAMPFUNCS Plugin loaded."
)
;
SF
->
getRender
(
)
->
registerD3DCallback
(
eDirect3DDeviceMethods
::
D3DMETHOD_PRESENT
,
Present
)
;
SF
->
getRender
(
)
->
registerD3DCallback
(
eDirect3DDeviceMethods
::
D3DMETHOD_RESET
,
Reset
)
;
SF
->
getGame
(
)
->
registerWndProcCallback
(
SFGame
::
MEDIUM_CB_PRIORITY
,
WndProcHandler
)
;
SF
->
getGame
(
)
->
registerGameDestructorCallback
(
PluginFree
)
;
init
=
true
;
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
switch
(
dwReasonForCall
)
{
case
DLL_PROCESS_ATTACH
:
SF
->
initPlugin
(
mainloop
,
hModule
)
;
break
;
case
DLL_THREAD_ATTACH
:
case
DLL_THREAD_DETACH
:
case
DLL_PROCESS_DETACH
:
break
;
}
return
TRUE
;
}
LRESULT
ImGui_ImplWin32_WndProcHandler
(
HWND hWnd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
{
return
LRESULT
(
)
;
}
В том что переменная не объявлена.
http://s9.uploads.ru/t/QYS62.png (https://www.blast.hk/redirect/aHR0cDovL3VwbG9hZHMucnUvUVlTNjIucG5n)
ImGui, происходит при загрузке игры. Прочитал данный топик на GitHub от ocornut'а (https://github.com/ocornut/imgui/issues/1565#issue-290299287), выяснил, что в коде нужно объявлять ImGui::CreateContext() ,но не могу догадаться, в какой блок кода его занести. Есть варианты?
http://s9.uploads.ru/t/QYS62.png (https://www.blast.hk/redirect/aHR0cDovL3VwbG9hZHMucnUvUVlTNjIucG5n)
ImGui, происходит при загрузке игры. Прочитал данный топик на GitHub от ocornut'а (https://github.com/ocornut/imgui/issues/1565#issue-290299287), выяснил, что в коде нужно объявлять ImGui::CreateContext() ,но не могу догадаться, в какой блок кода его занести. Есть варианты?
mainloop
mainloop
Попробовал объявить при загрузке игры в mainloop'е - новая дилема ;( проблема с отображением дисплея, хотя ocornut отмечал что параметры у него необязательны
http://s7.uploads.ru/t/twamo.png (https://www.blast.hk/redirect/aHR0cDovL3VwbG9hZHMucnUvdHdhbW8ucG5n)
Если просто в mainloop, тогда проблема с шрифтом.
http://s8.uploads.ru/t/dPci3.png (https://www.blast.hk/redirect/aHR0cDovL3VwbG9hZHMucnUvZFBjaTMucG5n)
Буду сильно благодарен любому, кто сумеет помочь. На C++ реальные планы, и при этом предоставилась возможность начать знакомство с разработкой под SAMP
Попробовал объявить при загрузке игры в mainloop'е - новая дилема ;( проблема с отображением дисплея, хотя ocornut отмечал что параметры у него необязательны
http://s7.uploads.ru/t/twamo.png (https://www.blast.hk/redirect/aHR0cDovL3VwbG9hZHMucnUvdHdhbW8ucG5n)
Если просто в mainloop, тогда проблема с шрифтом.
http://s8.uploads.ru/t/dPci3.png (https://www.blast.hk/redirect/aHR0cDovL3VwbG9hZHMucnUvZFBjaTMucG5n)
https://blast.hk/threads/23083/
https://forum.antichat.xyz/attachments/27284065/
как тут сделать x86?
как тут сделать x86?
x32 и x86 - одно и то же.
https://forum.antichat.xyz/attachments/27284183/
Что делать?
imgui работает, всё норм но после 10-15 сек вот это выскакивает
Что делать?
imgui работает, всё норм но после 10-15 сек вот это выскакивает
Как я вижу мой проект у тебя заработал. Ты вроде последний раз про шрифт спрашивал.
Эта ошибка начала появляться после попытки подключить шрифт?
Как я вижу мой проект у тебя заработал. Ты вроде последний раз про шрифт спрашивал.
Эта ошибка начала появляться после попытки подключить шрифт?
Да, твой проект работает. Ошибка началась еще до подключения шрифта.
https://forum.antichat.xyz/attachments/27284304/
И еще вот такое начинается
Есть ли замена опкоду 0ACD(Game text)?
-raymond-
30.12.2018, 12:06
есть ли редактор цветов imgui?
ImVec4(0.50f, 0.50f, 1.00f, 0.45f);
что означают аргументы?
_=Gigant=_
30.12.2018, 16:20
есть ли редактор цветов imgui?
ImVec4(0.50f, 0.50f, 1.00f, 0.45f);
что означают аргументы?
current color ImVec4(0.50f, 0.50f, 1.00f, 0.45f);
here example
ImVec4 custom_color = ImVec4(0.50f, 0.50f, 1.00f, 0.45f);
ImGui::ColorEdit3("Custom Color", (float*)&custom_color, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_RGB);
// use this for color D3DCOLOR_ARGB(254, (BYTE)(custom_color.z * 255), (BYTE)(custom_color.y * 255), (BYTE)(custom_color.x * 255))
example
_snprintf_s(pos, sizeof(pos) - 1, "Pos X %0.02f Y %0.02f Z %0.02f", player_pos.x, player_pos.y, player_pos.z);
pD3DFont_Arial->PrintShadow(screenposs.x, screenposs.y, D3DCOLOR_ARGB(255, (BYTE)round(custom_color.x * 255.f), (BYTE)round(custom_color.y * 255.f), (BYTE)round(custom_color.z * 255.f)), pos);
Подскажите, почему зависает игра ?
C++:
ShellExecute
(
NULL
,
(
LPCTSTR
)
"open"
,
(
LPCTSTR
)
"http://www.google"
,
0
,
0
,
SW_SHOWNORMAL
)
;
Подскажите, почему зависает игра ?
C++:
ShellExecute
(
NULL
,
(
LPCTSTR
)
"open"
,
(
LPCTSTR
)
"http://www.google"
,
0
,
0
,
SW_SHOWNORMAL
)
;
Почему не сделать просто так?
C++:
system
(
"start https://www.google.com/"
)
;
Почему не сделать просто так?
C++:
system
(
"start https://www.google.com/"
)
;
Не работает =(
_=Gigant=_
30.12.2018, 21:56
Не работает =(
ShellExecute(NULL, "open", "
", NULL, NULL, SW_SHOW);
xd
-raymond-
30.12.2018, 23:55
хочу вывести текст в Present с имеено таким же шрифтом как в чате,
нашел вот такую структуру
C++:
struct
API
stChatInfo
{
int
pagesize
;
void
*
pUnk
;
int
iChatWindowMode
;
uint8_t
bTimestamps
;
uint32_t
iUnk
;
char
logFilePathChatLog
[
MAX_PATH
+
1
]
;
void
*
pGameUI
;
// CDXUTDialog
void
*
pEditBackground
;
// CDXUTEditBox
void
*
pDXUTScrollBar
;
D3DCOLOR clTextColor
;
D3DCOLOR clInfoColor
;
D3DCOLOR clDebugColor
;
DWORD dwChatboxOffset
;
struct
stChatEntry
chatEntry
[
100
]
;
stFontRenderer
*
m_pFontRenderer
;
ID3DXSprite
*
m_pChatTextSprite
;
ID3DXSprite
*
m_pSprite
;
IDirect3DDevice9
*
m_pD3DDevice
;
int
field_63B2
;
DWORD field_63B6
;
IDirect3DTexture9
*
m_pTexture
;
int
field_63BE
;
int
field_63C2
;
int
field_63C6
;
int
field_63CA
;
int
field_63CE
;
int
field_63D2
;
int
field_63D6
;
int
m_iRedraw
;
int
m_nPrevScrollBarPosition
;
int
m_iDistanceAfterTimestamp
;
int
field_63E6
;
// functions
void
AddChatMessage
(
DWORD Color
,
const
char
*
Text
,
.
.
.
)
;
void
AddChatMessage
(
ChatMessageType Type
,
const
char
*
szString
,
const
char
*
szPrefix
,
D3DCOLOR TextColor
,
D3DCOLOR PrefixColor
)
;
void
SetDisplayMode
(
int
mode
)
;
}
;
C++:
ppFont
->
Print
(
buf
,
-
1
,
500
,
500
)
;
ppFont
=
SF
->
getRender
(
)
->
CreateNewFont
(
"Evolventa"
,
12
,
FCR_BORDER
)
;
как получить фпс?
C++:
*
(
float
*
)
0xB7CB50
_=Gigant=_
01.01.2019, 22:54
is there anything to check if vehicle wheel is damaged and which wheel ?
i found only this wheel size
vehicle_info * my_veh = vehicle_info_get(VEHICLE_SELF, 0);
my_veh->wheel_size;
Как записать что-то в битстрим на определенное место. Так вылетает с сервера.
Код:
params->bitStream->ResetWritePointer();
params->bitStream->SetWriteOffset(24);
params->bitStream->Write(sLeftRightKeys);
Какой РПС для получения координат объекта ?
itsLegend
03.01.2019, 18:28
Как записать что-то в битстрим на определенное место. Так вылетает с сервера.
Код:
params->bitStream->ResetWritePointer();
params->bitStream->SetWriteOffset(24);
params->bitStream->Write(sLeftRightKeys);
Убрать ResetWritePointer
Убрать ResetWritePointer
Server closed the connection. ничего не поменялось
Server closed the connection. ничего не поменялось
покажи код
покажи код
C++:
bool
CALLBACK
OutcomingPacket
(
stRakNetHookParams
*
params
)
{
if
(
state
&&
params
->
packetId
==
PacketEnumeration
::
ID_VEHICLE_SYNC
)
{
static
uint16_t
sLeftRightKeys
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
SetReadOffset
(
24
)
;
params
->
bitStream
->
Read
(
sLeftRightKeys
)
;
if
(
sLeftRightKeys
==
0
)
{
params
->
bitStream
->
ResetWritePointer
(
)
;
params
->
bitStream
->
SetWriteOffset
(
24
)
;
params
->
bitStream
->
Write
(
uint16_t
(
bool
(
rand
(
)
%
2
)
?
128
:
65408
)
)
;
}
}
return
true
;
}
Перебираю в цикле ID каров, но как получить кар в зоне стрима?(Функция)
-raymond-
04.01.2019, 14:24
как хукнуть откуда и куда полетел самповский трейсер пули?
В чём ошибка? Хочу вывести координаты игрока в консоле:
Нашел адреса координат через СЕ:
AE9005S.pngKarbun · 4 Янв 2019 в 16:13' data-fancybox="lb-post-286218" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="/proxy.php?image=https%3A%2F%2Fi.imgur.com%2FAE9005 S.png&hash=0e0414c51080f0aa0e064155d231ac8e" style="cursor: pointer;" title="AE9005S.png">
https://i.imgur.com/AE9005S.png
Потом написал код вывода:
C++:
[CODE]
#include
#include
#include
using
namespace
std
;
DWORD pid
;
DWORD Xcoord
=
0x1A32C794
;
DWORD Ycoord
=
0x1A32C798
;
DWORD Zcoord
=
0x1A32C79C
;
float
MyCoordX
;
float
MyCoordY
;
float
MyCoordZ
;
int
main
(
)
{
while
(
true
)
{
HWND hWnd
=
FindWindowA
(
0
,
(
"GTA:SA:MP"
)
)
;
if
(
hWnd
!=
0
)
{
GetWindowThreadProcessId
(
hWnd
,
&
pid
)
;
HANDLE pHandle
=
OpenProcess
(
PROCESS_VM_READ
,
FALSE
,
pid
)
;
ReadProcessMemory
(
pHandle
,
(
LPVOID
)
Xcoord
,
&
MyCoordX
,
sizeof
(
MyCoordX
)
,
0
)
;
ReadProcessMemory
(
pHandle
,
(
LPVOID
)
Ycoord
,
&
MyCoordY
,
sizeof
(
MyCoordY
)
,
0
)
;
ReadProcessMemory
(
pHandle
,
(
LPVOID
)
Zcoord
,
&
MyCoordZ
,
sizeof
(
MyCoordZ
)
,
0
)
;
setlocale
(
LC_ALL
,
"Russian"
)
;
cout
И вот результат:
vyFhQGH.pngKarbun · 4 Янв 2019 в 16:13' data-fancybox="lb-post-286218" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="/proxy.php?image=https%3A%2F%2Fi.imgur.com%2FvyFhQG H.png&hash=280dc2f772c47e7f328a7d3eb40d4631" style="cursor: pointer;" title="vyFhQGH.png">
https://i.imgur.com/vyFhQGH.png
В чём ошибка? Хочу вывести координаты игрока в консоле:
Нашел адреса координат через СЕ:
AE9005S.pngSiTrak · 4 Янв 2019 в 17:31' data-fancybox="lb-post-286249" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="/proxy.php?image=https%3A%2F%2Fi.imgur.com%2FAE9005 S.png&hash=0e0414c51080f0aa0e064155d231ac8e" style="cursor: pointer;" title="AE9005S.png">
https://i.imgur.com/AE9005S.png
Потом написал код вывода:
C++:
[CODE]
#include
#include
#include
using
namespace
std
;
DWORD pid
;
DWORD Xcoord
=
0x1A32C794
;
DWORD Ycoord
=
0x1A32C798
;
DWORD Zcoord
=
0x1A32C79C
;
float
MyCoordX
;
float
MyCoordY
;
float
MyCoordZ
;
int
main
(
)
{
while
(
true
)
{
HWND hWnd
=
FindWindowA
(
0
,
(
"GTA:SA:MP"
)
)
;
if
(
hWnd
!=
0
)
{
GetWindowThreadProcessId
(
hWnd
,
&
pid
)
;
HANDLE pHandle
=
OpenProcess
(
PROCESS_VM_READ
,
FALSE
,
pid
)
;
ReadProcessMemory
(
pHandle
,
(
LPVOID
)
Xcoord
,
&
MyCoordX
,
sizeof
(
MyCoordX
)
,
0
)
;
ReadProcessMemory
(
pHandle
,
(
LPVOID
)
Ycoord
,
&
MyCoordY
,
sizeof
(
MyCoordY
)
,
0
)
;
ReadProcessMemory
(
pHandle
,
(
LPVOID
)
Zcoord
,
&
MyCoordZ
,
sizeof
(
MyCoordZ
)
,
0
)
;
setlocale
(
LC_ALL
,
"Russian"
)
;
cout
И вот результат:
vyFhQGH.pngSiTrak · 4 Янв 2019 в 17:31' data-fancybox="lb-post-286249" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="/proxy.php?image=https%3A%2F%2Fi.imgur.com%2FvyFhQG H.png&hash=280dc2f772c47e7f328a7d3eb40d4631" style="cursor: pointer;" title="vyFhQGH.png">
https://i.imgur.com/vyFhQGH.png
position = (*(DWORD *)0xB6F5F0) ? (float *)(*(DWORD *)(*(DWORD *)0xB6F5F0 + 0x14) + 0x30) : NULL;
Как самп отправляет данные на сервер?
Думал сокеты, проверял какие данные проходят через функции send, sendto - не увидел данных которые могли бы отправляться.
Отправлялись данные в основном размером 4, 6, иногда 10 байт, при этом RakLogger показывал что отправляются пакеты/RPC намного большего размера.
В исходниках сампа 0.2.5 найти этого не смог.
Неадекватная сова
05.01.2019, 04:02
Перебираю в цикле ID каров, но как получить кар в зоне стрима?(Функция)
Код:
for (int i = 0; i getSAMP()->getVehicles()->pSAMP_Vehicle[i])
{
}
}
Roger571
05.01.2019, 20:12
Как самп отправляет данные на сервер?
Думал сокеты, проверял какие данные проходят через функции send, sendto - не увидел данных которые могли бы отправляться.
Отправлялись данные в основном размером 4, 6, иногда 10 байт, при этом RakLogger показывал что отправляются пакеты/RPC намного большего размера.
В исходниках сампа 0.2.5 найти этого не смог.
C++:
void
ReliabilityLayer
::
Update
(
SOCKET s
,
PlayerID playerId
,
int
MTUSize
,
RakNetTimeNS time
,
DataStructures
::
List
&
messageHandlerList
)
void
ReliabilityLayer
::
SendBitStream
(
SOCKET s
,
PlayerID playerId
,
RakNet
::
BitStream
*
bitStream
)
int
SocketLayer
::
SendTo
(
SOCKET s
,
const
char
*
data
,
int
length
,
unsigned
int
binaryAddress
,
unsigned
short
port
)
int
sendto
(
SOCKET s
,
const
char
*
buf
,
int
len
,
int
flags
,
const
sockaddr
*
to
,
int
tolen
)
;
Функции указаны в порядке их вызова
Неадекватная сова
06.01.2019, 16:39
Почему-то работает везде кроме игры, в чём проблема?
C++:
#include "stdafx.h"
#include "Windows.h"
#include
int
main
(
)
{
while
(
true
)
{
if
(
GetAsyncKeyState
(
VK_INSERT
)
)
{
keybd_event
(
VK_SPACE
,
0
,
0
,
0
)
;
Sleep
(
50
)
;
}
}
return
0
;
}
Пример нажатия клавиши H на 300 милисекунд:
Код:
int keyState = 0;
DWORD WINAPI tsendmsg(LPVOID Param) {
HWND wndHndl = FindWindowA(NULL, "GTA:SA:MP");
while (keyState == 1) {
SendMessage(wndHndl, WM_KEYDOWN, 0x48, 0);
Sleep(300);
keyState = 0;
SendMessage(wndHndl, WM_KEYUP, 0x48, 0);
}
return 0;
}
void CALLBACK cmd_paya(std::string param) {
keyState = 1;
CreateThread(NULL, 0, tsendmsg, 0, 0, NULL);
}
ImGui, столкнулся с внезапной проблемой кодировки. Введенный текст в Input начал отображаться некорректно, если вставлять через Crtl + V - все отлично, а ввод ручную выдает такие черкаши. Как поправить?
ImGui, столкнулся с внезапной проблемой кодировки. Введенный текст в Input начал отображаться некорректно, если вставлять через Crtl + V - все отлично, а ввод ручную выдает такие черкаши. Как поправить?
Открой imgui_impl_win32.cpp и замени case WM_CHAR на этот:
C++:
case
WM_CHAR
:
wchar_t
wch
;
MultiByteToWideChar
(
CP_ACP
,
MB_PRECOMPOSED
,
(
char
*
)
&
wParam
,
1
,
&
wch
,
1
)
;
io
.
AddInputCharacter
(
wch
)
;
return
0
;
Как перевести char* в utf8 для ImGui, u8 перед указателем не подходит.
Поделитесь функцией отправки текстовой информации в базу данных на сайте...
Неадекватная сова
07.01.2019, 14:43
Поделитесь функцией отправки текстовой информации в базу данных на сайте...
https://blast.hk/threads/24280/
koncumone
07.01.2019, 18:35
Ребят, есть може какие нибудь уроки с 0. Хочу писать СФ для сампа
Как перевести char* в utf8 для ImGui, u8 перед указателем не подходит.
libiconv - GNU Project - Free Software Foundation (FSF)(https://www.gnu.org/software/libiconv/) (https://www.blast.hk/redirect/aHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpY29udi 8)
Парни, как искать адрес памяти в игре? Допустим, адрес памяти открытия меню, движения персонажа, чувствительность мыши... Пробовал через СЕ, но это довольно долго... Есть ли способ быстрого поиска адреса памяти?
Парни, как искать адрес памяти в игре? Допустим, адрес памяти открытия меню, движения персонажа, чувствительность мыши... Пробовал через СЕ, но это довольно долго... Есть ли способ быстрого поиска адреса памяти?
IDA Pro
iAmerican
08.01.2019, 23:21
Не работает
Код:
C++:
HWND hWnd
=
FindWindow
(
0
,
"Calculator"
)
;
многобайтовую кодировку поставь.
jenekbueno
09.01.2019, 07:13
в имгуи можно как то сменить цвет этих стрелочек на затрагивая цвет текста?
это в функции BeginMenu
https://forum.antichat.xyz/attachments/27288081/
F11GAR0.
09.01.2019, 15:27
https://forum.antichat.xyz/attachments/27288186/
https://forum.antichat.xyz/attachments/27288186/
https://forum.antichat.xyz/attachments/27288186/
один *** недопустимый тип операнда, чё делать?
один *** недопустимый тип операнда, чё делать?
Хз почему, но в студии нельзя сделать jmp адрес.
Записывай адрес в какой-либо регистр. Ну или закрой asm вставку и запиши static uint32_t addr =адрес, и в jmp юзать его.
jenekbueno
09.01.2019, 18:14
Хз почему, но в студии нельзя сделать jmp адрес.
Записывай адрес в какой-либо регистр. Ну или закрой asm вставку и запиши static uint32_t addr =адрес, и в jmp юзать его.
можно)
в имгуи можно как то сменить цвет этих стрелочек на затрагивая цвет текста?
это в функции BeginMenu
F11GAR0.
09.01.2019, 18:41
Хз почему, но в студии нельзя сделать jmp адрес.
Записывай адрес в какой-либо регистр. Ну или закрой asm вставку и запиши static uint32_t addr =адрес, и в jmp юзать его.
кароче там немного в другом был прикол, я переписывал fixdist от сртима, и долго думал чё там хук на хук стоит, кароче это были джампы внутри области этой хексовой, я тупо метки ебанул и заработало норм
https://forum.antichat.xyz/attachments/27288283/
jenekbueno
10.01.2019, 02:22
в имгуи можно как то сменить цвет этих стрелочек на затрагивая цвет текста?
это в функции BeginMenu
Как получить координату кости?
Неадекватная сова
10.01.2019, 18:32
Как получить координату кости?
Пример получения кости игрока и отрисовка их. ID костей находятся в CPed.h
Код:
#pragma region DrawBones
if (enableDrawBones) {
actor_info *actorInfo = SF->getSAMP()->getPlayers()->pRemotePlayer[i]->pPlayerData->pSAMP_Actor->pGTA_Ped;
CPed* Ped = GAME->GetPools()->GetPed((DWORD*)actorInfo);
float posX[15], posY[15];
int counter = 0;
CVector vPos[15];
for (int i = 1; i GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 3:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 4:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 5:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 6:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 22:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 23:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 25:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 32:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 33:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 35:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 42:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 43:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 52:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 53:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
}
}
for (int i = 0; i getGame()->convert3DCoordsToScreen(vPos[i].fX, vPos[i].fY, vPos[i].fZ, &posX[i], &posY[i]);
SF->getRender()->DrawLine(posX[0], posY[0], posX[1], posY[1], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[0], posY[0], posX[11], posY[11], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[0], posY[0], posX[13], posY[13], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[1], posY[1], posX[2], posY[2], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[2], posY[2], posX[5], posY[5], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[2], posY[2], posX[8], posY[8], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[2], posY[2], posX[3], posY[3], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[3], posY[3], posX[4], posY[4], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[5], posY[5], posX[6], posY[6], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[6], posY[6], posX[7], posY[7], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[8], posY[8], posX[9], posY[9], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[9], posY[9], posX[10], posY[10], 1, 0xFFFFFFFF);
}
#pragma endregion DrawBones
jenekbueno
10.01.2019, 19:25
Пример получения кости игрока и отрисовка их. ID костей находятся в CPed.h
Код:
#pragma region DrawBones
if (enableDrawBones) {
actor_info *actorInfo = SF->getSAMP()->getPlayers()->pRemotePlayer[i]->pPlayerData->pSAMP_Actor->pGTA_Ped;
CPed* Ped = GAME->GetPools()->GetPed((DWORD*)actorInfo);
float posX[15], posY[15];
int counter = 0;
CVector vPos[15];
for (int i = 1; i GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 3:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 4:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 5:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 6:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 22:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 23:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 25:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 32:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 33:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 35:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 42:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 43:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 52:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
case 53:
Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]);
counter++;
break;
}
}
for (int i = 0; i getGame()->convert3DCoordsToScreen(vPos[i].fX, vPos[i].fY, vPos[i].fZ, &posX[i], &posY[i]);
SF->getRender()->DrawLine(posX[0], posY[0], posX[1], posY[1], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[0], posY[0], posX[11], posY[11], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[0], posY[0], posX[13], posY[13], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[1], posY[1], posX[2], posY[2], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[2], posY[2], posX[5], posY[5], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[2], posY[2], posX[8], posY[8], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[2], posY[2], posX[3], posY[3], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[3], posY[3], posX[4], posY[4], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[5], posY[5], posX[6], posY[6], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[6], posY[6], posX[7], posY[7], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[8], posY[8], posX[9], posY[9], 1, 0xFFFFFFFF);
SF->getRender()->DrawLine(posX[9], posY[9], posX[10], posY[10], 1, 0xFFFFFFFF);
}
#pragma endregion DrawBones
кто тебя учил плюсам?
case 1: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 3: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 4: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 5: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 6: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 22: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 23: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 25: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 32: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 33: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 35: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 42: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 43: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 52: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break; case 53: Ped->GetTransformedBonePosition((eBone)i, &vPos[counter]); counter++; break;
Че за ...?
Перечисляй так:
C++:
case
1
:
case
3
:
case
4
:
case
5
:
case
6
:
case
22
:
// ...
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
break
;
Неадекватная сова
10.01.2019, 19:51
Код не мой - https://blast.hk/threads/6498/page-79#post-254810
Вынес за блок init, но уведомляет об оружии в руке только при загрузке скрипта. Почему лишь при загрузке?
C++:
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
)
return
;
if
(
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"{FFFFFF}• {FFDA44}[SAMPFUNCS]: {FFFFFF}Loaded."
)
;
init
=
true
;
}
// Уведомляет только 1 раз, держа оружие в руке при подгрузке скрипта. без использования static флудит в чат, пытался исправить установкой 0 значения - сразу же заменяет, return'нить - не помогло.
static
int
current_weapon
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
byteCurrentWeapon
;
if
(
current_weapon
==
31
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"{FFFFFF}• {FFDA44}[SAMPFUNCS]: {FFFFFF}M4A1 at your right hand."
)
;
current_weapon
=
0
;
}
}
Вынес за блок init, но уведомляет об оружии в руке только при загрузке скрипта. Почему лишь при загрузке?
C++:
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
)
return
;
if
(
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"{FFFFFF}• {FFDA44}[SAMPFUNCS]: {FFFFFF}Loaded."
)
;
init
=
true
;
}
// Уведомляет только 1 раз, держа оружие в руке при подгрузке скрипта. без использования static флудит в чат, пытался исправить установкой 0 значения - сразу же заменяет, return'нить - не помогло.
static
int
current_weapon
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
byteCurrentWeapon
;
if
(
current_weapon
==
31
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"{FFFFFF}• {FFDA44}[SAMPFUNCS]: {FFFFFF}M4A1 at your right hand."
)
;
current_weapon
=
0
;
}
}
статик это круто
jenekbueno
11.01.2019, 07:08
Че за ...?
Перечисляй так:
C++:
case
1
:
case
3
:
case
4
:
case
5
:
case
6
:
case
22
:
// ...
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
break
;
нахуя здесь свитч обьясните, если можно сразу вызвать функу какую он хочет перед этим поставив проверку на число
Попытался сделать получение координат кости и рисовать на них, но чё то не то
C++:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
#include
#include
#include
#include
#define FUNC_IsVisible 0x536BC0
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
bool
CALLBACK
Present
(
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
if
(
SUCCEEDED
(
SF
->
getRender
(
)
->
BeginRender
(
)
)
)
// если рендерер готов к рисованию
{
for
(
int
i
=
0
;
i
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
;
CPed
*
Ped
=
GAME
->
GetPools
(
)
->
GetPed
(
(
DWORD
*
)
actorInfo
)
;
float
posX
[
15
]
,
posY
[
15
]
;
int
counter
=
0
;
CVector vPos
[
15
]
;
for
(
int
i
=
1
;
i
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
3
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
4
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
5
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
6
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
22
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
23
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
25
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
32
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
33
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
35
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
42
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
43
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
52
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
case
53
:
Ped
->
GetTransformedBonePosition
(
(
eBone
)
i
,
&
vPos
[
counter
]
)
;
counter
++
;
}
}
if
(
Ped
->
IsOnScreen
(
)
)
{
for
(
int
i
=
0
;
i
getGame
(
)
->
convert3DCoordsToScreen
(
vPos
[
i
]
.
fX
,
vPos
[
i
]
.
fY
,
vPos
[
i
]
.
fZ
,
&
posX
[
i
]
,
&
posY
[
i
]
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
0
]
,
posY
[
0
]
,
posX
[
1
]
,
posY
[
1
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
0
]
,
posY
[
0
]
,
posX
[
11
]
,
posY
[
11
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
0
]
,
posY
[
0
]
,
posX
[
13
]
,
posY
[
13
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
1
]
,
posY
[
1
]
,
posX
[
2
]
,
posY
[
2
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
2
]
,
posY
[
2
]
,
posX
[
5
]
,
posY
[
5
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
2
]
,
posY
[
2
]
,
posX
[
8
]
,
posY
[
8
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
2
]
,
posY
[
2
]
,
posX
[
3
]
,
posY
[
3
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
3
]
,
posY
[
3
]
,
posX
[
4
]
,
posY
[
4
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
5
]
,
posY
[
5
]
,
posX
[
6
]
,
posY
[
6
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
6
]
,
posY
[
6
]
,
posX
[
7
]
,
posY
[
7
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
8
]
,
posY
[
8
]
,
posX
[
9
]
,
posY
[
9
]
,
2
,
0xFFFFFFFF
)
;
SF
->
getRender
(
)
->
DrawLine
(
posX
[
9
]
,
posY
[
9
]
,
posX
[
10
]
,
posY
[
10
]
,
2
,
0xFFFFFFFF
)
;
}
SF
->
getRender
(
)
->
EndRender
(
)
;
// завершаем рисование
}
}
;
return
true
;
// возвращаем положительный результат
}
;
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
)
return
;
if
(
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
//SF->getSAMP()->registerChatCommand("stillobj", sasas);
init
=
true
;
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
switch
(
dwReasonForCall
)
{
case
DLL_PROCESS_ATTACH
:
SF
->
initPlugin
(
mainloop
,
hModule
)
;
break
;
case
DLL_THREAD_ATTACH
:
case
DLL_THREAD_DETACH
:
case
DLL_PROCESS_DETACH
:
break
;
}
return
TRUE
;
}
В чём ошибка?
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot