Admin sollen auch mit /sup antworten können

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 will das Admin auch mit /sup antworten können
    Aber ich weis nicht wie ich das hin bekomme.


    Hier mein Sup Befehl:


    ocmd:sup(playerid,params[])
    {
    new text[256], swort[128];
    if(sscanf(params,"s",text))
    {
    Echo(playerid, cTürkis,"[Benutzung]: /sup [text]");
    }
    else
    {
    format(swort,sizeof(swort),"/sup %s", text);
    SWort(playerid, text);
    if(TicketAngenommen[playerid] == 0)
    {
    new pname[MAX_PLAYER_NAME],save[512], string[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(save,sizeof save,"Tickets/%s.ini",pname);
    if(!dini_Exists(save) && TicketZeile[playerid] == 0) // Wenn noch kein Ticket existiert und auch die TicketZeile auf 0 ist.
    {
    SupportTicket[playerid] = 1;
    TicketZeile[playerid] = 1;
    dini_Create(save);
    dini_Set(save,"Suptext",text);
    Echo(playerid, cTürkis, "[Support] Du hast ein Ticket erstellt. Bitte warte, bis es ein Admin annimt.");
    format(string, sizeof(string), "%s", text);
    Echo(playerid, cTürkis, string);
    Echo(playerid, cTürkis, "[Support] Mit /sup [text] kannst du noch 2 weitere Zeilen schreiben.");
    UpdateTickets();
    return 1;
    }
    else if(TicketZeile[playerid] == 1) // Wenn die erste Zeile schon geschrieben wurde
    {
    new string2[128];
    dini_Set(save, "Suptext2",text);
    Echo(playerid, cTürkis, "[Support] Der folgende Text wurde an dein Ticket angehängt:");
    format(string2, sizeof(string2), "%s", text);
    Echo(playerid, cTürkis, string2);
    Echo(playerid, cTürkis, "[Support] Mit /sup [text] kannst du noch 1 weitere Zeilen schreiben.");
    TicketZeile[playerid] = 2;
    return 1;
    }
    else if(TicketZeile[playerid] == 2) // Wenn bereits 2 Zeilen ausgefüllt sind
    {
    new string3[128];
    dini_Set(save, "Suptext3",text);
    Echo(playerid, cTürkis, "[Support] Der folgende Text wurde an dein Ticket angehängt:");
    format(string3, sizeof(string3), "%s", text);
    Echo(playerid, cTürkis, string3);
    Echo(playerid, cTürkis, "[Support] Dein Ticket ist nun vollgeschrieben. Du kannst nichts mehr anhängen.");
    TicketZeile[playerid] = 3;
    return 1;
    }
    else if(TicketZeile[playerid] == 3) // Wenn das Ticket bereits 3 Zeilen hat
    {
    Echo(playerid, cTürkis, "[Support] Dein Ticket ist vollgeschrieben. Warte, bis ein Admin es annimmt.");
    return 1;
    }
    }
    if(TicketAngenommen[playerid] == 1) // Zum direkten Antworten per /sup , wenn das Ticket angenommen wurde.
    {
    new pID = DeinSupport[playerid];
    new antwort[128], antwort2[128], DerFragende[MAX_PLAYER_NAME], DerSup[MAX_PLAYER_NAME];
    GetPlayerName(playerid, DerFragende, sizeof (DerFragende));
    GetPlayerName(pID, DerSup, sizeof (DerSup));
    format(antwort, sizeof (antwort),"--> %s", text);
    Echo(playerid, cSupGelb, antwort);
    format(antwort2, sizeof (antwort2), "( %s: %s )", DerFragende, text);
    Echo(pID, cSupGelb, antwort2);
    }


    }
    return 1;
    }


    LG
    Marv_Checker

  • 1. Dein server ist schon online.
    2. Hab mal Geduld und versuch es selber in der Zeit



    Also als erstes alles was du hast packst du in eine Abfrage ob er Admin Level 0 ist
    dann machst du ein else da kommt dort fragst du dann ab ob der Supporter ein Ticket angenommen hat


    Wenn ja dann welche ID.
    Wenn diese Connected ist sendest du den Text an die ID


    Wo ist da das Prob. ???

    ik bin der vito c:

  • Als erstes machst du ein paar news:


    new yoursupport[MAX_PLAYERS];
    new insupport[MAX_PLAYERS];
    new SupDuty[MAX_PLAYERS];
    new gegenC&P


    Danach unter OnPlayerConnect alles auf "false" bzw. "0" setzen. Im Klartext: Admins sind in keinem Support, kein Ticket wurde geschrieben, dein Support ist nicht angenommen und der Admin ist nicht Aduty.
    insupport[playerid]=0;
    yoursupport[playerid]=0;
    writtenticket[playerid]=0;
    SupDuty[playerid]=0;
    gegen C&P=0;


    Das gleiche bei OnPlayerDisconnect
    insupport[playerid]=0;
    yoursupport[playerid]=0;
    writtenticket[playerid]=0; gegen C&P(playerid);
    SupDuty[playerid]=0;


    Bei OnPlayerText wird nun abgefragt, ob du in einem Support bist, falls ja dann wird dem Admin geschrieben, was du schreibst (ohne Befehl!)
    if(insupport[playerid]==1)
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(yoursupport[i]==playerid)
    {
    new str[128], GetName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,GetName,sizeof(GetName));
    immernoch gegen C&P
    format(str,sizeof(str),"%s: %s",GetName,text);
    nicht alles erklär ich, da du die Grundfunktionen drauf haben solltest
    SendClientMessage(i,WEISS,str);
    }
    }
    }


    Und danach die Befehle (in meinem Fall mit PVars und OCMD)
    ocmd:supduty(playerid,params[])
    {
    if(!IstSpielerEinAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Teammitglied!");
    {
    new Name[MAX_PLAYER_NAME],string[128];
    GetPlayerName(playerid,Name,sizeof(Name));
    format(string,sizeof(string),"[ADM]: %s hat sich als Supporter angemeldet. Via /support kannst du mit ihn in Kontakt treten!",Name);
    wenn du nachher wegen den Errors fragst..
    SendClientMessageToAll(HELLBLAU,string);
    SupDuty[playerid]=1;
    }
    return 1;
    }


    ocmd:support(playerid,params[])
    {
    new Name[MAX_PLAYER_NAME],string[128],text[128];
    GetPlayerName(playerid,Name,sizeof(Name));
    if(sscanf(params,"s",text))
    {
    return SendClientMessage(playerid,WEISS,"[Verwendung]: /support [Text]");
    SendClientMessage(playerid,=!,"Gegen C&P);
    }
    if(writtenticket[playerid]==1)
    {
    return SendClientMessage(playerid,ROT,"[Warnung]: Du hast bereits einen Supporter kontaktiert!");
    }
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(SupDuty[i]==1)
    {
    format(string,sizeof(string),"%s (ID:%d) hat ein Support geschrieben: %s",Name,playerid,text);
    SendClientMessage(i,WEISS,string);
    writtenticket[playerid]=1;
    return 1;
    }
    }
    SendClientMessage(playerid,ROT,"[Warnung]: Derzeit ist kein Supporter anwesend!");
    return 0;
    }


    ocmd:ansup(playerid,params[])
    {
    new id;
    if(!IstSpielerEinAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Teammitglied!");
    if(sscanf(params,"i",id))
    {
    return SendClientMessage(playerid,WEISS,"[Verwendung]: /ansup [ID]");
    SendClientGegenC&PMessage(playerid,=!,"GegenC&P);
    }
    if(writtenticket[id]==1)
    {
    new Name[MAX_PLAYER_NAME],string[128];
    GetPlayerName(playerid,Name,sizeof(Name));
    format(string,sizeof(string),"Der Supporter %s bearbeitet nun dein Ticket. Nun kannst du mit ihm Schreiben!",Name);
    SendClientMessage(id,GRÜN,string);
    insupport[id]=1;
    gegenC&P
    insupport[playerid]=1;
    yoursupport[id]=playerid;
    yoursupport[playerid]=id;
    writtenticket[id]=0;
    }
    return 1;
    }


    ocmd:closesup(playerid,params[])
    {
    if(!IstSpielerEinAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Teammitglied!");
    {
    if(insupport[playerid]==1)
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(yoursupport[i]==playerid)
    {
    SendClientMessage(i,GRÜN,"Der Supporter hat nun den Support geschlossen.");
    SendClientMessage(playerid,WEISS,"Supportchat geschlossen!");
    insupport[i]=0,yoursupport[i]=0;
    Falls fragen aufkommen, kannst du mich gern Fragen.
    insupport[playerid]=0,yoursupport[playerid]=0;
    return 1;
    }
    }
    }
    }
    return gegen C&P;
    }


    MfG

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen