Als Tipp, wo man Timer einsparen könnte:
Beispielsweise beim /ad Befehl.
Nun könnte man auf die Idee kommen, einen Timer einzusetzen, der abzählt, wann er wieder eine Werbung schalten darf. Da hätten wir aber wieder einen Timer.
Sollte man sich also nach einer anderen Lösung umschauen: Timestamps.
Bei allen Aktionen, die auf eine Aktion des Nutzers hin prüfen, ob er zeitlich wieder dazu in der Lage ist, würde ich Timer komplett weglassen und Timestamps verwenden.
Beispiel:
Im Befehl /ad =>
if(GetPVarInt(playerid, "advertise") > time()){
SendClientMessage(playerid, farbe, "Du darfst diesen Befehl nicht verwenden.");
}else{
//Werbung senden
SetPVarInt(playerid, "advertise", time + 60000);
}
Timestamps sind die Sekunden seit dem 01.01.1970.
Somit kannst du einen Zeitpunkt setzen, an dem der Spieler wieder eine Werbung schalten darf und dann beim erneuten Eingeben des Befehls überprüfen, ob der gespeicherter Timestamp des Ablaufs größer, als der aktuelle ist, denn dann wäre der Ablauf noch in der Zukunft.
Ansonsten ist er in der Vergangenheit, was bedeutet, dass die Werbung gesendet und der Timestamp erneut gesendet werden kann.
Dabei wird nur eine Aktion ausgeführt, welche nur beim Eingeben des Befehls ausgeführt wird.
Bei einem Timer wird dann eine bestimmte Zeit lang in einem bestimmten Intervall eine Aktion ausgeführt, obwohl das vielleicht gar nicht vonnöten ist.
Nur mal so, als kleiner Exkurs, weshalb man oft auf Timer verzichten und anstelle dessen Timestamps verwenden sollte.