• Anmelden

1

Sonntag, 6. Februar 2011, 14:46

Auto Save

Suche einen Script den ich benutzen kann um während des Spiels ohne Beeinflussung durch Spielers abspeichern zu können, ich hab in meinem Spiel Pakete und Truhen eingeführt die entweder immer einen bestimmten Inhalt an Gegenständen haben oder einen zufälligen. Bei den zufälligen könnte der Spieler sich einfach an einem Speicherpunkt stellen abspeichern und durch Neustart so lange dieses Paket öffnen bis er das gewünschte Items erhält. Dies möchte ich verhindern.

Ich habe bereits was dazu gefunden wurde aber etwas durch die Diskussion verwirrt
Autosave Skript - Skript-Anfragen - RPG Studio - Make your World real
Was ich genau suche ist ein Script der automatisch auf den zuletzt geladeten Spielstand speichert und dies nur auf meinen Befehl also durch das Aufrufen des Scripts, sollte keine Datei geladen worden sein, soll das Spiel nicht abstürzen sondern auf Slot 4 speichern.

hoffe mir kann geholfen werden^^

im Event sollte das dann so aussehen Zufalls Varibale >>> Schnellspeichern >>> Ergebnis

2

Sonntag, 6. Februar 2011, 22:05

Tätä! Das bringt die Suche in der Script-Datenbank, wenn man fix "Autosave" eingibt:

Autosave-Erweiterung

Das einzige, was du tun musst, ist, den name "autosave.rxdata" in "File1/2/3/4.rxdata" zu ändern.

3

Sonntag, 6. Februar 2011, 22:37

module Autosave
ID = 15 # das ist der Swicht in dem du Autosave an/abschalten kannst :3

def Autosave.enabled?
return $game_switches[ID] == true
end

def Autosave.saved?
return File.exist?('File1/2/3/4.rxdata') and Autosave.enabled?
end

def Autosave.get
file = File.open('File1/2/3/4.rxdata', "r")
# Read each type of game object
Scene_Load.new.read_save_data(file)

file.close
end

def Autosave.save
file = File.open('File1/2/3/4.rxdata', "w")
# Write each type of game object
Scene_Save.new.write_save_data(file)
file.close
end
end

also anscheinend stimmt das was mit dem script nicht oder ich hab es falsch eingefügt.
Jedenfalls funktioniert File1/2/3/4.rxdata nicht, File1.rxdata auch nicht, Save1.rxdata auch nicht und das Original autosave.rxdata geht auch nicht. Hab auch schon versucht eine Save Datei so zu nennen aber das war auch ein Reinfall. Als Amateur weiß ich zwar was mir die Fehlermeldung sagt und kann meistens auch einfache Fehler schnell finden aber hier bin ich echt überfragt.

Und falls ich das ding zu laufen bekomme, kann ich dann auch eifnach so speichern? und wird immer die zuletzt geladenen Datei überschrieben?
»Schwarzhemd« hat folgende Bilder angehängt:
  • Fehlermeldung.PNG
  • Fehler.PNG

Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

4

Sonntag, 6. Februar 2011, 23:06

Gleich auch noch verbessert:

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
module Autosave
  def self.enabled?
    return $game_switches[ID]
  end
 
  def self.saved?
    return File.exist?("File5rxdata") & self.enabled?
  end
 
  def self.get()
    File.open("File5.rxdata", 'r') {|file| Scene_Load.new.read_save_data(file)}
  end
 
  def self.save()
    File.open("File5.rxdata", 'w') {|file| Scene_Save.new.write_save_data(file)}
  end
end


Woran es bei deinem Script lag weis ich ehrlich gesagt nicht^^

EDIT:
Oh, and reagiert wohl anderst als && oder &, wenn du die Zeile mit dem and nach return in Klammern setzt geht es auch, oder du ersetzt es auch gleich mit einem & oder &&.
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Reborn« (8. Februar 2011, 17:37)


5

Sonntag, 6. Februar 2011, 23:23

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
#==============================================================================
# ■ Scene_Save
#------------------------------------------------------------------------------
#  セーブ画面の処理を行うクラスです。
#==============================================================================
 
