Таймер по началу раунда. Сообщение через 20 сек

Тема в разделе "Программирование / Скриптинг", создана пользователем Сергей Зырянов 43676215, 19 окт 2013.

  1. Сергей Зырянов 43676215

    Сергей Зырянов 43676215

    Сообщения:
    17
    Симпатии:
    0
    Здравствуйте форумчане) Вопросик таков:
    Как вывести сообщение после 20 секунд раунда?

    Пока что есть воть что:

    public OnPluginStart()
    {
    HookEvent("round_start", round_start, EventHookMode_PostNoCopy);
    CreateTimer(20.0, LoadStuff);
    }


    public round_start(Handle:event, const String:name[], bool:dontBroadcast)
    {
    PrintToChatAll("\x05[NSKGAMERS.RU] \x04Первый зомби появится через \x0320 секунд!", GetEventInt(event, "timelimit"));
    PrintToChatAll("\x05[NSKGAMERS.RU] \x04Первый зомби появится через \x0320 секунд!", GetEventInt(event, "timelimit"));
    PrintToChatAll("\x05[NSKGAMERS.RU] \x04Первый зомби появится через \x0320 секунд!", GetEventInt(event, "timelimit"));
    PrintToChatAll("\x05[NSKGAMERS.RU] \x04Первый зомби появится через \x0320 секунд!", GetEventInt(event, "timelimit"));

    }


    А вот как сам таймер запустить по началу раунда?
     
  2. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.001
    Симпатии:
    2.993
    PHP:
    public OnPluginStart()
        
    HookEvent("round_start"round_startEventHookMode_PostNoCopy); 


    public 
    round_start(Handle:event, const String:name[], bool:dontBroadcast
        
    CreateTimer(20.0LoadStuff); 

    public 
    Action:LoadStuff(Handle:hTimer)
    {
        
    PrintToChatAll("\x05[NSKGAMERS.RU] \x04Первый зомби появится через \x0320 секунд!");
    }
    Если я правильно понял.

    Но зачем GetEventInt(event, "timelimit") ?

    И зомби должен появляться через 40 сек. Т.к через 20 сек после начала раунда напишет, что "зомби появится через 20" пройдет еще 20 и тогда он должен появляться.
     
  3. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    892
    Симпатии:
    659
    PHP:
    #include <sourcemod>

    new Handle:hTimer INVALID_HANDLE;

    public 
    OnPluginStart()
    {
        
    HookEvent("round_start"Event_OnRoundStart);
    }

    public 
    Event_OnRoundStart(Handle:event, const String:name[], bool:silent)
    {
        if (
    hTimer != INVALID_HANDLE)
        {
            
    KillTimer(hTimer);
        }

        
    hTimer CreateTimer(20.0CT_Timer);
    }

    public 
    Action:CT_Timer(Handle:timer)
    {
        
    PrintToChatAll("Message");

        
    hTimer INVALID_HANDLE;
    }
     
  4. Сергей Зырянов 43676215

    Сергей Зырянов 43676215

    Сообщения:
    17
    Симпатии:
    0
    Почему то не работает, либо я туплю.. Смотрите, сделал так:

    public OnPluginStart()
    {
    HookEvent("round_start", round_start, EventHookMode_PostNoCopy);
    }


    public round_start(Handle:event, const String:name[], bool:dontBroadcast)
    {
    PrintToChatAll("\x05[NSKGAMERS.RU] \x04Первый зомби появится через \x0320 секунд!", GetEventInt(event, "timelimit"));
    PrintToChatAll("\x05[NSKGAMERS.RU] \x04Первый зомби появится через \x0320 секунд!", GetEventInt(event, "timelimit"));
    PrintToChatAll("\x05[NSKGAMERS.RU] \x04Первый зомби появится через \x0320 секунд!", GetEventInt(event, "timelimit"));
    PrintToChatAll("\x05[NSKGAMERS.RU] \x04Первый зомби появится через \x0320 секунд!", GetEventInt(event, "timelimit"));
    CreateTimer(20.0, CT_Timer);
    }

    public Action:CT_Timer(Handle:timer)
    {
    PrintToChatAll("\x05[NSKGAMERS.RU] \x04ПЕРВЫЙ ЗОМБИ ПОЯВИЛСЯ! \x03БЕГИ!!");
    }


    Вот по идее мне так и нужно, таймер как то рандомно работает( То через 5 сек напишет, то через 15 то через 20
    то есть от 0 до 20 секунд. Что делать? ХЕЛП
     
  5. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.001
    Симпатии:
    2.993
    Сергей Зырянов 43676215,

    PHP:
    public OnPluginStart()
        
    HookEvent("round_start"round_startEventHookMode_PostNoCopy); 

    public 
    round_start(Handle:event, const String:name[], bool:dontBroadcast)
    {
        
    PrintToChatAll("\x05[NSKGAMERS.RU] \x04Первый зомби появится через \x0320 секунд!");
        
    CreateTimer(20.0LoadStuff);
    }

    public 
    Action:LoadStuff(Handle:hTimer)
        
    PrintToChatAll("\x05[NSKGAMERS.RU] \x04ПЕРВЫЙ ЗОМБИ ПОЯВИЛСЯ! \x03БЕГИ!!");
     
    devimd нравится это.
  6. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    892
    Симпатии:
    659
    R1KO
    Учти, что раунд может закончится раньше, чем пройдет 20 секунд
     
    Серый™ и R1KO нравится это.
  7. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.001
    Симпатии:
    2.993
    PHP:
    #include <sourcemod>

    new Handle:hTimer INVALID_HANDLE;

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

    public 
    round_start(Handle:event, const String:name[], bool:dontBroadcast)
    {
        
    PrintToChatAll("\x05[NSKGAMERS.RU] \x04Первый зомби появится через \x0320 секунд!");
        if (
    hTimer != INVALID_HANDLE)
            
    KillTimer(hTimer);

        
    hTimer CreateTimer(20.0CT_Timer);
    }

    public 
    Action:CT_Timer(Handle:timer)
    {
        
    PrintToChatAll("\x05[NSKGAMERS.RU] \x04ПЕРВЫЙ ЗОМБИ ПОЯВИЛСЯ! \x03БЕГИ!!");
        
    hTimer INVALID_HANDLE;
    }
     
  8. ☆★☆БАТЯ☆★☆™

    ☆★☆БАТЯ☆★☆™

    Сообщения:
    2.585
    Симпатии:
    1.341
    А как, если зомби еще не появились, может закончиться раунд? Не играл в зомби, интересно просто...
     
  9. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.001
    Симпатии:
    2.993
    ☆★☆БАТЯ☆★☆™, mp_restartgame 1
    или еще что-то