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

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

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

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

Звуки убийст только для того кто убил

, внутри [РЕШЕНО]
Статус пользователя energydance
сообщение 13.1.2018, 23:14
Сообщение #1


Стаж: 10 лет

Сообщений: 2809
Благодарностей: 740
Полезность: 213

Всем привет , иммется плагин f_ultimate_sounds
так вот , при убийстве звук воспроизводится всем игрокам , а хотелось бы чтобы звук воспроизводил у того кто убивает ( хедшот мультикилл и т.д.)
поможет кто?
исходник прикрепил
Код
Код:
Код
new const PLUGIN[]  = "Ultimate Sounds"
new const VERSION[] = "1.7"
new const AUTHOR[]  = "Dizzy / Bmann_420"


// Includes
#include <amxmodx>


//Defines
#define KNIFEMESSAGES 5
#define MESSAGESNOHP 5
#define MESSAGESHP 5
#define LEVELS 12


//Pcvars
new streak_mode, knife_mode, hs_mode, lastman_mode

new gmsgHudSync

new kills[33] = {0,...};
new deaths[33] = {0,...};
new alone_ann = 0
new levels[12] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12,13};

//Streak Sounds
new stksounds[12][] = {
"misc/female/f_multikill",
"misc/female/f_killingspree",
"misc/female/f_megakill",
"misc/female/f_dominating",
"misc/female/f_ultrakill",
"misc/female/f_rampage",
"misc/female/f_monsterkill",
"misc/female/f_ludacrisskill",
"misc/female/f_unstoppable",
"misc/female/f_godlike",
"misc/female/f_holyshit",
"misc/female/f_wickedsick"};

//Exact Messages
new stkmessages[12][] = {
"%s: Multi-Kill!",
"%s: Killing Spree!",
"%s: Mega-Kill!",
"%s: Dominating!",
"%s: Ultra-Kill!",
"%s: Rampage!",
"%s: Monster-Kill!",
"%s: Ludacriss-Kill!",
"%s: Unstoppable!",
"%s: Godlike!",
"%s: Holy Shit!",
"%s: Wicked Sick!"}


new knifemessages[KNIFEMESSAGES][] =
{
    "KNIFE_MSG_1",  
    "KNIFE_MSG_2",  
    "KNIFE_MSG_3",  
    "KNIFE_MSG_4",  
    "KNIFE_MSG_5"
}

new messagesnohp[MESSAGESNOHP][] =
{
    "NOHP_MSG_1",  
    "NOHP_MSG_2",  
    "NOHP_MSG_3",  
    "NOHP_MSG_4",  
    "NOHP_MSG_5"
}

new messageshp[MESSAGESHP][] =
{
    "HP_MSG_1",  
    "HP_MSG_2",  
    "HP_MSG_3",  
    "HP_MSG_4",  
    "HP_MSG_5"
}

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_cvar("ultimate_sounds",VERSION,FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_UNLOGGED|FCVAR_SPONLY)
    register_dictionary("ultimate_sounds.txt")
    register_event("DeathMsg","hs","a","3=1")
    register_event("DeathMsg","knife_kill","a","4&kni")
    register_event("ResetHUD", "reset_hud", "b");
    register_event("DeathMsg", "death_event", "a", "1>0");
    register_event("DeathMsg","death_msg","a")
    register_event("SendAudio","roundend_msg","a","2=%!MRAD_terwin","2=%!MRAD_ctwin","2=%!MRAD_rounddraw")
    register_event("TextMsg","roundend_msg","a","2&#Game_C","2&#Game_w")

    lastman_mode = register_cvar("lastman_mode","abc")
    streak_mode = register_cvar("streak_mode","ab")
    knife_mode = register_cvar("knife_mode","ab")
    hs_mode = register_cvar("hs_mode","ab")

    gmsgHudSync = CreateHudSyncObj()

    return PLUGIN_CONTINUE
}


get_streak()
{
    new streak[3]
    get_pcvar_string(streak_mode,streak,2)
    return read_flags(streak)
}

public death_event(id)
{
    new streak = get_streak()

    if ((streak&1) || (streak&2))
    {
            new killer = read_data(1);
            new victim = read_data(2);

            kills[killer] += 1;
            kills[victim] = 0;
            deaths[killer] = 0;
            deaths[victim] += 1;

            for (new i = 0; i < LEVELS; i++)
        {
                if (kills[killer] == levels[i])
            {
                        announce(killer, i);
                        return PLUGIN_CONTINUE;
            }
        }
    }
    return PLUGIN_CONTINUE;
}

