Автор |
Сообщение |
Krik [iddqd] - 2nd Lieutenant -
| 1281 |
|
Отправлено: 13.04.07 00:34:37 |
|
|
У меня возник вопрос - как сделать так что бы проигрывалась в случайном порядке определённая музыка на определённых уровнях как в стратегиях (например закончилась определённая композиция на уровне, и началась другая)?
P.S.
Нужно к Меговаду Dune. |
|
|
| |
3EPHOEd Lieutenant Colonel
| 1967 |
|
Отправлено: 13.04.07 08:10:31 |
|
|
Krik [iddqd]
Я не припомню чтобы в каком либо порте была возможность определить доигралась ли до конца музыка, но можно скриптами через определенное время менять на другую или при пересечении определенной линии на карте или при каком-то событии.
(jDoom, (G)ZDOOM) |
|
|
| |
Post = Master Sergeant =
| 555 |
|
Отправлено: 13.04.07 08:58:14 |
|
|
"но можно скриптами через определенное время"
Геморно буит выщитывать delay в тиках....Но тем не менее |
|
|
| |
Shadowman Lieutenant Colonel
| 1985 |
|
Отправлено: 13.04.07 09:47:49 |
|
|
Krik [iddqd]
Как верно заметил Зерноед, скрипты нам помогут
Скорее всего простенький опен-скрипт примерно такого содержания:
Script 1 open
{
Set_Music("MyMusic1");
delay(tics);
Set_Music("MyMusic2);
delay(tics);
...
restart;
}
Только будет не случайным образом, а последовательно проигрывать все музыки, потом на начало.
Если надо "случайным образом", то не знаю.... как-то с условиями надо мудрить. |
|
|
| |
3EPHOEd Lieutenant Colonel
| 1967 |
|
Отправлено: 13.04.07 10:20:19 |
|
|
Надо c условием, допустим Random равен 1, то играть такой-то, если 2 такой-то.
Длинну высчитывать не обязательно, пусть 5 минут по кругу одну играет, затем другую. |
|
|
| |
nprotect = 1st Lieutenant =
| 1239 |
|
Отправлено: 13.04.07 10:45:39 |
|
|
3EPHOEd : | Длинну высчитывать не обязательно, пусть 5 минут по кругу одну играет, затем другую. |
ну как же, тогда через пять минут он оборвет... да трудно чтоль - секунды посчитать? а потом подобрать точно |
|
|
| |
Post = Master Sergeant =
| 555 |
|
Отправлено: 13.04.07 13:10:10 |
|
|
Можно...Рандом в принципе тож мона замутить...
Если захотеть...
Сделать case условие и рандомить при выборе вырианты case'a
Я правда в упор не помню как это делать , синтаксис забыл напрочь...Но , помню , выделывал такое...Ток под С++ |
|
|
| |
nprotect = 1st Lieutenant =
| 1239 |
|
Отправлено: 13.04.07 13:32:04 |
|
|
Post : | Сделать case условие и рандомить при выборе вырианты case'a Я правда в упор не помню как это делать , синтаксис забыл напрочь... |
что-то типа switch ... case ... { } case ... { } и т.д.
но можно замутить с if, будет более громоздко всегда, когда лень вспоминать case, делаю ифами |
|
|
| |
Post = Master Sergeant =
| 555 |
|
Отправлено: 13.04.07 13:46:55 |
|
|
Да да да...Я об этом...И мне тоже что характерно лень вспоминать case |
|
|
| |
nprotect = 1st Lieutenant =
| 1239 |
|
Отправлено: 13.04.07 14:15:01 |
|
|
но case быстрее обрабатывается, чем сотня ифов, тут уж компромисс надо искать |
|
|
| |
Memfis = Sergeant Major =
| 637 |
|
Отправлено: 13.04.07 15:32:53 |
|
|
чё там вспоминать то
switch
{
case
{
...
break;
}
case
{
...
break;
}
}
| |
|
|
| |
Post = Master Sergeant =
| 555 |
|
Отправлено: 13.04.07 16:55:46 |
|
|
Ээээээх...Хорошо хоть кто-то помнит... |
|
|
| |
Const - Master Corporal -
| 254 |
|
Отправлено: 13.04.07 19:03:17 |
|
|
case, case... зачем? )
#define MUSICPLAYER 1
#define MUSICNUM 3
str musicnames[MUSICNUM] = {"MUSIC1", "MUSIC2", "MUSIC3"};
int musicdelays[MUSICNUM] = {1000, 2000, 3000};
script MUSICPLAYER OPEN {
int musicid = random(0, MUSICNUM-1);
SetMusic(musicnames[musicid]);
delay(musicdelays[musicid]);
restart;
}
| |
|
|
| |
nprotect = 1st Lieutenant =
| 1239 |
|
Отправлено: 13.04.07 19:12:56 |
|
|
опа, оказывается можно массивами пользоваться в ACS это новость |
|
|
| |
Const - Master Corporal -
| 254 |
|
Отправлено: 13.04.07 19:14:47 |
|
|
nprotect, ага, причем это давно описано на странице ACS |
|
|
| |