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

Project1

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

关于脚本里 备用物品窗口的修改

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
62
在线时间
1 小时
注册时间
2008-1-4
帖子
260
跳转到指定楼层
1
发表于 2009-3-7 01:27:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
   我想将此窗口修改为,横向5个格子,纵向2个格子,即10个格子的备选物品栏,
并自定义光标矩形的间距 和 行距,现修改脚本如下,但仍然存在很多问题。望高手给予解决。
问题描述,光标矩形菜单处,当物品多的时候下拉菜单到最低端光标矩形会消失。


  1. #==============================================================================
  2. # ■ Window_EquipItem
  3. #------------------------------------------------------------------------------
  4. #  装备画面、显示浏览变更装备的候补物品的窗口。
  5. #==============================================================================

  6. class Window_EquipItem < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #     actor      : 角色
  10.   #     equip_type : 装备部位 (0~3)
  11.   #--------------------------------------------------------------------------
  12.   def initialize(actor, equip_type)
  13.   #  super(304, 57, 222, 20)

  14.      super(197, 249, 250,210)#前两项为备选装备窗口的XY坐标,改大则向下。
  15.     #super(100, 156, 640, 400)
  16.     # super(0, 256, 640, 224)
  17.     self.opacity = 200#新加
  18.     @actor = actor
  19.     @equip_type = equip_type
  20.    
  21.    
  22.        # @item_max = 10#8个项目
  23.         @column_max = 5#将项目选框分为2栏


  24.     refresh
  25.    
  26.    #  bitmap = Bitmap.new("Graphics/pictures/装备替换的物品栏.png")
  27.      # src_rect=Rect.new(180,50,bitmap.width,bitmap.height)
  28.      #self.contents.blt(0,0,bitmap,src_rect)
  29.     self.active = false
  30.     self.index = -1
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 获取物品
  34.   #--------------------------------------------------------------------------
  35.   def item
  36.     return @data[self.index]
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ● 刷新
  40.   #--------------------------------------------------------------------------
  41.   def refresh
  42.     if self.contents != nil
  43.       self.contents.dispose
  44.       self.contents = nil
  45.     end
  46.    

  47.    
  48.    
  49.     @data = []
  50.     # 添加可以装备的武器
  51.     if @equip_type == 0
  52.       weapon_set = $data_classes[@actor.class_id].weapon_set
  53.       for i in 1...$data_weapons.size
  54.         if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
  55.           @data.push($data_weapons[i])
  56.         end
  57.       end
  58.     end
  59.     # 添加可以装备的防具
  60.     if @equip_type != 0
  61.       armor_set = $data_classes[@actor.class_id].armor_set
  62.       for i in 1...$data_armors.size
  63.         if $game_party.armor_number(i) > 0 and armor_set.include?(i)
  64.           if $data_armors[i].kind == @equip_type-1
  65.             @data.push($data_armors[i])
  66.           end
  67.         end
  68.       end
  69.     end
  70.     # 添加空白
  71.     @data.push(nil)
  72.     # 生成位图、描绘全部项目
  73.     @item_max =  @data.size
  74.     self.contents = Bitmap.new(width - 32, row_max * 32)
  75.     for i in 0...@item_max-1
  76.       draw_item(i)
  77.     end
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● 项目的描绘
  81.   #     index : 项目符号
  82.   #--------------------------------------------------------------------------
  83.   def draw_item(index)
  84.     item = @data[index]
  85.    
  86.     x = 4 + index  % 5 * 44#光标移动的横向幅度#5同下面的5控制左右5步移动
  87.      # x  = 4 + index# % 2 * 30#光标移动的横向幅度,变大是加宽间距
  88.        #y = index #/ 2 * 54#光标移动的纵向幅度
  89.       y = index / 5 * 54
  90.     #x = 4+ index % 2 * (288 + 32)
  91.    # y = index / 2 * 32
  92.     case item
  93.     when RPG::Weapon
  94.       number = $game_party.weapon_number(item.id)
  95.     when RPG::Armor
  96.       number = $game_party.armor_number(item.id)
  97.     end
  98.     bitmap = RPG::Cache.icon(item.icon_name)
  99.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
  100.   # self.contents.font.color = black_color
  101.    
  102.       self.contents.font.color = normal_color
  103.    # self.contents.draw_text(x + 28, 50,  212, 32, item.name, 0)
  104.     #self.contents.draw_text(x + 240,100, 16, 32, ":", 1)
  105.     #self.contents.draw_text(x + 256, 150, 24, 32, number.to_s, 2)
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 刷新帮助文本
  109.   #--------------------------------------------------------------------------

  110.    
  111.    
  112.    
  113.   
  114.   
  115.   #--------------------------------------------------------------------------
  116.   # ● 更新光标举行
  117.   #--------------------------------------------------------------------------
  118.   def update_cursor_rect
  119.     # 光标位置不满 0 的情况下
  120.     if @index < 0
  121.       self.cursor_rect.empty
  122.       return
  123.     end
  124.     # 获取当前的行
  125.     row = @index / @column_max
  126.     # 当前行被显示开头行前面的情况下
  127.     if row < self.top_row
  128.       # 从当前行向开头行滚动
  129.       self.top_row = row
  130.     end
  131.     # 当前行被显示末尾行之后的情况下
  132.     if row > self.top_row + (self.page_row_max - 1)
  133.       # 从当前行向末尾滚动
  134.       self.top_row = row - (self.page_row_max - 1)
  135.     end
  136.      
  137.    
  138.   #--------------------------------------------------------------------------
  139.   # ● 刷新画面
  140.   #--------------------------------------------------------------------------
  141.   
  142.     x = 4 + index  % 5 * 44#光标移动的横向幅度#5同下面的5控制左右5步移动
  143.      # x  = 4 + index# % 2 * 30#光标移动的横向幅度,变大是加宽间距
  144.        #y = index #/ 2 * 54#光标移动的纵向幅度
  145.       y = index / 5 * 54
  146.          self.cursor_rect.set(x, y, 40, 40)#后两项为光标矩形的范围
  147.    # self.cursor_rect.set(x, y, 64, 32)
  148.   end

  149.         
  150.         
  151.         
  152.      
  153.    
  154.   def update_help
  155.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  156.   end
  157. end
复制代码

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9448
在线时间
2751 小时
注册时间
2008-9-5
帖子
3544

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

2
发表于 2009-3-7 03:26:39 | 只看该作者
好象光标矩形选择项目时到了最底端的话会自动滚动一下所有项目,以不让光标矩形消失的说。。。
(这里纯属怀疑,是不是和“row_max * 32”有关呢,试一下改动里面的“32”看看吧。明尼的脚本知识也不是很强,纯粹是靠试着该动学来的,所以LZ可以试试看吧。。)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
62
在线时间
1 小时
注册时间
2008-1-4
帖子
260
3
 楼主| 发表于 2009-3-7 23:58:15 | 只看该作者
谢谢楼上热心解答,已经解决了,不过不是你说的那个row_max,而是需要修改一个算式
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-17 07:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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