Token导航 LogoToken导航TokenDH.com
效率只读clawhub未标认证来源可访问clear审计通过

mud-adventure泥浆冒险

Agent Skill

mud-adventure 用于补充效率相关能力,适合在 OpenClaw 中需要让 Agent 承接效率相关任务时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

3,992

周安装

168

GitHub Stars

公开资料未说明

下载量

1,398
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:mud-adventure(泥浆冒险)
来源仓库:https://github.com/weistiger/mud-adventure
安装命令:
openclaw skills install mud-adventure
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install mud-adventure

简介

文字冒险型 MUD 游戏创作助手。用于快速搭建文字冒险游戏的世界观、地图、NPC、物品、任务与对话树。当用户说"做 MUD"、"写文字冒险"、"创建mud游戏"、"搭建mud世界"时触发。

SKILL.md

name
mud-adventure
description
文字冒险型 MUD 游戏创作助手。用于快速搭建文字冒险游戏的世界观、地图、NPC、物品、任务与对话树。当用户说"做 MUD"、"写文字冒险"、"创建mud游戏"、"搭建mud世界"时触发。

MUD Adventure Skill

文字冒险型 MUD 游戏创作技能包。帮你从零构建可运行的单文件 Python MUD 游戏。

快速开始

游戏核心只需一个 Python 文件(game.py),运行方式:

python game.py

首次使用,按以下流程构建游戏:

世界观设计 → 地图建模 → 人物/物品 → 对话/任务 → 合并到 game.py

详细设计指南见 references/world-design.md(世界观、故事结构) 详细系统指南见 references/game-systems.md(战斗、物品、任务) 示例代码见 references/examples.md

默认游戏模板

以下模板可直接复制到 game.py 运行,内含 3 个房间、1 个 NPC、1 个战斗场景:

import random

# ============ 世界设定 ============
TITLE = "迷雾森林"
AUTHOR = "石头龙虾二号"

# ============ 房间定义 ============
rooms = {
    "入口": {
        "name": "森林入口",
        "desc": "你站在一棵巨大的古橡树下,晨雾弥漫,四周静得只能听见自己的呼吸。",
        "exits": {"北": "大厅", "东": "小屋"},
        "items": [],
        "npcs": [],
    },
    "大厅": {
        "name": "迷雾大厅",
        "desc": "雾气中隐约可见一座石制大厅,墙壁上刻着模糊的文字。",
        "exits": {"南": "入口", "北": "宝藏室"},
        "items": ["古老的钥匙"],
        "npcs": ["守卫"],
    },
    "小屋": {
        "name": "林间小屋",
        "desc": "一间破旧的小木屋,窗户透出微弱的烛光。",
        "exits": {"西": "入口"},
        "items": ["治疗药水"],
        "npcs": ["隐士"],
    },
    "宝藏室": {
        "name": "隐藏宝藏室",
        "desc": "你推开门,金光闪闪的宝物堆满了整个房间!",
        "exits": {"南": "大厅"},
        "items": ["黄金剑"],
        "npcs": [],
        "locked": True,
    },
}

# ============ NPC 定义 ============
npcs = {
    "守卫": {
        "name": "石甲守卫",
        "desc": "一个身披石甲的沉默战士,目光警惕地盯着你。",
        "hp": 30,
        "attack": 8,
        "dialogue": {
            "你好": "守卫冷哼一声:'想过去?先证明你的实力!'",
            "挑战": "守卫举起巨剑:'那就来吧!'",
            "离开": "守卫退回阴影中,不再说话。",
        },
        "hostile": True,
    },
    "隐士": {
        "name": "森林隐士",
        "desc": "一位白发苍苍的老人,正对着烛火沉思。",
        "hp": 20,
        "attack": 0,
        "dialogue": {
            "你好": "隐士微微一笑:'旅人,这片森林藏着许多秘密。'",
            "帮助": "隐士点点头:'在大厅的墙壁上,有打开宝藏室的提示。'",
            "离开": "隐士挥挥手:'愿森林保佑你。'",
        },
        "hostile": False,
    },
}

# ============ 物品定义 ============
items = {
    "古老的钥匙": {"name": "古老的钥匙", "desc": "一把生锈但依然坚固的钥匙。", "effect": None},
    "治疗药水": {"name": "治疗药水", "desc": "散发淡蓝色光芒的恢复药剂。", "effect": "heal"},
    "黄金剑": {"name": "黄金剑", "desc": "传说中的宝剑,剑身流淌着金色的光芒。", "effect": "power"},
}

# ============ 玩家状态 ============
player = {
    "hp": 100,
    "max_hp": 100,
    "attack": 10,
    "inventory": [],
    "location": "入口",
    "flags": {"大厅_交谈过": False, "击败守卫": False},
}

# ============ 核心函数 ============
def print_intro():
    print(f"\
{'='*50}")
    print(f"  🎮 {TITLE}")
    print(f"  作者:{AUTHOR}")
    print(f"{'='*50}\
")
    print("输入 'help' 查看所有命令。\
")

def show_room():
    room = rooms[player["location"]]
    locked_msg = " [门被锁住了]" if room.get("locked") and not player["flags"].get("有钥匙") else ""
    print(f"\
📍 【{room['name']}】{locked_msg}")
    print(f"  {room['desc']}")
    exits = "、".join(room["exits"].keys())
    print(f"  出口:{exits}")
    if room.get("items"):
        print(f"  物品:{', '.join(room['items'])}")
    if room.get("npcs"):
        print(f"  NPC:{', '.join(room['npcs'])}")

def show_help():
    print("""
  help     - 显示此帮助
  look     - 环顾四周
  go <方向> - 向指定方向移动(北/南/东/西/前/后)
  look <物品>- 查看物品
  take <物品> - 拾取物品
  inventory - 查看背包
  use <物品> - 使用物品
  talk <NPC> - 与NPC交谈
  attack <NPC>- 攻击敌人
  status    - 查看角色状态
  quit      - 退出游戏
  """)

def move(direction):
    room = rooms[player["location"]]
    if direction not in room["exits"]:
        print("  你无法往那个方向走。")
        return
    target = room["exits"][direction]
    if rooms[target].get("locked") and not player["flags"].get("有钥匙"):
        print(f"  {rooms[target]['name']}的门是锁着的。你需要找到钥匙。")
        return
    player["location"] = target
    show_room()

def take_item(item_name):
    room = rooms[player["location"]]
    for i, item in enumerate(room.get("items", [])):
        if item_name in item or item in item_name:
            player["inventory"].append(item)
            room["items"].pop(i)
            if item == "古老的钥匙":
                player["flags"]["有钥匙"] = True
            print(f"  你拾取了「{item}」。")
            return
    print("  这里没有这个东西。")

def use_item(item_name):
    for i, item in enumerate(player["inventory"]):
        if item_name in item or item in item_name:
            if items[item]["effect"] == "heal":
                heal = min(30, player["max_hp"] - player["hp"])
                player["hp"] += heal
                player["inventory"].pop(i)
                print(f"  你喝下了「{item}」,恢复了 {heal} 点生命!")
            elif items[item]["effect"] == "power":
                player["attack"] += 5
                player["inventory"].pop(i)
                print(f"  你装备了「{item}」,攻击力提升!")
            else:
                print(f"  你使用了「{item}」。")
            return
    print("  你的背包里没有这个东西。")

def talk_to(target):
    room = rooms[player["location"]]
    if target not in room.get("npcs", []):
        print("  这里没有这个人。")
        return
    npc = npcs[target]
    print(f"\
  👤 {npc['name']}:{npc['desc']}")
    print("\
  你想说什么?(输入选项前的关键词)")
    for key in npc["dialogue"]:
        print(f"    - {key}")
    choice = input("\
  > ").strip()
    if choice in npc["dialogue"]:
        print(f"\
  {npc['dialogue'][choice]}")
        if choice == "帮助" and target == "隐士":
            player["flags"]["大厅_交谈过"] = True
    else:
        print("  对方没有回应……")

def combat(enemy_id):
    if enemy_id not in npcs:
        print("  这里没有这个敌人。")
        return
    enemy = npcs[enemy_id]
    print(f"\
  ⚔️  你向 {enemy['name']} 发起了战斗!")
    while enemy["hp"] > 0 and player["hp"] > 0:
        dmg_to_enemy = random.randint(max(1, player["attack"]-3), player["attack"]+3)
        enemy["hp"] -= dmg_to_enemy
        print(f"  你造成了 {dmg_to_enemy} 点伤害。")
        if enemy["hp"] <= 0:
            print(f"\
  🎉 你击败了 {enemy['name']}!")
            player["flags"]["击败守卫"] = True
            rooms[player["location"]]["npcs"].remove(enemy_id)
            if "守卫" in enemy_id:
                rooms["宝藏室"]["locked"] = False
            return
        dmg_to_player = random.randint(max(1, enemy["attack"]-2), enemy["attack"]+2)
        player["hp"] -= dmg_to_player
        print(f"  {enemy['name']} 对你造成了 {dmg_to_player} 点伤害!")
        print(f"  你的生命值:{player['hp']}/{player['max_hp']}")
        if player["hp"] <= 0:
            print("\
  💀 你倒下了……游戏结束。")
            return
    print(f"\
  敌人生命值:{enemy['hp']}")

def main():
    print_intro()
    show_room()
    while True:
        cmd = input("\
> ").strip()
        if not cmd:
            continue
        parts = cmd.split(maxsplit=1)
        verb = parts[0].lower()
        arg = parts[1] if len(parts) > 1 else ""
        if verb in ("q", "quit", "exit"):
            print("\
  再见,旅人!👋\
")
            break
        elif verb in ("help", "h", "?"):
            show_help()
        elif verb in ("look", "l"):
            if arg:
                for item in rooms[player["location"]].get("items", []):
                    if arg in item:
                        print(f"  {items[item]['desc']}")
                        break
                else:
                    print("  你没有看到这个东西。")
            else:
                show_room()
        elif verb in ("go", "walk", "移动", "走"):
            move(arg)
        elif verb in ("n", "s", "e", "w", "north", "south", "east", "west", "北", "南", "东", "西"):
            dir_map = {"n":"北","s":"南","e":"东","w":"西","north":"北","south":"南","east":"东","west":"西"}
            move(dir_map.get(verb, verb))
        elif verb in ("take", "get", "捡", "拿"):
            take_item(arg)
        elif verb in ("inv", "inventory", "i", "背包", "物品"):
            if player["inventory"]:
                print("  背包:" + "、".join(player["inventory"]))
            else:
                print("  背包是空的。")
        elif verb in ("use", "use", "使用"):
            use_item(arg)
        elif verb in ("talk", "chat", "说", "谈"):
            talk_to(arg if arg else input("  和谁交谈?> ").strip())
        elif verb in ("attack", "kill", "打", "攻击", "fight"):
            room_npcs = rooms[player["location"]].get("npcs", [])
            if not room_npcs:
                print("  这里没有可以攻击的目标。")
            elif len(room_npcs) == 1:
                combat(room_npcs[0])
            else:
                combat(arg if arg else input("  攻击谁?> ").strip())
        elif verb in ("status", "sta", "状态"):
            print(f"  HP:{player['hp']}/{player['max_hp']} | 攻击:{player['attack']}")

if __name__ == "__main__":
    main()

扩展指南

添加新房间

rooms 字典中新增键值对,定义 namedescexitsitemsnpcs

添加新 NPC

npcs 字典中定义,设置 namedeschpattackdialoguehostile

添加新物品

items 字典中定义,设置 namedesceffect(None/heal/power/custom)。

添加战斗系统

参考 references/game-systems.md 中的战斗系统设计,可扩展:经验值、等级、怪物掉落、魔法技能。

添加任务系统

参考 references/game-systems.md 中的任务系统,用 player["flags"] 跟踪任务进度。

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

76.75%
按下载量换算1,073

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills