[VIP] Join Hud Message

[VIP] Join Hud Message v2.1.4

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
  • Автор ресурса
  • #1
BreakSharp submitted a new resource:

[HUD]Join Message - Сообщение о подключении VIP игрока в HUD

Обычный JoinMsg, но для VIP в HUD
yxaOruSAtxU.jpg

#ToDo
  • Кастомное сообщение о подключении v1.1

Read more about this resource...
 

over_trax

Участник
Сообщения
1,451
Реакции
488
Отличная идея, хочу предложить добавить рандом фразы при коннекте випа, например: в игру залетает, на сервер врывается, посторонитесь игрок идет и так далее, как в дискорде.
 

MaZa

Участник
Сообщения
1,732
Реакции
980
Предлагаю добавить настройки для отключения этой фичи, к примеру в !settings,многим будут мешать эти сообщения.
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
  • Автор ресурса
  • #4
Предлагаю добавить настройки для отключения этой фичи, к примеру в !settings,многим будут мешать эти сообщения.
PHP:
#include <sourcemod>
#include <vip_core>

#pragma newdecls required
#pragma semicolon 1

#define VIP_MSG         "JoinMessage"
#define    VIP_MSGCOLOR    "JoinMessage_Color"
#define    VIP_MSGPOS    "JoinMessage_Position"

bool gb_VisMsg[MAXPLAYERS+1] = {true, ...};
int gi_ColorHUD[4];
float gf_Position[2];

public Plugin myinfo =
{
    name            =    "VIP Connected Msg",
    author            =    "Skeriiz, HLmod",
    description    =    "Оповещание о подключении VIP в HUD",
    version        =    "1.0",
    url            =    "https://neserv.ru/"
};

public void OnPluginStart(){
    RegConsoleCmd("sm_joinmsg", JoinMSG);
    HookEvent("player_connect_full", _FullConnect, EventHookMode_Post);
    if(VIP_IsVIPLoaded())
        VIP_OnVIPLoaded();
}
public int VIP_OnVIPLoaded(){
    VIP_RegisterFeature(VIP_MSG, BOOL);
    VIP_RegisterFeature(VIP_MSGCOLOR, STRING, HIDE);
    VIP_RegisterFeature(VIP_MSGPOS, STRING, HIDE);
}
public void OnPluginEnd(){
    if(CanTestFeatures() && GetFeatureStatus(FeatureType_Native, "VIP_UnregisterFeature") == FeatureStatus_Available){
        VIP_UnregisterFeature(VIP_MSG);
        VIP_UnregisterFeature(VIP_MSGCOLOR);
        VIP_UnregisterFeature(VIP_MSGPOS);
    }
}
public Action JoinMSG(int client, int args)    {
    if(!ValidPlayer(client))
        return Plugin_Handled;
    if(args>0)
        return Plugin_Handled;
    gb_VisMsg[client] = !gb_VisMsg[client];
    PrintToChat(client, "[JM] - Вы %s оповещание!", (gb_VisMsg[client]) ? "включили" : "выключили");
    return    Plugin_Handled;
      
}

public Action _FullConnect(Event event, const char[] name, bool dontBroadcast){
  
    int client = GetClientOfUserId(event.GetInt("userid"));
    if(!ValidPlayer(client))
        return Plugin_Handled;
    if(client && VIP_IsClientVIP(client) && VIP_IsClientFeatureUse(client, VIP_MSG)){
        char szHUDColor[32], szHUDPosition[32]; 
        VIP_GetClientFeatureString(client, VIP_MSGCOLOR, szHUDColor, sizeof(szHUDColor));
        VIP_GetClientFeatureString(client, VIP_MSGPOS, szHUDPosition, sizeof(szHUDPosition));
        SetColor(szHUDColor);
        SetPosition(szHUDPosition);
        CreateTimer(10.0, view_as<Timer>(Msgs), event.GetInt("userid"), TIMER_FLAG_NO_MAPCHANGE);
    }
    return Plugin_Handled;
} 
void Msgs(Handle hTime, int userid)    {
    int client = GetClientOfUserId(userid);
    char szHUD[64];
    FormatEx(szHUD, sizeof(szHUD), "В игру залетает VIP: [%N]",    client);
  
    for(int i =1; i<=MaxClients; i++)
        if(ValidPlayer(i) && gb_VisMsg[i]){
            SetHudTextParams(gf_Position[0], gf_Position[1], 5.0, gi_ColorHUD[0] , gi_ColorHUD[1], gi_ColorHUD[2], gi_ColorHUD[3], 0, 0.25, 1.0, 1.0);
            ShowHudText(i, -1, szHUD);
        }
    KillTimer(hTime);
    return;
}
void SetColor(const char[] szBuffer){
    char sExplodedColors[4][16];
    ExplodeString(szBuffer, " ", sExplodedColors, 4, 16);
  
    for(int i = 0; i <= 3; i++)
        gi_ColorHUD[i] = StringToInt(sExplodedColors[i]);
}
void SetPosition(const char[] szBuffer){
    char sExplodedPosition[2][16];
    ExplodeString(szBuffer, " ", sExplodedPosition, 2, 16);
  
    gf_Position[0] = StringToFloat(sExplodedPosition[0]);
    gf_Position[1] = StringToFloat(sExplodedPosition[1]);

}

bool ValidPlayer(int client)    {    return    (client>0 && client<=MaxClients && IsClientInGame(client) && !IsFakeClient(client) && !IsClientSourceTV(client));    }
 
Последнее редактирование:
  • Мне нравится
Реакции: MaZa

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
  • Автор ресурса
  • #5
Пользователь BreakSharp обновил ресурс [HUD]Join Message новой записью:

Обновление 1.1

  • Добавлено 14 кастомных фраз, которые выбираются рандомно
  • Добавлена возможность вкл./выкл. возможность отключать VIP игрокам JoinMsg
  • Добавлена команда !joinmsg - вкл./выкл. отображение JoinMsg VIP игрокам, не будет работать, если вы отключите эту возможность в vip_joinmsg.cfg

Узнать больше об этом обновлении...
 

MaZa

Участник
Сообщения
1,732
Реакции
980
Еще бы квар чтобы админов не светило при подключении к примеру как в MF connect и будет супер.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #8
@Skeriiz, а нахрена это?
PHP:
view_as<Timer>(Msgs)
Если функция чисто не помечена как public, то это не требуется. Плюс any приравнивается к int компилятором без проблем.
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
  • Автор ресурса
  • #9
Пользователь Skeriiz обновил ресурс [VIP] Join Message[HUD] новой записью:

Обновление 1.2

  • Добавлен квар "VIP_JM_VISADMIN" - Включить/ Выключить скрытие админов (С флагом ROOT или BAN).
  • Залиты актуальные файлы. (Ответ на пост )
  • Конфиг переехал в папку модулей (cfg/vip)

Узнать больше об этом обновлении...
 

over_trax

Участник
Сообщения
1,451
Реакции
488
Когда два игрока заходят одновременно - надписи накладываются друг на друга
@Skeriiz
 

Вложения

  • upload_2018-5-24_16-41-21.png
    upload_2018-5-24_16-41-21.png
    406.2 КБ · Просмотры: 188

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #11
SyncHUD должен решить проблему. Он видимо тут не применяется.
 

Stepan1

Участник
Сообщения
84
Реакции
2
L 05/25/2018 - 17:58:32: [SM] Exception reported: Array index out-of-bounds (index 14, limit 14)
L 05/25/2018 - 17:58:32: [SM] Blaming: [VIP]/VIP_JoinMsg.smx
L 05/25/2018 - 17:58:32: [SM] Call stack trace:
L 05/25/2018 - 17:58:32: [SM] [1] Line 115, VIP_JoinMsg.sp::_FullConnect
 

StreeT

:)
Сообщения
279
Реакции
54
@Skeriiz, добрый день, а можно сделать так, что бы плагин работал без Вип от Рико ? У меня к примеру випки нету, но есть по флагам привилегии, а идея людям понравится
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
  • Автор ресурса
  • #16
@Skeriiz, добрый день, а можно сделать так, что бы плагин работал без Вип от Рико ? У меня к примеру випки нету, но есть по флагам привилегии, а идея людям понравится
PHP:
/*                       
    Player's join msg.
*/
#include <sourcemod>

#pragma newdecls required
#pragma semicolon 1

#define FLAGS(%0)    GetUserFlagBits(%0) & (ADMFLAG_ROOT | ADMFLAG_BAN)

Handle gh_SyncHUD = null;

ConVar    cv_Color            =    null,
        cv_INVisADMIN    =    null,
        cv_Position        =    null,
        cv_Flag             =     null;
