OMOD脚本系统
动态编译的脚本文件,可以直接和程序内的变量交互、调用程序内的函数和子过程,直接改写能力技能、创建NPC、创建道具、写剧情等同儿戏,还有更高级的事情可以干。
动态编译的脚本文件,可以直接和程序内的变量交互、调用程序内的函数和子过程,直接改写能力技能、创建NPC、创建道具、写剧情等同儿戏,还有更高级的事情可以干。
一个脚本分成两个部分,“注册部分”和 “执行部分”。
注册部分就是“设定应该在什么时候运行这个脚本的条件” 。
在游戏启动时会固定执行脚本内的“OmodScriptReg”子过程,将条件记入数组以方便判断。
执行部分就是通过了注册部分的设定的条件判断,确定执行这个脚本 。
程序是固定执行脚本内的“OmodScriptRun”子过程,执行的结果就由你定了。
现在可以参考一下例子001,来简单理解一下。
在OmodScriptReg内的注册条件有三个设计方向,一是以进入地区来触发,二是以杀死某物来触发,三是以拥有某道具来触发。下边将为每种设计方向讲明可以使用的注册条件和要注意的问题。
1,以地区来触发
RegArea是必要的,一定要注册一个地图,没有的话直接跳过。
RegAreaLayer、RegRand、RegFlag、RegCharaId、RegCharaRaceType、RegCharaClassType、RegCharaRelation、RegCharaHow均为非必要。
其中RegCharaId、RegCharaRaceType、RegCharaClassType这三个为排它性的,三个之中只能用一个。
2,以杀死某物来触发
RegKillTarge是必要的,一定要注册一个要杀死的角色ID,没有的话直接跳过。
RegArea、RegAreaLayer、RegFlag、RegKillTargeNum均为非必要。
3,以拥有道具来触发
未发开。
4,直接更新原始的角色数据
必须以UpdateCreature来声明目标的dbID来触发,该类型脚本是用于更新db_creature.xml载入后的数据。仅在游戏启动时执行一次,不像上边的几类脚本那样常驻,且不计入脚本数量(游戏启动时显示的)。
其实这个没什么好说明的,一上手就是写HSP代码了,要注意的是先了解我给出的定义、变量之类的再来考虑能否满足要求。