Probleme mit Kollisionsabfrage und Angriff

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Ronon_Dex

Betreff: Probleme mit Kollisionsabfrage und Angriff

BeitragDi, Mai 01, 2012 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Community,
Ich habe gerade ein kleines Problemchen.
Ich habe ein Spielfeld in dem Rechts der Gegner ist und links ich.
Das Ziel ist es den Gegner zu zerstören, das Problem dabei ist, das sich die Einheiten ja auch gegenseitig auf dem Spielfeld bekämpfen sollen.
Im Moment hab ich das nicht gerade gut gelöst, denn ich stehe ziehmlich auf dem Schlauch und weis nicht genau wie ich es hin bekomme, das die Einheiten stehen bleiben, sich bekämpfen und dann erst weiter laufen.

Zweites, ich weis nicht wie das Delay zwischen den Angriffen machen soll, also dass nur jede Sekunde einmal angegriffen wird, aber für jede Einheit die Zeit Individuell abläuft.

Hier ist der Code (Funktionsfähig), die benötigten dateien lade ich bei Rapidshare hoch (nur spartanische Bilder Very Happy)

BlitzBasic: [AUSKLAPPEN]
AppTitle "Gen Wars"
Global gfx_max=800, gfx_min=600
.start
Graphics gfx_max,gfx_min,32,0
SetBuffer BackBuffer()

Dim Zeile$(100)
Global hoch=200,runter=208,rechts=205,links=203,shift=42,leertaste=57,pdown=209,esc=1

Global game_state=0, menue_page=1

Const sFile$="player_data.gw", bottom=400


;; Menü

Global menue_title=LoadImage("gfx\menu_title.png")
Global start_button=LoadImage("gfx\start_button.png")
Global optionen_button=LoadImage("gfx\optionen_button.png")
Global beenden_button=LoadImage("gfx\beenden_button.png")
Global zurück_button=LoadImage("gfx\zurück_button.png")
Global button_800=LoadImage("gfx\800_button.png")
Global button_1024=LoadImage("gfx\1024_button.png")
Global button_1600=LoadImage("gfx\1600_button.png")
Global andere_button=LoadImage("gfx\andere_button.png")
Global menue_button=LoadImage("gfx\menue_button.png")

MaskImage menue_title,255,0,255
MaskImage start_button,255,0,255
MaskImage optionen_button,255,0,255
MaskImage beenden_button,255,0,255
MaskImage zurück_button,255,0,255
MaskImage button_800,255,0,255
MaskImage button_1024,255,0,255
MaskImage button_1600,255,0,255
MaskImage andere_button,255,0,255
MaskImage menue_button,255,0,255
ResizeImage menue_title,gfx_max,gfx_min

;;HUD

Global bUnit1=LoadImage("gfx\unit1.png")

;;Environment

Global ddTower=LoadImage("gfx\dt.png")
Global ggTower=LoadImage("gfx\gt.png")

;; Waffen



SeedRnd MilliSecs()


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Player;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Type player
Field pleben
Field pgold
Field pmana
Field prubin
Field plevel
End Type

Global pp.player = New player
pp\pleben=LiesWert(sFile,"pleben")
pp\pgold=LiesWert(sFile,"pgold")
pp\pmana=LiesWert(sFile,"pmana")
pp\prubin=Lieswert(sFile,"prubin")
pp\plevel=Lieswert(sFile,"plevel")


Global kills=0



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Monster;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Type gegner
Field gpic
Field gtype
Field gleben
Field gatk
Field gspeed#
Field gpos#
Field gway#
Field gpvp
End Type
Global gtower=250,atk=0,patk=0,inPvP=0


Type defender
Field dpic
Field dtype
Field dleben
Field datk
Field dspeed#
Field dpos#
Field dway#
Field dpvp
End Type

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Main Loop;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Repeat
Cls

Select game_state
Case 0
menue()
Case 1
DrawImage ddTower,5,bottom-15
DrawImage ggTower,780,bottom-15
If GegnerTimer<MilliSecs() Then
CreateMonster()
GegnerTimer= MilliSecs() + random(2,7)
EndIf

Text 10,10,"Kills: "+kills
Text 775,420,gtower
Text 5,420,pp\pleben
Text 100,100,inPvP

UpdateGame()
ClickAction()

If gtower<=0 Text gfx_max/2,gfx_min/2,"GEWONNEN"
If pp\pleben<=0 Text gfx_max/2,gfx_min/2,"VERLOREN"

