• Anmelden

1

Sonntag, 6. Juli 2008, 19:16

Scribt Speicherslot per Event zugänglich machen

Ich suche ein Scribt das einen bestimmten Speicherlot nicht anzeigt sonder dass dieser erst durch ein Event zugänglich gemacht wird.
Ich weiß is vielleicht schwer wäre aba sehr gut. :this:

Danke im voraus RPG Nullchecker


Dieser Beitrag wurde bereits so oft editiert, dass der Zähler sich in die Luft gesprengt hat.

2

Sonntag, 6. Juli 2008, 19:38

Was ähnliches hab ich mir gestern zusammen kopiert. Hier die für dich geänderte Version:
Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def save(filenumber)
    # Write save data
    file = File.open("Save#{filenumber}.rxdata", "wb")
    # Make character data for drawing save file
    characters = []
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      characters.push([actor.character_name, actor.character_hue])
    end
    # Write character data for drawing save file
    Marshal.dump(characters, file)
    # Wrire frame count for measuring play time
    Marshal.dump(Graphics.frame_count, file)
    # Increase save count by 1
    $game_system.save_count += 1
    # Save magic number
    # (A random value will be written each time saving with editor)
    $game_system.magic_number = $data_system.magic_number
    # Write each type of game object
    Marshal.dump($game_system, file)
    Marshal.dump($game_switches, file)
    Marshal.dump($game_variables, file)
    Marshal.dump($game_self_switches, file)
    Marshal.dump($game_screen, file)
    Marshal.dump($game_actors, file)
    Marshal.dump($game_party, file)
    Marshal.dump($game_troop, file)
    Marshal.dump($game_map, file)
    Marshal.dump($game_player, file)
    file.close
end

zum Lesen den Text mit der Maus markieren


Aufrufen mit:

Ruby Quellcode

1
save(1)

wenn du zB in den Slot Nummer 1 speichern möchtest.

Es ist nich Idiotenischer. D.h. wenn du "save(101345)" eingibst wird eine Savedatei angelegt, die die diese Nummer hat. Die is aber mit dem standard Scene_Load nicht zu laden.

3

Sonntag, 6. Juli 2008, 19:53

Ne, ich meinte dass ein bestimmter Speicherslot est angezeigt wird wenn ein Event aktiviert wird.


Dieser Beitrag wurde bereits so oft editiert, dass der Zähler sich in die Luft gesprengt hat.

4

Sonntag, 6. Juli 2008, 20:13

Also ich kann mir nich so richtig vorstellen was du meinst... Soll durch ein bestimmtes Event ein zusätzlicher Speicherslot zur Verfühgung stehen? Also erst nur 3 und später nach dem Event dann 4?

5

Sonntag, 6. Juli 2008, 20:33

Ja, ich glaube das meint er... Ich könnte sowas auch gebrauchen.
Der ChrisX930 ist wieder zurück!]
Danke dir Kain^^



Kommt und spielt mit :D

6

Sonntag, 6. Juli 2008, 20:38

Ich mein des so:

[info]Speicherslot 1
Speicherslot 2
Speicherslot 3
Speicherslot 4[/info]
Jetzt wurde ein bestimmtes Event aktiviert:

[info]Speicherslot 1
Speicherslot 2
Speicherslot 3
Speicherslot 4 Auf einer Map auf der man sonst nie war[/info]


Sozusagen ein Cheat


Dieser Beitrag wurde bereits so oft editiert, dass der Zähler sich in die Luft gesprengt hat.

7

Sonntag, 6. Juli 2008, 20:42

Ich glaub, er meint es so:


Normal
1. Speicherslot
2. Speicherslot
3. Speicherslot

Mit dem Event Aktiviert, ohne dieses Event gibt es keinen 4. Speicherslot
1. Speicherslot
2. Speicherslot
3. Speicherslot
4. Speicherslot->(Auf dem ist ein besonderer Speicher, z.b. eine Nachgeschichte oder eine Extrawelt im Spiel)
Der ChrisX930 ist wieder zurück!]
Danke dir Kain^^



Kommt und spielt mit :D

8

Sonntag, 6. Juli 2008, 20:43

genau :D


Dieser Beitrag wurde bereits so oft editiert, dass der Zähler sich in die Luft gesprengt hat.

9

Sonntag, 6. Juli 2008, 20:44

Ich hab n gutes Gespür, was Fragen angeht^^
Jedenfalls kann ich sowas gebrauchen.
Der ChrisX930 ist wieder zurück!]
Danke dir Kain^^



