>> /atext geht nicht <<

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 ich habe ein Problem mit meinen Gescripteten Befehl.
    "/atext". Wenn ich den einigebe und die dazugehörigen Parameter.
    [playerid] [text]. Wenn ich das alles Korrekt eingebe Zeigt er mir trotzdem nur die Info an.
    Das ist irgendwie seltsam.


    ocmd:atext(playerid,params[])
    {
    if(PlayerInfo[playerid][pAdmin] >= 1)
    {
    new string[128];
    new whisperid;
    if(sscanf(params,"us[128]",whisperid,string))return SendClientMessage(playerid,weiss,"INFO: /atext [playerid] [text]");
    if(!IsPlayerConnected(whisperid))return SendClientMessage(playerid,weiss,"Spieler nicht gefunden.");
    new message[128];
    format(message,sizeof(message),"%s sagt dir: %s",SpielerName(playerid),message);
    SendClientMessage(whisperid,0xFFFF00AA,message);
    SendClientMessage(whisperid,0xA49D00FF,string);
    ShowPlayerDialog(whisperid,DIALOG_INFO,DIALOG_STYLE_MSGBOX,"Hinweis des Adminteams",string,"OK","");
    format(message,sizeof(message),"Du hast %s mit der ID %i folgendes gesagt: %s",SpielerName(whisperid),whisperid,message);
    SendClientMessage(playerid,0xA49D00FF,message);
    SendClientMessage(playerid,0xA49D00FF,string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,weiss,"Du darfst diesen Befehl nicht nutzen");
    }
    return 1;
    }
    Da ist der Befehl. er zeigt wie gesagt nur das an.
    if(sscanf(params,"us[128]",whisperid,string))return SendClientMessage(playerid,weiss,"INFO: /atext [playerid] [text]");
    Bitte um Hilfe.

  • !Achtung: Hier kommt eine Lösung :)
    ocmd:atext(playerid,params[])
    {
    new pID,
    str[128];
    if(sscanf(params,"us",pID,str)) return SendClientMessage(playerid,weiss,"INFO: /atext [playerid] [text]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,weiss,"Dieser Spieler ist offline!");
    new message[128];
    format(message,sizeof(message),"%s sagt dir: %s",SpielerName(playerid),str);
    SendClientMessage(pID,weiss,message);


    return 1;
    }

    Erst wenn
    der letzte Baum gerodet,
    der letzte Fisch vergiftet
    und der letzte Fisch gefangen ist,
    werdet ihr feststellen,
    dass man Gold nicht essen kann.

  • Wofür soll die [128] in der sscanf-Abfrage dienen?
    Du hast sie doch schon im "new" definiert.
    Versuch es mal so und schreib uns dann, was IG passiert.
    ocmd:atext(playerid,params[])
    {
    if(PlayerInfo[playerid][pAdmin] >= 1)
    {
    new string[128];
    new whisperid;
    if(sscanf(params,"us",whisperid,string))return SendClientMessage(playerid,weiss,"INFO: /atext [playerid] [text]");
    if(!IsPlayerConnected(whisperid))return SendClientMessage(playerid,weiss,"Spieler nicht gefunden.");
    new message[128];
    format(message,sizeof(message),"%s sagt dir: %s",SpielerName(playerid),message);
    SendClientMessage(whisperid,0xFFFF00AA,message);
    SendClientMessage(whisperid,0xA49D00FF,string);
    ShowPlayerDialog(whisperid,DIALOG_INFO,DIALOG_STYLE_MSGBOX,"Hinweis des Adminteams",string,"OK","");
    format(message,sizeof(message),"Du hast %s mit der ID %i folgendes gesagt: %s",SpielerName(whisperid),whisperid,message);
    SendClientMessage(playerid,0xA49D00FF,message);
    SendClientMessage(playerid,0xA49D00FF,string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,weiss,"Du darfst diesen Befehl nicht nutzen");
    }
    return 1;
    }
    PS.: Er möchte es in einem Dialog für den Admin angezeigt haben.
    Du zeigst ihm nur eine Lösung für "SendClientMessage".

  • Zitat

    Wofür soll die [128] in der sscanf-Abfrage dienen?


    Weil sonst das Sscanf Plugin rumspammt das keine größe angegeben wurde (sofern das Plugin überhaupt genutzt wird)


    Edit zumal hier
    if(sscanf(params,"us",whisperid,string)) return SendClientMessage(playerid,weiss,"INFO: /atext [playerid] [text]");


    string genutzt wird um den parameter abzufangen und


    format(message,sizeof(message),"%s sagt dir: %s",SpielerName(playerid),message);


    hier message genutzt wird


    ergo


    format(message,sizeof(message),"%s sagt dir: %s",SpielerName(playerid),string);



    Zumal der Befehl komplett durcheinander ist es werden Teile ausgegeben die nachher für den Spieler komisch rüber kommen.

  • Weil sonst das Sscanf Plugin rumspammt


    Das Plugin spammt nicht, sondern gibt dir den hinweiß, dass du was falsch machst und zwar, dass du vergessen hast die maximale länge der Zeichenkette anzugeben.
    Das verhindert einen Bufferover bzw underflow ;)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski