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

Project1

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

VX菜单重新排版

 关闭 [复制链接]

Lv4.逐梦者

醉啸 长风万里

梦石
0
星屑
6157
在线时间
6592 小时
注册时间
2007-12-16
帖子
4501

贵宾

跳转到指定楼层
1
发表于 2008-7-14 04:15:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
一款重新排版的菜单,还算不错,对于不愿意更改菜单的新手来说可以替换掉原菜单
更改方法:见脚本

脚本内容

  1. #==============================================================================
  2. # VX菜单重新排版 by 仲秋启明
  3. #------------------------------------------------------------------------------
  4. #同伴窗口可以使用左右键
  5. #如插入菜单背景音,可在第247行插入
  6. #更改图标在第118行
  7. #金钱图标在第203行定义
  8. class Window_Base < Window
  9.   #--------------------------------------------------------------------------
  10.   # ● HP的描画
  11.   #     actor : 角色
  12.   #     x     : 描画目标 X 坐标
  13.   #     y     : 描画目标 Y 坐标
  14.   #     width : 宽
  15.   #--------------------------------------------------------------------------
  16.   def draw_actor_hp(actor, x, y, width = 90)
  17.     draw_actor_hp_gauge(actor, x, y, width)
  18.     self.contents.font.color = system_color
  19.     self.contents.draw_text(x, y, 30, WLH, Vocab::hp_a)
  20.     self.contents.font.color = hp_color(actor)
  21.     xr = x + width
  22.     if width < 120
  23.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.hp, 2)
  24.     else
  25.       self.contents.draw_text(xr - 90, y, 40, WLH, actor.hp, 2)
  26.       self.contents.font.color = normal_color
  27.       self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
  28.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxhp, 2)
  29.     end
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● HP矩形的描画
  33.   #     actor : 角色
  34.   #     x     : 描画目标 X 坐标
  35.   #     y     : 描画目标 Y 坐标
  36.   #     width : 宽
  37.   #--------------------------------------------------------------------------
  38.   def draw_actor_hp_gauge(actor, x, y, width = 90)
  39.     gw = width * actor.hp / actor.maxhp
  40.     gc1 = hp_gauge_color1
  41.     gc2 = hp_gauge_color2
  42.     self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
  43.     self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● SP的描画
  47.   #     actor : 角色
  48.   #     x     : 描画目标 X 坐标
  49.   #     y     : 描画目标 Y 坐标
  50.   #     width : 宽
  51.   #--------------------------------------------------------------------------
  52.   def draw_actor_mp(actor, x, y, width = 90)
  53.     draw_actor_mp_gauge(actor, x, y, width)
  54.     self.contents.font.color = system_color
  55.     self.contents.draw_text(x, y, 30, WLH, Vocab::mp_a)
  56.     self.contents.font.color = mp_color(actor)
  57.     xr = x + width
  58.     if width < 120
  59.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.mp, 2)
  60.     else
  61.       self.contents.draw_text(xr - 90, y, 40, WLH, actor.mp, 2)
  62.       self.contents.font.color = normal_color
  63.       self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
  64.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxmp, 2)
  65.     end
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● MP矩形的描画
  69.   #     actor : 角色
  70.   #     x     : 描画目标 X 坐标
  71.   #     y     : 描画目标 Y 坐标
  72.   #     width : 宽
  73.   #--------------------------------------------------------------------------
  74.   def draw_actor_mp_gauge(actor, x, y, width = 90)
  75.     gw = width * actor.mp / [actor.maxmp, 1].max
  76.     gc1 = mp_gauge_color1
  77.     gc2 = mp_gauge_color2
  78.     self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
  79.     self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  80.   end
  81. end
  82. #==============================================================================
  83. # ■ Window_ActorCommand
  84. #------------------------------------------------------------------------------
  85. #  菜单画面显示角色指令的窗口。
  86. #==============================================================================

  87. class Window_MenuCommand < Window_Selectable
  88.   #--------------------------------------------------------------------------
  89.   # ● 定义实例变量
  90.   #--------------------------------------------------------------------------  
  91.   attr_reader   :commands                 # 命令  
  92.   WLH = 28
  93.   #--------------------------------------------------------------------------
  94.   # ● 初始化对象
  95.   #     width      : 窗口的宽
  96.   #     commands   : 命令字符串序列
  97.   #     column_max : 行数 (2 行以上时选择)
  98.   #     row_max    : 列数 (0:列数加起来)
  99.   #     spacing : 选项横向排列时间隔空白宽度
  100.   #--------------------------------------------------------------------------
  101.   def initialize(width = 128, commands = [], column_max = 1, row_max = 8, spacing = 32)
  102.     if row_max == 0
  103.       row_max = (commands.size + column_max - 1) / column_max
  104.     end
  105.     super(0, 0, width, row_max * 32 + 32, spacing)
  106.     @commands = commands
  107.     @item_max = commands.size
  108.     @column_max = column_max
  109.     @remember_index = -1
  110.     self.index = 0
  111.     self.y = (Graphics.height - self.height) / 2 - 8
  112.     update
  113.   end
  114.   #--------------------------------------------------------------------------
  115.   # ● 刷新
  116.   #--------------------------------------------------------------------------
  117.   def refresh
  118.     self.contents.clear
  119.       @icon_list = [144, 128, 52, 137, 158, 189]
  120.     for i in 0...@item_max
  121.       draw_item(i)
  122.     end
  123.   end
  124.   
  125.   #--------------------------------------------------------------------------
  126.   # ● 描绘项目
  127.   #     index : 项目编号
  128.   #     enabled : 有效标记录。是false 的时候半透明绘画
  129.   #--------------------------------------------------------------------------
  130.   def draw_item(index, enabled = true)
  131.     rect = item_rect(index)
  132.     rect.x += 4
  133.     rect.width -= 8
  134.     self.contents.clear_rect(rect)
  135.     draw_icon(@icon_list[index], rect.x, rect.y, true) if index == self.index
  136.     self.contents.font.color = normal_color   
  137.     if !enabled or self.index != index
  138.       self.contents.font.color.alpha =  64
  139.     else
  140.       self.contents.font.color.alpha =  255
  141.     end
  142.     rect.x += 26
  143.     self.contents.draw_text(rect, @commands[index])
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● 获取项目描画矩形
  147.   #     index : 项目编号
  148.   #--------------------------------------------------------------------------
  149.   def item_rect(index)
  150.     rect = Rect.new(0, 0, 0, 0)
  151.     rect.width = (contents.width + @spacing) / @column_max - @spacing
  152.     rect.height = WLH
  153.     rect.x = index % @column_max * (rect.width + @spacing)
  154.     rect.y = index / @column_max * WLH
  155.     return rect
  156.   end
  157.   #--------------------------------------------------------------------------
  158.   # ● 刷新类型
  159.   #--------------------------------------------------------------------------
  160.   def update
  161.     super
  162.     @remember_index = self.index if self.index == -1
  163.     if @remember_index != self.index
  164.       @remember_index = self.index
  165.       refresh
  166.     end
  167.   end
  168. end
  169. #==============================================================================
  170. # ■ Window_MenuStatus
  171. #------------------------------------------------------------------------------
  172. #  显示菜单画面和同伴状态的窗口。
  173. #==============================================================================

  174. class Window_MenuStatus < Window_Selectable
  175.   #--------------------------------------------------------------------------
  176.   # ● 初始化对象
  177.   #     x : 窗口的 X 坐标
  178.   #     y : 窗口的 Y 坐标
  179.   #--------------------------------------------------------------------------
  180.   def initialize(x, y)
  181.     super(x, y, 544, 416)
  182.     refresh
  183.     self.active = false
  184.     self.index = -1
  185.   end
  186.   #--------------------------------------------------------------------------
  187.   # ● 刷新
  188.   #--------------------------------------------------------------------------
  189.   def refresh
  190.     self.contents.clear
  191.     @item_max = $game_party.members.size
  192.     for actor in $game_party.members
  193.       draw_actor_face(actor,actor.index * 96 + 2,42, 92)
  194.       x = actor.index * 96 + WLH / 2
  195.       y = 144
  196.       draw_actor_name(actor, x, y)
  197.       draw_actor_class(actor, x , y+60)
  198.       draw_actor_level(actor, x, y + WLH * 1)
  199.       draw_actor_state(actor, x , y )
  200.       draw_actor_hp(actor, x -10, y +60+ WLH*1)
  201.       draw_actor_mp(actor, x -10, y +60+ WLH*2)
  202.     end
  203.     draw_icon(252 - 58, 384+5, 284-32)
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ● 更新光标
  207.   #--------------------------------------------------------------------------
  208.   def update_cursor
  209.     if @index < 0               # 没有光标
  210.       self.cursor_rect.empty
  211.     elsif @index < @item_max    # 普通
  212.       self.cursor_rect.set(@index * 96,30, 96,264)
  213.     elsif @index >= 100         # 自己
  214.       self.cursor_rect.set((@index - 100) * 96,30,96,264)
  215.     else                        # 全体
  216.       self.cursor_rect.set(0, 3, @item_max * 96, 264)
  217.     end
  218.     if Input.trigger?(Input::LEFT)
  219.       @index-=1
  220.     else
  221.       if Input.trigger?(Input::RIGHT)
  222.       @index+=1
  223.     end
  224.     if @index>3
  225.       return @index=0
  226.     else
  227.      if @index<-1
  228.       return @index=3
  229.     end
  230.   end
  231. end
  232. end
  233. end
  234. #==============================================================================
  235. # ■ Scene_Menu
  236. #------------------------------------------------------------------------------
  237. #  处理菜单画面的类。
  238. #==============================================================================

  239. class Scene_Menu < Scene_Base
  240.   #--------------------------------------------------------------------------
  241.   # ● 初始化对象
  242.   #     menu_index : 指令光标初期位置
  243.   #--------------------------------------------------------------------------
  244.   def initialize(menu_index = 0)
  245.     @menu_index = menu_index
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # ● 开始处理
  249.   #--------------------------------------------------------------------------
  250.   def start
  251.     super
  252.     create_menu_background
  253.     create_command_window
  254.     @gold_window = Window_Gold.new(384, 284-32)
  255.     @status_window = Window_MenuStatus.new(0, 0)
  256.     @status_window.opacity = 0
  257.     @gold_window.opacity = 0
  258.     @command_window.opacity = 0
  259.   end
  260.   #--------------------------------------------------------------------------
  261.   # ● 结束处理
  262.   #--------------------------------------------------------------------------
  263.   def terminate
  264.     super
  265.     dispose_menu_background
  266.     @command_window.dispose
  267.     @gold_window.dispose
  268.     @status_window.dispose
  269.   end
  270.   #--------------------------------------------------------------------------
  271.   # ● 更新画面
  272.   #--------------------------------------------------------------------------
  273.   def update
  274.     super
  275.     update_menu_background
  276.     @command_window.update
  277.     @gold_window.update
  278.     @status_window.update
  279.     if @command_window.active
  280.       update_command_selection
  281.     elsif @status_window.active
  282.       update_actor_selection
  283.     end
  284.   end
  285.   #--------------------------------------------------------------------------
  286.   # ● 生成指令窗口
  287.   #--------------------------------------------------------------------------
  288.   def create_command_window
  289.     s1 = "查看物品"
  290.     s2 = "使用特技"
  291.     s3 = "更换装备"
  292.     s4 = "查看状态"
  293.     s5 = "存储档案"
  294.     s6 = "结束游戏"
  295.     @command_window = Window_MenuCommand.new(160, [s1, s2, s3, s4, s5, s6])
  296.     @command_window.index = @menu_index
  297.     @command_window.x = 384
  298.     @command_window.y = 40
  299.     if $game_party.members.size == 0          # 同伴人数为 0 的情况下
  300.       @command_window.draw_item(0, false)     # 物品无效化
  301.       @command_window.draw_item(1, false)     # 特技无效化
  302.       @command_window.draw_item(2, false)     # 装备无效化
  303.       @command_window.draw_item(3, false)     # 状态无效化
  304.     end
  305.     if $game_system.save_disabled             # 禁止存档的情况下
  306.       @command_window.draw_item(5, false)     # 存档无效化
  307.     end
  308.   end
  309.   #--------------------------------------------------------------------------
  310.   # ● 更新指令选择
  311.   #--------------------------------------------------------------------------
  312.   def update_command_selection
  313.     if Input.trigger?(Input::B)
  314.       Sound.play_cancel
  315.       $scene = Scene_Map.new
  316.     elsif Input.trigger?(Input::C)
  317.       if $game_party.members.size == 0 and @command_window.index < 4
  318.         Sound.play_buzzer
  319.         return
  320.       elsif $game_system.save_disabled and @command_window.index == 4
  321.         Sound.play_buzzer
  322.         return
  323.       end
  324.       Sound.play_decision
  325.       case @command_window.index
  326.       when 0      # 物品
  327.         $scene = Scene_Item.new
  328.       when 1,2,3  # 特技、装备、状态
  329.         start_actor_selection
  330.       when 4      # 存档
  331.         $scene = Scene_File.new(true, false, false)
  332.       when 5      # 游戏结束
  333.         $scene = Scene_End.new
  334.       end
  335.     end
  336.   end
  337.   #--------------------------------------------------------------------------
  338.   # ● アクター選択の開始
  339.   #--------------------------------------------------------------------------
  340.   def start_actor_selection
  341.     @command_window.active = false
  342.     @status_window.active = true
  343.     if $game_party.last_actor_index < @status_window.item_max
  344.       @status_window.index = $game_party.last_actor_index
  345.     else
  346.       @status_window.index = 0
  347.     end
  348.   end
  349.   #--------------------------------------------------------------------------
  350.   # ● アクター選択の終了
  351.   #--------------------------------------------------------------------------
  352.   def end_actor_selection
  353.     @command_window.active = true
  354.     @status_window.active = false
  355.     @status_window.index = -1
  356.   end
  357.   #--------------------------------------------------------------------------
  358.   # ● アクター選択の更新
  359.   #--------------------------------------------------------------------------
  360.   def update_actor_selection
  361.     if Input.trigger?(Input::B)
  362.       Sound.play_cancel
  363.       end_actor_selection
  364.     elsif Input.trigger?(Input::C)
  365.       $game_party.last_actor_index = @status_window.index
  366.       Sound.play_decision
  367.       case @command_window.index
  368.       when 1  # スキル
  369.         $scene = Scene_Skill.new(@status_window.index)
  370.       when 2  # 装備
  371.         $scene = Scene_Equip.new(@status_window.index)
  372.       when 3  # ステータス
  373.         $scene = Scene_Status.new(@status_window.index)
  374.       end
  375.     end
  376.   end
  377. end
