santaspeen 8fbd2cc330 [~] Update versions in req.txt
[~] Rename register_event > register
2024-07-15 11:39:31 +03:00

5.2 KiB
Raw Permalink Blame History

传递的类

值得一读

  1. 什么是“*args”和“**kwargs” -> habr上的文章 ↗

KuiToi

kt = KuiToi("PluginName"")

kt.log

常量
返回预配置的记录器

kt.name

常量
返回插件名称

kt.dir

常量
返回插件文件夹

kt.open()

与open()参数相同
在kt.dir中打开文件

kt.register(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 - 玩家昵称.

该方法通过其pidnick返回玩家对象。
如果无法找到玩家,则返回 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 - 玩家昵称.

该方法通过其pidnick返回玩家对象。

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

常量,由核心更改
返回布尔值,如果为 True-> 玩家已下载所有资源,在地图上加载

pl.cars -> dict

常量,由核心更改
按类型返回汽车字典:

{
    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.dumps(event_data) 将其转换为 json然后再发送。
否则,数据将是字符串,不受限制;

async pl.delete_car(self, car_id: int) -> None

car_id: int -> 要删除的车辆的 ID 删除玩家的车辆