Beiträge von Jeffry

    mysql_function_query(dbhandle,string,true,"CheckRoleplayName","is",playerid,inputtext);
    zu:
    mysql_function_query(dbhandle,query,true,"CheckRoleplayName","is",playerid,inputtext);


    Bei dem ersten Fehler stimmt bei einem Query die Anzahl der Parameter nicht mit den Bezeichnern überein (nach dem Call-Backname in mysql_function_query).

    Folgende Probleme waren im Code:
    In Zeile 65975: Eine } die ohne Zusammenhang dort stand.


    StripNewLine und strtok waren doppelt deklariert.


    In Zeile 41830:
    new aktion[200];
    zu:
    new aktion[256];


    Und:
    ocmd@2:spec,tv(playerid, params[])
    zu:
    ocmd:tv(playerid, params[]) return ocmd_spec(playerid, params);
    ocmd:spec(playerid, params[])
    Da du noch eine alte Version von ocmd nutzt.


    if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "Fehler: Gebe eine gültige Fahrzeug ID ein!");
    zu:
    if(!GetVehicleModel(id)) return SendClientMessage(playerid, COLOR_RED, "Fehler: Gebe eine gültige Fahrzeug ID ein!");


    Zudem waren einige Variablen und Array zwar deklariert, aber durch eine Menge auskommentierten Code wurden die unnötig. Die habe ich ebenfalls auskommentiert.
    Außerdem waren noch ein paar verschachtelte Kommentare vorhanden.


    Die Warnungen
    warning 219: local variable "string" shadows a variable at a preceding level
    waren nur eine Nebenursache der ganzen Errors. Als die Errors ausgebessert waren, war diese Warnung automatisch weg.



    Code
    pawno\include\M_Bot.inc(528) : warning 204: symbol is assigned a value that is never used: "ammo"
    pawno\include\M_Bot.inc(528) : warning 204: symbol is assigned a value that is never used: "weapon"

    Dies wurde durch eine Änderung in der Include hervorgerufen. Die beiden Deklarationen wurden auskommentiert.



    Der Code kompiliert nun frei von Warnungen und Errors.

    Das Query muss formatiert werden, da es Platzhalter beinhaltet.
    mysql_query("SELECT `Name`, `Fraktion` FROM `accounts` WHERE `Fraktion`=%i",GetPlayerFraktion(playerid));
    zu:
    format(data, sizeof(data), "SELECT `Name`, `Fraktion` FROM `accounts` WHERE `Fraktion`=%i",GetPlayerFraktion(playerid));
    mysql_query(data);

    Ich denke das liegt daran das id nicht mehr bei OnPlayerCheck selected wird. Wenn ich `id` AND `salt` mache würde dies gehen?

    Nein, das hat damit nichts zu tun, das sind zwei unabhängige Queries.


    Lösche bitte mal die accounts Tabelle und erstelle sie neu. Irgendwas ist an der Tabelle falsch, vielleicht repariert es sich so.
    Benenne sie eventuell testweise als "accounts2".



    EDIT:
    Rückmeldung kam per PN.
    Das Problem wurde durch das Neu-Erstellen der Tabelle gelöst.

    Muss ich im query auch salt und pw übergeben? Ich war der Meinung, dass das erst beim OnCheck kommt.

    Nur den Salt.
    Das Passwort kannst du aus OnPlayerCheck entfernen, das gibt der User ja ein (inputtext).


    Da du bei OnPlayerCheck den Salt aus dem Cache liest, muss er auch selektiert werden.
    Das kannst du anstatt der ID machen:
    mysql_format(handle, query, sizeof(query), "SELECT `salt` FROM `accounts` WHERE `username` = '%e'", pData[playerid][pName]);

    Ich denke es wird ein Fehler im Logindialogbereich sein, da hash und pPassword nicht richtig gesetzt sind denke ich, aber wirklich finden tue ich den Fehler nicht

    Kannst du bitte mal den Code posten, mit dem du abfragst, welcher Dialog dem Spieler angezeigt werden soll (Login/Register)? Und das MySQL Query dazu.


    Eventuell fehlt dort das Laden des Salts aus der Datenbank.

    Ok, wenn der Code noch aktuell ist, dann vermute ich, dass dein Haus das Pickup mit der ID 0 hat. Daher greift diese Abfrage hier nicht.
    Ändere:
    if(hInfo[id][h_pickup])
    zu:
    if(hInfo[id][h_pickup] != -1)


    Sowie:
    if(hInfo[id][h_text])
    zu:
    if(hInfo[id][h_text] != Text3D:-1)


    Und füge bei OnGameModeInit ein:
    for(new i = 0; i < sizeof(hInfo); i++)
    {
    hInfo[i][h_pickup] = -1;
    hInfo[i][h_text] = Text3D:-1;
    }


    Füge außerdem, nachdem du das Pickup/Label gelöscht hast (DestroyPickup/Delete3DTextLabel) jeweils die Zurücksetzung der Variable auf -1 danach hinzu, um hier Fehler zu vermeiden.

    Auch wenn ich das Haus kaufe updatet er nicht den pickup bzw löscht nicht den verkaufspickup. Es kommt nur ein neuer hinzu.

    Poste bitte den Code, ohne den Code wird es schwer hier eine korrekte Aussage zu treffen.


    Eventuell fehlt bei der Verkaufs-Funktion das Entfernen des Pickups (DestroyPickup).

    Wer nicht helfen will, muss nicht helfen, es wird keiner dazu gezwungen.


    Wer sich durch hilfesuchende User oder hilfegebende User gestört fühlt, ist in einem Forum grundsätzlich am falschen Platz.


    Punkt.

    Warum eigentlich?


    Dein Vorschlag beinhaltet keine Begründung.


    Edit:
    @maddin w00t 8o


    Edit:
    Zudem sehe ich es genau anders herum. Je mehr Threads desto besser, da dies zu einer schnelleren Lösungsfindung hilft, wenn man nach etwas sucht, als wenn alles in einem Thread steht.

    Serien mit aufeinander aufbauender Handlung:

    • 24
    • Person of Interest
    • The Blacklist
    • House of Cards
    • Homeland


    Ohne bzw. nur sehr geringe Handlungsfolge:

    • NCIS
    • NCIS: L.A.
    • Hawaii Five-0



    Bei "24" finde ich es persönlich einfach genial, dass die Story pro Staffel sich wirklich auf 24 mal 1 Stunde aufteilt, sprich alles in Echtzeit passiert (bis auf die Pausen, die für Werbung geplant sind). Das macht süchtig, vor allem weil oft zum Stundenwechsel was neues bevor steht, was man unbedingt sehen will.

    Willst du das aktuelle Alter oder den Geburtstag speichern?
    Wird es dir in der Nachricht korrekt ausgegeben? Wenn ja, dann lasse dir das Query mal printen. Sofern das korrekt ist, schaue in den MySQL Log, ob dort ein Fehler ausgegeben wird.

    format(query, sizeof(query), "UPDATE accounts SET Alter='%i' WHERE id='%i'", PlayerInfo[playerid][pAge], PlayerInfo[playerid][db_id]);
    zu:
    format(query, sizeof(query), "UPDATE accounts SET `Alter`='%i' WHERE id='%i'", PlayerInfo[playerid][pAge], PlayerInfo[playerid][db_id]);


    Das ALTER ein SQL Statement ist.

    Ich kann dir eine Pastebin Schicken per Pn?

    Das wird nichts bringen, da ich nicht tausende von Zeilen Code lesen kann. Das muss man ausprobieren um direkt am Code testen, und das kann der Ersteller am besten, da er weiß, worauf alles zu achten ist, damit später durch die Änderung keine Fehler auftreten, durch eventuelle Abhängigkeiten am Spawn.