/gate Befehl für alle Tore

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo Community,
    ich habe in meinem Selfmade Reallife Script derzeitig folgendes Problem.
    Ich habe ein Gate mit einem /auf und /zu - Befehl. Dies möchte ich nun aber ein den Befehl /gate packen-
    Mein Problem ist folgendes, dass ich ja zwar den Timer den ich starte anweisen kann, dass er das Tor schließen soll, aber wenn dann mehrere Tore im Script / Timer sind, sich ja alle schließen würden. Es würde zwar die Möglichkeit geben, mehrere Timer zu nutzen, das wäre mir aber 1. zu viel Schreibarbeit und 2. wäre es evtl. sehr Resourcen fressend. Hoffe mir kann jemand helfen.


    Hier mein Code:
    Ganz oben

    forward Gateclose();
    new tor[2];

    OnGamemodeInit

    tor[1] = CreateObject(987, 1205.3000488281, -934.09997558594, 41.700000762939, 0, 0, 281);
    tor[0] = CreateObject(987, 1219.099609375, -943.8994140625, 41.599998474121, 0, 0, 99.744873046875);


    Im Script

    public Gateclose()
    {
    return 1;
    }
    ocmd:gate(playerid,params[])
    {
    if(IsPlayerInRangeOfPoint(playerid,10,1219.099609375, -943.8994140625, 41.599998474121))
    {
    if(IsPlayerInFrakt(playerid,2))
    {
    MoveObject(tor[0],1219.099609375, -943.8994140625, 41.599998474121-10,5);
    SetTimer("Gateclose",4000,0);
    return 1;
    }
    return SendClientMessage(playerid,BLAU,"Du gehörst nicht der Mafia an.");
    }
    return 1;
    }

  • Gibt die verschiedensten Umsetzmöglichkeiten.
    Entweder du fragst ab ob der Spieler an dem Punkt ist, wenn ja setz die Variable auf z.B. 8 und sagst im Timer dann wenn die Variable 8 auf 1 ist mach die Variable 8 auf 0 und schließ das Tor.

  • Achso okay, danke :)


    Es bewegt sich immer ein anderes Gate als das was sich eig. bewegen soll.



    public Gateclose()
    {
    if(tor[0] == 1)
    {
    MoveObject(tor[0],1219.099609375, -943.8994140625, 41.599998474121,5);
    tor[0] = 0;
    }
    return 1;
    }
    ocmd:gate(playerid,params[])
    {
    if(IsPlayerInRangeOfPoint(playerid,10,1219.099609375, -943.8994140625, 41.599998474121))
    {
    if(IsPlayerInFrakt(playerid,2))
    {
    MoveObject(tor[0],1219.099609375, -943.8994140625, 41.599998474121-10,5);
    tor[0] = 1;
    SetTimer("Gateclose",4000,0);
    return 1;
    }
    return SendClientMessage(playerid,BLAU,"Du gehörst nicht der Mafia an.");
    }
    return 1;
    }


    /Edit: weiteres Problem
    /Edit2: Code eingefügt

    Einmal editiert, zuletzt von TrueCore ()

  • Wenn ich dich jetzt richtig verstanden habe, würde ich dir einfach vorschlagen SetTimerEx zu nutzen.
    forward Gateclose(gateid);


    SetTimerEx("Gateclose", 4000, false, "i", 0);
    // bzw.
    SetTimerEx("Gateclose", 4000, false, "i", 1);


    public Gateclose(gateid)
    {
    switch(gateid)
    {
    case 0: MoveObject(tor[0], X, Y, Z, Speed);
    case 1: MoveObject(tor[1], X, Y, Z, Speed);
    }
    return 1;
    }


    edit @sleep-Funktion: Die gibt es zwar, allerdings ist sie nur in Main() bzw. OnGameModeInit (weiß nicht mehr genau was von beiden) anwendbar.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Ja genau das meinte ich ;)
    Danke für deine Hilfe, wusste dass ich einen switch machen sollte, aber wusste nicht wie


    Funktioniert zwar bei einem Tor, aber nicht bei zwei.
    Da gehts runter und dann wars das.



    public Gateclose(gateid)
    {
    switch(gateid)
    {
    case 0: MoveObject(tor[0], 1219.099609375, -943.8994140625, 41.599998474121, 5);
    case 1: MoveObject(tor[1], 1205.3000488281, -934.09997558594, 41.700000762939, 5);
    }
    return 1;
    }
    ocmd:gate(playerid,params[])
    {
    if(IsPlayerInRangeOfPoint(playerid,10,1219.099609375, -943.8994140625, 41.599998474121))
    {
    if(IsPlayerInFrakt(playerid,2))
    {
    MoveObject(tor[0],1219.099609375, -943.8994140625, 41.599998474121-10,5);
    SetTimerEx("Gateclose", 4000, false, "i", 0);
    return 1;
    }
    return SendClientMessage(playerid,BLAU,"Du gehörst nicht der Mafia an.");
    }
    if(IsPlayerInRangeOfPoint(playerid,10,1205.3000488281, -934.09997558594, 41.700000762939))
    {
    if(IsPlayerInFrakt(playerid,2))
    {
    MoveObject(tor[1],1205.3000488281, -934.09997558594, 41.700000762939-10,5);
    SetTimerEx("Gateclose", 4000, false, "i", 0);
    return 1;
    }
    return SendClientMessage(playerid,BLAU,"Du gehörst nicht der Mafia an.");
    }
    return SendClientMessage(playerid,BLAU,"Du bist nicht in der Nähe eines Tors.");
    }


    /Edit: Fehler

    Einmal editiert, zuletzt von TrueCore ()

  • ocmd:gate(playerid,params[])
    {
    if(IsPlayerInRangeOfPoint(playerid,10,1219.099609375, -943.8994140625, 41.599998474121))
    {
    if(IsPlayerInFrakt(playerid,2))
    {
    MoveObject(tor[0],1219.099609375, -943.8994140625, 41.599998474121-10,5);
    SetTimerEx("Gateclose", 4000, false, "i", 0);
    return 1;
    }
    return SendClientMessage(playerid,BLAU,"Du gehörst nicht der Mafia an.");
    }
    if(IsPlayerInRangeOfPoint(playerid,10,1205.3000488281, -934.09997558594, 41.700000762939))
    {
    if(IsPlayerInFrakt(playerid,2))
    {
    MoveObject(tor[1],1205.3000488281, -934.09997558594, 41.700000762939-10,5);
    SetTimerEx("Gateclose", 4000, false, "i", 1); // Du musst die übertragene ID schon anpassen :P
    return 1;
    }
    return SendClientMessage(playerid,BLAU,"Du gehörst nicht der Mafia an.");
    }
    return SendClientMessage(playerid,BLAU,"Du bist nicht in der Nähe eines Tors.");
    }

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger