Просмотр полной версии : 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, "Заголовок диалога", "ТВОЯ информация", " Закрыть ", "");
Ну ты пиздец конечно)
Код:
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
)
)
;
}
;
Не правильно вообще все делаешь. мемкопи даже не правильно вызвал.
Для цикла...
Если ты узнал, что в других потоках можно юзать sleep и это не фризит, это не значит что везде нужно создавать доп. потоки. Если ты будешь в каждый скрипт делать доп. потоки, да ещё и несколько у тебя памяти не хватит, если железо так себе конечно же.
Как увеличить дальность прорисовки ников?
Woofing Giraffe
04.10.2015, 23:30
Если ты узнал, что в других потоках можно юзать sleep и это не фризит, это не значит что везде нужно создавать доп. потоки. Если ты будешь в каждый скрипт делать доп. потоки, да ещё и несколько у тебя памяти не хватит, если железо так себе конечно же.
С железом всё нормально. В этом году ноутбук брал только. Ну а другие способы есть в таком случае?
Dark_Knight
04.10.2015, 23:34
Какой код у тебя в цикле. Я тебе покажу пример как его перенести в меинлуп.
Woofing Giraffe
05.10.2015, 00:14
Да я уже разобрался вроде. Спасибо.
Почему не выключается?
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"
)
;
}
}
Дай полный код.
Дай полный код.
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;
}
Вроде должно работать.
Код:
#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.
Всё по старому, не выключается.
Хотя, наверно я не правильно выразился...
Я пробовал выводить текст при включении и выключении, всё хорошо прошло, соответственно всё работает.
Трабла в том, что не меняется значение "value".
Нашёл интересную вещь, оно меняется на 0, если выключить данную функцию и умереть. То бишь только после смерти "value" становится 0.
это самп. даже если тебе выдаст скиллы админ, то пока ты не умрешь у тебя их не будет
Как задать игроку имунитет
Ребят, подскажите какой компилятор лучше выбрать, чтобы был максимально прост и удобен в использовании, либо что-то на свой вкус. Спасибо
Woofing Giraffe
07.10.2015, 20:45
Ребят, подскажите какой компилятор лучше выбрать, чтобы был максимально прост и удобен в использовании, либо что-то на свой вкус. Спасибо
Visual Studio 2015
Visual Studio 2015
Только 12 подойдет, нет ?
Sire Like
07.10.2015, 21:04
Ребят, подскажите какой компилятор лучше выбрать, чтобы был максимально прост и удобен в использовании, либо что-то на свой вкус. Спасибо
,
Только 12 подойдет, нет ?
Советую 2013 Ultimate, желательно с обновлением 4 или выше. ИМХО. ( Могут появится глюки с обновлением 2)
Также на всякий поставь DirectX SDK, чтоб не было лишних вопросов
А 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
;
}
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
)
;
вот и нет)
без изменений)
вот и нет)
без изменений)
Изменил
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
Циклы категорически не желательно юзать в каллбеках.
чего он флудит сразу после открытия меню. Как это исправить?
и эт, правильно я вообще сделал, а?
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 то фигура 'уезжает вниз'.
Как-то же подгоняют под все разрешения
Подскажите, как правильно рисовать?
Код:
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);
и мне надо нарисовать под ней похожую строку, но чтоб её центр находился там-же где и первой строки.
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 выводит корректно)
А ты уверен, что правильно подобрал тип переменных?
А ты уверен, что правильно подобрал тип переменных?
Насчет "time, style" - да.
Остальное - нет.
itsLegend
17.10.2015, 21:40
Насчет "time, style" - да.
Остальное - нет.
Ну значит len либо short, либо int
Ну значит 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
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.
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)
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
Придумал кто нить как эмулировать игровые клавиши?
Как сделать включение\отключение какой либо функи (AntTweakBar!!!!!)
Как сделать включение\отключение какой либо функи (AntTweakBar!!!!!)
смотри там пример в визибл
VarRW VarCB ON/OFF
смотри там пример в визибл
VarRW иVarCB ON/OFF
?
?
включить выключить поставить галочку убрать галочку смотри там пример есть Visible
включить выключить поставить галочку убрать галочку смотри там пример есть Visible
cсылку
cсылку
в проекте смотри функцию Visible там показан пример как сделано так и делай
в проекте смотри функцию Visible там показан пример как сделано так и делай
vk day v ls
vk day v ls
TwAddVarCB(vehiclemenu, "visible", TwType::TW_TYPE_BOOLCPP, callbackSetVehVisible, callbackGetVehVisible, nullptr, "label='Visible'");
это смотри в menu.cpp
TwAddVarCB(vehiclemenu, "visible", TwType::TW_TYPE_BOOLCPP, callbackSetVehVisible, callbackGetVehVisible, nullptr, "label='Visible'");
это смотри в menu.cpp
нету
нету
есть там открой menu.cpp и найди эту строку
есть там открой menu.cpp и найди эту строку
У меня код переделан
если переделан добавь строку в menu.cpp если ее нет
У меня код переделан
добавь в menu.cpp если нету
ПРИМЕР:
Добавить:
в 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();
}
Как поставить музыку в плагин?
Sire Like
28.10.2015, 22:01
Как поставить музыку в плагин?
Какую еще музыку?
GAME-> ...
там что-то с музыкой.
Какую еще музыку?
GAME-> ...
там что-то с музыкой.
Например которая у меня на компе
Как поставить музыку в плагин?
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 как в клео
Чет не компилит даже)
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
)
;
}
Вроде так,хз
Вроде так,хз
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
)
;
}
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 тип как и параметр метода, но позиция то не вектор, вообщем запутался уже, хелп.
Придумал кто нить как эмулировать игровые клавиши?
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 месяцев спрашиваю про альтернативу этой функции
Ты сам лично проверял эту функцию? Пробовал уже не раз, и с виртуальными клавишами, и с игровыми, статус нажатия тоже перебробовал разные, не работает, уже на протяжении 4 месяцев спрашиваю про альтернативу этой функции
а тогда хз, я не разу не юзил её, думал ты не знаешь про нее :D
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
Возможно ли организовать удаление последней строки из чата? И как получить текущий скин?
Какой класс меняет SKIN нашему игроку
Dark_Knight
05.11.2015, 16:00
Ракнет и хуки
Ракнет и хуки
Мне визуально
Woofing Giraffe
05.11.2015, 19:50
Мне визуально
Это и так будет визуально. Чтоб забагать себе нормальный, надо найти недочёт в системе
на вики посмотри, там уже готовый код есть
https://www.blast.hk/wiki/tutorials:api_lesson_raknet
https://www.blast.hk/wiki/tutorials:api_lesson_raknet
какой из них
Dark_Knight
06.11.2015, 21:11
какой из них
Такой. Переведи слово "Hook" и узнаешь.
Woofing Giraffe
09.11.2015, 00:58
Как проверить, находится ли на месте водителя локальный игрок?
Как создать объект (например пикап адреналина)
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
)
;
Для объектов будет другой вызов.
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.
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);
единственное не понял куда это сувать
CPickups::CreatePickup(CVector * position, DWORD ModelIndex, ePickupType Type = PICKUP_ONCE, DWORD dwMonetaryValue = 0, DWORD dwMoneyPerDay = 0, BYTE bPingOutOfPlayer = 0);
единственное не понял куда это сувать
Никуда, это просто описание функции, какие ей нужны параметры и какие ставятся по дефолту, если они не указаны
Я так понял, что это антиразброс
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
[QUOTE="CarLCas"]
Я так понял, что это антиразброс
C++:
[CODE]
for
(
int
gun
=
23
;
gun
Если не трудно, объясни пожалуйста каждую строку)
то есть как ты получил адреса памяти.
Вот адреса (https://www.blast.hk/redirect/aHR0cDovL2d0YW1vZGRpbmcucnUvd2lraS8lRDAlOTAlRDAlQj QlRDElODAlRDAlQjUlRDElODElRDAlQjBfJUQwJTlGJUQwJUIw JUQwJUJDJUQxJThGJUQxJTgyJUQwJUI4XyhTQSkjV0VBUE9OLk RBVA)
1) Цикл перебора оружия, тут он начинается с 23 ида (пист. с глушителем, по моему) и до 31 ида
2) После высчитываем индекс элемента (ид_оружия+скилл_уровень ( в данном случаем PRO=36) ), учитываем, что элемент по 0х70 байт (индекс * 0х70 ) , прибавляем начало блока и нужное смещение, записываем нужные нам данные
Как вызвать анимку например: "M_smk_in" IFP "SMOKING"
Пытался перевести админ чекер на сф апи, не получилось.
Скажите пожалуйста что тут не так?
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
Потому что гавно чекер
дайте пожалуйста аргументы этому 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);
Как вызвать анимку например: "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 - беск. анимация
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
Пока запрос обработается сервером может пройти небольшое время.
Пока запрос обработается сервером может пройти небольшое время.
мне нужно ставить задержку?
itsLegend
18.11.2015, 00:35
Проверяй позицию пикапа с позицией игрока(лучше радиусом)
Проверяй позицию пикапа с позицией игрока(лучше радиусом)
можно пример?
Dark_Knight
18.11.2015, 01:02
if()
{}
else
{}
как сделать что бы отнималось число по одному от 300.
Dark_Knight
18.11.2015, 01:22
for(int i = 300; i = 0;i--)
{}
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);
Такая проблема, мне нужно чтоб выводилось 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
;
}
Такая проблема, мне нужно чтоб выводилось 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, вот и требуется время чтобы пакет дошёл
как узнать цвет сообщения который мне посылает сервер
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() в мейн.спп
Код:
params->bitStream->Read(color);
Ты же вот читаешь
А какой индефикатор?
Dark_Knight
19.11.2015, 16:11
Какой индефикатор?
Какой индефикатор?
Мне нужно вывести цвет в чат ( то есть узнать цвет чата который мне отсылает сервер)
Sire Like
19.11.2015, 16:48
Лови хуком, потом форматируй строку с цветом, вроде изи
Мне нужно вывести цвет в чат ( то есть узнать цвет чата который мне отсылает сервер)
Ов
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
Как проверить, подключен игрок с определенным идом к серверу или нет?
Как проверить, подключен игрок с определенным идом к серверу или нет?
stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[ ID ];
if(!pPlayer)
return;
как брать строку из чата, перед новой строкой
Woofing Giraffe
21.11.2015, 22:57
SF->getSAMP()->getChat()->chatEntry[98]. и далее
Как телепортировать игрока к себе
Как телепортировать игрока к себе
Либо меняй позицию этого игрока через OnFootData , но это ты будет визуально, либо как в собах и т.п. сделать, ты должен быть в машине, пишешь позицию в InCarData с координатами, того кого тебе надо со смещением, а вообще можешь найти исходник и посмотреть
как сделать команду с двумя параметрами, но что бы в каждом параметре был пробел?
что то вроде этого - /cmd параметр один; параметр два;
Dark_Knight
23.11.2015, 13:19
Как вариант sscanf. Так же можно регулярные выражения применить.
Хотелось бы при активации функции ( на клавишу ) менять цвет текста. Всё готово, но с цветом так и не сделал.
Объявляем переменную
Код:
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;
}
как сделать команду с двумя параметрами, но что бы в каждом параметре был пробел?
что то вроде этого - /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
Это длина векторов.
Да я уже понял, спасибо)
Возможно ли средствами SFAPI получить /fontsize (чата)?
Woofing Giraffe
30.11.2015, 19:21
Как узнать что определённый ID отключился от сервера?
Как узнать что определённый 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);
Как сделать чтобы при выключенном чате работал радар.
Как сделать чтобы при выключенном чате работал радар.
Нопишь функцию скрытия радары из сампа и все
Нопишь функцию скрытия радары из сампа и все
а как называется?
как сделать передвижение текста по всему экрану
Dark_Knight
06.12.2015, 01:58
Смотря как тебе нужно.
Смотря как тебе нужно.
ну как у наруто
как изменить название серверного диалога?
пример, если можно.
Woofing Giraffe
07.12.2015, 01:05
как изменить название серверного диалога?
пример, если можно.
По идее хуком можно.
Можно ли как то проверить что команда отправлена на сервер? Т.е. он её не прервал. Пример: На сервере есть команда /id. Если прописать её без ника то она не выполниться. О том что можно поставить условие что оно нашло ник я знаю. А есть другие способы?
By_Surse
13.12.2015, 13:36
Как получить координаты маркера?
Как брать строку из чата, игрока по ID
Например Vasya_Pupkin: слово "Машина" ( то есть копировать слова после ":")
Мне нужно скопировать сообщения из чата без имени игрока. Только слова которые он написал.
И еще отправить ему это слово прямо в смс.
Dark_Knight
15.12.2015, 22:57
Как вариант, регулярные выражения. Для ознакомления (https://www.blast.hk/redirect/aHR0cHM6Ly95YWRpLnNrL2kvVjV3Z3pkdGRtRlpGeQ).
Как вариант, регулярные выражения.
То есть?
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)
Как брать строку из чата, игрока по ID
Например Vasya_Pupkin: слово "Машина" ( то есть копировать слова после ":")
Мне нужно скопировать сообщения из чата без имени игрока. Только слова которые он написал.
И еще отправить ему это слово прямо в смс.
Как вариант (https://www.blast.hk/redirect/aHR0cDovL2NwcHN0dWRpby5jb20vcG9zdC83NDcv)
как сделать проверку на анимку и заблокировать ее?
Dark_Knight
19.12.2015, 18:30
как сделать проверку на анимку и заблокировать ее?
Чекаешь анимку через хук и возращаешь фалсе.
Чекаешь анимку через хук и возращаешь фалсе.
хук или структура какая
Как сделать такую вещь. Как у наруто, что бы текст передвигать по экрану
Woofing Giraffe
21.12.2015, 18:15
Возможно ли перехватить пакет отправленный серверу и заблокировать его?
Возможно ли перехватить пакет отправленный серверу и заблокировать его?
Возможно.
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
Можете написать функцию получения координат красного маркера?
Мне тоже оч нужно
Мне тоже оч нужно
Типо гоночного?
Woofing Giraffe
02.01.2016, 18:09
Типо гоночного?
Ну есть обычный, есть гоночный, но в общем да. И если можно, ещё радиус бы его узнать
Ну есть обычный, есть гоночный, но в общем да
Это для чекпоинта по стрелкой, по моему:
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
Как сделать одинаковые координаты для разных экранов? Думаю поняли о чём я
Если ты про разрешение, то тебе надо сделать формулу для определения координат, с учетом максимального разрешения. (имхо)
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
)
;
Как подчинить машину? Так почему-то не работает
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.
Народ помогите срочно как сделать 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
Потому, что ты коллбек не зарегал.
Как сделать в неведимке синхру стрима, урона, и пикапов
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
В каком уроке ? Мне нужно вывести текст разноцветным в разных местах. В клео так можно 0AF8: samp add_message_to_chat "{FFFFFF}Hello {FFFF00}World" color -1
Все уроки прочитай. Про цвет: тут тоже самое
Gabriel__
07.01.2016, 09:48
Все уроки прочитай. Про цвет: тут тоже самое
Да не нашел я!! Покажи как сделать
Из урока 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
Для таких вопросов у тебя есть гугл.
Либо посмотреть предыдущие ответы в этой теме, прежде чем спрашивать
Gabriel__
07.01.2016, 18:08
В настройках проекта.
sscanf || regex
Для таких вопросов у тебя есть гугл.
Не сканируется sscanf("%d", "%d", par );
Не сканируется 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 это текст в кавычках как я знаю.
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;
В клео все понятно нажал 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
как сделать проверку на поднятие пикапа, и отправить рпц о поднятий
itsLegend
08.01.2016, 01:43
Никак, если ты его сам отправляешь(RPC).
Если "подбираешь", то должен отправляться RPC_PICKEDUPPICKUP.
Никак, если ты его сам отправляешь(RPC).
Если "подбираешь", то должен отправляться RPC_PICKEDUPPICKUP.
Я делаю инвиз. Но, мне нужно сделать проверку на пикап то есть типо синхры пикапов
дайте параметры RPC_GIVETAKEDAMAGE
дайте параметры 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
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 считывать?
Да
RPC_PICKEDUPPICKUP = 131 дайте его параметры пожалуйста
Gabriel__
08.01.2016, 15:47
RPC_PICKEDUPPICKUP = 131 дайте его параметры пожалуйста
Один параметр id пикапа.
Ребят скажите где находятся h файлы в DirectX SDK. Мне нужен файл d3dx9.h для настройки компилятора.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot