Report Chat.

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
  • Guten Tag,
    kann mir vllt einer ein Report Chat scripten?
    Hab auch inner Sufu geschaut , alles negativ.
    Das sollte am besten ab Admin Level 1 sein!
    Da sollte so sein:


    Ein Admin kann "/sc" [ID] und dann starten man mit einem Spieler den Report Chat.


    Mit "/sc" kann man den wieder wegmachen.
    Wenn der Admin den Report Chat startet sollte beim Spieler stehen:
    Supporter **** hat den Report Chat gestartet!


    Bei dem Admin:
    Du hast mit Blümchen den Report Chat gestartet..


    PS: Die Chat Farbe sollte auch so Lila sein :D
    Währe nett.

  • Mach ich eben, ich edtier den Beitrag dann.
    Ich müsste noch Wissen wie deine Admin Abfrage aussieht.


    PlayerInfo[playerid][pAdmin] ?


    Poste es mal kurz.


    Da ich keine Antwort bekommen hab, hab ich es mit ner RCON Abfrage gemacht, hier bitte:


    public OnPlayerText(playerid, text[])
    {
    new string[512], string2[512], string3[512], string4[512], string5[512];
    format(string2,sizeof(string2),"Spieler %s: %s",derspieler,text);
    format(string,sizeof(string),"Administrator %s: %s",deradmin,text);
    format(string4,sizeof(string4),"[ReportChat] Administrator %s: %s",deradmin,text);
    format(string5,sizeof(string5),"[ReportChat] Spieler %s: %s",derspieler,text);
    format(string3,sizeof(string3),"Du: %s",text);
    if(GetPVarInt(playerid,"reportchat")==1)
    {
    if(IsPlayerAdmin(playerid))
    {
    SendClientMessage(derspielerid,0xA000FFFF,string);
    SendClientMessage(playerid,0xA000FFFF,string3);
    print(string4);
    return 0;
    }
    else if(!IsPlayerAdmin(playerid))
    {
    SendClientMessage(deradminid,0xA000FFFF,string2);
    SendClientMessage(playerid,0xA000FFFF,string3);
    print(string5);
    return 0;
    }
    }
    return 1;
    }


    ocmd:sc(playerid,params[])//Startet den Chat...
    {
    if(GetPVarInt(playerid,"reportchat")==1)return SendClientMessage(playerid,0xA0A0A0FF,"Du hast bereits einen Chat offen, beende ihn zuerst mit '/ssc'!");
    if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,0xA0A0A0FF,"Du bist kein Admin!");
    new player, admin[MAX_PLAYER_NAME], user[MAX_PLAYER_NAME];
    new chatu[256], chata[256];
    if(sscanf(params,"u",player))return SendClientMessage(playerid, 0xFF0000AA, "Benutze: /sc [Name/ID]");
    if(!IsPlayerConnected(player))return SendClientMessage(playerid,0xA0A0A0FF,"Dieser Spieler ist nicht online!");
    GetPlayerName(playerid,admin,sizeof(admin));
    GetPlayerName(player,user,sizeof(user));
    format(chatu,sizeof(chatu),"Administrator %s hat den Report-Chat gestartet!",admin);
    format(chata,sizeof(chata),"Du hast mit Spieler %s den Report Chat gestartet!",user);
    SendClientMessage(player,0xA000FFFF,chatu);
    SendClientMessage(playerid,0xA000FFFF,chata);
    SetPVarInt(playerid,"reportchat",1);
    SetPVarInt(player,"reportchat",1);
    deradmin = admin;
    derspieler = user;
    deradminid = playerid;
    derspielerid = player;
    return 1;
    }


    ocmd:ssc(playerid,params[])//Beendet den Chat..
    {
    if(GetPVarInt(playerid,"reportchat")!=1)return SendClientMessage(playerid,0xA0A0A0FF,"Du hast keinen Chat offen!");
    if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,0xA0A0A0FF,"Du bist kein Admin!");
    new chatu[256], chata[256];
    format(chatu,sizeof(chatu),"Administrator %s hat den Report-Chat beendet!",deradmin);
    format(chata,sizeof(chata),"Du hast mit Spieler %s den Report Chat beendet!",derspieler);
    SendClientMessage(derspielerid,0xA000FFFF,chatu);
    SendClientMessage(playerid,0xA000FFFF,chata);
    SetPVarInt(playerid,"reportchat",0);
    SetPVarInt(derspielerid,"reportchat",0);
    return 1;
    }


    Sscanf Code, einfach ganz unten ins Script einfügen..:


    stock sscanf(string[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(string))
    #else
    if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    stringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (string[stringPos] && string[stringPos] <= ' ')
    {
    stringPos++;
    }
    while (paramPos < paramCount && string[stringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = string[stringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = string[++stringPos];
    }
    do
    {
    stringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = string[stringPos];
    do
    {
    stringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, string[stringPos++]);
    }
    case 'f':
    {


    new changestr[16], changepos = 0, strpos = stringPos;
    while(changepos < 16 && string[strpos] && string[strpos] != delim)
    {
    changestr[changepos++] = string[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    stringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = stringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = string[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    string[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - stringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, string[stringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    string[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    stringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = string[stringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = string[stringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    stringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
    {
    stringPos++;
    }
    while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
    {
    stringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }


    Hab ich doch gern gemacht ;)


    Ach und falls du das ocmd Include noch nicht hast, hier bitte:


    [Include] OCMD

    Einmal editiert, zuletzt von n0skillg3t ()

  • Ich hab einfach alles unten im Script reingepackt, aber Ingame tut sich nichts...
    Oder wo muss ich die 1 & das 2 reinpacken .. ??

  • Hast du irgendwie Skype oder Icq?
    Ich heiße auf Skype: jacoub187


    Du kennst dich ja gut aus :D

  • Solch eine Funktion wurde einmal im DDG-Script vom Allbekannten HEiTZER
    veröffentlicht, das warsch. nie wieder Realeased wird.
    Im Ravens Roleplay gibt es auch solch eine Funktion, einfach mal nach-
    schauen.

    Danke , aber der nette "n0skillg3t" hat mir eins erstellt.