Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Topzombie

Pages: [1]
1
Bug Reports / NewtonSDK Wrapper Error
« on: 2010-Apr-15 »
Seit gestern bekomme ich wenn ich etwas mit dem NewtonSDK Wrapper kompilieren will diese Fehlermeldung (die auf die oberste Funktion verweist):

Quote
*** Configuration: WIN32 ***
precompiling:
GPC - GLBasic Precompiler V.6.911 SN: 4070315 - 3D, NET
"..\NewtonSDK.gbas"(295) error : command not inside function or sub

Am Code habe ich nichts geändert.


[attachment deleted by admin]

2
Math / ROT47 decoder/encoder
« on: 2010-Apr-11 »
Function
Code: (glbasic) [Select]
FUNCTION ROT47$: TextInput$
LOCAL TextLen, convertedText$
LOCAL ROT47NumberThing
TextLen=LEN(TextInput$)
FOR ABC=0 TO TextLen-1
IF((ASC(MID$(TextInput$, ABC, 1))<127) AND (ASC(MID$(TextInput$, ABC, 1))>32))
IF(ASC(MID$(TextInput$, ABC, 1))+47 > 126)
ROT47NumberThing=(ASC(MID$(TextInput$, ABC, 1))+47)-127
convertedText$=convertedText$+CHR$(33+ROT47NumberThing)
ELSE
convertedText$=convertedText$+CHR$(ASC(MID$(TextInput$, ABC, 1))+47)
ENDIF
ELSE
convertedText$=convertedText$+MID$(TextInput$, ABC, 1)
ENDIF
NEXT
RETURN convertedText$
ENDFUNCTION







Example:
Code: (glbasic) [Select]
GLOBAL String$, TextFileSize, ASCIIFileSize, ASCII$, InputStr$
GLOBAL Output$
PRINT "Type !input or a Text",10,10
INPUT InputStr$,10,20
IF InputStr$="!input"
TextFileSize=GETFILESIZE("input.txt")
OPENFILE(1, "input.txt", 1)
READSTR 1, String$, TextFileSize
CLOSEFILE 1
Output$=ROT47$(String$)
ELSE
String$=InputStr$
Output$=ROT47$(String$)
ENDIF
OPENFILE(1, "output.txt", 0)
WRITELINE 1, Output$
CLOSEFILE 1
PRINT Output$,10,10
SHOWSCREEN
KEYWAIT
END


FUNCTION ROT47$: TextInput$
LOCAL TextLen, convertedText$
LOCAL ROT47NumberThing
TextLen=LEN(TextInput$)
FOR ABC=0 TO TextLen-1
IF((ASC(MID$(TextInput$, ABC, 1))<127) AND (ASC(MID$(TextInput$, ABC, 1))>32))
IF(ASC(MID$(TextInput$, ABC, 1))+47 > 126)
ROT47NumberThing=(ASC(MID$(TextInput$, ABC, 1))+47)-127
convertedText$=convertedText$+CHR$(33+ROT47NumberThing)
ELSE
convertedText$=convertedText$+CHR$(ASC(MID$(TextInput$, ABC, 1))+47)
ENDIF
ELSE
convertedText$=convertedText$+MID$(TextInput$, ABC, 1)
ENDIF
NEXT
RETURN convertedText$
ENDFUNCTION

3
Inline / 3rd party / SEEDRND fix
« on: 2010-Mar-10 »
Sometimes (keywait programs etc...) RND isn't working correctly.
This function fix the "bug".
Code: (glbasic) [Select]
FUNCTION SeedRNDConsole:
LOCAL TickCount
INLINE
    DECLARE_C_ALIAS(GLBGetTickCount,"kernel32.dll", "GetTickCount",(),int);
    TickCount = GLBGetTickCount();
ENDINLINE
SEEDRND TickCount
ENDFUNCTION

4
Code: (glbasic) [Select]
//Hallo Leute,
//Ich habe keine Kameratutorials gefunden und
//da ich Kameras und die flüssige Bewegung in alle Richtungen am Anfang auch schwer fand
//habe ich dieses Tutorial geschrieben.
//Das ist mein erstes Tutorial und darum ist es nicht perfekt (außerdem bin ich selber noch ein Anfänger in GLBasic)
//Ich hoffe trotzdem das es euch gefällt und es jemandem hilft Bewegungen in Ego Shootern besser verstehen zu können.


// --------------------------------- //
// Project: [3D Ego"Shooter"] Kamera, Bewegung, Kollision
// Start: Monday, March 8, 2010
// IDE Version: 7.250


// SETCURRENTDIR("Media") // seperate media and binaries?


//Das lädt die Textur für die Box in der der Spieler später mal laufen soll
//Es wird zwar nicht zwingend benötigt, aber mit Textur kann man die Wände der Box besser sehen
LOADSPRITE "test.bmp",0
//Type für die Kamera Position und Blickrichtung
TYPE Pos
X
Y
Z
XLook
YLook
ZLook
ENDTYPE
//
GLOBAL Cam AS Pos
//Mit XY wird die Drehrichtung und mit Z die Höhe in die die Kamera sieht berechnet
GLOBAL XY,Z
//Damit wird die Kamera Position gespeichert um sie wenn sie mit einer Wand kollidiert zurückzusetzen
GLOBAL OldX, OldY, OldZ
//Die Laufgeschwindigkeit
GLOBAL Speed
//Die Springhöhe
GLOBAL TJump
//Hier wird die Startposition der Kamera festgelegt
Cam.X = -75
Cam.Y = 75
Cam.Z = -100
WHILE TRUE
//Die momentane Kameraposition wird gespeichert
OldX=Cam.X
OldY=Cam.Y
OldZ=Cam.Z
//Erhöht die Laufgeschwindigkeit wenn man Shift drückt ("Sprinten")
IF KEY(42)
Speed=5
ELSE
Speed=2
ENDIF

//Mit der Leertaste kann man springen wenn TJump kleiner als 20 ist
IF KEY(57) AND TJump<20
//TJump wird pro Durchlauf um 1 erhöht
TJump=TJump+1
//Die Kamera Position wird pro Durchlauf um 20 erhöht
Cam.Z=Cam.Z+20
ENDIF
//Wenn die Maus nach Links bewegt wird dann wird XY mit der Mausgeschwindigkeit addiert
//Und nach rechts wird XY mit der Mausgeschwindigkeit subtrahiert
IF MOUSEAXIS(0)
XY=XY-MOUSEAXIS(0)
ENDIF

//Wenn die Maus nach unten bewegt wird dann wird Z mit der Mausgeschwindigkeit addiert
//Und nach oben wird Z mit der Mausgeschwindigkeit subtrahiert
IF MOUSEAXIS(1)
Z=Z-MOUSEAXIS(1)
ENDIF

//Hier wird verhindert das die Kamera zu hoch bzw. zu tief schaut
IF SIN(Z)<-0.90
Z=-64
ENDIF
IF SIN(Z)>0.90
Z=64
ENDIF

//Die Laufrichtung wird berechnet und mit Speed wird die Geschwindigkeit bestimmt
IF KEY(17)
Cam.X=Cam.X+(COS(XY)*Speed)
Cam.Y=Cam.Y+(SIN(XY)*Speed)
ENDIF
//Die Laufrichtung nach hinten
IF KEY(31)
Cam.X=Cam.X-(COS(XY)*Speed)
Cam.Y=Cam.Y-(SIN(XY)*Speed)
ENDIF


//Jetzt wird die Blickrichtung berechnet
Cam.XLook=Cam.X+COS(XY)
Cam.YLook=Cam.Y+SIN(XY)
Cam.ZLook=Cam.Z+SIN(Z)

//Der 3D Modus wird aktiviert
X_MAKE3D 1, 1000, 45

//Die Z Achse der Kamera wird auf oben gestellt (wenn das nicht gemacht wird ist die Y Achse oben)
X_CAMERAUP 0,0,1

//Die Kamera wird gesetzts
X_CAMERA Cam.X,Cam.Y,Cam.Z,Cam.XLook,Cam.YLook,Cam.ZLook

//Ein roter Punkt wird auf die Mitte des Bildschirmes gesetzt (bzw. in die Blickrichtung der Kamera),
//um zu testen ob die Kamera auch gerade läuft oder zum zielen in einem Shooter
X_DOT Cam.XLook,Cam.YLook,Cam.ZLook,3,RGB(255,0,0)

