Ergebnis 1 bis 16 von 16

Thema: Folge Skript

  1. #1

    Folge Skript

    Hallo Community

    Früher hatte ich sehr sehr viel Kenntnis und Wissen über den RPG Maker2003...leider ging mir das Know-How leider verloren und bekomm nicht mal ein anständigen Folge-Skript hin! Ich habe seit 3 Jahren nichtmehr mit dem RPG Maker 2003 gearbeitet und sehe schon meine Schwierigkeiten...
    Ich kann zwar durch die Koordinaten des Helden und des Events ein folge-skript bauen, bloß passiert es, dass andauernd der folgende "Im" Held drin steht....

    Wenn ich mich wieder etwas mit dem Rm2k3 befasse, kommt mein Know-How wieder


    Könnt ihr mir helfen?

    Geändert von RandyTheMaker (04.03.2014 um 20:38 Uhr)

  2. #2
    So gehen wir mal davon aus das du es hinkriegst den NPC zum Helden zu porten, das mit dem Folgen hast du ja schon hingekriegt, am einfachsten ist das ja wenn der NPC eine gewisse Geschwindigkeit hat und man einfach abfragt ob der Held oberhalb unterhalb... etc des Helden ist und ihn dann bewegt.

    Wenn man nun verhindern will das der NPC im Helden steht, einfach X_NPC - X_Held und Y_NPC - Y_Held sollte bei einer Rechnung eine 1 oder -1 rauskommen weißt du das der NPC genau 1 Feld vorm Helden steht (Vorrausgesetzt das bei der anderen Rechnung eine 0 rauskommt .-.), ansonsten ginge auch das du einfach das Umfeld des NPCS nach dem Helden absuchst.
    Nun wenn wir genau ein Feld vorm Helden stehen, bewegen wir ihn einfach nicht, man könnte den NPC ja noch zur verschönerung zum Helden sehen lassen damit es nicht passiert das der NPC eine Wand anschaut...

  3. #3
    Jetzt ist die Frage, wie mach ich das am besten?
    Ich habe eine eigene Event Seite wo durch ein Switch die Parallel Process aktiviert wird (FOLGEN ON/OFF)
    wenn ich die variablen abziehe, zieht es mir die Variable immer wieder ab...

  4. #4
    Zeig mal deine Eventseite, so kann ich dir nicht helfen XD...

    Zudem kann es sein das meine Lösung viel zu kompliziert ist, ich glaube du musst einfach das Event auf Same Layer as Hero setzen, dann sollte es nichtmehr über den Helden laufen. Da bin ich mir nicht so sicher, lange nicht mehr mit dem Maker gearbeitet ._.

  5. #5
    Zitat Zitat von djeurissen Beitrag anzeigen
    Zudem kann es sein das meine Lösung viel zu kompliziert ist, ich glaube du musst einfach das Event auf Same Layer as Hero setzen, dann sollte es nichtmehr über den Helden laufen. Da bin ich mir nicht so sicher, lange nicht mehr mit dem Maker gearbeitet ._.
    Dann sollte man allerdings im Move Event den Phasing Mode auf On stellen, damit sich der Spieler nicht selbst in eine Sackgasse steuern und den Rückweg mit der eigenen Party blockieren kann. Das wäre dann etwa so, wie man es aus Vampires Dawn 2 kennt.
    Alternativ könnte man das auch nur bei OnHeroTouch machen (ähnlich wie bei Pokemon Gelb bzw. HG/SS, wo man im Prinzip einmal gegen das Pokemon rennen muss, um mit ihm dann den Platz zu tauschen), müsste dann den Prozess, der den Char normalerweise bewegt aber irgendwohin anders auslagern.

    @Randy:
    Mal aus dem Kopf, wie ich das angehen würde (achtung, Pseudocode):
    Code:
    #Vergleicht die Position des Chars mit der des Helden
    <>Set Var[1] = Char-X-Coordinate
    <>Var[1] - Hero-X-Coordinate
    <>Set Var[2] = Char-Y-Coordinate
    <>Var[2] - Hero-Y-Coordinate
    #Schaut, wie weit Char und Held insgesamt voneinander entfernt sind
    <>Set Var[3] = Var[1]
    <>If Var[3] < 0
    ..<>Var[3] * -1
    :END CASE
    <>If Var[2] < 0
    ..<>Var[3] - Var[2] 
    :ELSE CASE
    ..<>Var[3] + Var[2] 
    :END CASE
    #Befinden die zwei sich weiter als 1 Feld voneinander entfernt, wird der Char bewegt
    <>If Var[3] > 1
    ..<>If Var[1] < 0
    ....<>Move Event [this]: Phasing Mode ON, left
    ..:END CASE
    ..<>If Var[1] > 0
    ....<>Move Event [this]: Phasing Mode ON, right
    ..:END CASE
    ..<>If Var[2] < 0
    ....<>Move Event [this]: Phasing Mode ON, down
    ..:END CASE
    ..<>If Var[2] > 0
    ....<>Move Event [this]: Phasing Mode ON, up
    ..:END CASE
    :END CASE
    <>Wait 0.0
    Das ganze als Parallel Process in den jeweiligen Char. Ist jetzt nicht getestet, aber es sollte funktionieren.
    Da fällt mir mal wieder ein, dass der nächste Maker eine Betrags-Funktion haben sollte. Das würde Abfragen ersparen.

    Geändert von BDraw (05.03.2014 um 17:21 Uhr)

  6. #6
    Wie kann ich nochmals Skripts hier einfügen? Soweit ich weiß gab es ja ein Programm womit man die Skripts posten konnte....

    Achja, ich hab es jetzt geschafft, mein Event dem Held zu folgen, nur leider ein problem:

    wenn ich jetzt beispielsweise mein held nach unten gehe lasse,weiß ja das folgende event gar nicht in welche richtung er gehen soll, wenn dieser entweder rechts oder links neben dem held positioniert ist

    Geändert von RandyTheMaker (05.03.2014 um 17:24 Uhr)

  7. #7
    Mit dem Easy Event Exporter von Cherry.

    Mir fällt allerdings auch gerade ein Denkfehler meinerseits auf. Mit dem Script läuft der Char eher neben dem Helden her als hinterher... Ups. :P
    So klappt's:
    Code:
    #Bestimmt die Position HINTER dem Helden anhand der Blickrichtung
    <>Set Var[1] = Hero-X-Coordinate
    <>Set Var[2] = Hero-Y-Coordinate
    <>If Hero faces up:
    ..<>Var[2] + 1
    :Else case
    ..<>If Hero faces down:
    ....<>Var[2] - 1
    ..:Else case
    ....<>If Hero faces right:
    ......<>Var[1] - 1
    ....:Else case
    ......<>If Hero faces left:
    ........<>Var[1] + 1
    ......:End case
    ....:End case
    ..:End case
    :End case
    
    #Schaut, wie weit Char und Held insgesamt voneinander entfernt sind
    <>Var[1] - this Event-X-Coordinate
    <>Var[2] - this Event-Y-Coordinate
    
    #Wenn der Char sich nicht direkt hinter dem Helden befindet, wird er bewegt.
    <>If Var[1] < 0
    ..<>Move Event [this]: Phasing Mode ON, right
    :END CASE
    <>If Var[1] > 0
    ..<>Move Event [this]: Phasing Mode ON, left
    :END CASE
    <>If Var[2] < 0
    ..<>Move Event [this]: Phasing Mode ON, down
    :END CASE
    <>If Var[2] > 0
    ..<>Move Event [this]: Phasing Mode ON, up
    :END CASE
    <>Wait 0.0
    Im ersten Schritt werden Koordinaten des Feldes hinter dem Helden bestimmt. Dann wird geschaut, ob die Position des Chars auf den Achsen abweicht. Abschließend wird der Char dann enstprechend bewegt.

    Geändert von BDraw (05.03.2014 um 17:35 Uhr)

  8. #8
    Zitat Zitat von EasyEventExporter
    - SCRIPT -
    <> Set Event Location: This event -> (V[1], V[2])
    <> Loop
    . <> Change Variable: [3] = X position on map (tiles) of event #1
    . <> Change Variable: [4] = Y position on map (tiles) of event #1
    . <> Change Variable: [3] -= V[1]
    . <> Change Variable: [4] -= V[2]
    . <> Change Variable: [18] = V[3]
    . <> Change Variable: [19] = V[4]
    . <> Move Event: This event, Frq 8, Pattern: Phas. mode on
    . <> Fork Condition: If Variable [18] == -1 then ...
    . . <> Move Event: This event, Frq 8, Pattern: <none>
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [18] == 1 then ...
    . . <> Move Event: This event, Frq 8, Pattern: <none>
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [19] == -1 then ...
    . . <> Move Event: This event, Frq 8, Pattern: <none>
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [19] == 1 then ...
    . . <> Move Event: This event, Frq 8, Pattern: <none>
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [18] == -2 then ...
    . . <> Move Event: This event, Frq 8, Pattern: Phas. mode on, Mv right
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [19] == -2 then ...
    . . <> Move Event: This event, Frq 8, Pattern: Phas. mode on, Mv down
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [18] == 2 then ...
    . . <> Move Event: This event, Frq 8, Pattern: Phas. mode on, Mv left
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [19] == 2 then ...
    . . <> Move Event: This event, Frq 8, Pattern: Phas. mode on, Mv up
    . . <>
    . : End of fork
    . <>
    : End of loop
    ich habe zuerst das event zum held teleportieren lassen, und durch ein loop verhindere ich, dass das event laufend zum helden teleportiert wird.

  9. #9
    Ich hab mein Script eben noch in den letzten Post reineditiert, schau es dir mal an. Ist im Prinzip das was du gemacht hast, bloß ohne etwas zusätzlichen Ballast.

    Was dein Script betrifft:
    Du hast genau das Problem, was ich bei dem Script übersehen hatte, das ich ursprünglich gepostet hatte. Zielposition ist nicht der Held selbst, sondern das Feld hinter dem Helden. Außerdem brauchst du deine ersten 4 Abfragen nicht: Du musst dem Maker in der Regel nicht extra sagen, dass er nichts tun soll.

    Außerdem würde ich an deiner Stelle weniger mit exakten Angaben bei den Abfragen arbeiten - wenn durch irgendetwas der Char mal auch nur ein Feld weiter weg ist, läuft das Script nicht mehr. Größer und kleiner als-Abfragen sind da robuster.

  10. #10
    und wie sieht es denn aus, wenn du mit dem charakter nach unten läufst (folge event links neben held) und das event ein schritt nach rechts gehen sollte damit er wieder direkt hinter dem held ist?
    und vor allem möchte ich mehrere events (um genau zu sein 6 events) dem held hinterherlaufen lassen, muss ich da jetzt (Varis für Koordinaten des einzelnen events ausgeschlossen) immer neue Variablen verwenden oder kann ich einfach das event kopieren was ich habe?

    Geändert von RandyTheMaker (05.03.2014 um 17:52 Uhr)

  11. #11
    Siehe das Script, das ich gepostet habe.

    Der Held läuft nach unten, ergo guckt er nach unten. Der Maker berechnet das Feld hinter dem Helden. Der Maker schickt den Char auf die Reise. Zur Verdeutlichung übertrieben ausgedrückt: Wohin der Held läuft interessiert eigentlich nicht, wichtig ist bloß, wohin er guckt und wo somit "hinter ihm" liegt. Das erreichst du, indem du die aktuellen Koordinaten bestimmst und abhängig von der Blickrichtung auf die jeweilige Achse 1 addierst oder subtrahierst.

    EDIT:
    Nope, du musst immer neue Variablen nehmen. Die Abfragen laufen ja gleichzeitig und dabei immer mit völlig anderen Werten. Denk außerdem daran, dass nur der erste "Follower" sich am Feld hinter dem Helden orientiert - Char2 orientiert sich an dem Feld hinter Char1, usw.
    Das heißt naja, es gäbe die Möglichkeit, das zu komprimieren. Aber ich weiß nicht, ob sich das hier lohnt. Ich editier's gleich rein, Sekunde.

    Geändert von BDraw (05.03.2014 um 18:00 Uhr)

  12. #12
    Ist dann nicht das problem, dass sich das event bewegt, je nach blickrichtung und nicht nach schritte?

  13. #13
    Probier es doch einfach mal aus, dann wirst du sehen, dass es geht. Es wird ja nicht nur die Blickrichtung abgefragt, die bestimmt lediglich, in welcher Richtung das Zielfeld liegt. Da das relativ zur Position des Helden ist, verändert sich dieses Ziel auch nur, wenn der Held sich bewegt.

    Was das Auslagern angeht, das würde glaube ich zu kompliziert werden. Ich meinte mich zu erinnern, dass "this Event" als Befehl auch per Call Event übertragen werden kann, aber ich kriege beim Testen eine Fehlermeldung. Der Umweg wäre aber am Ende fast länger als das eigentliche Script, da bist du besser dran, einmal die zwei Variablen pro Event zu ändern.

    Geändert von BDraw (05.03.2014 um 18:11 Uhr)

  14. #14
    ich habs wie in deinem skript gemacht, das event läuft irgendwo umher.
    Zitat Zitat von EasyEventExporter
    - SCRIPT -
    <> Move Event: This event, Frq 8, Pattern: Phas. mode on
    <> Set Event Location: This event -> (V[1], V[2])
    <> Loop
    . <> Move Event: This event, Frq 8, Pattern: Phas. mode on
    . <> Change Variable: [1] = X position on map (tiles) of hero
    . <> Change Variable: [2] = Y position on map (tiles) of hero
    . <> Fork Condition: If Hero is facing up then ...
    . . <> Change Variable: [2] += 1
    . . <> Wait: 0,0 sec.
    . . <>
    . : End of fork
    . <> Fork Condition: If Hero is facing down then ...
    . . <> Change Variable: [2] -= 1
    . . <> Wait: 0,0 sec.
    . . <>
    . : End of fork
    . <> Fork Condition: If Hero is facing left then ...
    . . <> Change Variable: [1] += 1
    . . <> Wait: 0,0 sec.
    . . <>
    . : End of fork
    . <> Fork Condition: If Hero is facing right then ...
    . . <> Change Variable: [1] -= 1
    . . <> Wait: 0,0 sec.
    . . <>
    . : End of fork
    . <> Change Variable: [1] -= X position on map (tiles) of this event
    . <> Change Variable: [2] -= Y position on map (tiles) of this event
    . <> Wait: 0,0 sec.
    . <> Fork Condition: If Variable [1] > 0 then ...
    . . <> Move Event: This event, Frq 8, Pattern: Mv right
    . . <> Wait: 0,0 sec.
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [1] < 0 then ...
    . . <> Move Event: This event, Frq 8, Pattern: Mv left
    . . <> Wait: 0,0 sec.
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [2] < 0 then ...
    . . <> Move Event: This event, Frq 8, Pattern: Mv up
    . . <> Wait: 0,0 sec.
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [2] > 0 then ...
    . . <> Move Event: This event, Frq 8, Pattern: Mv down
    . . <> Wait: 0,0 sec.
    . . <>
    . : End of fork
    . <> Wait: 0,0 sec.
    . <>
    : End of loop

    Das ist mein Skript, und der funktioniert einwandfrei, ohne Probleme.

    Zitat Zitat von EasyEventExporter
    - SCRIPT -
    <> Set Event Location: This event -> (V[1], V[2])
    <> Loop
    . <> Change Variable: [3] = X position on map (tiles) of event #1
    . <> Change Variable: [4] = Y position on map (tiles) of event #1
    . <> Change Variable: [3] -= V[1]
    . <> Change Variable: [4] -= V[2]
    . <> Change Variable: [18] = V[3]
    . <> Change Variable: [19] = V[4]
    . <> Move Event: This event, Frq 8, Pattern: Phas. mode on
    . <> Fork Condition: If Variable [18] == -1 then ...
    . . <> Move Event: This event, Frq 8, Pattern: <none>
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [18] == 1 then ...
    . . <> Move Event: This event, Frq 8, Pattern: <none>
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [19] == -1 then ...
    . . <> Move Event: This event, Frq 8, Pattern: <none>
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [19] == 1 then ...
    . . <> Move Event: This event, Frq 8, Pattern: <none>
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [18] == -2 then ...
    . . <> Move Event: This event, Frq 8, Pattern: Phas. mode on, Mv right
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [19] == -2 then ...
    . . <> Move Event: This event, Frq 8, Pattern: Phas. mode on, Mv down
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [18] == 2 then ...
    . . <> Move Event: This event, Frq 8, Pattern: Phas. mode on, Mv left
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [19] == 2 then ...
    . . <> Move Event: This event, Frq 8, Pattern: Phas. mode on, Mv up
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [18] == -1 then ...
    . . <> Fork Condition: If Variable [19] == 1 then ...
    . . . <> Fork Condition: If Hero is facing up then ...
    . . . . <> Move Event: This event, Frq 8, Pattern: Mv right
    . . . . <>
    . . . : End of fork
    . . . <> Fork Condition: If Hero is facing right then ...
    . . . . <> Move Event: This event, Frq 8, Pattern: Mv up
    . . . . <>
    . . . : End of fork
    . . . <> Wait: 0,0 sec.
    . . . <>
    . . : End of fork
    . . <> Wait: 0,0 sec.
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [18] == 1 then ...
    . . <> Fork Condition: If Variable [19] == -1 then ...
    . . . <> Fork Condition: If Hero is facing down then ...
    . . . . <> Move Event: This event, Frq 8, Pattern: Mv left
    . . . . <>
    . . . : End of fork
    . . . <> Fork Condition: If Hero is facing left then ...
    . . . . <> Move Event: This event, Frq 8, Pattern: Mv down
    . . . . <>
    . . . : End of fork
    . . . <> Wait: 0,0 sec.
    . . . <>
    . . : End of fork
    . . <> Wait: 0,0 sec.
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [18] == 1 then ...
    . . <> Fork Condition: If Variable [19] == 1 then ...
    . . . <> Fork Condition: If Hero is facing left then ...
    . . . . <> Move Event: This event, Frq 8, Pattern: Mv up
    . . . . <>
    . . . : End of fork
    . . . <> Fork Condition: If Hero is facing up then ...
    . . . . <> Move Event: This event, Frq 8, Pattern: Mv left
    . . . . <>
    . . . : End of fork
    . . . <> Wait: 0,0 sec.
    . . . <>
    . . : End of fork
    . . <> Wait: 0,0 sec.
    . . <>
    . : End of fork
    . <> Fork Condition: If Variable [18] == -1 then ...
    . . <> Fork Condition: If Variable [19] == -1 then ...
    . . . <> Fork Condition: If Hero is facing right then ...
    . . . . <> Move Event: This event, Frq 8, Pattern: Mv down
    . . . . <>
    . . . : End of fork
    . . . <> Fork Condition: If Hero is facing down then ...
    . . . . <> Move Event: This event, Frq 8, Pattern: Mv right
    . . . . <>
    . . . : End of fork
    . . . <> Wait: 0,0 sec.
    . . . <>
    . . : End of fork
    . . <> Wait: 0,0 sec.
    . . <>
    . : End of fork
    . <> Wait: 0,0 sec.
    . <>
    : End of loop

    bloß ist die frage, wie gebe ich diese Variablen dem nächsten Event (als 3. in der reihe) weiter?

  15. #15
    Zitat Zitat von RandyTheMaker Beitrag anzeigen
    ich habs wie in deinem skript gemacht, das event läuft irgendwo umher.
    Interessant. Bei mir läuft es reibungslos, ich kann aber gerade auch nicht erkennen, was du anders gemacht hast. Hast du evtl. noch ein anderes Script gleichzeitig laufen, welches auf die Variablen oder das Event zugreift?

    Was dein Script angeht müsste ich mir das mal gründlicher ansehen, ich steig auf Anhieb jetzt durch den Wall nicht ganz durch.

  16. #16
    naja ich habe noch ein Common Event laufen, welches die Helden Koordinaten mit einem Wait ständig abfragt, sonst laufen keine weiteren dinge im hintergrund.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •