• Anmelden

1

Mittwoch, 24. März 2010, 08:12

Speichern/Laden per Call Script

Hallo
Ich wollte ein Call script machen was z.B in einen show choise event benutzt wird wo steht Spielstand1 und spialstand 2 wenn man dan im Show choise spielstand 1 auswählt und dan bestätigt startet das call script für spielstand 1 und das gleiche bei spiealstand 2.
Das gleiche wollte ich auch zum Laden eines Spiels machen.

Hoffe ihr könnt mir helfen.

MfG
  • Shadows

    Infos folgen
  • TLoZ Master of Seasons

    Bald mehr infos

Motto: Der RPG-Maker ist antiproportional, für Anfänger leicht - für Erfahrene schwer xD

  • Nachricht senden

2

Mittwoch, 24. März 2010, 18:12

Ich bin jetzt zwar nicht so der RGSS-Crack , aber was ich ganz sicher weiß ist, dass das Lademenü NICHT mit Events aufgebaut ist sondern in einem Skript. Warum willst du denn bitte ein CallSkript in ein Skript einbauen???

3

Mittwoch, 24. März 2010, 18:28

Ich hab grad mal die Funktionen aus den Menüskripten zusammen geschnitten:
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
def call_save(index)
 
   file = File.open("Save#{index}.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
 
def call_load(index)
  unless FileTest.exist?("Save#{index}.rxdata")
    return
  end
  file = File.open("Save#{index}.rxdata", "rb")
    # Read character data for drawing save file
    characters = Marshal.load(file)
    # Read frame count for measuring play time
    Graphics.frame_count = Marshal.load(file)
    # Read each type of game object
    $game_system        = Marshal.load(file)
    $game_switches      = Marshal.load(file)
    $game_variables     = Marshal.load(file)
    $game_self_switches = Marshal.load(file)
    $game_screen        = Marshal.load(file)
    $game_actors        = Marshal.load(file)
    $game_party         = Marshal.load(file)
    $game_troop         = Marshal.load(file)
    $game_map           = Marshal.load(file)
    $game_player        = Marshal.load(file)
    # If magic number is different from when saving
    # (if editing was added with editor)
    if $game_system.magic_number != $data_system.magic_number
      # Load map
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
    # Refresh party members
    $game_party.refresh
  file.close
end
zum Lesen den Text mit der Maus markieren


Über de main einfügen und dann mit:

Ruby Quellcode

1
2
call_save(1)
call_load(1)

speichern und laden.

Für den zweiten slot natürlich beim Aufruf die 1 durch eine 2 ersetzen.
Habs nich getestet ich hoffe es funktioniert trotzdem...

4

Mittwoch, 24. März 2010, 20:30

Hallo
@Archelaus bitt lies erstmal richtig dem Text es war die frage wie ich per call script mache das das spiel sofort auf Speicherstand 1 speichert also wie ein eigenes Lade speicher menü in Show Choise!

Lelle ich danke dir sehr für deine Mühe die speichern funktion funktioniert lade habe ich nicht getestet.Ich habe nur ein problem bei mir stürtzt der RGSS Player ab beim speichern(liegt nicht bei dir)aber das ist schon seit dem ich win7 ahbe so.......
Du bekommst auf jedenfall Credits in meinen "Minigame".

MfG
  • Shadows

    Infos folgen
  • TLoZ Master of Seasons

    Bald mehr infos

Reborn

hat beim Stromkonzern schon Rabatt

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

  • Nachricht senden

5

Donnerstag, 25. März 2010, 18:13

So ist schöner und besser... :D Lelle hat alles doppelt gemoppelt.

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
module Quick
  def self.save(index)
    file = File.open("Save#{index}.rxdata", 'wb')
    Scene_Save.new.write_save_data(file)
  end
 
  def self.load(index)
    file = File.open("Save#{index}.rxdata", 'r')
    Scene_Load.new.read_save_data(file)
  end
end
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

Evrey

Oberschurke im Ruhestand

Motto: "Satzzeichen sind keine Rudeltiere." - Chesra

  • Nachricht senden

6

Donnerstag, 25. März 2010, 18:35

Wozu das blöde Modul??? o__O"

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Interpreter
  def save(i)
    File.open("Save#{i}.rxdata",'wb') \
    {|f|
      Scene_Save.new.write_save_data(f)
    }
  end
  def load(i)
    File.open("Save#{i}.rxdata",'rb') \
    {|f|
      Scene_Save.new.read_save_data(f)
    }
  end
end

Danach das in die Callscripts:

Ruby Quellcode

1
2
3
save(id_des_savefiles)
# bzw.
load(id_des_savefiles)
  • :medal: Werbung

    Bild

    Cpp Quellcode

    1
    
    #define TRUE FALSE //Happy debugging suckers
    (Einfach nur wundervoll.)
  • :palette: 1plus3 :cake:

    Bild
  • :fires: Nuuuhminaaah

    Bild
  • :medal: compétences

    mes compétences
    :heart_full: :heart_full: :heart_full: :heart_full: :heart_full: max.
    :ruler-triangle: Maps machen :heart_full: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :media-player: Musik machen :heart_full: :heart-half: :heart-empty: :heart-empty: :heart-empty:
    :cup: Scripts machen :heart_full: :heart_full: :heart_full: :heart_full: :heart-break:
    :paper: Story ausdenken :heart_full: :heart_full: :heart_full: :heart-empty: :heart-empty:
    :cut: Pixeln und so :heart-empty: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :game: Events proggen :heart_full: :heart_full: :heart_full: :heart_full: :heart_full:
    (Dieser Tab ist rein satirisch.)
  • :folder-open: mes projets

    • :addressbook: Silentium
      :book: Name: Silentium
      :rmxp: Maker: Eigenbau (C++, x86-SSE/AVX-Assembly, Ruby/Lua)

      :paper: Story
      :game: NPCs
      :cup: Scripts
      :drill: Ressis
      :ruler-triangle: Maps
      :compile: Gesamt
      (3+4)% 42 69% 0815 -17.438 103.38% ± 6.3mm²

      (Die Tabelle erfüllt lediglich satirische Zwecke.)
    • :compile: Onyx
      Eine in C++ implementierte, modulare, plattformunabhängige, virtuelle Maschine. Die Test-Version ist bereits halb fertig. Ab dann gibt es vielleicht mehr Infos. Sie soll die auf dem ersten Blick LISP-artige und eigens dafür konstruierte Sprache Obsidian ausführen können. Experimentell wird auch ein Lua-Compiler für Onyx gebaut. Ziel ist eine leistungsfähige, virtuelle Maschine für beliebige Scriptsprachen. Theoretisch gesehen müsste man bloß noch einen kompatiblen Compiler schreiben, der Quellcode jener Sprache in Onyx-Assembly, oder direkt in Onyx-Bytecode übersetzt. Ob die jemand nutzen wird, ist eine andere Frage und nur ein sekundäres... nein, eher tertiäres Ziel dieser VM. Primär dient es mir lediglich dazu, mein Verständnis von Hardware, ISA, und Assembly zu vertiefen, sowie eigene Grenzen auszutesten.

      :exclamation: Warnung!
      Das Entwickeln einer virtuellen Maschine oder Programmiersprache (im wahnsinnigsten Fall beides) ist eine höchst komplizierte Tätigkeit, aus der viel Frust und Hirnmatsche hervor gehen. Sollte sich dennoch ein ähnlich wahnsinniger finden, der sowas zusammen schustern will, so lege ich ihm/ihr die folgenden Bücher ans Herz:
      • Compiler - Das Drachenbuch [978-3-8273-7097-6]
        Dieses Buch schlachtet ausführlich und leicht verständlich die Grundlagen bis hoch zu den Experten-Techniken des Compilerbaus aus. Es fängt mit der Automaten-Theorie und formalen Sprachen an, arbeitet sich durch Analysetechniken vor, und landet schließlich bei Techniken wie Optimierung und Register-Zuweisung. Das Buch wiegt 3Kg oder 4Kg. Hab's mal gewogen. Ist also nicht gerade die Lektüre für unterwegs.

      • Computerarchitektur [3-8273-7016-7]
        Hier werden leicht verständlich die wichtigsten Entwicklungen der Rechnerarchitekturen erklärt (Gut, das Buch ist in die Jahre gekommen, aber der Weg zu heute ist ein winziger Schritt, den man sich nach diesem Buch selbst erdenken kann). Hauptbestandteil des Buchs ist eine relativ umfassende Betrachtung der Funktionsweise dreier gänzlich unterschiedlicher, aber dominierender Prozessor-Typen am Beispiel des Pentium II, UltraSPARC II, sowie picoJava. Die meisten Elemente dieses Buchs sind zwar für die Konstruktion einer virtuellen Maschine irrelevant, oder aufgrund der Tatsache, dass die VM Software ist und z.B. Byte-Grenzen hat, sogar zu Leistungseinbußen führen kann, doch ist ein hinreichendes Verständnis dieser Maschinen, mit denen wir arbeiten, äußerst hilfreich für die Überlegungen, wie die VM arbeiten soll.

      Es kann sehr hilfreich und inspirierend sein, den Code quelloffener, virtueller Maschinen anderer Sprachen zu überfliegen. Meine Lieblings-Quelle war und ist stets die VM von Lua. Sie ist schlank, verständlich, in C implementiert, und basiert im Gegensatz zu vielen anderen Scriptsprachen-VMs auf einer Register-Maschine statt einer Stapelmaschine. Es wäre natürlich vorteilhaft, die entsprechende Sprache zu verstehen, in der man auch die eigene VM implementieren will. Weiterhin ist es äußerst vorteilhaft, eine leistungsstarke und bequeme Sprache wie C++ zu beherrschen, um die VM zu implementieren. Und bevor irgendwer auf die Idee kommt: Assembly ist NICHT als dominierende Sprache für den Bau einer VM geeignet. Wer die Frage des "Warum?" nicht beantworten kann, sollte zunächst die gewählte Sprache und Assembly hinreichend verstehen lernen, und es dann erneut mit der Frage versuchen. Es lohnt sich dennoch, Assembly zu lernen. Allein schon, um erneut das Verständnis zu vertiefen, zumal ihr mehr oder weniger gezwungen seid, auch für eure VM eine Assembler-Sprache zu entwickeln (Außer natürlich ihr schreibt eure Test-Programme Bit für Bit ;3).
  • :locale: enfin

    Je ne peux pas parler français.
    C'est tout ce que Goodle et les restes de cours de français.
Signaturstand: 24.07.2013

Reborn

hat beim Stromkonzern schon Rabatt

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

  • Nachricht senden

7

Donnerstag, 25. März 2010, 18:38

Oh ja klar, stimmt und außerdem hab ich bei mir das scheiß file.close vergessen und ich habs nich im Block gemacht o.O... Nimm das von Evrey :D
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

8

Freitag, 26. März 2010, 12:38

joa. War mir nich sicher ob man in Ruby Methoden einfach ohne Objekt dierek in der Klasse refrenzieren kann. So ist es natürlich schöner...

Evrey

Oberschurke im Ruhestand

Motto: "Satzzeichen sind keine Rudeltiere." - Chesra

  • Nachricht senden

9

Freitag, 26. März 2010, 19:54

Ohne Objekt?^^" Ich glaube, du verstehst die tatsächliche Arbeitsweise nicht.

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
MyClass #=> MyClass
# Ein einzelnes Objekt liefert sich selbst, und sei's eine Klasse.
 
MyClass.new() #=> <MyClass:0xAAAAAAAAAAAAAA>
# bzw unter x86
MyClass.new() #=> <MyClass:0xAAAAAAA>
# BasicObject#new() liefert das Objekt der Klasse zurück. Die Hexa-Zahl stellt die Objekt-ID dar.
# Wir können also direkt von BasicObject#new() aus das erstellte Objekt mit all' seinen Methoden verwenden.
 
MyClass.new.inspect() #=> "<MyClass:0xAAAAAAAAAAAAAA>" (String)
# Diese Methode liefert wieder ein Objekt, welches wir theoretisch gesehen weiter verwenden könnten.
 
MyClass.new.inspect.downcase.gsub(/\<(\w+)\:\dx\d+\>/,$1).[](2,5).to_sym() #=> :class
# Aber seien wir ehrlich, solch' eine Methodenkette nutzt keine Sau...^^"
 
# Daher klappt allerdings:
Scene_Save.new.write_save_data(f)
Hinzu kommt, dass in Game_Map oder so bereits eine Instanz vom Interpreter erstellt ist. Aus diesem Grund können wir unsere Callscript-Methoden direkt in diese Klasse schreiben, da der Callscript-Code im Kontext der Instanz vom Interpreter ausgeführt wird. Um's deutlicher zu zeigen:

Ruby Quellcode

1
2
3
4
5
6
7
8
# Klassen-/Variablennamen könnten fehlerhaft sein
$game_map.instance_variable_get(:@map_interpreter).class() #=> Interpreter
 
# Ausführen von Callscripts läuft theoretisch so ab:
Kernel.eval(code,$game_map.instance_variable_get(:@map_interpreter).send(:binding))
# Wobei das "Binding" dem eval sagt "Hey, führe den Code in meinem Kontext aus!"
# In der Praxis ist das Binding unnötig, da der Aufruf von Kernel.eval(s) direkt in der Instanz vom
# Interpreter statt findet.
  • :medal: Werbung

    Bild

    Cpp Quellcode

    1
    
    #define TRUE FALSE //Happy debugging suckers
    (Einfach nur wundervoll.)
  • :palette: 1plus3 :cake:

    Bild
  • :fires: Nuuuhminaaah

    Bild
  • :medal: compétences

    mes compétences
    :heart_full: :heart_full: :heart_full: :heart_full: :heart_full: max.
    :ruler-triangle: Maps machen :heart_full: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :media-player: Musik machen :heart_full: :heart-half: :heart-empty: :heart-empty: :heart-empty:
    :cup: Scripts machen :heart_full: :heart_full: :heart_full: :heart_full: :heart-break:
    :paper: Story ausdenken :heart_full: :heart_full: :heart_full: :heart-empty: :heart-empty:
    :cut: Pixeln und so :heart-empty: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :game: Events proggen :heart_full: :heart_full: :heart_full: :heart_full: :heart_full:
    (Dieser Tab ist rein satirisch.)
  • :folder-open: mes projets

    • :addressbook: Silentium
      :book: Name: Silentium
      :rmxp: Maker: Eigenbau (C++, x86-SSE/AVX-Assembly, Ruby/Lua)

      :paper: Story
      :game: NPCs
      :cup: Scripts
      :drill: Ressis
      :ruler-triangle: Maps
      :compile: Gesamt
      (3+4)% 42 69% 0815 -17.438 103.38% ± 6.3mm²

      (Die Tabelle erfüllt lediglich satirische Zwecke.)
    • :compile: Onyx
      Eine in C++ implementierte, modulare, plattformunabhängige, virtuelle Maschine. Die Test-Version ist bereits halb fertig. Ab dann gibt es vielleicht mehr Infos. Sie soll die auf dem ersten Blick LISP-artige und eigens dafür konstruierte Sprache Obsidian ausführen können. Experimentell wird auch ein Lua-Compiler für Onyx gebaut. Ziel ist eine leistungsfähige, virtuelle Maschine für beliebige Scriptsprachen. Theoretisch gesehen müsste man bloß noch einen kompatiblen Compiler schreiben, der Quellcode jener Sprache in Onyx-Assembly, oder direkt in Onyx-Bytecode übersetzt. Ob die jemand nutzen wird, ist eine andere Frage und nur ein sekundäres... nein, eher tertiäres Ziel dieser VM. Primär dient es mir lediglich dazu, mein Verständnis von Hardware, ISA, und Assembly zu vertiefen, sowie eigene Grenzen auszutesten.

      :exclamation: Warnung!
      Das Entwickeln einer virtuellen Maschine oder Programmiersprache (im wahnsinnigsten Fall beides) ist eine höchst komplizierte Tätigkeit, aus der viel Frust und Hirnmatsche hervor gehen. Sollte sich dennoch ein ähnlich wahnsinniger finden, der sowas zusammen schustern will, so lege ich ihm/ihr die folgenden Bücher ans Herz:
      • Compiler - Das Drachenbuch [978-3-8273-7097-6]
        Dieses Buch schlachtet ausführlich und leicht verständlich die Grundlagen bis hoch zu den Experten-Techniken des Compilerbaus aus. Es fängt mit der Automaten-Theorie und formalen Sprachen an, arbeitet sich durch Analysetechniken vor, und landet schließlich bei Techniken wie Optimierung und Register-Zuweisung. Das Buch wiegt 3Kg oder 4Kg. Hab's mal gewogen. Ist also nicht gerade die Lektüre für unterwegs.

      • Computerarchitektur [3-8273-7016-7]
        Hier werden leicht verständlich die wichtigsten Entwicklungen der Rechnerarchitekturen erklärt (Gut, das Buch ist in die Jahre gekommen, aber der Weg zu heute ist ein winziger Schritt, den man sich nach diesem Buch selbst erdenken kann). Hauptbestandteil des Buchs ist eine relativ umfassende Betrachtung der Funktionsweise dreier gänzlich unterschiedlicher, aber dominierender Prozessor-Typen am Beispiel des Pentium II, UltraSPARC II, sowie picoJava. Die meisten Elemente dieses Buchs sind zwar für die Konstruktion einer virtuellen Maschine irrelevant, oder aufgrund der Tatsache, dass die VM Software ist und z.B. Byte-Grenzen hat, sogar zu Leistungseinbußen führen kann, doch ist ein hinreichendes Verständnis dieser Maschinen, mit denen wir arbeiten, äußerst hilfreich für die Überlegungen, wie die VM arbeiten soll.

      Es kann sehr hilfreich und inspirierend sein, den Code quelloffener, virtueller Maschinen anderer Sprachen zu überfliegen. Meine Lieblings-Quelle war und ist stets die VM von Lua. Sie ist schlank, verständlich, in C implementiert, und basiert im Gegensatz zu vielen anderen Scriptsprachen-VMs auf einer Register-Maschine statt einer Stapelmaschine. Es wäre natürlich vorteilhaft, die entsprechende Sprache zu verstehen, in der man auch die eigene VM implementieren will. Weiterhin ist es äußerst vorteilhaft, eine leistungsstarke und bequeme Sprache wie C++ zu beherrschen, um die VM zu implementieren. Und bevor irgendwer auf die Idee kommt: Assembly ist NICHT als dominierende Sprache für den Bau einer VM geeignet. Wer die Frage des "Warum?" nicht beantworten kann, sollte zunächst die gewählte Sprache und Assembly hinreichend verstehen lernen, und es dann erneut mit der Frage versuchen. Es lohnt sich dennoch, Assembly zu lernen. Allein schon, um erneut das Verständnis zu vertiefen, zumal ihr mehr oder weniger gezwungen seid, auch für eure VM eine Assembler-Sprache zu entwickeln (Außer natürlich ihr schreibt eure Test-Programme Bit für Bit ;3).
  • :locale: enfin

    Je ne peux pas parler français.
    C'est tout ce que Goodle et les restes de cours de français.
Signaturstand: 24.07.2013

10

Samstag, 27. März 2010, 15:00

hm. Hab das "new" übersehen.

Und dann muss ich sagen, dass ich das unschön finde extra das Objekt zu erzeugen nur um eine Methode davon zu verwenden. Obwohl es natülich ne sehr elegante Lösung des Problems ohne viel Code ist.

Ich würde halt befürchten, dass im Konstruktor jede Menge zeug initalisiert wird, was ich gar nicht brauche. Was allerdings nicht der Fall ist, weil die Initialiseirungen in den Scenes ja hauptsächlich in der "main" methode gemacht werden. Das find ich dann persönlich auch wieder unschön *grummel* *murmel*

Ignoriert mich einfach...

Social Bookmarks