For the complete documentation index, see llms.txt. This page is also available as Markdown.

社交功能

All Out 为你提供文本聊天和可选语音聊天功能,可用于你的游戏中

阅读聊天

使用 core_globals.server_on_chat_message_received 当游戏代码需要对服务器上的普通聊天消息作出反应时:

ao_before_scene_load :: proc() {
    core_globals.server_on_chat_message_received = on_chat_message;
}

on_chat_message :: proc(player: Player, message: string) {
    log_info("% 说:%", {player.get_username(), message});
}

聊天 API 参考

Chat :: struct {
    Mode :: enum {
        DEFAULT;
        BUBBLE_ONLY;
    }

    set_mode :: proc(mode: Mode);
    server_send_message :: proc(message: string, player: Player = null);
    is_open :: proc() -> bool;
}

Chat.server_send_message 用于服务器端代码,例如聊天命令处理器。传入 player 可指定一个玩家,否则留空 null 即可广泛发送。使用 Chat.set_mode(.BUBBLE_ONLY) 在本地客户端上启用适用于想要气泡聊天而不使用标准聊天面板的游戏。

聊天命令

聊天命令主要是一个 开发者/管理员工具 用于测试和线上运维:

  • 提前开始回合 / 跳过波次

  • 发放测试物品套装或货币

  • 触发游戏事件以便调试

要创建命令,请编写一个 proc 并用 @chat_command.

玩家可以在聊天中输入带有前缀 /:

  • /start_round

  • /grant_test_loadout

  • /trigger_event meteor_shower

聊天命令在服务器上运行。使用 Notifier.notify(player, "...") 向单个玩家发送反馈。

常见开发/管理员命令

权限

使用权限注解来控制谁可以运行命令:

注解
谁可以使用

@any

所有玩家

@vip

VIP 玩家和管理员

@youtuber

YouTuber 玩家和管理员

@owner

游戏拥有者和管理员

@owner_or_editor

游戏拥有者、编辑者和管理员

(无)

仅管理员

从编辑器启动时,为了更快迭代/测试,允许使用聊天命令。

参数与可选参数

第一个参数必须始终是 Player。之后你可以添加参数(并为它们设置默认值,使其成为可选参数)。

默认情况下,命令是 仅管理员.

支持的参数类型包括 string、整数类型、浮点类型、 bool,以及 Player.

管理员可以调用:

  • /give_currency → 发放 100 枚硬币

  • /give_currency 500 → 发放 500 枚硬币

包含空格的字符串

如果字符串包含空格,请用引号将其包裹起来:

示例:

查看命令用法

玩家可以在命令后附加 ? 以查看参数信息:

启用语音聊天

玩家通过其账号和设备设置来控制语音聊天。游戏无法强制开启,也无法绕过麦克风权限、家长控制或监管限制。

语音具有位置性。默认可听范围为 10 个世界单位:

在场景启动期间设置一个正的范围:

Voice.set_range 会修改整个场景的范围。非正值将被忽略。

通信频道

每个玩家都有说话和监听掩码,这些掩码同时适用于语音和文字聊天。当发送者的说话掩码与接收者的监听掩码重叠时,两名玩家即可通信。

默认情况下,玩家在所有频道上都可以说话和监听。

监管

Out 会自动监测文字和语音聊天中违反我们 社区准则 的行为,并会对首次违规禁用社交功能,或对屡犯者施加停用处罚。

如果你看到重复的不当行为,或者有行为绕过了我们的自动检测,请使用游戏内举报系统或玩家资料页向我们举报该玩家。

如果某位玩家被误封,请引导他们前往 联系我们 以撤销该操作。

最后更新于