Problem mit dem kompletten Code (wie sich rausstellte)

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3, 4, 5  Weiter

Neue Antwort erstellen

Jamagin

BeitragSa, Jan 16, 2010 13:17
Antworten mit Zitat
Benutzer-Profile anzeigen
@mpmxyz

Code: [AUSKLAPPEN]

Graphics3D 800, 600, 0, 2
SetBuffer BackBuffer()
SeedRnd MilliSecs ()

Global VSYNC = CreateTimer(60)
Global Nummer = 0


Type TSpieler
   Field ID
   Field x, y
End Type
Global Spieler.TSpieler

; Hauptschleife
Repeat
   Cls
   WaitTimer (VSYNC)

      ; Neuen Spieler erstellen mit Leertaste
      If KeyHit(57)     
         Nummer = Nummer + 1
         Create_Spieler(Nummer, Rand(50, 750), Rand(50, 550))
      EndIf
   
      Update_Spieler()   
      Spieler_Dead()
   Flip
Until KeyHit(1)
End


Function Create_Spieler(Nummer, x, y)
   Spieler.TSpieler = New TSpieler
   Spieler\ID = CreateImage (32, 32)
   Spieler\x = x
   Spieler\y = y
   Color Rand(1,255), Rand(1,255), Rand(1,255)
   Rect x, y, 32, 32, 1
   GrabImage Spieler\ID, x, y
End Function

Function Update_Spieler()
   For Spieler.TSpieler = Each TSpieler
      DrawImage Spieler\ID, Spieler\x, Spieler\y, 0
   Next
End Function

Function Spieler_Dead()
   For Spieler.TSpieler = Each TSpieler
      For Spieler2.TSpieler = Each TSpieler
         If Spieler <> Spieler2
            If ImagesOverlap (Spieler\ID, Spieler\x, Spieler\y, Spieler2\ID, Spieler2\x, Spieler2\y)
               Delete Spieler
               Delete Spieler2
               Exit
            EndIf
         EndIf
      Next
   Next
End Function


Ich war so nett, also hier ein Beispiel!
Wem die Coordinaten zu weit auseinanderliegen für den Test, der kann den Bereich in der Create_Spieler ändern... aber nur in der Hauptschleife


lg. Jamagin Cool

NB: Ich hoffe das es verständlich ist, natürlich in einem Spiel nimmt man Grafiken aber für ein Beispiel reicht es vollkommen!

NightPhoenix

BeitragSa, Jan 16, 2010 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
*edit* 3 Minuten zu spät*

Ich würde einfach das Exit raus lassen, was soll das bringen, außer eben dass die anderen Einträge missachtet werden?
Andernfalls könnte man ein zusätzliches Field in das Type "TSpieler" einfügen (Field loeschen), falls man in dem Schleifendurchlauf noch etwas mit dem Objekt machen möchte nach der Feststellung, dass es gerlöscht werden soll (z.b. eine gewisse Zeit später löschen).

BlitzBasic: [AUSKLAPPEN]
Function SpielerDead() 
For tsp.TSpieler = Each TSpieler
If ImagesOverlap oder ImagesCollide...
tsp\loeschen=1
EndIf
Next
End Function

Function SpielerDelete()
For tsp.TSpieler = Each TSpieler
If tsp\loeschen=1 Then
Delete tsp.TSpieler
EndIf
Next
End Function



*edit2*
Mein Gott wozu das Exit verdammt nochmal Jamagin???!!!!

Jamagin

BeitragSa, Jan 16, 2010 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
@NightPhönix

Wozu eine Schleife zu Ende prüfen wenn es nix mehr zum prüfen gibt. Also Exit ist berechtigt!!

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

Midimaster

BeitragSa, Jan 16, 2010 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
@jamagin

wenn es in der Schleife nur etwas zu prüfen gäbe, wäre das EXIT vertretbar. Schließlich ist anzunehmen, dass pro Durchlauf nur 1 Gegner getötet wurde. Nach 1/60-sec gäbe es dann ja eh die nächste Gelegenheit auch andere Gegner zu entfernen.

Aber in der Schleife von Chrissa befinden sich auch Bewegungs- und Zeichenroutinen für alle Elemente die in der Typ-Auflistung hinter dem sterbenden noch drankommen. Die würden bei einem EXIT in dieser 1/60-sec nicht weiterbewegt und gezeichnet. Das könnte ruckeln. Nach 1/60-sec wäre natürlich auch das ausgestanden, kommt doch dann die nächste Gelegenheit alle wieder zu bewegen.


@alle

Letzendlich ist es eine Philosophie-Frage, weil es auf beide Arten zu keinen schwerwiegenden Fehlern kommt. Chrissa jedenfalls wird die Diskussion in seinem Thread nicht helfen!

Was Chrissa wirklich will, ist das ein Gegner mit Energie 0 nicht gleich verschwindet, sondern noch einen schönen Tot stirbt. Da wäre die Lösung mit einem Gegner1\Loeschen% nicht schlecht, die vorhin einer (EDIT: ah! es war NighPoenix) vorgeschlagen hat. Dann kam man diesen Gegner für einige Sekunden "sonderbehandeln".

Jamagin

BeitragSa, Jan 16, 2010 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
@Midimaster

Nun, wenn die Bewegungsroutine auch in einer eigenen Funktion stünde wäre es kein Problem oder? Andernfalls kommt eben das Sterben des Spielers nach der Bewegung dran mit If then else...

Und ja, man kann ja zusätzlich einen Sterbetimer einbauen, wo man halt ein paar hübsche I AM DEAD Animationen ablaufen lassen kann und danach eben den Spielertype löscht und mit Exit die Schleife verlässt. Dazu braucht man nicht wirklich eine zusätzliche Löschvariable... Ist ja alles keine große Hexerei!!

Das Exit zwingt ja keinem es zu verwenden, es kommt eh immer drauf an wie man programmiert. Ich habe alles strikt getrennt und daher sauberen Code.

Werde mich wieder zurückziehen, sonst landen meine Beiträge im Trash...!


So long...

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

Chrissa

BeitragSa, Jan 16, 2010 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
so jetzt sag ich auch mal wieder was Smile

@midimaster

Hab dein Beispiel mal mit dem shuttle fire getestet. Jetzt wird es nicht mehr gezeichnet. Warum weiß ich auch(hab ein Probelm gefunden *stolz* Very Happy ) Die ShuttleFireZeit wird in der Funktion Lokal gesetzt. Diese kann ich ja dann in einer anderen Funktion nicht mehr aufrufen... Global kann man diese Variable nicht setzen, weil sie ja nur in dem Moment, in dem Key 200 gedrückt wird, erscheinen soll. also kann ich sie auch nicht in das Mainprogramm schreiben...
Oder hab ich da jetzt nen Denkfehler drin?? Auf jeden Fall hier die zwei betroffenen Funktionen:
BlitzBasic: [AUSKLAPPEN]
;Funtkion Spielerbewegung

Function move()

If KeyDown(203)
TPlayer\x=TPlayer\x-8
EndIf


If KeyDown(205)
TPlayer\x=TPlayer\x+8
EndIf

If KeyDown(208)
TPlayer\y=TPlayer\y+8
EndIf

If KeyDown(200)
TPlayer\y=TPlayer\y-8
SchuttleFireZeit = MilliSecs()+300
EndIf

If TPlayer\x <= 80 Then
TPlayer\x = 80
EndIf

If TPlayer\x >= 1220 Then
TPlayer\x=1220
EndIf

If TPlayer\y <= 80 Then
TPlayer\y=80
EndIf

If TPlayer\y >= 944 Then
TPlayer\y=944
EndIf

End Function


BlitzBasic: [AUSKLAPPEN]
;Funktion Screen malen

Function draw()
Cls

DrawImage space,1280/2,1024/2

DrawImage shuttle,TPlayer\x,TPlayer\y

For Enemy1.alien = Each alien
Enemy1\y=Enemy1\y+5
DrawImage alien,Enemy1\x,Enemy1\y
Next


For Enemy2.ufo = Each ufo
Enemy2\y=Enemy2\y+3
DrawImage ufo,Enemy2\x,Enemy2\y
Next

If SchuttleFireZeit > MilliSecs() Then
DrawImage shuttle_fire,TPlayer\x-4,TPlayer\y+55
EndIf

End Function



Die anderen Varianten test ich jetzt dann aus Smile

Midimaster

BeitragSa, Jan 16, 2010 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst sie natürlich gerne GLOBAL setzen, denn das ist sie ja auch! Du brauchst sie schließlich an mehreren Stellen: Also GLOBAL. (Es geht auch anders, aber das würde dir jetzt nicht viel bringen....

Außerdem fehlen die Schüsse noch in der Draw()

Chrissa

BeitragSa, Jan 16, 2010 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, aber wenn ich die Variable Global setzen will, kann ich das nicht in der Funktion (Error: Global can only appaer in Main Programm). Setze ich sie in der amin hat das nichts mehr mit dem Punkt zu tun, an dem ich Key 200 gedrückt habe... oder wie meinst soll ich das machen?

DaysShadow

BeitragSa, Jan 16, 2010 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst globale Variablen außerhalb jeglicher Funktionen, Schleifen etc. definieren.
Wenn du eine Variable in zwei Funktionen brauchst wird es schon Sinn machen sie global zu setzen, denn in deiner Funktion move() erstellst du sie als lokale Variable und gibst ihr einen Wert und bei draw() fragst du sie ab, das geht halt nicht, da lokale Variablen nur innerhalb der Funktion, Schleife etc. existieren in der sie erstellt werden.
Sobald deine Funktion move() zu Ende ist wird die Variable SchuttleFireZeit gelöscht.

MfG DaysShadow

Edit: Verdammt, da scheint wohl doch mehr anders zu sein als ich dachte Razz
Blessed is the mind too small for doubt
  • Zuletzt bearbeitet von DaysShadow am Sa, Jan 16, 2010 20:21, insgesamt einmal bearbeitet

Chrissa

BeitragSa, Jan 16, 2010 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm hab die Variable jetzt mal außerhalb jeglicher Schleifen, Funktionen etc. deklariert. (also: Global ShuttleFireZeit ; ohne Wertzuweisung) allerdings geht es so auch nicht...


@midimaster:
Das Zeichnen des Schusses ist nun auch in einer eigenen Funktion. Der Grund dafür ist, dass ich den Schuss ja auch löschen können will, wenn er mit dem Enemy kollidiert... Smile

mpmxyz

BeitragSa, Jan 16, 2010 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu "lokale Variablen existieren nur in ihren Schleifen":
DaysShadow scheint da etwas mit BlitzMax+Strict/Superstrict / vielen anderen Sprachen verwechselt zu haben.
In BlitzBasic gilt jede lokale Variable für die Funktion, in der sie erstellt wurde.
Wenn sie in einer Schleife erstellt wurde, existiert sie immer noch außerhalb der Schleife.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Midimaster

BeitragSa, Jan 16, 2010 20:45
Antworten mit Zitat
Benutzer-Profile anzeigen
@chrissa

Die Variable gehört GLOBAL. das ist schon richtig so. GLOBAL heißt ja nur, dass du sie überall im Code verwenden kannst.

Das Schüsse-Zeichnen gehört auch in die Draw(). Alles Zeichnen gehört in die Draw(). Vertrau mir!

Das Schüsse-Ändern, -Bewegen, -Losschicken kann ruhig in anderen Funktionen erfolgen. Alle Typen-Elemente sind auch immer GLOBAL, daher kannst du sie überall verwenden und ansprechen.


Du schreibst gar nicht, was nicht geht... Bitte genaue Beschreibung. Vielleicht kannst auch mal den Code wieder reinwerfen. Am besten in deinen Beitrag vom 28.12 da stand der Code schon mal, ist ja nun aber überholt . Einfach mit EDIT alten Beitrag öffnen, alten Code raus und neuen Code rein. Und vielleicht noch eine Bemerkung [EDIT 16.01.2010] dazu!

noch was zu:
Zitat:
Das Zeichnen des Schusses ist nun auch in einer eigenen Funktion. Der Grund dafür ist, dass ich den Schuss ja auch löschen können will, wenn er mit dem Enemy kollidiert...

Du glaubst immer noch nicht an den Vergleich mit den Film-Bildern, die ich oben beschrieben habe. Das Schuss Zeichnen hat rein gar nichts damit zu tun, ob du die Schüsse auf Kollision testen willst. In der Logik eines BB-Spiels sind die Schüsse auch dann da, wenn du sie nicht gezeichnet hast. Da ist eine Welt in BB in der die Akteure leben. Und auch kollidieren können auch wenn du sie gar nicht gezeichnet hast., Das Zeichnen ist wie das Fotografieren der Scene mit einer Kamera zu sehen. Und auch ohne dass jemand ein Foto macht, existieren die Akteure und machen ihr Ding! z.b. weiterfliegen, Kollisionen, etc.


bis gleich

Chrissa

BeitragSa, Jan 16, 2010 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
So der Code is im aller ersten Post drinn.

Meine Probleme sind jetzt:
1. Kein ShuttleFire mehr
2. Es spawnen nur noch aliens wobei ich da nichts geändert habe...
3. Der Spieler kann nicht mehr sterben
4. Die alien death animation ist etwas versetzt zum eigentlichen Standort des aliens...

@midimaster:
du meinst ich soll das kollidieren nicht auf die grafiken basieren, sondern das "kollidieren" der koordinaten der Objekte? alles unabhängig der bilder?
Die Bilder zeigen also nur was passiert?

Midimaster

BeitragSo, Jan 17, 2010 0:06
Antworten mit Zitat
Benutzer-Profile anzeigen
hier mal meine Kritik am aktuellen code (wenn ich darf?)

Bei aller Kritik, die gleich kommt...Ein Lob vorneweg. Du hast das mit dem Kollidieren schon ganz gut verstanden. Das ganze basiert tatsächlich nicht auf den gemalten Bildern, sondern virtuell. Aber umgesetzt hast Du es nicht. Es sind immer noch viele Mal-Befehle mitten in Aktionen. Die Aktionen brauchen keine Bilder um zu funktionieren. Wenn du Pech hast, erhältst Du durch sowas sogar "Doppelbilder" eines Objekts.

Die Draw() sollte die letzte gerufene Funktion vor dem FLIP sein. Ist aber erst sinnvoll, wenn ALLE DrawImage aus den Aktionen verschwunden sind.

WIE FEHLER FINDEN?
Nun zeig ich dir mal, wie ich bei der Fehlersuche am Beispiel ShuttleFire vorgehe:

Du beobachtest, dass ShuttleFire nicht kommt. Also prüfen wir, ob Key200 überhaupt die ShuttleFireZeit setzt. Ich mach das mit DEBUGLOG und füge zwei Zeilen ein:
BlitzBasic: [AUSKLAPPEN]
      	If KeyDown(200)
DebugLog "player move"
TPlayer\y=TPlayer\y-8
ShuttleFireZeit = MilliSecs()+300
D
ebugLog "setze " + ShuttleFireZeit
EndIf
Danach starten und bei Druck auf Key200 wird im Debugger das erwartete Ergebnis angezeigt. Probier es mal!

Den gleichen Test mach ich jetzt in der Draw() bei:
BlitzBasic: [AUSKLAPPEN]
	DebugLog "shuttle fire" + ShuttleFireZeit
If SchuttleFireZeit > MilliSecs() Then
DebugLog "da sind wir auch schon"
DrawImage shuttle_fire,TPlayer\x-4,TPlayer\y+55
EndIf

Dieser Test zeigt, dass ShuttleFireZeit immer noch gesetzt ist, aber nicht in die IF gesprungen wird. Der Fehler muss in der If-Zeile sein. Na? Siehst Du ihn? SchuttleFireZeit

UFO-Spawn

Die Fehlersuche ist die gleiche wie beim ShuttleFire. Du fügst je zwei DEBUGLOG bei der Geburt und bei dem Zeichnen der Ufos ein:
BlitzBasic: [AUSKLAPPEN]
Function UfoSpawn()
count_en = count_en +1
DebugLog "ufos spawn count_en: " + count_en
If count_en >=300 Then
DebugLog "neues Ufo geboren"
count_en=0

BlitzBasic: [AUSKLAPPEN]
		DebugLog "vor ufos malen"
For Enemy2.ufo = Each ufo
Enemy2\y=Enemy2\y+3
DebugLog "ein Ufo wird gemalt"


Und schon wird klar. Die Ufos laufen perfekt!

Der Spieler stirbt nicht mehr?
Zitat:
If TPlayer\health <=0 Then
DrawImage Gameover,1280/2,1024/2
over=CreateTimer(1000)
WaitTimer over
End

EndIf

Die roten Zeilen sind totaler Quatsch.

Die 5 Zeilen sind wirklich totaler Quark. Du solltest meine Texte besser lesen. Über das GameOver hab ich schon was geschrieben, aber du solltest es auch umsetzen oder nachfragen. das GameOver-Bild ist auch ein Akteur, also gehört die Zeichenroutine samt IF in die Draw(). Dort wo du sie zeichnest, gibt es gar kein FLIP, um sie zu sehen! Vergiß das mal das mit dem Timer, oder lies es erstmal richtig nach! Hier jedenfalls hat er nichts zu suchen!

Nimm beide Timer-Zeilen und das End raus und dann teste mal. Außerdem heisst die Figur Spieler und nicht TSpieler! Wie dann eine Ende ausgelöst wird? Na an der Stelle, wo dem Player die Health abgezogen wird:

BlitzBasic: [AUSKLAPPEN]
If Player.Health <=0 Then
If EndeIstNahe=0 Then
EndeIstNah = MilliSecs() +1000
ElseIf EndeIstNah <MilliSecs() Then
End
EndIf
EndIf

Chrissa

BeitragMo, Jan 18, 2010 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Also:
es spawnen wieder ufos. Das Problem war, dass die Variable count_en nicht über 100 gegangen ist. warum auch immer, da sie doch eignentlich lokal sein sollte...
Das S(c)huttlefire wird wieder gemalt (scheiß Schreibfehler Wink)
Aber der Player stirbt immer nocht nicht. Das musst du mir noch einmal erklären...

2 weitere Probleme sind nun:
1. Das Spiel hängt sich auf, wenn man zu wild ballert Wink
2. Sporadisch kommt die Meldung Object does not exist. Der Debugger markiert da die Zeile:
If ImagesCollide(TSchuss\s_type,TSchuss\x,TSchuss\y,0,ufo,Enemy2\x,Enemy2\y,0) Then

PS: Das kollidieren ohne Bilder muss ich noch machen. Da schau ich mir noch ein paar Tutorials an, wie man Imagescollide ersetzen kann Wink

Nicdel

BeitragMo, Jan 18, 2010 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
If ImagesCollide(TSchuss\s_type,TSchuss\x,TSchuss\y,0,ufo,Enemy2\x,Enemy2\y,0) Then 

Kann es sein, dass TSchuss oder Enemy2 schon gelöscht wurden? Kann ich bitte noch mal den ganzen Code haben Smile
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Midimaster

BeitragMo, Jan 18, 2010 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
PS: Das kollidieren ohne Bilder muss ich noch machen. Da schau ich mir noch ein paar Tutorials an, wie man Imagescollide ersetzen kann Wink


So ganz traust Du mir noch nicht, gell? Du kannst ImageCollide getrost verwenden, ohne die Bilder mit Drawimage() in diesem Block zu zeichnen. Es hat das Eine echt nichts mit dem Anderen zu tun! ImageCollide() malt sich die Bilder selbst in einen eigenen Buffer. Es wird also auch funktionieren, wenn dort kein DrawImage steht!


Verwende weiterhin ImageCollide()


Den sporadischen Fehler kannst Du mit diesem Trick besser einkreisen. Schreibe vor die Problemzeile Diese beiden DEBUG-Zeilen. Dann wird der DEBUGGER dir das fehlende Objekt verraten:
BlitzBasic: [AUSKLAPPEN]
....
DebugLog " es ist der Tschuss" + TSchuss\x
DebugLog " es ist das Ufo " + Enemy2\x
If ImagesCollide(TSchuss\s_type,TSchuss\x,TSchuss\y,0,ufo,Enemy2\x,Enemy2\y,0) Then
....



Noch was fällt mir auf:

muss es wirklich Tschuss heißen?
  • Zuletzt bearbeitet von Midimaster am Mo, Jan 18, 2010 20:08, insgesamt 2-mal bearbeitet

Nicdel

BeitragMo, Jan 18, 2010 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Verwende weiterhin ImageCollide()

Das einzige, was dagegend spricht sind gelegentliche MAVs (Errors) auf manchen Computern. Aber Midimaster hat Recht, verwende ImagesCollide, wenn du nicht selbst betroffen bist. Später suchst du dir dann eine Alternative Wink
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Chrissa

BeitragMo, Jan 18, 2010 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
@nicdel:
Der neue Code is gepostet (in meinem allerersten Beitrag). Is zwar nich viel anders als der vorherige, aber der Fehler muss ja im neuen sein Wink

@all:
also es geht ja immer für ne gewisse zeit. schüsse werden gemalt und das kollidieren funktioniert auch. nur kommt die meldung dann, wenn der gegner auf dem player ist, der gerade schießt. Auch da funktioniert es manchmal und manchmal nicht...

@midimaster:
so meintest du das^^ ich dachte das ImagesCollide basiert auf den Bildern und nicht mit einem eigenen Buffer ^^
Und ja der Type heißt:
BlitzBasic: [AUSKLAPPEN]
Type schuss
Field x
Field y
Field s_type
Field strength
Field speed
End Type

TSchuss.schuss = New schuss
TSchuss\x=TPlayer\x-10
TSchuss\y=TPlayer\y+20
TSchuss\s_type= kugel
TSchuss\speed = 10
TSchuss\strength = 10

Wink

Midimaster

BeitragMo, Jan 18, 2010 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist aber verwirrend für andere, die den Code lesen sollen. Das T vorneweg wird immer für die Typbeschreibung verwendet. Siehe Namens-Tutorial https://www.blitzforum.de/foru...050#354014 .

Wenn's nicht zuviel Aufwand macht, schreibs um!

BlitzBasic: [AUSKLAPPEN]
Type TSchuss
Field X%....
End Type

Schuss.TSchuss = New TSchuss

For Schuss = Each TSchuss
....



Außerdem ist ja recht wenig passiert in dem Code, seit ich das letzte Mal geschrieben habe. Du könntest alle Fehler finden, wenn Du dir meinen letzten Beitrag mehr zu Herzen nimmst.

z.b.

Raus mit den CREATETIMER() . Hältst du dich aber nicht dran:

Zitat:
If ImagesCollide(TSchuss\s_type,TSchuss\x,TSchuss\y,0,ufo,Enemy2\x,Enemy2\y,0) Then
Enemy2\health=Enemy2\health-TSchuss\strength
Delete TSchuss.schuss
If Enemy2\health<=0 Then
Local timer=CreateTimer(58)


Wenn wir dir hier einen Fehler nennen, wäre es schon angebracht, dass du dann den gesamten Code dann nach Fehlern des gleiches Types durchsuchst!

Gehe zu Seite Zurück  1, 2, 3, 4, 5  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group