Другое SAMPFUNCS | API C++

AWRage

Активный
642
141
По какому принципу работает "ГМ облет пуль"? или подобное :scratch:
В входящей буллет синхре изменяется оффсет или таргет, вроде.

Если я поставлю хук на D3DMETHOD_RESET, мой callback вызовется перед вызовом оригинального метода, или после него? И можно ли как-то поставить хук перед вызовом и после вызова? SFAPI
 
Последнее редактирование модератором:

BlackKnigga

Известный
BH Team
922
445
Как нажать на Player TextDraw? SF->getSAMP()->sendClickTextDraw() как я понял жмет только на обычные текстдравы.
Мне нужны те что в структуре PlayerTextdraw хранятся.


Отправил рпц, заработало.
 
Последнее редактирование:

2Shae

Известный
149
8
Делаю что-то на подобии чекера. Показ игроков при заходе на сервер/выходе с сервера отображает/сохранение новых ников в файлик работает на ура, а вот при попытке принудительно (командой/клавишей, не важно) перегрузить список (из файла) - крашит.
Крашит именно из-за этого участка кода:
Код:
if (reload == true)
{
    for (int id = 0; id <= SAMP_MAX_PLAYERS; id++)
    {
        for (int x = 1; x <= line; x++)
        {
            if (!stricmp(SF->getSAMP()->getPlayers()->GetPlayerName(id), playername[x]))
            {
                SF->getSAMP()->getChat()->AddChatMessage(-1, "Пиздюк %s[%d] подключился к серверу.", SF->getSAMP()->getPlayers()->GetPlayerName(id), id);
            }
        }
    }
    reload = false;
}
p.s. не поливайте сразу гавном :D
 
Последнее редактирование:

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,460
Есть такая штука как комментарии. С помощью них ты можешь узнать какая именно строчка является проблемной.
 

2Shae

Известный
149
8
Есть такая штука как комментарии. С помощью них ты можешь узнать какая именно строчка является проблемной.
Конечно сорян за нубский вопрос, но о чём ты? :D
Я знаю что такое комментарии, но как они помогут понять немогу.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,460
К тому, что это может быть либо addChatMessage, либо stricmp. Перед тем, как написать сюда, закомментировал тело цикла и искал бы именно проблемную функцию. Тут их уж не так и много, и предполагаю, что getPlayerName возвращает NULL и stricmp пытается прочитать нулевой указатель.
 

BlackKnigga

Известный
BH Team
922
445
Как вариант, GetAsyncKeyState
Пробовал уже, и хук ставил SetWindowsHookEx, выходит ошибка:
Код:
error LNK2019: ссылка на неразрешенный внешний символ __imp__GetAsyncKeyState@4 в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ)
Мб что то не так делаю?
C++:
if (GetAsyncKeyState(VK_TAB))
    {
        SF->Log("Tab Pressed");
    }
 

Sire Like

Blanche Bier
Друг
487
232
Пробовал уже, и хук ставил SetWindowsHookEx, выходит ошибка:
Код:
error LNK2019: ссылка на неразрешенный внешний символ __imp__GetAsyncKeyState@4 в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ)
Мб что то не так делаю?
C++:
if (GetAsyncKeyState(VK_TAB))
    {
        SF->Log("Tab Pressed");
    }
Библиотеку вруби
 
  • Нравится
Реакции: BlackKnigga

AWRage

Активный
642
141
Как проверить нажата ли клавиша при открытом чате?
Поставить хук на функцию WndProc.
Твой wndProc:

bool __stdcall wndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
return true;
}

Регистрируем callback:
SF->getGame()->registerWndProcCallback(SFGame::WndProcCallbackPriority::HIGH_CB_PRIORITY, *wndProc);

Честно, не знаю что за приоритеты в аргументе, сам уже потестишь.