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

Project1

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

[已经过期] 添加一段装备等级限制

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
114 小时
注册时间
2012-4-25
帖子
163
跳转到指定楼层
1
发表于 2012-7-12 20:57:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #==================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==================================================================
  4. #一行20个中文字,最多4行,使用"|"符号进行换行。
  5. #数据库说明不限制行数,同样使用"|"符号进行换行。
  6. $data2 = [] #存包包物品
  7. HeroText=[] #角色说明
  8. HeroText[1] = "出身平民之家,自幼习得一身好武艺。以一柄|长剑或单刀行走于江湖,是个锄强扶弱,行侠|仗义的少年英雄。"
  9. Armor_element_name =["头盔","铠甲","护盾","项链","戒指","鞋子","腰带","手镯","勋章"] #防具属性名称
  10. Armor_element_name_id = [2,3,1,5,4,6,7,8,9] #装备物品是的索引,作用见equip函数

  11. class HeroItemBag
  12.   attr_reader   :viewport1
  13.   attr_reader   :viewport2
  14.   #--------------------------------------------------------------------------
  15.   # ● 初期化
  16.   #--------------------------------------------------------------------------
  17.   #def initialize(viewport=nil)
  18.     #super(viewport)
  19.   #end
  20.   #--------------------------------------------------------------------------
  21.   # ● 主处理
  22.   #--------------------------------------------------------------------------
  23.   def main
  24.        #背景界面
  25.        @viewport1 = Viewport.new(0, 0, 640, 480)
  26.        @HeroItemBag = Sprite.new(@viewport1)
  27.        @viewport1.z = 1000  
  28.        @bitmap = Bitmap.new('Graphics/Windowskins/HeroItemBag.PNG')
  29.        @HeroItemBag.bitmap = @bitmap
  30.        @HeroItemBag.visible = true
  31.        @HeroItemBag.x = (640 - @bitmap.width)/2
  32.        @HeroItemBag.y = 0
  33.        @HeroItemBag.z = 1000
  34.        #文字界面
  35.        @viewport2 = Viewport.new(0, 0, 640, 480)
  36.        @HeroItemBag2 = Sprite.new(@viewport2)
  37.        @viewport2.z = 1100  
  38.        @bitmap2 = Bitmap.new(@bitmap.width,@bitmap.height)
  39.        @HeroItemBag2.bitmap = @bitmap2
  40.        @HeroItemBag2.visible = true
  41.        @HeroItemBag2.x = (640 - @bitmap.width)/2
  42.        @HeroItemBag2.y = 0
  43.        @HeroItemBag2.z = 1100
  44.        #人物精灵
  45.        @bitmap3=[]
  46.        @HeroItemBag3 =[]
  47.        for i in 0..4 #主身#衣服#头盔#武器#盾
  48.           @HeroItemBag3[i] = Sprite.new(nil)
  49.           @HeroItemBag3[i].visible = true
  50.           @HeroItemBag3[i].x = @HeroItemBag.x + 19
  51.           @HeroItemBag3[i].y = @HeroItemBag.y + 21
  52.           @HeroItemBag3[i].z = 1200 + i * 100      
  53.        end
  54.        #物品说明窗口背景
  55.        $HeroItemBag4 = Sprite.new(nil)
  56.        @bitmap4 = Bitmap.new('Graphics/Windowskins/Item.PNG')
  57.        $HeroItemBag4.bitmap = @bitmap4
  58.        $HeroItemBag4.visible = false
  59.        $HeroItemBag4.zoom_x = 150.0 / @bitmap4.width
  60.        $HeroItemBag4.zoom_y = 200.0 / @bitmap4.height
  61.        $HeroItemBag4.x = 0
  62.        $HeroItemBag4.y = 0
  63.        $HeroItemBag4.z = 1700
  64.        #$HeroItemBag4.opacity = 80
  65.        #物品说明窗口
  66.        $HeroItemBag5 = Sprite.new(nil)
  67.        $bitmap5 = Bitmap.new(150,200)
  68.        $HeroItemBag5.bitmap = $bitmap5
  69.        $HeroItemBag5.visible = false
  70.        $HeroItemBag5.z = 2000
  71.       
  72.        #更新属性界面
  73.        heroupdate(false)      
  74.        #物品窗口
  75.        $ItemIcon = Window_ItemIcon.new  
  76.        #地图界面
  77.        @spriteset = Spriteset_Map.new      
  78.        # 执行过渡
  79.        Graphics.transition
  80.        # 主循环
  81.        loop do
  82.          # 刷新游戏画面
  83.          Graphics.update
  84.          # 刷新输入信息
  85.          Input.update
  86.          Kboard.update         
  87.          # 刷新画面
  88.          update
  89.          # 如果切换画面就中断循环
  90.          if $scene != self
  91.            break
  92.          end
  93.        end
  94.        # 准备过渡
  95.        Graphics.freeze
  96.        # 释放窗口
  97.        self.dispose   
  98.   end
  99.   
  100.   def element_search(element_name)
  101.     return nil if element_name == nil
  102.     for i in 1...$data_system.elements.size
  103.       if $data_system.elements[i] =~ /^#{element_name}/
  104.         return i
  105.       end
  106.     end
  107.   end
  108.   
  109.   def update_item
  110.     # 按下鼠标右键情况下
  111.     if Kboard.keyboard($Rmouse_BUTTON_R)
  112.       # 获取物品窗口当前选中的物品数据
  113.       @item = $ItemIcon.item
  114.       index = $ItemIcon.getindex
  115.       case @item
  116.       when RPG::Item
  117.         
  118.       # 不能使用的情况下
  119.       unless $game_party.item_can_use?(@item.id)
  120.         # 演奏冻结 SE
  121.         $game_system.se_play($data_system.buzzer_se)
  122.         return
  123.       end
  124.       if @item.scope >= 3
  125.         # 设置效果范围 (单体/全体) 的对应光标位置
  126.         if @item.scope == 4 || @item.scope == 6
  127.           target_index = -1
  128.         else
  129.           target_index = 0
  130.         end
  131.         if target_index >= 0
  132.            # 对目标角色应用物品的使用效果
  133.            target = $game_party.actors[target_index]
  134.            used = target.item_effect(@item)
  135.          else
  136.            used = false
  137.            for i in $game_party.actors
  138.              used |= i.item_effect(@item)
  139.            end
  140.         end
  141.       end
  142.       # 使用物品的情况下
  143.       if used
  144.         # 演奏物品使用时的 SE
  145.         $game_system.se_play(@item.menu_se)
  146.         heroupdate(true)
  147.         # 消耗品的情况下
  148.         if @item.consumable
  149.           # 使用的物品数减 1
  150.           $game_party.lose_item(@item.id, 1)
  151.           # 再描绘物品窗口的项目
  152.           $ItemIcon.refresh
  153.         end
  154.         # 公共事件 ID 有效的情况下
  155.         if @item.common_event_id > 0
  156.           # 预约调用公共事件
  157.           $game_temp.common_event_id = @item.common_event_id
  158.           # 切换到地图画面
  159.           $scene = Scene_Map.new
  160.           return
  161.         end
  162.       end
  163.       # 无法使用物品的情况下
  164.       unless used
  165.         # 演奏冻结 SE
  166.         $game_system.se_play($data_system.buzzer_se)
  167.       end
  168.       
  169.       when RPG::Weapon
  170.         if index<10
  171.            @actor.equip(0, 0)#@item == nil ? 0 : @item.id) #卸下武器         
  172.          else
  173.            @actor.equip(0, @item == nil ? 0 : @item.id) #变更武器
  174.         end
  175.         $ItemIcon.refresh #刷新物品栏
  176.         heroupdate(true) #强制刷新人物属性界面
  177.         
  178.       when RPG::Armor
  179.         for i in 0..Armor_element_name.size
  180.           id = element_search(Armor_element_name[i])
  181.           if @item.guard_element_set.include?(id)
  182.             break
  183.           end  
  184.         end
  185.         if index<10
  186.           #if Armor_element_name_id[i]!=-1
  187.             @actor.equip(Armor_element_name_id[i], 0) #卸下防具
  188.           #end
  189.         else
  190.           #if Armor_element_name_id[i]!=-1
  191.             @actor.equip(Armor_element_name_id[i], @item == nil ? 0 : @item.id) #装备防具
  192.           #end  
  193.         end
  194.         $ItemIcon.refresh
  195.         heroupdate(true)
  196.       end  

  197.       return
  198.     end
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ● 刷新属性界面
  202.   #--------------------------------------------------------------------------
  203.   def heroupdate(reset = false)
  204.     if $game_party.actors[0]!=@actor or reset
  205.       @actor = $game_party.actors[0]

  206.       @bitmap2.clear      
  207.       @bitmap2.font.size = 12
  208.       #@bitmap2.font.bold = true
  209.       @bitmap2.font.color = Color.new(0,0,0,0)  
  210.       name = @actor.name
  211.       @bitmap2.draw_text(133, 19, name.size * 4, 24, name)#名字
  212.       name = $data_classes[@actor.class_id].name
  213.       @bitmap2.draw_text(133, 19 + 22, name.size * 4, 24, name)#职业
  214.       #@bitmap2.font.bold = false
  215.       @bitmap2.font.size = 14
  216.       name = @actor.level.to_s
  217.       @bitmap2.draw_text(133, 19 + 42, name.size * 4, 24, name)#等级
  218.       name = @actor.exp_s + "/"+ @actor.next_rest_exp_s
  219.       @bitmap2.draw_text(133, 19 + 63, name.size * 4, 24, name)#经验
  220.       name = @actor.hp.to_s + "/" + @actor.maxhp.to_s
  221.       @bitmap2.draw_text(87, 120, name.size * 4, 24, name)#hp
  222.       name = @actor.sp.to_s + "/" + @actor.maxsp.to_s
  223.       @bitmap2.draw_text(217, 120, name.size * 4, 24, name)#mp
  224.       name = @actor.str.to_s   
  225.       @bitmap2.draw_text(87, 120+27, name.size * 4, 24, name)#力量
  226.       name = @actor.dex.to_s
  227.       @bitmap2.draw_text(217, 120+27, name.size * 4, 24, name)#灵巧
  228.       name = @actor.agi.to_s
  229.       @bitmap2.draw_text(87, 120+54, name.size * 4, 24, name)#速度
  230.       name = @actor.int.to_s
  231.       @bitmap2.draw_text(217, 120+54, name.size * 4, 24, name)#精神
  232.       name = @actor.atk.to_s
  233.       @bitmap2.draw_text(91, 208, name.size * 4, 24, name)#攻击
  234.       name = @actor.pdef.to_s
  235.       @bitmap2.draw_text(223, 208, name.size * 4, 24, name)#防御
  236.       name = ""
  237.       @bitmap2.draw_text(91, 208+27, name.size * 4, 24, name)#魔法攻击
  238.       name = @actor.mdef.to_s
  239.       @bitmap2.draw_text(223, 208+27, name.size * 4, 24, name)#魔法防御
  240.       #@bitmap2.font.bold = true
  241.       @bitmap2.font.size = 12
  242.       name = HeroText[@actor.class_id]
  243.       a = name.gsub(/^|/, '').split("|")
  244.       row = a.size
  245.       if row>4
  246.          row = 4
  247.       end  
  248.       for i in 1..a.size        
  249.           @bitmap2.draw_text(24, 252 + (i-1) * 60/row , 255, 60, a[i-1])#人物说明   
  250.           if i >= 4
  251.             break
  252.           end  
  253.       end
  254.       #@bitmap2.font.bold = false
  255.       @bitmap2.font.size = 14
  256.       name = $game_party.gold.to_s  
  257.       @bitmap2.font.color = Color.new(255,255,0,255)
  258.       @bitmap2.draw_text(340, 320, name.size * 4, 24, name)#金钱
  259.       
  260.       part_name = [
  261.       @actor.character_name,
  262.       @actor.armor3_id != 0 ? $data_armors[@actor.armor3_id].part : "",
  263.       @actor.armor2_id != 0 ? $data_armors[@actor.armor2_id].part : "",
  264.       @actor.weapon_id != 0 ? $data_weapons[@actor.weapon_id].part : "",
  265.       @actor.armor1_id != 0 ? $data_armors[@actor.armor1_id].part : ""
  266.       ]
  267.       for i in [email protected]
  268.         if @bitmap3[i]!=nil
  269.            @bitmap3[i].dispose
  270.         end
  271.         pic = part_name[i] #@actor.character_name
  272.         if pic!=nil and pic!=""
  273.            bitmap = RPG::Cache.character(pic, @actor.character_hue)
  274.            cw = bitmap.width / 4
  275.            ch = bitmap.height / 4
  276.            @HeroItemBag3[i].bitmap = bitmap
  277.            @HeroItemBag3[i].zoom_x = 0.0 / cw
  278.            @HeroItemBag3[i].zoom_y = 0.0 / ch
  279.            # 设置传送目标的矩形
  280.            sx = 0
  281.            sy = 0
  282.            @HeroItemBag3[i].src_rect.set(sx, sy, cw, ch)      
  283.            @bitmap3[i] = bitmap
  284.         end  
  285.       end      
  286.     end
  287.   end
  288.   #--------------------------------------------------------------------------
  289.   # ● 刷新画面
  290.   #--------------------------------------------------------------------------
  291.   def update
  292.     # 刷新属性界面
  293.     heroupdate(false)
  294.     # 刷新物品窗口   
  295.     $ItemIcon.update   
  296.     # 刷新按键
  297.     update_item
  298.     # 刷新地图精灵
  299.     @spriteset.update
  300.   end
  301.   #--------------------------------------------------------------------------
  302.   # ● 解放
  303.   #--------------------------------------------------------------------------
  304.   def dispose
  305.       @HeroItemBag.dispose
  306.       @HeroItemBag2.dispose
  307.       for i in [email protected]
  308.         @HeroItemBag3[i].dispose   
  309.       end
  310.       for i in [email protected]
  311.         if @bitmap3[i]!=nil
  312.           @bitmap3[i].dispose
  313.         end  
  314.       end
  315.       $HeroItemBag4.dispose
  316.       @bitmap.dispose
  317.       @bitmap2.dispose
  318.       @bitmap4.dispose
  319.       $bitmap5.dispose
  320.       @viewport1.dispose
  321.       @viewport2.dispose
  322.       $ItemIcon.dispose
  323.       @spriteset.dispose
  324.   end
  325. end

  326. #==============================================================================
  327. # ■ Window_Selectable
  328. #------------------------------------------------------------------------------
  329. #  拥有光标的移动以及滚动功能的窗口类。
  330. #==============================================================================

  331. class Window_Selectable3 < Window_Base
  332.   #--------------------------------------------------------------------------
  333.   # ● 定义实例变量
  334.   #--------------------------------------------------------------------------
  335.   attr_reader   :index                    # 光标位置
  336.   attr_reader   :help_window              # 帮助窗口
  337.   #--------------------------------------------------------------------------
  338.   # ● 初始画对像
  339.   #     x      : 窗口的 X 坐标
  340.   #     y      : 窗口的 Y 坐标
  341.   #     width  : 窗口的宽
  342.   #     height : 窗口的高
  343.   #--------------------------------------------------------------------------
  344.   def initialize(x, y, width, height)
  345.     super(x, y, width, height)
  346.     @item_max = 1
  347.     @column_max = 1
  348.     @index = -1
  349.   end
  350.   #--------------------------------------------------------------------------
  351.   # ● 设置光标的位置
  352.   #     index : 新的光标位置
  353.   #--------------------------------------------------------------------------
  354.   def index=(index)
  355.     @index = index
  356.     # 刷新光标矩形
  357.     update_cursor_rect
  358.   end
  359.   #取得当前光标位置索引
  360.   def Getindex
  361.      return @index
  362.   end  
  363.   #--------------------------------------------------------------------------
  364.   # ● 获取行数
  365.   #--------------------------------------------------------------------------
  366.   def row_max
  367.     # 由项目数和列数计算出行数
  368.     return (@item_max + @column_max - 1) / @column_max
  369.   end
  370.   #--------------------------------------------------------------------------
  371.   # ● 获取开头行
  372.   #--------------------------------------------------------------------------
  373.   def top_row
  374.     # 将窗口内容的传送源 Y 坐标、1 行的高 32 等分
  375.     return self.oy / 32
  376.   end
  377.   #--------------------------------------------------------------------------
  378.   # ● 设置开头行
  379.   #     row : 显示开头的行
  380.   #--------------------------------------------------------------------------
  381.   def top_row=(row)
  382.     # row 未满 0 的场合更正为 0
  383.     if row < 0
  384.       row = 0
  385.     end
  386.     # row 超过 row_max - 1 的情况下更正为 row_max - 1
  387.     if row > row_max - 1
  388.       row = row_max - 1
  389.     end
  390.     # row 1 行高的 32 倍、窗口内容的传送源 Y 坐标
  391.     self.oy = row * 32
  392.   end
  393.   #--------------------------------------------------------------------------
  394.   # ● 获取 1 页可以显示的行数
  395.   #--------------------------------------------------------------------------
  396.   def page_row_max
  397.     # 窗口的高度,设置画面的高度减去 32 ,除以 1 行的高度 32
  398.     return (self.height - 32) / 32
  399.   end
  400.   #--------------------------------------------------------------------------
  401.   # ● 获取 1 页可以显示的项目数
  402.   #--------------------------------------------------------------------------
  403.   def page_item_max
  404.     # 将行数 page_row_max 乘上列数 @column_max
  405.     return page_row_max * @column_max
  406.   end
  407.   #--------------------------------------------------------------------------
  408.   # ● 刷新画面
  409.   #--------------------------------------------------------------------------
  410.   def update
  411.     super
  412.   end
  413. end


  414. class Window_Selectable3
  415.   if @self_alias == nil
  416.     alias self_update update
  417.     @self_alias = true
  418.   end
  419.   
  420.   def update
  421.     #self.cursor_rect.empty
  422.     self_update
  423.     if self.active and @item_max > 0
  424.       index_var = @index
  425.       tp_index = @index
  426.       mouse_x, mouse_y = Mouse.get_mouse_pos
  427.       mouse_not_in_rect = true
  428.       for i in 0...@item_max
  429.         @index = i
  430.         update_cursor_rect
  431.         top_x = self.cursor_rect.x + self.x + 16
  432.         top_y = self.cursor_rect.y + self.y + 16
  433.         bottom_x = top_x + self.cursor_rect.width
  434.         bottom_y = top_y + self.cursor_rect.height
  435.         if (mouse_x > top_x) and (mouse_y > top_y) and
  436.            (mouse_x < bottom_x) and (mouse_y < bottom_y)
  437.           mouse_not_in_rect = false
  438.           if tp_index != @index
  439.             tp_index = @index
  440.             $game_system.se_play($data_system.cursor_se)
  441.           end
  442.           break
  443.         end
  444.       end
  445.       if mouse_not_in_rect
  446.         #  row = @index / @column_max
  447.           # 当前行被显示开头行前面的情况下
  448.           if self.top_row < row_max-page_row_max and Mouse.press?(Mouse::LEFT) and mouse_y>self.y+self.height/2
  449.             self.top_row +=1
  450.           end
  451.           # 当前行被显示末尾行之后的情况下
  452.           if self.top_row > 0 and Mouse.press?(Mouse::LEFT) and mouse_y<=self.y+self.height/2
  453.             # 从当前行向末尾滚动
  454.             self.top_row -=1
  455.           end
  456.         @index = index_var
  457.         if self.is_a?(Window_Target)
  458.           #@index=-3
  459.         end
  460.         update_cursor_rect
  461.         Mouse.click_lock
  462.       else
  463.         Mouse.click_unlock               
  464.       end
  465.     end
  466.   end
  467.   
  468.   def ItemTextUpdate2(index=0,i = 0)
  469.     if index<2
  470.           if item.pdef!=0
  471.             i = i + 1
  472.             name = $data_system.words.pdef
  473.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)
  474.             if item.pdef>0
  475.               name1 = "+ " + item.pdef.to_s
  476.             else
  477.               name1 = "- " + (-item.pdef).to_s
  478.             end  
  479.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  480.           end
  481.          
  482.           if item.mdef!=0
  483.             i = i + 1
  484.             name = $data_system.words.mdef
  485.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)
  486.             if item.mdef>0
  487.               name1 = "+ " + item.mdef.to_s
  488.             else
  489.               name1 = "- " + (-item.mdef).to_s
  490.             end  
  491.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  492.           end
  493.          
  494.           if item.str_plus!=0
  495.             i = i + 1
  496.             name = $data_system.words.str
  497.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)
  498.             if item.str_plus>0
  499.               name1 = "+ " + item.str_plus.to_s
  500.             else
  501.               name1 = "- " + (-item.str_plus).to_s
  502.             end  
  503.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  504.           end
  505.          
  506.           if item.dex_plus!=0
  507.             i = i + 1
  508.             name = $data_system.words.dex
  509.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)
  510.             if item.dex_plus>0
  511.               name1 = "+ " + item.dex_plus.to_s
  512.             else
  513.               name1 = "- " + (-item.dex_plus).to_s
  514.             end  
  515.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  516.           end
  517.          
  518.           if item.agi_plus!=0
  519.             i = i + 1
  520.             name = $data_system.words.agi
  521.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)
  522.             if item.agi_plus>0
  523.               name1 = "+ " + item.agi_plus.to_s
  524.             else
  525.               name1 = "- " + (-item.agi_plus).to_s
  526.             end  
  527.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  528.           end
  529.          
  530.           if item.int_plus!=0
  531.             i = i + 1
  532.             name = $data_system.words.int
  533.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)
  534.             if item.int_plus>0
  535.               name1 = "+ " + item.int_plus.to_s
  536.             else
  537.               name1 = "- " + (-item.int_plus).to_s
  538.             end  
  539.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  540.           end
  541.      end
  542.         
  543.      case index
  544.      when 0   #防具      
  545.           if item.eva!=0
  546.             i = i + 1
  547.             name = "闪避"
  548.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)   
  549.             if item.eva>0
  550.               name1 = "+ " + item.eva.to_s
  551.             else
  552.               name1 = "- " + (-item.eva).to_s
  553.             end  
  554.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  555.           end
  556.      when 1 #武器
  557.       
  558.      when 2 #物品  
  559.           if item.parameter_type!=0
  560.             i = i + 1
  561.             case item.parameter_type
  562.             when 1
  563.               name = "Max" + $data_system.words.hp
  564.             when 2
  565.               name = "Max" + $data_system.words.sp
  566.             when 3
  567.               name = $data_system.words.str
  568.             when 4
  569.               name = $data_system.words.dex
  570.             when 5
  571.               name = $data_system.words.agi
  572.             when 6
  573.               name = $data_system.words.int
  574.             end  
  575.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)   
  576.             if item.parameter_points>0
  577.               name1 = "+ " + item.parameter_points.to_s
  578.             else
  579.               name1 = "- " + (-item.parameter_points).to_s
  580.             end  
  581.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  582.           end
  583.           if item.recover_hp_rate!=0
  584.             i = i + 1
  585.             name = $data_system.words.hp + "回复率"
  586.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)   
  587.             if item.recover_hp_rate>0
  588.               name1 = "+ " + item.recover_hp_rate.to_s + "%"
  589.             else
  590.               name1 = "- " + (-item.recover_hp_rate).to_s + "%"
  591.             end  
  592.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  593.           end
  594.           if item.recover_hp!=0
  595.             i = i + 1
  596.             name = $data_system.words.hp + "回复"
  597.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)   
  598.             if item.recover_hp>0
  599.               name1 = "+ " + item.recover_hp.to_s
  600.             else
  601.               name1 = "- " + (-item.recover_hp).to_s
  602.             end  
  603.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  604.           end
  605.           if item.recover_sp_rate!=0
  606.             i = i + 1
  607.             name = $data_system.words.sp + "回复率"
  608.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)   
  609.             if item.recover_sp_rate>0
  610.               name1 = "+ " + item.recover_sp_rate.to_s + "%"
  611.             else
  612.               name1 = "- " + (-item.recover_sp_rate).to_s + "%"
  613.             end  
  614.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  615.           end
  616.           if item.recover_sp!=0
  617.             i = i + 1
  618.             name = $data_system.words.sp + "回复"
  619.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)   
  620.             if item.recover_hp>0
  621.               name1 = "+ " + item.recover_sp.to_s
  622.             else
  623.               name1 = "- " + (-item.recover_sp).to_s
  624.             end  
  625.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  626.           end
  627.      end
  628.      return i
  629.   end
  630.   
  631.   def ItemTextUpdate(item=nil)
  632.      if item==@item
  633.         return
  634.      end  
  635.      @item = item
  636.      if item == nil
  637.         $HeroItemBag4.visible = false
  638.         $HeroItemBag5.visible = false
  639.      end
  640.      if $bitmap5!=nil
  641.        $bitmap5.dispose
  642.      end
  643.      $bitmap5 = Bitmap.new(150,200)
  644.      $HeroItemBag5.bitmap = $bitmap5   
  645.      $bitmap5.font.size = 14
  646.      #$bitmap5.font.bold = true
  647.      $bitmap5.font.color = Color.new(255,255,255,255)  
  648.      name = item.name
  649.      $bitmap5.draw_text(5, 3, name.size * 4, 24, name)#名字
  650.      case item
  651.      when RPG::Item
  652.           #print(item.parameter_type)
  653.           i = ItemTextUpdate2(2,0)
  654.           i = i + 1
  655.           name = item.description
  656.           a = name.gsub(/^|/, '').split("|")
  657.           for j in 1..a.size
  658.               i = i + 1
  659.               $bitmap5.draw_text(5, 3+16*i, a[j-1].size * 4, 24, a[j-1])
  660.           end
  661.      when RPG::Weapon
  662.           i = 0
  663.           if item.atk!=0
  664.             i = i + 1
  665.             name = $data_system.words.atk
  666.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)   
  667.             if item.atk>0
  668.               name1 = "+ " + item.atk.to_s
  669.             else
  670.               name1 = "- " + (-item.atk).to_s
  671.             end  
  672.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  673.           end
  674.           i = ItemTextUpdate2(1,1)
  675.           i = i + 1
  676.           name = item.description
  677.           a = name.gsub(/^|/, '').split("|")
  678.           for j in 1..a.size
  679.               i = i + 1
  680.               $bitmap5.draw_text(5, 3+16*i, a[j-1].size * 4, 24, a[j-1])
  681.           end         
  682.      when RPG::Armor
  683.           i = ItemTextUpdate2(0,0)
  684.           i = i + 1
  685.           name = item.description
  686.           a = name.gsub(/^|/, '').split("|")
  687.           for j in 1..a.size
  688.               i = i + 1
  689.               $bitmap5.draw_text(5, 3+16*i, a[j-1].size * 4, 24, a[j-1])
  690.           end  
  691.      end     
  692.   end
  693.    
  694.   def update_cursor_rect
  695.     # 光标位置不满 0 的情况下
  696.     if @index < 0
  697.       self.cursor_rect.empty
  698.       return
  699.     end
  700.     # 计算光标坐标
  701.     if @index<5
  702.        x = @index*32-2
  703.        y = 2
  704.     elsif @index<10
  705.        x = (@index-5)*32-2
  706.        y = 34
  707.     else
  708.        x = ((@index-10)%8)*32
  709.        y = 106 + ((@index-10)/8)*32
  710.        #print(y.to_s)
  711.        #print(@index)
  712.     end   
  713.     # 更新国标矩形
  714.     # print(@index)
  715.     self.cursor_rect.set(x, y, 32, 32)   
  716.     mouse_x, mouse_y = Mouse.get_mouse_pos
  717.     if mouse_x+150<640
  718.        $HeroItemBag4.x = mouse_x +16
  719.        $HeroItemBag5.x = mouse_x +16
  720.     else
  721.        $HeroItemBag4.x = mouse_x-150+16
  722.        $HeroItemBag5.x = mouse_x-150+16
  723.     end
  724.     if mouse_y + 200<480
  725.       $HeroItemBag4.y = mouse_y +16
  726.       $HeroItemBag5.y = mouse_y +16
  727.     else
  728.       $HeroItemBag4.y = mouse_y-200+16
  729.       $HeroItemBag5.y = mouse_y-200+16
  730.     end
  731.     if $data2.size>0
  732.       top_x = self.cursor_rect.x + self.x + 16
  733.       top_y = self.cursor_rect.y + self.y + 16
  734.       bottom_x = top_x + self.cursor_rect.width
  735.       bottom_y = top_y + self.cursor_rect.height
  736.       if $data2[@index]!=nil and (mouse_x > top_x) and (mouse_y > top_y) and (mouse_x < bottom_x) and (mouse_y < bottom_y)
  737.         ItemTextUpdate($data2[@index])
  738.         $HeroItemBag4.visible = true
  739.         $HeroItemBag5.visible = true
  740.       else
  741.         $HeroItemBag4.visible = false
  742.         $HeroItemBag5.visible = false
  743.       end
  744.     end
  745.   end
  746. end

  747. class Window_ItemIcon < Window_Selectable3
  748.   def initialize
  749.     super(322, 0, 8*32+32, 9*32+32+8)   
  750.     #self.contents = Bitmap.new(width-32, height-32)
  751.     self.z = 1500
  752.     self.opacity = 0
  753.     refresh
  754.     #@column_max = 5
  755.     #@item_max = 10
  756.     self.index = 0   
  757.   end
  758.   #--------------------------------------------------------------------------
  759.   # ● 获取物品
  760.   #--------------------------------------------------------------------------
  761.   def item
  762.     #print(self.index)
  763.     return $data2[self.index]
  764.   end
  765.   
  766.   def get_item(index)
  767.      return $data2[index]
  768.   end
  769.   
  770.   def getindex
  771.      return self.index
  772.   end  
  773.    
  774.   #--------------------------------------------------------------------------
  775.   # ● 刷新
  776.   #--------------------------------------------------------------------------
  777.   def refresh
  778.     if $game_party!=nil
  779.        actor = $game_party.actors[0]
  780.      else
  781.        return
  782.     end      
  783.     #self.contents.clear  
  784.     if self.contents != nil
  785.       self.contents.dispose
  786.       self.contents = nil
  787.     end
  788.     @column_max = 8
  789.     $data2 = []
  790.     $data2.push($data_armors[actor.armor2_id]) #头盔
  791.     $data2.push($data_armors[actor.armor3_id]) #衣服
  792.     $data2.push($data_armors[actor.armor1_id]) #盾
  793.     $data2.push($data_armors[actor.armor5_id]) #项链
  794.     $data2.push($data_armors[actor.armor4_id]) #戒指
  795.     $data2.push($data_armors[actor.armor6_id]) #鞋子
  796.     $data2.push($data_armors[actor.armor7_id]) #腰带
  797.     $data2.push($data_armors[actor.armor8_id]) #手镯
  798.     $data2.push($data_weapons[actor.weapon_id])      #武器
  799.     $data2.push($data_armors[actor.armor9_id]) #勋章
  800.     for i in 1...$data_items.size
  801.       if $game_party.item_number(i) > 0
  802.         #for j in 1..$game_party.item_number(i)
  803.           $data2.push($data_items[i])
  804.         #end
  805.       end
  806.     end
  807.     for i in 1...$data_weapons.size
  808.       if $game_party.weapon_number(i) > 0
  809.         for j in 1..$game_party.weapon_number(i)
  810.           $data2.push($data_weapons[i])
  811.         end
  812.       end
  813.     end
  814.     for i in 1...$data_armors.size
  815.       if $game_party.armor_number(i) > 0
  816.         for j in 1..$game_party.armor_number(i)
  817.           $data2.push($data_armors[i])
  818.         end
  819.       end
  820.     end
  821.     k = 58
  822.     $data2.size>0 if k = 57
  823.     for i in $data2.size..k
  824.       $data2.push(nil)
  825.     end
  826.     @item_max = $data2.size   
  827.     self.contents = Bitmap.new(width - 32, height-32)  
  828.     self.contents.font.size = 12
  829.     self.contents.font.bold = true
  830.     #更新装备格图标
  831.     for i in 0..9
  832.       item = $data2[i]
  833.       if item!=nil
  834.          bitmap = RPG::Cache.icon(item.icon_name)
  835.          width = bitmap.width
  836.          height = bitmap.height
  837.          if i<5
  838.             self.contents.blt(-5+i*32,0, bitmap, Rect.new(0, 0,width,height), 255)
  839.           else
  840.             self.contents.blt(-8+(i-5)*32,-3+32, bitmap, Rect.new(0, 0,width,height), 255)
  841.          end
  842.          #case item
  843.          #when RPG::Item
  844.            #number = $game_party.item_number(item.id)
  845.            #if i<5
  846.               #self.contents.draw_text(15+i*32, 14, width, height, number.to_s)
  847.             #else
  848.               #self.contents.draw_text(15+(i-5)*32, 14+32, width, height, number.to_s)
  849.            #end
  850.          #when RPG::Weapon
  851.            #number = $game_party.weapon_number(item.id)        
  852.          #when RPG::Armor
  853.            #number = $game_party.armor_number(item.id)
  854.          #end
  855.       end
  856.     end
  857.     #更新物品栏图标
  858.     for j in 1..6
  859.       for i in 1..8
  860.          item = $data2[9+i+(j-1)*8]
  861.          if item!=nil
  862.            bitmap = RPG::Cache.icon(item.icon_name)
  863.            width = bitmap.width
  864.            height = bitmap.height
  865.            self.contents.blt(-5+(i-1)*32,0+105+(j-1)*32, bitmap, Rect.new(0, 0,width,height), 255)
  866.            case item
  867.            when RPG::Item
  868.              number = $game_party.item_number(item.id)
  869.              self.contents.draw_text(5+(i-1)*32+13,6+105+(j-1)*32+8, width, height, number.to_s)
  870.            when RPG::Weapon
  871.              number = $game_party.weapon_number(item.id)        
  872.            when RPG::Armor
  873.              number = $game_party.armor_number(item.id)
  874.            end
  875.          end
  876.       end
  877.     end
  878.   end
  879. end