announce(killer, level)
{
    new streak = get_streak()

    if (streak&1)
    {
            new name[32];

           get_user_name(killer, name, 32);
        set_hudmessage(0, 100, 200, 0.05, 0.65, 2, 0.02, 6.0, 0.01, 0.1, 2);
        ShowSyncHudMsg(0, gmsgHudSync, stkmessages[level], name);
    }

    if (streak&2){
        for(new i=1;i<=get_maxplayers();i++)
            if(is_user_connected(i) ==1 )
                client_cmd(i, "spk %s", stksounds[level]);
    }
}

public reset_hud(id)
{
    new streak = get_streak()

    if (streak&1)
    {

        if (kills[id] > levels[0])

        {
                client_print(id, print_chat,"%L", id, "KILL_STREAK", kills[id]);
        }

        else if (deaths[id] > 1)

        {
            client_print(id, print_chat,"%L", id, "DEATH_STREAK", deaths[id]);
        }
    }
}

public client_connect(id)
{
    new streak = get_streak()

    if ((streak&1) || (streak&2))
    {
        kills[id] = 0;
        deaths[id] = 0;
    }
}

public knife_kill()
{
    new knifemode[4]
    get_pcvar_string(knife_mode,knifemode,4)
    new knifemode_bit = read_flags(knifemode)

    if (knifemode_bit & 1)
    {
        new killer_id = read_data(1)
        new victim_id = read_data(2)
        new killer_name[33], victim_name[33]

        get_user_name(killer_id,killer_name,33)
        get_user_name(victim_id,victim_name,33)


        set_hudmessage(200, 100, 0, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
        ShowSyncHudMsg(0, gmsgHudSync, "%L", LANG_PLAYER, knifemessages[ random_num(0,KNIFEMESSAGES-1) ],killer_name,victim_name)
    }

    if (knifemode_bit & 2)
    {
        for(new i=1;i<=get_maxplayers();i++)
            if(is_user_connected(i)==1 )
                client_cmd(i,"spk misc/female/f_humiliation")
       }
}


public roundend_msg(id)

    alone_ann = 0

public death_msg(id)
{

    new lmmode[8]
    get_pcvar_string(lastman_mode,lmmode,8)
    new lmmode_bit = read_flags(lmmode)

    new players_ct[32], players_t[32], ict, ite, last
    get_players(players_ct,ict,"ae","CT")  
    get_players(players_t,ite,"ae","TERRORIST")  

    if (ict==1&&ite==1)
    {
        new name1[32], name2[32]
        get_user_name(players_ct[0],name1,32)
        get_user_name(players_t[0],name2,32)
        set_hudmessage(200, 100, 0, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)

        if (lmmode_bit & 1)
        {
            if (lmmode_bit & 2)
            {
                ShowSyncHudMsg(0, gmsgHudSync, "%s (%i hp) vs. %s (%i hp)",name1,get_user_health(players_ct[0]),name2,get_user_health(players_t[0]))
            }

            else
            {
                ShowSyncHudMsg(0, gmsgHudSync, "%s vs. %s",name1,name2)
            }

            if (lmmode_bit & 4)
            {
                for(new i=1;i<=get_maxplayers();i++)
                    if( is_user_connected(i) == 1 )
                        client_cmd(i,"spk misc/maytheforce")
            }
        }
    }
    else
{  
    if (ict==1&&ite>1&&alone_ann==0&&(lmmode_bit & 4))
    {
        last=players_ct[0]
        client_cmd(last,"spk misc/female/f_oneandonly")
    }

    else if (ite==1&&ict>1&&alone_ann==0&&(lmmode_bit & 4))
    {
        last=players_t[0]
        client_cmd(last,"spk misc/female/f_oneandonly")
    }

    else
    {
        return PLUGIN_CONTINUE
    }
    alone_ann = last
    new name[32]  
    get_user_name(last,name,32)

    if (lmmode_bit & 1)
    {
        set_hudmessage(200, 100, 0, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)

        if (lmmode_bit & 2)
        if (lmmode_bit & 2)
        {
            ShowSyncHudMsg(0, gmsgHudSync, "%L", LANG_PLAYER, messageshp[ random_num(0,MESSAGESHP-1) ],ite ,ict ,name,get_user_health(last))
        }

        else
        {
            ShowSyncHudMsg(0, gmsgHudSync, "%L", LANG_PLAYER, messagesnohp[ random_num(0,MESSAGESNOHP-1) ],ite ,ict ,name )
        }
    }
}
    return PLUGIN_CONTINUE  
}


public hs()
{
    new hsmode[4]
    get_pcvar_string(hs_mode,hsmode,4)
    new hsmode_bit = read_flags(hsmode)

    if (hsmode_bit & 1)
    {
    new killer_id = read_data(1)
    new victim_id = read_data(2)
    new victim_name[33]

    get_user_name(victim_id,victim_name,33)

    set_hudmessage(200, 100, 0, -1.0, 0.30, 0, 3.0, 3.0, 0.15, 0.15, 1)
    ShowSyncHudMsg(killer_id, gmsgHudSync, "::HEADSHOT::^nYou Owned %s !!",victim_name)
    }

    if (hsmode_bit & 2)
    {
        for(new i=1;i<=get_maxplayers();i++)
            if(is_user_connected(i)==1)
                client_cmd(i,"spk misc/female/f_headshot")
    }
}

public plugin_precache()
{
    precache_sound("misc/female/f_monsterkill.wav")
    precache_sound("misc/female/f_godlike.wav")
    precache_sound("misc/female/f_headshot.wav")
    precache_sound("misc/female/f_humiliation.wav")
    precache_sound("misc/female/f_killingspree.wav")
    precache_sound("misc/female/f_multikill.wav")
    precache_sound("misc/female/f_ultrakill.wav")
    precache_sound("misc/maytheforce.wav")
    precache_sound("misc/female/f_oneandonly.wav")
    precache_sound("misc/female/f_rampage.wav")
    precache_sound("misc/female/f_holyshit.wav")
    precache_sound("misc/female/f_megakill.wav")
    precache_sound("misc/female/f_wickedsick.wav")
    precache_sound("misc/female/f_ludacrisskill.wav")
    precache_sound("misc/female/f_unstoppable.wav")
    precache_sound("misc/female/f_dominating.wav")
        
    return PLUGIN_CONTINUE
}



Отредактировал: energydance, - 13.1.2018, 23:15
Прикрепленные файлы:
Прикрепленный файл  f_ultimate_sounds.sma ( 11,01 килобайт ) Кол-во скачиваний: 15


Press enter to exit ...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя JIuXeP
сообщение 13.1.2018, 23:32
Сообщение #2


Стаж: 12 лет

Сообщений: 338
Благодарностей: 205
Полезность: 792

Код:
if (streak&2){
for(new i=1;i<=get_maxplayers();i++)
if(is_user_connected(i) ==1 )
client_cmd(i, "spk %s", stksounds[level]);
}

->
Код:
if (streak&2) 
if(is_user_connected(killer))
client_cmd(killer, "spk %s", stksounds[level]);


Отредактировал: JIuXeP, - 13.1.2018, 23:36
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя energydance
сообщение 13.1.2018, 23:41
Сообщение #3


Стаж: 10 лет

Сообщений: 2809
Благодарностей: 740
Полезность: 213

JIuXeP,
//AMXXPC compile.exe
// by the AMX Mod X Dev Team


//// f_ultimate_sounds.sma
// C:\Documents and Settings\Admin\╠юш фюъєьхэЄ√\Compiler 1.8.2\f_ultimate_sound
s.sma(229) : error 054: unmatched closing brace
//
// 1 Error.
// Could not locate output file compiled\f_ultimate_sounds.amx (compile failed).

//
// Compilation Time: 0,11 sec
// ----------------------------------------

Press enter to exit ...


Press enter to exit ...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя paraz1t15
сообщение 13.1.2018, 23:58
Сообщение #4
Стаж: 11 лет
Город: Красноярск

Сообщений: 240
Благодарностей: 49
Полезность: 171

error 054: unmatched closing brace
Скобу лишнею убирай
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя energydance
сообщение 14.1.2018, 0:00
Сообщение #5


Стаж: 10 лет

Сообщений: 2809
Благодарностей: 740
Полезность: 213

JIuXeP,
спасибо ))
а как убрать варн?


paraz1t15, да я исправил уже её наоборот не хватало открытой скобки ))

UPD
протестил плагин , звуки все так же воспроизводит всем psych.gif blush2.gif

Отредактировал: energydance, - 14.1.2018, 0:14


Press enter to exit ...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dehost
сообщение 14.1.2018, 0:17
Сообщение #6


Стаж: 13 лет

Сообщений: 3147
Благодарностей: 1431
Полезность: 486

energydance,
потому что код кривой, по компиляции что не видишь? скомпилил с ошибкой...


Золотое правило нравственности:
"Относись к людям так, как хочешь, чтобы относились к тебе."
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя energydance
сообщение 14.1.2018, 0:19
Сообщение #7


Стаж: 10 лет

Сообщений: 2809
Благодарностей: 740
Полезность: 213

dehost, эта ошибка не влияет ))) это просто варнинг незначительный


Press enter to exit ...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя JIuXeP
сообщение 14.1.2018, 0:46
Сообщение #8


Стаж: 12 лет

Сообщений: 338
Благодарностей: 205
Полезность: 792

energydance, я привел пример первого и главного участка кода, где это заменяется. Нужно еще это сделать для кнайф и других оповещений

Cкрытый текст
Код:
	if (knifemode_bit & 2)
{
for(new i=1;i<=get_maxplayers();i++)
if(is_user_connected(i)==1 )
client_cmd(i,"spk misc/female/f_humiliation")
}
Код:
	if (knifemode_bit & 2)
{
// перед отправкой client_cmd незачем проверять, это и так заложено в самом амхх, правда звук может проигрываться когда игрок только коннектится (pPlayer->initialized), но в нашем случае это не грозит :)
// if(is_user_connected(killer_id))
client_cmd(killer_id, "spk misc/female/f_humiliation");
}
Cкрытый текст
Код:
    if (hsmode_bit & 2)
{
for(new i=1;i<=get_maxplayers();i++)
if(is_user_connected(i)==1)
client_cmd(i,"spk misc/female/f_headshot")
}
-->Код:
    if (hsmode_bit & 2)
{
// if(is_user_connected(killer_id))
client_cmd(killer_id, "spk misc/female/f_headshot");
}


