赞 | 1 |
VIP | 0 |
好人卡 | 12 |
积分 | 2 |
经验 | 52910 |
最后登录 | 2024-8-20 |
在线时间 | 835 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 196
- 在线时间
- 835 小时
- 注册时间
- 2012-9-16
- 帖子
- 1811
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
简介
呃,这才算我第一个有用的菜单脚本了,话说花了两天晚上的功夫=-=于是还是先说说参考吧:
1、叶子的任务系统(里面一个文字显示是参考了←_←这个脚本的)
2、新·简易菜单(好像是冰舞恋蝶的,只是让我知道如何让选项变横排= =)
3、某个VA的脚本教程(无意间翻到的,关于改菜单的,里面有一段是让菜单滑动,但那个作者只给了一句if..的判定句,却瞬间让我明白了,于是看了下F1用VX的RGSS2的写法写在update里了)
截图&脚本&工程范例
截图在此:
↑↓看出来动态效果了么?然后就是我改了好多地方的说= =
= =脚本发出来吧:
- <STRONG>=begin
- ┌─────────────────────────┐
- │ 此脚本来自小y游戏制作室,使用和转载请保留此信息。│
- └─────────────────────────┘
- ┌─────────────────────┐
- │ 此脚本来自66RPG,使用和转载请保留此信息。│
- └─────────────────────┘
- 小y脚本站:http://www.ygameSprite.com/(已失效)
- -----------------------------------------------------------------------------
- *滑动幻想菜单*
- by.小y
- -----------------------------------------------------------------------------
- ■ 说明
- 小y写出的目前最好的菜单了,文字显示部分参考叶子的任务系统。
- ■ 功能
- ☞轻巧不同透明度的窗口
- ☞小型的加强型队伍人员显示(目前最多三人)
- ☞显示时间、地图名与金钱
- ☞菜单进入完全以滑动模式!!
- ☞菜单上方显示文字(可以作为即时查看的任务)
- ☞选项横向,大幅度更改坐标
- ■ 使用
- 插入脚本至Main前,在游戏Graphics\System文件夹中插入一张菜单背景
- 的图片(可在设置部分设定)。
- ■ 注意
- 脚本作者已将部分内容加入设置部分,使用者可以直接在37行设置,如果
- 不是懂脚本的高手,请勿修改脚本部分,否则可能会造成脚本错误。
- -----------------------------------------------------------------------------
- =end
- </STRONG>
复制代码
其实,我会告诉你这只是我的脚本的注释么= =然后其实发到这脚本可能会被论坛给那个了:- =begin
- ┌─────────────────────────┐
- │ 此脚本来自小y游戏制作室,使用和转载请保留此信息。│
- └─────────────────────────┘
- ┌─────────────────────┐
- │ 此脚本来自66RPG,使用和转载请保留此信息。│
- └─────────────────────┘
- 小y脚本站:http://www.ygameSprite.com/(已失效)
- -----------------------------------------------------------------------------
- *滑动幻想菜单*
- by.小y
- -----------------------------------------------------------------------------
- ■ 说明
- 小y写出的目前最好的菜单了,文字显示部分参考叶子的任务系统。
- ■ 功能
- ☞轻巧不同透明度的窗口
- ☞小型的加强型队伍人员显示(目前最多三人)
- ☞显示时间、地图名与金钱
- ☞菜单进入完全以滑动模式!!
- ☞菜单上方显示文字(可以作为即时查看的任务)
- ☞选项横向,大幅度更改坐标
- ■ 使用
- 插入脚本至Main前,在游戏Graphics\System文件夹中插入一张菜单背景
- 的图片(可在设置部分设定)。
- ■ 注意
- 脚本作者已将部分内容加入设置部分,使用者可以直接在37行设置,如果
- 不是懂脚本的高手,请勿修改脚本部分,否则可能会造成脚本错误。
- -----------------------------------------------------------------------------
- =end
- #-------------------
- # ■ 简易设置部分
- #-------------------
- GOLD_OPACITY = 100 # 金钱显示窗口的透明度
- MAPNAME_OPACITY = 100 # 地图名显示窗的透明度
- TIME_OPACITY = 100 # 时间显示窗口的透明度
- STATUS_OPACITY = 100 # 角色状态窗口的透明度
- BOOK_OPACITY = 100 # 介绍文字窗口的透明度
- MENUBACK = "菜单背景" # 菜单背景图片的图片名
- MENUNAME_OPACITY = 225 # 菜单背景图片的透明度
- #-------------------
- # ■ 信息设置部分
- #-------------------
- class Game_Party
- def get_books_info
- @books_info = []
- #----------------------------------------------------------------------
- #
- #
- # ↓这里设置介绍窗口中的文字
- 记录 = "欢迎使用这个脚本~~~←呵呵呵呵呵,其实我也不知道该说什么好了~?!"
- #
- #
- #
- @books_info[1] = Game_Book.new(记录)
- #----------------------------------------------------------------------
- end
- end
- #-----------------------------↓以下是脚本部分↓-----------------------------#
- #-----------------------------↓以下是脚本部分↓-----------------------------#
- #-----------------------------↓请非懂脚本的人↓-----------------------------#
- #-----------------------------↓不要擅自去修改↓-----------------------------#
- #-----------------------------↓否则后果请自负↓-----------------------------#
- class Game_Map
- attr_reader :map_id
- def mapname
- $mapname = load_data("Data/MapInfos.rvdata")
- $mapname[@map_id].name
- end
- end
- class Window_Mapname < Window_Base
- def initialize
- super(170, 420, 200, WLH + 32)
- refresh
- end
- def refresh
- self.contents.clear
- self.contents.font.color = normal_color
- self.contents.draw_text(55, 1, 160, WLH, $game_map.mapname.to_s)
- self.contents.font.color = system_color
- self.contents.draw_text(0, 0, 160, WLH, "地图:")
- end
- end
- class Window_Gold < Window_Base
- def initialize(x, y)
- super(x, y, 160, WLH + 32)
- refresh
- end
- def refresh
- self.contents.clear
- self.contents.font.color = system_color
- self.contents.draw_text(0, 0, 160, WLH, "金钱:")
- draw_currency_value($game_party.gold, 4, 0, 120)
- end
- end
- class Window_PlayTime < Window_Base
- def initialize(x, y)
- super(x, y, 161 , WLH + 32)
- refresh
- end
- def refresh
- self.contents.clear
- self.contents.font.color = system_color
- self.contents.draw_text(0, 0, 120, WLH, "时间:")
- @total_sec = Graphics.frame_count / Graphics.frame_rate
- hour = @total_sec / 60 / 60
- min = @total_sec / 60 % 60
- sec = @total_sec % 60
- text = sprintf("%02d:%02d:%02d", hour, min, sec)
- self.contents.font.color = normal_color
- self.contents.draw_text(0+10, 1, 120, WLH, text, 2)
- end
- def update
- super
- if Graphics.frame_count / Graphics.frame_rate != @total_sec
- refresh
- end
- end
- end
- class Window_MenuStatus < Window_Selectable
- def initialize(x, y)
- super(x, y, 272, 318)
- refresh
- self.active = false
- self.index = -1
- end
- def refresh
- self.contents.clear
- @item_max = 3
- for actor in $game_party.members
- draw_actor_face(actor, 2, actor.index * 96 + 2, 92)
- x = 74
- y = actor.index * 96 + WLH / 2
- draw_actor_name(actor, x+40, y)
- draw_actor_class(actor, x + 110, y)
- draw_actor_level(actor, x-30, y + WLH * 2+10)
- draw_actor_state(actor, x-74, y + WLH * 2+10)
- draw_actor_hp(actor, x + 30, y + WLH * 1)
- draw_actor_mp(actor, x + 30, y + WLH * 2)
- end
- end
- end
- class Game_Book
- attr_accessor :briefing # 简介
- def initialize(briefing)
- @briefing = briefing
- end
- def height
- text = @briefing.clone
- x = 0
- y = 64
- min_y = 0
- # 限制文字处理
- begin
- last_text = text.clone
- text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
- end until text == last_text
- text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
- $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
- end
- # c 获取 1 个字 (如果不能取得文字就循环)
- while ((c = text.slice!(/./m)) != nil)
- # 自动换行处理
- if x + 21 > 368
- y += [24, min_y].max
- min_y = 0
- x = 0
- end
- # x 为要描绘文字的加法运算
- x += 22
- end
- return (y + [24, min_y].max)
- end
- def id
- return $game_party.books_info.index(self)
- end
- end
- class Window_Book < Window_Base
- def initialize(book_id)
- super(372, 0, 272, 181)
- refresh(book_id)
- self.opacity = BOOK_OPACITY
- end
- def refresh(book_id)
- self.oy = 0
- self.visible = true
- return if book_id.nil?
- book = $game_party.books_info[book_id]
- if !book.nil?
- self.contents = Bitmap.new(self.width - 32, book.height)
- else
- self.contents = Bitmap.new(self.width - 32, self.height - 32)
- return
- end
- self.contents.font.color = normal_color
- draw_book_info(book)
- end
- def draw_book_info(book)
- self.contents.font.color = normal_color
- chenge_special_character(book.briefing.clone)
- end
- end
- class Game_Party
- attr_writer :latest_book
- def books_info
- if @books_info.nil?
- get_books_info
- end
- return @books_info
- end
- def current_books
- if @current_books.nil?
- @current_books = []
- end
- return @current_books
- end
- def latest_task
- if !current_books.include?(@latest_book)
- @latest_book = current_books[0]
- end
- return @latest_book
- end
- end
- class Window_Base < Window
- def chenge_special_character(text, x=0, y=0)
- # 记录换行时y坐标最小加值
- min_y = 0
- # 限制文字处理
- begin
- last_text = text.clone
- text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
- end until text == last_text
- text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
- $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
- end
- # c 获取 1 个字 (如果不能取得文字就循环)
- while ((c = text.slice!(/./m)) != nil)
- # 自动换行处理
- if x + self.contents.text_size(c).width > self.contents.width
- y += [WLH, min_y].max
- min_y = 0
- x = 0
- end
- # 描绘文字
- self.contents.draw_text(4 + x, y, 40, WLH, c)
- # x 为要描绘文字的加法运算
- x += self.contents.text_size(c).width
- end
- end
- end
- class Scene_Menu < Scene_Base
- def start
- super
- create_menu_background
- create_command_window
- @gold_window = Window_Gold.new(10, 420)
- @mapname_window = Window_Mapname.new
- @status_window = Window_MenuStatus.new(-100, 0)
- @book_window = Window_Book.new(1)
- @time_window = Window_PlayTime.new(370, 420)
- @gold_window.opacity = GOLD_OPACITY
- @mapname_window.opacity = MAPNAME_OPACITY
- @time_window.opacity = TIME_OPACITY
- @status_window.opacity = STATUS_OPACITY
- @menu_name = Sprite.new
- @menu_name.bitmap = Cache.system(MENUBACK)
- @menu_name.opacity = MENUNAME_OPACITY
- end
- def terminate
- super
- dispose_menu_background
- @command_window.dispose
- @gold_window.dispose
- @status_window.dispose
- @mapname_window.dispose
- @menu_name.dispose
- @time_window.dispose
- @book_window.dispose
- end
- def update
- super
- update_menu_background
- @command_window.update
- @gold_window.update
- @menu_name.update
- @time_window.update
- @status_window.update
- @mapname_window.update
- @book_window.update
- if @command_window.active
- update_command_selection
- elsif @status_window.active
- update_actor_selection
- end
- if @command_window.x >= 0
- else
- @command_window.x += 2
- end
- if @gold_window.y <= 368
- else
- @gold_window.y -= 2
- end
- if @mapname_window.y <= 368
- else
- @mapname_window.y -= 2
- end
- if @time_window.y <= 368
- else
- @time_window.y -= 2
- end
- if @status_window.x >= 0
- else
- @status_window.x += 2
- end
- if @book_window.x <= 272
- else
- @book_window.x -= 2
- end
- end
- def create_command_window
- s1 = Vocab::item
- s2 = Vocab::skill
- s3 = Vocab::equip
- s4 = Vocab::status
- s5 = Vocab::save
- s6 = "结束"
- @command_window = Window_Command.new(544, [s1, s2, s3, s4, s5, s6], 6)
- @command_window.index = @menu_index
- @command_window.x = -30
- @command_window.y = 320
- @command_window.opacity = 0
- if $game_party.members.size == 0 # 同伴人数为 0 的情况下
- @command_window.draw_item(0, false) # 物品无效化
- @command_window.draw_item(1, false) # 特技无效化
- @command_window.draw_item(2, false) # 装备无效化
- @command_window.draw_item(3, false) # 状态无效化
- end
- if $game_system.save_disabled # 禁止存档的情况下
- @command_window.draw_item(4, false) # 存档无效化
- end
- end
- end
复制代码
以上请无视,因为工程在下面:
Project3.zip
(306.6 KB, 下载次数: 140)
|
评分
-
查看全部评分
|