//Ein Würfel wird mit einer Funktion erstellt
CreateCube  (0, 500, RGB(255, 255, 255))

//Nun wird eine Textur auf das Model gelegt
X_SETTEXTURE 0,-1

//X_Drawobj erstellt das Model
X_DRAWOBJ 0,0

//Jetzt kommen wir zur Kollision:
//Erst werden "die Beine" erstellt
IF X_COLLISION(0, 0, 20, Cam.X, Cam.Y, Cam.Z-50)=0
//Wenn der Spieler in der Luft ist wird die Kameraposition pro Durchgang um 10 verringert
Cam.Z=Cam.Z-10
//Wenn der Spieler bereits in der Luft ist, kann er nicht mehr springen
IF KEY(57)=0
TJump=20
ENDIF
ENDIF
IF X_COLLISION(0, 0, 20, Cam.X, Cam.Y, Cam.Z-50)
//Wenn der Spieler auf dem Boden steht wird die Kameraposition pro Durchgang um 10 erhöht
Cam.Z=Cam.Z+10
//Setzt TJump wieder auf 0 wenn man die Leertaste nicht drückt und auf dem Boden steht
IF KEY(57)=0
TJump=0
ENDIF
ENDIF

//Jetzt wird einmal die Kollision "links" und "rechts" abgefragt (bzw X+2 und X-2)
IF X_COLLISION(0,0,50,Cam.X+2,Cam.Y,Cam.Z) OR X_COLLISION(0,0,50,Cam.X-2,Cam.Y,Cam.Z)
//Kollidiert der Spieler mit einer Wand "links" oder "rechts",
//wird die Position auf der X Achse auf die der letzten Runde zurückgesetzt
Cam.X=OldX
ENDIF

//Jetzt wird einmal die Kollision "vorne" und "hinten" abgefragt (bzw Y+2 und Y-2)
IF X_COLLISION(0,0,50,Cam.X,Cam.Y+2,Cam.Z) OR X_COLLISION(0,0,50,Cam.X,Cam.Y-2,Cam.Z)
//Kollidiert der Spieler mit einer Wand "vorne" oder "hinten",
//wird die Position auf der Y Achse auf die der letzten Runde zurückgesetzt
Cam.Y=OldY
ENDIF

//Stellt wieder den 2D Modus an
X_MAKE2D
//Schreibt die Kameraposition oben-links ins Fenster
PRINT "X: "+Cam.X+" Y: "+Cam.Y+" Z: "+Cam.Z, 10, 10
//Nun wird alles auf dem Bildschirm angezeigt
SHOWSCREEN
WEND




//!//Diese Funktion ist nicht von mir//!//
//Hier findet ihr sie und weitere 3D Funktionen:
//C:\Users\*Username*\GLBasic\GLBasic\Samples\Common\3DPrimitives.gbas

FUNCTION CreateCube: num, sz, col
// Diese Variablen sind als LOCAL definiert:
// num, sz,
X_AUTONORMALS 1 // For a cube, hard edges
sz=sz/2
X_OBJSTART num
// Front Face
X_OBJADDVERTEX  sz, -sz,  sz, 1, 0, col
X_OBJADDVERTEX -sz, -sz,  sz, 0, 0, col
X_OBJADDVERTEX  sz,  sz,  sz, 1, 1, col
X_OBJADDVERTEX -sz,  sz,  sz, 0, 1, col
X_OBJNEWGROUP
// Back Face
X_OBJADDVERTEX -sz,  sz, -sz, 1, 1, col
X_OBJADDVERTEX -sz, -sz, -sz, 1, 0, col
X_OBJADDVERTEX  sz,  sz, -sz, 0, 1, col
X_OBJADDVERTEX  sz, -sz, -sz, 0, 0, col
X_OBJNEWGROUP
// Top Face
X_OBJADDVERTEX -sz,  sz,  sz, 0, 0, col
X_OBJADDVERTEX -sz,  sz, -sz, 0, 1, col
X_OBJADDVERTEX  sz,  sz,  sz, 1, 0, col
X_OBJADDVERTEX  sz,  sz, -sz, 1, 1, col
X_OBJNEWGROUP
// Bottom Face
X_OBJADDVERTEX  sz, -sz, -sz, 0, 1, col
X_OBJADDVERTEX -sz, -sz, -sz, 1, 1, col
X_OBJADDVERTEX  sz, -sz,  sz, 0, 0, col
X_OBJADDVERTEX -sz, -sz,  sz, 1, 0, col
X_OBJNEWGROUP
// Right face
X_OBJADDVERTEX  sz,  sz, -sz, 1, 1, col
X_OBJADDVERTEX  sz, -sz, -sz, 1, 0, col
X_OBJADDVERTEX  sz,  sz,  sz, 0, 1, col
X_OBJADDVERTEX  sz, -sz,  sz, 0, 0, col
X_OBJNEWGROUP
// Left Face
X_OBJADDVERTEX -sz, -sz,  sz, 1, 0, col
X_OBJADDVERTEX -sz, -sz, -sz, 0, 0, col
X_OBJADDVERTEX -sz,  sz,  sz, 1, 1, col
X_OBJADDVERTEX -sz,  sz, -sz, 0, 1, col
X_OBJNEWGROUP
X_OBJEND

