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

Project1

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

[RMVX发布] 新版:动态阳光菜单脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
196
在线时间
835 小时
注册时间
2012-9-16
帖子
1811
跳转到指定楼层
1
发表于 2014-2-5 17:12:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
废话不多说了,直接放上截图和脚本:


  1. =begin

  2.               ┌─────────────────────────┐
  3.               │ 此脚本来自小y游戏制作室,使用和转载请保留此信息。│
  4.               └─────────────────────────┘
  5.                    ┌─────────────────────┐
  6.                    │ 此脚本来自66RPG,使用和转载请保留此信息。│
  7.                    └─────────────────────┘
  8.                  小y脚本站:http://www.ygameSprite.com/(已失效)

  9. -----------------------------------------------------------------------------
  10.                              *动态阳光菜单脚本*
  11.                                                        by.小y
  12. -----------------------------------------------------------------------------
  13.   ■ 说明
  14.     传统RPG十分适合使用的菜单脚本。
  15.   ■ 功能
  16.     此脚本的功能:
  17.         ☞背景滚动
  18.         ☞选项横向
  19.         ☞增加地名、时间、金钱窗口
  20.         ☞“结束”选项菜单显示
  21.   ■ 使用
  22.     插入脚本,在游戏Graphics\System文件夹中插入一张名称为“Menu”
  23.     的图片。
  24. -----------------------------------------------------------------------------

  25. =end
  26. class Window_PlayTime < Window_Base
  27.   def initialize(x, y)
  28.     super(x, y, 194 , 56)
  29.     refresh
  30.   end
  31.   def refresh
  32.     self.contents.clear
  33.     self.contents.font.color = system_color
  34.     self.contents.draw_text(8, 0, 120, 32, "时间")
  35.     @total_sec = Graphics.frame_count / Graphics.frame_rate
  36.     hour = @total_sec / 60 / 60
  37.     min = @total_sec / 60 % 60
  38.     sec = @total_sec % 60
  39.     text = sprintf("%02d:%02d:%02d", hour, min, sec)
  40.     self.contents.font.color = normal_color
  41.     self.contents.draw_text(20, 0, 120, 32, text, 2)
  42.   end
  43.   def update
  44.     super
  45.     if Graphics.frame_count / Graphics.frame_rate != @total_sec
  46.       refresh
  47.     end
  48.   end
  49. end
  50. class Window_Base < Window
  51.   def draw_actor_hp(actor, x, y, width = 60)
  52.     draw_actor_hp_gauge(actor, x, y, width)
  53.     self.contents.font.color = system_color
  54.     self.contents.draw_text(x, y, 30, WLH, Vocab::hp_a)
  55.     self.contents.font.color = system_color
  56.     xr = x + width
  57.     if width < 120
  58.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.hp, 2)
  59.     else
  60.       self.contents.draw_text(xr - 90, y, 40, WLH, actor.hp, 2)
  61.       self.contents.font.color = normal_color
  62.       self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
  63.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxhp, 2)
  64.     end
  65.   end
  66.   def hp_color(actor)
  67.     return knockout_color #if actor.hp == 0
  68.     return crisis_color #if actor.hp < actor.maxhp / 4
  69.     return normal_color
  70.   end
  71.   def mp_color(actor)
  72.     return crisis_color #if actor.mp < actor.maxmp / 4
  73.     return normal_color
  74.   end
  75.   def draw_actor_hp_gauge(actor, x, y, width = 60)
  76.     gw = width * actor.hp / actor.maxhp
  77.     gc1 = hp_gauge_color1
  78.     gc2 = hp_gauge_color2
  79.     self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
  80.     self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  81.   end
  82.   def draw_actor_mp(actor, x, y, width = 60)
  83.     draw_actor_mp_gauge(actor, x, y, width)
  84.     self.contents.font.color = system_color
  85.     self.contents.draw_text(x, y, 30, WLH, Vocab::mp_a)
  86.     self.contents.font.color = system_color
  87.     xr = x + width
  88.     if width < 120
  89.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.mp, 2)
  90.     else
  91.       self.contents.draw_text(xr - 90, y, 40, WLH, actor.mp, 2)
  92.       self.contents.font.color = normal_color
  93.       self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
  94.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxmp, 2)
  95.     end
  96.   end
  97.   def draw_actor_mp_gauge(actor, x, y, width = 60)
  98.     gw = width * actor.mp / [actor.maxmp, 1].max
  99.     gc1 = mp_gauge_color1
  100.     gc2 = mp_gauge_color2
  101.     self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
  102.     self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  103.   end
  104. end
  105. class Game_Party < Game_Unit
  106.   MAX_MEMBERS = 2                         # 最大同伴数
  107. end
  108. class Window_MenuStatus < Window_Selectable
  109.   def initialize(x, y)
  110.     super(x, y, 272, 226)
  111.     refresh
  112.     self.active = false
  113.     self.index = -1
  114.   end
  115.   def refresh
  116.     self.contents.clear
  117.     @item_max = $game_party.members.size
  118.     for actor in $game_party.members
  119.       draw_actor_face(actor, 2, actor.index * 96 + 2, 92)
  120.       x = 0#104
  121.       y = actor.index * 96 + WLH / 2
  122.       draw_actor_name(actor, x+100, y)
  123.       draw_actor_class(actor, x + 190, y)
  124.       draw_actor_level(actor, x+180, y + WLH * 2)
  125.       draw_actor_state(actor, x, y + WLH * 3 - 12)
  126.       draw_actor_hp(actor, x + 100, y + WLH * 1)
  127.       draw_actor_mp(actor, x + 100, y + WLH * 2)
  128.     end
  129.   end
  130. end
  131. class Window_Gold1 < Window_Base
  132.   def initialize(x, y)
  133.     super(x, y, 150, WLH + 32)
  134.     refresh
  135.   end
  136.   def refresh
  137.     self.contents.clear
  138.     self.contents.font.color = system_color
  139.     self.contents.draw_text(-2, -4, 120, 32, "金钱")
  140.     draw_currency_value($game_party.gold, -1, 0, 120)
  141.   end
  142. end
  143. class Scene_Menu < Scene_Base
  144.   def start
  145.     super
  146.     create_menu_background
  147.     create_command_window
  148.     @menucommandviewport = Viewport.new(0, 0, 544, 416)
  149.     @menucommandplane = Plane.new(@menucommandviewport4)
  150.     @menucommandplane.bitmap = Cache.system("Menu")
  151. #~     @menu_bg = Sprite.new
  152. #~     @menu_bg.bitmap = Cache.system("Menu")
  153.     @gold_window = Window_Gold1.new(0, 360)
  154.     @status_window = Window_MenuStatus.new(136, 95)
  155.     @now_place_window = Window_Base.new(150, 360, 200, 56)
  156.     @time_window = Window_PlayTime.new(350,360)
  157.     @now_place_window.contents.font.color = @now_place_window.text_color(3)
  158.     map_name = load_data("Data/MapInfos.rvdata")[$game_map.map_id].name
  159.     @now_place_window.contents.draw_text(3, 0, 120, 24, "位置")
  160.     @now_place_window.contents.draw_text(70, 0, 120, 24, map_name)  
  161.     @now_place_window.z = 1
  162.     create_command2_window
  163.     @command2_window.active = false
  164.     @command2_window.visible = false
  165.   end
  166.   def terminate
  167.     super
  168.     dispose_menu_background
  169.     @command_window.dispose
  170.     @menucommandplane.dispose
  171.     @menucommandviewport.dispose
  172.     @command2_window.dispose
  173.     @gold_window.dispose
  174.     @time_window.dispose
  175. #~     @menu_bg.dispose
  176.     @now_place_window.dispose
  177.     @status_window.dispose
  178.   end
  179.   def update
  180.     super
  181.     update_menu_background
  182.     @menucommandplane.ox += 4 if Graphics.frame_count % 2 == 0
  183.     @command_window.update
  184.     @command2_window.update
  185.     @gold_window.update
  186.     @time_window.update
  187. #~     @menu_bg.update
  188.     @now_place_window.update
  189.     @status_window.update
  190.     if @command_window.active
  191.       update_command_selection
  192.     elsif @command2_window.active
  193.       update_command2_selection
  194.     elsif @status_window.active
  195.       update_actor_selection
  196.     end
  197.   end
  198.   def create_command_window
  199.     s1 = Vocab::item
  200.     s2 = Vocab::skill
  201.     s3 = Vocab::equip
  202.     s4 = Vocab::status
  203.     s5 = Vocab::save
  204.     s6 = "结束"
  205.     @command_window = Window_Command.new(544, [s1, s2, s3, s4, s5, s6], 6)
  206.     @command_window.index = @menu_index
  207.     if $game_party.members.size == 0          # 同伴人数为 0 的情况下
  208.       @command_window.draw_item(0, false)     # 物品无效化
  209.       @command_window.draw_item(1, false)     # 特技无效化
  210.       @command_window.draw_item(2, false)     # 装备无效化
  211.       @command_window.draw_item(3, false)     # 状态无效化
  212.     end
  213.     if $game_system.save_disabled             # 禁止存档的情况下
  214.       @command_window.draw_item(4, false)     # 存档无效化
  215.     end
  216.   end
  217.   def update_command_selection
  218.     if Input.trigger?(Input::B)
  219.       Sound.play_cancel
  220.       $scene = Scene_Map.new
  221.     elsif Input.trigger?(Input::C)
  222.       if $game_party.members.size == 0 and @command_window.index < 4
  223.         Sound.play_buzzer
  224.         return
  225.       elsif $game_system.save_disabled and @command_window.index == 4
  226.         Sound.play_buzzer
  227.         return
  228.       end
  229.       Sound.play_decision
  230.       case @command_window.index
  231.       when 0      # 物品
  232.         $scene = Scene_Item.new
  233.       when 1,2,3  # 特技、装备、状态
  234.         start_actor_selection
  235.       when 4      # 存档
  236.         $scene = Scene_File.new(true, false, false)
  237.       when 5      # 游戏结束
  238.         @command2_window.active = true
  239.         @command2_window.visible = true
  240.         @command_window.active = false
  241.       end
  242.     end
  243.   end
  244.   def create_command2_window
  245.     s1 = "标题"
  246.     s2 = "退出"
  247.     s3 = "取消"
  248.     @command2_window = Window_Command.new(152, [s1, s2, s3])
  249.     @command2_window.index = 0
  250.     @command2_window.x = 272 - 62
  251.     @command2_window.y = 208 - 55
  252.     @command2_window.opacity = 225
  253.   end
  254.   def start_actor_selection
  255.     @command_window.active = false
  256.     @status_window.active = true
  257.     if $game_party.last_actor_index < @status_window.item_max
  258.       @status_window.index = $game_party.last_actor_index
  259.     else
  260.       @status_window.index = 0
  261.     end
  262.   end
  263.   def end_actor_selection
  264.     @command_window.active = true
  265.     @status_window.active = false
  266.     @status_window.index = -1
  267.   end
  268.   def update_actor_selection
  269.     if Input.trigger?(Input::B)
  270.       Sound.play_cancel
  271.       end_actor_selection
  272.     elsif Input.trigger?(Input::C)
  273.       $game_party.last_actor_index = @status_window.index
  274.       Sound.play_decision
  275.       case @command_window.index
  276.       when 1  # スキル
  277.         $scene = Scene_Skill.new(@status_window.index)
  278.       when 2  # 装備
  279.         $scene = Scene_Equip.new(@status_window.index)
  280.       when 3  # ステータス
  281.         $scene = Scene_Status.new(@status_window.index)
  282.       end
  283.     end
  284.   end
  285.   def update_command2_selection
  286.     if Input.trigger?(Input::B)
  287.       Sound.play_cancel
  288.       @command2_window.active = false
  289.       @command2_window.visible = false
  290.       @command_window.active = true
  291.     elsif Input.trigger?(Input::C)
  292.       Sound.play_decision
  293.       case @command2_window.index
  294.       when 0  # スキル
  295.         Sound.play_decision
  296.         RPG::BGM.fade(800)
  297.         RPG::BGS.fade(800)
  298.         RPG::ME.fade(800)
  299.         $scene = Scene_Title.new
  300.         Graphics.fadeout(60)
  301.       when 1  # 装備
  302.         Sound.play_decision
  303.         RPG::BGM.fade(800)
  304.         RPG::BGS.fade(800)
  305.         RPG::ME.fade(800)
  306.         $scene = nil
  307.       when 2  # ステータス
  308.         Sound.play_decision
  309.         @command2_window.active = false
  310.         @command2_window.visible = false
  311.         @command_window.active = true
  312.       end
  313.     end
  314.   end
  315. end
复制代码

——旧坑欢迎戳

Lv1.梦旅人

梦石
0
星屑
55
在线时间
89 小时
注册时间
2009-7-8
帖子
11
2
发表于 2014-3-3 00:37:40 | 只看该作者
呃……请问这里面都哪些是纯粹的背景动态,就是不附加金币、时间什么的

点评

看脚本说明,要在工程system文件夹里加个叫menu的背景图。  发表于 2014-3-3 07:08
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
9 小时
注册时间
2014-3-4
帖子
9
3
发表于 2014-3-4 22:33:28 | 只看该作者
放了图还是提示错误啊
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
196
在线时间
835 小时
注册时间
2012-9-16
帖子
1811
4
 楼主| 发表于 2014-3-5 07:02:53 | 只看该作者
秋月爱莉 发表于 2014-3-4 22:33
放了图还是提示错误啊

错误?截图发上来。我看看是什么错误。

——旧坑欢迎戳
回复 支持 反对

使用道具 举报

Lv1.梦旅人

进击的屌丝
中二同好会长

梦石
0
星屑
50
在线时间
628 小时
注册时间
2013-10-8
帖子
1246

贵宾

5
发表于 2014-3-5 11:25:22 | 只看该作者
哦哦,小Y现在变厉害了!
吾乃不明事理之人,疯狂之人。


