PDA

Просмотр полной версии : SAMPFUNCS | API C++


Страницы : 1 2 [3] 4 5 6 7 8

Sire Like
04.10.2015, 15:26
как создать диалог с информацией, и кнопкой закрытия.


Я тебе что выше ответил? Издеваешься?







Код:






SF->getSAMP()->getDialog()->ShowDialog(1, DIALOG_STYLE_MSGBOX, "Заголовок диалога", "ТВОЯ информация", " Закрыть ", "");

Tray228
04.10.2015, 15:51
Ну ты пиздец конечно)

Код:






SF->getSAMP()->getDialog()->ShowDialog(id, DIALOG_STYLE_MSGBOX, "заголовок", "описание", " Ok ", " Close ");





я на бх не нашел инфы



Я тебе что выше ответил? Издеваешься?







Код:






SF->getSAMP()->getDialog()->ShowDialog(1, DIALOG_STYLE_MSGBOX, "Заголовок диалога", "ТВОЯ информация", " Закрыть ", "");





Не заметил :D

Woofing Giraffe
04.10.2015, 17:34
Да ёпт, всё равно что-то не получается. Выполняю while true в потоке. После завершения игры её крашит. Пробывал в callbackDestructor поставить gamestate = false; и в цикл if (gamestate == false) break;, но всё равно что-то не получается :c

Dark_Knight
04.10.2015, 17:38
Да ёпт, всё равно что-то не получается. Выполняю while true в потоке. После завершения игры её крашит. Пробывал в callbackDestructor поставить gamestate = false; и в цикл if (gamestate == false) break;, но всё равно что-то не получается :c


Не используй костыли. Зачем тебе поток вообще отдельный?

Woofing Giraffe
04.10.2015, 17:42
Не используй костыли. Зачем тебе поток вообще отдельный?


Для цикла...

Dark_Knight
04.10.2015, 20:11
Для цикла...


В меин лупе нет ума сделать?



что тут не так?
пишет class "stOnFootData" не содержит члена "sCurrentAnimID"

PHP:






void
CALLBACK
testt
(
std
:
:
string param
)
{
char buf
[
128
]
;
stOnFootData sync
;
BitStream bs
;
memcpy
(
&
SF
-
>
getSAMP
(
)
-
>
getPlayers
(
)
-
>
pLocalPlayer
-
>
onFootData
,
&
sync
)
;
sprintf
(
buf
,
"idAnim: %d |flaganim: %d"
,
sync
.
sCurrentAnimID
,
sync
.
sAnimFlags
)
;
SF
-
>
getSAMP
(
)
-
>
getChat
(
)
-
>
AddChatMessage
(
-
1
,
buf
)
;
bs
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bs
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stOnFootData
)
)
;
}
;





Не правильно вообще все делаешь. мемкопи даже не правильно вызвал.

CarLCas
04.10.2015, 20:30
Для цикла...


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

return
04.10.2015, 22:34
Как увеличить дальность прорисовки ников?

Woofing Giraffe
04.10.2015, 23:30
Если ты узнал, что в других потоках можно юзать sleep и это не фризит, это не значит что везде нужно создавать доп. потоки. Если ты будешь в каждый скрипт делать доп. потоки, да ещё и несколько у тебя памяти не хватит, если железо так себе конечно же.


С железом всё нормально. В этом году ноутбук брал только. Ну а другие способы есть в таком случае?

Dark_Knight
04.10.2015, 23:34
Какой код у тебя в цикле. Я тебе покажу пример как его перенести в меинлуп.

Woofing Giraffe
05.10.2015, 00:14
Да я уже разобрался вроде. Спасибо.

return
05.10.2015, 09:05
Почему не выключается?

PHP:






void
CALLBACK
cmd_skills
(
std
:
:
string str
)
{
if
(
Skills
==
false
)
{
Skills
=
true
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 72 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 78 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 71 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 76 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 79 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 77 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 70 value 100.0"
)
;
}
else
{
Skills
=
false
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 72 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 78 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 71 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 76 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 79 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 77 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 70 value 0.0"
)
;
}
}

Woofing Giraffe
05.10.2015, 22:02
Почему не выключается?

PHP:






void
CALLBACK
cmd_skills
(
std
:
:
string str
)
{
if
(
Skills
==
false
)
{
Skills
=
true
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 72 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 78 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 71 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 76 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 79 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 77 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 70 value 100.0"
)
;
}
else
{
Skills
=
false
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 72 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 78 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 71 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 76 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 79 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 77 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 70 value 0.0"
)
;
}
}





Дай полный код.

return
05.10.2015, 23:04
Дай полный код.






PHP:






#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
bool Skills
=
false
;
void
CALLBACK
cmd_skills
(
std
:
:
string str
)
{
if
(
Skills
==
false
)
{
Skills
=
true
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 72 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 78 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 71 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 76 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 79 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 77 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 70 value 100.0"
)
;
}
else
{
Skills
=
false
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 72 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 78 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 71 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 76 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 79 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 77 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 70 value 0.0"
)
;
}
}
void
CALLBACK
mainloop
(
)
{
static
bool init
=
false
;
if
(
!
init
)
{
if
(
!
SF
-
>
getSAMP
(
)
-
>
IsInitialized
(
)
||
GAME
==
nullptr
)
return
;
SF
-
>
getSAMP
(
)
-
>
registerChatCommand
(
"fskills"
,
cmd_skills
)
;
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
;
}

Woofing Giraffe
05.10.2015, 23:35
PHP:






#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
bool Skills
=
false
;
void
CALLBACK
cmd_skills
(
std
:
:
string str
)
{
if
(
Skills
==
false
)
{
Skills
=
true
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 72 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 78 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 71 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 76 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 79 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 77 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 70 value 100.0"
)
;
}
else
{
Skills
=
false
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 72 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 78 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 71 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 76 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 79 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 77 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 70 value 0.0"
)
;
}
}
void
CALLBACK
mainloop
(
)
{
static
bool init
=
false
;
if
(
!
init
)
{
if
(
!
SF
-
>
getSAMP
(
)
-
>
IsInitialized
(
)
||
GAME
==
nullptr
)
return
;
SF
-
>
getSAMP
(
)
-
>
registerChatCommand
(
"fskills"
,
cmd_skills
)
;
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
;
}








bool Skills =false;

оно и так при создании false, просто bool Skills;

Woofing Giraffe
05.10.2015, 23:54
PHP:






#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
bool Skills
=
false
;
void
CALLBACK
cmd_skills
(
std
:
:
string str
)
{
if
(
Skills
==
false
)
{
Skills
=
true
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 72 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 78 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 71 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 76 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 79 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 77 value 100.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 70 value 100.0"
)
;
}
else
{
Skills
=
false
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 72 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 78 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 71 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 76 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 79 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 77 value 0.0"
)
;
SF
-
>
getCLEO
(
)
-
>
callOpcode
(
"0627: register_int_stat 70 value 0.0"
)
;
}
}
void
CALLBACK
mainloop
(
)
{
static
bool init
=
false
;
if
(
!
init
)
{
if
(
!
SF
-
>
getSAMP
(
)
-
>
IsInitialized
(
)
||
GAME
==
nullptr
)
return
;
SF
-
>
getSAMP
(
)
-
>
registerChatCommand
(
"fskills"
,
cmd_skills
)
;
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
;
}












Код:






#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS *SF = new SAMPFUNCS();
bool Skills;

void CALLBACK cmd_skills(std::string str)
{
Skills ^= true;
if (Skills)
{
SF->getCLEO()->callOpcode("0627: register_int_stat 72 value 0.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 78 value 0.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 71 value 0.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 76 value 0.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 79 value 0.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 77 value 0.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 70 value 0.0");
}
else
{
SF->getCLEO()->callOpcode("0627: register_int_stat 72 value 100.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 78 value 100.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 71 value 100.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 76 value 100.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 79 value 100.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 77 value 100.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 70 value 100.0");
}
}

void CALLBACK mainloop()
{
static bool init = false;
if (!init)
{
if (!SF->getSAMP()->IsInitialized() || GAME == nullptr)
return;
SF->getSAMP()->registerChatCommand("fskills", cmd_skills);
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;
}





Вроде должно работать.

return
06.10.2015, 13:56
Код:






#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS *SF = new SAMPFUNCS();
bool Skills;

void CALLBACK cmd_skills(std::string str)
{
Skills ^= true;
if (Skills)
{
SF->getCLEO()->callOpcode("0627: register_int_stat 72 value 0.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 78 value 0.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 71 value 0.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 76 value 0.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 79 value 0.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 77 value 0.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 70 value 0.0");
}
else
{
SF->getCLEO()->callOpcode("0627: register_int_stat 72 value 100.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 78 value 100.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 71 value 100.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 76 value 100.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 79 value 100.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 77 value 100.0");
SF->getCLEO()->callOpcode("0627: register_int_stat 70 value 100.0");
}
}

void CALLBACK mainloop()
{
static bool init = false;
if (!init)
{
if (!SF->getSAMP()->IsInitialized() || GAME == nullptr)
return;
SF->getSAMP()->registerChatCommand("fskills", cmd_skills);
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;
}





Вроде должно работать.


Всё по старому, не выключается.

Хотя, наверно я не правильно выразился...

Я пробовал выводить текст при включении и выключении, всё хорошо прошло, соответственно всё работает.

Трабла в том, что не меняется значение "value".

Нашёл интересную вещь, оно меняется на 0, если выключить данную функцию и умереть. То бишь только после смерти "value" становится 0.

fanta
06.10.2015, 14:23
Всё по старому, не выключается.
Хотя, наверно я не правильно выразился...
Я пробовал выводить текст при включении и выключении, всё хорошо прошло, соответственно всё работает.
Трабла в том, что не меняется значение "value".
Нашёл интересную вещь, оно меняется на 0, если выключить данную функцию и умереть. То бишь только после смерти "value" становится 0.


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

Tray228
07.10.2015, 17:17
Как задать игроку имунитет

cover
07.10.2015, 18:20
Ребят, подскажите какой компилятор лучше выбрать, чтобы был максимально прост и удобен в использовании, либо что-то на свой вкус. Спасибо

Woofing Giraffe
07.10.2015, 20:45
Ребят, подскажите какой компилятор лучше выбрать, чтобы был максимально прост и удобен в использовании, либо что-то на свой вкус. Спасибо


Visual Studio 2015

cover
07.10.2015, 21:01
Visual Studio 2015


Только 12 подойдет, нет ?

Sire Like
07.10.2015, 21:04
Ребят, подскажите какой компилятор лучше выбрать, чтобы был максимально прост и удобен в использовании, либо что-то на свой вкус. Спасибо


,



Только 12 подойдет, нет ?


Советую 2013 Ultimate, желательно с обновлением 4 или выше. ИМХО. ( Могут появится глюки с обновлением 2)

Также на всякий поставь DirectX SDK, чтоб не было лишних вопросов

cover
08.10.2015, 16:45
А Dev-С++ не подойдет в качестве компилятора ?

Dark_Knight
08.10.2015, 18:27
Ну готовый проект по Visual Studio сделан.

Sire Like
11.10.2015, 12:31
C++:






sscanf
(
input
,
"%s"
,
&
CMD
)
;




Записывает с диалога INPUT только /sms , я ввел к примеру /sms 0 Vax

Dark_Knight
11.10.2015, 12:40
Весь код.

Sire Like
11.10.2015, 12:46
C++:






char
CMD
[
144
]
;
else
if
(
dialogId
==
_cTimer
)
{
if
(
CTIMER
)
return
;
if
(
!
strlen
(
input
)
)
return
SAMP
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0xAA
,
0xAA
,
0xAA
)
,
"Вы не ввели команду"
)
;
sscanf
(
input
,
"%s"
,
&
CMD
)
;
SAMP
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0xAA
,
0xAA
,
0xAA
)
,
"Введите команду /ctimer еще раз."
)
;
CTIMER
=
true
;
}

