2023-07-22 23:28:41 +03:00

176 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Передаваемые классы
## Стоит ознакомится
1. Что такое `*args` и `**kwargs`? -> [Пост на habr](https://habr.com/ru/companies/ruvds/articles/482464/)
## KuiToi
_`kt = KuiToi("PluginName"")`_
### kt.log
_Константа_\
Вернёт преднастроенный логгер
### kt.name
_Константа_\
Вернёт имя плагина
### kt.dir
_Константа_\
Вернёт папку плагина
### kt.open()
араметры как у open()_\
Открывает файл в kt.dir
### kt.register_event(event_name: str, event_func: function)
_`event_name: str` -> Имя ивента, по которому будет вызвана `event_func`._\
_`event_func: function` -> Функция, которая будет вызвана._
В `event_func` можно передавать как обычную функцию, так и async - await не нужно делать заранее.\
Ивенты можно создавать так же свои, со своим именем.\
Зарегистрировать можно не ограниченное кол-во ивентов.
### kt.call_event(event_name: str, *args, **kwargs) -> list:
_`event_name: str` -> Имя ивента, который будет вызван._\
_`*args, **kwargs` -> Аргументы, передаваемые во функции._
### **async** kt.call_async_event(event_name: str, *args, **kwargs) -> list:
_`event_name: str` -> Имя ивента, который будет вызван._\
_`*args, **kwargs` -> Аргументы, передаваемые во функции._\
_Необходимо вызывать с `await`_
###### _Советую ознакомиться с *args, **kwargs_, ссылка есть в начале
Данные во все ивенты приходят по типу: `{"event_name": event_name, "args": args, "kwargs": kwargs}`\
`args: list` -> Представляет из себя массив данных, которые переданы в ивент\
`kwargs: dict` -> Представляет из себя словарь данных, которые переданы в ивент
Данные вернутся от всех удачных волнений в массиве.
### kt.call_lua_event(event_name: str, *args) -> list:
_`event_name: str` -> Имя ивента, который будет вызван._\
_`*args` -> Аргументы, передаваемые во функции._
Добавлено для поддержки обратной совместимости.\
lua функция вызывается с прямой передачей аргументов `lua_func(*args)`
### kt.get_player([pid: int], [nick: str]) -> Player | None:
_`pid: int` -> Player ID - Идентификатор игрока._\
_`nick: str` -> Player Nick - Ник игрока._
Метод возвращает объект игрока по его `pid` или `nick`.\
Если не удалось найти игрока вернётся `None`.
### kt.get_players() -> List[Player] | list:
Метод возвращает массив со всеми игроками.\
Массив будет пустой, если игроков нет.
### kt.players_counter() -> int:
Метод возвращает количество игроков, которые сейчас онлайн.
### kt.is_player_connected([pid: int], [nick: str]) -> bool:
_`pid: int` -> Player ID - Идентификатор игрока._\
_`nick: str` -> Player Nick - Ник игрока._
Метод возвращает объект игрока по его `pid`, `nick`.
## Player (или Client)
_`pl = kt.get_player()`_\
_`pl = event_data['kwargs']['player']`_
### pl.log -> Logger
_Константа_\
Вернёт преднастроенный логгер
### pl.addr -> str
_Константа_\
Вернёт IP адрес игрока
### pl.pid -> int
### pl.cid -> int
_Константа_\
Вернёт id клиента _(pid: PlayerId = cid: ClientId)_
### pl.key -> str
_Константа_\
Вернёт ключ, переданный при авторизации
### pl.nick -> str
еременная_\
Ник, переданные при авторизации от сервера BeamMP, можно изменить, последствия не проверенны
### pl.roles -> str
еременная_\
Роль, переданная при авторизации от сервера BeamMP, можно изменить (Если установить не верную роль, могут происходить неожиданности.)
### pl.guest -> bool
_Константа_\
Вернёт является ли игрок гостем, передаётся при авторизации от сервера BeamMP
### pl.identifiers -> dict
_Константа_\
Идентификаторы, передаются при авторизации от сервера BeamMP.
### pl.ready -> bool
_Константа, меняется ядром_\
Вернёт bool значение, если True -> игрок скачал все ресурсы, прогрузился на карте
### pl.cars -> dict
_Константа, меняется ядром_\
Возвращает словарь автомобилей по типу:
```python
{
1: {
"packet": car_packet,
"json": car_json,
"json_ok": bool(car_json),
"snowman": snowman,
"over_spawn": (snowman and allow_snowman) or over_spawn,
"pos": {
"pos":[0,0,0],
"rvel":[0,0,0],
"rot":[0,0,0],
"vel":[0,0,0],
"tim":0,
"ping":0
}
},
2: ...
}
```
Где `1` - car_id\
Где `pkt` - Необработанный пакет который пришел от клиента (Для очень опытных пользователй) \
Где `json` - Обработанный пакет, хранящийся в виде dict\
Где `json_ok` - Смогло ли ядро обработать пакет\
Где `snowman` - Снеговик ли машина\
Где `over_spawn` - Заспавнена ли машина сверх лимита (Разрешается через плагины)\
Где `pos` - Позиция машины (Передаётся через udp)
### pl.last_position -> dict
_Константа, меняется ядром_
Возвращает последнюю позицию игрока
### **async** pl.kick([reason: str = "Kicked!"]) -> None
_`reason: str` -> Причина кика. Параметр не обязателен, по дефолту: `Kicked!`_
Кикает игрока с сервера
### **async** pl.send_message(message: str, [to_all: bool = True]) -> None
_`message: str` -> Текст сообщения, отправляется без "Server:"_
_`to_all: bool` -> Нужно ли отправить это сообщение всем? Параметр не обязателен, по дефолту: `True`_
Отправляет сообщение игроку или всем сразу
### **async** pl.send_event(event_name: str, event_data: Any, [to_all: bool = True]) -> None
_`event_name: str` -> Имя ивента, который будет вызван_
_`event_data: Any` -> Отправляемые данные в ивент._
_`to_all: bool` -> Нужно ли отправить это сообщение всем? Параметр не обязателен, по дефолту: `True`_
Отправляет ивент на клиент.\
Если event_data будет tuple, list, dict, то перед отправкой ядро конвертирует в json через json.dumps(event_data)
Иначе данные будут строкой, без регуляции;
### **async** pl.delete_car(self, car_id: int) -> None
_`car_id: int` -> Идентификатор машины_
Удалят машину у игрока