一、NPC任务交互
首先,在NPC的对话选项中添加两个选项:“领取杀怪100任务”和“任务完成领取奖励”。
当选择“领取杀怪100任务”时,检查自定义变量“[100]”是否已经存在,若不存在则创建并设置为1,同时提示玩家任务已领取。
当选择“任务完成领取奖励”时,检查玩家的声望值是否大于99,如果是,则将自定义变量“[100]”重置为0,增加5点声望,并提示玩家已获得奖励。
二、杀怪触发
在Mir200\Envir目录下的MapQuest.txt文件中,添加如下内容:3 [035] 0 * Q016,其中3表示杀怪所在的地图号,035表示要杀的怪物名称,Q016表示触发的文本名称。
在Mir200\Envir\MapQuest_Def目录下创建一个名称与触发脚本名称相同的文本文件,如Q016.txt,并添加如下内容:
当玩家杀死怪物时,检查自定义变量“[100]”是否大于99,如果是,则将其重置为0,提示玩家任务完成,并将玩家传送回NPC所在的地图。
如果自定义变量“[100]”小于或等于99,则计数加1,并保存到变量数据文件中。
三、登录脚本
在Mir200\Envir\QuestDiary\数据文件目录下创建一个名称为“变量数据.txt”的文本文件。
在登录脚本中,加载自定义变量“[100]”的值,如果该变量不存在,则创建并设置为0。
最后,需要注意以下几点:
在GOM引擎中,需要先设置地图参数“ONKILLMON”,以便能够触发杀怪事件。
在Market\_def\Qfunction-0.txt文件中,可以添加公共事件脚本,例如当玩家杀死特定怪物时,发送系统公告等。
在Mir200\Envir\MapQuest\_Def目录下,需要声明公共变量“杀羊数量”,并在相应的目录下创建一个名称为“羊数量.txt”的文件,以保存计数变量。
在Mir200\Envir\MapQuest.txt文件中,添加触发脚本时,单元值必须与任务NPC脚本中设置的单元值相对应,且不能与其他任务重复。
完整的代码示例如下:
NPC对话选项
[@main]
#if
#say
<领取杀怪100任务/@领取> <任务完成领取奖励/@奖励>
[@领取]
#if
Check [100] 0
#act
set [100] 1
SENDMSG 6 提示:任务领取完毕,请尽快完成.
#elseact
SENDMSG 6 提示:草,领取过的还来捣乱,劳资干死你.
break
[@奖励]
#if
CHECKVAR HUMAN SGCF > 99
#act
set [100] 0
CREDITPOINT + 5
SENDMSG 6 提示:任务完成奖励声望+5.
CALCVAR HUMAN SGCF = 0
SAVEVAR HUMAN YUAN ..\\QuestDiary\\数据文件\\变量数据.txt
#elseact
SENDMSG 6 提示:草,任务未完成,还想要奖励,滚.
break
Copy
杀怪触发
3 [035] 0 * Q016
Copy
Q016.txt
[@main]
#IF
CHECKVAR HUMAN SGCF > 99
#ACT
mapmove 3 333 333
SENDMSG 6 提示:任务完成.
#elseact
CALCVAR HUMAN SGCF + 1
SAVEVAR HUMAN SGCF ..\\QuestDiary\\数据文件\\变量数据.txt
messagebox 您的当前杀怪数量为:<$HUMAN(SGCF)>
break
Copy
登录脚本
[@login]
#if
CHECKLEVELEX > 0
#act
VAR Integer HUMAN SGCF
LOADVAR HUMAN SGCF ..\\QuestDiary\\数据文件\\变量数据.txt