If ClickButton(gfx_max-300,gfx_min-gfx_min+10,menue_button) Then
game_state=0
menue_page=1
EndIf
End Select
If game_state=99 Then Goto start

Flip
Until KeyHit(1)
End


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Funtions;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Function random(v,b)
Return Rand(v,b)*1000
End Function



Function ClickAction()

If ClickButton(5,500,bUnit1) Then
CreateDefender(1)
EndIf
End Function



Function menue()

DrawImage menue_title,0,0
Select menue_page
Case 1

If ClickButton(gfx_max/2-130,gfx_min/3,start_button) Then
game_state=1
EndIf
If ClickButton(gfx_max/2-130,gfx_min/3+80,optionen_button) Then
menue_page=2
EndIf
If ClickButton(gfx_max/2-130,gfx_min/3+160,beenden_button) Then
End
EndIf
Case 2

If ClickButton(gfx_max/2-130,gfx_min/3,button_800) Then
gfx_max=800
gfx_min=600
game_state=99
EndIf
If ClickButton(gfx_max/2-130,gfx_min/3+80,button_1024) Then
gfx_max=1024
gfx_min=768
game_state=99
EndIf
If ClickButton(gfx_max/2-130,gfx_min/3+160,button_1600) Then
gfx_max=1600
gfx_min=1200
game_state=99
EndIf
If ClickButton(gfx_max/2-130,gfx_min/3+240,andere_button) Then
gfx_max=Input("Geben sie ihre gewünschte Breite ein (höhere Zahl): ")
gfx_min=Input("Geben sie nun ihre gewünschte Höhe ein: ")
game_state=99
EndIf
If ClickButton(gfx_max-300,gfx_min-100,zurück_button) Then
menue_page=1
EndIf

End Select
End Function



Function UpdateGame()

For gg.gegner = Each gegner
If pp\pleben<=0 Or gtower<=0
FreeImage gg\gpic
Delete gg.gegner
ElseIf gg\gleben<=0
FreeImage gg\gpic
Delete gg.gegner
kills=kills+1
ElseIf gg\gpos<=25 ;Beim Turm
atk=atk+1
If atk>=100 pp\pleben=pp\pleben-gg\gatk
DrawImage gg\gpic,gg\gpos,gg\gway
Text gg\gpos,bottom-30,gg\gleben
Else
gg\gpos=gg\gpos-gg\gspeed
DrawImage gg\gpic,gg\gpos,gg\gway
Color 155,0,0
Text gg\gpos,bottom-30,gg\gleben
EndIf
Next
If atk>=100 atk=0

For dd.defender = Each defender
If pp\pleben<=0 Or gtower<=0
FreeImage dd\dpic
Delete dd.defender
ElseIf dd\dleben<=0
FreeImage dd\dpic
Delete dd.defender
ElseIf dd\dpos>=770 ;Beim Turm
patk=patk+1
If patk>=100 gtower=gtower-dd\datk
DrawImage dd\dpic,dd\dpos,dd\dway
Text dd\dpos,bottom-30,dd\dleben
Else
dd\dpos=dd\dpos+dd\dspeed
DrawImage dd\dpic,dd\dpos,dd\dway
Color 155,0,0
Text dd\dpos,bottom-30,dd\dleben
EndIf
Next
If patk>=100 patk=0

End Function



Function CreateMonster()

gg.gegner = New gegner
gg\gpic=LoadImage("gfx\g.png")
gg\gtype=1
gg\gpos=760
gg\gway=bottom+Rnd(-2,2)
Select gg\gtype
Case 1 gg\gleben=25 : gg\gspeed=0.3 : gg\gatk=1
End Select
DrawImage gg\gpic,gg\gpos,gg\gway
End Function

Function CreateDefender(deftype)

dd.defender = New defender
dd\dpic=LoadImage("gfx\u1.png")
dd\dtype=deftype
dd\dpos=5
dd\dway=bottom+Rnd(-2,2)
Select dd\dtype
Case 1 dd\dleben=25 : dd\dspeed=0.3 : dd\datk=1
End Select
DrawImage dd\dpic,dd\dpos,dd\dway
End Function



Function distanz%(x1%,x2%)
Return Abs(x2-x1)
End Function



Function ClickButton(bx,by,picture,bt$="")

DrawImage picture,bx,by
Local newmx=MouseX() : newmy=MouseY()
If newmx > bx And newmx < bx+ImageWidth(picture) Then
If newmy > by And newmy < by+ImageHeight(picture) Then
If MouseHit(1) Then
Return 1
Else
Text newmx+10,newmy+10,bt
EndIf
EndIf
EndIf
End Function



Function LiesWert$(File$,SuchWort$)
Local Datei$, DateiHandle%, Wert$, Temp$, Da%
If FileExists(File) Then
DateiHandle=ReadFile(File)
While Eof(DateiHandle) = False
Temp=ReadLine(DateiHandle)
If LinkerTeil(Temp) = SuchWort Then
Wert=TrenneWert(Temp)
Exit
EndIf
Wend
CloseFile DateiHandle
EndIf
Return Wert$
End Function

Function SchreibeWert(File$,SuchWort$, Inhalt$)
Local AnzahlZeilen%, Erfolg%
If FileExists(File) Then
DateiHandle=ReadFile(File)
While Eof(DateiHandle)=0
i=i+1
Zeile(i)=ReadLine(DateiHandle)
Wend
AnzahlZeilen=i
CloseFile DateiHandle
DateiHandle=WriteFile(File)
For i=1 To AnzahlZeilen
If LinkerTeil (Zeile(I))=SuchWort Then
Zeile(i) = SuchWort + "=" + Inhalt
Erfolg=1
EndIf
WriteLine DateiHandle, Zeile(i)
Next
If Erfolg=0 Then
WriteLine DateiHandle, SuchWort + "=" + Inhalt
EndIf
CloseFile DateiHandle
Else
DateiHandle=WriteFile(File)
WriteLine DateiHandle, SuchWort + "=" + Inhalt
CloseFile DateiHandle
EndIf
End Function

Function LinkerTeil$(Zeile$)
Local Wert$, Da%
Da=Instr(Zeile,"=")
If Da>0
Wert=Left( Zeile, Da-1)
EndIf
Return Wert$
End Function
Function TrenneWert$(Zeile$)
Local Wert$, Da%
Da=Instr(Zeile,"=")
Wert=Mid( Zeile, Da+1, -1)
Return Wert$
End Function
Function FileExists(Datei$)
If FileType(Datei) =1 Then
Return True
EndIf
End Function


https://www.blitzforum.de/upload/file.php?id=11678

/7Edit Forums Archiv Link

mfg
Ronon_Dex
  • Zuletzt bearbeitet von Ronon_Dex am Di, Mai 01, 2012 20:03, insgesamt einmal bearbeitet

ZEVS

BeitragDi, Mai 01, 2012 15:39
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Speichere einfach zu jeder Einheit, ob sie kämpft und ggf. gegen wen. Dann kannst du stets überprüfen, ob die Einheit bewegt werden soll oder nicht. Genaueres kann ich dir leider nicht sagen, da ich keine Lust habe, deinen Code nach den relevanten Teilen zu durchsuchen.
2. https://www.blitzforum.de/foru...hp?t=34436

Zudem solltest du Bilder einmal laden; am besten vor der Hauptschleife. Du kannst sie schließlich mehrmals zeichnen.

ZEVS
 

Ronon_Dex

BeitragDi, Mai 01, 2012 15:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu 1. das habe ich schonmal versucht nur ich hatte das Problem, das entweder alle anhielten auch wenn sie nicht in der nähe waren, oder sie nicht mehr weiter liefen, oder das sie zum ersten liefen und dann nurnoch die Gegner weiter gingen.

Zu 2. Das war schon hilfreicher Very Happy und ich habe das auch gleich erledigt also nurnoch erstens Sad

//Edit:
Hier der Teil in dem die einzelnen States der Einheiten abgefragt werden:

BlitzBasic: [AUSKLAPPEN]
Function UpdateGame()

For gg.gegner = Each gegner
If pp\pleben<=0 Or gtower<=0
Delete gg.gegner
ElseIf gg\gleben<=0
Delete gg.gegner
kills=kills+1
ElseIf gg\gpvp=1
DrawImage gg\gpic,gg\gpos,gg\gway
Text gg\gpos,bottom-30,gg\gleben
ElseIf gg\gpos<=25 ;Beim Turm
If gg\gdelay<MilliSecs() Then
pp\pleben=pp\pleben-gg\gatk
gg\gdelay= MilliSecs() + 1000
EndIf
DrawImage gg\gpic,gg\gpos,gg\gway
Text gg\gpos,bottom-30,gg\gleben
Else
gg\gpos=gg\gpos-gg\gspeed
DrawImage gg\gpic,gg\gpos,gg\gway
Color 155,0,0
Text gg\gpos,bottom-30,gg\gleben
EndIf
Next

For dd.defender = Each defender
If pp\pleben<=0 Or gtower<=0
Delete dd.defender
ElseIf dd\dleben<=0
Delete dd.defender
ElseIf dd\dpvp=1
DrawImage dd\dpic,dd\dpos,dd\dway
Text dd\dpos,bottom-30,dd\dleben
ElseIf dd\dpos>=770 ;Beim Turm
If dd\ddelay<MilliSecs() Then
gtower=gtower-dd\datk
dd\ddelay= MilliSecs() + 1000
EndIf
DrawImage dd\dpic,dd\dpos,dd\dway
Text dd\dpos,bottom-30,dd\dleben
Else
dd\dpos=dd\dpos+dd\dspeed
DrawImage dd\dpic,dd\dpos,dd\dway
Color 155,0,0
Text dd\dpos,bottom-30,dd\dleben
EndIf
Next

End Function

BladeRunner

Moderator

BeitragDi, Mai 01, 2012 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Die wenigsten mögen Filehoster wie Rapidshare- benutz doch das Archiv hier im Portal für die Bilderchen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

ZEVS

BeitragDi, Mai 01, 2012 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde die Types gegner und defender (umbenennen; ja, aber darauf will ich nicht hinaus) mit einem Field fightWith.defender bzw. fightWith.gegner versehen und darauf achten, dass diese Felder immer direkt aufeinander zeigen. Dann musst du nur noch alle gegner auf Kollision mit allen defendern prüfen und die Verbindung aufbauen. Praktischerweise wird der Kampf sofort beendet, wenn einer stirbt, da er dann mit Delete gelöscht wird und alle Links auf ihn zu Null werden.
Diese Vorgehensweise bietet sich aber nur für Kämpfe zwischen zwei Einheiten an. Wenn mehr Einheiten involviert sind, wird das Ganze wohl ein bisschen komplizierter.
Eine Alternative, die von letzterem Einwand nicht betroffen ist, besteht darin, zunächst einfach bei jeder Einheit zu prüfen, ob ein Gegner (defender) in Reichweite ist. Sollte dies so sein, wird nicht vorgerückt und, wenn zu dem noch die Möglichkeit eines Angriffes besteht, angegriffen werden. Dies kann bei vielen Einheiten allerdings die Performance drücken (hier wird bei jedem Frame ein Angriffsziel gesucht, während oben dies wesentlich seltener geschieht).

ZEVS

Xeres

Moderator

BeitragDi, Mai 01, 2012 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum hast du gegner und defender mit den exakt gleichen Feldern? Spezialfälle wie "Beim Turm" würde ich so auch nicht unbedingt einbauen; Spezielle Objekte auf der Karte sollten auch als Types realisiert werden. Was ich nicht gesehen habe, ist eine Variable, die die aktionen Steuert. Sowas wie Kämpfen, Vorrücken, Flüchten...
Das Zeichnen von Bild und Leben würde ich auch aus dem Block heraus ziehen; das muss nur einmal da stehen, wenn nichts dagegen spricht.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Ronon_Dex

BeitragDi, Mai 01, 2012 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe die ganzen SteuerVars in das Type gepackt, damit ich jede Einheit einzeln ansprechen kann und bei defender werden noch andere Fields dazu kommen Smile.
der Turm wird das einzige bleiben was einzeln "daneben" steht deswegen hab ich es einfach so stehen lassen.

Gibt es nicht eine möglichkeit beide darauf zu prüfen ob sie 10 Koordinaten entfernt von einem Gegner sind und dann bleiben sie stehen und bekämpfen sich ? Das wäre doch das einfachste oder nicht ?

..Upload im ersten Post durch Forum Archiv ersetzt

Xeres

Moderator

BeitragDi, Mai 01, 2012 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ja das geringste Problem. Viel Spaß mit Herrn Pythagoras!
Nimm ZEVS' tipp an, und speicher den Gegner direkt in einem Feld. Das wird so vieles einfacher machen.
(Angreifer und Verteidiger würde ich auch in einem Allgemeinem Typ haben, sie sind ja nahezu identisch.)
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Ronon_Dex

BeitragDi, Mai 01, 2012 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich komme gerade nicht ganz mit was ZEVS genau meint.
Die Types sind zwar noch identisch aber es kommen noch verschiedene dinge bei beiden rein aber soweit bin ich noch nicht jetz sollte erstmal das Kampfsystem funktionieren

Jamagin

BeitragDi, Mai 01, 2012 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine weitere Möglichkeit wäre es einen Blindlayer zu verwenden! Also eine Art Mask für die Objekte. Zum Beispiel einen Kreis der halt eine bestimmte Größe hat, dieser Kreis bewegt sich mit dem Objekt mit und wenn nun ein GegnerObjekt diesen Kreis berührt so kannst du dann die Aktionsvariablen setzen. Entweder Flucht, Angriff oder sonstwas.
Dieser Blindlayer ist aber unsichtbar zu machen oder wie eben Xeres schon sagte Pythagoras.
Ich habe diese Technik damals vom GameEditor Click & Play abgeschaut und bei einem Jump'n Run Game nachprogrammiert. Eine feine Sache!
Du kannst auch Linien verwenden als Bereichsmarker. Wenn sich da zB. ein Gegner links und rechts bewegt, vor einem Tor oder was und der Spieler sich im Bereich der Linie bewegt (Spieler kollidiert mit Linie = Aktion ausführen), so soll ihm der Gegner folgen. Ist ein simples Prinzip!

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

ZEVS

BeitragDi, Mai 01, 2012 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Zunächst neues Type-Design:
BlitzBasic: [AUSKLAPPEN]
Type player
Field pleben
Field pgold
Field pmana
Field prubin
Field plevel
Field fightWith.gegner ;<- neu
End Type
Type gegner ;"enemy" wäre passender, wenn die anderen Types player und defender heißen
Field gpic
Field gtype
Field gleben
Field gatk
Field gspeed#
Field gpos#
Field gway#
Field gpvp
Field fightWith.defender ;<-neu
End Type
Type defender
Field dpic
Field dtype
Field dleben
Field datk
Field dspeed#
Field dpos#
Field dway#
Field dpvp
Field fightWith.gegner ;neu
End Type


Dann eine Überprüfung:

BlitzBasic: [AUSKLAPPEN]
Function CheckFights()

For Local g.gegner = Each gegner
;jeder Gegner der nicht gerade kämpft...
If g\fightWith = Null Then

For Local d.defener = Each defender
;wird mit jedem kampflosen defender verglichen
If d\fightWith = Null Then

If UnitsCollide(g, d) Then ;s.u.
;Felder einstellen
g\fightWith = d
d\fightWith = g
Exit ;Wir können (und müssen) die Überprüfung der defender hier abbrechen.

EndIf

EndIf

Next

EndIf

Next

End Function

Function UnitsCollide(g.gegner, d.defender)

;kannst du selbst.

End Function

Letzte Funktion einfach über Satz des Pythagoras.
Dann weißt du praktischerweise, wer gerade mit wem kämpft und musst diese Leute halt stehen lassen.
Was dir zu tun bleibt? Folgendes:
- Die Funktion UnitsCollide musst gefüllt werden
- Obige Funktion muss integriert werden
- Die Felder müssen überprüft werden
- Können mehrere gegner gegen einen defender (und umgekehrt) kämpfen?

ZEVS
 

Ronon_Dex

BeitragDi, Mai 01, 2012 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich habe das jetz von dir eingebaut und es Funktioniert perfekt, jedoch hab ich etwas entfernt ->
BlitzBasic: [AUSKLAPPEN]

Function CheckFights()

For gg.gegner = Each gegner
For dd.defender = Each defender
If distanz(gg\gpos, dd\dpos)<10 And distanz(gg\gpos, dd\dpos)>8 Then
gg\fightwith = dd
dd\fightwith = gg
EndIf
Next
Next

End Function


wird es da iergendwann Probleme geben ? Also getestet habe ich es mit mehreren Angreifern und Defendern

Vielen Dank euch Wink

Xeres

Moderator

BeitragDi, Mai 01, 2012 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
...warum? Jetzt wird der Teil ausgeführt, ob es nötig ist oder nicht. Und du kannst auch nicht mehr überprüfen, ob es ein valides Ziel gibt. Und du kannst die Einheiten nicht auf mehrere Ziele verteilen... Du hast nur Vorteile, wenn du ziele speicherst...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Ronon_Dex

BeitragDi, Mai 01, 2012 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
das Stimmt nicht, als die Abfragen drin waren, wurde immer nur ein Ziel angegriffen.
erst nach dem entfernen der abfragen griff es mehrere Ziele an ...

Moment, den Teil den ich gepostet habe, hab ich nicht komplett gelöscht Very Happy sondern nur das was bei Zevs Version mehr drin steht Very Happy.
So wie es oben in meinem Beitrag steht hab ich es in meinem Code nun.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group