Beiträge von Jeffry

    Ändere
    mysql_function_query(dbhandle,query,false,"","");
    zu:
    printf("Query: %s", query);
    mysql_function_query(dbhandle,query,false,"","");


    Dann poste was im Server Log steht, wenn du dich ausloggst.

    aInfo[i][autoEnum] = 0;
    zu:
    aInfo[i][id_x] = 0;


    Es wäre hilfreich, wenn du die Zeilen mit den Errors in Zukunft markierst, oder die Zeilenangabe des PWN-Codes nutzt, dann muss man nicht immer ewig suchen.

    Code
    [pwn=STARTZEILE][/pwn]

    Kann leider nicht mit Strings arbeiten wegen SendeFraktion.


    Doch, wieso nicht?
    SendeFraktion(8,WEIS, str);


    Die Errors sind da, weil du nichts ausließt.
    new eingabeText1[128]; //Fehlt
    GetPVarString(playerid, "EingabeText1", eingabeText1, sizeof(eingabeText1)); //Fehlt
    new str[145]; //Fehlt
    format(str, sizeof(str), "Zuvor eingegeben: %s", eingabeText1); //formar musst du nutzen
    //Dann:
    SendeFraktion(8,WEIS, str);

    Bei der Eingabe:
    SetPVarString(playerid, "EintabeText1", inputtext);


    Bei der Ausgabe:
    new eingabeText1[128];
    GetPVarString(playerid, "EingabeText1", eingabeText1, sizeof(eingabeText1));
    new str[145];
    format(str, sizeof(str), "Zuvor eingegeben: %s", eingabeText1);

    Ah, ok. Das hatte dann aber nichts damit zu tun, dass das Reset nicht klappt, das hat funktioniert.
    Du hattest ein paar Fehler im Query. Schreibe es so:
    savePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    //speichern level,money
    new query[300];
    format(query,sizeof(query),"UPDATE user SET level ='%i',money='%i',alevel='%i',fraktion='%i',rang='%i' WHERE id='%i' ",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }

    ocmd:abschliessen(playerid,params[])
    {
    new motor,
    licht,
    alarm,
    tueren,
    bonnet,
    boot,
    objective;

    new vID = INVALID_VEHICLE_ID;
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
    {
    new Float:Pos[3];
    for(new i=0;i<MAX_VEHICLES; i++)
    {
    GetVehiclePos(i, Pos[0], Pos[1], Pos[2]);
    if(IsPlayerInRangeOfPoint(playerid, 5.0, Pos[0], Pos[1], Pos[2]))
    {
    vID = i;
    break;
    }
    }
    }
    else if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    vID = GetPlayerVehicleID(playerid);
    }
    if(vID == INVALID_VEHICLE_ID) return SendClientMessage(playerid, 0xFF0000FF, "Error: Nicht nahe oder in einem Fahrzeug.");


    //abschliessen:
    GetVehicleParamsEx(vID,motor,licht,alarm,tueren,bonnet,boot,objective);
    if(tueren==1)
    {
    tueren = 0;
    }
    else
    {
    tueren = 1;
    }
    SetVehicleParamsEx(vID,motor,licht,alarm,tueren,bonnet,boot,objective);
    SendClientMessage(playerid,blau,"Du hast die Türen aufgeschlossen/abgeschlossen");
    return 1;

    }

    Gut, dann vergiss das was ich oben gesagt habe. Das hätte den Spieler auf 0 gesetzt (wovon ich bei "Reset" ausgegangen bin).


    Was funktioniert dann daran nicht? Wie viel Geld hast du, wenn du wieder online kommst?

    Aber seine Daten werden in der Datenbank alles auf 0 gesetzt und wenn er sich wieder einloggt würde er alles nur auf 0 haben.
    Er möchte es denke ich so haben, dass wenn die Person sich ausloggt das seine Daten gespeichert und die Daten erst danach auf 0 gesetzt werden


    Achso, stimmt, das wäre auch möglich. Von der Seite habe ich es gar nicht betrachtet. Das kann natürlich sein.


    Dann wäre es aber richtig, so wie es war. Das ist jetzt die Frage, wie er es haben will. Aber danke für den Einwand.

    D.h sein Geld usw würde sich auf 0 Setzen


    Das will er doch. Deshalb ja "resetPlayer".


    EDIT:
    Allerdings solltest du die Funktion hier noch dazu ändern, da du nicht mit dem Name auf den Datensatz zugreifst:
    resetPlayer(playerid)
    {
    new id = sInfo[playerid][db_id];
    for(new i=0; i<sizeof(sInfo[]); i++)
    {
    sInfo[playerid][playerInfo:i]=0;
    }
    sInfo[playerid][db_id] = id;
    return 1;
    }

    Du kannst weiterhin mysql_query verwenden, und dann die cache Funktionen direkt danach, ohne Callback, allerdings ist das nicht empfohlen, da der Server eben auf die Antwort wartet, und somit solange steht, bis die Antwort im Cache ist.

    Dann musst du nach dem Login-Dialog das einfügen:
    SetSpawnInfo(playerid,0,sInfo[playerid][skin],439.3006,-1752.2723,8.7708,221.4513,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    Wenn das Login erfolgreich ist.

    new vID = INVALID_VEHICLE_ID;
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
    {
    new Float:Pos[3];
    for(new i=0;i<MAX_VEHICLES; i++)
    {
    GetVehiclePos(i, Pos[0], Pos[1], Pos[2]);
    if(IsPlayerInRangeOfPoint(playerid, 5.0, Pos[0], Pos[1], Pos[2]))
    {
    vID = i;
    break;
    }
    }
    }
    else if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    vID = GetPlayerVehicleID(playerid);
    }
    if(vID == INVALID_VEHICLE_ID) return SendClientMessage(playerid, 0xFF0000FF, "Error: Nicht nahe oder in einem Fahrzeug.");