Иконка ресурса

Info Message HUD 1.6

Нет прав для скачивания
Сообщения
101
Реакции
-11
Помог
2 раз(а)
@ImmortalAmxx,как другие не затрагиваются, все ровно по дефолту они примут значение 0, а сторока "", это все визуально
 
  • Нравится
Реакции: Arni

Albertio

скриптизёр
Сообщения
336
Реакции
393
Предупреждения
5
Помог
7 раз(а)
MayroN Nemec не надо на парня накидываться. Это элементарный кодстайл, красиво и очень даже правильно, я бы так же сделал, вместо нескольких нижних черточек, указать какой параметр передавать. Оба варианта работают, но тут выбор каждого.
 
Сообщения
494
Реакции
340
Помог
11 раз(а)
По поводу:
-set_task( 1.0, "InfoMsg", id, _, _, "b" )
+set_task( 1.0, "InfoMsg", id, .flags = "b" )
разница в чем??????
В амхх с версии 183 (вроде бы, может даже 182) компилятор может читать "неявные" параметры. Параметры, которые если не указать, то компилятор их пропустит (если не указан префикс & перед переменной). Старые версии всегда требовали указание всех параметров (без any...).
Получается, что это просто делает код красивее, а-ля более читаемым.

Albertio, нет, он убрал вот эти строки из кода
Код:
public client_connect( id )
{
    set_task( 1.0, "InfoMsg", id, _, _, "b" )
}

public client_disconnected( id )
{
    remove_task( id ) 
}
и добавил set_task( 1.0, "InfoMsg", id, _, _, "b" ) в public plugin_init( ) и все вроде как.
На самом деле лучше в client_putinserver засылать таск для каждого игрока отдельно, в client_disconnected удалять его. Снизится нагрузка на кадр.
Хоть здесь это и не нужно, но я про ситуацию в целом.
 
Последнее редактирование:
Сообщения
101
Реакции
-11
Помог
2 раз(а)
@bizon,ты хочешь сказать что посылать задачу каждому игроку здесь уместно?
 
  • Не нравится
Реакции: Just
Сообщения
494
Реакции
340
Помог
11 раз(а)
@bizon,ты хочешь сказать что посылать задачу каждому игроку здесь уместно?
Хоть здесь это и не нужно, но я про ситуацию в целом.
Я в общем, если помимо посыла мессаги всем был бы какой-то цикл с обработкой всех игроков, то вместо цикла таск для каждого игрока будет правильнее.
Это если ТС будет что-то добавлять, ему на будущее.
 

Albertio

скриптизёр
Сообщения
336
Реакции
393
Предупреждения
5
Помог
7 раз(а)
Не знаю, но мне такой вариант больше нравится. Худ во первых адекватнее работает, чем dhud, так же идет выборка игроков исключая ботов и hltv. Так же убрана лишняя информация, по типу "Карты", не вижу смысла.
Код:
#include <amxmodx>

new g_szMapName[64], g_szHostname[64];

new g_iHudSyncObj;

public plugin_init()
{
    register_plugin("Info Message HUD", "1.0", "Blizzard");

    get_mapname(g_szMapName, charsmax(g_szMapName));

    bind_pcvar_string(get_cvar_pointer("hostname"), g_szHostname, charsmax(g_szHostname));
 
    g_iHudSyncObj = CreateHudSyncObj();

    set_task(1.0, "InfoMsg", .flags = "b");
}

public InfoMsg()
{
    new iPlayers[MAX_PLAYERS], iNumPlayers;
    get_players(iPlayers, iNumPlayers, "ch");

    for(new i; i < iNumPlayers; i++)
    {
        new szTimeLeft[256];
        format_time(szTimeLeft, charsmax(szTimeLeft), "Осталось времени до конца карты: %M:%S", get_timeleft());
        add(szTimeLeft, charsmax(szTimeLeft), fmt(" %s | %s", g_szHostname, g_szMapName));
        
        set_hudmessage(255, 255, 255, -1.0, 0.0, 0, 6.0, 1.0);
        ShowSyncHudMsg(iPlayers[i], g_iHudSyncObj, "%s", szTimeLeft);
    }
}
1hp_backtoback0001.png
 
Сообщения
101
Реакции
-11
Помог
2 раз(а)
Зачем это делать в цикле, для каждого игрока?? Если это можно сделать единажды!!!
Код:
format_time(szTimeLeft, charsmax(szTimeLeft), "Осталось времени до конца карты: %M:%S", get_timeleft());
        add(szTimeLeft, charsmax(szTimeLeft), fmt(" %s | %s", g_szHostname, g_szMapName));
 

Albertio

скриптизёр
Сообщения
336
Реакции
393
Предупреждения
5
Помог
7 раз(а)
Nemec, ну, единожды выборку ты точно не сделаешь, а вот отсеить ботов и хлтв можно при заходе игрока с помощью проверок, вешать таск и удалять при дисконнекте
 
Сообщения
101
Реакции
-11
Помог
2 раз(а)
2 натива можно же вынести за пределы цикла?
 

Albertio

скриптизёр
Сообщения
336
Реакции
393
Предупреждения
5
Помог
7 раз(а)
Nemec, а ты про функции эти, изначально я так и сделал, но потом зачем то исправил)
 
Сообщения
101
Реакции
-11
Помог
2 раз(а)
Не изначально, а так должно быть!!! Зачем нам лишние итерации?

Потом можно в plugin_init записать в массив название карты и передать таском, что бы не использовать глобальную переменную, но это не значительно))
 

Albertio

скриптизёр
Сообщения
336
Реакции
393
Предупреждения
5
Помог
7 раз(а)
Nemec, не высасывай из пальца проблему.
Код:
#include <amxmodx>

#define IM_TASK_INDEX 1488

new g_szMapName[64], g_szHostname[64];

new g_iHudSyncObj;

public plugin_init()
{
    register_plugin("Info Message HUD", "1.0", "Blizzard");

    get_mapname(g_szMapName, charsmax(g_szMapName));

    bind_pcvar_string(get_cvar_pointer("hostname"), g_szHostname, charsmax(g_szHostname));
 
    g_iHudSyncObj = CreateHudSyncObj();
}

public client_putinserver(id)
{
    set_task(1.0, "InfoMsg", id + IM_TASK_INDEX, .flags = "b");
}

public client_disconnected(id)
{
    remove_task(id - IM_TASK_INDEX);
}

public InfoMsg(taskid)
{
    new id = taskid - IM_TASK_INDEX;
    
    if(!is_user_connected(id))
    {
        return;
    }

    new szTimeLeft[256];
    format_time(szTimeLeft, charsmax(szTimeLeft), "Осталось времени до конца карты: %M:%S", get_timeleft());
    add(szTimeLeft, charsmax(szTimeLeft), fmt(" %s | %s", g_szHostname, g_szMapName));
        
    set_hudmessage(255, 255, 255, -1.0, 0.0, 0, 6.0, 1.0);
    ShowSyncHudMsg(id, g_iHudSyncObj, "%s", szTimeLeft);
}
 
Сообщения
101
Реакции
-11
Помог
2 раз(а)
Какая проблема? Если ты не понимаешь, что можно сделать один раз ты делаешь их равному количеству игроков
 
  • Не нравится
Реакции: Just
Сообщения
101
Реакции
-11
Помог
2 раз(а)
Обсуждалась другая тема, а не че, или получать каждую секунду карту и 15 игрокам это норма?вот про это речь была
 
Сообщения
192
Реакции
148
Помог
1 раз(а)
Вы шо под пивом?
В plugin_init получаете название карты, запускаете таск и в 4й параметр название карты. В таске получаете название карты, составляете сообщение и отображает через ShowSyncHudMsg(или шо там у вас) с 0 таргетом(1й аргумент)
А ещё таск можно на энтитю заменить
 

Albertio

скриптизёр
Сообщения
336
Реакции
393
Предупреждения
5
Помог
7 раз(а)
Ruby, а ты сам случаем, не под незаконными веществами растворительными? Зачем мне посылать в таск 4 параметром названия карты, что бы заново его там получить? Записываем на диктафон, что пишем и слушаем, а потом понимаем, что написали дичь полную.
 
Сообщения
1,016
Реакции
818
Помог
10 раз(а)
Вы бы лучше помогали так активно где по 1к строк сложного кода, а то включаете экспертов из-за двух строк кода
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу