[CS: Source] RoundSound

Тема в разделе "Утверждённые плагины", создана пользователем Алексей Гамов, 8 фев 2015.

  1. Алексей Гамов

    Алексей Гамов

    Сообщения:
    11
    Симпатии:
    3
    Round Sound

    Описание:

    Плагин для проигрывания музыки в конце раунда (ещё один велосипед)

    Возможности:

    • Останавливает оригинальные звуки конца раунда
    • Воспроизведение звуков в случайном или последовательном режиме
    • Задержка конца раунда на нужное количество секунд
    Настройки:

    sm_roundsound_time — задержка окончания раунда (min. 2 сек, max. 20 сек) [по умолчанию: 7]
    sm_roundsound_shuffle — режим воспроизведения (1 - случайный, 0 - по списку) [по умолчанию: 0]

    Для настройки списка необходимо отредактировать файл cstrike/addons/sourcemod/configs/roundsound.cfg

    Исправления:

    • Оптимизация кода (thx. R1KO)
    • ! протестировано только на v34
     

    Вложения:

    Последнее редактирование: 8 фев 2015
  2. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.000
    Симпатии:
    2.992
    PHP:
        do
        {
            
    KvGetSectionName(kvtempsizeof(temp));
            if (
    temp[0]) PushArrayString(soundlisttemp);

            
    KvGetString(kvNULL_STRINGtempsizeof(temp));
            if (
    temp[0]) PushArrayString(soundlisttemp);
        }
        while (
    KvGotoNextKey(kvfalse));

        
    CloseHandle(kv);

        for (new 
    0GetArraySize(soundlist); i++)
        {
            
    GetArrayString(soundlistiitemsizeof(item));
            
    Format(tempsizeof(temp), "sound/%s"item);
            
    AddFileToDownloadsTable(temp);
        }
    Может лучше было бы пихнуть всё это в старт карты, AddFileToDownloadsTable и PrecacheSound делать сразу при записи в массив.


    PHP:
    for (new 0GetArraySize(soundlist); i++)
    Размер будет получаться каждый раз при выполении тела цикла.
    Сделай лучше так:
    PHP:
    for (new 0iSize GetArraySize(soundlist); iSizei++)
    PHP:
    GetConVarString(roundendtempsizeof(temp));
        
    CS_TerminateRound(StringToFloat(temp), reasontrue);
    Не проще ли так:
    PHP:
    CS_TerminateRound(GetConVarFloat(roundend), reasontrue);

    И зачем это
    PHP:
    new String:temp[256], String:item[256]
    глобально?


    Да, и кфг был бы проще так:
     
    Алексей Гамов нравится это.
  3. Алексей Гамов

    Алексей Гамов

    Сообщения:
    11
    Симпатии:
    3
    точняк, совсем из головы вылетело что хотел на старт карты перекинуть)
    а вот об этом никогда не задумывался даже.. надо посмотреть
    проще. сделаем..
    а везде используется - дабы не создавать каждый раз, профит конечно сомнителен
    а вот это не сделать проще. KeyValue всё же. по другому только городить функцию для посимвольной работы..
     
  4. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.000
    Симпатии:
    2.992
    Проверь так: (подсказал Reiko1231)
    PHP:
    for (new 0GetSize(); i++)
    // цикл

    // ф-я
    GetSize()
    {
        
    LogMessage("GetSize");
        return 
    GetArraySize(soundlist);
    }
    Используется только при загрузку звуков и проигрывании. Всё остальное время нет смысла занимать память, decl решит этот вопрос.

    Чего??
    Обычный парсинг файла, проверка существования файла (чего у тебя нет) и всё. Для полной безопасности можешь еще проверить расширение файла на .mp3 или .wav
     
    Алексей Гамов нравится это.
  5. Primo

    Primo Где мои манеры

    Сообщения:
    1.192
    Симпатии:
    310
    Оффтоп
     
  6. Алексей Гамов

    Алексей Гамов

    Сообщения:
    11
    Симпатии:
    3
    Оффтоп