ENDFUNCTION // sz


Hier gibts das Tutorial als PDF, als ODT und die test.bmp textur:
http://www.topzombie.bplaced.de/Files/tools/phpATM_130/index.php?direction=0&order=&directory=Topzombies%20Programs/Tutorials&

Edit: Hab nen Fehler entdeckt.
Eine Zeile war im Tutorial verschwunden.

5
Bug Reports / RND() in Konsolenanwendungen
« on: 2010-Mar-02 »
RND() gibt bei Konsolenanwendungen immer die gleiche Zahl aus   :help:
Hier ist ein Beispielprogramm:

Code: (glbasic) [Select]
// --------------------------------- //
// Project: Name Generator
// Start: Tuesday, March 02, 2010
// IDE Version: 7.250


// SETCURRENTDIR("Media") // seperate media and binaries?
INIOPEN "names.txt"
GLOBAL FEname$, MAname$, FAMname$
GLOBAL FEcount, MAcount, FAMcount
FEcount=INIGET$("Female", "Count")
MAcount=INIGET$("Male", "Count")
FAMcount=INIGET$("Family", "Count")
DIM FEnameList$[1000]
DIM MAnameList$[1000]
DIM FAMnameList$[1000]
FOR I=0 TO INIGET$("Female", "Count")-1
FEnameList$[I]=INIGET$("Female",I)
NEXT
FOR I=0 TO INIGET$("Male", "Count")-1
MAnameList$[I]=INIGET$("Male",I)
NEXT
FOR I=0 TO INIGET$("Family", "Count")-1
FAMnameList$[I]=INIGET$("Family",I)
NEXT
FEname$=FEnameList$[RND(FEcount-1)+1]
MAname$=MAnameList$[RND(MAcount-1)+1]
FAMname$=FAMnameList$[RND(FAMcount-1)+1]
STDOUT "Female Name: "+FEname$+" "+FAMname$+"\n"
STDOUT "Male Name: "+MAname$+" "+FAMname$+"\n"
STDOUT "Press any key to continue \n"
///PRINT "Female Name: "+FEname$+" "+FAMname$, 10, 10
///PRINT "Male Name: "+MAname$+" "+FAMname$, 10, 50
///SHOWSCREEN
KEYWAIT

Das fertig kompilierte Programm mit dem names.txt gibts hier: http://remixshare.com/dl/9e67v/Name Generator.app.zip

Wenn ich das Programm als ein "Fensterprogramm" kompiliere dann funktioniert es, aber ich brauche eine Konsolenanwendung  :|
Meine GLBasic Version ist 7.250

6
GLBasic - de / GLBasic/WIZ-Bundle Problem
« on: 2009-Nov-24 »
Hallo,
am letzten Mittwoch ist meine WIZ und der GLBasic Lizens Code angekommen aber ich kann den Code nicht benutzen.
Wenn ich ihn in das Fenster von der GLBasic Demo eingebe passiert nix und die E-Mail Adresse die auf dem Zettel steht existiert nicht (020@gp2x.de)
Kann mir jemand helfen?
MFG Topzombie


Edit: Hat sich erledigt.
Ich dachte das ich bei der registrierung meine E-Mail Adresse eingeben soll XD

Pages: [1]