[SUCHE] High-Ping System

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Vorwort


    Hallo, liebe Brotfische :O.
    Also ich suche ein High-Ping System.
    Was ist ein "High-Ping System ?" Es ist ein System, dass Leute kickt wenn sie einen zu hohen Ping haben.


    Infos


    Also es soll wie ihr wisst ein High-Ping System sein^^
    Es sollte so ablaufen, wenn ein Spieler 5 Sekundenlang einen Ping über "300" hat, sollte er vom System gekickt werden.


    Ich hoffe ihr könnt mir helfen,
    Dennis

  • Bei OnGameModeInit nen Timer setzen der alle 5 Sek nen public abfragt, natürlich wiederholen. ( letzte Zahl auf 1 )


    Den Public ca so machen


    [pwn]
    public HighPing(playerid)
    {
    if(GetPlayerPing(playerid) > 300)
    {
    new name[MAX_PLAYERS], string[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(string,sizeof(string),"<< %s wurde vom HighPing System gekickt. ( > 300 ) >>", name);
    SendClientMessageToAll(COLOR_RED,string);
    return 1;
    }
    }
    [pwn]


    Ich kann nicht sagen obs geht - bin am iPod.

  • forward Ping2(playerid);


    new MAXPING = 200;//Hier kannst du einstellen wann er gekickt werden soll


    new Ping1[MAX_PLAYERS];


    public OnPlayerUpdate(playerid)
    {


    new string[128];
    new pName[16];
    GetPlayerName(playerid, pName, sizeof(pName));
    if(GetPlayerPing(playerid) >= MAXPING && Ping1[playerid] == 1)
    {
    format(string, sizeof(string), "* %s wurde gekickt wegen einem zu hohen Ping ! (Max Ping %d)", pName, MAXPING);
    SendClientMessageToAll(COLOR_RED, string);
    SendClientMessage(playerid, COLOR_RED, "* Du wurdest gekickt wegen einem zu hohen Ping !");
    Kick(playerid);
    }
    return 1;
    }


    public Ping2(playerid)
    {
    Ping1[playerid] = 1;
    return 1;
    }

  • Geht leider nicht.
    Ich bekomme zwar keine Errors, jedoch wird der Spieler nicht gekickt.


    Habe mal gemacht dass die Spieler über 10'er Ping gekickt werden solln also MAXPING 10,
    um es zu testen. Jedoch wurde ich nicht Gekickt, woran liegt dass ?
    ---------------------------------------------------------------------------------------------------------------------------
    Mfg.
    Dennis

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Es geht viel einfacher mit GetTickCount().
    Beim Warning die Zeit in eine Variable.
    Falls er schon eine Warnung hatte, einfach die Zeit vom letzten Zeitpunkt ausrechnen -> GetTickCount() - tick_variable -> und falls es höher als x ist, dann nächste warnung rein. Falls er dann 3 hat, kicken.

  • Es geht viel einfacher mit GetTickCount().
    Beim Warning die Zeit in eine Variable.
    Falls er schon eine Warnung hatte, einfach die Zeit vom letzten Zeitpunkt ausrechnen -> GetTickCount() - tick_variable -> und falls es höher als x ist, dann nächste warnung rein. Falls er dann 3 hat, kicken.


    Das erklärst du einem Anfänger??



    B2T:


    Such hier im Codeschnipselbereich, da gibts sowas.