Показано с 1 по 6 из 6

Тема: Останавливаются таймеры

  1. #1
    Пользователь Аватар для HoBu4oK
    Регистрация
    22.03.2012
    Сообщений
    31
    Репутация: 0

    Звание: пока не определено

    Останавливаются таймеры

    Доброго времени суток, уважаемые пользователи.

    На сервере с онлайном 50-60 при продолжительной работе 6-8 часов, почему то перестают работать таймеры.

    Мои подозрения:

    PHP код:
    if(RaceStarting[0] > 0)
        {
            
    RaceStarting[0]--;
            if(
    RaceStarting[0] == 120)
            {
                
    SendClientMessageToAll(COLOR_YELLOW,"Внимание! Через 2 минуты пройдут {FFFFFF}гоночные мероприятия. | Максимальное количество участников: 40 человек.");
                
    SendClientMessageToAll(COLOR_YELLOW,"Внимание! Желающим прибыть в центр {FFFFFF}г.Los-Santos \"/gps -> Развлечения -> Гонки\"");
                switch(
    typeRace)
                {
                    case 
    0SendClientMessageToAll(COLOR_YELLOW,"Карта: {FFFFFF}Wolking Street Race.");
                    case 
    1SendClientMessageToAll(COLOR_YELLOW,"Карта: {FFFFFF}Las-Venturas / San-Fierro Race");
                }
            }
            if(
    RaceStarting[0] == && PlayersInRace{0} > && RaceStarting[2] == 3)
            {
                
    SendClientMessageToAll(COLOR_YELLOW,"Информация: Гонки начались!");
                
    SetTimer("SecondStartedRaces"1100true); // создается таймер
                
    RaceStarting[0]=0RaceStarting[1] = 11;
            }
            else if(
    RaceStarting[2] == && PlayersInRace{0} < && RaceStarting[0] == 2)
            {
                
    SendClientMessageToAll(COLOR_YELLOW,"Информация: Гонка отменена из-за не достаточного количества участников.");
                
    RaceStarting[2] = 0RaceStarting[0] = 0raceTime 1PlayersInRace{0} = 0typeRace 3;
                foreach(new 
    iPlayer)
                {
                    if(!
    PlayerInRace{i}) continue;
                    if(
    PlayerInRace{i}) Itter_Remove(RacersListi);
                    
    PlayerInRace{i} = false;
                }
            }
        } 


    PHP код:
    publicsSecondStartedRaces()
    {
        
    RaceStarting[1] --;
        if(
    RaceStarting[1] <= 1) return StartedRaces(), RaceStarting[1] = 0;
        foreach(new 
    iRacersList) {
            new 
    string[10];
            if(
    RaceStarting[1] < 10) {
                
    format(string10"~g~%d"RaceStarting[1]);
                
    GameTextForPlayer(istring10004);
            }
            if(
    RaceStarting[1] == 10) {
                
    DisablePlayerRaceCheckpoint(i);
                
    TogglePlayerControllable(ifalse);
                new 
    position PlayerPosition{i};
                
    SetPlayerPosEx(ispawn_car[typeRace][PlayersInRace{0}][0], spawn_car[typeRace][PlayersInRace{0}][1], spawn_car[typeRace][PlayersInRace{0}][2]);
                
    SetPVarInt(i,"race_check",_:Forveh_AddStaticVehicle(GetPVarInt(i,"rVehicle"),spawn_car[typeRace][position][0],spawn_car[typeRace][position][1],spawn_car[typeRace][position][2],spawn_car[typeRace][position][3],GetPVarInt(i,"rColor"),0));
                
    Engines{GetPVarInt(i,"race_check")} = true;
                
    Light{GetPVarInt(i,"race_check")} = true;
                
    LinkVehicleToInterior(GetPVarInt(i,"race_check"),0);
                
    SetVehicleVirtualWorld(GetPVarInt(i,"race_check"),1);
                
    SetPlayerInterior(i,0);
                
    SetPlayerVirtualWorld(i,1);
                
    PutPlayerInVehicle(iGetPVarInt(i,"race_check"), 0);
                
    SetVehicleParamsEx(GetPVarInt(i,"race_check"),VEHICLE_PARAMS_ON,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
                
    DeletePVar(i,"rColor");
                
    DeletePVar(i,"rVehicle");
            }
        }
        return 
    1;



    Так вот, в глобальном секундном таймере создается еще один таймер, но не удаляется..
    Можно ли на это грешить? Заранее благодарю за помощь.

    P.S плагин crashdetect используется, но в логах ниодного уведомления от него

  2. #2
    SYSTEM Аватар для Games
    Регистрация
    28.06.2010
    Адрес
    Moscow
    Возраст
    30
    Сообщений
    1,468
    Репутация: 478

    Звание: - луч света в тёмном царстве
    А исправить постоянное создание таймера не пытался?

    Ко всем глобальным переменным:
    PHP код:
    new raceTimer = -1
    в глобальном таймере:

    Это:
    PHP код:
    if(RaceStarting[0] == && PlayersInRace{0} > && RaceStarting[2] == 3

        
    SendClientMessageToAll(COLOR_YELLOW,"Информация: Гонки начались!"); 
        
    SetTimer("SecondStartedRaces"1100true); // создается таймер 
        
    RaceStarting[0]=0RaceStarting[1] = 11

    Заменить на это:
    PHP код:
    if(RaceStarting[0] == && PlayersInRace{0} > && RaceStarting[2] == 3

        
    SendClientMessageToAll(COLOR_YELLOW,"Информация: Гонки начались!"); 
        if (
    raceTimer != -1KillTimer(raceTimer);
        
    raceTimer SetTimer("SecondStartedRaces"1100true); // создается таймер 
        
    RaceStarting[0]=0RaceStarting[1] = 11

    + в publics: SecondStartedRaces() по хорошему тоже нужно добавить удаление таймера, когда он уже не нужен.
    Но, это ты уже сам смотри.
    пусто

  3. #3
    Джентльмен лжец Аватар для Fallen A.
    Регистрация
    03.09.2011
    Адрес
    Минск, БССР
    Возраст
    29
    Сообщений
    2,409
    Репутация: 337

    Звание: как роза среди колючек
    Цитата Сообщение от Games Посмотреть сообщение
    А исправить постоянное создание таймера не пытался?

    Ко всем глобальным переменным:
    PHP код:
    new raceTimer = -1
    в глобальном таймере:

    Это:
    PHP код:
    if(RaceStarting[0] == && PlayersInRace{0} > && RaceStarting[2] == 3

        
    SendClientMessageToAll(COLOR_YELLOW,"Информация: Гонки начались!"); 
        
    SetTimer("SecondStartedRaces"1100true); // создается таймер 
        
    RaceStarting[0]=0RaceStarting[1] = 11

    Заменить на это:
    PHP код:
    if(RaceStarting[0] == && PlayersInRace{0} > && RaceStarting[2] == 3

        
    SendClientMessageToAll(COLOR_YELLOW,"Информация: Гонки начались!"); 
        if (
    raceTimer != -1KillTimer(raceTimer);
        
    raceTimer SetTimer("SecondStartedRaces"1100true); // создается таймер 
        
    RaceStarting[0]=0RaceStarting[1] = 11

    + в publics: SecondStartedRaces() по хорошему тоже нужно добавить удаление таймера, когда он уже не нужен.
    Но, это ты уже сам смотри.
    Ну вот Игорь пришел и затащил...

  4. #4
    Пользователь Аватар для HoBu4oK
    Регистрация
    22.03.2012
    Сообщений
    31
    Репутация: 0

    Звание: пока не определено
    Цитата Сообщение от Games Посмотреть сообщение
    А исправить постоянное создание таймера не пытался?

    Ко всем глобальным переменным:
    PHP код:
    new raceTimer = -1
    в глобальном таймере:

    Это:
    PHP код:
    if(RaceStarting[0] == && PlayersInRace{0} > && RaceStarting[2] == 3

        
    SendClientMessageToAll(COLOR_YELLOW,"Информация: Гонки начались!"); 
        
    SetTimer("SecondStartedRaces"1100true); // создается таймер 
        
    RaceStarting[0]=0RaceStarting[1] = 11

    Заменить на это:
    PHP код:
    if(RaceStarting[0] == && PlayersInRace{0} > && RaceStarting[2] == 3

        
    SendClientMessageToAll(COLOR_YELLOW,"Информация: Гонки начались!"); 
        if (
    raceTimer != -1KillTimer(raceTimer);
        
    raceTimer SetTimer("SecondStartedRaces"1100true); // создается таймер 
        
    RaceStarting[0]=0RaceStarting[1] = 11

    + в publics: SecondStartedRaces() по хорошему тоже нужно добавить удаление таймера, когда он уже не нужен.
    Но, это ты уже сам смотри.
    Спасибо, я это уже сделал, как гонка заканчивается так и убивается таймер. На данный момент, сервер уже как 4 часа работает стабильно.
    А можешь объяснить, какой вред наносился?

  5. #5
    МАМБА ХУЯМБА Аватар для FanHamMer
    Регистрация
    27.03.2011
    Адрес
    Москва
    Возраст
    20
    Сообщений
    2,635
    Репутация: 272

    Звание: как роза среди колючек
    Цитата Сообщение от HoBu4oK Посмотреть сообщение
    Спасибо, я это уже сделал, как гонка заканчивается так и убивается таймер. На данный момент, сервер уже как 4 часа работает стабильно.
    А можешь объяснить, какой вред наносился?
    Попробуй без удаления таймера создать подряд 50 гонок к примеру, увидишь на яву.

  6. #6
    Пользователь Аватар для HoBu4oK
    Регистрация
    22.03.2012
    Сообщений
    31
    Репутация: 0

    Звание: пока не определено
    Цитата Сообщение от FanHamMer Посмотреть сообщение
    Попробуй без удаления таймера создать подряд 50 гонок к примеру, увидишь на яву.
    В общем, это рекурсия, да?

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •