PDA

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


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

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

SR_team
19.11.2018, 00:53
Почему меня телепортирует на "спавн сампа" (центр карты вроде как), вместо тп на метку?
Код нахождения координат метки и функцию нахождения координаты 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?

#Rin
19.11.2018, 15:08
Как определить версию сампа без 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

#Rin
20.11.2018, 16:55
почему вместо русского текста вопросы?

https://i.imgur.com/SisOMdf.png


Потому что ImGui работает только с UTF-8.

ImGui::Text(u8"Русский язык");

SR_team
20.11.2018, 17:56
(void)io;


зачем?

#Rin
20.11.2018, 18:02
зачем?


В примерах ImGui это зачем-то есть, остальные просто копировали не обращая внимания.

LaRossa
22.11.2018, 00:33
Подскажите пожалуйста, как проверить что в массиве записаны только цифры, а если появлялась буква - false. Заранее спасибо

ALF
22.11.2018, 00:36
Подскажите пожалуйста, как проверить что в массиве записаны только цифры, а если появлялась буква - 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)

atizoff
25.11.2018, 01:04
впервые пишу на таком языке что-либо. вот сделал 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
;
}
}

#Rin
25.11.2018, 01:30
впервые пишу на таком языке что-либо. вот сделал 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, вопрос, как это сделать? Ибо с этим язык в жизни не сталкивался

SR_team
25.11.2018, 04:23
Как сделать это на языке Assembler?



Код:






nop
nop
nop
nop
nop
nop

MILLKISI
25.11.2018, 11:31
Код:






nop
nop
nop
nop
nop
nop






Я окончательно запуталась, ибо с assembler я еще в жизни не встречалась.

SiTrak
25.11.2018, 13:47
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
)
;
}
;




хочу получать свой хп, ошибки?)

SR_team
25.11.2018, 13:48
Ибо с этим язык в жизни не сталкивался





Я окончательно запуталась


Ты там ночью пол сменило?



с assembler я еще в жизни не встречалась.


зачем тогда спрашиваешь как это сделать в асм?

SR_team
25.11.2018, 13:49
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

LaRossa
25.11.2018, 23:27
Подскажите почему крашит

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






К сожалению ничего не изменилось.

#Rin
25.11.2018, 23:38
Подскажите почему крашит

C++:






static
char
*
test
[
2
]
;





Потому что нужен именно массив, а не указатель.

В твоем случае двухмерный массив.

LaRossa
26.11.2018, 00:23
Почему при записи русских символов - иероглифы ?

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"Тест"

LaRossa
26.11.2018, 01:34
Подскажите, почему кнопка "очистить" срабатывает только на 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

ALF
26.11.2018, 22:37
возможно как то в гташке сделать скрин без задержки?
юзаю CGame->TakeScreenshot в игровом потоке - микрофриз, логично, ок
юзаю эту же функцию но в новом потоке, созданный через _beginthread / CreateThread, сохраняется чёрный экран

есть ещё какой нибудь метод помимо TakeScreenshot(char * szFileName) ?


в вк напиши)

jenekbueno
26.11.2018, 22:45
IDirect3DSurface9


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

демас - лаффки.

Stiopko
27.11.2018, 22:19
Есть ли какая то библиотека с хуками и отправкой пакетов на с++?

SiTrak
28.11.2018, 16:18
Подключал имгуи по гайду, столкнулся с такой проблемой

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)

AnWu
29.11.2018, 18:10
Успешно настроил проект под 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 эмоций. Есть какой-нибудь лог что происходит с плагином?


дебагер

AnWu
29.11.2018, 18:16
дебагер


компелится то всё нормально, где можно почитать больше о аси плагинах? я нашел минимум инфы. По тому же муну инфы больше

rraggerr
29.11.2018, 18:18
компелится то всё нормально, где можно почитать больше о аси плагинах? я нашел минимум инфы. По тому же муну инфы больше


Просто ты ток в луа шариш)0

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

Далее ставишь бряки там где тебе что то не понятно(ПКМ по строчке) после того как поставишь - тебе будет выдавать в окошке значение которое вернула функция

AnWu
29.11.2018, 18:21
Просто ты ток в луа шариш)0
В отладке - приконектится к процессу - там выбираешь гтаса(можно еще запускать через локальный отладчик)
Далее ставишь бряки там где тебе что то не понятно(ПКМ по строчке) после того как поставишь - тебе будет выдавать в окошке значение которое вернула функция


позовите другого оператора, этот сломался. другими словами ты объяснять не умеешь.

rraggerr
29.11.2018, 18:23
позовите другого оператора, этот сломался. другими словами ты объяснять не умеешь.


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

AnWu
29.11.2018, 18:32
я тебе дал инструкцию как подключать дебагер и посмотреть что там не так, вспоминаю времена когда меня учили луа, вот ты сейчас в таком же положении)


Вроде нашел, спасибо

Есть ли вики по плагин-сдк?

rraggerr
29.11.2018, 18:34
Вроде нашел, спасибо
Есть ли вики по плагин-сдк?


Скорее всего нет, это ведь сдк)

AnWu
29.11.2018, 18:40
Скорее всего нет, это ведь сдк)



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

Не втыкаю что дальше? Точки остановки делать?

rraggerr
29.11.2018, 18:41
Не втыкаю что дальше? Точки остановки делать?


ну да

AnWu
29.11.2018, 18:42
ну да


И ничего не происходит( Как же тут всё не как в луа(

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
;
}

AnWu
29.11.2018, 19:14
Судя по скрину, у тебя отсутствует 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
где искать инфу то. неужели все через вопросы?


Открывай файлики и смотри че там за функции, классы, может есть вики, но в сф все делается именно так

imring
29.11.2018, 19:17
Судя по скрину, у тебя отсутствует 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
}
;
}
;

SiTrak
30.11.2018, 22:34
Как в имгуи, разместить чекбоксы в столбик?

Musaigen
30.11.2018, 22:36
Как в имгуи, разместить чекбоксы в столбик?


Что? Просто добавить ImGui::Checkbox("label", &variable);

SiTrak
30.11.2018, 23:03
Что? Просто добавить 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)

Уп

SiTrak
01.12.2018, 11:29
Как можно создать такую вкладку?

ufdhbi
01.12.2018, 11:38
Как можно создать такую вкладку?



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 градусов. Видимо тебя это интересует


Примерно да

SR_team
01.12.2018, 15:33
Как изменить направление вектора по градусам? 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 убрать людей и транспорт(весь)?

SR_team
01.12.2018, 17:05
право-лево, в сампе это вроде 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)

AnWu
01.12.2018, 18:33
Как правильно числа записывать в const char *? Не совсем понимаю, а загуглить правильно не выходит

imring
01.12.2018, 18:39
Как правильно числа записывать в const char *? Не совсем понимаю, а загуглить правильно не выходит


тебе надо tostring? to_string - C++ Reference(http://www.cplusplus.com/reference/string/to_string/) (https://www.blast.hk/redirect/aHR0cDovL3d3dy5jcGx1c3BsdXMuY29tL3JlZmVyZW5jZS9zdH JpbmcvdG9fc3RyaW5nLw)

AnWu
01.12.2018, 18:49
тебе надо 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);

хмхмхм

imring
01.12.2018, 19:03
ImGui::Selectable(std::to_string(i), selected);
хмхмхм


std::to_string(i).c_str()

SiTrak
02.12.2018, 16:21
Как скрыть, или хотя бы запретить передвижение этой палки)

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
;
}

ALF
07.12.2018, 16:44
fp = fopen(IniFile, "r");


r+

guerrka
08.12.2018, 00:10
хелп. Почему краш?

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();

Stiopko
08.12.2018, 14:38
Почему при очищении памяти ошибка?

C++:





