查看: 4349|回复: 4

[已经解决] 关于物品得失

[复制链接]
梦石
0
星屑
5474
在线时间
1668 小时
注册时间
2016-8-1
回帖
376
发表于 2018-5-4 17:25:42 | 显示全部楼层 |阅读模式

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

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

×
怎样能失去当前所有已得到的物品,然后能再次得到失去的所有物品。就是类似主角被关进监狱,所有东西被没收,然后出狱了所有物品都拿回来那样。
阳光下的真实
梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
回帖
1074
发表于 2018-5-4 21:19:25 | 显示全部楼层
有个笨方法...
物品不多的情况之下,将各类物品的数量赋值到各自的变量中。
入狱时。
减少各类物品99个。
出狱时。
增加各类物品为各自变量的数量。

点评

好方法,减少物品时用脚本清空就容易多了。  发表于 2018-5-4 22:00

评分

参与人数 1赞 +1 收起 理由
穿越时空之剑 + 1 我很赞同

查看全部评分

一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
回复

使用道具 举报

梦石
0
星屑
17043
在线时间
6058 小时
注册时间
2011-7-18
回帖
152

开拓者

发表于 2018-5-6 00:08:24 | 显示全部楼层
本帖最后由 gqxastg 于 2018-5-6 00:15 编辑

虽然有现成的,这边顺手写了个实现的脚本权当练习,如果还需要包括已装备物品就手动事件中卸下吧
[pre lang="ruby"]#==============================================
#保存当前物品 save_party_items(变量ID,物品种类)
#变量ID:储存用的变量的ID,请不要改变此变量的值
#物品种类:可选,要保存物品的种类,可以使用的参数有
#         items物品 weapons武器 armors护甲 equip_items武器+护甲
#         all_items全部(不包括已装备的)
#         默认为全部(不包括已装备的)此参数形式为数组
#----------------------------------------------
#获得已保存物品 gain_saved_items(变量ID,物品种类)
#变量ID:储存用的变量的ID,需要与保存时的变量ID一致
#物品种类:可选,要获得已保存物品的种类,可以使用的参数有
#         RPG::Item物品 RPG::Weapon武器 RPG::Armor护甲
#         默认为物品+武器+护甲 此参数形式为数组
#注意:获得之后不会清空已保存物品,如果需要清空请将对应变量的值设定为0
#----------------------------------------------
#清空当前物品 clear_party_items(物品种类)
#物品种类:可选,要清空物品的种类,可使用参数与save_party_items一致
#         默认为全部(不包括已装备的)此参数形式为数组
#==============================================
#使用例子:
#save_party_items(1000)
#clear_party_items
#gain_saved_items(1000)
def save_party_items(id,type = ["all_items"])
  $game_variables[id] = [] unless $game_variables[id].is_a?(Array)
  type.each {|a| eval "$game_party.#{a}.each {|item| $game_variables[id].push(
  [item,$game_party.item_number(item)])}"}
end
def gain_saved_items(id,type = ["RPG::Item","RPG::Weapon","RPG::Armor"])
  $game_variables[id] = [] unless $game_variables[id].is_a?(Array)
  $game_variables[id].each {|item| $game_party.gain_item(item[0], item[1]) if
  type.include?(item[0].class.to_s)}
end
def clear_party_items(type = ["all_items"])
  type.each {|a| eval "$game_party.#{a}.each {|item| $game_party.gain_item(
  item,-$game_party.item_number(item))}"}
end[/pre]

评分

参与人数 3星屑 +100 赞 +2 收起 理由
hijl1990 + 1 不愧是雷神
VIPArcher + 100 加油
穿越时空之剑 + 1 我很赞同

查看全部评分

这里岚风·雷,任饭、PM理性粉、UT/DR原作粉、(Trans)Furry自萌,半吊子技术一枚_(:з」∠)_    游戏制作交流工(liao)作(tian)室欢迎来玩!
【无偿/有偿】RGSS3(VA)脚本定制 + 合作招募/同好交友    修正Firefox/火狐浏览器的代码框复制问题(油猴脚本)
Click→←Click
回复 1 0

使用道具 举报

梦石
0
星屑
3850
在线时间
925 小时
注册时间
2017-10-30
回帖
343
发表于 2018-5-6 00:11:28 | 显示全部楼层
theo的保存物品可以实现这个功能
脚本内容
  1. # =============================================================================
  2. # ♫ ~ 保存物品 by TheoAllen ~ ♫
  3. # Version : 1.2
  4. # Contact : www.rpgmakerid.com
  5. # =============================================================================
  6. # Requires : N/A
  7. # Rewrites method : N/A
  8. # Alliases method : Game_Party initialize
  9. # =============================================================================
  10. # ♫ UPDATES :
  11. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  12. # 2013.02.23 - Fixed bugs in inventory check
  13. #            - Secure inventory now also secure gold
  14. # 2013.02.21 - Added merge secured inventory and secured inventory check
  15. #            - Fixed some typos and bugs
  16. # 2013.02.20 - Started and Finished script
  17. #
  18. # =============================================================================
  19. # ♫ 介绍:
  20. # 当你为了剧情需要要换一个全新的队伍时,可以储存当前旧队伍的道具,
  21. # 使其不显示在新队伍中。
  22. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  23. # ♫ 使用方法:
  24. # 插入到插件脚本之下,Main之上
  25. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  26. # 使用事件功能页中的脚本功能:
  27. # - secure_inv(n)       = 新建一个编号为“n”的次要库存,并把所有道具保存到编号为n
  28. #                         的库存中
  29. #
  30. # - get_inv(n)          = 从编号为n的库存中读取道具,会直接覆盖掉当前队伍的库存
  31. #                        
  32. # - merge_inv(n)        = 将编号为n的库存里的道具完全合并到当前队伍的库存道具中
  33. #                        
  34. # - inventory_exist?(n) = 判断编号为n的库存是否存在,用于分支条件>>脚本中
  35. #                        
  36. # =============================================================================
  37. # ♫ 使用条款:
  38. # - 署名脚本作者, TheoAllen
  39. # - 你可以自由编辑此脚本,只要你不声明你是脚本的原作者
  40. # - 如果你想用此脚本于商业游戏,请和我共享收益.别忘了给我一份免费的游戏拷贝.
  41. # =============================================================================
  42. #
  43. # =============================================================================
  44. # ♫ 并没有设定部分 ♫
  45. # ♫ 以下勿动 ♫
  46. # =============================================================================

  47. class Game_Party < Game_Unit
  48.   #--------------------------------------------------------------------------
  49.   # ♫ Aliased initialize ~
  50.   #--------------------------------------------------------------------------  
  51.    alias theo_inv_secure_init initialize
  52.    def initialize
  53.      theo_inv_secure_init
  54.      init_all_bags
  55.    end
  56.   #--------------------------------------------------------------------------
  57.   # ♫ Initialize all bags ~
  58.   #--------------------------------------------------------------------------
  59.    def init_all_bags
  60.      @item_bags = []
  61.      @weapon_bags = []
  62.      @armor_bags = []
  63.      @gold_bags = []
  64.    end
  65.   #--------------------------------------------------------------------------
  66.   # ♫ Secure all inventories ~
  67.   #--------------------------------------------------------------------------
  68.    def secure_all(index)
  69.      secure_items(index)
  70.      secure_weapons(index)
  71.      secure_armors(index)
  72.      secure_gold(index)
  73.    end
  74.   #--------------------------------------------------------------------------
  75.   # ♫ Secure items ~
  76.   #--------------------------------------------------------------------------
  77.    def secure_items(index)
  78.      @item_bags[index] = @items.clone
  79.      @items.clear
  80.    end
  81.   #--------------------------------------------------------------------------
  82.   # ♫ Secure weapons ~
  83.   #--------------------------------------------------------------------------
  84.    def secure_weapons(index)
  85.      @weapon_bags[index] = @weapons.clone
  86.      @weapons.clear
  87.    end
  88.   #--------------------------------------------------------------------------
  89.   # ♫ Secure armors ~
  90.   #--------------------------------------------------------------------------
  91.    def secure_armors(index)
  92.      @armor_bags[index] = @armors.clone
  93.      @armors.clear
  94.    end
  95.   #--------------------------------------------------------------------------
  96.   # ♫ Secure gold ~
  97.   #--------------------------------------------------------------------------
  98.    def secure_gold(index)
  99.      @gold_bags[index] = @gold
  100.      @gold = 0
  101.    end   
  102.   #--------------------------------------------------------------------------
  103.   # ♫ Get all secured inventories ~
  104.   #--------------------------------------------------------------------------
  105.    def get_all(index)
  106.      get_items(index)
  107.      get_weapons(index)
  108.      get_armors(index)
  109.      get_gold(index)
  110.    end
  111.   #--------------------------------------------------------------------------
  112.   # ♫ Get secured items ~
  113.   #--------------------------------------------------------------------------
  114.    def get_items(index)
  115.      item_bags_exist?(index) ? @items = @item_bags[index].dup : @items = {}
  116.      @item_bags[index].clear
  117.    end
  118.   #--------------------------------------------------------------------------
  119.   # ♫ Get secured weapons ~
  120.   #--------------------------------------------------------------------------
  121.    def get_weapons(index)
  122.      weapon_bags_exist?(index) ? @weapons = @weapon_bags[index].dup : @weapons = {}
  123.      @weapon_bags[index].clear
  124.    end
  125.   #--------------------------------------------------------------------------
  126.   # ♫ Get secured armors ~
  127.   #--------------------------------------------------------------------------
  128.    def get_armors(index)
  129.      armor_bags_exist?(index) ? @armors = @armor_bags[index].dup : @armors = {}
  130.      @armor_bags[index].clear
  131.    end
  132.   #--------------------------------------------------------------------------
  133.   # ♫ Get secured gold ~
  134.   #--------------------------------------------------------------------------
  135.   def get_gold(index)
  136.     gold_bags_exist?(index) ? @gold = @gold_bags[index] : @gold = 0
  137.     @gold_bags[index] = 0
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ♫ Merge secured inventories to current inventories ~
  141.   #--------------------------------------------------------------------------
  142.    def merge_all(index)
  143.      merge_items(index)
  144.      merge_weapons(index)
  145.      merge_armors(index)
  146.      merge_gold(index)
  147.    end
  148.   #--------------------------------------------------------------------------
  149.   # ♫ Merge secured items ~
  150.   #--------------------------------------------------------------------------
  151.    def merge_items(index)
  152.      @item_bags[index].each_key do |id|
  153.        gain_item($data_items[id], @item_bags[index][id]) if item_bags_exist?(index)
  154.      end
  155.      @item_bags[index] = {}
  156.    end
  157.   #--------------------------------------------------------------------------
  158.   # ♫ Merge secured weapons ~
  159.   #--------------------------------------------------------------------------
  160.    def merge_weapons(index)
  161.      @weapon_bags[index].each_key do |id|
  162.        gain_item($data_weapons[id], @weapon_bags[index][id])if weapon_bags_exist?(index)
  163.      end
  164.      @weapon_bags[index] = {}
  165.    end
  166.   #--------------------------------------------------------------------------
  167.   # ♫ Merge secured armors ~
  168.   #--------------------------------------------------------------------------
  169.    def merge_armors(index)
  170.      @armor_bags[index].each_key do |id|
  171.        gain_item($data_armors[id], @armor_bags[index][id]) if armor_bags_exist?(index)
  172.      end
  173.      @armor_bags[index] = {}
  174.    end
  175.   #--------------------------------------------------------------------------
  176.   # ♫ Merge secured gold ~
  177.   #--------------------------------------------------------------------------
  178.    def merge_gold(index)
  179.      gain_gold(@gold_bags[index]) if gold_bags_exist?(index)
  180.      @gold_bags[index] = 0
  181.    end
  182.   #--------------------------------------------------------------------------
  183.   # ♫ Return true if secured inventory is avalaible
  184.   #--------------------------------------------------------------------------
  185.    def inventory_exist?(index)
  186.      return true if item_bags_exist?(index) ||
  187.      weapon_bags_exist?(index) ||
  188.      armor_bags_exist?(index)
  189.      return false
  190.    end
  191.   #--------------------------------------------------------------------------
  192.   # ♫ Return true if secured item is avalaible
  193.   #--------------------------------------------------------------------------
  194.    def item_bags_exist?(index)
  195.      return true if index <= @item_bags.size-1 && !@item_bags[index].nil? && check_values(@item_bags[index])
  196.      return false
  197.    end
  198.   #--------------------------------------------------------------------------
  199.   # ♫ Return true if secured weapon is avalaible
  200.   #--------------------------------------------------------------------------
  201.    def weapon_bags_exist?(index)
  202.      return true if index <= @weapon_bags.size-1 && !@weapon_bags[index].nil? && check_values(@weapon_bags[index])
  203.      return false
  204.    end
  205.   #--------------------------------------------------------------------------
  206.   # ♫ Return true if secured armor is avalaible
  207.   #--------------------------------------------------------------------------
  208.    def armor_bags_exist?(index)
  209.      return true if index <= @armor_bags.size-1 && !@armor_bags[index].nil? && check_values(@armor_bags[index])
  210.      return false
  211.    end
  212.   #--------------------------------------------------------------------------
  213.   # ♫ Return true if secured gold is avalaible ~
  214.   #--------------------------------------------------------------------------
  215.    def gold_bags_exist?(index)
  216.      return true if index <= @gold_bags.size-1 && !@gold_bags[index].nil? && @gold_bags[index] > 0
  217.      return false
  218.    end
  219.   #--------------------------------------------------------------------------
  220.   # ♫ Check avalaible items. Returns FALSE if all items are 0
  221.   #--------------------------------------------------------------------------  
  222.    def check_values(bags)
  223.      values = bags.values
  224.      return values.any? {|value| value > 0}
  225.    end
  226. end
  227. # =============================================================================
  228. # ♫ End of Game_Party class ♫
  229. # =============================================================================
  230. #
  231. # These methods are to simplify script call
  232. #
  233. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  234. def secure_inv(index)
  235.    $game_party.secure_all(convert_index(index))
  236. end

  237. def get_inv(index)
  238.    $game_party.get_all(convert_index(index))
  239. end

  240. def merge_inv(index)
  241.    $game_party.merge_all(convert_index(index))
  242. end

  243. def inventory_exist?(index)
  244.    $game_party.inventory_exist?(convert_index(index))
  245. end

  246. def convert_index(index)
  247.    return 0 if index < 0
  248.    return index
  249. end
  250. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
复制代码

评分

参与人数 2星屑 +20 赞 +1 收起 理由
VIPArcher + 20 我很赞同
穿越时空之剑 + 1 我很赞同

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部