复制代码

点评

直接添加到原脚本还是什么的?  发表于 2012-7-12 21:00

Lv1.梦旅人

梦石
0
星屑
50
在线时间
114 小时
注册时间
2012-4-25
帖子
163
2
 楼主| 发表于 2012-7-12 21:04:34 | 只看该作者
只要可以就行 我用了这脚本后 用等级限制脚本没用为什么 帮帮我
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
47
在线时间
412 小时
注册时间
2012-6-1
帖子
1021
3
发表于 2012-7-12 21:07:03 | 只看该作者
不清楚啊啊啊
是不是楼主安放的脚本位置有问题。
导致等级限制脚本的内容被其他脚本重写覆盖了?
这里是新人 明特·布兰马修
脚本盲 事件盲 美工盲
还是色盲ORZ
XP\VX略懂VA无助很抱歉
所以问题什么如果答不好就不要提醒我了
短篇7已经放弃,但是坑在继续补上。所以回答和现身次数少之。
有事烧纸或者留言即可。

还有我不是正太啊ORZ
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
114 小时
注册时间
2012-4-25
帖子
163
4
 楼主| 发表于 2012-7-12 21:09:47 | 只看该作者
我发个那个脚本是 背包系统 脚本 就是缺等级限制 如果在系统自带的上面可以使用

