Titus, а если в def.gs перенести, то конструкция будет правильной? (ну или приведи пример)
Titus, а если в def.gs перенести, то конструкция будет правильной? (ну или приведи пример)
Придумал вариант без всех этих наворотов:
Добавляем в файл utils.gs следующую функцию:
Система проигрывания семплов на движке DizzyAge устроена следующим образом. Есть 16 голосов, по каждому из которых может играть свой семпл. Т.е. одновременно можно включить на проигрывание не более 16 перекрывающихся семплов. Если вы включили 17-й, а те 16 все еще играют, то будет ошибка.Код:///////////////////////////////////////////////////////////////////////////////// // // Stop a voices, played specified sample // ///////////////////////////////////////////////////////////////////////////////// func SampleStopByID(sid) { for (i=SOUND_VOICES-1; i>=0; i--) // Перебираем все голоса от 0 до SOUND_VOICES (по умолчанию 16) { if (SamplePlaying(i) == sid) // Если в данном голосе звучит семпл с ID = sid, SampleStop(i); // то останавливаем его звучание } }
Вышеприведенная функция работает очень просто. Перебираются все 16 голосов, и ищется, на каком из них играет семпл с заданным ID, и, соответствующие голоса (а их может быть несколько) выключаются.
---------- Post added at 15:08 ---------- Previous post was at 15:03 ----------
Нет, неправильной, т.к. все файлы с расширением .gs равнозначны.
---------- Post added at 15:15 ---------- Previous post was at 15:08 ----------
Как я понимаю, нельзя)
т.е. это будет верно?
func ActionObject_3050 ( idx )
{
if(ObjGet(ObjFind(3050),O_STATUS)==0)
{
SamplePlay(13);
ObjSet(ObjFind(3050),O_STATUS,1);
}
else
{
SampleStopByID(13);
ObjSet(ObjFind(3050),O_STATUS,0);
}
}
---------- Post added at 13:18 ---------- Previous post was at 13:17 ----------
Это очень не гибко.
Верно. Но все равно проверь.
---------- Post added at 15:28 ---------- Previous post was at 15:26 ----------
Сделай несколько звуков с разной громкостью. Благо, их количество не ограничено.
---------- Post added at 15:30 ---------- Previous post was at 15:28 ----------
Кстати, учти, что проигрываемые в данный момент звуки, вроде бы не запоминаются в файле отгрузки. Выбери длинный звук и проверь.
Titus, да работает, работает как написано выше. Абы глюков не было.
Не получится. Играет семпл, игрок выходит в другую комнату. Уменьшаться по громкости должен только один семпл (текущий). Если сделать разные..... стоп. Хотя есть варианты.... тока сейчас не получится проверить, это уже дома. Аудишн нужен.
да, при записи игры (когда проигрывается сэмп) и после загрузки - сэмп уже не звучит. Но ничего не мешает вкл. проигрывание заново.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Titus, блин, это 3-4 трека огг лепить (пусть хоть по 1 метру), вес только растет. Вот это не гибкость. Вот чего нельзя типа SampleVolume (sample_id, percent) сделать? Чтобы sample_id был опциональным как loop ???
Да и вообще движок очень куцый по сравнению с теми вещами что описаны в играх.
---------- Post added at 14:09 ---------- Previous post was at 14:00 ----------
Titus, походу это
func FX_Stop(fx)
{
if(fx==-1) return -1;
while(true)
{
v = FX_Playing(fx);
if(v==-1) return;
SampleStop(v);
}
}
делает то же самое, что и SampleStopByID
Что скажешь?
да, уже заметил
func FX_Playing(fx)
{
if(fx==-1) return -1;
for(v=0;v<SOUND_VOICES;v++)
if(SamplePlaying(v)==fx) return v;
return -1;
}
да в tos залез
FX_Playing(fx) - выдает номер голоса, по которому играет заданный эффект. Однако, если эффект играет в нескольких голосах одновременно, то будет выдан номер только одного из этих голосов. Так что фактически FX_Stop() делает тоже самое, что и у меня, только выключает одну копию звука, а у меня выключает все)
---------- Post added at 17:00 ---------- Previous post was at 16:50 ----------
Единственное, моя функция не проверяет ошибки, но судя по всему это и не требуется.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)