Project1

标题: 物品上限分歧 [打印本页]

作者: 黑舞嗜    时间: 2011-10-9 11:15
标题: 物品上限分歧
我想在事件里弄一条“背包里所有物品的总数是否大于X的情况下”的条件分歧,请问能否实现?dsu_plus_rewardpost_czw
作者: 亿万星辰    时间: 2011-10-9 11:27
本帖最后由 亿万星辰 于 2011-10-9 12:59 编辑

用个循环
$game_party.item_number(物品ID)
$game_party.weapon_number(物品ID)
$game_party.armor_number(物品ID)

用事件里的脚本操作,通过循环物品ID,把物品总数统计起来;循环武器ID,把武器总数统计起来;循环防具ID,把防具总数统计起来。
  1. for i in 1...$data_items.size
  2. $game_variables[X]+=
  3. $game_party.item_number(i)
  4. end
复制代码
这是事件的方法,当然还有脚本的方法。

因为Game_Party中物品、武器、防具都是通过Hash来存储的,所以只要把Game_Party中的@items、@weapons、@armors的value中的各个数组元素相加起来即可。���
作者: 我不是字母君    时间: 2011-10-9 12:39
本帖最后由 我不是字母君 于 2011-10-9 12:56 编辑
  1. class Game_Party
  2.   def item_num(b)
  3.     a=0
  4.     for i in 1...$data_items.size
  5.       a+=item_number(i)
  6.     end
  7.     $game_variables[b]=a
  8.   end
  9.   def weapon_num()
  10.     a=0
  11.     for i in 1...$data_weapons.size
  12.       a+=weapon_number(i)
  13.     end
  14.     $game_variables[b]=a
  15.   end
  16.   def armor_num()
  17.     a=0
  18.     for i in 1...$data_armors.size
  19.       a+=armor_number(i)
  20.     end
  21.     $game_variables[b]=a
  22.   end
  23. end
复制代码
插入这个代码然后运行脚本$game_party.item_num(6)即可把物品总数保存到编号为6的变量。依此类推
作者: 亿万星辰    时间: 2011-10-9 13:18
  1. class Game_Party
  2.   def total_item
  3.     n = 0
  4.     @items.values.each{|v|n += v}
  5.     return n
  6.   end
  7.   def total_weapon
  8.     n = 0
  9.     @weapons.values.each{|v|n += v}
  10.     return n
  11.   end
  12.   def total_armor
  13.     n = 0
  14.     @armors.values.each{|v|n += v}
  15.     return n
  16.   end
  17. end
复制代码
事件-脚本
$game_variables[X]=$game_party.total_item #所有物品总数
$game_variables[X]=$game_party.total_weapon #所有武器总数
$game_variables[X]=$game_party.total_armor #所有防具总数
作者: 黑舞嗜    时间: 2011-10-9 14:12
本帖最后由 黑舞嗜 于 2011-10-9 14:13 编辑

如果我想判断特技数量,这样
  1. class Game_Party
  2.   def total_item
  3.     n = 0
  4.     @items.values.each{|v|n += v}
  5.     return n
  6.   end
  7.   def total_weapon
  8.     n = 0
  9.     @weapons.values.each{|v|n += v}
  10.     return n
  11.   end
  12.   def total_armor
  13.     n = 0
  14.     @armors.values.each{|v|n += v}
  15.     return n
  16.   end
  17.   def total_Skill
  18.     n = 0
  19.     @Skills.values.each{|v|n += v}
  20.     return n
  21.   end

  22. end
复制代码
然后在事件里写$game_variables[X]=$game_party.total_skill能行吗?


作者: 亿万星辰    时间: 2011-10-9 14:17
黑舞嗜 发表于 2011-10-9 14:12
如果我想判断特技数量,这样然后在事件里写$game_variables[X]=$game_party.total_skill能行吗?

...

嗯,勇于探索的精神是值得鼓励的!!
不过这样显然是不行的,特技是针对于每个角色的,要获取队伍中所有成员的技能总数,那需要首先以每个角色为主体进行判断,同时skills在Game_Actor中是一个数组而并非一个Hash。
此外,对于方法名,变量名的大小写还要多加注意。
  1. def total_skill
  2.   n = 0
  3.   @actors.each{|a|n += a.skills.size}
  4.   reutn n
  5. end
  6.   
复制代码





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