Nochmal ein Prob mit angehängten Types
Übersicht

![]() |
HubsiBetreff: Nochmal ein Prob mit angehängten Types |
![]() Antworten mit Zitat ![]() |
---|---|---|
Tach beisammen.
Ich habe hier seit 3 Tagen eine Denkblokade glaub ich ![]() Ich habe einen Type für die Einheiten mit einem Feld p an welches ich den Type points angehängt habe. Dann werden in einheit\p.points koords gespeichert welche die Einheit nacheinander ablaufen soll. Mit einer Einheit funktioniert das noch, aber wenn es mehr als einen Eintrag in einheit gibt, läuft immer nur die Einheit des letzten einheit-Eintrages die Punkte ab. Nix kapisch? Dann hier mal die Codeteile: Code: [AUSKLAPPEN] Type points
Es soll also für jede Einheit die x und y-Punkte in einheit\p\x und einheit\p\y gespeichert werden. Dann laufen die einzelnen Einheiten ihre Punkte ab, wenn ein Punkt erreicht ist wird er gelöscht.
Field x,y End Type Type einheit Field x,y,typ,action,frame,startframe Field speed#,frametimer Field way,gun,life,doing ; doing: 1=Holz fällen Field name$,go,wahl Field p.points End Type ; Drumherumcode If MouseHit(1) ; Neues Ziel definieren For einheit.einheit=Each einheit If einheit\wahl ; Wenn Einheit ausgewählt For einheit\p=Each points ; Alle alten points der Einheit löschen Delete einheit\p.points Next zielx=(mx+24)/48+xscroll ziely=(my+24)/48+yscroll If map(zielx,ziely)<=400 einheit\doing=0 ; Nichts ausführen If map(zielx,ziely)>611 And map(zielx,ziely)<712 ; Holz fällen einheit\doing=1 Select True Case map(zielx-1,ziely)<=400:zielx=zielx-1 Case map(zielx+1,ziely)<=400:zielx=zielx+1 Case map(zielx,ziely-1)<=400:ziely=ziely-1 Case map(zielx,ziely+1)<=400:ziely=ziely+1 Default einheit\go=False:Goto jump End Select EndIf If map(zielx,ziely)>400 And map(zielx,ziely)<612 ; Nicht begehbar einheit\doing=0 Select True Case map(zielx-1,ziely)<=400:zielx=zielx-1 Case map(zielx+1,ziely)<=400:zielx=zielx+1 Case map(zielx,ziely-1)<=400:ziely=ziely-1 Case map(zielx,ziely+1)<=400:ziely=ziely+1 Default einheit\go=False:Goto jump End Select EndIf If zielx<0 Then zielx=0 If ziely<0 Then ziely=0 PathFinding(Int(einheit\x/48),Int(einheit\y/48),zielx,ziely) For path.path=Each path ; Die Wegpunkte für die einzelenen Einheiten ; kopieren einheit\p.points=New points einheit\p\x=path\node\x*48 einheit\p\y=path\node\y*48 Next EndIf Next EndIf .jump Hoffe mir kann jemand einen Tip geben, ich bin am heulen ![]() Edit: Jetzt geh ich erstmal arbeiten, also nicht böse sein wenn ich vor 22.30 Uhr nicht antworte ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
- Zuletzt bearbeitet von Hubsi am Do, Jun 01, 2006 23:07, insgesamt einmal bearbeitet
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn du eine Type Variable p.point hast, kann da immer nur ein einziges Objekt drin gespeichert werden. Wenn du mehrere haben willst, musst du bei dem Point noch z.B. ein Variable parent.einheit machen, die die einheit enthält zu der der Punkt gehört, und dann alle Points mit for each danach durchsuchen. | ||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo, danke. Das müßte klappen. Manchmal hat man doch echt ein Brett vorm Kopf ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group