Meister werden gefragt - Ban wird beim Connect nicht überprüft

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 zusammen


    Ich habe ein Problem
    Wenn ich ein User banne, dann steht er auch als gebannt etc in der Datenbank
    jetzt hab ich das Problem, das er den Ban beim Connect nicht überprüft.
    Ich habe es folgendermaßen gemacht:
    stock LoadBan(playerid)
    {
    new query[128],Data[512];
    format(query, 128,"SELECT `Gebannt`,`Banner`,`BanGrund` FROM `player` WHERE `Name` = '%s'",PlayerName(playerid));
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row(Data))
    {
    sscanf(Data, "p<|>ds[128]s[128]",PI[playerid][pGebannt],PI[playerid][pBanner],PI[playerid][pBanGrund]);
    }
    if(PI[playerid][pGebannt]==1)
    {
    SendClientMessage(playerid,cRed,"Du bist auf den Server Gebannt!");
    SendClientMessage(playerid,cRed,"banart: {FF8000}Permanent");
    format(query, 128,"Der Ausführende Administrator: {FF8000}%s",PI[playerid][pBanner]);
    SendClientMessage(playerid,cRed,query);
    format(query, 128,"Aus den Grund: {FF8000}%s",PI[playerid][pBanGrund]);
    SendClientMessage(playerid,cRed,query);
    SendClientMessage(playerid,cRed,"Solltest du einwände haben, dann melde dich im TS");
    Kick(playerid);
    }
    mysql_free_result();
    return 1;
    }
    es kommt nix keine Message nix nicht einmal der Kick wird ausgeführt.
    Hat einer eine idee wiso das ist?
    währe euch dankbar

    All in all it's just another brick in the wall

    Einmal editiert, zuletzt von Beavis () aus folgendem Grund: Text+Ü-Schrift

  • Wieso versuchst du es nicht mit debuggen ? Du bist immerhin schon lang genug im Forum unterwegs um zu wissen wie man das anwendet.


    while(mysql_fetch_row(Data))
    {
    sscanf(Data, "p<|>ds[128]s[128]",PI[playerid][pGebannt],PI[playerid][pBanner],PI[playerid][pBanGrund]);
    }

    Weisst du ob die while-Schleife jemals durchgeführt wird. Was steckt denn danach in pGebannt für ein Wert ? So schwer ist das doch nicht 0o.


    Zitat

    Les mal den Text durch
    da steht ja es kommt keine Message also was bedeutet es?


    Genau was er geschrieben hat. Man erkennt doch gar nicht den Unterschied zwischen "die Funktion wurde aufgerufen" und "die Funktion wurde nicht aufgerufen". Nur weil die Nachricht nicht kommt ... .

  • Ja und weiter ? Du stellst dich sehr ungeschickt an. Mach doch einen vollständigen Test.


    stock LoadBan(playerid)
    {
    printf("LoadBan(%d) #1",playerid);
    new query[128],Data[512];
    format(query, 128,"SELECT `Gebannt`,`Banner`,`BanGrund` FROM `player` WHERE `Name` = '%s'",PlayerName(playerid));
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row(Data))
    {
    sscanf(Data, "p<|>ds[128]s[128]",PI[playerid][pGebannt],PI[playerid][pBanner],PI[playerid][pBanGrund]);
    }
    printf("LoadBan(%d) #2 %d %s %s",PI[playerid][pGebannt],PI[playerid][pBanner],PI[playerid][pBanGrund]);
    if(PI[playerid][pGebannt]==1)
    {
    printf("LoadBan(%d) #3",playerid);
    SendClientMessage(playerid,cRed,"Du bist auf den Server Gebannt!");
    SendClientMessage(playerid,cRed,"banart: {FF8000}Permanent");
    printf("LoadBan(%d) #4",playerid);
    format(query, 128,"Der Ausführende Administrator: {FF8000}%s",PI[playerid][pBanner]);
    printf("LoadBan(%d) #5",playerid);
    SendClientMessage(playerid,cRed,query);
    printf("LoadBan(%d) #6",playerid);
    format(query, 128,"Aus den Grund: {FF8000}%s",PI[playerid][pBanGrund]);
    printf("LoadBan(%d) #7",playerid);
    SendClientMessage(playerid,cRed,query);
    SendClientMessage(playerid,cRed,"Solltest du einwände haben, dann melde dich im TS");
    printf("LoadBan(%d) #8",playerid);
    Kick(playerid);
    printf("LoadBan(%d) #9",playerid);
    }
    printf("LoadBan(%d) #10",playerid);
    mysql_free_result();
    return 1;
    }

  • lol jetzt sagt er als Gebannt ne 82 8|
    und hier der rest


    [00:18:43] Incoming connection: 127.0.0.1:4063
    [00:18:43] [npc:join] klaus_dieter has joined the server (0:127.0.0.1)
    [00:19:06] Incoming connection: 127.0.0.1:4065
    [00:19:06] [join] udo_schnarre has joined the server (1:127.0.0.1)
    [00:19:06] LoadBan(1) #1
    [00:19:06] LoadBan(1) #2 82 Testuser der Antarktis :)
    [00:19:06] LoadBan(1) #3
    [00:19:06] LoadBan(1) #4
    [00:19:06] LoadBan(1) #5
    [00:19:06] LoadBan(1) #6
    [00:19:06] LoadBan(1) #7
    [00:19:06] LoadBan(1) #8
    [00:19:06] [part] udo_schnarre has left the server (1:2)
    [00:19:06] LoadBan(1) #9
    [00:19:06] LoadBan(1) #10
    [00:19:46] --- Server Shutting Down.
    [00:19:46] [npc:part] klaus_dieter has left the server (0:0)

    All in all it's just another brick in the wall

  • Dann siehst ja wo der Fehler liegt. PI[playerid][pGebannt] ist nicht das,was du erwartest.


    while(mysql_fetch_row(Data))
    {
    printf("LoadBan(%d) - Data -> '%s'",playerid,Data);
    sscanf(Data, "p<|>ds[128]s[128]",PI[playerid][pGebannt],PI[playerid][pBanner],PI[playerid][pBanGrund]);
    }
    printf("LoadBan(%d) #2 %d %s %s",PI[playerid][pGebannt],PI[playerid][pBanner],PI[playerid][pBanGrund]);


    Kannst ja mal testweise probieren eine Variable dazwischen zu schieben , zwischen dem auslesen von gebannt ( d ) und der Variable PI[playerid][pGebannt].


    d -> temp_gebannt
    temp_gebannt -> PI[playerid][pGebannt]


    Eventuell noch pGebannt mal zeigen.


    Hups,die Zeile war falsch:
    printf("LoadBan(%d) #2 %d %s %s",playerid,PI[playerid][pGebannt],PI[playerid][pBanner],PI[playerid][pBanGrund]); // playerid fehlte :-O

    Wie auch immer,es wird ja in die if() - Bedingung gegangen.
    Was du da hast ist ein SA:MP Fehler. Wird der Spieler gekickt,werden ( warum auch immer ) die SendClientMessages nicht mehr gesendet. Obwohl sie vor dem Kick() gesendet werden.


    //Edit:
    Hier:
    http://forum.sa-mp.com/showthread.php?t=323853

  • Goldkiller


    hier der log
    [00:30:09] ===================================
    [00:30:09] running GTA - Die 80er ......
    [00:30:09] Scriptversion: 0.4 Alpha
    [00:30:10] Es wurden 0 Baeume geladen
    [00:30:10] GTA - Die 80er is running!
    [00:30:10] ===================================
    [00:30:10] Number of vehicle models: 13
    [00:30:10] Incoming connection: 127.0.0.1:4387
    [00:30:10] [npc:join] klaus_dieter has joined the server (0:127.0.0.1)
    [00:30:31] Incoming connection: 127.0.0.1:4388
    [00:30:32] [join] udo_schnarre has joined the server (1:127.0.0.1)
    [00:30:32] LoadBan(1) #1
    [00:30:32] LoadBan(1) - Data -> '1|RedJoker|Testuser der Antarktis :)'
    [00:30:32] LoadBan(1) #2 1 RedJoker Testuser der Antarktis :)
    [00:30:32] LoadBan(1) #3
    [00:30:32] LoadBan(1) #4
    [00:30:32] LoadBan(1) #5
    [00:30:32] LoadBan(1) #6
    [00:30:32] LoadBan(1) #7
    [00:30:32] LoadBan(1) #8
    [00:30:32] [part] udo_schnarre has left the server (1:2)
    [00:30:32] LoadBan(1) #9
    [00:30:32] LoadBan(1) #10
    [00:30:42] --- Server Shutting Down.
    [00:30:42] [npc:part] klaus_dieter has left the server (0:0)
    [00:30:42]


    //Edit

    hilft leider auch nix hab ja ne eigene Funktion und da kommt das selbe bei raus

    All in all it's just another brick in the wall

    Einmal editiert, zuletzt von Beavis ()

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