• Anmelden

1

Dienstag, 1. September 2009, 12:22

Brauche Script das bestimmte Schalter schon beim Start des Spiels nutzt (TItle)

Hallo liebe Community,
Ich suche ein Script das zuerst bestimmte Schalter im Ingame Speichert (z.B. durch events) und als .rxdata abspeichert. Diese Rxdata soll im Titelbildschirm geladen werden.
Der Sinn:
Wenn man das Spiel durchgespielt hat soll "Credits" Aufrufbar sein (also im Titlebildschirm)

2

Dienstag, 1. September 2009, 20:27

Ich würde es über eine Optionen-Klasse laufen lassen, da du nicht alle Switches veröffentlichen solltest, und vermutlich noch mehr Optionen haben wirst, die gespeichert werden sollen.

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
class Game_Options
  attr_accessor :credits
  @credits = false
  # Speichern der Optionen
  # Call_Script-Befehl: Game_Options.save_options
  def self.save_options
    file = File.open("Game_Options.rxdata", "wb")
    Marshal.dump($game_options, file)
    file.close
  end
end

Nun muss ins Scene_Title Script unter die BattleTest Abfrage, in Zeile 17, noch das hier:

Ruby Quellcode

1
2
3
4
5
6
    # Load Options Data
    if FileTest.exist?("Game_Options.rxdata")
      $game_options = load_data("Game_Options.rxdata")
    else
      $game_options = Game_Options.new
    end
Über $game_options.credits kannst du nun abfragen ob die Credits erlaubt sind, bzw. true sind.
Mit dem Befehl $game_options.credits=(boolean) kannst du die CreditsVariable ändern.
Das währe mein Lösungsweg. Auch andere neue Variablen können so gespeichert und abgefragt werden.

3

Dienstag, 1. September 2009, 21:03

so ganz verstehe ich das leider nicht was ich wie machen muss xD
Ich bin nicht der große RGSSler

4

Dienstag, 1. September 2009, 21:18

Ok, das hab ich nicht bedacht, also nochmal ausführlicher.
Das obere Script, "Game_Options", dieses fügst du als neues Script über das MainScript ein.
Nun zum zweiten Scriptteil. Dieser kommt in das Script Scene_Title, Zeile 17 etwa, siet dann so aus:

Ruby Quellcode

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Scene_Title
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # If battle test
    if $BTEST
      battle_test
      return
    end
    # Load Options Data
    if FileTest.exist?("Game_Options.rxdata")
      $game_options = load_data("Game_Options.rxdata")
    else
      $game_options = Game_Options.new
    end
    # Load database
Nun müsste man wissen, ob du schon eine Creditsauswahl im Titel hast, also im
Fenster mit NewGame, Continue, Shutdown, auch ein Credits oder so. Poste am besten mal dein Titelscript. Denn man muss noch abfragen ob Credits erlaubt sind oder nicht.

5

Dienstag, 1. September 2009, 23:18

das Save script im APD ist dafür designd ... must du mal in der datenbank sehn
Realität ist nur eine subjektive Wahrnehmungsstörung.

Alles ist wahr, wenn man für wahr einen bestimmten Wert annimmt.

6

Mittwoch, 2. September 2009, 00:48

Hier ist nochmal mein Scene_Title Script:

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
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
#  This class performs title screen processing.
#==============================================================================
class Scene_Title
 
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
	# If battle test
	if $BTEST
  	# setup the test battle
  	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
   # $game_animations = Game_Animations.new
	# Draw title screen picture
	@sprite = Sprite.new
	@sprite.bitmap = RPG::Cache.title($data_system.title_name)
	# Make command window
	s1 = "Neues Spiel"
	s2 = "Weiter"
	s3 = "Credits"
	s4 = "Beenden"
	if FileTest.exist?("Data/TitlemenuExtras.rxdata")
data = File.open("Data/TitlemenuExtras.rxdata",'rb') # Hier ist der Dateiname
@credits_switch = Marshal.load(data)[219] # Hier ist die Switch-ID
data.close
else
@credits_switch = false
end
array = @credits_switch ? [s1,s2,s3,s4] : [s1,s2,s4]
	@command_window = Window_Command.new(192, array)
   @command_window.back_opacity = 160
	# Place it at the horizontal center of the screen
	@command_window.x = 220 - @command_window.width / 2
	@command_window.y = 288
	# Should we enable the continue button?
	# Check if at least one save file exists, and set
	# @continue_enabled to true if there is
	@continue_enabled = false
	for i in 0..3
  	if FileTest.exist?("Save#{i+1}.rxdata")
    	@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
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
   # Update command window
	@command_window.update
	# If C button was pressed
	if Input.trigger?(Input::C)
  	# Branch by command window cursor position
  	case @command_window.index
  	when 0  # New game
    	command_new_game
  	when 1  # Continue
    	command_continue
  	when 2  # die Credits
    	@credits_switch ? credits : command_shutdown
  	when 3  # Shutdown
    	command_shutdown
  	end
	end
  end
  #--------------------------------------------------------------------------
  # * Command: New Game
  #--------------------------------------------------------------------------
  def command_new_game
	# Play decision SE
	$game_system.se_play($data_system.decision_se)
	# Stop BGM
	Audio.bgm_stop
	# Reset frame count for measuring play time
	Graphics.frame_count = 0
	# Make each type of game object
	$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
	# Set up initial party
	$game_party.setup_starting_members
	# Set up initial map
	$game_map.setup($data_system.start_map_id)
	# Move player to initial position
	$game_player.moveto($data_system.start_x, $data_system.start_y)
	# Refresh player
	$game_player.refresh
	# Run automatic change for BGM and BGS set with map
	$game_map.autoplay
	# Update map (run parallel process events)
	$game_map.update
	# Switch to map screen
	$scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------
  # * Command: Continue
  #--------------------------------------------------------------------------
  def command_continue
	# If continue is disabled
	unless @continue_enabled
  	# Play buzzer SE
  	$game_system.se_play($data_system.buzzer_se)
  	return
	end
	# Play decision SE
	$game_system.se_play($data_system.decision_se)
	# Switch to load screen
	$scene = Scene_Load.new
  end
 
  #--------------------------------------------------------------------------
  # * Command: Credits
  #--------------------------------------------------------------------------
  def credits
	# Play decision SE
	$game_system.se_play($data_system.decision_se)
	# Stop BGM
	Audio.bgm_stop
	# Reset frame count for measuring play time
	Graphics.frame_count = 0
	# Make each type of game object
	$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
	# Set up initial party
	$game_party.setup_starting_members
	# Set up initial map position
	$game_map.setup(74)
	# Move player to initial position
	$game_player.moveto(0, 0)
	# Refresh player
	$game_player.refresh
	# Run automatic change for BGM and BGS set with map
	$game_map.autoplay
	# Update map (run parallel process event)
	$game_map.update
	# Switch to map screen
	$scene = Scene_Map.new
