Script speichert Nichts in Datenbank

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
  • Hallo Community,
    ich habe da ein kleines Problem, Udzwar Speichert mein Script nun endlich die letzte Position des spielers, aber aber das leben noc nicht
    Und spwanen tut er mich auch nicht auf der gespeicherten Position


    Wäre nett wen mir da nochmal jemand hilft


    Das enum:
    enum SpielerDaten
    {
    pName[MAX_PLAYER_NAME],
    pLevel,
    pGeld,
    pKills,
    pTode,
    Float:pHealth,
    pAdmin,
    xKord,
    yKord,
    zKord
    }
    new SpielerInfo[MAX_PLAYERS][SpielerDaten];


    Das Speichern beim public OnPlayerDisconnect
    SavePlayer(playerid);


    Der LoadPlayer und SavePlayer stock

    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    SetPlayerPos(playerid,SpielerInfo[playerid][xKord], SpielerInfo[playerid][yKord], SpielerInfo[playerid][zKord]); //Unter den anderen Sache
    }
    return 1;
    }
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new Float:xxKord,Float:yyKord,Float:zzKord;
    GetPlayerPos(playerid,xxKord,yyKord,zzKord);
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Admin", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    /* mysql_SetFloat("accounts", "xKord", SpielerInfo[playerid][xKord], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "yKord", SpielerInfo[playerid][yKord], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "zKord", SpielerInfo[playerid][zKord], "Name", SpielerInfo[playerid][pName]);*/
    mysql_SetFloat("accounts","xKord",xxKord,"Name",SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts","yKord",yyKord,"Name",SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts","zKord",zzKord,"Name",SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }


    //edit: Nun speichert er auch die Position, aber er gibt sie nicht wieder. und das Helth speichert er auch noch nicht

  • Mich wundert es ja, dass du bei LoadPlayer überhaupt nichts mit den Positionen lädst?

    Unkompetent. Das neue dynamisch.



    ihr seit schon lustig postet erros aber nicht die zeilen wo sie sind dann können wir euch auch nicht helfen^^


    Lernt Scripten, Leute, und macht eure Augen auf!


    _______________________________________
    50 Beiträge: [x] 300 Beiträge: [x]
    100 Beiträge: [x] 500 Beiträge: [x]
    150 Beiträge: [x] 1000 Beiträge: [x]
    200 Beiträge: [x]
    2000 Beiträge: []
    250 Beiträge: [X] Boardaktivitäten: Profil


    [size=36]_______________________________________

    /Edit: Schmerzt es dir eigentlich nicht so ein Müll zu schreiben 8|

  • Sry wenn ich mich irre ,aber muss dass nicht so ?
    Beim speichern/laden kann ich dir nicht helfen , da ich keine Ahnung von MySQL hab ^^



    Edit:


    Du müsstest beim Laden erstmal die Werte in die Variablen übertragen , sprich irgendwie so :D



    SpielerInfo[playerid][xKord] = mysql_Get//Keine Ahnung wies weiter geht bei MySQL , auf jeden fall den Wert aus der Tabelle ^^
    SpielerInfo[playerid][yKord] = mysql_Get
    SpielerInfo[playerid][zKord] = mysql_Get


    und dann bei OnPlayerSpawn


    SetPlayerPos(playerid,SpielerInfo[playerid][xKord], SpielerInfo[playerid][yKord], SpielerInfo[playerid][zKord]);

  • //edit: nochmal ein Komplett Edit, damit jeder weis, wo man nun stehen geblieben ist,
    allso es geht immernoich darum, das die letzte spieler Position nicht geladen wird, bzw man nicht dort gespawnt wird.


    stock LoadPlayer
    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {


    new Float:xxKord,Float:yyKord,Float:zzKord;
    GetPlayerPos(playerid,xxKord,yyKord,zzKord);
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][xxKord] = mysql_GetFloat("accounts", "xKord", "Name", SpielerInfo[playerid][pName]);//warning
    SpielerInfo[playerid][yyKord] = mysql_GetFloat("accounts", "yKord", "Name", SpielerInfo[playerid][pName]);//warning
    SpielerInfo[playerid][zzKord] = mysql_GetFloat("accounts", "zKord", "Name", SpielerInfo[playerid][pName]);//warning
    SetPlayerPos(playerid,SpielerInfo[playerid][xKord], SpielerInfo[playerid][yKord], SpielerInfo[playerid][zKord]); //Unter den anderen Sache
    SetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
    }
    return 1;
    }


    stock SavePlayer


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new Float:xxKord,Float:yyKord,Float:zzKord;
    GetPlayerPos(playerid,xxKord,yyKord,zzKord);
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Admin", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pName]);
    GetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    /* mysql_SetFloat("accounts", "xKord", SpielerInfo[playerid][xKord], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "yKord", SpielerInfo[playerid][yKord], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "zKord", SpielerInfo[playerid][zKord], "Name", SpielerInfo[playerid][pName]);*/
    mysql_SetFloat("accounts","xKord",xxKord,"Name",SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts","yKord",yyKord,"Name",SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts","zKord",zzKord,"Name",SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }


    der/die/das WTF enum
    enum SpielerDaten
    {
    pName[MAX_PLAYER_NAME],
    pLevel,
    pGeld,
    pKills,
    pTode,
    Float:pHealth,
    pAdmin,
    Float:xKord,
    Float:yKord,
    Float:zKord
    }


    Soo, allso ich werde nicht an der Letzten Position gespawnt, und ausserdem habe cih folgende Warnings.
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1286) : warning 213: tag mismatch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1287) : warning 213: tag mismatch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(128 : warning 213: tag mismatch
    G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1373) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Warnings.


    Wie gesagt, bin MySQL noob, und fände es sehr freundlich wen mir jemand unter die arme greift, und mir die fehler genau erklär!


    //edit:
    Ein Warning kommt noch von hier: aber erst seid dem ich das GetFloat bei LoadPlayer drinn habe
    stock mysql_GetFloat(Table[], Field[], Where[], Is[])
    {
    new query[128],Float:sqlfloat;
    mysql_real_escape_string(Table,Table);
    mysql_real_escape_string(Field,Field);
    mysql_real_escape_string(Where,Where);
    mysql_real_escape_string(Is,Is);
    format(query,128,"SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_float(sqlfloat);
    mysql_free_result();
    return sqlfloat; //warning
    }