铁血丹心

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

[不负责任的教程]新手DIY源码应用教程2.2 - 连击的实现

[复制链接]
发表于 2012-8-17 06:49 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 二宫和也 于 2012-8-18 11:27 编辑

返回教程索引

2.2
那一碗黯然销魂饭 - 连击连击连击的实现

龙人版的杨过邪线后用黯然会几率出现3连击,这个是如何实现的呢?先看一下代码,搜索词杨过黯然销魂掌
  1. if pid == 58 and JY.Person[pid]["武功" .. wugongnum] == 25 and
  2. JY.Person[pid]["武功等级" .. wugongnum] == 999 and GetS(86,11,11,5) == 2
  3. then
  4.         local jl = 10 --默认发动机率为10%
  5.         if JY.Person[58]["受伤程度"] > 50 then --内伤大于50时, 每增加10点极意增加10%
  6.                 jl = jl + (JY.Person[58]["受伤程度"]-50);                                 
  7.         end   
  8.         if JY.Person[58]["生命"] < JY.Person[58]["生命最大值"]/2 then
  9.                 jl = jl + math.ceil((JY.Person[58]["生命最大值"]/2 - JY.Person[58]["生命"])/10);                            end
  10.         if jl > Rnd(100) then --判断极意触发 三连
  11.                 fightnum = 3;
  12.         end        
  13. end
复制代码
照例,if语句里面你可以看出判定条件为1)人物是杨过(58),2)用的是黯然,3)黯然需要极,4)GetS(86,11,11,5) == 2,这个是判定神雕走的是邪线,你知道就好

以上条件都满足的话,进入几率的判定,这一次并没有直接运用到JLSD,因为作者的想法是,受伤越重或者生命越小则几率越高。我们一步步看下去:
1)local jl = 10:前面我说到了“定义”这个概念,这里就是一个定义的例子,我们在这里定义了一个名字为"jl"的变量(其实就是几率的拼音缩写),并把它的初始数值设成了10。local的意思是,这个jl只能在这一段代码里面使用,就像你中国的户口到美帝那边就不好使了,一个道理。
2)接下来就容易了,你一看就知道,杨过内伤如果大于50,则每加一点内伤jl这个变量增加1点;生命值也是同理,越少则jl越大
3)最后进行判定,Rnd(100)这个函数会随机产生0-100的数(修正:应该是0-99),这个有点类似math.random,不过前者是自己写的函数,后者是lua预设的公式。只有jl这个变量大于Rnd(100)产生的随机数时,才能产生效果。所以如果杨过是满状态的话,几率只有初始的10%,如果杨过内伤100的话,几率增加到了60%(自己算算对不对?)
4)最后是这个极意的效果:fightnum = 3。这个fightnum也是一个变量,掌管着攻击次数。现在就是说,如果特效判定成功,杨过的攻击变成3连击。你想把它变成100连击就把fightnum改成100...

如果顺着这段代码继续往上面看,你会看到一堆判定fightnum值的语句,都有注释,可以自己慢慢研究某些特殊的连击效果是怎样产生的,搜索关键词:判断连击

以下是应用篇。问题:如果主角用玄冥时有70%的几率出现4连击,自身中毒每高10点几率多1点,怎样写?

答案:
  1. if pid == 0 and JY.Person[pid]["武功" .. wugongnum] == 21 then
  2.         local jl = 70
  3.         jl = jl + math.modf(JY.Person[pid]["中毒程度"] / 10)
  4.         if jl > Rnd(100) then               
  5.                 fightnum = 4
  6.         end        
  7. end
复制代码

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

这帖有啥禁忌语言了?搞得被封id

点评

还真是,刚发现  发表于 2012-8-17 23:08
俺也不清楚= =...而且这贴发出去之后就被坛子吞了,害得我又发了一遍,结果现在变成有两个相同的帖子了= =  发表于 2012-8-17 22:50
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-8-18 11:04 | 显示全部楼层
可否帮忙给黄蓉做个打狗必连击,百分之三十机率三连的代码?

点评

这位同学...教程已经很浅显易懂了吧= =...自己照着试做如何?如果还是不懂再求助?  发表于 2012-8-18 11:10
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-8-18 11:12 | 显示全部楼层
if pid == 38 and JY.Person[pid]["武功" .. wugongnum] == 80then
        local jl = 70
        jl = jl + math.modf(JY.Person[pid]["中毒程度"] / 10)
        if jl > Rnd(100) then               
                fightnum = 4
        end        
end
就像这个,我改了黄蓉和打狗的代码,但是也不行啊,确实还没明白
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-8-18 11:18 | 显示全部楼层
回复 jf780716 的帖子

黄蓉的人物编号是56 = =
  1. if pid == 56 and JY.Person[pid]["武功" .. wugongnum] == 80 then --判定黄蓉和打狗
  2.         fightnum = 2 --必连击
  3.         if JLSD(0, 30, pid) then --30%几率
  4.                 fightnum = 3 --三连击
  5.         end
  6. end
复制代码


【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-8-18 11:24 | 显示全部楼层
神贴。。收益很大。。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-8-18 11:40 | 显示全部楼层
谢谢楼主,神人!
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-10-11 18:35 | 显示全部楼层
麻烦楼主弄个 主角 六脉 三连!
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-10-11 18:44 | 显示全部楼层
本帖最后由 cbws 于 2012-10-11 18:44 编辑

回复 ke6880031 的帖子

注意!不适合龙人版只适合山寨版。
if ZJ(pid) and JY.Person[pid]["武功" .. wugongnum] == 49 then
        local jl = 0
        jl = JY.Person[pid]["内力"]
        if math.random(10000) < jl then               
                fightnum = 3
        end        
end

点评

附:纠正2大的一个错误,想100连击并不能用简单的fightnum = 100实现。  发表于 2012-10-11 18:46
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-10-12 13:13 | 显示全部楼层
回复 cbws 的帖子



谢谢~ 爱死你了
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-10-12 13:16 | 显示全部楼层
五连击就够了,再多了有点像打飞机了
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

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

GMT+8, 2024-12-24 22:16

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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