查看: 3463|回复: 3

[RMVA发布] 物品选择改进模块

[复制链接]
梦石
0
星屑
50
在线时间
8 小时
注册时间
2015-8-28
回帖
10
发表于 2015-9-25 13:37:38 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 Dazz 于 2015-9-26 14:41 编辑

事件里的物品选择,只能选择贵重品,且只能选择能在背包里直接使用的物品,这功能的狭隘程度实在是太气人了。所以我就自己搞了个脚本来强化它。

顺便一提,我特别爱用$的变量-。-

————————————————————以下是脚本内容————————————————————

[pre lang="ruby"]=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[/pre]

————————————————————到此为止————————————————————
梦石
0
星屑
50
在线时间
49 小时
注册时间
2014-11-1
回帖
14
发表于 2015-10-5 21:35:55 | 显示全部楼层
然而$是全局变量hhh
我也是新人来交个朋友吧hhh
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2015-10-8 22:03:55 | 显示全部楼层
$全局变量
回复

使用道具 举报

梦石
0
星屑
50
在线时间
8 小时
注册时间
2015-8-28
回帖
10
 楼主| 发表于 2015-10-24 15:58:47 | 显示全部楼层
中二病医生 发表于 2015-10-5 21:35
然而$是全局变量hhh
我也是新人来交个朋友吧hhh

今天才回来论坛看看-。-
嘛,反正就是$变量特别方便好用,而且关掉游戏后会被清理掉,这个特性特别有趣,可以轻易用$变量做到「每次打开游戏只触发1次,但一关闭游戏就会重置」的事件。

话说,全局变量和全球变量,有什么区别呢0.0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部