Вывести счёт команд в hud посстоянно.

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

  1. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Помогите составить код, нужно вывести в hud счёт команд террористов и спецназ, чтобы посстоянно он был и обновлялся каждые 1-2 сек.

    Пример:
    PHP:
    Террористы 1
    Спецназ 
    1
    в hud окне.
     
  2. R1KO

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

    Сообщения:
    5.972
    Симпатии:
    2.977
    pokypka20,
    PHP:
    CreateTimer(1.0Timer_PrintHud_TIMER_REPEAT);

    public 
    Action:Timer_PrintHud(Handle:hTimer)
    {
    /*Выводишь сообщение*/
    }
     
  3. AlmazON

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

    Сообщения:
    4.506
    Симпатии:
    1.961
    И пущай во время смены карты тоже мелькает, сервер нагружает... Больше флагов для повторяющегося таймера будто нет.
    Ты ему подробнее распиши, он же не знает натива для получения счёта команд. Да и вообще, бред это - на таймере строить.
     
  4. R1KO

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

    Сообщения:
    5.972
    Симпатии:
    2.977
    AlmazON, я не ставил флаг TIMER_FLAG_NO_MAPCHANGE т.к. предполагал что создавать будет через Handle:g_hTimer = CreateTimer(1.0, Timer_PrintHud, _, TIMER_REPEAT);
     
  5. artyrka94

    artyrka94

    Сообщения:
    182
    Симпатии:
    36
    PHP:
    #include <sdktools>
    CreateTimer(1.0Timer_PrintHud_TIMER_REPEAT);

    public 
    Action:Timer_PrintHud(Handle:hTimer)
        
    PrintHintTextToAll("Террористы - %d | Спецназ - %d"GetTeamScore(2), GetTeamScore(3))
    и в server.cfg добавь: sv_hudhint_sound 0
    а то всех будет напрягать звук от худа
     
    pokypka20 и AlmazON нравится это.
  6. R1KO

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

    Сообщения:
    5.972
    Симпатии:
    2.977
    PHP:
    #include <sourcemod>
    #pragma semicolon 1

    public OnMapStart() CreateTimer(1.0Timer_PrintHud_TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); 

    public 
    Action:Timer_PrintHud(Handle:hTimerPrintHintTextToAll("Террористы - %d\nСпецназ - %d"GetTeamScore(2), GetTeamScore(3));
     
  7. AlmazON

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

    Сообщения:
    4.506
    Симпатии:
    1.961
    Зачем? Если условия показа ставить, например, когда народ есть, то лучше делать через изменение переменных GetTeamScore. Если сделать PrintHintTextToAll не исчезающим, то можно просто изменять счёт, когда он действительно меняется.
    Я как раз об этом думал, но забыл квар. :)
     
  8. R1KO

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

    Сообщения:
    5.972
    Симпатии:
    2.977
    Не выйдет. Счет меняется реже чем 3-4 сек.
     
  9. AlmazON

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

    Сообщения:
    4.506
    Симпатии:
    1.961
    Чего это он так? Или мы говорим о разных счётах? Речь же идёт о победах команды КТ и Т, например, 1:0 или общее количество фрагов команды/ещё что-то?
     
  10. R1KO

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

    Сообщения:
    5.972
    Симпатии:
    2.977
    AlmazON, ну смотри, продолжительность показа PrintHintTextToAll 3-4 сек. Счет команд так быстро не меняется.
    Продлить его можно разве что таймером, а тогда проще сделать как уже сделано.
     
    pokypka20 нравится это.
  11. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Спасибо большое всем кто помогал, особенное спасибо RIKO.
     
  12. AlmazON

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

    Сообщения:
    4.506
    Симпатии:
    1.961
    Вот ты о чём. Проще то проще, но, всё равно, мне кажется, лучше просто обновлять Hint для показа, извлекая в него уже давно сохранённые в переменных данные и обновлять сами переменные счёта при их реальном изменении, а не высчитывать каждый раз. Можно даже просто одним махом сделать обновление по концам раунда (раунд окончен - счёт по любому новый, раньше - нет и позже - нет), если сервер не специфичен.
    pokypka20, обязательно останови таймер, если на сервере никого или боты. А то такими примитивными плагинами посадишь сервер, да и вообще fps при таком варианте работе.
     
  13. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Извините за глупый вопрос как создать клиента когда его нет?
    PHP:
    public OnMapStart() 
    {
    CreateTimer(1.0Timer_PrintHud_TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); 
    }

    public 
    Action:Timer_PrintHud(Handle:eventhTimer
    {
        new 
    client GetClientOfUserId(GetEventInt(event"userid"))
        
    MyTest(client"Террористы: [%d], GetTeamScore(2)");
    }
    Вот так пишет ошибку что неправильно?
    на mytest внимание не обращать, я для примера написал.
     
  14. R1KO

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

    Сообщения:
    5.972
    Симпатии:
    2.977
    а, ну это само собой. Я только подал идею вывода, не более.

    Вот потому я вначале и писал об Handle:g_hTimer = CreateTimer(1.0, Timer_PrintHud, _, TIMER_REPEAT); чтобы им было удобно управлять.

    pokypka20, его не создать, пускай цикл по всем игрокам
    PHP:
    for(new i=1<= MaxClientsi++)
    {
        if(
    IsClientInGame(i) && !IsFakeClient(i))
        {
            
    /* Код
            i  это и будет твой клиент*/
        
    }
    }


    Кавычки не там закрываешь
    PHP:
    MyTest(client"Террористы: [%d]"GetTeamScore(2));
     
  15. AlmazON

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

    Сообщения:
    4.506
    Симпатии:
    1.961
    pokypka20, скажи конкретно чего хочешь, а то точно сервер посадишь лишними переменными, таймерами и циклами.
    bool отнимает меньше памяти SM, да и каким способом? Уж не убить ли таймер собираешься?
     
  16. R1KO

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

    Сообщения:
    5.972
    Симпатии:
    2.977
    AlmazON, можно просто пропускать выполнение после проверки игроков.
     
  17. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Ладно выпалили меня таймер хочю сделать как в cs 1.6
    PHP:
    #include <sourcemod>
    #include <easy_hudmessage>
    #pragma semicolon 1

    public OnMapStart() 
    {
    CreateTimer(1.0Timer_PrintHud_TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); 
    }

    Timer()
    for(new 
    i=1<= MaxClientsi++)
    {
        if(
    IsClientInGame(i) && !IsFakeClient(i))
        {
        
    SendHudMessage(i6, -0.511998, -1.0279990xFF0000FF0xFFFFFFFF01.01.05.02.0"Террористы: [%d], GetTeamScore(2)");
        }
    }

    public 
    Action:Timer_PrintHud(Handle:hTimer
    {
    Timer();
    }
    Конечно всё коряво и не обновляется, но я в поиске решения :D
     
  18. AlmazON

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

    Сообщения:
    4.506
    Симпатии:
    1.961
    Т.е.? Хинт то общий... всем. Как и таймер. Делать вариант таймера для каждого клиента - ещё хуже.
    Сделай ты ему нормально, а то сам "я бы такой плагин на свой сервер не поставил", а другим советуешь. :-D
    Откуда такой натив? Его нет, это наверное сокращение функции. Это сообщение в левом верхнем углу?
     
  19. Webman

    Webman Developer

    Сообщения:
    702
    Симпатии:
    182
    Не проще вести переменные для выведения в худ?
    То есть в конце раунда получаем счет - записываем в переменные, выводим в худ и висит в течение всего раунда.
     
  20. R1KO

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

    Сообщения:
    5.972
    Симпатии:
    2.977
    Я советую только реализацию его идеи, на свой сервер я ставлю только то что нужно и максмимально оптимизировав.


    Этого я не говорил.

    Тогда к чему геморой? Делать всегда вывод сообщения и не напрягатся по поводу пустого сервера или ботов. К тому же if(IsClientInGame(i) && !IsFakeClient(i))


    pokypka20,
    PHP:
    #include <sourcemod>
    #include <easy_hudmessage>
    #pragma semicolon 1

    public OnMapStart() 
    {
        
    CreateTimer(1.0Timer_PrintHud_TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); 
    }

    public 
    Action:Timer_PrintHud(Handle:hTimer)
    {
        for(new 
    i=1<= MaxClientsi++)
        {
            if(
    IsClientInGame(i) && !IsFakeClient(i)) SendHudMessage(i6, -0.511998, -1.0279990xFF0000FF0xFFFFFFFF01.01.05.02.0"Террористы: [%d], GetTeamScore(2)");
        }
    }
    Webman, обсуждали на первой странице. Я этого писать не буду, нет времени. Реализацию я предложил, а вот оптимизация уже не моя забота.
     
    Webman и pokypka20 нравится это.