Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verfolgen



RandyTheZeldaFan
28.08.2010, 17:44
Hey leute

Ich habe ein folgenscript erstellt:


Change Variable: Held X,Held Y, Mitglied X,Mitglied Y
set event place (Member to Hero)
<LOOP>
set variablen von den 4 koordinaten
abfragen von variablen (obs zu groß oder zu klein ist)
wait 0,1


so is mein script aufgebaut, jetzt gibt es das problem dass der member ein hinderniss für den helden is...und ich möchte auch net dass man das facing des held abfrägt weil es passierte oft dass der member auf dem wasser steht, gibt es irgendwie eine andere alternative, den member immer hinterm helden zu behalten?

Dhan
28.08.2010, 17:51
Schreib erst mal sauberen Pseudocode, in deinem Pseudocode kommt das Facing nicht vor und trotzdem erwähnst du es.

Ansonsten, mach das Ding below Hero, speicher seine Zielposition (abhängig vom Facing) und lass es VERSUCHEN, diese Position zu erreichen (mit gescheiten Move Events)

RandyTheZeldaFan
28.08.2010, 17:53
es darf nicht below hero sein! es sieht so aus als ob der held auf dem member rumtretet...



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



Das is der script, es funktioniert ganz gut nur is halt der member "Vic" im weg


ich möcht auch net dass sich die position des members ändert nur weil der held wo anders blickt

RandyTheZeldaFan
28.08.2010, 19:00
oder eher gesagt, was ist das beste verfolgungsskript

Dhan
28.08.2010, 19:47
Was du machen kannst, is den Krams in ein unsichtbares Event schreiben, den Verfolger auf On Hero Touch stellen und da Code reinhauen a la
Fork Held schaut nach Norden
__Move Event this Start Slip Through Step Down Stop Slip Through
__Move Event Hero Step Up
Fork Held schaut nach Süden.
...

(sprich wenn der Held gegen das Event läuft, führt dieses eine Bewegungssequenz aus, die es mit dem Helden Position tauschen lässt)


(kann sinnvoll sein, dann in die normalen Verfolgungsmoves des Verfolgers annen Anfang ein Stop Slip Through zu hauen, sonst kann der Befehl vom Maker "verschluckt" werden, is ein seltsamer Bug)
(kann hier einen anderen seltsamen Bug geben, wenn der Held direkt auf den NPC zuläuft, probier mal, obs bei dir klappt)

RandyTheZeldaFan
28.08.2010, 19:59
ich habs genau so gemacht ich box immer gegen ihn, er bewegt sich net weg


ich bräuchte unbedingt den script von tohou mother, da laufen die members so wie ichs gern möchte


ich hab alles neu gemacht, und so gemacht wies der script sagte...ich hatte bemerkt, dass das folge-event immer den helden anstößt, da er versucht die selben koordinaten wie der held zu haben

Felski
29.08.2010, 15:15
Mach sie einfach auf Below Hero. Alles andere ist irrsinn!

tohou mother? spiel? makerer? link?

RandyTheZeldaFan
29.08.2010, 15:37
Isn japanisches RPG Maker game...ich kriegs nich zum laufen...

gib einfach in youtube tohou mother ein, es wurde mit rpg maker gemacht und ein eigenes sks hat es ebenfalls

Dhan
29.08.2010, 17:33
Das kannst du wie folgt realisieren:

1 PP-Event, das prüft, ob der Held seine Position verändert hat und wenn ja das mit Facing-Veränderung als neues Ziel des Verfolgers setzt:
Variable X1 = Hero X Coords
Variable Y1 = Hero Y Coords
wait 0.1
Variable X2 = Hero X Coords
Variable Y2 = Hero Y Coords
fork (X1 != X2) { Switch Moved ON }
else { fork (Y1 != Y2) { Switch Moved ON }}
fork (Moved ON) {
__Variable ZielX = X2
__Variable ZielY = Y2
__fork (Hero Face Dir North) {ZielY +=1}
__fork (Hero Face Dir South) {ZielY -=1}
__fork (Hero Face Dir Left) {ZielX +=1}
__fork (Hero Face Dir Right) {ZielX -=1}
__Switch Moved OFF
}

Und dat Verfolger-Event AUF BELOW HERO, das versucht zu ZielX,ZielY zu kommen

Das macht genau das, was wir in dem japanischen Projekt da sehen.

RandyTheZeldaFan
30.08.2010, 16:29
[QUOTE=Dhan;2658102]Das kannst du wie folgt realisieren:

1 PP-Event, das prüft, ob der Held seine Position verändert hat und wenn ja das mit Facing-Veränderung als neues Ziel des Verfolgers setzt:
Variable X1 = Hero X Coords
Variable Y1 = Hero Y Coords
wait 0.1
Variable X2 = Hero X Coords
Variable Y2 = Hero Y Coords
fork (X1 != X2) { Switch Moved ON }
else { fork (Y1 != Y2) { Switch Moved ON }}
fork (Moved ON) {
__Variable ZielX = X2
__Variable ZielY = Y2
__fork (Hero Face Dir North) {ZielY +=1}
__fork (Hero Face Dir South) {ZielY -=1}
__fork (Hero Face Dir Left) {ZielX +=1}
__fork (Hero Face Dir Right) {ZielX -=1}
__Switch Moved OFF
}