bool gb_INVisADMIN;

char gszColorHUD[16];
char gszPositionHUD[16];
char gszFlag[8];

int gi_ColorHUD[4];
float gf_Position[2];

static const char g_szFrazeList[][] =
{
    "[%N] пришел. Вечеринка окончена!", "Это [%N]! Восславь солнце!",
    "Держитесь. [%N] только что зашел на сервер!", "Игрок [%N] готов!",
    "Дикий [%N] появился", "Вызов брошен - [%N] явился",
    "Вжух. [%N] только что приземлился", "Показался большой [%N]",
    "[%N] заспавнился на сервере", "[%N] здесь, как и было предсказано",
    "Эй, друзья! [%N] уже здесь!", "[%N] заскочил на сервер. Кенгуру!!",
    "Мы ожидали Вас [%N]", "[%N] уже тут. Прячьте свои бананы."
};

public Plugin myinfo =
{
    name            =    "Connected Msg [HUD]",
    author            =    "Skeriiz, HLmod",
    description    =    "Оповещание о подключении в HUD",
    version        =    "1.0",
    url            =    "https://neserv.ru/"
};

public void OnPluginStart(){

    cv_Color = CreateConVar("JM_COLORHUD", "244 12 15 255", "Цвет HUD msg в RGBA");
    cv_Color.AddChangeHook(OnCvarChange);
    
    cv_Position = CreateConVar("JM_POSITION", "0.005 0.5", "Позиция HUD msg на экране XY");
    cv_Position.AddChangeHook(OnCvarChange);
    
    cv_INVisADMIN = CreateConVar("JM_VISADMIN", "0", "Включить/ Выключить скрытие админов",_, true, 0.0, true, 1.0);
    cv_INVisADMIN.AddChangeHook(OnCvarChange);
    
    cv_Flag = CreateConVar("JM_ACCESSFLAG", "s", "Флаг доступа, оставить пустым, если для всех");
    cv_Flag.AddChangeHook(OnCvarChange);
    
    
    HookEvent("player_connect_full", _FullConnect, EventHookMode_Post);
    gh_SyncHUD = CreateHudSynchronizer();
    
    AutoExecConfig(true,"joinmsg");
}
public void OnCvarChange(ConVar cv, const char[] oldValue, const char[] newValue)    {   
    if(cv == cv_INVisADMIN)
        gb_INVisADMIN = cv.BoolValue;
    
    else if(cv == cv_Color)
        cv.GetString(gszColorHUD, sizeof(gszColorHUD));
    
    else if(cv == cv_Position)
        cv.GetString(gszPositionHUD, sizeof(gszPositionHUD));
    
    else if(cv == cv_Flag)
        cv.GetString(gszFlag, sizeof(gszFlag));
}
public void OnConfigsExecuted()    {
    cv_Color.GetString(gszColorHUD, sizeof(gszColorHUD));
    SetColor();
    
    cv_Position.GetString(gszPositionHUD, sizeof(gszPositionHUD));
    SetPosition();
    
    gb_INVisADMIN = cv_INVisADMIN.BoolValue;
    cv_Flag.GetString(gszFlag, sizeof(gszFlag));
    TrimString(gszFlag);
}
public Action _FullConnect(Event event, const char[] name, bool dontBroadcast){
    
    int client = GetClientOfUserId(event.GetInt("userid"));
    if(!ValidPlayer(client))
        return Plugin_Handled;
    if(gszFlag[0] != 0){
        if(!HAS_Flag(client))
            return    Plugin_Handled;
    }
    if(gb_INVisADMIN){
        if (FLAGS(client))
            return    Plugin_Handled;
    }       
    char szHUD[128];
    FormatEx(szHUD, sizeof(szHUD),     g_szFrazeList[GetRandomInt(1, sizeof(g_szFrazeList))-1],    client);
    
    for(int i=1; i<=MaxClients; i++)
        if(ValidPlayer(i)){
            SetHudTextParams(gf_Position[0], gf_Position[1], 3.0, gi_ColorHUD[0] , gi_ColorHUD[1], gi_ColorHUD[2], gi_ColorHUD[3], 0, 0.25, 1.0, 1.0);
            ShowSyncHudText(i, gh_SyncHUD, szHUD);
        }
    return Plugin_Handled;
}
    
void SetColor(){
    char sExplodedColors[4][16];
    ExplodeString(gszColorHUD, " ", sExplodedColors, 4, 16);
    
    for(int i = 0; i <= 3; i++)
        gi_ColorHUD[i] = StringToInt(sExplodedColors[i]);
}
void SetPosition(){
    char sExplodedPosition[2][16];
    ExplodeString(gszPositionHUD, " ", sExplodedPosition, 2, 16);
    
    gf_Position[0] = StringToFloat(sExplodedPosition[0]);
    gf_Position[1] = StringToFloat(sExplodedPosition[1]);

}

bool HAS_Flag(int client)    { return (GetUserFlagBits(client) & ReadFlagString(gszFlag)) ? true : false; }
bool ValidPlayer(int client)    {    return    (client>0 && client<=MaxClients && IsClientInGame(client) && !IsFakeClient(client) && !IsClientSourceTV(client));    }
 

StreeT

:)
Сообщения
279
Реакции
54
PHP:
/*                      
    Player's join msg.
*/
#include <sourcemod>

#pragma newdecls required
#pragma semicolon 1

#define FLAGS(%0)    GetUserFlagBits(%0) & (ADMFLAG_ROOT | ADMFLAG_BAN)

Handle gh_SyncHUD = null;

ConVar    cv_Color            =    null,
        cv_INVisADMIN    =    null,
        cv_Position        =    null,
        cv_Flag             =     null;
bool gb_INVisADMIN;

char gszColorHUD[16];
char gszPositionHUD[16];
char gszFlag[8];

int gi_ColorHUD[4];
float gf_Position[2];

static const char g_szFrazeList[][] =
{
    "[%N] пришел. Вечеринка окончена!", "Это [%N]! Восславь солнце!",
    "Держитесь. [%N] только что зашел на сервер!", "Игрок [%N] готов!",
    "Дикий [%N] появился", "Вызов брошен - [%N] явился",
    "Вжух. [%N] только что приземлился", "Показался большой [%N]",
    "[%N] заспавнился на сервере", "[%N] здесь, как и было предсказано",
    "Эй, друзья! [%N] уже здесь!", "[%N] заскочил на сервер. Кенгуру!!",
    "Мы ожидали Вас [%N]", "[%N] уже тут. Прячьте свои бананы."
};

public Plugin myinfo =
{
    name            =    "Connected Msg [HUD]",
    author            =    "Skeriiz, HLmod",
    description    =    "Оповещание о подключении в HUD",
    version        =    "1.0",
    url            =    "https://neserv.ru/"
};

public void OnPluginStart(){

    cv_Color = CreateConVar("JM_COLORHUD", "244 12 15 255", "Цвет HUD msg в RGBA");
    cv_Color.AddChangeHook(OnCvarChange);
   
    cv_Position = CreateConVar("JM_POSITION", "0.005 0.5", "Позиция HUD msg на экране XY");
    cv_Position.AddChangeHook(OnCvarChange);
   
    cv_INVisADMIN = CreateConVar("JM_VISADMIN", "0", "Включить/ Выключить скрытие админов",_, true, 0.0, true, 1.0);
    cv_INVisADMIN.AddChangeHook(OnCvarChange);
   
    cv_Flag = CreateConVar("JM_ACCESSFLAG", "s", "Флаг доступа, оставить пустым, если для всех");
    cv_Flag.AddChangeHook(OnCvarChange);
   
   
    HookEvent("player_connect_full", _FullConnect, EventHookMode_Post);
    gh_SyncHUD = CreateHudSynchronizer();
   
    AutoExecConfig(true,"joinmsg");
}
public void OnCvarChange(ConVar cv, const char[] oldValue, const char[] newValue)    {  
    if(cv == cv_INVisADMIN)
        gb_INVisADMIN = cv.BoolValue;
   
    else if(cv == cv_Color)
        cv.GetString(gszColorHUD, sizeof(gszColorHUD));
   
    else if(cv == cv_Position)
        cv.GetString(gszPositionHUD, sizeof(gszPositionHUD));
   
    else if(cv == cv_Flag)
        cv.GetString(gszFlag, sizeof(gszFlag));
}
public void OnConfigsExecuted()    {
    cv_Color.GetString(gszColorHUD, sizeof(gszColorHUD));
    SetColor();
   
    cv_Position.GetString(gszPositionHUD, sizeof(gszPositionHUD));
    SetPosition();
   
    gb_INVisADMIN = cv_INVisADMIN.BoolValue;
    cv_Flag.GetString(gszFlag, sizeof(gszFlag));
    TrimString(gszFlag);
}
public Action _FullConnect(Event event, const char[] name, bool dontBroadcast){
   
    int client = GetClientOfUserId(event.GetInt("userid"));
    if(!ValidPlayer(client))
        return Plugin_Handled;
    if(gszFlag[0] != 0){
        if(!HAS_Flag(client))
            return    Plugin_Handled;
    }
    if(gb_INVisADMIN){
        if (FLAGS(client))
            return    Plugin_Handled;
    }      
    char szHUD[128];
    FormatEx(szHUD, sizeof(szHUD),     g_szFrazeList[GetRandomInt(1, sizeof(g_szFrazeList))-1],    client);
   
    for(int i=1; i<=MaxClients; i++)
        if(ValidPlayer(i)){
            SetHudTextParams(gf_Position[0], gf_Position[1], 3.0, gi_ColorHUD[0] , gi_ColorHUD[1], gi_ColorHUD[2], gi_ColorHUD[3], 0, 0.25, 1.0, 1.0);
            ShowSyncHudText(i, gh_SyncHUD, szHUD);
        }
    return Plugin_Handled;
}
   
