Ticketsystem fuktioniert nicht wie ich es will.

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
  • Abend.. ich weiß zwar das das was ich machen will in den Folgenden codes eingebaut ist, aber wollte halt erstmal das sstem testen..


    Ich schick euch erstmal einige Codes
    enum TicketStats
    {
    TicketOwner[MAX_PLAYER_NAME],
    TicketText[256],
    TicketArt,
    TicketStatus,
    TicketBearbeiter[MAX_PLAYERS]
    };
    new Ticket[MAX_PLAYERS][TicketStats];


    public OnPlayerText(playerid, text[])
    {
    if(Ticket[playerid][TicketStatus] == 3)
    {
    new adminname[MAX_PLAYER_NAME], xid, string[128];
    xid = Ticket[playerid][TicketBearbeiter];
    GetPlayerName(playerid, adminname, sizeof(adminname));
    format(string, sizeof(string), "%s %s", adminname, text);
    SendClientMessage(xid, COLOR_GRAU, string);
    SendClientMessage(playerid, COLOR_GRAU, string);
    return 0;
    }
    if(Ticket[playerid][TicketStatus] == 2)
    {
    new spielername[MAX_PLAYER_NAME], xid, string[128];
    xid = Ticket[playerid][TicketBearbeiter];
    GetPlayerName(playerid, spielername, sizeof(spielername));
    format(string, sizeof(string), "%s %s", spielername, text);
    SendClientMessage(xid, COLOR_GRAU, string);
    SendClientMessage(playerid, COLOR_GRAU, string);
    return 0;
    }


    return 1;
    }


    if(strcmp(cmdtext,"/tickets",true) == 0)
    {
    if(pInfo[playerid][pAdmin] > 0)
    {
    new string1[256];
    SendClientMessage(playerid, COLOR_ORANGE, "------Ticketsystem-----");
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(Ticket[i][TicketStatus] == 1)
    {
    format(string1, sizeof(string1), "[TicketID: %d | Ersteller: %s | Frage: %s ]", i, Ticket[i][TicketOwner], Ticket[i][TicketText]);
    SendClientMessage(playerid, COLOR_ORANGE, string1);
    }
    }
    }
    else return SendClientMessage(playerid,COLOR_GRAU,"Du bist kein Admin!");
    return 1;
    }


    ocmd:ct(playerid,params[])
    {
    new xid;
    if(Ticket[playerid][TicketStatus] == 3)
    {
    Ticket[xid][TicketStatus] = 0;
    Ticket[playerid][TicketStatus] = 0;
    new adminname[MAX_PLAYER_NAME],spielername[MAX_PLAYER_NAME], string[128];
    GetPlayerName(playerid, adminname, sizeof(adminname));
    GetPlayerName(xid, spielername, sizeof(spielername));
    format(string, sizeof(string), "%s hat dein Ticket geschlossen!", adminname);
    SendClientMessage(xid, COLOR_GRAU, string);
    SendClientMessage(playerid, COLOR_GRAU, "Du hast das Ticket geschlossen!");
    KillTimer(HaveTicketTimer(xid));
    }
    else return SendClientMessage(playerid,COLOR_GRAU,"Du hast kein offenes Ticket!");
    return 1;
    }
    ocmd:at(playerid,params[])
    {
    new xid, adminname[MAX_PLAYER_NAME], spielername[MAX_PLAYER_NAME], string[128];
    GetPlayerName(playerid, adminname, sizeof(adminname));
    GetPlayerName(xid, spielername, sizeof(spielername));
    if(Ticket[xid][TicketStatus] != 1) return SendClientMessage(playerid, COLOR_GRAU, "Ticket nicht vorhanden oder bereits in Bearbeitung.");
    else
    {
    format(string, sizeof(string), "%s hat dein Ticket angenommen.", adminname);
    SendClientMessage(xid, COLOR_ORANGE, string);
    format(string, sizeof(string), "Du hast das Ticket von %s angenommen.", spielername);
    SendClientMessage(playerid, COLOR_ORANGE, string);
    Ticket[xid][TicketStatus] = 2;//user
    Ticket[xid][TicketBearbeiter] = playerid;
    Ticket[playerid][TicketStatus] = 3;//ich
    Ticket[playerid][TicketBearbeiter] = xid;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(pInfo[i][pAdmin] > 0)
    {
    format(string, sizeof(string), "%s hat das Ticket von %s angenommen [TicketID: %d]", adminname, spielername, xid);
    SendClientMessage(i, COLOR_ORANGE, string);
    }
    }
    }
    return 1;
    }
    ocmd:report(playerid,params[])
    {
    new sendername[MAX_PLAYER_NAME], str1[256], reason[128];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    Ticket[playerid][TicketOwner] = sendername;
    if(sscanf(params,"s",reason))return SendClientMessage(playerid,COLOR_GRAU,"Fehler: /report [Text]");
    {
    if(HaveTicket == 0)
    {
    format(str1, sizeof(str1), "%s", reason);
    Ticket[playerid][TicketText] = str1;
    Ticket[playerid][TicketArt] = 1;
    Ticket[playerid][TicketStatus] = 1; // Status 1 = ertsellt | 2 = angenommen | 0 = keiner
    SendClientMessage(playerid,COLOR_GRAU,"{AAFFCC}Dein Ticket wurde erstellt..");
    SendClientMessage(playerid,COLOR_GRAU,"{AAFFCC}Wenn das Ticket nach 5 min. nicht beantwortet wird, wird dieses automatisch gelöscht");
    HaveTicket = 1;
    SetTimer("HaveTicketTimer", 300000, 0);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(pInfo[i][pAdmin] > 0)
    {
    format(str1, sizeof(str1), "%s hat folgendes Ticket erstellt: %s [TicketID:%d] ", sendername, reason, playerid);
    SendClientMessage(i, COLOR_ORANGE, str1);
    }
    }
    }
    else
    {
    SendClientMessage(playerid,0xAA3333FF,"Du hast schon ein Ticket erstellt!");
    Ticket[playerid][TicketArt] = 0;
    Ticket[playerid][TicketStatus] = 0;
    }
    }
    return 1;
    }


    Und zwar möchte ich das ich mit /at das Ticket annehme, was zuerst geschrieben wurde.. ein kleines Beispiel..


    User 1 hat Report und hat Ticketid 0
    user 2 hat Report und hat Ticketid 1
    und so weiter bis 100 oder whatever


    ich weiß nur nicht wie ich bei /Report und bei /at das einstelle.. bei /ct soll er natürlich das Ticket mit der Ticketid löschen..


    Könnt ihr mir da helfen? ich verzweifel langsam..


    //edit was hinzugefügt