Beiträge von Douq

    Vergiss sämtliche Änderungen, die dir vorgeschlagen worden, folgendes ist dein Problem:


    1.


    Code
    VALUES ('%i','%i','%f('),'%f','%f')


    Siehst du den Fehler? Du hast ein Hochkomma vergessen (habe es durch die Klammer ersetzt) Das muss hinzugefügt werden.


    2.


    Code
    format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f,'%f','%f')",PlayerInfo[playerid][p_id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);

    Du möchtest 6 Spalten einem Wert zu weisen beim neuen Datensatz, übergibst aber nur 5 Werte? Innerhalb der Klammer VALUES() befinden sich nämlich nur 5 Werte statt 6.


    Auch würde ich die Länge von 127+1 vom Query erhöhen, da kannst du schnell an dein Limit kommen.

    Code
    fInfo[i ][f_x] = cache_get_value_name_float(i, "X", fInfo[i][f_x]);

    cache_get_value_name* gibt bei Erfolg 1 und bei einem Fehler 0 zurück. Dadurch ergibt sich dein Fehler -> entferne die Zuweisung.



    Code
    cache_get_value_name_float(i, "X", fInfo[i][f_x]);

    So wäre es richtig. Der Inhalt der Spalte wird per Referenz an die jeweilige Variable übergeben.

    Scheinbar hast du dann eine andere Tabellenstruktur, als auf deinem PC. Der Fehler ist (wahrscheinlich) dadurch begründet, dass du die genannten Spalten als 'NOT NULL' definiert hast, sprich sie müssen einen Wert beinhalten. Da du aber scheinbar bei deinem Query bei diesen Spalten keinen Wert zu weist, erscheint dieser Fehler und der Query kann nicht erfolgreich ausgeführt bzw. der Datensatz nicht erstellt werden.


    Du hast nun zwei Möglichkeiten:

    • Erlauben, dass die genannten Spalten (siehe Fehler) NULL enthalten dürfen ODER
    • du gibst einen default Wert an. Ein Default Wert ist ein Wert einer Spalte, den er automatisch erhält, wenn ein neuer Datensatz erstellt wird und kein anderer Wert durch den Query angegeben wird (um es einfach zu erklären).

    Wenn du jetzt nur von Variablen ausgehst, kannst du diese per SetPVar* und GetPVar() untereinander austauschen. Ob es sinnig ist, ist eine andere Frage.


    E: Und, falls das die nächste Frage sein sollte: Funktionen kannst du per CallRemoteFunction() aufrufen.

    Was ist denn jetzt genau dein Problem? Ein Haus auszuwählen, deren ID zwischen 489-600 liegt? Dann kannst du es folgend machen:



    Code
    new housenumber = 489 + random(112);

    random() gibt dir eine Zahl zwischen 0 - MAX-1 zurück, sprich in diesem Fall eine Zahl zwischen 0 - 111. Da durch die Addition immer mindestens der Wert 489 gegeben ist, und zusätzlich maximal 111 dazuaddiert werden, ergibt sich der ID Bereich 489 - 600.

    Unter OnPlayerConnect


    payday_timer[playerid] = SetTimerEx("PayDayZeit", 60000, true, "d", playerid);


    Im Grunde.
    Die Variable zuvor als Array deklarieren

    Aber nicht vergessen, den Timer unter OnPlayerDisconnect() wieder zu killen, sonst reduziert sich der Intervall bis zum PayDay immer um 50%. Außerdem empfehle ich den Timer erst zu starten, wenn der Spieler eingeloggt ist -> sonst kann der Spieler während des LogIns einen PayDay kriegen o.ä.

    Also wenn er scheinbar die Seitenteile erfolgreich ran setzen kann, aber du sie nicht siehst, scheint es ja so als würden sie wieder entfernt werden.


    Wird das Fahrzeug zwischenzeitlich respawnt?
    Oder hast du eventuell ein Anti-Tuning drin, dass eventuell AddVehicleComponent nicht berücksichtigt?

    Von deinem Screenshot ausgesehen: Struktur (oben der Reiter), bei id auf bearbeiten, bei A_I einen Haken setzen und dann zurück, den Datensatz auswählen und unten auf Primärenschlüssel.


    Ich glaube, du musst aber alle Datensätze löschen oder die ID ändern, da nun dreimal die 0 vergeben ist.

    Also zum ersten Problem scheint es ja ganz so, dass mysql_fetch_int 0 entspricht, anders kann ich es mir nicht erklären. Um dieses Problem einfach zu umgehen, kannst du ja den Query folgendermaßen umändern:



    SQL
    UPDATE "BankTable" SET KontoValue = KontoValue-'%d' WHERE KontoId = '%d'

    Dann nutzt du statt KontoMoney, value als Variable bei dem Query.


    Und bei dem zweiten Problem würde ich einfach mal schauen, ob AddVehicleComponent eins zurück gibt (einfach per printf() ausgeben lassen)).

    Erst einmal als Tipp, ich würde an deiner Stelle auto_increment + primary key bei der Spalte id aktivieren. Dann kannst du auch einfach per phpMyAdmin auf die jeweilige Spalte drücken und den Wert beliebig ändern