dP RoundEndSound

dP RoundEndSound 2.2.1

Alex31

Участник
Сообщения
29
Реакции
1
Подскажите как отключить стандартную музыку в игре, а то песни накладываются?
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
966
Подскажите как отключить стандартную музыку в игре, а то песни накладываются?
Если плагином... Под циклом введи это
C-подобный:
ClientCommand(client, "playgamesound Music.StopAll")
И дальше пускай музыку
--- Добавлено позже ---
Но это для тех, кто писать плагины умеет...

Иначе - Музыку в игре на 0
 

Alex31

Участник
Сообщения
29
Реакции
1
Если плагином... Под циклом введи это
C-подобный:
ClientCommand(client, "playgamesound Music.StopAll")
И дальше пускай музыку
--- Добавлено позже ---
Но это для тех, кто писать плагины умеет...

Иначе - Музыку в игре на 0
У меня так и не получилось, если есть возможность впишите в исходник а я сам скомпилирую и протестирую.
C-подобный:
#include <sourcemod>
#include <sdktools>
#include <emitsoundany>

new Handle:g_EnableName, Handle:g_SoundType, Handle:g_SoundOrder, bool:g_cEnGame, g_cSoundType, g_cSoundOrder;
new p_SoundValue[MAXPLAYERS];
new Handle:g_SoundPath,
    Handle:g_SoundNames;
   
int r_Int;

public Plugin:myinfo = 
{ 
    name = "dP_EndSound", 
    author = "Primo", 
    description = "Playing sounds on end round.", 
    version = "2.1", 
} 

public OnPluginStart() 
{
    RegConsoleCmd("dpsound", EnableSoundDP);
    RegConsoleCmd("res", EnableSoundDP);
    g_EnableName = CreateConVar("dp_esname_enable", "1", "1 -Включить, 0 - отключить название треков в чате");
    g_SoundType = CreateConVar("dp_esound_type", "1", "1 - один трек для всех, 0 - для каждого свой");
    g_SoundOrder = CreateConVar("dp_esound_order", "0", "1 - случайный, 0 - по порядку");
    g_cEnGame = GetConVarBool(g_EnableName);
    g_cSoundType = GetConVarInt(g_SoundType);
    g_cSoundOrder = GetConVarInt(g_SoundOrder);
    HookEvent("round_end", RoundEnd);
    g_SoundPath = CreateArray(ByteCountToCells(128));
    g_SoundNames = CreateArray(ByteCountToCells(128));
}

public Action:EnableSoundDP(client, args)
{
    if(client > 0)
    {
        p_SoundValue[client] = !p_SoundValue[client];
   
        PrintToChat(client, "[\x07DP\x01] Вы %s воспроизведение музыки в конце раунда.", p_SoundValue[client] ? "включили":"отключили")
    }
}

public OnMapStart()
{
    ClearArray(g_SoundPath);
    ClearArray(g_SoundNames);
    new Handle:h_Keys = CreateKeyValues("DPI");
    if (FileToKeyValues(h_Keys, "addons/sourcemod/configs/dp_res.ini"))
    {
        if(KvGotoFirstSubKey(h_Keys))
        {
            decl String:ev_Sound[128];
            do
            {
                KvGetString(h_Keys, "sound", ev_Sound, sizeof(ev_Sound));
                Format(ev_Sound, sizeof(ev_Sound), "sound/%s", ev_Sound);
                if(FileExists(ev_Sound))
                {
                    AddFileToDownloadsTable(ev_Sound);
                    strcopy(ev_Sound, sizeof(ev_Sound), ev_Sound[6]);
                    PrecacheSoundAny(ev_Sound);
                    PushArrayString(g_SoundPath, ev_Sound);
                    KvGetSectionName(h_Keys, ev_Sound, sizeof(ev_Sound));
                    PushArrayString(g_SoundNames, ev_Sound);
                }
                else LogMessage("No such sound: %s", ev_Sound);
            }
            while (KvGotoNextKey(h_Keys));
        }
        else
        {
            CloseHandle(h_Keys);
            SetFailState("Broken: addons/sourcemod/configs/res.ini");
            return;
        }
    }
    else
    {
        CloseHandle(h_Keys);
        SetFailState("Broken: addons/sourcemod/configs/dp_res.ini");
        return;
    }
    CloseHandle(h_Keys);
}

public RoundEnd(Handle:event, const String:name[], bool:dontBroadcast) 
{
    g_cEnGame = GetConVarBool(g_EnableName);
    g_cSoundType = GetConVarInt(g_SoundType);
    g_cSoundOrder = GetConVarInt(g_SoundOrder);
    EmitSoundV();
} 

public OnClientConnected(client)
{
    p_SoundValue[client] = true;
}

EmitSoundV()
{
    decl String:ev_SoundPath[128], String:ev_SoundName[128];
    if(g_cSoundType == 1)
    {
        if(g_cSoundOrder != 0) r_Int = GetRandomInt(0, GetArraySize(g_SoundPath)-1);
        else func_GetMaxInt();
        GetArrayString(g_SoundPath, r_Int, ev_SoundPath, sizeof(ev_SoundPath));
    }
    for(new client=1; client<=MaxClients; client++)
    {
        if(p_SoundValue[client] && IsClientInGame(client) && !IsFakeClient(client))
        {
            if(g_cSoundType == 0)
            {
                if(g_cSoundOrder != 0) r_Int = GetRandomInt(0, GetArraySize(g_SoundPath)-1);
                else func_GetMaxInt();
                GetArrayString(g_SoundPath, r_Int, ev_SoundPath, sizeof(ev_SoundPath));
            }
           
            EmitSoundToClientAny(client, ev_SoundPath, SOUND_FROM_PLAYER, SNDCHAN_STATIC);
            if(g_cEnGame == true)
            {
                GetArrayString(g_SoundNames, r_Int, ev_SoundName, sizeof(ev_SoundName));
                PrintToChat(client, "Играет \x04 %s", ev_SoundName);
            }
        }
    }
}

func_GetMaxInt()
{
    r_Int++;
    if(GetArraySize(g_SoundPath)-r_Int == 0)
    {
        r_Int = 0;
    }
}
 

wayLANder

Где AlmazON?
Сообщения
1,742
Реакции
577
@Primo, можешь подсказать, куда писать переменные? Пишу в server.cfg, включаю рандомный выбор треков - треки все равно по порядку идут..
 

SIRIUS

♿___DejaVu
Сообщения
509
Реакции
253
после перезахода !res (отключения музыки) сбрасывается, как исправит?
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
@Primo,
PHP:
decl String:sVle[11];
2 хватит, если переживаешь - 4 поставь. Это с головой.
PHP:
p_SoundValue[client] = StringToInt(svle);
По идее нужно так:
PHP:
p_SoundValue[client] = bool:StringToInt(svle);
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
@R1KO, я удивлен, но без bool: работает прекрасно, и проверяет на true\false независимо от того, что переменная целочисленная.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
@Primo, Переменная логическая, а не целочисленная, компилятор сам привел к нужному типу.
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Пользователь Primo обновил ресурс dP RoundEndSound новой записью:

Исправление кода

decl String:sVle[11] -> decl String:sVle[2];
StringToInt(svle) -> bool:StringToInt(svle);

Узнать больше об этом обновлении...
--- Добавлено позже ---
@AlmazON, Оффтоп
 

Nikto

Участник
Сообщения
2
Реакции
0
Где скомпилировать? Подскажите дураку!!!! Заранее спасибо)
 

CAH4E3

Сосанчез.
Сообщения
1,597
Реакции
779
@AlmazON, Оффтоп
Оффтоп
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Оффтоп
серьезно, прекращай, если раньше был профит, удалять свои сообщения, репа остается, сейчас в этом смысл пропал, иной раз читаешь и не понимаешь, благо многие цитируют, что есть хорошо
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
@Primo, ой чет я проглядел.
PHP:
if(AreClientCookiesCached(client))
Эта прверка не нужна т.к. OnClientCookiesCached подразумевает что AreClientCookiesCached уже true. Другими словами AreClientCookiesCached == false до тех пор пока не вызван OnClientCookiesCached
 

SIRIUS

♿___DejaVu
Сообщения
509
Реакции
253
Плагин хорош, но когда игрок коннектится то на несколько секунд начинает играть музыка и это очень раздрожает
 

Anton606

Участник
Сообщения
12
Реакции
0
Где скомпилировать? Подскажите дураку!!!! Заранее спасибо)
Ничего не изменял
--- Добавлено позже ---
Как конвертировать в нужный кодек? Из 19 песен, работают 10.
--- Добавлено позже ---
После обновления, перестал работать.
 

Вложения

  • dpRoundEndSound.smx
    8.1 КБ · Просмотры: 17
Последнее редактирование:

Иннова

Участник
Сообщения
226
Реакции
24
@Primo, Музыку не слышно когда смотришь на игрока от 1 лица а так все работает, сможешь исправить
 
Сверху Снизу