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

Project1

 找回密码
 注册会员
搜索
查看: 87|回复: 9

[有事请教] 关于VxAce自身脚本的2个问题。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
100
在线时间
36 小时
注册时间
2020-1-11
帖子
29
发表于 2020-2-9 10:13:56 | 显示全部楼层 |阅读模式

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

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

x
#--------------------------------------------------------------------------
  # ● 特徴値の総和計算(データ ID は非指定)
  #--------------------------------------------------------------------------
  def features_sum_all(code)
    features(code).inject(0.0) {|r, ft| r += ft.value }
  end
  #--------------------------------------------------------------------------
脚本中标红字的 r 和 ft 代表什么。依据脚本的变量命名都是以易于联想的原则,应该是两个英文单词的简写吧?

Lv4.逐梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
8076
在线时间
7810 小时
注册时间
2012-6-19
帖子
6769

开拓者短篇九导演组冠军

发表于 2020-2-9 10:47:20 | 显示全部楼层
result
feature
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
100
在线时间
36 小时
注册时间
2020-1-11
帖子
29
 楼主| 发表于 2020-2-9 10:59:21 | 显示全部楼层
原来如此!那这句脚本的意思应该就是:所有不同但同类的增减值的全部加总了。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1109
在线时间
241 小时
注册时间
2013-8-29
帖子
191
发表于 2020-2-9 11:10:51 | 显示全部楼层
这才一个問題,第二个呢?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
100
在线时间
36 小时
注册时间
2020-1-11
帖子
29
 楼主| 发表于 2020-2-9 12:06:37 | 显示全部楼层
def eval(a, b, v)
    [Kernel.eval(@formula), 0].max * sign rescue 0
  end

这句脚本看了官方解释也看不懂,尤其是红字部份。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
100
在线时间
36 小时
注册时间
2020-1-11
帖子
29
 楼主| 发表于 2020-2-9 12:08:08 | 显示全部楼层
alianlord 发表于 2020-2-9 12:06
def eval(a, b, v)
    [Kernel.eval(@formula), 0].max * sign rescue 0
  end


class RPG::UsableItem::Damage
  def initialize
    @type = 0
    @element_id = 0
    @formula = '0'
    @variance = 20
    @critical = false
  end
  def none?
    @type == 0
  end
  def to_hp?
    [1,3,5].include?(@type)
  end
  def to_mp?
    [2,4,6].include?(@type)
  end
  def recover?
    [3,4].include?(@type)
  end
  def drain?
    [5,6].include?(@type)
  end
  def sign
    recover? ? -1 : 1
  end
def eval(a, b, v)
    [Kernel.eval(@formula), 0].max * sign rescue 0
  end

  attr_accessor :type
  attr_accessor :element_id
  attr_accessor :formula
  attr_accessor :variance
  attr_accessor :critical
end
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
100
在线时间
36 小时
注册时间
2020-1-11
帖子
29
 楼主| 发表于 2020-2-9 12:12:25 | 显示全部楼层
alianlord 发表于 2020-2-9 12:08
class RPG::UsableItem::Damage
  def initialize
    @type = 0

eval(a, b, v)

    根据参数执行计算公式,参数 a,b,v 分别指定了技能释放者所在队伍、技能承受者所在队伍以及所需的变量。

    如果伤害结果是恢复,那么就会返回一个负值。
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
8076
在线时间
7810 小时
注册时间
2012-6-19
帖子
6769

开拓者短篇九导演组冠军

发表于 2020-2-9 13:10:53 | 显示全部楼层
本帖最后由 喵呜喵5 于 2020-2-9 13:12 编辑
  1. def eval(a, b, v)
  2.     result = Kernel.eval(@formula)  # @formula 如果有语法错误导致代码执行报错,则 result = 0 (rescue 0)
  3.     result = [result, 0].max
  4.     result *= sign
  5.     return result
  6.   end
复制代码
回复 支持 1 反对 0

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
100
在线时间
36 小时
注册时间
2020-1-11
帖子
29
 楼主| 发表于 2020-2-9 14:36:29 | 显示全部楼层

我大概猜了一下,是不是这个意思……
result = Kernel.eval(@formula)
"当方法错误时,就返回0 "
result = [result, 0].max
"把返回值(只要不是错误,也就是不等于0),用max方法挑选出来。
result *= sign
"把值*sign,伤害和回复就是正值和负值之别。
return result
"返回伤害值或回复值。

这段脚本怎么会用全局搜索找不到?
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
8076
在线时间
7810 小时
注册时间
2012-6-19
帖子
6769

开拓者短篇九导演组冠军

发表于 2020-2-9 15:13:58 | 显示全部楼层
alianlord 发表于 2020-2-9 14:36
我大概猜了一下,是不是这个意思……
result = Kernel.eval(@formula)
"当方法错误时,就返回0 "

这段脚本就是把
[Kernel.eval(@formula), 0].max * sign rescue 0
拆开来写
回复 支持 反对

使用道具 举报

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

本版积分规则

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

站长信箱:fux2@moe9th.com|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2020-2-29 03:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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