方法一:使用图形化触发器(适用于普通用户)

1. 创建触发器

  • 打开地图编辑器,进入触发器编辑界面。
  • 新建一个触发器,命名为“删除所有物品”。
  • 2. 设置触发器事件

  • 例如:玩家输入聊天信息“-deleteitems”,或游戏开始后特定时间触发。
  • 在事件中添加 `事件 → 玩家聊天信息` 或 `时间流逝`。
  • 3. 选取并删除物品

  • 在动作中添加:
  • Item Group

  • Pick every item in (Playable map area) and do (Actions)
  • Loop

  • Actions
  • Item

  • Remove (Picked item)
  • 此方法会删除所有“可游玩区域”内的地面物品。
  • 方法二:使用自定义脚本(覆盖整个地图)

    如果物品可能位于不可游玩区域,需通过JASS脚本覆盖整个地图:

    1. 在触发器中添加自定义脚本

  • 在动作部分插入以下代码:
  • jass

    Custom script: set bj_wantDestroyGroup = true

    Custom script: call EnumItemsInRect(GetWorldBounds, null, function RemoveItem)

  • `GetWorldBounds` 会获取地图的实际边界,确保所有物品被选中。
  • 注意事项

  • 单位携带的物品:以上方法仅删除地面物品。若需删除单位携带的物品,需遍历所有单位并执行 `丢弃物品` 后再删除。
  • 触发器冲突:删除物品可能触发其他事件(如“物品被拾取”),建议在删除前禁用相关触发器。
  • 完整脚本示例(自定义代码)

    jass

    // 触发器动作部分

    Custom script: set bj_wantDestroyGroup = true

    Custom script: call EnumItemsInRect(GetWorldBounds, null, function RemoveItem)

    通过上述方法,可安全且高效地删除地图上的所有物品。