当前位置 : 145z游戏站 | 热血传奇 | 传奇游戏 | 

传奇Gom引擎中QuestDiary文件夹下的任务脚本可以实现哪些复杂的任务逻辑?

热度:
在传奇Gom引擎中,QuestDiary文件夹下的任务脚本能够实现多种复杂的任务逻辑,以下为你详细介绍:

###1.多条件复合任务
任务的触发或完成需要同时满足多个不同类型的条件,增加任务的挑战性和趣味性。
-**等级、物品与杀怪条件结合**:玩家需要达到一定等级,拥有特定物品,并且杀死指定数量的怪物才能完成任务。
```plaintext
[@main]
#IF
CheckLevelGreater30
CheckItem10012
CheckKillMonCount骷髅将军5
#ACT
SendMsg0你满足了所有条件,任务完成!
GiveExp8000
GiveMoney5000
GiveItem10021
Goto@end
#ELSE
SendMsg0你还未满足任务要求,请继续努力。
Goto@main

[@end]
SendMsg0任务结束,感谢参与!
```
-**时间与地图条件结合**:玩家需要在特定时间内到达指定地图完成任务。
```plaintext
[@main]
#IF
CheckDateTime2025-03-0118:00:002025-03-0120:00:00
CheckMap5
#ACT
SendMsg0你在规定时间内到达了指定地图,任务完成!
GiveExp6000
GiveMoney4000
Goto@end
#ELSE
SendMsg0你未在规定时间内到达指定地图,任务失败。
Goto@fail

[@end]
SendMsg0任务圆满完成。

[@fail]
SendMsg0很遗憾,任务失败了。
```

###2.任务链与任务分支
-**任务链**:一系列相互关联的任务,玩家必须依次完成前一个任务才能开启下一个任务,形成连贯的剧情线。
```plaintext
;第一个任务:送信
[@task1_main]
#IF
#ACT
SendMsg0你接到第一个任务,将信件送到村长手中。
Goto@task1_delivery

[@task1_delivery]
#IF
CheckQuestVar1;假设完成送信后设置任务变量1
#ACT
SendMsg0你成功送完信,第一个任务完成!
GiveExp2000
SetQuestVar11
Goto@task2_main
#ELSE
SendMsg0信件还未送达,请继续。
Goto@task1_delivery

;第二个任务:杀怪
[@task2_main]
#IF
CheckQuestVar11
#ACT
SendMsg0现在开始第二个任务,杀死10只野猪。
Goto@task2_killing
#ELSE
SendMsg0你需要先完成第一个任务。
Goto@task1_main

[@task2_killing]
#IF
CheckKillMonCount野猪10
#ACT
SendMsg0你已杀死10只野猪,第二个任务完成!
GiveExp3000
SetQuestVar21
Goto@task3_main
#ELSE
SendMsg0你还需杀死[10-<$KILLMONCOUNT(野猪)>]只野猪。
Goto@task2_killing

;第三个任务:寻找宝物
[@task3_main]
#IF
CheckQuestVar21
#ACT
SendMsg0最后一个任务,找到神秘宝物。
Goto@task3_searching
#ELSE
SendMsg0你需要先完成第二个任务。
Goto@task2_main

[@task3_searching]
#IF
CheckQuestVar3;假设找到宝物后设置任务变量3
#ACT
SendMsg0你找到了宝物,整个任务链完成!
GiveExp5000
GiveMoney6000
GiveItem10031
Goto@end
#ELSE
SendMsg0宝物还未找到,请继续寻找。
Goto@task3_searching

[@end]
SendMsg0恭喜你完成了整个任务链!
```
-**任务分支**:根据玩家的选择或行为,任务会走向不同的分支,产生不同的结果和奖励。
```plaintext
[@main]
#IF
#ACT
AskText你面前有两条路,选择东边(A)还是西边(B)?<$STR(S1)>
If$STR(S1)==A
Goto@eastPath
ElseIf$STR(S1)==B
Goto@westPath
Else
SendMsg0输入无效,请重新输入。
Goto@main

[@eastPath]
#IF
#ACT
SendMsg0你选择了东边的路,遇到了神秘商人,获得了珍贵道具。
GiveItem10041
Goto@end

[@westPath]
#IF
#ACT
SendMsg0你选择了西边的路,遭遇了强大怪物,成功击败后获得大量经验。
GiveExp8000
Goto@end

[@end]
SendMsg0本次任务结束。
```

