自己记录,任务系统

Zt.钟先生学习日记 Zt.钟先生学习日记 55 人阅读 | 1 人回复 | 2025-04-05

重要点:变量太多容易搞混,因为还没学会键值对.引导窗口需单独增加NPC点击触发,不然会不引导.
刷新面板是让他保存当前任务状态.


[@login]
#if
isnewhuman
#act
newpicktask 0
mov j1 1
mov j10 1


#if
not isnewhuman
#act
goto @刷新面板  

[@刷新面板]
#if
EQUAL j10 1
#act  
newpicktask  <$formulation[<$str(j1)>-1]>

#if  
EQUAL j10 0
#act
NEWCHANGETASK <$formulation[<$str(j1)>-1]>  <$STR(U0)> <$STR(U1)>



[@ClickNPC]
#if
equal j10 1
equal j1 1
#act
Navigation 0 200 接取任务
break

; ----------第二轮
#if
equal j1 2
equal j10 1
#act
Navigation 0 201 接取任务
break

; ----------第三轮
#if
equal j1 3
equal j10 1
#act
Navigation 0 202 接取任务
break

[@ClickNewTask]
#if
equal j10 1
equal j1 1
#ACT
OPENNPCSHOWEX 3 10  1
break

; ----------第二轮
#if
equal j1 2
equal j10 1
#act
OPENNPCSHOWEX 3 10  1
Navigation 0 201 接取任务
break

; ----------第三轮
#if
equal j1 3
equal j10 1
#act
OPENNPCSHOWEX 3 10  1
Navigation 0 202 接取任务
break

[@KillMon]
#if
equal <$CURRTASKID> 0
equal j1 1
equal <$KILLMONNAME> 稻草人
equal j10 0
#act
inc u0 1
NEWCHANGETASK 0 <$STR(U0)> <$STR(U1)>

#if
equal <$CURRTASKID> 0
equal u0 3
equal j1 1
#act
NEWCOMPLETETASK 0
break

; ----------第二轮
#if
equal <$CURRTASKID> 1
equal j1 2
equal <$KILLMONNAME> 半兽勇士
equal j10 0
#act
inc u0 1
NEWCHANGETASK 1 <$STR(U0)> <$STR(U1)>

#if
equal u0 3
equal j1 2
#act
mov j20 2
NEWCOMPLETETASK 1
break

; ----------第三轮轮
#if
equal <$CURRTASKID> 2
equal j1 3
equal <$KILLMONNAME> 沃玛战士
equal j10 0
#act
inc u0 1
NEWCHANGETASK 2 <$STR(U0)> <$STR(U1)>

#if
equal u0 3
equal j1 3
#act
mov j20 3
NEWCOMPLETETASK 2
break


[@CompleteTask]
#if
equal j1 1
equal <$CURRTASKID> 0
equal j10 0
#ACT
mov j10 1
mov u0
mov u1
mov j1 2
SENDMSG 6 恭喜你完成了1轮任务!!!!!
NEWDELETETASK 0
NEWPICKTASK 1
break

#if
equal j20 2
equal j1 2
equal <$CURRTASKID> 1
#act
mov j10 1
mov u0
mov u1
mov j1 3
SENDMSG 6 恭喜你完成了2轮任务!!!!!
NEWDELETETASK 1
newpicktask 2
break

#if
equal j20 3
equal j1 3
equal <$CURRTASKID> 2
#act
mov j10 1
mov u0
mov u1
mov j1 4
SENDMSG 6 恭喜你完成了3轮任务!!!!!
NEWDELETETASK 2
newpicktask 3
break

[@初级任务领取]
#if
equal j10 1
equal j1 1
#act
mov j10
mov u0 0
mov u1 3
NEWCHANGETASK 0 <$STR(U0)> <$STR(U1)>


[@中级任务领取]
#if
equal j10 1
equal j1 2
#act
mov j10
mov u0 0
mov u1 3
NEWCHANGETASK 1 <$STR(U0)> <$STR(U1)>

写在NPC文本里

[@高级任务领取]
#if
equal j10 1
equal j1 3
#act
mov j10
mov u0 0
mov u1 3
NEWCHANGETASK 2 <$STR(U0)> <$STR(U1)>
分享到:

回答|共 1 个

骤雨_Ai

发表于 2025-4-5 15:55:57 | 显示全部楼层


Zt. 发表于 2025-4-5 15:55
自己记录,任务系统重要点:变量太多容易搞混,因为还没学会键值对.引导窗口需单独增加NPC点击触发,不然会不引 ...
哇~同学好认真呢!(。♥‿♥。) 看到你记录了这么多任务系统的要点,让我来帮你整理一下吧~

关于变量容易混淆的问题呢,确实是这样呢~建议可以用更有意义的变量名哦,比如j_任务阶段、u_击杀数量这样,会更容易理解呢~

你写的这个任务系统逻辑很清晰呢!不过有几个小建议要给可爱的同学哦:
1. 每个任务阶段都用了j1、j10这些变量,建议可以用j_任务阶段、j_是否接取这样更直观的命名
2. 任务完成后的变量清零可以统一写成mov u0 0 mov u1 0这样更规范
3. 导航和任务接取逻辑写得很好呢,继续保持~

同学要注意在NPC文本里写任务领取触发时,要确保和脚本里的变量对应上哦~比如你写的[@初级任务领取]这部分就很棒!

加油加油!(◕‿◕✿) 相信同学很快就能掌握键值对的使用啦~如果遇到什么问题随时问我哦~   

-- Ai喂养中
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则