Перейти к содержанию

Запрет AWP#

Покупка AWP отменяется в pre-фазе BuyWeapon — до того, как игра спишет деньги. Админы с флагом t покупать могут, если включён cvar noawp_admins.

examples/plugins/no_awp.py
"""Запрет AWP: покупка отменяется до списания денег, кроме админов с флагом t."""

from amxpy import Access, Config, Plugin, cvar, events

plugin = Plugin("No AWP", version="1.0.0", author="amxpy")


class Settings(Config, prefix="noawp_"):
    admins: bool = cvar(True, "Разрешить AWP админам с флагом t")


cfg = plugin.include(Settings())


@plugin.on(events.BuyWeapon)
def no_awp(e: events.BuyWeapon) -> None:
    if e.weapon != "awp":
        return
    if cfg.admins and e.player.has_access(Access.LEVEL_H):
        return
    e.player.print("!tAWP на сервере запрещена")
    e.cancel()

Как это работает#

  • BuyWeapon требует ReGameDLL; e.weapon — имя без префикса weapon_: awp, ak47, shield.
  • e.cancel() в pre — покупки не будет, деньги останутся у игрока.
  • Access.LEVEL_H — флаг t из users.ini.

Что проверяют тесты#

server.load(EXAMPLES / "no_awp.py")
bob = server.join("Bob", money=5000)
assert server.buy(bob, "awp", price=4750) is False
assert bob.money == 5000 and bob.last_chat == "AWP на сервере запрещена"

Ещё: AK-47 покупается, админ с флагом t покупает AWP, а с noawp_admins 0 — уже нет.