• Anmelden

Tice

ShoutBox Camper

  • »Tice« ist der Autor dieses Themas

Motto: Leider kann ich mir jetzt kein Motto aus dem Kopf ziehen.

  • Nachricht senden

1

Montag, 14. März 2011, 15:04

Lokale variable

Hi.
Ich hab heute mal wieder mit'm RPG Maker XP angefangen.
Und wollte nun mehr Scripts && Codes benutzten. (Coden kann ich, c#,c++ etc)
Naja ich würd gern mal wissen wie ich Lokale variablen von der Instanz und von
der Spieler Instanz ermitteln und ändern lasse.


liebe Grüße , Tice

2

Montag, 14. März 2011, 15:54

Von welcher Instanz?

Die Spielerinstanz ist aufgeteilt - es gibt einmal die Klasse Game_Player, die den Helden auf der Map verwaltet, und Game_Party, die verwaltet wer im Team ist, und weiterer Krimskram wie Geldbestand, Inventar etc.
Wie es in den Scripten steht, werden bei Spielstart Instanzen dieser Klassen in die globalen Variablen $game_party und $game_player gespeichert.

Ich versteh leider nicht was du vorhast, weswegen ich dir nicht weiter helfen kann. Erkläre mal genauer was du vor hast.

Tice

ShoutBox Camper

  • »Tice« ist der Autor dieses Themas

Motto: Leider kann ich mir jetzt kein Motto aus dem Kopf ziehen.

  • Nachricht senden

3

Montag, 14. März 2011, 16:08

Ich würde gerne per script event
die x,y kordinaten von einer Instanz ändern lassen z.b. die von dem Spieler.

4

Montag, 14. März 2011, 16:39

Das sind dann aber Instanzvariablen, keine lokalen Variablen.

Um die Koordinaten eines Events oder des Spielers zu ändern, kannst du die Methode moveto verwenden. Innerhalb des Script-Befehls des Event-Interpreters kannst du das folgendermaßen machen:

Ruby Quellcode

1
2
3
get_character(5).moveto(10, 2) #=> bewegt Event Nummer 5 zu Koordinaten 10/2
get_character(-1).moveto(0, 0) #=> bewegt Spieler zu Koordinaten 0/0
get_character(0).moveto(1, 2) #=> bewegt Event, welches diesen Script-Befehl ausführt, zu Koordinaten 1/2


Ansonsten kannst du auf die Events per $game_map.events[event_id] und auf den Spieler mit $game_player zugreifen. Folgendes ist also auch möglich:

Ruby Quellcode

1
2
$game_player.moveto(5, 2)
$game_map.events[20].moveto(0, 0)
Bild
RMXP Grundkurs
1 2 3
Ruby/RGSS-Kurs

Tice

ShoutBox Camper

  • »Tice« ist der Autor dieses Themas

Motto: Leider kann ich mir jetzt kein Motto aus dem Kopf ziehen.

  • Nachricht senden

5

Montag, 14. März 2011, 17:19

Vielen dank :)

Edit:

Ruby Quellcode

1
2
get_character(0).moveto
($game_player.x, $game_player.y)

Funktioniert nicht warum?
Ruby ist echt komisch :S

6

Montag, 14. März 2011, 17:26

Ist doch logisch. Da in Ruby Klammern optional sind, kann Ruby nicht wissen, dass get_character(0).moveto noch zwei Parameter bekommen soll. Was du schreiben kannst ist:

Ruby Quellcode

1
2
get_character(0).moveto(
$game_player.x, $game_player.y)

Hier sieht Ruby das du eine Klammer öffnest und liest daher die nächsten Zeilen weiter bis es eine schließende Klammer findet.

Alternativ kannst du auch schreiben:

Ruby Quellcode

1
2
get_character(0).moveto \
$game_player.x, $game_player.y

Das \ sagt dem Parser, dass es auf der nächsten Zeile weitergeht.

Generell musst du an manchen Stellen eben umdenken. Du kannst nicht wie in Java/C++/C# an jedem beliebigen Whitespace einen Zeilenumbruch einfügen. Das ist eben der Preis, den man bezahlen muss, wenn man auf einen expliziten Zeilenumbruch verzichtet. Dafür musst du nicht jede Zeile diese lästigen Semikolons setzen.
Bild
RMXP Grundkurs
1 2 3
Ruby/RGSS-Kurs

Social Bookmarks