Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 20 von 60

Thema: [RM2k3 DynRPG Plugin] Pathfinding

  1. #1

    [RM2k3 DynRPG Plugin] Pathfinding

    Moin moin und hallo,

    ich erstelle nun auf Cherrys Bitte hin hier einen Thread für mein Pathfinding PlugIn, damit es vll ein wenig mehr Aufmerksamkeit bekommt, und andere eventuell ebenso dazu animiert etwas mit diesem wirklich genialen Projekt zu versuchen.

    Wie vll ein paar Leute mitbekommen haben (und in meiner Signatur zu betrachten ist) arbeite ich selbst an einer eigenen Game Engine, und bin derzeit dabei einen Pathfinder für das Projekt zu schreiben. Allerdings ist das ganze durch die unheimlich vielseitigen Features (Pixel genaues Movement, beliebig große Tiles, etc) um einiges schwieriger Umzusetzen als mit den Begrenzungen, die einem der Maker auferlegt. Da ich aber in meinem Projekt das Grundprinzip schon implementiert habe, dachte ich mir, ich portiere es mithilfe des DynRPG auch auf den Maker. Und hier ist das Ergebnis.
    Letzendlich hat mich das ganze ca an die 5-6 Stunden gekostet, mich in das DynRPG einzuarbeiten, mich mit Code Blocks vertraut zu machen, und eben das Pathfinding für den Maker funktionabel zu machen.

    Zitat Zitat
    =====================================
    Pathfinding Plugin for RPG Maker 2003
    For DynRPG version 0.13 or higher
    By anti-freak
    =====================================

    [SCROLL DOWN FOR ENGLISH INSTRUCTIONS!]

    **DEUTSCH**
    ===========

    Dieses DynRPG-Plugin ermöglicht es euch, A*-Pathfinding zu verwenden um Events zu bewegen, d.h. sie finden von selber den Weg von einem Punkt zum anderen, auch wenn Hindernisse im Weg stehen.

    >>> Im "Pathfinder\Source"-Ordner findet ihr den Quellcode dieses Plugins.

    INSTALLATION
    ============

    1) Stellt sicher dass der DynRPG-Patch bei eurem Spiel installiert ist: http://cherrytree.at/dynrpg
    2) Kopiert die pathfinder.dll vom DynPlugins-Ordner des Demoprojekts in den DynPlugins-Ordner eures Spiels.

    KOMMENTARBEFEHLE
    ================

    Folgende Befehle könnt ihr über die "Comment"-Funktion des RPG Makers verwenden:
    (HINWEIS: Ihr könnt auch das Prefix "V" für Parameter benutzen deren Wert aus einer Variable gelesen werden soll. Ihr könnt auch mehr als ein "V"-Präfix verwenden.)

    @FindPath Event-ID, X, Y, Speed, Frequency, MaximaleEntfernung, Erfolg?
    -------------------------------------------------------------------------
    Bewegt ein Event zu einem Zielpunkt und findet von selbst den Weg.

    @FindPath Speed, Frequency, MaximaleEntfernung, Erfolg?
    <Change Event Location> (RPG Maker-Befehl)
    -------------------------------------
    Bewegt das angegebene Event zu den im nachfolgenden "Change Event Location" Makerbefehl angegeben Koordinaten.

    @FindPathOrNearestSpot Event-ID, X, Y, Speed, Frequency, MaximaleEntfernung, Erfolg?
    -------------------------------------------------------------------------
    Bewegt ein Event zu einem Zielpunkt und findet von selbst den Weg. Ist der Zielpunkt nicht erreichbar, wird automatisch der naheligendste Punkt benutzt.

    @FindPathOrNearestSpot Speed, Frequency, MaximaleEntfernung, Erfolg?
    <Change Event Location> (RPG Maker-Befehl)
    -------------------------------------
    Bewegt das angegebene Event zu den im nachfolgenden "Change Event Location" Makerbefehl angegeben Koordinaten.

    Event-ID: ID des zu bewegenden Events, oder "this" für das aktuelle Event bzw. "hero" für den Helden (ohne Anführungszeichen)
    X: X-Koordinate des Zielpunkts auf der Map
    Y: Y-Koordinate des Zielpunkts auf der Map
    Speed: Geschwindigkeit der Bewegung (1 bis 6 oder "default"(ohne Anführungszeichen))
    Frequency: Frequency der Bewegung (1 bis 8 oder "default"(ohne Anführungszeichen))
    MaximaleEntfernung: Gibt die Anzahl der Tiles an, die maximal zurückgelegt werden (Selbst wenn der Weg bis länger ist). Bei 0 wird die komplette Strecke zurück gelegt.
    Erfolg?: Gibt die Variable ID an, an die zurück gegeben wird, ob ein Pfad gefunden wurde, oder nicht (1 bei Erfolg, 0 bei Nichterfolg).


    @GetCurEventID Variablen-ID
    ---------------------------
    Speichert die ID des aktuellen Events in der angegebenen Variable. Für Common Events ist die ID negativ.
    ansonsten heißt es ausprobieren, würde mich über Comments für das ganze freuen

    mfg

    HIER DER DOWNLOAD

    Geändert von DNKpp (26.02.2012 um 23:42 Uhr)

  2. #2
    so, ein kleines feature hinzugefügt, und bisschen was am designe gedreht, neu runter laden lohnt sich

  3. #3
    Find ich eine aboslut super Idee, ganz große Klasse!

    Ich teste es gerade aus, und habe noch ein Problem: Wie funktioniert das mit dem V-Präfix? Ich hab's jetzt über "@CalcPath V2, V3, V4, 3, 8, 1"
    versucht, wobei in Variable 2 die Event-ID, in Variable 3 die X- und in Variable 4 die Y-Koordinate gespeichert ist. Bloß tut sich nichts. ^^°

    Ansonsten... super. Je nach Performance ergeben sich damit so viele neue Möglichkeiten *-*

    Geändert von BDraw (17.02.2012 um 16:36 Uhr)

  4. #4
    Wow! Das ist ein Plugin, das mir wirklich viele Probleme ersparen wird und wirklich extrem nützlich ist!
    So eine Funktion hab ich mir schon seit sehr langer Zeit gewünscht!
    Ich habe es bereits getestet, nur mit einer Sache habe ich Probleme und zwar mit der Möglichkeit nummer 1-
    Ich habe das so gemacht: @CalcPath 0007, 009, 012, 4, 8, 1
    Nur funktioniert das nicht und ich kapiere nicht woran das liegt.

  5. #5
    Habt ihr die neuste Version geladen (vom 16.2 ca 22uhr)? Ansonsten muss ich mal schauen, woran das liegen könnte, bisher keine Idee :-P

  6. #6
    Ja, die neueste Version habe ich.

    Jetzt habe ich außerdem auch einen gravierenden Fehler entdeckt:
    Binde ich in das Ereignis einen Tab oder eine Variabel ein (sie hat nichtmal was damit zu tun)
    schon wird die Person zu der Stelle teleportiert ohne einen Schritt gemacht zu haben!
    So gehts nicht:
    - SCRIPT -
    <> Change Switch: [16] = ON
    <> Change Variable: [10] = X position on map (tiles) of this event
    <> Change Variable: [11] = Y position on map (tiles) of this event
    <> Show Message: Los gehts!!
    <> Comment: @CalcPath 5, 8, 1
    <> Set Event Location: Event #11 -> (19, 26)
    <>
    So gehts:
    - SCRIPT -
    <> Show Message: Los gehts!!
    <> Comment: @CalcPath 5, 8, 1
    <> Set Event Location: Event #11 -> (19, 26)
    <>

  7. #7
    Ok? O.o danke fürs melden, schau ich mir morgen etwas genauer an.

    Nur weiter so, bin über jeden Tester froh ;-P

  8. #8
    Zitat Zitat von Oktorok3 Beitrag anzeigen
    Ja, die neueste Version habe ich.

    Jetzt habe ich außerdem auch einen gravierenden Fehler entdeckt:
    Binde ich in das Ereignis einen Tab oder eine Variabel ein (sie hat nichtmal was damit zu tun)
    schon wird die Person zu der Stelle teleportiert ohne einen Schritt gemacht zu haben!
    So gehts nicht:
    - SCRIPT -
    <> Change Switch: [16] = ON
    <> Change Variable: [10] = X position on map (tiles) of this event
    <> Change Variable: [11] = Y position on map (tiles) of this event
    <> Show Message: Los gehts!!
    <> Comment: @CalcPath 5, 8, 1
    <> Set Event Location: Event #11 -> (19, 26)
    <>
    <>
    also ich hab das jetzt mal genauso versucht, aber bei mir funktioniert alles einwandfrei.

    was meinst du eigentlich mit "tab", einen tab im event? (also ne andere seite)

    Zitat Zitat von BDraw Beitrag anzeigen
    Find ich eine aboslut super Idee, ganz große Klasse!

    Ich teste es gerade aus, und habe noch ein Problem: Wie funktioniert das mit dem V-Präfix? Ich hab's jetzt über "@CalcPath V2, V3, V4, 3, 8, 1"
    versucht, wobei in Variable 2 die Event-ID, in Variable 3 die X- und in Variable 4 die Y-Koordinate gespeichert ist. Bloß tut sich nichts. ^^°

    Ansonsten... super. Je nach Performance ergeben sich damit so viele neue Möglichkeiten *-*
    hab den fehler gefunden, hab ich einen parameter vertauscht
    ich sag bescheid, wenn die neue version online ist.

    Geändert von DNKpp (18.02.2012 um 07:26 Uhr)

  9. #9
    Ich bin grade leider den ganzen Tag nicht in IM online, also @anti-freak schick mir die neue Version per PM dann lad ich sie hoch.

    @Oktorok3: Ich nehme an mit Tab meinst du Switch. Ich verstehe zwar im Moment überhaupt nicht woran das liegen könnte, aber wenn da ein Bug ist, dann muss der in meinem SDK sein... Kannst du uns dein Projekt mal schicken sodass wir nachsehen können ob bei uns der Fehler auch passiert (wenn wir es NACHBAUEN nämlich nicht)?

    mfG Cherry

  10. #10
    Bitte zuerst einen der beiden Samurai anklicken dann den anderen und
    auch mal andersherum testen.
    http://www.share-online.biz/dl/AIOE9LZLO2V

  11. #11
    so, dann mal im richtigen thread...

    Zitat Zitat
    also, ich habs mir jetzt mal angesehen.

    da sind ein paar seltsame effekte drin.

    die objecte bewegen sich nach dem teleport noch auf der route, die sie durch den pathfinder bekommen haben, also liegt der fehler erst mal nicht hier.
    der fehler wird hier irgendwo in "*nextLineId = scriptData->currentLineId + 1;" liegen.

    was mir schonmal komisch vorkommt, in nextLineId steht immer -1, wenn ich es nicht selbst änder.
    dann, LineId ist nicht = scriptData->currentLineId, LineId ist immer eins weniger.

    müssen wir uns mal zusammen setzen, irgendwas passt da nicht :P

  12. #12
    Jo, ich post das auch hier:
    Zitat Zitat
    Naja, ich versteh den Code sowieso nicht, weil ich die Programmiersprache nicht verstehe. Da bringt zusammenzusetzen eher mit Cherry etwas.
    So aber ich würde ja auch außerdem gerne wissen, wie die Möglichkeit Nummer1 einzustellen funktioniert, so das es klappt:
    Zitat Zitat von Oktorok3(von weiter oben)
    nur mit einer Sache habe ich Probleme und zwar mit der Möglichkeit nummer 1-
    Ich habe das so gemacht: @CalcPath 0007, 009, 012, 4, 8, 1

  13. #13
    Zitat Zitat von Oktorok3 Beitrag anzeigen
    Jo, ich post das auch hier:

    So aber ich würde ja auch außerdem gerne wissen, wie die Möglichkeit Nummer1 einzustellen funktioniert, so das es klappt:
    wie gesagt, da habe ich einen fehler bei den parametern gemacht, deswegen funktioniert das leider noch nicht.
    wenn cherry wieder da ist, und wir wissen woran dein anderes phänomen liegt wird er es hochladen (ich kann das nich, is ja seine page :P).

    bis dahin ein bisschen geduld, sollte wohl hoffentlich morgen erledigt sein^^

  14. #14
    Zitat Zitat von anti-freak Beitrag anzeigen
    also, ich habs mir jetzt mal angesehen.

    da sind ein paar seltsame effekte drin.

    die objecte bewegen sich nach dem teleport noch auf der route, die sie durch den pathfinder bekommen haben, also liegt der fehler erst mal nicht hier.
    der fehler wird hier irgendwo in "*nextLineId = scriptData->currentLineId + 1;" liegen.

    was mir schonmal komisch vorkommt, in nextLineId steht immer -1, wenn ich es nicht selbst änder.
    dann, LineId ist nicht = scriptData->currentLineId, LineId ist immer eins weniger.

    müssen wir uns mal zusammen setzen, irgendwas passt da nicht :P
    Ich poste die Antwort hier damit das alle wissen.

    Wie eigentlich in der Dokumentation beschrieben, ist *nextLineId normalerweise -1, was bedeutet dass DynRPG nicht festlegt welche Zeile als nächstes ausgeführt wird, sondern der Maker. Wenn du da was reinschreibst, überschreibst du die Entscheidung des Makers.

    onComment wird ausgeführt nachdem das Comment geparst wurde. Jede Commentzeile ist eine eigene Eventzeile. scriptData->currentLineId steht also normalerweise auf der nächsten Zeile nach der letzten Commentzeile. (Im Gegensatz dazu sollte es in onEventCommand gleich lineId sein).

    Daher überspringt "*nextLineId = scriptData->currentLineId + 1;" eine Zeile.

  15. #15
    ok, es hat mich nicht los gelassen, dass das durch den switch so durcheinander gekommen ist, und ich habe herum probiert.
    schuld ist dann wohl das parrallel process, das du mit dem switch angeschaltet hast, das bringt da irgendwas durcheinander.

    ich habe weiter probiert, und es liegt nicht daran, dass es angeschaltet wurde, sondern generell das es läuft, ergo -> nicht mehr meine baustelle :P

    mfg

  16. #16
    Heißt das, du willst jetzt einfach darüber wegschauen?
    Ich habe jetzt nochmal eine Testversion des Spiels mit diesem Plugin erstellt,
    damit du dir eventuell einen Reim auf die noch existierenden Fehler machen kannst.
    Klick einfach die Events im Spiel an, die sagen was los ist.

    http://www.share-online.biz/dl/DW078PZLUA

  17. #17
    ich will damit sagen, das ich da erstmal nichts machen kann, da der bug in cherrys dll steckt und nicht in meinem plugin.
    ich werde nicht drüber hinwegsehen, deswegen gibts auch erst mal keine neue version, bis das nicht richtig funktioniert.

  18. #18
    sollte kein problem dar stellen

  19. #19
    Wegen der Bugs: Ich hatte leider noch keine Zeit, mir das anzuschauen, tut mir Leid. Mach ich aber bald.

  20. #20
    Kleine, unverschämte Anfrage:
    Wäre es möglich, es so zu gestalten, dass das Plugin nur die ersten X Bewegungen (X=Zahl in einer Variable) ausführt, anstatt den ganzen Weg zurückzulegen? Wie gesagt, wenn es großartige Umstände bereitet, einfach ignorieren, das Plugin selbst ist schon absolut spitze. (:

    Ahja, und ist das Plugin zufällig mit Proceed with Movement kompatibel? Sprich, dass es erst dann weitergeht, wenn die jeweilige Figur fertig mit ihrem Weg ist?

Berechtigungen

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