铁血丹心

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

[通用] 略谈LUA版修改5

[复制链接]
发表于 2010-3-10 21:46 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

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

x
本帖最后由 jy02785317 于 2010-8-18 11:10 编辑

==============================================================================================
前言
==============================================================================================
1,以下内容适用于游泳的鱼制作的金庸群侠传LUA复刻版,部分内容亦适用于金庸群侠传原版(DOS版)以及weyl制作的金庸群侠传passcal复刻版
2,以下所使用的修改工具为游泳的鱼制作的FishEdit_lua版,也有用到黄顺坤制作的sfe
3,以下内容侧重于制作mod,对于工具的使用不详加解释。如需进一步讲解,请参考其他文章或者直接联系工具的作者
4,修改时请注意多多备份,若按照以下内容,使您的作品出现了异常,我也无能为力

==============================================================================================
概叙
==============================================================================================
隔了这么久,才开始写5....
感觉越到后面越不好写,前面的基本有一定规律,什么导入贴图啊,什么做场景图啊,不管你的mod有什么不同,基本都是差不多的
而做起事件来,确很灵活,我也不确定能不能讲清楚
--------------------------------------
首先必须明白lua版和passcal复刻版事件上的区别
dos版,以及passcal复刻版,都是使用d文件,kdef文件,talk文件,这三个文件来做事件
    d文件,决定地图中的哪个坐标能触发事件
    kdef保存事件的具体内容
    ktalk保存人物对话(kdef中的对话指令不直接保存对话,而是将对话一条一条的保存在talk里,事件中只是用对话的编号)
而在lua版里,采用脚本来做事件,故而kdef这个文件,不再需要了
    通常,从论坛下载的lua版,在script\oldevent这个文件夹下,就是各个事件了
    其文件名格式是oldevent_XXX.lua,XXX为对应的事件编号。
    游戏在内场景下,对移动到某坐标,或者对某坐标按空格时,会调用一个函数访问d文件,获取是否能触发事件,如果可以则返回事件编号,假设编号是197,则调用script\oldevent下的oldevent_197.lua这个文件
下面是苍龙逐日里197号事件的脚本内容
  1. --function oldevent_197()
  2.     instruct_1(390,91,0);   --  1(1):[???]说: 有需要我帮忙的地方吗?
  3.     instruct_0();   --  0(0)::空语句(清屏)

  4.     if instruct_9(0,29) ==true then    --  9(9):是否要求加入?否则跳转到:Label0

  5.         if instruct_20(20,0) ==false then    --  20(14):队伍是否满?是则跳转到:Label1
  6.             instruct_10(91);   --  10(A):加入人物[温青青]
  7.             instruct_14();   --  14(E):场景变黑
  8.             instruct_3(-2,-2,0,0,0,0,0,0,0,0,-2,-2,-2);   --  3(3):修改事件定义:当前场景:当前场景事件编号
  9.             instruct_0();   --  0(0)::空语句(清屏)
  10.             instruct_13();   --  13(D):重新显示场景
  11.             do return; end
  12.         end    --:Label1

  13.         instruct_1(391,91,0);   --  1(1):[???]说: 你的队伍已满,我无法加入。
  14.         instruct_0();   --  0(0)::空语句(清屏)
  15.         do return; end
  16.     end    --:Label0

  17. --end
复制代码
--表示是注释符

如果说没有右边的那些注释,我想这段代码将极其难以看懂,的确如此
都是一些instruct_??的东西,不明所以,从这个角度来看,修改起来确实很麻烦

按理来说,使用脚本编写事件,编写起来容易,读起来也简单,
可是oldevent\下脚本可读性极低
这是因为里面的函数都是instruct的形式(后面的数字实际为指令号),如果说按照其功能换个名,我相信就很容易读了
究其原因,是因为游泳的鱼是自己制作了一个脚本,用于把原来的kdef转化成oldevent\下的脚本,即是说这些个脚本是程序转化来的,而不是人写的,另外其命名,也是根据原先在kdef里的指令号来的,比如说1号指令,就是instruct_(),如此,自然难以理解
如果说,修改的程度很低,可以继续沿用这些函数无妨
但是,如果是从新制作,我的建议是:重新写函数,或者给原先的instruct_??函数起个别名,比如说
  1. cls=instruct_0
  2. say=instruct_1
复制代码
这样,就可以用cls替代instruct_0(作用为清屏) 用say替代instruct_1(作用为对话),这样就好读多了

当然,你也可以换一种方法,先在passcal版里编辑好事件,然后用游泳的鱼提供的工具自动转化为脚本

对于鱼的kdef专为脚本,有一个地方我很不解,觉得做得不好
转化后,脚本里的对话指令,里面保存的是对话的编号,而不是对话文本
对话文本依然保存在talk文件里,导致修改很麻烦,一方面修改事件要改脚本,另一方面该对话偏偏又要在talk里改
所以,instruct_1这个函数大家最好不要用,可以用talk或者talkEx函数,具体的自己可以在jymain.lua中查看

综合以上,即鱼是将kdef转化为脚本,然后游戏中执行脚本

换个思路,可以考虑游戏中即时解析kdef文件,如此可以像其他版本一样制作事件。这方面的工作,我正在做,当然进度极其缓慢就是了。

另外需要说明的就是50指令,愿kdef里用到的50指令,是无法被鱼提供的工具转化的
我自己也考虑过此方面问题,的确很麻烦,特别是几个神一样的指令~~~~~~~~

所以,lua版还是用脚本制作事件比较好

==============================================================================================
oldevent和newevent
==============================================================================================

--未完待续,明天补(也不一定)

[ 本帖最后由 jy02785317 于 2010-3-10 22:12 编辑 ]
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-10 22:08 | 显示全部楼层
把lua转成可编辑模式似乎也不是难事
===
似乎跑题。。盼望LZ出个专用文本编辑语法加亮器

[ 本帖最后由 黄顺坤 于 2010-3-10 22:14 编辑 ]
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2010-3-10 22:16 | 显示全部楼层
不需要专用的吧

支持lua语法高亮的编辑器还是有几个的

[发帖际遇]: jy02785317和韦小宝、瘦头陀、胡逸之赌牌九,利用胡逸之出老千赚得银两12两。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-10 22:34 | 显示全部楼层
台湾的Notepad++和PSPad支援lua的语法加亮
PSPad默认没有打开Lua,需要自己设置一下
推荐PSPad,界面比较好
UE是付费软件
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-10 22:56 | 显示全部楼层
原帖由 weyl 于 2010-3-10 22:34 发表
台湾的Notepad++和PSPad支援lua的语法加亮
PSPad默认没有打开Lua,需要自己设置一下
推荐PSPad,界面比较好
UE是付费软件

目前没有完全支持鱼的api的语法高亮软件吧。。。
算了。。我写一个。。
(跳票概率80%)
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2010-3-10 22:58 | 显示全部楼层
原来值得是鱼的api啊

不知道能不能自己修改语法高亮的配置  我去看看


====

似乎没问题 修改中

[ 本帖最后由 jy02785317 于 2010-3-10 23:00 编辑 ]
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-10 23:05 | 显示全部楼层
终于到5了~~什么时候能写完?

相比起这些介绍,我更期待027的语法加亮器~

[发帖际遇]: winson7891偷看武当弟子练功,习得梯云纵,增加声望2。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2010-3-10 23:25 | 显示全部楼层
notepad++

选择lua  FUN2 自定义关键字  复制以下内容进去
  1. lib.Debug lib.EnableKeyRepeat lib.GetKey lib.GetTime lib.Delay lib.CharSet lib.SetClip lib.FillColor lib.Background lib.DrawRect lib.DrawStr lib.ShowSurface lib.ShowSlow lib.PicInit lib.PicLoadFile lib.PicLoadCache lib.GetPicXY lib.FullScreen lib.LoadPicture lib.PlayMIDI lib.PlayWAV lib.PlayMPEG lib.LoadMMap lib.GetMMap lib.DrawMMap lib.UnloadMMap lib.LoadSMap lib.SaveSMap lib.GetS lib.SetS lib.GetD lib.SetD lib.DrawSMap lib.LoadWarMap lib.GetWarMap lib.SetWarMap lib.CleanWarMap lib.DrawWarMap Byte.create Byte.loadfile Byte.savefile Byte.get16 Byte.set16 Byte.getu16 Byte.setu16 Byte.get32 Byte.set32 Byte.getstr Byte.setstr
复制代码
关闭后重新开启生效

本帖子中包含更多资源

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

x
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-10 23:42 | 显示全部楼层
肯定越后面越有深度
前面是九阴真经上部,后面是下部
“修改的程度很低,可以继续沿用这些函数无妨;如果是从新制作,建议重新写函数”
事件是重点之一
期待楼主详细的后续,越详细越好
不急的,慢工出细活

[发帖际遇]: 夏海卖下一个mod的制作人绝密采访稿,狂赚银两18。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-10 23:45 | 显示全部楼层
原帖由 黄顺坤 于 2010-3-10 22:56 发表

目前没有完全支持鱼的api的语法高亮软件吧。。。
算了。。我写一个。。
(跳票概率80%)

废话……当然没有……

[发帖际遇]: weyl在六派围攻光明顶时施展“放下屠刀”,各派高手纷纷放下兵器,收集起来后当废铁卖得银两25。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-29 00:26 | 显示全部楼层
很久没更新了
连载未结束
而且第5章也没写完
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

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

GMT+8, 2024-12-23 04:11

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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