Beiträge von Jeffry

    Nimm den root Benutzer ohne Passwort:


    #define db_host "127.0.0.1"
    #define db_user "root"
    #define db_pass ""
    #define db_db "samp"





    Das ist in 99% aller Fälle standardmäßig so eingestellt.


    Dein user "samp" wird nicht die richtigen Berechtigungen haben, das ist auf localhost (dein Rechner) so eingestellt, standardmäßig zumindest.


    Deshalb benutze, wie ich oben geschrieben habe, den root - User ohne Passwort, der hat ALLE Berechtigungen. Dem kannst du später auch, je nach Client, ein Passwort geben.

    Nein, das darfst du nicht unter den Includes einfügen, das musst du im Befehl vor dem format einfügen.
    new ergebnis = strval(inputtext)*2;
    format(str, sizeof(str), "You have bought a ticket for %i$ and won %i $ !", strval(inputtext), ergebnis);


    Oder:
    format(str, sizeof(str), "You have bought a ticket for %i$ and won %i $ !", strval(inputtext), strval(inputtext)*2);


    Beides kommt auf das Gleiche raus.

    Das dürfte am gleichen Fehler liegen, und zwar habe ich gesehen, dass du die id gar nicht lädst.
    Füge das hier beim Laden hinzu:
    DrugInfo[i][d_ID] = cache_get_field_content_int(i, "id", handle);


    Der Befehl kann außerdem so aussehen, damit nicht einfach nichts passiert, wenn dir die Pflanze nicht gehört:
    ocmd:abernten(playerid, params[])
    {
    for(new i=0; i < sizeof(DrugInfo); i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 1.5, DrugInfo[i][d_PosX], DrugInfo[i][d_PosY], DrugInfo[i][d_PosZ]))
    {
    if(DrugInfo[i][d_Besitzer] != PlayerInfo[playerid][p_ID]) return SendClientMessage(playerid, COLOR_GREY, "Die Pflanze gehört dir nicht.");
    if(DrugInfo[i][d_Prozent] < 90) return SendClientMessage(playerid, COLOR_GREY, "Die Pflanze ist noch nicht ausgereift.");
    DrugInfo[i][d_PosX] = 0;
    DrugInfo[i][d_PosY] = 0;
    DrugInfo[i][d_PosZ] = 0;
    DrugInfo[i][d_Wasser] = 0;
    DrugInfo[i][d_Zustand] = 0;
    DrugInfo[i][d_Prozent] = 0;
    DestroyObject(DrugInfo[i][d_Objekt]);
    Delete3DTextLabel(DrugInfo[i][d_Label]);
    new query[256];
    format(query, sizeof(query), "DELETE FROM drugs WHERE id='%d'", DrugInfo[i][d_ID]);
    mysql_function_query(handle, query, false, "", "");
    return 1;
    }
    }
    return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht in der Nähe einer Pflanze.");
    }



    Darf ich Fragen wie du den PAWN-Quellcode benutzt?

    Ich nutze den BBCode Modus (erster Button in der Post-Forum).

    Die Zeile ist zu lang, du musst sie teilen:
    format(string,sizeof(string),"{DCDCDC}/stats {00AFFF}» {FFA000}zeigt Stats an\n{DCDCDC}/enter {00AFFF}» {FFA000}betritt ein Gebäude\n{DCDCDC}/exit {00AFFF}» {FFA000}verlässt ein Gebäude\n{DCDCDC}/pay {00AFFF}» {FFA000}übergebe jemanden Geld\n{DCDCDC}");
    format(string, sizeof(string),"%s/licenses {00AFFF}» {FFA000}zeigt dir deine Lizenzen\n{DCDCDC}/showperso {00AFFF}» {FFA000}zeige anderen deinen Personalausweis\n{DCDCDC}/showlicenses {00AFFF}» {FFA000}zeige anderen deine Lizenzen\n{DCDCDC}/support {00AFFF}» {FFA000}schreibt ein Supportticket", string);

    Das Problem liegt hier eben beim Lag, dass SetPlayerHealth noch nicht ausgeführt ist, wenn GetPlayerHealth ein paar Zeilen drunter aufgerufen wird. Das einzige was du noch machen kannst, damit das nicht vorkommt ist, dass du immer den direkten Wert von SetPlayerHealth auch in die StatusBar schreibst (gegebenenfalls indem du SetPlayerHealth hookst), dann sollte es auch gehen, da der Lag so ja nicht in Frage kommt.


    Mit dem Timer umgehst du das Problem dahingehend, dass eben immer eine kleine Verzögerung drin ist, die größer als die Latenz ist.

    Wäre dann, falls das so ist, aber nur für maximal eine Sekunde, oder nicht? Wenn du den Timer gegebenenfalls 4 mal pro Sekunde aufrufst, dann wären es maximal 250ms Differenz.


    Einen globalen Timer, der alle X Millisekunden aufgerufen wird und eine Schleife durch alle Spieler macht, und jeweils deren StatusBar aktualisiert. Versuche es mal damit, ob das klappt.

    Schreibe das so:
    stock UpdateDrugLabel(id)
    {
    new label[145];
    format(label, sizeof(label), "[ Zustand: %d ]\n[ Wasser: %d ]\n[ Prozent: %d ]", DrugInfo[id][d_Zustand], DrugInfo[id][d_Wasser], DrugInfo[id][d_Prozent]);
    Update3DTextLabelText(DrugInfo[id][d_Label], 0xFFFFFFFF, label);
    return 1;
    }


    Und ändere beim Erstellen das
    Create3DTextLabel(str, COLOR_WHITE, DrugInfo[i][d_PosX], DrugInfo[i][d_PosY], DrugInfo[i][d_PosZ], 10.0, 0, 0);
    zu:
    DrugInfo[i][d_Label] = Create3DTextLabel(str, COLOR_WHITE, DrugInfo[i][d_PosX], DrugInfo[i][d_PosY], DrugInfo[i][d_PosZ], 10.0, 0, 0);