Kommt und spielt mit :D

10

Sonntag, 6. Juli 2008, 21:25

Kann ich machen. Ich setz mich morgen mal dran.

11

Sonntag, 6. Juli 2008, 21:26

ok, das ist gut
Der ChrisX930 ist wieder zurück!]
Danke dir Kain^^



Kommt und spielt mit :D

12

Sonntag, 6. Juli 2008, 21:37

ja gut danke :dance:


Dieser Beitrag wurde bereits so oft editiert, dass der Zähler sich in die Luft gesprengt hat.

13

Sonntag, 6. Juli 2008, 23:55

Noch ne Frage: Soll der "Secret" Speicherstand überspeicherbar sein? Wäre blöd oder?

14

Montag, 7. Juli 2008, 06:39

Am besten ned


Dieser Beitrag wurde bereits so oft editiert, dass der Zähler sich in die Luft gesprengt hat.

15

Montag, 7. Juli 2008, 13:35

Ja, aber nur, wenn es ein "Speichern" vom Extraslot ist.
Im normalen Spiel nicht, vom Extraslot, den Speicher, wäre gut.
z.B.
Man spielt den normalen Spielverlauf (ohne Slot4) und den kann man nicht(also slot4) vom normalen spiel speichern.
aber wenn man den Speicher vom Slot4 spielt, sollte man das Speichern nur für Slot4 möglich machen.
Der ChrisX930 ist wieder zurück!]
Danke dir Kain^^



Kommt und spielt mit :D

16

Dienstag, 8. Juli 2008, 15:30

Die ganze Sache ist ein Bischen ekelig.
Ich habe jetzt nen Bsichen rumgeschraubt und bin dabei auf ein unerwartetes problem gestoßen. Mein Gedanke war, einen normalen Switch abzufragen und je nachdem ob der an oder aus is den Zugriff auf den letzten Slot, der also der "Geiheimslot" sein sollte zu ermöglichen. Das funktioniert auch gannz gut...
ABER es gibt ein Problem: Man muss immer erst einen Spielstand laden, in dem man den Gehiemslot frei gespielt hat, da der Schalter sonst natürlich nicht gesetzt ist.
Außerdem muss immer ein anderes Savegame vorhanden sein, um an den Geheimslot ran zukommen, da man sonst im Titel nich ins Lademenü kommt. Aus dem gleichen Grund wie oben.
Das ließe sich umgehen, in dem man den Schalter in einer Variable in Game_System speichert, die wird nämlich ganz am Anfang geladen. Da wäre es dann aber nich mehr möglich die per Event zu ändern. bzw es ginge schon, aber da müsste man über ein kurzes Codestück ran.
also hier erstmal die erste Version, in der das Problem noch besteht:

Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
class Scene_File
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    $swnr=1 # <= Hier die Nummer des Switches einsetzten, der den Slot frei schalten soll
    # Make help window
    @help_window = Window_Help.new
    @help_window.set_text(@help_text)
    # Make save file window
    @savefile_windows = []
    for i in 0..2
      @savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))
    end
    if $game_switches != nil and $game_switches[$swnr]
      @savefile_windows.push(Window_SaveFile.new(3, make_filename(i)))
    else
      @savefile_windows.push(Window_Base.new(0, 376, 640, 104))
    end
    # Select last file to be operated
    if @savefile_windows[$game_temp.last_file_index].instance_of? Window_SaveFile
      @file_index = $game_temp.last_file_index
    else
      @file_index = 0
    end
    @savefile_windows[@file_index].selected = true
    # 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 windows
    @help_window.dispose
    for i in @savefile_windows
      i.dispose
    end
  end
  #--------------------------------------------------------------------------
  # * 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)
      # Call method: on_decision (defined by the subclasses)
      on_decision(make_filename(@file_index))
      $game_temp.last_file_index = @file_index
      return
    end
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Call method: on_cancel (defined by the subclasses)
      on_cancel
      return
    end
    if $game_switches != nil and $game_switches[$swnr]
      max=3
    else
      max=2
    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 < max
        # 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) % (max+1)
        @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 + max) % (max+1)
        @savefile_windows[@file_index].selected = true
        return
      end
    end
  end
 
  #--------------------------------------------------------------------------
  # * Make File Name
  #     file_index : save file index (0-3)
  #--------------------------------------------------------------------------
  def make_filename(file_index)
    if file_index<3
      return "Save#{file_index + 1}.rxdata"
    else
      return "Secret.rxdata"
    end
  end