[CODE]
char
*
DeleteChar
(
char
*
ch
,
int
strtCh
)
{
int
s
=
SizeChar
(
ch
)
,
i
;
char
*
tnp
=
new
char
[
s
-
1
]
;
for
(
i
=
0
;
i

guerrka
08.12.2018, 15:45
Юзай функцию из SF API

Код:






SF->getSAMP()->getInfo()->pPools->pText3D->Create3DText();






А где можно найти все функции СФ АПИ? Пробовал найти эту же функцию, но не нашел и решил использовать опкод напрямую.

Неадекватная сова
08.12.2018, 16:09
А где можно найти все функции СФ АПИ? Пробовал найти эту же функцию, но не нашел и решил использовать опкод напрямую.


SFSAMP.h

guerrka
08.12.2018, 19:15
А как можно создать ASI скрипт с функциями SampFuncs'a?

ALF
08.12.2018, 19:18
А как можно создать ASI скрипт с функциями SampFuncs'a?


LoadLibrary

GetProcAddress

guerrka
08.12.2018, 20:19
Как создать 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 *"

#Rin
08.12.2018, 20:39
Как создать 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
(
)

guerrka
08.12.2018, 23:08
C++:






str
.
c_str
(
)





"int stTextLabelPool::Create3DText(uint16_t,stTextLabel )": невозможно преобразовать аргумент 2 из "const _Elem *" в "char *"

ALF
09.12.2018, 00:57
"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).

LUCHARE
09.12.2018, 03:29
Как создать 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)

SiTrak
09.12.2018, 21:13
Что это такое и как этим пользоваться?

Неадекватная сова
09.12.2018, 21:16
Что это такое и как этим пользоваться?


Мейби кастом. Такое не подойдет? memcpy - C++ Reference(http://www.cplusplus.com/reference/cstring/memcpy/) (https://www.blast.hk/redirect/aHR0cDovL3d3dy5jcGx1c3BsdXMuY29tL3JlZmVyZW5jZS9jc3 RyaW5nL21lbWNweS8)

SiTrak
09.12.2018, 21:23
Мейби кастом. Такое не подойдет? memcpy - C++ Reference(http://www.cplusplus.com/reference/cstring/memcpy/) (https://www.blast.hk/redirect/aHR0cDovL3d3dy5jcGx1c3BsdXMuY29tL3JlZmVyZW5jZS9jc3 RyaW5nL21lbWNweS8)


не, пробовал, он приминает меньше аргументов

guerrka
09.12.2018, 22:28
Есть ли какой-нибудь тутор по созданию 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;

SiTrak
11.12.2018, 23:17
Как проверить то что я нахожусь в машине?

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");

guerrka
12.12.2018, 12:20
Помогите мне пожалуйста, кому не тяжело проект скинуть для создания длл через 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++. Именно книгу

SiTrak
12.12.2018, 14:17
Посоветуйте книгу для изучения C++. Именно книгу


Список книг для обучения C++ - JOPR.ORG(https://jopr.org/blog/detail/spisok-knig-dlya-obucheniya-c) (https://www.blast.hk/redirect/aHR0cHM6Ly9qb3ByLm9yZy9ibG9nL2RldGFpbC9zcGlzb2sta2 5pZy1kbHlhLW9idWNoZW5peWEtYw)

Stiopko
12.12.2018, 21:39
Подскажите пж, как сделать чтобы персонаж назад не поворачивался, при повороте его через плагин?

C++:






static
actor_info
*
self
=
SF
->
getGame
(
)
->
actorInfoGet
(
ACTOR_SELF
,
ACTOR_ALIVE
)
;
self
->
fTargetRotation
=
angle
;
self
->
fCurrentRotation
=
angle
;

Musaigen
14.12.2018, 17:34
Как можно нарисовать квадрат со сглаженными углами?

SiTrak
14.12.2018, 19:35
Как получить игрока сидящего в авто (не локального) в цлео это 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

Karbun
14.12.2018, 21:09
Помогите пожалуйста, каким кодом можно включить кириллицу в RakSamp?

https://i.imgur.com/5EZKeeF.png

ALF
15.12.2018, 00:20
Помогите пожалуйста, каким кодом можно включить кириллицу в 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)

#Northn
15.12.2018, 22:33
Пока еб*лся сутки с попыткой запретить переименовывание плагина, потерял девственность раз 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 - секунды

ALF
17.12.2018, 08:08
какой формат у миллисекунд? немогу найти нигде
%Y - год

%m - месяц

%d - день

%H - часы

%M - минуты

%S - секунды


v наверно

jenekbueno
17.12.2018, 09:40
ne to

0xff
17.12.2018, 13:09
Как вызвать CCheat::WeaponSet1(void) на чистом с++ ? (дайте плис пример)

-raymond-
17.12.2018, 13:39
ne to


%MS mb

Harryss
17.12.2018, 13:47
Существует ли список функций для 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
)
;
}

ALF
18.12.2018, 01:17
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

Romelo
20.12.2018, 14:49
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);
}

