Jungs, ihr macht mich fertig.
Das is genau das Probelm, dass ich meine. Der Geheimslot kommt wieder, wenn du den Save in dem du ihn freigespielt hast lädst.
Ich werds mir morgen nochmal ankuken und versuchen die Bugs zu fixen....
Zitat
wenn ich den speicher hab, des spiel beende und wieder starte is der secretspeicher weg
Das is genau das Probelm, dass ich meine. Der Geheimslot kommt wieder, wenn du den Save in dem du ihn freigespielt hast lädst.
Ich werds mir morgen nochmal ankuken und versuchen die Bugs zu fixen....
und noch ein Bug, man kann den Secretslot mit einem normalen Spielstand überschreiben.
Das is gefixt. Da hatte ich vergessen das Stück code was dafür zuständig war hier zu posten. ist jetzt aber drin.
Zitat
ich habe den Typen angesprochen und das Spiel abgebrochen, also nicht den Spielstand gespeichert.
Doch jetzt, wenn ich im Lademenü bin, ist der Secretslot da, obwohl ich den anderen Save NICHT gespeichert hab.
Das is leider so. Hängt damit zusammen, dass wenn man zurück auf den Titelbildschirm geht die Schalter Einstellungen des des letzten Spiel bestehen bleiben.
Ansonsten hoff ich wars das erstmal.
Wenn wirklich Intresse besteht setz ich mich die Tage nochmal hin und Programmier was vernünftiges...
Guuut... Also:
Am besten wäre es wenn Speicherslot 3 und 4 betroffen wären, also wenn es möglich wäre 2 Secrets zu speichern (Wenn das nicht zu umständlich ist).
Ich finde es gut dass man den (vllt. die?^^) Speicher bennen kann.
Keine Ahnung ob das geht, aber es wäre gut dass wenn man dem Secretspeicher spielt, man auf diesem speichern kann, aber dass man von den anderen Speichern aus nicht auf ihn speichern kann.
Es wäre zudem klasse, wenn man nach Aktivierung der Slots immer Zugriff auf diese hätte. Wenn der Speicher mit dem Event also gelöscht wird (was doch gar nicht möglich ist???) soll/en der/die Speicher immernoch vorhanden sein.
Was ich nicht gut fand, war dass die Stellen die für die Secrets bestimmt sind leer waren. Könnte man dort 'Nicht verfügbar' hinschreiben?
Also normal:
Speicherslot 1
Speicherslot 2
Nicht verfügbar
Nicht verfügbar
Mit einem Event
Slot 1
Slot 2
Secret 1/ Nicht verfügbar
Nicht verfügbar/ Secret 2
Mit beiden Events
Slot 1
Slot2
Secret 1
Secret 2
Benutzter Speicher ------------> Kann nur speichern auf
1 -------------------------------> 1,2
2-------------------------------> 1,2
Secret 1 --------------------> Secret1
Secret2 --------------------> Secret2
Ich hoffe das war verständlich und lesbar. Und natürlich dass das umsetzbar ist ^_^
MfG, Sora
Am besten wäre es wenn Speicherslot 3 und 4 betroffen wären, also wenn es möglich wäre 2 Secrets zu speichern (Wenn das nicht zu umständlich ist).
Ich finde es gut dass man den (vllt. die?^^) Speicher bennen kann.
Keine Ahnung ob das geht, aber es wäre gut dass wenn man dem Secretspeicher spielt, man auf diesem speichern kann, aber dass man von den anderen Speichern aus nicht auf ihn speichern kann.
Es wäre zudem klasse, wenn man nach Aktivierung der Slots immer Zugriff auf diese hätte. Wenn der Speicher mit dem Event also gelöscht wird (was doch gar nicht möglich ist???) soll/en der/die Speicher immernoch vorhanden sein.
Was ich nicht gut fand, war dass die Stellen die für die Secrets bestimmt sind leer waren. Könnte man dort 'Nicht verfügbar' hinschreiben?
Also normal:
Speicherslot 1
Speicherslot 2
Nicht verfügbar
Nicht verfügbar
Mit einem Event
Slot 1
Slot 2
Secret 1/ Nicht verfügbar
Nicht verfügbar/ Secret 2
Mit beiden Events
Slot 1
Slot2
Secret 1
Secret 2
Benutzter Speicher ------------> Kann nur speichern auf
1 -------------------------------> 1,2
2-------------------------------> 1,2
Secret 1 --------------------> Secret1
Secret2 --------------------> Secret2
Ich hoffe das war verständlich und lesbar. Und natürlich dass das umsetzbar ist ^_^
MfG, Sora
Soooooooo
nach langem warten hab ich mich nochmal dran gesetzt. Es waren in mehreren Klassen änderungen nötig. Wenn folgender Code über die Main kopiert wird sollte es eigentlich laufen:
Die Secrets müssen als Save3.rxdata und Save4.rxdata im Gamordner liegen. Außerdem wrid eine ssa.rxdata vom Spiel erstellt, die den Zugriff speichert.
Der Zugriff auf einen Slot wird mit
frei geschaltet. Dabei muss "i" 3 oder 4 sein. Je nach Slot. Wenn jemand das ganze einbaun will und Kompatibilitätsprobleme hat bin ich gerne bereit nochmal genauer zu erklären wo was geändert wurde...
Folgende Methoden werden überschrieben:
Scene_Title.main
Window_SaveFile.refresh
Scene_File.update
Scene_Load.on_decision
Scene_Save.on_decision
Ich freu mich auf Bugberichte...
nach langem warten hab ich mich nochmal dran gesetzt. Es waren in mehreren Klassen änderungen nötig. Wenn folgender Code über die Main kopiert wird sollte es eigentlich laufen:
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class Game_Slot_Access def initialize @access=[true,true,false,false] @aktiv=-1 end def access_to(i) return @access[i] end def active?(i) if @aktiv==i return true else return false end end def make_active(i) @aktiv=i end def grant_access_to(i) @access[i]=true save end def save file = File.open("ssa.rxdata", "wb") Marshal.dump($game_slot_access, file) file.close end end def enable_slot(i) if i==3 $game_slot_access.grant_access_to(2) else if i==4 $game_slot_access.grant_access_to(3) else p "Fehler! Slot Nummer zum frei schalten muss 3 oder 4 sein" end end end class Window_SaveFile #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear #if not accessible unless $game_slot_access.access_to(@file_index) self.contents.font.color = knockout_color name="Nicht verfügbar" self.contents.draw_text(4, 0, 600, 32,name) @name_width = contents.text_size(name).width self.contents.font.color = normal_color return end # Draw file number self.contents.font.color = normal_color if @file_index<2 name = "File#{@file_index + 1}" else name = "Secret#{@file_index - 1}" end self.contents.draw_text(4, 0, 600, 32, name) @name_width = contents.text_size(name).width # If save file exists if @file_exist # Draw character for i in 0...@characters.size bitmap = RPG::Cache.character(@characters[i][0], @characters[i][1]) cw = bitmap.rect.width / 4 ch = bitmap.rect.height / 4 src_rect = Rect.new(0, 0, cw, ch) x = 300 - @characters.size * 32 + i * 64 - cw / 2 self.contents.blt(x, 68 - ch, bitmap, src_rect) end # Draw play time hour = @total_sec / 60 / 60 min = @total_sec / 60 % 60 sec = @total_sec % 60 time_string = sprintf("d:d:d", hour, min, sec) self.contents.font.color = normal_color self.contents.draw_text(4, 8, 600, 32, time_string, 2) # Draw timestamp self.contents.font.color = normal_color time_string = @time_stamp.strftime("%Y/%m/%d %H:%M") self.contents.draw_text(4, 40, 600, 32, time_string, 2) end end end class Scene_Title #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main # If battle test if $BTEST battle_test return end # Load database $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") # Make system object $game_system = Game_System.new # Make title graphic @sprite = Sprite.new @sprite.bitmap = RPG::Cache.title($data_system.title_name) # Make command window s1 = "New Game" s2 = "Continue" s3 = "Shutdown" @command_window = Window_Command.new(192, [s1, s2, s3]) @command_window.back_opacity = 160 @command_window.x = 320 - @command_window.width / 2 @command_window.y = 288 #if save slot access file exitsts, load global access object if FileTest.exist?("ssa.rxdata") ssa = File.open("ssa.rxdata", "rb") $game_slot_access = Marshal.load(ssa) ssa.close else # else make a new one $game_slot_access=Game_Slot_Access.new end # Continue enabled determinant # Check if at least one save file exists and is accessabile # If enabled, make @continue_enabled true; if disabled, make it false @continue_enabled = false for i in 0..3 if FileTest.exist?("Save#{i+1}.rxdata") and $game_slot_access.access_to(i) @continue_enabled = true end end # If continue is enabled, move cursor to "Continue" # If disabled, display "Continue" text in gray if @continue_enabled @command_window.index = 1 else @command_window.disable_item(1) end # Play title BGM $game_system.bgm_play($data_system.title_bgm) # Stop playing ME and BGS Audio.me_stop Audio.bgs_stop # Execute transition Graphics.transition # Main loop loop do # Update game screen Graphics.update # Update input information Input.update # Frame update update # Abort loop if screen is changed if $scene != self break end end # Prepare for transition Graphics.freeze # Dispose of command window @command_window.dispose # Dispose of title graphic @sprite.bitmap.dispose @sprite.dispose end end class Scene_File #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update # Update windows @help_window.update for i in @savefile_windows i.update end # If C button was pressed if Input.trigger?(Input::C) if $game_slot_access.access_to(@file_index) # Call method: on_decision (defined by the subclasses) on_decision(@file_index) $game_temp.last_file_index = @file_index return else $game_system.se_play($data_system.buzzer_se) end end # If B button was pressed if Input.trigger?(Input::B) # Call method: on_cancel (defined by the subclasses) on_cancel return end # If the down directional button was pressed if Input.repeat?(Input::DOWN) # If the down directional button pressed down is not a repeat, # or cursor position is more in front than 3 if Input.trigger?(Input::DOWN) or @file_index < 3 # Play cursor SE $game_system.se_play($data_system.cursor_se) # Move cursor down @savefile_windows[@file_index].selected = false @file_index = (@file_index + 1) % 4 @savefile_windows[@file_index].selected = true return end end # If the up directional button was pressed if Input.repeat?(Input::UP) # If the up directional button pressed down is not a repeat、 # or cursor position is more in back than 0 if Input.trigger?(Input::UP) or @file_index > 0 # Play cursor SE $game_system.se_play($data_system.cursor_se) # Move cursor up @savefile_windows[@file_index].selected = false @file_index = (@file_index + 3) % 4 @savefile_windows[@file_index].selected = true return end end end end class Scene_Save < Scene_File #----------------------------------------------------------------- # * Decision Processing #-------------------------------------------------------------------------- def on_decision(fileindex) filename=make_filename(fileindex) # If slot is a secret and not the one currently loaded if fileindex>1 and not $game_slot_access.active?(fileindex) # Play buzzer SE $game_system.se_play($data_system.buzzer_se) return end # Play save SE $game_system.se_play($data_system.save_se) # Write save data file = File.open(filename, "wb") write_save_data(file) file.close # If called from event if $game_temp.save_calling # Clear save call flag $game_temp.save_calling = false # Switch to map screen $scene = Scene_Map.new return end # Switch to menu screen $scene = Scene_Menu.new(4) end end class Scene_Load < Scene_File #-------------------------------------------------------------------------- # * Decision Processing #-------------------------------------------------------------------------- def on_decision(fileindex) filename=make_filename(fileindex) # If file doesn't exist unless FileTest.exist?(filename) # Play buzzer SE $game_system.se_play($data_system.buzzer_se) return end # Play load SE $game_system.se_play($data_system.load_se) # Read save data file = File.open(filename, "rb") read_save_data(file) file.close #make slot the acitv one $game_slot_access.make_active(fileindex) # Restore BGM and BGS $game_system.bgm_play($game_system.playing_bgm) $game_system.bgs_play($game_system.playing_bgs) # Update map (run parallel process event) $game_map.update # Switch to map screen $scene = Scene_Map.new end end |
zum Lesen den Text mit der Maus markieren
Die Secrets müssen als Save3.rxdata und Save4.rxdata im Gamordner liegen. Außerdem wrid eine ssa.rxdata vom Spiel erstellt, die den Zugriff speichert.
Der Zugriff auf einen Slot wird mit
|
|
Ruby Quellcode |
1 |
enable_slot(i) |
Folgende Methoden werden überschrieben:
Scene_Title.main
Window_SaveFile.refresh
Scene_File.update
Scene_Load.on_decision
Scene_Save.on_decision
Ich freu mich auf Bugberichte...
Sooo, dann melde ich mich mal ^____^
Also, erstmal... DANKE Lelle! Das Skript gefällt mir guuut.
Allerdings...
... ist es schade dass ich die beiden Secrets nicht bennenen darf. (Licht1 und Licht2 hört sich ja doof an xD)
... kann man von einem Secret-Speicher auf einen normalen Speicher speichern.
Könntest du dich vielleicht npch an diese 2 kleinen (dennoch wichtigen) Punkte ransetzen? Das wäre seeeehr hilfreich^^
Sonst versteht sich das Skript mit den anderen^^
Keine Bugs!!
Mit freundlichen Grüßen, Sora
Also, erstmal... DANKE Lelle! Das Skript gefällt mir guuut.
Allerdings...
... ist es schade dass ich die beiden Secrets nicht bennenen darf. (Licht1 und Licht2 hört sich ja doof an xD)
... kann man von einem Secret-Speicher auf einen normalen Speicher speichern.
Könntest du dich vielleicht npch an diese 2 kleinen (dennoch wichtigen) Punkte ransetzen? Das wäre seeeehr hilfreich^^
Sonst versteht sich das Skript mit den anderen^^
Keine Bugs!!
Mit freundlichen Grüßen, Sora
Sehr Interessant,
Ich könnte es gut gebrauchen.
Ich schreibe jetzt im Namen von ChrisX930, da er ja gebannt worden ist.
Naja, er ist einer meiner besten Freunde, und genau deshalb helfe ich ihm so gut ich kann.
Hoffentlich kann jemand an diesem genialen Script arbeiten^^
Ich könnte es gut gebrauchen.
Ich schreibe jetzt im Namen von ChrisX930, da er ja gebannt worden ist.
Naja, er ist einer meiner besten Freunde, und genau deshalb helfe ich ihm so gut ich kann.
Hoffentlich kann jemand an diesem genialen Script arbeiten^^
... ist es schade dass ich die beiden Secrets nicht bennenen darf. (Licht1 und Licht2 hört sich ja doof an xD)
... kann man von einem Secret-Speicher auf einen normalen Speicher speichern.
joa werd ich mich die Tage mal dran setzen... du weißt ja: wenn du zu lange nichts von mir hörst, erinner mich nochmal dran...

Mein Zeugs

