铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 11381|回复: 17

金庸水浒传lua脚本事件解说(适用于新手)

[复制链接]
发表于 2015-1-29 17:02 | 显示全部楼层 |阅读模式
说明:金庸水浒传(以下称金水)从3.2版本开始,所有事件均已转换成lua脚本(参考金水MOD制作教程5楼:http://dawuxia.net/thread-281-1-1.html),事件制作已比从前用fish里的kdef事件要方便得多,不过对于不懂编程而又想了解的朋友或许还有些难度,本帖会以金水中的事件为例,进行分析解说,让不会编程的新手也能看明白金水里的lua事件。有问题或建议欢迎回帖交流。

基本指令解说
  对于了解过DOS的游戏指令的朋友来说,转换后的lua的指令或许会简单些。不过即使没了解过也没关系,本贴会对lua事件的基本指令进行详细的解说。再参考具体的事件,掌握指令并不是难事。
首先这里有一份脚本指令的表格,记录了从原版基本指令,到扩展的50指令,再到现在lua的脚本指令。

talk(对话指令)
talk是最基本的指令,也就是游戏里的对话。参数分别是:头像,内容,姓名,头像位置,是否显示头像。
头像就是head文件夹里的头像编号。
内容就是对话的内容,用""括住。
姓名,如果是头像对应的人物就写-2,如果写其他姓名,就用""括住,不显示姓名则写-1。
头像位置,0左1右
是否显示头像,0显示1不显示
ModifyEvent(修改事件定义指令)
这是游戏里最重要也是最难理解的指令,几乎每个事件都要用上。“修改事件定义”中的“事件”指的是场景事件。单说的话那明白,我就举个例子吧。
我在桃花岛的花瓶上新增了个场景事件,编号是[33]。如图:而这个事件的定义如下:。我的目标是对着这个花瓶按空格时,能说一句话,第二次按时,得到10两银子。并且之后再按无效果。
那么开始编辑事件1873。
如下,关键就是这个指令的参数:第一个是场景,第二个是场景事件编号,下面11个依次是上图场景事件定义的11个参数,从能否通过"到"坐标Y"。一般情况,最后三个是不变的,写-2,编号则写原来的,其余按自己的需要来写。



而这个事件里的修改事件定义指令,为何只有4个参数?因为scc考虑到有些情况修改定义时,往往只需要改其中的1个参数,比如这里只需要改事件1(空格触发)这个参数,因此弄出了本指令的另外一种4参数的形式(场景,事件编号,偏移,值)。
偏移的意思是从能否通过到坐标Y,分

确定




别是从0到10,我们改的是空格触发(事件1),所以偏移是2,第四个参数写-1指的是取消。也就是再次按触发时无任何事件发生。
效果如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2015-1-29 17:03 | 显示全部楼层

“黄逆乾”事件,ka1857

本帖最后由 朗月长空 于 2015-1-29 17:37 编辑

ModifyEvent(3, 71, 2,1859);
--此条指令为原来的“重新修改事件定义”指令,是游戏里极重要的指令,原来的指令有13个参数,了解过原版指令的朋友会知道,scc弄成了4个参数也可执行,这4个参数分别是场景,场景事件点编号,偏移,写入值。此条指令里数字的含义是:“3”指场景列表里,佛山镇的编号为3,“71”指武器铺里的事件点编号,“2”是事件点的偏移值,即空格触发事件,“1859”是ka1859事件。
那么,此条指令的作用是:下一次按空格再触发的事件就是ka1859事件(也就是那句话:“我是黄飞鸿的传人”)。
Talk(0, "少年人,你終於來了。", "黃逆乾", 1, 1, 0);
Talk(0, "(依我的經驗,說這話的人都不簡單)", -2, 0, 0, 0);
Talk(0, "沒錯,我是黃逆乾。", "黃逆乾", 1, 1, 0);
Talk(0, "你怎知道我在想什麼……(黃逆乾黃逆乾,這名字怎麼這麼熟悉)!", -2, 0, 0, 0);
Talk(0, "你知道佛山武功最出名的是什麼嗎?", "黃逆乾", 1, 1, 0);
Talk(0, "這我知道,自然是黃飛鴻的佛山無影腳。", -2, 0, 0, 0);
Talk(0, "我就是黃飛鴻的傳人。", "黃逆乾", 1, 1, 0);
Talk(0, "哇,名門之後耶……", -2, 0, 0, 0);
Talk(0, "只要你猜對這個廣東話謎語,我就傳你佛山無影腳。", "黃逆乾", 1, 1, 0);
Talk(0, "= =!好吧。", -2, 0, 0, 0);
--以上是对话,应该没什么难度,参数分别是头像,内容,名字显示,头像位置,后面两个写0。
a=-1;
while a<0 do
    clear();
    showstringwithbox(10, 10, '牛不耕田。(打一外邦名字)');
    a=menu(4, 10, 40, 100, {'吉隆坡','新加坡','馬尼拉','曼谷'});
end
--以上的作用是显示一个菜单,并且不能用esc取消(因为你选择选项之前,a始终小于0)。
clear();是为了清屏,showstringwithbox就是显示一串东西,前面两个参数是显示的位置,第三个参数是显示的内容,用单引号括住,a=menu的意思是,你在菜单里选的选项,会返回给a,比如你选了第一个选项,a的值就是0,选了第二个,a的值就是1。
if a==2 then
    Talk(0, "少年人,不錯,這就是佛山無影腳的基本功夫。", "黃逆乾", 1, 1, 0);
    Talk(0, "謝謝黃大大。", -2, 0, 0, 0);
    ShowTitle("全隊輕功增加10。", 1);
--显示全队轻功增加10的字样。
    for i=0,5 do
        b=getmember(i);
        if b>=0 then
            putrolepro(getrolepro(b, 44) + 10, b, 44);
        end
    end
--以上的作用是队里的人,从主角开始,每人的轻功增加10,b=getmember(i),b就是队伍里第i个人的人物编号,i从0到5,意思就是全队人;if b>=0 then如果队伍里还有人,就进行下面增加轻功的指令,因为如果b小于0,就说明队伍里第i个人不存在;putrolepro(getrolepro(b, 44) + 10, b, 44),,getrolepro(b, 44) + 10意思是,在b号人物的44偏移的数值基础上加10,44偏移就是轻功,如果此条写成putrolepro(100, b, 44);就变成了,使b号人物的44偏移(轻功)改成100。这么说应该清楚点吧。
else
--如果选错选项,就进行下面的内容。
    Talk(0, "少年人,這可不對哪,看來我們無緣。", "黃逆乾", 1, 1, 0);
    Talk(0, "……", -2, 0, 0, 0);
end

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2015-1-29 20:55 | 显示全部楼层
,“2”是事件点的偏移值,即空格触发事件,
大大,顺便说说这个数值可以写几种,分别是什么用处
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2015-1-29 22:12 | 显示全部楼层
对于看到英文就头疼的人来说,真没有办法用lua格式写剧情,尤其是各种花样的判定:@
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2015-1-29 23:47 | 显示全部楼层
koko4444 发表于 2015-1-29 20:55
,“2”是事件点的偏移值,即空格触发事件,
大大,顺便说说这个数值可以写几种,分别是什么用处 ...

我之后会在顶楼或新开一楼来说明一下基本指令的参数,谢谢支持。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2015-1-30 10:59 | 显示全部楼层
:lol:lol我来了
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2015-2-8 18:00 | 显示全部楼层
請問一下,我大概懂TryBattle這個指令是選擇編號第幾場的戰鬥這樣。

那如果我想要去改變這場戰鬥的內容,要找什麼東西啊?

比方編號8的戰鬥是在歸雲莊打李莫愁,我如果想在這場戰鬥裡多加一個小兵進去,是應該改什麼?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2015-2-8 18:08 | 显示全部楼层
shoywind 发表于 2015-2-8 18:00
請問一下,我大概懂TryBattle這個指令是選擇編號第幾場的戰鬥這樣。

那如果我想要去改變這場戰鬥的內容, ...

这是属于R编辑里的战斗编辑。用sfe打开游戏编辑里的战斗编辑,然后点导出到excel,之后可以打开战斗的表格,就可以任意编辑战斗的数据。,编辑好再导入就行了。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2015-2-8 20:46 | 显示全部楼层
朗月长空 发表于 2015-2-8 18:08
这是属于R编辑里的战斗编辑。用sfe打开游戏编辑里的战斗编辑,然后点导出到excel,之后可以打开战斗的表 ...

多謝教學,只是可惜我這邊是繁體系統,不管怎麼弄都會因為編碼問題改不起來。(大概除了安裝簡體系統以外就沒轍了。applocale之類的我也試過了。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2015-2-8 21:02 来自手机 | 显示全部楼层
脚本编码是utf8 繁体系统没问题的
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2015-2-8 21:10 | 显示全部楼层
scc__ 发表于 2015-2-8 21:02
脚本编码是utf8 繁体系统没问题的

lua腳本是沒問題,可是要去編戰鬥內容就轉不出excel的文件了。

他一直丟runtime error給我。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2015-3-1 21:21 | 显示全部楼层
本帖最后由 朗月长空 于 2015-3-7 10:40 编辑
大大,有空多讲解一些命令吧,
写lua的事件,一般用什么文本编辑器呀,我都是用ue看的
不知道有没啥简单好用的lua脚本编写器


【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2015-3-2 10:49 | 显示全部楼层
如果想把人物升级时随机加点更改成固定加点的话,有法透过LUA修改来达成吗?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2015-3-2 12:39 | 显示全部楼层
prettysnow 发表于 2015-3-2 10:49
如果想把人物升级时随机加点更改成固定加点的话,有法透过LUA修改来达成吗? ...

应该要改源代码才能把升级变成固定加点吧,不过要是设个事件只要人物升级的时候就调用该事件,使人物加点固定,应该也可以吧
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2015-3-7 10:41 | 显示全部楼层

scc大大推荐我用的Madedit
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2016-3-7 08:19 | 显示全部楼层
金水大地图能更换吗,换成苍龙的
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2016-3-10 20:22 | 显示全部楼层
461610390 发表于 2016-3-7 08:19
金水大地图能更换吗,换成苍龙的

.....................可
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2016-9-30 13:07 | 显示全部楼层
这个教程好。不过改内容太麻烦了。还是用原来的内容好,就改改武功和头像。哈哈
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-12-21 22:51

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表