Hud в CS:GO... Работает...

TotSamiiRodya

Участник
Сообщения
246
Реакции
107
Слушай,а если поставить плагин,который при входе пишет,ну как переписать "тип в нашей группе сейчас розгрыш",как это сделать? там просто посмотрел пишет тип с какой страны и т.п.
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Слушай,а если поставить плагин,который при входе пишет,ну как переписать "тип в нашей группе сейчас розгрыш",как это сделать? там просто посмотрел пишет тип с какой страны и т.п.
Хз. Я бы наверное реализовал так:

PHP:
#include <sourcemod>
#include <sdktools>

#pragma semicolon 1
#pragma newdecls required

public void OnClientPutInServer(int client)
{
   CreateTimer(5.0, TimerWelcome, client, TIMER_FLAG_NO_MAPCHANGE);
}

public Action TimerWelcome(Handle timer, int client)
{
   int ent = CreateEntityByName("game_text");
 
   if(IsClientInGame(client))
   {
       DispatchKeyValue(ent, "channel", "1");
       DispatchKeyValue(ent, "color", "255 255 255");
       DispatchKeyValue(ent, "color2", "0 0 0");
       DispatchKeyValue(ent, "effect", "0");
       DispatchKeyValue(ent, "fadein", "1.5");
       DispatchKeyValue(ent, "fadeout", "0.5");
       DispatchKeyValue(ent, "fxtime", "0.25"); 
       DispatchKeyValue(ent, "holdtime", "5.0");
     
       DispatchKeyValue(ent, "message", "В нашей группе конкурс!\nА ну быстро метнулся и поставил лайк!\nСсылка на группу: http://vk.com/...");
     
       DispatchKeyValue(ent, "spawnflags", "0");
       DispatchKeyValue(ent, "x", "0.25");
       DispatchKeyValue(ent, "y", "0.3");
       DispatchSpawn(ent);
       SetVariantString("!activator");
       AcceptEntityInput(ent, "display", client);
       AcceptEntityInput(ent, "Kill");
     
       return Plugin_Handled;
   }
 
   return Plugin_Continue;
}
А если мы создаем энтити, разве ее потом не нужно удалять?
Ой все.
Поправил #2.

Читаем мою подпись.
Оффтоп
 
Последнее редактирование:

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
Таймеры кушают поболее чем Delayed в Input'ах (через OnUser1 FireUser1 лучше сделать)
P.S. Везде где можно лучше использовать это (пруф не покажу, но точно помню где-то видел такую тему, ну и я так привык делать со всеми Entity-объектами)
 

1mpulse

node index.js
Сообщения
122
Реакции
165
Хз. Я бы наверное реализовал так:

PHP:
#include <sourcemod>
#include <sdktools>

#pragma semicolon 1
#pragma newdecls required

public void OnClientPutInServer(int client)
{
   CreateTimer(5.0, TimerWelcome, client, TIMER_FLAG_NO_MAPCHANGE);
}

public Action TimerWelcome(Handle timer, int client)
{
   int ent = CreateEntityByName("game_text");
  
   DispatchKeyValue(ent, "channel", "1");
   DispatchKeyValue(ent, "color", "255 255 255");
   DispatchKeyValue(ent, "color2", "0 0 0");
   DispatchKeyValue(ent, "effect", "0");
   DispatchKeyValue(ent, "fadein", "1.5");
   DispatchKeyValue(ent, "fadeout", "0.5");
   DispatchKeyValue(ent, "fxtime", "0.25");
   DispatchKeyValue(ent, "holdtime", "5.0");
 
   DispatchKeyValue(ent, "message", "В нашей группе конкурс!\nА ну быстро метнулся и поставил лайк !!!\nСсылка на группу: http://vk.com/...");
 
   DispatchKeyValue(ent, "spawnflags", "0");
   DispatchKeyValue(ent, "x", "0.25");
   DispatchKeyValue(ent, "y", "0.3");
   DispatchSpawn(ent);
   SetVariantString("!activator");
   AcceptEntityInput(ent, "display", client);
   AcceptEntityInput(ent, "Kill");
 
   return Plugin_Handled;
}

Ой все.
Поправил #2.

Читаем мою подпись.
Сделай вот так:
C-подобный:
SetVariantString("OnUser1 !self:kill::5.1:1");
AcceptEntityInput(ent, "AddOutput");
AcceptEntityInput(ent, "FireUser1");
p.s. Не гори на меня :biggrin:
 

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
Я имел ввиду Delayed для вывода сообщения, и через HookSingleEntityOutput отловить OnUser1
 

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #28
Почему это сделали, когда я закрыл серверы :с

Оффтоп
Оффтоп
 

TotSamiiRodya

Участник
Сообщения
246
Реакции
107
Хз. Я бы наверное реализовал так:

PHP:
#include <sourcemod>
#include <sdktools>

#pragma semicolon 1
#pragma newdecls required

public void OnClientPutInServer(int client)
{
   CreateTimer(5.0, TimerWelcome, client, TIMER_FLAG_NO_MAPCHANGE);
}

public Action TimerWelcome(Handle timer, int client)
{
   int ent = CreateEntityByName("game_text");
 
   if(IsClientInGame(client))
   {
       DispatchKeyValue(ent, "channel", "1");
       DispatchKeyValue(ent, "color", "255 255 255");
       DispatchKeyValue(ent, "color2", "0 0 0");
       DispatchKeyValue(ent, "effect", "0");
       DispatchKeyValue(ent, "fadein", "1.5");
       DispatchKeyValue(ent, "fadeout", "0.5");
       DispatchKeyValue(ent, "fxtime", "0.25");
       DispatchKeyValue(ent, "holdtime", "5.0");
    
       DispatchKeyValue(ent, "message", "В нашей группе конкурс!\nА ну быстро метнулся и поставил лайк!\nСсылка на группу: http://vk.com/...");
    
       DispatchKeyValue(ent, "spawnflags", "0");
       DispatchKeyValue(ent, "x", "0.25");
       DispatchKeyValue(ent, "y", "0.3");
       DispatchSpawn(ent);
       SetVariantString("!activator");
       AcceptEntityInput(ent, "display", client);
       AcceptEntityInput(ent, "Kill");
    
       return Plugin_Handled;
   }
 
   return Plugin_Continue;
}

Ой все.
Поправил #2.

Читаем мою подпись.
Оффтоп
Спасибо,все работает,ждем цветов)0
 

komashchenko

Идиот
Сообщения
916
Реакции
2,569
Добавь в рекламу худ с выбором цветов
Оффтоп
 

TotSamiiRodya

Участник
Сообщения
246
Реакции
107
Оффтоп
Оффтоп
 

Yura7181

Участник
Сообщения
678
Реакции
594
Возможно сделать вывод сообщения в несколько строк или рядов разного цвета? :ab:
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Возможно сделать вывод сообщения в несколько строк или рядов разного цвета? :ab:
Ну к примеру я сделал так...

PHP:
#include <sourcemod>

#pragma semicolon 1
#pragma newdecls required

public void OnClientPutInServer(int client)
{
   if(IsClientInGame(client))
   {
       CreateTimer(10.0, TimerWelcome, client, TIMER_FLAG_NO_MAPCHANGE);
   }
}

