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,把防具总数统计起来。
for i in 1...$data_items.size
$game_variables[X]+=
$game_party.item_number(i)
end
复制代码
这是事件的方法,当然还有脚本的方法。
因为Game_Party中物品、武器、防具都是通过Hash来存储的,所以只要把Game_Party中的@items、@weapons、@armors的value中的各个数组元素相加起来即可。���
作者:
我不是字母君
时间:
2011-10-9 12:39
本帖最后由 我不是字母君 于 2011-10-9 12:56 编辑
class Game_Party
def item_num(b)
a=0
for i in 1...$data_items.size
a+=item_number(i)
end
$game_variables[b]=a
end
def weapon_num()
a=0
for i in 1...$data_weapons.size
a+=weapon_number(i)
end
$game_variables[b]=a
end
def armor_num()
a=0
for i in 1...$data_armors.size
a+=armor_number(i)
end
$game_variables[b]=a
end
end
复制代码
插入这个代码然后运行脚本$game_party.item_num(6)即可把物品总数保存到编号为6的变量。依此类推
作者:
亿万星辰
时间:
2011-10-9 13:18
class Game_Party
def total_item
n = 0
@items.values.each{|v|n += v}
return n
end
def total_weapon
n = 0
@weapons.values.each{|v|n += v}
return n
end
def total_armor
n = 0
@armors.values.each{|v|n += v}
return n
end
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 编辑
如果我想判断特技数量,这样
class Game_Party
def total_item
n = 0
@items.values.each{|v|n += v}
return n
end
def total_weapon
n = 0
@weapons.values.each{|v|n += v}
return n
end
def total_armor
n = 0
@armors.values.each{|v|n += v}
return n
end
def total_Skill
n = 0
@Skills.values.each{|v|n += v}
return n
end
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。
此外,对于方法名,变量名的大小写还要多加注意。
def total_skill
n = 0
@actors.each{|a|n += a.skills.size}
reutn n
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1