Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Есть ли такая функция или команда.

, Остановка воспроизведения звуковых файлов.
Статус пользователя drivemaster
сообщение 23.12.2013, 16:50
Сообщение #1


Стаж: 17 лет

Сообщений: 266
Благодарностей: 79
Полезность: 246

Есть ли такая функция или коанда.

Вообщем хотел спросить у разбирающихся в скриптинге людей, есть ли такая возможность.

У меня один из серверов с модом ГГ, думаю многие знают, что там есть озвучивание некоторых событий, переход на уровень с Гранатой, Ножом, Мотд окно победителя. У меня стандартыне звуки заменены на мелодии примерно секунд по 10. Бывают такие моменты, когда человек переходя на уроень с Ножом, успевает практически сразу убить кого-то, до того как мелодия закончит играть, и соотсветственно вылезает МОТД окно победителя со своей музыкой, т.е. получается "какафония", одна мелодия накладывается на другую.

Можно ли како-то функцией или как это называется, сделать так, чтобы перед началом проигрывания следующей мелодии, команда принудительно останавливала проигрывание предыдущей и начинала играть текущую.

Если надо будет выложить код команды для запуска мелодии из ГГ, я выложу. И вообще возможно ли такое, средствами amxx.

Заранее благодарен.

Отредактировал: drivemaster, - 23.12.2013, 16:55
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Legenda
сообщение 23.12.2013, 16:59
Сообщение #2


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

есть
Код
client_cmd(id, "stopsound;mp3 stop");
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя drivemaster
сообщение 23.12.2013, 18:39
Сообщение #3


Стаж: 17 лет

Сообщений: 266
Благодарностей: 79
Полезность: 246

Я так понял вот кусок кода отвечающий за проигрывание звуков:

Код:
// another easy function to play sound via cvar
stock play_sound_by_cvar(id,pcvar)
{
static value[64];
get_pcvar_string(pcvar,value,63);

if(!value[0]) return;

if(containi(value,".mp3") != -1) client_cmd(id,"mp3 play ^"%s^"",value);
else client_cmd(id,"spk ^"%s^"",value);
}

// a taskable play_sound_by_cvar
public play_sound_by_cvar_task(params[2])
{
play_sound_by_cvar(params[0],params[1]);
}

// this functions take a filepath, but manages speak/mp3 play
stock play_sound(id,value[])
{
if(!value[0]) return;

if(containi(value,".mp3") != -1) client_cmd(id,"mp3 play ^"%s^"",value);
else
{
if(equali(value,"sound/",6)) client_cmd(id,"spk ^"%s^"",value[6]);
else client_cmd(id,"spk ^"%s^"",value);
}
}


Или этот
Код:

if(warmup <= 0)
{
new leader = get_leader();

if(equal(lvlWeapon[leader],"hegrenade")) play_sound_by_cvar(0,gg_sound_nade);
else if(equal(lvlWeapon[leader],"knife")) play_sound_by_cvar(0,gg_sound_knife);
}


Но звуки не mp3, исключая музыку во время МОТД окна победителя, будет ли команда останавливать их, и куда её прописать?

Код:
	// sound cvars
gg_sound_levelup = register_cvar("gg_sound_levelup","sound/gungame/gg_levelup.wav");
gg_sound_leveldown = register_cvar("gg_sound_leveldown","sound/ambience/xtal_down1.wav");
gg_sound_levelsteal = register_cvar("gg_sound_levelsteal","sound/turret/tu_die.wav");
gg_sound_nade = register_cvar("gg_sound_nade","sound/gungame/gg_nade_level.wav");
gg_sound_knife = register_cvar("gg_sound_knife","sound/gungame/gg_knife_level.wav");
gg_sound_welcome = register_cvar("gg_sound_welcome","sound/gungame/gg_welcome.wav");
gg_sound_triple = register_cvar("gg_sound_triple","sound/gungame/gg_triple.wav");
gg_sound_winner = register_cvar("gg_sound_winner","media/Half-Life03.mp3;media/Half-Life08.mp3;media/Half-Life11.mp3;media/Half-Life17.mp3");
gg_sound_takenlead = register_cvar("gg_sound_takenlead","sound/gungame/gg_takenlead.wav");
gg_sound_tiedlead = register_cvar("gg_sound_tiedlead","sound/gungame/gg_tiedlead.wav");
gg_sound_lostlead = register_cvar("gg_sound_lostlead","sound/gungame/gg_lostlead.wav");


