Script so kurz wie möglich schreiben

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
  • Ja, nicht so etwas:
    if(apfel[playerid] == 0)
    {
    SendClientMessage(playerid,FARBE," Du hast kein Apfel!");
    return 1;
    }


    sondern:
    if(Apfel[playerid] == 0)return SendClientMessage(playerid,FARBE," Du hast kein Apfel!");


    Sollte richtig sein ;)

  • IsPlayerAnAdmin(playerid,3)) return SendClientMessage(playerid,ROT,"Du bist kein Admin");


    statt:


    if(strcmp"hallo"cmdtext,true 10) == 0)
    {
    IsPlayerAnAdmin/playerid, 3))
    {
    SendClientMessage(playerid,ROT,"Du hast hallo eingegeben");
    }
    else SendClientMessage(playerid,ROT,"Du bist kein Admin");
    }

    Liberty Reallife ♥


    SA-MP Server IP:

    Liberty-Reallife.de:7777 oder 176.57.142.127:777 | Version: 0.3z

    ____________________________________________________


    Forum:

    ____________________________________________________


    TeamSpeak³ Server IP:
    Liberty Reallife.de:9987 oder 176.57.142.172:9987

    ____________________________________________________


    TeamSpeak³ Server Passwort:

    ts-lr

  • Außerdem kannst du mit sog. Makros arbeiten. Die funktionieren folgendermaßen:
    #define PERM_DENIED(%0, %1) SendClientMessage(%0, %1, "ZUGRIFF VERWEIGERT")



    Anwedungsbeispiel:
    if(!IsPlayerAdmin) return PERM_DENIED(playerid, 0xFFFF00AA);



    Der Compiler ersetzt dann alle Vorkommnisse im Script von "PERM_DENIED" automatisch durch die zweite Angabe beim "#define" (SendClientMessage(%0, %1, "ZUGRIFF VERWEIGERT"))
    Die "%0, %1, %2 .."-Zeichen symbolisieren hierbei Stellen, die "ausgelesen" und übernommen werden


    Kostenlose Pawno Alternative / PAWN IDE -> PawnStar
    Mass Effect
    :love:

  • Jap Danke an Drasko:
    Das mit dem nur mit Includes arbeiten.
    Habe bisher nur die Maps in nem Include drinnen, habe aber vor auch alle 3DTextLabels und Textdraws in Includes zu packen.
    Bringt das was ?

    Übersichtlichkeit.
    Performance bringt das keine!
    Der Compiler schmeißt den Gamemode und die ganzen Includes zusammen.


    Wen das mit den Makros interessiert:
    http://forum.sa-mp.com/showthread.php?t=166680

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

  • Für die Helden, die es ganz schnell haben wollen:
    return baum == 1 ? (0) : (1);


    Das bedeutet so viel wie: Baum ist ("baum = ") wenn Baum gleich 1 ist ("baum == 1") gleich 0 ("? (0)") ansosten ist es 1 (": (1)")


    Oder in PWN der Standartcode:
    if(baum==1)return 0;
    else return 1;

  • if(baum==1)return 0;
    else return 1;




    Du brauchst bei deinem lezten code kein else mehr, wenn du es gleich returnst, und es zutrifft ist der code da beendet ;)

  • Du brauchst bei deinem lezten code kein else mehr, wenn du es gleich returnst, und es zutrifft ist der code da beendet ;)


    Bei dem hier?
    if(baum==1)return 0;
    else return 1;


    Natürlich brauche ich ein else.
    Weil das trifft ja ein, wenn baum nicht 1 ist (also 0), dann soll der doch 1 returnen.
    Das return ist ja nur, wenn baum = 1 ist


    Oder verstehe ich gerade falsch, was du mir sagen möchtest


    Fail, habs verstanden. Hast recht.
    Danke für die Verbesserung ;)


    Aber das else war eigentlich notwendig, da der Code ja nur das obrige "erklären" sollte ^^

  • @Music4You:
    Wie schon oben gesagt:

    Zitat

    Das bedeutet so viel wie: Baum ist ("baum = ") wenn Baum gleich 1 ist ("baum == 1") gleich 0 ("? (0)") ansosten ist es 1 (": (1)")


    Also ist das sozusagen eine if-Abfrage und ein Variablen-Setzte + Return in einer Zeile.


    baum = baum == 0 ? (1) : (0)


    Die Variable die zu setzen ist.
    Sozusagen eine If-Abfrage
    Nichts anderes als ein "=1". Das "?" kann man bei solch einer Abfrage als ein "=" sehen.
    Das selbe wie mit dem "?", bloß bedeutet das ":" sozusagen "else".


  • Ich glaube du willst das wort 'syntax' benutzen.


  • Okay soweit nun klar^^
    Aber wie verwende ich es nun weiter?

  • Okay soweit nun klar
    Aber wie verwende ich es nun weiter?


    Du kannst den sogenannten Ternary Operator beliebig verwenden. Du kannst darin Funktionen aufrufen, Variablen Setzen, Strings einfügen...
    Du kannst sogar mehrere Abfragen mit dem Ternary Operator ineinander machen. Beispiele findest du unten.


    Hier mal ein paar Beispiele aus dem Englischen Forum:



    Quelle: Klick mich! (Kann ich sowieso nur empfehlen, da dort viele Tipps fürs Ressourcen- und Zeilensparende Scripten sind. )


    Ein Bsp. aus meinem Script:


    rCmd[]->vehiclecontrol(playerid)
    if((Spieler[playerid][pAdmin] < 6) ? SendClientMessage(playerid,COLOR_LIGHTGREY,"Du musst Administrator sein!") : ShowPlayerDialog(playerid,DIALOG_VEHICLECONTROL,DIALOG_STYLE_LIST,"Vehicle Kontrolle","Fahrzeug Kontrolle\nAdminvehicle erstellen\nFraktionsvehicle erstellen\nPrivatvehicle erstellen\nJobvehicle erstellen","Bestätigen","Abbrechen")){}


    da man das auch für andere
    Zwecke gebrauchen kann, zB einen Integer zu einem Bool "umzuwandeln", und da kenne ich keine bessere
    Methode.


    Man kann mich aber ruhig des besseren belehren


    Siehe hier:



    new integer = 100;
    new bool:boolean = !!integer;

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