Script optimieren (mehrere Timer in ein).

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 Liebe Mitglieder.
    Heute wollte ich gerne mein Script optimieren und habe sofort an mehrere Timer gedacht, die, die selbe Zeit ticken & alleine laufen.
    Nun habe ich mehrere Timer in ein gemacht, weiß aber nicht, ob ich das ganze richtig gemacht habe.
    Ich habe zum Beispiel CheckGas & StoppedVehicle beide in CheckGas reingemacht und so sieht das ganze aus:


    public CheckGas()
    {
    new string[256];
    new Float:x,Float:y,Float:z;
    new Float:distance,value;
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    new vehicle = GetPlayerVehicleID(i);
    if(Gas[vehicle] >= 1)
    {
    if(Gas[vehicle] <= 10)
    {
    PlayerPlaySound(i, 1085, 0.0, 0.0, 0.0);
    }
    if(gGas[i] == 1)
    {
    format(string, sizeof(string), "~r~~n~~n~~n~~n~~n~~n~~n~~n~~n~Fuel:~w~ %d%",Gas[vehicle]);
    GameTextForPlayer(i,string,15500,3);
    }
    if(IsAPlane(vehicle))
    {
    Gas[vehicle]++;
    }
    Gas[vehicle]--;
    }
    else
    {
    NoFuel[i] = 1;
    TogglePlayerControllable(i, 0);
    GameTextForPlayer(i,"~w~~n~~n~~n~~n~~n~~n~~n~~n~No fuel in Vehicle~n~Use /exit to leave the vehicle",1500,3);
    }
    if(IsPlayerInAnyVehicle(i))
    {
    new VID;
    VID = GetPlayerVehicleID(i);
    GetPlayerPos(i, x, y, z);
    distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
    value = floatround(distance * 3600);
    if(UpdateSeconds > 1)
    {
    value = floatround(value / UpdateSeconds);
    }
    if(SpeedMode)
    {
    }
    if(value == 0)
    {
    Gas[VID]++;
    }
    SavePlayerPos[i][LastX] = x;
    SavePlayerPos[i][LastY] = y;
    SavePlayerPos[i][LastZ] = z;
    }
    }
    }
    }
    return 1;
    }


    Und ResetAutohausSpawns, SaveAll & serverNews habe ich auch zu ein Timer gemacht und so sieht das ganze aus:


    public ResetAutohausSpawns()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && gPlayerLogged[i])
    {
    PlayerUpdate(i);
    }
    }
    new i;
    for(i = 0; i<sizeof(Kaufliste); i++) { SetVehicleToRespawn(Kaufliste[i][Carid]); }
    if(newswechsel == 1)
    {
    SendClientMessageToAll(COLOR_GREEN, "_________________________________________ RRL INFORMATION ____________________________________");
    SendClientMessageToAll(COLOR_WHITE," Bei Fragen oder Problemen kannst du dich per /sup [Frage] an die Supporter/Admins wenden.");
    SendClientMessageToAll(COLOR_WHITE," Das Team wird sich dann so schnell wie möglich um dein Anliegen kümmern und dieses so");
    SendClientMessageToAll(COLOR_WHITE," gut es geht zu beantworten. Cheater sollten sofort per /a an die Administratoren/Supportert");
    SendClientMessageToAll(COLOR_WHITE," gemeldet werden. Sollte kein Administrator Online sein, so kannst du dich im Teamspeak an");
    SendClientMessageToAll(COLOR_WHITE," einen Administrator wenden.");
    SendClientMessageToAll(COLOR_GREEN, "||___www.Redside-Reallife.tk_____________________________________Teamspeak 3: 188.138.113.153:9987___||");
    newswechsel = 2;
    }
    else if(newswechsel == 2)
    {
    SendClientMessageToAll(COLOR_GREEN, "_________________________________________ RRL INFORMATION ____________________________________");
    SendClientMessageToAll(COLOR_WHITE," Der normale Premiumaccount reicht dir nicht?");
    SendClientMessageToAll(COLOR_WHITE," Für schlappe 4,99 Euro pro Monat gibt es den Donator-Rang (Premium Rang 2)");
    SendClientMessageToAll(COLOR_WHITE," Wie du ihn bekommst und welche Vorteile er dir bringt steht im Forum.");
    SendClientMessageToAll(COLOR_GREEN, "||___www.Redside-Reallife.tk_____________________________________Teamspeak 3: 188.138.113.153:9987___||");
    newswechsel = 3;
    }
    else if(newswechsel == 3)
    {
    SendClientMessageToAll(COLOR_GREEN, "_________________________________________ RRL INFORMATION ____________________________________");
    SendClientMessageToAll(COLOR_WHITE," Das verbreiten von RRL-Externen IPs ist auf diesem Server verboten!");
    SendClientMessageToAll(COLOR_WHITE," Aus diesem Grunde werden alle Versuche geloggt. Fremdwerbung führt zu einem sofortigen Bann.");
    SendClientMessageToAll(COLOR_WHITE," Außnahme: /a und /sup zur Information der Supporter/Administratoren.");
    SendClientMessageToAll(COLOR_GREEN, "||___www.Redside-Reallife.tk_____________________________________Teamspeak 3: 188.138.113.153:9987___||");
    newswechsel = 4;
    }
    else if(newswechsel == 4)
    {
    SendClientMessageToAll(COLOR_GREEN, "_________________________________________ RRL INFORMATION ____________________________________");
    SendClientMessageToAll(COLOR_WHITE," Kennst du schon unser Werbesystem 'User werben User'?");
    SendClientMessageToAll(COLOR_WHITE," Wenn du einen Spieler wirbst, kannst du uns dies im Forum mitteilen. Dazu gibt es ein Extra");
    SendClientMessageToAll(COLOR_WHITE," Thema im Forum 'Informationen'. Der geworbene Spieler muss allerdings bereits Level 5 erreicht");
    SendClientMessageToAll(COLOR_WHITE," haben, damit dir ein Administrator 5 Respektpunkte und 300.000 $ Gutschreiben kann.");
    SendClientMessageToAll(COLOR_GREEN, "||___www.Redside-Reallife.tk_____________________________________Teamspeak 3: 188.138.113.153:9987___||");
    newswechsel = 5;
    }
    else if(newswechsel == 5)
    {
    SendClientMessageToAll(COLOR_GREEN, "_________________________________________ RRL INFORMATION ____________________________________");
    SendClientMessageToAll(COLOR_WHITE," Solltest du einen Cheater bzw. Hacker auf unserem Server gesehen haben, so solltest du");
    SendClientMessageToAll(COLOR_WHITE," diesen mithilfe von /a oder /sup schnellstmöglich an einen Supporter/Administrator weiterleiten.");
    SendClientMessageToAll(COLOR_WHITE," User mit Cheatverdacht werden sofort Gebannt. Bei einem Fehlbann kann man im Forum nach dem");
    SendClientMessageToAll(COLOR_WHITE," genauen Grund fragen und ggf. entbannt werden.");
    SendClientMessageToAll(COLOR_GREEN, "||___www.Redside-Reallife.tk_____________________________________Teamspeak 3: 188.138.113.153:9987___||");
    newswechsel = 6;
    }
    else if(newswechsel == 6)
    {
    SendClientMessageToAll(COLOR_GREEN, "_________________________________________ RRL INFORMATION ____________________________________");
    SendClientMessageToAll(COLOR_WHITE," Auf diesem Server gilt die Ampelregelung gilt nur in Los Santos & San Fiero.");
    SendClientMessageToAll(COLOR_WHITE," In Las Venturas & auf dem Land muss die Ampelregelung nicht eingehalten");
    SendClientMessageToAll(COLOR_WHITE," werden. Die Höchstgeschwindigkeit in Los Santos beträgt 80 km/h. (Toleranz: 85 km/h)");
    SendClientMessageToAll(COLOR_GREEN, "||___www.Redside-Reallife.tk_____________________________________Teamspeak 3: 188.138.113.153:9987___||");
    newswechsel = 1;
    }
    return 1;
    }


    Ich hoffe ich bin hier richtig und denke jemand kann mir sagen, ob das falsch oder richtig ist und Tipps nehme ich auch gerne an. :)
    mfG, Nighthawk.