铁血丹心

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

加了一段代码后我囧了,求解决方法

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

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

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

x
本帖最后由 苍天泰坦 于 2012-3-21 08:05 编辑

代码如下:
if pid==50 and wugong==26 then
JY.Wugong[26]["名称"]="狂龙天征"
JY.Wugong[26]["攻击范围"]=3
JY.Wugong[26]["杀伤范围" .. 10]=5
    else
JY.Wugong[26]["名称"]="降龙十八掌"
JY.Wugong[26]["攻击范围"]=0
JY.Wugong[26]["杀伤范围" .. 10]=0
end

代码很简单,判断人物是萧峰,并且使用的武功是降龙十八掌时,武功变为5*5范围的面杀武功,其他人用降龙十八掌时还是原来的点杀伤武功。

版本是苍龙逐日LUA复刻版

我是把上述代码加到了执行战斗的函数function War_Fight_Sub(id,wugongnum,x,y),实际测试确实能用,只是有一点很蛋疼,测试萧峰单挑洪七时,萧峰的群杀很正常,但洪七就开始表演打空气了,通常是围在萧峰周围出手,但每次出手后基本上都是直接打在离萧峰不远的空地上
求解决方法
手机发帖,内容可能有点乱,请多包涵
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-20 10:46 | 显示全部楼层
原来的攻击范围和杀伤范围,不是0和0吧
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-3-20 10:56 | 显示全部楼层
确实都是0,攻击范围0是点攻击,3是面攻击,通常点攻击的一到十级杀伤范围都是0,即使不是,在攻击范围是0时这个参数也不起作用。

怀疑可能是因为什么原因导致AI把洪七的点攻击误判为面攻击,才会这么怪异吧
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-20 11:49 | 显示全部楼层
洪七公的降龙十八掌是十级么?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-20 12:56 | 显示全部楼层
那样改必然是这种结果
建议你看看自动攻击的代码处理流程,就能明白原因了                       
重点看这个函数        War_AutoExecuteFight

另外如果要改面攻,其实不用改武功参数
直接改战斗第四层数据就可以了       
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-20 16:23 | 显示全部楼层
tsmdsyp 发表于 2012-3-20 12:56
那样改必然是这种结果
建议你看看自动攻击的代码处理流程,就能明白原因了                       
重点看这个函数        War_AutoEx ...

啊领教了。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-20 18:29 | 显示全部楼层
基本数据别随便更改啊
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-3-21 06:14 | 显示全部楼层
谢S大,问题已经解决,上夜班忙里偷闲用手机看了几个小时的代码,问题确实出在攻击处理上,War_AutoCalMaxEnemy函数里,不知道是不是鱼大在写代码时疏忽了,这个函数里有一段是同时处理了点和面的攻击,更狠的是,如果点攻击武功的杀伤范围大于0,就按面攻击的杀伤范围来计算,如果在R数据里设置武功时不小心把点攻击武功设置了杀伤范围,那该武功就会对着空气狂打o>_<o~
DOS版是无论如何也不会出现这种现象的,被以往的经验误导了,根本没想到会是这个原因,话说,这个问题一直没人注意过吗?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-21 13:01 | 显示全部楼层
嗯,学习了
鱼大写的代码我觉得问题不大哦,只是为了代码书写上的方便吧
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-22 12:38 | 显示全部楼层
回复 苍天泰坦 的帖子

其实鱼的代码没有问题
出现空打的原因是你加入的的那段代码会导致
自动战斗的运行过程中出现一个逻辑性的错误
原因就在War_AutoExecuteFight这个函数中
解决的方法也很简单,只需在此函数中做点修正即可
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-3-22 21:07 | 显示全部楼层
回复 tsmdsyp 的帖子

确实如此,原本以为正常了,又测试了下,分别改成面和线攻击又出现线攻击打空气的情形了-_-#
晚上有空再看看源码
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-3-23 07:18 | 显示全部楼层
tsmdsyp 发表于 2012-3-22 12:38
回复 苍天泰坦 的帖子

其实鱼的代码没有问题

捧着手机看了一晚上,看得蛋碎,怎么看也是感觉问题出在War_AutoCalMaxEnemy里,总不至于是人物坐标上出问题了吧?请S大给个修复的答案吧。
不是我不想研究,一来水平有限,二来手头没电脑,平时一直是用手机修改,然后在手机上运行测试,手机看源码委实看得蛋疼
原本加这段代码的主因就是如果手工在R文件里添加新武功太蛋疼,才想用代码解决
不过现在一想,直接修改武功参数还是很有用的,比如定义小日本用某武功的话,武功名改为“迎风一刀斩”,或者鳄鱼弄个按攻击次数依次显示成“我啃”“再啃”“往死里啃”,第三次攻击后武功名恒定显示“狂啃”之类的定义,想必会很有趣吧O(∩_∩)O
武功动画和杀伤力也可以顺手调整一下,这样基本和新增一个武功也差不多了。
嘿嘿,以后就不用再为了看着雪怪放白鸵雪山掌而蛋疼了

对了,还有个问题,如果直接在第四层以攻击人物为中心绘制面攻击会出现动画显示残缺的现象,点攻击最为残缺,只显示大概三格武功效果动画,十字攻击稍微正常点,但是四角都有缺边,苍炎源码现在手头还没有,手机流量太少,下不起,故无法对比查看问题出在哪里
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-23 11:41 | 显示全部楼层
里面的自动战斗代码并不适用。在那个未解密的ai文件里面才有具体的。看自动战斗的时候用到了unnamed函数,搜索不到的。我找027要了一份,结果发过来的东西被论坛吃掉了一小部分,导致不能直接运行,只能看看原理。龙人版的源码里面也有一小部分可以参考。但这都不是重点。
说说我的看法。War_Fight_Sub里面修改范围出错的原因是因为,此时已经选择好了用未修改的武功范围攻击的目标坐标。所以此时修改武功数据只有下一次攻击,AI才会正确的选择攻击的坐标。
然而楼主用萧峰打洪七公,那么武功的攻击范围就不停的切换导致洪七公打不中人。我建议,在人物行动的时候执行楼主写的代码。不用判定使用武功,直接判定是否乔峰,然后修改数据即可。

点评

LZ改的是苍龙源版,应该没有unname这函数  发表于 2012-3-23 12:52
不过我说的是苍半。。。是否适用于苍炎不能确定。。。  发表于 2012-3-23 11:43
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-23 12:49 | 显示全部楼层
苍天泰坦 发表于 2012-3-23 07:18
捧着手机看了一晚上,看得蛋碎,怎么看也是感觉问题出在War_AutoCalMaxEnemy里,总不至于是人物坐标上出问 ...

自动战斗时,AI会先根据选定武功的类型及范围进行一次预算
来选择出最佳的攻击位置,这个功能由War_AutoCalMaxEnemy函数完成
注意这里只是预算,并没有实际设定攻击范围
由War_AutoCalMaxEnemy函数选出最佳攻击点后
将得出的值再赋给War_Fight_Sub函数进行实际攻击

那么,根据这样的流程,就能看出出现空打的原因了
当萧峰行动后,降龙十八掌的范围变成了5*5的面攻
然后到洪七行动时,在War_AutoCalMaxEnemy函数中进行预算时
降龙的攻击范围也会是面攻
此时将攻击点设在被攻击人的周围三格之内也是有效的范围
但当将这个值赋到War_Fight_Sub函数后进行实际攻击范围设定时
降龙的攻击范围却变回了点攻,也就是只有攻击点那一格有效
这样当选择的攻击点不是正好处在被攻击者那一格的话
就会出现空打了
明白了原因,要修复就简单了,方法有很多
总之就是要让预算和实际设定时的数据保持一致即可

关于你说的那个设定第四层数据会导致武功动画显示有问题
要看看你具体是怎么写的,才能找到原因

点评

抱歉,没注意看。不过我也说了不是重点。。。  发表于 2012-3-23 20:09
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-3-23 20:25 | 显示全部楼层
感谢楼上2位的分析,特别是S大的详细的源码分析,既然自动战斗的循环机制是这样,我就干脆直接把代码移到了判定攻击位置的War_AutoCalMaxEnemyMap里,直接在判定攻击位置前先修改攻击类型,测试结果一切正常,点,线,十字,面都能正常攻击,不会再出现空打现象了

第四层动画显示残缺文字阐述可能会说不清楚,等会我去下个手机截图软件截两张图,再附上代码一起发过来吧
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-24 13:49 | 显示全部楼层
回复 苍天泰坦 的帖子

算了,别看苍炎的源码了
那里面的写法是在测试一些古怪的攻击范围代码后在其上直接修改的

要画面攻最简单了
首先,你要确定是要以原攻击点为基点还是当前人物坐标为基点
当然某些武功的攻击基点就是自身的坐标(如十字范围的)
然后,先用 CleanWarMap(4,0) 这个指令把原来设定的范围清掉
如果是以原攻击点画5*5的面攻,这样写:

    for i=x-2,x+2 do
         for j=y-2,y+2 do
             SetWarMap(i,j,4,1)
        end
    end

如果以当前人物坐标为基点
把上面的x,y换成人物坐标即可
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-3-24 00:25 | 显示全部楼层
tsmdsyp 发表于 2012-3-23 12:49
自动战斗时,AI会先根据选定武功的类型及范围进行一次预算
来选择出最佳的攻击位置,这个功能由War_Auto ...

只能上传一张图片?
这张是降龙的点攻击时的截图
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-3-24 00:36 | 显示全部楼层

标题

这是九剑的十字攻击,这个稍微正常点,不过还是有缺边,截图截了半小时,九剑动画效果太差,根本看不清楚,干脆改了下动画

傍晚时特地去了一趟网吧,把苍炎源码下载回来了,代码是用的刚刚从苍炎里提取出来的降龙三叠浪绘攻击范围代码,但动画效果还是这样,费解

代码如下:

if pid==35 and wugong==47 then--判断如果是令狐冲使用九剑
for i=1,level/2 1 do
for j=1,level/2 1 do
SetWarMap(WAR.Person[WAR.CurID]["坐标X"] i-1,WAR.Person[WAR.CurID]["坐标Y"] j-1,4,1)--写战斗层4,以攻击方为中心绘制面型攻击范围,范围等于武功等级/2,即最大为5*5范围
SetWarMap(WAR.Person[WAR.CurID]["坐标X"]-i 1,WAR.Person[WAR.CurID]["坐标Y"] j-1,4,1)
SetWarMap(WAR.Person[WAR.CurID]["坐标X"] i-1,WAR.Person[WAR.CurID]["坐标Y"]-j 1,4,1)
SetWarMap(WAR.Person[WAR.CurID]["坐标X"]-i 1,WAR.Person[WAR.CurID]["坐标Y"]-j 1,4,1)
end
end
end

点评

鼓励一下吧,虽然我不太喜欢这种实用性低的武功设置(就是如果要大批改的话,整体代码会混乱),评分限制真麻烦  发表于 2012-3-24 03:24

评分

参与人数 1声望 +5 收起 理由
winson7891 + 5 鼓励一下吧,虽然我不太喜欢这种实用性低的.

查看全部评分

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-3-25 19:08 | 显示全部楼层
tsmdsyp 发表于 2012-3-24 13:49
回复 苍天泰坦 的帖子

算了,别看苍炎的源码了

很奇怪,用了上面的代码后仍然是实际攻击范围是群杀,但动画仍是残缺不全,另外,代码一直都是在CleanWarMap(4,0)指令之下的
手机的dedit文本编辑器又出现系统错误问题了,折腾了一天也没弄好,无法再进一步测试了
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-3-26 12:13 | 显示全部楼层
苍天泰坦 发表于 2012-3-25 19:08
很奇怪,用了上面的代码后仍然是实际攻击范围是群杀,但动画仍是残缺不全,另外,代码一直都是在CleanWar ...

看了下原版的代码,是绘制武功动画方式的问题
原版这里的处理方式麻烦了点
同样解决的方法有很多,这里提供一种做为参考
还是以画5*5的面攻举例:
在设定范围后,再加上这样的代码即可
WAR.EffectXY={};
WAR.EffectXY[1]={x-2*2,y};
WAR.EffectXY[2]={x+2*2,y};

最好的方法是修改一下War_ShowFight这个函数,可以一劳永逸

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

虽然我不太喜欢这种实用性低的武功设置
(就是如果要大批改的话,整体代码会混乱)

..........
大批改不会建表么?难道还要一个一个的写
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-3-27 11:35 | 显示全部楼层
tsmdsyp 发表于 2012-3-26 12:13
看了下原版的代码,是绘制武功动画方式的问题
原版这里的处理方式麻烦了点
同样解决的方法有很多,这里 ...

恩,谢S大指点
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

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

GMT+8, 2024-11-15 12:11

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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