MAX_PLAYERS bei for() automatisch auf höchste playerid setzen

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,


    mit diesem Script wird bei for() automatisch MAX_PLAYERS auf die höchste playerid gesetzt.


    dafür müsst ihr nur folgende sachen in euer script einfügen:


    möglichst direkt nach den includes:
    new MAX_PLAYER=MAX_PLAYERS;
    #define for(%1MAX_PLAYERS%2) for(%1MAX_PLAYER%2)


    beim connecten:
    if(playerid>MAX_PLAYER) MAX_PLAYER=playerid;


    beim disconnecten:
    if(playerid==MAX_PLAYER)
    for(new i=0;i<playerid;i++)
    if(IsPlayerConnected(i))
    MAX_PLAYER=i;


    MfG Metin


    edit: überschrift gewechselt
    edit: verbessert

    Gmäeß eneir Sutide eneir elgnihcesn Uvinisterät, ist es nchit witihcg
    in wlecehr Rneflogheie die Bstachuebn in eneim Wrot snid, das ezniige
    was wcthiig ist, ist daß der estre und der leztte Bstabchue an der
    ritihcegn Pstoiion snid. Der Rset knan ein ttoaelr Bsinöldn sien,
    tedztorm knan man ihn onhe Pemoblre lseen. Das ist so, wiel wir nciht
    jeedn Bstachuebn enzelin leesn, snderon das Wrot als gseatems.

    Einmal editiert, zuletzt von [F4L]Metin ()

  • das kannst du oben dann in meinem Script machen also:


    new MAX_PLAYER=MAX_PLAYERS;
    stock setMaxPlayer(){
    for(new i=0;i<GetMaxPlayers();i++)
    if(IsPlayerConnected(i))
    MAX_PLAYER=i;
    return true;
    }
    #define for(%1MAX_PLAYERS%2) for(%1MAX_PLAYER%2)




    dann ist MAX_PLAYER wenn es 5leute sind nicht umsonst 50(falls maxplayer in cfg 50 halt) sondern nur soviel wie die höchste id ist. das geht dann au schneller weil das for() viel weniger aufgerufen wird.

    Gmäeß eneir Sutide eneir elgnihcesn Uvinisterät, ist es nchit witihcg
    in wlecehr Rneflogheie die Bstachuebn in eneim Wrot snid, das ezniige
    was wcthiig ist, ist daß der estre und der leztte Bstabchue an der
    ritihcegn Pstoiion snid. Der Rset knan ein ttoaelr Bsinöldn sien,
    tedztorm knan man ihn onhe Pemoblre lseen. Das ist so, wiel wir nciht
    jeedn Bstachuebn enzelin leesn, snderon das Wrot als gseatems.

  • Was er da vor hat ist schon sinnvoll, nur nicht ganz ausgereift :P.


    Die Schleife wie du sie benutzt brauch man nicht mal.Das kann man anders machen.Hier mal n' kurze Skizze wie Ich das gemacht hätte.
    new
    g_Highest = 0;
    stock Connect_SetHighestID(playerid) {
    // Hat der neue Spieler eine höhere ID als die zZt noch höchste ?
    if( playerid > g_Highest ) g_Highest = playerid;
    return g_Highest;
    }
    stock Disconnect_SetHighestID(playerid) {
    if( playerid == g_Highest ) {
    // Nur wenn der Spieler die höchste ID hatte neue suchen
    for(new i = ( g_Highest - 1) ; i >= 0 ; i--) {
    if( IsPlayerConnected(i) ) {
    g_Highest = i;
    break;
    }
    }
    }
    return g_Highest;
    }


    Das von The Boondock Saints reicht aber auch völlig aus :-O

  • hast recht GoldKiller.


    ich änder es oben mal

    Gmäeß eneir Sutide eneir elgnihcesn Uvinisterät, ist es nchit witihcg
    in wlecehr Rneflogheie die Bstachuebn in eneim Wrot snid, das ezniige
    was wcthiig ist, ist daß der estre und der leztte Bstabchue an der
    ritihcegn Pstoiion snid. Der Rset knan ein ttoaelr Bsinöldn sien,
    tedztorm knan man ihn onhe Pemoblre lseen. Das ist so, wiel wir nciht
    jeedn Bstachuebn enzelin leesn, snderon das Wrot als gseatems.