FF X-2 Menü V2.2, Anzeigeproblem
Hallo!
Ich habe das Sricpt in mein Spiel eingebaut und es läuft auch problemlos. Ich habe es ein wenig angepasst, das habe ich mit meinen bescheidenen Kenntnissen noch geschafft. Aber ein Problem habe ich und ich kann es leider auch nicht selbst lösen.
Und zwar baut das Menü ja auf Pictures auf. Allerdings zeigt er mir im Skill-Bereich zusätzlich die Textbox an. In allen anderen Bereichen funktioniert die Anzeige richtig. Zur Erklärung im Anhang ein Bild des Problems.
Das Sricpt findet sich z.B. hier: http://www.rpg-studio.de:8181/scriptdb/d…-Men%C3%BC.html
Ich kann leider keine spezifische Code-Stelle posten, da ich nicht eingrenzen kann, wo das Problem liegen könnte....
Danke schonmal!
Gruß,
Saiyuki
Ich habe das Sricpt in mein Spiel eingebaut und es läuft auch problemlos. Ich habe es ein wenig angepasst, das habe ich mit meinen bescheidenen Kenntnissen noch geschafft. Aber ein Problem habe ich und ich kann es leider auch nicht selbst lösen.
Und zwar baut das Menü ja auf Pictures auf. Allerdings zeigt er mir im Skill-Bereich zusätzlich die Textbox an. In allen anderen Bereichen funktioniert die Anzeige richtig. Zur Erklärung im Anhang ein Bild des Problems.
Das Sricpt findet sich z.B. hier: http://www.rpg-studio.de:8181/scriptdb/d…-Men%C3%BC.html
Ich kann leider keine spezifische Code-Stelle posten, da ich nicht eingrenzen kann, wo das Problem liegen könnte....
Danke schonmal!
Gruß,
Saiyuki
Das Skript funktioniert zu 100% fehlerfrei. Daher könnte dir jemand nur helfen, wenn du auch deinen modifizierten Code postest. Wenn du dir nicht sicher bist, was du geändert hast, würde ich dir raten dein Menü mit dem alten Quellcode komplett zu überschreiben, damit deine Änderungen rückgängig gemacht werden. Solche Anzeigeprobleme treten bei diesem Menü nämlich normalerweise nicht auf^^.
Wenn du am Originalcode des Menüs nichts geändert haben solltest, könnte womöglich auch ein ganz anderes Skript reinpfuschen. Das ist aber so ohne irgendwas nicht festzustellen.
~ Gruß Kenai
Wenn du am Originalcode des Menüs nichts geändert haben solltest, könnte womöglich auch ein ganz anderes Skript reinpfuschen. Das ist aber so ohne irgendwas nicht festzustellen.
~ Gruß Kenai
-
NeuigkeitenSämtliche Projekte sind erst mal pausiert. Weitere Informationen findet ihr hier. (Stand: 21.12.2012). -
Cursal Engine (Jump and Run Engine)Mit Hilfe der Cursal Engine (RCE) ist es möglich auf ziemlich einfache Weise „Jump and Run“-Projekte im RPG Maker XP zu entwerfen. Das Anlegen basiert auf Installations- und Updatepaketen sowie reinen Archiven für fortgeschrittene Benutzer. Die Version 2 (CE2) befindet sich bereits in Entwicklung. Interessiert? Dann lade dir die neuste Version herunter ;3! -
AvatarDiese kleinen, netten und knuffigen Vögelchen nennen sich Hamachou und dürften einigen aus Skies of Arcadia bekannt sein. Ich habe diese Bilder weder selbst gezeichnet noch modelliert. Dennoch finde ich sie so knuffig, dass man sie einfach lieb haben muss und ich hoffe euch geht's genau so^^". Diese Grafiken sind wirklich rar und ich bin stolz sie im Web gefunden zu haben.
Man ist das lange her ^^
Mittlerweile bin ich sogar so weit durchgestiegen, dass ich alle Probleme gelöst habe, die noch mit dem Menü zusammenhingen. Außer diesem hier... Außer diesem Script nutze ich nur noch das CTB von Charlie Fleed. Vielleicht kann mir ja doch jemand helfen. Meine Änderungen im Script sind übrigens nur Übersetzungen, am Script an sich habe ich nichts verändert.
Ich gehe mal davon aus, dass das Problem irgendwo hier liegt:
edit:
Mit etwas Hirn anstrengen habe ich es letzlich sogar selbst geschafft
Das Menü hat sich mit dem IBC-Support vom CTB gebissen. Problem ist also gelöst!
/Edit 9.9.11:
Ich mal wieder
Speichern kann man in meinem Spiel nur an Speicherpunkten. Der Menüpunkt "Speichern" ist also relativ unsinnig. Ich möchte diesen nun gerne austauschen. Man soll, wenn man diesen Menüpunkt anklickt, auf eine Art Sphärobrett teleportiert werden. Der Button stellt kein Problem dar, ich weiß nur nicht, an welcher Stelle ich was genau im Script ändern muss. Der Teleport wird von einem Common-Event ausgelöst (siehe auch hier: [Universal] Sphärobrett-Tutorial (Final Fantasy X) - oder auch Skill-Tree-Tutorial - Maker - RPG Studio - Make your World real ), nur wie bringe ich nun das liebe Script dazu, anstatt speichern zu wollen, dieses Event auszulösen?
Vielen Dank schonmal!
Ganz vergessen: Das hier ist übrigens das Script: FFx-2 Menü
/Edit 26.1.2012
Wenn jemand Zeit und Lust hat, sich mit dem kleinen Problem auseinander zu setzen, wäre ich sehr dankbar
Alleine kriege ich es diesmal nicht hin.
Mittlerweile bin ich sogar so weit durchgestiegen, dass ich alle Probleme gelöst habe, die noch mit dem Menü zusammenhingen. Außer diesem hier... Außer diesem Script nutze ich nur noch das CTB von Charlie Fleed. Vielleicht kann mir ja doch jemand helfen. Meine Änderungen im Script sind übrigens nur Übersetzungen, am Script an sich habe ich nichts verändert.
Ich gehe mal davon aus, dass das Problem irgendwo hier liegt:
#==============================================================================
# ■ Scene_Skill
#------------------------------------------------------------------------------
# スキル画面の処理を行うクラスです。
#==============================================================================
class Scene_Skill
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# actor_index : アクターインデックス
#--------------------------------------------------------------------------
def initialize(actor_index = 0, equip_index = 0)
@actor_index = actor_index
end
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
def main
#==============================================
# Setting up all the images
@background = Sprite.new
@background.bitmap = RPG::Cache.picture("background")
@background.x = 0
@background.y = 0
#================help window image=====================
@help_picture = Sprite.new
@help_picture.bitmap = RPG::Cache.picture("helpwindow12")
@help_picture.x = 0
@help_picture.y = - 52
#==============Command image=====================
@command2 = Sprite.new
@command2.bitmap = RPG::Cache.picture("cmscommand2")
@command2.x = 15
@command2.y = 40
@command2.z = 100
#==============shadow================================
@commands2 = Sprite.new
@commands2.bitmap = RPG::Cache.picture("cmscommandshadow")
@commands2.x = 20
@commands2.y = 45
@commands2.z = 1
@commands2.opacity = 155
#==============status window==========================
@status_window1 = Sprite.new
@status_window1.bitmap = RPG::Cache.picture("status window 1")
@status_window1.x = 693
@status_window1.y = 45
@status_window1.z = 100
#============shadow================================
@status_windowshadow1 = Sprite.new
@status_windowshadow1.bitmap = RPG::Cache.picture("blackwindow2")
@status_windowshadow1.x = 697
@status_windowshadow1.y = 50
@status_windowshadow1.z = 1
@status_windowshadow1.opacity = 155
#==================skill window pic====================
@skill_picture = Sprite.new
@skill_picture.bitmap = RPG::Cache.picture("skillwindow")
@skill_picture.x = 7
@skill_picture.y = 540
@skill_picture.z = 2
#================skill shadow pic=====================
@skill_shadow = Sprite.new
@skill_shadow.bitmap = RPG::Cache.picture("skillshadow")
@skill_shadow.x = 14
@skill_shadow.y = 545
@skill_shadow.z = 1
@skill_shadow.opacity = 155
#===============target window========================
@target_picture = Sprite.new
@target_picture.bitmap = RPG::Cache.picture("targetwindow")
@target_picture.z = 998
@target_picture.visible = false
# アクターを取得
@actor = $game_party.actors[@actor_index]
# ヘルプウィンドウ、ステータスウィンドウ、スキルウィンドウを作成
@help_window = Window_Menuhelp.new
@help_window.opacity = 0
@status_window = Window_SkillStatus.new(@actor)
@skill_window = Window_Menuskill.new(@actor)
@skill_window.opacity = 0
# ヘルプウィンドウを関連付け
@skill_window.help_window = @help_window
# ターゲットウィンドウを作成 (不可視・非アクティブに設定)
@target_window = Window_Target.new
@target_window.z = 999
@target_window.opacity = 0
@target_window.visible = false
@target_window.active = false
dispose = [@help_window, @status_window, @skill_window, @target_window, @background, @help_picture]
dispose2 = [@commands2, @command2, @status_window1, @status_windowshadow1, @skill_picture, @skill_shadow]
# トランジション実行
Graphics.transition
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# トランジション準備
Graphics.freeze
# ウィンドウを解放
dispose.each {|x| x.dispose if !x.disposed? }
dispose2.each {|y| y.dispose if !y.disposed? }
end
#--------------------------------------------------------------------------
def delay(seconds)
for i in 0...(seconds * 1)
sleep 0.01
Graphics.update
end
end
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# enter animation
if @help_picture.y < - 4
@help_picture.y += 24
end
if @help_window.y < - 7
@help_window.y += 35
end
if @command2.y < 60
@command2.y += 20
end
if @commands2.y < 65
@commands2.y += 20
end
if @skill_shadow.y > 145
@skill_shadow.y -= 50
end
if @skill_picture.y > 140
@skill_picture.y -= 50
end
if @skill_window.y > 131
@skill_window.y -= 50
end
if @status_window1.x > 293
@status_window1.x -= 100
end
if @status_window.x > 230
@status_window.x -= 100
end
if @status_windowshadow1.x > 297
@status_windowshadow1.x -= 100
end
# ウィンドウを更新
@help_window.update
@status_window.update
@skill_window.update
@target_window.update
# スキルウィンドウがアクティブの場合: update_skill を呼ぶ
if @skill_window.active
update_skill
return
end
# ターゲットウィンドウがアクティブの場合: update_target を呼ぶ
if @target_window.active
update_target
return
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (スキルウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_skill
if Input.trigger?(Input::B)
# exit animation
loop do
if @skill_shadow.y < 480
@skill_shadow.y += 50
end
if @skill_picture.y < 480
@skill_picture.y += 50
end
if @skill_window.y < 480
@skill_window.y += 50
end
if @help_picture.y > - 50
@help_picture.y -= 30
end
if @help_window.y > - 64
@help_window.y -= 30
end
if @command2.x > 15
@command2.x -= 100
end
if @command2.y > 40
@command2.y -= 10
end
if @commands2.x > 20
@commands2.x -= 100
end
if @commands2.y > 45
@commands2.y -= 10
end
if @status_window1.x < 640
@status_window1.x += 100
end
if @status_window.x < 640
@status_window.x += 100
end
if @status_windowshadow1.x < 640
@status_windowshadow1.x += 100
end
delay(0.2)
if @skill_picture.y >= 480
break
end
end
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# メニュー画面に切り替え
$scene = Scene_Menu.new(1)
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# スキルウィンドウで現在選択されているデータを取得
@skill = @skill_window.skill
# 使用できない場合
if @skill == nil or not @actor.skill_can_use?(@skill.id)
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# 効果範囲が味方の場合
if @skill.scope >= 3
# ターゲットウィンドウをアクティブ化
@skill_window.active = false
@target_window.x = (@skill_window.index + 1) % 2 * 304
@target_picture.x = (@skill_window.index + 1) % 2 * 304
@target_window.visible = true
@target_window.active = true
@target_picture.visible = true
# 効果範囲 (単体/全体) に応じてカーソル位置を設定
if @skill.scope == 4 || @skill.scope == 6
@target_window.index = -1
elsif @skill.scope == 7
@target_window.index = @actor_index - 10
else
@target_window.index = 0
end
# 効果範囲が味方以外の場合
else
# コモンイベント ID が有効の場合
if @skill.common_event_id > 0
# コモンイベント呼び出し予約
$game_temp.common_event_id = @skill.common_event_id
# スキルの使用時 SE を演奏
$game_system.se_play(@skill.menu_se)
# SP 消費
@actor.sp -= @skill.sp_cost
# 各ウィンドウの内容を再作成
@status_window.refresh
@skill_window.refresh
@target_window.refresh
# マップ画面に切り替え
$scene = Scene_Map.new
return
end
end
return
end
# R ボタンが押された場合
if Input.trigger?(Input::R)
# カーソル SE を演奏
$game_system.se_play($data_system.cursor_se)
# 次のアクターへ
@actor_index += 1
@actor_index %= $game_party.actors.size
# 別のスキル画面に切り替え
$scene = Scene_Skill.new(@actor_index)
return
end
# L ボタンが押された場合
if Input.trigger?(Input::L)
# カーソル SE を演奏
$game_system.se_play($data_system.cursor_se)
# 前のアクターへ
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
# 別のスキル画面に切り替え
$scene = Scene_Skill.new(@actor_index)
return
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (ターゲットウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_target
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# ターゲットウィンドウを消去
@skill_window.active = true
@target_window.visible = false
@target_window.active = false
@target_picture.visible = false
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# SP 切れなどで使用できなくなった場合
unless @actor.skill_can_use?(@skill.id)
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# ターゲットが全体の場合
if @target_window.index == -1
# パーティ全体にスキルの使用効果を適用
used = false
for i in $game_party.actors
used |= i.skill_effect(@actor, @skill)
end
end
# ターゲットが使用者の場合
if @target_window.index <= -2
# ターゲットのアクターにスキルの使用効果を適用
target = $game_party.actors[@target_window.index + 10]
used = target.skill_effect(@actor, @skill)
end
# ターゲットが単体の場合
if @target_window.index >= 0
# ターゲットのアクターにスキルの使用効果を適用
target = $game_party.actors[@target_window.index]
used = target.skill_effect(@actor, @skill)
end
# スキルを使った場合
if used
# スキルの使用時 SE を演奏
$game_system.se_play(@skill.menu_se)
# SP 消費
@actor.sp -= @skill.sp_cost
# 各ウィンドウの内容を再作成
@status_window.refresh
@skill_window.refresh
@target_window.refresh
# 全滅の場合
if $game_party.all_dead?
# ゲームオーバー画面に切り替え
$scene = Scene_Gameover.new
return
end
# コモンイベント ID が有効の場合
if @skill.common_event_id > 0
# コモンイベント呼び出し予約
$game_temp.common_event_id = @skill.common_event_id
# マップ画面に切り替え
$scene = Scene_Map.new
return
end
end
# スキルを使わなかった場合
unless used
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
end
# ■ Scene_Skill
#------------------------------------------------------------------------------
# スキル画面の処理を行うクラスです。
#==============================================================================
class Scene_Skill
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# actor_index : アクターインデックス
#--------------------------------------------------------------------------
def initialize(actor_index = 0, equip_index = 0)
@actor_index = actor_index
end
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
def main
#==============================================
# Setting up all the images
@background = Sprite.new
@background.bitmap = RPG::Cache.picture("background")
@background.x = 0
@background.y = 0
#================help window image=====================
@help_picture = Sprite.new
@help_picture.bitmap = RPG::Cache.picture("helpwindow12")
@help_picture.x = 0
@help_picture.y = - 52
#==============Command image=====================
@command2 = Sprite.new
@command2.bitmap = RPG::Cache.picture("cmscommand2")
@command2.x = 15
@command2.y = 40
@command2.z = 100
#==============shadow================================
@commands2 = Sprite.new
@commands2.bitmap = RPG::Cache.picture("cmscommandshadow")
@commands2.x = 20
@commands2.y = 45
@commands2.z = 1
@commands2.opacity = 155
#==============status window==========================
@status_window1 = Sprite.new
@status_window1.bitmap = RPG::Cache.picture("status window 1")
@status_window1.x = 693
@status_window1.y = 45
@status_window1.z = 100
#============shadow================================
@status_windowshadow1 = Sprite.new
@status_windowshadow1.bitmap = RPG::Cache.picture("blackwindow2")
@status_windowshadow1.x = 697
@status_windowshadow1.y = 50
@status_windowshadow1.z = 1
@status_windowshadow1.opacity = 155
#==================skill window pic====================
@skill_picture = Sprite.new
@skill_picture.bitmap = RPG::Cache.picture("skillwindow")
@skill_picture.x = 7
@skill_picture.y = 540
@skill_picture.z = 2
#================skill shadow pic=====================
@skill_shadow = Sprite.new
@skill_shadow.bitmap = RPG::Cache.picture("skillshadow")
@skill_shadow.x = 14
@skill_shadow.y = 545
@skill_shadow.z = 1
@skill_shadow.opacity = 155
#===============target window========================
@target_picture = Sprite.new
@target_picture.bitmap = RPG::Cache.picture("targetwindow")
@target_picture.z = 998
@target_picture.visible = false
# アクターを取得
@actor = $game_party.actors[@actor_index]
# ヘルプウィンドウ、ステータスウィンドウ、スキルウィンドウを作成
@help_window = Window_Menuhelp.new
@help_window.opacity = 0
@status_window = Window_SkillStatus.new(@actor)
@skill_window = Window_Menuskill.new(@actor)
@skill_window.opacity = 0
# ヘルプウィンドウを関連付け
@skill_window.help_window = @help_window
# ターゲットウィンドウを作成 (不可視・非アクティブに設定)
@target_window = Window_Target.new
@target_window.z = 999
@target_window.opacity = 0
@target_window.visible = false
@target_window.active = false
dispose = [@help_window, @status_window, @skill_window, @target_window, @background, @help_picture]
dispose2 = [@commands2, @command2, @status_window1, @status_windowshadow1, @skill_picture, @skill_shadow]
# トランジション実行
Graphics.transition
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# トランジション準備
Graphics.freeze
# ウィンドウを解放
dispose.each {|x| x.dispose if !x.disposed? }
dispose2.each {|y| y.dispose if !y.disposed? }
end
#--------------------------------------------------------------------------
def delay(seconds)
for i in 0...(seconds * 1)
sleep 0.01
Graphics.update
end
end
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# enter animation
if @help_picture.y < - 4
@help_picture.y += 24
end
if @help_window.y < - 7
@help_window.y += 35
end
if @command2.y < 60
@command2.y += 20
end
if @commands2.y < 65
@commands2.y += 20
end
if @skill_shadow.y > 145
@skill_shadow.y -= 50
end
if @skill_picture.y > 140
@skill_picture.y -= 50
end
if @skill_window.y > 131
@skill_window.y -= 50
end
if @status_window1.x > 293
@status_window1.x -= 100
end
if @status_window.x > 230
@status_window.x -= 100
end
if @status_windowshadow1.x > 297
@status_windowshadow1.x -= 100
end
# ウィンドウを更新
@help_window.update
@status_window.update
@skill_window.update
@target_window.update
# スキルウィンドウがアクティブの場合: update_skill を呼ぶ
if @skill_window.active
update_skill
return
end
# ターゲットウィンドウがアクティブの場合: update_target を呼ぶ
if @target_window.active
update_target
return
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (スキルウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_skill
if Input.trigger?(Input::B)
# exit animation
loop do
if @skill_shadow.y < 480
@skill_shadow.y += 50
end
if @skill_picture.y < 480
@skill_picture.y += 50
end
if @skill_window.y < 480
@skill_window.y += 50
end
if @help_picture.y > - 50
@help_picture.y -= 30
end
if @help_window.y > - 64
@help_window.y -= 30
end
if @command2.x > 15
@command2.x -= 100
end
if @command2.y > 40
@command2.y -= 10
end
if @commands2.x > 20
@commands2.x -= 100
end
if @commands2.y > 45
@commands2.y -= 10
end
if @status_window1.x < 640
@status_window1.x += 100
end
if @status_window.x < 640
@status_window.x += 100
end
if @status_windowshadow1.x < 640
@status_windowshadow1.x += 100
end
delay(0.2)
if @skill_picture.y >= 480
break
end
end
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# メニュー画面に切り替え
$scene = Scene_Menu.new(1)
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# スキルウィンドウで現在選択されているデータを取得
@skill = @skill_window.skill
# 使用できない場合
if @skill == nil or not @actor.skill_can_use?(@skill.id)
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# 効果範囲が味方の場合
if @skill.scope >= 3
# ターゲットウィンドウをアクティブ化
@skill_window.active = false
@target_window.x = (@skill_window.index + 1) % 2 * 304
@target_picture.x = (@skill_window.index + 1) % 2 * 304
@target_window.visible = true
@target_window.active = true
@target_picture.visible = true
# 効果範囲 (単体/全体) に応じてカーソル位置を設定
if @skill.scope == 4 || @skill.scope == 6
@target_window.index = -1
elsif @skill.scope == 7
@target_window.index = @actor_index - 10
else
@target_window.index = 0
end
# 効果範囲が味方以外の場合
else
# コモンイベント ID が有効の場合
if @skill.common_event_id > 0
# コモンイベント呼び出し予約
$game_temp.common_event_id = @skill.common_event_id
# スキルの使用時 SE を演奏
$game_system.se_play(@skill.menu_se)
# SP 消費
@actor.sp -= @skill.sp_cost
# 各ウィンドウの内容を再作成
@status_window.refresh
@skill_window.refresh
@target_window.refresh
# マップ画面に切り替え
$scene = Scene_Map.new
return
end
end
return
end
# R ボタンが押された場合
if Input.trigger?(Input::R)
# カーソル SE を演奏
$game_system.se_play($data_system.cursor_se)
# 次のアクターへ
@actor_index += 1
@actor_index %= $game_party.actors.size
# 別のスキル画面に切り替え
$scene = Scene_Skill.new(@actor_index)
return
end
# L ボタンが押された場合
if Input.trigger?(Input::L)
# カーソル SE を演奏
$game_system.se_play($data_system.cursor_se)
# 前のアクターへ
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
# 別のスキル画面に切り替え
$scene = Scene_Skill.new(@actor_index)
return
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (ターゲットウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_target
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# ターゲットウィンドウを消去
@skill_window.active = true
@target_window.visible = false
@target_window.active = false
@target_picture.visible = false
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# SP 切れなどで使用できなくなった場合
unless @actor.skill_can_use?(@skill.id)
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# ターゲットが全体の場合
if @target_window.index == -1
# パーティ全体にスキルの使用効果を適用
used = false
for i in $game_party.actors
used |= i.skill_effect(@actor, @skill)
end
end
# ターゲットが使用者の場合
if @target_window.index <= -2
# ターゲットのアクターにスキルの使用効果を適用
target = $game_party.actors[@target_window.index + 10]
used = target.skill_effect(@actor, @skill)
end
# ターゲットが単体の場合
if @target_window.index >= 0
# ターゲットのアクターにスキルの使用効果を適用
target = $game_party.actors[@target_window.index]
used = target.skill_effect(@actor, @skill)
end
# スキルを使った場合
if used
# スキルの使用時 SE を演奏
$game_system.se_play(@skill.menu_se)
# SP 消費
@actor.sp -= @skill.sp_cost
# 各ウィンドウの内容を再作成
@status_window.refresh
@skill_window.refresh
@target_window.refresh
# 全滅の場合
if $game_party.all_dead?
# ゲームオーバー画面に切り替え
$scene = Scene_Gameover.new
return
end
# コモンイベント ID が有効の場合
if @skill.common_event_id > 0
# コモンイベント呼び出し予約
$game_temp.common_event_id = @skill.common_event_id
# マップ画面に切り替え
$scene = Scene_Map.new
return
end
end
# スキルを使わなかった場合
unless used
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
end
zum Lesen den Text mit der Maus markieren
edit:
Mit etwas Hirn anstrengen habe ich es letzlich sogar selbst geschafft

Das Menü hat sich mit dem IBC-Support vom CTB gebissen. Problem ist also gelöst!
/Edit 9.9.11:
Ich mal wieder

Speichern kann man in meinem Spiel nur an Speicherpunkten. Der Menüpunkt "Speichern" ist also relativ unsinnig. Ich möchte diesen nun gerne austauschen. Man soll, wenn man diesen Menüpunkt anklickt, auf eine Art Sphärobrett teleportiert werden. Der Button stellt kein Problem dar, ich weiß nur nicht, an welcher Stelle ich was genau im Script ändern muss. Der Teleport wird von einem Common-Event ausgelöst (siehe auch hier: [Universal] Sphärobrett-Tutorial (Final Fantasy X) - oder auch Skill-Tree-Tutorial - Maker - RPG Studio - Make your World real ), nur wie bringe ich nun das liebe Script dazu, anstatt speichern zu wollen, dieses Event auszulösen?
Vielen Dank schonmal!

Ganz vergessen: Das hier ist übrigens das Script: FFx-2 Menü
/Edit 26.1.2012
Wenn jemand Zeit und Lust hat, sich mit dem kleinen Problem auseinander zu setzen, wäre ich sehr dankbar
Alleine kriege ich es diesmal nicht hin. Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Saiyuki« (26. Januar 2012, 21:19) aus folgendem Grund: Frage noch aktuell
Okay. An sich ist es relativ einfach zu lösen... mit ein paar Änderungen am Originalskript. Sämtliche Änderungen beziehen sich auf dein genanntes Menüskript (ffx-2 Custom Menu System):
- Suche Zeile 2402 bis 2415und überschreibe in Zeile 2415 den Eintrag
Ruby Quellcode
2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415
when 4 # セーブ # セーブ禁止の場合 if $game_system.save_disabled # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return end #===================== @command[5].z = 999 exit # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # セーブ画面に切り替え $scene = Scene_Save.new
mit
Ruby Quellcode
2415
$scene = Scene_Save.new
Ruby Quellcode
2415 2416
$game_temp.common_event_id = SKILL_TREE_COMMON_EVENT_ID $scene = Scene_Map.new
- Suche Zeile 1 bis 12:und füge in Zeile 11 zwischen
Ruby Quellcode
1 2 3 4 5 6 7 8 9 10 11 12
#========================================================= # This is the ffx-2 Custom Menu System by Catchm. # version 2, revised, shortened code # It is a long script and includes many alterations and images attached to it. # These images can be edited, and the script can be edited, you are free to do so # credit to Catchm is the only thing needed. # this is to be copied into a new script in the script editor # # Have fun with the script! #========================================================= class Bitmap
und
Ruby Quellcode
10
#=========================================================folgenden Code ein
Ruby Quellcode
12
class Bitmap, so dass es ungefähr so aussieht
Ruby Quellcode
11 12 13
class Scene_Menu SKILL_TREE_COMMON_EVENT_ID = 1 end
Ruby Quellcode
10 11 12 13 14 15 16 17
#========================================================= class Scene_Menu # ID des Common Events, welches ausgeführt werden soll. SKILL_TREE_COMMON_EVENT_ID = 1 end class Bitmap
- Ändere die ID nach deinem Wunsch ab und fertig^^.
-
NeuigkeitenSämtliche Projekte sind erst mal pausiert. Weitere Informationen findet ihr hier. (Stand: 21.12.2012). -
Cursal Engine (Jump and Run Engine)Mit Hilfe der Cursal Engine (RCE) ist es möglich auf ziemlich einfache Weise „Jump and Run“-Projekte im RPG Maker XP zu entwerfen. Das Anlegen basiert auf Installations- und Updatepaketen sowie reinen Archiven für fortgeschrittene Benutzer. Die Version 2 (CE2) befindet sich bereits in Entwicklung. Interessiert? Dann lade dir die neuste Version herunter ;3! -
AvatarDiese kleinen, netten und knuffigen Vögelchen nennen sich Hamachou und dürften einigen aus Skies of Arcadia bekannt sein. Ich habe diese Bilder weder selbst gezeichnet noch modelliert. Dennoch finde ich sie so knuffig, dass man sie einfach lieb haben muss und ich hoffe euch geht's genau so^^". Diese Grafiken sind wirklich rar und ich bin stolz sie im Web gefunden zu haben.
Super, vielen vielen Dank
Getestet und es funktioniert!
Eine Kleinigkeit wäre da noch:
Wenn ich im Menü nun das Brett auswähle wird das Menü beendet, es erscheint kurz wieder der Spielbildschirm mit der Map, wo man gerade steht und erst eine halbe Sekunde später wird man auf das Brett teleportiert. Lässt sich das irgendwie einfach im Sricpt lösen? Also das man direkt vom Menü aus auf dem Brett landet. Falls nicht, halb so schlimm, dann ist das eben so.
Getestet und es funktioniert!
Eine Kleinigkeit wäre da noch:
Wenn ich im Menü nun das Brett auswähle wird das Menü beendet, es erscheint kurz wieder der Spielbildschirm mit der Map, wo man gerade steht und erst eine halbe Sekunde später wird man auf das Brett teleportiert. Lässt sich das irgendwie einfach im Sricpt lösen? Also das man direkt vom Menü aus auf dem Brett landet. Falls nicht, halb so schlimm, dann ist das eben so.
Wenn du kein Common Event brauchst, könnte man auch den Teleport per Ruby lösen. Also müssten wird das Script so ändern (der Vollständigkeit halber solltest du allerdings die vorherigen Änderungen wieder entfernen):
- Suche Zeile 2402 bis 2415und überschreibe in Zeile 2415 den Eintrag
Ruby Quellcode
2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415
when 4 # セーブ # セーブ禁止の場合 if $game_system.save_disabled # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return end #===================== @command[5].z = 999 exit # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # セーブ画面に切り替え $scene = Scene_Save.new
mit
Ruby Quellcode
2415
$scene = Scene_Save.new
Ruby Quellcode
2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443
if SKTREE_MAP_ID_VAR != 0 $game_variables[SKTREE_MAP_ID_VAR] = $game_map.map_id end if SKTREE_PLAYER_X_VAR != 0 $game_variables[SKTREE_PLAYER_X_VAR] = $game_player.x end if SKTREE_PLAYER_Y_VAR != 0 $game_variables[SKTREE_PLAYER_Y_VAR] = $game_player.y end if SKTREE_PLAYER_DIRECTION_VAR != 0 $game_variables[SKTREE_PLAYER_DIRECTION_VAR] = $game_player.direction end $game_temp.player_transferring = false $game_map.setup(SKTREE_MAP_ID) $game_player.moveto(SKTREE_PLAYER_X, SKTREE_PLAYER_Y) case SKTREE_PLAYER_DIRECTION when 2 # down $game_player.turn_down when 4 # left $game_player.turn_left when 6 # right $game_player.turn_right when 8 # up $game_player.turn_up end $game_player.straighten $game_map.update $game_map.autoplay $scene = Scene_Map.new
- Suche Zeile 1 bis 12:und füge in Zeile 11 zwischen
Ruby Quellcode
1 2 3 4 5 6 7 8 9 10 11 12
#========================================================= # This is the ffx-2 Custom Menu System by Catchm. # version 2, revised, shortened code # It is a long script and includes many alterations and images attached to it. # These images can be edited, and the script can be edited, you are free to do so # credit to Catchm is the only thing needed. # this is to be copied into a new script in the script editor # # Have fun with the script! #========================================================= class Bitmap
und
Ruby Quellcode
10
#=========================================================folgenden Code ein
Ruby Quellcode
12
class Bitmap, so dass es ungefähr so aussieht
Ruby Quellcode
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
class Scene_Menu # ID der Karte für Teleport SKTREE_MAP_ID = 1 # X-Koordinate des Spielers für Teleport SKTREE_PLAYER_X = 0 # Y-Koordinate des Spielers für Teleport SKTREE_PLAYER_Y = 0 # Blickrichtung des Spielers für Teleport (0..unverändert, 2..runter, # 4..links, 6..rechts, 8..hoch) SKTREE_PLAYER_DIRECTION = 0 # ID der Variable zum Speichern der Karten-ID SKTREE_MAP_ID_VAR = 0 # ID der Variable zum Speichern der X-Koordinate des Spielers SKTREE_PLAYER_X_VAR = 0 # ID der Variable zum Speichern der Y-Koordinate des Spielers SKTREE_PLAYER_Y_VAR = 0 # ID der Variable zum Speichern der Blickrichtung des Spielers SKTREE_PLAYER_DIRECTION_VAR = 0 end
Ruby Quellcode
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
#========================================================= class Scene_Menu # ID der Karte für Teleport SKTREE_MAP_ID = 1 # X-Koordinate des Spielers für Teleport SKTREE_PLAYER_X = 0 # Y-Koordinate des Spielers für Teleport SKTREE_PLAYER_Y = 0 # Blickrichtung des Spielers für Teleport (0..unverändert, 2..runter, # 4..links, 6..rechts, 8..hoch) SKTREE_PLAYER_DIRECTION = 0 # ID der Variable zum Speichern der Karten-ID SKTREE_MAP_ID_VAR = 0 # ID der Variable zum Speichern der X-Koordinate des Spielers SKTREE_PLAYER_X_VAR = 0 # ID der Variable zum Speichern der Y-Koordinate des Spielers SKTREE_PLAYER_Y_VAR = 0 # ID der Variable zum Speichern der Blickrichtung des Spielers SKTREE_PLAYER_DIRECTION_VAR = 0 end class Bitmap
- Ändere die ID, Koordinaten und Blickrichtung nach deinem Wunsch ab. Wenn du die Positionsdaten zusätzlich in Variablen speichern willst, musst du ab diesem Teileinfach die IDs entsprechend eintragen.
Ruby Quellcode
1 2 3 4 5 6 7 8
# ID der Variable zum Speichern der Karten-ID SKTREE_MAP_ID_VAR = 0 # ID der Variable zum Speichern der X-Koordinate des Spielers SKTREE_PLAYER_X_VAR = 0 # ID der Variable zum Speichern der Y-Koordinate des Spielers SKTREE_PLAYER_Y_VAR = 0 # ID der Variable zum Speichern der Blickrichtung des Spielers SKTREE_PLAYER_DIRECTION_VAR = 0
-
NeuigkeitenSämtliche Projekte sind erst mal pausiert. Weitere Informationen findet ihr hier. (Stand: 21.12.2012). -
Cursal Engine (Jump and Run Engine)Mit Hilfe der Cursal Engine (RCE) ist es möglich auf ziemlich einfache Weise „Jump and Run“-Projekte im RPG Maker XP zu entwerfen. Das Anlegen basiert auf Installations- und Updatepaketen sowie reinen Archiven für fortgeschrittene Benutzer. Die Version 2 (CE2) befindet sich bereits in Entwicklung. Interessiert? Dann lade dir die neuste Version herunter ;3! -
AvatarDiese kleinen, netten und knuffigen Vögelchen nennen sich Hamachou und dürften einigen aus Skies of Arcadia bekannt sein. Ich habe diese Bilder weder selbst gezeichnet noch modelliert. Dennoch finde ich sie so knuffig, dass man sie einfach lieb haben muss und ich hoffe euch geht's genau so^^". Diese Grafiken sind wirklich rar und ich bin stolz sie im Web gefunden zu haben.
Klasse, funktioniert 
Ich habe jetzt den Teil am Anfang so geändert, dass er mit meinen gewählten Variablen übereinstimmt.
Das einzige, was noch nicht funktioniert, ist der Rückteleport zur Map. Ich kann zwar ein Event erstellen, was einen beim Anklicken zurück zur Spielmap teleportiert, aber wenn man, während man auf dem Brett ist, im Menü nochmals das Brett auswählt, werden die gespeicherten ID's ja überschieben, womit man auf dem Brett feststeckt.
Hättest du dafür noch eine Idee? Eventuell, dass ein erneutes Auswählen des Brettes, während man sich darauf befindet, einen Rücktransport auslöst?

Ich habe jetzt den Teil am Anfang so geändert, dass er mit meinen gewählten Variablen übereinstimmt.
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#========================================================= class Scene_Menu # ID der Karte für Teleport SKTREE_MAP_ID = 24 # X-Koordinate des Spielers für Teleport SKTREE_PLAYER_X = 18 # Y-Koordinate des Spielers für Teleport SKTREE_PLAYER_Y = 3 # Blickrichtung des Spielers für Teleport (0..unverändert, 2..runter, # 4..links, 6..rechts, 8..hoch) SKTREE_PLAYER_DIRECTION = 0 # ID der Variable zum Speichern der Karten-ID SKTREE_MAP_ID_VAR = 20 # ID der Variable zum Speichern der X-Koordinate des Spielers SKTREE_PLAYER_X_VAR = 21 # ID der Variable zum Speichern der Y-Koordinate des Spielers SKTREE_PLAYER_Y_VAR = 22 # ID der Variable zum Speichern der Blickrichtung des Spielers SKTREE_PLAYER_DIRECTION_VAR = 0 end class Bitmap |
Das einzige, was noch nicht funktioniert, ist der Rückteleport zur Map. Ich kann zwar ein Event erstellen, was einen beim Anklicken zurück zur Spielmap teleportiert, aber wenn man, während man auf dem Brett ist, im Menü nochmals das Brett auswählt, werden die gespeicherten ID's ja überschieben, womit man auf dem Brett feststeckt.
Hättest du dafür noch eine Idee? Eventuell, dass ein erneutes Auswählen des Brettes, während man sich darauf befindet, einen Rücktransport auslöst?
Dann ändere es wie folgt ab =):
- Suche Zeile 2402 bis 2415und überschreibe in Zeile 2415 den Eintrag
Ruby Quellcode
2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415
when 4 # セーブ # セーブ禁止の場合 if $game_system.save_disabled # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return end #===================== @command[5].z = 999 exit # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # セーブ画面に切り替え $scene = Scene_Save.new
mit
Ruby Quellcode
2415
$scene = Scene_Save.new
Ruby Quellcode
2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460
if SKTREE_MAP_ID_VAR != 0 and $game_map.map_id == SKTREE_MAP_ID player_new_map_id = $game_variables[SKTREE_MAP_ID_VAR] if SKTREE_PLAYER_X_VAR != 0 player_new_x = $game_variables[SKTREE_PLAYER_X_VAR] end if SKTREE_PLAYER_Y_VAR != 0 player_new_y = $game_variables[SKTREE_PLAYER_Y_VAR] end if SKTREE_PLAYER_DIRECTION_VAR != 0 player_new_direction = $game_variables[SKTREE_PLAYER_DIRECTION_VAR] end else if SKTREE_MAP_ID_VAR != 0 $game_variables[SKTREE_MAP_ID_VAR] = $game_map.map_id end if SKTREE_PLAYER_X_VAR != 0 $game_variables[SKTREE_PLAYER_X_VAR] = $game_player.x end if SKTREE_PLAYER_Y_VAR != 0 $game_variables[SKTREE_PLAYER_Y_VAR] = $game_player.y end if SKTREE_PLAYER_DIRECTION_VAR != 0 $game_variables[SKTREE_PLAYER_DIRECTION_VAR] = $game_player.direction end player_new_map_id = SKTREE_MAP_ID player_new_x = SKTREE_PLAYER_X player_new_y = SKTREE_PLAYER_Y player_new_direction = SKTREE_PLAYER_DIRECTION end $game_temp.player_transferring = false $game_map.setup(player_new_map_id) $game_player.moveto(player_new_x, player_new_y) case player_new_direction when 2 $game_player.turn_down when 4 $game_player.turn_left when 6 $game_player.turn_right when 8 $game_player.turn_up end $game_player.straighten $game_map.update $game_map.autoplay $scene = Scene_Map.new
zum Lesen den Text mit der Maus markieren - Der Rest kann so bleiben... alles wie gehabt =3.
-
NeuigkeitenSämtliche Projekte sind erst mal pausiert. Weitere Informationen findet ihr hier. (Stand: 21.12.2012). -
Cursal Engine (Jump and Run Engine)Mit Hilfe der Cursal Engine (RCE) ist es möglich auf ziemlich einfache Weise „Jump and Run“-Projekte im RPG Maker XP zu entwerfen. Das Anlegen basiert auf Installations- und Updatepaketen sowie reinen Archiven für fortgeschrittene Benutzer. Die Version 2 (CE2) befindet sich bereits in Entwicklung. Interessiert? Dann lade dir die neuste Version herunter ;3! -
AvatarDiese kleinen, netten und knuffigen Vögelchen nennen sich Hamachou und dürften einigen aus Skies of Arcadia bekannt sein. Ich habe diese Bilder weder selbst gezeichnet noch modelliert. Dennoch finde ich sie so knuffig, dass man sie einfach lieb haben muss und ich hoffe euch geht's genau so^^". Diese Grafiken sind wirklich rar und ich bin stolz sie im Web gefunden zu haben.
Ähnliche Themen
-
Maker-Talk »-
Mein Spiel laggt ohne ende, aber warum?
(5. August 2010, 19:05)
-
Skript-Anfragen »-
Scene_Menu Lehrer gesucht
(5. August 2010, 22:27)
-
RGSS 1 Probleme & Talk »-
Speichern
(13. Juli 2010, 14:15)
-
RGSS 1 Probleme & Talk »-
Auswahlmenu Beispiel...
(20. Juni 2010, 19:22)
-
RGSS 1 Probleme & Talk »-
Questlog 3.0 - Anzeigeproblem
(6. November 2007, 13:15)

Du bist klasse, alleine hätte ich das nie geschafft!