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

Project1

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

请教物品装备栏文字说明问题

 关闭 [复制链接]

Lv1.梦旅人

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

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

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

x
例如我选定一个装备,上面会弹出一个help窗口,假如它解释为:一把普通的长剑,材质还不错。

我想让文字显示为:
       材    一
       质    把
       还    普
       不    通
       错    的
             长
             剑
类似这样的显示方式,不知道能不能实现
另外 当我修改window_help时,窗口缩小后,文字就会被挡住,而不是自动缩放。。。
估计是遇到知识盲点了,望指点!
感谢~

另外

  
想制作如图的物品装备栏描述方式,一个大的icon~~~这个怎么弄,我看了防轩辕剑的菜单脚本,他貌似新写了一个equipItem_icon 但看不懂它运行的原理。。
望高手指点迷津

脚本提供如下

Window_EquipRight

  1. #==============================================================================
  2. # ■ Window_EquipRight
  3. #------------------------------------------------------------------------------
  4. #  装备画面、显示角色现在装备的物品的窗口。
  5. #==============================================================================

  6. class Window_EquipRight_New < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #     actor : 角色
  10.   #--------------------------------------------------------------------------
  11.   def initialize(actor)
  12.     super(160, 48, 240, 352)
  13.     self.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  14.     self.opacity = 180
  15.     self.contents = Bitmap.new(width - 32, height - 32)
  16.     @actor = actor
  17.     refresh
  18.     self.index = 0
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● 获取物品
  22.   #--------------------------------------------------------------------------
  23.   def item
  24.     return @data[self.index]
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 刷新
  28.   #--------------------------------------------------------------------------
  29.   def refresh
  30.     self.contents.clear
  31.     @data = []
  32.     @data.push($data_weapons[@actor.weapon_id])
  33.     @data.push($data_armors[@actor.armor1_id])
  34.     @data.push($data_armors[@actor.armor2_id])
  35.     @data.push($data_armors[@actor.armor3_id])
  36.     @data.push($data_armors[@actor.armor4_id])
  37.     @data.push($data_armors[@actor.armor5_id])
  38.     @data.push($data_armors[@actor.armor6_id])
  39.     @data.push($data_armors[@actor.armor7_id])
  40.     @item_max = @data.size
  41.     self.contents.font.color = system_color
  42.     self.contents.font.size = 20
  43.     self.contents.draw_text(4, 0, 92, 32, $data_system.words.weapon)
  44.     self.contents.draw_text(4, 40 * 1, 92, 32, $data_system.words.armor1)
  45.     self.contents.draw_text(4, 40 * 2, 92, 32, $data_system.words.armor2)
  46.     self.contents.draw_text(4, 40 * 3, 92, 32, $data_system.words.armor3)
  47.     self.contents.draw_text(4, 40 * 4, 92, 32, $data_system.words.armor4)
  48.     self.contents.draw_text(4, 40 * 5, 92, 32, "鞋")
  49.     self.contents.draw_text(4, 40 * 6, 92, 32, "法宝1")
  50.     self.contents.draw_text(4, 40 * 7, 92, 32, "法宝2")
  51.     draw_item_name(@data[0], 64, 40 * 0, 18)
  52.     draw_item_name(@data[1], 64, 40 * 1, 18)
  53.     draw_item_name(@data[2], 64, 40 * 2, 18)
  54.     draw_item_name(@data[3], 64, 40 * 3, 18)
  55.     draw_item_name(@data[4], 64, 40 * 4, 18)
  56.     draw_item_name(@data[5], 64, 40 * 5, 18)
  57.     draw_item_name(@data[6], 64, 40 * 6, 18)
  58.     draw_item_name(@data[7], 64, 40 * 7, 18)
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 刷新帮助文本
  62.   #--------------------------------------------------------------------------
  63.   def update_help
  64.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● 更新光标举行
  68.   #--------------------------------------------------------------------------
  69.   def update_cursor_rect
  70.     # 光标位置不满 0 的情况下
  71.     if @index < 0
  72.       self.cursor_rect.empty
  73.       return
  74.     end
  75.     # 获取当前的行
  76.     row = @index / @column_max
  77.     # 当前行被显示开头行前面的情况下
  78.     if row < self.top_row
  79.       # 从当前行向开头行滚动
  80.       self.top_row = row
  81.     end
  82.     # 当前行被显示末尾行之后的情况下
  83.     if row > self.top_row + (self.page_row_max - 1)
  84.       # 从当前行向末尾滚动
  85.       self.top_row = row - (self.page_row_max - 1)
  86.     end
  87.     # 计算光标的宽
  88.     cursor_width = self.width / @column_max - 32
  89.     # 计算光标坐标
  90.     x = @index % @column_max * (cursor_width + 32)
  91.     y = @index / @column_max * 40 - self.oy
  92.     # 更新国标矩形
  93.     self.cursor_rect.set(x, y, cursor_width, 40)
  94.   end
  95. end
复制代码

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

  6. class Window_EquipItem_New < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #     actor      : 角色
  10.   #     equip_type : 装备部位 (0~3)
  11.   #--------------------------------------------------------------------------
  12.   def initialize(actor, equip_type)
  13.     super(400, 48, 240, 352)
  14.     self.windowskin = RPG::Cache.windowskin("../system/menu/windowskins/palskin")
  15.     self.opacity = 180
  16.     @column_max = 1
  17.     @actor = actor
  18.     @equip_type = equip_type
  19.     refresh
  20.     self.active = false
  21.     self.index = -1
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 获取物品
  25.   #--------------------------------------------------------------------------
  26.   def item
  27.     return @data[self.index]
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 刷新
  31.   #--------------------------------------------------------------------------
  32.   def refresh
  33.     if self.contents != nil
  34.       self.contents.dispose
  35.       self.contents = nil
  36.     end
  37.     @data = []
  38.     # 添加可以装备的武器
  39.     if @equip_type == 0
  40.       weapon_set = $data_classes[@actor.class_id].weapon_set
  41.       for i in 1...$data_weapons.size
  42.         if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
  43.           @data.push($data_weapons[i])
  44.         end
  45.       end
  46.     end
  47.     # 添加可以装备的防具
  48.     if @equip_type != 0
  49.       armor_set = $data_classes[@actor.class_id].armor_set
  50.       for i in 1...$data_armors.size
  51.         if $game_party.armor_number(i) > 0 and armor_set.include?(i)
  52.           if $data_armors[i].kind == @equip_type-1
  53.             @data.push($data_armors[i])
  54.           end
  55.         end
  56.       end
  57.     end
  58.     # 添加空白
  59.     @data.push(nil)
  60.     # 生成位图、描绘全部项目
  61.     @item_max = @data.size
  62.     self.contents = Bitmap.new(width - 32, row_max * 32)
  63.     for i in 0...@item_max-1
  64.       draw_item(i)
  65.     end
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 项目的描绘
  69.   #     index : 项目符号
  70.   #--------------------------------------------------------------------------
  71.   def draw_item(index)
  72.     item = @data[index]
  73.     x = 4
  74.     y = index * 32
  75.     case item
  76.     when RPG::Weapon
  77.       number = $game_party.weapon_number(item.id)
  78.     when RPG::Armor
  79.       number = $game_party.armor_number(item.id)
  80.     end
  81.     bitmap = RPG::Cache.icon(item.icon_name)
  82.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
  83.     self.contents.font.color = normal_color
  84.     self.contents.font.size = 18
  85.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  86.     self.contents.draw_text(x +  self.width / @column_max - 72, y, 16, 32, ":", 1)
  87.     self.contents.draw_text(x +  self.width / @column_max - 64, y, 24, 32, number.to_s, 2)
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 刷新帮助文本
  91.   #--------------------------------------------------------------------------
  92.   def update_help
  93.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  94.   end
  95. end
复制代码

Window_Equip_Icon
  1. #==============================================================================
  2. # ■ Window_Equip
  3. #------------------------------------------------------------------------------
  4. #  装备物品大图标显示。
  5. #==============================================================================

  6. class Window_Equip < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(145, 402, 200, 200)
  12.     @item = nil
  13.     @item_id = -1
  14.     self.contents = Bitmap.new(width - 32, height - 32)
  15.     self.opacity = 0
  16.     refresh
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 刷新
  20.   #--------------------------------------------------------------------------
  21.   def refresh
  22.     if @item != nil
  23.       if @item != @item_id
  24.         self.contents.clear
  25.         bitmap = Bitmap.new("Graphics/system/menu/Item/" + @item.name + ".png")
  26.         pic_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  27.         self.contents.blt(0, 0, bitmap, pic_rect)
  28.         @item_id = @item
  29.       end
  30.     else
  31.       @item_id = nil
  32.       self.contents.clear
  33.       bitmap = Bitmap.new("Graphics/system/menu/Item/空.png")
  34.       pic_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  35.       self.contents.blt(0, 0, bitmap, pic_rect)
  36.     end
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ● 设置物品
  40.   #--------------------------------------------------------------------------
  41.   def set_item(item)
  42.     @item = item
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 规位
  46.   #--------------------------------------------------------------------------
  47.   def set_item_id
  48.     @item_id = nil
  49.   end
  50. end
复制代码


看不出那个icon通过什么和其他两个联系上的,它不是只是继承了window_base吗?
但是怎么就能在点装备的时候同时显示出来呢?而且图片的放置顺序又很符合覆盖的关系。。。请讲解一下,学费秋后结账~ ^-^

Lv1.梦旅人

綾川司の姫様<

梦石
0
星屑
50
在线时间
796 小时
注册时间
2007-12-20
帖子
4520

贵宾第3届短篇游戏大赛R剧及RMTV组亚军

2
发表于 2009-3-8 14:22:13 | 只看该作者
http://rpg.blue/web/htm/news558.htm

生命即是责任。自己即是世界。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

魔王 ⑨

梦石
0
星屑
95
在线时间
380 小时
注册时间
2006-10-16
帖子
4299

贵宾

3
发表于 2009-3-8 17:19:32 | 只看该作者
仿照一下他的window_help的呼出方法重新建立一个这个类或者来个条件分歧。要竖排文字的话参考天圣的链接
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
62
在线时间
1 小时
注册时间
2008-1-4
帖子
260
4
 楼主| 发表于 2009-3-9 00:02:35 | 只看该作者
以下引用玄月于2009-3-8 9:19:32的发言:

仿照一下他的window_help的呼出方法重新建立一个这个类或者来个条件分歧。要竖排文字的话参考天圣的链接

麻烦说明下那个window help的呼出方法。。。不大懂
回复 支持 反对

使用道具 举报

Lv1.梦旅人

魔王 ⑨

梦石
0
星屑
95
在线时间
380 小时
注册时间
2006-10-16
帖子
4299

贵宾

5
发表于 2009-3-10 07:18:13 | 只看该作者
参考默认脚本。我懒的开RM了 = =
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-17 05:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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