Project1

标题: 请问如何读取特性的备注栏中的公式得到数字? [打印本页]

作者: jianyulei    时间: 2017-12-2 13:41
标题: 请问如何读取特性的备注栏中的公式得到数字?
本帖最后由 jianyulei 于 2017-12-2 14:08 编辑

例如我在某特性栏里备注 <伤害 $game_actors[1].atk*0.2> 然后在回合结束阶段调取这个计算公式让其作为回合损伤,请问我在脚本里该如何调取这个公式最终得到准确的数字?
我只会用调取准确的数字,如<伤害 50>,但看别人的脚本里似乎能使用公式,自己又研究不出来,特来请教。
别人的脚本A

别人的脚本B



作者: QQ蚊子湯    时间: 2017-12-2 14:06
使用字符串內嵌表達式#{}
和eval方法
作者: QQ蚊子湯    时间: 2017-12-2 14:20
內嵌表達式可以得到字符串的計算結果

a="50-10"
p a
50-10
p #{a}
40


作者: QQ蚊子湯    时间: 2017-12-2 14:25
https://rpg.blue/thread-398047-1-1.html
請看第一部第一章第二節第三項
有關字符串內嵌表達式的部分
以及第一部第一章第七節第七項
有關eval方法

作者: 芯☆淡茹水    时间: 2017-12-2 16:05
如果备注是 note
计算结果 = note.match(/<伤害 (\S*)>/) ? eval($1) : 0
作者: chd114    时间: 2017-12-2 16:32
用eval方法可以把字符串转换为可以运行的脚本
用begin-end把可以运行的脚本转换为注释文本
···比如说这样···

  1. %w(Item Skill).each do |type| eval %{
  2. class RPG::#{type}
  3.   def target_type
  4.     t=$data_#{type.downcase}s[self.id].is_a?(RPG::Item)? -1:1
  5.     return Target::SCOPE[self.id*t][:scopetype] if Target::SCOPE[self.id*t][:scopetype]
  6.     return "o" if Array(1..6).include?(scope)
  7.     #return "f" if Array(7..11).include?(scope)
  8.     return "f" if [7,8].include?(scope)#所有队友
  9.     return "f_d" if [9,10].include?(scope)#阵亡队友
  10.     return "f_a" if [12,13].include?(scope)#存活队友
  11.     return "u" if scope==11#使用者
  12.     return nil if scope==0
  13.     return "fo" if scope==14#任意单体
  14.     return "fo_a" if scope==15#友存活单体|敌单体
  15.     return "fo_d" if scope==16#友阵亡单体|敌单体
  16.     return "a" if scope==17#任意全体
  17.     return "a_a" if scope==18#友存活全体|敌全体
  18.     return "a_d" if scope==19#友阵亡全体|敌全体
  19.     return "aa" if scope==20#全体
  20.     return "aa_a" if scope==21#友存活全体&敌全体
  21.     return "aa_d" if scope==22#友阵亡全体&敌全体
  22.   end
  23.   def target_num
  24.     t=$data_#{type.downcase}s[self.id].is_a?(RPG::Item)? -1:1
  25.     return Target::SCOPE[self.id*t][:rdn]? Target::SCOPE[self.id*t][:rdn] : 1
  26.   end
  27. end
  28. }
复制代码


在物品/技能的公式计算也用了这样的方法

  1.     value = item.damage.eval(user, self, $game_variables)
复制代码





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