Nachrichten werden nicht gesendet

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.


    Auch ich brauche wiedermal einen Rat...


    Gleich mal der Code:
    printf("time 02");
    new year,month,day,hour,minute,second;
    //TimestampToDate(strval(time, year, month, day, hour, minute, second, 0, 0);
    SendClientMessage(playerid,COLOR_ROT,"Sie wurden von diesen Server gebannt!");
    format(string,sizeof(string),"Art: Zeitlich begrenzter Ban (bis %02i.%02i.%04i %02i:%02i)",day,month,year,hour,minute);
    SendClientMessage(playerid,COLOR_ROT,string);
    format(string,sizeof(string),"Admin: %s",MySQLGetData("banlist","Banner","BanSerial",serial));
    SendClientMessage(playerid,COLOR_ROT,string);
    format(string,sizeof(string),"Grund: %s",MySQLGetData("banlist","BanReason","BanSerial",serial));
    SendClientMessage(playerid,COLOR_ROT,string);
    printf("time 03");
    Kick(playerid);
    printf("time 04");
    Es wird alles soweit ausgeführt und "time 04" ausgegeben.
    Aber Ingame erscheint kein Text nichts und Ingame kommt nach gefühlten 10 Sekunden "The Server is restarting".
    Obwohl er weiter läuft..


    Das ganze befindet sich unter OnPlayerConnect...


    MySQL kann alles auslesen usw..


    Hoffe ihr könnt mir diesmal helfen was nicht so oft der Fall war :P


    EDIT//
    Habe eine zweite Abfrage drinnen nur mit dem Perma Ban..
    Sind andere MySQL Abfragen usw. aber es funktioniert wieder nicht.
    Kann man eigentlich schon ab OnPlayerConnect Nachrichten etc. schreiben und einen Spieler kicken?

  • Eben nicht.
    Zuerst dauert es eine Zeit und dann kommt einfach..
    The Server is restarting..


    Was scripte ich eig. immer für komplizierte Sachen :D


    Ja aber ich sehe an den prints genau wie weit er es macht..
    Und er macht die ganzen Commands durch..
    Der Server crasht ja nicht irgendwie der Spieler..
    Ich probier mal jede Zeile durch..

  • Ich würd mal schauen:


    • Liegt der Fehler unter OnPlayerConnect - Wenn nein...have fun. Wenn Ja, kommentier alles aus und kommentier Zeile für Zeile wieder ein.
    • Produzieren die Speicher/Ladefunktionen einen Fehler, sprich werden die Daten richtig geladen/gespeichert
    • Irgendwelche sachen in der Serverlog/Servercfg ?
    • Alternativ evt mal crasgdetect einsetzten

    Gruss

  • wieso schreibst du printf("time 04", //Wo ist hier die Float angabe?);
    print(""); und printf("%d;%s etc.",float);

  • Zitat

    Er braucht doch da keine Float angabe?


    Das ist nur zum debuggen, zum schauen ob das Script soweit läuft^^

    Deshalb wundert es mich ja, Ich mache das selber auch aber dann print und nicht printf vllt. liegts ja daran ;)

  • Deshalb wundert es mich ja, Ich mache das selber auch aber dann print und nicht printf vllt. liegts ja daran ;)


    Bitte, lern mal die Basics. Der Unterschied zwischen print und printf liegt darin, dass printf Argumente handlen kann (sogenannte arguments). Du kannst das genauer hier nachlesen:
    http://wiki.sa-mp.com/wiki/Print -> Normale Ausgabe ohne Argumente (Alternativ kannste vorher format benützten, damit printf nicht die Formatierung übernehmen muss)
    http://wiki.sa-mp.com/wiki/Printf -> Normale und/oder Ausgabe mit Parametern -> Fomatierbare Ausgabe

  • So..


    habe mal zwei kleine Tests gemacht und zwar.


    Wenn ich den Text drinnen lasse muss er 3 mal neu connecten also 3 mal "Server is restarting" und wird danach gekickt.
    Dann habe ich nurnoch Kick(playerid); übergelassen und er brauchte nur 2 Anläufe..


    Komisch..
    Die Variablen waren bei beiden Verbindungsversuche komplett gleich..

  • Könntest Du dein Problem genauer beschreiben, momentan grenzt es an Rätselraten ;)


    • Was haste bisher getan ?
    • Was haste bisher auskommentiert ?
    • Was sind die Erkenntnisse ?


    Haste jetzt mal das komplette OnPlayerConnect auskommentiert und geschaut, ob Du einfach auf den Spawn Button klicken konntest ?


    Edit: Wenn der oben gezeigte Code komplett auskommentiert ist, funktioniert es ?

  • Jetzt mal der ganze Code:
    stock CheckPlayerBan(playerid)
    {
    SendClientMessage(playerid,COLOR_ROT,"Sie wurden von diesen Server gebannt!");
    new serial[50],string[125];
    printf("allg %i 01",playerid);
    gpci(playerid,serial,sizeof(serial));
    printf("allg %i 02",playerid);
    printf("Serial: %s",serial);
    new rightstate=MySQLCheckField("banlist","BanSerial",serial);
    printf("State: %i",rightstate);
    new time=strval(MySQLGetData("banlist","BanTime","BanSerial",serial));
    printf("Time: %i",time);
    new isip=strcmp(MySQLGetData("banlist","BanIP","BanSerial",serial),GetIPasRangeIP(playerid),true);
    printf("IsIP: %i",isip);
    if(rightstate==1 && time==0 && isip==0)
    {
    printf("perma");
    SendClientMessage(playerid,COLOR_ROT,"Sie wurden von diesen Server gebannt!");
    printf("perma 01");
    SendClientMessage(playerid,COLOR_ROT,"Art: Permanenter Spielausschluss");
    printf("perma 02");
    format(string,sizeof(string),"Admin: %s",MySQLGetData("banlist","Banner","BanSerial",serial));
    printf("perma 03");
    SendClientMessage(playerid,COLOR_ROT,string);
    printf("perma 04");
    format(string,sizeof(string),"Grund: %s",MySQLGetData("banlist","BanReason","BanSerial",serial));
    printf("perma 05");
    SendClientMessage(playerid,COLOR_ROT,string);
    printf("perma 06");
    Kick(playerid);
    return 1;
    }
    if(rightstate==1 && time!=0 && isip==0)
    {
    printf("time 01");
    if(gettime()<time)
    {
    printf("time 02");
    new year,month,day,hour,minute,second;
    TimestampToDate(time, year, month, day, hour, minute, second, 0, 0);
    SendClientMessage(playerid,COLOR_ROT,"Sie wurden von diesen Server gebannt!");
    format(string,sizeof(string),"Art: Zeitlich begrenzter Ban (bis %02i.%02i.%04i %02i:%02i)",day,month,year,hour,minute);
    SendClientMessage(playerid,COLOR_ROT,string);
    format(string,sizeof(string),"Admin: %s",MySQLGetData("banlist","Banner","BanSerial",serial));
    SendClientMessage(playerid,COLOR_ROT,string);
    format(string,sizeof(string),"Grund: %s",MySQLGetData("banlist","BanReason","BanSerial",serial));
    SendClientMessage(playerid,COLOR_ROT,string);
    printf("time 03");
    Kick(playerid);
    printf("time 04");
    return 1;
    }
    else MySQLDestroyDataField("banlist","BanSerial",serial);
    }
    return 1;
    }


    Was habe ich probiert?
    Wenn es mit den Texten mache braucht er ~6 Anläufe danach kommen alle Texte und man wird gekickt.
    Ohne Texte braucht er ~3 Anläufe und wird gekickt..
    Wenn ich dieses stock bei OnPlayerConnect ausklammere funktioniert das Script wie immer...
    Daher kann es nur daran liegen..
    Die Datenbank und die Abfragen haben keine Fehler da ich bereits jede Variable printe..


    Warum braucht er mehrere Connect versuche um es richtig zu machen?
    Immerhin sind es ja nur paar Variablen,Abfragen und Befehle wie jedes andere System...


    Danke schonmal für eure Zeit.