###3.动态任务目标
任务目标会根据玩家的行为或游戏中的事件动态变化。
-**怪物数量动态调整**:如果玩家在一定时间内未能完成杀怪任务,怪物数量会减少,降低任务难度。
```plaintext
[@main]
#IF
#ACT
SetQuestVar115;初始杀怪数量为15只
SendMsg0你需要杀死<$QUESTVAR(1)>只蜘蛛。
Goto@killing

[@killing]
#IF
CheckKillMonCount蜘蛛<$QUESTVAR(1)>
#ACT
SendMsg0你完成了杀怪任务!
GiveExp4000
GiveMoney3000
Goto@end
#ELSE
CheckDateTimePassed1800;检查是否过了30分钟
#IF
SubQuestVar15;减少5只杀怪目标
SendMsg0由于时间已过30分钟,杀怪目标减少为<$QUESTVAR(1)>只。
#ENDIF
SendMsg0你还需杀死[<$QUESTVAR(1)>-<$KILLMONCOUNT(蜘蛛)>]只蜘蛛。
Goto@killing

[@end]
SendMsg0任务完成,奖励已发放!
```

###4.限时任务与循环任务
-**限时任务**:玩家需要在规定时间内完成任务,增加任务的紧迫感。
```plaintext
[@main]
#IF
#ACT
SetQuestTime3600;设置任务时间为1小时
SendMsg0你有1小时的时间完成这个收集12个宝石的任务。
Goto@collecting

[@collecting]
#IF
CheckItemCount100512
#ACT
SendMsg0你在规定时间内完成了任务,奖励丰厚!
GiveExp7000
GiveMoney5000
GiveItem10061
Goto@end
#ELSE
CheckQuestTimeOver
#IF
SendMsg0很遗憾,时间已到,任务失败。
Goto@fail
#ENDIF
SendMsg0你还需收集[12-<$ITEMCOUNT(1005)>]个宝石,剩余时间:<$QUESTTIME>秒。
Goto@collecting

[@end]
SendMsg0任务成功完成。

[@fail]
SendMsg0任务失败,请下次再试。
```
-**循环任务**:任务可以重复完成,每次完成后给予不同的奖励或难度递增。
```plaintext
[@main]
#IF
#ACT
SendMsg0你可以开始这个循环杀怪任务,每次需要杀死比上次多2只的僵尸。
SetQuestVar15;初始杀怪数量为5只
Goto@killing

[@killing]
#IF
CheckKillMonCount僵尸<$QUESTVAR(1)>
#ACT
SendMsg0你完成了本次杀怪任务!
GiveExp<$QUESTVAR(1)>*100
GiveMoney<$QUESTVAR(1)>*50
AddQuestVar12;下次杀怪数量增加2只
SendMsg0你可以再次接受任务,下次需要杀死<$QUESTVAR(1)>只僵尸。
Goto@main
#ELSE
SendMsg0你还需杀死[<$QUESTVAR(1)>-<$KILLMONCOUNT(僵尸)>]只僵尸。
Goto@killing
```

###5.团队协作任务
需要多个玩家合作完成的任务,促进玩家之间的互动和协作。
```plaintext
[@main]
#IF
CheckTeamCount>=3;检查团队人数是否不少于3人
#ACT
SendMsgToTeam0团队任务开启,你们需要共同击败邪恶魔王。
Goto@fighting
#ELSE
SendMsg0团队人数不足3人,无法开启任务。
Goto@main

[@fighting]
#IF
CheckKillMonCount邪恶魔王1
#ACT
SendMsgToTeam0恭喜团队,成功击败邪恶魔王,任务完成!
ForEachTeamMember
GiveExp5000
GiveMoney3000
GiveItem10071
Next
Goto@end
#ELSE
SendMsgToTeam0邪恶魔王还未被击败,继续战斗!
Goto@fighting

[@end]
SendMsgToTeam0团队任务圆满结束。
```
[顶部]