Richtig returnen (Erklärung benötigt)

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
  • Ich stelle mir seit heute die Frage wie man richtig return und was genau das return bringt.
    Mir ist aufgefallen das ich des öffteren return und nun wollte ich fragen was genau mache ich falsch?


    Beispiel:


    ocmd:aduty(playerid,params[])
    {
    SetPlayerColor(playerid, Rot);
    return 1;
    }


    Warum returne ich hier mit "return 1"? Was würde denn passieren wenn ich mit "return 0" returne?


    Ein weiteres Problem ich will unter OnPlayerText zwei Funktionen einbauen Beispiel:
    public OnPlayerText(playerid,text[])
    {
    if(GetPVarInt(playerid, "Mute")) return SendClientMessage(playerid,Rot,"Du bist stumm gestellt!"),0;
    new string[145],Float:X,Float:Y,Float:Z;
    if(ImSupport[playerid]==true)
    {
    if(IsPlayerAnAdmin(playerid,1) || IsPlayerAnAdmin(playerid,2) || IsPlayerAnAdmin(playerid,3) || IsPlayerAnAdmin(playerid,4) || IsPlayerAnAdmin(playerid,5))
    {
    format(string,sizeof string,"[%s] %s: %s",AdminRangName(playerid),SpielerName(playerid),text);
    SendClientMessage(playerid,HBlau,string);
    SendClientMessage(SupInfo[ASupportID[playerid]][SpielerID],HBlau,string);
    }
    else
    {
    format(string,sizeof string,"[%s] %s: %s",AdminRangName(playerid),SpielerName(playerid),text);
    SendClientMessage(playerid,HBlau,string);
    SendClientMessage(SupInfo[SupportID[playerid]][AdminID],HBlau,string);
    }
    return 0;
    }
    format(string,sizeof string,"%s: %s",SpielerName(playerid),text);
    GetPlayerPos(playerid,X,Y,Z);
    for(new i;i<MAX_PLAYERS;i++) {
    if(IsPlayerInRangeOfPoint(i,7.0,X,Y,Z)) SendClientMessage(i,0xFEFEFEFF,string);
    }
    return 0;
    }


    Warum returne ich überall mit 0?


    Und was ist überhauot der unterschied zwischen return 0,1,2,3,4,5,6?
    Bitte um erklärung

    • Offizieller Beitrag

    Ein Thema dazu reicht auch aus, oder?


    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN

  • Folgendermaßen: Das OCMD Include arbeitet lediglich mit dem OnPlayerCommandText() Callback.
    Wenn man jetzt eine 0 returnt, wird ein Fehler im Chat ausgegeben, dass der Command nicht existiert.
    Daher muss man eine 1 returnen.


    SAMP besitzt ja nativ schon eine Chatfunktion, die standardmäßig implementiert ist und dessen Nachrichten in der Farbe des Spielers angezeigt werden.
    Wenn man nun ein eigenes Chatsystem programmiert, möchte man ja nicht den Standardchat auch noch verwenden, sodass die Nachricht einmal von Deinem Chatsystem erscheint und nochmal vom Standardchat, also gibt man eine 0 (false) zurück.
    Der Callback wird abgebrochen und die Nachricht vom Standardchat wird nie angezeigt.
    Auch sinnvoll für ein Mutesystem.

  • "return" sagt im engsten Sinne eigentlich nur aus "Prozess, du bist hier fertig, ich gebe der Anwendung jetzt eine Antwort". Dadurch beendet sich der Prozess an dieser Stelle (egal ob danach noch was kommt) und gibt halt das aus, was hinter dem return steht. In den meisten Fällen ist das eine 1 oder eine 0 (1 = true [= Anwendung, es ist alles gut gegangen], 0 = false [= Anwendung, da ist was falsch gelaufen])


    Letztlich kann der Prozess aber auch "asdhc089023nfcßah" wiedergeben. Das ist der Anwendung erstmal Jacke wie Hose. In den meisten Fällen jedoch wird 0 oder 1 ausgegeben.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'