设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2017|回复: 7
打印 上一主题 下一主题

[已经解决] 请问如何读取特性的备注栏中的公式得到数字?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
帖子
813

开拓者

跳转到指定楼层
1
发表于 2017-12-2 13:41:48 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 jianyulei 于 2017-12-2 14:08 编辑

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

别人的脚本B


Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

6
发表于 2017-12-2 16:32:24 | 只看该作者
用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)
复制代码
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33442
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

5
发表于 2017-12-2 16:05:40 | 只看该作者
如果备注是 note
计算结果 = note.match(/<伤害 (\S*)>/) ? eval($1) : 0

点评

评分的对话栏不够长……  发表于 2017-12-2 16:33

评分

参与人数 2+2 收起 理由
jianyulei + 1 你这个公式比我的更好用,不仅更短它还会自.
chd114 + 1 认可答案

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
帖子
649

开拓者

4
发表于 2017-12-2 14:25:49 | 只看该作者
https://rpg.blue/thread-398047-1-1.html
請看第一部第一章第二節第三項
有關字符串內嵌表達式的部分
以及第一部第一章第七節第七項
有關eval方法

评分

参与人数 1+1 收起 理由
jianyulei + 1 做出来了,谢谢

查看全部评分

2016/07/17 加入RPG製作,勿忘初衷!
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
帖子
649

开拓者

3
发表于 2017-12-2 14:20:47 | 只看该作者
內嵌表達式可以得到字符串的計算結果

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

2016/07/17 加入RPG製作,勿忘初衷!
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
帖子
649

开拓者

2
发表于 2017-12-2 14:06:21 | 只看该作者
使用字符串內嵌表達式#{}
和eval方法

点评

请问能给个范例吗?这么说我完全不懂……  发表于 2017-12-2 14:12
2016/07/17 加入RPG製作,勿忘初衷!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 16:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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