Худ в CS:GO

Boda

Участник
Сообщения
82
Реакции
7
Заинтересовала одна вещь - HUD в CS:GO;

Пытался реализовать, но у меня ничего абсолютно не получилось, есть ли знатоки, которые могут объяснить как работать с HUD'ом в SourcePawn и показать примеры? Был бы очень благодарен за помощь.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,519
Реакции
4,979
Ты имеешь в виду цветной текст на экране?
Если да, то точно так же, как и в остальных играх.
 

Islam Cherkess

Там мля о мля
Сообщения
1,504
Реакции
895
@Grey83 , он скорее всего имеет ввиду худ другой)
Другая стилистика здоровья,миникарты и так далее
 

Boda

Участник
Сообщения
82
Реакции
7
Ты имеешь в виду цветной текст на экране?
Если да, то точно так же, как и в остальных играх.
Да, имею ввиду цветной текст и т.п., я пытался в паблик плагинах разобраться как реализуется, но при попытке что-то сделать оно просто не работало
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,519
Реакции
4,979
@Boda, ну нужно делать таймер (обычно не более 10 секунд), если нужно держать надпись постоянно. Обновлять можно как таймером, так и по событию.
У меня в плагине сделан вывод самой информации так:
PHP:
    SetHudTextParams(fPosX, fPosY, UPDATE_INTERVAL + 0.1, iColor[state][0], iColor[state][1], iColor[state][2], 127, 0, 0.0, 0.1, 0.1);
    if(state > 1) ShowHudText(client, -1, cState[state]);
    else ShowHudText(client, -1, "%s%i\n♦%d", cState[state], GetClientHealth(client), GetEntProp(client, Prop_Data, "m_ArmorValue"));
SetHudTextParams · halflife · SourceMod Scripting API Reference
ShowHudText · halflife · SourceMod Scripting API Reference
У меня в ShowHudText() в качестве канала для вывода выбран последний использованный (-1), это нормально если у тебя работает только 1 плагин с выводом информации в HUD.
Если таких плагинов больше одного, то они будут перебивать работу друг-друга, если используется один и тот же канал (кстати, некоторые карты тоже могут так делать). Поэтому желательно задавать разные каналы для разных плагинов (емнип, использовать одновременно можно всего 6 каналов).

Есть ещё CreateHudSynchronizer и ShowSyncHudText, но по ним тебе больше скажет @Крузяра
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #6
Есть ещё CreateHudSynchronizer и ShowSyncHudText, но по ним тебе больше скажет @Крузяра
По факту, CreateHudSynchronizer() создаёт тоже своеобразный виртуальный канал, который никак пересекаться с вручную задаваемыми в ShowHudText() не будет. Ну, и соответственно, на ShowSyncHudText() вместо числового идентификатора канала, передаётся хендл.
 

Boda

Участник
Сообщения
82
Реакции
7
@Boda, ну нужно делать таймер (обычно не более 10 секунд), если нужно держать надпись постоянно. Обновлять можно как таймером, так и по событию.
У меня в плагине сделан вывод самой информации так:
PHP:
    SetHudTextParams(fPosX, fPosY, UPDATE_INTERVAL + 0.1, iColor[state][0], iColor[state][1], iColor[state][2], 127, 0, 0.0, 0.1, 0.1);
    if(state > 1) ShowHudText(client, -1, cState[state]);
    else ShowHudText(client, -1, "%s%i\n♦%d", cState[state], GetClientHealth(client), GetEntProp(client, Prop_Data, "m_ArmorValue"));
SetHudTextParams · halflife · SourceMod Scripting API Reference
ShowHudText · halflife · SourceMod Scripting API Reference
У меня в ShowHudText() в качестве канала для вывода выбран последний использованный (-1), это нормально если у тебя работает только 1 плагин с выводом информации в HUD.
Если таких плагинов больше одного, то они будут перебивать работу друг-друга, если используется один и тот же канал (кстати, некоторые карты тоже могут так делать). Поэтому желательно задавать разные каналы для разных плагинов (емнип, использовать одновременно можно всего 6 каналов).

Есть ещё CreateHudSynchronizer и ShowSyncHudText, но по ним тебе больше скажет @Крузяра
А можно ли как-то отследить канал, который не используется и использовать его? Ну, допустим, если я не знаю, какие каналы задействуются
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #8
@Boda, любое 4-ех байтовое число введите, не ошибётесь. Всё равно клиент может отрисовывать максимум 6 HUD-интерфейсов.
 

Boda

Участник
Сообщения
82
Реакции
7
@Boda, любое 4-ех байтовое число введите, не ошибётесь. Всё равно клиент может отрисовывать максимум 6 HUD-интерфейсов.
А как можно сделать динамичное обновление текста в HUD'e?

Просто сейчас накладывается обновляемая информация друг на друга

Не разобрался с методом Grey'я
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,519
Реакции
4,979
@Boda, при выводе информации в тот же канал старая информация заменяет старую
 
  • Мне нравится
Реакции: Boda
Сверху Снизу