复制代码

截图:

如不能显示,点击图片

还在龟速填坑中

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

2
发表于 2008-7-14 04:32:47 | 只看该作者
截图呢……
回复 支持 反对

使用道具 举报

Lv4.逐梦者

醉啸 长风万里

梦石
0
星屑
6157
在线时间
6592 小时
注册时间
2007-12-16
帖子
4501

贵宾

3
 楼主| 发表于 2008-7-14 04:55:46 | 只看该作者
截图已更新
回复 支持 反对

使用道具 举报

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
4
发表于 2008-7-14 05:15:58 | 只看该作者
脚本请用 HTML 框
图片请用 6RFTP 上传
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

5
发表于 2008-7-14 22:13:58 | 只看该作者
以下引用火鸡三毛老大于2008-7-13 21:15:58的发言:

脚本请用 HTML 框
图片请用 6RFTP 上传

是论坛附件……

话说点开图也看不见……
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-6-7
帖子
77
6
发表于 2008-7-17 06:43:43 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
10
在线时间
0 小时
注册时间
2008-7-24
帖子
2
7
发表于 2008-7-24 04:10:30 | 只看该作者
看不到……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
8
发表于 2008-7-24 21:33:17 | 只看该作者
其实这个排版还是不错的...
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
12 小时
注册时间
2006-5-21
帖子
773
9
发表于 2008-7-24 21:59:43 | 只看该作者
发个图上来
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
46 小时
注册时间
2007-8-2
帖子
859
10
发表于 2008-7-25 00:09:57 | 只看该作者
<?xml version="1.0" encoding="UTF-8" ?>
- <result>
  <code>FA_INVALID_SESSION</code>
  <messages />
  </result>

脚本出错了otl...
本人小博客,摸图进入
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 10:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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