Сайт Doom Power
 ПоискПоиск  ДумерыДумеры ВходВход
Вопрос к Моддерам по музыке
   Список разделов - Местечко Мапперов и Моддеров - Вопрос к Моддерам по музыке
Автор Сообщение
Krik [iddqd]
- Warrant Officer -
Next rank: (= Warrant Officer =) after 29 messages
961

Сообщение Отправлено: 13.04.07 00:34:37

У меня возник вопрос - как сделать так что бы проигрывалась в случайном порядке определённая музыка на определённых уровнях как в стратегиях (например закончилась определённая композиция на уровне, и началась другая)?


P.S.
Нужно к Меговаду Dune.
3EPHOEd
= Major =
Next rank: (- Lieutenant Colonel -) after 67 messages
1793

Сообщение Отправлено: 13.04.07 08:10:31

Krik [iddqd]
Я не припомню чтобы в каком либо порте была возможность определить доигралась ли до конца музыка, но можно скриптами через определенное время менять на другую или при пересечении определенной линии на карте или при каком-то событии.
(jDoom, (G)ZDOOM)
Post
- Sergeant Major -
Next rank: (= Sergeant Major =) after 59 messages
561

Сообщение Отправлено: 13.04.07 08:58:14

"но можно скриптами через определенное время"
Геморно буит выщитывать delay в тиках....Но тем не менее
Shadowman
- Captain -
Next rank: (= Captain =) after 58 messages
1482

Сообщение Отправлено: 13.04.07 09:47:49

Krik [iddqd]
Как верно заметил Зерноед, скрипты нам помогут Smile
Скорее всего простенький опен-скрипт примерно такого содержания:
Script 1 open
{
Set_Music("MyMusic1");
delay(tics);
Set_Music("MyMusic2);
delay(tics);
...
restart;
}
Только будет не случайным образом, а последовательно проигрывать все музыки, потом на начало.
Если надо "случайным образом", то не знаю.... как-то с условиями надо мудрить.
3EPHOEd
= Major =
Next rank: (- Lieutenant Colonel -) after 67 messages
1793

Сообщение Отправлено: 13.04.07 10:20:19

Надо c условием, допустим Random равен 1, то играть такой-то, если 2 такой-то.

Длинну высчитывать не обязательно, пусть 5 минут по кругу одну играет, затем другую.
nprotect
= Warrant Officer =
Next rank: (- 1st Lieutenant -) after 73 messages
997

Сообщение Отправлено: 13.04.07 10:45:39

3EPHOEd :
Длинну высчитывать не обязательно, пусть 5 минут по кругу одну играет, затем другую.

ну как же, тогда через пять минут он оборвет... да трудно чтоль - секунды посчитать? а потом подобрать точно Smile
Post
- Sergeant Major -
Next rank: (= Sergeant Major =) after 59 messages
561

Сообщение Отправлено: 13.04.07 13:10:10

Можно...Рандом в принципе тож мона замутить...
Если захотеть...

Сделать case условие и рандомить при выборе вырианты case'a
Я правда в упор не помню как это делать , синтаксис забыл напрочь...Но , помню , выделывал такое...Ток под С++ Mad
nprotect
= Warrant Officer =
Next rank: (- 1st Lieutenant -) after 73 messages
997

Сообщение Отправлено: 13.04.07 13:32:04

Post :
Сделать case условие и рандомить при выборе вырианты case'a Я правда в упор не помню как это делать , синтаксис забыл напрочь...

что-то типа switch ... case ... { } case ... { } и т.д.
но можно замутить с if, будет более громоздко Smile всегда, когда лень вспоминать case, делаю ифами Embarassed
Post
- Sergeant Major -
Next rank: (= Sergeant Major =) after 59 messages
561

Сообщение Отправлено: 13.04.07 13:46:55

Да да да...Я об этом...И мне тоже что характерно лень вспоминать case
nprotect
= Warrant Officer =
Next rank: (- 1st Lieutenant -) after 73 messages
997

Сообщение Отправлено: 13.04.07 14:15:01

но case быстрее обрабатывается, чем сотня ифов, тут уж компромисс надо искать Smile
Memfis
= Master Corporal =
Next rank: (- Sergeant -) after 47 messages
293

Сообщение Отправлено: 13.04.07 15:32:53

чё там вспоминать то Smile


switch
{
case
{
...
break;
}
case
{
...
break;
}
}
Post
- Sergeant Major -
Next rank: (= Sergeant Major =) after 59 messages
561

Сообщение Отправлено: 13.04.07 16:55:46

Ээээээх...Хорошо хоть кто-то помнит...
Const
- Master Corporal -
Next rank: (= Master Corporal =) after 16 messages
274

Сообщение Отправлено: 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
= Warrant Officer =
Next rank: (- 1st Lieutenant -) after 73 messages
997

Сообщение Отправлено: 13.04.07 19:12:56

Costja :
musicnames[musicid]

опа, оказывается можно массивами пользоваться в ACS Shocked это новость Embarassed
Const
- Master Corporal -
Next rank: (= Master Corporal =) after 16 messages
274

Сообщение Отправлено: 13.04.07 19:14:47

nprotect, ага, причем это давно описано на странице ACS
Страница 1 из 1 Перейти наверх
   Список разделов - Местечко Мапперов и Моддеров - Вопрос к Моддерам по музыке

© phpbb.com