ncux0Zz, читать инклуды не можно, а нужно - в них описаны нативы и форварды, а также параметры, которые передаются вместе с функциями.
Функция "plugin_init" имеет тип "forward", функции такого типа вызываются из модулей metamod/либо из других плагинов (есть возможность создавать их с помощью функции "CreateMultiForward" и вызвать через "ExecuteForward", но это уже совсем другая история). То есть они в основном просто вызываются в определенный момент и могут передавать какие-то параметры (plugin_init ничего не передает, читай параметры).
А вот функции типа "native" ты уже используешь в нужный момент события (в том же форварде, например), передавая свои данные, а не используя пришедшие, как в форварде.
Например, при старте сервера вызывается форвард plugin_init:
Код:
public plugin_init()
{
// code
}
Имеем следующий натив (простой элементарный пример):
Код:
/**
* Sets informations about the calling plugin.
*
* @param plugin_name Name of the plugin
* @param version Version of the plugin
* @param author Author of the plugin
*
* @return Plugin id of the calling plugin
*/
native register_plugin(const plugin_name[], const version[], const author[]);
Из описания натива мы понимаем, что он "регистрирует" плагин и должен передавать три параметра:
1. Название плагина
2. Версия плагина
3. Автор плагина
Все три параметра имеют тип "string".
Используя полученные знания применяем их на практике:
Код:
#include <amxmodx> // Подключаем библиотеку amxmodx, ибо используемый форвард и натив описаны именно там
public plugin_init() // Ловим в своём плагине вызов форварда
{
register_plugin("Name Plugin", "ver. 1.0", "6u3oH"); // Натив, регистрирующий плагин (параметры описал выше)
}
Компилируем, закидываем на сервер, запускаем сервер/меняем карту, вводим в консоль сервера команду "amxx plugins" (без кавычек), которая выводит список плагинов и смотрим в списке плагинов свой (смотри во вложении результат).
То есть цепочка такова: ловим нужное событие (plugin_init) - выполняем свои действия (register_plugin). Таким образом всё в павне и происходит.
22 Фев 2022
Всё равно спасибо, читаю сижу. Почему-то отличаются инклуды с Гитхаба и те, которые скачал для компиляции вместе с Амх модом.
Могут быть разные версии, либо ты просто не нашёл.
Внутри не нашёл client_disconnected, а на Гитхабе есть описание. Конечно по переводу логично что происходит, но всё же странно.
Возможно, у тебя старая версия, где событие имело имя "client_disconnect". В версии >= 1.9.0 всё на месте:
Код:
/**
* Called when a client is disconnected from the server.
*
* @note This will be called in some additional cases that client_disconnect doesn't cover,
* most notably when a client aborts the connection process. It is guaranteed to pair
* with the client_connect() forward.
* @note When this fires the player entity is still valid (e.g. is_user_connected(id) will
* return true), but no networked commands will reach the client.
*
* @param id Client index
* @param drop If true, the game has explicitly dropped the client
* @param message If drop is true, a writable buffer containing the disconnect info message
* @param maxlen Maximum size of buffer
*
* @noreturn
*/
forward client_disconnected(id, bool:drop, message[], maxlen);