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

kawa operand
28.06.2018, 15:32
ну вот и гугли

как считать последнюю строку файла c++

регулярные выражения c++

запись в файл c++

madrasso
28.06.2018, 15:37
как считать последнюю строку файла c++


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

kawa operand
28.06.2018, 15:41
через память я уже описал как делается

nt_qwark
28.06.2018, 19:03
Ребзи есть какая то функа в гташке и ее можно вызвать (отобразить текст на экране) что то там jumpmessage

Научите ее вызывать из консоли на c++ plez

kawa operand
28.06.2018, 20:32
ох блч точно не знаю как это делается но вроде ты должен найти местечко где можно записать несколько десятков байт своей функции которая будет вызывать смс в гта и запускать эту функцию которую записал через CreateRemoteThread чето там ну или просто свяжи свою консоль и гта са через длл

это если тебе дохуя функций надо вызывать там

nt_qwark
28.06.2018, 22:47
Нельзя без инжектов обойтись?



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



жду ответа профессионалов

(не шарю в читмейкинге, реверсе, дизасм и тд)

kawa operand
28.06.2018, 22:51
ну невозможно вроде(искал когда то давно) по другому вызвать функцию в чужом процессе, либо функцию свою пиши туда либо библиотеку

nt_qwark
28.06.2018, 23:20
да ну

а не проще найти оффсет это йфунки в игре и проводить с ним манипуляции? какой нах инжект

winapi наше всё

kawa operand
28.06.2018, 23:36
я тебе про то и говорю, чтобы проводить такие манипуляции в чужом процессе надо инжектить в него свой код

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


Зачем инжектить что то? Слышал про writeprocessmemory(..) readprocessmemory(..) ??

Я знаю как примерно должно это работать, но не знаю как это написать

Мы тайпдефаем нужную функу JumpMessageA вроде бы, создаем поток в процессе и выполняем эту функцию

Но вот с написанием трабл.(

AddMessageJumpQ

kawa operand
29.06.2018, 13:56
начать стоит хотя бы с того, что addmessagejumpq это __cdecl функция, а threadproc для createremotethread __stdcall да и возвращаемые значения вроде как разные, аргументы тоже.

почему ты так не хочешь инжектить свой код ?

nt_qwark
29.06.2018, 14:01
Как это запустить без инжекта? Используя консоль на плюсиках




void AddMessageJumpQ(PCHAR text, UINT time, USHORT flag, bool bPreviousBrief) // Функция показа сообщения на экране.

{

((void(__cdecl *)(PCHAR, UINT, USHORT, bool))0x69F1E0)(text, time, flag, bPreviousBrief);

}

kawa operand
29.06.2018, 14:01
C++:






DWORD WINAPI
ThreadProc
(
_In_ LPVOID lpParameter
)
;
void
(
__cdecl
*
)
(
PCHAR
,
UINT
,
USHORT
,
bool
)
;




у них вообще ничего общего нет, ты не сможешь кинуть поток в эту функцию, нужно инжектить свой код

nt_qwark
29.06.2018, 14:06
CreateRemoteThread

А ну по сути это и есть инжект. Ладно. Как заинжектеть це функу и вызывать ее из своей консоли?

kawa operand
29.06.2018, 14:10
6A 00

6A 00

6A 000003E8

68 textaddr

E8 function_addr

add esp, 16

C3

*** знает вроде так, поднятие стека еще скомпилируй

nt_qwark
29.06.2018, 14:11
6A 00
6A 00
6A 000003E8
68 textaddr
E8 function_addr
add esp, 16
C3

*** знает вроде так, поднятие стека еще скомпилируй


И как это использовать?

kawa operand
29.06.2018, 14:12
записывать в память игры это и кидать поток туда

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

nt_qwark
29.06.2018, 14:13
#define funcAddr 0x0

const char* lpText = "TEXT";

__asm {

6A 00

6A 00

6A 000003E8

68 &lpText

E8 funcAddr

add esp, 16

C3

}

Вот так?

хм не понял, как я это запишу ля

kawa operand
29.06.2018, 14:15
unsigned char func[] = {0x6A и тд}

nt_qwark
29.06.2018, 14:16
Ты рофлишь? Что значит "кидать поток туда"?

kawa operand
29.06.2018, 14:18
createremotethread

nt_qwark
29.06.2018, 14:18
unsigned char func[] = {0x6A и тд}


а, понятно.

Почему в плюсах байты это блять unsigned char????? Не понимаю логики в таком названии

kawa operand
29.06.2018, 14:20
потому что typedef unsigned char BYTE

nt_qwark
29.06.2018, 14:24
Ну это я знаю

Из windows.h этот тайпдеф

Но почему блять unsigned char? БЕЗЗНАКОВЫЙ СИМВОЛ, БАЙТ - СИМВОЛ???????

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

kawa operand
29.06.2018, 14:26
да

p1cador
29.06.2018, 14:40
@ForHax (https://www.blast.hk/members/139930/)

nt_qwark
29.06.2018, 14:44
[QUOTE="Муззи"]

Как синхру сделать?

Сделал так, но значение переменной true не устанавливается:

C++:





[CODE]
#include
#include
#pragma comment(lib,"User32.lib")
using
namespace
std
;
static
bool
g_Active
=
false
;
DWORD WINAPI
proizv
(
PVOID Parametr
)
{
while
(
true
)
{
if
(
GetAsyncKeyState
(
81
)
==
-
32768
)
{
while
(
GetAsyncKeyState
(
81
)
)
{
}
g_Active
=
true
;
}
Sleep
(
20
)
;
}
return
0
;
}
void
main
(
)
{
DWORD idThread
,
dwThrdParam
=
1
;
HANDLE h1
;
h1
=
CreateThread
(
NULL
,
0
,
proizv
,
&
dwThrdParam
,
0
,
&
idThread
)
;
while
(
true
)
{
if
(
g_Active
==
true
)
{
cout

Dark_Knight
30.06.2018, 14:23
bool KeyIsPressed(int vkey) {
if (GetAsyncKeyState(vkey) != 0) return true;
return false;
}


:facepalm2:

C++:






bool
KeyIsPressed
(
int
vkey
)
{
return
GetAsyncKeyState
(
vkey
)
!=
0
;
}

Musaigen
01.07.2018, 04:02
Подскажите, что нужно сделать с такой ошибкой?


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

Funkastarz
01.07.2018, 04:25
Здравствуйте, друг, я вас очень прошу, покинуть текущее место лечения, и перейти в другое, ибо не помогает, по всей видимости.


От табуретки получишь больше советов, чем от тебя. Побольше запятых ставь, умник.

Dark_Knight
01.07.2018, 06:27
От табуретки получишь больше советов, чем от тебя. Побольше запятых ставь, умник.


Окей. Сколько надо не иметь ума, чтобы сурсы С++ вставить в скриптовый SCM компилятор под названием Sanny Builder?

kawa operand
01.07.2018, 10:42
Подскажите, что нужно сделать с такой ошибкой?


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

mazec0de
01.07.2018, 18:48
приветствую всех.

можете подсказать почему пропадают ники и хп бар игроков? так же лейблы. в cr-mp

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

без показа imgui все в норме, при открытии меню или показа боттом бара все пропадает.

p.s исходники слонобойки

kawa operand
01.07.2018, 19:01
ну это особенности хука

скорее всего он как и я хукает EndScene

если ты юзаешь сурсы его то ты тут ничего не исправишь))

mazec0de
01.07.2018, 19:03
ну это особенности хука
скорее всего он как и я хукает EndScene
если ты юзаешь сурсы его то ты тут ничего не исправишь))


а конкретней можно? чего именно не хватает imgui? или наоборот

CleanLegend
01.07.2018, 19:03
приветствую всех.
можете подсказать почему пропадают ники и хп бар игроков? так же лейблы. в cr-mp
все что я нарыл, это то что при показе imgui вся эта лабуда случается.
без показа imgui все в норме, при открытии меню или показа боттом бара все пропадает.
p.s исходники слонобойки


Получи device по другому



ну это особенности хука
скорее всего он как и я хукает EndScene
если ты юзаешь сурсы его то ты тут ничего не исправишь))


Тут проблема не том, что хукаешь, а как ты получаешь device.

mazec0de
01.07.2018, 19:06
Получи device по другому

Тут проблема не том, что хукаешь, а как ты получаешь device.


хорошо, спасибо за наводку

SR_team
01.07.2018, 19:20
приветствую всех.
можете подсказать почему пропадают ники и хп бар игроков? так же лейблы. в cr-mp
все что я нарыл, это то что при показе imgui вся эта лабуда случается.
без показа imgui все в норме, при открытии меню или показа боттом бара все пропадает.
p.s исходники слонобойки


потому что исходники слонобойки. На гите в оффициальной репе ImGui все исправленно и ничего не пропадает.

qwintty
02.07.2018, 02:37
IsInRangeOf(*xpos, *ypos, x, y, radius))

GetfAngleByPos(*xpos, *ypos, x, y);

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

kawa operand
02.07.2018, 09:11
первую очень легко сделать самостоятельно

а вторую чето не понял

qwintty
02.07.2018, 12:30
первую очень легко сделать самостоятельно
а вторую чето не понял


Ну определение функции .

Т.е ее исходник.

Dark_Knight
02.07.2018, 12:52
Ну определение функции .
Т.е ее исходник.


Может тебе еще и кошкодевочку найти?

qwintty
02.07.2018, 13:25
Может тебе еще и кошкодевочку найти?


Ну желательно.

kawa operand
02.07.2018, 13:27
я бы тоже не отказался

qwintty
02.07.2018, 14:28
Подскажите пожалуйста , где хотя бы найти информацию по этим функциям.

IsInRangeOf(*xpos, *ypos, x, y, radius))

GetfAngleByPos(*xpos, *ypos, x, y);

CleanLegend
02.07.2018, 16:59
Подскажите пожалуйста , где хотя бы найти информацию по этим функциям.
IsInRangeOf(*xpos, *ypos, x, y, radius))
GetfAngleByPos(*xpos, *ypos, x, y);


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

Могу посоветовать аналог, возможно подойдет - Информация - [SF] Полезные функции(https://blast.hk/threads/10970/#post-124093) (https://blast.hk/threads/10970/#post-124093)

насчет углов, посмотри plugin от SR_team - AsiPlugin(https://git.prime-hack.net/SR_team/AsiPlugin) (https://www.blast.hk/redirect/aHR0cHM6Ly9naXQucHJpbWUtaGFjay5uZXQvU1JfdGVhbS9Bc2 lQbHVnaW4)

И на будущее, не создавай темы по каждому вопросу, достаточно написать вопрос в эту тему.

BlackKnigga
02.07.2018, 17:23
приветствую всех.
можете подсказать почему пропадают ники и хп бар игроков? так же лейблы. в cr-mp
все что я нарыл, это то что при показе imgui вся эта лабуда случается.
без показа imgui все в норме, при открытии меню или показа боттом бара все пропадает.
p.s исходники слонобойки


Была такая штука, неверно сохранялись\восстанавлива ись стейты девайса. В последнем имгуи таких проблем нет.

Sasiko1
02.07.2018, 19:14
Как получить хп ?

stPassengerData ->byteHealth;

C&J
02.07.2018, 20:15
Всем хай,использую хук на HandleRPCPacketFunc в двух плагинах и получается,что он работает то в одном плагине,то в другом.




C++:






#define SAMP_HOOKENTER_HANDLE_RPC 0x3743D
#define SAMP_HOOKENTER_HANDLE_RPC2 0x373C9
#define SAMP_HOOKEXIT_HANDLE_RPC 0x37443
#define SAMP_HOOKEXIT_HANDLE_RPC2 0x37451
void
HandleRPCPacketFunc
(
unsigned
char
id
,
RPCParameters
*
rpcParams
,
void
(
*
callback
)
(
RPCParameters
*
)
)
{
if
(
rpcParams
!=
nullptr
&&
rpcParams
->
numberOfBitsOfData
>=
8
)
{
BitStream
bsData
(
rpcParams
->
input
,
rpcParams
->
numberOfBitsOfData
/
8
,
false
)
;
switch
(
id
)
{
case
RPC_DeathMessage
:
{
pSAMP
->
addMessageToChat
(
-
1
,
"plugin ONE"
)
;
int16_t
plaerid
,
killerid
;
int8_t
resaon
;
bsData
.
ResetReadPointer
(
)
;
bsData
.
Read
(
killerid
)
;
bsData
.
Read
(
plaerid
)
;
bsData
.
Read
(
resaon
)
;
break
;
}
}
}
callback
(
rpcParams
)
;
}
void
_declspec
(
naked
)
hook_handle_rpc_packet
(
void
)
{
static
RPCParameters
*
pRPCParams
=
nullptr
;
static
RPCNode
*
pRPCNode
=
nullptr
;
static
DWORD dwTmp
=
0
;
__asm pushad
;
__asm mov pRPCParams
,
eax
;
__asm mov pRPCNode
,
edi
;
HandleRPCPacketFunc
(
pRPCNode
->
uniqueIdentifier
,
pRPCParams
,
pRPCNode
->
staticFunctionPointer
)
;
dwTmp
=
pSAMP
->
getSAMPAddr
(
)
+
SAMP_HOOKEXIT_HANDLE_RPC
;
__asm popad
;
__asm add esp
,
4
__asm jmp dwTmp
;
}
void
_declspec
(
naked
)
hook_handle_rpc_packet2
(
void
)
{
static
RPCParameters
*
pRPCParams
=
nullptr
;
static
RPCNode
*
pRPCNode
=
nullptr
;
static
DWORD dwTmp
=
0
;
__asm pushad
;
__asm mov pRPCParams
,
ecx
;
__asm mov pRPCNode
,
edi
;
HandleRPCPacketFunc
(
pRPCNode
->
uniqueIdentifier
,
pRPCParams
,
pRPCNode
->
staticFunctionPointer
)
;
dwTmp
=
pSAMP
->
getSAMPAddr
(
)
+
SAMP_HOOKEXIT_HANDLE_RPC2
;
__asm popad
;
__asm jmp dwTmp
;
}
void
InstallAllHooks
(
)
{
static
int
iSAMPHooksInstalled
;
if
(
!
iSAMPHooksInstalled
)
{
if
(
pSAMP
->
getInfo
(
)
==
NULL
)
return
;
/*
https://github.com/sr-tream/UniLib/blob/master/UniLib/CHooks.hpp
*/
HookRPC1
=
new
CHookJmp
(
pSAMP
->
getSAMPAddr
(
)
+
SAMP_HOOKENTER_HANDLE_RPC
,
hook_handle_rpc_packet
,
6
)
;
//
HookRPC2
=
new
CHookJmp
(
pSAMP
->
getSAMPAddr
(
)
+
SAMP_HOOKENTER_HANDLE_RPC2
,
hook_handle_rpc_packet2
,
8
)
;
iSAMPHooksInstalled
=
1
;
}
}





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

Я понимаю,что идёт конфликт хуков,но как его исправить?

kawa operand
02.07.2018, 20:48
проверять если в месте хука уже есть хук то после выполнения своего выполнять чужой который был до тебя

C&J
02.07.2018, 22:39
Интересует как сделать это?



.. после выполнения своего выполнять чужой который был до тебя

kawa operand
02.07.2018, 22:58
что за тупой вопрос, поставил хук и не знает как проверить байт пиздец



это


считываешь старый адрес и звонишь в него в конце хука своего

C&J
03.07.2018, 00:31
считываешь старый адрес и звонишь в него в конце хука своего


Сколько не гуглил,не смог найти инфы по данной теме.Был бы благодарен частью кода

p1cador
03.07.2018, 00:37
Сколько не гуглил,не смог найти инфы по данной теме.Был бы благодарен частью кода


если по адресу функции, которую хукаешь, уже записан jmp (e9, addr)- то выполнить его после отработки твоеего хука

Ranto
03.07.2018, 12:53
Добрый день, пришёл к вам за помощью так как вообще не втыкаю в чем проблема. Суть в том что я хочу сделать программу которая берёт функции с DLL Библиотеки. 1. Создал .exe файл (консоль) и DLL Библиотеку с пару функций и соединил библиотеку к .exe файлу, но возникли две ошибки с которыми я явно не понимаю как работать, надеюсь на вашу помощь. Заранее спасибо!

Если надо могу всё подробно описать что за функции и тд и тп.

-raymond-
03.07.2018, 13:20
как проверить всех игроков в определенном квадрате, в квадрате типо гангзоны?

iAmerican
03.07.2018, 13:33
как проверить всех игроков в определенном квадрате, в квадрате типо гангзоны?



C++:





[CODE]
//Цикл всех игроков
//получение их координат ...
// (x1,y1) - корды левой верхней точки гангзоны
// (x2,y2) - корды правой нижней точки гангзоны
// (x,y) - координаты игроков
if
(
x
>=
x1
&&
y
>=
y1
&&
x





Добрый день, пришёл к вам за помощью так как вообще не втыкаю в чем проблема. Суть в том что я хочу сделать программу которая берёт функции с DLL Библиотеки. 1. Создал .exe файл (консоль) и DLL Библиотеку с пару функций и соединил библиотеку к .exe файлу, но возникли две ошибки с которыми я явно не понимаю как работать, надеюсь на вашу помощь. Заранее спасибо!
Если надо могу всё подробно описать что за функции и тд и тп.


Библиотеки не подключил.

-raymond-
03.07.2018, 14:07
как узнать букву диска на котором лежит гта?

kawa operand
03.07.2018, 14:08
получить указатель на строку с текущей директорией и прочитать только первый байт))

-raymond-
03.07.2018, 15:39
как отследить что игрок ввел определенную команду (отсканировав всех игроков)?

kawa operand
03.07.2018, 15:40
так нельзя

Ranto
03.07.2018, 15:46
Библиотеки не подключил.


#pragma comment(lib, "*.lib") Ты про это говоришь? Если да, то он у меня подключен, но ту же самую ошибку и выдаёт :(

san0
03.07.2018, 16:55
#pragma comment(lib, "*.lib")


Обычно, по общепринятой практике, подключение библиотек делают в настройках проекта.

Хорошо бы скинуть что-то про декорированные имена, extern "C", и как это согласовывается в С/C++, но, скорее всего, это не так уж и важно, ведь это абсолютно общедоступная и легко находимая информация.

В общем, на конкретно поставленный вопрос вот прям все расписано и по полочкам разложено Пошаговое руководство. Создание и использование библиотеки DLL (C++)(https://msdn.microsoft.com/ru-ru/library/ms235636.aspx) (https://www.blast.hk/redirect/aHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vcnUtcnUvbGlicm FyeS9tczIzNTYzNi5hc3B4)

И тоже самое, но на английском, и не для методов, а для функций (для каждой кнопочки скриншот даже) MicrosoftDocs/cpp-docs(https://github.com/MicrosoftDocs/cpp-docs/blob/master/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md) (https://github.com/MicrosoftDocs/cpp-docs/blob/master/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md)

-raymond-
04.07.2018, 10:32
как отследить что по моему персонажу попали из оружия?

CleanLegend
04.07.2018, 15:15
как отследить что по моему персонажу попали из оружия?


Через RPC_GiveTakeDamage

greetings man
04.07.2018, 17:43
В С++ не силён, у меня есть исходник файла .h, как его скомпилить в exe и реально ли это?

Файл не грузится сюда - оставляю ссылку: DropMeFiles – free one-click file sharing service(https://dropmefiles.com/nmQGI) (https://www.blast.hk/redirect/aHR0cHM6Ly9kcm9wbWVmaWxlcy5jb20vbm1RR0k)

Dark_Knight
04.07.2018, 20:02
Это, как бы, часть исходника. С ней ты ничего не сделаешь.

Sasiko1
05.07.2018, 01:35
Хочу выводить квадрат по команде, но чёт делаю не правильное укажите на ошибки))

C++:






#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
using
namespace
std
;
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
bool
CALLBACK
Present
(
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
if
(
SUCCEEDED
(
SF
->
getRender
(
)
->
BeginRender
(
)
)
)
{
SF
->
getRender
(
)
->
DrawBox
(
500
,
500
,
25
,
25
,
D3DCOLOR_ARGB
(
255
,
0
,
255
,
0
)
)
;
SF
->
getRender
(
)
->
EndRender
(
)
;
}
;
return
true
;
}
;
void
CALLBACK
cmd_show_info_player
(
std
::
string param
)
{
Present
(
)
;
// ЧЁТ ДЕЛАЮ НЕ ПРАВИЛЬНО :)
}
;
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
SF
->
getRender
(
)
->
registerD3DCallback
(
eDirect3DDeviceMethods
::
D3DMETHOD_PRESENT
,
Present
)
;
SF
->
getSAMP
(
)
->
registerChatCommand
(
"ren"
,
cmd_show_info_player
)
;
}
}
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
;
}

Dark_Knight
05.07.2018, 02:27
Хочу выводить квадрат по команде, но чёт делаю не правильное укажите на ошибки))



C++:






#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
bool
render
=
false
;
bool
CALLBACK
Present
(
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
if
(
SUCCEEDED
(
SF
->
getRender
(
)
->
BeginRender
(
)
)
&&
render
)
{
SF
->
getRender
(
)
->
DrawBox
(
500
,
500
,
25
,
25
,
D3DCOLOR_ARGB
(
255
,
0
,
255
,
0
)
)
;
SF
->
getRender
(
)
->
EndRender
(
)
;
}
;
return
true
;
}
;
void
CALLBACK
cmd_show_info_player
(
std
::
string param
)
{
render
=
!
render
;
}
;
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
!
GAME
)
return
;
if
(
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
SF
->
getRender
(
)
->
registerD3DCallback
(
eDirect3DDeviceMethods
::
D3DMETHOD_PRESENT
,
Present
)
;
SF
->
getSAMP
(
)
->
registerChatCommand
(
"ren"
,
cmd_show_info_player
)
;
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
switch
(
dwReasonForCall
)
{
case
DLL_PROCESS_ATTACH
:
SF
->
initPlugin
(
mainloop
,
hModule
)
;
break
;
}
return
TRUE
;
}

SR_team
05.07.2018, 08:23
Как добавить сообщение в чат сампа и получить IP сервера? (без SF и всяких API)


через структуры. Они есть в собе, сф и других апи

Ranto
05.07.2018, 11:41
Задался таким вопросом, как делают красивые GUI(ЮИ, точно не знаю) для всяких программ, могу пример привести:

1. Лаунчер EpicGames, у них хороший дизайн, моё внимание довольно таки привели.

2. Steam;Origin;Uplay =)

iAmerican
05.07.2018, 11:43
Задался таким вопросом, как делают красивые GUI(ЮИ, точно не знаю) для всяких программ, могу пример привести:
1. Лаунчер EpicGames, у них хороший дизайн, моё внимание довольно таки привели.
2. Steam;Origin;Uplay :)


Самописные

Ranto
05.07.2018, 11:58
Самописные


Задам тупой вопрос, это как? (просто не шарю)

iAmerican
05.07.2018, 12:52
Задам тупой вопрос, это как? (просто не шарю)


Там сидит целая команда которая пишет интерфейс для этих лаунчеров. Они не брали готовое API.

Исходник - [SF-Plugin] Menu + function(https://blast.hk/threads/12290/) (https://blast.hk/threads/12290/) - как пример. Только что ты перечислил у них все гораздо сложнее.

ALF
05.07.2018, 15:43
Я с ними вожусь несколько часов, не выходит ничего, можешь объяснить как нибудь?


BlastHackNet/mod_s0beit_sa(https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/samp.cpp#L675) (https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/samp.cpp#L675)

ALF
05.07.2018, 17:16
если ты не можешь скопировать одну функу, то просто забей и иди лучше погуляй)

ALF
05.07.2018, 19:55
Как получить X Y радара?


X = 0x858A10 [float]

Y = 0x866B70 [float]

Sasiko1
05.07.2018, 20:57
Как получить ХП?

Пробовал вот так stPassengerData ->byteHealth; не получилось((

kawa operand
05.07.2018, 23:23
Свое хп?

Sasiko1
05.07.2018, 23:58
Свое хп?


Не, игроков

kawa operand
06.07.2018, 00:01
Пассажиров своей машины ?

Sasiko1
06.07.2018, 00:33
Пассажиров своей машины ?


Не, просто получить ХП игроков в зоне стрима

kawa operand
06.07.2018, 00:34
а зачем хотел получить хп пассажиров

stPlayerPool::pRemotePlayer[id]->pPlayerData->fActorHealth

Sasiko1
06.07.2018, 00:40
а зачем хотел получить хп пассажиров


Та я думал что получаю ХП игроков, спасибо большое.

Ranto
06.07.2018, 22:01
Где можно установить Шаблон WIN32 для С++?

В Visual Studio Installer что-то не нашёл, помогите пожалуйста =(

kawa operand
06.07.2018, 23:05
Пустой проект создавай и настраивай

Sasiko1
07.07.2018, 01:40
Как отправить сообщение серверу ?

Dark_Knight
07.07.2018, 01:55
Как отправить сообщение серверу ?


Конкретную задачу опиши.

Sasiko1
07.07.2018, 01:57
Конкретную задачу опиши.


Ну в чат написать надо, на клее это say.

ALF
07.07.2018, 02:04
Ну в чат написать надо, на клее это say.


BlastHackNet/mod_s0beit_sa(https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/samp.cpp#L748) (https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/samp.cpp#L748)

Ranto
07.07.2018, 13:51
Пустой проект создавай и настраивай


Да у меня проблемы с .DLL+.EXE в .ехе есть такие ошибки с которыми я не умею обращаться

UPD: Суть в том что я хочу брать функции с .DLL, а использовать с .exe. Но столько ошибок, я уже не могу тут сидеть... =(

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

kawa operand
07.07.2018, 14:04
Dll нужно настраивать

А exe win32 (WinMain) оно либо шаблон есть либо по дефолту пустой проект это оно и есть

Ranto
07.07.2018, 14:55
Dll нужно настраивать
А exe win32 (WinMain) оно либо шаблон есть либо по дефолту пустой проект это оно и есть


А как правильно его настроить?

kawa operand
07.07.2018, 14:57
Изменить тип конфигурации в свойствах проекта

Dima_Myrzich
07.07.2018, 15:24
Как сделать рекурсию ?

kawa operand
07.07.2018, 15:44
void foo() {

foo ();

}

-raymond-
07.07.2018, 18:59
как сделать так чтобы скрипт автоматически выбирал нужный listitem в диалоге отправленном сервером?

Dark_Knight
07.07.2018, 19:03
как сделать так чтобы скрипт автоматически выбирал нужный listitem в диалоге отправленном сервером?


Скрипт? Пиздуй в раздел луа и клео.

-raymond-
07.07.2018, 19:18
сорян перепутал, не скрипт, плагин

kawa operand
07.07.2018, 19:53
с сф или без

-raymond-
07.07.2018, 20:30
в сф

Sasiko1
07.07.2018, 20:30
Пробовал получить ХП игроков в стриме, но чет не получилось, укажите на ошибки.

C++:






#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
CALLBACK
cmd_show_info_player
(
std
::
string param
)
{
if
(
param
.
empty
(
)
)
return
;
int
i
=
std
::
stoi
(
param
)
;
char
buf
[
128
]
;
stRemotePlayer
*
pPlayer
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
;
stUnoccupiedData
*
ppPlayer
;
// ПЫТАЛСЯ ПОЛУЧИТЬ
if
(
!
pPlayer
)
return
;
sprintf
(
buf
,
"Nickname - %s, Ping - %d, Score - %d, isNPC - %d, HP - %0.0f AFKState - %d"
,
pPlayer
->
szPlayerName
,
pPlayer
->
iPing
,
pPlayer
->
iScore
,
pPlayer
->
iIsNPC
,
ppPlayer
->
fHealth
,
// ПЫТАЛСЯ ПОЛУЧИТЬ
pPlayer
->
pPlayerData
->
iAFKState
==
2
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
buf
)
;
}
;
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
SF
->
getSAMP
(
)
->
registerChatCommand
(
"showinfo"
,
cmd_show_info_player
)
;
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
;
}

kawa operand
07.07.2018, 20:52
в сф


Регай колбек и там меняй парметр листбокса



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

C++:






#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
CALLBACK
cmd_show_info_player
(
std
::
string param
)
{
if
(
param
.
empty
(
)
)
return
;
int
i
=
std
::
stoi
(
param
)
;
char
buf
[
128
]
;
stRemotePlayer
*
pPlayer
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
;
stUnoccupiedData
*
ppPlayer
;
// ПЫТАЛСЯ ПОЛУЧИТЬ
if
(
!
pPlayer
)
return
;
sprintf
(
buf
,
"Nickname - %s, Ping - %d, Score - %d, isNPC - %d, HP - %0.0f AFKState - %d"
,
pPlayer
->
szPlayerName
,
pPlayer
->
iPing
,
pPlayer
->
iScore
,
pPlayer
->
iIsNPC
,
ppPlayer
->
fHealth
,
// ПЫТАЛСЯ ПОЛУЧИТЬ
pPlayer
->
pPlayerData
->
iAFKState
==
2
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
buf
)
;
}
;
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
SF
->
getSAMP
(
)
->
registerChatCommand
(
"showinfo"
,
cmd_show_info_player
)
;
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
;
}





Ты бля сколько дней уже не можешь получить хп игроков

Я бы уже давно рыдать начал и кричать что программирование это не моё

А потом вскрылся

И я не могу понять какие ошибки искать в коде из примера

Sasiko1
07.07.2018, 20:57
Регай колбек и там меняй парметр листбокса

Ты бля сколько дней уже не можешь получить хп игроков
Я бы уже давно рыдать начал и кричать что программирование это не моё
А потом вскрылся
И я не могу понять какие ошибки искать в коде из примера


Могёшь замутить получение ХП игроков в зоне стрима?

kawa operand
07.07.2018, 20:59
окей ща

CleanLegend
07.07.2018, 21:04
Пробовал получить ХП игроков в стриме, но чет не получилось, укажите на ошибки.

C++:






#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
CALLBACK
cmd_show_info_player
(
std
::
string param
)
{
if
(
param
.
empty
(
)
)
return
;
int
i
=
std
::
stoi
(
param
)
;
char
buf
[
128
]
;
stRemotePlayer
*
pPlayer
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
;
stUnoccupiedData
*
ppPlayer
;
// ПЫТАЛСЯ ПОЛУЧИТЬ
if
(
!
pPlayer
)
return
;
sprintf
(
buf
,
"Nickname - %s, Ping - %d, Score - %d, isNPC - %d, HP - %0.0f AFKState - %d"
,
pPlayer
->
szPlayerName
,
pPlayer
->
iPing
,
pPlayer
->
iScore
,
pPlayer
->
iIsNPC
,
ppPlayer
->
fHealth
,
// ПЫТАЛСЯ ПОЛУЧИТЬ
pPlayer
->
pPlayerData
->
iAFKState
==
2
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
buf
)
;
}
;
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
SF
->
getSAMP
(
)
->
registerChatCommand
(
"showinfo"
,
cmd_show_info_player
)
;
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
;
}





Ты используешь для получения хп игроков не правильную структуру.

C++:






stUnoccupiedData
*
ppPlayer
;
// это удали
sprintf
(
buf
,
"Nickname - %s, Ping - %d, Score - %d, isNPC - %d, HP - %.1f AFKState - %d"
,
pPlayer
->
szPlayerName
,
pPlayer
->
iPing
,
pPlayer
->
iScore
,
pPlayer
->
iIsNPC
,
pPlayer
->
pPlayerData
->
fActorHealth
,
pPlayer
->
pPlayerData
->
iAFKState
==
2
)
;

Dark_Knight
07.07.2018, 21:07
Могёшь замутить получение ХП игроков в зоне стрима?


Ты в блокноте пишешь? VS уже давно бы тебе указала на ошибку.

kawa operand
07.07.2018, 21:12
C++:






for
(
unsigned
short
i
=
0
;
i

getSAMP
(
)
->
getPlayers
(
)
->
IsPlayerDefined
(
i
,
true
)
)
{
float
health
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
->
pPlayerData
->
fActorHealth
;
}
}




попробуй так

Sasiko1
07.07.2018, 21:16
Ты используешь для получения хп игроков не правильную структуру.

C++:






stUnoccupiedData
*
ppPlayer
;
// это удали
sprintf
(
buf
,
"Nickname - %s, Ping - %d, Score - %d, isNPC - %d, HP - %.1f AFKState - %d"
,
pPlayer
->
szPlayerName
,
pPlayer
->
iPing
,
pPlayer
->
iScore
,
pPlayer
->
iIsNPC
,
pPlayer
->
pPlayerData
->
fActorHealth
,
pPlayer
->
pPlayerData
->
iAFKState
==
2
)
;





Все работает



C++:






for
(
unsigned
short
i
=
0
;
i

getSAMP
(
)
->
getPlayers
(
)
->
IsPlayerDefined
(
i
,
true
)
)
{
float
health
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
->
pPlayerData
->
fActorHealth
;
}
}




попробуй так


Спасибо вам

-raymond-
07.07.2018, 23:16
Регай колбек и там меняй парметр листбокса


поподробнее можн?

C&J
07.07.2018, 23:18
Уже какой день пытаюсь это сделать,нечего не выходит,то крашит,то игра намертво виснет,уже хз что делать



если по адресу функции, которую хукаешь, уже записан jmp (e9, addr)- то выполнить его после отработки твоеего хука

kawa operand
07.07.2018, 23:38
Регай евент входящих рпц там отправляй измененные параметры и отклоняй показ диалога



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


Забей *** Ты все равно не поймёшь

-raymond-
08.07.2018, 11:47
покажите пример создания двумерного строкового массива и его использование

kawa operand
08.07.2018, 13:06
std::string a[5][5];

-raymond-
08.07.2018, 15:19
как сымитировать нажатие клавишы на клавиатуре?

CleanLegend
08.07.2018, 15:53
как сымитировать нажатие клавишы на клавиатуре?


Функция keybd_event(http://www.vsokovikov.narod.ru/New_MSDN_API/Keyb_input/fn_keybd_event.htm) (https://www.blast.hk/redirect/aHR0cDovL3d3dy52c29rb3Zpa292Lm5hcm9kLnJ1L05ld19NU0 ROX0FQSS9LZXliX2lucHV0L2ZuX2tleWJkX2V2ZW50Lmh0bQ)

-raymond-
09.07.2018, 08:41
в чем ошибка? крашит игру

C++:






std
::
string businnes_name
[
45
]
[
]
=
{
"Alhambra"
,
"PigPen"
,
"Misty Club"
,
"Casino Bellagio"
,
"Grove Street Bar"
,
"Sobrino de Botin"
,
"Vinewood Burger"
,
"Marina Burger"
,
"Idlewood Pizza"
,
"Downtown Cluc"
,
"Marina Cluc"
,
"Idelwood 24/7"
,
"Flint 24/7"
,
"Easter 24/7"
,
"Mullholand 24/7"
,
"Jizzy"
,
"Redsands West 24/7"
,
"Julius 24/7"
,
"Lil\"Probe\"inn"
,
"Idelwood Gas"
,
"Mullholang Gas"
,
"Whetstone 24/7"
,
"East Cluc"
,
"WillowField Cluc"
,
"Flats Cluc"
,
"Financial Pizza"
,
"Come-A-Lot Gas"
,
"FortCarson Gas"
,
"BoneCountry Gas"
,
"Julius Gas"
,
"PricklePine Gas"
,
"Flint Gas"
,
"Easter Gas"
,
"Doherty Gas"
,
"Juniper 24/7"
,
"Juniper Gas"
,
"Emerald Isle 24/7"
,
"Emerald Isle Gas"
,
"Redsands-West Gas"
,
"ElGuebrabos Gas"
,
"TierraRobada Gas"
,
"AngelPine Gas"
,
"WhetStone Gas"
,
"Dilimore Gas"
,
"Montgomery Gas"
,
}
;
void
CALLBACK
biz_check
(
std
::
string param
)
{
for
(
int
i
=
0
;
i

getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
COLOR_GREY
,
"%s"
,
businnes_name
[
i
]
)
;
}
}

Dark_Knight
09.07.2018, 09:16
businnes_name.c_str() юзай.

-raymond-
09.07.2018, 10:23
в конце последнего биза в списке выдает один раз такие иероглифы

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

C++:






void
CALLBACK
biz_check
(
std
::
string param
)
{
char
str
[
45
]
[
30
]
=
{
"Alhambra"
,
"PigPen"
,
"Misty Club"
,
"Casino Bellagio"
,
"Grove Street Bar"
,
"Sobrino de Botin"
,
"Vinewood Burger"
,
"Marina Burger"
,
"Idlewood Pizza"
,
"Downtown Cluc"
,
"Marina Cluc"
,
"Idelwood 24/7"
,
"Flint 24/7"
,
"Easter 24/7"
,
"Mullholand 24/7"
,
"Jizzy"
,
"Redsands West 24/7"
,
"Julius 24/7"
,
"Lil\"Probe\"inn"
,
"Idelwood Gas"
,
"Mullholang Gas"
,
"Whetstone 24/7"
,
"East Cluc"
,
"WillowField Cluc"
,
"Flats Cluc"
,
"Financial Pizza"
,
"Come-A-Lot Gas"
,
"FortCarson Gas"
,
"BoneCountry Gas"
,
"Julius Gas"
,
"PricklePine Gas"
,
"Flint Gas"
,
"Easter Gas"
,
"Doherty Gas"
,
"Juniper 24/7"
,
"Juniper Gas"
,
"Emerald Isle 24/7"
,
"Emerald Isle Gas"
,
"Redsands-West Gas"
,
"ElGuebrabos Gas"
,
"TierraRobada Gas"
,
"AngelPine Gas"
,
"WhetStone Gas"
,
"Dilimore Gas"
,
"Montgomery Gas"
}
;
for
(
int
i
=
0
;
i

getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
COLOR_GREY
,
"%s"
,
str
[
i
]
)
;
}
}