Romelo
20.12.2018, 15:21
аргумент типа 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)

LUCHARE
20.12.2018, 15:28
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 байт)

Romelo
20.12.2018, 15:30
перед строкой нужно записать её длину (1 байт)


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

LUCHARE
20.12.2018, 15:32
Код не мой, главное - работает.


в диалогах с инпутом не работает

-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);
}

LUCHARE
20.12.2018, 15:46
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
)
;
}

Romelo
20.12.2018, 16:03
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/

ALF
23.12.2018, 10:28
Беда такого рода, при компиляции .sf плагина в листе ошибок около 2.6к, будто что-то не подключено, при открытии проекта внизу вот что:


вы заебали уже скидывать эту ***ню сюда.

Выше отвечали миллион раз на это, + там русским языком написано в чём проблема

Сорян, крик души

atizoff
23.12.2018, 18:21
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/

imring
23.12.2018, 18:27
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
)
;
}

SiTrak
23.12.2018, 19:42
Как получить объект по его ID?

atizoff
23.12.2018, 20:11
может кто объяснить как работать с 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
;
}





Основы языка учи.

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

Cake_
26.12.2018, 14:16
Объясните простым языком что такое явное преобразование и для чего оно используется?

ALF
26.12.2018, 14:45
Объясните простым языком что такое явное преобразование и для чего оно используется?



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)

#Rin
26.12.2018, 18:31
[QUOTE="cakebou"]

Почему в cmd выводит только

Ranto
28.12.2018, 15:15
Есть где-нибудь уроки по d3d(d3d9/x i td), хотелось бы почитать; а то во-всяких видео-уроках недоскажут, пропустят через один шаг

zaranee spasibo :)

Ranto
28.12.2018, 19:25
Как это фиксануть?


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/

как справиться с этим?

ALF
28.12.2018, 20:56
как справиться с этим?



Код:






reinterpret_cast(addr)
reinterpret_cast(addr)

Cake_
28.12.2018, 22:56
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
(
)
;
}





В том что переменная не объявлена.

Harryss
28.12.2018, 23:09
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() ,но не могу догадаться, в какой блок кода его занести. Есть варианты?

ALF
28.12.2018, 23:49
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

Harryss
29.12.2018, 00:12
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

ALF
29.12.2018, 00:17
Попробовал объявить при загрузке игры в 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/

Cake_
29.12.2018, 02:06
https://forum.antichat.xyz/attachments/27284065/

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

Harryss
29.12.2018, 02:22
как тут сделать x86?


x32 и x86 - одно и то же.

Cake_
29.12.2018, 15:28
https://forum.antichat.xyz/attachments/27284183/

Что делать?

imgui работает, всё норм но после 10-15 сек вот это выскакивает

Harryss
29.12.2018, 20:27
Что делать?
imgui работает, всё норм но после 10-15 сек вот это выскакивает


Как я вижу мой проект у тебя заработал. Ты вроде последний раз про шрифт спрашивал.

Эта ошибка начала появляться после попытки подключить шрифт?

Cake_
29.12.2018, 22:13
Как я вижу мой проект у тебя заработал. Ты вроде последний раз про шрифт спрашивал.

Эта ошибка начала появляться после попытки подключить шрифт?


Да, твой проект работает. Ошибка началась еще до подключения шрифта.

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

И еще вот такое начинается

Stiopko
29.12.2018, 23:13
Есть ли замена опкоду 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);

LaRossa
30.12.2018, 18:18
Подскажите, почему зависает игра ?

C++:






ShellExecute
(
NULL
,
(
LPCTSTR
)
"open"
,
(
LPCTSTR
)
"http://www.google"
,
0
,
0
,
SW_SHOWNORMAL
)
;

Harryss
30.12.2018, 20:07
Подскажите, почему зависает игра ?

C++:






ShellExecute
(
NULL
,
(
LPCTSTR
)
"open"
,
(
LPCTSTR
)
"http://www.google"
,
0
,
0
,
SW_SHOWNORMAL
)
;





Почему не сделать просто так?

C++:






system
(
"start https://www.google.com/"
)
;

