Project1
标题:
[RM脚本] 一些脚本 [from zenith.ifdef.jp]
[打印本页]
作者:
FinalFantasy
时间:
2006-6-2 05:19
标题:
[RM脚本] 一些脚本 [from zenith.ifdef.jp]
シーンタイトル
#==============================================================================
# タイトルデモエディター
# (シーンタイトル type A ver1.51)
# by 水夜
# http://zenith.ifdef.jp/
#------------------------------------------------------------------------------
# タイトル画面にデモ演出を加えてちょっと豪華にしてみたり(設定がめんどい)
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
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
# コンティニュー有効判定
# セーブファイルがひとつでも存在するかどうかを調べる
# 有効なら @continue_enabled を true、無効なら false にする
@continue_enabled = false
for i in 0..3
if FileTest.exist?("Save#{i+1}.rxdata")
@continue_enabled = true
end
end
# ME、BGS の演奏を停止
Audio.me_stop
Audio.bgs_stop
# ロード画面から戻ってきた際はロゴ表示とデモをスキップ(オプション導入時)
if $skip == nil
if TITLE::LOGO_APPEAR
# ロゴグラフィック作成
@logo = Sprite.new
@logo.bitmap = RPG::Cache.title(TITLE::LOGO)
@logo.ox = @logo.bitmap.width / 2
@logo.oy = @logo.bitmap.height / 2
@logo.x = 320
@logo.y = 240
@logo.opacity = 0
# タイムカウントリセット
@time = 0
# ロゴ SE を演奏
Audio.se_play("Audio/SE/" + TITLE::LOGO_SE) if TITLE::LOGO_SE != ""
# トランジション実行
Graphics.transition(0)
# ロゴ表示ループ
loop do
# ゲーム画面を更新
Graphics.update
# フレーム更新
update_logo
# ロゴ表示時間経過後ループ中断
break if @time == TITLE::LOGO_DURATION + 510 / TITLE::LOGO_FADE
end
# ロゴグラフィックを解放
@logo.bitmap.dispose
@logo.dispose
end
# タイムカウントリセット
@time = 0
# デモ背景を作成
if TITLE::DEMO_BACK != ""
@demo_back = Plane.new
@demo_back.bitmap = RPG::Cache.title(TITLE::DEMO_BACK)
end
@back_sx = TITLE::DEMO_BACK_SCR[0] / 8.0
@back_sy = TITLE::DEMO_BACK_SCR[1] / 8.0
@back_ox = 0
@back_oy = 0
# デモスプライト格納用配列を作成
@demo = Array.new
if TITLE::DEMO_BGM != ""
# デモ BGM を演奏
Audio.bgm_play("Audio/BGM/" + TITLE::DEMO_BGM)
end
# デモ表示ループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update_demo
# デモ終了またはスキップでループを中断
break if update_demo
end
# トランジション準備
Graphics.freeze
# デモグラフィックを解放
if defined? @demo_back
@demo_back.bitmap.dispose
@demo_back.dispose
end
@demo.each{|i|i.dispose}
end
# タイトルグラフィックを作成
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
# コマンドウィンドウを作成
make_command
command_appear
if !TITLE::DEMO_TITLE_BGM and $skip != nil
# タイトル BGM を演奏
$game_system.bgm_play($data_system.title_bgm)
end
$skip = nil
# トランジション実行
Graphics.transition(TITLE::DEMO_FADE)
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# トランジション準備
Graphics.freeze
# コマンドウィンドウを解放
@command_window.dispose
# タイトルグラフィックを解放
@sprite.bitmap.dispose
@sprite.dispose
end
#--------------------------------------------------------------------------
# ● コマンド作成
#--------------------------------------------------------------------------
def make_command
s1 = TITLE::NEW_GAME
s2 = TITLE::CONTINUE
s3 = TITLE::SHUT_DOWN
@command_window = Window_Command.new(192, [s1, s2, s3])
@command_window.opacity = TITLE::COMMAND_OPACITY
if TITLE::COMMAND_CDN == nil
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 288
else
@command_window.x = TITLE::COMMAND_CDN[0]
@command_window.y = TITLE::COMMAND_CDN[1]
end
@command_window.z = 500
@command_window.active = false
@command_window.visible = false
# コンティニューが有効な場合、カーソルをコンティニューに合わせる
# 無効な場合、コンティニューの文字をグレー表示にする
if @continue_enabled
@command_window.index = 1
else
@command_window.disable_item(1)
end
end
#--------------------------------------------------------------------------
# ● コマンド表示
#--------------------------------------------------------------------------
def command_appear
@command_window.active = true
@command_window.visible = true
end
#--------------------------------------------------------------------------
# ● ロゴフレーム更新
#--------------------------------------------------------------------------
def update_logo
# スプライト更新
@logo.opacity += TITLE::LOGO_FADE if @time < 255 / TITLE::LOGO_FADE
@logo.opacity -= TITLE::LOGO_FADE if @time > TITLE::LOGO_DURATION + 255 / TITLE::LOGO_FADE
# タイムカウントアップ
@time += 1
end
#--------------------------------------------------------------------------
# ● デモフレーム更新
#--------------------------------------------------------------------------
def update_demo
for i in 0...TITLE::DEMO.size
next if @time != TITLE::DEMO[i][2]
@demo.push Sprite_Demo.new(i)
end
@demo.each{|i|i.demo_update
if @time == i.end_time
i.dispose
@demo.delete(i)
end
}
if defined? @demo_back
@back_ox -= @back_sx
@back_oy -= @back_sx
@demo_back.ox = @back_ox
@demo_back.oy = @back_oy
end
# タイムカウントアップ
@time += 1
# C ボタンが押された場合
unless TITLE::DEMO_NO_SKIP and !@continue_enabled
if Input.trigger?(Input::C)
# デモスキップ SE を演奏
Audio.se_play("Audio/SE/" + TITLE::DEMO_SKIP_SE) if TITLE::DEMO_SKIP_SE != ""
return true
end
end
# デモ終了時間に達した場合
if @time == TITLE::DEMO_END
return true
end
end
end
复制代码
作者:
FinalFantasy
时间:
2006-6-2 05:19
标题:
[RM脚本] 一些脚本 [from zenith.ifdef.jp]
シーンタイトル
#==============================================================================
# タイトルデモエディター
# (シーンタイトル type A ver1.51)
# by 水夜
# http://zenith.ifdef.jp/
#------------------------------------------------------------------------------
# タイトル画面にデモ演出を加えてちょっと豪華にしてみたり(設定がめんどい)
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
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
# コンティニュー有効判定
# セーブファイルがひとつでも存在するかどうかを調べる
# 有効なら @continue_enabled を true、無効なら false にする
@continue_enabled = false
for i in 0..3
if FileTest.exist?("Save#{i+1}.rxdata")
@continue_enabled = true
end
end
# ME、BGS の演奏を停止
Audio.me_stop
Audio.bgs_stop
# ロード画面から戻ってきた際はロゴ表示とデモをスキップ(オプション導入時)
if $skip == nil
if TITLE::LOGO_APPEAR
# ロゴグラフィック作成
@logo = Sprite.new
@logo.bitmap = RPG::Cache.title(TITLE::LOGO)
@logo.ox = @logo.bitmap.width / 2
@logo.oy = @logo.bitmap.height / 2
@logo.x = 320
@logo.y = 240
@logo.opacity = 0
# タイムカウントリセット
@time = 0
# ロゴ SE を演奏
Audio.se_play("Audio/SE/" + TITLE::LOGO_SE) if TITLE::LOGO_SE != ""
# トランジション実行
Graphics.transition(0)
# ロゴ表示ループ
loop do
# ゲーム画面を更新
Graphics.update
# フレーム更新
update_logo
# ロゴ表示時間経過後ループ中断
break if @time == TITLE::LOGO_DURATION + 510 / TITLE::LOGO_FADE
end
# ロゴグラフィックを解放
@logo.bitmap.dispose
@logo.dispose
end
# タイムカウントリセット
@time = 0
# デモ背景を作成
if TITLE::DEMO_BACK != ""
@demo_back = Plane.new
@demo_back.bitmap = RPG::Cache.title(TITLE::DEMO_BACK)
end
@back_sx = TITLE::DEMO_BACK_SCR[0] / 8.0
@back_sy = TITLE::DEMO_BACK_SCR[1] / 8.0
@back_ox = 0
@back_oy = 0
# デモスプライト格納用配列を作成
@demo = Array.new
if TITLE::DEMO_BGM != ""
# デモ BGM を演奏
Audio.bgm_play("Audio/BGM/" + TITLE::DEMO_BGM)
end
# デモ表示ループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update_demo
# デモ終了またはスキップでループを中断
break if update_demo
end
# トランジション準備
Graphics.freeze
# デモグラフィックを解放
if defined? @demo_back
@demo_back.bitmap.dispose
@demo_back.dispose
end
@demo.each{|i|i.dispose}
end
# タイトルグラフィックを作成
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
# コマンドウィンドウを作成
make_command
command_appear
if !TITLE::DEMO_TITLE_BGM and $skip != nil
# タイトル BGM を演奏
$game_system.bgm_play($data_system.title_bgm)
end
$skip = nil
# トランジション実行
Graphics.transition(TITLE::DEMO_FADE)
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# トランジション準備
Graphics.freeze
# コマンドウィンドウを解放
@command_window.dispose
# タイトルグラフィックを解放
@sprite.bitmap.dispose
@sprite.dispose
end
#--------------------------------------------------------------------------
# ● コマンド作成
#--------------------------------------------------------------------------
def make_command
s1 = TITLE::NEW_GAME
s2 = TITLE::CONTINUE
s3 = TITLE::SHUT_DOWN
@command_window = Window_Command.new(192, [s1, s2, s3])
@command_window.opacity = TITLE::COMMAND_OPACITY
if TITLE::COMMAND_CDN == nil
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 288
else
@command_window.x = TITLE::COMMAND_CDN[0]
@command_window.y = TITLE::COMMAND_CDN[1]
end
@command_window.z = 500
@command_window.active = false
@command_window.visible = false
# コンティニューが有効な場合、カーソルをコンティニューに合わせる
# 無効な場合、コンティニューの文字をグレー表示にする
if @continue_enabled
@command_window.index = 1
else
@command_window.disable_item(1)
end
end
#--------------------------------------------------------------------------
# ● コマンド表示
#--------------------------------------------------------------------------
def command_appear
@command_window.active = true
@command_window.visible = true
end
#--------------------------------------------------------------------------
# ● ロゴフレーム更新
#--------------------------------------------------------------------------
def update_logo
# スプライト更新
@logo.opacity += TITLE::LOGO_FADE if @time < 255 / TITLE::LOGO_FADE
@logo.opacity -= TITLE::LOGO_FADE if @time > TITLE::LOGO_DURATION + 255 / TITLE::LOGO_FADE
# タイムカウントアップ
@time += 1
end
#--------------------------------------------------------------------------
# ● デモフレーム更新
#--------------------------------------------------------------------------
def update_demo
for i in 0...TITLE::DEMO.size
next if @time != TITLE::DEMO[i][2]
@demo.push Sprite_Demo.new(i)
end
@demo.each{|i|i.demo_update
if @time == i.end_time
i.dispose
@demo.delete(i)
end
}
if defined? @demo_back
@back_ox -= @back_sx
@back_oy -= @back_sx
@demo_back.ox = @back_ox
@demo_back.oy = @back_oy
end
# タイムカウントアップ
@time += 1
# C ボタンが押された場合
unless TITLE::DEMO_NO_SKIP and !@continue_enabled
if Input.trigger?(Input::C)
# デモスキップ SE を演奏
Audio.se_play("Audio/SE/" + TITLE::DEMO_SKIP_SE) if TITLE::DEMO_SKIP_SE != ""
return true
end
end
# デモ終了時間に達した場合
if @time == TITLE::DEMO_END
return true
end
end
end
复制代码
作者:
FinalFantasy
时间:
2006-6-2 05:21
スプライトデモ
#==============================================================================
# タイトルデモエディター
# (スプライトデモ ver1.51)
# by 水夜
# http://zenith.ifdef.jp/
#------------------------------------------------------------------------------
# タイトル画面にデモ演出を加えてちょっと豪華にしてみたり(設定がめんどい)
#==============================================================================
class Sprite_Demo < Sprite
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(index)
super()
@index = index
@text = false
begin
self.bitmap = RPG::Cache.title(TITLE::DEMO[@index][0])
# 画像ファイルが存在しない場合は文字列表示に変更
rescue
make_text
end
# 初期状態設定
self.ox = self.bitmap.width / 2
self.oy = self.bitmap.height / 2
self.x = TITLE::DEMO[@index][4]
self.y = TITLE::DEMO[@index][5]
self.z = 2
self.zoom_x = TITLE::DEMO[@index][6]
self.zoom_y = TITLE::DEMO[@index][7]
self.opacity = TITLE::DEMO[@index][8]
# 更新用数値に初期値を代入
@sx = self.x
@sy = self.y
@szx = self.zoom_x
@szy = self.zoom_y
@sop = self.opacity
@sa = 0
@duration = (TITLE::DEMO[@index][3] - TITLE::DEMO[@index][2]) * 1.0
@demo_time = 0
end
#--------------------------------------------------------------------------
# ● テキスト作成
#--------------------------------------------------------------------------
def make_text
self.bitmap = Bitmap.new(1, 1)
n = TITLE::DEMO[@index][1]
self.bitmap.font.name = TITLE::FONT[n][0]
self.bitmap.font.size = TITLE::FONT[n][1]
rect = self.bitmap.text_size(TITLE::DEMO[@index][0])
self.bitmap.dispose
self.bitmap = Bitmap.new(rect.width, rect.height)
self.bitmap.font.name = TITLE::FONT[n][0]
self.bitmap.font.size = TITLE::FONT[n][1]
# 太文字 / 斜字体
self.bitmap.font.bold = TITLE::FONT[n][4]
self.bitmap.font.italic = TITLE::FONT[n][5]
case TITLE::FONT[n][3]
# 影文字
when 1
self.bitmap.font.color = Color.new(0, 0, 0)
self.bitmap.draw_text(rect.x+2, rect.y+2, rect.width, rect.height, TITLE::DEMO[@index][0])
# 縁取り文字
when 2
self.bitmap.font.color = Color.new(0, 0, 0)
self.bitmap.draw_text(rect.x+1, rect.y+1, rect.width, rect.height, TITLE::DEMO[@index][0])
self.bitmap.draw_text(rect.x+1, rect.y-1, rect.width, rect.height, TITLE::DEMO[@index][0])
self.bitmap.draw_text(rect.x-1, rect.y+1, rect.width, rect.height, TITLE::DEMO[@index][0])
self.bitmap.draw_text(rect.x-1, rect.y-1, rect.width, rect.height, TITLE::DEMO[@index][0])
end
self.bitmap.font.color = TITLE::FONT[n][2]
self.bitmap.draw_text(rect, TITLE::DEMO[@index][0])
@text = true
end
#--------------------------------------------------------------------------
# ● 表示終了フレーム
#--------------------------------------------------------------------------
def end_time
return TITLE::DEMO[@index][3]
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def demo_update
# 数値更新
@sx += (TITLE::DEMO[@index][9] - TITLE::DEMO[@index][4]) / @duration
@sy += (TITLE::DEMO[@index][10] - TITLE::DEMO[@index][5]) / @duration
@szx += (TITLE::DEMO[@index][11] - TITLE::DEMO[@index][6]) / @duration
@szy += (TITLE::DEMO[@index][12] - TITLE::DEMO[@index][7]) / @duration
@sop += (TITLE::DEMO[@index][13] - TITLE::DEMO[@index][8]) / @duration
# 更にエフェクト分の数値更新
if !@text
case TITLE::DEMO[@index][1]
when 1
shake(0)
when 2
shake(1)
when 3
turn(0)
when 4
turn(1)
when 5
ef_flash(0)
when 6
ef_flash(1)
when 7
waver
# エフェクトを自分で追加する場合は
# when 8
# 追加エフェクト名
# ってな具合で
end
end
# 更新を反映
self.x = @sx
self.y = @sy
self.zoom_x = @szx
self.zoom_y = @szy
self.opacity = @sop
self.angle = @sa
# タイムカウントアップ
@demo_time += 1
end
#--------------------------------------------------------------------------
# 以下、各種プリセットエフェクト
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# ● エフェクト1,2 : シェイク(1:横シェイク, 2:縦シェイク)
#--------------------------------------------------------------------------
def shake(type)
case type
when 0
@sx += 1.5 if @demo_time == 0 or @demo_time%24 < 12
@sx -= 1.5 if @demo_time%24 >= 12
when 1
@sy += 1.5 if @demo_time == 0 or @demo_time%24 < 12
@sy -= 1.5 if @demo_time%24 >= 12
end
end
#--------------------------------------------------------------------------
# ● エフェクト3,4 : 回転(3:左回転, 4:右回転)
#--------------------------------------------------------------------------
def turn(type)
case type
when 0
@sa += 1
when 1
@sa -= 1
end
end
#--------------------------------------------------------------------------
# ● エフェクト5,6 : フラッシュ(5:白フラッシュ, 6:消滅フラッシュ)
#--------------------------------------------------------------------------
def ef_flash(type)
case type
when 0
self.flash(Color.new(255, 255, 255) ,20) if @demo_time == 0 or @demo_time%50 == 0
when 1
self.flash(nil, 20) if @demo_time == 0 or @demo_time%50 == 0
end
self.update
end
#--------------------------------------------------------------------------
# ● エフェクト7 : ゆらめき(っぽい)
#--------------------------------------------------------------------------
def waver
if @demo_time == 0 or @demo_time%100 < 50
@szx -= 0.00043
@szy += 0.00052
@sx -= 0.08
@sy -= 0.08
elsif @demo_time%100 >= 50
@szx += 0.00043
@szy -= 0.00052
@sx += 0.08
@sy += 0.08
end
if @demo_time == 0 or @demo_time%6 <= 3
@sa = -0.3
elsif @demo_time%6 >= 3
@sa = 0.3
end
end
end
复制代码
作者:
FinalFantasy
时间:
2006-6-2 05:22
カスタマイズモジュール
#==============================================================================
# タイトルデモエディター
# (カスタマイズモジュール ver1.51)
# by 水夜
# http://zenith.ifdef.jp/
#------------------------------------------------------------------------------
# タイトル画面にデモ演出を加えてちょっと豪華にしてみたり(設定がめんどい)
#==============================================================================
module TITLE
# ロゴを表示するかどうか
LOGO_APPEAR = true
# ロゴ画像ファイル名
LOGO = "logo1"
# ロゴ表示 SE ("" でSEを鳴らさない)
LOGO_SE = "135-Light01"
# ロゴ表示時間 (フレーム数)
LOGO_DURATION = 40
# ロゴフェード速度 (数値が大きいほど速い)
LOGO_FADE = 10
# デモ背景画像ファイル名 ("" で背景なし(黒背景))
DEMO_BACK = ""
# デモ背景スクロール速度 [sx, sy]
DEMO_BACK_SCR = [0, 0]
# デモBGM ("" でBGMなし)
DEMO_BGM = "012-Theme01"
# デモBGMのままタイトルへ移行するかどうか(typeA のみ有効)
DEMO_TITLE_BGM = false
# デモをループするかどうか(typeB のみ有効)
DEMO_LOOP = true
# ループの際に何フレーム目から再開するか(typeB のみ有効)
DEMO_LOOP_FRAME = 450
# セーブデータが存在しないときにデモスキップを禁止するかどうか
DEMO_NO_SKIP = false
# デモスキップ時SE ("" でSEを鳴らさない)
DEMO_SKIP_SE = "001-System01"
# デモ終了フレーム
DEMO_END = 580
# デモ終了時のフェード時間(typeA のみ有効)
DEMO_FADE = 40
# タイトルコマンド名
NEW_GAME = "ニューゲーム" #ニューゲーム
CONTINUE = "コンティニュー" #コンティニュー
SHUT_DOWN = "シャットダウン" #シャットダウン
# コマンドウィンドウ不透明度
COMMAND_OPACITY = 160
# コマンドウィンドウ座標[X, Y] (nilで通常の位置)
COMMAND_CDN = nil
# 各デモ画像表示詳細設定(ここが要であり、1番面倒...)
# =========================================================================
# ["画像ファイル名", エフェクトID, 表示開始フレーム, 表示終了フレーム,
# 始 X 座標, 始 Y 座標, 始 X 拡大率, 始 Y 拡大率, 始不透明度,
# 終 X 座標, 終 Y 座標, 終 X 拡大率, 終 Y 拡大率, 終不透明度]
# =========================================================================
#
# ※始 → 終 へと直線的に移動、変化します。
# ※フレームはデモ開始時が 0 です。
# ※座標は画像の中心で計測。
# ※拡大率は 1.0 が等倍。
# ※複数の画像を同時に処理できますが、
# 同時に処理する画像が多すぎると重くなることがあります。
# ※エフェクトID (Sprite_Demoにて追加可能)
# =================================================================
# 0:エフェクトなし 1:横シェイク 2:縦シェイク 3:左回転 4:右回転
# 5:白フラッシュ 6:消滅フラッシュ 7:ゆらめき(っぽいもの)
# =================================================================
# エフェクト3,4,7は重いので注意!(小さい画像向き)
#
# ※存在しないファイル名を指定した場合、そのファイル名を文字列として表示します。
# その際、エフェクトIDはフォントIDとして扱われます。
# フォントIDの設定は更に下のほうにあります。
#
DEMO = [ # ←この括弧は消さないこと!
#↓index 0 # ←index番号を振っておくと管理しやすいかも
["demo_light", 0, 0, 200,
0, 0, 4.0, 4.0, 255,
320, 240, 0.5, 0.5, 0], # ←カンマを忘れずに!
#↓index 1
["demo_light", 0, 50, 250,
640, 0, 4.0, 4.0, 255,
320, 240, 0.5, 0.5, 0], # ←カンマを忘れずに!
#↓index 2
["demo_light", 0, 100, 300,
0, 480, 4.0, 4.0, 255,
320, 240, 0.5, 0.5, 0], # ←カンマを忘れずに!
#↓index 3
["demo_light", 0, 150, 350,
640, 480, 4.0, 4.0, 255,
320, 240, 0.5, 0.5, 0], # ←カンマを忘れずに!
#↓index 4
["demo_light", 2, 350, 450,
320, 240, 0.5, 0.5, 155,
320, 240, 5.5, 5.5, 255], # ←カンマを忘れずに!
#↓index 5
["demo_light", 5, 450, 580,
320, 240, 5.5, 5.5, 255,
320, 240, 50.0, 5.5, 55], # ←カンマを忘れずに!
#↓index 6
["GAME TITLE", 0, 450, 515,
320, 240, 1.0, 1.0, 0,
320, 240, 1.0, 1.0, 255], # ←カンマを忘れずに!
#↓index 7
["GAME TITLE", 0, 515, 580,
320, 240, 1.0, 1.0, 255,
320, 240, 1.0, 1.0, 0] # ←最後のindexにはカンマをつけない!
] # ←この括弧は消さないこと!
# フォントID設定
# ===================================================================
# ["フォント名", フォントサイズ, フォント色,
# 影or縁(0:無 1:影 2:縁), 太文字(true/false), 斜字体(true/false)]
# ===================================================================
#
FONT = [ # ←この括弧は消さないこと!
#↓ID 0
["MS Pゴシック", 42, Color.new(255, 255, 255), 2, false, false],
# カンマを忘れずに! ↑
#↓ID 1
["MS P明朝", 22, Color.new(55, 255, 55), 0, true, false]
] # ←この括弧は消さないこと!
end
复制代码
作者:
FinalFantasy
时间:
2006-6-2 05:30
オプションスクリプト
1:ロード画面から戻った際はロゴとデモをスキップ
#==============================================================================
# タイトルデモエディター
# (オプション:ロード画面から戻った際はロゴとデモをスキップ ver1.00)
# by 水夜
# http://zenith.ifdef.jp/
#==============================================================================
#==============================================================================
# ■ Scene_Load
#==============================================================================
class Scene_Load < Scene_File
#--------------------------------------------------------------------------
# ● 決定時の処理
#--------------------------------------------------------------------------
alias title_on_decision on_decision
def on_decision(filename)
# ファイルが存在する場合
if FileTest.exist?(filename)
$skip = nil
end
title_on_decision(filename)
end
#--------------------------------------------------------------------------
# ● キャンセル時の処理
#--------------------------------------------------------------------------
alias title_on_cancel on_cancel
def on_cancel
$skip = true
title_on_cancel
end
end
复制代码
2:タイトルコマンド画像化
#==============================================================================
# タイトルデモエディター
# (オプション:タイトルコマンド画像化 ver1.02)
# by 水夜
# http://zenith.ifdef.jp/
#==============================================================================
module TITLE
# タイトルコマンド画像ファイル名
NEWGAME_GRA = "newgame" #ニューゲーム
CONTINUE_GRA = "continue" #コンティニュー
SHUTDOWN_GRA = "shutdown" #シャットダウン
end
class Scene_Title
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
alias option_main main
def main
option_main
if !$BTEST
@newgame.dispose
@continue.dispose
@shutdown.dispose
end
end
#--------------------------------------------------------------------------
# ● コマンド作成
#--------------------------------------------------------------------------
alias option_make_command make_command
def make_command
option_make_command
@newgame = Sprite.new
@newgame.bitmap = RPG::Cache.title(TITLE::NEWGAME_GRA)
if TITLE::COMMAND_CDN == nil
x = 320 - @newgame.bitmap.width / 2
y = 288
else
x = TITLE::COMMAND_CDN[0]
y = TITLE::COMMAND_CDN[1]
end
@newgame.x = x
@newgame.y = y
@newgame.z = 100
@newgame.opacity = 100
@newgame.visible = false
@continue = Sprite.new
@continue.bitmap = RPG::Cache.title(TITLE::CONTINUE_GRA)
@continue.x = x
@continue.y = @newgame.y + @newgame.bitmap.height + 16
@continue.z = 100
@continue.opacity = 100
@continue.visible = false
@shutdown = Sprite.new
@shutdown.bitmap = RPG::Cache.title(TITLE::SHUTDOWN_GRA)
@shutdown.x = x
@shutdown.y = @continue.y + @continue.bitmap.height + 16
@shutdown.z = 100
@shutdown.opacity = 100
@shutdown.visible = false
if @continue_enabled
@continue.opacity = 255
else
@newgame.opacity = 255
@continue.color = Color.new(50, 50, 50, 200)
end
end
#--------------------------------------------------------------------------
# ● コマンド表示
#--------------------------------------------------------------------------
alias option_command_appear command_appear
def command_appear
option_command_appear
@command_window.visible = false
@newgame.visible = true
@continue.visible = true
@shutdown.visible = true
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
alias option_update update
def update
case @command_window.index
when 0
@newgame.opacity = 255
@continue.opacity = 100
@shutdown.opacity = 100
when 1
@newgame.opacity = 100
@continue.opacity = 255
@shutdown.opacity = 100
when 2
@newgame.opacity = 100
@continue.opacity = 100
@shutdown.opacity = 255
end
option_update
end
end
复制代码
3:自動ニューゲーム
#==============================================================================
# タイトルデモエディター
# (オプション:自動ニューゲーム ver1.00)
# by 水夜
# http://zenith.ifdef.jp/
#==============================================================================
# セーブデータが存在しないときに、デモ終了後、自動的にニューゲームを開始します。
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# ● コマンド表示
#--------------------------------------------------------------------------
alias option3_command_appear command_appear
def command_appear
if !@continue_enabled
# 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
# タイトルグラフィックを解放
if defined? @sprite
@sprite.bitmap.dispose
@sprite.dispose
end
return
end
option3_command_appear
end
end
复制代码
4:デモ背景&スクロール速度変化
#==============================================================================
# タイトルデモエディター
# (オプション:デモ背景&スクロール速度変化 ver1.00)
# by 水夜
# http://zenith.ifdef.jp/
#==============================================================================
# デモ背景とそのスクロール速度をデモの途中で変更します。
#==============================================================================
module TITLE
# デモ背景変更設定
# 変更フレーム=>"ファイル名" と記述してください
BACK_CHANGE = {100=>"001-Title01", 300=>"001-Title01"}
# デモ背景スクロール速度変更設定
# 変更フレーム=>スクロール速度[sx, sy] と記述してください
SCR_CHANGE = {100=>[20, 20], 300=>[5, 5]}
end
class Scene_Title
#--------------------------------------------------------------------------
# ● デモフレーム更新
#--------------------------------------------------------------------------
alias option4_update_demo update_demo
def update_demo
if TITLE::BACK_CHANGE.include?(@time)
if !defined? @demo_back
@demo_back = Plane.new
@demo_back.z = 1
end
@demo_back.bitmap = RPG::Cache.title(TITLE::BACK_CHANGE[@time])
end
if TITLE::BACK_CHANGE.include?(@time)
@back_sx = TITLE::SCR_CHANGE[@time][0] / 8.0
@back_sy = TITLE::SCR_CHANGE[@time][1] / 8.0
end
option4_update_demo
end
end
复制代码
5:デモ BGM 変化
#==============================================================================
# タイトルデモエディター
# (オプション:デモ BGM 変化 ver1.00)
# by 水夜
# http://zenith.ifdef.jp/
#==============================================================================
# デモ BGM をデモの途中で変更します。
#==============================================================================
module TITLE
# デモ BGM 変更設定
# 変更フレーム=>"ファイル名" と記述してください
BGM_CHANGE = {100=>"001-Battle01", 300=>"002-Battle02"}
end
class Scene_Title
#--------------------------------------------------------------------------
# ● デモフレーム更新
#--------------------------------------------------------------------------
alias option5_update_demo update_demo
def update_demo
if TITLE::BGM_CHANGE.include?(@time)
Audio.bgm_play("Audio/BGM/" + TITLE::BGM_CHANGE[@time])
end
option5_update_demo
end
end
复制代码
作者:
FinalFantasy
时间:
2006-6-2 05:35
エネミー強化システム
#==============================================================================
# Zenith Script1 エネミー強化システム ver1.01
# by 水夜
# http://zenith.ifdef.jp/
#------------------------------------------------------------------------------
# エネミーの能力値をパーティーメンバーのレベルの平均値に応じて変化させます。
#==============================================================================
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
module ZENITH1
#
# 設定倍率
#
COMP_MAXHP = 2.0 #MaxHP
COMP_MAXSP = 2.0 #MaxSP
COMP_STR = 2.0 #腕力
COMP_DEX = 2.0 #器用さ
COMP_AGI = 2.0 #素早さ
COMP_INT = 2.0 #魔力
COMP_ATK = 2.0 #攻撃力
COMP_PDEF = 2.0 #物理防御
COMP_MDEF = 2.0 #魔法防御
COMP_EXP = 2.0 #EXP
COMP_GOLD = 2.0 #ゴールド
end
#------------------------------------------------------------------------------
#
# 実際の能力値は (パーティーメンバーのレベルの平均値 × 設定倍率)% 上昇します。
#
#------------------------------------------------------------------------------
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● 基本 MaxHP の取得
#--------------------------------------------------------------------------
alias base_maxhp_zenith base_maxhp
def base_maxhp
n = base_maxhp_zenith
for actor in $game_party.actors
n += n * (actor.level * ZENITH1::COMP_MAXHP / $game_party.actors.size) / 100
end
return Integer(n)
end
#--------------------------------------------------------------------------
# ● 基本 MaxSP の取得
#--------------------------------------------------------------------------
alias base_maxsp_zenith base_maxsp
def base_maxsp
n = base_maxsp_zenith
for actor in $game_party.actors
n += n * (actor.level * ZENITH1::COMP_MAXSP / $game_party.actors.size) / 100
end
return Integer(n)
end
#--------------------------------------------------------------------------
# ● 基本腕力の取得
#--------------------------------------------------------------------------
alias base_str_zenith base_str
def base_str
n = base_str_zenith
for actor in $game_party.actors
n += n * (actor.level * ZENITH1::COMP_STR / $game_party.actors.size) / 100
end
return Integer(n)
end
#--------------------------------------------------------------------------
# ● 基本器用さの取得
#--------------------------------------------------------------------------
alias base_dex_zenith base_dex
def base_dex
n = base_dex_zenith
for actor in $game_party.actors
n += n * (actor.level * ZENITH1::COMP_DEX / $game_party.actors.size) / 100
end
return Integer(n)
end
#--------------------------------------------------------------------------
# ● 基本素早さの取得
#--------------------------------------------------------------------------
alias base_agi_zenith base_agi
def base_agi
n = base_dex_zenith
for actor in $game_party.actors
n += n * (actor.level * ZENITH1::COMP_AGI / $game_party.actors.size) / 100
end
return Integer(n)
end
#--------------------------------------------------------------------------
# ● 基本魔力の取得
#--------------------------------------------------------------------------
alias base_int_zenith base_int
def base_int
n = base_int_zenith
for actor in $game_party.actors
n += n * (actor.level * ZENITH1::COMP_INT / $game_party.actors.size) / 100
end
return Integer(n)
end
#--------------------------------------------------------------------------
# ● 基本攻撃力の取得
#--------------------------------------------------------------------------
alias base_atk_zenith base_atk
def base_atk
n = base_atk_zenith
for actor in $game_party.actors
n += n * (actor.level * ZENITH1::COMP_ATK / $game_party.actors.size) / 100
end
return Integer(n)
end
#--------------------------------------------------------------------------
# ● 基本物理防御の取得
#--------------------------------------------------------------------------
alias base_pdef_zenith base_pdef
def base_pdef
n = base_pdef_zenith
for actor in $game_party.actors
n += n * (actor.level * ZENITH1::COMP_PDEF / $game_party.actors.size) / 100
end
return Integer(n)
end
#--------------------------------------------------------------------------
# ● 基本魔法防御の取得
#--------------------------------------------------------------------------
alias base_mdef_zenith base_mdef
def base_mdef
n = base_mdef_zenith
for actor in $game_party.actors
n += n * (actor.level * ZENITH1::COMP_MDEF / $game_party.actors.size) / 100
end
return Integer(n)
end
#--------------------------------------------------------------------------
# ● EXP の取得
#--------------------------------------------------------------------------
alias exp_zenith exp
def exp
n = exp_zenith
for actor in $game_party.actors
n += n * (actor.level * ZENITH1::COMP_EXP / $game_party.actors.size) / 100
end
return Integer(n)
end
#--------------------------------------------------------------------------
# ● ゴールドの取得
#--------------------------------------------------------------------------
alias gold_zenith gold
def gold
n = gold_zenith
for actor in $game_party.actors
n += n * (actor.level * ZENITH1::COMP_GOLD / $game_party.actors.size) / 100
end
return Integer(n)
end
end
复制代码
作者:
FinalFantasy
时间:
2006-6-2 05:38
バトルバックスクロール
#==============================================================================
# Zenith Script2 バトルバックスクロール ver1.10
# by 水夜
# http://zenith.ifdef.jp/
#------------------------------------------------------------------------------
# 戦闘中の背景をフォグのスクロールと同じ要領でスクロールさせます。
#==============================================================================
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
module ZENITH2
#
# バトルバックのスクロール速度を指定する変数のID
#
BATTLEBACK_SX_VARIABLE_ID = 1 #X方向のスクロール速度を指定する変数のID
BATTLEBACK_SY_VARIABLE_ID = 2 #Y方向のスクロール速度を指定する変数のID
end
#------------------------------------------------------------------------------
#
# イベントコマンドで、指定した変数に任意のスクロール速度を入れてください。
# スクロール速度の設定は、フォグのsx,syと同様です。
#
#------------------------------------------------------------------------------
#==============================================================================
# ■ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
# ビューポートを作成
@viewport1 = Viewport.new(0, 0, 640, 320)
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport4 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 101
@viewport3.z = 200
@viewport4.z = 5000
# バトルバックスプライトを作成
@battleback_sprite = Plane.new(@viewport1)
# エネミースプライトを作成
@enemy_sprites = []
for enemy in $game_troop.enemies.reverse
@enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
end
# アクタースプライトを作成
@actor_sprites = []
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
# 天候を作成
@weather = RPG::Weather.new(@viewport1)
# ピクチャスプライトを作成
@picture_sprites = []
for i in 51..100
@picture_sprites.push(Sprite_Picture.new(@viewport3,
$game_screen.pictures[i]))
end
# タイマースプライトを作成
@timer_sprite = Sprite_Timer.new
# フレーム更新
update
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# アクタースプライトの内容を更新 (アクターの入れ替えに対応)
@actor_sprites[0].battler = $game_party.actors[0]
@actor_sprites[1].battler = $game_party.actors[1]
@actor_sprites[2].battler = $game_party.actors[2]
@actor_sprites[3].battler = $game_party.actors[3]
# バトルバックのファイル名が現在のものと違う場合
if @battleback_name != $game_temp.battleback_name
@battleback_name = $game_temp.battleback_name
if @battleback_sprite.bitmap != nil
@battleback_sprite.bitmap.dispose
end
@battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
end
# バトルバックのスクロール処理
unless $game_variables[ZENITH2::BATTLEBACK_SX_VARIABLE_ID] == 0 and $game_variables[ZENITH2::BATTLEBACK_SY_VARIABLE_ID] == 0
@battleback_sprite.ox -= $game_variables[ZENITH2::BATTLEBACK_SX_VARIABLE_ID]
@battleback_sprite.oy -= $game_variables[ZENITH2::BATTLEBACK_SY_VARIABLE_ID]
else
@battleback_sprite.ox = 0
@battleback_sprite.oy = 0
end
# バトラースプライトを更新
for sprite in @enemy_sprites + @actor_sprites
sprite.update
end
# 天候グラフィックを更新
@weather.type = $game_screen.weather_type
@weather.max = $game_screen.weather_max
@weather.update
# ピクチャスプライトを更新
for sprite in @picture_sprites
sprite.update
end
# タイマースプライトを更新
@timer_sprite.update
# 画面の色調とシェイク位置を設定
@viewport1.tone = $game_screen.tone
@viewport1.ox = $game_screen.shake
# 画面のフラッシュ色を設定
@viewport4.color = $game_screen.flash_color
# ビューポートを更新
@viewport1.update
@viewport2.update
@viewport4.update
end
end
复制代码
作者:
FinalFantasy
时间:
2006-6-2 05:39
アクションネームプレート
#==============================================================================
# Zenith RGSS3 アクションネームプレート ver1.11
# by 水夜
# http://zenith.ifdef.jp/
# 参考&部分引用 XMS.スクリプトシェルフ http://xms.rdy.jp/
# 桜雅 在土 様 作「ターゲットネームプレート」
#------------------------------------------------------------------------------
# 戦闘中のスキル名アイテム名などのアクション名を小さいウィンドウで表示
#==============================================================================
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
module ZENITH3
# アクションネームウィンドウの不透明度
ACTION_OPACITY = 160
# アクターのアクション表示位置(0:頭上 1:足下)
ACTOR_POSITION = 0
# エネミーのアクション表示位置(0:頭上 1:足下)
ENEMY_POSITION = 0
# アクターのアクション表示X座標調整
ACTOR_PLUS_X = 0
# アクターのアクション表示Y座標調整
ACTOR_PLUS_Y = 0
# エネミーのアクション表示X座標調整
ENEMY_PLUS_X = 0
# エネミーのアクション表示Y座標調整
ENEMY_PLUS_Y = 0
end
class Window_ActionName < Window_Help
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super
self.width = 160
self.height = 64
self.contents = Bitmap.new(width - 32, height - 32)
@base_window = Window_Base.new(x, y+16, width, 32)
@base_window.opacity = ZENITH3::ACTION_OPACITY
self.opacity = 0
self.visible = false
self.z = 600
end
#--------------------------------------------------------------------------
# ● テキスト設定
#--------------------------------------------------------------------------
def set_text(text, align = 0)
# テキストとアラインメントの少なくとも一方が前回と違っている場合
if text != @text or align != @align
# テキストを再描画
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
@text = text
@align = align
@actor = nil
end
self.visible = true
end
#--------------------------------------------------------------------------
# ● X 座標
#--------------------------------------------------------------------------
def x=(n)
super
@base_window.x = n unless @base_window.nil?
end
#--------------------------------------------------------------------------
# ● Y 座標
#--------------------------------------------------------------------------
def y=(n)
super
@base_window.y = n + 16 unless @base_window.nil?
end
#--------------------------------------------------------------------------
# ● Z 座標
#--------------------------------------------------------------------------
def z=(n)
super
@base_window.z = n unless @base_window.nil?
end
#--------------------------------------------------------------------------
# ● 可視状態
#--------------------------------------------------------------------------
def visible=(b)
super
@base_window.visible = b unless @base_window.nil?
end
#--------------------------------------------------------------------------
# ● 開放
#--------------------------------------------------------------------------
def dispose
@base_window.dispose
super
end
end
#==============================================================================
# --- アクター バトラーグラフィックのサイズ取得機能 ---
#==============================================================================
class Game_Actor < Game_Battler
def battler_rect
bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
return Rect.new(self.screen_x, self.screen_y, bitmap.width, bitmap.height)
end
end
#==============================================================================
# --- エネミー バトラーグラフィックのサイズ取得機能 ---
#==============================================================================
class Game_Enemy < Game_Battler
def battler_rect
bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
return Rect.new(self.screen_x, self.screen_y, bitmap.width, bitmap.height)
end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
alias zenith3_main main
def main
# ウィンドウを作成
@actionname_window = Window_ActionName.new
# 呼び戻す
zenith3_main
# ウィンドウを開放
@actionname_window.dispose
end
#--------------------------------------------------------------------------
# ● 基本アクション 結果作成
#--------------------------------------------------------------------------
alias zenith3_make_basic_action_result make_basic_action_result
def make_basic_action_result
# 呼び戻す
zenith3_make_basic_action_result
# ヘルプウィンドウを隠す
@help_window.visible = false
# 防御の場合
if @active_battler.current_action.basic == 1
# アクションネームの位置取得
if @active_battler.is_a?(Game_Actor)
actor = @active_battler
rect = actor.battler_rect
@actionname_window.x = [ 0 + rect.x - @actionname_window.width/2, 4].max + ZENITH3::ACTOR_PLUS_X
case ZENITH3::ACTOR_POSITION
when 0
@actionname_window.y = [-48 + rect.y - rect.height, 4].max + ZENITH3::ACTOR_PLUS_Y
when 1
@actionname_window.y = [rect.y, 432].min + ZENITH3::ACTOR_PLUS_Y
end
else
enemy = @active_battler
rect = enemy.battler_rect
@actionname_window.x = [ 0 + rect.x - @actionname_window.width/2, 4].max + ZENITH3::ENEMY_PLUS_X
case ZENITH3::ENEMY_POSITION
when 0
@actionname_window.y = [-48 + rect.y - rect.height, 4].max + ZENITH3::ENEMY_PLUS_Y
when 1
@actionname_window.y = [rect.y, 432].min + ZENITH3::ENEMY_PLUS_Y
end
end
# アクションネームウィンドウに "防御" を表示
@actionname_window.set_text($data_system.words.guard, 1)
return
end
# 逃げるの場合
if @active_battler.is_a?(Game_Enemy) and
@active_battler.current_action.basic == 2
# アクションネームの位置取得
enemy = @active_battler
rect = enemy.battler_rect
@actionname_window.x = [ 0 + rect.x - @actionname_window.width/2, 4].max + ZENITH3::ENEMY_PLUS_X
case ZENITH3::ENEMY_POSITION
when 0
@actionname_window.y = [-48 + rect.y - rect.height, 4].max + ZENITH3::ENEMY_PLUS_Y
when 1
@actionname_window.y = [rect.y, 432].min + ZENITH3::ENEMY_PLUS_Y
end
# アクションネームウィンドウに "逃げる" を表示
@actionname_window.set_text("逃げる", 1)
# 逃げる
@active_battler.escape
return
end
end
#--------------------------------------------------------------------------
# ● スキルアクション 結果作成
#--------------------------------------------------------------------------
alias zenith3_make_skill_action_result make_skill_action_result
def make_skill_action_result
# 呼び戻す
zenith3_make_skill_action_result
# ヘルプウィンドウを隠す
@help_window.visible = false
# アクションネームの位置取得
if @active_battler.is_a?(Game_Actor)
actor = @active_battler
rect = actor.battler_rect
@actionname_window.x = [ 0 + rect.x - @actionname_window.width/2, 4].max + ZENITH3::ACTOR_PLUS_X
case ZENITH3::ACTOR_POSITION
when 0
@actionname_window.y = [-48 + rect.y - rect.height, 4].max + ZENITH3::ACTOR_PLUS_Y
when 1
@actionname_window.y = [rect.y, 432].min + ZENITH3::ACTOR_PLUS_Y
end
else
enemy = @active_battler
rect = enemy.battler_rect
@actionname_window.x = [ 0 + rect.x - @actionname_window.width/2, 4].max + ZENITH3::ENEMY_PLUS_X
case ZENITH3::ENEMY_POSITION
when 0
@actionname_window.y = [-48 + rect.y - rect.height, 4].max + ZENITH3::ENEMY_PLUS_Y
when 1
@actionname_window.y = [rect.y, 432].min + ZENITH3::ENEMY_PLUS_Y
end
end
# アクションネームウィンドウにスキル名を表示
@actionname_window.set_text(@skill.name, 1)
end
#--------------------------------------------------------------------------
# ● アイテムアクション 結果作成
#--------------------------------------------------------------------------
alias zenith3_make_item_action_result make_item_action_result
def make_item_action_result
# 呼び戻す
zenith3_make_item_action_result
# ヘルプウィンドウを隠す
@help_window.visible = false
# アクションネームの位置取得
actor = @active_battler
rect = actor.battler_rect
@actionname_window.x = [ 0 + rect.x - @actionname_window.width/2, 4].max + ZENITH3::ACTOR_PLUS_X
case ZENITH3::ACTOR_POSITION
when 0
@actionname_window.y = [-48 + rect.y - rect.height, 4].max + ZENITH3::ACTOR_PLUS_Y
when 1
@actionname_window.y = [rect.y, 432].min + ZENITH3::ACTOR_PLUS_Y
end
# アクションネームウィンドウにアイテム名を表示
@actionname_window.set_text(@item.name, 1)
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
#--------------------------------------------------------------------------
alias zenith3_update_phase4_step5 update_phase4_step5
def update_phase4_step5
# アクションネームウィンドウを隠す
@actionname_window.visible = false
# 呼び戻す
zenith3_update_phase4_step5
end
end
复制代码
作者:
FinalFantasy
时间:
2006-6-2 05:42
エネミー残勢力表示
#==============================================================================
# Zenith RGSS4 エネミー残勢力表示 ver1.00
# by 水夜
# http://zenith.ifdef.jp/
#------------------------------------------------------------------------------
# トループに残存するエネミーの残りHPの合計をゲージで表示
#==============================================================================
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
module ZENITH4
# エネミー残勢力の表示・非表示を切り替えるスイッチのID(スイッチON時に非表示)
E_SWITCH = 1
# 残勢力ゲージの長さ
EG_WIDTH = 160
# 残勢力ゲージの色
EG_COLOR = Color.new(255, 0, 0, 255)
# 表示する文字列
EW_NAME = "エネミー残勢力"
# 表示する文字列の色
EW_COLOR = Color.new(255, 255, 255, 255)
end
#==============================================================================
# ■ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias zenith4_initialize initialize
def initialize
# エネミー勢力スプライト作成
@enemy_force = Sprite.new
@enemy_force.bitmap = Bitmap.new(8 + ZENITH4::EG_WIDTH, 34)
@enemy_force.x = 640 - (12 + ZENITH4::EG_WIDTH)
@enemy_force.y = 62
@enemy_force.z = 50
# 呼び戻す
zenith4_initialize
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
alias zenith4_dispose dispose
def dispose
# エネミー勢力スプライト解放
@enemy_force.bitmap.dispose
@enemy_force.dispose
# 呼び戻す
zenith4_dispose
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
alias zenith4_refresh refresh
def refresh
# 呼び戻す
zenith4_refresh
if $game_switches[ZENITH4::E_SWITCH] == false
@enemy_force.visible = true
@enemy_force.bitmap.clear
x = 4
y = 4
width = ZENITH4::EG_WIDTH
# 文字列を描画
@enemy_force.bitmap.font.size = 18
@enemy_force.bitmap.font.color = Color.new(0, 0, 0, 255)
@enemy_force.bitmap.draw_text(x+1, y+1, width, 22, ZENITH4::EW_NAME)
@enemy_force.bitmap.draw_text(x-1, y-1, width, 22, ZENITH4::EW_NAME)
@enemy_force.bitmap.draw_text(x+1, y-1, width, 22, ZENITH4::EW_NAME)
@enemy_force.bitmap.draw_text(x-1, y+1, width, 22, ZENITH4::EW_NAME)
@enemy_force.bitmap.font.color = ZENITH4::EW_COLOR
@enemy_force.bitmap.draw_text(x, y, width, 22, ZENITH4::EW_NAME)
# エネミー勢力を描画
@item_max = $game_troop.enemies.size
enemy_mh = 0
enemy_h = 0
for i in 0...@item_max
enemy = $game_troop.enemies[i]
enemy_mh += enemy.maxhp
enemy_h += enemy.hp
end
@enemy_force.bitmap.fill_rect(x-1, y+24, width+2,5, Color.new(0, 0, 0, 150))
w = width * enemy_h / enemy_mh
@enemy_force.bitmap.fill_rect(x+width-w, y+25, w,3, ZENITH4::EG_COLOR)
else
@enemy_force.visible = false
end
end
end
复制代码
作者:
FinalFantasy
时间:
2006-6-2 05:45
アクター別ポジション + 攻撃力・物理防御補正
#==============================================================================
# Zenith RGSS5 アクター別ポジション + 攻撃力・物理防御補正 ver1.00
# by 水夜
# http://zenith.ifdef.jp/
#------------------------------------------------------------------------------
# アクター別にポジションを設定し、攻撃力・物理防御を補正します。
#==============================================================================
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
module ZENITH5
#
# アクターの初期ポジション
# アクターID=>ポジション と記述してください。
# ポジションは 0→前衛 1→中衛 2→後衛 に対応しています。
# 3や4にも設定可。4だと敵の攻撃を受けません。(全体攻撃を除く)
#
ACTOR_BP = { 1=>0, 2=>1, 3=>0, 4=>2, 5=>2}
#
# 上記で設定しなかったアクターの初期ポジション
ACTOR_BP.default = 1
#
# 前衛・後衛のバトラー表示位置修正(中衛を基準に指定した値だけ前後にずれる)
BATTLER_Y = 20 # 単位:ピクセル
#
# ポジション無視武器の属性ID
N_POS_EL_ID = 20
end
class Game_Actor < Game_Battler
def pos_mg
case self.battle_position
#
# ポジションごとの攻撃力と物理防御の補正倍率
# 攻撃力はn倍、物理防御は1/n倍になります。(戦闘中のみ)
#
when 0 # 前衛
return 1.5
when 1 # 中衛
return 1
when 2 # 後衛
return 0.75
else # その他
return 0.5
end
end
end
#==============================================================================
# □ カスタマイズポイント終了
#==============================================================================
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :battle_position # ポジション
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# actor_id : アクター ID
#--------------------------------------------------------------------------
alias zenith5_initialize initialize
def initialize(actor_id)
@battle_position = ZENITH5::ACTOR_BP[actor_id]
zenith5_initialize(actor_id)
end
#--------------------------------------------------------------------------
# ● バトル画面 Y 座標の取得
#--------------------------------------------------------------------------
def screen_y
return 464 + (self.battle_position - 1) * ZENITH5::BATTLER_Y
end
end
#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
# ● 対象アクターのランダムな決定
# hp0 : HP 0 のアクターに限る
#--------------------------------------------------------------------------
def random_target_actor(hp0 = false)
# ルーレットを初期化
roulette = []
# ループ
for actor in @actors
# 条件に該当する場合
if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
# アクターのクラスの [位置] を取得
position = actor.battle_position
# 前衛のとき n = 4、中衛のとき n = 3、後衛のとき n = 2
n = 4 - position
# ルーレットにアクターを n 回追加
n.times do
roulette.push(actor)
end
end
end
# ルーレットのサイズが 0 の場合
if roulette.size == 0
return nil
end
# ルーレットを回し、アクターを決定
return roulette[rand(roulette.size)]
end
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 攻撃力の取得
#--------------------------------------------------------------------------
alias zenith5_atk atk
def atk
n = zenith5_atk
# 戦闘中のみ値を補正
if self.is_a?(Game_Actor) and $game_temp.in_battle
weapon = $data_weapons[self.weapon_id]
# ポジション無視武器の場合は補正しない
n *= self.pos_mg unless weapon.element_set.include?(ZENITH5::N_POS_EL_ID)
end
return Integer(n)
end
#--------------------------------------------------------------------------
# ● 物理防御の取得
#--------------------------------------------------------------------------
alias zenith5_pdef pdef
def pdef
n = zenith5_pdef
# 戦闘中のみ値を補正
if self.is_a?(Game_Actor) and $game_temp.in_battle
n /= self.pos_mg
end
return Integer(n)
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1