Naja, dafür eine Include zu schreiben, erachte ich als doch wenig sinnvoll, vor allem weil es eigentlich einen passenden Thread für etwas in dieser Größe gibt: https://breadfish.de/index.php…%BCtzliche-codeschnipsel/
Wenn jetzt jeder anfangen würde, eine einzige Funktion als Include zu basteln, dann herrscht das reine Chaos. Zudem eine einzelne Funktion ohne große Logik dahinter als Standalone-Include sinnlos ist.
Davon abgesehen ist das ja bei weitem nichts neues, nur weil es jetzt in einer Include steht, macht es das nicht besser.
Für solche Schnipsel macht man sich eine Sammel-Include und gut ist. Das ganze Gehooke (nur damit es überaus kompliziert aussieht mit den ganzen Sonderzeichen) kann man sich auch sparen.
Außerdem noch zwei Punkte zum Code:
1. Das Array drunk sollte nicht global sondern nur local static deklariert werden, es wird ja nur dort genutzt.
2. Im Loop sollte noch abgefragt werden, ob der Spieler auch online ist, sonst führst du den Code auch für Spieler durch, die nicht online sind, das ist kein gutes Doing.
Ich empfehle Folgendes:
OnGameModeInit:
SetTimer("FPS", 251, true);
Und das hier in eine Sammel-Include (oder die Deklaration unter die normalen Include und den public ganz unten in den Gamemode).
#define GetPlayerFPS(%0) public_fps{%0}
new public_fps[MAX_PLAYERS char];
forward FPS();
public FPS()
{
static olddrunk[MAX_PLAYERS], d, fps;
for(new i = GetPlayerPoolSize(); i > -1; i--)
{
if(!IsPlayerConnected(i)) continue;
d = GetPlayerDrunkLevel(i);
if(d < 100) SetPlayerDrunkLevel(i,2000);
fps = olddrunk[i] - d;
if(fps > 0) public_fps{i} = fps;
olddrunk[i] = d;
}
return 1;
}
Mehr ist es nicht. Da braucht es keine Include.
PS: OnPlayerUpdate wird nicht über 1000x pro Sekunde aufgerufen, im Gegenteil, sehr weit darunter (in der Regel zwischen 30 und 50 mal).