Опять массивы и циклы. Нужна помощь! - страница 2

 
void PlaySoundEachXMinutesForYTimes(   string SoundFile  =  "Alert",    // Звуковой файл
                                       int SoundLength   =  1,          // Длина звукового файла в секундах
                                       int XMinutes      =  5,          // Период в минутах 
                                       int YTimes        =  3,          // Количество повторений
                                       int SecToPlayAll  =  45          // Время в секундах, за которое 
                                                                        // надо успеть сделать заданное 
									// количество повторений
                                       ){
                                       
   /*
      
      Зависит от тиков, может работать в индикаторе.
      
      Звук воспроизводится каждые XMinutes минут, по YTimes раз, с интервалом
      SoundLength секунд. Если за SecToPlayAll секунд от начала очередного
      временного отрезка из XMinutes не удалось выполнить заданное количество 
      повторений воспроизведения звука, то выполняется ожидание начала 
      следующего отрезка из XMinutes минут. 
      
      По первому тику нового отрезка из XMinutes звук вопроизводится всегда,
      независимо от SecToPlayAll, а повторения зависят от SecToPlayAll.
      
  */                                       
                                       
   int cur=TimeCurrent()/(XMinutes*60);
   static int pre=0;
   static datetime LastTime;
   static int Times;
      if(pre==0){
         pre=cur;
         return;
      }
      if(pre!=cur){
         pre=cur;
         PlaySound(SoundFile);
         LastTime=TimeCurrent();
         Times=YTimes-1;
         return(0);
      }
      if(Times>0){
         if(TimeCurrent()>=cur*(XMinutes*60)+SecToPlayAll){
            Times=0;
            return;
         }
         if(TimeCurrent()>=LastTime+SoundLength){
            PlaySound(SoundFile);
            Times--;
            LastTime=TimeCurrent();
         }
      }


}
 
Techno >>:

оо, отлично, да вот только неувязочка, нужно проиграть 3 подряд, сразу. А в данном случае если между тиками будет интервал в 10 секунд, то после поигрывания первого раза будет перерыв в 10 секунд

Я писал пример вам как это можно сделать, никто не мешает вам запустить цикл в котором вы будете знать задержку точно.

 
#import "winmm.dll"
   int PlaySoundA(string,int,int);

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
      PlaySoundA(TerminalPath()+"/sounds/Alert.wav",0,0);
      PlaySoundA(TerminalPath()+"/sounds/Alert.wav",0,0);      
      PlaySoundA(TerminalPath()+"/sounds/Alert.wav",0,0);      
      
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

зацикленый скрипт нужен


а индикаторы или советник работает потиково...

и там слееп неочень адекватно использовать!

наверно нужно делать из индикатора или советника

вызов скрипта! путём симуляции нажатия клавиш

а пятиминутки можно смотреть путём

Volume[0] == 1 соответсвенно на тай фрейме 5 минутка

получаем вызов скрипта 1 раз при нарисовки нового 5 минутного бара!

а дальше уже количество и качество и прочие параметры можно настроить в скрипте

который будет фигачить независимо от остального

 

Запускаешь зацикленный скрипт с соунд-функцией который следит за состоянием глобал-флага,

и при его true делает тройной проигрыш и фальшит флаг.

В true же флаг ставит индикатор. Всё.

Причина обращения: