Project1

标题: 如何製作武器隨機發動技能? [打印本页]

作者: deathmagician    时间: 2010-11-15 08:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: fux4    时间: 2010-11-15 08:39
本帖最后由 fux2 于 2010-11-15 10:33 编辑

回复 deathmagician 的帖子

手机无法测试,不知对否,for的end没写,自行添加。
  1. ha = {16=>13,17=>14}
  2. for a in ha.keys
  3. if$data_weapons[@active_battler.weapon_id].element_set.include?(a.to_i)
  4.     if rand(100) <= 100 #判断概率
  5.     # 获取特技
  6.     @skill = $data_skills[ha[a].values.to_i]
  7.     # 消耗 SP
  8.     @active_battler.sp -= @skill.sp_cost
  9.     # 刷新状态窗口
  10.     @status_window.refresh
  11.     # 在帮助窗口显示特技名
  12.     @help_window.set_text(@skill.name, 1)
复制代码

作者: sarielyukaries    时间: 2010-11-15 08:57
拿这个脚本来看,整体思路是,如果产生一个随机数,这个随机数处于某个范围,则获得某个技能,并发动。
所以,这个脚本让我有些看不懂,当然,也可能是我水平不够。
其中最明显的就是
if rand(100) <=100
也就是判断概率这句。在0-99内产生随机数,必定会小于100,所以,普通攻击必定会触发技能。也就是说,这个脚本的触发技能概率并不是60%而是100%,普通攻击必定触发技能。
我想这很可能就是怪物普通攻击导致游戏出错的原因,因为怪物触发了技能。(即有可能是你的第13号技能也有可能是第17号武器属性设计的有问题----如果你没有改脚本原样用的话----如果你拿到含有17号属性的武器的话,估计你的普通攻击也会导致游戏出错)
抛开你所说的怪物会普通攻击导致游戏出错这个致命问题(实际上是我不会)。
如果要实现某武器普通攻击60%概率触发某技能,然后60%概率触发某技能。我觉得可以在这个脚本后面加上一个
    elsif rand(100) <= 60 #判断概率
    # 获取14号特技
    @skill = $data_skills[14]
    # 消耗 SP
    @active_battler.sp -= @skill.sp_cost
    # 刷新状态窗口
    @status_window.refresh
    # 在帮助窗口显示特技名
    @help_window.set_text(@skill.name, 1)

机理就是,如果触发第一技能失败后,判定是否触发第二个技能。

不过我个人是前天刚开始研究脚本这个东西的,你就当我是砖头,扔出来让人看看,还是让大神讲解下吧。
作者: sarielyukaries    时间: 2010-11-15 09:24
回复 fux4 的帖子

if$data_weapons[@active_battler.weapon_id].element_set.include?(a.to_i)

这句形式我不太懂,望解答。
作者: deathmagician    时间: 2010-11-15 10:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: deathmagician    时间: 2010-11-15 10:19
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1