Seite 1 von 1

Problem mit Pathfind.dll

Verfasst: 18.08.2009 19:59
von jojo1541
Tag auch.
auf Fluid Bytes hinweis hab ich mir die Pathfind.dll auf http://frabbing.bplaced.net/ runtergeladen und habe jetzt ein Problem.


Ich weiß nicht, ob ich etwas falsch mache, aber irgendwie gibt mir die Dll dauernd aus, dass sie keinen Weg gefunden hat. (Rückgabewert -1 heißt fehler, 0 kein weg gefunden und >0 ist die Anzahl der gefundenen Wege)

Code:

Code: Alles auswählen

;W : Zeiger auf einen Speicherbereich mit der Levelmatrix (Bytes)
;S : Long - Offset des Startfelds  Formel: X-Position + (Y-Position * Breite des Levels)
;Z : Long - Offset des Zielfelds   formel: siehe oben
;C : Long - Bytes des freien Felds (0-255)
;B : Long - Breite des Levels
;H : Long - Höhe des Levels
;P : Zeiger auf einen Speicherbereich für die gefundenen Wegpunkte
;M : Zeiger auf einen Speicherbereich mit Terraindaten (Bytes), oder 0
;Z : Long - Zufalls-Komponente
;- : Long - 0 (nicht belegt)
;F : Long - Flags
;R : Long - Registriernummer 

*buffer = AllocateMemory(1024)


S.l = 6
Z.l = 24
C.l = 0
B.l = 5
H.l = 5
ZU.l = 0
G.l = 0
F.l = 2
R.l = 0

If OpenLibrary(0,"pathfind.dll")

  Debug CallFunction(0,"ki_FindWay",?mapdata,S,Z,C,B,H,*buffer,0,ZU,G,F,R)
  
EndIf



DataSection
mapdata:
  Data.b 1,1,1,1,1
  Data.b 1,0,0,0,1
  Data.b 1,1,0,1,1
  Data.b 1,0,0,0,1
  Data.b 1,1,1,1,1 
EndDataSection
Ich denke mal, dass ich irgendwo was falsch mache, sonst würde die Dll ja einen Weg finden...

Und ja, die Library wird geöffnet.

Verfasst: 18.08.2009 20:35
von Thorium
Ich kenne zwar nicht die Lösung, aber die Variablennamen sind ja mal erstklassig gewählt. :?

Verfasst: 18.08.2009 20:36
von jojo1541
hab ich nur gemacht, weil sie so (bis auf ZU, was für das zweite Z(Zufall) steht) genau den Buchstaben der obigen Erklärung entsprechen.

Verfasst: 18.08.2009 20:45
von Thorium
Ok, ich habs gard mal ausprobiert. Ganz simpel. Du hast den falschen Start und Zielpunkt. Beide liegen auf einer 1. Die 1 bedeutet aber "kein Durchgang" das heisst die KI sitzt schon am Startpunkt fest. Leg sie auf Offsets mit 0.

z.b. 7 und 17

Bei 7 und 17 wären Start und Endpunkt so:
S = Startpunkt
E = Endpunkt

Code: Alles auswählen

  Data.b 1,1,1,1,1
  Data.b 1,S,0,0,1
  Data.b 1,1,0,1,1
  Data.b 1,E,0,0,1
  Data.b 1,1,1,1,1
Nur zum verständnis der Offsets. Du kannst einfach von vorne abzählen.

Verfasst: 18.08.2009 20:54
von jojo1541
Ich dachte mir doch, dass ich irgendwas saudummes falsch gemacht habe habe... :oops:

Danke Thorium