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

[VIP] JoinSound 1.0.2

babka68

Участник
Сообщения
2,124
Реакции
956
@Пьяный , @TRUE DI , @MichaikKratos
Для CSS OB,но по сути должно и на cs go работать.
Установка:
1. Поместить VIP_JoinSound.smx по пути /addons/sourcemod/plugins/vip
2. Пройти по пути /addons/sourcemod/data/vip/cfg и прописать в файл groups.ini
C-подобный:
"JoinSound" "vip/joinsound/vip1.mp3" // Путь к звуку без указания папки sound!
3. Положить сам звук по выше указанному пути или же создать свои директории
4. Обновить Fastdll и перезапустить сервер.
P.S Ради интереса разбирал плагин и комментировал😂
[VIP] Join Sound.sp:
#pragma semicolon 1 //;
#include <sdktools_stringtables>
#include <sdktools_sound>
#include <vip_core> // Подключаем библиотеку VIP

#pragma newdecls required // Плагин написан на новом синтаксисе

public Plugin myinfo =
{
    name = "[VIP] Join Sound",
    author = "Drumanid, babka68",
    version = "1.1",
    url = "http://vk.com/drumanid, tmb-css.ru",
};

static const char g_sFeature[] = "JoinSound";
// static const применяется, если значение в этой переменной/массиве не будет изменяться в нашем случае JoinSound
bool g_bUse[MAXPLAYERS +1];

public void OnPluginStart() // Старт плагина
{
    // VIP_IsVIPLoaded Добавляет новую VIP-функцию, VIP_OnVIPLoaded Вызывается когда VIP-функция была зарегистрирована.
    if(VIP_IsVIPLoaded()) VIP_OnVIPLoaded();
}

public void OnMapStart() // Старт карты
{
    char sBuffer[2][128]; // Строки с заданными размерами.
    // BuildPath Строит путь относительно папки SourceMod
    BuildPath(Path_SM, sBuffer[0], sizeof(sBuffer[]), "data/vip/cfg/groups.ini");
    KeyValues kv = new KeyValues("VIP_GROUPS"); // Создаем объект типа KeyValues
    /* SetFailState Заставляет плагин перейти в состояние сбоя.
    Будет выдана ошибка, и плагин будет приостановлен до тех пор, пока он не будет выгружен или перезагружен.
    ImportFromFile - Загружает KV структуру из файла */
    if(!kv.ImportFromFile(sBuffer[0])) SetFailState("Not found file: %s", sBuffer[0]);
 
    if(kv.GotoFirstSubKey()) // GotoFirstSubKey - Переходит к первому ключу внутри текущей секции.
    {
        do
        {
            kv.GetString("JoinSound", sBuffer[0], sizeof(sBuffer[])); // GetString - Получает строку по ключу
         
            if(sBuffer[0][0])
            {
                FormatEx(sBuffer[1], sizeof(sBuffer[]), "sound/%s", sBuffer[0]);
                // FormatEx Форматирует строку в соответствии с правилами форматирования SourceMod
                AddFileToDownloadsTable(sBuffer[1]);
                /* AddFileToDownloadsTable Добавляет файл в таблицу сетевых строк загружаемых файлов.
                Это заставляет клиента загружать файл, если он еще не установлен.*/
                PrecacheSound(sBuffer[0], true); // Предварительно кэширует заданный звук.
            }
        }
        while(kv.GotoNextKey()); // GotoNextKey Переходит к следующему ключу в секции на уровень выше.
    }
 
    delete kv; // Удаляем kv
}

public void OnPluginEnd() // OnPluginEnd Вызывается, когда плагин собирается выгрузиться.
{
    if(CanTestFeatures() && GetFeatureStatus(FeatureType_Native, "VIP_UnregisterFeature") == FeatureStatus_Available)
    /* CanTestFeatures Возвращает, будет ли "GetFeatureStatus" работать.
    GetFeatureStatus Возвращает, существует ли функция, и если да, то можно ли ее использовать.*/
    {
        VIP_UnregisterFeature(g_sFeature); // VIP_UnregisterFeature Удаляет все VIP-функции зарегистрированные плагином
    }
}

public void VIP_OnVIPLoaded() // VIP_OnVIPLoaded Вызывается когда VIP-функция была зарегистрирована.
{
    VIP_RegisterFeature(g_sFeature, STRING); // VIP_RegisterFeature Удаляет VIP-функцию.
}