点评

好吧,可以的话放上一个简单的工程,我帮你看看。  发表于 2012-7-12 21:11
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
114 小时
注册时间
2012-4-25
帖子
163
5
 楼主| 发表于 2012-7-12 21:16:02 | 只看该作者
拜托你了

人物包包系统.rar

489.29 KB, 下载次数: 202

点评

范例没有等级限制的脚本,不知道怎办呢?建议把等级限制脚本放到脚本最后 再试试看。  发表于 2012-7-12 21:36
嗯,先看看脚本兼容问题哦  发表于 2012-7-12 21:21
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
5 小时
注册时间
2012-7-16
帖子
33
6
发表于 2012-7-16 13:09:25 | 只看该作者
楼主这个事什么脚本···感觉像10装备···
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2012-7-15
帖子
7
7
发表于 2012-7-17 12:08:31 | 只看该作者
为什么我每次看到脚本,头都大了?{:2_271:}RMXP下载了一个星期了,连个事件都做不发的我,要崩溃了。
回复

使用道具 举报

Lv3.寻梦者

双子人

梦石
0
星屑
3185
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

8
发表于 2012-7-17 12:42:15 | 只看该作者
本帖最后由 hys111111 于 2012-7-17 12:42 编辑
  1. #==================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==================================================================
  4. #一行20个中文字,最多4行,使用"|"符号进行换行。
  5. #数据库说明不限制行数,同样使用"|"符号进行换行。
  6. $data2 = [] #存包包物品
  7. HeroText=[] #角色说明
  8. HeroText[1] = "出身平民之家,自幼习得一身好武艺。以一柄|长剑或单刀行走于江湖,是个锄强扶弱,行侠|仗义的少年英雄。"
  9. Armor_element_name =["头盔","铠甲","护盾","项链","戒指","鞋子","腰带","手镯","勋章"] #防具属性名称
  10. Armor_element_name_id = [2,3,1,5,4,6,7,8,9] #装备物品是的索引,作用见equip函数

  11. class HeroItemBag
  12.   attr_reader   :viewport1
  13.   attr_reader   :viewport2
  14.   #--------------------------------------------------------------------------
  15.   # ● 初期化
  16.   #--------------------------------------------------------------------------
  17.   #def initialize(viewport=nil)
  18.     #super(viewport)
  19.   #end
  20.   #--------------------------------------------------------------------------
  21.   # ● 主处理
  22.   #--------------------------------------------------------------------------
  23.   def main
  24.        #背景界面
  25.        @viewport1 = Viewport.new(0, 0, 640, 480)
  26.        @HeroItemBag = Sprite.new(@viewport1)
  27.        @viewport1.z = 1000  
  28.        @bitmap = Bitmap.new('Graphics/Windowskins/HeroItemBag.PNG')
  29.        @HeroItemBag.bitmap = @bitmap
  30.        @HeroItemBag.visible = true
  31.        @HeroItemBag.x = (640 - @bitmap.width)/2
  32.        @HeroItemBag.y = 0
  33.        @HeroItemBag.z = 1000
  34.        #文字界面
  35.        @viewport2 = Viewport.new(0, 0, 640, 480)
  36.        @HeroItemBag2 = Sprite.new(@viewport2)
  37.        @viewport2.z = 1100  
  38.        @bitmap2 = Bitmap.new(@bitmap.width,@bitmap.height)
  39.        @HeroItemBag2.bitmap = @bitmap2
  40.        @HeroItemBag2.visible = true
  41.        @HeroItemBag2.x = (640 - @bitmap.width)/2
  42.        @HeroItemBag2.y = 0
  43.        @HeroItemBag2.z = 1100
  44.        #人物精灵
  45.        @bitmap3=[]
  46.        @HeroItemBag3 =[]
  47.        for i in 0..4 #主身#衣服#头盔#武器#盾
  48.           @HeroItemBag3[i] = Sprite.new(nil)
  49.           @HeroItemBag3[i].visible = true
  50.           @HeroItemBag3[i].x = @HeroItemBag.x + 19
  51.           @HeroItemBag3[i].y = @HeroItemBag.y + 21
  52.           @HeroItemBag3[i].z = 1200 + i * 100      
  53.        end
  54.        #物品说明窗口背景
  55.        $HeroItemBag4 = Sprite.new(nil)
  56.        @bitmap4 = Bitmap.new('Graphics/Windowskins/Item.PNG')
  57.        $HeroItemBag4.bitmap = @bitmap4
  58.        $HeroItemBag4.visible = false
  59.        $HeroItemBag4.zoom_x = 150.0 / @bitmap4.width
  60.        $HeroItemBag4.zoom_y = 200.0 / @bitmap4.height
  61.        $HeroItemBag4.x = 0
  62.        $HeroItemBag4.y = 0
  63.        $HeroItemBag4.z = 1700
  64.        #$HeroItemBag4.opacity = 80
  65.        #物品说明窗口
  66.        $HeroItemBag5 = Sprite.new(nil)
  67.        $bitmap5 = Bitmap.new(150,200)
  68.        $HeroItemBag5.bitmap = $bitmap5
  69.        $HeroItemBag5.visible = false
  70.        $HeroItemBag5.z = 2000
  71.       
  72.        #更新属性界面
  73.        heroupdate(false)      
  74.        #物品窗口
  75.        $ItemIcon = Window_ItemIcon.new  
  76.        #地图界面
  77.        @spriteset = Spriteset_Map.new      
  78.        # 执行过渡
  79.        Graphics.transition
  80.        # 主循环
  81.        loop do
  82.          # 刷新游戏画面
  83.          Graphics.update
  84.          # 刷新输入信息
  85.          Input.update
  86.          Kboard.update         
  87.          # 刷新画面
  88.          update
  89.          # 如果切换画面就中断循环
  90.          if $scene != self
  91.            break
  92.          end
  93.        end
  94.        # 准备过渡
  95.        Graphics.freeze
  96.        # 释放窗口
  97.        self.dispose   
  98.   end
  99.   
  100.   def element_search(element_name)
  101.     return nil if element_name == nil
  102.     for i in 1...$data_system.elements.size
  103.       if $data_system.elements[i] =~ /^#{element_name}/
  104.         return i
  105.       end
  106.     end
  107.   end
  108.   
  109.   def update_item
  110.     # 按下鼠标右键情况下
  111.     if Kboard.keyboard($Rmouse_BUTTON_R)
  112.       # 获取物品窗口当前选中的物品数据
  113.       @item = $ItemIcon.item
  114.       index = $ItemIcon.getindex
  115.       case @item
  116.       when RPG::Item
  117.         
  118.       # 不能使用的情况下
  119.       unless $game_party.item_can_use?(@item.id)
  120.         # 演奏冻结 SE
  121.         $game_system.se_play($data_system.buzzer_se)
  122.         return
  123.       end
  124.       if @item.scope >= 3
  125.         # 设置效果范围 (单体/全体) 的对应光标位置
  126.         if @item.scope == 4 || @item.scope == 6
  127.           target_index = -1
  128.         else
  129.           target_index = 0
  130.         end
  131.         if target_index >= 0
  132.            # 对目标角色应用物品的使用效果
  133.            target = $game_party.actors[target_index]
  134.            used = target.item_effect(@item)
  135.          else
  136.            used = false
  137.            for i in $game_party.actors
  138.              used |= i.item_effect(@item)
  139.            end
  140.         end
  141.       end
  142.       # 使用物品的情况下
  143.       if used
  144.         # 演奏物品使用时的 SE
  145.         $game_system.se_play(@item.menu_se)
  146.         heroupdate(true)
  147.         # 消耗品的情况下
  148.         if @item.consumable
  149.           # 使用的物品数减 1
  150.           $game_party.lose_item(@item.id, 1)
  151.           # 再描绘物品窗口的项目
  152.           $ItemIcon.refresh
  153.         end
  154.         # 公共事件 ID 有效的情况下
  155.         if @item.common_event_id > 0
  156.           # 预约调用公共事件
  157.           $game_temp.common_event_id = @item.common_event_id
  158.           # 切换到地图画面
  159.           $scene = Scene_Map.new
  160.           return
  161.         end
  162.       end
  163.       # 无法使用物品的情况下
  164.       unless used
  165.         # 演奏冻结 SE
  166.         $game_system.se_play($data_system.buzzer_se)
  167.       end
  168.       
  169.       when RPG::Weapon
  170.         if index<10
  171.            @actor.equip(0, 0)#@item == nil ? 0 : @item.id) #卸下武器         
  172.          else
  173.            @actor.equip(0, @item == nil ? 0 : @item.id) #变更武器
  174.         end
  175.         $ItemIcon.refresh #刷新物品栏
  176.         heroupdate(true) #强制刷新人物属性界面
  177.         
  178.       when RPG::Armor
  179.         for i in 0..Armor_element_name.size
  180.           id = element_search(Armor_element_name[i])
  181.           if @item.guard_element_set.include?(id)
  182.             break
  183.           end  
  184.         end
  185.         if index<10
  186.           #if Armor_element_name_id[i]!=-1
  187.             @actor.equip(Armor_element_name_id[i], 0) #卸下防具
  188.           #end
  189.         else
  190.           #if Armor_element_name_id[i]!=-1
  191.             @actor.equip(Armor_element_name_id[i], @item == nil ? 0 : @item.id) #装备防具
  192.           #end  
  193.         end
  194.         $ItemIcon.refresh
  195.         heroupdate(true)
  196.       end  

  197.       return
  198.     end
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ● 刷新属性界面
  202.   #--------------------------------------------------------------------------
  203.   def heroupdate(reset = false)
  204.     if $game_party.actors[0]!=@actor or reset
  205.       @actor = $game_party.actors[0]

  206.       @bitmap2.clear      
  207.       @bitmap2.font.size = 12
  208.       #@bitmap2.font.bold = true
  209.       @bitmap2.font.color = Color.new(0,0,0,0)  
  210.       name = @actor.name
  211.       @bitmap2.draw_text(133, 19, name.size * 4, 24, name)#名字
  212.       name = $data_classes[@actor.class_id].name
  213.       @bitmap2.draw_text(133, 19 + 22, name.size * 4, 24, name)#职业
  214.       #@bitmap2.font.bold = false
  215.       @bitmap2.font.size = 14
  216.       name = @actor.level.to_s
  217.       @bitmap2.draw_text(133, 19 + 42, name.size * 4, 24, name)#等级
  218.       name = @actor.exp_s + "/"+ @actor.next_rest_exp_s
  219.       @bitmap2.draw_text(133, 19 + 63, name.size * 4, 24, name)#经验
  220.       name = @actor.hp.to_s + "/" + @actor.maxhp.to_s
  221.       @bitmap2.draw_text(87, 120, name.size * 4, 24, name)#hp
  222.       name = @actor.sp.to_s + "/" + @actor.maxsp.to_s
  223.       @bitmap2.draw_text(217, 120, name.size * 4, 24, name)#mp
  224.       name = @actor.str.to_s   
  225.       @bitmap2.draw_text(87, 120+27, name.size * 4, 24, name)#力量
  226.       name = @actor.dex.to_s
  227.       @bitmap2.draw_text(217, 120+27, name.size * 4, 24, name)#灵巧
  228.       name = @actor.agi.to_s
  229.       @bitmap2.draw_text(87, 120+54, name.size * 4, 24, name)#速度
  230.       name = @actor.int.to_s
  231.       @bitmap2.draw_text(217, 120+54, name.size * 4, 24, name)#精神
  232.       name = @actor.atk.to_s
  233.       @bitmap2.draw_text(91, 208, name.size * 4, 24, name)#攻击
  234.       name = @actor.pdef.to_s
  235.       @bitmap2.draw_text(223, 208, name.size * 4, 24, name)#防御
  236.       name = ""
  237.       @bitmap2.draw_text(91, 208+27, name.size * 4, 24, name)#魔法攻击
  238.       name = @actor.mdef.to_s
  239.       @bitmap2.draw_text(223, 208+27, name.size * 4, 24, name)#魔法防御
  240.       #@bitmap2.font.bold = true
  241.       @bitmap2.font.size = 12
  242.       name = HeroText[@actor.class_id]
  243.       a = name.gsub(/^|/, '').split("|")
  244.       row = a.size
  245.       if row>4
  246.          row = 4
  247.       end  
  248.       for i in 1..a.size        
  249.           @bitmap2.draw_text(24, 252 + (i-1) * 60/row , 255, 60, a[i-1])#人物说明   
  250.           if i >= 4
  251.             break
  252.           end  
  253.       end
  254.       #@bitmap2.font.bold = false
  255.       @bitmap2.font.size = 14
  256.       name = $game_party.gold.to_s  
  257.       @bitmap2.font.color = Color.new(255,255,0,255)
  258.       @bitmap2.draw_text(340, 320, name.size * 4, 24, name)#金钱
  259.       
  260.       part_name = [
  261.       @actor.character_name,
  262.       @actor.armor3_id != 0 ? $data_armors[@actor.armor3_id].part : "",
  263.       @actor.armor2_id != 0 ? $data_armors[@actor.armor2_id].part : "",
  264.       @actor.weapon_id != 0 ? $data_weapons[@actor.weapon_id].part : "",
  265.       @actor.armor1_id != 0 ? $data_armors[@actor.armor1_id].part : ""
  266.       ]
  267.       for i in [email protected]
  268.         if @bitmap3[i]!=nil
  269.            @bitmap3[i].dispose
  270.         end
  271.         pic = part_name[i] #@actor.character_name
  272.         if pic!=nil and pic!=""
  273.            bitmap = RPG::Cache.character(pic, @actor.character_hue)
  274.            cw = bitmap.width / 4
  275.            ch = bitmap.height / 4
  276.            @HeroItemBag3[i].bitmap = bitmap
  277.            @HeroItemBag3[i].zoom_x = 0.0 / cw
  278.            @HeroItemBag3[i].zoom_y = 0.0 / ch
  279.            # 设置传送目标的矩形
  280.            sx = 0
  281.            sy = 0
  282.            @HeroItemBag3[i].src_rect.set(sx, sy, cw, ch)      
  283.            @bitmap3[i] = bitmap
  284.         end  
  285.       end      
  286.     end
  287.   end
  288.   #--------------------------------------------------------------------------
  289.   # ● 刷新画面
  290.   #--------------------------------------------------------------------------
  291.   def update
  292.     # 刷新属性界面
  293.     heroupdate(false)
  294.     # 刷新物品窗口   
  295.     $ItemIcon.update   
  296.     # 刷新按键
  297.     update_item
  298.     # 刷新地图精灵
  299.     @spriteset.update
  300.   end
  301.   #--------------------------------------------------------------------------
  302.   # ● 解放
  303.   #--------------------------------------------------------------------------
  304.   def dispose
  305.       @HeroItemBag.dispose
  306.       @HeroItemBag2.dispose
  307.       for i in [email protected]
  308.         @HeroItemBag3[i].dispose   
  309.       end
  310.       for i in [email protected]
  311.         if @bitmap3[i]!=nil
  312.           @bitmap3[i].dispose
  313.         end  
  314.       end
  315.       $HeroItemBag4.dispose
  316.       @bitmap.dispose
  317.       @bitmap2.dispose
  318.       @bitmap4.dispose
  319.       $bitmap5.dispose
  320.       @viewport1.dispose
  321.       @viewport2.dispose
  322.       $ItemIcon.dispose
  323.       @spriteset.dispose
  324.   end
  325. end

  326. #==============================================================================
  327. # ■ Window_Selectable
  328. #------------------------------------------------------------------------------
  329. #  拥有光标的移动以及滚动功能的窗口类。
  330. #==============================================================================

  331. class Window_Selectable3 < Window_Base
  332.   #--------------------------------------------------------------------------
  333.   # ● 定义实例变量
  334.   #--------------------------------------------------------------------------
  335.   attr_reader   :index                    # 光标位置
  336.   attr_reader   :help_window              # 帮助窗口
  337.   #--------------------------------------------------------------------------
  338.   # ● 初始画对像
  339.   #     x      : 窗口的 X 坐标
  340.   #     y      : 窗口的 Y 坐标
  341.   #     width  : 窗口的宽
  342.   #     height : 窗口的高
  343.   #--------------------------------------------------------------------------
  344.   def initialize(x, y, width, height)
  345.     super(x, y, width, height)
  346.     @item_max = 1
  347.     @column_max = 1
  348.     @index = -1
  349.   end
  350.   #--------------------------------------------------------------------------
  351.   # ● 设置光标的位置
  352.   #     index : 新的光标位置
  353.   #--------------------------------------------------------------------------
  354.   def index=(index)
  355.     @index = index
  356.     # 刷新光标矩形
  357.     update_cursor_rect
  358.   end
  359.   #取得当前光标位置索引
  360.   def Getindex
  361.      return @index
  362.   end  
  363.   #--------------------------------------------------------------------------
  364.   # ● 获取行数
  365.   #--------------------------------------------------------------------------
  366.   def row_max
  367.     # 由项目数和列数计算出行数
  368.     return (@item_max + @column_max - 1) / @column_max
  369.   end
  370.   #--------------------------------------------------------------------------
  371.   # ● 获取开头行
  372.   #--------------------------------------------------------------------------
  373.   def top_row
  374.     # 将窗口内容的传送源 Y 坐标、1 行的高 32 等分
  375.     return self.oy / 32
  376.   end
  377.   #--------------------------------------------------------------------------
  378.   # ● 设置开头行
  379.   #     row : 显示开头的行
  380.   #--------------------------------------------------------------------------
  381.   def top_row=(row)
  382.     # row 未满 0 的场合更正为 0
  383.     if row < 0
  384.       row = 0
  385.     end
  386.     # row 超过 row_max - 1 的情况下更正为 row_max - 1
  387.     if row > row_max - 1
  388.       row = row_max - 1
  389.     end
  390.     # row 1 行高的 32 倍、窗口内容的传送源 Y 坐标
  391.     self.oy = row * 32
  392.   end
  393.   #--------------------------------------------------------------------------
  394.   # ● 获取 1 页可以显示的行数
  395.   #--------------------------------------------------------------------------
  396.   def page_row_max
  397.     # 窗口的高度,设置画面的高度减去 32 ,除以 1 行的高度 32
  398.     return (self.height - 32) / 32
  399.   end
  400.   #--------------------------------------------------------------------------
  401.   # ● 获取 1 页可以显示的项目数
  402.   #--------------------------------------------------------------------------
  403.   def page_item_max
  404.     # 将行数 page_row_max 乘上列数 @column_max
  405.     return page_row_max * @column_max
  406.   end
  407.   #--------------------------------------------------------------------------
  408.   # ● 刷新画面
  409.   #--------------------------------------------------------------------------
  410.   def update
  411.     super
  412.   end
  413. end


  414. class Window_Selectable3
  415.   if @self_alias == nil
  416.     alias self_update update
  417.     @self_alias = true
  418.   end
  419.   
  420.   def update
  421.     #self.cursor_rect.empty
  422.     self_update
  423.     if self.active and @item_max > 0
  424.       index_var = @index
  425.       tp_index = @index
  426.       mouse_x, mouse_y = Mouse.get_mouse_pos
  427.       mouse_not_in_rect = true
  428.       for i in 0...@item_max
  429.         @index = i
  430.         update_cursor_rect
  431.         top_x = self.cursor_rect.x + self.x + 16
  432.         top_y = self.cursor_rect.y + self.y + 16
  433.         bottom_x = top_x + self.cursor_rect.width
  434.         bottom_y = top_y + self.cursor_rect.height
  435.         if (mouse_x > top_x) and (mouse_y > top_y) and
  436.            (mouse_x < bottom_x) and (mouse_y < bottom_y)
  437.           mouse_not_in_rect = false
  438.           if tp_index != @index
  439.             tp_index = @index
  440.             $game_system.se_play($data_system.cursor_se)
  441.           end
  442.           break
  443.         end
  444.       end
  445.       if mouse_not_in_rect
  446.         #  row = @index / @column_max
  447.           # 当前行被显示开头行前面的情况下
  448.           if self.top_row < row_max-page_row_max and Mouse.press?(Mouse::LEFT) and mouse_y>self.y+self.height/2
  449.             self.top_row +=1
  450.           end
  451.           # 当前行被显示末尾行之后的情况下
  452.           if self.top_row > 0 and Mouse.press?(Mouse::LEFT) and mouse_y<=self.y+self.height/2
  453.             # 从当前行向末尾滚动
  454.             self.top_row -=1
  455.           end
  456.         @index = index_var
  457.         if self.is_a?(Window_Target)
  458.           #@index=-3
  459.         end
  460.         update_cursor_rect
  461.         Mouse.click_lock
  462.       else
  463.         Mouse.click_unlock               
  464.       end
  465.     end
  466.   end
  467.   
  468.   def ItemTextUpdate2(index=0,i = 0)
  469.     if index<2
  470.           if item.pdef!=0
  471.             i = i + 1
  472.             name = $data_system.words.pdef
  473.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)
  474.             if item.pdef>0
  475.               name1 = "+ " + item.pdef.to_s
  476.             else
  477.               name1 = "- " + (-item.pdef).to_s
  478.             end  
  479.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  480.           end
  481.          
  482.           if item.mdef!=0
  483.             i = i + 1
  484.             name = $data_system.words.mdef
  485.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)
  486.             if item.mdef>0
  487.               name1 = "+ " + item.mdef.to_s
  488.             else
  489.               name1 = "- " + (-item.mdef).to_s
  490.             end  
  491.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  492.           end
  493.          
  494.           if item.str_plus!=0
  495.             i = i + 1
  496.             name = $data_system.words.str
  497.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)
  498.             if item.str_plus>0
  499.               name1 = "+ " + item.str_plus.to_s
  500.             else
  501.               name1 = "- " + (-item.str_plus).to_s
  502.             end  
  503.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  504.           end
  505.          
  506.           if item.dex_plus!=0
  507.             i = i + 1
  508.             name = $data_system.words.dex
  509.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)
  510.             if item.dex_plus>0
  511.               name1 = "+ " + item.dex_plus.to_s
  512.             else
  513.               name1 = "- " + (-item.dex_plus).to_s
  514.             end  
  515.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  516.           end
  517.          
  518.           if item.agi_plus!=0
  519.             i = i + 1
  520.             name = $data_system.words.agi
  521.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)
  522.             if item.agi_plus>0
  523.               name1 = "+ " + item.agi_plus.to_s
  524.             else
  525.               name1 = "- " + (-item.agi_plus).to_s
  526.             end  
  527.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  528.           end
  529.          
  530.           if item.int_plus!=0
  531.             i = i + 1
  532.             name = $data_system.words.int
  533.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)
  534.             if item.int_plus>0
  535.               name1 = "+ " + item.int_plus.to_s
  536.             else
  537.               name1 = "- " + (-item.int_plus).to_s
  538.             end  
  539.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  540.           end
  541.      end
  542.         
  543.      case index
  544.      when 0   #防具      
  545.           if item.eva!=0
  546.             i = i + 1
  547.             name = "闪避"
  548.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)   
  549.             if item.eva>0
  550.               name1 = "+ " + item.eva.to_s
  551.             else
  552.               name1 = "- " + (-item.eva).to_s
  553.             end  
  554.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  555.           end
  556.      when 1 #武器
  557.       
  558.      when 2 #物品  
  559.           if item.parameter_type!=0
  560.             i = i + 1
  561.             case item.parameter_type
  562.             when 1
  563.               name = "Max" + $data_system.words.hp
  564.             when 2
  565.               name = "Max" + $data_system.words.sp
  566.             when 3
  567.               name = $data_system.words.str
  568.             when 4
  569.               name = $data_system.words.dex
  570.             when 5
  571.               name = $data_system.words.agi
  572.             when 6
  573.               name = $data_system.words.int
  574.             end  
  575.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)   
  576.             if item.parameter_points>0
  577.               name1 = "+ " + item.parameter_points.to_s
  578.             else
  579.               name1 = "- " + (-item.parameter_points).to_s
  580.             end  
  581.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  582.           end
  583.           if item.recover_hp_rate!=0
  584.             i = i + 1
  585.             name = $data_system.words.hp + "回复率"
  586.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)   
  587.             if item.recover_hp_rate>0
  588.               name1 = "+ " + item.recover_hp_rate.to_s + "%"
  589.             else
  590.               name1 = "- " + (-item.recover_hp_rate).to_s + "%"
  591.             end  
  592.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  593.           end
  594.           if item.recover_hp!=0
  595.             i = i + 1
  596.             name = $data_system.words.hp + "回复"
  597.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)   
  598.             if item.recover_hp>0
  599.               name1 = "+ " + item.recover_hp.to_s
  600.             else
  601.               name1 = "- " + (-item.recover_hp).to_s
  602.             end  
  603.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  604.           end
  605.           if item.recover_sp_rate!=0
  606.             i = i + 1
  607.             name = $data_system.words.sp + "回复率"
  608.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)   
  609.             if item.recover_sp_rate>0
  610.               name1 = "+ " + item.recover_sp_rate.to_s + "%"
  611.             else
  612.               name1 = "- " + (-item.recover_sp_rate).to_s + "%"
  613.             end  
  614.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  615.           end
  616.           if item.recover_sp!=0
  617.             i = i + 1
  618.             name = $data_system.words.sp + "回复"
  619.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)   
  620.             if item.recover_hp>0
  621.               name1 = "+ " + item.recover_sp.to_s
  622.             else
  623.               name1 = "- " + (-item.recover_sp).to_s
  624.             end  
  625.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  626.           end
  627.      end
  628.      return i
  629.   end
  630.   
  631.   def ItemTextUpdate(item=nil)
  632.      if item==@item
  633.         return
  634.      end  
  635.      @item = item
  636.      if item == nil
  637.         $HeroItemBag4.visible = false
  638.         $HeroItemBag5.visible = false
  639.      end
  640.      if $bitmap5!=nil
  641.        $bitmap5.dispose
  642.      end
  643.      $bitmap5 = Bitmap.new(150,200)
  644.      $HeroItemBag5.bitmap = $bitmap5   
  645.      $bitmap5.font.size = 14
  646.      #$bitmap5.font.bold = true
  647.      $bitmap5.font.color = Color.new(255,255,255,255)  
  648.      name = item.name
  649.      $bitmap5.draw_text(5, 3, name.size * 4, 24, name)#名字
  650.      case item
  651.      when RPG::Item
  652.           #print(item.parameter_type)
  653.           i = ItemTextUpdate2(2,0)
  654.           i = i + 1
  655.           name = item.description
  656.           a = name.gsub(/^|/, '').split("|")
  657.           for j in 1..a.size
  658.               i = i + 1
  659.               $bitmap5.draw_text(5, 3+16*i, a[j-1].size * 4, 24, a[j-1])
  660.           end
  661.      when RPG::Weapon
  662.           i = 0
  663.           if item.atk!=0
  664.             i = i + 1
  665.             name = $data_system.words.atk
  666.             $bitmap5.draw_text(5, 3+16*i, name.size * 4, 24, name)   
  667.             if item.atk>0
  668.               name1 = "+ " + item.atk.to_s
  669.             else
  670.               name1 = "- " + (-item.atk).to_s
  671.             end  
  672.             $bitmap5.draw_text(5+name.size*4+10, 3+16*i, name1.size * 4, 24, name1)
  673.           end
  674.           i = ItemTextUpdate2(1,1)
  675.           i = i + 1
  676.           name = item.description
  677.           a = name.gsub(/^|/, '').split("|")
  678.           for j in 1..a.size
  679.               i = i + 1
  680.               $bitmap5.draw_text(5, 3+16*i, a[j-1].size * 4, 24, a[j-1])
  681.           end         
  682.      when RPG::Armor
  683.           i = ItemTextUpdate2(0,0)
  684.           i = i + 1
  685.           name = item.description
  686.           a = name.gsub(/^|/, '').split("|")
  687.           for j in 1..a.size
  688.               i = i + 1
  689.               $bitmap5.draw_text(5, 3+16*i, a[j-1].size * 4, 24, a[j-1])
  690.           end  
  691.      end     
  692.   end
  693.    
  694.   def update_cursor_rect
  695.     # 光标位置不满 0 的情况下
  696.     if @index < 0
  697.       self.cursor_rect.empty
  698.       return
  699.     end
  700.     # 计算光标坐标
  701.     if @index<5
  702.        x = @index*32-2
  703.        y = 2
  704.     elsif @index<10
  705.        x = (@index-5)*32-2
  706.        y = 34
  707.     else
  708.        x = ((@index-10)%8)*32
  709.        y = 106 + ((@index-10)/8)*32
  710.        #print(y.to_s)
  711.        #print(@index)
  712.     end   
  713.     # 更新国标矩形
  714.     # print(@index)
  715.     self.cursor_rect.set(x, y, 32, 32)   
  716.     mouse_x, mouse_y = Mouse.get_mouse_pos
  717.     if mouse_x+150<640
  718.        $HeroItemBag4.x = mouse_x +16
  719.        $HeroItemBag5.x = mouse_x +16
  720.     else
  721.        $HeroItemBag4.x = mouse_x-150+16
  722.        $HeroItemBag5.x = mouse_x-150+16
  723.     end
  724.     if mouse_y + 200<480
  725.       $HeroItemBag4.y = mouse_y +16
  726.       $HeroItemBag5.y = mouse_y +16
  727.     else
  728.       $HeroItemBag4.y = mouse_y-200+16
  729.       $HeroItemBag5.y = mouse_y-200+16
  730.     end
  731.     if $data2.size>0
  732.       top_x = self.cursor_rect.x + self.x + 16
  733.       top_y = self.cursor_rect.y + self.y + 16
  734.       bottom_x = top_x + self.cursor_rect.width
  735.       bottom_y = top_y + self.cursor_rect.height
  736.       if $data2[@index]!=nil and (mouse_x > top_x) and (mouse_y > top_y) and (mouse_x < bottom_x) and (mouse_y < bottom_y)
  737.         ItemTextUpdate($data2[@index])
  738.         $HeroItemBag4.visible = true
  739.         $HeroItemBag5.visible = true
  740.       else
  741.         $HeroItemBag4.visible = false
  742.         $HeroItemBag5.visible = false
  743.       end
  744.     end
  745.   end
  746. end

  747. class Window_ItemIcon < Window_Selectable3
  748.   def initialize
  749.     super(322, 0, 8*32+32, 9*32+32+8)   
  750.     #self.contents = Bitmap.new(width-32, height-32)
  751.     self.z = 1500
  752.     self.opacity = 0
  753.     refresh
  754.     #@column_max = 5
  755.     #@item_max = 10
  756.     self.index = 0   
  757.   end
  758.   #--------------------------------------------------------------------------
  759.   # ● 获取物品
  760.   #--------------------------------------------------------------------------
  761.   def item
  762.     #print(self.index)
  763.     return $data2[self.index]
  764.   end
  765.   
  766.   def get_item(index)
  767.      return $data2[index]
  768.   end
  769.   
  770.   def getindex
  771.      return self.index
  772.   end  
  773.    
  774.   #--------------------------------------------------------------------------
  775.   # ● 刷新
  776.   #--------------------------------------------------------------------------
  777.   def refresh
  778.     if $game_party!=nil
  779.        actor = $game_party.actors[0]
  780.      else
  781.        return
  782.     end      
  783.     #self.contents.clear  
  784.     if self.contents != nil
  785.       self.contents.dispose
  786.       self.contents = nil
  787.     end
  788.     @column_max = 8
  789.     $data2 = []
  790.     $data2.push($data_armors[actor.armor2_id]) #头盔
  791.     $data2.push($data_armors[actor.armor3_id]) #衣服
  792.     $data2.push($data_armors[actor.armor1_id]) #盾
  793.     $data2.push($data_armors[actor.armor5_id]) #项链
  794.     $data2.push($data_armors[actor.armor4_id]) #戒指
  795.     $data2.push($data_armors[actor.armor6_id]) #鞋子
  796.     $data2.push($data_armors[actor.armor7_id]) #腰带
  797.     $data2.push($data_armors[actor.armor8_id]) #手镯
  798.     $data2.push($data_weapons[actor.weapon_id])      #武器
  799.     $data2.push($data_armors[actor.armor9_id]) #勋章
  800.     for i in 1...$data_items.size
  801.       if $game_party.item_number(i) > 0
  802.         #for j in 1..$game_party.item_number(i)
  803.           $data2.push($data_items[i])
  804.         #end
  805.       end
  806.     end
  807.     for i in 1...$data_weapons.size
  808.       if $game_party.weapon_number(i) > 0
  809.         for j in 1..$game_party.weapon_number(i)
  810.           $data2.push($data_weapons[i])
  811.         end
  812.       end
  813.     end
  814.     for i in 1...$data_armors.size
  815.       if $game_party.armor_number(i) > 0
  816.         for j in 1..$game_party.armor_number(i)
  817.           $data2.push($data_armors[i])
  818.         end
  819.       end
  820.     end
  821.     k = 58
  822.     $data2.size>0 if k = 57
  823.     for i in $data2.size..k
  824.       $data2.push(nil)
  825.     end
  826.     @item_max = $data2.size   
  827.     self.contents = Bitmap.new(width - 32, height-32)  
  828.     self.contents.font.size = 12
  829.     self.contents.font.bold = true
  830.     #更新装备格图标
  831.     for i in 0..9
  832.       item = $data2[i]
  833.       if item!=nil
  834.          bitmap = RPG::Cache.icon(item.icon_name)
  835.          width = bitmap.width
  836.          height = bitmap.height
  837.          if i<5
  838.             self.contents.blt(-5+i*32,0, bitmap, Rect.new(0, 0,width,height), 255)
  839.           else
  840.             self.contents.blt(-8+(i-5)*32,-3+32, bitmap, Rect.new(0, 0,width,height), 255)
  841.          end
  842.          #case item
  843.          #when RPG::Item
  844.            #number = $game_party.item_number(item.id)
  845.            #if i<5
  846.               #self.contents.draw_text(15+i*32, 14, width, height, number.to_s)
  847.             #else
  848.               #self.contents.draw_text(15+(i-5)*32, 14+32, width, height, number.to_s)
  849.            #end
  850.          #when RPG::Weapon
  851.            #number = $game_party.weapon_number(item.id)        
  852.          #when RPG::Armor
  853.            #number = $game_party.armor_number(item.id)
  854.          #end
  855.       end
  856.     end
  857.     #更新物品栏图标
  858.     for j in 1..6
  859.       for i in 1..8
  860.          item = $data2[9+i+(j-1)*8]
  861.          if item!=nil
  862.            bitmap = RPG::Cache.icon(item.icon_name)
  863.            width = bitmap.width
  864.            height = bitmap.height
  865.            self.contents.blt(-5+(i-1)*32,0+105+(j-1)*32, bitmap, Rect.new(0, 0,width,height), 255)
  866.            case item
  867.            when RPG::Item
  868.              number = $game_party.item_number(item.id)
  869.              self.contents.draw_text(5+(i-1)*32+13,6+105+(j-1)*32+8, width, height, number.to_s)
  870.            when RPG::Weapon
  871.              number = $game_party.weapon_number(item.id)        
  872.            when RPG::Armor
  873.              number = $game_party.armor_number(item.id)
  874.            end
  875.          end
  876.       end
  877.     end
  878.   end
  879. end
  880. #==============================================================================
  881. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  882. #==============================================================================
  883. #---------------------------------------------------------------------------------
  884. #需要能力值才能装备 改编自到达一定等级才能装备的武器和防具 By凌冰
  885. #用法:在武器、防具的说明里添加LV等级(后面的等级写个数字)STR力量(后面的力量写个数字)
  886. #DEX灵巧(后面的灵巧写个数字)AGI速度(后面的速度写个数字)INT魔力(后面的魔力写个数字)
  887. #可以空缺,空缺项默认为1
  888. #建议和升级加点脚本配合使用
  889. #---------------------------------------------------------------------------------
  890. module RPG
  891.   class Weapon
  892.     def level
  893.      return 1 if @description.split(/LV/)[1] == nil
  894.      return @description.split(/LV/)[1]
  895.    end
  896.    def str
  897.      return 1 if @description.split(/STR/)[1] == nil
  898.      return @description.split(/STR/)[1]
  899.    end
  900.    def dex
  901.      return 1 if @description.split(/DEX/)[1] == nil
  902.      return @description.split(/DEX/)[1]
  903.    end
  904.    def agi
  905.      return 1 if @description.split(/AGI/)[1] == nil
  906.      return @description.split(/AGI/)[1]
  907.    end
  908.    def int
  909.      return 1 if @description.split(/INT/)[1] == nil
  910.      return @description.split(/INT/)[1]
  911.    end
  912. #    def description      
  913. #      return @description.split(/LV/)[0] + "{装备等级" + level + "}"
  914. #    end
  915. end
  916. class Armor
  917.     def level
  918.      return 1 if @description.split(/LV/)[1] == nil
  919.      return @description.split(/LV/)[1]
  920.    end
  921.    def str
  922.      return 1 if @description.split(/STR/)[1] == nil
  923.      return @description.split(/STR/)[1]
  924.    end
  925.    def dex
  926.      return 1 if @description.split(/DEX/)[1] == nil
  927.      return @description.split(/DEX/)[1]
  928.    end
  929.    def agi
  930.      return 1 if @description.split(/AGI/)[1] == nil
  931.      return @description.split(/AGI/)[1]
  932.    end
  933.    def int
  934.      return 1 if @description.split(/INT/)[1] == nil
  935.      return @description.split(/INT/)[1]
  936.    end
  937. #    def description      
  938. #      return @description.split(/LV/)[0] + "{装备等级" + level + "}"
  939. #    end
  940.   end
  941. end
  942. class Game_Actor < Game_Battler
  943. #--------------------------------------------------------------------------
  944. # ● 可以装备判定
  945. #     item : 物品
  946. #--------------------------------------------------------------------------
  947. def equipable?(item)
  948.    # 武器的情况
  949.    if item.is_a?(RPG::Weapon)
  950.      # 包含当前的职业可以装备武器的场合
  951.      if $data_classes[@class_id].weapon_set.include?(item.id) and item.level.to_i<=@level
  952.        if item.str.to_i<= str and item.dex.to_i<= dex and item.agi.to_i<= agi and item.int.to_i<= int
  953.        return true
  954.        end
  955.      end
  956.    end
  957.    # 防具的情况
  958.    if item.is_a?(RPG::Armor)
  959.      # 不包含当前的职业可以装备武器的场合
  960.      if $data_classes[@class_id].armor_set.include?(item.id) and item.level.to_i<=@level
  961.        if item.str.to_i<= str and item.dex.to_i<= dex and item.agi.to_i<= agi and item.int.to_i<= int
  962.        return true
  963.        end
  964.      end
  965.    end
  966.    return false
  967. end
  968. end
  969. #==============================================================================
  970. # ■ Window_EquipItem
  971. #------------------------------------------------------------------------------
  972. #  装备画面、显示浏览变更装备的候补物品的窗口。
  973. #==============================================================================
  974. class Window_ItemIcon < Window_Selectable3
  975.   #--------------------------------------------------------------------------
  976.   # ● 刷新
  977.   #--------------------------------------------------------------------------
  978.   def refresh
  979.     if self.contents != nil
  980.       self.contents.dispose
  981.       self.contents = nil
  982.     end
  983.     @data = []
  984.     # 添加可以装备的武器
  985.     if @equip_type == 0
  986.       weapon_set = $data_classes[@actor.class_id].weapon_set
  987.       for i in 1...$data_weapons.size
  988.         if $game_party.weapon_number(i) > 0 and weapon_set.include?(i) and @actor.equipable?($data_weapons[i])
  989.           @data.push($data_weapons[i])
  990.         end
  991.       end
  992.     end
  993.     # 添加可以装备的防具
  994.     if @equip_type != 0
  995.       armor_set = $data_classes[@actor.class_id].armor_set
  996.       for i in 1...$data_armors.size
  997.         if $game_party.armor_number(i) > 0 and armor_set.include?(i) and @actor.equipable?($data_armors[i])
  998.           if $data_armors[i].kind == @equip_type-1
  999.             @data.push($data_armors[i])
  1000.           end
  1001.         end
  1002.       end
  1003.     end
  1004.     # 添加空白
  1005.     @data.push(nil)
  1006.     # 生成位图、描绘全部项目
  1007.     @item_max = @data.size
  1008.     self.contents = Bitmap.new(width - 32, row_max * 32)
  1009.     for i in 0...@item_max-1
  1010.       draw_item(i)
  1011.     end
  1012.   end
  1013. end
  1014. module RPG
  1015.   class Weapon
  1016.     def description
  1017.       a = @description
  1018.       a = a.split(/LV/)[0]  if a.split(/LV/)[1] != nil
  1019.       a = a.split(/STR/)[0] if a.split(/STR/)[1] != nil
  1020.       a = a.split(/DEX/)[0] if a.split(/DEX/)[1] != nil
  1021.       a = a.split(/AGI/)[0] if a.split(/AGI/)[1] != nil
  1022.       a = a.split(/INT/)[0] if a.split(/INT/)[1] != nil
  1023.       return  a
  1024.     end
  1025.   end
  1026.   class Armor
  1027.     def description
  1028.       a = @description
  1029.       a = a.split(/LV/)[0]  if a.split(/LV/)[1] != nil
  1030.       a = a.split(/STR/)[0] if a.split(/STR/)[1] != nil
  1031.       a = a.split(/DEX/)[0] if a.split(/DEX/)[1] != nil
  1032.       a = a.split(/AGI/)[0] if a.split(/AGI/)[1] != nil
  1033.       a = a.split(/INT/)[0] if a.split(/INT/)[1] != nil
  1034.       return  a
  1035.     end
  1036.   end
  1037. end
