when 0 #雇佣 if $game_party.gold >= $game_actors[@window_mercenaries.id].price if $game_party.actors.size < 4 $game_party.lose_gold($game_actors[@window_mercenaries.id].price) $game_party.add_actor(@window_mercenaries.id) #@temp=[2,3,4,5,6,7,8,9] p @temp @window_mercenaries.mercenaries.delete(@window_mercenaries.id) #@temp=[3,4,5,6,7,8,9] p @window_mercenaries.id @window_mercenaries.refresh if @window_mercenaries.index > @window_mercenaries.mercenaries.size-1 @window_mercenaries.index = @window_mercenaries.mercenaries.size-1 end end end
when 0 #雇佣
if $game_party.gold >= $game_actors[@window_mercenaries.id].price
if $game_party.actors.size < 4
$game_party.lose_gold($game_actors[@window_mercenaries.id].price)
$game_party.add_actor(@window_mercenaries.id)
#@temp=[2,3,4,5,6,7,8,9]
p @temp
@window_mercenaries.mercenaries.delete(@window_mercenaries.id)
#@temp=[3,4,5,6,7,8,9]
p @window_mercenaries.id
@window_mercenaries.refresh
if @window_mercenaries.index > @window_mercenaries.mercenaries.size-1
@window_mercenaries.index = @window_mercenaries.mercenaries.size-1
end
end
end
delete之后再p @window_mercenaries.id,结果是3,这没问题啊
雇佣2以后@mercenaries=[3,4,5,6,7,8],雇佣的时候window的index=0
雇佣操作并没有改变index,所以雇佣后,id返回的就是此时数组中的第一个元素3
delete删除的方法是匹配并删除元素,再将后面的元素往前移位
这时候再去调用id返回的就是3
def id
return @mercenaries[self.index]
end |