GLBasic forum

Other languages => GLBasic - de => Topic started by: WPShadow on 2007-Aug-08

Title: Blindheit ist (m)ein Problem
Post by: WPShadow on 2007-Aug-08
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:

Code (glbasic) Select
// 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.
Title: Blindheit ist (m)ein Problem
Post by: Schranz0r on 2007-Aug-08
schau ich mir nachher mal an !
Title: Blindheit ist (m)ein Problem
Post by: WPShadow on 2007-Aug-08
Danke, ganz lieb! =)
Title: Blindheit ist (m)ein Problem
Post by: Kitty Hello on 2007-Aug-09
Schreib dir mal mit DEBUG ein paar Zwischenwerte auf die Konsole. Das ist ja superverschachtelt mit deinem Zufall-dingens.
Title: Blindheit ist (m)ein Problem
Post by: WPShadow on 2007-Aug-09
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...
Title: Blindheit ist (m)ein Problem
Post by: D2O on 2007-Aug-09
Kannst Du mal die Files auch hochladen??
Dann könnt ich es auch mal laufen lassen und über Debug was finden.
Title: Blindheit ist (m)ein Problem
Post by: WPShadow on 2007-Aug-09
Jawoll! Schon da:

gldb.rar - 0.30MB (http://www.zshare.net/download/305532688f668c/)
Title: Blindheit ist (m)ein Problem
Post by: Kitty Hello on 2007-Aug-09
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
Title: Blindheit ist (m)ein Problem
Post by: WPShadow on 2007-Aug-09
Leider nein...

Anzeigen tut er mir immer noch den Auszug:

pirat_1_2_1

Den dafür aber 2mal! =/