ich check durch den script einfach nich durch...
kann ich diesen script auch gleich ins folgen kommando reinhauen? (also da wo varis abgefragt werden und der member halt folgt)

Dhan
30.08.2010, 17:23
Prinzipiell schon, aber ich trenn gerne Move Event-Code und anderen Code, insbesondere wenn dieser waits benötigt wie hier

RandyTheZeldaFan
30.08.2010, 17:26
könntest du mir den script nochmals aufschreiben? ich komm damit net klar und kapiers net...

RandyTheZeldaFan
30.08.2010, 17:47
Ich habs so gemacht, wie ich dein script verstehe...es klappt einfach net der switch bleibt OFF



- SCRIPT -
<> Change Variable: [1] = X position on map (tiles) of hero
<> Change Variable: [2] = Y position on map (tiles) of hero
<> Wait: 0,1 sec.
<> Change Variable: [3] = X position on map (tiles) of hero
<> Change Variable: [4] = Y position on map (tiles) of hero
<> Fork Condition: If Variable [2] != V[4] then ...
. <> Change Switch: [2] = ON
. <>
: End of fork
<> Fork Condition: If Variable [1] != V[3] then ...
. <> Change Switch: [2] = ON
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Switch [2] == ON then ...
. <> Change Variable: [5] = V[3]
. <> Change Variable: [6] = V[4]
. <> Fork Condition: If Hero is facing up then ...
. . <> Change Variable: [6] += 1
. . <>
. : End of fork
. <> Fork Condition: If Hero is facing right then ...
. . <> Change Variable: [6] -= 1
. . <>
. : End of fork
. <> Fork Condition: If Hero is facing down then ...
. . <> Change Variable: [6] -= 1
. . <>
. : End of fork
. <> Fork Condition: If Hero is facing left then ...
. . <> Change Variable: [6] += 1
. . <>
. : End of fork
. <> Change Switch: [2] = OFF
. <>
: End of fork



Und auf dem Event der Folger, Parallel Process:



- SCRIPT -
<> Change Variable: [1] = X position on map (tiles) of hero
<> Change Variable: [2] = Y position on map (tiles) of hero
<> Set Event Location: This event -> (V[1], V[2])
<> Loop
. <> Change Variable: [7] = X position on map (tiles) of this event
. <> Change Variable: [8] = Y position on map (tiles) of this event
. <> Fork Condition: If Switch [2] == ON then ...
. . <> Fork Condition: If Variable [8] > V[6] then ...
. . . <> Move Event: This event, Frq 8, Pattern: Mv down
. . . <>
. . : End of fork
. . <> Fork Condition: If Variable [8] < V[6] then ...
. . . <> Move Event: This event, Frq 8, Pattern: Mv up
. . . <>
. . : End of fork
. . <> Fork Condition: If Variable [7] > V[5] then ...
. . . <> Move Event: This event, Frq 8, Pattern: Mv right
. . . <>
. . : End of fork
. . <> Fork Condition: If Variable [7] < V[5] then ...
. . . <> Move Event: This event, Frq 8, Pattern: Mv left
. . . <>
. . : End of fork
. . <>
. : Else ...
. . <>
. : End of fork
. <> Wait: 0,1 sec.
. <>
: End of loop

RandyTheZeldaFan
30.08.2010, 20:02
was is an meinem skript falsch?

Dhan
30.08.2010, 20:37
Bei mir hats geklappt - hab die Bedingung des Switches trotzdem nochmal geändert weil der Maker doch recht unpräzise ist.
Hier hastes als Projekt:
http://dhan.de/Follower.rar
(Below Hero hab ich geändert in Same Level mit Slip Through permanent an)

(ich denke, du weißt, wie man das um weitere Folger erweitert. Das initiale Teleportieren des Verfolgers sollte beim Erweitern für die neuen Folger ebenfalls auf ZielX,ZielY erfolgen damit sie in Haustüren nicht an unmöglichen Orten stehen)


Wenn es absolut synchron erfolgen soll, wirds schwer - du müsstest den Hero permanent am Laufen hindern und jedesmal, wenn er versucht, zu laufen, die Hindernisse entfernen, ein (unsichtbares) Testprojektil vom Helden nach vorne abfeuern und wenn sich das bewegen konnte, mittels Move Event gleichzeitig Held und Verfolger bewegen. Unnötig kompliziert imho


An deinem Skript ist erstmal falsch, dass du Variable 6 inkrementierst und dekrementierst wo du das mit Variable 5 machen müsstest. Ansonsten müsste es passen.
Dass der Switch nie an ist, ist klar, das ist er nämlich nur für einen Sekundenbruchteil pro Heldenbewegung

RandyTheZeldaFan
30.08.2010, 20:52
asooo....vielen dank