Benötige Hilfe bei einer Schranke! | Verzweiflung naht! :/

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
  • Servus leute!
    Ich brauche mal ein bisschen Hilfe bei meiner Funktion.



    ocmd:pds(playerid, params[])
    {
    if(!lspdschranke)
    {
    lspdschranke = true;
    {
    MoveObject(LSPDSchranke,1260.3502, -1608.7749, 13.2889,2);//auf //-1698.7749
    SendClientMessage(playerid,Blau,"Schranke wurde geöffnet, bitte schließe sie gleich wieder!");
    }
    }
    else if(lspdschranke)
    {
    lspdschranke = false;
    {
    MoveObject(LSPDSchranke,1260.3502, -1698.7749, 13.2889,2);//zu
    SendClientMessage(playerid,Blau,"Schranke wurde geschlossen!");
    }
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist kein Polizist!");
    }
    return 1;
    }


    Ich möchte dass die Schranke sich Seitlich nach oben öffnet, wie funktioniert das?
    Screen: KLICK
    Danke im voraus! :)

    Einmal editiert, zuletzt von Flaw () aus folgendem Grund: Benötige DRINGEND Hilfe, ich verzwifle.

  • Mit den hinteren drei Parametern machst du das.
    http://wiki.sa-mp.com/wiki/MoveObject


    Am besten du gehst in den Map Editor und setzt die Schranke einmal so wie sie zu ist, und einmal so wie sie offen ist, dann hast du alle Koordinaten die du brauchst.



    Und schreib den Befehl so, unnötige Einrückungen sind unnötig. 8|

    Spoiler anzeigen
    ocmd:pds(playerid, params[])
    {
    if(!lspdschranke)
    {
    lspdschranke = true;
    MoveObject(LSPDSchranke,1260.3502, -1608.7749, 13.2889,2);//auf //-1698.7749
    SendClientMessage(playerid,Blau,"Schranke wurde geöffnet, bitte schließe sie gleich wieder!");
    }
    else if(lspdschranke)
    {
    lspdschranke = false;
    MoveObject(LSPDSchranke,1260.3502, -1698.7749, 13.2889,2);//zu
    SendClientMessage(playerid,Blau,"Schranke wurde geschlossen!");
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist kein Polizist!");
    }
    return 1;
    }


    Wobei die else - Abfrage keinen Sinn macht, da du bei einem boolean nur zwei Zustände hast, wahr und unwahr, da gibt es kein dritten Zustand, das solltest du noch ändern.



    EDIT: Goldkiller: Sagte ich hier bereits schon. :P

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • ocmd:pds(playerid, params[])
    {
    if(!lspdschranke)
    {
    lspdschranke = true;
    {
    MoveObject(LSPDSchranke,1260.3502, -1698.7749, 13.2889,2);//auf //-1698.7749
    SetDynamicObjectRot(LSPDSchranke, 0.0000, 1.0000, 180.0000);
    SendClientMessage(playerid,Blau,"Schranke wurde geöffnet, bitte schließe sie gleich wieder!");
    }
    }
    else if(lspdschranke)
    {
    lspdschranke = false;
    {
    MoveObject(LSPDSchranke,1260.3502, -1698.7749, 13.2889,2);//zu
    SetDynamicObjectRot(LSPDSchranke, 0.00000, 90.00000, 180.00000);
    SendClientMessage(playerid,Blau,"Schranke wurde geschlossen!");
    }
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist kein Polizist!");
    }
    return 1;
    }


    Aber jetzt passiert gar nichts mehr... ?(


    //EDIT: Deine anderen vorschläge/verbesserungen mach ich danach mal ;)

  • Hier hast noch einen Vorschlag:
    ocmd:pds(playerid, params[])
    {
    if(!lspdschranke)
    {
    lspdschranke = true;
    {
    MoveObject(LSPDSchranke,1260.3502, -1698.7749, 13.2889,2);//auf //-1698.7749
    SetDynamicObjectRot(LSPDSchranke, 0.0000, 1.0000, 180.0000);
    SendClientMessage(playerid,Blau,"Schranke wurde geöffnet, bitte schließe sie gleich wieder!");
    }
    }
    else if(lspdschranke)
    {
    lspdschranke = false;
    {
    MoveObject(LSPDSchranke,1260.3502, -1698.7749, 13.2889,2);//zu
    SetDynamicObjectRot(LSPDSchranke, 0.00000, 90.00000, 180.00000);
    SendClientMessage(playerid,Blau,"Schranke wurde geschlossen!");
    }
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist kein Polizist!");
    }
    return 1;
    }
    Das "else if" kannst du in "else" ändern und das Letzte "else" komplett löschen.
    Warum ?
    Wenn "if(!lspdschranke)" nicht Eintritt, ist lspdschranke definitiv wahr. Ich brauch daher gar nicht abfragen, ob "else if(lspdschranke)" stimmt. Es muss eintreten. Wenn ich nur 2 Zustände kenne, wahr oder falsch, dann macht ein 3. Fall gar keinen Sinn.
    Tritt also Fall 1. nicht ein ( falsch ) , dann muss es der 2. Fall sein ( wahr ).
    ocmd:pds(playerid, params[])
    {
    if(!lspdschranke) { lspdschranke = true; etc ... }
    else { lspdschranke = false; etc ... }
    return 1;
    }