Scheine an Fahrzeugen zuordnen und abfragen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Danke dir! @Kevin_CaruZo

    Habe bei dem /Scheine Befehl noch etwas hinzugefügt und zwar Anmerkungen wo z.b Schein Sperren stehen ( Zeile 35. )

    hat einer Ahnung wie ich z.b das Datum abfrage und dies da anzeigen lasse und genauso wie es mit der Restzeit sein soll wie soll diese angezeigt werden habe 0 Plan gerade wäre nett :)

    Außerdem soll es möglich sein die Scheine einen anderen Spieler zu zeigen mit einfach /Scheine 1 (ID 1 ) das habe ich auch noch nie gemacht.

    Quellcode

    1. ocmd:scheine(playerid,params[])
    2. {
    3. new string[250];
    4. if(pInfo[playerid][pAutoschein]) format(string, sizeof(string), "%s{2AC374}• Autoschein", string);
    5. else format(string, sizeof(string), "%s{C45461}• Autoschein", string);
    6. if(pInfo[playerid][aPunkte] < 1 && pInfo[playerid][pAutoschein]) format(string, sizeof(string), "%s\t\t{2AC374}| %d/10 |\n", string, pInfo[playerid][aPunkte]);
    7. else format(string, sizeof(string), "%s\t\t{C45461}| %d/10 |", string, pInfo[playerid][aPunkte]);
    8. //MOTORRADSCHEIN
    9. if(pInfo[playerid][pMotorradschein]) format(string, sizeof(string), "%s{2AC374}• Motorradschein", string);
    10. else format(string, sizeof(string), "%s{C45461}• Motorradschein", string);
    11. if(pInfo[playerid][mPunkte] < 1 && pInfo[playerid][pMotorradschein]) format(string, sizeof(string), "%s\t{2AC374}| %d/10 |", string, pInfo[playerid][mPunkte]);
    12. else format(string, sizeof(string), "%s\t{C45461}| %d/10 |", string, pInfo[playerid][mPunkte]);
    13. //LKWschein
    14. if(pInfo[playerid][pLKWschein]) format(string, sizeof(string), "%s\n{2AC374}• LKWschein", string);
    15. else format(string, sizeof(string), "%s\n{C45461}• LKWschein", string);
    16. if(pInfo[playerid][lPunkte] < 1 && pInfo[playerid][pLKWschein]) format(string, sizeof(string), "%s\t\t{2AC374}| %d/10 |", string, pInfo[playerid][lPunkte]);
    17. else format(string, sizeof(string), "%s\t\t{C45461}| %d/10 |", string, pInfo[playerid][lPunkte]);
    18. //Waffenschein
    19. if(pInfo[playerid][Waffenschein1]) format(string, sizeof(string), "%s\n{2AC374}• Waffenschein A", string);
    20. else format(string, sizeof(string), "%s\n{C45461}• Waffenschein A", string);
    21. if(pInfo[playerid][Waffenschein2]) format(string, sizeof(string), "%s\n{2AC374}• Waffenschein E", string);
    22. else format(string, sizeof(string), "%s\n{C45461}• Waffenschein E", string);
    23. //Flugschein
    24. if(pInfo[playerid][pFlugschein]) format(string, sizeof(string), "%s\n{2AC374}• Flugschein", string);
    25. else format(string, sizeof(string), "%s\n{C45461}• Flugschein", string);
    26. //Bootsschein
    27. if(pInfo[playerid][pBootschein]) format(string, sizeof(string), "%s\n{2AC374}• Bootsschein", string);
    28. else format(string, sizeof(string), "%s\n{C45461}• Bootsschein", string);
    29. //Anmerkung
    30. format(string, sizeof(string), "%s\n\nZus. Anmerkung:", string);
    31. if(pInfo[playerid][pAutosperre]) format(string, sizeof(string), "%s\n •Erteilte Autoschein Sperre am %d, Restzeit: %d", string, pInfo[playerid][pAutoDatum],pInfo[playerid][pAutoRestzeit]);
    32. if(pInfo[playerid][pMotorradsperre]) format(string, sizeof(string), "%s\n •Erteilte Autoschein Sperre am %d, Restzeit: %d", string);
    33. if(pInfo[playerid][pFlugsperre]) format(string, sizeof(string), "%s\n •Erteilte Autoschein Sperre am %d, Restzeit: %d", string);
    34. if(pInfo[playerid][pFlugsperre]) format(string, sizeof(string), "%s\n •Erteilte Autoschein Sperre am %d, Restzeit: %d", string);
    35. else format(string, sizeof(string), "%s\n{C45461}• Bootsschein", string);
    36. new string1[250];
    37. format(string1,sizeof(string1),"{FFFFFF}Scheine von %s",Spielername(playerid));
    38. ShowPlayerDialog(playerid,DIALOG_SCHEINE1,DIALOG_STYLE_MSGBOX,string1,string,"Schließen","");
    39. return 1;
    40. }
    Alles anzeigen
    EyL, German Roleplay. Opening 2019
    youtube.com/watch?v=MjWlICSj6Jo
  • Beim Sperren, speichere die Zeit so:

    PAWN-Quellcode

    1. pInfo[playerid][pAutosperre] = gettime();

    Im Befehl zum Auslesen, nutze: http://forum.sa-mp.com/showthread.php?t=347605
    Beachte dort auch den Korrekturhinweis von mir auf Seite 8: forum.sa-mp.com/showpost.php?p=3807026&postcount=72

    Dann kannst du damit das Datum so anzeigen:

    PAWN-Quellcode

    1. format(string, sizeof(string), "... Erteilt am: %02d.%02d.%d", day, month, year);


    Bezüglich der Restzeit, diese kannst du wie folgt errechnen:

    PAWN-Quellcode

    1. new seconds = pInfo[playerid][pAutosperreBis] - gettime();
    2. new days = seconds / 86400;
    3. seconds -= days * 86400;
    4. new hours = seconds / 3600;
    5. seconds -= hours * 3600;
    6. new minutes = seconds / 60;
    7. seconds -= minutes * 60;
    8. format(string, sizeof(string), "... Noch gesperrt: %d Tage, %d Stunden, %d Minuten, %d Sekunden", days, hours, minutes, seconds);

    Falls pAutoSperreBis kleiner gleich gettime ist, liegt keine Sperre mehr vor.

    Die Festlegung der Sperrzeit an entsprechender Stelle wie folgt (beispielsweise):

    PAWN-Quellcode

    1. pInfo[playerid][pAutosperreBis] = gettime() + ANZAHL_TAGE * 86400;



    Um im Scheine Befehl eine andere playerid auszulesen, musst du die playerid über z.B. sscanf oder strtok auslesen.
    Schaue zuerst, ob du in deinem Code bereits einen Befehl hast, mit dem eine andere playerid, angesprochen werden kann, um zu prüfen, welches System genutzt wird. In gleicher Weise kannst du das dann umsetzen.
  • Erstmal großes Danke das du dir die Zeit genommen hast!♥
    Woah das überfordet mich grade ziemlich vor allem der Befehl zum Auslesen

    So das habe ich schon einmal hinzugefügt.

    PAWN-Quellcode

    1. format(string, sizeof(string), "%s\n\n{FFFFFF}Zusätzliche Anmerkung:", string);
    2. new seconds = pInfo[playerid][pAutoRestzeit] - gettime();
    3. new days = seconds / 86400;
    4. seconds -= days * 86400;
    5. new hours = seconds / 3600;
    6. seconds -= hours * 3600;
    7. new minutes = seconds / 60;
    8. seconds -= minutes * 60;
    9. if(pInfo[playerid][pAutosperre]) format(string, sizeof(string), "%s\n •Erteilte Autoschein Sperre am %d, Restzeit: %d Stunden & %d Minuten", string,pInfo[playerid][pAutoDatum], days, hours, seconds);


    Beim Auslesen was du mir da geschickt hast verstehe ich irgendwie gar nicht.



    PAWN-Quellcode

    1. {
    2. SendClientMessage(i, 0xFF0000FF, "Dein Autoschein wurde dir enzogen da du die maximale Anzahl an Punkten überschritten hast!");
    3. SendClientMessage(i, 0xFF0000FF, "Somit hast du eine Scheinsperre von 3 Tagen erhalten.");
    4. pInfo[i][pAutoschein] = 0;
    5. pInfo[i][pAutoDatum] = gettime();
    6. pInfo[i][pAutoRestzeit] = gettime() + 3 * 86400;
    7. }
    Wäre das so richtig?

    Und zu der Sccanf frage habe ich gar nicht im Script also noch nie damit gearbeitet .
  • BrightLeaN schrieb:

    So das habe ich schon einmal hinzugefügt.
    Baue den Teil mit TimestampToDate noch ein, sonst passt das mit der Anzeige des Sperr-Datums nicht.


    BrightLeaN schrieb:

    Wäre das so richtig?
    Ja, allerdings noch zusätzlich:

    PAWN-Quellcode

    1. pInfo[playerid][pAutosperre] = 1;



    BrightLeaN schrieb:

    Und zu der Sccanf frage habe ich gar nicht im Script also noch nie damit gearbeitet .
    github.com/maddinat0r/sscanf/releases

    Dann im Befehl:

    PAWN-Quellcode

    1. if(sscanf(params, "u", pID)) return SendClientMessage(playerid, 0xFF0000FF, "Benutze: /scheine [playerid]");


    Dann kannst alles in den Arrays (sprich "[playerid]") zu "[pID]" ändern.
    pID ist dann die playerid, die eingegeben wurde.
  • PAWN-Quellcode

    1. if(pInfo[playerid][pAutosperre]) format(string, sizeof(string), "%s\n •Erteilte Autoschein Sperre am %d, Restzeit: %d Stunden & %d Minuten", string,pInfo[playerid][pAutoDatum], days, hours, seconds);


    zu:

    PAWN-Quellcode

    1. new year, month, day, hour, minute, second;
    2. TimestampToDate(pInfo[playerid][pAutoDatum], year, month, day, hour, minute, second, 2);
    3. if(pInfo[playerid][pAutosperre]) format(string, sizeof(string), "%s\n •Erteilte Autoschein Sperre am %02d.%02d.%d, Restzeit: %d Tage, %d Stunden & %d Minuten", string, day, month, year, days, hours, minutes);


    Gegebenenfalls musst du die 1 am Ende von TimestampToDate noch anpassen, falls die Uhrzeit nicht passt. Das ist der GMT-Offset. Aktuell sind wir bei GMT+2 auf Grund der Sommerzeit. Je nach dem wie dein Server konfiguriert ist, muss das eventuell erhöht oder verkleinert werden.
  • Hey danke dir!♥

    Spoiler anzeigen

    PAWN-Quellcode

    1. ocmd:scheine(playerid,params[])
    2. {
    3. new string[250];
    4. if(pInfo[playerid][pAutoschein]) format(string, sizeof(string), "%s{2AC374}• Autoschein", string);
    5. else format(string, sizeof(string), "%s{C45461}• Autoschein", string);
    6. if(pInfo[playerid][aPunkte] < 1 && pInfo[playerid][pAutoschein]) format(string, sizeof(string), "%s\t\t{2AC374}| %d/10 |\n", string, pInfo[playerid][aPunkte]);
    7. else format(string, sizeof(string), "%s\t\t{C45461}| %d/10 |\n", string, pInfo[playerid][aPunkte]);
    8. //MOTORRADSCHEIN
    9. if(pInfo[playerid][pMotorradschein]) format(string, sizeof(string), "%s{2AC374}• Motorradschein", string);
    10. else format(string, sizeof(string), "%s{C45461}• Motorradschein", string);
    11. if(pInfo[playerid][mPunkte] < 1 && pInfo[playerid][pMotorradschein]) format(string, sizeof(string), "%s\t{2AC374}| %d/10 |", string, pInfo[playerid][mPunkte]);
    12. else format(string, sizeof(string), "%s\t{C45461}| %d/10 |\n", string, pInfo[playerid][mPunkte]);
    13. //LKWschein
    14. if(pInfo[playerid][pLKWschein]) format(string, sizeof(string), "%s\n{2AC374}• LKWschein", string);
    15. else format(string, sizeof(string), "%s\n{C45461}• LKWschein", string);
    16. if(pInfo[playerid][lPunkte] < 1 && pInfo[playerid][pLKWschein]) format(string, sizeof(string), "%s\t\t{2AC374}| %d/10 |", string, pInfo[playerid][lPunkte]);
    17. else format(string, sizeof(string), "%s\t\t{C45461}| %d/10 |\n", string, pInfo[playerid][lPunkte]);
    18. //Waffenschein
    19. if(pInfo[playerid][Waffenschein1]) format(string, sizeof(string), "%s\n{2AC374}• Waffenschein A", string);
    20. else format(string, sizeof(string), "%s\n{C45461}• Waffenschein A", string);
    21. if(pInfo[playerid][Waffenschein2]) format(string, sizeof(string), "%s\n{2AC374}• Waffenschein E", string);
    22. else format(string, sizeof(string), "%s\n{C45461}• Waffenschein E", string);
    23. //Flugschein
    24. if(pInfo[playerid][pFlugschein]) format(string, sizeof(string), "%s\n{2AC374}• Flugschein", string);
    25. else format(string, sizeof(string), "%s\n{C45461}• Flugschein", string);
    26. //Bootsschein
    27. if(pInfo[playerid][pBootschein]) format(string, sizeof(string), "%s\n{2AC374}• Bootsschein", string);
    28. else format(string, sizeof(string), "%s\n{C45461}• Bootsschein", string);
    29. //Anmerkung
    30. format(string, sizeof(string), "%s\n\n{FFFFFF}Zusätzliche Anmerkung:", string);
    31. new seconds = pInfo[playerid][pAutoRestzeit] - gettime();
    32. new days = seconds / 86400;
    33. seconds -= days * 86400;
    34. new hours = seconds / 3600;
    35. seconds -= hours * 3600;
    36. new minutes = seconds / 60;
    37. seconds -= minutes * 60;
    38. new year, month, day, hour, minute, second;
    39. TimestampToDate(pInfo[playerid][pAutoDatum], year, month, day, hour, minute, second, 2);
    40. if(pInfo[playerid][pAutosperre]) format(string, sizeof(string), "%s\n •Erteilte Autoschein Sperre am %02d.%02d.%d, Restzeit: %d Tage, %d Stunden & %d Minuten", string, day, month, year, days, hours, minutes);
    41. new string1[250];
    42. format(string1,sizeof(string1),"{FFFFFF}Scheine von %s",Spielername(playerid));
    43. ShowPlayerDialog(playerid,DIALOG_SCHEINE1,DIALOG_STYLE_MSGBOX,string1,string,"Schließen","");
    44. return 1;
    45. }
    Alles anzeigen



    prntscr.com/j6zulg

    Irgendwie ist auch nicht alles untereinander kriege Kopfschmerzen wenn ich hier nach einem \n zu viel suche,
    Also unter den Anmerkungen wird zus. auch nichts gezeigt.
  • In den Zeilen 14 und 20 hast du ein \n zu viel.
    Mit freundlichen Grüßen
    FineTime

    NewborN schrieb:

    Das ganze mit den Geschlechtsverkehrenden Kühen am besten mit Move Object!

    Mr.Hot4Ever schrieb:

    Breadfish ist bestimmt ein Forum von RTL.
    [...]
    Nein direkt muss man haten weil man selber zu dumm zum scheißen ist.

    breadfish schrieb:

    P.S. ich bin nicht schwanger!

    Kones schrieb:

    Unter Alkoholeinfluss sollte man am besten die Finger weglassen vom Rechner - sonst kommt so ein Thema raus.

    Lifestyler schrieb:

    Kritik jeglicher Art ging dem Betreiber bis jetzt immer gekonnt am Po vorbei

    Lifestyler schrieb:

    Warst du evtl. böse?
  • Danke dir!♥,



    PAWN-Quellcode

    1. new seconds = pInfo[playerid][pAutoRestzeit] - gettime();
    2. new days = seconds / 86400;
    3. seconds -= days * 86400;
    4. new hours = seconds / 3600;
    5. seconds -= hours * 3600;
    6. new minutes = seconds / 60;
    7. seconds -= minutes * 60;
    8. new year, month, day, hour, minute, second;
    9. TimestampToDate(pInfo[playerid][pAutoDatum], year, month, day, hour, minute, second, 2);
    10. if(pInfo[playerid][pAutosperre]) format(string, sizeof(string), "%s\n{C45461} | %02d.%02d.%d | •Autoschein Sperre (%d:%d:%d)", string, day, month, year, hours, minutes, seconds);
    Wie mache ich das am besten das wenn die Zeit abgelaufen ist die Autosperre auf 0 gesetzt wird mit einem Timer welche Zeit empfiehlt sich da am besten?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von BrightLeaN ()


  • BrightLeaN schrieb:

    Wie mache ich das am besten das wenn die Zeit abgelaufen ist die Autosperre auf 0 gesetzt wird mit einem Timer welche Zeit empfiehlt sich da am besten?
    Ich würde einen Timer von einer Minute nehmen, der einen Loop für alle Spieler drin hat.
    Zusätzlich kannst du das public ja aufrufen, wenn jemand den Befehl oben ausführt, damit es keine negativen Zeiten anzeigt. Falls dann jemand den Befehl eingibt, und er gerade 10 Sekunden drüber ist, dann wird der Timer ausgeführt und er wird entsperrt, bevor der Dialog angezeigt wird.