Игра

Квары

Квар — именованная настройка сервера: mp_freezetime, sv_gravity или собственная настройка плагина. Объект Cvar читает и пишет один квар:

const 
freezeTime
= new
Cvar
("mp_freezetime");
const
speed
= new
Cvar
("myplugin_speed", "250"); // создастся со значением "250", если такого квара на сервере нет
speed
.
addEventListener
("change", (
event
) => {
console
.
log
(`${
event
.
cvar
.
name
}: ${
event
.
oldValue
} -> ${
event
.
value
}`);
}); function startWarmup() {
freezeTime
.
number
= 0;
console
.
log
(`скорость ${
speed
.
number
}, текст "${
speed
.
value
}", включён: ${
speed
.
boolean
}`);
}

Как value у поля ввода, квар внутри — текст, и читать и писать его можно тремя способами:

СвойствоЧитаетПишет
valueтекст: "250"текст
numberчисло: 250число; целое пишется без дробной части ("5", а не "5.000000")
booleantrue для всего, кроме 0true как 1, false как 0

Второй аргумент new Cvar — значение по умолчанию. Если на сервере нет квара с таким именем, он создаётся с этим значением — так плагин добавляет свои настройки. Без значения по умолчанию отсутствующий квар так и остаётся отсутствующим: exists равно false, чтение даёт "", 0 и false, а запись ничего не делает.

Создавайте Cvar один раз, в начале файла, и пользуйтесь им оттуда. Cvar, созданный в начале файла, находит свой квар, когда сервер загрузит все плагины, поэтому к моменту, когда ваш код его читает, квары игры и других плагинов уже на месте.

Как узнать об изменении

addEventListener("change", listener) вызывает обработчик при каждом изменении — из консоли, через amx_cvar, из другого плагина или из этого — с event.cvar, event.oldValue и event.value (оба — текст). removeEventListener("change", listener) с той же функцией его снимает.

Плагин, который читает настройки один раз, может делать это в событии "configsExecuted", когда сервер уже выполнил свои конфиги (Плагин):

const 
reward
= new
Cvar
("myplugin_reward", "300");
let
rewardMoney
= 0;
server
.
addEventListener
("configsExecuted", () => {
rewardMoney
=
reward
.
number
;
});

Для настроек сложнее пары чисел — списков, вложенных разделов, значений под каждую карту — чаще удобнее файл конфига (Конфиги).