Project1
标题:
谁能整合图片标题菜单+动态标题画面啊...
[打印本页]
作者:
归心
时间:
2009-7-8 13:05
提示:
作者被禁止或删除 内容自动屏蔽
作者:
TERENCE
时间:
2009-7-8 13:20
#==============================================================================
# ■ 高自由度设定 图片标题菜单 动态标题画面 闪烁文字 整合
#
# §§ 简称:高自由度 整合 标题画面设置
#------------------------------------------------------------------------------
# 整合作者:TERENCE (龙皇)
#
# 图片标题菜单:By chaochao From 幻想森林论坛
# http://rpg.blue/web/htm/news167.htm
#
# 动态标题画面(流星雨版):By 柳柳
# http://rpg.blue/web/htm/news92.htm
#
# 闪烁标题脚本:未知作者,来源日本
# http://rpg.blue/web/htm/news107.htm
#==============================================================================
class Scene_Title
## ===================== ↓自定义设置区↓ ===================== ##
#--------------------------------------------------------------------------
# ● 标题画面闪烁文字自定义设定
#--------------------------------------------------------------------------
TITLE_STR = "承接未完の夢境" # 闪烁文字
FONT_NAME = ["標楷體","黑体", "楷体", "宋体"]
# 字体列表,当玩家电脑没有安装第一种字体会顺序往下寻找第二种
FONT_SIZE = 28 # 字体大小
FONT_BOLD = true # 加粗 ( true 是 / false 否 )
FONT_ITALIC = false # 斜体 ( true 是 / false 否 )
STR_COLOR = Color.new( 173,255,47 ) # 文字颜色
# 文字颜色可以參考此帖
# [增补功能]136种颜色表 By 禾西
# http://rpg.blue/viewthread.php?tid=88854
# 查考数字的地方→ def self.pink(opacity = 255);new(***,***,***,opacity);end
# 查考颜色的地方→ def self.***(opacity........
DRAW_FRAME = true
# 文字是否勾边 ( true 是 / false 否 )
FRAME_COLOR = Color.new(0, 0, 0) # 勾边颜色
LOCATE_X = 351 # 闪烁文字 X 座标
LOCATE_Y = 174 # 闪烁文字 Y 座标
DRAW_X = 0 # X 座标修正値(相对中心)
DRAW_Y = -100 # Y 座标修正値(相对中心)
BLINK = true # 闪烁
#--------------------------------------------------------------------------
# ● 标题画面SE音效自定义设定
#--------------------------------------------------------------------------
Cursor_SE = "Audio/SE/decide.wav" # Title 游标音效SE 文件名 路径
Buzzer_SE = "Audio/SE/no_buy.wav" # Title 无效音效SE 文件名 路径
Decision_SE = "Audio/SE/decide3.wav" # Title 确定音效SE 文件名 路径
#--------------------------------------------------------------------------
# ● 图片标题菜单自定义常量及相关设定
#--------------------------------------------------------------------------
STAR1 = "Graphics/Pictures/002.png" # 游标没在 "开始游戏" 所显示图片 的路径
STAR2 = "Graphics/Pictures/001.png" # 游标位在 "开始游戏" 所显示图片 的路径
Start_x = 0 # 开始游戏 图片X座标 (P.S.原点是左上)
Start_y = 264 # 开始游戏 图片Y座标 (P.S.原点是左上)
CONTINUE1 = "Graphics/Pictures/004.png" # 游标没在 "读取进度" 所显示图片 的路径
CONTINUE2 = "Graphics/Pictures/003.png" # 游标位在 "读取进度" 所显示图片 的路径
Continue_x = 50 # 读取进度 图片X座标 (P.S.原点是左上)
Continue_y = 334 # 读取进度 图片Y座标 (P.S.原点是左上)
EXIT1 = "Graphics/Pictures/006.png" # 游标没在 "离开游戏" 所显示图片 的路径
EXIT2 = "Graphics/Pictures/005.png" # 游标位在 "离开游戏" 所显示图片 的路径
Exit_x = 100 # 离开游戏 图片X座标 ( P.S.原点是左上 )
Exit_y = 404 # 离开游戏 图片Y座标 ( P.S.原点是左上 )
TitleTable_opacity = 210 # 标题图片透明度
TitleTable_change = 10 # 标题图片透明度变化速度( 建议范围:10~30 )
#--------------------------------------------------------------------------
# ● 动态标题画面自定义常量及相关设定
#--------------------------------------------------------------------------
WEATHER = 4 # 使用自定义效果(0:无,1:雨,2:暴风雨,3:雪,4:自定义)
MAXNUMBER = 10 # 天气图片数量
WEATHER_FILE = "Graphics/Pictures/Star.png" # 自定义图片路径
BLEND_TYPE = 1 # 合成方式(0:普通,1:加法,2:减法)
WEATHER_X = 0 # X方向每回合减少象素
WEATHER_Y = -1 # Y方向每回合减少象素
WEATHER_OPACITY = 0.5 # 每回合减低透明度
START_OPACITY = 200 # 出现时的透明度
RAND_X = 1200 # 随机X范围
RAND_Y = 600 # 随机Y范围
HEIGHT = 300 # 出现时候的屏幕Y
WIDTH = 0 # 出现时候的屏幕X
#--------------------------------------------------------------------------
# ● 题画面图片先后顺序设定 (值越大图片越上一层)
#--------------------------------------------------------------------------
TITLE_NAME_Z = 0 # 闪烁文字
CHAOCHAO_Z = 3 # 图片标题
WEATHER_Z = 1 # 动态天气
## ===================== ↑自定义设置区↑ ===================== ##
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
if $BTEST
battle_test
return
end
# 载入资料库
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
$game_system = Game_System.new
# 生成二為阵列的Sprite.new
@sprite = [Sprite.new]
for i in 0..3
for j in 0..1
@sprite = [Sprite.new]
@sprite[j] = Sprite.new
@sprite[j].opacity = 0
end
end
# 生成标题图形
@sprite[0][0].bitmap = RPG::Cache.title($data_system.title_name)
@sprite[0][0].opacity = 0
#开始游戏的图片
@sprite[1][0].bitmap = Bitmap.new(STAR1)
@sprite[1][1].bitmap = Bitmap.new(STAR2)
#继续游戏的图片
@sprite[2][0].bitmap = Bitmap.new(CONTINUE1)
@sprite[2][1].bitmap = Bitmap.new(CONTINUE2)
#结束游戏的图片
@sprite[3][0].bitmap = Bitmap.new(EXIT1)
@sprite[3][1].bitmap = Bitmap.new(EXIT2)
#图片位置 及 初始透明度
for j in 0..1
@sprite[1][j].opacity = 0
@sprite[1][j].x = Start_x
@sprite[1][j].y = Start_y
@sprite[1][j].z = CHAOCHAO_Z
@sprite[2][j].opacity = 0
@sprite[2][j].x = Continue_x
@sprite[2][j].y = Continue_y
@sprite[2][j].z = CHAOCHAO_Z
@sprite[3][j].opacity = 0
@sprite[3][j].x = Exit_x
@sprite[3][j].y = Exit_y
@sprite[3][j].z = CHAOCHAO_Z
end
### ↓生成动态标题画面相关图片↓ ###
@ox = 0
@oy = 0
color1 = Color.new(255, 255, 255, 255)
color2 = Color.new(255, 255, 255, 128)
# 生成雨
@rain_bitmap = Bitmap.new(7, 56)
for i in 0..6
@rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
end
# 生成风
@storm_bitmap = Bitmap.new(34, 64)
for i in 0..31
@storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
@storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
@storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
end
# 生成雪
@snow_bitmap = Bitmap.new(6, 6)
@snow_bitmap.fill_rect(0, 1, 6, 4, color2)
@snow_bitmap.fill_rect(1, 0, 4, 6, color2)
@snow_bitmap.fill_rect(1, 2, 4, 2, color1)
@snow_bitmap.fill_rect(2, 1, 2, 4, color1)
@sprites = []
# 使用自定义判别
for i in 1..40
sprite = Sprite.new
case WEATHER
when 1
sprite.bitmap = @rain_bitmap
when 2
sprite.bitmap = @storm_bitmap
when 3
sprite.bitmap = @snow_bitmap
when 4
sprite.bitmap = Bitmap.new(WEATHER_FILE)
end
sprite.z = WEATHER_Z
sprite.x = -1000
sprite.y = -1000
sprite.visible = (i <= MAXNUMBER)
sprite.blend_type = BLEND_TYPE
sprite.opacity = START_OPACITY
@sprites.push(sprite)
end
weather_update
### ↑生成动态标题画面相关图片↑ ###
### ↓スプライトの作成↓ ###
@title_name_sprite = RPG::Sprite.new
@title_name_sprite.z = TITLE_NAME_Z
@title_name_sprite.opacity = 0
bitmap = Bitmap.new(32, 32)
bitmap.font.name = FONT_NAME
bitmap.font.size = FONT_SIZE
bitmap.font.bold = FONT_BOLD
rect = bitmap.text_size(TITLE_STR)
bitmap.dispose
bitmap = nil
@title_name_sprite.bitmap = Bitmap.new(rect.width, rect.height)
@title_name_sprite.bitmap.font.name = FONT_NAME
@title_name_sprite.bitmap.font.size = FONT_SIZE
@title_name_sprite.bitmap.font.bold = FONT_BOLD
@title_name_sprite.bitmap.font.italic = FONT_ITALIC
str = TITLE_STR
if DRAW_FRAME
@title_name_sprite.bitmap.font.color = FRAME_COLOR
if defined?(@title_name_sprite.bitmap.draw_text_plan_frame)
@title_name_sprite.bitmap.draw_text_plan_frame(0, 0, rect.width, rect.height, str)
@title_name_sprite.bitmap.draw_text_plan_frame(2, 0, rect.width, rect.height, str)
@title_name_sprite.bitmap.draw_text_plan_frame(0, 2, rect.width, rect.height, str)
@title_name_sprite.bitmap.draw_text_plan_frame(2, 2, rect.width, rect.height, str)
@title_name_sprite.bitmap.font.color = STR_COLOR
@title_name_sprite.bitmap.draw_text_plan_frame(1, 1, rect.width, rect.height, str)
else
@title_name_sprite.bitmap.draw_text(0, 0, rect.width, rect.height, str)
@title_name_sprite.bitmap.draw_text(2, 0, rect.width, rect.height, str)
@title_name_sprite.bitmap.draw_text(0, 2, rect.width, rect.height, str)
@title_name_sprite.bitmap.draw_text(2, 2, rect.width, rect.height, str)
@title_name_sprite.bitmap.font.color = STR_COLOR
@title_name_sprite.bitmap.draw_text(1, 1, rect.width, rect.height, str)
end
else
@title_name_sprite.bitmap.font.color = STR_COLOR
@title_name_sprite.bitmap.draw_text(rect, str)
end
@title_name_sprite.x = LOCATE_X
@title_name_sprite.y = LOCATE_Y
if BLINK
@title_name_sprite.blink_on
end
### ↑スプライトの作成↑ ###
# 判定读取进度的有效性
# 游戏存档一个也不存在的时候也调查
# 有效為 @continue_enabled 為 true、无效為 false
@continue_enabled = false
for i in 0..3
if FileTest.exist?("Save#{i+1}.rxdata")
@continue_enabled = true
end
end
# 读取进度為有效的情况下、游标停止在读取进度上
# 无效的情况下、读取进度的文字显示為灰色
if @continue_enabled
@command_index = 1
else
@command_index = 0
@sprite[2][0].tone = Tone.new(0, 0, 0, 255)
@sprite[2][1].tone = Tone.new(0, 0, 0, 255)
end
# 演奏标题 BGM
$game_system.bgm_play($data_system.title_bgm)
# 停止演奏 ME、BGS
Audio.me_stop
Audio.bgs_stop
# 执行过渡
Graphics.transition
# 主循环
loop do
# 更新游戏画面
Graphics.update
#淡出背景图形 闪烁文字
if @sprite[0][0].opacity <= 255
@sprite[0][0].opacity += 15
@title_name_sprite.opacity += 15
end
# 更新输入讯息
Input.update
# 更新画面
update
# 如果画面被切换就中断循环
if $scene != self
break
end
end
# 装备过渡
Graphics.freeze
# 释放图片标题
for i in 0..3
for j in 0..1
unless i==0 and j==1
@sprite[j].bitmap.dispose
@sprite[j].dispose
end
end
end
# 释放天气图片
for sprite in @sprites
sprite.dispose
end
@rain_bitmap.dispose
@storm_bitmap.dispose
@snow_bitmap.dispose
# スプライトの解放
@title_name_sprite.bitmap.dispose
@title_name_sprite.dispose
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
chaochaocommandchaochao
# スプライトの更新
@title_name_sprite.update
if Input.trigger?(Input::C)
case @command_index
when 0 # 新游戏
command_new_game
when 1 # 继续
command_continue
when 2 # 退出
command_shutdown
end
end
weather_update
end
#--------------------------------------------------------------------------
# ● 命令 : 新的游戏
#--------------------------------------------------------------------------
def command_new_game
# 演奏确定 SE
Audio.se_play(Decision_SE,100,100)
# 停止 BGM
Audio.bgm_stop
# 重置测量游戏时间用的画面计数器
Graphics.frame_count = 0
# 產生各种游戏物件
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# 设定初期同伴位置
$game_party.setup_starting_members
# 设定初期位置的地图
$game_map.setup($data_system.start_map_id)
# 主角向初期位置移动
$game_player.moveto($data_system.start_x, $data_system.start_y)
# 更新主角
$game_player.refresh
# 执行地图设定的 BGM 与 BGS 的自动切换
$game_map.autoplay
# 更新地图 (执行并行事件)
$game_map.update
# 切换地图画面
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# ● 命令 : 读取进度
#--------------------------------------------------------------------------
def command_continue
# 继续无效的情况下
unless @continue_enabled
# 演奏无效 SE
Audio.se_play(Buzzer_SE,80,100)
return
end
# 演奏确定 SE
Audio.se_play(Decision_SE,100,100)
# 切换到读取画面
$scene = Scene_Load.new
end
#--------------------------------------------------------------------------
# ● 命令 : 结束游戏
#--------------------------------------------------------------------------
def command_shutdown
# 演奏确定 SE
Audio.se_play(Decision_SE,100,100)
# BGM、BGS、ME 的淡入淡出
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
# 结束游戏
$scene = nil
end
#--------------------------------------------------------------------------
# ● 刷新天气
#--------------------------------------------------------------------------
def weather_update
return if WEATHER == 0
for i in 1..MAXNUMBER
sprite = @sprites
if sprite == nil
break
end
if WEATHER == 1
sprite.x -= 2
sprite.y += 16
sprite.opacity -= 8
end
if WEATHER == 2
sprite.x -= 8
sprite.y += 16
sprite.opacity -= 12
end
if WEATHER == 3
sprite.x -= 2
sprite.y += 8
sprite.opacity -= 8
end
if WEATHER == 4
sprite.x -= WEATHER_X
sprite.y += WEATHER_Y
sprite.opacity -= WEATHER_OPACITY
end
x = sprite.x - @ox
y = sprite.y - @oy
if sprite.opacity < 32 or x < -100 or x > 750 or y < -1000 or y > 500
sprite.x = rand(RAND_X) + WIDTH + @ox
sprite.y = rand(RAND_Y) + HEIGHT + @oy
sprite.opacity = START_OPACITY
end
end
end
#--------------------------------------------------------------------------
# ● 刷新选项
#--------------------------------------------------------------------------
def chaochaocommandchaochao
if Input.trigger?(Input::UP)
@command_index -= 1
if @command_index < 0
@command_index = 2
end
Audio.se_play(Cursor_SE,80,100)
end
if Input.trigger?(Input:OWN)
@command_index += 1
if @command_index > 2
@command_index = 0
end
Audio.se_play(Cursor_SE,80,100)
end
case @command_index
when 0
if @sprite[1][0].opacity >= 0
@sprite[1][0].opacity -= TitleTable_change
end
if @sprite[1][1].opacity <= TitleTable_opacity #240
@sprite[1][1].opacity += TitleTable_change #30
end
if @sprite[2][0].opacity <= TitleTable_opacity #240
@sprite[2][0].opacity += TitleTable_change #30
end
if @sprite[2][1].opacity >= 0
@sprite[2][1].opacity -= TitleTable_change #30
end
if @sprite[3][0].opacity <= TitleTable_opacity #240
@sprite[3][0].opacity += TitleTable_change #30
end
if @sprite[3][1].opacity >= 0
@sprite[3][1].opacity -= TitleTable_change #30
end
when 1
if @sprite[1][0].opacity <= TitleTable_opacity #210
@sprite[1][0].opacity += TitleTable_change #30
end
if @sprite[1][1].opacity >= 0
@sprite[1][1].opacity -= TitleTable_change #30
end
if @sprite[2][0].opacity >= 0
@sprite[2][0].opacity -= TitleTable_change #30
end
if @sprite[2][1].opacity <= TitleTable_opacity #240
@sprite[2][1].opacity += TitleTable_change #30
end
if @sprite[3][0].opacity <= TitleTable_opacity #240
@sprite[3][0].opacity += TitleTable_change #30
end
if @sprite[3][1].opacity >= 0
@sprite[3][1].opacity -= TitleTable_change #30
end
when 2
if @sprite[1][0].opacity <= TitleTable_opacity #210
@sprite[1][0].opacity += TitleTable_change #30
end
if @sprite[1][1].opacity >= 0
@sprite[1][1].opacity -= TitleTable_change #30
end
if @sprite[2][0].opacity <= TitleTable_opacity #240
@sprite[2][0].opacity += TitleTable_change #30
end
if @sprite[2][1].opacity >= 0
@sprite[2][1].opacity -= TitleTable_change #30
end
if @sprite[3][0].opacity >= 0
@sprite[3][0].opacity -= TitleTable_change #30
end
if @sprite[3][1].opacity <= TitleTable_opacity #240
@sprite[3][1].opacity += TitleTable_change #30
end
end
end
end
复制代码
http://rpg.blue/upload_program/d/TERENCE_Project2_106515211.rar
P.S.:本工程范例是把我的工程游戏当做范例,(你又再做广告了~PIA)
俺是美工白痴 素材仅供参考,
这脚本可以说是美工达人的福音,完全可以 轻易 自由 设定发挥.....
如果有错误请告知.....THANKS!!
作者:
归心
时间:
2009-7-8 13:32
提示:
作者被禁止或删除 内容自动屏蔽
作者:
nankai9453
时间:
2009-10-5 20:33
提示:
作者被禁止或删除 内容自动屏蔽
作者:
中国
时间:
2009-11-3 21:57
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1