public void VIP_OnVIPClientLoaded(int iClient) // VIP_OnVIPClientLoaded Вызывается когда игрок получает VIP-статус.
{
    if(IsClientInGame(iClient) && g_bUse[iClient] && VIP_IsClientFeatureUse(iClient, g_sFeature))
    /* IsClientInGame в игре ли игрок, VIP_IsClientFeatureUse Получает целочисленное значение параметра VIP-функции у игрока.*/
    {
        char sBuffer[2][128];
        VIP_GetClientFeatureString(iClient, g_sFeature, sBuffer[0], sizeof(sBuffer[]));
        // VIP_GetClientFeatureString Выдает игроку VIP-функцию и устанавливает её значение (на время сессии).
        EmitSoundToAll(sBuffer[0], SOUND_FROM_LOCAL_PLAYER, SNDCHAN_STATIC, SNDLEVEL_NONE, SND_NOFLAGS, 0.4);
        //EmitSoundToAll  Обертка для выдачи звука всем клиентам.
        g_bUse[iClient] = false;
    }
}

public void OnClientDisconnect(int iClient) // OnClientDisconnect Вызывается, когда клиент отключается от сервера.
{
    g_bUse[iClient] = true;
}
 

Вложения

  • VIP JoinSound.rar
    72.2 КБ · Просмотры: 89
Последнее редактирование:

Tavian

Участник
Сообщения
1,184
Реакции
119
@Пьяный , @TRUE DI , @MichaikKratos
Для CSS OB,но по сути должно и на cs go работать.
Установка:
1. Поместить VIP_JoinSound.smx по пути /addons/sourcemod/plugins/vip
2. Пройти по пути /addons/sourcemod/data/vip/cfg и прописать в файл groups.ini
C-подобный:
"JoinSound" "vip/joinsound/vip1.mp3" // Путь к звуку без указания папки sound!
3. Положить сам звук по выше указанному пути или же создать свои директории
4. Обновить Fastdll и перезапустить сервер.
P.S Ради интереса разбирал плагин и комментировал😂
[VIP] Join Sound.sp:
#pragma semicolon 1 //;
#include <sdktools_stringtables>
#include <sdktools_sound>
#include <vip_core> // Подключаем библиотеку VIP

#pragma newdecls required // Плагин написан на новом синтаксисе

public Plugin myinfo =
{
    name = "[VIP] Join Sound",
    author = "Drumanid, babka68",
    version = "1.1",
    url = "http://vk.com/drumanid, tmb-css.ru",
};

static const char g_sFeature[] = "JoinSound";
// static const применяется, если значение в этой переменной/массиве не будет изменяться в нашем случае JoinSound
bool g_bUse[MAXPLAYERS +1];

public void OnPluginStart() // Старт плагина
{
    // VIP_IsVIPLoaded Добавляет новую VIP-функцию, VIP_OnVIPLoaded Вызывается когда VIP-функция была зарегистрирована.
    if(VIP_IsVIPLoaded()) VIP_OnVIPLoaded();
}

public void OnMapStart() // Старт карты
{
    char sBuffer[2][128]; // Строки с заданными размерами.
    // BuildPath Строит путь относительно папки SourceMod
    BuildPath(Path_SM, sBuffer[0], sizeof(sBuffer[]), "data/vip/cfg/groups.ini");
    KeyValues kv = new KeyValues("VIP_GROUPS"); // Создаем объект типа KeyValues
    /* SetFailState Заставляет плагин перейти в состояние сбоя.
    Будет выдана ошибка, и плагин будет приостановлен до тех пор, пока он не будет выгружен или перезагружен.
    ImportFromFile - Загружает KV структуру из файла */
    if(!kv.ImportFromFile(sBuffer[0])) SetFailState("Not found file: %s", sBuffer[0]);

    if(kv.GotoFirstSubKey()) // GotoFirstSubKey - Переходит к первому ключу внутри текущей секции.
    {
        do
        {
            kv.GetString("JoinSound", sBuffer[0], sizeof(sBuffer[])); // GetString - Получает строку по ключу
        
            if(sBuffer[0][0])
            {
                FormatEx(sBuffer[1], sizeof(sBuffer[]), "sound/%s", sBuffer[0]);
                // FormatEx Форматирует строку в соответствии с правилами форматирования SourceMod
                AddFileToDownloadsTable(sBuffer[1]);
                /* AddFileToDownloadsTable Добавляет файл в таблицу сетевых строк загружаемых файлов.
                Это заставляет клиента загружать файл, если он еще не установлен.*/
                PrecacheSound(sBuffer[0], true); // Предварительно кэширует заданный звук.
            }
        }
        while(kv.GotoNextKey()); // GotoNextKey Переходит к следующему ключу в секции на уровень выше.
    }

    delete kv; // Удаляем kv
}

public void OnPluginEnd() // OnPluginEnd Вызывается, когда плагин собирается выгрузиться.
{
    if(CanTestFeatures() && GetFeatureStatus(FeatureType_Native, "VIP_UnregisterFeature") == FeatureStatus_Available)
    /* CanTestFeatures Возвращает, будет ли "GetFeatureStatus" работать.
    GetFeatureStatus Возвращает, существует ли функция, и если да, то можно ли ее использовать.*/
    {
        VIP_UnregisterFeature(g_sFeature); // VIP_UnregisterFeature Удаляет все VIP-функции зарегистрированные плагином
    }
}

public void VIP_OnVIPLoaded() // VIP_OnVIPLoaded Вызывается когда VIP-функция была зарегистрирована.
{
    VIP_RegisterFeature(g_sFeature, STRING); // VIP_RegisterFeature Удаляет VIP-функцию.
}

public void VIP_OnVIPClientLoaded(int iClient) // VIP_OnVIPClientLoaded Вызывается когда игрок получает VIP-статус.
{
    if(IsClientInGame(iClient) && g_bUse[iClient] && VIP_IsClientFeatureUse(iClient, g_sFeature))
    /* IsClientInGame в игре ли игрок, VIP_IsClientFeatureUse Получает целочисленное значение параметра VIP-функции у игрока.*/
    {
        char sBuffer[2][128];
        VIP_GetClientFeatureString(iClient, g_sFeature, sBuffer[0], sizeof(sBuffer[]));
        // VIP_GetClientFeatureString Выдает игроку VIP-функцию и устанавливает её значение (на время сессии).
        EmitSoundToAll(sBuffer[0], SOUND_FROM_LOCAL_PLAYER, SNDCHAN_STATIC, SNDLEVEL_NONE, SND_NOFLAGS, 0.4);
        //EmitSoundToAll  Обертка для выдачи звука всем клиентам.
        g_bUse[iClient] = false;
    }
}

public void OnClientDisconnect(int iClient) // OnClientDisconnect Вызывается, когда клиент отключается от сервера.
{
    g_bUse[iClient] = true;
}
год или полтора назад он работал на ксго. буквально пол года назад ставил и уже 0 эмоций .
 

gradex3-

Участник
Сообщения
42
Реакции
1
А есть плагин, чтобы производил звук (музыку/голос) при заходе любого игрока?
Типа хочу сделать "добро пожаловать на сервер... блаблабла"
 

Zirman

Участник
Сообщения
202
Реакции
59
А есть плагин, чтобы производил звук (музыку/голос) при заходе любого игрока?
Типа хочу сделать "добро пожаловать на сервер... блаблабла"
Из бесплатных
Из привата есть плагин от K1NG
 

wydome

Участник
Сообщения
149
Реакции
4
Ставлю свой звук, устанавливаю "JoinSound" "vip/joinsound/vip.mp3" только для випок админов, звук не работает
 

babka68

Участник
Сообщения
2,124
Реакции
956
Ставлю свой звук, устанавливаю "JoinSound" "vip/joinsound/vip.mp3" только для випок админов, звук не работает
 

wydome

Участник
Сообщения
149
Реакции
4
Не работает
 
Последнее редактирование:

wydome

Участник
Сообщения
149
Реакции
4
Не знаю что у тебе там не работает,сейчас скачал залил на сервер все воспроизводится
Я заметил один косяк, щас попробую, может заробит)))
Сообщения автоматически склеены:

Не знаю что у тебе там не работает,сейчас скачал залил на сервер все воспроизводится
Вкладка в випке появилась, а звука нет

UPD: В консоли пишет ошибка загрузки fastdl
Файл отсутствует на диске или является недействительным.

babka68

Сообщения автоматически склеены:

Не знаю что у тебе там не работает,сейчас скачал залил на сервер все воспроизводится
Всё пофиксил, работает)
 
Последнее редактирование:

Дед Мазай

Участник
Сообщения
111
Реакции
19
Я заметил один косяк, щас попробую, может заробит)))
Сообщения автоматически склеены:


Вкладка в випке появилась, а звука нет

UPD: В консоли пишет ошибка загрузки fastdl
Файл отсутствует на диске или является недействительным.

babka68

Сообщения автоматически склеены:


Всё пофиксил, работает)
Как пофиксил?
 
Сверху Снизу