[CS: Source] Welcome Sound [v1.0] v34 tt

Тема в разделе "Отклонённые плагины", создана пользователем tt-css, 23 окт 2015.

  1. tt-css

    tt-css

    Сообщения:
    4
    Симпатии:
    0
    Автор: tt-css

    Описание:
    Проигрывание звуков при входе на сервер


    Установка:
    1.Файл music_welcome.smx → в папку addons/sourcemod/plugins/
    2.Папка music_welcome → в папку sound/
    3.Если хотите чтобы музыка при входе на сервер проигрывался просто добавьте вашу музыку в папку music_welcome и все
    4.Название треков только английские буквы
    5.Число треков (8)
    6.Формат mp3 и wav

    Настройки: Отсутствуют

    Version 1.0

    [​IMG]
     

    Вложения:

  2. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.714
    Симпатии:
    451
    А исходники я буду прилаживать?

    Приложил. :(
     

    Вложения:

  3. Reiko1231

    Reiko1231 AlexTheRegent

    Сообщения:
    235
    Симпатии:
    568
    Код:
    decl String:path[152];
    ReadDirEntry(dir, filename, 75, type)
    Format(path, 150, "music_welcome/%s", filename);
    GetTrieString(g_Trie, str_num, path, 150, 0)
    GetTrieString(g_Trie, str_num, g_SoundString, 125, 0)
    Так сколько в итоге символов на путь к звуку выделяется? 152, 75, 150, 125? А правильный ответ - PLATFORM_MAX_PATH.

    Отдельно можно рассмотреть следующий кусок кода:
    Код:
    decl String:path[152];
    decl String:filename[76];
    while (ReadDirEntry(dir, filename, 75, type))
    Format(path, 150, "music_welcome/%s", filename);
    На путь выделено 152 символа, текущий файл считывается в 75 символов, а дальше это присоединяется к пути в 150 символов, где music_welcome/ занимает 14 символов. Математика получается следующей 14+75=152.

    Код:
    ClientCommand(client, "playgamesound \"%s\"", g_SoundString);
    Если клиент выключит звук в настройках клиента, то он не услышит музыку при входе. Лучше для этих целей использовать EmitSound*

    Код:
    decl String:str_num[8];
    IntToString(g_Count, str_num, 7);
    если массив из 8 символов, то и передавать надо как maxlength 8 символов, sourcemod сам возьмёт последний символ для '\0' (если будет номер из восьми цифр, то сурсмод запишет лишь 7, а на восьмой поставит символ конца строки. сейчас же сурсмод в случае для 8 цифр запишет на 7 позицию конец строки, таким образом два символа будут потеряны).

    Код:
    5.Число треков (8)
    Исходя из написанного выше, максимальное число треков равняется 6 символам, т.е. 999 999, если исправите ошибку, то будет 9 999 999.

    Код:
    bool:tt_IsSound(String:sound[])
    {
    	new var2;
    	return StrContains(sound, ".ztmp", true) == -1 && (StrContains(sound, ".mp3", true) > 0 || StrContains(sound, ".wav", true) > 0);
    }
    StrContains() делает для данного случая в лучшем случае 2*(strlen()-4) проверок, а в худшем случае 3*(strlen()-4). Поэтому данную проверку нужно заменить на следующую:
    Код:
    bool:IsValidSound(const String:sSound[]) 
    {
    	new iLen = strlen(sSound);
    	return ( StrEqual(sSound[iLen-4], ".wav", false) || StrEqual(sSound[iLen-4], ".mp3", false) );
    }
    поскольку предложенный код выполняет лишь 2 проверки в худшем случае, а в лучшем одну.

    Ну и информация для размышления: Оффтоп
     
  4. NeXxX

    NeXxX

    Сообщения:
    320
    Симпатии:
    18
    Ребят не заморачивайтесь все это ради рекламы ( еще раз повторяюсь)http://hlmod.ru/forum/showpost.php?p=217022&postcount=3
     
  5. White Wolf

    White Wolf [] (int _n) -> double { return (_n % 2) == 0;}); Супер-модератор

    Сообщения:
    1.186
    Симпатии:
    411
    Тема перемещена в отклоненные плагины, из за отсутствия исходника в архиве.