end
 
 #--------------------------------------------------------------------------
  # * Command: Shutdown
  #--------------------------------------------------------------------------
  def command_shutdown
	# Play decision SE
	$game_system.se_play($data_system.decision_se)
	# Fade out BGM, BGS, and ME
	Audio.bgm_fade(800)
	Audio.bgs_fade(800)
	Audio.me_fade(800)
	# Shutdown
	$scene = nil
  end
  #--------------------------------------------------------------------------
  # * Battle Test
  #--------------------------------------------------------------------------
  def battle_test
	# Load database (for battle test)
	$data_actors    	= load_data("Data/BT_Actors.rxdata")
	$data_classes   	= load_data("Data/BT_Classes.rxdata")
	$data_skills    	= load_data("Data/BT_Skills.rxdata")
	$data_items     	= load_data("Data/BT_Items.rxdata")
	$data_weapons   	= load_data("Data/BT_Weapons.rxdata")
	$data_armors    	= load_data("Data/BT_Armors.rxdata")
	$data_enemies   	= load_data("Data/BT_Enemies.rxdata")
	$data_troops    	= load_data("Data/BT_Troops.rxdata")
	$data_states    	= load_data("Data/BT_States.rxdata")
	$data_animations	= load_data("Data/BT_Animations.rxdata")
	$data_tilesets  	= load_data("Data/BT_Tilesets.rxdata")
	$data_common_events = load_data("Data/BT_CommonEvents.rxdata")
	$data_system    	= load_data("Data/BT_System.rxdata")
	# Reset frame count for measuring play time
	Graphics.frame_count = 0
	# Make each game object
	$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
	# Set up party for battle test
	$game_party.setup_battle_test_members
	# Set troop ID, can escape flag, and battleback
	$game_temp.battle_troop_id = $data_system.test_troop_id
	$game_temp.battle_can_escape = true
	$game_map.battleback_name = $data_system.battleback_name
	# Play battle start SE
	$game_system.se_play($data_system.battle_start_se)
	# Play battle BGM
	$game_system.bgm_play($game_system.battle_bgm)
	# Switch to battle screen
	$scene = Scene_Battle.new
  end
end

7

Mittwoch, 2. September 2009, 15:37

Huh o_o?
Du hast doch schon längst das was du brauchst, wenn ich mir dein Titelscript so ansehe.
Allerdings ist bei deinem Titelscript der Haken das alle Switches veröffentlicht werden. Ich würde bei meiner Lösung bleiben, wobei bei dir nur einer den Code:

Ruby Quellcode

1
2
3
4
5
 $game_switches[219] = true # Stellt Switch 219 an (optional)
 # Speichert alle Switches in eine Datei im Data Ordner.
 datei = File.open("Data/TitlemenuExtras.rxdata", "wb")
 Marshal.dump($game_switches, datei)
 datei.close
ausführen müsste, entweder Event Call_Script oder irgendwo im Script. Und schon klappt es, bzw. wird 'Credits' angezeigt wenn der Switch[219] an ist.
Also eigentlich brauchst du dann meine Lösung gar nicht mehr ;)

Der Vollständigkeit halber aber noch dein Titelscript mit meiner Lösung drin (wer hat das eigentlich gemacht, wo ich jetzt einfach meine Switch Speicherung reinbastel?)
Spoiler
Als neues Script über Main einfügen

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
#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
# Benötigt das ursprüngliche Scene_Title und die Game_Options Klasse
#==============================================================================
class Scene_Title
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # If battle test
    if $BTEST
      # setup the test battle
      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
    # $game_animations = Game_Animations.new
    # Draw title screen picture
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.title($data_system.title_name)
    # Make command window
    s1 = "Neues Spiel"
    s2 = "Weiter"
    s3 = "Credits"
    s4 = "Beenden"
    # Load Options Data
    if FileTest.exist?("Game_Options.rxdata")
      $game_options = load_data("Game_Options.rxdata")
    else
      $game_options = Game_Options.new
    end
    array = $game_options.credits ? [s1,s2,s3,s4] : [s1,s2,s4]
    @command_window = Window_Command.new(192, array)
    @command_window.back_opacity = 160
    # Place it at the horizontal center of the screen
    @command_window.x = 220 - @command_window.width / 2
    @command_window.y = 288
    # Should we enable the continue button?
    # Check if at least one save file exists, and set
    # @continue_enabled to true if there is
    @continue_enabled = false
    for i in 0..3
      if FileTest.exist?("Save#{i+1}.rxdata")
        @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
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update command window
    @command_window.update
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Branch by command window cursor position
      case @command_window.index
      when 0  # New game
        command_new_game
      when 1  # Continue
        command_continue
      when 2  # die Credits
        $game_options.credits ? credits : command_shutdown
      when 3  # Shutdown
        command_shutdown
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Command: Credits
  #--------------------------------------------------------------------------
  def credits
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Stop BGM
    Audio.bgm_stop
    # Reset frame count for measuring play time
    Graphics.frame_count = 0
    # Make each type of game object
    $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
    # Set up initial party
    $game_party.setup_starting_members
    # Set up initial map position
    $game_map.setup(74)
    # Move player to initial position
    $game_player.moveto(0, 0)
    # Refresh player
    $game_player.refresh
    # Run automatic change for BGM and BGS set with map
    $game_map.autoplay
    # Update map (run parallel process event)
    $game_map.update
    # Switch to map screen
    $scene = Scene_Map.new
  end
