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

Topics - S. P. Gardebiter

#21
IDE/Syntax / Line Numbers
2010-Apr-19
It would be nice to have line numbers for the GLBasic Editor, since this is widely used and normally always included for Editors. o:
#22
Moin.
Das ist bestimmt schon jemanden aufgefallen.

Wenn ich einen Filerequest mache, sieht mein Bild zuerst so aus:
http://img121.imageshack.us/img121/1283/wtf1c.png

Wenn ich dann das kleine Fenster bewege, kriege ich Graphische Bugs o:
http://img519.imageshack.us/img519/6003/wtf2q.png

Das passiert aber nicht immer, beim ersten mal verschwindet der Hintergrund meistens "in die Taskleiste". Wenn ich aber ein zweites mal einen Filerrequest starte, bleibt der Hintergrund bestehen und verursacht den Bug.
#23
Hi.
Ich hab einem Kumpel von mir (er benutzt Ubuntu glaub ich) eine Linux Version von meinem Spiel geschickt.
Uns ist aufgefallen das GLBasic einige merkwürdige Nachrichten bei der Console ausgibt. Unzwar offenbar immer, egal um welches Programm es sich handelt, hauptsache es ist mit GLBasic gemacht worden.

QuoteSDL_GL_RED_SIZE: requested 8, got 8
SDL_GL_GREEN_SIZE: requested 8, got 8
SDL_GL_BLUE_SIZE: requested 8, got 8
SDL_GL_DEPTH_SIZE: requested 24, got 24
SDL_GL_DOUBLEBUFFER: requested 1, got 1
request: fopen("", "rb") failed
request: fopen("", "rb") failed
Init Finalized
Shut down GLB
glb is shut down
request: fopen("", "rb") failed
request: fopen("", "rb") failed

Außerdem möchte ich noch anmerken, dass eine Libary sehr veraltet ist. (libstdc++.so.5)
#24
It would be nice to have KEYPRESS() and KEYRELEASE() commands.

And yeah, I know that you can do it yourself with code. ;)
#25
I'm asking for a function simular to alphamode. And no I'm not talking about Polyvectors.
A ink function for DRAWSPRITE and DRAWANIM that works together with alphablending would be wonderful :x
I can't use polyvectors, because it gets pretty slow if I use tilesets and draw more than 100 tiles with alphablending.
#26
GLBasic - de / Lizenz Kram
2010-Mar-16
Ich hab mal eine Frage, inwiefern ist das eigentlich mit den Lizenzen geregelt?
Konkretes Beispiel: Ich habe ein Programm/Spiel mit GLBasic geschrieben und kompiliere es. Inwiefern wirkt da die GPL Lizenz des GCC Compilers? Unterliegt das kompilierte Programm nun der GPL Lizenz? Und wie sieht das bei den Linux Versionen aus, die benutzen ja noch SDL mit der LGPL, inwiefern muss man da auf die Lizenzen achten? Oder wirken die nicht, weil nur das Programm selbst und nicht das Endprodukt, dass durch die Nutzung entstanden ist, davon betroffen ist?
#27
Hallo.
Ich habe bemerkt, dass Drawrect und Drawline unsauber arbeiten. Ein Beispiel hab ich hierzu nicht, da ich nicht meinen Quellcode auf dem Silbertablett zeigen will.
Es ist aber sehr leicht zu rekonstruieren:

1. Man nehme einen Drawrect befehl und zeichne über eine Fläche.
2. Darüber zeichnet man nun einen größeren Sprite oder Tileset der/das die volle Fläche z.B. nutzt.
3. Darüber wieder ein Drawrect.

Es tritt ein sehr unschöner Rand auf:



Pixelgenau ist das nicht wirklich, es wirkt eher wie Antialiasing.
Bei einer gezeichneten Drawline über ein Drawrect drauf, treten auch "Farbveränderungen" auf.
#28
Bug Reports / Media Ordner
2010-Feb-08
Das ist nicht wirklich ein Bug, eher ein Schönheitsfehler :x
Muss es sein dass GLBasic immer beim kompilieren den Media Ordner neu erstellt, selbst wenn ich ihn gelöscht habe?
#29
Hallo. Ich programmiere gerade einen Editor.
Allerdings will ich dem User die Möglichkeit geben eigene Tilesets reinzuladen, die keine feste höhe haben müssen. Damit man auch die kleinen Tiles gut sieht, möchte ich den Sprite doppelt so groß darstellen bzw. verstellbaren Zoom haben.
GLBasic macht mir aber einen Strich durch die Rechnung indem es einfach um den Mittelpunkt vergrößert, das möchte ich aber nicht so haben, weil dann der Sprite nichtmehr da ist, wo er sein soll. Gibt es eine Möglichkeit die größe des Sprites herrauszufinden, oder eine Möglichkeit nicht um den Mittelpunkt zu vergrößern?
#30
Ich besitze einen Dualcore PC und compilierte Programme laggen wie verrückt, sofern man nicht einen Core deaktiviert per Taskmanager.
#31
Bei folgendem Code wird nicht korrekt gerundet/berechnet.

Code (glbasic) Select
GLOBAL DebugMode = 1
GLOBAL ScreenW = 640
GLOBAL ScreenH = 480
GLOBAL Fullscreen = 0
GLOBAL FPS = 60
GLOBAL ParticleSize = 4096

SETSCREEN ScreenW, ScreenH, Fullscreen
SYSTEMPOINTER FALSE
LIMITFPS FPS
SETTRANSPARENCY RGB(0, 0, 0)

DIM ParticleX[ParticleSize]
DIM ParticleY[ParticleSize]
DIM ParticleSpeedX[ParticleSize]
DIM ParticleSpeedY[ParticleSize]
DIM ParticleGotPos[ParticleSize]
DIM ParticleDir[ParticleSize]
DIM ParticleSpeed[ParticleSize]
DIM ParticleColor[ParticleSize]
DIM ParticleType[ParticleSize]

GLOBAL Count, CountX, CountY, InitTimer, ParticleNumber

DIM Sinus[360]
DIM CoSinus[360]

FOR Count = 0 TO 359
Sinus[Count] = SIN(Count)
CoSinus[Count] = COS(Count)
NEXT

WHILE TRUE

IF KEY(1) = TRUE THEN BREAK

IF InitTimer = 0
IF KEY(57)
FOR Count = 0 TO ParticleSize - 1
ParticleX[Count] = 0
ParticleY[Count] = 0
ParticleSpeedX[Count] = 0
ParticleSpeedY[Count] = 0
ParticleGotPos[Count] = 0
ParticleDir[Count] = 0
ParticleSpeed[Count] = 0
ParticleColor[Count] = 0
ParticleType[Count] = 0
NEXT
FOR CountY = 0 TO 359
FOR CountX = 1 TO 4
FOR Count = 0 TO ParticleSize - 1
IF ParticleType[Count] = 0
ParticleType[Count] = 1
ParticleX[Count] = 320
ParticleY[Count] = 240
ParticleDir[Count] = CountY
ParticleSpeed[Count] = (CountX * 0.5) * RND(1)
ParticleColor[Count] = RGB(RND(255), RND(255), RND(255))
BREAK
ENDIF
NEXT
NEXT
NEXT
ENDIF
InitTimer = 15
ELSE
DEC InitTimer, 1
ENDIF

GOSUB ParticleSystem

SHOWSCREEN

WEND

SUB ParticleSystem:

FOR Count = 0 TO ParticleSize - 1
IF ParticleType[Count] <> 0
INC ParticleNumber, 1
IF ParticleGotPos[Count] = 0
IF ParticleDir[Count] > 359
ParticleDir[Count] = MOD(ParticleDir[Count], 360)
ELSEIF ParticleDir[Count] < -359
ParticleDir[Count] = MOD(ParticleDir[Count], 360)
ENDIF
ParticleSpeedX[Count] = Sinus[ParticleDir[Count]] * ParticleSpeed[Count]
ParticleSpeedY[Count] = CoSinus[ParticleDir[Count]] * ParticleSpeed[Count]
ParticleGotPos[Count] = 1
ELSE
ParticleX[Count] = ParticleSpeedX[Count] + ParticleX[Count]
ParticleY[Count] = ParticleSpeedY[Count] + ParticleY[Count]
ENDIF
IF ParticleType[Count] = 1
SETPIXEL ParticleX[Count], ParticleY[Count], ParticleColor[Count]
ENDIF
ENDIF
NEXT

PRINT ParticleNumber, 16, 16
ParticleNumber = bXOR(ParticleNumber, ParticleNumber)

ENDSUB


