Warning / Error

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,


    ich bekomme in meinem Spieler abrufen einen Error angezeigt.


    Es handelt sich um folgende Funktion die abgerufen werden soll


    PlayerInfo[playerid][pBanner] = cache_get_field_content_float(0, "banner",handle);
    In der Tabelle befindet sich ein Text mit dem Benutzernamen.


    forward OnUserLogin(playerid);
    public OnUserLogin(playerid)
    {
    //Query wurde ausgeführt und das Ergebnis im Cache gespeichert
    if(cache_get_row_count() == 0)
    {
    //Der Spieler hat ein falsches Passwort eingegeben
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Falsches Passwort!", "Ok", "Abbrechen");
    }
    else
    {
    //Es existiert ein Ergebnis, das heißt der Spieler hat das richtige Passwort eingegeben
    //Wir lesen nun die erste Zeile des Caches aus (ID 0)
    SpawnPlayer(playerid);
    PlayerInfo[playerid][p_id] = cache_get_field_content_int(0, "id", handle);
    PlayerInfo[playerid][pLevel] = cache_get_field_content_int(0, "level", handle);
    PlayerInfo[playerid][pRespektpunkte] = cache_get_field_content_int(0, "pRP", handle);
    PlayerInfo[playerid][admin_level] = cache_get_field_content_int(0, "admin_level", handle);
    PlayerInfo[playerid][pMoney] = cache_get_field_content_int(0, "money", handle);
    PlayerInfo[playerid][pKonto] = cache_get_field_content_int(0, "Konto", handle);
    PlayerInfo[playerid][pKills] = cache_get_field_content_int(0, "kills", handle);
    PlayerInfo[playerid][pDeaths] = cache_get_field_content_int(0, "deaths", handle);
    PlayerInfo[playerid][pPaytime] = cache_get_field_content_int(0, "paytime", handle);
    PlayerInfo[playerid][pJobMoney] = cache_get_field_content_int(0, "JobMoney", handle);
    PlayerInfo[playerid][pRPg] = cache_get_field_content_int(0, "gesamtrp", handle);
    PlayerInfo[playerid][pJob] = cache_get_field_content_int(0, "Job", handle);
    PlayerInfo[playerid][spawnchange] = cache_get_field_content_int(0, "spawnchange", handle);
    PlayerInfo[playerid][pLeader] = cache_get_field_content_int(0, "Leader", handle);
    PlayerInfo[playerid][pLRang] = cache_get_field_content_int(0, "pLRang", handle);
    PlayerInfo[playerid][pJobk] = cache_get_field_content_int(0, "Jobk", handle);
    PlayerInfo[playerid][TBanned] = cache_get_field_content_int(0, "tban", handle);
    PlayerInfo[playerid][pMember] = cache_get_field_content_int(0, "Member", handle);
    PlayerInfo[playerid][pWanted] = cache_get_field_content_int(0, "Wanted", handle);
    PlayerInfo[playerid][pBanned] = cache_get_field_content_int(0, "ban", handle);
    PlayerInfo[playerid][pBanner] = cache_get_field_content_float(0, "banner",handle);
    GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
    CancelSelectTextDraw(playerid);
    loadPlayerCars(playerid);
    TextDrawShowForPlayer(playerid,Textdraw0);
    PlayerWantedBarCreate(playerid);
    PlayerInfo[playerid][pLoggedIn] = true;


    return 1;
    }
    return 1;
    }

  • Beitrag von Impressiv_ ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: vor mir ().
  • Beitrag von robbi2304 ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Erledigt ().
  • Noch ein Fehler den ich nun habe.


    ocmd:ban(playerid,params[])
    {
    if(!isAdmin(playerid,3))return SendClientMessage(playerid,COLOR_RED,"Dieser Befehl konnte nicht gefunden werden. Verwende /hilfe");
    new pID, reason[128], string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,BLAU,"[ERROR] Eingeben: /ban [ID] [Grund]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gebannt. Grund: %s",PlayerInfo[pID],PlayerInfo[playerid],reason);
    PlayerInfo[p_id][pBanreason]=reason;
    PlayerInfo[p_id][pBanned]=1;
    PlayerInfo[p_id][pBanner]=PlayerInfo[playerid][pName];
    SendClientMessageToAll(COLOR_RED,string);
    GetPlayerName(pID,string,sizeof(string));
    SaveUserStats(pID);
    return 1;
    }



    Dies will nicht Richtig gespeichert werden bzw wirft in der MySQL Log errors aus


    PlayerInfo[p_id][pBanner]=PlayerInfo[playerid][pName];


    MySQL.Log


    [11:03:34] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'banner = 'R' WHERE id = '2'' at line 1



    Angeblich würde etwas nicht mit der Datenbank stimmen aber das bezweifel ich weil diese auf Text eingestellt ist mit 40 Zeichen

  • Du hast oben um Befehl new pID; aber hast in PlayerInfo p_id gibt es da keine Error´s oder Fehler? Und was kommt denn als Text?
    Mach das so:
    GetPlayerName(playerid,pName,sizeof(pName));PlayerInfo[p_id][pBanner]=pName;

    Ich musste es etwas anders schreiben.


    Allerdings funktioniert das dann auch nicht.




    GetPlayerName(playerid,PlayerInfo[playerid][pName],MAX_PLAYER_NAME);
    PlayerInfo[p_id][pBanner]=pName;

  • Ein VARCHAR von 40 länge bringt leider keinen unterschied. Die MySQL Log wirft weiterhin folgenden Fehler aus


    :18] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'banner = 'R' WHERE id = '2'' at line 1


    Der Benutzername ist nicht R bzw der Banner soll nicht R ausgeben

  • irgendwie so, musst bei der wiki gucken^^

    Eher so :bll:

    C
    cache_get_field_content(0, "banner",PlayerInfo[playerid][pBanner],handle,30);//30 ist die Länge von pBanner, musst du ggf. ändern



    Das mit dem Namen muss so:


    C
    GetPlayerName(playerid,PlayerInfo[playerid][pName],MAX_PLAYER_NAME);

    Jetzt steht in PlayerInfo[playerid][pName] der Name von playerid. Mehr muss man nicht machen.
    Du kannst einen String nicht direkt mit "=" einfügen, sondern muss strcat, format oder der ähnlichen nutzen.



    - EDIT:
    Der Befehl von oben muss so aussehen:

    Schicke uns dann mal die MySQL Query, wo der Fehler auftritt.

  • Jetzt wird schonmal der Name Richtig in der MySQL Log angezeigt.


    MySQL Log wirft folgendes aus:


    [11:32:37] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'banner = 'Rominadesto' WHERE id = '2'' at line 1


  • Zeige mal dein SaveUserStats

    stock SaveUserStats(playerid)
    {
    //Wenn der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht
    if(!PlayerInfo[playerid][pLoggedIn]) return 1;
    //Ansonsten speichere sie
    new query[256];
    mysql_format(handle, query, sizeof(query), "UPDATE users SET Wanted = '%d',tban = '%d',Jobk = '%d',Leader = '%d',spawnchange = '%d', level = '%d', money = '%d',JobMoney = '%d',Job = '%d', Konto = '%d', kills = '%d', deaths = '%d', gesamtrp = '%d', pRP = '%d', paytime = '%d' WHERE id = '%d'",
    PlayerInfo[playerid][pWanted],PlayerInfo[playerid][TBanned],PlayerInfo[playerid][pJobk],PlayerInfo[playerid][pLeader],PlayerInfo[playerid][spawnchange],PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pJobMoney],PlayerInfo[playerid][pJob],PlayerInfo[playerid][pKonto], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths],PlayerInfo[playerid][pRPg],PlayerInfo[playerid][pRespektpunkte],PlayerInfo[playerid][pPaytime], PlayerInfo[playerid][p_id]);
    SaveUserStats2(playerid);
    mysql_pquery(handle, query);
    return 1;
    }


    stock SaveUserStats2(playerid)
    {
    //Wenn der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht
    if(!PlayerInfo[playerid][pLoggedIn]) return 1;
    //Ansonsten speichere sie
    new query[256];
    mysql_format(handle, query, sizeof(query), "UPDATE users SET ban = '%i' banner = '%s' WHERE id = '%d'",
    PlayerInfo[playerid][pBanned],PlayerInfo[playerid][pBanner],PlayerInfo[playerid][p_id]);
    mysql_pquery(handle, query);
    return 1;
    }


    Edit


    Es ist in SaveUserStats2