end
Es wird das standardmässige Scene_Titel benötigt
zum Lesen den Text mit der Maus markieren


@Hanmac: Könntest du etwas genauer werden? Was meinst du?

8

Mittwoch, 2. September 2009, 17:28

http://www.rpg-studio.de/itzamna/script/…ion-Saving.html << das da

es gibt zwar schon neuere version aber die ist noch nicht frei gegeben
Realität ist nur eine subjektive Wahrnehmungsstörung.

Alles ist wahr, wenn man für wahr einen bestimmten Wert annimmt.

The Blog

Projekt: Spieledatenbank

Motto: Let´s kick´n it oldschool.

  • Nachricht senden

9

Dienstag, 24. November 2009, 19:05

Danke, brauche ich nämlich für mein Spiel. Ich möchte nämlich freischaltbare Charaktere machen.

Ich bin mir jetzt nicht sicher ob ich das verstanden habe.

Ich mache also mit dem Skript (bei den Events)

APD.save_game(id, value=nil)

(Halt die Variable und den Wert)

Und beim Neuen Anfangen eines Spiel ist dann die Varaiable immer noch auf dem Wert?

P.s.: Kann man dan ja mit nem Conditional Branch machen
  • Qualifikationen :success:

    :hand-point: Fähigkeiten:

    :map: Mapping: :star: :star: :star: :star: :star-half:
    :wall-break: Eventing: :star: :star: :star: :star-empty: :star-empty:
    :quill: Storydesign::star: :star: :star-half: :star-empty: :star-empty:
    :palette: Pixeln: :star: :star-half: :star-empty: :star-empty: :star-empty:
    :ruby: Scripting: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
    :music-beam: Musik: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
  • FRPG :quill:

    Name: Irir Nylak: (Bedeutung: Baumtänzer, wörtl.: Der mit den Bäumen tanzt)
    Geschlecht: Männlich
    Rasse: Waldelb
    Alter: 87
    Beruf/Klasse: Jäger

    Level: 1
    Quest:
    Party: -
    Inventar:

    Ledertasche (2/6):

    * 1x Proviant (Trockenfleisch, ein Stück Trockengebäck, sowie ein Wasserschlauch)
    * Detaillierte Karte vom Grünwald und Umgebung

    Kleidung (2/4):

    * Zwei Feuersteine zum Entzünden von Feuer
    * Eine traditionelle Holzschnitzerei aus Eiche (ein kleiner, ca. 5cm hoher Miniatur Baum, er soll Glück bringen)

    kleine Kräutertasche (3/10):

    * 2x Baldrian
    * 1x Estragon

    Köcher (10/10)

    Geld: 16 Kupferstücke

    Rüstung:
    • Einfache Bekleidung aus Leinen, wobei die Brustpartien aus Leder bestehen (dort bessere Rüstung)
    • Feste Lederstiefel
    • Eine Lederscherpe mit einer angebrachter Scheide für ein Jagdmesser (Ausnehmen von Tieren, Zweitwaffe beim Umgang mit Bogen)
    • Ein Kurzbogen aus geöltem Zedernholz
  • :clipboard: Tutorials


Social Bookmarks