Frage bzgl. OnPlayerDisconnect o.ä

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.
    Ich habe ein kleinen Fehler auf meinem Server entdeckt.
    Undzwar läuft gerade die ganze Zeit ein Timer in meinem Script, der sich nicht beenden lässt. (Trifft nur auf ID 0 zu)
    Sobald ich KillTimer(buswait[playerid]); verwende, wird er trotzdem weiterhin ausgeführt.


    Weiß evtl. jemand wieso?
    buswait wird bei jedem OnPlayerEnterCheckPoint aufgerufen.

    Spoiler anzeigen


    //OnPlayerEnterCheckpoint
    //Busfahrer
    if(BusCheckPointLinie1[playerid] > 0)
    {
    for(new i=0;i<sizeof(bus);i++)
    {
    new vID = GetPlayerVehicleID(playerid);
    if(vID == bus[i])
    {
    BusTime[playerid] = 0;
    FreezePlayer(playerid);
    TextDrawSetString(BusMessage[playerid], "~y~Busfahrer:~w~ 6 Sek.");
    TextDrawShowForPlayer(playerid, BusMessage[playerid]);
    buswait[playerid]=SetTimerEx("OnPlayerWaitLinie", 1000, 1, "i", playerid);
    return 1;
    }
    }
    SendClientMessage(playerid, COLOR_GREY, "Du befindest dich in keinem Bus!");
    return 1;
    }
    if(BusCheckPointLinie2[playerid] > 0)
    {
    for(new i=0;i<sizeof(bus);i++)
    {
    new vID = GetPlayerVehicleID(playerid);
    if(vID == bus[i])
    {
    BusTime[playerid] = 0;
    FreezePlayer(playerid);
    TextDrawSetString(BusMessage[playerid], "~y~Busfahrer:~w~ 6 Sek.");
    TextDrawShowForPlayer(playerid, BusMessage[playerid]);
    buswait[playerid]=SetTimerEx("OnPlayerWaitLinie", 1000, 1, "i", playerid);
    return 1;
    }
    }
    SendClientMessage(playerid, COLOR_GREY, "Du befindest dich in keinem Bus!");
    return 1;
    }

    Spoiler anzeigen
    //Der Timer-Public
    public OnPlayerWaitLinie(playerid)
    {
    new busstring[128], stunde, minute, sekunde;
    gettime(stunde, minute, sekunde);
    if(IsPlayerConnected(playerid) && gPlayerLogged[playerid] == 1)
    {
    if(BusTime[playerid] < 6)
    {
    BusTime[playerid] ++;
    if(BusTime[playerid] == 1)
    {
    TextDrawSetString(BusMessage[playerid], "~y~Busfahrer:~w~ 5 Sek.");
    TextDrawShowForPlayer(playerid, BusMessage[playerid]);
    return 1;
    }
    else if(BusTime[playerid] == 2)
    {
    TextDrawSetString(BusMessage[playerid], "~y~Busfahrer:~w~ 4 Sek.");
    TextDrawShowForPlayer(playerid, BusMessage[playerid]);
    return 1;
    }
    else if(BusTime[playerid] == 3)
    {
    TextDrawSetString(BusMessage[playerid], "~y~Busfahrer:~w~ 3 Sek.");
    TextDrawShowForPlayer(playerid, BusMessage[playerid]);
    return 1;
    }
    else if(BusTime[playerid] == 4)
    {
    TextDrawSetString(BusMessage[playerid], "~y~Busfahrer:~w~ 2 Sek.");
    TextDrawShowForPlayer(playerid, BusMessage[playerid]);
    return 1;
    }
    else if(BusTime[playerid] == 5)
    {
    TextDrawSetString(BusMessage[playerid], "~y~Busfahrer:~w~ 1 Sek.");
    TextDrawShowForPlayer(playerid, BusMessage[playerid]);
    return 1;
    }

    Spoiler anzeigen
    else if(BusTime[playerid] == 6)
    {
    TextDrawHideForPlayer(playerid, BusMessage[playerid]);
    BusTime[playerid] = 0;
    }
    }
    for(new i=0;i<sizeof(bus);i++)
    {
    new vID = GetPlayerVehicleID(playerid);
    if(!(GetPlayerState(playerid) == PLAYER_STATE_DRIVER))return SendClientMessage(playerid, COLOR_GREY, "Du befindest dich in keinem Bus!"); KillTimer(buswait[playerid]);
    if(vID == bus[i])
    {
    if(BusCheckPointLinie2[playerid] > 0)
    {
    if(BusCheckPointLinie2[playerid] == 1)
    {
    BusCheckPointLinie2[playerid] = 2;
    SetPlayerCheckpoint(playerid, 800.2092,-1350.1198,12.9576, 5.0);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Intercars");
    UnfreezePlayer(playerid);
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 2 Haltestelle: Verona Beach Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie2[playerid] == 2)
    {
    BusCheckPointLinie2[playerid] = 3;
    SetPlayerCheckpoint(playerid, 1219.1216,-946.3145,42.1895, 5.0);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Burger Shot North");
    UnfreezePlayer(playerid);
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 2 Haltestelle: LS Intercars Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie2[playerid] == 3)
    {
    BusCheckPointLinie2[playerid] = 4;
    SetPlayerCheckpoint(playerid, 1426.2518,-1035.9860,23.2215, 5.0);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Bank");
    UnfreezePlayer(playerid);
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 2 Haltestelle: LS Burgershot North Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie2[playerid] == 4)
    {
    BusCheckPointLinie2[playerid] = 5;
    SetPlayerCheckpoint(playerid, 1539.2504,-1305.7352,15.4792, 5.0);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos News Tower");
    UnfreezePlayer(playerid);
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 2 Haltestelle: LS Bank Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie2[playerid] == 5)
    {
    BusCheckPointLinie2[playerid] = 6;
    SetPlayerCheckpoint(playerid, 1844.8221,-1388.5509,12.9530, 5.0);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Skatepark");
    UnfreezePlayer(playerid);
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 2 Haltestelle: LS News Tower Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie2[playerid] == 6)
    {
    BusCheckPointLinie2[playerid] = 7;
    SetPlayerCheckpoint(playerid, 1819.0703,-1667.1174,12.9563, 5.0);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Alhambra");
    UnfreezePlayer(playerid);
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 2 Haltestelle: LS Skatepark Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie2[playerid] == 7)
    {
    BusCheckPointLinie2[playerid] = 8;
    SetPlayerCheckpoint(playerid, 1491.1707,-1729.4458,12.9545, 5.0);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Stadthalle");
    UnfreezePlayer(playerid);
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 2 Haltestelle: LS Alhambra Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie2[playerid] == 8)
    {
    BusCheckPointLinie2[playerid] = 9;
    SetPlayerCheckpoint(playerid, 1246.8621,-1710.1527,12.9429, 5.0);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Busbahnhof");
    UnfreezePlayer(playerid);
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 2 Haltestelle: LS Stadthalle Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie2[playerid] == 9)
    {
    BusCheckPointLinie2[playerid] = 10;
    SetPlayerCheckpoint(playerid, 288.5095,-1732.6295,3.6360, 5.0);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Verona Beach");
    UnfreezePlayer(playerid);
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie 2 Haltestelle: LS Busbahnhof Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    return 1;
    }
    else if(BusCheckPointLinie2[playerid] == 10)
    {
    BusCheckPointLinie2[playerid] = 0;
    DisablePlayerCheckpoint(playerid);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Du hast durch diese Runde $2800 erhalten.");
    Spieler[playerid][pPayCheck] += 2800;
    KillTimer(buswait[playerid]);
    UnfreezePlayer(playerid);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 2 Haltestelle: Verona Beach Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    }
    if(BusCheckPointLinie1[playerid] > 0)
    {
    if(BusCheckPointLinie1[playerid] == 1)
    {
    BusCheckPointLinie1[playerid] = 2;
    SetPlayerCheckpoint(playerid, 1226.6246,-1714.2220,12.9543, 5.0);
    UnfreezePlayer(playerid);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Bus Bahnhof");
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 1 Haltestelle: Verona Beach Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie1[playerid] == 2)
    {
    BusCheckPointLinie1[playerid] = 3;
    SetPlayerCheckpoint(playerid, 1470.4623,-1734.5129,12.9439, 5.0);
    UnfreezePlayer(playerid);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Stadthalle");
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 1 Haltestelle: Bus Bahnhof Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie1[playerid] == 3)
    {
    BusCheckPointLinie1[playerid] = 4;
    SetPlayerCheckpoint(playerid, 1824.1851,-1645.7863,12.9406, 5.0);
    UnfreezePlayer(playerid);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Alhambra Club");
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 1 Haltestelle: Stadthalle Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie1[playerid] == 4)
    {
    BusCheckPointLinie1[playerid] = 5;
    SetPlayerCheckpoint(playerid, 1852.6932,-1363.5457,12.9647, 5.0);
    UnfreezePlayer(playerid);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Skate Park");
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 1 Haltestelle: Alhambra Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie1[playerid] == 5)
    {
    BusCheckPointLinie1[playerid] = 6;
    SetPlayerCheckpoint(playerid, 1565.8749,-1296.9966,16.5426, 5.0);
    UnfreezePlayer(playerid);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos News Tower");
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 1 Haltestelle: Skate Park Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie1[playerid] == 6)
    {
    BusCheckPointLinie1[playerid] = 7;
    SetPlayerCheckpoint(playerid, 1445.4164,-1031.3965,23.2298, 5.0);
    UnfreezePlayer(playerid);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Bank");
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 1 Haltestelle: News Tower Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie1[playerid] == 7)
    {
    BusCheckPointLinie1[playerid] = 8;
    SetPlayerCheckpoint(playerid, 1195.6738,-935.0648,42.3088, 5.0);
    UnfreezePlayer(playerid);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Burger Shot North");
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 1 Haltestelle: Los Santos Bank Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie1[playerid] == 8)
    {
    BusCheckPointLinie1[playerid] = 9;
    SetPlayerCheckpoint(playerid, 794.1490,-1377.1678,13.0238, 5.0);
    UnfreezePlayer(playerid);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Intercars");
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 1 Haltestelle: BSN Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie1[playerid] == 9)
    {
    BusCheckPointLinie1[playerid] = 10;
    SetPlayerCheckpoint(playerid, 301.8509,-1740.6200,3.8566, 5.0);
    UnfreezePlayer(playerid);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Nächste Haltestelle: Los Santos Verona Beach");
    KillTimer(buswait[playerid]);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 1 Haltestelle: LS Intercars Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    else if(BusCheckPointLinie1[playerid] == 10)
    {
    BusCheckPointLinie1[playerid] = 0;
    DisablePlayerCheckpoint(playerid);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Du hast durch diese Runde $2800 erhalten.");
    Spieler[playerid][pPayCheck] += 2800;
    KillTimer(buswait[playerid]);
    UnfreezePlayer(playerid);
    format(busstring, sizeof(busstring), "%s (ID: %d) Linie: 1 Haltestelle: Verona Beach Zeit: %d:%d:%d", GetName(playerid), playerid, stunde, minute, sekunde);
    BusLog(busstring);
    return 1;
    }
    }
    }
    }
    SendClientMessage(playerid, COLOR_GREY, "Du befindest dich in keinem Bus!");
    }
    return 1;
    }


    Falls noch irgendwas benötigt wird, bitte sagen. :/
    Andere Timer gehen alle. ^^