Auselese Hilfe

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
  • Guten Tag liebe Mitglieder ich habe ein sehr sehr kleines Problem.
    Ich würde gerne auslesen warum der User gebannt wurde und komme mit i% und s% nicht weit.


    Gibt es was anderes zum auslessen von Texten ?


    Code
    format(string,sizeof(string),"Da du dich nicht an unser Regelwerk halten konntest, wurde dein Account gebannt !\nSolltest du der Meinung sein das es sich hierbei um eine Verwechslung handelt, schreibe einen Entbann Antrag im Forum.\nLiebe Grüße das Server Team\n\n\t\t Grund: %i",PlayerInfo[playerid][pBannedGrund]);
  • In deinem Enum musst du pBannedGrund mit einer Länge definieren: pBannedGrund[64]


    Beim auslesen machst du das mit %s , weil es Buchstaben und Zahlen ausliest.


    %i liest nur Integers (Zahlen) aus.

  • Danke erstmal für deine Antwort. Die länge habe ich nun definiert. Allerdings zeigt er mir immernoch nichts als Grund an. Siehe Foto.



    Hier mal der ganze Code für die Abfrage ob der Spieler gebannt ist.



    if(PlayerInfo[playerid][pBanned]==1)
    {
    SetPlayerPos(playerid,1552.2690,-1675.3098,16.1953);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    new string[1300],string1[1300],name1[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name1,sizeof(name1));
    format(string,sizeof(string),"Da du dich nicht an unser Regelwerk halten konntest, wurde dein Account gebannt !\nSolltest du der Meinung sein das es sich hierbei um eine Verwechslung handelt, schreibe einen Entbann Antrag im Forum.\nLiebe Grüße das Server Team\n\n\t\t Grund: %s",PlayerInfo[playerid][pBannedGrund]);
    strcat(string1,string);
    ShowPlayerDialog(playerid, DIALOG_BAN, DIALOG_STYLE_MSGBOX,PlayerInfo[playerid][pName],string1,"Ok","");
    SendClientMessage(playerid,-1,"Banned");
    SetTimerEx("DelayedKick", 1, false, "i", playerid);
    return 1;
    }
    return 1;
    }

  • Zeig mir mal bitte pBannedGrund in deiner MySQL Tabelle, als was hast du das deklariert?


    Ah gefunden xD. Wo du es sagst, ich rufe es garnicht ab beim PlayerLaden xD.


    // Edit


    Oder auch nicht.


    mit folgender Funktion lade ich den user deren BannedGrund


    Code
    PlayerInfo[playerid][pBannedGrund]    = cache_get_field_content_int(0, "BanGrund", handle);


    Die MySQL Log gibt dabei einen Fehler aus.


    Code
    [12:23:36] [ERROR] cache_get_field_content_int - invalid datatype

    frage ist was das fürn ungültiger Datentyp ist. Denn bei den anderen Funktioniert es super

  • Okay soweit sehe ich die Fehler die du gemacht hattest.


    Also als Typ würde ich in phpMyAdmin varchar nehmen.


    Code
    new tmp_name[MAX_PLAYER_NAME];
    cache_get_field_content(i,"Name",tmp_name,Handle);
    strmid(dhInfo[id][dName],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));


    Hier ein Codeschnipsel aus meinem Script, dort lasse ich ebenfalls eine varchar laden.
    Spricht das sollte eventuell so aussehen.


    Code
    new tmp_grund[128];
    cache_get_field_content(i,"BanGrund",tmp_grund,Handle);
    strmid(PlayerInfo[playerid][pBannedGrund],tmp_grund,0,sizeof(tmp_grund),sizeof(tmp_grund));

    Und nicht so:

    Code
    PlayerInfo[playerid][pBannedGrund]    = cache_get_field_content_int(0, "BanGrund", handle);


    Du holst dir hierdie INT aus BanGrund raus, da aber BanGrund ja wahrscheinlich Buchstaben enthält funktioniert das alles nicht so optimal.
    Das besagt auch dein Error: [12:23:36] [ERROR] cache_get_field_content_int - invalid datatype

    - heftig abhängig von Karli Kugelblitz Choco Drinks

    Einmal editiert, zuletzt von Pride ()

  • Eine Frage habe ich noch zu etwas anderem. Nun geht es um ein Timeban System. Leider speichert er nicht in die Datenbank.


    Hiermit wollte ich gerne den Wert in die Datenbank speichern



    new query[256];
    mysql_format(handle, query, sizeof(query), "UPDATE users SET tbantime = '%s' WHERE id = '%d'",dauer,PlayerInfo[playerid]);
    mysql_pquery(handle, query);


    Gesamt Code:



    stock TBan(playerid,const string[],dauer,bannerid)
    {
    new timestamp;
    timestamp = gettime();
    new sekunden = dauer * 60;
    timestamp += sekunden;
    new str[128];
    new name[MAX_PLAYER_NAME],bannername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerName(bannerid,bannername,sizeof(bannername));
    format(str,sizeof(str),"[SERVER] %s wurde von %s für %d Minuten gebannt. Grund: %s",name,bannername,dauer,string);
    new query[256];
    mysql_format(handle, query, sizeof(query), "UPDATE users SET tbantime = '%s' WHERE id = '%d'",dauer,PlayerInfo[playerid]);
    mysql_pquery(handle, query);
    SendClientMessageToAll(COLOR_RED,str);
    SendClientMessage(p_id,COLOR_RED,"Du wurdest gebannt & gekickt");
    SetTimerEx("DelayedKick", 100, false, "i", p_id);



    return 1;
    }

  • Okay verstehe..


    Er speichert es nicht weil du angibst es sei eine Zeichenkette (%s) jedoch ist es ja eine Zahl (%i) deswegen versteht das MySQL einfach nicht.


    Inkorrekt:

    Code
    mysql_format(handle, query, sizeof(query), "UPDATE users SET tbantime = '%s' WHERE id = '%d'",dauer,PlayerInfo[playerid]);


    Richtig:


    Code
    mysql_format(handle, query, sizeof(query), "UPDATE users SET tbantime = '%i' WHERE id = '%d'",dauer,PlayerInfo[playerid]);

    Kannst du mir mal ein Screenshot vom tbantime in deiner MySQL Tabelle schicken?

    - heftig abhängig von Karli Kugelblitz Choco Drinks

  • Nein das ist es leider nicht. Hatte das zuerst probiert und dann mal mit %s. So habe ich das dann wohl hier mit rein kopiert.


    Hier einmal ein Screen des tables

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Beitrag von Pride ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Falsch ().
  • In der Datenbank steht also dann bei tbantime 0?
    Kannst du uns ansonsten einfach mal die Zeile in der Tabelle "users" zeigen? Daten wie Passwort kannst du zensieren, sofern es nicht gehasht ist. ;)

  • Bei tbantime steht doch jetzt eine 30 drin. ;) Was möchtest du denn dadrin stehen haben? Die Minuten, wie lange der Spieler gebannt ist, oder den timestamp? ;)

  • Bei tbantime steht doch jetzt eine 30 drin. ;) Was möchtest du denn dadrin stehen haben? Die Minuten, wie lange der Spieler gebannt ist, oder den timestamp? ;)

    Die Minuten. Wiegesagt hatte ich eben zum Test Folgendes drin


    PlayerInfo[playerid][pTBanned]=30; dieser setzte die 30 ein egal was man als Grund angegeben hat weil es ja keinen anderen speicherbefehl richtig gab. Daher Ignoriere die 30 und stelle dir eine null darin vor

  • Lässt du tbantime bei deiner Speicherfunktion (OnPlayerDisconnect) ebenfalls speichern? Falls ja, dann entferne das dort mal, klappt es dann?

  • Ich scheine manchmal echt Blöd zusein. Ist ja klar das er bei Joinen die 30 lädt und behält. Sobald ich banne meine Funktion in die DB geschrieben wird, dann aber das vom Connecten wieder gespeichert wird. Daher danke für den Tipp da nochmal rein zu schauen.


    Jetzt geht das ganze :D

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen