also wenn du fehlermeldungen erhältst, muß es an deinem context liegen.
der code läuft jedenfalls in etwa, auch wenn er so keinen richtigen sinn macht. vielleicht hast du beim übertragen/kopieren irgendwas vergessen?
z.b. läuft das hier:
Code: Alles auswählen
#NUMBER_OF_PLAYERS = 4
Structure movingObject
xPos.f
yPos.f
zPos.f
lastTime.l
entity.l
EndStructure
Structure Player Extends movingObject
lives.b
score.l
energy.l
EndStructure
Procedure.f getPlayerX(*p.player, x, currentTime)
ProcedureReturn *p\xPos
EndProcedure
Procedure.f getPlayerY(*p.player, y, currentTime)
ProcedureReturn *p\yPos
EndProcedure
Procedure.f getPlayerZ(*p.player, z, currentTime)
ProcedureReturn *p\zPos
EndProcedure
Procedure.l newPlayer(x, z, y, time)
*new = AllocateMemory(SizeOf(player))
getPlayerX(*new, x, time)
getPlayerZ(*new, z, time)
getPlayerY(*new, y, time)
ProcedureReturn *new
EndProcedure
Global Dim *players.player(#NUMBER_OF_PLAYERS -1)
For i=0 To #NUMBER_OF_PLAYERS -1
*players(i) = newPlayer(300, 300, 200, currentTime)
Next
Procedure renderPlayer(*p.player, currentTime)
Debug getPlayerX(*p,12,currentTime)
Debug getPlayerY(*p,12,currentTime)
Debug getPlayerZ(*p,12,currentTime)
Debug ""
;CameraLocate (0, getPlayerX(*p.player, x, currentTime) - Cos(2*#PI*(rot/360))*15, TerrainHeight(getPlayerX(*p.player, x, currentTime),getPlayerZ(*p.player, z, currentTime))+10, getPlayerZ(*p.player, z, currentTime) + Sin(2*#PI*(rot/360))*15)
;EntityLocate(*p\entity, getPlayerX(*p.player, x, currentTime), TerrainHeight(getPlayerX(*p.player, x, currentTime),getPlayerZ(*p.player, z, currentTime)), getPlayerZ(*p.player, z, currentTime))
EndProcedure
;...
Repeat
currentTime = ElapsedMilliseconds()
For i = 0 To #NUMBER_OF_PLAYERS -1
renderPlayer(*players(i), currentTime)
Next i
Until 1
..du solltest mal die beiden aufrufe von CameraLocate() und EntityLocate() auftrieseln, zumindest zum debuggen. dort ist sicherlich was faul. was im rest deines eigenen codes sonst nicht stimmt, können wir leider nicht erraten.
< ## edit ## >
im übrigen mußt du
beim aufruf der prozeduren nicht unbedingt den variablen-typ für die parameter mit angeben. statt
getPlayerX(*p.player, x, currentTime)
geht auch
getPlayerX(*p, x, currentTime)