Project1

标题: 如何在菜单前插入图标? [打印本页]

作者: 路法    时间: 2009-5-4 23:25
标题: 如何在菜单前插入图标?
请教
如图,觉得这样比较美观。。



右图为理想中画面。。因为是只存在于理想中,所以是PS出来的。。{/lh} [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 妲己    时间: 2009-5-5 00:32
自我封印...
作者: 沉影不器    时间: 2009-5-5 03:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: 路法    时间: 2009-5-5 05:01
2楼的脚本的话应该是战斗中使用的吧。。。
作者: njx937    时间: 2009-5-5 05:23
其实模仿 物品栏显示 直接重写一下menu就好
包没冲突
作者: 雪流星    时间: 2009-5-5 13:48
贴在main前面或是 Window_Command 之下

注意:覆盖了 draw_item,其他使用了这个方法的脚本可能会冲突

使用方法:在数据库的「用语」标签里,使用
\i[图标编号]
就会在文字前面加上该图标


  1. class Window_Command < Window_Selectable
  2.   def draw_item(index, enabled = true)
  3.     rect = item_rect(index)
  4.     rect.x += 4
  5.     rect.width -= 8
  6.     self.contents.clear_rect(rect)
  7.     self.contents.font.color = normal_color
  8.     self.contents.font.color.alpha = enabled ? 255 : 128
  9.     text = @commands[index]
  10.     text_icon_reg = /\\I\[([0-9]+)\]/i
  11.     if text =~ text_icon_reg
  12.       rect.x += 20
  13.       icon_index = $1.to_i
  14.       self.draw_icon(icon_index, rect.x-24 , rect.y, enabled)
  15.       text.gsub!(text_icon_reg) { "" }
  16.     end   
  17.     self.contents.draw_text(rect, @commands[index])
  18.   end
  19. end
复制代码

作者: 路法    时间: 2009-5-5 20:51
回楼上。。。呃,由于我用了整合的脚本菜单
整合了任务
所以。。

任务和加点两项是无法显示图标的

然后打开任务菜单之后所有图标就不见了

作者: 雪流星    时间: 2009-5-5 21:33
你的Scene_Menu貼出來看看
作者: 路法    时间: 2009-5-6 02:45
  1. #==============================================================================
  2. # ■ Scene_Menu
  3. #------------------------------------------------------------------------------
  4. #  处理菜单画面的类。
  5. #==============================================================================

  6. class Scene_Menu < Scene_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对象
  9.   #     menu_index : 指令光标初期位置
  10.   #--------------------------------------------------------------------------
  11.   def initialize(menu_index = 0)
  12.     @menu_index = menu_index
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 开始处理
  16.   #--------------------------------------------------------------------------
  17.   def start
  18.     super
  19.     create_menu_background
  20.     create_command_window
  21.     @gold_window = Window_Gold.new(0, 360)
  22.     @status_window = Window_MenuStatus.new(160, 0)
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 结束处理
  26.   #--------------------------------------------------------------------------
  27.   def terminate
  28.     super
  29.     dispose_menu_background
  30.     @command_window.dispose
  31.     @gold_window.dispose
  32.     @status_window.dispose
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 更新画面
  36.   #--------------------------------------------------------------------------
  37.   def update
  38.     super
  39.     update_menu_background
  40.     @command_window.update
  41.     @gold_window.update
  42.     @status_window.update
  43.     if @command_window.active
  44.       update_command_selection
  45.     elsif @status_window.active
  46.       update_actor_selection
  47.     end
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 生成指令窗口
  51.   #--------------------------------------------------------------------------
  52.   def create_command_window
  53.     s1 = Vocab::item
  54.     s2 = Vocab::skill
  55.     s3 = Vocab::equip
  56.     s4 = Vocab::status
  57.     s5 = "任务"
  58.     s6 = "加点"
  59.     s7 = Vocab::save
  60.     s8 = Vocab::game_end
  61.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7 ,s8])
  62.     @command_window.index = @menu_index
  63.     if $game_party.members.size == 0          # 同伴人数为 0 的情况下
  64.       @command_window.draw_item(0, false)     # 物品无效化
  65.       @command_window.draw_item(1, false)     # 特技无效化
  66.       @command_window.draw_item(2, false)     # 装备无效化
  67.       @command_window.draw_item(3, false)     # 状态无效化
  68.     end
  69.     if $game_system.save_disabled             # 禁止存档的情况下
  70.       @command_window.draw_item(4, false)     # 存档无效化
  71.     end
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 更新指令选择
  75.   #--------------------------------------------------------------------------
  76.   def update_command_selection
  77.     if Input.trigger?(Input::B)
  78.       Sound.play_cancel
  79.       $scene = Scene_Map.new
  80.     elsif Input.trigger?(Input::C)
  81.       if $game_party.members.size == 0 and @command_window.index < 4
  82.         Sound.play_buzzer
  83.         return
  84.       elsif $game_system.save_disabled and @command_window.index == 4
  85.         Sound.play_buzzer
  86.         return
  87.       end
  88.       Sound.play_decision
  89.       case @command_window.index
  90.       when 0      # 物品
  91.         $scene = Scene_Item.new
  92.       when 1,2,3  # 特技、装备、状态
  93.         start_actor_selection
  94.       when 6      # 存档
  95.         $scene = Scene_File.new(true, false, false)
  96.       when 4      #任务界面
  97.         $scene = Scene_Task.new
  98.       when 5      #升级加点
  99.         $scene = Scene_Lvup.new
  100.       when 7      # 游戏结束
  101.         $scene = Scene_End.new
  102.       end
  103.     end
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● アクター選択の開始
  107.   #--------------------------------------------------------------------------
  108.   def start_actor_selection
  109.     @command_window.active = false
  110.     @status_window.active = true
  111.     if $game_party.last_actor_index < @status_window.item_max
  112.       @status_window.index = $game_party.last_actor_index
  113.     else
  114.       @status_window.index = 0
  115.     end
  116.   end
  117.   #--------------------------------------------------------------------------
  118.   # ● アクター選択の終了
  119.   #--------------------------------------------------------------------------
  120.   def end_actor_selection
  121.     @command_window.active = true
  122.     @status_window.active = false
  123.     @status_window.index = -1
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● アクター選択の更新
  127.   #--------------------------------------------------------------------------
  128.   def update_actor_selection
  129.     if Input.trigger?(Input::B)
  130.       Sound.play_cancel
  131.       end_actor_selection
  132.     elsif Input.trigger?(Input::C)
  133.       $game_party.last_actor_index = @status_window.index
  134.       Sound.play_decision
  135.       case @command_window.index
  136.       when 1  # スキル
  137.         $scene = Scene_Skill.new(@status_window.index)
  138.       when 2  # 装備
  139.         $scene = Scene_Equip.new(@status_window.index)
  140.       when 3  # ステータス
  141.         $scene = Scene_Status.new(@status_window.index)
  142.       end
  143.     end
  144.   end
  145. end
复制代码

作者: 雪流星    时间: 2009-5-6 02:51

    s5 = "任务"
改成
    s5 = "\\i[圖標編號]任务"
看看
注意,在腳本裡面的話要用兩個\ [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 路法    时间: 2009-5-6 03:10
非常感谢,可以用了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1