| Автор | 
		Сообщение | 
	
	
		Krik [iddqd] - Warrant Officer -
   |  | 961 |  
 
  | 
		
			
				  Отправлено: 13.04.07 00:34:37 | 
				 |  
			
  |  
			У меня возник вопрос - как сделать так что бы проигрывалась в случайном порядке определённая музыка на определённых уровнях как в стратегиях (например закончилась определённая композиция на уровне, и началась другая)?
 
 
 
P.S.
 
Нужно к Меговаду Dune. |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		3EPHOEd = Major =
   |  | 1793 |  
 
  | 
		
			
				  Отправлено: 13.04.07 08:10:31 | 
				 |  
			
  |  
			Krik [iddqd]
 
Я не припомню чтобы в каком либо порте была возможность определить доигралась ли до конца музыка, но можно скриптами через определенное время менять на другую или при пересечении определенной линии на карте или при каком-то событии.
 
(jDoom, (G)ZDOOM) |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Post - Sergeant Major -
   |  | 561 |  
 
  | 
		
			
				  Отправлено: 13.04.07 08:58:14 | 
				 |  
			
  |  
			"но можно скриптами через определенное время"
 
Геморно буит выщитывать delay в тиках....Но тем не менее |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Shadowman - Captain -
   |  | 1482 |  
 
  | 
		
			
				  Отправлено: 13.04.07 09:47:49 | 
				 |  
			
  |  
			Krik [iddqd]
 
Как верно заметил Зерноед, скрипты нам помогут   
 
Скорее всего простенький опен-скрипт примерно такого содержания:
 
Script 1 open
 
{
 
Set_Music("MyMusic1");
 
delay(tics);
 
Set_Music("MyMusic2);
 
delay(tics);
 
...
 
restart;
 
}
 
Только будет не случайным образом, а последовательно проигрывать все музыки, потом на начало.
 
Если надо "случайным образом", то не знаю.... как-то с условиями надо мудрить. |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		3EPHOEd = Major =
   |  | 1793 |  
 
  | 
		
			
				  Отправлено: 13.04.07 10:20:19 | 
				 |  
			
  |  
			Надо c условием, допустим Random равен 1, то играть такой-то, если 2 такой-то.
 
 
Длинну высчитывать не обязательно, пусть 5 минут по кругу одну играет, затем другую. |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		nprotect = Warrant Officer =
   |  | 997 |  
 
  | 
		
			
				  Отправлено: 13.04.07 10:45:39 | 
				 |  
			
  |  
			 	  | 3EPHOEd : | 	 		  | Длинну высчитывать не обязательно, пусть 5 минут по кругу одну играет, затем другую. | 	  
 
ну как же, тогда через пять минут он оборвет... да трудно чтоль - секунды посчитать? а потом подобрать точно   |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Post - Sergeant Major -
   |  | 561 |  
 
  | 
		
			
				  Отправлено: 13.04.07 13:10:10 | 
				 |  
			
  |  
			Можно...Рандом в принципе тож мона замутить...
 
Если захотеть...
 
 
Сделать case условие и рандомить при выборе вырианты case'a
 
Я правда в упор не помню как это делать , синтаксис забыл напрочь...Но , помню , выделывал такое...Ток под С++    |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		nprotect = Warrant Officer =
   |  | 997 |  
 
  | 
		
			
				  Отправлено: 13.04.07 13:32:04 | 
				 |  
			
  |  
			 	  | Post : | 	 		  | Сделать case условие и рандомить при выборе вырианты case'a Я правда в упор не помню как это делать , синтаксис забыл напрочь... | 	  
 
что-то типа switch ... case ... { } case ... { } и т.д.
 
но можно замутить с if, будет более громоздко   всегда, когда лень вспоминать case, делаю ифами    |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Post - Sergeant Major -
   |  | 561 |  
 
  | 
		
			
				  Отправлено: 13.04.07 13:46:55 | 
				 |  
			
  |  
			| Да да да...Я об этом...И мне тоже что характерно лень вспоминать case |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		nprotect = Warrant Officer =
   |  | 997 |  
 
  | 
		
			
				  Отправлено: 13.04.07 14:15:01 | 
				 |  
			
  |  
			но case быстрее обрабатывается, чем сотня ифов, тут уж компромисс надо искать   |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Memfis = Master Corporal =
   |  | 293 |  
 
  | 
		
			
				  Отправлено: 13.04.07 15:32:53 | 
				 |  
			
  |  
			чё там вспоминать то  
 
 
		  
 
switch
 
{
 
case
 
{
 
...
 
break;
 
}
 
case
 
{
 
...
 
break;
 
}
 
}
 
 | 	   |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Post - Sergeant Major -
   |  | 561 |  
 
  | 
		
			
				  Отправлено: 13.04.07 16:55:46 | 
				 |  
			
  |  
			| Ээээээх...Хорошо хоть кто-то помнит... |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Const - Master Corporal -
   |  | 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 =
   |  | 997 |  
 
  | 
		
			
				  Отправлено: 13.04.07 19:12:56 | 
				 |  
			
  |  
			
 
опа, оказывается можно массивами пользоваться в ACS    это новость    |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Const - Master Corporal -
   |  | 274 |  
 
  | 
		
			
				  Отправлено: 13.04.07 19:14:47 | 
				 |  
			
  |  
			| nprotect, ага, причем это давно описано на странице ACS |  
 |  
  | 
      	
	
        
		 |  |