Textdraw um 1 erhöhen, Ticketsystem.

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
  • Habe eine kleine Frage, undzwar habe ich ein kleines Ticketsystem erstellt.
    So, wenn ein Admin im /adienst ist erscheinen rechts Textdraws "Support: 0 " etc.


    Sobald ein Ticket einflattert, sollte dies um 1 erhöht werden und wenn ein Ticket bearbeitet wurde wieder abgezogen werden.
    Kann man das irgentwie machen im Script? Das man eine Variable oder so hat, und diese dann immer um 1 erhöht und dann wieder entfernt bei einem bearbeiteten Ticket und das ganze dann in eine Timer der die aktuellen Tickets abfragt und dann die Textdraws so ändert?

  • Hi,
    der Vorschlag mit der Variable ist nicht so verkehrt, der Timer allerdings schon.
    Du fragst einfach beim erstellen eines Tickets ab wie viele bereits existieren, und erhöhst die Variable dann - natürlich auch das TextDraw updaten (TextDrawSetString) und ggf. jedem Admin neu anzeigen (Schleife -> admin==true->TextDrawShowForPlayer).
    Wenn ein Ticket bearbeitet wird oder der Spieler sich ausloggt das selbe nur halt um eins runter setzten. (Frag einfach ab ob der Spieler der sich gerade ausloggt ein Ticket erstellt hat).


    Solltest du noch Fragen habe, schreib sie hier. :)


    #handy

  • new OffeneTickets;//Global oben im Script


    //Report Eingang:
    OffeneTickets ++; (um einen erhöhen!)


    //Report Ausgang:
    OffeneTickets --; (um einen subtrahieren!)


    //Auslesen:
    new string[128];
    format(string,128,"Derzeit sind es %d offene Tickets!",OffeneTickets);
    SendClientMessage(playerid,-1,string);
    Ich hoffe du kannst es einigermaßen daran erkennen, wie du es machen musst.
    Du brauchst eine globale Variable.

    Einmal editiert, zuletzt von AirM4X ()

  • Weil MAX_PLAYERS ist ja für ein Spieler nur.

    Man merkt du bist Anfänger - so wie [NGD]Manne dir das "erklärt" hat bzw. dir ein Beispiel gezeigt hat, ist es im Grund richtig.
    MAX_PLAYERS ist lediglich die Größe der Variable, du hättest auch 439 schreiben können.
    new bool:ticketAbgeschickt[MAX_PLAYERS];
    So, jetzt hast du für X (MAX_PLAYERS) Spieler einen Zwichenspeicher - Variable.


    Wenn der Spieler ein Ticket erstellt und absendet, setzt du dessen Wert auf true. (bei OnPlayerConnect natürlich auf false).
    ticketAbgeschickt[playerid]=true;
    Wenn dessen Ticket bearbeitet wird/wurde, demnach auf false
    ticketAbgeschickt[playerid]=false;


    Jetzt könntest du abfragen wie viele Spieler ein Ticket abgeschickt haben, bspw. so:
    new
    ticketsGesamt=0,
    x=0
    ;
    for(;x<MAX_PLAYERS;x++)
    {
    if(IsPlayerConnected(x) && ticketAbgeschickt[x]==true)
    ticketsGesamt++;
    }
    printf("Es gibt zur Zeit %d offene Tickets",ticketsGesamt);


    Hoffe ich konnte dir ansatzweise helfen :p

  • Naja Anfänger möchte ich nicht sagen, ich hatte ja den Plan wie es sein könnte.
    Nur brauchte Hilfe beim umsetzen.


    Habe nen komplett eigenes Ticketsystem gemacht, wo Tickets etc gespeichert werden und jederzeit abgerufen werden können.


    Gruß, und nochmals Danke.