Project1

标题: 如何进一步扩展装备选择处理,例如仅列出有特定特征的? [打印本页]

作者: 888000    时间: 2014-10-10 22:29
标题: 如何进一步扩展装备选择处理,例如仅列出有特定特征的?
用了物品选择处理扩张的脚本(作者:影月千秋)

想在进行武器/防具选择的时候不列出全部,仅列出符合特定特征的(如装备图标id为168啦,装备价格在10000以上啦,武器or护甲类型是xxxx等等)

拜托了……土下座。
作者: 子弹君    时间: 2014-10-10 22:45
把影月的脚本放上来我看看
作者: 888000    时间: 2014-10-11 11:48
子弹君 发表于 2014-10-10 22:45
把影月的脚本放上来我看看

RUBY 代码复制
  1. #==============================================================================
  2. # ■ 物品选择处理扩张
  3. #  作者:影月千秋
  4. #------------------------------------------------------------------------------
  5. # ● 简介
  6. #  使事件中物品选择处理允许选择武器、防具、普通物品
  7. #------------------------------------------------------------------------------
  8. # ● 使用方法
  9. #  安装此脚本后,在事件中物品选择处理之前加上一句脚本:
  10. #    mca_change(symbol)
  11. #  其中symbol是【:item】【:armor】【:weapon】之一,分别对应物品、防具、武器
  12. #  这样的话,这一个物品选择处理就会处理对应项目
  13. #  但是注意!!该脚本的作用域只有一个物品选择处理
  14. #  如果连续使用两个物品选择处理,第一个会是对应项目,第二个则会是关键物品
  15. #------------------------------------------------------------------------------
  16. # ● 声明
  17. #   本脚本来自【影月千秋】,使用、修改和转载请保留此信息
  18. #==============================================================================
  19. module MoVar;@ckiaddition = :key_item;end
  20. class Game_Interpreter;def mca_change(symbol)
  21.   MoVar.instance_variable_set("@ckiaddition", symbol)
  22. end;end
  23. class Window_KeyItem
  24.   def enable?(item);true;end
  25.   def category=(category)
  26.     @category = MoVar.instance_variable_get("@ckiaddition") rescue category
  27.     MoVar.instance_variable_set("@ckiaddition", category)
  28.     refresh
  29.     self.oy = 0
  30.   end
  31. end
  32. #==============================================================================#
  33. #=====                        =================================================#
  34.            "■ 脚 本 尾"
  35. #=====                        =================================================#
  36. #==============================================================================#

作者: taroxd    时间: 2014-10-11 12:49
没记错的话,重写 include? 方法应该就可以了


@子弹君  不写个玩玩嘛

作者: 子弹君    时间: 2014-10-15 18:37
888000 发表于 2014-10-11 11:48
#==============================================================================
# ■ 物品选择处理 ...


RUBY 代码复制
  1. #==============================================================================
  2. #  物品选择扩张  by 子弹君
  3. #==============================================================================
  4. #  使用说明:
  5. #    在事件中使用指令,
  6. #    变量XXX = 脚本 :item
  7. #    脚本指令分别有 :item :weapon :armor :key_item
  8. #    指令使用一次之后就会自动还原成贵重物品选择,需要再设定一次。
  9. #  脚本设置说明:
  10. #    ITEMKEY那个开关如果打开的话就会和物品大于多少价格出现冲突,方法可以有多种,或者
  11. #    直接到XX行将那一段屏蔽了。
  12. #==============================================================================
  13. $BombScript ||= {};$BombScript["物品选择扩张 "] = "物品选择扩张20141014"
  14. #==============================================================================
  15. #  设定部分
  16. #==============================================================================
  17. module BOMB
  18.     KEYVAR = 1
  19. #   设置一个变量。
  20.     ITEMKEY = 2
  21. #   设置一个开关,开关开启时,选择物品为默认设置。   
  22.     ITEMPRI = 10000
  23. #   设置物品的价格,只有大于这个价格的才能出现。
  24.     WEAPRI = 10000
  25. #   设置武器的价格,只有大于这个价格的才能出现。
  26.     ARMPRI = 10000
  27. #   设置防具的价格,只有大于这个价格的才能出现。
  28.     WEAYP = 1
  29. #   设置武器的类型,只有是这个类型的才能出现。
  30.     ARMYP = 1
  31. #   设置防具的类型,只有是这个类型的才能出现。
  32. end
  33.  
  34. class Window_KeyItem < Window_ItemList
  35.   #--------------------------------------------------------------------------
  36.   # ● 开始输入的处理
  37.   #--------------------------------------------------------------------------
  38.   def start
  39.     unless $game_variables[BOMB::KEYVAR] == :null
  40.       self.category = $game_variables[BOMB::KEYVAR]
  41.       $game_variables[BOMB::KEYVAR] = :null
  42.     else
  43.       self.category = :key_item
  44.     end
  45.     update_placement
  46.     refresh
  47.     select(0)
  48.     open
  49.     activate
  50.   end
  51. end
  52. class Window_ItemList < Window_Selectable
  53.   #--------------------------------------------------------------------------
  54.   # ● 查询列表中是否含有此物品
  55.   #--------------------------------------------------------------------------
  56.   def include?(item)
  57.     case @category
  58.     when :item
  59.       item.is_a?(RPG::Item) && item.price > BOMB::ITEMPRI
  60.       item.is_a?(RPG::Item) && !item.key_item? if
  61.       $game_switches[BOMB::ITEMKEY]
  62.     when :weapon
  63.       item.is_a?(RPG::Weapon) && item.price > BOMB::WEAPRI
  64.       item.is_a?(RPG::Weapon) && item.wtype_id == BOMB::WEAYP
  65.     when :armor
  66.       item.is_a?(RPG::Armor) && item.price > BOMB::ARMPRI
  67.       item.is_a?(RPG::Armor) && item.wtype_id == BOMB::ARMYP
  68.     when :key_item
  69.       item.is_a?(RPG::Item) && item.key_item?
  70.     else
  71.       false
  72.     end
  73.   end
  74. end

作者: 888000    时间: 2014-10-15 20:46
子弹君 发表于 2014-10-15 18:37
#==============================================================================
#  物品选择扩张   ...


虽然有点贪婪……但把这个设置的数值改为另一个变量来决定可以么?
(这样的话,在使用中的灵活性就会非常高了吧……)
如”设置一个变量,只有武器的价格大于这个变量的数值才能出现“这种样子……
啊,因为是比较贪婪的请求所以拒绝也没关系的。
作者: 888000    时间: 2014-10-17 13:45
888000 发表于 2014-10-15 20:46
虽然有点贪婪……但把这个设置的数值改为另一个变量来决定可以么?
(这样的话,在使用中的灵活性就会非 ...

@子弹君    @VIPArcher   0 0有把常量改成变量的方法么……直接在设置数值的地方写变量的话似乎会报错……

作者: chd114    时间: 2014-10-17 22:26
888000 发表于 2014-10-16 20:45
@子弹君    @VIPArcher   0 0有把常量改成变量的方法么……直接在设置数值的地方写变量的话似乎会报错… ...

不会报错吧?你是怎么写的···
作者: 888000    时间: 2014-10-18 22:20
chd114 发表于 2014-10-17 22:26
不会报错吧?你是怎么写的···


直接在设置数值的地方写了变量(于是妥妥报错)……不知道怎么把常量改成用变量orz
作者: 888000    时间: 2014-10-20 21:58
本帖最后由 888000 于 2014-10-20 22:00 编辑

@VIPArcher
@子弹君
脚本盲终于还是哭瞎了……可以帮忙把常量改成用变量么(拜托了)




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