设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: so_aries
打印 上一主题 下一主题

[已经解决] 可以做到物品全被拿走又拿回来吗?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1061 小时
注册时间
2012-9-10
帖子
314
11
 楼主| 发表于 2012-11-26 14:01:49 | 只看该作者
本帖最后由 so_aries 于 2012-11-26 14:03 编辑
zhangbanxian 发表于 2012-11-25 10:14
- -b默认1、2号开关,随意改
丢掉物品-  
拿回物品


$game_switches[1] = $game_party.all_items
$game_switches[2] =
$game_party.all_items.map{|x|
$game_party.item_number(x)}
$game_party.init_all_items
这段放在事件中,开启开关1...物品会消失。
插入的脚本?这是新开的游戏....

xxx-1.jpg (10.88 KB, 下载次数: 17)

放在事件中

放在事件中

xxx-2.jpg (7.96 KB, 下载次数: 18)

放在脚本中

放在脚本中
资料库更新...累死人的一堆文字...
我不是做avg,卻要有avg的叙述....-   3 -
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2010-2-4
帖子
1305
12
发表于 2012-11-26 14:07:43 | 只看该作者

本帖最后由 zhangbanxian 于 2012-11-26 14:09 编辑
so_aries 发表于 2012-11-26 14:01
$game_switches[1] = $game_party.all_items
$game_switches[2] =
$game_party.all_items.map{|x|


你理解错了,插是插在事件里,但是直到还回物品之前都不要用到1、2号开关(不要打开,也不要条件分歧,所以才叫你任意改了,我只是拿它作保存物品的容器而已,其实如果不用开关给Game_Party加两个属性也可以,就是要在脚本编辑器里插段脚本比较麻烦)。不用动开关就会消失了,然后不用动开关就会还回来了- -b

点评

= ="行了...其他脚本用习惯,就误会成要开启开关- -" (大都是存在变数,还可以存在开关...要学的太多...) 感谢大大的帮忙与不停的指教~  发表于 2012-11-27 00:24
好歹当年也当过大魔王过,orz
回复

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9335
在线时间
2745 小时
注册时间
2008-9-5
帖子
3540

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

13
发表于 2012-11-26 18:35:14 | 只看该作者
好神奇……
哀家不是已经解决了这个额问题了咩??
为什么即视感这么强??
同一个帖?
好吧………………
翻了哀家自己的帖子,发现唯独这一条回复没了……诡异中……
#----------------------------------
于是办法如下:
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Game_Party
  4. #------------------------------------------------------------------------------
  5. #  管理队伍的类。保存有金钱及物品的信息。本类的实例请参考 $game_party 。
  6. #==============================================================================

  7. class Game_Party < Game_Unit
  8.   #--------------------------------------------------------------------------
  9.   # ● 常量
  10.   #--------------------------------------------------------------------------
  11.   ABILITY_ENCOUNTER_HALF    = 0           # 遇敌几率减半
  12.   ABILITY_ENCOUNTER_NONE    = 1           # 随机遇敌无效
  13.   ABILITY_CANCEL_SURPRISE   = 2           # 敌人偷袭无效
  14.   ABILITY_RAISE_PREEMPTIVE  = 3           # 先制攻击几率上升
  15.   ABILITY_GOLD_DOUBLE       = 4           # 获得金钱数量双倍
  16.   ABILITY_DROP_ITEM_DOUBLE  = 5           # 物品掉落几率双倍
  17.   #--------------------------------------------------------------------------
  18.   # ● 定义实例变量
  19.   #--------------------------------------------------------------------------
  20.   attr_reader   :gold                     # 持有金钱
  21.   attr_reader   :steps                    # 步数
  22.   attr_reader   :last_item                # 光标记忆用 : 物品
  23.   
  24. #-------------------------------------------------------------------------------
  25. #-------------------------------------------------------------------------------
  26. #-------------------------------------------------------------------------------
  27.   # 设置几个需要用到的临时变量
  28.   attr_accessor :temp_items               # 临时背包 : 物品
  29.   attr_accessor :temp_weapons             # 临时背包 : 武器
  30.   attr_accessor :temp_armors              # 临时背包 : 防具
  31.   #--------------------------------------------------------------------------
  32.   # ● 导出现有的道具列表到临时哈希表
  33.   #--------------------------------------------------------------------------
  34.   def put_in
  35.     @temp_items = @items
  36.     @temp_weapons = @weapons
  37.     @temp_armors = @armors
  38.   end
  39.   #--------------------------------------------------------------------------
  40.   # ● 将导出的道具返还
  41.   #--------------------------------------------------------------------------
  42.   def put_return
  43.     @items = @temp_items
  44.     @weapons = @temp_weapons
  45.     @armors = @temp_armors
  46.     @temp_items = {}
  47.     @temp_weapons = {}
  48.     @temp_armors = {}
  49.   end
  50. #-------------------------------------------------------------------------------
  51. #-------------------------------------------------------------------------------
  52. #-------------------------------------------------------------------------------

  53.   #--------------------------------------------------------------------------
  54.   # ● 初始化对象
  55.   #--------------------------------------------------------------------------
  56.   def initialize
  57.     super
  58.     [url=home.php?mod=space&uid=236945]@gold[/url] = 0
  59.     @steps = 0
  60.     @last_item = Game_BaseItem.new
  61.     @menu_actor_id = 0
  62.     @target_actor_id = 0
  63.     @actors = []
  64.     init_all_items
  65. #-------------------------------------------------------------------------------
  66. #-------------------------------------------------------------------------------
  67. #-------------------------------------------------------------------------------
  68.     @temp_items = {}
  69.     @temp_weapons = {}
  70.     @temp_armors = {}
  71. #-------------------------------------------------------------------------------
  72. #-------------------------------------------------------------------------------
  73. #-------------------------------------------------------------------------------
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 初始化所有物品列表
  77.   #--------------------------------------------------------------------------
  78.   def init_all_items
  79.     @items = {}
  80.     @weapons = {}
  81.     @armors = {}
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 存在判定
  85.   #--------------------------------------------------------------------------
  86.   def exists
  87.     [email protected]?
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 获取成员
  91.   #--------------------------------------------------------------------------
  92.   def members
  93.     in_battle ? battle_members : all_members
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ● 获取所有成员
  97.   #--------------------------------------------------------------------------
  98.   def all_members
  99.     @actors.collect {|id| $game_actors[id] }
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ● 获取参战角色
  103.   #--------------------------------------------------------------------------
  104.   def battle_members
  105.     all_members[0, max_battle_members].select {|actor| actor.exist? }
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 获取参战角色的最大数
  109.   #--------------------------------------------------------------------------
  110.   def max_battle_members
  111.     return 4
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 获取领队
  115.   #--------------------------------------------------------------------------
  116.   def leader
  117.     battle_members[0]
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ● 获取物品实例的数组
  121.   #--------------------------------------------------------------------------
  122.   def items
  123.     @items.keys.sort.collect {|id| $data_items[id] }
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● 获取武器实例的数组
  127.   #--------------------------------------------------------------------------
  128.   def weapons
  129.     @weapons.keys.sort.collect {|id| $data_weapons[id] }
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 获取护甲实例的数组
  133.   #--------------------------------------------------------------------------
  134.   def armors
  135.     @armors.keys.sort.collect {|id| $data_armors[id] }
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   # ● 获取所有装备实例的数组
  139.   #--------------------------------------------------------------------------
  140.   def equip_items
  141.     weapons + armors
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # ● 获取所有物品实例的数组
  145.   #--------------------------------------------------------------------------
  146.   def all_items
  147.     items + equip_items
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ● 获取物品类对应的容器实例
  151.   #--------------------------------------------------------------------------
  152.   def item_container(item_class)
  153.     return @items   if item_class == RPG::Item
  154.     return @weapons if item_class == RPG::Weapon
  155.     return @armors  if item_class == RPG::Armor
  156.     return nil
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 设置初期队伍
  160.   #--------------------------------------------------------------------------
  161.   def setup_starting_members
  162.     @actors = $data_system.party_members.clone
  163.   end
  164.   #--------------------------------------------------------------------------
  165.   # ● 获取队伍名称
  166.   #    只有一人时返回角色的名字,含有多人时返回“某某的队伍”。
  167.   #--------------------------------------------------------------------------
  168.   def name
  169.     return ""           if battle_members.size == 0
  170.     return leader.name  if battle_members.size == 1
  171.     return sprintf(Vocab::PartyName, leader.name)
  172.   end
  173.   #--------------------------------------------------------------------------
  174.   # ● 设置战斗测试
  175.   #--------------------------------------------------------------------------
  176.   def setup_battle_test
  177.     setup_battle_test_members
  178.     setup_battle_test_items
  179.   end
  180.   #--------------------------------------------------------------------------
  181.   # ● 设置战斗测试用队伍
  182.   #--------------------------------------------------------------------------
  183.   def setup_battle_test_members
  184.     $data_system.test_battlers.each do |battler|
  185.       actor = $game_actors[battler.actor_id]
  186.       actor.change_level(battler.level, false)
  187.       actor.init_equips(battler.equips)
  188.       actor.recover_all
  189.       add_actor(actor.id)
  190.     end
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ● 设置战斗测试用物品
  194.   #--------------------------------------------------------------------------
  195.   def setup_battle_test_items
  196.     $data_items.each do |item|
  197.       gain_item(item, max_item_number(item)) if item && !item.name.empty?
  198.     end
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ● 获取队伍成员的最高等级
  202.   #--------------------------------------------------------------------------
  203.   def highest_level
  204.     lv = members.collect {|actor| actor.level }.max
  205.   end
  206.   #--------------------------------------------------------------------------
  207.   # ● 角色入队
  208.   #--------------------------------------------------------------------------
  209.   def add_actor(actor_id)
  210.     @actors.push(actor_id) unless @actors.include?(actor_id)
  211.     $game_player.refresh
  212.     $game_map.need_refresh = true
  213.   end
  214.   #--------------------------------------------------------------------------
  215.   # ● 角色离队
  216.   #--------------------------------------------------------------------------
  217.   def remove_actor(actor_id)
  218.     @actors.delete(actor_id)
  219.     $game_player.refresh
  220.     $game_map.need_refresh = true
  221.   end
  222.   #--------------------------------------------------------------------------
  223.   # ● 增加/减少持有金钱
  224.   #--------------------------------------------------------------------------
  225.   def gain_gold(amount)
  226.     @gold = [[@gold + amount, 0].max, max_gold].min
  227.   end
  228.   #--------------------------------------------------------------------------
  229.   # ● 减少持有金钱
  230.   #--------------------------------------------------------------------------
  231.   def lose_gold(amount)
  232.     gain_gold(-amount)
  233.   end
  234.   #--------------------------------------------------------------------------
  235.   # ● 获取持有金钱的最大值
  236.   #--------------------------------------------------------------------------
  237.   def max_gold
  238.     return 99999999
  239.   end
  240.   #--------------------------------------------------------------------------
  241.   # ● 增加步数
  242.   #--------------------------------------------------------------------------
  243.   def increase_steps
  244.     @steps += 1
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ● 获取物品的持有数
  248.   #--------------------------------------------------------------------------
  249.   def item_number(item)
  250.     container = item_container(item.class)
  251.     container ? container[item.id] || 0 : 0
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # ● 获取物品的最大持有数
  255.   #--------------------------------------------------------------------------
  256.   def max_item_number(item)
  257.     return 99
  258.   end
  259.   #--------------------------------------------------------------------------
  260.   # ● 判定物品是否达到最大持有数
  261.   #--------------------------------------------------------------------------
  262.   def item_max?(item)
  263.     item_number(item) >= max_item_number(item)
  264.   end
  265.   #--------------------------------------------------------------------------
  266.   # ● 判定是否持有某物品
  267.   #     include_equip : 检索是否包括装备
  268.   #--------------------------------------------------------------------------
  269.   def has_item?(item, include_equip = false)
  270.     return true if item_number(item) > 0
  271.     return include_equip ? members_equip_include?(item) : false
  272.   end
  273.   #--------------------------------------------------------------------------
  274.   # ● 判定队伍成员是否装备着指定物品
  275.   #--------------------------------------------------------------------------
  276.   def members_equip_include?(item)
  277.     members.any? {|actor| actor.equips.include?(item) }
  278.   end
  279.   #--------------------------------------------------------------------------
  280.   # ● 增加/减少物品
  281.   #     include_equip : 是否包括装备
  282.   #--------------------------------------------------------------------------
  283.   def gain_item(item, amount, include_equip = false)
  284.     container = item_container(item.class)
  285.     return unless container
  286.     last_number = item_number(item)
  287.     new_number = last_number + amount
  288.     container[item.id] = [[new_number, 0].max, max_item_number(item)].min
  289.     container.delete(item.id) if container[item.id] == 0
  290.     if include_equip && new_number < 0
  291.       discard_members_equip(item, -new_number)
  292.     end
  293.     $game_map.need_refresh = true
  294.   end
  295.   #--------------------------------------------------------------------------
  296.   # ● 丢弃成员的装备
  297.   #--------------------------------------------------------------------------
  298.   def discard_members_equip(item, amount)
  299.     n = amount
  300.     members.each do |actor|
  301.       while n > 0 && actor.equips.include?(item)
  302.         actor.discard_equip(item)
  303.         n -= 1
  304.       end
  305.     end
  306.   end
  307.   #--------------------------------------------------------------------------
  308.   # ● 减少物品
  309.   #     include_equip : 是否包括装备
  310.   #--------------------------------------------------------------------------
  311.   def lose_item(item, amount, include_equip = false)
  312.     gain_item(item, -amount, include_equip)
  313.   end
  314.   #--------------------------------------------------------------------------
  315.   # ● 消耗物品
  316.   #    减少 1 个持有数。
  317.   #--------------------------------------------------------------------------
  318.   def consume_item(item)
  319.     lose_item(item, 1) if item.is_a?(RPG::Item) && item.consumable
  320.   end
  321.   #--------------------------------------------------------------------------
  322.   # ● 技能/使用物品可能判定
  323.   #--------------------------------------------------------------------------
  324.   def usable?(item)
  325.     members.any? {|actor| actor.usable?(item) }
  326.   end
  327.   #--------------------------------------------------------------------------
  328.   # ● 战斗时指令输入可能判定
  329.   #--------------------------------------------------------------------------
  330.   def inputable?
  331.     members.any? {|actor| actor.inputable? }
  332.   end
  333.   #--------------------------------------------------------------------------
  334.   # ● 判定是否全灭
  335.   #--------------------------------------------------------------------------
  336.   def all_dead?
  337.     super && ($game_party.in_battle || members.size > 0)
  338.   end
  339.   #--------------------------------------------------------------------------
  340.   # ● 角色移动一步时的处理
  341.   #--------------------------------------------------------------------------
  342.   def on_player_walk
  343.     members.each {|actor| actor.on_player_walk }
  344.   end
  345.   #--------------------------------------------------------------------------
  346.   # ● 获取菜单画面中选中角色
  347.   #--------------------------------------------------------------------------
  348.   def menu_actor
  349.     $game_actors[@menu_actor_id] || members[0]
  350.   end
  351.   #--------------------------------------------------------------------------
  352.   # ● 设置菜单画面中选中角色
  353.   #--------------------------------------------------------------------------
  354.   def menu_actor=(actor)
  355.     @menu_actor_id = actor.id
  356.   end
  357.   #--------------------------------------------------------------------------
  358.   # ● 菜单画面中,选择下一个角色
  359.   #--------------------------------------------------------------------------
  360.   def menu_actor_next
  361.     index = members.index(menu_actor) || -1
  362.     index = (index + 1) % members.size
  363.     self.menu_actor = members[index]
  364.   end
  365.   #--------------------------------------------------------------------------
  366.   # ● 菜单画面中,选择上一个角色
  367.   #--------------------------------------------------------------------------
  368.   def menu_actor_prev
  369.     index = members.index(menu_actor) || 1
  370.     index = (index + members.size - 1) % members.size
  371.     self.menu_actor = members[index]
  372.   end
  373.   #--------------------------------------------------------------------------
  374.   # ● 获取技能/使用物品目标
  375.   #--------------------------------------------------------------------------
  376.   def target_actor
  377.     $game_actors[@target_actor_id] || members[0]
  378.   end
  379.   #--------------------------------------------------------------------------
  380.   # ● 设置技能/使用物品目标
  381.   #--------------------------------------------------------------------------
  382.   def target_actor=(actor)
  383.     @target_actor_id = actor.id
  384.   end
  385.   #--------------------------------------------------------------------------
  386.   # ● 交换顺序
  387.   #--------------------------------------------------------------------------
  388.   def swap_order(index1, index2)
  389.     @actors[index1], @actors[index2] = @actors[index2], @actors[index1]
  390.     $game_player.refresh
  391.   end
  392.   #--------------------------------------------------------------------------
  393.   # ● 存档文件显示用的角色图像信息
  394.   #--------------------------------------------------------------------------
  395.   def characters_for_savefile
  396.     battle_members.collect do |actor|
  397.       [actor.character_name, actor.character_index]
  398.     end
  399.   end
  400.   #--------------------------------------------------------------------------
  401.   # ● 判定队伍能力
  402.   #--------------------------------------------------------------------------
  403.   def party_ability(ability_id)
  404.     battle_members.any? {|actor| actor.party_ability(ability_id) }
  405.   end
  406.   #--------------------------------------------------------------------------
  407.   # ● 判定是否遇敌几率减半
  408.   #--------------------------------------------------------------------------
  409.   def encounter_half?
  410.     party_ability(ABILITY_ENCOUNTER_HALF)
  411.   end
  412.   #--------------------------------------------------------------------------
  413.   # ● 判定是否随机遇敌无效
  414.   #--------------------------------------------------------------------------
  415.   def encounter_none?
  416.     party_ability(ABILITY_ENCOUNTER_NONE)
  417.   end
  418.   #--------------------------------------------------------------------------
  419.   # ● 判定是否敌人偷袭无效
  420.   #--------------------------------------------------------------------------
  421.   def cancel_surprise?
  422.     party_ability(ABILITY_CANCEL_SURPRISE)
  423.   end
  424.   #--------------------------------------------------------------------------
  425.   # ● 判定是否先制攻击几率上升
  426.   #--------------------------------------------------------------------------
  427.   def raise_preemptive?
  428.     party_ability(ABILITY_RAISE_PREEMPTIVE)
  429.   end
  430.   #--------------------------------------------------------------------------
  431.   # ● 判定是否获得金钱数量双倍
  432.   #--------------------------------------------------------------------------
  433.   def gold_double?
  434.     party_ability(ABILITY_GOLD_DOUBLE)
  435.   end
  436.   #--------------------------------------------------------------------------
  437.   # ● 判定是否物品掉落几率双倍
  438.   #--------------------------------------------------------------------------
  439.   def drop_item_double?
  440.     party_ability(ABILITY_DROP_ITEM_DOUBLE)
  441.   end
  442.   #--------------------------------------------------------------------------
  443.   # ● 计算先制攻击几率
  444.   #--------------------------------------------------------------------------
  445.   def rate_preemptive(troop_agi)
  446.     (agi >= troop_agi ? 0.05 : 0.03) * (raise_preemptive? ? 4 : 1)
  447.   end
  448.   #--------------------------------------------------------------------------
  449.   # ● 计算敌人偷袭几率
  450.   #--------------------------------------------------------------------------
  451.   def rate_surprise(troop_agi)
  452.     cancel_surprise? ? 0 : (agi >= troop_agi ? 0.03 : 0.05)
  453.   end
  454. end
复制代码
这片替换原来的默认Game_Party脚本~
但是用到的只是有分割线的内容……

然后在需要清空背包物品的时候,
用“事件”的“脚本”写上:
$game_party.put_in
$game_party.init_all_items
前面一句是复制背包物品到临时哈希表,
后面一句是清空~
然后在需要返还背包物品的时候~
还是用“事件”里的“脚本”写上:
$game_party.put_return
这样就是从临时背包里把东西取出来了……

总之~好诡异……
哀家的回复竟然消失了……

点评

问题是...我提供与系统提供的经验值...也没有了吗= =?虽然只有50- -"还是感谢大大帮忙~  发表于 2012-11-27 00:26

评分

参与人数 1梦石 +1 收起 理由
迷糊的安安 + 1 认可答案 附赠66RPG提供的精美好人卡一张^^.

查看全部评分

回复

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-28 21:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表