void SetColor(){
    char sExplodedColors[4][16];
    ExplodeString(gszColorHUD, " ", sExplodedColors, 4, 16);
   
    for(int i = 0; i <= 3; i++)
        gi_ColorHUD[i] = StringToInt(sExplodedColors[i]);
}
void SetPosition(){
    char sExplodedPosition[2][16];
    ExplodeString(gszPositionHUD, " ", sExplodedPosition, 2, 16);
   
    gf_Position[0] = StringToFloat(sExplodedPosition[0]);
    gf_Position[1] = StringToFloat(sExplodedPosition[1]);

}

bool HAS_Flag(int client)    { return (GetUserFlagBits(client) & ReadFlagString(gszFlag)) ? true : false; }
bool ValidPlayer(int client)    {    return    (client>0 && client<=MaxClients && IsClientInGame(client) && !IsFakeClient(client) && !IsClientSourceTV(client));    }

Не компилится, вот ошибка:

//SourceMod Batch Compiler
// by the SourceMod Dev Team


//// joinmessage.sp
//
// D:\cs go server\server_csgo\csgo\addons\sourcemod\scripting\joinmessage.sp(12) : error 147: new-style declarations are required
// D:\cs go server\server_csgo\csgo\addons\sourcemod\scripting\joinmessage.sp(12) : error 148: cannot assign null to a non-nullable type
// D:\cs go server\server_csgo\csgo\addons\sourcemod\scripting\joinmessage.sp(63) : warning 213: tag mismatch
// D:\cs go server\server_csgo\csgo\addons\sourcemod\scripting\joinmessage.sp(110) : warning 213: tag mismatch
//
// 2 Errors.
//
// Compilation Time: 0,17 sec
// ----------------------------------------

Press enter to exit ...
 

Stepan1

Участник
Сообщения
84
Реакции
2
Не компилится, вот ошибка:

//SourceMod Batch Compiler
// by the SourceMod Dev Team


//// joinmessage.sp
//
// D:\cs go server\server_csgo\csgo\addons\sourcemod\scripting\joinmessage.sp(12) : error 147: new-style declarations are required
// D:\cs go server\server_csgo\csgo\addons\sourcemod\scripting\joinmessage.sp(12) : error 148: cannot assign null to a non-nullable type
// D:\cs go server\server_csgo\csgo\addons\sourcemod\scripting\joinmessage.sp(63) : warning 213: tag mismatch
// D:\cs go server\server_csgo\csgo\addons\sourcemod\scripting\joinmessage.sp(110) : warning 213: tag mismatch
//
// 2 Errors.
//
// Compilation Time: 0,17 sec
// ----------------------------------------

Press enter to exit ...
 

Вложения

  • VIP_JoinMsg.smx
    6.9 КБ · Просмотры: 13
  • VIP_JoinMsg.sp
    4.8 КБ · Просмотры: 14

Мировой

Участник
Сообщения
342
Реакции
53
Здравствуйте . Плагин хороший но при смене карты получается каша из надписей когда все вип игроки заходят одновременно.
Вопрос: Можно ли исправить ?
 
Сверху Снизу