传奇脚本基础含义通俗讲解 脚本文件作用与常用文件类型介绍

来源: 作者: 点击:
传奇脚本是用来控制游戏内各类事件执行逻辑的文本代码,依靠引擎读取文本内的指令,实现游戏各类交互规则,不需要编译,使用普通文本工具就可以查看和编辑,服务端依靠脚本完成NPC对话、怪物触发、奖励发放、技能附加效果等各类自定义功能,很多游戏里的特色玩法都是依靠脚本实现。

脚本只运行在服务端,客户端不处理脚本逻辑,玩家在游戏内看到的各类交互效果,都是服务端执行脚本之后反馈到客户端展示。脚本由固定的关键字、判断条件、执行命令构成,按照从上到下顺序执行,先做条件判断,满足条件之后才会执行对应的动作,不满足条件就跳过本段代码,继续向下读取内容。

脚本可以实现的功能覆盖游戏大量模块。NPC对话交互,玩家点击NPC弹出文字选项,选择不同选项触发不同动作,领取任务、兑换道具、修理装备、传送地图、合成物品,全部依靠NPC脚本。怪物触发脚本,怪物死亡之后执行指令,控制掉落物品、发放经验、触发地图提示、召唤新怪物,也可以在怪物被攻击时触发特殊行为。技能附加脚本,玩家释放技能时执行代码,比如道士召唤神兽之后增加属性,法师释放技能触发额外伤害,这类附加逻辑写在技能触发脚本内。还有地图进入判断脚本,限制进入地图的等级、金币、道具条件,进入地图之后定时扣取资源,定时刷怪、清理地图玩家等功能。

常用的脚本文件分类,不同引擎目录结构大体相近。QFunction-0.txt属于全局功能脚本,用来捕捉游戏内各种事件,释放技能、玩家升级、击杀怪物、上线下线事件都在这里触发,是修改附加效果最常用的脚本文件。NPC脚本放在Market_Def文件夹,每一个NPC对应一份文本文件,Merchant.txt登记NPC名称、地图坐标与脚本文件路径,引擎读取登记信息,加载对应的NPC脚本。QuestDiary目录存放任务类独立脚本,复杂任务会拆分成多个文本文件,通过#CALL指令在其他脚本内调用,方便分段管理大量代码。MapQuest.txt是地图事件脚本,用来监听玩家进出地图、在地图内定时执行动作。

脚本基础执行结构分为条件段和动作段,#IF代表条件开始,写判断语句,检测玩家等级、背包物品、金币数量、身上buff;#ACT代表动作开始,填写要执行的指令,扣取道具、增加金币、传送人物、给予装备;#SACT用来发送提示文字给玩家。一段完整脚本会先判断条件,条件成立执行动作,条件不成立直接跳过。书写格式存在严格要求,换行、空格、关键字写错,都会造成脚本无法正常运行。

脚本和数据库的区别需要分清。Monster.DB、Magic.DB这类数据库文件,用来存放怪物基础属性、技能基础参数,怪物血量、攻击,技能蓝耗、学习等级都保存在数据库,属于静态数据。脚本属于动态逻辑,控制什么时候触发动作,数据库定义基础数值,脚本定义行为规则,两者搭配才能完成完整功能。修改怪物基础血量直接改动数据库,怪物死亡掉落额外奖励这类动态效果,使用脚本编写。

脚本调试方式,修改脚本保存之后,部分文件可以在M2控制台使用重载命令加载,不用重启整套服务端,部分核心脚本改动需要重启服务端。修改完成后进入游戏测试对应的功能,查看执行结果,出现异常返回文本检查关键字、符号、判断条件,逐步定位错误位置。

脚本不是游戏必须自带的内容,原版基础内容大多依靠引擎内核与数据库实现,脚本更多用来扩展自定义玩法。原版基础的召唤神兽、雷电术这类基础技能,核心逻辑写在引擎内核,没有独立脚本,想要增加召唤神兽附加效果,才需要编写额外脚本。很多特色玩法,比如限时活动、装备鉴定、称号领取、副本通关奖励,都是后期通过新增脚本开发出来。

编写脚本需要熟悉引擎对应的命令库,不同引擎命令存在细微差异,旧引擎命令和新版引擎不能直接通用,直接复制其他版本脚本容易出现执行失败。脚本的核心作用就是扩展游戏规则,用文本指令设定事件触发条件与对应动作,以此丰富游戏内各类玩法交互。