Отсчёт времени до начала раунда

Тема в разделе "Программирование / Скриптинг", создана пользователем pokypka20, 29 июл 2014.

  1. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Помогите составить код: (понятия не имею как делать)

    Допустим у меня стоит mp_freezetime 3, помогите сделать чтобы во время фриз тайм происходил отчёт в центре экрана до начала раунда.
    PHP:
    Приготовьтесь к бою3
    Приготовьтесь к бою
    2
    Приготовьтесь к бою
    1
    Заранее спасибо.
     
  2. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.515
    Симпатии:
    1.969
    pokypka20, хукаешь событие начала раунда и с него запускаешь повторяющийся таймер. Время окончания приравниваешь к mp_freezetime. Давал же код таймера.
    Хинт или выше, крупнее?
    Оффтоп
    PHP:
    new sec;

    public 
    OnPluginStart() HookEvent("round_start"Event_RoundStartEventHookMode_PostNoCopy);

    public 
    Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
    {
        
    sec GetConVarInt(FindConVar("mp_freezetime"));
        
    CreateTimer(1.0AreYouReady_TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
    }

    public 
    Action:AreYouReady(Handle:timer)
    {
        if (--
    sec 0)
        {
            
    PrintHintTextToAll("Приготовьтесь к бою: %d"sec);
            return 
    Plugin_Continue;
        }
        return 
    Plugin_Stop;
    }
    Хинт видят все, даже наблюдатели. Из-за того, что ты не хочешь видеть 0, хинт будет висеть секунды 3 на 1.
     
    Последнее редактирование: 29 июл 2014
    pokypka20 нравится это.
  3. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    AlmazON, Спасибо, помогло. Если возможно подскажите можно ли каждый секунде присвоить свой текст? каждой секунде таймера тоесть.
    PHP:
    Приготовьтесь к бою--> Закупаемся
    Приготовьтесь к бою
    --> Разминаемся
    Приготовьтесь к бою
    --> Побежали
    примерно так.
     
  4. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.515
    Симпатии:
    1.969
    Элементарно, например, через условия:
    PHP:
    if (sec == 3PrintHintTextToAll("Приготовьтесь к бою: 3 --> Закупаемся");
    else if (
    sec == 2PrintHintTextToAll("Приготовьтесь к бою: 2 --> Разминаемся");
    else if (
    sec == 1PrintHintTextToAll("Приготовьтесь к бою: 1 --> Побежали");
     
    pokypka20 нравится это.
  5. TolikCorp

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
    PHP:
    new sec;
    public 
    OnPluginStart() HookEvent("round_start"Event_RoundStartEventHookMode_PostNoCopy);
    public 
    Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
    {
        
    sec GetConVarInt(FindConVar("mp_freezetime"));
        
    CreateTimer(1.0AreYouReady_TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
    }
    public 
    Action:AreYouReady(Handle:timer)
    {
        if (--
    sec 0)
        {
            switch(
    sec)
            {
                case 
    1:PrintHintTextToAll("Приготовьтесь к бою: %d --> Побежали"sec);
                case 
    2:PrintHintTextToAll("Приготовьтесь к бою: %d --> Разминаемся"sec);
                case 
    3:PrintHintTextToAll("Приготовьтесь к бою: %d --> Закупаемся"sec);
                default:
    PrintHintTextToAll("Приготовьтесь к бою: %d"sec);
            }
            return 
    Plugin_Continue;
        }
        return 
    Plugin_Stop;
    }
     
  6. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.515
    Симпатии:
    1.969
    Это ещё откуда? А так нормально, если он вообще понял, как устроен switch...
    Оффтоп
     
  7. TolikCorp

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
    Да забыл удалить) щас ок)
     
  8. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.515
    Симпатии:
    1.969
    Оффтоп
     
  9. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Работает, спасибо.
     
  10. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.515
    Симпатии:
    1.969
    pokypka20, лучше вообще так, если надписей много (3 и более):
    PHP:
    new sec;

    public 
    OnPluginStart() HookEvent("round_start"Event_RoundStartEventHookMode_PostNoCopy);

    public 
    Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
    {
        
    sec GetConVarInt(FindConVar("mp_freezetime"));
        
    CreateTimer(1.0AreYouReady_TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
    }

    public 
    Action:AreYouReady(Handle:timer)
    {
        if (--
    sec 0)
        {
            
    decl String:t[50];
            switch(
    sec)
            {
                case 
    1" --> Побежали";
                case 
    2" --> Разминаемся";
                case 
    3" --> Закупаемся";
                default: 
    t[0] = '\0';
            }
            
    PrintCenterTextAll("Приготовьтесь к бою: %d%s"sect);
            return 
    Plugin_Continue;
        }
        return 
    Plugin_Stop;
    }
    Это крупно, немного выше центра.
     
    pokypka20 нравится это.
  11. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Я использую sedhud в любом углу экрана :)
     
  12. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    PHP:
    new const String:message[][] = {"закупаемся""разминаемся""побежали"};

    // В OnPluginStart получаем значение переменной, т.к. нет смысла каждый раунд ее получать

    // ...
    PrintHintTextToAll("приготовьтесь к бою: %d. %s"secmessage[sec 1]);
     
  13. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.515
    Симпатии:
    1.969
    При старте плагина переменную получать?!
    Приравниваем, получаем 3 (у него так), таймер минусует и получаем 0. Дальше что? С 0 уже работать не будет. Значение то надо возвращать.
    А со строкой хорошо придумал) Но, не к месту! Сообщение не отображается вовсе, когда пытаются извлечь и показать несуществующий индекс строки.
    Хоть я и добил сей факт, но, в итоге, получается также или, может даже хуже по оптимизации.
    Надо указывать в обратном порядке.
     
    Последнее редактирование: 4 авг 2014