Ich rede dabei von ParticleSpeed.
Er ist immer ganzzahlig oder hat nur 0.5 Werte kommischerweise.

RND(100)/100 hilft dabei auch nicht, die meisten Werte sind dann 0.
#32
Hi there!
It would be cool if you can use += and -= instead of INC and DEC :o
I mean as a alternative instruction. A % instead of MOD would be nice too.
#33
Ich fände eine Funktion schön die wie Polyvektor funktioniert aber mit der man Kreise/Ellipsen/Ovale zeichnen kann :P
Damit man nicht unzählige Ecken benutzen muss.
#34
...macht die Maus über den Befehl MOUSEAXIS() unbrauchbar.
Zumindest bei mir :P
#35
Hallo, ich habe ein Problem, der Compiler gibt mir folgenden Fehler:

Code (glbasic) Select
G:\DOKUME~1\SPFD42~1.GAR\LOKALE~1\Temp\glbasic\gpc_temp0.cpp: In function `DGInt __GLBASIC__::Edit()':
G:\DOKUME~1\SPFD42~1.GAR\LOKALE~1\Temp\glbasic\gpc_temp0.cpp:409: error: invalid initialization of reference of type 'DGNat&' from expression of type 'double'
D:/Project/Languages/GLBasic/Compiler/platform/Include/glb.h:829: error: in passing argument 2 of `void __GLBASIC__::READUWORD(DGNat, DGNat&)'
G:\DOKUME~1\SPFD42~1.GAR\LOKALE~1\Temp\glbasic\gpc_temp0.cpp:413: error: invalid initialization of reference of type 'DGNat&' from expression of type 'double'
D:/Project/Languages/GLBasic/Compiler/platform/Include/glb.h:829: error: in passing argument 2 of `void __GLBASIC__::READUWORD(DGNat, DGNat&)'
G:\DOKUME~1\SPFD42~1.GAR\LOKALE~1\Temp\glbasic\gpc_temp0.cpp:414: error: invalid initialization of reference of type 'DGNat&' from expression of type 'double'
D:/Project/Languages/GLBasic/Compiler/platform/Include/glb.h:829: error: in passing argument 2 of `void __GLBASIC__::READUWORD(DGNat, DGNat&)'
G:\DOKUME~1\SPFD42~1.GAR\LOKALE~1\Temp\glbasic\gpc_temp0.cpp:415: error: invalid initialization of reference of type 'DGNat&' from expression of type 'double'
D:/Project/Languages/GLBasic/Compiler/platform/Include/glb.h:829: error: in passing argument 2 of `void __GLBASIC__::READUWORD(DGNat, DGNat&)'
G:\DOKUME~1\SPFD42~1.GAR\LOKALE~1\Temp\glbasic\gpc_temp0.cpp:416: error: invalid initialization of reference of type 'DGNat&' from expression of type 'double'
D:/Project/Languages/GLBasic/Compiler/platform/Include/glb.h:829: error: in passing argument 2 of `void __GLBASIC__::READUWORD(DGNat, DGNat&)'
G:\DOKUME~1\SPFD42~1.GAR\LOKALE~1\Temp\glbasic\gpc_temp0.cpp:417: error: invalid initialization of reference of type 'DGNat&' from expression of type 'double'
D:/Project/Languages/GLBasic/Compiler/platform/Include/glb.h:829: error: in passing argument 2 of `void __GLBASIC__::READUWORD(DGNat, DGNat&)'
*** FATAL ERROR - Bitte die Compiler-Ausgabe ins Forum kopieren


Code ist hier: http://spgardebiter.sp.funpic.de//Test//Pattern%20Editor.zip
#36
Mein Spiel hängt wie sau im Netzwerkmodus :o
Könnte mir bitte einer erklären wieso?
Danke! =D

Code (glbasic) Select
// --------------------------------- //
// Project: GTD
// Start: Sunday, November 09, 2008
// IDE Version: 6.034

SETSCREEN 640, 480, 0
LIMITFPS 60
SYSTEMPOINTER FALSE

LOADSPRITE "Ship01.png", 1
LOADSPRITE "Ship02.png", 2
LOADSPRITE "Light.png", 50
LOADSPRITE "Back01G.png", 100
LOADSPRITE "Brick01B.png", 400
DebugM = 0
Count = 0
CountX = 0
CountY = 0
CountZ = 0
FrameCounter = 0
Init = 0

PI = 3.1415926535

TotalPlayer = 0
CurPlayer = 0

DIM PlayerType[256] // 0 = Unused; 1 = Spectator; 2 = LPlayer1 (Team 0); 3 = LPlayer1 (Team 1)
DIM PlayerShip[256]
DIM PlayerX[256]
DIM PlayerY[256]
DIM PlayerXMove[256]
DIM PlayerYMove[256]
DIM PlayerDir[256]
DIM PlayerMaxHealth[256]
DIM PlayerHealth[256]
DIM PlayerMaxEnergy[256]
DIM PlayerEnergy[256]
DIM PlayerLight[256]
DIM PlayerLightSize[256]
DIM PlayerLightRange[256]
DIM PlayerMainWep[256]
DIM PlayerSubWep[256]
DIM PlayerSpeed[256]
DIM PlayerTurnSpeed[256]
DIM PlayerMisc[256] // 12345678; 1&5 = Stealth; 2&6 = Scanner; 3&7 = UltraStealth; 4&8 = Light
DIM PlayerID$[256]
DIM PlayerName$[256]

DIM PlayerMiscCounter1[256]
DIM PlayerMiscCounter2[256]
DIM PlayerDeathCounter[256]
DIM PlayerDeathCounterStep[256]

BackgroundType = 1
BackgroundNumber = 0

DIM Messages$[8]
DIM MessageAdd$[256]
MessageCounter = 0

DIM BulletType[8192]
DIM BulletSubType[8192]
DIM BulletX[8192]
DIM BulletY[8192]
DIM BulletXMove[8192]
DIM BulletYMove[8192]
DIM BulletAnim[8192]
DIM BulletSpeed[8192]
DIM BulletMove[8192]
DIM BulletDirection[8192]

DIM BlockType[8192]
DIM BlockX[8192]
DIM BlockY[8192]

FOR CountY = 0 TO 1
FOR CountX = 0 TO 8 + CountY * 4
BlockType[CountX*CountY+1] = 400
BlockX[CountX*CountY+1] = CountX*64
BlockY[CountX*CountY+1] = CountY*64
NEXT
NEXT

TotalBase = 1
DIM BaseTeam[32]
DIM BaseHealth[32]
DIM BaseX[32]
DIM BaseY[32]

MainBaseHealthInit = 5000
DIM MainBaseHealth[2]
DIM MainBaseX[2]
DIM MainBaseY[2]

DIM Sinus[360]
DIM CoSinus[360]

FOR Count = 0 TO 359
Sinus[Count] = SIN(Count)
CoSinus[Count] = COS(Count)
NEXT

GameMode = 0
ID$ = ""
IDNum = 0
IP$ = ""
Name$ = ""
NetCount = 250

PRINT "1: Local Game", 16, 16
PRINT "2: Join Game", 16, 32
PRINT "3: Host Game", 16, 48
SHOWSCREEN

WHILE TRUE

IF KEY(2) THEN GameMode = 1

IF KEY(3) THEN GameMode = 2

IF KEY(4) THEN GameMode = 3

IF GameMode > 0 THEN BREAK

WEND

IF GameMode = 2
PRINT "Enter IP Adress:", 16, 16
INPUT IP$, 16, 32
PRINT "Enter your name:", 16, 48
INPUT Name$, 16, 64
IF NETJOINGAME(0, "GTDGame", IP$, "26000")
ID$ = NETCREATEPLAYER$(Name$)
ELSE
PRINT "Error!", 64, 64
SHOWSCREEN
KEYWAIT
END
ENDIF
ENDIF

IF GameMode = 3
PRINT "Enter your name:", 16, 48
INPUT Name$, 16, 64
IF NETHOSTGAME(0, "GTDGame", "", "26000")
ID$ = NETCREATEPLAYER$(Name$)
ELSE
PRINT "Error!", 64, 64
SHOWSCREEN
KEYWAIT
END
ENDIF
ENDIF

WHILE TRUE

IF KEY(1) THEN BREAK

IF NetCount = 250
IF GameMode > 1
IF TotalPlayer <> NETNUMPLAYERS()
TotalPlayer = NETNUMPLAYERS()
FOR Count = 0 TO TotalPlayer-1
PlayerID$[Count] = NETGETPLAYERID$(Count)
PlayerName$[Count] = NETPLAYERNAME$(PlayerID$[Count])
NEXT
IDNum = ID$
NetCount = 0
ENDIF
ELSE
TotalPlayer = 1
ID$ = "0"
IDNum = 0
ENDIF
ELSE
INC NetCount, 1
ENDIF

GOSUB Gameflow

GOSUB Background

GOSUB Map

GOSUB Player

GOSUB Collision

GOSUB Light

IF GameMode > 1
GOSUB Network
ENDIF

GOSUB Messages

INC FrameCounter, 1

SHOWSCREEN

WEND

SUB Gameflow:

IF Init = 0
FOR Count = 0 TO 1
MainBaseHealth[Count] = MainBaseHealthInit
IF MainBaseX[Count] = 0
MainBaseX[Count] = 640/2
ENDIF
IF MainBaseY[Count] = 0
MainBaseY[Count] = 480/2
ENDIF
NEXT
ENDIF

ENDSUB

SUB Background:

ALPHAMODE 0.6

IF BackgroundType = 1
FOR CountY = 0 TO 7
FOR CountX = 0 TO 9
DRAWSPRITE 100+BackgroundNumber, CountX*64, CountY*64
NEXT
NEXT
ENDIF

ENDSUB

SUB Map:

ALPHAMODE 0

FOR Count = 0 TO 8191
IF BlockType[Count] > 0
DRAWSPRITE BlockType[Count], BlockX[Count], BlockY[Count]
ENDIF
NEXT

ENDSUB

SUB Player:

IF KEY(14)
INPUT MessageAdd$[IDNum], 16, 464
MessageAdd$[IDNum] = "S. P. Gardebiter: " + MessageAdd$[IDNum]
ENDIF

IF TotalPlayer > CurPlayer
IF PlayerType[IDNum] = 0
PlayerType[IDNum] = 2
PlayerShip[IDNum] = 1
IF PlayerShip[IDNum] = 1
PlayerLight[IDNum] = 1
PlayerLightSize[IDNum] = 25
PlayerLightRange[IDNum] = 150
PlayerSpeed[IDNum] = 0.1
PlayerTurnSpeed[IDNum] = 4
ENDIF
IF PlayerShip[IDNum] = 2
PlayerLight[IDNum] = 2
PlayerLightSize[IDNum] = 35
PlayerLightRange[IDNum] = 400
PlayerSpeed[IDNum] = 0.02
PlayerTurnSpeed[IDNum] = 2
ENDIF
PlayerMisc[IDNum] = bOR(PlayerMisc[IDNum], 0x01)
INC CurPlayer, 1
ENDIF
ENDIF

FOR Count = 0 TO 255
IF PlayerType[Count] = 2 OR PlayerType[Count] = 3
IF PlayerHealth[Count] > 0

IF KEY(203)
INC PlayerDir[Count], PlayerTurnSpeed[Count]
IF PlayerDir[Count] > 359 THEN DEC PlayerDir[Count], 360
ENDIF

IF KEY(205)
DEC PlayerDir[Count], PlayerTurnSpeed[Count]
IF PlayerDir[Count] < 0 THEN INC PlayerDir[Count], 360
ENDIF

IF KEY(16)
IF bAND(PlayerMisc[Count], 0x01) = 0x01
PlayerMisc[Count] = bAND(PlayerMisc[Count], 0xFE)
ELSE
PlayerMisc[Count] = bOR(PlayerMisc[Count], 0x01)
ENDIF
ENDIF

IF KEY(200)
DEC PlayerXMove[Count], Sinus[PlayerDir[Count]] * PlayerSpeed[Count]
DEC PlayerYMove[Count], CoSinus[PlayerDir[Count]] * PlayerSpeed[Count]
ENDIF

IF KEY(208)
INC PlayerXMove[Count], Sinus[PlayerDir[Count]] * PlayerSpeed[Count]
INC PlayerYMove[Count], CoSinus[PlayerDir[Count]] * PlayerSpeed[Count]
ENDIF

INC PlayerX[Count], PlayerXMove[Count]
INC PlayerY[Count], PlayerYMove[Count]

ALPHAMODE 0

ROTOSPRITE PlayerShip[Count], PlayerX[Count], PlayerY[Count], PlayerDir[Count]
ELSE
IF PlayerDeathCounter[Count] > 4.8
PlayerHealth[Count] = 100
IF PlayerShip[Count] = 1
PlayerX[Count] = MainBaseX[PlayerType[Count]-2]+16
PlayerY[Count] = MainBaseY[PlayerType[Count]-2]+16
ELSEIF PlayerShip[Count] = 2
PlayerX[Count] = MainBaseX[PlayerType[Count]-2]+24
PlayerY[Count] = MainBaseY[PlayerType[Count]-2]+24
ENDIF
ELSE
IF PlayerDeathCounterStep[Count] <= 5
INC PlayerDeathCounterStep[Count], 1
ELSE
INC PlayerDeathCounter[Count], 0.1
ENDIF
PRINT PlayerDeathCounter[Count], 320, 240
ENDIF
ENDIF
ENDIF
NEXT

ENDSUB

SUB Collision:

ENDSUB

SUB Light:

ALPHAMODE 0.5

// STARTPOLY 50
// POLYVECTOR MainBaseX[0]-256, MainBaseX[0]+256, 0, 0, RGB(50, 50, 50)
// POLYVECTOR MainBaseX[0]+256, MainBaseX[0]+256, 31, 0, RGB(50, 50, 50)
// POLYVECTOR MainBaseX[0]+256, MainBaseX[0]-256, 31, 31, RGB(50, 50, 50)
// POLYVECTOR MainBaseX[0]-256, MainBaseX[0]-256, 0, 31, RGB(50, 50, 50)
// ENDPOLY


FOR Count = 0 TO 255
IF PlayerHealth[Count] > 0
ALPHAMODE 0.5
IF PlayerShip[Count] = 1
STARTPOLY 50
POLYVECTOR PlayerX[Count]-32, PlayerY[Count]+64, 0, 0, RGB(100, 100, 100)
POLYVECTOR PlayerX[Count]+64, PlayerY[Count]+64, 31, 0, RGB(100, 100, 100)
POLYVECTOR PlayerX[Count]+64, PlayerY[Count]-32, 31, 31, RGB(100, 100, 100)
POLYVECTOR PlayerX[Count]-32, PlayerY[Count]-32, 0, 31, RGB(100, 100, 100)
ENDPOLY
ELSEIF PlayerShip[Count] = 2
STARTPOLY 50
POLYVECTOR PlayerX[Count]-32, PlayerY[Count]+80, 0, 0, RGB(100, 100, 100)
POLYVECTOR PlayerX[Count]+80, PlayerY[Count]+80, 31, 0, RGB(100, 100, 100)
POLYVECTOR PlayerX[Count]+80, PlayerY[Count]-32, 31, 31, RGB(100, 100, 100)
POLYVECTOR PlayerX[Count]-32, PlayerY[Count]-32, 0, 31, RGB(100, 100, 100)
ENDPOLY
ENDIF
IF PlayerLight[Count] > 0
IF bAND(PlayerMisc[Count], 0x01) = 0x01
IF PlayerLight[Count] = 1
ALPHAMODE 0.75
STARTPOLY -1
POLYVECTOR PlayerX[Count]+16, PlayerY[Count]+16, 0, 0, RGB(100, 100, 100)
POLYVECTOR INTEGER(PlayerLightRange[Count] * COS((PlayerDir[Count]/-1)+PlayerLightSize[Count]-90)) + PlayerX[Count]+16, INTEGER(PlayerLightRange[Count] * SIN((PlayerDir[Count]/-1)+PlayerLightSize[Count]-90)) + PlayerY[Count]+16, 0, 0, RGB(0, 0, 0)
POLYVECTOR INTEGER(PlayerLightRange[Count] * COS((PlayerDir[Count]/-1)-PlayerLightSize[Count]-90)) + PlayerX[Count]+16, INTEGER(PlayerLightRange[Count] * SIN((PlayerDir[Count]/-1)-PlayerLightSize[Count]-90)) + PlayerY[Count]+16, 0, 0, RGB(0, 0, 0)
ENDPOLY
ENDIF
IF PlayerLight[Count] = 2
ALPHAMODE 0.5
STARTPOLY -1
POLYVECTOR PlayerX[Count]+24, PlayerY[Count]+24, 0, 0, RGB(150, 150, 200)
POLYVECTOR INTEGER(PlayerLightRange[Count] * COS((PlayerDir[Count]/-1)+PlayerLightSize[Count]-90)) + PlayerX[Count]+24, INTEGER(PlayerLightRange[Count] * SIN((PlayerDir[Count]/-1)+PlayerLightSize[Count]-90)) + PlayerY[Count]+24, 0, 0, RGB(0, 0, 0)
POLYVECTOR INTEGER(PlayerLightRange[Count] * COS((PlayerDir[Count]/-1)-PlayerLightSize[Count]-90)) + PlayerX[Count]+24, INTEGER(PlayerLightRange[Count] * SIN((PlayerDir[Count]/-1)-PlayerLightSize[Count]-90)) + PlayerY[Count]+24, 0, 0, RGB(0, 0, 0)
ENDPOLY
ENDIF
ENDIF
ENDIF
ENDIF
NEXT

ENDSUB

SUB Network:

FOR Count = 0 TO TotalPlayer-1
PRINT PlayerID$[Count], 16, 256+Count*16
PRINT PlayerName$[Count], 64, 256+Count*16
NEXT

ENDSUB

SUB Messages:

ALPHAMODE 0.75

FOR CountX = 0 TO 255
IF MessageAdd$[CountX] <> ""
FOR Count = 0 TO 7
IF Messages$[Count] = ""
Messages$[Count] = MessageAdd$[CountX]
MessageAdd$[CountX] = ""
MessageCounter = 350
BREAK
ENDIF
NEXT
IF MessageAdd$[CountX] <> ""
FOR Count = 0 TO 6
Messages$[Count] = Messages$[Count+1]
Messages$[7] = MessageAdd$[CountX]
MessageAdd$[CountX] = ""
MessageCounter = 350
NEXT
ENDIF
ENDIF
NEXT

FOR Count = 0 TO 7
IF Messages$[Count] <> ""
PRINT Messages$[Count], 16, 16*Count+16
IF MessageCounter = 0
MessageCounter = 350
ENDIF
ENDIF
NEXT

IF MessageCounter > 1
DEC MessageCounter, 1
ELSE
FOR Count = 0 TO 6
Messages$[Count] = Messages$[Count+1]
NEXT
MessageCounter = 0
ENDIF

ENDSUB
#37
Da ich zurzeit an einem Network Game arbeite, möchte ich wissen ob es eine INPUT Funktion gibt die das Spiel nicht freezt und weiterhin den Code ausführt aber halt alle Tasten abfängt (sodass man den Player logischerweise auch nicht bewegen könnte) oder wie ich am besten so eine Funktion programmieren kann.
#38
I would be happy with a function that just cuts a wave off (if all channels are used) and starts playings it again. (instead of playing the full wave file and ignoring the playsound command)
#39
Hi!
Ich habe ein Problem mit meiner Lichtkegel Berechnung.
Es geht um Kreise und Winkel.

Es ist wie folgt:


Man stelle sich geistig einen Kreis vor, der um den quadratischen Spieler Sprite gezogen wird. Am Rand dieses Kreises soll nun die Spitze des Lichtkegels liegen, egal um welchen Winkel sie gerade gedreht ist. (Ich benutze Rotosprite, aber da wird der Kegel immer um den Mittelpunkt gedreht.) Das Bild meines Lichtkegels ist nicht quadratisch.
#40
Bug Reports / WRITE...
2008-Oct-14
Hab ein wenig mit meinem FMS programm rumgespielt und ich musst leider einen ziemlich üblen Fehler feststellen O_o

Code (glbasic) Select
// --------------------------------- //
// Project: Frequency Modulation Music 44
// Start: Sunday, October 12, 2008
// IDE Version: 5.360


Count = 0
CountX = 0
CountY = 0

SampleRate = 44100

TotalLength = 0

// Für Noten und erzeugung des Tones
DIM Volume[8192]
DIM Frequency[8192]
DIM Length[8192]
DIM Volume[8192]
DIM Note[120]
DIM Samples[13230000][2]
// Für die Frequenz Modulations Synthese
DIM FMS[16]
DIM FMFrequency[16]
DIM FMFineTune[16]
DIM FMShift[16]
DIM FMVolume[16]

// Noten, Notenlänge und Lautstärke definieren
Frequency[0] = 39
Frequency[1] = 42
Frequency[2] = 44
Frequency[3] = 46
Frequency[4] = 47
Frequency[5] = 51
Frequency[6] = 44
Frequency[7] = 51
Frequency[8] = 56
Frequency[9] = 58
Frequency[10] = 59
Frequency[11] = 56
Frequency[12] = 58
Frequency[13] = 54
Frequency[14] = 51
Frequency[15] = 44
Frequency[16] = 46
Frequency[17] = 47
Frequency[18] = 51
Frequency[19] = 44
Frequency[20] = 43
Frequency[21] = 44
Frequency[22] = 46
Frequency[23] = 47
Frequency[24] = 51
Frequency[25] = 47
Frequency[26] = 46
Frequency[27] = 44
Frequency[28] = 46
Frequency[29] = 47
Frequency[30] = 49
Frequency[31] = 51
Frequency[32] = 54
Frequency[33] = 56
Length[0] = 2
Length[1] = 2
Length[2] = 8
Length[3] = 2
Length[4] = 2
Length[5] = 4
Length[6] = 10
Length[7] = 2
Length[8] = 2
Length[9] = 2
Length[10] = 4
Length[11] = 4
Length[12] = 4
Length[13] = 4
Length[14] = 16
Length[15] = 8
Length[16] = 2
Length[17] = 2
Length[18] = 4
Length[19] = 8
Length[20] = 8
Length[21] = 2
Length[22] = 2
Length[23] = 2
Length[24] = 2
Length[25] = 2
Length[26] = 2
Length[27] = 2
Length[28] = 2
Length[29] = 2
Length[30] = 2
Length[31] = 2
Length[32] = 2
Length[33] = 8
Volume[0] = 20000
Volume[1] = 20000
Volume[2] = 20000
Volume[3] = 20000
Volume[4] = 20000
Volume[5] = 20000
Volume[6] = 20000
Volume[7] = 20000
Volume[8] = 20000
Volume[9] = 20000
Volume[10] = 20000
Volume[11] = 20000
Volume[12] = 20000
Volume[13] = 20000
Volume[14] = 20000
Volume[15] = 20000
Volume[16] = 20000
Volume[17] = 20000
Volume[18] = 20000
Volume[19] = 20000
Volume[20] = 20000
Volume[21] = 20000
Volume[22] = 20000
Volume[23] = 20000
Volume[24] = 20000
Volume[25] = 20000
Volume[26] = 20000
Volume[27] = 20000
Volume[28] = 20000
Volume[29] = 20000
Volume[30] = 20000
Volume[31] = 20000
Volume[32] = 20000
Volume[33] = 20000

// Notenfrequenz

Note[0] = 27.5

FOR Count = 1 TO 119
Note[Count] = 1.059463094359 * Note[Count-1]
NEXT

// Für die Modulationssynthese: Frequenz, Phasenverschiebung und Lautstärke

FMFrequency[0] = 12
FMFrequency[1] = -12
FMFrequency[2] = 0
FMShift[0] = 0
FMShift[1] = 50
FMShift[2] = 0
FMVolume[0] = 1
FMVolume[1] = 1
FMVolume[2] = 0.5

FOR Count = 0 TO 33
INC TotalLength, Length[Count][0]
NEXT

REDIM Samples[TotalLength*44100/10][2]

IF OPENFILE(1, "Output.wav", FALSE) // Save output

                // Nach diesem Code hier wird nichts mehr gespeichert:

FOR CountX = 0 TO 33
FOR CountY = 0 TO Length[CountX][0] * 44100 / 10
INC Count, 1
FMS[0] = (SIN(360/SampleRate*Count*Note[Frequency[CountX]+FMFrequency[0]]+FMShift[0])*Volume[CountX]*FMVolume[0])
FMS[1] = (SIN(360/SampleRate*Count*Note[Frequency[CountX]+FMFrequency[1]]+FMShift[1])*Volume[CountX]*FMVolume[1])
FMS[2] = SIN(360/SampleRate*Count*Note[Frequency[CountX]+FMFrequency[2]]+FMShift[2])
IF FMS[2] >= 0
FMS[2] = (1*Volume[CountX]*FMVolume[2])
ELSE
FMS[2] = (0*Volume[CountX]*FMVolume[2])
ENDIF
Samples[Count][1] = (FMS[0]+FMS[1]+FMS[2])/3
Samples[Count][0] = Samples[Count][1]
NEXT
NEXT

WRITEBYTE 1, 5 // Wird ignoriert und nicht als Datei gespeichert...

ENDIF


Bitte einmal nach ganz unten scrollen.
Weiß jemand warum? O_o