Mysql, Int ändern wenn Spieler Off ist

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey, wie die Überschrift schon sagt, wollte ich gerne wissen, wie ich das anstelle mit Mysql?
    Ich möchte eine Variable setzen mit einem Befehl, auch wenn der Spieler off ist, wie stelle ich das an?
    Sry bin neu in Sachen Mysql.

  • UPDATE Query absenden.
    Mehr Infos kann ich dir auch nicht geben wenn du dich nicht genauer ausdrückst.

  • Bei dem Befehl am besten den eindeutigen Namen abfragen
    Wenn er online ist -> Normal ändern
    Wenn nicht -> Query senden wie .Makaveli schon sagte mit der mysql UPDATE Funktion.


    Einfache Syntax:
    UPDATE <tabelle> SET <spalte> = <Wert> WHERE <Spalte zum vergleichen> = <Wert zum Vergleich>


    Grüße

    ik bin der vito c:

  • Hab das mal als Test gemacht:


    Würde das so Funktionieren?


    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, BEFEHLFARBE, "Exakter Name wird benötigt!");
    new path[MAX_PLAYER_NAME+20];
    if(!CheckAccountExists(tmp)) return SendClientMessage(playerid, SPIELERROT, "Dieser Account existiert nicht!");
    new Test=1;
    format(string, sizeof(string), "UPDATE accounts SET CarTowed='%d' WHERE Name='%s'",
    Test,tmp);
    mysql_query(string);


    /edit fehler

  • Also 1.
    Solltest du aus


    format(string, sizeof(string), "UPDATE accounts SET CarTowed='%d' WHERE Name='%s'",


    das hier machen


    format(string, sizeof(string), "UPDATE accounts SET CarTowed=%d WHERE Name='%s'",



    Den unterschied wirst du sicher finden.
    2. Teste es.
    3. Name = %s -> mysql injection. Du musst es vorher escapen. Also: mysql_real_escape_string(tmp, tmp);


    Grüße

    ik bin der vito c:

  • So habe den Befehl nun so für den Ich das Brauche aber es funktioniert nicht,



    if(!strcmp(cmdtext, "/ablassen", true))
    {
    if(IsPlayerInRangeOfPoint(playerid,100.0,-2133.5625,-847.1934,32.0234) && GetPVarInt(playerid, "Towing") == 1 && IsPlayerInAnyVehicle(playerid) && GetVehicleTrailer(GetPlayerVehicleID(playerid)) == GetPVarInt(playerid, "TowingCar") && GetVehicleFrak(GetPlayerVehicleID(playerid)) == 24 && JobDuty[playerid] == 1)
    {
    for(new i = 0; i<MAX_VEHICLES; i++)
    {
    if(GetVehicleTrailer(GetPlayerVehicleID(playerid)) == PlayerCar[i][vid])
    {
    GetVehiclePos(PlayerCar[i][vid], PlayerCar[i][px], PlayerCar[i][py], PlayerCar[i][pz]);
    GetVehicleZAngle(PlayerCar[i][vid], PlayerCar[i][pa]);
    DestroyVehicle(PlayerCar[i][vid]);
    PlayerCar[i][vid] = CreateVehicle(PlayerCar[i][ModelID], PlayerCar[i][px], PlayerCar[i][py], PlayerCar[i][pz], PlayerCar[i][pa], PlayerCar[i][c1], PlayerCar[i][c2], -1);
    DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
    if(!PlayerCar[i][JobCar] && !PlayerCar[i][FrakCar])
    {
    new Test[MAX_PLAYER_NAME];
    format(Test, MAX_PLAYER_NAME, PlayerCar[i][Key]); //// Key = Fahrzeug Besitzer// Der Name
    if(CheckAccountExists(tmp))
    {
    new Test1=1;
    format(string, sizeof(string), "UPDATE accounts SET CarTowed='%d' WHERE Name='%s'",
    Test1,PlayerCar[i][Key]);
    mysql_query(string);
    PlayerCar[i][Towed]=1;
    }
    }


    DeletePVar(playerid, "Towing");
    DeletePVar(playerid, "TowingCar");
    SendClientMessage(playerid, HELLBLAU, "Fahrzeug erfolgreich abgeschleppt!");
    SendClientMessage(playerid, GRAU, "Du kannst in das Fahrzeug einsteigen und es per '/umparken' parken!");
    PlayerGiveMoney(playerid, 1000);
    return 1;
    }
    }
    }
    return 1;
    }

    Das mit mysql_real_escape_string hat auch nicht funktioniert, er speichert es nicht im Account des Spielers.
    Und das soll Passieren wenn sich der Spieler einloggt:



    if(PlayerInfo[playerid][pCarTowed]==1)
    {
    PlayerInfo[playerid][pCarTowed]=0;
    SendClientMessage(playerid,GRAU,"Eines deiner Fahrzeuge wurde abgeschleppt.");
    SendClientMessage(playerid,GRAU,"Du kannst es auf dem Abschlepphof in San Fierro wieder auslösen.");
    }