BASIC

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.


Messages - Topzombie

Pages: [1] 2
1
Ich hätte gerne simple Models gemacht aber ich habe im Moment noch eigene Probleme   >:D

http://www.moddb.com/games/bomberwizard
Ich will mein Spiel verbessern aber ich habe andauernd Probleme mit einem Bug
der verhindert das Spiel "interessant" zu machen :'(


2
Bug Reports / Re: NewtonSDK Wrapper Error
« on: 2010-Apr-20 »
Supi, es funktioniert :D
Vielen Dank für die Hilfe  :good:

3
Bug Reports / Re: NewtonSDK Wrapper Error
« on: 2010-Apr-20 »
Kann wenigstens jemand seine NewtonSDK.gbas hochladen damit ich gucken kann ob doch an meiner was geändert ist?

4
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]

5
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
 

6
@Kuron
On mywot.com the USERS rate the site.
Not the mywot admins

8
Bevor ich den Cache gelöscht habe habe ichs auch nur weiß gesehen

9
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

10
Bug Reports / Re: RND() in Konsolenanwendungen
« on: 2010-Mar-10 »
Sry. Doppelpost

11
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.

12
Bug Reports / Re: RND() in Konsolenanwendungen
« on: 2010-Mar-03 »
Ja das verstehe ich...   :D

Nochmal zu SEEDRND
Code: GLBasic [Select]
SEEDRND MID$(PLATFORMINFO$("time"), 17, 2)

Das funktioniert zwar teilweise aber es kommen trotzdem oft die gleichen Ergebnisse.
Gibt es dafür eine bessere Lösung?   O_O

Edit:
Ich habs  :enc:

Code: GLBasic [Select]
LOCAL TickCount
INLINE
        DECLARE_C_ALIAS(GLBGetTickCount,"kernel32.dll", "GetTickCount",(),int);
        TickCount = GLBGetTickCount();
ENDINLINE
SEEDRND TickCount

13
Bug Reports / Re: RND() in Konsolenanwendungen
« on: 2010-Mar-02 »
Ja es hat funktioniert
Code: GLBasic [Select]
SEEDRND MID$(PLATFORMINFO$("time"), 17, 2)

ps: Hattest du heute nen schlechten Tag oder so?

14
Bug Reports / Re: RND() in Konsolenanwendungen
« on: 2010-Mar-02 »
Das hab ich auch schon gelesen aber es hat mich nicht weitergebracht   :(
Edit: Würde es funktionieren wenn ich statt GETTIMERALL() die Systemzeit einfüge?

15
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

Pages: [1] 2