CarLCas
11.10.2015, 13:21
C++:






char
CMD
[
144
]
;
else
if
(
dialogId
==
_cTimer
)
{
if
(
CTIMER
)
return
;
if
(
!
strlen
(
input
)
)
return
SAMP
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0xAA
,
0xAA
,
0xAA
)
,
"Вы не ввели команду"
)
;
sscanf
(
input
,
"%s"
,
&
CMD
)
;
SAMP
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0xAA
,
0xAA
,
0xAA
)
,
"Введите команду /ctimer еще раз."
)
;
CTIMER
=
true
;
}






C++:






int
id
;
char
msg
[
128
]
;
sscanf
(
input
,
"%s %d %s"
,
CMD
,
&
id
,
msg
)
;

Sire Like
11.10.2015, 13:52
C++:






sscanf
(
input
,
"%s"
,
CMD
)
;





вот и нет)

без изменений)

CarLCas
11.10.2015, 13:58
вот и нет)
без изменений)


Изменил

Sire Like
11.10.2015, 14:19
Изменил


Даже этим методом не работает. Получает только 1 параметр.

Вообще не должно быть параметров типа id, msg. Команды могут быть разные, типа /change house ид цена доплата и т.д

Dark_Knight
11.10.2015, 14:23
Кинь код всего коллбека, а лучше меин.спп. Залей на пастебин.

Sire Like
11.10.2015, 14:33
Кинь код всего коллбека, а лучше меин.спп. Залей на пастебин.


http://pastebin.com/8zfCDC2N (https://www.blast.hk/redirect/aHR0cDovL3Bhc3RlYmluLmNvbS84emZDREMyTg)

Woofing Giraffe
11.10.2015, 16:18
вот и нет)
без изменений)


Я делаю так.

Код:






sscanf(input, "%[a-zA-Zа-яА-Я0-9]", CMD);

Sire Like
11.10.2015, 16:19
Я делаю так.

Код:






sscanf(input, "%[a-zA-Zа-яА-Я0-9]", CMD);





Не знаю, не буду проверять уже т.к убрал эту ересь

Dark_Knight
11.10.2015, 16:30
http://pastebin.com/8zfCDC2N (https://www.blast.hk/redirect/aHR0cDovL3Bhc3RlYmluLmNvbS84emZDREMyTg)


Ебать. Тут черт ногу сломит.

Dark_Knight
11.10.2015, 19:45
1. Счетчик времени через GetTicketCount()

2. 1

3. Регистрируешь команду с каллбеком и через каллбек уже вызываешь функцию.

Dark_Knight
11.10.2015, 20:01
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724408(v=vs.85).aspx (https://www.blast.hk/redirect/aHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicm FyeS93aW5kb3dzL2Rlc2t0b3AvbXM3MjQ0MDgodj12cy44NSku YXNweA)

Dark_Knight
11.10.2015, 21:39
Циклы категорически не желательно юзать в каллбеках.

return
12.10.2015, 16:23
чего он флудит сразу после открытия меню. Как это исправить?

и эт, правильно я вообще сделал, а?




PHP:






void __stdcall Menu
:
:
callbackA
(
const
void
*
value
,
void
*
)
{
char buf
[
32
]
;
sprintf
(
buf
,
"a = %d "
,
*
(
int
*
)
value
)
;
SF
-
>
getSAMP
(
)
-
>
getChat
(
)
-
>
AddChatMessage
(
0xFF6347
,
buf
)
;
}
void __stdcall Menu
:
:
callbackA2
(
void
*
value
,
void
*
)
{
char buf
[
32
]
;
sprintf
(
buf
,
"a =%d"
,
*
(
int
*
)
value
)
;
SF
-
>
getSAMP
(
)
-
>
getChat
(
)
-
>
AddChatMessage
(
0xFF6347
,
buf
)
;
}

Sire Like
15.10.2015, 10:49
Подскажите, как правильно рисовать?

Код:






SF->getRender()->DrawBox(475, 500, 400, 500, D3DCOLOR_ARGB(255, 255, 125, 000));




( Разрешение 1366х768 )

Если установить разрешение 800х600 то фигура 'уезжает вниз'.

Как-то же подгоняют под все разрешения

CarLCas
15.10.2015, 15:00
Подскажите, как правильно рисовать?

Код:






SF->getRender()->DrawBox(475, 500, 400, 500, D3DCOLOR_ARGB(255, 255, 125, 000));




( Разрешение 1366х768 )

Если установить разрешение 800х600 то фигура 'уезжает вниз'.
Как-то же подгоняют под все разрешения


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

К примеру, централизовал текст по середине экрана: брал разрешение, делил пополам, вычитал половину длины строки

itsLegend
15.10.2015, 15:15
void convertGameCoordsToWindow(float fGX, float fGY, float *fWX, float *fWY);

GX = 0.0 - 640.0

GY = 0.0 - 448.0

Sire Like
15.10.2015, 23:50
Все же я не понял ничего:nea:

Примерчик бы,а ту я нуб

itsLegend
16.10.2015, 00:13
C++:






float
fX
,
fY
;
convertGameCoordsToWindow
(
320.0
,
224.0
,
&
fX
,
&
fY
)
;
SF
->
getRender
(
)
->
DrawBox
(
(
int
)
fX
,
(
int
)
fY
,
400
,
500
,
D3DCOLOR_ARGB
(
255
,
255
,
125
,
0
)
)
;

Woofing Giraffe
16.10.2015, 01:34
Как сделать выравнивание текста по центру?

Вот например я рисую







Код:






pFont->Print("test", D3DCOLOR_ARGB(255, 255, 255, 0), x, y, false);




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

nazarik
17.10.2015, 17:29
C++:






if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrDisplayGameText
)
{
// SF->getSAMP()->getChat()->AddChatMessage(-1, "lenght (%d: bytes)", params->bitStream->GetNumberOfBytesUsed());
byte len
;
char
szString
[
128
+
1
]
=
{
0
}
;
int
time
,
style
;
params
->
bitStream
->
ResetReadPointer
(
)
;
// обнуляем оффсет чтения.
params
->
bitStream
->
Read
(
time
)
;
params
->
bitStream
->
Read
(
style
)
;
params
->
bitStream
->
Read
(
len
)
;
params
->
bitStream
->
Read
(
szString
,
len
)
;
szString
[
len
]
=
0
;
params
->
bitStream
->
ResetReadPointer
(
)
;
// обнуляем оффсет чтения.
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"GameTextForPlayer(playerid, \"%s\", %d, %d)"
,
szString
,
time
,
style
)
;
// GameTextForPlayer(playerid, const string[], time, style)
}




Подскажите пожалуйста, почему не выводит szString? (time и style выводит корректно)

Dark_Knight
17.10.2015, 17:50
Ты строку закрываешь и открываешь.

itsLegend
17.10.2015, 21:29
Подскажите пожалуйста, почему не выводит szString? (time и style выводит корректно)


А ты уверен, что правильно подобрал тип переменных?

nazarik
17.10.2015, 21:32
А ты уверен, что правильно подобрал тип переменных?


Насчет "time, style" - да.

Остальное - нет.

itsLegend
17.10.2015, 21:40
Насчет "time, style" - да.
Остальное - нет.


Ну значит len либо short, либо int

nazarik
18.10.2015, 15:36
Ну значит len либо short, либо int


Спасибо, помог, тип должен быть int.

Кстати еще такой вопрос, как мне достать данные обьекта?

А именно model, x, y, z, rot_x, rot_y, rot_z, draw_dist; (пример ниже)

И проверку на то движется ли обьект (is_obj_moving)

C++:






for
(
int
idx
=
0
;
idx

getSAMP
(
)
->
getInfo
(
)
->
.
.
.
)
continue
;
// Тут проверка на то движется ли обьект, типо is_obj_moving
if
(
SF
->
getSAMP
(
)
->
getInfo
(
)
->
.
.
.
)
// Тут проверка на то существует ли обьект, типо is_obj_exists(idx)
{
SF
->
getSAMP
(
)
->
getInfo
(
)
->
.
.
.
obj
[
idx
]
->
.
.
.
model
SF
->
getSAMP
(
)
->
getInfo
(
)
->
.
.
.
obj
[
idx
]
->
.
.
.
x
SF
->
getSAMP
(
)
->
getInfo
(
)
->
.
.
.
obj
[
idx
]
->
.
.
.
y
SF
->
getSAMP
(
)
->
getInfo
(
)
->
.
.
.
obj
[
idx
]
->
.
.
.
z
SF
->
getSAMP
(
)
->
getInfo
(
)
->
.
.
.
obj
[
idx
]
->
.
.
.
rot_x
,
SF
->
getSAMP
(
)
->
getInfo
(
)
->
.
.
.
obj
[
idx
]
->
.
.
.
rot_y
,
SF
->
getSAMP
(
)
->
getInfo
(
)
->
.
.
.
obj
[
idx
]
->
.
.
.
rot_z
,
SF
->
getSAMP
(
)
->
getInfo
(
)
->
.
.
.
obj
[
idx
]
->
.
.
.
draw_dist
,
}
}

itsLegend
18.10.2015, 15:51
SF->getSAMP()->getInfo()->pPools->pObject

nazarik
18.10.2015, 16:14
SF->getSAMP()->getInfo()->pPools->pObject



C++:






int
mid
;
float
x
,
y
,
z
;
float
rx
,
ry
,
rz
;
float
draw_dist
;
for
(
int
i
=
0
;
i

getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
iIsListed
[
i
]
)
{
mid
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
iModel
;
x
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fPos
[
0
]
;
y
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fPos
[
1
]
;
z
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fPos
[
2
]
;
rx
=
0.0
;
// нет данных о повороте обьекта
ry
=
0.0
;
// нет данных о повороте обьекта
rz
=
0.0
;
// нет данных о повороте обьекта
draw_dist
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
fDrawDistance
;
}
}




Выводит: CreateObject(966, -1066078592992261700000.000000, -871262744137906110000000000.000000, 643936512.000000, 0.000000, 0.000000, -1.#QNAN0);

ModelD выводит корректо, остальное - нет.

Вопрос - что не так, где достать данные о том движется ли обьект и данные о повороте(rot_x,y,z) обьекта?

itsLegend
18.10.2015, 16:35
C++:






if
(
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
IsObjectExists
(
i
)
)
{
object_info
*
object
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
pGTAEntity
;
if
(
object
!=
nullptr
)
{
x
=
object
->
base
.
matrix
[
4
*
3
]
;
y
=
object
->
base
.
matrix
[
4
*
3
+
1
]
;
z
=
object
->
base
.
matrix
[
4
*
3
+
2
]
;
rx
=
object
->
base
.
matrix
[
0
]
;
ry
=
object
->
base
.
matrix
[
1
]
;
rz
=
object
->
base
.
matrix
[
2
]
;
}
}




[/i]

Если не ошибаюсь и нашел правильно, то структура матрицы в sa:

Код:






0 - 12 -> Rotation Matrix (Grad)
16 - 28 -> Rotation Matrix (Looking)
48 - 60 -> Position Matrix




(делим оффсеты на 4, т.к. все параметры читаются 4 байтами и получаем необходимый нам):

0 - 12 -> Rotation Matrix:

Rot X = 0 -> 0

Rot Y = 4 -> 1

Rot Z = 8 -> 2​

Насчет движения: если есть такой флаг для объекта, ищи)), либо используй хук на RPC.

nazarik
18.10.2015, 16:52
C++:






if
(
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
IsObjectExists
(
i
)
)
{
object_info
*
object
=
SF
->
getSAMP
(
)
->
getInfo
(
)
->
pPools
->
pObject
->
object
[
i
]
->
pGTAEntity
;
if
(
object
!=
nullptr
)
{
x
=
object
->
base
.
matrix
[
4
*
3
]
;
y
=
object
->
base
.
matrix
[
4
*
3
+
1
]
;
z
=
object
->
base
.
matrix
[
4
*
3
+
2
]
;
rx
=
object
->
base
.
matrix
[
0
]
;
ry
=
object
->
base
.
matrix
[
1
]
;
rz
=
object
->
base
.
matrix
[
2
]
;
}
}




[/i]

Если не ошибаюсь и нашел правильно, то структура матрицы в sa:

Код:






0 - 12 -> Rotation Matrix (Grad)
16 - 28 -> Rotation Matrix (Looking)
48 - 60 -> Position Matrix




(делим оффсеты на 4, т.к. все параметры читаются 4 байтами и получаем необходимый нам):
0 - 12 -> Rotation Matrix:
Rot X = 0 -> 0
Rot Y = 4 -> 1
Rot Z = 8 -> 2​

Насчет движения: если есть такой флаг для объекта, ищи)), либо используй хук на RPC.


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

Выводит: CreateObject(18850, 752.032410, -1207.830811, 7.010000, 1.000000, 0.000000, -0.000000);

P.S. диапозон [rot_x, y, z] у всех обьектов (от -1.000000 до 1.000000)

Sire Like
19.10.2015, 15:36
Т.е, тебе не нужно, чтобы в табе отображалось?







Код:






if(!SF->getSAMP()->getScoreboard()->iIsEnable)






Код:






class "stScoreboardInfo" не содержит члена "iIsEnable"

Dark_Knight
19.10.2015, 17:05
Код:






class "stScoreboardInfo" не содержит члена "iIsEnable"





https://yadi.sk/i/UWKW_RDdjqbaz (https://www.blast.hk/redirect/aHR0cHM6Ly95YWRpLnNrL2kvVVdLV19SRGRqcWJheg)

Trou
19.10.2015, 19:23
How Can i Wait On My Script ? Example::

Код:






SF->....AddMessageToChat(-1,"Hi");
.....(700)
SF->....AddMessageToChat(-1,"700 miliseconds passed");

kemperrr
22.10.2015, 09:16
Придумал кто нить как эмулировать игровые клавиши?

Tray228
24.10.2015, 22:13
Как сделать включение\отключение какой либо функи (AntTweakBar!!!!!)

RakNet
24.10.2015, 22:14
Как сделать включение\отключение какой либо функи (AntTweakBar!!!!!)


смотри там пример в визибл

VarRW VarCB ON/OFF

Tray228
24.10.2015, 22:25
смотри там пример в визибл

VarRW иVarCB ON/OFF


?

RakNet
24.10.2015, 22:27
?


включить выключить поставить галочку убрать галочку смотри там пример есть Visible

Tray228
24.10.2015, 22:28
включить выключить поставить галочку убрать галочку смотри там пример есть Visible


cсылку

RakNet
24.10.2015, 22:29
cсылку


в проекте смотри функцию Visible там показан пример как сделано так и делай

Tray228
24.10.2015, 22:31
в проекте смотри функцию Visible там показан пример как сделано так и делай


vk day v ls

RakNet
24.10.2015, 22:44
vk day v ls



TwAddVarCB(vehiclemenu, "visible", TwType::TW_TYPE_BOOLCPP, callbackSetVehVisible, callbackGetVehVisible, nullptr, "label='Visible'");

это смотри в menu.cpp

Tray228
24.10.2015, 22:49
TwAddVarCB(vehiclemenu, "visible", TwType::TW_TYPE_BOOLCPP, callbackSetVehVisible, callbackGetVehVisible, nullptr, "label='Visible'");
это смотри в menu.cpp


нету

RakNet
24.10.2015, 22:50
нету


есть там открой menu.cpp и найди эту строку

Tray228
24.10.2015, 22:53
есть там открой menu.cpp и найди эту строку


У меня код переделан

RakNet
24.10.2015, 22:57
если переделан добавь строку в menu.cpp если ее нет



У меня код переделан


добавь в menu.cpp если нету

RakNet
26.10.2015, 03:37
ПРИМЕР:

Добавить:

в menu.cpp

в Vehicle menu

TwAddVarCB(vehiclemenu, "visible", TwType::TW_TYPE_BOOLCPP, callbackSetVehVisible, callbackGetVehVisible, nullptr, "label='Visible'");

в menu.h

в private:

// callbacks

static void TW_CALL callbackSetVehVisible(const void* value, void*);

static void TW_CALL callbackGetVehVisible(void* value, void*);

в menu_callbacks.cpp

void TW_CALL Menu::callbackSetVehVisible(const void* value, void*)

{

if (!PEDSELF) return;

CVehicle *veh = PEDSELF->GetVehicle();

if (!veh) return;

veh->SetVisible(*(bool*)value);

}

void TW_CALL Menu::callbackGetVehVisible(void* value, void*)

{

if (!PEDSELF) return;

CVehicle *veh = PEDSELF->GetVehicle();

if (!veh) return;

*(bool*)value = veh->IsVisible();

}

Tray228
28.10.2015, 22:00
Как поставить музыку в плагин?

Sire Like
28.10.2015, 22:01
Как поставить музыку в плагин?


Какую еще музыку?

GAME-> ...

там что-то с музыкой.

Tray228
28.10.2015, 22:04
Какую еще музыку?
GAME-> ...
там что-то с музыкой.


Например которая у меня на компе

RakNet
28.10.2015, 22:05
Как поставить музыку в плагин?


GAME->GetAudio()->PlayBeatTrack(2); где 2 - номер трека оюычно это убирают он наооборот )

Sire Like
28.10.2015, 22:07
Например которая у меня на компе


В Google : "Воспроизведение музыки C++"

MISTER_GONWIK
29.10.2015, 09:15
Чет не компилит даже)

C++:






#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
bool
CALLBACK
cbug
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
PacketEnumeration
::
ID_BULLET_SYNC
)
{
float
x
=
PEDSELF
->
GetPosition
(
)
->
fX
;
float
y
=
PEDSELF
->
GetPosition
(
)
->
fY
;
float
z
=
PEDSELF
->
GetPosition
(
)
->
fZ
;
Sleep
(
50
)
;
PEDSELF
->
Teleport
(
x
,
y
,
z
)
;
}
return
;
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_OUTCOMING_PACKET
,
cbug
)
;
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
;
}





1. У тебя функция калбека булевая - bool CALLBACK cbug(stRakNetHookParams *params), а это значит, что она должна вернуть либо true, либо false, а не просто return, в данном случае должна вернуть return true;

2. Не используй Sleep(50), это тебе не wait 50 как в клео

RakNet
29.10.2015, 09:16
Чет не компилит даже)

C++:






#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
bool
CALLBACK
cbug
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
PacketEnumeration
::
ID_BULLET_SYNC
)
{
float
x
=
PEDSELF
->
GetPosition
(
)
->
fX
;
float
y
=
PEDSELF
->
GetPosition
(
)
->
fY
;
float
z
=
PEDSELF
->
GetPosition
(
)
->
fZ
;
Sleep
(
50
)
;
PEDSELF
->
Teleport
(
x
,
y
,
z
)
;
}
return
;
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_OUTCOMING_PACKET
,
cbug
)
;
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
;
}






PEDSELF->Teleport(x, y, z);

}

return 0;

}

Sire Like
29.10.2015, 09:17
Чет не компилит даже)

C++:






#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
bool
CALLBACK
cbug
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
PacketEnumeration
::
ID_BULLET_SYNC
)
{
float
x
=
PEDSELF
->
GetPosition
(
)
->
fX
;
float
y
=
PEDSELF
->
GetPosition
(
)
->
fY
;
float
z
=
PEDSELF
->
GetPosition
(
)
->
fZ
;
Sleep
(
50
)
;
PEDSELF
->
Teleport
(
x
,
y
,
z
)
;
}
return
;
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_OUTCOMING_PACKET
,
cbug
)
;
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
;
}






Потому что







Код:






return




твой нихуя не возвращает. TRUE или FALSE

Dark_Knight
29.10.2015, 16:59
Таймер.

Sire Like
29.10.2015, 17:06
пример можно?))



C++:






#pragma comment (lib, "user32.lib")




C++:






int
A
;
A
=
SetTimer
(
NULL
,
0
,
1000
,
(
TIMERPROC
)
Vax
)
;
void
Vax
(
)
{
KillTimer
(
NULL
,
A
)
;
}




Вроде так,хз

0pc0d3R
01.11.2015, 04:28
Вроде так,хз



C++:






#pragma comment (lib, "user32.lib")




C++:






uint Att
;
// хэндл таймера
Att
=
SetTimer
(
NULL
,
0
,
1000
,
(
TIMERPROC
)
&
Vax
)
;
void
__stdcall
Vax
(
HWND hwnd
,
UINT uMsg
,
UINT_PTR idEvent
,
DWORD dwTime
)
// не забывай делать соглашенный вызов потому что сет таймер из вин апи, а этот метод Vax будет коллбэком.
{
KillTimer
(
NULL
,
A
)
;
}

0pc0d3R
01.11.2015, 04:31
Nужно чекать нету ли препятствий между мной и другим педом при взгляде камеры как у клео опкода no obstacles between, но хз правильно ли.

C++:






CVector
*
vecStart
=
GAME
->
GetCamera
(
)
->
GetCam
(
GAME
->
GetCamera
(
)
->
GetActiveCam
(
)
)
->
GetFront
(
)
;
if
(
!
GAME
->
GetWorld
(
)
->
IsLineOfSightClear
(
vecStart
,
GAME
->
GetPools
(
)
->
GetPed
(
two
)
->
GetPosition
(
)
)
)
return
65535
;




где two - хендл нужного мне актёра

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

0pc0d3R
01.11.2015, 04:42
Придумал кто нить как эмулировать игровые клавиши?


SF->getGame()->emulateGTAKey(key, state); где кей это ид игровой клавиши, а state её состояние(нажатая/зажата)

Sire Like
01.11.2015, 08:19
C++:






#pragma comment (lib, "user32.lib")




C++:






uint Att
;
// хэндл таймера
Att
=
SetTimer
(
NULL
,
0
,
1000
,
(
TIMERPROC
)
&
Vax
)
;
void
__stdcall
Vax
(
HWND hwnd
,
UINT uMsg
,
UINT_PTR idEvent
,
DWORD dwTime
)
// не забывай делать соглашенный вызов потому что сет таймер из вин апи, а этот метод Vax будет коллбэком.
{
KillTimer
(
NULL
,
A
)
;
}





Ну я так почти и делал

kemperrr
01.11.2015, 09:51
SF->getGame()->emulateGTAKey(key, state); где кей это ид игровой клавиши, а state её состояние(нажатая/зажата)


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

0pc0d3R
01.11.2015, 15:26
Ты сам лично проверял эту функцию? Пробовал уже не раз, и с виртуальными клавишами, и с игровыми, статус нажатия тоже перебробовал разные, не работает, уже на протяжении 4 месяцев спрашиваю про альтернативу этой функции


а тогда хз, я не разу не юзил её, думал ты не знаешь про нее :D

0pc0d3R
01.11.2015, 15:27
How Can i Wait On My Script ? Example::

Код:






SF->....AddMessageToChat(-1,"Hi");
.....(700)
SF->....AddMessageToChat(-1,"700 miliseconds passed");





just create a new thread and do what you want.

kemperrr
01.11.2015, 22:38
а тогда хз, я не разу не юзил её, думал ты не знаешь про нее :D


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

Dark_Knight
01.11.2015, 22:54
keybd_event

Sire Like
02.11.2015, 06:27
Что такое ?

Код:






getSAMPAddr

Dark_Knight
02.11.2015, 12:17
Получает адресс сампа.

kemperrr
02.11.2015, 12:23
keybd_event


Не помогает, эмулирует, но при этом сварачивает игру

MISTER_GONWIK
02.11.2015, 12:46
Ты сам лично проверял эту функцию? Пробовал уже не раз, и с виртуальными клавишами, и с игровыми, статус нажатия тоже перебробовал разные, не работает, уже на протяжении 4 месяцев спрашиваю про альтернативу этой функции


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

kemperrr
02.11.2015, 12:47
мне пришлось хукнуть одну ***ню, чтоб в моих плагинах можно было нормально эту функу вызывать


Мне не поможешь? В хуках не шарю как и в c++ :D

Woofing Giraffe
04.11.2015, 16:14
Возможно ли организовать удаление последней строки из чата? И как получить текущий скин?

Tray228
05.11.2015, 14:33
Какой класс меняет SKIN нашему игроку

Dark_Knight
05.11.2015, 16:00
Ракнет и хуки

Tray228
05.11.2015, 16:12
Ракнет и хуки


Мне визуально

Woofing Giraffe
05.11.2015, 19:50
Мне визуально


Это и так будет визуально. Чтоб забагать себе нормальный, надо найти недочёт в системе

fanta
06.11.2015, 13:44
на вики посмотри, там уже готовый код есть

fanta
06.11.2015, 15:27
https://www.blast.hk/wiki/tutorials:api_lesson_raknet

Tray228
06.11.2015, 18:45
https://www.blast.hk/wiki/tutorials:api_lesson_raknet


какой из них

Dark_Knight
06.11.2015, 21:11
какой из них


Такой. Переведи слово "Hook" и узнаешь.

Woofing Giraffe
09.11.2015, 00:58
Как проверить, находится ли на месте водителя локальный игрок?

Tray228
12.11.2015, 21:26
Как создать объект (например пикап адреналина)

Trou
12.11.2015, 23:36
just create a new thread and do what you want.


When İ Use Sleep Game Freezing For 700Ms

itsLegend
13.11.2015, 01:26
Как создать объект (например пикап адреналина)


CPickups::CreatePickup(CVector * position, DWORD ModelIndex, ePickupType Type = PICKUP_ONCE, DWORD dwMonetaryValue = 0, DWORD dwMoneyPerDay = 0, BYTE bPingOutOfPlayer = 0);

C++:






CVector
pos
(
0.0
,
0.0
,
0.0
)
;
GAME
->
GetPickups
(
)
->
CreatePickup
(
&
pos
,
1241
)
;




Для объектов будет другой вызов.

0pc0d3R
13.11.2015, 10:54
When İ Use Sleep Game Freezing For 700Ms


as i say, for using sleep without game freeze, you will need to do a new thread, and in him callback you can use this for safe.

Tray228
13.11.2015, 20:43
CPickups::CreatePickup(CVector * position, DWORD ModelIndex, ePickupType Type = PICKUP_ONCE, DWORD dwMonetaryValue = 0, DWORD dwMoneyPerDay = 0, BYTE bPingOutOfPlayer = 0);

C++:






CVector
pos
(
0.0
,
0.0
,
0.0
)
;
GAME
->
GetPickups
(
)
->
CreatePickup
(
&
pos
,
1241
)
;




Для объектов будет другой вызов.


CPickups::CreatePickup(CVector * position, DWORD ModelIndex, ePickupType Type = PICKUP_ONCE, DWORD dwMonetaryValue = 0, DWORD dwMoneyPerDay = 0, BYTE bPingOutOfPlayer = 0);

единственное не понял куда это сувать

CarLCas
13.11.2015, 21:04
CPickups::CreatePickup(CVector * position, DWORD ModelIndex, ePickupType Type = PICKUP_ONCE, DWORD dwMonetaryValue = 0, DWORD dwMoneyPerDay = 0, BYTE bPingOutOfPlayer = 0);
единственное не понял куда это сувать


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

CarLCas
14.11.2015, 07:36
Я так понял, что это антиразброс

C++:





[CODE]
for
(
int
gun
=
23
;
gun

Sire Like
14.11.2015, 07:47
[QUOTE="CarLCas"]

Я так понял, что это антиразброс

C++:






for
(
int
gun
=
23
;
gun

Код:





[CODE]
*(float *)13157456 = 5.0;

Sire Like
14.11.2015, 11:10
Можно проверить открыт ли серверный диалог?

MISTER_GONWIK
14.11.2015, 11:15
Можно проверить открыт ли серверный диалог?


ясен ***, SF->getSAMP()->getDialog()->IlsActive

Tray228
14.11.2015, 12:38
[QUOTE="CarLCas"]

Я так понял, что это антиразброс

C++:





[CODE]
for
(
int
gun
=
23
;
gun

CarLCas
14.11.2015, 20:28
Если не трудно, объясни пожалуйста каждую строку)
то есть как ты получил адреса памяти.


Вот адреса (https://www.blast.hk/redirect/aHR0cDovL2d0YW1vZGRpbmcucnUvd2lraS8lRDAlOTAlRDAlQj QlRDElODAlRDAlQjUlRDElODElRDAlQjBfJUQwJTlGJUQwJUIw JUQwJUJDJUQxJThGJUQxJTgyJUQwJUI4XyhTQSkjV0VBUE9OLk RBVA)

1) Цикл перебора оружия, тут он начинается с 23 ида (пист. с глушителем, по моему) и до 31 ида

2) После высчитываем индекс элемента (ид_оружия+скилл_уровень ( в данном случаем PRO=36) ), учитываем, что элемент по 0х70 байт (индекс * 0х70 ) , прибавляем начало блока и нужное смещение, записываем нужные нам данные

Tray228
14.11.2015, 22:22
Как вызвать анимку например: "M_smk_in" IFP "SMOKING"

Tray228
15.11.2015, 15:30
Пытался перевести админ чекер на сф апи, не получилось.

Скажите пожалуйста что тут не так?

PHP:






bool admchecker
;
int count
=
false
;
stFontInfo
*
pFont
;
bool
CALLBACK
Present
(
CONST
RECT
*
pSourceRect
,
CONST
RECT
*
pDestRect
,
HWND
hDestWindowOverride
,
CONST
RGNDATA
*
pDirtyRegion
)
{
if
(
SUCCEEDED
(
SF
-
>
getRender
(
)
-
>
BeginRender
(
)
)
&&
admchecker
==
true
)
{
int count
=
false
;
for
(
int i
=
0
;
i

getSAMP
(
)
-
>
getPlayers
(
)
-
>
GetPlayerName
(
i
)
==
NULL
||
set
.
admin
[
x
]
==
NULL
)
;
break
;
if
(
!
strcmp
(
SF
-
>
getSAMP
(
)
-
>
getPlayers
(
)
-
>
GetPlayerName
(
i
)
,
set
.
admin
[
x
]
)
)
{
char text
[
64
]
;
sprintf
(
text
,
"%s [ID: %d]"
,
SF
-
>
getSAMP
(
)
-
>
getPlayers
(
)
-
>
GetPlayerName
(
i
)
,
i
)
;
pFont
-
>
PrintShadow
(
1
,
pPresentParam
.
BackBufferHeight
-
360
+
count
*
20
,
D3DCOLOR_XRGB
(
255
,
165
,
0
)
,
text
)
;
count
++
;
}
}
}
if
(
count
==
false
)
pFont
-
>
PrintShadow
(
1
,
pPresentParam
.
BackBufferHeight
-
45
,
D3DCOLOR_XRGB
(
255
,
165
,
0
)
,
"Администраторов в сети нету"
)
;
PresentParam
.
BackBufferHeight
-
45
,
D3DCOLOR_XRGB
(
255
,
165
,
0
)
,
"Администраторов в сети нету"
)
;
SF
-
>
getRender
(
)
-
>
EndRender
(
)
;
}
return
true
;
}
void
CALLBACK
lol
(
std
:
:
string param
)
{
admchecker
^
=
true
;
if
(
admchecker
)
SF
-
>
getSAMP
(
)
-
>
getChat
(
)
-
>
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"Admcheacker ON"
)
;
else
SF
-
>
getSAMP
(
)
-
>
getChat
(
)
-
>
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"Admcheacker OFF"
)
;
}

Sire Like
15.11.2015, 15:43
Потому что гавно чекер

Tray228
16.11.2015, 20:03
дайте пожалуйста аргументы этому RPC_VehicleDestroyed

Sire Like
17.11.2015, 06:39
дайте пожалуйста аргументы этому RPC_VehicleDestroyed



Код:






BitStream bs;
bs.Write(stoi(param)); //
SF->getRakNet()->SendRPC(RPC_VehicleDestroyed, &bs, HIGH_PRIORITY, RELIABLE_ORDERED, 0, 0);

SR_team
17.11.2015, 14:56
Как вызвать анимку например: "M_smk_in" IFP "SMOKING"


Эмуляции рпц, структура вроде такая

Кол-во байт / название

2 / id игрока, к которому применяется анимация

1 / длина названия файла анимации

n / название файла анимации

1 / длина названия анимации

n / название анимации

4 / скорость анимации float

1 / зацикливание анимации 1/0

1 / блокировка y 1/0

1 / блокировка x 1/0

1 / заморозка игрока 1/0

4 / какой-то флаг dwTime, обычно 0

Sire Like
17.11.2015, 15:12
4 / какой-то флаг dwTime, обычно 0


Время выполнения анимации, 0 - беск. анимация

Tray228
17.11.2015, 20:45
SF->getSAMP()->getPlayers()->pLocalPlayer->Say("/me достает таблетки."); вот эта строка должна выводится первой, но она не выводится, почему?

PHP:






SF
-
>
getSAMP
(
)
-
>
getPlayers
(
)
-
>
pLocalPlayer
-
>
Say
(
"/me достает таблетки."
)
;
SF
-
>
getSAMP
(
)
-
>
getChat
(
)
-
>
AddChatMessage
(
0xFFFFFF
,
"Осталось таблеток адреналина: {dcedf9}%d"
,
secret
=
rand
(
)
%
200
-
1
)
;

itsLegend
17.11.2015, 21:40
Пока запрос обработается сервером может пройти небольшое время.

Tray228
17.11.2015, 22:12
Пока запрос обработается сервером может пройти небольшое время.


мне нужно ставить задержку?

Tray228
18.11.2015, 00:23
/dell

itsLegend
18.11.2015, 00:35
Проверяй позицию пикапа с позицией игрока(лучше радиусом)

Tray228
18.11.2015, 00:58
Проверяй позицию пикапа с позицией игрока(лучше радиусом)


можно пример?

Dark_Knight
18.11.2015, 01:02
if()

{}

else

{}

Tray228
18.11.2015, 01:07
как сделать что бы отнималось число по одному от 300.

Dark_Knight
18.11.2015, 01:22
for(int i = 300; i = 0;i--)

{}

Tray228
18.11.2015, 20:12
PHP:






bool
CALLBACK
incomingRPC
(
stRakNetHookParams
*
params
)
{
if
(
params
-
>
packetId
==
ScriptRPCEnumeration
:
:
RPC_ScrClientMessage
&&
xui
==
true
)
{
char szPlayerName
[
25
]
;
DWORD
color
;
byte nameLen
;
char char1
[
128
]
;
char message
[
128
]
;
char dolbaeb
[
128
]
;
params
-
>
bitStream
-
>
ResetReadPointer
(
)
;
params
-
>
bitStream
-
>
Read
(
szPlayerName
)
;
params
-
>
bitStream
-
>
Read
(
color
)
;
params
-
>
bitStream
-
>
Read
(
nameLen
)
;
params
-
>
bitStream
-
>
Read
(
message
,
nameLen
)
;
params
-
>
bitStream
-
>
ResetReadPointer
(
)
;
message
[
nameLen
]
=
'\0'
;
sprintf
(
char1
,
"%s достает таблетки."
,
szPlayerName
)
;
sprintf
(
dolbaeb
,
"Осталось таблеток адреналина : {dcedf9}%d"
,
Adrenalin
)
;
if
(
!
strcmp
(
char1
,
message
)
&&
zali
==
true
)
{
Adrenalin
--
;
SF
-
>
getSAMP
(
)
-
>
getChat
(
)
-
>
AddChatMessage
(
-
1
,
"%s %d"
,
dolbaeb
,
Adrenalin
)
;
}
}
return
true
;
}




проблема в том что не выводится SF->getSAMP()->getChat()->AddChatMessage(-1, "%s %d", dolbaeb, Adrenalin); в чат. И еще нету sprintf(char1, "%s достает таблетки.", szPlayerName); в чат выводится но букв вообще нету. Помогите пожалуйста.

Dark_Knight
18.11.2015, 20:57
Вот что считывать надо.

Код:






D3DCOLOR color;
unsigned int length;
char message[145];
params->bitStream->Read(color);
params->bitStream->Read(length);
params->bitStream->Read(message, length);

Tray228
18.11.2015, 21:33
Такая проблема, мне нужно чтоб выводилось SF->getSAMP()->getPlayers()->pLocalPlayer->Say("/me достает таблетки"); первой , а не второй. И еще у меня не высвечивается SF->getSAMP()->getChat()->AddChatMessage(-1, "Осталось таблеток адреналина : {dcedf9}%d", Adrenalin);

PHP:






bool
CALLBACK
incomingRPC
(
stRakNetHookParams
*
params
)
{
if
(
params
-
>
packetId
==
ScriptRPCEnumeration
:
:
RPC_ScrClientMessage
&&
xui
==
true
)
{
D3DCOLOR
color
;
unsigned int length
;
char message
[
145
]
;
char char1
[
128
]
;
char dolbaeb
[
128
]
;
params
-
>
bitStream
-
>
Read
(
color
)
;
params
-
>
bitStream
-
>
Read
(
length
)
;
params
-
>
bitStream
-
>
Read
(
message
,
length
)
;
sprintf
(
dolbaeb
,
"Осталось таблеток адреналина : {dcedf9}%d"
,
Adrenalin
)
;
if
(
!
strcmp
(
char1
,
message
)
&&
zali
==
true
)
{
SF
-
>
getSAMP
(
)
-
>
getChat
(
)
-
>
AddChatMessage
(
-
1
,
"%s %d"
,
dolbaeb
,
Adrenalin
)
;
}
}
return
true
;
}

CarLCas
18.11.2015, 22:07
Такая проблема, мне нужно чтоб выводилось SF->getSAMP()->getPlayers()->pLocalPlayer->Say("/me достает таблетки"); первой , а не второй. И еще у меня не высвечивается SF->getSAMP()->getChat()->AddChatMessage(-1, "Осталось таблеток адреналина : {dcedf9}%d", Adrenalin);

PHP:






bool
CALLBACK
incomingRPC
(
stRakNetHookParams
*
params
)
{
if
(
params
-
>
packetId
==
ScriptRPCEnumeration
:
:
RPC_ScrClientMessage
&&
xui
==
true
)
{
D3DCOLOR
color
;
unsigned int length
;
char message
[
145
]
;
char char1
[
128
]
;
char dolbaeb
[
128
]
;
params
-
>
bitStream
-
>
Read
(
color
)
;
params
-
>
bitStream
-
>
Read
(
length
)
;
params
-
>
bitStream
-
>
Read
(
message
,
length
)
;
sprintf
(
dolbaeb
,
"Осталось таблеток адреналина : {dcedf9}%d"
,
Adrenalin
)
;
if
(
!
strcmp
(
char1
,
message
)
&&
zali
==
true
)
{
SF
-
>
getSAMP
(
)
-
>
getChat
(
)
-
>
AddChatMessage
(
-
1
,
"%s %d"
,
dolbaeb
,
Adrenalin
)
;
}
}
return
true
;
}





if (!strcmp(char1, message) - тут ты сравниваешь char1 и message, но char1 у тебя пустой..

SF->getSAMP()->getPlayers()->pLocalPlayer->Say("/me достает таблетки"); - после неё сделай задержку, т.к. эта функция отправляет текст на сервер, а пинг то у тебя не равен 0, вот и требуется время чтобы пакет дошёл

Tray228
18.11.2015, 23:58
как узнать цвет сообщения который мне посылает сервер

Woofing Giraffe
19.11.2015, 00:13
как узнать цвет сообщения который мне посылает сервер



Код:






SF->getSAMP()->getChat()->AddChatMessage(-1, "0x%X", SF->getSAMP()->getChat()->chatEntry[99].clTextColor);




Получает цвет последней (99) строки.

Dark_Knight
19.11.2015, 00:28
как узнать цвет сообщения который мне посылает сервер



Код:






params->bitStream->Read(color);




Ты же вот читаешь

Sire Like
19.11.2015, 11:17
В общем создал .h файл

Теперь 'SF - необъявленный идентификатор'.

Т.е нужно подключить что-то. Что?

Dark_Knight
19.11.2015, 11:54
extern SAMPFUNCS *SF в меин.аш и потом создаешь уже SAMPFUNCS *SF = new SAMPFUNCS() в мейн.спп

Tray228
19.11.2015, 14:49
Код:






params->bitStream->Read(color);




Ты же вот читаешь


А какой индефикатор?

Dark_Knight
19.11.2015, 16:11
Какой индефикатор?

Tray228
19.11.2015, 16:35
Какой индефикатор?


Мне нужно вывести цвет в чат ( то есть узнать цвет чата который мне отсылает сервер)

Sire Like
19.11.2015, 16:48
Лови хуком, потом форматируй строку с цветом, вроде изи



Мне нужно вывести цвет в чат ( то есть узнать цвет чата который мне отсылает сервер)


Ов

Tray228
19.11.2015, 20:18
как вывести D3D

Dark_Knight
19.11.2015, 20:46
Что ты имеешь виду по д3д

Sire Like
20.11.2015, 10:31
В общем рисую бокс

Код:






SF->getRender()->DrawBox((int)pX, (int)pY, 100, 30, D3DCOLOR_ARGB(190, 000, 000, 000));




и к нему текст

Код:






pFont->Print(_cheat_one, D3DCOLOR_ARGB(255, 255, 255, 255), pX + 1, pY + 2, false);




Хотелось бы при активации функции ( на клавишу ) менять цвет текста. Всё готово, но с цветом так и не сделал.

Код:






const char *_cheat_one = "GodMode";

Dark_Knight
20.11.2015, 12:39
Какая зависимость цвета должна быть от кнопки?

Sire Like
21.11.2015, 04:40
Я тупой.Я не понял твой вопрос

Dark_Knight
21.11.2015, 12:34
Как должен менять цвет, когда ты нажимаешь кнопку?

Sire Like
21.11.2015, 13:10
Собственно как sobeit, по такому же принципу.

Dark_Knight
21.11.2015, 14:12
Я хз какой там. По типу ВКЛ/ВЫКЛ?

Sire Like
21.11.2015, 15:55
ну да, когда чит активирован цвет надписи другой

Dark_Knight
21.11.2015, 17:16
Если функа активна один цвет, не активная - другой цвет.

Sire Like
21.11.2015, 17:17
Агась, ставить проверку на каждую функцию чтоль?

Думал проще можно

DarkExorcist
21.11.2015, 18:37
Как проверить, подключен игрок с определенным идом к серверу или нет?

CarLCas
21.11.2015, 18:46
Как проверить, подключен игрок с определенным идом к серверу или нет?


stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[ ID ];

if(!pPlayer)

return;

Tray228
21.11.2015, 22:09
как брать строку из чата, перед новой строкой

Woofing Giraffe
21.11.2015, 22:57
SF->getSAMP()->getChat()->chatEntry[98]. и далее

Tray228
23.11.2015, 01:01
Как телепортировать игрока к себе

CarLCas
23.11.2015, 06:40
Как телепортировать игрока к себе


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

return
23.11.2015, 13:07
как сделать команду с двумя параметрами, но что бы в каждом параметре был пробел?

что то вроде этого - /cmd параметр один; параметр два;

Dark_Knight
23.11.2015, 13:19
Как вариант sscanf. Так же можно регулярные выражения применить.

im0rg
24.11.2015, 05:58
Хотелось бы при активации функции ( на клавишу ) менять цвет текста. Всё готово, но с цветом так и не сделал.


Объявляем переменную

Код:






static bool AutoHealth = false;




Рисуем текст с цветом в зависимости от статуса переменной

Код:






pFont->Print("[AutoHealth]", AutoHealth?D3DCOLOR_ARGB(255, 0, 100, 0):D3DCOLOR_ARGB(255, 128,0,0), x, y, false);




При нажатии на кнопку меняем статус переменной

Код:






if(game->isKeyPressed(VK_LBUTTON))
{
AutoHealth ^= true;
}

im0rg
24.11.2015, 06:00
как сделать команду с двумя параметрами, но что бы в каждом параметре был пробел?
что то вроде этого - /cmd параметр один; параметр два;


Как пример..

Код:





[CODE]
void CALLBACK cmd_ahall(std::string param)
{
const char * params = param.c_str();
int sid,eid;
if ( !strlen( params ) || sscanf( params, "%d%d", &sid,&eid ) getSAMP()->getChat()->AddChatMessage( -1, "USAGE: /ahall " );
return;
}
for(int i=sid; i

Woofing Giraffe
26.11.2015, 23:53
Есть ли в SF API замена опкоду 050A?

Dark_Knight
27.11.2015, 00:13
В гугле найди функцию

itsLegend
27.11.2015, 00:18
Есть ли в SF API замена опкоду 050A?


Это длина векторов.

Woofing Giraffe
27.11.2015, 01:22
Это длина векторов.


Да я уже понял, спасибо)

im0rg
30.11.2015, 04:44
Возможно ли средствами SFAPI получить /fontsize (чата)?

Woofing Giraffe
30.11.2015, 19:21
Как узнать что определённый ID отключился от сервера?

CarLCas
30.11.2015, 20:15
Как узнать что определённый ID отключился от сервера?



C++:






bool
CALLBACK
incomingRPC
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrServerQuit
)
{
short
int
playerId
;
byte Reason
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
playerId
)
;
// Id игрока
params
->
bitStream
->
Read
(
Reason
)
;
//причина
}
return
true
;
}




В mainloop при инициализации: SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHO OK_TYPE_INCOMING_RPC, incomingRPC);

Tray228
01.12.2015, 22:02
Как сделать чтобы при выключенном чате работал радар.

SR_team
03.12.2015, 11:37
Как сделать чтобы при выключенном чате работал радар.


Нопишь функцию скрытия радары из сампа и все

Tray228
03.12.2015, 17:29
Нопишь функцию скрытия радары из сампа и все


а как называется?

как сделать передвижение текста по всему экрану

Dark_Knight
06.12.2015, 01:58
Смотря как тебе нужно.

Tray228
06.12.2015, 02:16
Смотря как тебе нужно.


ну как у наруто

return
07.12.2015, 00:07
как изменить название серверного диалога?

пример, если можно.

Woofing Giraffe
07.12.2015, 01:05
как изменить название серверного диалога?
пример, если можно.


По идее хуком можно.

Можно ли как то проверить что команда отправлена на сервер? Т.е. он её не прервал. Пример: На сервере есть команда /id. Если прописать её без ника то она не выполниться. О том что можно поставить условие что оно нашло ник я знаю. А есть другие способы?

By_Surse
13.12.2015, 13:36
Как получить координаты маркера?

Tray228
15.12.2015, 22:52
Как брать строку из чата, игрока по ID

Например Vasya_Pupkin: слово "Машина" ( то есть копировать слова после ":")

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

И еще отправить ему это слово прямо в смс.

Dark_Knight
15.12.2015, 22:57
Как вариант, регулярные выражения. Для ознакомления (https://www.blast.hk/redirect/aHR0cHM6Ly95YWRpLnNrL2kvVjV3Z3pkdGRtRlpGeQ).

Tray228
15.12.2015, 22:59
Как вариант, регулярные выражения.


То есть?

Dark_Knight
15.12.2015, 23:02
То есть?


https://www.google.com.ua/search?cl...е+выражения+&sourceid=opera&ie=UTF-8&oe=UTF-8 (https://www.blast.hk/redirect/aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS51YS9zZWFyY2g_Y2xpZW 50PW9wZXJhJnE90YDQtdCz0YPQu9GP0YDQvdGL0LUr0LLRi9GA 0LDQttC10L3QuNGPKyZzb3VyY2VpZD1vcGVyYSZpZT1VVEYtOC ZvZT1VVEYtOA)

im0rg
17.12.2015, 04:44
Как брать строку из чата, игрока по ID
Например Vasya_Pupkin: слово "Машина" ( то есть копировать слова после ":")
Мне нужно скопировать сообщения из чата без имени игрока. Только слова которые он написал.
И еще отправить ему это слово прямо в смс.


Как вариант (https://www.blast.hk/redirect/aHR0cDovL2NwcHN0dWRpby5jb20vcG9zdC83NDcv)

Tray228
19.12.2015, 13:10
как сделать проверку на анимку и заблокировать ее?

Dark_Knight
19.12.2015, 18:30
как сделать проверку на анимку и заблокировать ее?


Чекаешь анимку через хук и возращаешь фалсе.

Tray228
19.12.2015, 21:15
Чекаешь анимку через хук и возращаешь фалсе.


хук или структура какая

Как сделать такую вещь. Как у наруто, что бы текст передвигать по экрану

Woofing Giraffe
21.12.2015, 18:15
Возможно ли перехватить пакет отправленный серверу и заблокировать его?

Rorian
21.12.2015, 18:33
Возможно ли перехватить пакет отправленный серверу и заблокировать его?


Возможно.

RAKHOOK_TYPE_OUTCOMING_RPC или RAKHOOK_TYPE_OUTCOMING_PACKET

loominati
30.12.2015, 12:28
Как узнать ID игрока, от которого прилетел ID_PLAYER_SYNC?

EDIT: Разобрался. ID игрока лежит сразу после ID пакета в BitStream.

Gabriel__
31.12.2015, 16:02
Где можно найти список всех функций API как в SB

itsLegend
31.12.2015, 17:31
В .h файлах.

Woofing Giraffe
02.01.2016, 06:54
Можете написать функцию получения координат красного маркера?

By_Surse
02.01.2016, 09:27
Можете написать функцию получения координат красного маркера?


Мне тоже оч нужно

CarLCas
02.01.2016, 18:08
Мне тоже оч нужно


Типо гоночного?

Woofing Giraffe
02.01.2016, 18:09
Типо гоночного?


Ну есть обычный, есть гоночный, но в общем да. И если можно, ещё радиус бы его узнать

CarLCas
02.01.2016, 18:16
Ну есть обычный, есть гоночный, но в общем да


Это для чекпоинта по стрелкой, по моему:

C++:





[CODE]
float
pos
[
3
]
;
for
(
int
i
=
0
;
i



А это без стрелки (там в коде проверка на стандартные чекпоинты на СРП, окого гонок которые):

C++:





[CODE]
for
(
int
i
=
0
;
i

Woofing Giraffe
02.01.2016, 18:29
[QUOTE="CarLCas"]

Это для чекпоинта по стрелкой, по моему:

C++:





[CODE]
float
pos
[
3
]
;
for
(
int
i
=
0
;
i

CarLCas
03.01.2016, 21:19
Как сделать одинаковые координаты для разных экранов? Думаю поняли о чём я


Если ты про разрешение, то тебе надо сделать формулу для определения координат, с учетом максимального разрешения. (имхо)

Woofing Giraffe
04.01.2016, 00:43
Если ты про разрешение, то тебе надо сделать формулу для определения координат, с учетом максимального разрешения. (имхо)


Это типо получить разрешение и делить его?

itsLegend
04.01.2016, 02:39
SFGame convertGameCoordsToWindow( float fGX, float fGY, float *fWX, float *fWY )

0

Woofing Giraffe
04.01.2016, 13:12
Как подчинить машину? Так почему-то не работает

C++:






stInCarData sync
;
memset
(
&
sync
,
0
,
sizeof
(
stInCarData
)
)
;
sync
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
inCarData
;
sync
.
fVehicleHealth
=
1000.0
;
BitStream CarSync
;
CarSync
.
Write
(
(
BYTE
)
ID_VEHICLE_SYNC
)
;
CarSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stInCarData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
CarSync
)
;

SR_team
05.01.2016, 02:50
Как подчинить машину? Так почему-то не работает

C++:






stInCarData sync
;
memset
(
&
sync
,
0
,
sizeof
(
stInCarData
)
)
;
sync
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
inCarData
;
sync
.
fVehicleHealth
=
1000.0
;
BitStream CarSync
;
CarSync
.
Write
(
(
BYTE
)
ID_VEHICLE_SYNC
)
;
CarSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stInCarData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
CarSync
)
;





подчинить кому?

Woofing Giraffe
05.01.2016, 03:10
подчинить кому?


В которой сидит локальный игрок

itsLegend
05.01.2016, 05:24
В которой сидит локальный игрок



C++:






#include "game_api\game_api.h"
CVehicle
*
vehicle
=
PEDSELF
->
GetVehicle
(
)
;
if
(
vehicle
!=
nullptr
)
vehicle
->
SetHealth
(
1000.0
)
;

DarkExorcist
06.01.2016, 18:27
Можно ли получить скин игрока, который вне зоны стрима?

Dark_Knight
06.01.2016, 18:51
Можно ли получить скин игрока, который вне зоны стрима?


Нет.

Gabriel__
06.01.2016, 21:07
Народ помогите срочно как сделать NOP в SF плагине. Если что это исходящий RPC.

CarLCas
06.01.2016, 21:14
Народ помогите срочно как сделать NOP в SF плагине. Если что это исходящий RPC.


https://www.blast.hk/wiki/tutorials:api_lesson_raknet

Gabriel__
06.01.2016, 21:34
https://www.blast.hk/wiki/tutorials:api_lesson_raknet


Почему не блокирует ?

Код:






bool CALLBACK outcomingData(stRakNetHookParams *params) // определение callback-функции которая будет вызвана при отправке какого либо пакета
{
if (params->packetId == PacketEnumeration::ID_PLAYER_SYNC) // если отправляемый пакет ID_PLAYER_SYNC
{
return false;
};

return true; // успешно завершаем отправку пакета
};

Dark_Knight
06.01.2016, 22:38
Потому, что ты коллбек не зарегал.

Tray228
07.01.2016, 02:02
Как сделать в неведимке синхру стрима, урона, и пикапов

Gabriel__
07.01.2016, 08:32
Как объявить call-back функцию (у меня это outcoming RPC). Моя функция не вызывается вообще.

itsLegend
07.01.2016, 08:34
Как объявить call-back функцию (у меня это outcoming RPC). Моя функция не вызывается вообще.





https://www.blast.hk/wiki/tutorials:api_lesson_raknet


Тот же пример, самая последняя строчка(в перехвате пакетов).

Gabriel__
07.01.2016, 08:42
А как сделать текст разноцветным (каждое слово разноцветное) в AddChatMessage. И еще какие аргументы в этой функции. Как ей пользоваться ? Как выводить переменную типа string а не const char.

itsLegend
07.01.2016, 08:57
...

Перечитай весь урок, он не такой большой. Не ленись.

Примеры можешь и потом разобрать.

Gabriel__
07.01.2016, 09:38
...
Перечитай весь урок, он не такой большой. Не ленись.
Примеры можешь и потом разобрать.


В каком уроке ? Мне нужно вывести текст разноцветным в разных местах. В клео так можно 0AF8: samp add_message_to_chat "{FFFFFF}Hello {FFFF00}World" color -1

CarLCas
07.01.2016, 09:41
В каком уроке ? Мне нужно вывести текст разноцветным в разных местах. В клео так можно 0AF8: samp add_message_to_chat "{FFFFFF}Hello {FFFF00}World" color -1


Все уроки прочитай. Про цвет: тут тоже самое

Gabriel__
07.01.2016, 09:48
Все уроки прочитай. Про цвет: тут тоже самое


Да не нашел я!! Покажи как сделать

CarLCas
07.01.2016, 09:52
Из урока 1: SF->getSAMP()->getChat()->AddChatMessage( -1, buf ); - вывод сообщения, где "buf" - сообщение, а "-1" цвет

=> SF->getSAMP()->getChat()->AddChatMessage( -1, " Текст основным цветом (-1) {FF0000} Текст второстепенным цветом (красный = FF0000) " );

Либо невнимательно читаешь, либо ждешь что прям всё готовое будет и тебе только копировать придется

Gabriel__
07.01.2016, 17:44
Как сделать чтобы сф плагин сразу компилировался в папку с игрой. И как поменять его название.

Как сделать сканирование параметров которые я ввожу после команды

Dark_Knight
07.01.2016, 17:51
Как сделать чтобы сф плагин сразу компилировался в папку с игрой. И как поменять его название.


В настройках проекта.



Как сделать сканирование параметров которые я ввожу после команды


sscanf || regex

Для таких вопросов у тебя есть гугл.

CarLCas
07.01.2016, 17:57
Либо посмотреть предыдущие ответы в этой теме, прежде чем спрашивать

Gabriel__
07.01.2016, 18:08
В настройках проекта.

sscanf || regex

Для таких вопросов у тебя есть гугл.


Не сканируется sscanf("%d", "%d", par );

CarLCas
07.01.2016, 18:13
Не сканируется sscanf("%d", "%d", par );


float fl[2];

int integ;

sscanf(string, "%f %f %d", &fl[0], &fl[1], &integ);

Gabriel__
07.01.2016, 18:16
float fl[2];
int integ;
sscanf(string, "%f %f %d", &fl[0], &fl[1], &integ);


Для чего это &



float fl[2];
int integ;
sscanf(string, "%f %f %d", &fl[0], &fl[1], &integ);


Объясни нубу по человечески. Напиши функцию которая будет вызываться при вводе команды брать одно число типа int сохраняя в переменную prm.



float fl[2];
int integ;
sscanf(string, "%f %f %d", &fl[0], &fl[1], &integ);


int prm;

char word;

sscanf(word, "%d", prm);

не получается VS ноет про const char - это же константа бля как сюда можно что то записать

Dark_Knight
07.01.2016, 18:37
int prm;
char word;
sscanf(word, "%d", prm);
не получается VS ноет про const char - это же константа бля как сюда можно что то записать


https://www.blast.hk/data/avatars/l/62/62521.jpg?1451494577

Gabriel__
07.01.2016, 18:42
https://www.blast.hk/data/avatars/l/62/62521.jpg?1451494577


Как исправить ? const chat это текст в кавычках как я знаю.

CarLCas
07.01.2016, 18:42
int prm;
char word;
sscanf(word, "%d", prm);
не получается VS ноет про const char - это же константа бля как сюда можно что то записать


И смысл что ты из пустой переменной что-то пытаешься вытащить?

C++:






void
CALLBACK
cmd
(
std
::
string param
)
{
if
(
param
.
empty
(
)
)
return
;
if
(
sscanf
(
param
.
c_str
(
)
,
"%d"
,
&
var_int
)
)
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Enter: %d"
,
var_int
)
;
}
;




А вообще тут можно использовать atoi, про это сам читай.

И повторюсь выучи основы

Gabriel__
07.01.2016, 18:59
И смысл что ты из пустой переменной что-то пытаешься вытащить?

C++:






void
CALLBACK
cmd
(
std
::
string param
)
{
if
(
param
.
empty
(
)
)
return
;
if
(
sscanf
(
param
.
c_str
(
)
,
"%d"
,
&
var_int
)
)
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Enter: %d"
,
var_int
)
;
}
;




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


Я не понимаю зачем нужна &. Как я знаю это обращение к адресу памяти зачем это тут

Dark_Knight
07.01.2016, 19:05
Я не понимаю зачем нужна &. Как я знаю это обращение к адресу памяти зачем это тут


А как по твоему компилятор узнает куда записывать?

Gabriel__
07.01.2016, 19:11
А как по твоему компилятор узнает куда записывать?


В клео все понятно нажал alt cntrl 2 и все понятно вводишь параметры и описание есть. а в api ты даже не знаешь какие функции там существуют какой тип данных использовать. Только постоянно видишь эту ***ню (const char *) - что это такое ??? * это указатель.

int *var;

delete var;

CarLCas
07.01.2016, 19:18
В клео все понятно нажал alt cntrl 2 и все понятно вводишь параметры и описание есть. а в api ты даже не знаешь какие функции там существуют какой тип данных использовать. Только постоянно видишь эту ***ню (const char *) - что это такое ??? * это указатель.
int *var;
delete var;


Сейчас я вижу ***ню только тебя.

Если тебя интересует эти 2 строки, то 1ая это регистрирует указатель, 2ая освобождает память выделенную под указатель

В API тоже есть всё. Просто ты ещё не дошёл до того как узнать об этом

Gabriel__
07.01.2016, 20:28
А в eclipde можно открыть проект ?



Сейчас я вижу ***ню только тебя.
Если тебя интересует эти 2 строки, то 1ая это регистрирует указатель, 2ая освобождает память выделенную под указатель
В API тоже есть всё. Просто ты ещё не дошёл до того как узнать об этом


Бля я не про это

int *var;

delete var;

Я знаю это:

1. Базовые

2.Функции

3. Указатели

4.Классы

5.Создание объекта класса

6.конструктор

7.Деструктор

8.Векторы

9.fstream

Tray228
08.01.2016, 00:59
как сделать проверку на поднятие пикапа, и отправить рпц о поднятий

itsLegend
08.01.2016, 01:43
Никак, если ты его сам отправляешь(RPC).

Если "подбираешь", то должен отправляться RPC_PICKEDUPPICKUP.

Tray228
08.01.2016, 01:55
Никак, если ты его сам отправляешь(RPC).
Если "подбираешь", то должен отправляться RPC_PICKEDUPPICKUP.


Я делаю инвиз. Но, мне нужно сделать проверку на пикап то есть типо синхры пикапов

дайте параметры RPC_GIVETAKEDAMAGE

CarLCas
08.01.2016, 07:55
дайте параметры RPC_GIVETAKEDAMAGE



C++:






bool
bGiveOrTake
;
short
int
iPlayerID
;
float
fAmmount
;
int
iWeaponID
,
iBodyPart
;
params
->
bitStream
->
Read
(
bGiveOrTake
)
;
//false=give, true=take
params
->
bitStream
->
Read
(
iPlayerID
)
;
//игрок, которому наносится или от которого получается урон
params
->
bitStream
->
Read
(
fAmmount
)
;
//урон
params
->
bitStream
->
Read
(
iWeaponID
)
;
//ид оружия
params
->
bitStream
->
Read
(
iBodyPart
)
;
//часть тела

Gabriel__
08.01.2016, 12:15
Хотел найти в поиске функцию которая пишет в чат текст (другим игрокам) в поиске искал "say" и нашел функцию Say( char *msg ); но не могу понять как её вызвать. В какой цепочке она относится должна быть в SF->getSAMP()->getChat()-> и кстати как называется эта штука SF->getSAMP()->getChat()

itsLegend
08.01.2016, 12:44
SF->getSAMP()->getPlayers()->pLocalPlayer->Say

Tray228
08.01.2016, 14:27
C++:






bool
bGiveOrTake
;
short
int
iPlayerID
;
float
fAmmount
;
int
iWeaponID
,
iBodyPart
;
params
->
bitStream
->
Read
(
bGiveOrTake
)
;
//false=give, true=take
params
->
bitStream
->
Read
(
iPlayerID
)
;
//игрок, которому наносится или от которого получается урон
params
->
bitStream
->
Read
(
fAmmount
)
;
//урон
params
->
bitStream
->
Read
(
iWeaponID
)
;
//ид оружия
params
->
bitStream
->
Read
(
iBodyPart
)
;
//часть тела





это мне outcoming rpc считывать?

Gabriel__
08.01.2016, 14:35
это мне outcoming rpc считывать?


Да

Tray228
08.01.2016, 15:43
RPC_PICKEDUPPICKUP = 131 дайте его параметры пожалуйста

Gabriel__
08.01.2016, 15:47
RPC_PICKEDUPPICKUP = 131 дайте его параметры пожалуйста


Один параметр id пикапа.

Ребят скажите где находятся h файлы в DirectX SDK. Мне нужен файл d3dx9.h для настройки компилятора.