Исходник Софт [Server] Pawn.Query (SAMP query mechanism)

oukibt

Участник
Автор темы
29
31
1. Описание:

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

- Плагин может перехватывать такие запросы, как:
  • Players List
  • Server Information
  • Detailed Player List
  • Server Rules
  • Ping

Изменять данные вы сможете напрямую с помощью новых нативных функций.

1.1 Enums ( Энумераторы )
C++:
enum Query_HookType
{
    QHOOK_INFO,
    QHOOK_RULES,
    QHOOK_PLAYERS,
    QHOOK_DETAILED_PLAYERS,
    QHOOK_PING,
};
Используется в функции EnableHookQuery для передачи типа хука



C++:
enum Query_Players
{
    PQ_pName[MAX_PLAYER_NAME],
    PQ_pScore,
};
Используется для формирования массива игроков



C++:
enum Query_DetailedPlayers
{
    PQ_dID,
    PQ_dName[MAX_PLAYER_NAME],
    PQ_dScore,
    PQ_dPing,
};
Используется для формирования массива игроков (детально)



C++:
enum Query_Rules
{
    PQ_rName[MAX_RULE_LENGTH],
    PQ_rValue[MAX_RULE_LENGTH],
};
Используется для формирования массива серверных правил

1.2 Функции

C++:
native EnableHookQuery(Query_HookType: Type, bool: enable);
Аргументы:

Query_HookType: Type // Тип запроса для установки перехвата
bool: enable // true, чтобы начать перехват | false, чтобы завершить перехват

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



C++:
native SetServerPlayers(const Players[][Query_Players], const size = sizeof Players);
Добавляет игроков на сервер, которые были записаны в массив.



C++:
native SetServerRules(const Rules[][Query_Rules], const size = sizeof Rules);
Устанавливает правила сервера, которые были записаны в массив.



C++:
native SetServerInformation(bool: havePassword, MaxPlayers, const hostname[], const gamemode[], const language[]);
Устанавливает информацию о сервере.



C++:
native SetServerDetailedPlayers(const DetailedPlayers[][Query_DetailedPlayers], const size = sizeof DetailedPlayers);
Отправка подробных данных об игроках, которые были записаны в массив.



C++:
native SendPing(bool: send);
Этой функцией можно приостановить или возобносить отправку пинга.

1.3 Пример

C++:
#include <a_samp>
#include <Pawn.Query>

main() {}

public OnGameModeInit()
{
    for (new i = 0; i < Query_HookType; i++)
    {
        EnableHookQuery(Query_HookType: i, true);
        // Перехватываем все возможные типы
    }

    new Players[][Query_Players] = {

        { "Dan", 15 },
        { "Mike", 25 },
        { "Naruto", 50 },
        { "Sakura", 200 }
    };

    SetServerPlayers(Players); // Устанавливаем игроков

    //////////////////////////////////////////

    new Rules[][Query_Rules] = {

        { "Rule 1", "Don't cheating" },
        { "Rule 2", "Don't scam" },
        { "Rule 3..?", "No, it enough" }
    };

    SetServerRules(Rules); // Устанавливаем свои правила

    //////////////////////////////////////////

    SetServerInformation(true, 228, "Shippuden", "Just gamemode", "Doesn't matter");

    //////////////////////////////////////////

    SendPing(false); // Приостанавливаем отправку пинга

    return 1;
}

На выходе получится примерно вот так

Изображение


Вики:
https://github.com/o...Pawn.Query/wiki

2. Скачать:
https://github.com/o....Query/releases

Исходный код:
https://github.com/oukibt/Pawn.Query/