才怪咧,当时是怎么想到这么中二的句子233
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
9 小时
注册时间
2014-3-4
帖子
9
6
发表于 2014-3-5 12:38:14 | 只看该作者
yangjunyin2002 发表于 2014-3-5 07:02
错误?截图发上来。我看看是什么错误。

可能我犯了什么低级 错误 我是新人。。。那个图也改名放进去了System。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
9 小时
注册时间
2014-3-4
帖子
9
7
发表于 2014-3-5 12:41:46 | 只看该作者
yangjunyin2002 发表于 2014-3-5 07:02
错误?截图发上来。我看看是什么错误。

知道怎么发图 可能我比较笨 错误手打吧 脚本““第146行:发生 TypeError。  superclass mismatch for class Scene_Menu
回复 支持 反对

使用道具 举报

Lv3.寻梦者

唯一的信徒

梦石
0
星屑
1665
在线时间
1357 小时
注册时间
2013-1-29
帖子
1637
8
发表于 2014-3-5 15:41:13 | 只看该作者
你敢写(抄)个更傻逼一点的代码吗...
别人game party的常量都改...
还满屏抄。
不过倒是很厉害就是了_(:з」∠)_
『我只是一个正在潜心修炼的渣乐师罢了』
Dear Time\(^o^)/~


假如上面的图片挂了的话麻烦各位去发个帖 @ 一下 orzFly 让他修复 deartime
回复 支持 反对

使用道具 举报

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
9
发表于 2014-3-5 16:32:02 | 只看该作者
狐狸君的改造技术越来越卓越了,这样的脚本我是不敢放到工程里……
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
9 小时
注册时间
2014-3-4
帖子
9
10
发表于 2014-3-6 00:51:13 | 只看该作者
嗷 我解决了 原来是原来装了一个插件冲突了 但是也感谢前辈的细心解答O(∩_∩)O
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-4 02:06

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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