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

Project1

 找回密码
 注册会员
搜索
查看: 1390|回复: 0
打印 上一主题 下一主题

[已经过期] 关于装备需要属性的脚本有BUG

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
105 小时
注册时间
2016-4-3
帖子
78
跳转到指定楼层
1
发表于 2016-5-16 19:12:53 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 452234679 于 2016-5-18 01:19 编辑

脚本地址:https://rpg.blue/thread-379610-1-1.html,4楼

问题1:装备安装上之后,无法卸下来(已修复: 把70行左右return false if item.nil?改成return true if item.nil?)
问题2:无法与物品分类+物品颜色代码整合(勉强使用吧)

忘各位大神指导,万分感谢!

附:物品分类+物品颜色代码(数据库用法:@分类@颜色)
RUBY 代码复制
  1. # ————————————————————————————————————
  2. # 本脚本来自[url]www.66rpg.com[/url],转载请保留此信息
  3. # ————————————————————————————————————
  4.  
  5. #==============================================================================
  6. # ■ Harts_Window_ItemTitle
  7. #==============================================================================
  8.  
  9. class Harts_Window_ItemTitle < Window_Base
  10.   def initialize
  11.     super(0, 0, 160, 64)
  12.     self.contents = Bitmap.new(width - 32, height - 32)
  13.     self.contents.clear
  14.     self.contents.font.color = normal_color
  15.     self.contents.draw_text(4, 0, 120, 32, $data_system.words.item, 1)
  16.   end
  17. end
  18.  
  19. #==============================================================================
  20. # ■ Harts_Window_ItemCommand
  21. #==============================================================================
  22.  
  23. class Harts_Window_ItemCommand < Window_Selectable
  24.   attr_accessor :commands
  25.   #--------------------------------------------------------------------------
  26.   # ● 初始化,生成commands窗口
  27.   #--------------------------------------------------------------------------
  28.   def initialize
  29.     super(0, 64, 160, 352)
  30.     self.contents = Bitmap.new(width - 32, height - 32)
  31.     @commands = []
  32.     #————————生成commands窗口
  33.     for i in 1...$data_items.size
  34.       if $game_party.item_number(i) > 0
  35.         push = true
  36.         for com in @commands
  37.           if com == $data_items[i].desc
  38.             push = false
  39.           end
  40.         end
  41.         if push == true
  42.           @commands.push($data_items[i].desc)
  43.         end
  44.       end
  45.     end
  46.     for i in 1...$data_weapons.size
  47.       if $game_party.weapon_number(i) > 0
  48.         push = true
  49.         for com in @commands
  50.           if com == $data_weapons[i].desc
  51.             push = false
  52.           end
  53.         end
  54.         if push == true
  55.           @commands.push($data_weapons[i].desc)
  56.         end
  57.       end
  58.     end
  59.     for i in 1...$data_armors.size
  60.       if $game_party.armor_number(i) > 0
  61.         push = true
  62.         for com in @commands
  63.           if com == $data_armors[i].desc
  64.             push = false
  65.           end
  66.         end
  67.         if push == true
  68.           @commands.push($data_armors[i].desc)
  69.         end
  70.       end
  71.     end
  72.     if @commands == []
  73.       @commands.push("普通物品")
  74.     end      
  75.     @item_max = @commands.size
  76.     refresh
  77.     self.index = 0
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   #--------------------------------------------------------------------------
  81.   def refresh
  82.     self.contents.clear
  83.     for i in 0...@item_max
  84.       draw_item(i, normal_color)
  85.     end
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   #--------------------------------------------------------------------------
  89.   def draw_item(index, color)
  90.     self.contents.font.color = color
  91.     y = index * 32
  92.     self.contents.draw_text(4, y, 128, 32, @commands[index])
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # 只描绘原文字
  96.   #--------------------------------------------------------------------------
  97.   def update_help
  98.     @help_window.set_text(@commands[self.index])
  99.   end
  100. end
  101.  
  102. #==============================================================================
  103. # ■ Window_Item
  104. #==============================================================================
  105.  
  106. class Harts_Window_ItemList < Window_Selectable
  107.   #--------------------------------------------------------------------------
  108.   #--------------------------------------------------------------------------
  109.   def initialize
  110.     super(160, 0, 480, 416)
  111.     refresh
  112.     self.index = 0
  113.   end
  114.   #--------------------------------------------------------------------------
  115.   #--------------------------------------------------------------------------
  116.   def item
  117.     return @data[self.index]
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   #--------------------------------------------------------------------------
  121.   def refresh
  122.     if self.contents != nil
  123.       self.contents.dispose
  124.       self.contents = nil
  125.     end
  126.     @data = []
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   #--------------------------------------------------------------------------
  130.   def set_item(command)
  131.     refresh
  132.     for i in 1...$data_items.size
  133.       if $game_party.item_number(i) > 0 and $data_items[i].desc == command
  134.         @data.push($data_items[i])
  135.       end
  136.     end
  137.     for i in 1...$data_weapons.size
  138.       if $game_party.weapon_number(i) > 0 and $data_weapons[i].desc == command
  139.         @data.push($data_weapons[i])
  140.       end
  141.     end
  142.     for i in 1...$data_armors.size
  143.       if $game_party.armor_number(i) > 0 and $data_armors[i].desc == command
  144.         @data.push($data_armors[i])
  145.       end
  146.     end
  147.     @item_max = @data.size
  148.     if @item_max > 0
  149.       self.contents = Bitmap.new(width - 32, row_max * 32)
  150.       self.contents.clear
  151.       for i in 0...@item_max
  152.         draw_item(i)
  153.       end
  154.     end
  155.   end
  156.   #--------------------------------------------------------------------------
  157.   #--------------------------------------------------------------------------
  158.   def item_number
  159.     return @item_max
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   #--------------------------------------------------------------------------
  163.   def draw_item(index)
  164.     item = @data[index]
  165.     case item
  166.     when RPG::Item
  167.       number = $game_party.item_number(item.id)
  168.     when RPG::Weapon
  169.       number = $game_party.weapon_number(item.id)
  170.     when RPG::Armor
  171.       number = $game_party.armor_number(item.id)
  172.     end
  173.     if item.is_a?(RPG::Item) and
  174.       $game_party.item_can_use?(item.id)
  175.       self.contents.font.color = normal_color
  176.     else
  177.       self.contents.font.color = disabled_color
  178.     end
  179.     x = 4
  180.     y = index * 32
  181.     bitmap = RPG::Cache.icon(item.icon_name)
  182.     opacity = self.contents.font.color == normal_color ? 255 : 128
  183.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  184.     self.contents.font.color = text_color(item.name_color_66RPG)
  185.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  186.     self.contents.font.color = normal_color
  187.     self.contents.draw_text(x + 400, y, 16, 32, ":", 1)
  188.     self.contents.draw_text(x + 416, y, 24, 32, number.to_s, 2)
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   #--------------------------------------------------------------------------
  192.   def update_help
  193.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  194.   end
  195. end
  196.  
  197. #==============================================================================
  198. # ■ Harts_Scene_Item
  199. #==============================================================================
  200.  
  201. class Scene_Item
  202.   #--------------------------------------------------------------------------
  203.   #--------------------------------------------------------------------------
  204.   def main
  205.     @itemtitle_window = Harts_Window_ItemTitle.new
  206.     @itemcommand_window = Harts_Window_ItemCommand.new
  207.     @command_index = @itemcommand_window.index
  208.     @itemlist_window = Harts_Window_ItemList.new
  209.     @itemlist_window.active = false
  210.     @help_window = Window_Help.new
  211.     @help_window.x = 0
  212.     @help_window.y = 416
  213.     @itemcommand_window.help_window = @help_window
  214.     @itemlist_window.help_window = @help_window
  215.     @target_window = Window_Target.new
  216.     @target_window.visible = false
  217.     @target_window.active = false
  218.     @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  219.     Graphics.transition
  220.     loop do
  221.       Graphics.update
  222.       Input.update
  223.       update
  224.       if $scene != self
  225.         break
  226.       end
  227.     end
  228.     Graphics.freeze
  229.     @itemtitle_window.dispose
  230.     @itemcommand_window.dispose
  231.     @itemlist_window.dispose
  232.     @help_window.dispose
  233.     @target_window.dispose
  234.   end
  235.   #--------------------------------------------------------------------------
  236.   #--------------------------------------------------------------------------
  237.   def update
  238.     @itemtitle_window.update
  239.     @itemcommand_window.update
  240.     @itemlist_window.update
  241.     @help_window.update
  242.     @target_window.update
  243.     if @command_index != @itemcommand_window.index
  244.       @command_index = @itemcommand_window.index
  245.       @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  246.     end
  247.     if @itemcommand_window.active
  248.       update_itemcommand
  249.       return
  250.     end
  251.     if @itemlist_window.active
  252.       update_itemlist
  253.       return
  254.     end
  255.     if @target_window.active
  256.       update_target
  257.       return
  258.     end
  259.   end
  260.   #--------------------------------------------------------------------------
  261.   #--------------------------------------------------------------------------
  262.   def update_itemcommand
  263.     if Input.trigger?(Input::B)
  264.       $game_system.se_play($data_system.cancel_se)
  265.       $scene = Scene_Menu.new(0)
  266.       return
  267.     end
  268.     if Input.trigger?(Input::C)
  269.       if @itemlist_window.item_number == 0
  270.         $game_system.se_play($data_system.buzzer_se)
  271.         return
  272.       end
  273.       $game_system.se_play($data_system.decision_se)
  274.       @itemcommand_window.active = false
  275.       @itemlist_window.active = true
  276.       @itemlist_window.index = 0
  277.       return
  278.     end
  279.   end
  280.   #--------------------------------------------------------------------------
  281.   #--------------------------------------------------------------------------
  282.   def update_itemlist
  283.     if Input.trigger?(Input::B)
  284.       $game_system.se_play($data_system.cancel_se)
  285.       @itemcommand_window.active = true
  286.       @itemlist_window.active = false
  287.       @itemlist_window.index = 0
  288.       @itemcommand_window.index = @command_index
  289.       return
  290.     end
  291.     if Input.trigger?(Input::C)
  292.       @item = @itemlist_window.item
  293.       unless @item.is_a?(RPG::Item)
  294.         $game_system.se_play($data_system.buzzer_se)
  295.         return
  296.       end
  297.       unless $game_party.item_can_use?(@item.id)
  298.         $game_system.se_play($data_system.buzzer_se)
  299.         return
  300.       end
  301.       $game_system.se_play($data_system.decision_se)
  302.       if @item.scope >= 3
  303.         @itemlist_window.active = false
  304.         @target_window.x = 304
  305.         @target_window.visible = true
  306.         @target_window.active = true
  307.         if @item.scope == 4 || @item.scope == 6
  308.           @target_window.index = -1
  309.         else
  310.           @target_window.index = 0
  311.         end
  312.       else
  313.         if @item.common_event_id > 0
  314.           $game_temp.common_event_id = @item.common_event_id
  315.           $game_system.se_play(@item.menu_se)
  316.             if @item.consumable
  317.               $game_party.lose_item(@item.id, 1)
  318.               @itemlist_window.draw_item(@itemlist_window.index)
  319.             end
  320.           $scene = Scene_Map.new
  321.           return
  322.         end
  323.       end
  324.       return
  325.     end
  326.   end
  327.   #--------------------------------------------------------------------------
  328.   #--------------------------------------------------------------------------
  329.   def update_target
  330.     if Input.trigger?(Input::B)
  331.       $game_system.se_play($data_system.cancel_se)
  332.       unless $game_party.item_can_use?(@item.id)
  333.         @itemlist_window.refresh
  334.       end
  335.       @itemlist_window.active = true
  336.       @target_window.visible = false
  337.       @target_window.active = false
  338.       @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  339.       return
  340.     end
  341.     if Input.trigger?(Input::C)
  342.       if $game_party.item_number(@item.id) == 0
  343.         $game_system.se_play($data_system.buzzer_se)
  344.         return
  345.       end
  346.       if @target_window.index == -1
  347.         used = false
  348.         for i in $game_party.actors
  349.           used |= i.item_effect(@item)
  350.         end
  351.       end
  352.       if @target_window.index >= 0
  353.         target = $game_party.actors[@target_window.index]
  354.         used = target.item_effect(@item)
  355.       end
  356.       if used
  357.         $game_system.se_play(@item.menu_se)
  358.         if @item.consumable
  359.           $game_party.lose_item(@item.id, 1)
  360.           @itemlist_window.draw_item(@itemlist_window.index)
  361.           @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  362.         end
  363.         @target_window.refresh
  364.         if $game_party.all_dead?
  365.           $scene = Scene_Gameover.new
  366.           return
  367.         end
  368.         if @item.common_event_id > 0
  369.           $game_temp.common_event_id = @item.common_event_id
  370.           $scene = Scene_Map.new
  371.           return
  372.         end
  373.       end
  374.       unless used
  375.         $game_system.se_play($data_system.buzzer_se)
  376.       end
  377.     return
  378.     end
  379.   end
  380. end
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-15 03:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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