=begin
■ RPGMakerVXAce 物品选择改良模块 v1.02
发布区:6r论坛
作者:DAZZ
仅仅是改良事件里的物品选择部分的简单脚本。
允许您在事件里的物品选择功能中,更自由地进行物品选择。
在进行物品选择以前,用脚本定义一个数组:$ITEM_SELECT_TARGET
即可使用。
$ITEM_SELECT_TARGET=[道具类别,可否留空,[可选道具ID表]]
道具类别为"I","W","A"的其中一个,分别代表道具(含贵重品)、
武器、护具的选择。
可否留空为true代表可以不选道具就这样结束,为false代表必选。
例如:
$ITEM_SELECT_TARGET=["I",false,[1,2,3]]
代表:从1、2、3道具中选择1个,且不能不选。
$ITEM_SELECT_TARGET=["W",true,[4,8,9]]
代表:从4、8、9武器中选择1个,可以不选。
当然您的填写也可以不受拘束,比如这样:
list=[]
for i in 50..60 do
list.push(i)
end
$ITEM_SELECT_TARGET=["A",false,list]
这就会变成:从50到60号护具中选择1个,且不能不选。
您便可以不用在脚本里把50到60的数字写个遍了。
※本脚本使用时,必须注意以下事项:※
●如果你设置了“必须选择”,而你的背包里可选的道具
一件也没有,则你会被卡在那里,无法执行任何操作。
●如果你定义了$ITEM_SELECT_TARGET但未及时使用它,
你在菜单栏等地方使用背包里的道具的话可能受到干扰。
所以请在定义这个全球变量后,立刻选择物品。
●物品选择完毕后,本脚本会自动回收$ITEM_SELECT_TARGET
这个全球变量(就是把这个变量设为nil来删除它),
使用时您可不必担心全球变量的问题。
您无须声明使用情况,也无须为作者署名。可任意修改、传播。
若在使用时出现纠纷问题,作者概不负责。
更新履历:
v1.02又修复了一个低级BUG……
v1.01修复了一个低级BUG……
v1.0发行
=end
class Window_ItemList < Window_Selectable
#◇创建可选道具表
alias make_item_list_DAZZ make_item_list
def make_item_list
if $ITEM_SELECT_TARGET==nil
make_item_list_DAZZ
else
type=$ITEM_SELECT_TARGET[0]
list=$ITEM_SELECT_TARGET[2]
case type
when "I"
@data=$game_party.items.select{|item|list.include?(item.id)}
when "W"
@data=$game_party.weapons.select{|item|list.include?(item.id)}
when "A"
@data=$game_party.armors.select{|item|list.include?(item.id)}
end
@data.push(nil) if $ITEM_SELECT_TARGET[1]==true
end
end
#◇是否可使用道具(防止不可直接使用的道具变成无法被选择的BUG)
alias enable_DAZZ enable?
def enable?(item)
if $ITEM_SELECT_TARGET==nil
return enable_DAZZ(item)
else
return true
end
end
end
class Window_KeyItem < Window_ItemList
#◇回收全球变量
alias on_ok_DAZZ on_ok
def on_ok
$ITEM_SELECT_TARGET=nil
on_ok_DAZZ
end
#◇回收全球变量
alias on_cancel_DAZZ on_cancel
def on_cancel
$ITEM_SELECT_TARGET=nil
on_cancel_DAZZ
end
#●禁用取消
def cancel_enabled?
if $ITEM_SELECT_TARGET !=nil && $ITEM_SELECT_TARGET[1]==false
return false
else
return handle?(:cancel)
end
end
end