PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrere Variablen verwenden?



RandyTheZeldaFan
26.05.2010, 14:35
Hey

hab da mal ne frage wegen den Speichern von Koordinaten....


wenn ich Monster X,Y Variablen speichere, bräucht ich 40 variablen! :eek:

beispiel (namen meiner variablen)
Monster X 1
Monster Y 1
Monster X 2
Monster Y 2
Monster X 3
Monster Y 3
usw.

kann man das net vereinfachen? dass ich net so viele Variablen brauche?

Finalstand
26.05.2010, 15:08
Du brauchst doch nur 3 Variabeln. Wenn du die Position speichern willst. Diese Drei variabeln kann man so oft benutzten wie man will.

RandyTheZeldaFan
26.05.2010, 15:10
wenn ich 8 gegner auf der map habe, kann ich doch keine 3 variablen für alle 8 verwenden,oder?

~Jack~
26.05.2010, 15:14
Natürlich musst du für jeden Gegner auf der Map entsprechend Variablen haben, aber solange du keine Maps mit 20 Gegnern hast brauchst du nicht insgesamt 40 Variablen.
Und selbst wenn gäbe es wirklich schlimmeres. Ist nicht so als wäre die Anzahl der maximalen Variablen so extrem beschränkt.

Finalstand
26.05.2010, 15:14
Doch das geht. Monster 1 hat die Variable X rechnest dazu +1.
Monster2 hat die Variable X und rechnest dazu +1 das Monster hat also die
Nummer 2. Immer so weiter.

(Wenn Ich dich jetzt richtig verstanden habe)

RandyTheZeldaFan
26.05.2010, 15:15
wie mach ich dass dann? durch den Befehl "Store Event ID"? (Benutze RPG Maker 2003)

Finalstand
26.05.2010, 15:18
Also so wie Ich dich verstehe hast du 40 Monster auf ner Karte? Erkär mal bitte was du genau vorhast.

RandyTheZeldaFan
26.05.2010, 15:19
die koordinaten der gegner speichern...das habe ich vor....und das mit 40 monstern auf map war nur beispiel....

ich weiß echt net wie das funzt....3 variablen für alle monster auf einer karte...

kann mir bitte jemand in kurzen schritten sagen wie ich das am besten machn kann?

natix
26.05.2010, 15:37
Du brauchst nur drei Variablen wenn du vorher eine Kollision abgefragt hast. Dann setzt du einfach X-Beliebige Werte in die X- und Y Koordinaten und fragst per "Get Event ID" mit diesen Variablen ab, ob sich ein Event dort befindet. Wenn die Variable "Event ID" dann 1 oder grösser ist, dann befindet sich dort ein Event. Du musst dann nur noch die Fälle ausspielen. Ist Event 3 beispielsweise ein Baum, dann passiert garnichts. Brauchst du also garnicht in das Skript packen. Ist Event 4 ein Gegner, dann spielst du durch was passiert, beispielsweise "Flash Event", "Change Variable" (Schaden/LP des Gegners) usw.

Du kannst aber auch alles in den Events der Gegner selber durchspielen und nach Abfrage der ID einfach per "Call Event ID" den Gegner aufrufen, um das Skripting zu verkürzen.
Im Falle von eingeblendeten Grafiken per Events passiert wieder nichts bei einer Kollision, da sie kein Skript haben. Bei Gegnern dann schon.

RandyTheZeldaFan
26.05.2010, 15:39
ah, ok ich versuchs mal

danke :)

RandyTheZeldaFan
26.05.2010, 16:40
Naja es gibt ein Problem....das solln shooter werden, pfeil und bogen...
da gehn kollisionen net

natix
26.05.2010, 18:10
Aber gerade bei Shootern ist eine Kollisionsabfrage einfach zu machen. Du musst ja nur die Schusslinie in der Richtung in der halt geschossen wird abfragen. Bei einer Nahkampfabfrage ist das komplizierter, aber so musst du nur wie folgt vorgehen:
Frage per Condition die Heldenrichtung (Sprich die Richtung in die der Held guckt) ab und setzt die X und Y Koordinaten erst auf die Position des Heros. Dann gehst du wie folgt vor:
Guckt der Held nach oben, musst du die Y Koordinate immer -1 nehmen, fragst dann die Event ID ab und wiederholst das ganze. Der Held schiesst nach oben. (Y Koordinate bleibt unverändert)
Guckt der Held nach rechts das ganze wie oben, nur das du die X Koordinaten immer +1 nimmst
Guckt er nach unten Y +1
Und nach links X -1

Du musst halt jedes Mal nachdem du die Koordinate verändert hast die Event ID abfragen. Zudem solltest du dir etwas einfallen lassen was die Kollisionsabfrage beendet.

