[Help]OCMD,SSCANF,FORMAT

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 bin ein ziemlicher anfänger in der Scene "pawno" und wollte euch etwas um hilfe bitten undzwar




    ocmd:pn(playerid,params[])
    {
    new pID,text[128];
    new sName[MAX_PLAYER_NAME];
    sscanf(params,"is[128]",pID,text);
    format(sName,sizeof(sName),"%s hat dir eine Privatnachricht geschrieben:%s",sName,text);
    GetPlayerName(playerid,sName,sizeof(sName));
    SendClientMessage(pID,0xFFFA00FF,text);
    return 1;
    }


    Wenn ich /pn [ID] [text] eingebe steht da nur der Text den ich der ID geschrieben hab, aber nicht von wem die nachricht kam..


    was ich will ist: wenn ich /pn 0 wie gehts dir, schreibe dass genau das angezeigt wird beim Spieler: JuaN_Silver: wie gehts dir


    Was mache ich im script falsch?, dankke im vorraus.

  • Zitat

    Wenn ich /pn [ID] [text] eingebe steht da nur der Text den ich der ID geschrieben hab, aber nicht von wem die nachricht kam..


    Den Fehler hast du ja schon recht gut identifiziert.
    Schau dir mal die Reihenfolge deiner Anweisungen an:

    new sName[MAX_PLAYER_NAME];
    //[..]
    format(sName,sizeof(sName),"%s hat dir eine Privatnachricht geschrieben:%s",sName,text);
    GetPlayerName(playerid,sName,sizeof(sName));
    Du benutzt die Variable sName in der 4. Zeile.
    In der 5. Zeile ließt du aber erst den Namen in die Variable sName.


    Die Reihenfolge stimmt nicht ganz, richtig ?

  • Dazu kommt noch, dass du bei der SendClientMessage folgendes in die Parameter schreibst: pID,farbe,text
    Du musst das ganze so schreiben: SendClientMessage(pID,farbe,string);
    Schließlich packst du ja alles in einen String und nicht in die Variable "text"
    und bei sscanf würde ich dir folgendes empfehlen: if(sscanf(params,"us[128],pID,text))return SendClientMessage(playerid,farbe,"Benutze /pn [pID][Text]");
    Goldkiller: Hättest du am einfachsten finden können :D