Hi!
Ich habe einen kleinen Code geschrieben, bei dem ich versuche aus einer Datei Texte und Werte auszulesen und entsprechend auszuwerten. Problem an der Sache ist, daß es beinahe funktioniert, aber ich irgendetwas übersehen muß, da ich versuche 2 verschiedene 3D Modelle auszulesen, aber immer bloß das 2. geladen wird. Das dafür aber dann 2mal... =/
Hier der Code:
// Erstellen der zu ladenden Objekte
TYPE My_Obj
Teile
Modell[]
Textur[]
M_Textur[]
ENDTYPE
// Globalsetzung
GLOBAL DB_Obj[] AS My_Obj
// Maximal 99 Objekte aus der Datenbank gleichzeitig im Bild
DIM DB_Obj[99]
load_ship(1, DB_Obj[0])
WHILE TRUE
X_MAKE3D 1, 1000, 45
X_CAMERA 1, 1000, 0, 0, 0, 0
draw_ship(1)
SHOWSCREEN
WEND
FUNCTION load_ship: schiff, obj AS My_Obj
LOCAL Art$, a_tmp, Art_a$, num, num$, Zufall[], tmp, splits$[], Zuf
// Setzen für späteren Zufallsgenerator
DIM Zufall[1]
// Öffnen der DB - Datei
IF DOESFILEEXIST("data/db/test.dat")
INIOPEN "data/db/test.dat"
ENDIF
// Einlesen der Art des Schiffes
Art$ = INIGET$("db", schiff)
// Einlesen des Stammordners und der Anzahl der Teile
// Einzelteile:
num$ = INIGET$(Art$, Art$)
num = num$
// Übergabe der Teilzahl
obj.Teile = num
// Dimensionierung der einzelnen Objekte
DIM obj.Modell[num + 1]
DIM obj.Textur[num + 1]
DIM obj.M_Textur[num + 1]
// Einlesen der Zufallsgrößen
FOR a_tmp = 1 TO num
REDIM Zufall[a_tmp + 1]
Art_a$ = Art$ + "_" + a_tmp
Zufall[a_tmp] = INIGET$(Art$, Art_a$)
Zuf = RND(Zufall[a_tmp]) + 1
IF Zuf > Zufall[a_tmp] THEN Zuf = Zuf - 1
SPLITSTR(INIGET$(Art$, Art_a$ + "_" + Zuf), splits$[], "|")
// Übergabe der Daten
X_LOADOBJ splits$[0], obj.Modell[a_tmp]
LOADSPRITE splits$[1], obj.Textur[a_tmp]
LOADSPRITE splits$[2], obj.M_Textur[a_tmp]
NEXT
// PRINT obj.Modell$[1], 0,0
// PRINT obj.Textur$[1], 0,10
// PRINT obj.M_Textur$[1], 0,20
// PRINT obj.Teile, 0, 30
//
//
// SHOWSCREEN
//
// KEYWAIT
//
// END
ENDFUNCTION
FUNCTION draw_ship: index
LOCAL a_tmp
X_PUSHMATRIX
FOR a_tmp = 1 TO DB_Obj[index - 1].Teile
X_SETTEXTURE DB_Obj[a_tmp].Textur, DB_Obj[a_tmp].M_Textur
X_MOVEMENT 0, 0, a_tmp * 200
X_DRAWOBJ DB_Obj[a_tmp].Modell, 0
NEXT
X_POPMATRIX
X_PRINT DB_Obj[index - 1].Teile, 200, 0, 0, 0
ENDFUNCTION
Falls jemand einen Fehler findet, werft ihn mir bitte an den Kopf und verprügelt mich damit! Ich suche seit heute in der Früh danach und werde fast wahnsinnig!!!
GLG
W.
schau ich mir nachher mal an !
Danke, ganz lieb! =)
Schreib dir mal mit DEBUG ein paar Zwischenwerte auf die Konsole. Das ist ja superverschachtelt mit deinem Zufall-dingens.
Das habe ich schon! Ich blicke ja selbst nicht mehr durch! =/
Da liegt ja mein Problem, deshalb dachte ich, daß vielleicht jemand anders vielleicht durch blickt! *scherz*
Nein, das Problem ist eine Kleinigkeit, die ich scheinbar übersehe. Und ich weiß bloß noch wo, da er mir eigentlich alles (halbwegs) so macht, wie ich es möchte...
Kannst Du mal die Files auch hochladen??
Dann könnt ich es auch mal laufen lassen und über Debug was finden.
Jawoll! Schon da:
gldb.rar - 0.30MB (http://www.zshare.net/download/305532688f668c/)
Siehe email. Du lädst in die Felder 1...2 und zeigst dann:
FOR num_t = 1 TO BOUNDS(..., 0) -1
was zu folge hat, dass Du nur 1...1 anzeigst. Also eins zu wenig. Ich hab Dir in der Mail das Ding in die Felder
- verschoben, jetzt passt's - oder?
Leider nein...
Anzeigen tut er mir immer noch den Auszug:
pirat_1_2_1
Den dafür aber 2mal! =/