注册 | 登录

游侠NETSHOW论坛





楼主: vbvan
打印 上一主题 下一主题

[原创] 汉之云脚本研究(附带MOD制作工具) [复制链接]

帖子
1270
精华
39
积分
13841
金钱
40858
荣誉
517
人气
2355
评议
0
跳转到指定楼层
楼主
发表于 2007-12-26 20:01:30 |显示全部楼层 |倒序浏览
汉之云使用了Lua做为脚本语言,版本是5.0。脚本存放在Text目录下的两个.C01文件中。
将其中的内容解压后就可以得到lua编译生成的二进制文件。可以使用lua附带的luac.exe -l还原为伪代码

这同时也意味着,这代轩辕剑的剧情将史无前例的能被玩家所定制!只要我们修改lua脚本就可以增删剧情 :-)

经过6天的努力,终于完全重建了汉之云的脚本源代码
附件里提供了MOD制作工具,以后有时间会详细介绍汉之云的脚本系统

2008.3.5日更新
提供对应繁体1.01版的脚本源代码

2009.3.10日更新
提供对应简体1.02版的脚本源代码
(此版的compile_main_102.bat文件有bug:1.02编译后无法使用说明: 1.02的BAT由于在编写时候出现问题,未使用C01文件进行压缩,只做了移动,所以可暂时使用附件中的main_102_fix.bat在使用Van大的文件进行编译完成后再次运行即可.(请观察文件大小从4MB+变为1MB+,仅涉及Main文件,Fight文件不影响)
--By 风行水.)

2009.4.7日更新
修正bat文件未压缩脚本的问题,感谢风版

免责声明
附件中提供的脚本源代码利用逆向工程重建,代码的版权属游戏公司所有。这里仅供玩家个人学习研究和制作MOD之用。任何对代码的非法使用均与本人无关


使用方法:
1、下载Bin.rar和Source.rar,解压到同一目录下
2、修改Source目录下的lua脚本
3、使用compile_main或者compile_fight重新生成C01文件(生成的C01文件在当前目录下)
4、替换游戏Text目录下的C01文件(注意备份原始文件)
5、进入游戏查看效果

附录:
汉之云怪物、物品和奇术全资料http://game.ali213.net/viewthread.php?tid=1881266
汉之云脚本编写简明教程http://game.ali213.net/viewthread.php?tid=1884574