class Scene_Save < Scene_File
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
super("Spielstand speichern?")
  end
  #--------------------------------------------------------------------------
  # ● 決定時の処理
  #--------------------------------------------------------------------------
  def on_decision(filename)
# セーブ SE を演奏
$game_system.se_play($data_system.save_se)
# セーブデータの書き込み
file = File.open(filename, "wb")
write_save_data(file)
file.close
# イベントから呼び出されている場合
if $game_temp.save_calling
  # セーブ呼び出しフラグをクリア
  $game_temp.save_calling = false
  # マップ画面に切り替え
  $scene = Scene_Map.new
  return
end
# メニュー画面に切り替え
$scene = Scene_Menu.new(4)
  end
  #--------------------------------------------------------------------------
  # ● キャンセル時の処理
  #--------------------------------------------------------------------------
  def on_cancel
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# イベントから呼び出されている場合
if $game_temp.save_calling
  # セーブ呼び出しフラグをクリア
  $game_temp.save_calling = false
  # マップ画面に切り替え
  $scene = Scene_Map.new
  return
end
# メニュー画面に切り替え
$scene = Scene_Menu.new(4)
  end
  #--------------------------------------------------------------------------
  # ● セーブデータの書き込み
  # file : 書き込み用ファイルオブジェクト (オープン済み)
  #--------------------------------------------------------------------------
  def write_save_data(file)
# セーブファイル描画用のキャラクターデータを作成
characters = []
for i in 0...$game_party.actors.size
  actor = $game_party.actors[i]
  characters.push([actor.character_name, actor.character_hue])
end
# セーブファイル描画用のキャラクターデータを書き込む
Marshal.dump(characters, file)
# プレイ時間計測用のフレームカウントを書き込む
Marshal.dump(Graphics.frame_count, file)
# セーブ回数を 1 増やす
$game_system.save_count += 1
# マジックナンバーを保存する
# (エディタで保存するたびにランダムな値に書き換えられる)
$game_system.magic_number = $data_system.magic_number
# 各種ゲームオブジェクトを書き込む
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)
  end
end

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
module Autosave
  def self.enabled?
	return $game_switches[ID]
  end
 
  def self.saved?
	return File.exist?("Save1.rxdata") & self.enabled?
  end
 
  def self.get()
	File.open("Save1", 'r') {|file| Scene_Load.new.read_save_data(file)}
  end
 
  def self.save()
	File.open("Save1.rxdata", 'r') {|file| Scene_Save.new.write_save_data(file)}
  end
end


Also ich kann schonmal mein Spiel starten das ist Klasse :)
So bleibt nur noch die Frage wie abspeichern, wenn ich den von der Beschreibung genannten Befehl: "Autosave.save" nutze kommt der Troll hier:
[img]http://www.bilder-space.de/show_img.php?img=2bea46-1297030941.png&size=thumb[/img]

6

Sonntag, 6. Februar 2011, 23:27

Ein Dateiname darf keine ' / ' enthalten, das war auch nur ein Beispiel von Alexis, damit du dir eine Zahl aussuchst.
Die Datei sollte dann heißen "Save1.rxdata" oder "Save2.rxdata" etc.

Meine Version: Du kannst bei Autosave.save() und Autosave.load() in Klammern eine ID angeben, auf die wird dann gespeichert, ansonsten wird die zuletzt verwendete Savedatei benutzt. Beispiel Autosave.save(3)

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
module Autosave
	ID = 15 # das ist der Swicht in dem du Autosave an/abschalten kannst :3
 
	def Autosave.enabled?()
		return $game_switches[ID]
	end
 
	def Autosave.saved?( id=($game_temp.last_file_index+1) )
		return( File.exist?("Save#{id}.rxdata") and Autosave.enabled? )
	end
 
	def Autosave.get( id=($game_temp.last_file_index+1) )
		File.open("Save#{id}.rxdata", "rb"){ |io| Scene_Load.new.read_save_data(io) }
	end
 
	def Autosave.save( id=($game_temp.last_file_index+1) )
		File.open("Save#{id}.rxdata", "wb"){ |io| Scene_Save.new.write_save_data(io) }
	end
end


@Hindi:
Da Fehlt einmal der Punkt zu der Extension, und ich glaub du solltest die Dateien lieber auch binär öffnen. Konstantendefinition nicht vergessen ;)
[ +and+ hat eine niedriegere Priorität als +&+ ]

7

Sonntag, 6. Februar 2011, 23:46

[...] Ziat enfernt. Bitte keine Vollziatet.
- Playm


Perfekt es funktioniert jetzt läuft es ohne Fehlermeldungen und speichern tut es auch :)
Das mit den "/" ist gut zu wissen.
Aber ich bekomme es nicht hin das die zuletzt verwendete Datei überschrieben wird.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Playm« (7. Februar 2011, 00:01)


Reborn

hat beim Stromkonzern schon Rabatt

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

8

Dienstag, 8. Februar 2011, 17:42

@palym
Das lag nicht daran, dass ich es nicht binär geöffnet habe, sondern daran dass ich einen Tippfehler drin hatte. Ich habe es zum Lesen geöffnet :3
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

Kagurame

Alopex Lagopus

Motto: Ich Böse, Du Teufel

  • Nachricht senden

9

Mittwoch, 9. Februar 2011, 12:55

Aber so weit ich weis kannst du ein '/' auch durch ein '\' ersetzen, so kannst du dann auf selbererstellteoder vorhandene Unterordner zugreifen und dort speichern.
Bild

  • Hallo

    Tabs klicken unso, ne?
  • Lyric

    Meine schwarze Liste, beginnt mit einem Satz:
    "Wer zuletzt lacht, lacht am besten!", und am Ende ist noch Platz.
    Auf der Liste meiner Feinde, ist auch für euch noch Platz
    Wer zuletzt lacht, lacht am besten!
    Merkt euch diesen Satz!

    Ode an die Feindschaft von Saltatio Mortis

  • Outtakes

    • Nummer 3
      20.09.2012 - 19:46
      "Yah, ich bin ihre Motivazin." "Motivazin - gibts das jetzt in der Apotheke rezeptflichtig?"
    • Ich mag Kekse
    • Nummer 2
      08.09.2012 - 01:29 Uhr
      "Die Erlebnismacher zu Hannovre - Exlibre - ääääh... Excalibur"

      *Lachflash*
    • Nummer 1
      07.09.2012 - 22:58 Uhr
      *Bööarps* - Die Erlebnismacher zu Hannovre - Excalibur... "Mahlzeit... also... doch nicht Mahlzeit... war nur die Website"
      "Ich hab gerülpst -.-" "Du hast was?" *LACHFLASH*
      "Nicht dein Ernst, oder?" "DOCH!" *LACHFLASH second tour*
  • Profile

    Bild
  • Ich

    Dass bin ich:

    Maker: RPG-XP, RPG-VX
    Story:
    Für andere mehr als für mich: 60%

    Grafik:
    Ich werde besser: 35%

    Pixeln:
    Ich stehe an den Anfängen: 7%

    Mapping:
    Es fehlen nur noch (alle) Feinheiten: 67%

    Scripting:
    Informatiker, mittlerweile auch andere Sachen am skripten: 93%
  • Neues aus der SB

    Neues aus der SB:

    Spoiler: Die Camper
    (03:41:36) Kagurame: n8 du
    (03:41:37) Irrlicht: Nacht Mozilla
    (03:41:47) MozillaBabybird: Kagu: der witz war flach
    (03:42:01) Kagurame: welcher witz?
    (03:42:14) Heatra: geh nicht benji
    (03:42:21) Heatra: spiel lieber ats2 :D
    (03:42:25) MozillaBabybird: nacht leute ^^ ijemand sollte diesen verlauf im studio bash posten, damit die mal wissen wer die echten camper hier sind :D
    (03:42:35) Kagurame: ich bin scripten
    (03:42:38) MozillaBabybird: Heat: tut mir sorry xD
    (03:42:40) Kagurame: ich mach das...^^
    (03:42:48) MozillaBabybird: bis .... mittag ?
    (03:42:49) Heatra: ^^
    (03:42:55) MozillaBabybird: ja mittag dürfte passen
    (03:42:56) MozillaBabybird: :D
    (03:42:57) Kagurame: ^^
    (03:43:02) Heatra: ich steh morgen eh erst um 5 uhr mittags auf
    (03:43:07) Kagurame: bis heute
    (03:43:11) Steve: MozillaBabybird verlässt den Chat.
    (03:43:15) Kagurame: ich so um 3
    zum Lesen den Text mit der Maus markieren


    Spoiler: Die Informatiker vom Dienst
    (03:05:32) Ankou: bist du dir SICHER, dass es die Performance an der Stelle kritisch ist und c.a. 30% sind KEIN großer Unterschied?
    (03:05:41) Ankou: oh
    (03:05:45) Ankou: okay
    (03:06:21) Asandril: Oh Ha was habt Ihr gerade für ein Thema?
    (03:06:41) Ankou: das ist in der Tat eine performancekritische angelegenheit, aber ich denke dennoch nicht, dass das die Dinge sind auf die du dein Hauptaugenmerk richten solltest.
    (03:07:01) Heatra: maschine
    (03:07:01) Ankou: derartige Mikrooptimierungen werden Performanceprobleme sogut wie niemals beseitigen können
    (03:07:01) Irrlicht: anhand der Tatsache dass es 20 000 000 Durchläufe waren nicht wirklich :-/
    (03:07:08) Ankou: änder was konzeptionelles oder lass es bleiben.
    (03:07:31) Ankou: evtl. kannst du mehr der Interpretation nach vorne verlagern
    (03:08:06) Ankou: aber solche Dinge zu versuchen wie die case Abfragen durch send zu ersetzen in der Hoffnung ein paar Prozent einzusparen bringens dir nicht
    (03:08:26) Asandril: Bin ich gerade hier in einem Kurs gelandet ..
    (03:08:36) Irrlicht: hatte mal in Erwägung gezogen die Befehle evtl. schonmal etwas "vorzuinterpretieren", aber das dürfte dann mehr Speicher verbrauchen als es Geschwindigkeit bringt...
    (03:09:11) Ankou: Asandril: ja, erstaunlich, angetrunken an Silvester über so etwas zu reden
    (03:09:28) Heatra: -> lampenfieber
    (03:09:40) Asandril: Kann ich nur beipflichten.
    (03:09:46) Irrlicht: atm bin ich mir nicht sicher was genau den doch vergleichsweise erheblichen Lag von Parallel-Process-Events verursacht (oder ob es einfach an der gesammten Masse liegt) wenn ich bei 2 000 000 solcher Durchläufe unter einer Sek. bleibe...
    (03:09:57) Ankou: Irrlicht: das ist durchaus üblich. Speicher gegen Geschwindigkeit einzustauschen ist sehr populär und bringt oft viel
    (03:11:23) Irrlicht: mal schaun :)
    zum Lesen den Text mit der Maus markieren


    Spoiler: Auch noch später^^
    (03:32:35) (Kagurame_AnkündigungImForumMach): es da ne methode wie beim xp?
    (03:32:48) Irrlicht: Cache.system("Iconset")
    bekommst das Iconset
    (03:32:50) (Kagurame_AnkündigungImForumMach): brauche es dringend, aber nix gefunden bisher
    (03:33:01) (Kagurame_AnkündigungImForumMach): und dann per id?
    (03:33:06) (Kagurame_AnkündigungImForumMach): drauf zugreifen?
    (03:33:07) Irrlicht: Index berechnet sich einfach aus
    x = index % 16
    y = index / 16
    (03:33:17) Irrlicht: afaik warens 16 nebeneinander^^
    (03:33:28) (Kagurame_AnkündigungImForumMach): ok, danke.
    (03:33:51) (Kagurame_AnkündigungImForumMach): ich glaub ich scripte dann noch ein bissl
    (03:34:01) Steve: (Kagurame_AnkündigungImForumMach​) heißt jetzt Kagurame.
    (03:34:04) Irrlicht: im XP hast die einzelnen Icons anhand des Namens aus dem Icon-Ordner aufgerufen
    (03:34:09) Steve: Kagurame ist nun Scripten!
    (03:34:17) Irrlicht: (geht natürlich im VX auch, aber wozu gibts das Iconset)
    (03:34:23) Kagurame: ja ich weis, daher war ich heut mittag verwirrt
    zum Lesen den Text mit der Maus markieren

Social Bookmarks