Menu

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.

Show posts Menu

Messages - Topzombie

#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
Supi, es funktioniert :D
Vielen Dank für die Hilfe  :good:
#3
Kann wenigstens jemand seine NewtonSDK.gbas hochladen damit ich gucken kann ob doch an meiner was geändert ist?
#4
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
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
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
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
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
Ja es hat funktioniert
Code (glbasic) Select
SEEDRND MID$(PLATFORMINFO$("time"), 17, 2)

ps: Hattest du heute nen schlechten Tag oder so?
#14
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
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