Archiv verlassen und diese Seite im Standarddesign anzeigen : VX ACE [RGSS3] Titelbildschirm der sich bei Spielfortschritt verändert[Gelöst]
Mr.Räbbit
28.01.2015, 15:08
Hallo Leute, Räbbit mal wieder, mit einer Frage, die wohl eher was für fortgeschrittene Skripter sein dürfte.
Und zwar:
Gibt es eine Möglichkeit, in Kombination mit dem Skippen des Standard-Titelscreens (per Script), diesen Dauerhaft zu ändern (Andere Map/ andere Events), wenn man im Spiel fortschreitet. (Einen gewissen Punkt im Spiel erreicht/ Ein bestimmtes Save im Spielordner liegt)
Als Laie stelle ich mir das so vor, dass es vllt. eine Möglichkeit gibt, auf der ersten Map (Titelbildschirm wird übersprungen, nicht zu vergessen) eine Skript abfrage gibt, die testet ob ein gewisser (globaler?) Schalter umgelegt, oder eine Variable gesetzt wurde.
Dann noch ein normaler Cond. Branch auf welchen Titelscreen gesprungen werden soll und so weiter.
Ich hoffe es ist verständlich was ich meine. Mache mir auch nicht allzu viele Hoffnungen, dass so etwas möglich ist, aber vielleicht weiß es ja einer der Cracks unter euch besser?
Freue mich wie immer auf eure Antworten! : )
Das ist durchaus möglich, sogar recht einfach. Am besten wäre aber, du postest mal dein Skip-Script oder verlinkst es zumindest, das macht die Sache leichter. :)
Mr.Räbbit
28.01.2015, 15:43
Wenn das tatsächlich gehen sollte, wäre das mehr als genial : D
Bisher kenne ich mich mit der Skriptsprache zu wenig aus, um selber größere Experimente diesbezüglich durchzuführen.
Geschweige denn solche, die mehr oder weniger über die Anwendung selbst hinausgehen.
Das genutzte Skript:
#==============================================================================
# Skip Title Screen JV Master Script
#------------------------------------------------------------------------------
# Skip Title Screen, going to first game map.
#==============================================================================
#==============================================================================
# Scene Title
#==============================================================================
class Scene_Title < Scene_Base
def start
SceneManager.clear
Graphics.freeze
DataManager.setup_new_game
$game_map.autoplay
SceneManager.goto(Scene_Map)
end
def terminate
SceneManager.snapshot_for_background
Graphics.fadeout(Graphics.frame_rate)
end
end
#==============================================================================
Okay, probier mal ob das tut was du willst (bzw. ob es überhaupt tut, ich hab den Maker nicht hier :D). Gehört in einen neuen Slot über Main, das alte Script kannst du löschen.
Das Script vergleicht zwischen allen existierenden Spielständen den Wert der Variable, die man bei TITLE_CHECK_VAR angeben kann und wählt dann den größten.
Bei TITLE_LIST kannst du angeben, welche Map je nach Wert als "Titel" dienen soll und optional auch die Startkoordinaten, wenn die fehlen, wird oben links 0,0 genommen. Wenn das Script keinen Eintrag findet, nimmt es die Map und Koordinaten aus dem Editor.
class Scene_Title <Scene
TITLE_CHECK_VAR = 1 # Die ID der Variable, die verglichen werden soll
# Eine Liste, die möglichen Variablenwerten eine Map zuweist
# Das Muster ist:
# Wert der Variable => [Map-ID, optionale X-Koordinate, optionale Y-Koordinate]
TITLE_LIST = {
1 => [2, 3, 4], #\
17 => [32, 15, 8], #- Das sind nur Beispiele, die man löschen kann, falls das unklar ist xD
42 => [5] #/
}
def start
SceneManager.clear
Graphics.freeze
setup_new_game
$game_map.autoplay
SceneManager.goto(Scene_Map)
end
def terminate
SceneManager.snapshot_for_background
Graphics.fadeout(Graphics.frame_rate)
end
##
# Hier passiert eigentlich die ganze Zauberei
# Es werden alle Speicherstände der Reihe nach durchgegangen
# und der größte Wert unserer Variablen ermittelt
def setup_new_game
vars = []
DataManager.all_savefiles do |file|
vars << DataManager.load_game_vars(file)[TITLE_CHECK_VAR]
end
max = vars.max
if TITLE_LIST.has_key?(max)
DataManager.setup_new_game(*TITLE_LIST[max])
else
# Wenn wir keinen gültigen Eintrag für den Wert in unserer Liste haben, nehmen wir die Werte aus der Database
DataManager.setup_new_game($data_system.start_map_id, $data_system.start_x, $data_system.start_y)
end
end
end
module DataManager
##
# Wir überschreiben die Originalmethode, sodass wir jetzt selbst angeben können,
# von welcher Map und welchen Koordinaten wir das Spiel starten wollen.
def self.setup_new_game(map_id, x=0, y=0)
create_game_objects
$game_party.setup_starting_members
$game_map.setup(map_id)
$game_player.moveto(x, y)
$game_player.refresh
Graphics.frame_count = 0
end
##
# In Spielständen steht ein Haufen Kram. Uns interessieren nur die Variablen
def self.load_game_vars(filename)
contents = File.open(filename, "rb") do |file|
Marshal.load(file) # Header, uninteressant für uns
Marshal.load(file)
end
return contents[:variables]
rescue
return Game_Variables.new
end
##
# Gibt uns alle existierenden Spielstände
def self.all_savefiles
if block_given?
Dir.glob('Save*.rvdata2') do |file|
yield file
end
else
Dir.glob('Save*.rvdata2')
end
end
end
Mr.Räbbit
28.01.2015, 18:47
Hey, das ging ja schnell!
Ich habe mal versucht es einzurichten und es scheint gut zu funktionieren! : D
Habe es mit 2 Bildschirmen getestet, da gab es bis jetzt 0 Probleme = Hammer! :A
Ein dickes, dickes Dankeschön an dich! Astreine Arbeit!
Wie stehst du zu dem Script? Darf ich das mit Erwähnung deines Namens auch an andere Bedürftige weitergeben? Und wie stehts mit der kommerziellen Nutzung? *hust* ^^
Wie stehst du zu dem Script? Darf ich das mit Erwähnung deines Namens auch an andere Bedürftige weitergeben? Und wie stehts mit der kommerziellen Nutzung? *hust* ^^
Klar, mach damit was du willst, das ganze war weit weniger aufwendig, als du vermutlich denkst.
Papp das hier von mir aus oben drüber und gut is.
####
# Extended Skip Title by Cepanks
# Released under the WTFPL; see http://www.wtfpl.net/txt/copying/ for details.
####
Mr.Räbbit
28.01.2015, 20:08
Diese Lizenz kannte ich ja noch gar nicht xD
Vielen Dank, Alter! ^^
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.