| 赞 | 0 |
| VIP | |
| 好人卡 | |
| 积分 | 1 |
| 经验 | |
| 最后登录 | 2021-10-3 |
| 在线时间 | 1006 小时 |
- 梦石
- 0
- 星屑
- 108
- 在线时间
- 1006 小时
- 注册时间
- 2008-11-9
- 回帖
- 1633
|
发表于 2013-1-29 18:21:47
|
显示全部楼层
Game_Troop脚本页中的这段:
[pre lang="ruby" line="1"] #--------------------------------------------------------------------------
# ● 计算经验值的总数
#--------------------------------------------------------------------------
def exp_total
dead_members.inject(0) {|r, enemy| r += enemy.exp }
end[/pre]
而代表着双方角色等级的变量是:
[pre lang="ruby" line="1"]$game_actors[n] #n为角色编号[/pre]
当前所遇敌群的编号变量是:
[pre lang="ruby" line="1"]@troop_id[/pre]
那么再来看看Ruby中inject函数的用法:
[pre lang="ruby" line="1"][2,4,6,8].inject(0) { |sum,element| sum + element } 输出结果:20
[2,4,6,8].inject(1) { |product,element| product * element } 输出结果:384
当inject有参数时,inject后面的block第一次执行时,sum或product的值被设置为参数的值,而element的值被设置为集合中第一个元素的值。接下来每次再执行block时,sum或product的值被设置为上次调用block时的返回值,element即为集合中下一个元素的值。inject的最终结果是最后一次调用block的返回值。[/pre]
简而言之,就是 r 是一个储存经验值的临时变量,而 enemy 就是组成 dead_members 这个复合数组的结构单元,其作用就是把 dead_members 中所有 enemy 对象中的 exp 属性叠加求和。
之后又涉及了一个脚本的基础用法:
[pre lang="ruby" line="1"]def exp_effect
i = 0
until i >= n do
if @troop_id == m
return $game_actors[x] / 10 + 4
end
end
end[/pre]
之后的部分明白就是明白,不明白我也没办法了……
修改函数在脚本技术里可是基础= = |
评分
-
查看全部评分
|