复制代码
试试看吧。(第一次测试的时候没有效果,原来是Window给换掉了)

评分

参与人数 1星屑 +60 收起 理由
hcm + 60 感谢回答

查看全部评分

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
363
在线时间
5 小时
注册时间
2012-7-9
帖子
1
9
发表于 2012-7-22 15:39:38 | 只看该作者
本帖最后由 hcm 于 2012-8-18 13:45 编辑

在装备说明后+@+限制等级:
#在装备的描述最后添加,比如:@2等于2级以上才可装备
  1. module RPG
  2. class Weapon
  3.   def level
  4.    return 1 if @description.split(/@/)[1] == nil
  5.    return @description.split(/@/)[1]
  6. end
  7.   def description      
  8.     return @description.split(/@/)[0]
  9.   end
  10. end
  11. class Armor
  12.   def level
  13.    return 1 if @description.split(/@/)[1] == nil
  14.    return @description.split(/@/)[1]
  15.   end
  16.   def description      
  17.     return @description.split(/@/)[0]
  18.   end
  19. end
  20. end



  21. class Game_Actor < Game_Battler
  22. #--------------------------------------------------------------------------
  23. # ● 可以装备判定
  24. #     item : 物品
  25. #--------------------------------------------------------------------------
  26. def equipable?(item)
  27.   
  28. # 武器的情况
  29. if item.is_a?(RPG::Weapon)
  30.    # 包含当前的职业可以装备武器的场合
  31.    if $data_classes[@class_id].weapon_set.include?(item.id) and item.level.to_i<=@level
  32.      return true
  33.    end
  34. end
  35. # 防具的情况
  36. if item.is_a?(RPG::Armor)
  37.    # 不包含当前的职业可以装备武器的场合
  38.    if $data_classes[@class_id].armor_set.include?(item.id)  and item.level.to_i<=@level
  39.      return true
  40.    end
  41. end
  42. return false
  43. end
  44. end
  45. #==============================================================================
  46. # ■ Window_EquipItem
  47. #------------------------------------------------------------------------------
  48. #  装备画面、显示浏览变更装备的候补物品的窗口。
  49. #==============================================================================

  50. class Window_EquipItem < Window_Selectable
  51. #--------------------------------------------------------------------------
  52. # ● 刷新
  53. #--------------------------------------------------------------------------
  54. def refresh
  55.   if self.contents != nil
  56.     self.contents.dispose
  57.     self.contents = nil
  58.   end
  59.   @data = []
  60.   # 添加可以装备的武器
  61.   if @equip_type == 0
  62.     weapon_set = $data_classes[@actor.class_id].weapon_set
  63.     for i in 1...$data_weapons.size
  64.       if $game_party.weapon_number(i) > 0 and weapon_set.include?(i) and @actor.equipable?($data_weapons[i])
  65.         @data.push($data_weapons[i])
  66.       end
  67.     end
  68.   end
  69.   # 添加可以装备的防具
  70.   if @equip_type != 0
  71.     armor_set = $data_classes[@actor.class_id].armor_set
  72.     for i in 1...$data_armors.size
  73.       if $game_party.armor_number(i) > 0 and armor_set.include?(i) and @actor.equipable?($data_armors[i])
  74.         if $data_armors[i].kind == @equip_type-1
  75.           @data.push($data_armors[i])
  76.         end
  77.       end
  78.     end
  79.   end
  80.   # 添加空白
  81.   @data.push(nil)
  82.   # 生成位图、描绘全部项目
  83.   @item_max = @data.size
  84.   self.contents = Bitmap.new(width - 32, row_max * 32)
  85.   for i in 0...@item_max-1
  86.     draw_item(i)
  87.   end
  88. end
  89. end  
复制代码

评分

参与人数 1星屑 +40 收起 理由
hcm + 40 感谢回答

查看全部评分

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
113 小时
注册时间
2011-10-6
帖子
45
10
发表于 2012-7-22 20:44:24 | 只看该作者
本帖最后由 盈盈 于 2012-7-23 09:08 编辑

这个好像是我太监了的脚本....公司里有个工程还加了其它界面的,明天上传个共享吧,家里没有

工程网盘下载:
百度网盘下载

PS:
这个工程包插了物品栏界面(B),技能界面(T),物品合成界面(I),物品强化界面(S)

评分

参与人数 1星屑 +20 收起 理由
hcm + 20 感谢回答

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 13:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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