Frage zur new funktion und zu Return

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, erstmal zu meiner ersten frage, was bedeutet bei:



    new bool:Beispiel[MAX_PLAYERS]

    das MAX_PLAYERS


    und was bedeutet bei

    new bsp[126]


    So jetzt zu meiner 2ten frage:
    Wofür steht return 1 bzw. return 0 eigentlich?
    Was bedeutet es am ende einer public und was bedeutet es, wenn man es weg lässt.

  • return 1 ist return true also das es erfolgreich beendet wurde
    Return 0/Return false ist genau das gegenteil


    Das MAX_PLAYERS ist steht für die Maximale anzahl er Spieler vom Server


    und bei


    new bsp[126]


    hast du keine Frage gestellt aber ich denke mal du fragst nach 126, das ist die länge, benutz aber nicht 256 so wie die meisten, verursacht laggs

    Zitat

    Nimm die Dinge wie sie sind: schlag, wenn du schlagen musst, tritt, wenn du Treten musst
    -Bruce Lee

  • new bool:FalschWahr;


    bedeuted du kannst false und true verwenden


    if(FalschWahr == true)

    oder


    if(FalschWahr)


    Dann noch


    if(FalschWahr == false)


    oder


    if(!FalschWahr)



    Index:


    Eine Indexierte Variable kann mehrere Zahlen oder Zeichen enthalten


    new bsp[50]; // kann bis zu 50 Zahlen/Zeichen enthalten


    bsp[0] = 'A'; // enthält jetzt A
    bsp[0] = 1; // enthält eine 1




    return gibt immer werte zurück, es dürfen niemals zwei rückgabe werte in einem Bereich sein


    { // Bereich
    return 1;
    } // Bereich ende


    ansonsten gibts Fehler wie : unreachable Code, nicht nur deswegen, deine Funktion gibt werte Zurück die durch abfragen
    oder in Variablen abgerufen werden können


    stock Spielername(playerid)
    {
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Name,sizeof Name);
    return Name;
    }


    Gibt den Spielernamen zurück für den jeweiligen Spieler



    Was ist public ?


    public's sind Öffentliche Klassen bzw. einstiegspunkte für das Script, ausserdem können sie nur Integer Werte zurück geben


    Stock's können alle arten typen zurückgeben


    No name Klassen wie hier


    NoName()
    {
    // Code
    }


    Diese werden als ungenutzt deaklariert falls sie nicht verwendet werden



    Klammern sind ein Prinzip der Sprache:


    es gibt ( und )


    soviel ( vorhanden sind müssen auch soviel ) vorhanden sein,
    genau das gleiche gilt für Brackets { }


    Also Funktion > Klammer auf +1 und und genau soviele )
    genau so wie bei den Brackets, sofern es Funktionen sind die das benötigen, bzw. die eine Bereich Zuteilung brauchen
    wie while, if oder public, stocks etc. , mehr Funktions Infos gibts in der Pawn Dokumentation auf Englisch Only


    Aso noch ein Infos zu return, sobald du was zurückgegeben hast beendet sich die Funktion und es wird danach nix mehr gemacht,
    außer du rufst die Funktion noch einmal ab.


    Mehr Infos im Tutorial Bereich unter Pawn Syntax by DMA

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Danke für die schnellen antworten, doch mit return kann ich immer noch nichts anfangen ich weis nur, das 1true und 0 false bedeuet und das return nur einmal pro "Abfrage" kommen darf... Aber wozu ist es gut? Wozu kann man es verwenden?




    also bei

    new zweizeichen[2]


    bedeutet man kann nur das machen :

    zweizeichen = 11 (oder andere Zeichen)
    // und das funktioniert nicht? :
    zweizeichen = 123 (oa.)


    //also sollte man bei einer boolean dahinter [5] schreiben, da mehr zeichen auf keinen fall benutzt werden?


    new bool:true/false[5]



    //aber wieso habe ich das in einem programcode gefunden?:
    new bool:loggedin[MAX_PLAYERS]

  • return gibt nen wert zurück zum beispiel du machst es so



    if(PlayerInfo[playerid][pAdmin] == 1)
    {
    SendClientMessage(playerid,Blau,"Moderator");
    return 1;
    }
    if(PlayerInfo[playerid][pAdmin] == 2)
    {
    SendClientMessage(playerid,Blau,"Moderator");
    return 1;
    }


    würde hier das return fehlen und ich wäre Admin level 2 würde der Text 2 mal bei mir kommen also return gibt nen wert zurück

    RFT

  • Return wurde oben schon erklärt. Du kannst damit zum einen bestimmte Vorgänge in deinen Script abbrechen:
    Wenn du z.B. return 1; innerhalb von "OnPlayerCommandText" verwendest, wird der restliche Code "unterhalb" deines returns nicht berücksichtigt
    // OnPlayerCommandText


    // Code wird berücksichtigt
    return 1;
    // Code wird nicht mehr berücksichtigt


    Außerdem kannst du mit Hilfe von return auch bestimmte strings (siehe oben beim Spielernamen ausgeben) oder bestimmte Werte ausgeben
    // Irgendwo in deinem Code


    if(IstSpielerConnected(playerid)) // andere Schreibweise "IstSpielerConnected(playerid) == 1)"
    {
    // Mach irgendwas
    }


    stock IstSpielerConnected(playerid)
    {
    // lang und ausführlich ausgeschrieben
    if(IsPlayerConnected(playerid))
    {
    return true; // Stimmt, falls playerid "connected" ist (true)
    }
    else
    {
    return false; // stimmt nicht
    }
    }
    Ist natürlich eine sinnlose Überprüfung, sollte aber nur zum veranschauen dienen. "IstSpielerConnected" gibt entweder 1 (true) oder 0 (false) aus, je nachdem ob der Spieler extistiert. Wenn eine 1 bzw. ein true ausgeben wird, ist die Bedinung in dem "if" oben erfüllt und er "// Macht irgendwas"


    Nein du musst Unterscheiden zwischen verschiedenen Variablentypen...
    ein Interger, wie dieser
    new zahl;
    kann alle Zahlen speichern unabhängig von ihrer Länge
    Ein Boolean, wie dieser
    new bool:zahl;
    kann nur true oder false abspeichern


    Das hat nichts mit der Länge zu tun.
    Wenn du
    [WERT]
    hintendranhängst, wird es zu einem Array.
    new array[3];
    kann zb speichern
    array[0] = 1;
    array[1] = 'B';
    array[2] = 3;

  • ah ok, habe zwar return immernoch nicht verstanden aber werds oben nochmal 2mal durchlesen und hoffe, das ichs verstehe...
    ok also wenn ich

    new zahl[3]

    mache kann ich "zahl" 3 werte zuordnen, die ich dann abrufen kann so: ?

    zahl[0] = 1
    zahl[1]= 2
    ...


    und die dann so benutzen?:

    if(zahl[0]==1)
    {
    if zahl[1]==2)
    {
    ....
    }
    }


    wenn das so richtig ist, dann hab ichs verstanden, aber ich versteh immernoch nid das "MAX_PLAYERS" hinter der boolean die in meinem code war...