SetTimerEx Funktion wird nicht aufgerufen

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
  • hi, also unter OnPlayerConnect hab ich das:


    SetTimerEx("autokickplayer", 30000, 0, "is", playerid, "Login fehlgeschlagen");


    also der spieler soll mit dieser funktion nach 30 sek gekickt werden, wenn er nicht eingeloggt ist.
    die funktion hat als parameter die spielerid und den grund für den kick.
    Problem: die funktion wird einfach nicht aufgerufen.


    achja, an der funktion selbst liegts nicht, an anderen stellen im script funktioniert sie einwandfrei

    Keine Scripting-Fragen per PM!

  • ich glaub zwar kaum, dass es was damit zu tun hat, aber naja hier :)


    public autokickplayer(pID, grund[])
    {
    KillTimer(logintimer[pID]);
    new string[100];
    new File:ban=fopen(BanLog, io_append);
    getdate(Jahr, Monat, Tag);
    gettime(Stunde, Minute, Sekunde);
    format(string, sizeof(string2), "[%d/%d/%d][%d:%d:%d] [Kick] Name: %s, IP: %s, Admin: Server, Grund: %s\r\n", Tag, Monat, Jahr, Stunde, Minute, Sekunde, gPlayerInfo[pID][PLAYER_NAME], gPlayerInfo[pID][PLAYER_IP], grund[0] ? grund : "<kein Grund>");
    fwrite(ban, string);
    fclose(ban);
    format(string, sizeof(string), "\"%s\" wurde vom Server gekickt. (Grund: %s)", gPlayerInfo[pID][PLAYER_NAME], grund[0] ? grund : "-");
    SendClientMessageToAll(COLOR_YELLOW, string);
    Kick(pID);
    return 1;
    }

    Keine Scripting-Fragen per PM!

  • Schonmal statt


    SetTimerEx("autokickplayer", 30000, 0, "us", playerid, "Login fehlgeschlagen"); // statt i ein u


    Da verwechselst du wohl etwas.u gibt es nur bei sscanf() ;-).


    Wenn du das wirklich so im Script hast,müsste der Fehler irgendwo Anderes liegen,nur nicht bei SetTimerEx() ;).
    Ich seh jetzt auch nicht wirklich einen Fehler ( :pinch: ),versuch es trotzdem mal mit Debug Notes.
    print("SetTimerEx()");
    SetTimerEx("autokickplayer", 30000, 0, "is", playerid, "Login fehlgeschlagen");


    public autokickplayer(pID, grund[])
    {
    print("-- Debug #1");
    KillTimer(logintimer[pID]);
    print("-- Debug #2");
    new string[100];
    print("-- Debug #3");
    new File:ban=fopen(BanLog, io_append);
    print("-- Debug #4");
    getdate(Jahr, Monat, Tag);
    print("-- Debug #5");
    gettime(Stunde, Minute, Sekunde);
    print("-- Debug #6");
    format(string, sizeof(string2), "[%d/%d/%d][%d:%d:%d] [Kick] Name: %s, IP: %s, Admin: Server, Grund: %s\r\n", Tag, Monat, Jahr, Stunde, Minute, Sekunde, gPlayerInfo[pID][PLAYER_NAME], gPlayerInfo[pID][PLAYER_IP], grund[0] ? grund : "<kein Grund>");
    print("-- Debug #7");
    fwrite(ban, string);
    print("-- Debug #8");
    fclose(ban);
    print("-- Debug #9");
    format(string, sizeof(string), "\"%s\" wurde vom Server gekickt. (Grund: %s)", gPlayerInfo[pID][PLAYER_NAME], grund[0] ? grund : "-");
    print("-- Debug #10");
    SendClientMessageToAll(COLOR_YELLOW, string);
    print("-- Debug #11");
    Kick(pID);
    print("-- Debug #12");
    return 1;
    }

  • so, also danke erstmal, duch das mit dem debug hab ich jetzt rausgefunden, dass die funktion nicht vollständig ausgeführt wird.
    die ursache dafür ist das hier:


    grund[0] ? grund : "<kein Grund>"


    ich hab das jetzt einfach durch


    grund


    ersetzt, und die funktion wird tatsächlich vollständig ausgeführt.
    allerdings wird als grund jetzt komischerweise die IP des spielers angezeigt. (???)
    das deutet doch darauf hin, dass bei SetTimerEx der stringparameter ("Login fehlgeschlagen") nicht übergeben wird und der parameter "grund[]" jetzt die IP des Spielers enthält.
    woran kann das liegen und wie kann man das beheben?

    Keine Scripting-Fragen per PM!