Создаем квары с AMXX 1.9 без головной боли

Сообщения
8
Реакции
10
Обновление на AMXX принесло множество полезных функций, которые не все многие еще не используют.

Код:
native create_cvar(const name[], const string[], flags = FCVAR_NONE, const description[] = "", bool:has_min = false, Float:min_val = 0.0, bool:has_max = false, Float:max_val = 0.0);
const name[]Задает имя квара, используйте латиницуСтрока
const string[]Значение переменнойСтрока
flags = FCVAR_NONEУказываем флаги для квара, описание будет нижеФлаги будут указаны ниже
const description[] = ""Задаем описание для конфигаСтрока
bool:has_min = falseУказываем, есть ли у квара минимальное значениеЕсли имеется - true | Если отсутствует - false
Float:min_val = 0.0Указываем это значение, если оно естьДаже если значение целое число, указывать 40.0
bool:has_max = falseУказываем, есть ли у квара максимальное значениеЕсли имеется - true | Если отсутствует - false
Float:max_val = 0.0Указываем это значение, если оно естьДаже если значение целое число, указывать 40.0
FCVAR_NONEНет особого поведения
FCVAR_ARCHIVEКвар будет сохранен в vars.rc
FCVAR_USERINFOПользовательские
FCVAR_SERVERИгроки получат информацию о том, что данный квар изменялся
FCVAR_PROTECTEDЗащищенный квар, используйте для паролей и того, что лучше лишний раз не показывать
FCVAR_NOEXTRAWHITEPACEУдаляет пробелы в начале и конце
FCVAR_PRINTABLEONLYНе может содержать непечатаемые символы (Смайлы, как пример)
FCVAR_UNLOGGEDИзменение квара не будет отображаться в логах

Если необходимо использовать несколько флагов, то используйте |
Код:
FCVAR_PROTECTED|FCVAR_NOEXTRAWHITEPACE

Для того, чтобы связать значение квара и переменной, нужно воспользоваться функцией

bind_pcvar_numДля целых чисел
bind_pcvar_floatДля число с плавающей запятой
bind_pcvar_stringДля строковых значений

Теперь, когда квар создан и мы связали его с переменной, можно сделать автоматическое создание конфига, для этого используется функция

Дополнено w0w: в AutoExecConfig лучше указывать аргументы, иначе потом могут быть проблемы с созданием конфига.


Код:
native AutoExecConfig(bool:autoCreate = true, const name[] = "", const folder[] = "");
bool:autoCreateЕсли стоит true, то создаст конфиг с кварами, которые мы создали выше
const name[]Название конфига (не указывайте расширение файла), если не указано, то создаст plugin.filename.cfg
const folder[]Папка для конфига. Все конфиги будут находиться в configs/plugins


Ну и пример использования плагина с данными функциями


Код:
#include <amxmodx>

new value;

public plugin_init() {
    register_plugin("Example", "DEV-CS.RU", "AlexandrFiner");
   
    new cvar = create_cvar(
        "val", // Квар
        "400", // Значение по умолчанию
        .has_min = true, // У этого квара есть минимальное значение
        .min_val = 1.0, // Само значение
        .description = "Просто квар" // Это описание
    );
    bind_pcvar_num(cvar, value); // Связываем переменную и квар
    AutoExecConfig(); // Автоматический конфиг
   
    register_clcmd("say /show", "Command_Show");
}   

public Command_Show(id) {
    client_print(id, print_chat, "Значение квара val - %d", value);
    return PLUGIN_HANDLED;
}

// This file was auto-generated by AMX Mod X (v1.9.0.5241)
// Cvars for plugin "Example" by "AlexandrFiner" (reapi_speed.amxx, DEV-CS.RU)


// Просто квар
// -
// Default: "400"
// Minimum: "1.000000"
val "400"
 

Вложения

Последнее редактирование:
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
Стоит отметить, что есть ещё bind_pcvar_string и то что в AutoExecConfig лучше указывать аргументы, иначе потом могут быть проблемы с созданием конфига.
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
Спасибо за статью, есть несколько мелких недочётов, а в целом, материал полезный для новичков. :good2:
 
Сообщения
58
Реакции
25
Помог
4 раз(а)
А возможно каким-то образом через AutoExecConfig сделать чтобы конфиг создавался в директории configs, а не в configs/plugins?
 
  • Нравится
Реакции: Nlm
Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
xramer, суть как раз в том чтобы создавалось в папке чтобы иметь все конфиги с кварами плагинов там, но если хотите ухудшить то вот:
AutoExecConfig(true, "../test_config");
 

d3m37r4

111111
Сообщения
1,451
Реакции
1,177
Помог
10 раз(а)
w0w, exec cstrike/addons/amxmodx/configs/plugins/../test_config .cfg: invalid path. словишь в таком случае, хотя конфиг создастся.
 
Сообщения
144
Реакции
276
Помог
1 раз(а)
Без головной боли, вот: https://c-s.net.ua/forum/topic88535.html

Один файл конфигурации для всех плагинов и никакого геморроя с подключением кваров. Больше не нужно бегать и вспоминать, в каком файле и какие настройки, указывать данные для подключения к тому же MySQL в разных плагнинах, и.т.д. Всё централизованно.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу