Falsches 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
  • public OnPlayerText(playerid,text[])
    {
    if(GetPVarInt(playerid, "Mute") == 1)
    {
    SendClientMessage(playerid,Rot,"Du bist stumm gestellt!");
    return 0;
    }
    new string[128];
    format(string,128,"%s: %s",SpielerName(playerid),text);
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    IsPlayerConnected(playerid);
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    if(IsPlayerInRangeOfPoint(i,7.0,X,Y,Z))
    {
    SendClientMessage(i,0xFEFEFEFF,string);
    }
    }
    new string1[256];
    if(ImSupport[playerid]==true)
    {
    if(IsPlayerAnAdmin(playerid,1 && 2 && 3 && 4 && 5))
    {
    format(string1,256,"[%s] %s: %s",AdminRangName(playerid),SpielerName(playerid),text);
    SendClientMessage(playerid,HBlau,string);
    SendClientMessage(SupInfo[ASupportID[playerid]][SpielerID],HBlau,string);
    return 0;
    }
    else
    {
    format(string1,256,"[%s] %s: %s",AdminRangName(playerid),SpielerName(playerid),text);
    SendClientMessage(playerid,HBlau,string);
    SendClientMessage(SupInfo[SupportID[playerid]][AdminID],HBlau,string);
    return 0;
    }
    }
    return 0;
    }


    Wenn das zweite aufgerufen wird wir das erste gleichzeitig aufgerufen.
    Es wir vermutlich falsch returnt.

  • Um welche Returns geht es denn? Die letzten zwei?


    Das hier sieht mir nicht richtig aus:
    if(IsPlayerAnAdmin(playerid,1 && 2 && 3 && 4 && 5))


    Ändere das mal zu:
    if(IsPlayerAnAdmin(playerid,1))


    Ansonsten poste mal diese Funktion, wie die aufgebaut ist.


  • Es ist nicht das was er will, aber 1 && 2 && 3 && 4 && 5 das entspricht 1 :D Also steht da quasi das selbe :)


    Schreib das mal alles so:


    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;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Bitte um Erklärung.
    @Kailber:


    return egal, was du da auch immer returnst, beendet den Codeblock.


    print("hi");
    return 1;
    print("hi"); //<< wird nicht mehr aufgerufen


    Manche Callbacks, wie in diesem Fall OnPlayerText benötigen den Wert vom return um damit weiterzuarbeiten (das kannst du im wiki immer nachlesen, da steht folgendes:)


    Returning 0 in this callback will stop the text from being sent to all players


    und da wir genau das haben wollen, müssen wir 0 returnen.


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S