Запрет 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 — уже нет.