В коде выше, который я скинул тоже можно спокойно убрать проверку:
Код:
if (streak&2)
{
// if(is_user_connected(killer)) // <--
client_cmd(killer, "spk %s", stksounds[level]);
}

не подумал об этом изначально, котелок не варит)

только вот по-новее мисксаундов нет?)
щас бы всех игроков циклом проганять, когда первый аргумент client_cmd и так позволяет отправить команду всем игрокам одновременно. https://github.com/alliedmodders/amxmodx/bl...cpp#L1993-L2000

Отредактировал: JIuXeP, - 14.1.2018, 1:04
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя energydance
сообщение 14.1.2018, 3:58
Сообщение #9


Стаж: 10 лет

Сообщений: 2809
Благодарностей: 740
Полезность: 213

JIuXeP, заменил в итоге ошибки

попробую сделать как в первом варианте smile.gif


Press enter to exit ...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя JIuXeP
сообщение 14.1.2018, 4:07
Сообщение #10


Стаж: 12 лет

Сообщений: 338
Благодарностей: 205
Полезность: 792

Код:
new killer_id = read_data(1)

Вынеси за условие:
Код:
	if (hsmode_bit & 1)
{
new killer_id = read_data(1)
//...
}
-->Код:
	new killer_id = read_data(1)
if (hsmode_bit & 1)
{
//...
}


Так же и во втором условии, где проверяется битовое вхождение knifemode_bit
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя energydance
сообщение 14.1.2018, 4:14
Сообщение #11


Стаж: 10 лет

Сообщений: 2809
Благодарностей: 740
Полезность: 213

JIuXeP,
получилось так
Cкрытый текст

Код:
Код
public knife_kill()
{
    new knifemode[4]
    get_pcvar_string(knife_mode,knifemode,4)
    new knifemode_bit = read_flags(knifemode)

    if (hsmode_bit & 1)
    {
        new killer_id = read_data(1)
        if (hsmode_bit & 1)
        new victim_id = read_data(2)
        new killer_name[33], victim_name[33]

        get_user_name(killer_id,killer_name,33)
        get_user_name(victim_id,victim_name,33)


        set_hudmessage(200, 100, 0, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, 1)
        ShowSyncHudMsg(0, gmsgHudSync, "%L", LANG_PLAYER, knifemessages[ random_num(0,KNIFEMESSAGES-1) ],killer_name,victim_name)
    }

    if (knifemode_bit & 2)
    {
        if(is_user_connected(killer_id))
        client_cmd(killer_id, "spk misc/female/f_humiliation")
       }
}



Press enter to exit ...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 14.1.2018, 12:01
Сообщение #12


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

Стаж: 16 лет

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

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

Код
if (hsmode_bit & 1)
    {
        new killer_id = read_data(1)
        if (hsmode_bit & 1)
        new victim_id = read_data(2)
        new killer_name[33], victim_name[33]

        get_user_name(killer_id,killer_name,33)
        get_user_name(victim_id,victim_name,33)

два раза условие проверяете if (hsmode_bit & 1)


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