end
 
class Scene_Save
  #--------------------------------------------------------------------------
  # * Decision Processing
  #--------------------------------------------------------------------------
  def on_decision(filename)
    if (filename <=> "Secret.rxdata")==0
      # 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 Window_SaveFile
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     file_index : save file index (0-3)
  #     filename   : file name
  #--------------------------------------------------------------------------
  def initialize(file_index, filename)
    super(0, 64 + file_index % 4 * 104, 640, 104)
    self.contents = Bitmap.new(width - 32, height - 32)
    @file_index = file_index
    if @file_index<3
      @filename = "Save#{@file_index + 1}.rxdata"
    else
      @filename = "Secret.rxdata"
    end
    @time_stamp = Time.at(0)
    @file_exist = FileTest.exist?(@filename)
    if @file_exist
      file = File.open(@filename, "r")
      @time_stamp = file.mtime
      @characters = Marshal.load(file)
      @frame_count = Marshal.load(file)
      @game_system = Marshal.load(file)
      @game_switches = Marshal.load(file)
      @game_variables = Marshal.load(file)
      @total_sec = @frame_count / Graphics.frame_rate
      file.close
    end
    refresh
    @selected = false
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    # Draw file number
    self.contents.font.color = normal_color
    if @file_index<3
      name = "Save#{@file_index + 1}"
    else
      name = "Secret"
    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("%02d:%02d:%02d", 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

zum Lesen den Text mit der Maus markieren


Über der Main einfügen!
Ganz oben muss die Nummer des Switches eingestellt werden, der den Geheimslot freischalten soll.
Das ganze ist absolut inkompatibel zu allen anderen Änderungen am Speichermenü.

Ich bin insgesamt absolut nicht zufrieden damit und werd mich wohl die Tage nochmal dran machen, aber ich bin grad etwas gestresst. Ihr könnt ja erstmal sagen, was ihr davon haltet...

Achja: der Geheimspeicherstand mus als "Secret.rxdata" im Gamordner liegen.

EDIT: Hab den Fehler ausgebessert, das man den Geheimslot überspeichern konnte.

17

Dienstag, 8. Juli 2008, 15:56

ABER es gibt ein Problem: Man muss immer erst einen Spielstand laden, in dem man den Gehiemslot frei gespielt hat, da der Schalter sonst natürlich nicht gesetzt ist.
Außerdem muss immer ein anderes Savegame vorhanden sein, um an den Geheimslot ran zukommen

Das Ist ja gut. Wenn man den Speicherslot freispielt, ist es ja eigentlich dann in demSave gespeichert, den man dann speichert.
Wenn man diesesn Spielstand löscht, soll auch der Geheimslot verschwinden.

Aber wenn ich jetzt dieses Script ersetze, kommt ein Fehler bei Scene_Save (wrong argument)
Der ChrisX930 ist wieder zurück!]
Danke dir Kain^^



Kommt und spielt mit :D

18

Dienstag, 8. Juli 2008, 17:52

ganz meine Meinung des is kein fehler sondern n tolles extra :D


Dieser Beitrag wurde bereits so oft editiert, dass der Zähler sich in die Luft gesprengt hat.

19

Dienstag, 8. Juli 2008, 18:14

Hab 2 Bugs entdeckt:

  1. wenn ich scho nen fertigen speicher hab und den freigespielt hab werden im loadmenü keine personen angezeigt
  2. wenn ich den speicher hab, des spiel beende und wieder starte is der secretspeicher weg

Doppelpost tut mir leid
»RPG Nullchecker« hat folgende Datei angehängt:
  • Beispiel.rar (183,81 kB - 8 mal heruntergeladen - zuletzt: 24. August 2009, 17:48)


Dieser Beitrag wurde bereits so oft editiert, dass der Zähler sich in die Luft gesprengt hat.

20

Dienstag, 8. Juli 2008, 18:20

Ich hab bei deiner Demo mal was getestet. 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.
Ausserdem wäre das beste daran, wenn der Secretslot da ist, solange der Saveslot mit dem Event (für das Secretslot) da ist.
Wenn der Saveslot (z.b. Slot1, auf dem das Event gespeichert wurde) gelöscht wird, verschwindet der Secretslot. DAS WÄRE AM BESTEN.
Der ChrisX930 ist wieder zurück!]
Danke dir Kain^^



Kommt und spielt mit :D

Social Bookmarks