Ticketsystem (von TutNichts)

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
  • habs mal getestet funktioniert nicht also /tlogin mach ich da steht dann ich bin bereits eingeloggt dann mach ich /tsup dann steht da falscher befehl /sup dann mach ich /Sup funtz erst garnicht^^


    7/10
    Da es nicht Funktioniert


    MFG


    [GER]Wezzy


  • Wenn die PVar "ticket_admin" gesetzt ist bist du bereits eingeloggt.
    /tsup [Text]
    Der Text muss mehr als 10 Zeichen haben.

  • #include <a_samp>
    #include <ocmd>
    #include <sscanf2>


    #define PVAR_NAME "Admin"


    #define COLOR_RED 0xFF0000FF
    #define COLOR_GREEN 0x87FF00FF
    #define COLOR_YELLOW 0xFFFF00FF
    #define COLOR_PURPLE 0xBE00FFFF


    new Text:SupportDraws[2];


    stock GetName(playerid)
    {
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof(Name));
    return Name;
    }


    stock SendAdminMessage(Farbe, Message[])
    {
    for(new playerid; playerid < GetMaxPlayers(); playerid++) {
    if(GetPVarInt(playerid, "ticket_admin") >= 1 || IsPlayerAdmin(playerid)) {
    SendClientMessage(playerid, Farbe, Message);
    }
    }
    return 1;
    }


    stock UpdateSupportTextdraws()
    {
    new Ticketzahl,
    str1[100],
    str2[1000];
    for(new playerid; playerid < GetMaxPlayers(); playerid++) {
    if(GetPVarInt(playerid, "ticket_opened")) {
    if(!Ticketzahl)
    format(str2, sizeof(str2), "%d - %s", playerid, GetName(playerid));
    else
    format(str2, sizeof(str2), "%s~n~%d - %s", str2, playerid, GetName(playerid));
    Ticketzahl++;
    }
    }
    format(str1, sizeof(str1), "%d Ticket(s)", Ticketzahl);
    TextDrawSetString(SupportDraws[1], str2);
    TextDrawSetString(SupportDraws[0], str1);
    }


    ocmd:tlogin(playerid, params[])
    {
    #pragma unused params
    new str1[128];
    if(GetPVarInt(playerid, "ticket_admin") >= 0)
    return SendClientMessage(playerid, COLOR_RED, "[Ticketsystem] Du bist bereits eingeloggt!");
    if(GetPVarInt(playerid, PVAR_NAME) > 0 || IsPlayerAdmin(playerid)) {
    TextDrawShowForPlayer(playerid, SupportDraws[0]);
    TextDrawShowForPlayer(playerid, SupportDraws[1]);
    SetPVarInt(playerid, "ticket_admin", 1);
    format(str1, sizeof(str1), "[Ticketsystem] %s hat sich in das Ticketsystem eingeloggt!", GetName(playerid));
    }
    else {
    TextDrawHideForPlayer(playerid, SupportDraws[0]);
    TextDrawHideForPlayer(playerid, SupportDraws[1]);
    format(str1, sizeof(str1), "[Ticketsystem] %s hat sich versucht in das Ticketsystem einzuloggen!", GetName(playerid));
    }
    return SendAdminMessage(COLOR_YELLOW, str1);
    }


    ocmd:tsup(playerid, params[])
    {
    if(GetPVarInt(playerid, "ticket_opened") < 1) {
    new Text[100],
    str[128];
    if(sscanf(params, "s[100]", Text))
    return SendClientMessage(playerid, COLOR_RED, "[Ticketsystem] Falsche Benutzung: /sup [Text]");
    if(strlen(Text) > 10) {
    SendClientMessage(playerid, COLOR_GREEN, "[Ticketsystem] Das Ticket wurde erfolgreich gespeichert!");
    format(str, sizeof(str), "[Ticketsystem] %s hat ein Ticket erstellt!", GetName(playerid));
    SendAdminMessage(COLOR_YELLOW, str);
    SetPVarInt(playerid, "ticket_opened", 1);
    SetPVarString(playerid, "ticket_text", Text);
    UpdateSupportTextdraws();
    }
    else {
    SendClientMessage(playerid, COLOR_RED, "[Ticketsystem] Der Text sollte mehr als 10 Zeichen enthalten!");
    }
    }
    else
    SendClientMessage(playerid, COLOR_RED, "[Ticketsystem] Du hast bereits ein Ticket erstellt!");
    return 1;
    }


    ocmd:topen(playerid, params[])
    {
    new tID;
    if(sscanf(params, "d", tID))
    return SendClientMessage(playerid, COLOR_RED, "[Ticketsystem] Falsche Benutzung: /aosup [Ticket-ID]");
    if(!IsPlayerAdmin(playerid) || GetPVarInt(playerid, "ticket_admin") < 1)
    return SendClientMessage(playerid, COLOR_RED, "[Ticketsystem] Du hast nicht genug Rechte!");
    if(GetPVarInt(tID, "ticket_opened") != 0 && !GetPVarInt(playerid, "ticket_player")) {
    new str1[128],
    str2[128],
    str3[128],
    str4[100];
    format(str4, sizeof(str4), "%s", GetPVarString(tID, "ticket_text", str4, 100));
    DeletePVar(tID, "ticket_opened");
    SetPVarInt(tID, "ticket_sup", playerid);
    SetPVarInt(playerid, "ticket_player", tID);
    format(str1, sizeof(str1), "[Ticketsystem] %s hat dein Ticket geöffnet; nutze /tchat [Text]!", GetName(playerid));
    format(str2, sizeof(str2), "[Ticketsystem] %s hat das Ticket von %s geöffnet!", GetName(playerid), GetName(tID));
    format(str3, sizeof(str3), "[Ticketsystem] %s schrieb: %s", GetName(playerid), str4);
    SendClientMessage(tID, COLOR_YELLOW, str1);
    SendAdminMessage(COLOR_YELLOW, str2);
    SendClientMessage(playerid, COLOR_YELLOW, str3);
    UpdateSupportTextdraws();
    }
    return 1;
    }


    ocmd:tclose(playerid, params[])
    {
    #pragma unused params
    if(IsPlayerAdmin(playerid) || GetPVarInt(playerid, "ticket_admin") > 0) {
    if(!GetPVarInt(playerid, "ticket_player")) {
    new PlayerID = GetPVarInt(playerid, "ticket_player"),
    str1[128],
    str2[128];
    format(str1, sizeof(str1), "[Ticketsystem] %s hat das Ticket von Spieler %s gelöscht!", GetName(playerid), GetName(PlayerID));
    format(str2, sizeof(str2), "[Ticketsystem] %s hat dein Ticket welches von ihm bearbeitet wurde, gelöscht!", GetName(playerid));
    SendAdminMessage(COLOR_YELLOW, str2);
    SendClientMessage(PlayerID, COLOR_YELLOW, str1);
    DeletePVar(PlayerID, "ticket_sup");
    DeletePVar(playerid, "ticket_player");
    DeletePVar(PlayerID, "ticket_opened");
    }
    else
    SendClientMessage(playerid, COLOR_RED, "[Ticketsystem] Du hattest kein Ticket offen!");
    }
    return 1;
    }


    ocmd:tchat(playerid, params[])
    {
    new Text[100];
    if(sscanf(params, "s[100]", Text))
    return SendClientMessage(playerid, COLOR_RED, "[Ticketsystem] Falsche Benutzung: /tchat [Text]");
    if(IsPlayerConnected(GetPVarInt(playerid, "ticket_sup"))) {
    new str1[128],
    str2[128],
    varSup = GetPVarInt(playerid, "ticket_sup");
    format(str1, sizeof(str1), "[LIVE: Ticketsystem] %s schreibt: %s", GetName(playerid), Text);
    format(str2, sizeof(str2), "[LIVE: Ticketsystem] Du schriebst: %s", Text);
    SendClientMessage(varSup, COLOR_PURPLE, str1);
    SendClientMessage(playerid, COLOR_PURPLE, str2);
    }
    else
    SendClientMessage(playerid, COLOR_RED, "[Ticketsystem] Dein Gegenüber ist weg!");
    return 1;
    }


    ocmd:tmsg(playerid, params[])
    {
    new Text[100];
    if(sscanf(params, "s[100]", Text))
    return SendClientMessage(playerid, COLOR_RED, "[Ticketsystem] Falsche Benutzung: /tmsg [Text]");
    if(IsPlayerConnected(GetPVarInt(playerid, "ticket_player")) && GetPVarInt(playerid, "ticket_admin") > 0) {
    new str1[128],
    str2[128],
    varPlayer = GetPVarInt(playerid, "ticket_player");
    format(str1, sizeof(str1), "[LIVE: Ticketsystem] %s schreibt: %s", GetName(playerid), Text);
    format(str2, sizeof(str2), "[LIVE: Ticketsystem] Du schriebst: %s", Text);
    SendClientMessage(varPlayer, COLOR_PURPLE, str1);
    SendClientMessage(playerid, COLOR_PURPLE, str2);
    }
    else
    SendClientMessage(playerid, COLOR_RED, "[Ticketsystem] Dein Gegenüber ist weg!");
    return 1;
    }


    public OnFilterScriptInit()
    {
    printf(" Ticketsystem von Vincent Petritz (easy-scripting.net)");
    SupportDraws[0] = TextDrawCreate(495.000000, 114.000000, "0 Ticket(s)");
    TextDrawBackgroundColor(SupportDraws[0], 255);
    TextDrawFont(SupportDraws[0], 2);
    TextDrawLetterSize(SupportDraws[0], 0.200000, 1.000000);
    TextDrawColor(SupportDraws[0], -1);
    TextDrawSetOutline(SupportDraws[0], 1);
    TextDrawSetProportional(SupportDraws[0], 1);
    TextDrawSetShadow(SupportDraws[0], 0);
    TextDrawUseBox(SupportDraws[0], 1);
    TextDrawBoxColor(SupportDraws[0], 0x000000AA);
    TextDrawTextSize(SupportDraws[0], 588.000000, 0.000000);


    SupportDraws[1] = TextDrawCreate(495.000000, 130.000000, " ");
    TextDrawBackgroundColor(SupportDraws[1], 255);
    TextDrawFont(SupportDraws[1], 2);
    TextDrawLetterSize(SupportDraws[1], 0.200000, 1.000000);
    TextDrawColor(SupportDraws[1], -1);
    TextDrawSetOutline(SupportDraws[1], 1);
    TextDrawSetProportional(SupportDraws[1], 1);
    TextDrawUseBox(SupportDraws[1], 1);
    TextDrawBoxColor(SupportDraws[1], 0x000000AA);
    TextDrawTextSize(SupportDraws[1], 602.000000, 121.000000);
    return 1;
    }


    public OnFilterScriptExit()
    {
    for(new playerid; playerid < GetMaxPlayers(); playerid++) {
    TextDrawHideForPlayer(playerid, SupportDraws[0]);
    TextDrawHideForPlayer(playerid, SupportDraws[1]);
    }
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    if(GetPVarInt(playerid, "ticket_player")) {
    new Player = GetPVarInt(playerid, "ticket_player");
    SendClientMessage(Player, COLOR_YELLOW, "[Ticketsystem] Dein Gegenüber hat das Spiel verlassen!");
    DeletePVar(playerid, "ticket_player");
    }
    if(GetPVarInt(playerid, "ticket_sup")) {
    new Sup = GetPVarInt(playerid, "ticket_sup");
    SendClientMessage(Sup, COLOR_YELLOW, "[Ticketsystem] Dein Gegenüber hat das Spiel verlassen!");
    DeletePVar(Sup, "ticket_sup");
    DeletePVar(Sup, "ticket_opened");
    }
    return 1;
    }


    also bei mir funtz. es immernoch nicht sag mir was ich ändern muss dann tuh ichs sehe selbst nicht was^^ eig. ist alles in ordnung oder nicht?! 8|

  • 8/10 Hatte Andre schonmal released (Sowas ähnliches) und ist seit daher nix besonderes mehr, trotzdem gute Arbeit, mach weiter so.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Gutes System. Mir gefällt vor allem die Anzeige auf der rechten Seite. Kann die bei vielen Reports nicht ein wenig unübersichtlich werden?
    Mit 0.3e vielleicht noch die Dialoge Clickable machen, sodass man sie damit direkt aufmachen kann, dann wäre das klasse.


    Mit freundl. Grüßen
    Padarom

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Gutes System. Mir gefällt vor allem die Anzeige auf der rechten Seite. Kann die bei vielen Reports nicht ein wenig unübersichtlich werden?
    Mit 0.3e vielleicht noch die Dialoge Clickable machen, sodass man sie damit direkt aufmachen kann, dann wäre das klasse.


    Mit freundl. Grüßen
    Padarom


    Nein eigentlich nicht bzgl. der Sauberkeit.
    Wie folgt schaut's dann aus:


    0 - Padarom
    1 - InternetInk
    2 - Vincent
    3 - Kones


    als Beispiel, ich finds ordentlich. ^^