precache

Анатолий

Пользователь
Регистрация
8 Июн 2017
Сообщения
595
Симпатии
203
Пол
Мужской
VKcom
e1337ace
#1
Вопрос: precache_sound для .wav а precache_generic для .mp3 ? можно ли precache_generic использовать и для .wav ??
 

StockX

Разработчик
Регистрация
8 Июн 2017
Сообщения
170
Симпатии
133
Пол
Мужской
#2
Как-то так. precache_sound только для wav, а precache_generic для всего остального. Не думаю что разработчик AMXX'а будет врать :D
Хотя вопрос конечно в другом, можно ли в generic кешировать wav формат... Но я так не делаю, не зря же придумали sound... Просто делай проверку на формат файла и уже от этого кешируй в нужную сторону.
1.png
17 Май 2019
Вот пример того, как это делаю я:
Код:
if(equali(sound_name[strlen(sound_name) - 4], ".mp3"))
    precache_generic(sound_name);
else precache_sound(sound_name);
Для двумерных массивов:
Код:
for(new i; i < sizeof(sound_name); i++)
{
    if(equali(sound_name[i][strlen(sound_name[i]) - 4], ".mp3"))
        precache_generic(sound_name[i]);
    else precache_sound(sound_name[i]);
}
 
Последнее редактирование: StockX

Анатолий

Пользователь
Регистрация
8 Июн 2017
Сообщения
595
Симпатии
203
Пол
Мужской
VKcom
e1337ace
#3
MakapoH
Спасибо то что нужно) а как с этим быть? оно любые звуки кеширует?
#define fm_precache_sound(%1) engfunc(EngFunc_PrecacheSound, %1)
 

StockX

Разработчик
Регистрация
8 Июн 2017
Сообщения
170
Симпатии
133
Пол
Мужской
#4
MakapoH
Спасибо то что нужно) а как с этим быть? оно любые звуки кеширует?
#define fm_precache_sound(%1) engfunc(EngFunc_PrecacheSound, %1)
Это полный аналог precache_sound, то есть по сути только wav формат. Хотя если посмотреть некоторые исходники в общем доступе, то там некоторые и mp3 формат используют... Но в крупных модах только wav. Так же не рекомендую для mp3 использовать.
 

Анатолий

Пользователь
Регистрация
8 Июн 2017
Сообщения
595
Симпатии
203
Пол
Мужской
VKcom
e1337ace
#5
Это полный аналог precache_sound, то есть по сути только wav формат. Хотя если посмотреть некоторые исходники в общем доступе, то там некоторые и mp3 формат используют... Но в крупных модах только wav. Так же не рекомендую для mp3 использовать.
Спасибо)
 

Vaqtincha

Разработчик
Регистрация
28 Янв 2018
Сообщения
446
Симпатии
260
#6
Анатолий,

натив precache_sound

alliedmodders/amxmodx

натив engfunc
alliedmodders/amxmodx

у обоих
#define PRECACHE_SOUND (*g_engfuncs.pfnPrecacheSound)
(или без макроса)


На будущее: если что то непонятно то всегда смотри исходники (если они есть). Это лучше чем ждать ответа.
 

Анатолий

Пользователь
Регистрация
8 Июн 2017
Сообщения
595
Симпатии
203
Пол
Мужской
VKcom
e1337ace
#7
Анатолий,

натив precache_sound

alliedmodders/amxmodx

натив engfunc
alliedmodders/amxmodx

у обоих
#define PRECACHE_SOUND (*g_engfuncs.pfnPrecacheSound)
(или без макроса)


На будущее: если что то непонятно то всегда смотри исходники (если они есть). Это лучше чем ждать ответа.
Иногда мне лучше 1 раз спросить и запомнить чем по сто раз смотреть в код и потом переспрашивать)
17 Май 2019
Как пример:
Делал что то вроде такого поэтому и спрашивал.
C++:
#include <amxmodx>

#define K_SOUND "vampire/bell1.wav"                 // Путь до звука. (Обычное убийство) Формат звука .wav, .mp3
#define K_HS_SOUND "vampire/headshot.wav"             // Путь до hs звука. (Убийство в голову) Формат звука .wav, .mp3

new bool:is_mp3_sound
new const g_Sounds[][] = {K_SOUND, K_HS_SOUND}

public plugin_precache()
{
    for (new i; i < sizeof(g_Sounds); i ++)
    {
        if (equali(g_Sounds[i][strlen(g_Sounds[i]) -4], ".mp3"))
        {
            precache_generic(g_Sounds[i])
            is_mp3_sound = true
        }
        else
        {
            precache_sound(g_Sounds[i])
            is_mp3_sound = false
        }
    }
}

public plugin_init()
{
    register_plugin("FM Vampire", "1.0", "AcE")
    register_event("DeathMsg", "eDeathMsg", "a", "1>0")
}

public eDeathMsg()
{
    static killer, victim
    killer = read_data(1), victim = read_data(2)
    if (!is_user_connected(killer) || victim == killer) return

    switch(is_mp3_sound)
    {
        case true: client_cmd(killer, "mp3 play ^"sound/%s^"", (read_data(3) == 1) ? K_HS_SOUND : K_SOUND)
        case false: client_cmd(killer, "spk ^"%s^"", (read_data(3) == 1) ? K_HS_SOUND : K_SOUND)
    }
}