[ 本帖最后由 vbvan 于 2009-4-7 20:08 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 3 人评分金钱 人气 收起 理由
mzp2009 + 1 good
海滨小猪 + 170 感谢更新!
风行水 + 50 + 5 感谢更新~!

总评分: 金钱 + 220  + 5  人气 + 1   查看全部评分

使用道具 举报

帖子
1270
精华
39
积分
13841
金钱
40858
荣誉
517
人气
2355
评议
0
沙发
发表于 2007-12-26 20:42:34 |显示全部楼层
show一下战斗脚本,看上去应该能实现比较多的东西出来

fightfield102 = function()
   local playerteampos = 0
   local playerside = 1
   local enemyteampos1 = 1
   local enemyteampos2 = 2
   local enemyside = 2
   local camset = 2
   local happenratio = 100
   local happenrange = 100
   local playermotion1 = 133
   local playereffect1 = 22422
   local playermotion2_1 = 121
   local playereffect2_1 = 22422
   local playermotion2_2 = 121
   local playereffect2_2 = 22422
   local playermotion3 = 133
   local playereffect3 = 22422
   local enemymotion1 = 133
   local enemyeffect1 = 22422
   local enemymotion2_1 = 133
   local enemyeffect2_1 = 22422
   local enemymotion2_2 = 133
   local enemyeffect2_2 = 22422
   local enemymotion3 = 133
   local enemyeffect3 = 22422
   if macro_checkevent(1, happenratio, happenrange) > -1 then
      local roleenemyid1, roleenemyname1 = f_isroleinpos(enemyside, enemyteampos1)
      local roleenemyid2, roleenemyname2 = f_isroleinpos(enemyside, enemyteampos2)
      local roleplayerid = -1
      local roleplayername = nil
      local count = 0
      while roleplayerid < 0 and count < 4 do
         roleplayerid, roleplayername = f_isroleinpos(playerside, count)
         count = count + 1
      end
      if roleenemyid1 > 0 and roleenemyid2 > 0 then
         f_setfocuscamera(enemyside, enemyteampos1, camset, -10, 0)
         f_settalkframepos(0.5, 0.7)
         f_showtalkframe(roleenemyname1, "哼哼,再逃啊!就不信你還能逃去哪!")
         f_waitanykey()
         f_showtalkframe(roleenemyname1, "等等就把你煉成丹藥吃了!")
         f_waitanykey()
         f_setfocuscamera(enemyside, enemyteampos2, camset, -10, 1)
         f_showtalkframe(roleenemyname2, "。。嗚嗚嗚。。。")
         f_waitanykey()
         f_hidetalkframe()
         f_setselectframepos(0.1, 0.5)
         f_showselectframe(2, "1。住手,放了牠!", "2。離開")
         local ans = getresolution()
         f_hideselectframe()
         if ans == 1 then
            f_setfocuscamera(playerside, playerteampos, camset, 10, 0)
            f_showtalkframe(roleplayername, "這未免太……")
            f_waitanykey()
            f_setfocuscamera(enemyside, enemyteampos1, camset, -10, 0)
            f_showtalkframe(roleenemyname1, "我跟我的戰利品說話,與你何干!")
            f_waitanykey()
            f_showtalkframe(roleenemyname1, "聽說人血也是煉丹聖品,就拿你們的血來試試好了!")
            f_waitanykey()
            f_singlerunaway(enemyside, enemyteampos2)
         elseif ans == 2 then
            f_grouprunaway(playerside)
         end
         f_turnonswitch(1)
         f_hidetalkframe()
      end
   end
   f_eventend()
end

使用道具 举报

帖子
1270
精华
39
积分
13841
金钱
40858
荣誉
517
人气
2355
评议
0
板凳
发表于 2008-1-4 12:32:42 |显示全部楼层
这里提供一个对利用逆向工程得到的Lua源代码重新编译压缩之后得到的脚本文件。有兴趣的朋友可以试验一下能否正常游戏。(注:附件在顶楼)

测试方法:
1、将附件解压,覆盖游戏目录Text\fight下的同名文件(请先备份原始文件)
2、进入游戏,找一个有对话的战斗场景,看看对话内容是否正常

如果一切正常的话,我会提供相应的Lua源代码和工具用于制作剧情MOD

使用道具 举报

帖子
1270
精华
39
积分
13841
金钱
40858
荣誉
517
人气
2355
评议
0
地板
发表于 2008-1-9 16:16:02 |显示全部楼层
经过6天的努力,终于完全重建了汉之云的脚本源代码
附件里提供了MOD制作工具,以后有时间会详细介绍汉之云的脚本系统

免责声明
附件中提供的脚本源代码利用逆向工程重建,代码的版权属游戏公司所有。这里仅供玩家个人学习研究和制作MOD之用。任何对代码的非法使用均与本人无关


使用方法:
1、下载Bin.rar和Source.rar,解压到同一目录下
2、修改Source目录下的lua脚本
3、使用compile_main或者compile_fight重新生成C01文件
4、替换游戏原来的C01文件(注意备份原始文件)
5、进入游戏查看效果

使用道具 举报

帖子
1270
精华
39
积分
13841
金钱
40858
荣誉
517
人气
2355
评议
0
5#
发表于 2008-1-9 20:05:57 |显示全部楼层
原帖由 tianwuld 于 2008-1-9 19:45 发表
去查了查相关资料
发现还是不是我这样的新手能搞定的……
只好等进一步的解说或是工具了……


如果你有C语言基础的话,阅读Lua脚本应当不是一件很困难的事情。
如果你想制作剧情MOD的话,需要先对各个文件的大致内容作一下浏览和归类。这些可以从函数名和文本等信息推断

具体的脚本分析要过些时候再写了

使用道具 举报

帖子
1270
精华
39
积分
13841
金钱
40858
荣誉
517
人气
2355
评议
0
6#
发表于 2008-1-9 21:20:50 |显示全部楼层
原帖由 tianwuld 于 2008-1-9 21:17 发表


阅读倒是还可以
不过自己编写还是有点难度
函数太多了点……
不过确实有些规律可循


用文本编辑器(比如EditPlus)打开时选择Big5的代码页即可

使用道具 举报

帖子
1270
精华
39
积分
13841
金钱
40858
荣誉
517
人气
2355
评议
0
7#
发表于 2008-1-21 11:10:42 |显示全部楼层
原帖由 RaffinKIRA 于 2008-1-21 10:37 发表
C01.exe和luac.exe
的使用方法能不能说一下呢


你可以参考compile_main.bat里的命令。
luac.exe是用于编译lua脚本的
C01.exe是用于生成C01文件的

你在命令行下直接输入luac或者C01就可以看到参数说明

使用道具 举报

帖子
1270
精华
39
积分
13841
金钱
40858
荣誉
517
人气
2355
评议
0
8#
发表于 2008-3-5 23:25:33 |显示全部楼层
3.5日更新
提供对应繁体1.01版的脚本源代码

简单看了一下,主要是改了不少文字错误,修了部分bug,新增了一些伙伴的剧情,和更新档里的说明一致~
不过ms这次更新又添了几个小bug,hoho

有兴趣的可以自己和1.00版的代码diff看看~

使用道具 举报

帖子
1270
精华
39
积分
13841
金钱
40858
荣誉
517
人气
2355
评议
0
9#
发表于 2009-3-10 22:24:56 |显示全部楼层
2009.3.10日更新
提供对应繁体1.02版的脚本源代码

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2024-5-24 14:31 , Processed in 0.372155 second(s), 13 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到