Dark_Knight
09.07.2018, 10:41
Ты проверяешь 46 елементов. Юзай вектора, они удобнее. Инклуды только подключи.

C++:






vector

Strings
=
{
"Alhambra"
,
"PigPen"
,
"Misty Club"
,
"Casino Bellagio"
,
"Grove Street Bar"
,
"Sobrino de Botin"
,
"Vinewood Burger"
,
"Marina Burger"
,
"Idlewood Pizza"
,
"Downtown Cluc"
,
"Marina Cluc"
,
"Idelwood 24/7"
,
"Flint 24/7"
,
"Easter 24/7"
,
"Mullholand 24/7"
,
"Jizzy"
,
"Redsands West 24/7"
,
"Julius 24/7"
,
"Lil\"Probe\"inn"
,
"Idelwood Gas"
,
"Mullholang Gas"
,
"Whetstone 24/7"
,
"East Cluc"
,
"WillowField Cluc"
,
"Flats Cluc"
,
"Financial Pizza"
,
"Come-A-Lot Gas"
,
"FortCarson Gas"
,
"BoneCountry Gas"
,
"Julius Gas"
,
"PricklePine Gas"
,
"Flint Gas"
,
"Easter Gas"
,
"Doherty Gas"
,
"Juniper 24/7"
,
"Juniper Gas"
,
"Emerald Isle 24/7"
,
"Emerald Isle Gas"
,
"Redsands-West Gas"
,
"ElGuebrabos Gas"
,
"TierraRobada Gas"
,
"AngelPine Gas"
,
"WhetStone Gas"
,
"Dilimore Gas"
,
"Montgomery Gas"
}
;
for
(
auto
it
:
Strings
)
{
chat
->
AddChatMessage
(
-
1
,
it
.
c_str
(
)
)
;
}

san0
09.07.2018, 11:20
Юзай вектора, они удобнее.


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

P.S а вообще это все должно быть в GXT игры

Код:






#if __cplusplus > 201402L
#include
#else
#include
namespace std {
template
constexpr std::size_t size(const Type (&input_array)[Num]) noexcept {
return Num;
}
}
#endif

void CALLBACK biz_check(std::string param) {
static const char str[][50] {
"Alhambra",
"PigPen",
"Misty Club",
"Casino Bellagio",
"Grove Street Bar",
"Sobrino de Botin",
"Vinewood Burger",
"Marina Burger",
"Idlewood Pizza",
"Downtown Cluc",
"Marina Cluc",
"Idelwood 24/7",
"Flint 24/7",
"Easter 24/7",
"Mullholand 24/7",
"Jizzy",
"Redsands West 24/7",
"Julius 24/7",
"Lil\"Probe\"inn",
"Idelwood Gas",
"Mullholang Gas",
"Whetstone 24/7",
"East Cluc",
"WillowField Cluc",
"Flats Cluc",
"Financial Pizza",
"Come-A-Lot Gas",
"FortCarson Gas",
"BoneCountry Gas",
"Julius Gas",
"PricklePine Gas",
"Flint Gas",
"Easter Gas",
"Doherty Gas",
"Juniper 24/7",
"Juniper Gas",
"Emerald Isle 24/7",
"Emerald Isle Gas",
"Redsands-West Gas",
"ElGuebrabos Gas",
"TierraRobada Gas",
"AngelPine Gas",
"WhetStone Gas",
"Dilimore Gas",
"Montgomery Gas"
};
for (auto i = 0; i getSAMP()->getChat()->AddChatMessage(COLOR_GREY, "-> %s", str[i]);
}

C&J
09.07.2018, 12:56
Повторюсь с вопросом,так как уже заебался...

Происходит конфликт двух плагинов,а то есть перезапись хука HandleRPCPacketFunc,как исправить данную хурму?




Код:






#define SAMP_HOOKENTER_HANDLE_RPC 0x3743D
#define SAMP_HOOKENTER_HANDLE_RPC2 0x373C9

#define SAMP_HOOKEXIT_HANDLE_RPC 0x37443
#define SAMP_HOOKEXIT_HANDLE_RPC2 0x37451

void HandleRPCPacketFunc(unsigned char id, RPCParameters *rpcParams, void(*callback) (RPCParameters *))
{
if (rpcParams != nullptr && rpcParams->numberOfBitsOfData >= 8)
{
BitStream bsData(rpcParams->input, rpcParams->numberOfBitsOfData / 8, false);
switch (id)
{
case RPC_DeathMessage:
{
pSAMP->addMessageToChat(-1, "plugin ONE");
int16_t plaerid, killerid;
int8_t resaon;

bsData.ResetReadPointer();
bsData.Read(killerid);
bsData.Read(plaerid);
bsData.Read(resaon);
break;
}

}
}
callback(rpcParams);
}
void _declspec (naked) hook_handle_rpc_packet(void)
{
static RPCParameters *pRPCParams = nullptr;
static RPCNode *pRPCNode = nullptr;
static DWORD dwTmp = 0;

__asm pushad;
__asm mov pRPCParams, eax;
__asm mov pRPCNode, edi;

HandleRPCPacketFunc(pRPCNode->uniqueIdentifier, pRPCParams, pRPCNode->staticFunctionPointer);
dwTmp = pSAMP->getSAMPAddr() + SAMP_HOOKEXIT_HANDLE_RPC;

__asm popad;
__asm add esp, 4
__asm jmp dwTmp;
}
void _declspec (naked) hook_handle_rpc_packet2(void)
{
static RPCParameters *pRPCParams = nullptr;
static RPCNode *pRPCNode = nullptr;
static DWORD dwTmp = 0;

__asm pushad;
__asm mov pRPCParams, ecx;
__asm mov pRPCNode, edi;

HandleRPCPacketFunc(pRPCNode->uniqueIdentifier, pRPCParams, pRPCNode->staticFunctionPointer);
dwTmp = pSAMP->getSAMPAddr() + SAMP_HOOKEXIT_HANDLE_RPC2;

__asm popad;
__asm jmp dwTmp;
}

void InstallAllHooks()
{
static int iSAMPHooksInstalled;
if (!iSAMPHooksInstalled)
{
if (pSAMP->getInfo() == NULL)
return;
/*
https://github.com/sr-tream/UniLib/blob/master/UniLib/CHooks.hpp
*/
HookRPC1 = new CHookJmp(pSAMP->getSAMPAddr() + SAMP_HOOKENTER_HANDLE_RPC, hook_handle_rpc_packet, 6); //
HookRPC2 = new CHookJmp(pSAMP->getSAMPAddr() + SAMP_HOOKENTER_HANDLE_RPC2, hook_handle_rpc_packet2, 8);
iSAMPHooksInstalled = 1;
}

}

AlexWhite
09.07.2018, 13:06
Сразу говорю, работаю не с клиентом SA:MP, а с его аналогом MTA.

[C++] void DrawRect(LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DCOLOR c - Pastebin.com(https://pastebin.com/DC91WK75) (https://www.blast.hk/redirect/aHR0cHM6Ly9wYXN0ZWJpbi5jb20vREM5MVdLNzU)

Что не так с хуком?

NarutoUA
09.07.2018, 13:21
Повторюсь с вопросом,так как уже заебался...
Происходит конфликт двух плагинов,а то есть перезапись хука HandleRPCPacketFunc,как исправить данную хурму?



Код:






#define SAMP_HOOKENTER_HANDLE_RPC 0x3743D
#define SAMP_HOOKENTER_HANDLE_RPC2 0x373C9

#define SAMP_HOOKEXIT_HANDLE_RPC 0x37443
#define SAMP_HOOKEXIT_HANDLE_RPC2 0x37451

void HandleRPCPacketFunc(unsigned char id, RPCParameters *rpcParams, void(*callback) (RPCParameters *))
{
if (rpcParams != nullptr && rpcParams->numberOfBitsOfData >= 8)
{
BitStream bsData(rpcParams->input, rpcParams->numberOfBitsOfData / 8, false);
switch (id)
{
case RPC_DeathMessage:
{
pSAMP->addMessageToChat(-1, "plugin ONE");
int16_t plaerid, killerid;
int8_t resaon;

bsData.ResetReadPointer();
bsData.Read(killerid);
bsData.Read(plaerid);
bsData.Read(resaon);
break;
}

}
}
callback(rpcParams);
}
void _declspec (naked) hook_handle_rpc_packet(void)
{
static RPCParameters *pRPCParams = nullptr;
static RPCNode *pRPCNode = nullptr;
static DWORD dwTmp = 0;

__asm pushad;
__asm mov pRPCParams, eax;
__asm mov pRPCNode, edi;

HandleRPCPacketFunc(pRPCNode->uniqueIdentifier, pRPCParams, pRPCNode->staticFunctionPointer);
dwTmp = pSAMP->getSAMPAddr() + SAMP_HOOKEXIT_HANDLE_RPC;

__asm popad;
__asm add esp, 4
__asm jmp dwTmp;
}
void _declspec (naked) hook_handle_rpc_packet2(void)
{
static RPCParameters *pRPCParams = nullptr;
static RPCNode *pRPCNode = nullptr;
static DWORD dwTmp = 0;

__asm pushad;
__asm mov pRPCParams, ecx;
__asm mov pRPCNode, edi;

HandleRPCPacketFunc(pRPCNode->uniqueIdentifier, pRPCParams, pRPCNode->staticFunctionPointer);
dwTmp = pSAMP->getSAMPAddr() + SAMP_HOOKEXIT_HANDLE_RPC2;

__asm popad;
__asm jmp dwTmp;
}

void InstallAllHooks()
{
static int iSAMPHooksInstalled;
if (!iSAMPHooksInstalled)
{
if (pSAMP->getInfo() == NULL)
return;
/*
https://github.com/sr-tream/UniLib/blob/master/UniLib/CHooks.hpp
*/
HookRPC1 = new CHookJmp(pSAMP->getSAMPAddr() + SAMP_HOOKENTER_HANDLE_RPC, hook_handle_rpc_packet, 6); //
HookRPC2 = new CHookJmp(pSAMP->getSAMPAddr() + SAMP_HOOKENTER_HANDLE_RPC2, hook_handle_rpc_packet2, 8);
iSAMPHooksInstalled = 1;
}

}








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

AlexWhite
09.07.2018, 13:38
Парсишь адрес функции которую вызывает хук и вызываешь в своём хуке (работает только если твой плагин грузится после первого), или ставишь хук в другом месте


Можешь помочь мне? Сообщение выше

NarutoUA
09.07.2018, 13:42
Можешь помочь мне? Сообщение выше


Не знаю, продебагай, ставиться ли вообще твой хук

C&J
09.07.2018, 14:45
Интересует, как сделать это?



...вызываешь в своём хуке...





...ставишь хук в другом месте....

LaRossa
09.07.2018, 22:49
Подскажите как это будет в SF API

CLEO:






0ADB:
0@v
= car_model
#LANDSTAL
name

Vandal™
11.07.2018, 00:43
Есть такой варик отправить машину на гибернизацию

Код:






system("shutdown /h");




Так же там можно указать через какое время это произвести.

Вопрос, как можно указать время, которое он должен будет провести в данном состоянии (сон/e.t.c)? Или каким еще вариантом можно реанимировать комп из такого состояния без действий человека (нажать на клаву, подергать мышкой, e.t.c)?

BIOS не катит.

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

jmksm
11.07.2018, 01:13
Привет, Наруто. Хотел поинтересоваться чем и как ты ломанул РакБота) Нового кряка давненько не было, а посему хотелось бы попробвоать своими силами, тем более как-то даже интересно) Очень надеюсь, что подскажешь.

romanblinov2013
12.07.2018, 01:52
Товарищи, кодеры. Появился один интересный вопрос. Есть ли возможность зайти в игру, не открывая клиент.

Что хочу сделать: Заход на сервер по отдельному .exe

Заранее спасибо за ответ *сердечко*

Dark_Knight
12.07.2018, 01:56
Товарищи, кодеры. Появился один интересный вопрос. Есть ли возможность зайти в игру, не открывая клиент.
Что хочу сделать: Заход на сервер по отдельному .exe
Заранее спасибо за ответ *сердечко*


Раксамп.

kawa operand
12.07.2018, 08:44
Товарищи, кодеры. Появился один интересный вопрос. Есть ли возможность зайти в игру, не открывая клиент.
Что хочу сделать: Заход на сервер по отдельному .exe
Заранее спасибо за ответ *сердечко*


BigETI/SAMPLauncherNET(https://github.com/BigETI/SAMPLauncherNET) (https://github.com/BigETI/SAMPLauncherNET)

ШPEK
12.07.2018, 11:02
Зачем нужны спецификаторы int: signed, unsigned, short и long?

Чем они отличаются?

ALF
12.07.2018, 11:19
Зачем нужны спецификаторы int: signed, unsigned, short и long?
Чем они отличаются?


Диапазоны типов данных(https://msdn.microsoft.com/ru-ru/library/s3f49ktz.aspx (https://www.blast.hk/redirect/aHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vcnUtcnUvbGlicm FyeS9zM2Y0OWt0ei5hc3B4)

Ranto
12.07.2018, 22:26
Можно ли как-то визуально присвоить любую анимку на игрока?

Vandal™
13.07.2018, 00:32
Можно ли как-то визуально присвоить любую анимку на игрока?


Можно через структуру игрока, можно через эмуляцию RPC.

Some_Clever_Name
14.07.2018, 18:11
Здравствуйте. При разработке простенького скрипта возникла проблема:

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

Нужно именно адрес, НЕ sampfuncs и т.д, именно рабочий адрес.

Пожалуйста, помогите)

UPD: Покапавшись в исходниках, нашёл такие адреса:

int[] point = new int[] {0x44};

int CVehiclePointer = mem.ReadMultiLevelPointer(0xBA18FC, 4, point); // получаем CVehicle

while (true){

System.Threading.Thread.Sleep(500);

float speed = mem.ReadFloat(CVehiclePointer+0x44); // прибавляем к нему 0x44

Но всё равно выдает 0.

В чем проблема?

P.S Пишу на Шарпе

DarkP1xel
14.07.2018, 18:23
В структурах объектов игрока и тс есть данные о скорости.

imring
14.07.2018, 18:32
DK22Pac/plugin-sdk(https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_sa/game_sa/CVehicle.h#L106) (https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_sa/game_sa/CVehicle.h#L106)

DK22Pac/plugin-sdk(https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_sa/game_sa/CPhysical.h#L60) (https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_sa/game_sa/CPhysical.h#L60)

Some_Clever_Name
14.07.2018, 18:57
В структурах объектов игрока и тс есть данные о скорости.





DK22Pac/plugin-sdk(https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_sa/game_sa/CVehicle.h#L106) (https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_sa/game_sa/CVehicle.h#L106)
DK22Pac/plugin-sdk(https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_sa/game_sa/CPhysical.h#L60) (https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_sa/game_sa/CPhysical.h#L60)


Покапавшись в исходниках, нашёл такие адреса:

int[] point = new int[] {0x44};

int CVehiclePointer = mem.ReadMultiLevelPointer(0xBA18FC, 4, point); // получаем CVehicle

while (true){

System.Threading.Thread.Sleep(500);

float speed = mem.ReadFloat(CVehiclePointer+0x44); // прибавляем к нему 0x44

Почему-то всё равно выдает 0. В чем проблема?

imring
14.07.2018, 19:05
попробуй сначала получить CPhysical и читать его.

Some_Clever_Name
14.07.2018, 19:07
попробуй сначала получить CPhysical и читать его.


А как это сделать? :D Какой offset? Не подскажешь?

Some_Clever_Name
14.07.2018, 19:38
Ваш вопрос:

Как можно получить скорость персонажа / машины?

Покапавшись в исходниках собейтов и прочего, нашёл такие адреса:

int[] point = new int[] {0x44};

int CVehiclePointer = mem.ReadMultiLevelPointer(0xBA18FC, 4, point); // получаем CVehicle

while (true){

System.Threading.Thread.Sleep(500);

float speed = mem.ReadFloat(CVehiclePointer+0x44); // прибавляем к нему 0x44

Console.WriteLine(speed);

}

Почему-то speed = 0. Почему?

В чем проблема?

P.S Пишу на Шарпе

Dark_Knight
14.07.2018, 20:12
Указатель в инте в шарпе хранится? ЛОЛ. Ты хоть поставил бы проверку, что поинтер существует.

Some_Clever_Name
14.07.2018, 20:47
Указатель в инте в шарпе хранится? ЛОЛ. Ты хоть поставил бы проверку, что поинтер существует.



Просто.. Я ещё только начинаю во все это лезть. Можно ли как-то вообще вытащить по-другому скорость машины?

Dark_Knight
14.07.2018, 20:56
Просто.. Я ещё только начинаю во все это лезть. Можно ли как-то вообще вытащить по-другому скорость машины?


Вообще скорость хранится там в CVector и по значения X, Y, Z надо считать скорость уже.

Some_Clever_Name
14.07.2018, 21:15
Вообще скорость хранится там в CVector и по значения X, Y, Z надо считать скорость уже.



Хм.. Интересно. Просто недавно наткнулся на пост (размещённый тут же). Цитата -

"

Че сложного в спидхаке?

0xBA18FC // Vehicle CPED Pointer

0x44 // Vehicle Speed X

0x48 // Vehicle Speed Y

Читаешь значение из Vehicle CPED Pointer.

И это значение плюс Vehicle Speed X/Y - будет скорость т/c.

Плюсуешь к ним сколько-то или умножаешь.

И все это в цикле.

"

Вот и думаю, что типа " 0xBA18FC+0x44 " - должно выдавать скорость или что-то типа того по X'у. Тож самое, но с 0x48 - по Y'у Не?

memir
14.07.2018, 21:43
Хм.. Интересно. Просто недавно наткнулся на пост (размещённый тут же). Цитата -

"
Че сложного в спидхаке?
0xBA18FC // Vehicle CPED Pointer
0x44 // Vehicle Speed X
0x48 // Vehicle Speed Y

Читаешь значение из Vehicle CPED Pointer.
И это значение плюс Vehicle Speed X/Y - будет скорость т/c.
Плюсуешь к ним сколько-то или умножаешь.
И все это в цикле.
"

Вот и думаю, что типа " 0xBA18FC+0x44 " - должно выдавать скорость или что-то типа того по X'у. Тож самое, но с 0x48 - по Y'у Не?


Читать надо именно по указателю. Берёшь значение, которое хранится в 0xBA18FC, и к нему прибавляешь 0x48.

И вообще, проще обращатся к полям через сишные структуры

C:






struct
stVehicle
{
unsigned
char
_bPad
[
0x44
]
;
float
fSpeed
[
3
]
;
// AKA CVector
}
;
/// -------------
stVehicle
*
pSelfVehicle
=
(
*
(
(
stVehicle
*
*
)
0xBA18FC
)
)

Sasiko1
14.07.2018, 22:26
Как работать с имгуи, есть какие нибудь гайды и тд?

SR_team
14.07.2018, 22:33
ocornut/imgui(https://github.com/ocornut/imgui/blob/master/examples/example_win32_directx9/main.cpp) (https://github.com/ocornut/imgui/blob/master/examples/example_win32_directx9/main.cpp)

Some_Clever_Name
14.07.2018, 23:07
Читать надо именно по указателю. Берёшь значение, которое хранится в 0xBA18FC, и к нему прибавляешь 0x48.
И вообще, проще обращатся к полям через сишные структуры

C:






struct
stVehicle
{
unsigned
char
_bPad
[
0x44
]
;
float
fSpeed
[
3
]
;
// AKA CVector
}
;
/// -------------
stVehicle
*
pSelfVehicle
=
(
*
(
(
stVehicle
*
*
)
0xBA18FC
)
)






Вроде сделал все по феншую, но значения такие:

Если ехать вперёд - то значение может увеличиваться, если развернуться - значение будет уходить в -, если влево - 0.00 с чем-то, если вправо - то -0.00 с чем-то. В чем может быть подвох?

ALF
15.07.2018, 04:35
Я спиздил отсюда (BlastHackNet/mod_s0beit_sa(https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src) (https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src)) структуры чтобы получить IP сервера, но при попытке его отобразить (g_SAMP->szIP) игра тупо зависает. Шо делать?


ну эт, как его... чтоб получить какой то фидбэк, надо показать как ты делаешь

ЯedЯuM
15.07.2018, 08:48
Вроде сделал все по феншую, но значения такие:

Если ехать вперёд - то значение может увеличиваться, если развернуться - значение будет уходить в -, если влево - 0.00 с чем-то, если вправо - то -0.00 с чем-то. В чем может быть подвох?


это вектор в 3д пространстве к твоей будущей позиции, а не совсем просто скорость как ты думаешь

CleanLegend
15.07.2018, 15:23
C++:






#define SAMP_INFO_OFFSET 0x21A0F8
struct
stSAMP
{
void
*
pUnk0
;
struct
stServerInfo
*
pServerInfo
;
uint8_t
byteSpace
[
24
]
;
char
szIP
[
257
]
;
char
szHostname
[
259
]
;
bool
bNametagStatus
;
// changes by /nametagstatus
uint32_t
ulPort
;
uint32_t
ulMapIcons
[
100
]
;
int
iLanMode
;
int
iGameState
;
uint32_t
ulConnectTick
;
struct
stServerPresets
*
pSettings
;
void
*
pRakClientInterface
;
struct
stSAMPPools
*
pPools
;
}
;
stSAMP
*
g_SAMP
=
nullptr
;
struct
stServerInfo
{
uint32_t
uiIP
;
uint16_t
usPort
;
}
;
template

T
GetSAMPPtrInfo
(
uint32_t
offset
)
{
if
(
g_dwSAMP_Addr
==
NULL
)
return
NULL
;
return
*
(
T
*
)
(
g_dwSAMP_Addr
+
offset
)
;
}
struct
stSAMP
*
stGetSampInfo
(
void
)
{
return
GetSAMPPtrInfo

(
SAMP_INFO_OFFSET
)
;
}
extern
struct
stSAMP
*
g_SAMP
;




При попытке вывести куда нибудь g_SAMP->szIP, g_SAMP->szHostname, g_SAMP->ulPort игру фризит.


Покажи как инициализацию проводишь

CleanLegend
15.07.2018, 17:26
Инициализацию чего?


g_SAMP

CleanLegend
15.07.2018, 18:35
Походу я её не провожу, где это найти?



C++:






g_dwSAMP_Addr
=
(
DWORD
)
GetModuleHandleA
(
"samp.dll"
)
g_SAMP
=
stGetSampInfo
(
)
;




Примерно так, подробнее смотри в собейте

Ranto
16.07.2018, 16:49
Как запустить .exe файл через консоль что-ли?

Скрытое содержимое доступно для зарегистрированных пользователей!

Dark_Knight
16.07.2018, 17:01
ShellExecute

Roger571
16.07.2018, 22:52
Пытаюсь разобраться, как работать с boost::regex и в процессе захотелось написать более удобную обертку под свои нужды. Но есть одно но, никак не могу понять почему объект boost::smatch невалидно передается по ссылке.

Вот сам код:




C++:






#include "main.h"
bool
easyRegex
(
std
::
string sString
,
boost
::
regex rRegex
,
boost
::
smatch
&
sResults
,
int
iArg
,
char
*
szRegexName
)
{
if
(
boost
::
regex_search
(
sString
,
sResults
,
rRegex
)
)
{
if
(
sResults
.
size
(
)




А вот результат его выполнения:




C++:





[CODE]
[
easyRegex
]
Pointer
:
03901658
[
easyRegex
]
Size
:
5
[
easyRegex
]
[
1
]
24
[
easyRegex
]
[
2
]
string
[
easyRegex
]
[
3
]
3452
[
easyRegex
]
[
4
]
43556
aad
[
main
]
Pointer
:
03901658
[
main
]
Size
:
5







И далее идет краш "Expression: string iterators incompatible".

Хотелось бы разобраться, что же все-таки не так

SR_team
16.07.2018, 23:29
Пытаюсь разобраться, как работать с boost::regex и в процессе захотелось написать более удобную обертку под свои нужды. Но есть одно но, никак не могу понять почему объект boost::smatch невалидно передается по ссылке.
Вот сам код:



C++:






#include "main.h"
bool
easyRegex
(
std
::
string sString
,
boost
::
regex rRegex
,
boost
::
smatch
&
sResults
,
int
iArg
,
char
*
szRegexName
)
{
if
(
boost
::
regex_search
(
sString
,
sResults
,
rRegex
)
)
{
if
(
sResults
.
size
(
)




А вот результат его выполнения:



C++:





[CODE]
[
easyRegex
]
Pointer
:
03901658
[
easyRegex
]
Size
:
5
[
easyRegex
]
[
1
]
24
[
easyRegex
]
[
2
]
string
[
easyRegex
]
[
3
]
3452
[
easyRegex
]
[
4
]
43556
aad
[
main
]
Pointer
:
03901658
[
main
]
Size
:
5






И далее идет краш "Expression: string iterators incompatible".
Хотелось бы разобраться, что же все-таки не так


Блед, хватит страдать - Бери STL. А если хочется "easyRegex", то бери SRStrings или целый Qt.

Roger571
16.07.2018, 23:46
Блед, хватит страдать - Бери STL. А если хочется "easyRegex", то бери SRStrings или целый Qt.


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

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

san0
17.07.2018, 03:01
Просто для себя понять почему вот так случается


Мне кажется, что проблема заключается в том, что std::string sString был инициализирован с помощью конструктора копирования, и его цикл жизни был только в пределеах функции easyRegex().

Операция regex_search была выполнена над строкой, которая, по сути, не имеет ничего общего с sTest (незавимая копия), но к ее элементам все равно хотят достучаться в тот момент, когда их существование явно не гарантировано.

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

В общем, вот этот вектор boostorg/regex(https://github.com/boostorg/regex/blob/5d990fd751a8c149dd47fbaf24eaaffd1bde3bd5/include/boost/regex/v4/match_results.hpp#L577) (https://github.com/boostorg/regex/blob/5d990fd751a8c149dd47fbaf24eaaffd1bde3bd5/include/boost/regex/v4/match_results.hpp#L577) в результате и ломается

Подводя итоги, следует передать строку тоже по ссылке bool easyRegex(std::string& sString, ... etc ...



Бери STL


Так в STL часто переносят то, что хорошо показало себя в boost (конечно с фиксами всякими (напр. filesystem)).

-raymond-
17.07.2018, 06:44
крашится игра когда ввожу /skladoff

C++:






bool
sliv
;
int
etap
;
void
call_main_func
(
)
{
while
(
sliv
==
true
)
{
stLocalPlayer
*
player
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
;
int
PlayerID
;
PlayerID
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
sLocalPlayerID
;
if
(
etap
==
0
)
{
player
->
Say
(
"/getgun 300"
)
;
etap
=
1
;
Sleep
(
1000
)
;
}
else
if
(
etap
==
1
)
{
char
txtfmt
[
20
]
;
sprintf
(
txtfmt
,
"/sellgun m4 100 4 %d"
,
PlayerID
)
;
player
->
Say
(
txtfmt
)
;
etap
=
0
;
Sleep
(
1000
)
;
}
}
}
bool
CALLBACK
inRPC
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrClientMessage
)
{
uint32_t
len
,
color
;
char
msg
[
144
]
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
color
)
;
params
->
bitStream
->
Read
(
len
)
;
params
->
bitStream
->
Read
(
msg
,
len
)
;
msg
[
len
]
=
'\0'
;
if
(
strstr
(
msg
,
"Не флуди"
)
)
return
false
;
}
return
true
;
}
void
CALLBACK
sliv_activate
(
std
::
string param
)
{
if
(
sliv
==
true
)
sliv
=
false
;
else
{
call_main_func
(
)
;
}
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
||
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
||
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_INCOMING_RPC
,
inRPC
)
;
SF
->
getSAMP
(
)
->
registerChatCommand
(
"skladoff"
,
sliv_activate
)
;
init
=
true
;
}
}

Roger571
17.07.2018, 09:19
Мне кажется, что проблема заключается в том, что std::string sString был инициализирован с помощью конструктора копирования, и его цикл жизни был только в пределеах функции easyRegex()....



Благодарю за пояснение, полезно смотреть исходники буста. Правильно ли понимаю, что результаты в smatch являются указателем на объект в котором осуществляется поиск?

Dark_Knight
17.07.2018, 10:43
крашится игра когда ввожу /skladoff


Слипы нельзя юзать в командах и коллбеках.



Хотелось бы разобраться, что же все-таки не так



Код:






sResults.str(i).c_str() замени на sResults[i].str().c_str()







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

SR_team
17.07.2018, 10:52
я хочу понять, в чем я конкретно тут проебался.


в выборе boost.



Так в STL часто переносят то, что хорошо показало себя в boost


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

Roger571
17.07.2018, 11:07
в выборе boost.

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



Дело в том, что я компилю VS2008 и в STL еще не ввели regex.

Дадада, но на это есть определенные причины



Слипы нельзя юзать в командах и коллбеках.

Код:






sResults.str(i).c_str() замени на sResults[i].str().c_str()











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

Dark_Knight
17.07.2018, 11:36
Дело в том, что я компилю VS2008 и в STL еще не ввели regex.
Дадада, но на это есть определенные причины


Лицензионная винда или железо?

CarLCas
17.07.2018, 17:14
Дело в том, что я компилю VS2008 и в STL еще не ввели regex.
Дадада, но на это есть определенные причины


Там есть tr1, в котором есть регулярные выражения если я не ошибаюсь.

Some_Clever_Name
17.07.2018, 19:45
Можно ли сделать коллизию машины без SF? К примеру, по какому-нибудь адресу.

Слышал, что есть оффсет "танк мод" - можно ли его юзать?

imring
18.07.2018, 01:18
SF Скрипты


@Dark_Knight (https://www.blast.hk/members/34/)



Visual Studio Code


нет.

Azller Lollison
18.07.2018, 01:21
Возможно звучит глупо, но возможно ли писать SF Скрипты в Visual Studio Code ? ;D


Если подключить компилятор, то вполне

Dark_Knight
18.07.2018, 01:28
Возможно звучит глупо, но возможно ли писать SF Скрипты в Visual Studio Code ? ;D


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

justblast
18.07.2018, 12:22
Как получить статус двигателя машины (sfapi)?

bisMotorOn возвращает всегда 1вне зависимости от того, включен он или выключен

Azller Lollison
18.07.2018, 14:10
Эм...то есть всё ровно нужно будет скачивать Visual Studio что бы компилировать ?


в плагинах для вскод вроде был комптлятор.

randazzo
18.07.2018, 14:19
Возможно я что то не так понял, мне для SF Plugin нужна среда разработке ( Visual Studio 2017 ) - лесом, она много весит.


2015 скачай

Dark_Knight
18.07.2018, 14:48
Всё ровно обновлять будет просить.


Ничего подобного. Стоит уже 2015 не первый год и все нормально.

Some_Clever_Name
19.07.2018, 00:09
Можно ли сделать коллизию машины без SF? К примеру, по какому-нибудь адресу.

-raymond-
20.07.2018, 06:49
покажите создание таймера на 1 минуту

Dark_Knight
20.07.2018, 10:56
static DWORD timer = 60000 + GetTickCount();

if(timer - GetTickCount()

Ranto
20.07.2018, 14:46
Что делать если плагин находиться в другой папке, а нужно создать директорию в корневой папке с игрой?

Например: (В скрытом контенте)

Скрытое содержимое доступно для зарегистрированных пользователей!


Пришла в голову такая идея, можно же через реестр прочитать полный путь файла gta_sa.exe?

Some_Clever_Name
20.07.2018, 18:45
Можно ли как-нибудь узнать ID (не тот, который даёт самп, а именно GTA'шный ID) машины, в которой сидит сейчас игрок?

SiTrak
20.07.2018, 19:17
Можно ли как-нибудь узнать ID (не тот, который даёт самп, а именно GTA'шный ID) машины, в которой сидит сейчас игрок?


0xB700F0

imring
21.07.2018, 17:16
Вопрос по теме разработки c++, как сделать так что-бы код проверял на наличие файла в определённой папке и выполнял действие.


Fastest way to check if a file exist using standard C++/C++11/C?(https://stackoverflow.com/questions/12774207/fastest-way-to-check-if-a-file-exist-using-standard-c-c11-c) (https://www.blast.hk/redirect/aHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMT I3NzQyMDcvZmFzdGVzdC13YXktdG8tY2hlY2staWYtYS1maWxl LWV4aXN0LXVzaW5nLXN0YW5kYXJkLWMtYzExLWM)

Dark_Knight
21.07.2018, 17:19
Вопрос по теме разработки c++, как сделать так что-бы код проверял на наличие файла в определённой папке и выполнял действие.


Filesystem library - cppreference.com(https://en.cppreference.com/w/cpp/experimental/fs) (https://www.blast.hk/redirect/aHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL2V4cG VyaW1lbnRhbC9mcw)

Some_Clever_Name
21.07.2018, 21:30
Можно ли получить X, Y, Z метки, которая есть на данный момент именно на мини-карте, а не на обычной карте?

SR_team
21.07.2018, 22:49
нет.


Нуба ответ :). Писать можно. Есть даже InellySens или как там его? Для автокомплита C++ как в студии в общем. Сборку тоже можно интегрировать. В VSC легко интегрируются консольные сборки, а SF плагин можно собирать из консоли, используя msbuild. Это тулза, которая лежит в папке с VS, достаточно просто передать ей .sln в качестве аргумента.

imring
21.07.2018, 22:57
Нуба ответ :).


в плюсах я только начинающий, так что да.

SR_team
21.07.2018, 23:05
покажите создание таймера на 1 минуту


Зачем тебе таймер? В VS прекрасный inline asm. Делаешь статичный массив на 100 элементов, и 2 статичные переменные: id элемента и текущее время.

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

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

Azller Lollison
21.07.2018, 23:08
Зачем тебе таймер? В VS прекрасный inline asm. Делаешь статичный массив на 100 элементов, и 2 статичные переменные: id элемента и текущее время.
После чего вставляешь inline asm, который в случае истечения времени делает джамп по адресу из статичного массива.
Там где нужны задержки пишешь макрос, в который передаешь id и время. сам макрос создает метку для goto и записывает время для ожидания.


а можно создать поток и делать там задержки... ай лан не бей я тоже нуб!!

SR_team
21.07.2018, 23:45
а можно создать поток и делать там задержки... ай лан не бей я тоже нуб!!


Можно. И я думал об этом как о варианте, который позволил бы заменить wait не выходя за пределы стандарта языка. Однако для синхронизации много ебли надо. Я рассматривал вариант с постановкой функций на очередь - в потоке с задержками, при вызове функции этот поток блокируется и ожидает основной поток, пока тот выполнит за него эту функцию. По скорости будет очень близко к однопотоку (чуть быстрее) и с задержками. Но возникает проблема с обращением к полям структур. Можно копировать структуры, но это как-то расточительно, и в момент синхронизации тоже не ясно чье изменение оставлять: то что было в основном потоке с момента копирования, или то что произошло в отдельном потоке?



Как можно завершить процесс по названию(процесса), без названия программы


Находишь Pid (https://www.blast.hk/redirect/aHR0cDovL3d3dy5maXJzdHN0ZXBzLnJ1L21mYy93aW5hcGkvci 5waHA_MzI) и вызываешь TerminateProcess

Ranto
22.07.2018, 21:16
Как отправить SMS в чат без SF?

imring
22.07.2018, 21:39
Как отправить SMS в чат без SF?


BlastHackNet/mod_s0beit_sa(https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/samp.cpp#L712) (https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/samp.cpp#L712)

imring
23.07.2018, 12:25
Посоветуйте , с чего начать учить c++/sf api?


Вопрос - Изучение C++(https://blast.hk/threads/17517/) (https://blast.hk/threads/17517/)

kawa operand
23.07.2018, 12:35
Это динамические библиотеки обычные только зависят от сф

imring
23.07.2018, 12:38
Я хотел бы научиться писать именно .sf, мб есть уроки/литература?





Список уроков:
1. Основы API (http://blasthack.net/wiki/tutorials:api_lesson_basics)
2. Dialog hider (http://blasthack.net/wiki/tutorials:api_lesson_dialog_hider)
3. Render (http://blasthack.net/wiki/tutorials:api_lesson_render)
4. RakNet (http://blasthack.net/wiki/tutorials:api_lesson_raknet)

Ranto
23.07.2018, 16:15
C++:





[CODE]
#include
#include
using
namespace
std
;
int
main
(
)
{
setlocale
(
0
,
""
)
;
/*7*/
int
a
,
b
;
cout
>
a
;
cout
>
b
;
/*12*/
int
c
=
a
+
b
;
//
cout

Ranto
23.07.2018, 16:49
Спасибо, работает, а что это за /*12*/ and
/*7*/?


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

Ranto
23.07.2018, 19:56
Есть ли уроки по обучению .sf (На основе самп-примеров)?


Другое - SAMPFUNCS | API C++(https://blast.hk/threads/6498/) (https://blast.hk/threads/6498/)

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

Знаю только эти фичи



Список уроков:
1. Основы API (http://blasthack.net/wiki/tutorials:api_lesson_basics)
2. Dialog hider (http://blasthack.net/wiki/tutorials:api_lesson_dialog_hider)
3. Render (http://blasthack.net/wiki/tutorials:api_lesson_render)
4. RakNet (http://blasthack.net/wiki/tutorials:api_lesson_raknet)

imring
24.07.2018, 13:23
пытаюсь перевести с lua на c++, но чет хуево получается

Lua:






-- lua code
local
callback
=
ffi
.
cast
(
'void(__thiscall *)(void *_this, char *killer, char *killed, uint32_t clKiller, uint32_t clKilled, uint8_t reason)'
,
hook
)
local
detour_addr
=
tonumber
(
ffi
.
cast
(
'uintptr_t'
,
callback
)
)
local
hook_addr
=
getModuleHandle
(
'samp.dll'
)
+
0x2B2A3B
memory
.
setint8
(
hook_addr
,
0xE8
,
true
)
memory
.
setuint32
(
hook_addr
+
1
,
detour_addr
-
hook_addr
-
5
,
true
)




C++:






// c++ code
void
(
__thiscall
*
callback
)
(
void
*
,
char
*
,
char
*
,
uint32_t
,
uint32_t
,
uint8_t
)
=
(
void
(
__thiscall
*
)
(
void
*
_this
,
char
*
killer
,
char
*
killed
,
uint32_t
clKiller
,
uint32_t
clKilled
,
uint8_t
reason
)
)
(
hook
)
;
uintptr_t detour_addr
=
(
uintptr_t
)
callback
;
uintptr_t hook_addr
=
(
uintptr_t
)
GetModuleHandleA
(
"samp.dll"
)
+
0x2B2A3B
;
*
reinterpret_cast

(
hook_addr
)
=
(
INT8
)
0xE8
;
*
reinterpret_cast

(
hook_addr
+
1
)
=
detour_addr
-
hook_addr
-
5
;




виснет игра из-за этой строки:

C++:






*
reinterpret_cast

(
hook_addr
)
=
(
INT8
)
0xE8
;

ehxqu
25.07.2018, 00:03
хотел попробовать написать аммохак

в чем проблема? не работает

Код:






void OnTimer(HWND hwnd, UINT msg, UINT idTimer, DWORD dwTime)
{
if (GetAsyncKeyState(0x2E) & 0x8000) //если нажал на delete
{
DWORD CPED = *(DWORD*)0xB6F5F0; //CPed
DWORD CWeaponSlot = *(DWORD*)(CPED + 0x0718); //CPed.m_cWeaponSlot
DWORD CWeaponSlot1 = *(DWORD*)(CWeaponSlot * 0x1C);
DWORD CWeaponSlots = *(DWORD*)(CPED + 0x5A0); //CPed.m_aclWeaponSlots
DWORD CWeaponState = *(DWORD*)(CWeaponSlots + CWeaponSlot1);
*(DWORD*)(CWeaponState + 0xC) += 40;
}
}

CarLCas
25.07.2018, 06:48
пытаюсь перевести с lua на c++, но чет хуево получается

Lua:






-- lua code
local
callback
=
ffi
.
cast
(
'void(__thiscall *)(void *_this, char *killer, char *killed, uint32_t clKiller, uint32_t clKilled, uint8_t reason)'
,
hook
)
local
detour_addr
=
tonumber
(
ffi
.
cast
(
'uintptr_t'
,
callback
)
)
local
hook_addr
=
getModuleHandle
(
'samp.dll'
)
+
0x2B2A3B
memory
.
setint8
(
hook_addr
,
0xE8
,
true
)
memory
.
setuint32
(
hook_addr
+
1
,
detour_addr
-
hook_addr
-
5
,
true
)




C++:






// c++ code
void
(
__thiscall
*
callback
)
(
void
*
,
char
*
,
char
*
,
uint32_t
,
uint32_t
,
uint8_t
)
=
(
void
(
__thiscall
*
)
(
void
*
_this
,
char
*
killer
,
char
*
killed
,
uint32_t
clKiller
,
uint32_t
clKilled
,
uint8_t
reason
)
)
(
hook
)
;
uintptr_t detour_addr
=
(
uintptr_t
)
callback
;
uintptr_t hook_addr
=
(
uintptr_t
)
GetModuleHandleA
(
"samp.dll"
)
+
0x2B2A3B
;
*
reinterpret_cast

(
hook_addr
)
=
(
INT8
)
0xE8
;
*
reinterpret_cast

(
hook_addr
+
1
)
=
detour_addr
-
hook_addr
-
5
;




виснет игра из-за этой строки:

C++:






*
reinterpret_cast

(
hook_addr
)
=
(
INT8
)
0xE8
;





Перед записью в память установи права на запись при помощи VirtualProtect, после как закончишь восстанови предыдущие права.

Ranto
25.07.2018, 21:02
хотел попробовать написать аммохак
в чем проблема? не работает

Код:






void OnTimer(HWND hwnd, UINT msg, UINT idTimer, DWORD dwTime)
{
if (GetAsyncKeyState(0x2E) & 0x8000) //если нажал на delete
{
DWORD CPED = *(DWORD*)0xB6F5F0; //CPed
DWORD CWeaponSlot = *(DWORD*)(CPED + 0x0718); //CPed.m_cWeaponSlot
DWORD CWeaponSlot1 = *(DWORD*)(CWeaponSlot * 0x1C);
DWORD CWeaponSlots = *(DWORD*)(CPED + 0x5A0); //CPed.m_aclWeaponSlots
DWORD CWeaponState = *(DWORD*)(CWeaponSlots + CWeaponSlot1);
*(DWORD*)(CWeaponState + 0xC) += 40;
}
}






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

-raymond-
26.07.2018, 12:43
крашит

C++:






void
narko_usable
(
)
{
char
fmttext
[
13
]
;
int
id
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
sLocalPlayerID
;
stRemotePlayer
*
pPlayer
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
;
int
integer_health
=
(
int
)
pPlayer
->
pPlayerData
->
fActorHealth
;
sprintf
(
fmttext
,
"/usedrugs %d"
,
160
-
integer_health
/
10
)
;
stLocalPlayer
*
player
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
;
player
->
Say
(
fmttext
)
;
timer
=
GetTickCount
(
)
+
60000
;
}

Dark_Knight
26.07.2018, 12:55
Ты получаешь с удаленной структуры игрока по айди локального игрока. Так нельзя. У удаленных игроков и локального разные структуры.

-raymond-
26.07.2018, 13:38
покажи как правильно получить

CleanLegend
26.07.2018, 13:55
покажи как правильно получить


2 варианта:

C++:






int
integer_health
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
.
byteHealth
;
float
myhp
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
pSAMP_Actor
->
pGTA_Ped
->
hitpoints
;

BlackKnigga
26.07.2018, 14:10
PEDSELF->GetHealth()

Ranto
26.07.2018, 20:28
Можете показать нормальный показ текущего времени? Что бы было все как по часам, а то мне какую дичь прислали, выдаёт левое время..

CleanLegend
26.07.2018, 20:32
Можете показать нормальный показ текущего времени? Что бы было все как по часам, а то мне какую дичь прислали, выдаёт левое время..



C++:






char
Clock
[
32
]
;
SYSTEMTIME time
;
GetLocalTime
(
&
time
)
;
snprintf
(
Clock
,
sizeof
(
Clock
)
-
1
,
" %02d:%02d:%02d"
,
time
.
wHour
,
time
.
wMinute
,
time
.
wSecond
)
;

ШPEK
26.07.2018, 21:12
Какой компилятор используется для SF

Dark_Knight
26.07.2018, 21:46
Какой компилятор используется для SF


Можно любой, но проект сделан под IDE Visual Studio.

Some_Clever_Name
26.07.2018, 22:41
Можно ли получить X, Y, Z метки, которая есть на данный момент именно на мини-карте, а не на обычной карте?

Niggababy
27.07.2018, 00:40
День добрый, присутствует определенный код .sf плагина. Но вот в чем вопрос, как этот код скомпилировать в сам .sf плагин?

Azller Lollison
27.07.2018, 00:42
День добрый, присутствует определенный код .sf плагина. Но вот в чем вопрос, как этот код скомпилировать в сам .sf плагин?


скачать проект и скомпилить

Niggababy
27.07.2018, 00:44
скачать проект и скомпилить


можно подробней?

kawa operand
27.07.2018, 00:47
скачиваешь мсвс открываешь проект через нее и компилируешь

Azller Lollison
27.07.2018, 00:48
можно подробней?



открываешь визуалку

открываешь проект SF Plugin

компилишь

#Northn
27.07.2018, 12:52
на сф есть что-то, похожее на самп.луа?

kawa operand
27.07.2018, 12:53
SFSAMP.h ? если я правильно понял

Ranto
28.07.2018, 16:38
Как создают UI для Windows Forms (с++ or c#) и тд и тп?

Приведу пример: UI Metro для с++, скачивается dll библиотека и тем самым в панели инструментов добавляется эти новый интерфейс кнопок и тд и тп..

Dark_Knight
28.07.2018, 19:20
Забей на формы. Юзай Qt

ma_za_xa_ka
28.07.2018, 20:43
Как можно реализовать заморозку кара в gta sa?

kawa operand
28.07.2018, 20:45
отклонять всё что пытается тебе изменить позицию машины

-raymond-
28.07.2018, 22:13
как узнать координаты ближайшего пикапа?

CleanLegend
28.07.2018, 22:37
как узнать координаты ближайшего пикапа?


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

Musaigen
29.07.2018, 18:05
Как отформатировать строку под два возвращаемых значения. Пример команды ниже.

Код:






/my_cmd значение1 значение2

kawa operand
29.07.2018, 20:45
sscanf(param, "%s %s", arg1, arg2);

SR_team
29.07.2018, 21:41
Как можно реализовать заморозку кара в gta sa?


AsiPlugin(https://git.prime-hack.net/SR_team/AsiPlugin/src/branch/master/CGame/CPhysical.h#L34) (https://www.blast.hk/redirect/aHR0cHM6Ly9naXQucHJpbWUtaGFjay5uZXQvU1JfdGVhbS9Bc2 lQbHVnaW4vc3JjL2JyYW5jaC9tYXN0ZXIvQ0dhbWUvQ1BoeXNp Y2FsLmgjTDM0)

Musaigen
29.07.2018, 22:01
Как можно поставить локальному плееру иммунитеты(гм кароч)?

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

KirikRus299
30.07.2018, 14:56
Пасаны, можете пожалуйста кинуть любой исходник .sf и .asi, чтобы там был вывод текста в чат, диалоги и т.п., просто хочу попробовать изучить исходники, чтобы получить хоть какой-то опыт. Буду блогадарен. Заранее спасибо.

0xNull_Dll
31.07.2018, 14:10
Подскажите адреса меткок, которые устанавливает сервер (типа /gps вводишь, выбираешь место и метка появляется)

Нужны адреса X, Y, Z и адрес цвета метки

imring
31.07.2018, 14:23
Подскажите адреса меткок, которые устанавливает сервер (типа /gps вводишь, выбираешь место и метка появляется)

Нужны адреса X, Y, Z и адрес цвета метки


гоночный маркер: vec = 0xC7F168 + id * 56

простой: vec = 0xC7DD88 + id * 160

[float] vec + 0 - x

[float] vec + 4 - y

[float] vec + 8 - z

romanblinov2013
31.07.2018, 14:25
Здарова, мужики.

Пишу dll d3d9, которое будет подгружать основной d3d9.dll от майкрософт. Только одна проблема.... Крашит при входе. Что делать, чтобы всё заработало?

C++:






#include
#include
#include
#include
#include
void
__cdecl
MainThread
(
void
*
pArg
)
{
while
(
true
)
{
Sleep
(
10
)
;
if
(
GetAsyncKeyState
(
VK_NUMPAD1
)
)
{
keybd_event
(
'n'
,
0
,
0
,
0
)
;
keybd_event
(
'n'
,
0
,
KEYEVENTF_KEYUP
,
0
)
;
}
}
}
BOOL WINAPI
DllMain
(
_In_ HINSTANCE hinstDLL
,
_In_ DWORD fdwReason
,
_In_ PVOID lpvReserved
)
{
if
(
fdwReason
==
DLL_PROCESS_ATTACH
)
{
LoadLibrary
(
"C:\\Windows\\System32\\d3d9.dll"
)
;
_beginthread
(
MainThread
,
NULL
,
nullptr
)
;
}
return
TRUE
;
}




Ошибка:

Код:






Серьезность Код Описание Строка Состояние подавления
Предупреждение MSB8004 каталог Output заканчивается не косой чертой. Этот экземпляр сборки добавит косую черту, поскольку она необходима для правильного определения каталога Output. 377

0xNull_Dll
31.07.2018, 17:08
гоночный маркер: vec = 0xC7F168 + id * 56
простой: vec = 0xC7DD88 + id * 160
[float] vec + 0 - x
[float] vec + 4 - y
[float] vec + 8 - z



Суть в том, что у меня почему-то их не видит до тех пор, пока они вне зоны прорисовки. Как только подходишь - сразу появляются их координаты.

Может, есть ещё какие-нибудь способы?

Orbit_123
01.08.2018, 11:48
Пацаны, мне написали скрипт в формате dll который очень быстро нажимает на N. Я активирую его , он быстро нажимает только когда открываю в чат а на чекпоинте он не работает, почему?

imring
01.08.2018, 11:50
Пацаны, мне написали скрипт в формате dll который очень быстро нажимает на N. Я активирую его , он быстро нажимает только когда открываю в чат а на чекпоинте он не работает, почему?


спрашивай у того, кто тебе сделал.

Vesca
01.08.2018, 15:02
How to check if player with ID x is connected \ ID x exists on the server?

Musaigen
01.08.2018, 21:16
Как можно работать с .ini файлами?

Dark_Knight
01.08.2018, 21:34
Как можно работать с .ini файлами?


Другое - Мой .h файл для работы с .INI(https://blast.hk/threads/22983/) (https://blast.hk/threads/22983/)

Почитай.

ШPEK
02.08.2018, 20:40
Как подключить проект?

-raymond-
03.08.2018, 11:23
можно ли как-то отследить текстдравы которые показаны мне?

и получить о них какую-то информацию

например: цвет, ид шрифта, текст, расположение

крашит игру

C++:






float
GetDistance
(
float
X
,
float
Y
,
float
Z
,
float
XX
,
float
YY
,
float
ZZ
)
{
return
sqrt
(
(
X
-
XX
)
*
(
X
-
XX
)
+
(
Y
-
YY
)
*
(
Y
-
YY
)
+
(
Z
-
ZZ
)
*
(
Z
-
ZZ
)
)
;
}
void
CALLBACK
steal_object
(
std
::
string param
)
{
float
posobj
[
3
]
;
int
obj_model
;
Log
*
pLog
=
new
Log
(
"objects.log"
)
;
for
(
int
i
=
0
;
i

getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fPos
[
0
]
;
posobj
[
1
]
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fPos
[
1
]
;
posobj
[
2
]
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fPos
[
2
]
;
if
(
GetDistance
(
PEDSELF
->
GetPosition
(
)
->
fX
,
PEDSELF
->
GetPosition
(
)
->
fY
,
PEDSELF
->
GetPosition
(
)
->
fZ
,
posobj
[
0
]
,
posobj
[
1
]
,
posobj
[
2
]
)

getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
iModel
;
char
str
[
256
]
;
sprintf
(
str
,
"CreateObject(%d)"
,
obj_model
)
;
pLog
->
Write
(
str
)
;
}
}
}

CleanLegend
03.08.2018, 13:26
можно ли как-то отследить текстдравы которые показаны мне?
и получить о них какую-то информацию
например: цвет, ид шрифта, текст, расположение


Да, есть структура stTextdraw, путем перебора в цикле можешь выводить инфу



крашит игру

C++:






float
GetDistance
(
float
X
,
float
Y
,
float
Z
,
float
XX
,
float
YY
,
float
ZZ
)
{
return
sqrt
(
(
X
-
XX
)
*
(
X
-
XX
)
+
(
Y
-
YY
)
*
(
Y
-
YY
)
+
(
Z
-
ZZ
)
*
(
Z
-
ZZ
)
)
;
}
void
CALLBACK
steal_object
(
std
::
string param
)
{
float
posobj
[
3
]
;
int
obj_model
;
Log
*
pLog
=
new
Log
(
"objects.log"
)
;
for
(
int
i
=
0
;
i

getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fPos
[
0
]
;
posobj
[
1
]
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fPos
[
1
]
;
posobj
[
2
]
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fPos
[
2
]
;
if
(
GetDistance
(
PEDSELF
->
GetPosition
(
)
->
fX
,
PEDSELF
->
GetPosition
(
)
->
fY
,
PEDSELF
->
GetPosition
(
)
->
fZ
,
posobj
[
0
]
,
posobj
[
1
]
,
posobj
[
2
]
)

getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
iModel
;
char
str
[
256
]
;
sprintf
(
str
,
"CreateObject(%d)"
,
obj_model
)
;
pLog
->
Write
(
str
)
;
}
}
}





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

C++:






if
(
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
iIsListed
[
i
]
!=
1
)
continue
;
if
(
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
==
NULL
)
continue
;
if
(
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
pGTAEntity
==
NULL
)
continue
;

-raymond-
03.08.2018, 14:08
У меня такой вопрос

Вот у меня вывело координату X объекта с большим количеством нулей

0.000000

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

Dark_Knight
04.08.2018, 00:21
Это просто обычное дробное число.

Ranto
04.08.2018, 19:53
По какому принципу делают такие менюшки?




Скрытое содержимое доступно для зарегистрированных пользователей!

ШPEK
04.08.2018, 19:59
Для разработки SampFuncs подойдёт любая версия Visual Studio?

KirikRus299
05.08.2018, 11:57
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Mic rosoft.Cpp.Platform.targets(57,5): error MSB8020: Не удается найти средства сборки для v141_xp (набор инструментов платформы = "v141_xp"). Чтобы выполнить сборку с использованием средств сборки v141_xp установите средства сборки v141_xp. Кроме того, можно выполнить обновление до текущей версии средств Visual Studio, перейдя в меню "Проект" или щелкнув решение правой кнопкой мыши и выбрав "Обновить решение...".

винда 7 профессиональная, 64 бит, как пофиксить?

CleanLegend
05.08.2018, 14:08
По какому принципу делают такие менюшки?


В интернете много гайдов по подобным меню, достаточно просто ввести:" d3d9 menu".

А принцип таков, ты хукаешь один из методов отрисовки и инициализируешь меню



andretharada/inst4kill-d3d-menu(https://github.com/andretharada/inst4kill-d3d-menu) (https://github.com/andretharada/inst4kill-d3d-menu)

D3D9 List Menu [JustBasicsMenu 1.0](https://www.unknowncheats.me/forum/d3d-tutorials-and-source/104839-d3d9-list-menu-justbasicsmenu-1-0-a.html) (https://www.blast.hk/redirect/aHR0cHM6Ly93d3cudW5rbm93bmNoZWF0cy5tZS9mb3J1bS9kM2 QtdHV0b3JpYWxzLWFuZC1zb3VyY2UvMTA0ODM5LWQzZDktbGlz dC1tZW51LWp1c3RiYXNpY3NtZW51LTEtMC1hLmh0bWw)

D3D9 Menu 2013(https://www.unknowncheats.me/forum/d3d-tutorials-and-source/85743-d3d9-menu-2013-a.html) (https://www.blast.hk/redirect/aHR0cHM6Ly93d3cudW5rbm93bmNoZWF0cy5tZS9mb3J1bS9kM2 QtdHV0b3JpYWxzLWFuZC1zb3VyY2UvODU3NDMtZDNkOS1tZW51 LTIwMTMtYS5odG1s)





Для разработки SampFuncs подойдёт любая версия Visual Studio?


да



C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Mic rosoft.Cpp.Platform.targets(57,5): error MSB8020: Не удается найти средства сборки для v141_xp (набор инструментов платформы = "v141_xp"). Чтобы выполнить сборку с использованием средств сборки v141_xp установите средства сборки v141_xp. Кроме того, можно выполнить обновление до текущей версии средств Visual Studio, перейдя в меню "Проект" или щелкнув решение правой кнопкой мыши и выбрав "Обновить решение...".

винда 7 профессиональная, 64 бит, как пофиксить?


У тебя в настройках проекта стоят настройки под VS 2015, тебе нужно зайти в Проект - Свойство - Набор инструментов платформы и поставить свой набор