• Anmelden

Cryztal

Knappe

  • »Cryztal« ist der Autor dieses Themas

Motto: Ich mag das Gefühl von völliger Ungezwungenheit. Dann bin ich am besten, würde ich sagen.

  • Nachricht senden

1

Mittwoch, 1. Juli 2015, 21:51

benötige modifizierte version des Pathfinder

Hi zusammen.

Ich nutze derzeit den Pathfinder von Near Fantastica der auch im script Explorer 1.2 zu finden ist.

Das Problem ist das er events nur zu festen x,y koordinaten laufen lässt. Ich benötige allerdings eine Möglichkeit das man variable namen hinschreibt um die events flexibler zu machen. Es wäre äußerst nett wenn mir jemand so eine kleine Modifikation zur Verfügung würde.

LG cryztal
Ich habe kein Talent.
Meister Tentakel besitzt das ganze Talent.

2

Mittwoch, 1. Juli 2015, 22:05

Hallo Cryztal,

Du kannst im CallScript $game_variables[57] schreiben, um den Wert der Varialbe 57 zu bekommen.

Probier das zum Beispiel so:

Ruby Quellcode

1
2
3
$game_player.find_path(
         $game_variables[2],
         $game_variables[3] )

Cryztal

Knappe

  • »Cryztal« ist der Autor dieses Themas

Motto: Ich mag das Gefühl von völliger Ungezwungenheit. Dann bin ich am besten, würde ich sagen.

  • Nachricht senden

3

Mittwoch, 1. Juli 2015, 22:50

Jetzt gibt er mir n Syntax error raus ._.

edit: hups klammer zu vergssen xD
Öhm jetzt bewegt er sich allerdings nicht mehr
Ich habe kein Talent.
Meister Tentakel besitzt das ganze Talent.

4

Mittwoch, 1. Juli 2015, 23:07

Zitat

Öhm jetzt bewegt er sich allerdings nicht mehr
Ist das Ziel vielleicht nicht zu erreichen? Wenn jetzt in den Variablen der Punkt (0|0) zum Beispiel gespeichert ist, aber es ist für die Figur unmöglich diesen Punkt zu betreten, oder gar zu erreichen bewegt sich die Figur auch nicht.

Cryztal

Knappe

  • »Cryztal« ist der Autor dieses Themas

Motto: Ich mag das Gefühl von völliger Ungezwungenheit. Dann bin ich am besten, würde ich sagen.

  • Nachricht senden

5

Mittwoch, 1. Juli 2015, 23:19

Ich hab mal ein testevent erstellt das sich selbst x,y koordinaten zuteilt Und sich random bewegt.
Das andere event hat custom movement und dort den scriptbefehl *self.find_path($game_variables[74], etc.)* es bleibt aber einfach stehen

Edit: und ja der weg is frei die stehen auf offener fläche
Ich habe kein Talent.
Meister Tentakel besitzt das ganze Talent.

6

Samstag, 4. Juli 2015, 17:56

Kannst Du eine Minidemo machen, mit einer Map wo wir uns das mal ansehen können?

Cryztal

Knappe

  • »Cryztal« ist der Autor dieses Themas

Motto: Ich mag das Gefühl von völliger Ungezwungenheit. Dann bin ich am besten, würde ich sagen.

  • Nachricht senden

7

Sonntag, 5. Juli 2015, 00:01

Bin immer noch an mein Handy gebunden ._.
Ich habe kein Talent.
Meister Tentakel besitzt das ganze Talent.

8

Sonntag, 5. Juli 2015, 00:43

Achja... :/

Vielleicht stimmt was mit den Variablen nicht. Um das auszuschließen:
Also dieses CallSkript bewegt den Spieler nicht auf Position (4|5)?

Ruby Quellcode

1
2
3
4
5
ev_id = -1
dx = 4
dy = 5
 
get_character(ev_id).find_path(dx,dy)

Cryztal

Knappe

  • »Cryztal« ist der Autor dieses Themas

Motto: Ich mag das Gefühl von völliger Ungezwungenheit. Dann bin ich am besten, würde ich sagen.

  • Nachricht senden

9

Montag, 6. Juli 2015, 00:48

Hmm nein da passiert nichts :/

Ich lass das übrigens über die moveroute laufen. Deinen test hab ich jetzt aber mit beiden Varianten gemacht. (Es gab ja beide keiten von dem script aus)
Ich habe kein Talent.
Meister Tentakel besitzt das ganze Talent.

10

Montag, 6. Juli 2015, 23:51

Bei MoveRoute musst Du darauf achten, das falls da weitere Befehle drin stehen sowohl die restliche Moveroute als auch zeitgleich das find_path abläuft.

Aber ansonsten: Ich kann den Fehler nicht reproduzieren.
Um sicher zu gehen, dass er wirklich einen Weg findet, füg doch zu testzwecken diese zwei Zeilen noch ein:

Ruby Quellcode

1
2
3
4
5
6
7
8
9
  def find_path(x,y)
    sx, sy = @x, @y
    print("Ich such einen Weg von #{sx},#{sy} nach #{x},#{y}") # Neu
    result = setup_map(sx,sy,x,y)
    @runpath = result[0]
    print("Ich habe einen Weg gefunden.") if @runpath          # Neu
    @map = result[1]
    @map[sx,sy] = result[2] if result[2] != nil
  end

Cryztal

Knappe

  • »Cryztal« ist der Autor dieses Themas

Motto: Ich mag das Gefühl von völliger Ungezwungenheit. Dann bin ich am besten, würde ich sagen.

  • Nachricht senden

11

Mittwoch, 8. Juli 2015, 06:43

Uff. Jetzt bekomme ich nen Syntax error. Vllt wichtig zu erwähnen das ich noch rgss2 benutze.
Ich habe kein Talent.
Meister Tentakel besitzt das ganze Talent.

12

Mittwoch, 8. Juli 2015, 13:15

Zitat

Jetzt bekomme ich nen Syntax error.
Dann hast Du dich beim abschreiben vertippt. ;)

Zitat

Vllt wichtig zu erwähnen das ich noch rgss2 benutze.
Wichtige Info! Du benutzt das Skript also im RPG Maker VX? Hm, aber das sollte da garnicht lauffähig sein, da die Methode Game_Character#passable?, die zum Beispiel ab Zeile 77 mehrfach benutzt wird im RGSS2 anders definiert ist, mit anderer Anzahl an Parametern. Oder hast Du dich vertippt und meintest RGSS3? Benutzt Du dann RGSS3 im RMXP, wie es hier im Forum mal eine Anleitung gab?

Cryztal

Knappe

  • »Cryztal« ist der Autor dieses Themas

Motto: Ich mag das Gefühl von völliger Ungezwungenheit. Dann bin ich am besten, würde ich sagen.

  • Nachricht senden

13

Mittwoch, 8. Juli 2015, 21:31

Ich hab mir jetzt nochmal alles angeschaut, kann aber kein Tippfehler entdecken. Sollte ich die kleine zuvorgenannte Scriptzeile auch noch einfügen? *hust*


Hupps ich meine RGSS102 (das ist zumindes das was hier steht) habe den Maker seit 2006 nicht mehr geupdatet falls das überhaupt relevant ist.
Ich habe kein Talent.
Meister Tentakel besitzt das ganze Talent.

14

Mittwoch, 8. Juli 2015, 23:58

Zitat

Hupps ich meine RGSS102
Achso. Das sollte nicht das Problem sein.

Zitat

Ich hab mir jetzt nochmal alles angeschaut, kann aber kein Tippfehler entdecken. Sollte ich die kleine zuvorgenannte Scriptzeile auch noch einfügen? *hust*
Welche Skriptzeile? Mir ging es darum die beiden print Befehle in das Pathfindingskript einzusetzen, die darüber informieren welche Strecke gesucht und ob eine gefunden wurde.

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

15

Donnerstag, 9. Juli 2015, 00:39

Hi,

Versuchst du zufällig das Event zu einem anderen Event bzw. zum Spieler laufen zu lassen? In dem Fall würde beim Pathfinding kein Weg gefunden weil die Zielposition durch den zweiten Charakter blockiert ist.

Cryztal

Knappe

  • »Cryztal« ist der Autor dieses Themas

Motto: Ich mag das Gefühl von völliger Ungezwungenheit. Dann bin ich am besten, würde ich sagen.

  • Nachricht senden

16

Donnerstag, 9. Juli 2015, 00:44

Oh man ich sollte mir echt so nen dulli Helm kaufen.

Hatte den code als callscript einfach abrufen lassen x.x mache es gleich mal richtig.


Ja genau irrlicht o: kann man das Ändern dass das irgwie trz funzt? :3

Edit: entschuldige bitte playm. Ich wusste nicht das events den Pfad auch blockieren ._.
Ich habe kein Talent.
Meister Tentakel besitzt das ganze Talent.

17

Donnerstag, 9. Juli 2015, 19:47

Du kannst ja auf die X|Y Koordinaten entweder 1 drauf addieren oder 1 abziehen, um das (freie?) Feld links, rechts über oder unter dem Event zu bekommen.
Beim Aufruf der Methode Game_Character#find_path(...) bekommst Du als Rückgabe die Anzahl der Schritte, oder nil, wenn kein Weg gefunden wurde - so kannst Du also prüfen, ob das Event gegebenfalls nochmal losgeschickt werden muss.

Ein Beispiel CallScript, das nur mit den vorhandenen Mitteln auskommt:

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
# Wir schicken den Helden auf den Weg
fd = get_character(-1 )
# Zu Event No.5
tr = get_character( 5 )
# Suche einen Weg zum target, oder zu 
# einem der angrenzenden Felder
r = fd.find_path(tr.x,tr.y)
r = fd.find_path(tr.x+1,tr.y) if !r
r = fd.find_path(tr.x-1,tr.y) if !r
r = fd.find_path(tr.x,tr.y+1) if !r
r = fd.find_path(tr.x,tr.y-1) if !r

Je nach lage kann man aber auch das ursprüngliche Skript erweitern/umschreiben, wenn das nötig ist.

Social Bookmarks