铁血丹心

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

[通用] 略谈LUA版修改4

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

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

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

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

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

==============================================================================================
修补BUG
==============================================================================================
以下均在苍龙逐日lua里发现并修补后测试通过

1闯王山洞不停地进入,无法出去
就原因来说,是小小猪设置有点问题,但是lua版里逻辑上也不够严谨,故而出现错误
将Game_MMap()函数修改一下
原为
  1. JY.SubScene=CanEnterScene(x,y);   --判断是否进入子场景
复制代码
改成
  1.         if direct~=-1 then
  2.                 JY.SubScene=CanEnterScene(x,y);   --判断是否进入子场景
  3.         end
复制代码
改后意思为,只有在有按键的情况下,才考虑是否进入子场景

2有的队友加入无武功,比如王难姑田伯光等,也是设置错误,将物品数目设成0了
修改如下
  1.     for i =1,4 do                --个人物品归公
  2.         local id =JY.Person[personid]["携带物品" .. i];
  3.         local n=JY.Person[personid]["携带物品数量" .. i];
  4.         if id>0 and n==0 then n=1 end
  5.         if id>=0 and n>0 then
  6.             instruct_2(id,n);
  7.             JY.Person[personid]["携带物品" .. i]=-1;
  8.             JY.Person[personid]["携带物品数量" .. i]=0;
  9.         end
  10.     end
复制代码
3自宫物品编号出错
lua版的错误,把自宫物品的编号写错 写成了葵花和玄冥,之前有讲过,不再多言

4绘图次序问题,造成部分场景显示有问题
需要修改源代码,重新编译主程序,代码如下
  1. /*
  2.         for(j=0;j<=2*jend-2*jstart+g_SMapAddY;j++){
  3.             for(i=istart;i<=iend;i++){
  4.             i1=i+j/2+jstart;
  5.                         j1=-i+j/2+j%2+jstart;

  6.      
  7.             x1=g_XScale*(i1-j1)+g_ScreenW/2;
  8.                         y1=g_YScale*(i1+j1)+g_ScreenH/2;

  9.                         xx=x+i1+xoff;
  10.                         yy=y+j1+yoff;

  11.                         if( (xx>=0) && (xx<S_XMax) && (yy>=0) && (yy<S_YMax) ){
  12.                 int d0=JY_GetS(sceneid,xx,yy,0);
  13.                                 if(d0>0){
  14.                       JY_LoadPic(0,d0,x1,y1,0,0);             //地面
  15.                                 }
  16.                         }
  17.                 }
  18.         }
  19. */
  20.         for(j=0;j<=2*jend-2*jstart+g_SMapAddY;j++){
  21.             for(i=istart;i<=iend;i++){
  22.             i1=i+j/2+jstart;
  23.                         j1=-i+j/2+j%2+jstart;
  24.            
  25.             x1=g_XScale*(i1-j1)+g_ScreenW/2;
  26.                         y1=g_YScale*(i1+j1)+g_ScreenH/2;

  27.                         xx=x+i1+xoff;
  28.                         yy=y+j1+yoff;

  29.                         if( (xx>=0) && (xx<S_XMax) && (yy>=0) && (yy<S_YMax) ){
  30.                 int d0=JY_GetS(sceneid,xx,yy,0);
  31.                 int d1=JY_GetS(sceneid,xx,yy,1);
  32.                 int d2=JY_GetS(sceneid,xx,yy,2);
  33.                 int d3=JY_GetS(sceneid,xx,yy,3);
  34.                 int d4=JY_GetS(sceneid,xx,yy,4);
  35.                 int d5=JY_GetS(sceneid,xx,yy,5);
  36.                                 if(d0>0){
  37.                                            JY_LoadPic(0,d0,x1,y1,0,0);             //地面
  38.                                 }
  39.                                 if(d1>0){
  40.                       JY_LoadPic(0,d1,x1,y1-d4,0,0);           //建筑
  41.                                 }
  42.                                 if(d2>0){
  43.                      JY_LoadPic(0,d2,x1,y1-d5,0,0);          //空中
  44.                                 }
  45.                                 if(d3>=0){           // 事件
  46.                                         int picnum=JY_GetD(sceneid,d3,7);
  47.                                         if(picnum>0){
  48.                        JY_LoadPic(0,picnum,x1,y1-d4,0,0);
  49.                                         }
  50.                                 }

  51.                                 if( (i1==-xoff) && (j1==-yoff) ){  //主角
  52.                        JY_LoadPic(0,Mypic*2,x1,y1-d4,0,0);
  53.                                 }
  54.                         }
  55.                 }
  56.         }
复制代码
先将绘制地面层注释掉,然后在后面加上绘制地面层部分

5已会某武功,但属性不够,依然无法学习
将UseThing_Type2(id)函数的
  1.        if CanUseThing(id,personid) then
复制代码
改成
  1.         if yes==1 or CanUseThing(id,personid) then
复制代码
yes,之前有判断人物是否会此武功,若会yes=1,不然=0

[ 本帖最后由 jy02785317 于 2010-2-27 10:37 编辑 ]
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-2 21:21 | 显示全部楼层
我说027你其实作这样的总结没啥人看得

又不是什么算法思路~加个判断之类的没啥学习价值

不如你把你修正整合后的源码版本发出来还比较有意义吧~
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2010-3-2 22:13 | 显示全部楼层
用处确实不是太大
只是把我修改中遇到的问题,一一列举了上来
我写着写着,也没啥兴趣了,想不到继续写什么了

只是上述问题的确是存在的,如果打算在lua版的基础上做mod,估计应该会碰到
------------------------------------------------------------------------------------------
再写似乎就只有写一些功能的实现了,不太好说了,大多都是代码了
我又不想发代码
况且就算发了,也没法直接用......

---------------------------------------------------------------------------------------------
整合后的源码的话,我感觉没必要
我对源码的修改只有两处
1,修改了绘图次序,前面已经把代码发出来了
2,加入了鼠标支持,不过源码部分很简单,反而是脚本部分代码多一点,主要是做了个鼠标寻路(不同于妇科版的鼠标行走,这个是点到哪走到哪)
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-2 23:28 | 显示全部楼层
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-3 20:15 | 显示全部楼层
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2010-3-3 20:19 | 显示全部楼层
先绘制地面层
然后逐点绘制每点的建筑层空中层


------
再次抗议楼上签名图   打字都卡

[发帖际遇]: jy02785317拜岳老三为师,得到见面礼银两20。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-9 18:30 | 显示全部楼层
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-10 20:03 | 显示全部楼层
这一讲,是苍龙lua的bug举例吧
改那么细,很了不起

请教
5. yes是初始值,还是后期会更改的变量?
“已会某武功,但属性不够,依然无法学习”
能否举个苍龙的例子?

PS:
“禁止任何人在任何时间于任何地点以任何
形式引用本人在任何时间于任何地点发表的任何言论 ”有点微软等大公司的味道了
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2010-3-10 20:07 | 显示全部楼层
yes是局部变量 只在该函数内有效,函数开始是会给它赋值

比如李沅芷,会柔云剑法,但是属性不够学
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-3-10 20:11 | 显示全部楼层
明白了,呵呵,谢谢
这个问题虽小,还是应该发现和解决
细心是必须的
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-10-29 17:53 | 显示全部楼层
yes变量 会导致游戏崩溃 换秘籍时

还有不知道绘图次序在哪改
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-7-10 18:54 | 显示全部楼层
膜拜
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-4-5 14:20 | 显示全部楼层
谢谢,终于找到如何修改闯王的这个bug了!
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

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

GMT+8, 2024-12-22 02:10

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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