skript wiederholen

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • skript wiederholen

    hallo,
    ich wollte wissen ob es geht einen skript sich immer wiederholen zu lassen.
    mein problem ist folgendes
    ich will das etwas gemacht wird wenn ich die linke maustaste drücke
    zb wenn ich diesen skript aktiviere,soll wenn ich die linke maustaste drücke,bei einem objekt ein anders objekt erstellt werden
    wenn ich sie nicht drücke soll der skript sich wiederholen bis ich sie drücke.
    ich hoffe ihr versteht das und das es möglich ist.

    ps ich habe es schon versucht mit do-statment,repeat-statement und if-statment
    mein letzer versuch sah so aus
    instance_create(0,0,obj_maus)
    if mouse_check_button(mb_left)
    {
    instance_create(obj_mouse.x,obj_mouse.y,test_obj)
    }
    else
    {
    continue
    }

    mfg hilfe:P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von hilfe:P ()

  • Du musst in der While Schleife io_handle() benutzen, damit die Benutzereingaben geupdatet werden.

    GML-Quellcode

    1. while (!mouse_check_button(mb_left)) {
    2. io_handle();
    3. }


    - Joex3
  • In GML gibt es verschiedene Schleife (while, do-until, repeat, for) die man für verschiedene Zwecke einsetzen kann.
    while(Bedienung) { } solange die Bedienung erfüllt ist
    do { } until(Bedienung) die Bedienung wird erst nach dem Code ausgeführt
    repeat(Times) { } Code wird Times mal wiederhohlt
    for() { } Zähler schleife (um Arrays durch zu gehen z.B.)

    Da jedoch alles nach ein andere ausgeführt wird und es keine parallelität in GML gibt (Threads o.ä.) kann erst wieder was gemacht werden bis die Schleife fertig ist. Dauert diese zu lange ruckelt das Spiel, oder hängt sich auf.

    Wenn du nun das ganze so machst, pausiert das Spiel so lange bis keine Maustaste gedrückt ist. Ich weiß nicht ob du das willst.

    @derkimba:

    GML-Quellcode

    1. while(!mouse_check_button(mb_left)) { io_handle(); }
    2. // dein objecterstellen
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von henrik1235 ()

  • hat denn keiner eine idee-.-
    ich glaube meine frage war nicht gut verständlich
    deswegen habe ich sie hier nochmal etwas besser erklärt:


    Das skript dass ich habe ist mit einer option verbunden d.h. wenn ich

    die option anklicke erstellt mein skript ein objekt bei der maus.das soll ja nicht passieren
    sondern das objekt soll erst ertellt werden wenn ich dann mit der linken maustaste irgendwo klicke(das skript soll warten).
  • das geht nicht weil bei meinen skript steht das es die instance die den skript aktiviert aus dem
    inventar holt
    aso es ist so das ich einen inventar habe und will das wenn ich die option bauen drücke derjenige objekt den ich ausgewählt habe gebaut wird(natürlich nur wenn ich dann die linke maustaste drücke)
  • Ich glaube du solltest das Script nochmal umstrukturieren. Das klingt jetzt zumindest sehr umständlich. Was genau macht dieses Script?

    Ich würde das einfach so machen:

    Sagen wir mal du wählst im Inventar ein Haus aus. Dann machst du ctrl.selected=obj_haus .



    Im Step Event deines Controllers:

    GML-Quellcode

    1. if mouse_check_button_pressed(mb_left)
    2. {
    3. instance_create(mouse_x,mouse_y,ctrl.selected) // ctrl ist dein Controller
    4. }



    Grundsätzlich würde ich keine Scripts unnötig laufen lassen, sondern sie nur falls nötig aufrufen. Dein Inventar zB beim Drücken einer Taste ("I" ist es in vielen Rollenspielen).
  • ich habe es jetzt mit einer variable gelöst nun gibt es aber noch ein problem und zwar wenn ich etwas
    baue verschwindet eines davon aus dem inventar der code sieht so aus

    GML-Quellcode

    1. destroyObject(argument0); //das ist ein script der den gegenstand den ich baue aus dem inventar entfernt
    2. global.block_var += 1 // das ist die variable die ich zum bauen benutze
    3. if object_exists(creater) // creater ist der objekt den ich zum bauen benutze

    doch dann will ich auch das wenn ich im inventar 2 blöcke habe alle zwei bauen kann doch das geht nicht
    weil wenn ich eines baue soll das script wiederholt werden damit ich noch einen bauen kann und eines
    wieder aus dem inventar abgezogen wird der code für das sieht so aus

    diese codes sind im creater enthalten :

    GML-Quellcode

    1. if global.block_var > 0
    2. {
    3. instance_create(x,y,block)
    4. global.block_var -= 1
    5. }


    diese script gilt für den block ist aber im creater enthalten

    GML-Quellcode

    1. if global.block_var = 0
    2. {
    3. global.block_var += 1;
    4. Bauen // Bauen ist der erste script den ich hier eingefügt habe
    5. }
    6. if global.block_var < 0
    7. {
    8. global.block_var = 0
    9. }
    Alles anzeigen

    nun mein problem ist jetz das mein objekt diesen script beim zweitenmal nicht ausführ d.h ich kann
    nicht zweimal hintereinander einen block bauen
    hat jemand eine lösung dafür?

    mfg. hilfe:P

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von hilfe:P ()