Beiträge von Jeffry

    Sorry, hatte ich nicht gesehen.
    Ich vermute mal stark, dass der Code - wenn du die prints einfügst - bis zur saveFrakCarToDB Zeile kommt.


    Teste das mal aus und poste, falls die Vermutung stimmt, deine saveFrakCarToDB Funktion.

    1.)
    dienst[playerid] scheint dann nicht 0 zu sein, setze das nach beenden des Jobs auf 0 zurück.



    2.)
    format(string,sizeof(string),"Du gibst %0.1f Kubik Müll ab und erhälst %d",kubik[pMuellAuto[playerid]],floatround(geld));
    zu:
    format(string,sizeof(string),"Du gibst %0.1f Kubik Müll ab und erhälst %d",kubik[pMuellAuto[playerid]],geld);

    Wäre es nicht so schlauer:

    Nein, das sind dann X Anfragen an die Datenbank, anstatt einer. Das ist ressourcentechnisch nicht zu empfehlen.


    Zwecks dem Fehler, du hast mysql_free_result vergessen:
    public OnPlayerCarsLoad(playerid)
    {
    new query[128];
    format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",PlayerInfo[playerid][pMySQLID]);
    mysql_query(query);
    SendClientMessage(playerid,COLOR_RED,"Bis hier geht es");
    new num_rows = mysql_num_rows();
    printf("%i num rows",num_rows);
    for(new i=0; i<num_rows; i++)
    {
    new id=getFreeCarID();
    SendClientMessage(playerid,COLOR_RED,"Bis hier geht es auch");
    cInfo[i][carmodel] = mysql_GetIntByInt("autos","model","besitzer",PlayerInfo[playerid][pMySQLID]);
    cInfo[i][besitzer] = mysql_GetIntByInt("autos","besitzer","besitzer",PlayerInfo[playerid][pMySQLID]);
    cInfo[i][c_x] = mysql_GetFloatByInt("autos","x","besitzer",PlayerInfo[playerid][pMySQLID]);
    cInfo[i][c_y] = mysql_GetFloatByInt("autos","y","besitzer",PlayerInfo[playerid][pMySQLID]);
    cInfo[i][c_z] = mysql_GetFloatByInt("autos","z","besitzer",PlayerInfo[playerid][pMySQLID]);
    cInfo[i][c_r] = mysql_GetFloatByInt("autos","r","besitzer",PlayerInfo[playerid][pMySQLID]);
    cInfo[i][db_id] = mysql_GetIntByInt("autos","id","besitzer",PlayerInfo[playerid][pMySQLID]);
    cInfo[i][id_x]=CreateVehicle(cInfo[i][carmodel],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],-1,-1,-1);
    }
    mysql_free_result();
    return 1;
    }

    Füge dem Befehl hinzu:
    GivePlayerMoney(playerid, geld);


    Zwecks den 30 Sekunden:
    Zum anderen Befehl:
    if(lastInvite[playerid]+30 > gettime()) return SendClientMessage(playerid, 0xFF0000FF, "Error: Warte 30 Sekunden.");
    lastInvite[playerid] = gettime();
    Unter den Includes:
    new lastInvite[MAX_PLAYERS];

    In OnPlayerEnterDynamicCP:
    if(muellsacke[pMuellAuto[playerid]] == 1)
    zu:
    if(muellsacke[pMuellAuto[playerid]] <= 1)


    Füge dort drunter, nach dem Erstellen des Checkpoints, auch das ein:
    new rand1 = 5+random(3);
    muellsacke[pMuellAuto[playerid]] = rand1;
    globalVar[playerid][0] = bmx1[rand][0];
    globalVar[playerid][1] = bmx1[rand][1];
    globalVar[playerid][2] = bmx1[rand][2];
    globalVar[inviteID[playerid]][0] = bmx1[rand][0];
    globalVar[inviteID[playerid]][1] = bmx1[rand][1];
    globalVar[inviteID[playerid]][2] = bmx1[rand][2];

    Du musst die Größe das anklickbaren Bereiches mit TextDrawTextSize anpassen. https://wiki.sa-mp.com/wiki/TextDrawTextSize Der X Wert ist die Position PLUS die Größe des nach rechts anklickbaren Bereiches. Der Y Wert ist die geschätzte Höhe.


    Angenommen du erstellst dein Textdraw bei X = 120 und Y = 90. Dann machst du den Text "Hallo Welt" da rein. Sagen wir, der Text ist so groß, dass er in etwa über ein Zehntel deines Bildschirmes geht (musst du abschätzen, oder mit einem Lineal abmessen), dann heißt das 640 durch 10, das wäre 64. Somit ist TextDrawTextSize-X = 120 + 64 = 184.
    Nun misst, bzw. schätzt, du die Höhe des Textdraws, sagen wir mal du bekommst den Text in etwa 20 mal untereinander hin, bis dein Bildschirm von oben nach unten voll damit wäre. Heißt also: 480 durch 20, das gibt 24. Somit wäre TextDrawTextSize-Y = 24.