public Action TimerWelcome(Handle timer, int client)
{
   if(IsClientInGame(client))
   {
       SetHudTextParams(0.40, 0.80, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
       ShowHudText(client, -1, "Добро пожаловать, %N", client);

      // Создаем новый худ и меняем координаты(сделал чуть ниже)
       SetHudTextParams(0.40, 0.83, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
       ShowHudText(client, -1, "Вы играете на проекте 'HLMod.ru'");

       CreateTimer(10.0, TimerWelcome2, client, TIMER_FLAG_NO_MAPCHANGE);
   }
}

public Action TimerWelcome2(Handle timer, int client)
{
   if(IsClientInGame(client))
   {
       Handle cvar = FindConVar("hostip");
       int hostip = GetConVarInt(cvar);

       Handle hostport = FindConVar("hostport");
       char ServerIp[32];
       char ServerPort[1024];

       FormatEx(ServerIp, 32, "%u.%u.%u.%u", hostip >>> 24 & 255, hostip >>> 16 & 255, hostip >>> 8 & 255, hostip & 255);
       GetConVarString(hostport, ServerPort, 1024);

       SetHudTextParams(0.40, 0.80, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
       ShowHudText(client, -1, "Наш ip: %s:%s", ServerIp, ServerPort);

       CreateTimer(10.0, TimerWelcome3, client, TIMER_FLAG_NO_MAPCHANGE);
   }
}

public Action TimerWelcome3(Handle timer, int client)
{
   if(IsClientInGame(client))
   {
       SetHudTextParams(0.40, 0.80, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
       ShowHudText(client, -1, "Контакты гл.администратора...\n\nВконтакте: vk.com/...");
   }
}

Counter-strike  Global Offensive 03.21.2017 - 15.50.20.04.png

Все изменяйте в исходнике плагина, так, чисто для примера...
 

Вложения

  • WelcomeInfoNoCvars.rar
    7.3 КБ · Просмотры: 15

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Неплохой вариант, как положить сервер, когда нет защиты от перезаходов. Таймеры достаточно "большие", их необходимо убивать. Не говоря уже о том, что может выдать никнейм предыдущего игрока, а потом уже свой.
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Отличный вариант, как положить сервер, когда нет защиты от перезаходов. Таймеры достаточно большие, их необходимо убивать. Не говоря уже о том, что может выдать никнейм предыдущего игрока, а потом уже свой.

Поясни мне пожалуйста, а с чего это должно выдать чужой никнейм в худе?
Ведь данные как бы привязываются к таймеру...
А когда новый игрок заходит на сервере, создается новый таймер...

PHP:
#include <sourcemod>

#pragma semicolon 1
#pragma newdecls required

Handle TW[MAXPLAYERS+1];
Handle TW2[MAXPLAYERS+1];

public void OnClientPutInServer(int client)
{
   if(IsClientInGame(client))
   {
       CreateTimer(6.0, TimerWelcome, client, TIMER_FLAG_NO_MAPCHANGE);
   }
}

public void OnClientDisconnect(int client)
{
   if((TW[client]) != null)
   {
       KillTimer(TW[client]);
       TW[client] = null;
   }
 
   if(TW2[client] != null)
   {
       KillTimer(TW2[client]);
       TW2[client] = null;
   }
}

public Action TimerWelcome(Handle timer, int client)
{
   if(IsClientInGame(client))
   {
       SetHudTextParams(0.40, 0.80, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
       ShowHudText(client, -1, "Добро пожаловать, %N", client);
   
       SetHudTextParams(0.40, 0.83, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
       ShowHudText(client, -1, "Вы играете на проекте 'HLMod.ru'");

       TW[client] = CreateTimer(6.0, TimerWelcome2, client, TIMER_FLAG_NO_MAPCHANGE);
   }
}

public Action TimerWelcome2(Handle timer, int client)
{
   TW[client] = null;

   if(IsClientInGame(client))
   {
       Handle cvar = FindConVar("hostip");
       int hostip = GetConVarInt(cvar);

       Handle hostport = FindConVar("hostport");
       char ServerIp[32];
       char ServerPort[1024];

       FormatEx(ServerIp, 32, "%u.%u.%u.%u", hostip >>> 24 & 255, hostip >>> 16 & 255, hostip >>> 8 & 255, hostip & 255);
       GetConVarString(hostport, ServerPort, 1024);

       SetHudTextParams(0.40, 0.80, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
       ShowHudText(client, -1, "Наш ip: %s:%s", ServerIp, ServerPort);

       TW2[client] = CreateTimer(6.0, TimerWelcome3, client, TIMER_FLAG_NO_MAPCHANGE);
   }
}

public Action TimerWelcome3(Handle timer, int client)
{
   TW2[client] = null;

   if(IsClientInGame(client))
   {
       SetHudTextParams(0.40, 0.80, 5.0, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255), 255, 0, 0.25, 1.0, 1.0);
       ShowHudText(client, -1, "Контакты гл.администратора...\n\nВконтакте: vk.com/...");
   }
}

Почему с этими таймерами все так сложно...
Какой раз я уже с ними косячу.
 

Вложения

  • WelcomeInfoNoCvars#2.rar
    7.6 КБ · Просмотры: 7

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
когда новый игрок заходит на сервере, создается новый таймер
Старый при этом никуда не девается, ведь у него есть несколько секунд для исполнения. А игрок может зайти вслед за вышедшем и за пару секунд. Или, пример ещё проще: сообщения нет, а игрок перезашёл - получит их уже два.
CreateTimer(6.0, TimerWelcome, client, TIMER_FLAG_NO_MAPCHANGE);
А тут кто делать будет?
 

1mpulse

node index.js
Сообщения
122
Реакции
165
Неплохой вариант, как положить сервер, когда нет защиты от перезаходов. Таймеры достаточно "большие", их необходимо убивать. Не говоря уже о том, что может выдать никнейм предыдущего игрока, а потом уже свой.
Ну у него же в подписи все написано.:biggrin:
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
у него же в подписи все написано
Знаю. Оптимизация - его дело, но он предлагает хороший вариант "избавления от конкурентов", достаточно опасный. Это нельзя не упомянуть.
 
Сверху Снизу