Игра

Флаги

Часть данных игры — набор флагов «включено/выключено»: какие кнопки держит игрок, какие части HUD скрыты, стоит ли сущность на земле. В плагине такой набор — массив имён:

function hideMoney(
player
: Player) {
player
.
hideHud
= ["money", "timer"]; // ровно эти
player
.
hideHud
.
push
("flashlight"); // добавить один
const
hidden
=
player
.
hideHud
.
includes
("money"); // проверить один
player
.
hideHud
=
player
.
hideHud
.
filter
((
f
) =>
f
!= "money"); // убрать один
player
.
hideHud
= []; // сбросить все
const
jumping
=
player
.
buttons
.
includes
("jump");
const
onGround
=
player
.
flags
.
includes
("onGround");
console
.
log
(`${
hidden
} ${
jumping
} ${
onGround
}`);
}

Имена — закрытый список: редактор их подсказывает и не пропускает опечатку: Type '"mony"' is not assignable to type 'HideHud'. Did you mean '"money"'?

  • Чтение даёт массив включённых флагов в постоянном порядке — не в том, в каком их добавляли.
  • Присваивание массива включает ровно эти флаги.
  • push сразу включает в игре ещё один флаг.
  • Чтобы выключить флаг, присвойте отфильтрованный массив. pop, splice и другие методы массива меняют только сам массив, а не игру.

Свойства-флаги

СвойствоУ когоИмена
flagsEntityEntityFlag: "onGround", "client", "inWater", "fly", "ducking", "fakeClient", "frozen", "godMode", …
effectsEntityEffect: "noDraw", "dimLight", "brightLight", "muzzleFlash", …
buttons, oldButtonsEntityButton: "attack", "attack2", "jump", "duck", "forward", "back", "use", "reload", "score", …
weaponsEntityWeaponKind: "knife", "usp", "ak47", … — оружие, которое несёт игрок, в тех же именах, что weapon.kind
buttonLast, buttonPressed, buttonReleasedPlayerButton: что было зажато в прошлом кадре, что нажато и что отпущено в этом
hideHud, hideHudSentPlayerHideHud: "weapons", "flashlight", "all", "health", "timer", "money", "crosshair", "observerCrosshair"
damageTypePlayerDamage: "fall", "burn", "freeze", "bullet", "blast", …
physicsFlagsPlayerPhysicsFlag: "onLadder", "onTrain", "onBarnacle", "ducking", "using", "observer"
weaponStateWeaponWeaponState: "uspSilenced", "glock18Burst", "m4a1Silenced", "eliteLeft", "famasBurst", "shieldDrawn"

Типы экспортируются из @amxts/core — для параметра своей функции: function press(player: Player, button: Button). Права админа — тоже массив имён: player.access, тип Access (команды).

Присваивание weapons меняет только сам список, а не то, что у игрока в руках и в инвентаре: выдать оружие — player.give("weapon_ak47") (Игроки).

hideHud игра отправляет клиенту игрока в следующем кадре. Скрыть части HUD сразу — player.screen.hideHud(["money"]) (Игроки).