> For the complete documentation index, see [llms.txt](https://docs.allout.game/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.allout.game/all-out-docs/docs-zh/bian-xian/in-game-ads.md).

# 游戏内广告

All Out 允许开发者在游戏中向玩家展示广告

### 奖励广告

奖励广告是可选广告，玩家可以观看它们来在你的游戏中赚取一些东西。例如，你可以设置一个奖品转盘，玩家通过观看广告来旋转，有机会在游戏中获得额外的金币或道具。

#### 创作者收益

你的游戏可获得 **每完成一个移动端奖励广告可获得 2 Sparks** 一旦 All Out 收到广告提供商确认的完成信息。这包括由你的游戏请求的奖励广告，以及为兑换支持广告的游戏道具而观看的广告。Sparks 会自动添加到你的 **游戏 Spark 余额**，与您给予玩家的奖励分开。

打开你游戏的 **变现** 页面查看 **广告收益**、已完成广告和每日广告 Sparks。使用与你的产品报告相同的日期筛选条件。即使你没有付费产品，广告收益也会计入游戏余额。

这些是在正常提现费用之前的总收益。例如，10 个已完成广告可获得 20 Sparks；提现这 20 Sparks 后，扣除费用后会向收款人发送 14 Sparks。参见 [Spark 提现](/all-out-docs/docs-zh/bian-xian/spark-withdrawals.md).

在启用此功能后收到的已验证完成才开始计入。更早的广告观看不会回填。浏览器广告、插屏广告、草稿游戏以及 All Out 的全局每日转盘广告不会获得这些游戏积分。

#### API 参考

```go
Ads :: struct {
    prompt_rewarded_ad :: proc(
        player: Player,
        reward_id: string,
        title: string,
        description: string,
        texture: Texture_Asset
    );

    is_ad_showing :: proc() -> bool;
}
```

使用一个稳定的 `reward_id` 用于每个奖励。仅从 `ao_ads_reward_handler`中发放奖励，该处理程序在平台报告奖励广告完成后运行：

```go
show_coin_ad :: proc(player: Player) {
    if Ads.is_ad_showing() return;

    icon := get_asset(Texture_Asset, "ui/coin.png");
    Ads.prompt_rewarded_ad(
        player,
        "coins_100",
        "获得 100 枚金币",
        "观看广告可获得 100 枚金币。",
        icon
    );
}

ao_ads_reward_handler :: proc(player: Player, reward_id: string) -> bool {
    if reward_id != "coins_100" return false;

    Economy.deposit_currency(player, "Coins", 100);
    return true;
}
```

使用此示例前先注册该货币；参见 [Economy](/all-out-docs/docs-zh/shu-ju-yu-chi-jiu-hua/economy.md). 返回 `true` 仅在奖励已发放后返回。 `false` 用于未知 ID，或无法完成发放时。

### 插屏广告

插屏广告会在轮次之间或游戏活动低谷期间展示，以产生收入，但不会直接奖励玩家。

例如，你可以在《Murder Mystery》的每一轮结束后展示插屏广告，因为玩家本来就要等待下一轮开始。
