当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇任务脚本编写全教程新手可直接复制使用

热度:

传奇任务脚本编写核心是遵循“触发条件-执行逻辑-奖励/惩罚”的三段式框架,无需复杂编程基础,掌握常用命令和基础语法,就能编写新手引导、杀怪、收集、对话等各类任务脚本,以下是完整实操内容,包含语法规则、分场景脚本、问题排查,所有脚本可直接复制修改使用。

一、传奇任务脚本核心基础(必看)

传奇任务脚本依托服务端脚本引擎运行,核心由触发标识、逻辑判断、执行命令三部分组成,所有命令需严格遵循语法规则,否则脚本无法生效,核心基础内容如下:

1.核心语法规则

①命令全部大写:所有脚本命令(如#IF、#ACT、SendMsg、CheckItem等)必须大写,小写或大小写混合会导致命令失效,例如“checkitem”需改为“CheckItem”。

②结尾加英文分号:所有执行类命令、提示类命令结尾,必须添加英文分号“;”,遗漏分号会导致脚本中断执行,例如“Give金币1000;”不可遗漏分号。

③编码格式为ANSI:脚本文件需保存为ANSI编码,右键脚本文件→记事本打开→文件→另存为→编码选择ANSI,否则会出现中文乱码,导致脚本无法解析。

④触发标识唯一:每个任务脚本需有唯一的触发标识(如[@main]、[@接受任务]、[@完成任务]),标识用英文中括号包裹,不可重复,否则会出现触发冲突。

⑤变量规范使用:常用变量分为字符型(A0-A9、B0-B9)和数字型(P0-P9、D0-D9),变量名仅可使用指定字母+数字组合,赋值时需区分类型,例如“movA0新手任务”(字符型)、“movP00”(数字型)。

2.常用核心命令(新手必备)

任务脚本的核心是用命令实现逻辑,以下是编写各类任务必用的命令,标注用途和用法,直接套用即可:

①触发与跳转命令:[@标识](触发入口)、GOTO@标识(跳转到指定触发段)、Delaygoto3@标识(延迟3秒跳转)、BREAK(终止脚本)、@exit(关闭对话框)。

②逻辑判断命令:#IF(判断条件开头)、#ACT(条件满足执行)、#ELSEACT(条件不满足执行)、CheckLevel等级(检测玩家等级)、CheckItem物品数量(检测玩家拥有物品及数量)、CheckJob职业(检测玩家职业,如warr战士、wizard法师)、equal变量数值(检测变量是否等于指定值)、notCheckItem物品(检测玩家无指定物品)。

③执行操作命令:Give物品数量(发放物品)、Take物品数量(扣除物品)、GiveGold数量(发放金币)、TakeGold数量(扣除金币)、AddExp数值(发放经验)、SetVar变量数值(给变量赋值)、IncVar变量数值(变量自增)、DecVar变量数值(变量自减)、AddGuildMember行会名(加入行会)、Gmexecute命令(执行管理员命令)。

④提示命令:SendMsg颜色代码0提示内容;(玩家个人提示)、Messagebox提示内容;(弹窗提示,需点击确定)、SendBroad2550提示内容;(全服提示)。

3.脚本存放路径

编写好的任务脚本,需存放至传奇服务端指定文件夹,否则无法触发,具体路径:Mirserver\Mir200\Envir\QuestDiary,可新建.txt文件(如Task1.txt)粘贴脚本,也可粘贴至现有脚本文件,保存后重启服务端即可生效。

二、分场景传奇任务脚本(直接可用)

传奇任务核心分为4类:新手引导任务、杀怪任务、物品收集任务、对话任务,以下是每类任务的完整脚本,新手可直接复制,修改物品、等级、数值等参数即可使用,贴合实际游戏场景。

场景1:新手引导任务(对话+发放基础道具)

核心:玩家与NPC对话接受任务,完成对话后发放新手装备和金币,引导玩家熟悉游戏,脚本如下:

//新手引导任务脚本,触发标识[@main]绑定NPC对话

[@main]

#IF

CheckLevel<10//检测玩家等级低于10级,仅新手可触发

equalP00//检测玩家未接受过该任务(P0为任务状态变量,0=未接受,1=已完成)

#SAY

欢迎来到传奇世界!我是新手引导员,完成我的引导,即可获得新手装备和金币。\

点击【接受引导】领取你的第一份奖励吧!\

<接受引导/@accept> <暂不接受/@exit>

#ELSEACT

CheckLevel>=10

#SAY

你已不是新手,无需完成引导任务,快去挑战更高难度的任务吧!\

<离开/@exit>

BREAK

//接受任务触发段

[@accept]

#ACT

Give新手剑1;//发放新手武器

Give新手衣1;//发放新手防具

GiveGold1000;//发放1000金币

AddExp1000;//发放1000经验,帮助玩家快速升级

SetVarP01;//将任务状态变量设为1,标记已完成

SendMsg2500新手引导任务完成,获得新手装备和金币,快去提升等级吧!;

Messagebox新手引导任务完成!奖励已发放至背包,请查收!;

GOTO@main//跳转回NPC对话界面

BREAK

场景2:杀怪任务(击杀指定怪物+提交任务)

核心:玩家接受任务后,击杀指定数量的怪物,返回NPC处提交任务,领取经验和道具奖励,脚本如下:

//杀怪任务(击杀10只稻草人),适合10-15级玩家

[@main]

#IF

CheckLevel>=10//限制玩家等级≥10级可接受

equalP10//P1为任务状态变量,0=未接受,1=已接受,2=已完成

#SAY

最近新手村稻草人泛滥,扰乱村民生活,麻烦你去击杀10只稻草人,\

完成任务后,我会给你丰厚的经验和道具奖励!\

<接受任务/@accepttask> <拒绝/@exit>

#ELSEIF

equalP11//检测玩家已接受任务,未完成

#SAY

你已接受杀怪任务,当前已击杀<$STR(P2)>只稻草人,还需击杀<$STR(10-P2)>只,\

加油!完成后记得回来找我提交任务。\

<离开/@exit>

#ELSEIF

equalP12//检测玩家已完成任务

#SAY

非常感谢你帮助村民解决了稻草人泛滥的问题,这是给你的奖励,\

后续有其他任务,我会第一时间通知你!\

<离开/@exit>

BREAK

//接受任务触发段

[@accepttask]

#ACT

SetVarP11;//标记任务已接受

SetVarP20;//P2为击杀数量统计变量,初始为0

SendMsg5任务接受成功!请前往新手村击杀10只稻草人,完成后返回提交任务!;

GOTO@main

BREAK

//击杀怪物触发段(绑定稻草人击杀动作)

[@KillMonster_稻草人]

#IF

equalP11//仅已接受任务的玩家触发

smallP210//检测击杀数量小于10

#ACT

IncVarP21;//击杀数量+1

SendMsg1已击杀稻草人<$STR(P2)>/10,继续加油!;

//检测击杀数量达到10,标记任务完成

CheckVarP2=10

SetVarP12;//标记任务已完成

SendMsg2500击杀稻草人任务已完成!请返回NPC处提交任务,领取奖励!;

BREAK

//提交任务触发段

[@submit]

#IF

equalP12//检测任务已完成

#ACT

AddExp5000;//发放5000经验

Give中级药水3;//发放3瓶中级药水

GiveGold5000;//发放5000金币

Messagebox任务提交成功!奖励已发放,请注意查收!;

GOTO@main

BREAK

#ELSEACT

Messagebox你尚未完成任务,无法提交!;

BREAK

场景3:物品收集任务(收集指定道具+提交兑换)

核心:玩家接受任务后,收集指定数量的道具,返回NPC处提交,领取奖励,脚本如下:

//物品收集任务(收集5个矿石),适合15-20级玩家

[@main]

#IF

CheckLevel>=15//限制等级≥15级

equalP30//P3为任务状态,0=未接受,1=已完成

#SAY

我需要5个矿石来锻造装备,麻烦你去矿洞收集5个矿石,\

收集完成后交给我,我会给你锻造材料作为奖励!\

<接受任务/@acceptcollect> <离开/@exit>

#ELSEIF

equalP31//已完成任务

#SAY

非常感谢你的帮助,矿石已收到,这是给你的奖励,\

后续若有需要,我还会麻烦你!\

<离开/@exit>

BREAK

//接受任务

[@acceptcollect]

#ACT

SetVarP30;//标记未完成,仅接受任务

SendMsg5任务接受成功!请前往矿洞收集5个矿石,提交后领取奖励!;

GOTO@main

BREAK

//提交道具

[@submitcollect]

#IF

CheckItem矿石5//检测玩家拥有5个矿石

#ACT

Take矿石5;//扣除5个矿石

Give锻造石2;//发放2个锻造石

AddExp8000;//发放8000经验

SetVarP31;//标记任务已完成

Messagebox道具提交成功!奖励已发放,可用于装备锻造!;

GOTO@main

BREAK

#ELSEACT

Messagebox你拥有的矿石不足5个,无法提交任务!;

BREAK

场景4:对话任务(多NPC对话+完成任务)

核心:玩家需依次与多个NPC对话,完成对话流程后,返回初始NPC领取奖励,脚本如下:

//对话任务(与3个NPC对话),适合20级以上玩家

[@main]

#IF

CheckLevel>=20//限制等级≥20级

equalP40//P4为任务状态,0=未开始,1=已找第一个NPC,2=已找第二个,3=已完成

#SAY

请你帮我传递一个消息,依次去找铁匠、药剂师、杂货商对话,\

完成所有对话后,返回我这里领取奖励!\

<接受任务/@accepttalk> <拒绝/@exit>

#ELSEIF

equalP41//已找铁匠

#SAY

你已找到铁匠,接下来请去找药剂师对话,完成后继续找杂货商!\

<离开/@exit>

#ELSEIF

equalP42//已找铁匠、药剂师

#SAY

还差最后一步,去找杂货商对话,完成后返回我这里领取奖励!\

<离开/@exit>

#ELSEIF

equalP43//已完成所有对话

#SAY

消息已成功传递,辛苦你了,这是给你的奖励!\

<领取奖励/@getreward> <离开/@exit>

BREAK

//接受对话任务

[@accepttalk]

#ACT

SetVarP40;//初始状态

SendMsg5任务接受成功!请依次找铁匠、药剂师、杂货商对话!;

GOTO@main

BREAK

//与铁匠对话触发

[@talk_铁匠]

#IF

equalP40//仅未找过铁匠的玩家触发

#ACT

SetVarP41;//标记已找铁匠

Messagebox我已收到消息,麻烦你转告任务发布者,我会按时准备好装备!;

BREAK

//与药剂师对话触发

[@talk_药剂师]

#IF

equalP41//仅已找过铁匠的玩家触发

#ACT

SetVarP42;//标记已找药剂师

Messagebox消息已收到,药水已准备就绪,随时可以领取!;

BREAK

//与杂货商对话触发

[@talk_杂货商]

#IF

equalP42//仅已找过铁匠、药剂师的玩家触发

#ACT

SetVarP43;//标记所有对话完成

Messagebox消息已收到,各类杂货已备齐,请转告任务发布者!;

SendMsg2500所有对话已完成,请返回初始NPC处领取奖励!;

BREAK

//领取奖励

[@getreward]

#ACT

Give高级药水5;//发放5瓶高级药水

GiveGold10000;//发放10000金币

AddExp15000;//发放15000经验

Messagebox奖励领取成功!感谢你的帮助!;

GOTO@main

BREAK

三、脚本参数修改方法(新手必看)

上述脚本可根据自身服务端需求,修改核心参数,无需修改脚本结构,修改后保存重启服务端即可生效,具体修改方法如下:

1.等级限制修改

找到脚本中“CheckLevel数值”命令,修改数值即可调整任务接受等级,例如“CheckLevel>=10”改为“CheckLevel>=15”,即可将接受等级调整为15级以上;“CheckLevel<10”改为“CheckLevel<15”,限制15级以下玩家触发。

2.物品、数量修改

①物品修改:将“Give物品数量”“Take物品数量”“CheckItem物品数量”中的“物品”,替换为自身服务端的物品名称,需与物品数据库中的名称完全一致(区分大小写),例如将“新手剑”改为“青铜剑”。

②数量修改:修改物品后的数字,即可调整发放、扣除、收集的数量,例如“Give新手剑1”改为“Give新手剑2”,发放2把新手剑;“CheckItem矿石5”改为“CheckItem矿石10”,需收集10个矿石。

3.奖励修改

①经验修改:修改“AddExp数值”中的数值,调整经验发放量,例如“AddExp1000”改为“AddExp2000”,发放2000经验。

②金币修改:修改“GiveGold数值”“TakeGold数值”中的数值,调整金币数量,例如“GiveGold1000”改为“GiveGold3000”,发放3000金币。

③道具修改:替换“Give物品数量”中的物品和数量,即可调整奖励道具,例如“Give中级药水3”改为“Give高级药水2”。

4.任务变量修改

若出现变量冲突(多个任务使用同一变量),可修改变量名称,例如将“P0”改为“P5”,需确保所有关联该变量的命令(SetVar、IncVar、equal、CheckVar等)统一修改,避免变量混乱导致任务失效。

5.提示内容修改

修改“SendMsg”“Messagebox”后的文字内容,可调整提示信息,例如“新手引导任务完成”改为“新手任务已完成,快去矿洞升级吧!”,保持提示清晰、贴合任务即可,无需修改格式。

四、常见脚本问题排查(新手无忧)

脚本编写后若无法触发、执行异常,按以下步骤逐一排查,均可解决,无需复杂操作,重点排查语法和参数错误:

1.脚本无法触发

排查步骤:①检查脚本存放路径是否正确,必须在Mirserver\Mir200\Envir\QuestDiary文件夹;②确认触发标识是否正确,如[@main]不可写错为[@Main]、[@main1];③检查脚本编码是否为ANSI,若为UTF-8会导致无法解析;④核对玩家等级、职业等触发条件,确保玩家满足触发要求。

2.命令失效、脚本中断

排查步骤:①检查所有命令是否全部大写,如“give”改为“Give”、“checkitem”改为“CheckItem”;②检查所有执行类命令结尾是否添加英文分号,遗漏分号会导致脚本中断;③核对变量名称,确保变量赋值、调用的名称一致,例如“SetVarP01”不可调用“<$STR(P1)>”。

3.奖励发放错误、扣除失败

排查步骤:①检查物品名称是否与服务端物品数据库一致,区分大小写,例如“矿石”不可写为“矿石1”;②检查物品数量,确保玩家拥有足够的物品(扣除时),避免出现负数扣除;③核对“Give”“Take”命令,避免写反(如应扣除写为发放)。

4.提示文字乱码

排查步骤:右键点击脚本文件→记事本打开→文件→另存为→编码选择ANSI,保存覆盖原有文件,重启服务端,乱码即可解决;若仍有乱码,删除乱码文字,手动重新输入,避免复制粘贴导致的编码错乱。

5.任务重复触发

排查步骤:检查任务状态变量是否正确设置,例如完成任务后是否将变量设为“1”(已完成),避免变量始终为“0”(未接受)导致重复触发;同时检查脚本末尾是否添加“BREAK”命令,未添加会导致脚本循环执行。

6.杀怪任务不统计数量

排查步骤:检查杀怪触发标识是否正确,需与怪物名称一致,例如“[@KillMonster_稻草人]”不可写错为“[@KillMonster_稻草]”;核对变量统计命令“IncVarP21”,确保变量名称与显示、判断的变量一致。

五、进阶脚本编写技巧(按需选择)

掌握基础脚本编写后,可根据游戏需求,添加进阶功能,提升任务可玩性,具体技巧如下:

1.限时任务:在脚本#IF段添加时间判断命令,例如“CheckTime10:0012:00”,仅在10:00-12:00期间可接受任务,超时无法触发;也可使用“Delaygoto3600@overtime”,设置1小时后任务超时。

2.职业限制任务:添加“CheckJob职业”命令,例如“CheckJobwarr”,仅战士可接受任务;“CheckJobwizardORCheckJobtaos”,法师和道士可接受任务,适配不同职业的任务需求。

3.多条件触发:在#IF段添加多个判断条件,用“OR”(或)、“AND”(且)连接,例如“CheckLevel>=20ANDCheckItem钥匙1”,玩家等级≥20级且拥有1把钥匙,才可触发任务;“CheckJobwarrORCheckLevel>=30”,战士或30级以上玩家可触发。

4.任务连锁:将多个任务关联,例如完成杀怪任务后,才能接受物品收集任务,通过变量判断实现,例如“equalP12”(杀怪任务已完成),才可接受收集任务,提升任务连贯性。

5.随机奖励:使用“movr变量数值”定义随机变量,例如“movrP53”,变量P5随机为0-3,搭配判断命令,实现随机发放奖励,例如P5=0发放药水,P5=1发放装备,增加任务趣味性。

六、补充说明

1.脚本编写完成后,建议先在测试服测试,模拟任务流程(接受、执行、提交),确认无报错、奖励正常、触发正常后,再应用到正式服务端。

2.不同引擎的扩展命令可能存在细微差异,编写脚本前,可查看对应引擎的帮助文档,确认扩展命令的语法格式,核心语法规则完全一致。

3.脚本编写时,建议添加注释(//注释内容),标注脚本用途、变量含义、命令功能,便于后续修改和维护,例如“//P0为任务状态变量,0=未接受,1=已完成”。

4.避免使用复杂语法和冗余命令,脚本逻辑尽量简洁明了,既便于引擎解析,也便于后续修改,基础语法即可满足大部分任务需求。

5.脚本备份:编写完成后,复制一份脚本文件备份,避免修改错误导致脚本损坏,同时便于后续恢复和版本调整。

6.变量使用注意:字符型变量(A0-A9)用于存储文字信息,数字型变量(P0-P9)用于存储数值,不可混用,例如不可用数字型变量存储物品名称。

[顶部]