Beiträge von Jeffry

    Am besten über eine zweite Variable (oder ein enum-Array).


    Autohausauto1_preis[ 0 ] = 10000;
    Autohausauto1_preis[ 1 ] = 10;
    Autohausauto1_preis[ 2 ] = 9876;
    Autohausauto1_preis[ 3 ] = 454545;


    format(string, sizeof(string), "Auto koscht $%d", Autohausauto1_preis[i]);
    ShowPlayerDialog(playerid, DIALOG_AUTOHAUS1, DIALOG_STYLE_LIST, "{FFFFFF}Los Santos exquisit Autohaus", string, "Kaufen", "Abbrechen");

    [04:34:25] [ERROR] mysql_format: destination size '256' is too small


    Ich habe herausgefunden das 256 hier zu wenig ist wie kann ich das eigentlich verkürzen also das in der Zeile nicht 1000 Bustaben und Zahlen sind sondern das in 5 Zeilen verteilt ist.

    Das kannst du so machen:
    mysql_format(db,query,sizeof(query),"UPDATE `user` SET `Skin`='%d', `XP`='%d',`XPMax`='%d',`PayDay`='%d',`Level`='%d',`Motorradschein`='%d', `Autoschein`='%d', `Beamter`='%d', `Perso`='%d', ", ...);


    mysql_format(db,query,sizeof(query),"%s `Alter`='%d', `Geschlecht`='%d', `Neuling`='%d', `Geld`='%d', `Rollerschein`='%d', `Bankgeld`='%d', `Bankkonto`='%d', `Bizbesitz`='%d' WHERE `ID`='%i'", query, ...);


    Das "..." am Ende füllst du natürlich mit deinen Variablen.

    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.

    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:


    new year, month, day, hour, minute, second;
    TimestampToDate(pInfo[playerid][pAutoDatum], year, month, day, hour, minute, second, 2);
    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.

    [ERROR] error #1054 while executing query "UPDATE `user` SET `Skin`='40', `Motorradschein`='0', `Autoschein`='1', `Beamter`='0', `Perso`='0', `Alter`='15', `Geschlecht`='2', `Neuling`='1', `Geld`='85189', `Rollerschein`='0', `Bankgeld`='19655', `Bankkonto`='1', `Bizbesitz`='0' WHERE `ID`='22'": Unknown column 'Perso' in 'field list'

    Hier ist das Problem.


    Das Feld "Perso" gibt es in deiner Tabelle "user" nicht.

    Kann ich das irgendwie einstellen das er nach 3 Sekunden wieder geblitzt werden kann?

    Ist schon drin ;) Zeile 14.



    Und kann ich auch in einem String anzeigen lassen wie schnell er gefahren ist und wie viel er bezahlen musste Punkte usw.

    new string[145];
    format(string, sizeof(string), "Du bist %0.2fkm/h gefahren. Dafür erhälst zu %d Punkte und eine Strafe von $%d.", speed, punkte, geldstrafe);
    SendClientMessage(i, 0xFF0000FF, string);

    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.



    Wäre das so richtig?

    Ja, allerdings noch zusätzlich:
    pInfo[playerid][pAutosperre] = 1;



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

    https://github.com/maddinat0r/sscanf/releases


    Dann im Befehl:
    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.

    format(string, sizeof(string), "•Level: %d \n•Respektpunkte:%d/%d\n•Payday: %d/60", string, pInfo[playerid][pLevel],pInfo[playerid][pXP],pInfo[playerid][pXPMax],pInfo[playerid][pPayDay]);
    zu:
    format(string, sizeof(string), "•Level: %d \n•Respektpunkte:%d/%d\n•Payday: %d/60", pInfo[playerid][pLevel],pInfo[playerid][pXP],pInfo[playerid][pXPMax],pInfo[playerid][pPayDay]);

    forward Blitzer50();
    public Blitzer50()
    {
    new Float:speed, geldstrafe, punkte;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    if(IsPlayerInRangeOfPoint(i,5,1633.10706, -1737.88904, 12.547))
    {
    speed = getPlayerSpeed(i);
    if(speed > 50)
    {
    GameTextForPlayer(i, "~y~!Geblitzt!", 500, 3);
    geldstrafe = (speed - 50) * 100;
    punkte = (speed - 50) / 5;
    pInfo[i][aPunkte] += punkte;
    if(pInfo[i][aPunkte] >= 10)
    {
    SendClientMessage(playerid, 0xFF0000FF, "[Autoschein] Dein Autoschein wurde dir weg genommen, da du zu viele Strafpunkte hast.");
    pInfo[i][pAutoschein] = 0;
    }
    }
    }
    }
    }
    return true;
    }


    Je nach dem wie schnell dein Timer läuft, müsste man eventuell noch zusätzlich abfragen, ob der Spieler in den letzten Sekunden bereits geblitzt wurde.
    Das würde dann so aussehen:
    forward Blitzer50();
    public Blitzer50()
    {
    new Float:speed, geldstrafe, punkte, time = gettime() - 3;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    if(IsPlayerInRangeOfPoint(i,5,1633.10706, -1737.88904, 12.547))
    {
    if(pInfo[i][pZuletztGeblitzt] < time)
    {
    speed = getPlayerSpeed(i);
    if(speed > 50)
    {
    GameTextForPlayer(i, "~y~!Geblitzt!", 500, 3);
    geldstrafe = (speed - 50) * 100;
    punkte = (speed - 50) / 5;
    pInfo[i][aPunkte] += punkte;
    pInfo[i][pZuletztGeblitzt] = gettime();
    if(pInfo[i][aPunkte] >= 10)
    {
    SendClientMessage(playerid, 0xFF0000FF, "[Autoschein] Dein Autoschein wurde dir weg genommen, da du zu viele Strafpunkte hast.");
    pInfo[i][pAutoschein] = 0;
    }
    }
    }
    }
    }
    }
    return true;
    }