Types / führt nicht alle Einträge aus.

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Dottakopf

Betreff: Types / führt nicht alle Einträge aus.

BeitragFr, Mai 23, 2008 9:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Blitzer !

Ich habe hier ein kleines Problem mit meinem Editor. Ich möchte 2 Gleiche "ereigniss-felder" übereinander Setzten, welche dann 2 Kollisionen an verschiedenen Positionen Aufheben sollen.

Oder anders erklärt:
auf den tile koordinaten 7/4 udn 8/4 befinden sich 2 kollsionsfelder welche ich jeweils durch einen Schalter begehbar machen möchte. Ich möchte diese zwei schalter aber auf die gleiche Position setzten. Sozusagen Stacken. Diese Schalter sind in einem Typ gespeichtert.

Mein Problem ist, dass er nur ein Kollisonsfeld aufgehoben und das andere Ignoriert wird. Anscheindend verlässt mein bb nach aktivierung des ersten schalters die typ schleife und kommt so nie zu dem Eintrag, an welchem der 2 Schalter abgearbeitet werden müsste. Aber irgendwie steh ich gerade auf da Leitung und sehe nicht warum er das macht.

Hier der code bei dem Die schalter auf 0 (zu) und 1 (auf) gesetzt werden

kurz was da passiert
Prüfen ob spieler auf Schalter tile ist
Wenn Bedingung zum Schalten erfüllt, dan die im typ gespeicherte Kollisonstileposition freigeben

ausloesmode = gibt an wie der trigger aktiviert wird.. enter .. item was weis ich
turnkolliwert = gibt an zu was für einem Zustand das zu bearbeitende objekt versetzt werden soll 1 or 0


müsst euch vll in eurem bb anschauen.. tut ma leid aber dieser part findet in einer echt dicken verschachtelung statt, daher so seltsam formartiert. Sry

Code: [AUSKLAPPEN]

If hx+map_offset_x/32 = trigger\trg_tx And hy+map_offset_y/32 = trigger\trg_ty And h_layer = trigger\trg_layer Then

                  If KeyDown(28) Then
                      trigger\trg_turnkolli_wert = trigger\trg_turnkolli_wert +1
                      If trigger\trg_turnkolli_wert > 1 Then trigger\trg_turnkolli_wert = 0
                     If trigger\trg_ausloesmode = 1 Then kollision_layer(trigger\trg_turnkolli_x,trigger\trg_turnkolli_y,trigger\trg_layer) = trigger\trg_turnkolli_wert Delay 150 ;:FlushKeys()
                     
                  End If
               
               End If



Mach ich hier irgendwo n doofen fehler ? oder warum wird nach bearbeiten des ersten Schalters nicht danach der 2 Schalter durchgeackert ?

mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

ShadowJumper

BeitragFr, Mai 23, 2008 9:23
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaub, solange du nur einen Codeschnipsel ohne Beschreibung der Variablen hergibst wird dir nur kaum jemand helfen können...
ich würd vorschlagen, schreib noch zu den wichtigsten Variablen (werden wohl alle aus dem Codeschnipsel sein) eine kurze Beschreibung, was sie beinhalten/wofür sie da sind Wink
Bilder kostenlos hosten
lest und weint:
RAM - 512 MB; GrafikRAM - 32 MB; CPU - 800 MHz
Ps: ... und weint (vor lachen)

Dottakopf

BeitragFr, Mai 23, 2008 9:39
Antworten mit Zitat
Benutzer-Profile anzeigen
hm ich dachte die namen erklären sich von selbst. Aber du könntest recht haben.

Also:

hx hy h_layer Sind die positionsvariablen(x,y,layer) für meinen Test-Hero im Editor. Um die map kurz zu testen.

Trigger\trg_tx , trg_ty , trg__layer..... bezieht sich auf die Position des Types. ( x, y, layer)
trigger\trg_turnkolli_wert............... gibt an, ob die kollison auf 1 oder 0 gesetzt werden soll
trigger\trg_ausloesmode................ gibt an wie der Schalter aktiviert werden soll... knopfdruck, Item, ....
kollision_layer( x ,y, layer )........... Das ist mein kollsionslayer in dem alle Kollisionsfelder gespeichert werden.

Naja und map_offset_x und map_offset_y sind ja nur fürs scrolling da.
Rechtschreibfehler gelten der allgemeinen Belustigung!

ShadowJumper

BeitragFr, Mai 23, 2008 10:03
Antworten mit Zitat
Benutzer-Profile anzeigen
in dem Codeschnispel seh ich nirgends etwas, wie
Code: [AUSKLAPPEN]
For trigger.trigger = Each trigger

(kann sein, dass dein Type nicht trigger heißt, dann sieht der Code entsprechend anders aus)

wenn du das nicht im Code hast (sowie das dazugehörige Next^^), dann kann nur 1 Schalter funktionieren
aber wenn das so wäre hättest du bestimmt geschrieben, dass 1 bestimmter nicht geht, oder?
Bilder kostenlos hosten
lest und weint:
RAM - 512 MB; GrafikRAM - 32 MB; CPU - 800 MHz
Ps: ... und weint (vor lachen)

Dottakopf

BeitragFr, Mai 23, 2008 10:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein das ist alles korrekt. Es funktioniert ja eigentlich. Solang bis ich die typ felder übereinander baue.

Hm das problem ist, dass ganze läuft in einer select case abfrage.. und die hat in etwa 10 Einträge.

Dieser Trigger wurde so gestaltet, dass er nicht nur als schalter eingesetzt werden kan... er kann alle anderen sachen die irgendwo in meinem Spiel sonst vorkommen zur laufzeit verändern.
Irgendwie will er einfach nicht den 2ten eintrag bearbeiten. Aber warum ? es ist doch nirgends ein exit oder dergleichen..


mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

ShadowJumper

BeitragFr, Mai 23, 2008 10:23
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaub ich habs x)

wenn beide am selben Fleck sind und die Tastenabfrage in der For...Each Schleife ist kann es nicht funktionieren, weil beim 1. Durchlauf (1. Trigger) der Tastendruck verarbeitet wird und somit beim 2. Durchlauf (2.Trigger) nicht mehr da ist
speichre am Besten in einer temporären Variable einen Wert (z.B. 1), wenn die Taste gedrückt wurde (vor der For...Each-Schleife) und nutze in der Schleife dann die Variable

einen Tipp geb ich dir noch:
mach aus:
Code: [AUSKLAPPEN]

trigger\trg_turnkolli_wert = trigger\trg_turnkolli_wert +1
If trigger\trg_turnkolli_wert > 1 Then
    trigger\trg_turnkolli_wert = 0
EndIf

das:
Code: [AUSKLAPPEN]

trigger\trg_turnkolli_wert = trigger\trg_turnkolli_wert Xor 1

das erfüllt auch seinen Zweck und spart noch etwas Platz Wink
Bilder kostenlos hosten
lest und weint:
RAM - 512 MB; GrafikRAM - 32 MB; CPU - 800 MHz
Ps: ... und weint (vor lachen)

Dottakopf

BeitragFr, Mai 23, 2008 10:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ahh du hast recht.. daran könnte es wirklich liegen Exclamation

Ich probier es dann nacher aus, hab jetzt erstmal kurz zu tun.
Danke für eure bemühungen !


mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group