[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • if(!IsPlayerInRangeOfPoint(playerid, 10.0, 1260.3502, -1698.7749, 13.2889))return SendClientMessage(playerid,dunkelrot,"Du bist zu weit entfernt!");
    if(pInfo[playerid][Fraktion] != 1)return SendClientMessage(playerid,dunkelrot,"Du bist kein Polizist!");
    if(lspdschranke == false)
    {
    lspdschranke = true;
    MoveObject(LSPDSchranke,1260.3502+8, -1698.7749, 13.2889,4);
    SendClientMessage(playerid,dunkelgrün,"Schranke geöffnet!");
    }
    else if(lspdschranke == true)
    {
    MoveObject(LSPDSchranke,1260.3502, -1698.7749, 13.2889,4);
    SendClientMessage(playerid,dunkelrot,"Schranke geschlossen!");
    lspdschranke = false;
    }


    Kann man die Bools noch weiter kürzen? Will so wenig Ressourcen wie möglich verbrauchen und zeilensparend arbeiten.

    Ich bin wieder da, MoFogga


    You're not completely useless. You can always serve as a bad example!

  • Kann man die Bools noch weiter kürzen? Will so wenig Ressourcen wie möglich verbrauchen und zeilensparend arbeiten.

    Du könntest es so schreiben:
    if(!IsPlayerInRangeOfPoint(playerid, 10.0, 1260.3502, -1698.7749, 13.2889)) return SendClientMessage(playerid,dunkelrot,"Du bist zu weit entfernt!");
    if(pInfo[playerid][Fraktion] != 1) return SendClientMessage(playerid,dunkelrot,"Du bist kein Polizist!");
    lspdschranke = !lspdschranke;
    MoveObject(LSPDSchranke,1260.3502+(8*_:lspdschranke), -1698.7749, 13.2889,4);
    if(lspdschranke) SendClientMessage(playerid,dunkelgrün,"Schranke geöffnet!");
    else SendClientMessage(playerid,dunkelrot,"Schranke geschlossen!");


    Zeile 3 tauscht praktisch immer den Wert zum Gegenteil (wenn true, dann false und andersherum). MoveObject nimmt die +8 nur dann, wenn das bool true (1) ist. Das "_:" entfernt den "bool" Tag, damit true als 1 interpretiert wird, sonst gibt es einen Tag Mismatch.
    Die Nachrichten sollten klar sein.


    Performance-technisch ändert das aber nicht wirklich was, es wird eher schlechter, da bei MoveObject eine Rechenoperation dazu kommt.
    Zeilen-mäßig hast du natürlich weniger.


    Ganz übertrieben kannst du es auch so schreiben:
    if(!IsPlayerInRangeOfPoint(playerid, 10.0, 1260.3502, -1698.7749, 13.2889)) return SendClientMessage(playerid,dunkelrot,"Du bist zu weit entfernt!");
    if(pInfo[playerid][Fraktion] != 1) return SendClientMessage(playerid,dunkelrot,"Du bist kein Polizist!");
    MoveObject(LSPDSchranke,1260.3502+(8*_:(lspdschranke = !lspdschranke)), -1698.7749, 13.2889,4);
    SendClientMessage(playerid, (lspdschranke) ? (dunkelgrün) : (dunkelrot), (lspdschranke) ? ("Schranke geöffnet!") : ("Schranke geschlossen!"));
    Das ist dann aber nicht mehr auf den ersten Blick lesbar.

  • Das hat mit den Leerzeichen nichts zu tun, die spielen keine Rolle.


    Das Callback OnPlayerCommandText wird in dem Gamemode wahrscheinlich gar nicht aufgerufen, Grund dafür könnte ein verwendeter Command Prozessor (z. B. zcmd) sein, der die Ausführung verhindert, oder ein Filterscript.

  • Benutzt du ZCMD denn? oder OCMD etc? Wenn ja, wäre es eine Überlegung mal alle Befehle mit diesen auszukommentieren(?), das Include oben im Script ebenfalls. Dann mal gucken ob es klappt.
    Versuche aber am besten erst einmal Das Filterscript aus der Config zu nehmen, und es dann zu testen.

    Ich bin wieder da, MoFogga


    You're not completely useless. You can always serve as a bad example!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Code
    public OnPlayerConnect(playerid)
    {
    	SendClientMessage(playerid,red,"Willkommen auf meinen Showroom Server!");
    	return 1;
    }
    Code
    Script.pwn(100) : error 017: undefined symbol "red"

    Einmal editiert, zuletzt von Hakaishin ()


  • stock Fkassespeichern()
    {
    new fkasse[100];
    format(fkasse,sizeof(fkasse),"/Fraktionskassen.txt");
    if(dini_Exists(fkasse))
    {
    dini_IntSet(fkasse,"Grove",Kasse[Grove]);
    }
    return 1;
    }



    stock Fkasseladen()
    {
    new fkasse[100];
    format(fkasse,sizeof(fkasse),"/Fraktionskassen.txt");
    if(dini_Exists(fkasse))
    {
    Kasse[Grove] = dini_Int(fkasse,"Grove");
    }
    return 1;
    }


    Was muss ich bei nem stock, wo etwas für nichtspieler gespeichert werden soll, in die klammern packen und wie definier ich das im script das es funktioniert?


  • Soweit ich weiß kannst du die Klammern so lassen

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen