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

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

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

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

Sound off при новом раунде

, Нужно доработать...
Статус пользователя STILL47DEATH
сообщение 21.12.2010, 21:50
Сообщение #1


Стаж: 18 лет

Сообщений: 662
Благодарностей: 83
Полезность: 150

Доброго времени.
В паблике лежал плагин winter_environment, с 3 функциями: звук бомбы + модель бомбы, шаги, снег. Так как шаги были баганые, т.е. тихого шага не было (топанье по снегу слышно всё время), то я решил удалить данный фрагмент из исходника. Получилось так (познания в PAWN быски к нулю, но вроде правильно вырезал лишнее, раз плагин у меня нормально работает):
CODE
#include <amxmodx>
#include <fakemeta>

#define PLUGIN "Winter Environment"
#define VERSION "1.0"
#define AUTHOR "Alka"

#define STEP_DELAY 0.5

new const g_szBombModels[][] = {

"models/ch-m/c4-christmastree2.mdl",
"models/ch-m/c4-christmastree.mdl",
"models/ch-m/frost_man.mdl",
"models/ch-m/present1.mdl"
};
new const g_szBombSounds[][] = {

"ch-s/bmb_planted.wav",
"ch-s/bmb_defused.wav",
"ch-s/bmb_defuse_failure.wav"
};

new g_iLedSprite;

public plugin_init() {

register_plugin(PLUGIN, VERSION, AUTHOR);

register_forward(FM_SetModel, "fwd_SetModel", 1);
register_forward(FM_PlayerPreThink, "fwd_PlayerPreThink", 0);

register_logevent("logevent_BombPlanted", 3, "2=Planted_The_Bomb");
register_logevent("logevent_BombDefused", 3, "2=Defused_The_Bomb");
register_logevent("logevent_BombExploded", 6, "3=Target_Bombed");

register_message(SVC_TEMPENTITY, "message_TempEntity");
}

public plugin_precache()
{
engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_snow"));

new i;
for(i = 0 ; i < sizeof g_szBombModels ; i++)
precache_model(g_szBombModels[i]);
for(i = 0 ; i < sizeof g_szBombSounds ; i++)
precache_sound(g_szBombSounds[i]);

g_iLedSprite = precache_model("sprites/ledglow.spr");
}

public fwd_SetModel(ent, const szModel[])
{
if(!pev_valid(ent))
return FMRES_IGNORED;

if(equal(szModel, "models/w_c4.mdl"))
{
static iRndModel; iRndModel = random_num(0, sizeof g_szBombModels - 1);
engfunc(EngFunc_SetModel, ent, g_szBombModels[iRndModel]);

return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}

public logevent_BombPlanted()
{
emit_sound(0, CHAN_AUTO, g_szBombSounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
}

public logevent_BombDefused()
{
client_cmd(0, "wait;stopsound");
emit_sound(0, CHAN_AUTO, g_szBombSounds[1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
}

public logevent_BombExploded()
{
emit_sound(0, CHAN_AUTO, g_szBombSounds[2], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
}

public message_TempEntity(msg_id, msg_dest, msg_ent)
{
if(get_msg_arg_int(1) == TE_GLOWSPRITE)
{
if(get_msg_arg_int(5) == g_iLedSprite)
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}

stock Float:is_user_outside(id)
{
new Float:vOrigin[3], Float:fDist;
pev(id, pev_origin, vOrigin);

fDist = vOrigin[2];

while(engfunc(EngFunc_PointContents, vOrigin) == CONTENTS_EMPTY)
vOrigin[2] += 5.0;

if(engfunc(EngFunc_PointContents, vOrigin) == CONTENTS_SKY)
return (vOrigin[2] - fDist);

return 0.0;
}

stock Float:fm_get_user_speed(id)
{
if(!is_user_connected(id))
return 0.0;

static Float:fVelocity[3];
pev(id, pev_velocity, fVelocity);

fVelocity[2] = 0.0;

return vector_length(fVelocity);
}


Но есть проблема, она заключается в звуке бомбы. Когда бомба поставлена проигрывается мелодия. Если бомбу обезвредили, то мелодия отрубается. Если бомба взорвалась, звук выкл. Если же раунд выигран, то мелодия в новом раунде продолжается до тех пор, пока трек не закончится. Я так понял вот в этом отрезке:
CODE
public logevent_BombDefused()
{
client_cmd(0, "wait;stopsound");
emit_sound(0, CHAN_AUTO, g_szBombSounds[1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
}

public logevent_BombExploded()
{
emit_sound(0, CHAN_AUTO, g_szBombSounds[2], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
}

Надо добавить новое условие для начала нового раунда, но я не знаю как это сделать, кому не трудно, подскажите!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Rejiser
сообщение 21.12.2010, 22:16
Сообщение #2


Стаж: 16 лет

Сообщений: 2261
Благодарностей: 1068
Полезность: 870

Добавь
Код
register_event("HLTV", "round_start", "a", "1=0", "2=0")

public round_start()
{
     client_cmd(0, "wait;stopsound");
}


Отредактировал: Rejiser, - 21.12.2010, 22:16
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STILL47DEATH
сообщение 21.12.2010, 22:55
Сообщение #3


Стаж: 18 лет

Сообщений: 662
Благодарностей: 83
Полезность: 150

Цитата(Rejiser @ 21.12.2010, 23:16) *
Добавь
Код
register_event("HLTV", "round_start", "a", "1=0", "2=0")

public round_start()
{
     client_cmd(0, "wait;stopsound");
}

порывшись в инете, сам также сделал, но проблема, заметил, что западают все звуки в начале раунда. Т.е. когда появляешься слышно закуп (ведь в начале раунд автозакуп пистолета происходит). Как сделать, чтобы стандартные звуки игры не затрагивало, только именно звук бомбы?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GODZILLA
сообщение 21.12.2010, 23:16
Сообщение #4


Стаж: 18 лет

Сообщений: 1471
Благодарностей: 440
Полезность: 716

Можно убрать еще:

Код
#define STEP_DELAY 0.5


public plugin_init() {
register_forward(FM_PlayerPreThink, "fwd_PlayerPreThink", 0);
}

stock Float:is_user_outside(id)
{
new Float:vOrigin[3], Float:fDist;
pev(id, pev_origin, vOrigin);

fDist = vOrigin[2];

while(engfunc(EngFunc_PointContents, vOrigin) == CONTENTS_EMPTY)
vOrigin[2] += 5.0;

if(engfunc(EngFunc_PointContents, vOrigin) == CONTENTS_SKY)
return (vOrigin[2] - fDist);

return 0.0;
}

stock Float:fm_get_user_speed(id)
{
if(!is_user_connected(id))
return 0.0;

static Float:fVelocity[3];
pev(id, pev_velocity, fVelocity);

fVelocity[2] = 0.0;

return vector_length(fVelocity);
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STILL47DEATH
сообщение 22.12.2010, 12:12
Сообщение #5


Стаж: 18 лет

Сообщений: 662
Благодарностей: 83
Полезность: 150

Цитата(GODZILLA @ 22.12.2010, 0:16) *
Можно убрать еще:

Код
#define STEP_DELAY 0.5


public plugin_init() {
register_forward(FM_PlayerPreThink, "fwd_PlayerPreThink", 0);
}

stock Float:is_user_outside(id)
{
new Float:vOrigin[3], Float:fDist;
pev(id, pev_origin, vOrigin);

fDist = vOrigin[2];

while(engfunc(EngFunc_PointContents, vOrigin) == CONTENTS_EMPTY)
vOrigin[2] += 5.0;

if(engfunc(EngFunc_PointContents, vOrigin) == CONTENTS_SKY)
return (vOrigin[2] - fDist);

return 0.0;
}

stock Float:fm_get_user_speed(id)
{
if(!is_user_connected(id))
return 0.0;

static Float:fVelocity[3];
pev(id, pev_velocity, fVelocity);

fVelocity[2] = 0.0;

return vector_length(fVelocity);
}


это разве не кусок отвечающий за снег?! снег убирать я не хочу! А тема со звуком актуальна...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GODZILLA
сообщение 22.12.2010, 20:50
Сообщение #6


Стаж: 18 лет

Сообщений: 1471
Благодарностей: 440
Полезность: 716

Нет :)
снег вообще добавляется так
Код
public plugin_precache()
{
engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_snow"));
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ananim
сообщение 23.12.2010, 12:00
Сообщение #7
Стаж: 17 лет

Сообщений: 34
Благодарности: выкл.

помогите, пожалуйста с этим же плагином blush2.gif мне от него нужен только падающий снег (звуки модели не нужны, только визуальный эффект падающего снега, интесивность которого игрок может для себя настроить сам через cl_weather).
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STILL47DEATH
сообщение 23.12.2010, 14:21
Сообщение #8


Стаж: 18 лет

Сообщений: 662
Благодарностей: 83
Полезность: 150

Цитата(GODZILLA @ 22.12.2010, 21:50) *
Нет :)
снег вообще добавляется так
Код
public plugin_precache()
{
engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_snow"));
}

Хорошо, спасибо. И всё же можно как-то сделать, чтобы глушилась только мелодия, а не все звуки игры?

Цитата(ananim @ 23.12.2010, 13:00) *
помогите, пожалуйста с этим же плагином blush2.gif мне от него нужен только падающий снег (звуки модели не нужны, только визуальный эффект падающего снега, интесивность которого игрок может для себя настроить сам через cl_weather).

Тебе дали кусок отвечающий за снег, по соображай и слепи!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GODZILLA
сообщение 23.12.2010, 20:55
Сообщение #9


Стаж: 18 лет

Сообщений: 1471
Благодарностей: 440
Полезность: 716

ananim,
а для кого я это делал ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ananim
сообщение 24.12.2010, 0:58
Сообщение #10
Стаж: 17 лет

Сообщений: 34
Благодарности: выкл.

GODZILLA, спасибо, незаметил. вот только когда прочел "цветной чат" немного огорчился, сейчас поставю глянем как его вырубить ))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ars700430
сообщение 9.3.2011, 11:03
Сообщение #11
Стаж: 15 лет

Сообщений: 18
Благодарностей: 1
Полезность: 0

Ребят... как этот плагин переделать!? скиньте код плиз... чтобы на сервере он работал тогда минируешь бомбу, и тогда поставил один раз проработал зву... и остановился!!! а модельки итд не надо!

"ch-s/bmb_planted.wav",
"ch-s/bmb_defused.wav",

тока вот эти два звука что бы было как сделать остальное не надо!!!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: