Игроки#
Руководство: Игроки и сервер.
Player
#
Хэндл игрока: слот + userid подключения.
На одно подключение — один объект: события, команды и нативы отдают
его же, поэтому игрока можно класть в словари и сравнивать через is.
После выхода игрока любое обращение к нему — StaleHandleError,
а не действие над тем, кто занял его слот. Данные плагина по игрокам
удобно хранить в PlayerState.
Пример#
player.print(f"!gПривет, !t{player.name}")
player.health += 25
if player.team == Team.CT and player.has_access(Access.KICK): ...
connected
#
Игрок всё ещё на сервере. После выхода любое обращение к хэндлу — StaleHandleError.
steam_id
#
SteamID (STEAM_0:1:123); до события Authorized может быть пустым или STEAM_ID_PENDING.
command
#
Выполнить команду в консоли игрока (client_cmd).
Клиент может запретить часть команд (cl_filterstuffcmd).
Пример#
kick
#
tr
#
Перевод из lang/<язык>.toml плагина на языке игрока.
Порядок поиска: язык игрока → en → любой файл → сам ключ.
Пример#
has_access
#
PlayerState
#
Данные плагина по игрокам: state[player].
Запись удаляется сама, когда игрок выходит. С factory значение
создаётся при первом обращении. С keep=True данные переживают
горячую перезагрузку плагина (переносятся через pickle).
Параметры#
factory— значение по умолчанию для нового игрока (int,list, класс).keep— сохранять данные при горячей перезагрузке.
Пример#
kills: PlayerState[int] = PlayerState(int, keep=True)
@plugin.on(events.PlayerKilled, post=True)
def count(e: events.PlayerKilled) -> None:
if e.killer is not None:
kills[e.killer] += 1
Access
#
Team
#
Команда игрока: player.team == Team.CT.
MoneyReason
#
За что меняются деньги (RewardType ReGameDLL): e.reason в events.MoneyChange.
Winner
#
Итог раунда (WinStatus ReGameDLL): e.winner в events.RoundEnd.
Entity
#
StaleHandleError
#
Игрок вышел (или сущность удалена), а хэндл всё ещё используется.
Защищает от действий над чужим игроком, занявшим тот же слот. Проверить
заранее — player.connected.