以下是在GOM引擎架设传奇中添加隐藏任务的一般步骤:
### 任务脚本编写
- **创建任务脚本文件**:在传奇服务端的`mirserver\mir200\envir\QuestDiary`目录下创建一个新的文本文件,用于编写隐藏任务的脚本。文件名可自行定义,如`HiddenTask.txt` 。
- **定义任务变量与流程**:在脚本文件中,使用脚本语言定义任务的相关变量,如任务的名称、任务的触发条件、任务的目标、任务的奖励等。例如:
```
;任务名称
TaskName=神秘的宝藏任务
;触发条件,可设置为与特定NPC对话、达到一定等级、拥有特定物品等
TriggerCondition=@TalkToNPC(比奇城老兵) && Level>=30
;任务目标,如收集一定数量的物品或击杀特定怪物
TaskTarget=收集5个神秘宝石,击杀10只邪恶僵尸
;任务奖励,如经验值、金币、装备等
TaskReward=经验值 10000,金币 5000,物品(屠龙刀,1)
```
### NPC设置
- **修改NPC配置文件**:找到`mirserver\mir200\envir\merchant.txt`文件,该文件控制着游戏中的NPC 。在文件中添加或修改与隐藏任务相关的NPC信息。例如:
```
;比奇城老兵
比奇城老兵 0 330 270 比奇城老兵 0 0 1 0 0 0 0 比奇城老兵-0.txt
```
这里定义了一个位于比奇城坐标(330, 270)的老兵NPC,其对应的脚本文件为`比奇城老兵-0.txt` 。
- **编写NPC脚本**:在`mirserver\mir200\envir\market_def`目录下创建`比奇城老兵-0.txt`脚本文件,用于实现与隐藏任务相关的交互 。示例脚本如下:
```
[@main]
你好,勇士!我这里有一个神秘的任务,你是否愿意接受?\
<接受任务/@AcceptTask>\
<拒绝任务/@RejectTask>
[@AcceptTask]
#if
checkLevel >= 30
#act
MOVETASKFLAG 1
givemsgbox 你已接受神秘的宝藏任务,快去收集5个神秘宝石,并击杀10只邪恶僵尸吧。
[@RejectTask]
givemsgbox 好吧,如果你改变主意了,可以随时来找我。
```
上述脚本中,当玩家与NPC对话时,会弹出是否接受任务的选项。如果玩家等级大于等于30级并选择接受任务,则会设置任务标志位,并提示任务目标。
### 物品与怪物设置
- **添加任务所需物品**:若任务需要特定物品,可在服务端的物品数据库中添加该物品的信息,包括物品名称、属性、图标等。一般物品数据库文件为`mirserver\mud2\DB\StdItems.DB` ,可使用相应的数据库编辑工具进行修改。
- **设置怪物掉落**:如果任务要求击杀特定怪物并获取物品,需要在怪物的掉落配置文件中设置该怪物掉落任务所需物品的概率。怪物掉落配置文件通常为`mirserver\mir200\envir\MonItems`目录下的各个地图对应的文件,如`MonItems0.txt`代表比奇城地图的怪物掉落配置。在文件中找到对应的怪物ID,并添加掉落物品的信息,例如:
```
邪恶僵尸 1/10 神秘宝石 1
```
表示邪恶僵尸有1/10的概率掉落1个神秘宝石。
### 任务触发与检测
- **地图触发设置**:如果希望玩家在进入特定地图时触发隐藏任务,可以在地图配置文件中添加相应的触发脚本。地图配置文件位于`mirserver\mir200\envir\MapInfo.txt` 。例如:
```
0 比奇城
#IF
checktaskflag 0
#ACT
MOVETASKFLAG 1
givemsgbox 你进入了比奇城,触发了神秘的宝藏任务,去找比奇城老兵了解详情吧。
```
上述脚本表示当玩家进入比奇城且未触发过该任务时,会触发任务并提示玩家去找比奇城老兵。
- **实时任务检测**:在游戏的主循环脚本或相关的事件处理脚本中,添加对隐藏任务完成情况的检测。当玩家完成任务目标时,给予相应的奖励并更新任务状态。例如,在`mirserver\mir200\envir\QuestDiary\HiddenTask.txt`中添加以下检测脚本:
```
;检测任务是否完成
[@CheckTaskCompletion]
#if
checkitem 神秘宝石 5
checkmonsterkill 邪恶僵尸 10
#act
givemsgbox 恭喜你完成了神秘的宝藏任务,获得经验值10000,金币5000,以及屠龙刀一把!
takeitem 神秘宝石 5
MOVETASKFLAG 2
```
### 测试与调整
- **单机测试**:在完成上述设置后,启动GOM引擎和游戏服务端,使用单机客户端登录游戏进行测试,检查隐藏任务是否能够正常触发、任务目标是否可完成、任务奖励是否正确发放等.
- **问题排查与调整**:如果在测试过程中发现问题,如任务无法触发、物品不掉落、奖励无法获得等,需要仔细检查脚本编写是否正确、数据库配置是否准确、文件路径是否无误等,并根据具体情况进行相应的调整和修改。
### gom引擎架设传奇必备程序有哪些
gom 引擎架设传奇必备程序主要有以下几种。首先是版本,这是游戏的核心内容,包含了各种地图、怪物、装备等数据。其次是客户端,建议使用 13 周年之后的客户端,这样能更好地兼容 gom 引擎。DBC 数据库也是必不可少的,用于存储游戏中的数据信息。此外,还需要引擎控制器,如 GameOfMir 引擎控制器.exe,通过它可以进行各种配置操作。在架设前,要确保版本文件完整,一般应包含 DBServer、LoginGate、LoginSrv、LogServer、Mir200、RunGate、SelGate、登录器、网站等文件,少了任何一个都可能导致架设不成功。配置 DBC 数据库时,需打开电脑控制面板,找到小图标,打开 BDE-Administrator32 位,右键 Databases 新建,将名称改为 HERODB,并设置好路径。总之,这些必备程序相互配合,才能成功架设 gom 引擎的传奇游戏。
### gom引擎脚本标签和指令有哪些
gom 引擎的脚本标签和指令较为丰富。比如“(@段) ;段用英文或数字表示 goto @段 ;跳转到指定段,开始执行相当于 B 中的 goto 语句”,通过这种方式可以实现程序的跳转控制。“#say 语句 ;语句设定为字符,不用加任何定界符”,用于在游戏中输出特定的语句。“#act 执行命令 ;符合 3.0 规定的任何系统已定义命令”,可以执行各种系统命令。“give 物品 数量 ;给多少东西,除了物器数据库中有的物品,还有金币”以及“take 物品 数量 ;同上,只是与上面相反,一个是给东西,一个是收回东西”,用于物品的给予和收回操作。“map 地图名 ;移动到这个地图的随机坐标,地图名为地图的数字人码”和“mapmove 地图名 坐标 A 坐标 B ;同上,只是指定了坐标”,可实现角色在不同地图间的移动。“monclear 地图名 ;清除这个地图上刷的怪物”以及“MonGen 怪物名称 数量 时间 ;刷怪物,与刷怪角本用法相同”,用于怪物的管理。“TimeRecall 数值 ;数值为分钟,定义进入某地的时间限制。BreakTimeRecall ;中断上面那个语句设定的时间”可控制时间限制。“hairstyle 数值 ;改变头发类型”和“haircolor 红值 绿值 蓝值 ;值域为 0 ~255 设定头发颜色”用于角色外观的调整。“close ; 关闭对话框”。另外,还有一些特殊的脚本指令,如在传奇服务端 Gom 引擎挑战功能脚本范例中,“功能:移动到挑战地图 格式:CHALLENGMAPMOVE 地图名 X Y”和“功能:没有挑战地图可移动,则退回抵押的物品 格式:GETCHALLENGEBAKITEM”。在 GOM 引擎点我刷怪脚本命令中,通过一系列的判断和随机数生成来刷出不同的怪物,如“#IF CHECKITEM 魔族指令书 1 #ACT TAKE 魔族指令书 1 GOTO @DICE_33 #ELSESAY 你没有魔族指令书我没办法帮你刷怪!”等。宝石镶嵌方面,“DRILLHOLE 参数 1(任意字符,不能为空) 参数 2(任意字符,不能为空) 参数 3(装备位置(0~16 时身上装备,-1 时为 OK 框里的物品)) 参数 4(任意字符,不能为空) 参数 5(...)”用于打孔脚本命令,宝石数据库中不同字段的设置也有特定的作用,如“宝石 DB 库的字段 Reserved=0 时 Ac2Mac2DC2MC2SC2 HP MP 字段的值是增加的对应的 7 个基本属性的值;宝石 DB 库的字段 Reserved>0 时 Ac2Mac2DC2MC2SC2 HP MP 字段的值除以 100,为各属性的倍数”。

