problem bei /report [id] [reason] sytsem

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
  • Hi brotfische ,
    ich habe ein problem bei meinem report system undzwar ist es dass da steht z.b lcp9 reportet (HIER SOLLT EIgentlich ein name stehen kommt aber nicht) with the text: test
    ich habe hir nochmal den code für euch:

    ocmd:report(playerid,params[])
    {
    new pID, text;
    if(sscanf(params,"us",pID,text))return SendClientMessage(playerid,ROT,"/report [id] [text]");
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pname,sizeof(pname));
    new name[MAX_PLAYER_NAME];
    GetPlayerName(pID,name,sizeof(name));
    new string1[128];
    format(string1,sizeof(string1),"%s reported %s with the text : %s",pname,name,text);

    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(isPlayerAnAdmin(i,1))
    {
    SendClientMessage(i,BLAU,string1);
    }
    }
    return 1;
    }

  • Ich persönlich sehe da jetzt keinen Fehler.
    Kopiere mal aus deinem Chatlog was da raus kommt.
    Ansonsten mal pID, playerid, pname und name mal mit printf in der Konsole ausgeben


    Gruß


    was meinst du mit printf ich weiss net was dat ist :(
    und es steht immer wenn ich den command ausführe wie schon gesgat : lcp9 reported (nichts obwohl das narme stehen muss) with the text: test
    oder was ist sonst chatlog?

  • Versuch es mal so


    ocmd:report(playerid,params[])
    {
    new pID, text;
    if(sscanf(params,"us",pID,text))return SendClientMessage(playerid,ROT,"/report [id] [text]");
    if ( !IsPlayerConnected(pID) ) return SendClientMessage(playerid, ROT, "Der Spieler ist nicht online!");
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pname,sizeof(pname));
    new name[MAX_PLAYER_NAME];
    GetPlayerName(pID,name,sizeof(name));
    new string1[128];
    format(string1,sizeof(string1),"%s reported %s with the text : %s",pname,name,text);


    printf("[TEST] Name1 : %s, Name2 : %s, playerid: %i, pID : %i, Text: %s",pname, name, playerid, pID, text);

    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(isPlayerAnAdmin(i,1))
    {
    SendClientMessage(i,BLAU,string1);
    }
    }
    return 1;
    }


    Danach schaust du in die konsole und sagst was da stehst.
    Am besten einfach ein screenshot davon.


    Gruß

    ik bin der vito c:

  • was in der console steht ?
    nichts ich habe doch kein sendrcon
    oder so gemacht
    //edit achso dark shadow dieses printf macht das und was da steht ist alles ausser name2 (mein problem) und bei pID stand 105 :(
    //edit das stand da:
    [hide]
    [14:39:34] [TEST] Name1 : lcp9, Name2 : , playerid: 1, pID : 105, Text: hi[/hide]

    Einmal editiert, zuletzt von Nixon ()

  • printf ist ein Befehl der in die Konsole schreibt...


    Kein C++ gelernt?


    "Printf wird in C++ benutzt um in einer Console auszugeben!"




    ocmd:report(playerid,params[])
    {
    new pID, text[99];
    if(sscanf(params,"us",pID,text))return SendClientMessage(playerid,ROT,"/report [id] [text]");
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pname,sizeof(pname));
    new name[MAX_PLAYER_NAME];
    GetPlayerName(pID,name,sizeof(name));
    new string1[128];
    format(string1,sizeof(string1),"%s reported %s with the text : %s",pname,name,text);

    for(new i=0; i < MAX_PLAYERS; i++)
    {
    if(isPlayerAnAdmin(i,1))
    {
    SendClientMessage(i,BLAU,string1);
    }
    }
    return 1;
    }


    Schon besser :)

  • Du musst die variable "text" auch als string deklarieren.

    new text[/*länge des strings*/];


    extrem vielen dank aber jetzt habe ich nich ne frage warum hat das denn jetzt geklappt mein problem war doch nicht der text sondern die pID
    und der narme des spielers und sonst habe ich es auch so gemacht und hat geklppt.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Was ein besserwisser xD
    Eigl schreibt das Script auch garnichts in die Konsole sondern nur in die server_log, die dann in der Konsole angezeigt wird.


    Außerdem C++ bin ich nur im Konsolenbereich also nicht wirklich weit :D





    @lcp
    Weil sscanf es einfach falsch ausgelesen hat.
    Die ID war 105 vermute irgendein ASCII Wert von h oder sonst irgendwas...


    Gruß

    ik bin der vito c:


  • Du weißt das erst ins Log geschrieben wird, wenn es in der Konsole passiert? :D


    105 hmm kann es sein das es INVALID ist? D:


    MfG
    Geronimo


  • wer soll besser wisser sein? ich doch nicht oder?