Project1

标题: 请教 状态附加成功率的公式 和 属性修正值 [打印本页]

作者: alonescud    时间: 2008-12-4 18:07
标题: 请教 状态附加成功率的公式 和 属性修正值
#--------------------------------------------------------------------------
  # ● 获取状态附加成功率
  #     state_id : 状态 ID
  #--------------------------------------------------------------------------
  def state_probability(state_id)
    if $data_states[state_id].nonresistance
      return 100
    else
      rank = self.class.state_ranks[state_id]
      return [0,100,80,60,40,20,0][rank]
    end
  end



return [0,100,80,60,40,20,0][rank]  这行应该是成功率返回的值```我想问的是,计算成功率的公式在哪里??? 如何判断返回哪个值? (0,100,80,60,40,20,0)


第2个问题

def element_rate(element_id)
    rank = self.class.element_ranks[element_id]
    result = [0,200,150,100,50,0,-100][rank]
    for armor in armors.compact
      result /= 2 if armor.element_set.include?(element_id)
    end
    for state in states
      result /= 2 if state.element_set.include?(element_id)
    end
    return result
  end

上面的result = [0,200,150,100,50,0,-100][rank]

怎么有2个0??

在属性里的A B C D E F,和这6个数,是不是和[0,200,150,100,50,0依次按顺序对应?
最后的那个-100又是什么意思?


第3个问题



如图,防具中的属性防御,如果打勾,那默认就是抵抗该属性的50%,这个50%的值在哪改?如果我想改成 20% 40% 60% 80%等等多个分阶```能改吗?



[LINE]1,#dddddd[/LINE]此贴于 2008-12-8 14:35:15 被版主八云紫提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 雪流星    时间: 2008-12-4 20:52
第一个问题:这是利用了数组的特性,使用他的index来形成分歧
http://rpg.blue/viewthread.php?tid=69312

第二个问题:第一个0是为了防错,实际上不会用到,跟上一题一样
而那个-100代表会吸收(也就是反伤害)

第三个问题:答案就在你第二题里面贴出的脚本中
那个/2
for armor in armors.compact
  result /= 2 if armor.element_set.include?(element_id)
end
别忘了 50% 等於 1/2
如果要变成 20% 就把 2 改成 5
你也可以用

50%:
result *= 1/2 if armor.element_set.include?(element_id)

30%
result *= 30/100 if armor.element_set.include?(element_id)

12.5%
result *= (12.5/100).to_i if armor.element_set.include?(element_id)

就看你怎麽变化 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: alonescud    时间: 2008-12-4 21:12
以下引用snstar2006于2008-12-4 12:52:17的发言:

第一个问题:这是利用了数组的特性,使用他的index来形成分歧
http://rpg.blue/viewthread.php?tid=69312

第二个问题:第一个0是为了防错,实际上不会用到,跟上一题一样
而那个-100代表会吸收(也就是反伤害)

第三个问题:答案就在你第二题里面贴出的脚本中
那个/2
for armor in armors.compact
result /= 2 if armor.element_set.include?(element_id)
end
别忘了 50% 等於 1/2
如果要变成 20% 就把 2 改成 5
你也可以用

50%:
result *= 1/2 if armor.element_set.include?(element_id)

30%
result *= 30/100 if armor.element_set.include?(element_id)

12.5%
result *= (12.5/100).to_i if armor.element_set.include?(element_id)

就看你怎麽变化


[本贴由作者于 2008-12-4 12:55:31 最后编辑]




明白了,针对第3个问题.如果我想把20% 40% 60%都设进去,好像没有办法改了吧??

因为在数据库的里面,只能选择打勾和空,那就是只能是2种情况了....




作者: 雪流星    时间: 2008-12-4 21:49
恩,默认情况是不能的,除非用备注去设置
作者: alonescud    时间: 2008-12-4 21:52
以下引用snstar2006于2008-12-4 13:49:38的发言:

恩,默认情况是不能的,除非用备注去设置



用备注的话,就是要重定义 result *= 1/2 if armor.element_set.include?(element_id) 了吧? 具体要怎么写,麻烦吗?{/fd}




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