Отредактировал: drivemaster, - 23.12.2013, 18:43
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 23.12.2013, 19:21
Сообщение #4


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Код:
// this functions take a filepath, but manages speak/mp3 play
stock play_sound(id,value[])
{
if(!value[0]) return;
client_cmd(id, "stopsound;mp3 stop");
if(containi(value,".mp3") != -1) client_cmd(id,"mp3 play ^"%s^"",value);
else
{
if(equali(value,"sound/",6)) client_cmd(id,"spk ^"%s^"",value[6]);
else client_cmd(id,"spk ^"%s^"",value);
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя drivemaster
сообщение 23.12.2013, 20:19
Сообщение #5


Стаж: 17 лет

Сообщений: 266
Благодарностей: 79
Полезность: 246

Спасибо, как попробую сразу отпишусь!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя drivemaster
сообщение 24.12.2013, 12:36
Сообщение #6


Стаж: 17 лет

Сообщений: 266
Благодарностей: 79
Полезность: 246

Остановка работает, но код который я дал, скорее всего отвечает за воспроизведение мелодии при показе окна победителя, соответственно, все звуки играющие до показа окна, останавливаются при его показе и начинает играть мелодия ”победителя”. Так как весь плагин сюда не впихнуть ввиду большого количества строк с кодом, поэтому попробую выдернуть куски, которые могут отвечать за проигрывание мелодии при переходе не уровень с Ножом и Гранатой, перед проигрыванием которых нужно вставить остановку предыдущих звуков.

1.
Код:
// don't ask me where I'm getting this from.
if(shouldWarmup)
{
shouldWarmup = 0;
start_warmup();
}

if(warmup <= 0)
{
new leader = get_leader();

if(equal(lvlWeapon[leader],"hegrenade")) play_sound_by_cvar(0,gg_sound_nade);
else if(equal(lvlWeapon[leader],"knife")) play_sound_by_cvar(0,gg_sound_knife);
}


2.
Код:
// this is a sound
if(equal(command,"gg_sound_",9) || equal(command,"gg_lead_sounds"))
{
parse(command,cvar,31,value,WINSOUNDS_SIZE-1);
set_cvar_string(cvar,value);
}


3.
Код:
// I'm a leader!
if(warmup <= 0 && level[get_leader()] == level[id])
{
new sound_cvar;
if(nade) sound_cvar = gg_sound_nade;
else if(equal(lvlWeapon[id],"knife")) sound_cvar = gg_sound_knife;

if(sound_cvar)
{
// only play sound if we reached this level first
if(num_players_on_level(level[id]) == 1) play_sound_by_cvar(0,sound_cvar);
}
}


4.
Код:
// another easy function to play sound via cvar
stock play_sound_by_cvar(id,pcvar)
{
static value[64];
get_pcvar_string(pcvar,value,63);

if(!value[0]) return;

if(containi(value,".mp3") != -1) client_cmd(id,"mp3 play ^"%s^"",value);
else client_cmd(id,"spk ^"%s^"",value);
}




5.
Код:
// a taskable play_sound_by_cvar
public play_sound_by_cvar_task(params[2])
{
play_sound_by_cvar(params[0],params[1]);
}


6. Это тот кусок в которй мы прописали остановку.
Код:
// this functions take a filepath, but manages speak/mp3 play
stock play_sound(id,value[])
{
if(!value[0]) return;
client_cmd(id, "stopsound;mp3 stop");
if(containi(value,".mp3") != -1) client_cmd(id,"mp3 play ^"%s^"",value);
else
{
if(equali(value,"sound/",6)) client_cmd(id,"spk ^"%s^"",value[6]);
else client_cmd(id,"spk ^"%s^"",value);
}
}


Отредактировал: drivemaster, - 24.12.2013, 12:37
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 24.12.2013, 13:01
Сообщение #7


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

ищи команду client_cmd ***** в своем исходнике плагина

4.
Код:

// another easy function to play sound via cvar
stock play_sound_by_cvar(id,pcvar)
{
static value[64];
get_pcvar_string(pcvar,value,63);

if(!value[0]) return;
client_cmd(id, "stopsound;mp3 stop");
if(containi(value,".mp3") != -1) client_cmd(id,"mp3 play ^"%s^"",value);
else client_cmd(id,"spk ^"%s^"",value);
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: