if (SF->getGame()->isKeyPressed(0x31))
{
SF->getSAMP()->getInput()->EnableInput();
SF->getSAMP()->getChat()->SetChatInputText(text here);
}
SF->getSAMP()->getPlayers()->pLocalPlayer->Say();Вопрос по чата, хочу отправить сообщение в чат чтоб все видели.
Я вот нашел метод SF->getSAMP()->getChat()->AddChatMessage(), но я так понял это сообщение вижу только я.
SF->getSAMP()->getChat()->SetChatInputText(); но он вставляет в инпут чата данные, а как их отправить в чат?
И сразу вопрос, как можно отследить какая клавиша нажата?
Вот к примеру я сделаю SF->getGame()->isKeyPressed('W') && SF->getGame()->isKeyPressed('E') в одном условном блоке, я внутри смогу как то узнать какая именно клавиша была нажата?
Нет такой функции.SF->getSAMP()->getPlayers()->pLocalPlayer->Say();
if(key_pressed(W) && key_pressed(E))
}
if (SF->getGame()->isKeyPressed(0x31)) //нажимаю на 1
{
SF->getSAMP()->getChat()->SetChatInputText("text here");
SF->getSAMP()->getInput()->EnableInput();
}
То, что ты делаешь через InputBox полнейшая хрень. Есть функция Say и её используют для отправки сообщения или команды.Нет такой функции.
Может кто по поводу SF->getSAMP()->getInput()->EnableInput() всё же может кто подсказать?
Короче что происходит:
В итоге в чат идет text here1 и потом когда я нажимаю 1 во второй раз ничего не происходит, а когда в третий - уже снова идет вызов, такое чувство что из-за того что цифра 1 идет в чат не отпраляется событие keydown и только при 2 нажатии оно отправляется и выходит что на 3 раз уже при нажатии на 1 всё работает, как от этого избавиться?C++:if (SF->getGame()->isKeyPressed(0x31)) //нажимаю на 1 { SF->getSAMP()->getChat()->SetChatInputText("text here"); SF->getSAMP()->getInput()->EnableInput(); }
Может есть ещё способ отслеживать нажатие клавиши и чтоб она в чат не шла?
UPD. Отправку цифры 1 в чат убрал через эмуляцию нажатия backspace, а вот почему после вызова EnableInput не работает снова вызов на цифру 1 пока не могу понять
вангуем же,можно ли в .sf использовать библиотеку sqlite?
А при чем тут это? Мне надо чтобы текст вставлялся в инпут без отправки, чтоб дальше можно было дописать ID и отправить. Я вроде как с этим уже разобрался.То, что ты делаешь через InputBox полнейшая хрень. Есть функция Say и её используют для отправки сообщения или команды.
позже сам попробую, через час отпишу, глянувот примерно такое
сначала написал простое подключение к бд - скрипт не работает в игре,потом просто вывод версии библиотеки - тоже не работает, мож я чего-то не понимаю ?C++:#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS #include <windows.h> #include <string> #include <assert.h> #include <process.h> #include "sqlite3.h" #include "SAMPFUNCS_API.h" #include "game_api\game_api.h" SAMPFUNCS *SF = new SAMPFUNCS(); void CALLBACK mainloop() { static bool init = false; if (!init) { if (GAME == nullptr) return; if ( GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME ) return; if (!SF->getSAMP()->IsInitialized()) return ; SF->getSAMP()->getChat()->AddChatMessage(-1, sqlite3_libversion()); init = true; } } BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved) { switch (dwReasonForCall) { case DLL_PROCESS_ATTACH: SF->initPlugin(mainloop, hModule); break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; }
в логах ничего интересного
ага, хуков вытаскивай данные.C++:SF->getSAMP()->getDialog()->ShowDialog(1, DIALOG_STYLE_INPUT, "Введите ID", "", "Ок", "Отмена");
от сюда только хуком вытаскивать данные? или можно как то иначе?
и ещё вопрос сразу , как организовать свой диалог с вводом данных?
мне чисто в теории
Ну в моде проверка, так что нет.Можно ли как-то использовать команду, которая недоступна для твоего ранга/фракции на сервере? Ну или хотя бы считать содержимое диалога, не открывая его (опять же из-за того, что ранг/фракция не та).