Hello! 欢迎来到WaterMoon!

🔥 Chemdah插件续篇:高阶任务链×跨插件联动!打造史诗级NPC互动


avatar
Yu123 2025-02-23 230

前言
上篇教程发完后,一堆人催更:“任务链咋做?”、“怎么让NPC发装备?”、“能和MythicMobs联动吗?”——别急!这篇直接上硬核玩法,从多阶段剧情任务自定义任务触发器,甚至教你怎么让NPC变身“商店老板”,全程高能!


🌟 核心思路:把任务变成「故事」

Chemdah的强项是灵活的事件驱动,比如:

  • 玩家达成A任务 → 解锁B区域的NPC对话
  • 击杀特定MythicMobs的Boss → 触发隐藏任务
  • 在指定时间(如游戏内夜晚)和NPC对话 → 接到限时任务

记住这个公式事件监听 + 条件判断 + 跨插件变量 = 无限可能


🎮 第三部分:多阶段任务链——让NPC讲个完整故事

1️⃣ 连续任务配置:先挖矿,再打怪,最后交物品

# 任务链示例:矿工的复仇三部曲  
quests:  
  mine_iron:  
    name: "第一步:收集铁矿"  
    objectives:  
      mine_iron:  
        type: BLOCK_BREAK  
        block: IRON_ORE  
        amount: 20  
    rewards:  
      - type: MESSAGE  
        message: "矿工老张:太好了!但矿洞深处有怪物..."  
    next_quest: kill_cave_spider # 关键!自动开启下一任务  

  kill_cave_spider:  
    name: "第二步:清除洞穴蜘蛛"  
    objectives:  
      kill_spider:  
        type: ENTITY_KILL  
        entity: CAVE_SPIDER  
        amount: 5  
    rewards:  
      - type: MESSAGE  
        message: "矿工老张:这是祖传的镐子,请帮我修复它!"  
    next_quest: repair_pickaxe  

  repair_pickaxe:  
    name: "最终步:修复钻石镐"  
    objectives:  
      repair_pickaxe:  
        type: ITEM_DELIVERY # 提交物品  
        item: DIAMOND_PICKAXE  
        lore: "老张的传家宝" # 可设置物品必须包含特定Lore  
    rewards:  
      - type: COMMAND # 执行命令奖励  
        command: "give %player% diamond 5"

绑定到NPC技巧

  • 在Adyeshach的NPC配置中,只需绑定第一个任务mine_iron,后续任务会自动通过next_quest串联!
  • 用对话系统提示任务进度:在对话中插入%chemdah_quest_progress:任务ID%显示当前进度。

⚡ 第四部分:自定义触发器——不只是右键NPC!

1️⃣ 场景案例:玩家进入领地自动弹任务

# 创建触发器 (plugins/Chemdah/triggers/auto_quest.yml)  
triggers:  
  auto_quest_in_farm:  
    type: PLAYER_MOVE # 玩家移动触发  
    conditions:  
      - type: RESIDENCE # 在领地内  
        area: farm  
    actions:  
      - type: QUEST  
        quest: harvest_wheat  
        action: START

2️⃣ 击杀MythicMobs怪物触发隐藏任务

triggers:  
  mm_kill_trigger:  
    type: ENTITY_KILL  
    entity: "mythicmobs:dark_dragon" # MythicMobs的怪物ID  
    actions:  
      - type: QUEST  
        quest: dragon_slayer  
        action: START

进阶用法

  • 结合PlaceholderAPI检测玩家状态
conditions:  
  - type: PLACEHOLDER  
    placeholder: "%vault_eco_balance%"  
    operator: ">="  
    value: 1000 # 只有钱包余额≥1000的玩家能触发

🛒 第五部分:让NPC变身功能型角色

1️⃣ NPC商店:用对话系统实现买卖

conversations:  
  blacksmith_shop:  
    scenes:  
      start:  
        messages:  
          - "用10个铁锭换1把钻石剑,要交易吗?"  
        choices:  
          - "成交!": "trade"  
          - "太贵了!": "refuse"  
      trade:  
        conditions:  
          - type: INVENTORY_ITEM # 检测背包是否有10个铁锭  
            item: IRON_INGOT  
            amount: 10  
        actions:  
          - type: INVENTORY_REMOVE # 扣除物品  
            item: IRON_INGOT  
            amount: 10  
          - type: COMMAND  
            command: "give %player% DIAMOND_SWORD 1"  
        messages:  
          - "拿去吧,这把剑可是附魔过的!"  
      refuse:  
        messages:  
          - "没钱就别来烦我!"

2️⃣ NPC传送门:对话选择传送到副本

actions:  
  - type: COMMAND  
    command: "mv tp %player% dungeon_entrance"

🌈 第六部分:跨插件联动骚操作

1️⃣ 配合MythicMobs:Boss死亡后掉落任务物品

# 在MythicMobs的Boss配置中添加技能  
Skills:  
  - effectparticles{speed=0;particle=flame;amount=30} @Self ~onDeath  
  - command{cmd="chemdah quest complete_objective %player% collect_dragon_scale 1"} @PlayersInRadius{r=20}

2️⃣ 配合CrackShot:提交指定武器作为任务目标

objectives:  
  deliver_gun:  
    type: ITEM_DELIVERY  
    item: CRACKSHOT:AK47 # CrackShot的武器ID  
    amount: 1

📚 实用案例库

案例1:跑商系统

  • 任务:从A城买小麦 → 到B城卖小麦(价格随机浮动,用PlaceholderAPI获取实时价格)
  • 对话:NPC根据玩家背包小麦数量动态报价
  • 核心代码
message: "今日小麦收购价:%random_1_100%金币/组,要卖多少?"  
conditions:  
  - type: PLACEHOLDER  
    placeholder: "%player_item_amount:WHEAT%"  
    operator: ">="  
    value: 64

案例2:隐藏剧情任务线

  • 条件:完成全部主线任务 + 游戏时间≥100小时 → NPC对话变化,触发隐藏任务
  • 代码
conditions:  
  - type: QUEST_COMPLETED  
    quest: main_quest_final  
  - type: PLAYER_STAT  
    stat: PLAY_TIME  
    operator: ">="  
    value: 7200000 # 单位:tick(7200000 tick=100小时)

❓ 灵魂拷问区(你肯定会遇到的坑)

Q:如何让任务奖励随完成次数变化?(比如第一次给100块,第二次给80块)
A:用PlaceholderAPI的循环变量!

rewards:  
  - type: MONEY  
    amount: "%math_100-20*(%chemdah_quest_completion:quest_id%-1)%"

Q:任务链中途卡住不继续了怎么办?
A:检查next_quest是否拼写错误,并确保下一个任务未被其他条件限制!

Q:能让NPC根据玩家等级显示不同对话吗?
A:在对话场景中添加条件:

conditions:  
  - type: PLACEHOLDER  
    placeholder: "%mmocores_level_combat%"  
    operator: ">="  
    value: 30

结语
Chemdah的玩法上限取决于你的脑洞!赶紧用这些代码搞个“NPC复仇者联盟”剧情吧~ 如果有更骚的操作,欢迎在评论区Battle!💥

(附:所有代码支持Chemdah 4.0+,Adyeshach 2.3.0+,其他插件请自查兼容性)

自动发卡此卡密价格为0软妹币立即购买

暂无评论

当前仅支持登录后发布评论