SMWma
26.05.2010, 18:48
ufff.... und nochemal...
Herzlich Welcome ^.^

Okaj: Du brauchst nur drei Variablen, die sich alle Gegner teilen. Ein Pic habe ich dir ja schon gegeben. Ich setze mich heute nochmal mit dem RPG 2k dran, und dann sehen wir es ja, ob ich vielleicht doch nicht was falsch gedacht habe. Aber auf dem XP hatte es ja geklappt xD

Okaj, außerdem brauchst du für jeden Gegner mindestens eine Variable, da du ja fragen musst, wieviel HP er hat. Außer du setzt nach jedem neu Betreten einer Karte sämtliche Variablen wieder auf null. Wo ist denn Tropi, wenn man ihn braucht ^.^

Auf jedem Fall:
Held X/Y → brauchen wir X, bekommt diese Variable X, brauchen wir Y, bekommt sie Y. Aber das wir beide Werte gleichzeitig brauchen, gibt es nicht
Monster X/Y → das gleiche Spiel wie mit Held X/Y, bloß dass jetzt noch zusätzlich alle Monster die Variablen teilen und wir immer nur nach dem Monster fragen, den wir auch fragen wollen/müssen. Und solange wir kein Wait haben, ist dies alles (praktisch) gleichzeitig.

Monster 1(HP) → uih, erklärt sich ja von selbst.

Und hier das alles mit Spieler nach ← von Gegner 1
Den rest müsste man im Prinzip nur kopieren und ein paar Sachen verändern wie X mit Y vertauschen und umgekehrt oder andere EventID.
http://img697.imageshack.us/img697/6905/bildschirmfoto9.png

natix
27.05.2010, 15:25
Held X/Y → brauchen wir X, bekommt diese Variable X, brauchen wir Y, bekommt sie Y. Aber das wir beide Werte gleichzeitig brauchen, gibt es nicht
Kann mir kaum vorstellen das dein Skript so funktioniert hat. Du musst ja den Radius des Schadens berechnen, also eine Kollision abfragen. Dazu brauchst X und Y Koordinaten des Helden. Wenn du nur X abfragst, weil der Held nach links oder rechts gedreht ist, dann liegt der Schadensradius irgendwie auf einer belibeigen Stelle der Y-Achse, je nachdem wie die Koordinate das letzte Mal platziert wurde.

edit:
Selbst in deinem Beispiel fragst du sowohl X als auch Y ab.

SMWma
27.05.2010, 15:30
jep, aber ich benutze für beide Sachen die gleiche Variable. Und das habe ich ja versucht, rüberzubringen. Ich weiß, ich bin nich grad der beste Lehrer xD

natix
27.05.2010, 15:40
Wozu? Bist du zu faul HeroX und HeroY zu schreiben?
Die Koordinaten mehrerer Monster in nur zwei Variablen zu speichern macht ja Sinn, ganz einfach um sich Arbeit zu sparen und nicht alle möglichen Variablen abfragen zu müssen. Aber die Koordinaten des Helden in einer Variable zu speichern macht das Skript nur unnötig kompliziert.

niR-kun
27.05.2010, 17:53
Eins ist mir gerade aufgefallen:
Bitte den Thread ins Technik-Forum (RMXP, RMVX) schieben. :D

SMWma
27.05.2010, 18:43
why? Es geht hier um dem RPG Maker 2k. xD
Mein Screen war nur auf dem XP, weil ich weiß, es gibt zwischen denen kaum Unterschiede und hab dem 2k nimma xD

makenshi
01.06.2010, 10:38
why? Es geht hier um dem RPG Maker 2k. xD
Mein Screen war nur auf dem XP, weil ich weiß, es gibt zwischen denen kaum Unterschiede und hab dem 2k nimma xD

Dann weisst du nichts richtiges. Zwischen dem XP und dem 2k bestehen schon einige Unterschiede was den Eventcode angeht. Besonders da der Output im Fenster nicht derselbe ist.

@Topic
Speichere nur das dauerhaft ab was du auch wirklich brauchst. Wenn du also bspw. 10 Gegner auf der Karte hast von denen du jewals zwei Koordinaten abspeichern musst, frage dich ob das nötig ist da du an die Koordinaten auch anders herankommst, dann brauchst du nun mal 20 Variablen.

Wenn du größere Mengen an Variablen benutzen musst, dann lege sie in Blöcken ab. Reserviere dir einen gewissen Bereich für die Variablen und benenne sie vernünftig.

Bspw.:
0001: Gegner[0].X
0002: Gegner[0].Y
0003: Gegner[1].X
0004: Gegner[1].Y
[...]