LaRossa
30.12.2018, 21:51
Почему не сделать просто так?

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
)
;

Cake_
01.01.2019, 19:11
как получить фпс?

#Rin
01.01.2019, 19:30
как получить фпс?



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;

Stiopko
02.01.2019, 01:02
Как записать что-то в битстрим на определенное место. Так вылетает с сервера.

Код:






params->bitStream->ResetWritePointer();
params->bitStream->SetWriteOffset(24);
params->bitStream->Write(sLeftRightKeys);

Soreso
03.01.2019, 18:11
Какой РПС для получения координат объекта ?

itsLegend
03.01.2019, 18:28
Как записать что-то в битстрим на определенное место. Так вылетает с сервера.

Код:






params->bitStream->ResetWritePointer();
params->bitStream->SetWriteOffset(24);
params->bitStream->Write(sLeftRightKeys);





Убрать ResetWritePointer

Stiopko
03.01.2019, 19:16
Убрать ResetWritePointer


Server closed the connection. ничего не поменялось

SiTrak
04.01.2019, 02:55
Server closed the connection. ничего не поменялось


покажи код

Stiopko
04.01.2019, 03:02
покажи код



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
;
}

Soreso
04.01.2019, 14:03
Перебираю в цикле ID каров, но как получить кар в зоне стрима?(Функция)

-raymond-
04.01.2019, 14:24
как хукнуть откуда и куда полетел самповский трейсер пули?

Karbun
04.01.2019, 17:13
В чём ошибка? Хочу вывести координаты игрока в консоле:

Нашел адреса координат через СЕ:



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

SiTrak
04.01.2019, 18:31
В чём ошибка? Хочу вывести координаты игрока в консоле:
Нашел адреса координат через СЕ:


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;

_Vine_
05.01.2019, 03:02
Как самп отправляет данные на сервер?

Думал сокеты, проверял какие данные проходят через функции 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);
}

Harryss
06.01.2019, 22:34
ImGui, столкнулся с внезапной проблемой кодировки. Введенный текст в Input начал отображаться некорректно, если вставлять через Crtl + V - все отлично, а ввод ручную выдает такие черкаши. Как поправить?

#Rin
06.01.2019, 22:54
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
;

Stiopko
07.01.2019, 01:32
Как перевести char* в utf8 для ImGui, u8 перед указателем не подходит.

Karbun
07.01.2019, 02:32
Поделитесь функцией отправки текстовой информации в базу данных на сайте...

Неадекватная сова
07.01.2019, 14:43
Поделитесь функцией отправки текстовой информации в базу данных на сайте...


https://blast.hk/threads/24280/

koncumone
07.01.2019, 18:35
Ребят, есть може какие нибудь уроки с 0. Хочу писать СФ для сампа

LUCHARE
07.01.2019, 19:05
Как перевести char* в utf8 для ImGui, u8 перед указателем не подходит.


libiconv - GNU Project - Free Software Foundation (FSF)(https://www.gnu.org/software/libiconv/) (https://www.blast.hk/redirect/aHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpY29udi 8)

Karbun
08.01.2019, 01:02
Парни, как искать адрес памяти в игре? Допустим, адрес памяти открытия меню, движения персонажа, чувствительность мыши... Пробовал через СЕ, но это довольно долго... Есть ли способ быстрого поиска адреса памяти?

#Rin
08.01.2019, 01:17
Парни, как искать адрес памяти в игре? Допустим, адрес памяти открытия меню, движения персонажа, чувствительность мыши... Пробовал через СЕ, но это довольно долго... Есть ли способ быстрого поиска адреса памяти?


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/

один *** недопустимый тип операнда, чё делать?

#Rin
09.01.2019, 15:54
один *** недопустимый тип операнда, чё делать?


Хз почему, но в студии нельзя сделать 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

SiTrak
10.01.2019, 18:22
Как получить координату кости?

Неадекватная сова
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





кто тебя учил плюсам?

#Rin
10.01.2019, 19:49
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

Harryss
11.01.2019, 00:07
Вынес за блок 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
;
}
}

Romelo
11.01.2019, 00:41
Вынес за блок 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
;





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

Soreso
11.01.2019, 17:39
Попытался сделать получение координат кости и рисовать на них, но чё то не то

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
;
}




В чём ошибка?