本帖最后由 柳无色 于 2013-12-30 15:17 编辑
金庸水浒传的系统,从DOS版到复刻版,再到现在的引擎,经历了许多变化,因此研究金水并不是一件容易的事。
最近引擎制作者weyl公布了金水diy演示版,公布了除源码外的所有东西,任何人可基于此系统做任何的MOD。
在事件制作方面,经过weyl、KA以及五酒肆屋等人的努力,由kdef转到了lua,事件制作上比原来简单。
在这里我会作些事件与指令方面的简单讲解,大家可试一试去改动。
首先是事件的打开方法。
在演示版的script\event文件夹里,可以看到kaXXX.lua文件,这便是各个编号的事件了,相当于fish修改器事件编辑里面的各个编号的事件。
这些lua文件可用ue、madedit等工具打开。
例如:
打开后就可以编辑事件了。
要新增事件,就直接新建文件,做好事件后,保存为kaXXX.lua就可以了。
要实现事件,方法跟DOS一样,在Fishedit里的场景编辑的事件层里实现就可以了。
接着是指令的改动,Fishedit的事件指令与lua里的指令对应如下表。
举个简单的事件例子:
DarkScence();--场景变黑
ModifyEvent(15, 0, 0, 0, -2, -2, -1, -2, -2, -2, -2, -2, -2);--原版的3指令,重新修改事件内容,必不可少的指令
LightScence();--场景变亮
WalkFromTo(14, 27, 7, 27);--主角行走
Talk(0, "这是什么东西?", -2, 0, 0, 0);--对话,现在对话不用清屏,直接下一个对话就行。
Talk(0, "这是一面神奇的镜子,你可以从里面看到你的资质", "商贩", 1, 1, 0);
Talk(85, "哈,不知&&哥哥的资质是多少呢", -2, 0, 0, 0);
showstringwithbox(10, 10, '是否看资质');
a=menu(2, 10, 40, 100, {'是','否'});--显示菜单,返回值0是第一项,小于0是esc。
if a==0 then
b=GetRolePro(0,60);--原来50指令的一条,读取R属性,现在分开了,读人物是getrolepro,场景是getscencepro,物品是getitempro,参数是编号,偏移。
ShowTitle("你的资质为"..b, 1);--显示字幕。如果要显示变量,则像这条指令那样,显示的地方接”..变量名“(引号里内容)
if b<=50 then--分支不再用label,用if、while等条件、循环语句。
Talk(0, "你的资质也太那个了,这里有两个智慧果,送给你罢。", "商贩", 1, 1, 0);
GetItem(5,2);--得到物品的指令
exit();--原版的7跟-1,结束事件
end
else
exit();
end
(待编辑)
|