Project1
标题:
菜单脚本常量未定义? 求解 .
[打印本页]
作者:
summerxud
时间:
2010-7-31 14:58
标题:
菜单脚本常量未定义? 求解 .
本帖最后由 summerxud 于 2010-7-31 14:59 编辑
工程下载
Project3.rar
(597.71 KB, 下载次数: 65)
2010-7-31 14:54 上传
点击文件名下载附件
脚本原地址:
http://wiki.pockethouse.com/index.php?title=Final_Fantasy_13_Main_Menu
#===============================================================================
#
# Shanghai Simple Script - Final Fantasy 13 Main Menu
# Last Date Updated: 2010.06.02
# Level: Normal
#
# NOTE! This requires Yanfly Engine Melody's Main Menu Melody script to be
# installed and located above this script to work. This makes your main menu
# ordered like Final Fantasy 13's.
#===============================================================================
# Instructions
# -----------------------------------------------------------------------------
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials but above ▼ Main. Remember to save.
#
#===============================================================================
$imported = {} if $imported == nil
$imported["FinalFantasy13Menu"] = true
module SSS
# This is the image file for the menu background. Place this inside of the
# Graphics\System folder.
MENU_BACK_IMAGE = "MenuBack"
# This is the image file used for the back of each of the menu items. This
# image must be 160x24 pixels and placed inside of the Graphics\System folder.
MENU_BACK_ITEM_IMAGE = "MenuBackItem"
# This sets the menu help window's text color.
MENU_HELP_TEXT_COLOR = Color.new(0, 0, 0)
# This is the text format used to write out the current map.
MENU_LOCATION = "Location: %s"
# This hash sets the image files for your actors. These images must be placed
# inside of the Graphics\System folder and they have to be 104x288 pixels.
MENU_ACTOR_IMAGES ={
1 => "MenuRalph",
2 => "MenuUlrika",
3 => "MenuBennett",
4 => "MenuYlva",
} # Remove this and perish.
# This hash sets what colors belong to which class when drawn.
MENU_CLASS_COLORS ={
1 => 2,
2 => 6,
3 => 4,
4 => 5,
} # Remove this and perish.
# This sets the help window descripts for the menu commands.
MENU_HELP_WINDOW ={
"Item" => "View and manage your party's items.",
"Status" => "View a party member's status.",
"Skill" => "Manage a party member's skills.",
"Equip" => "Manage a party member's equipment.",
"Save" => "Save your current progress.",
"Game End" => "End the current game.",
"System" => "Adjust the game's options.",
} # Remove this and perish.
end
#==============================================================================
# ** Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias initialize_sss_ff13_menu_window_base initialize unless $@
def initialize(x, y, width, height)
initialize_sss_ff13_menu_window_base(x, y, width, height)
self.opacity = 0 if $scene.is_a?(Scene_Menu)
end
end
#==============================================================================
# ** Window_MenuHelp
#==============================================================================
class Window_MenuHelp < Window_Help
#--------------------------------------------------------------------------
# * Set Text
#--------------------------------------------------------------------------
def set_text(text, align = 0)
if text != @text or align != @align
self.contents.clear
self.contents.font.shadow = false
self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR
self.contents.draw_text(4, 0, self.width - 40, WLH, text, align)
@text = text
@align = align
end
end
end
#==============================================================================
# ** Window_MainMenuParty
#==============================================================================
class Window_MainMenuParty < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(x, y)
super(x-24, y, Graphics.width-x+32, Graphics.height-y)
self.active = false
@column_max = [4, $game_party.members.size].max
@spacing = 0
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@data = $game_party.members
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# * Draw Item
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
actor = @data[index]
unless actor.nil?
draw_actor_image(actor, rect)
draw_actor_name(actor, rect)
draw_actor_state(actor, rect.x, WLH*5/2, 96)
draw_actor_class(actor, rect)
draw_actor_level(actor, rect)
draw_actor_hp(actor, rect)
draw_actor_mp(actor, rect)
end
end
#--------------------------------------------------------------------------
# * Draw Actor Image
#--------------------------------------------------------------------------
def draw_actor_image(actor, rect)
filename = SSS::MENU_ACTOR_IMAGES[actor.id]
return if filename.nil?
bitmap = Cache.system(filename)
image_rect = Rect.new(2, 2, rect.width-4, 284)
self.contents.blt(rect.x+2, rect.y+2, bitmap, image_rect)
end
#--------------------------------------------------------------------------
# * Draw Actor Name
#--------------------------------------------------------------------------
def draw_actor_name(actor, rect)
name = actor.name
self.contents.font.size = Font.default_size
self.contents.font.color = normal_color
self.contents.draw_text(rect.x+4, WLH*3/2, rect.width-8, WLH, name)
end
#--------------------------------------------------------------------------
# * Draw Actor Class
#--------------------------------------------------------------------------
def draw_actor_class(actor, rect)
name = actor.class.name
self.contents.font.size = Font.default_size - 4
color_id = SSS::MENU_CLASS_COLORS[actor.class.id].to_i
self.contents.font.color = text_color(color_id)
self.contents.draw_text(rect.x+4, WLH*0, rect.width-8, WLH, name, 2)
end
#--------------------------------------------------------------------------
# * Draw Actor Level
#--------------------------------------------------------------------------
def draw_actor_level(actor, rect)
self.contents.font.size = Font.default_size - 4
self.contents.font.color = power_up_color
yy = 288 - WLH*7/2 - 8
self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, Vocab.level_a, 0)
yy += WLH/2
self.contents.font.color = normal_color
self.contents.font.size += 2
self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, actor.level, 2)
end
#--------------------------------------------------------------------------
# * Draw Actor HP
#--------------------------------------------------------------------------
def draw_actor_hp(actor, rect)
self.contents.font.size = Font.default_size - 4
self.contents.font.color = hp_gauge_color2
yy = 288 - WLH*5/2 - 4
self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, Vocab.hp, 0)
yy += WLH/2
self.contents.font.color = normal_color
self.contents.font.size += 2
self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, actor.hp, 2)
end
#--------------------------------------------------------------------------
# * Draw Actor MP
#--------------------------------------------------------------------------
def draw_actor_mp(actor, rect)
self.contents.font.size = Font.default_size - 4
self.contents.font.color = mp_gauge_color2
yy = 288 - WLH*3/2
self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, Vocab.mp, 0)
yy += WLH/2
self.contents.font.color = normal_color
self.contents.font.size += 2
self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, actor.mp, 2)
end
#--------------------------------------------------------------------------
# * Item Rect
#--------------------------------------------------------------------------
def item_rect(index)
rect = Rect.new(0, 0, 0, 0)
rect.width = (contents.width + @spacing) / @column_max - @spacing
rect.height = 288
rect.x = index % @column_max * (rect.width + @spacing)
rect.y = index / @column_max * WLH
return rect
end
end
#==============================================================================
# ** Window_MenuTimer
#==============================================================================
class Window_MenuTimer < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, Graphics.height - 60, 120, 56)
self.contents.font.size = Font.default_size - 4
self.contents.font.shadow = false
self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
format = "%03d:%02d:%02d"
@game_time = Graphics.frame_count / Graphics.frame_rate
hours = @game_time / 3600
minutes = @game_time / 60 % 60
seconds = @game_time % 60
text = sprintf(format, hours, minutes, seconds)
self.contents.draw_text(0, 0, contents.width-4, WLH, text, 2)
end
#--------------------------------------------------------------------------
# * Update
#--------------------------------------------------------------------------
def update
super
refresh if @game_time != (Graphics.frame_count / Graphics.frame_rate)
end
end
#==============================================================================
# ** Window_MenuGold
#==============================================================================
class Window_MenuGold < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(100, Graphics.height - 60, 120, 56)
self.contents.font.size = Font.default_size - 4
self.contents.font.shadow = false
self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
text = sprintf("%d%s", $game_party.gold, Vocab.gold)
self.contents.draw_text(0, 0, contents.width-4, WLH, text, 0)
end
end
#==============================================================================
# ** Window_MenuLocation
#==============================================================================
class Window_MenuLocation < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(Graphics.width/2-16, Graphics.height - 60, Graphics.width/2+16, 56)
self.contents.font.size = Font.default_size - 4
self.contents.font.shadow = false
self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
text = sprintf(SSS::MENU_LOCATION, $game_map.map_name)
self.contents.draw_text(4, 0, contents.width, WLH, text, 0)
end
end
#===============================================================================
# Override Main Menu Melody Settings
#===============================================================================
YEM::MENU::USE_ICONS = false
YEM::MENU::MENU_RIGHT_SIDE = false
YEM::MENU::ON_SCREEN_MENU = false
YEM::MENU::USE_MULTI_VARIABLE_WINDOW = false
#==============================================================================
# ** Scene_Menu
#==============================================================================
class Scene_Menu < Scene_Base
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
alias start_sss_ff13_menu start unless $@
def start
start_sss_ff13_menu
start_ff13_menu_style
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
alias terminate_sss_ff13_menu terminate unless $@
def terminate
@help_window.dispose
@location_window.dispose
@menu_timer_window.dispose
@menubackitem_sprite.bitmap.dispose
@menubackitem_sprite.dispose
terminate_sss_ff13_menu
end
#--------------------------------------------------------------------------
# * Create Background for Menu Screen
#--------------------------------------------------------------------------
def create_menu_background
@menuback_sprite = Sprite.new
@menuback_sprite.bitmap = Cache.system(SSS::MENU_BACK_IMAGE)
update_menu_background
end
#--------------------------------------------------------------------------
# * Update Background for Menu Screen
#--------------------------------------------------------------------------
def update_menu_background
super
@menubackitem_sprite.update unless @menubackitem_sprite.nil?
@menu_timer_window.update unless @menu_timer_window.nil?
end
#--------------------------------------------------------------------------
# * Create Menu Back Items
#--------------------------------------------------------------------------
def create_menu_back_items
@menubackitem_sprite = Sprite.new
width = 160
height = @command_window.height-32
@menubackitem_sprite.bitmap = Bitmap.new(width, height)
bitmap = Cache.system(SSS::MENU_BACK_ITEM_IMAGE)
rect = Rect.new(0, 0, 160, 24)
y = 0
loop do
break if y >= height
@menubackitem_sprite.bitmap.blt(0, y, bitmap, rect)
y += 24
end
@menubackitem_sprite.y = @command_window.y+16
end
#--------------------------------------------------------------------------
# * Start Final Fantasy 13 Menu Style
#--------------------------------------------------------------------------
def start_ff13_menu_style
@gold_window.dispose
@gold_window = Window_MenuGold.new
@menu_timer_window = Window_MenuTimer.new
@location_window = Window_MenuLocation.new
@help_window = Window_MenuHelp.new
@help_window.x += 48
@help_window.width -= 48
@help_window.create_contents
@help_window.contents.font.size = Font.default_size - 4
@command_window.y = @help_window.height - 9
@status_window.dispose
x = @command_window.width
y = @help_window.height-9
@status_window = Window_MainMenuParty.new(x, y)
@command_window.x -= 4
@help_window.y += 12
update_help_window
create_menu_back_items
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
alias update_command_selection_sss_ff13_menu update_command_selection unless $@
def update_command_selection
update_help_window
update_command_selection_sss_ff13_menu
end
#--------------------------------------------------------------------------
# * Update Help Window
#--------------------------------------------------------------------------
def update_help_window
return if @help_window_index == @command_window.index
@help_window_index = @command_window.index
commands = @command_window.commands
text = SSS::MENU_HELP_WINDOW[commands[@help_window_index]].to_s
@help_window.set_text(text)
end
end
#===============================================================================
#
# END OF FILE
#
#===============================================================================
复制代码
QQ截图未命名1.png
(6.78 KB, 下载次数: 21)
下载附件
保存到相册
2010-7-31 14:57 上传
说常量YEM未定义?我并没有修改过脚本..
作者:
DeathKing
时间:
2010-7-31 16:49
需要yangfly 战斗引擎,
8#
有完整可用的工程(未汉化,汉化版本可能很快放出):
http://rpg.blue/thread-144299-1-1.html
作者:
调律
时间:
2010-7-31 16:58
>说常量YEM未定义?我并没有修改过脚本..
YEM::MENU::USE_ICONS = false
在下觉得这个YEM是个module……
作者:
DeathKing
时间:
2010-8-1 18:59
同时,这里有整合好的,没有错误的最终幻想13菜单:
http://rpg.blue/thread-145294-1-1.html
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1