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

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

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

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

> Правила раздела

Перед созданием новой темы убедитесь, не искал ли кто-нибудь подобный плагин до вас, для этого следует воспользоваться поиском.

Все вновь созданные темы, с названием типа "Помогите найти", "А что это за плагин", "Ищу плагин", "Нужен плагин", "Подскажите пожалуйста название плагина" - будут удалены.
При создании темы постарайтесь максимально понятно сформулировать её заголовок так, чтобы он соответствовал функциям плагина который Вы ищите. В том случае, если Вам не удается сформулировать мысль и правильно расписать всё в теме, воспользуйтесь графическим редактором, к примеру Paint, что бы примерно изобразить функции нужного Вам плагина.

ultimate killstreak advanced

, HELP PLZ
Статус пользователя ShaRk1
сообщение 11.10.2018, 19:31
Сообщение #1
Стаж: 11 лет

Сообщений: 23
Благодарностей: 3
Полезность: 20

Мне нужен такой
Код
Kills Streak Sounds

3 Frags -> TRIPLE KILL
5 Frags -> MULTI KILL
6 Frags -> RAMPAGE
7 Frags -> KILLING SPREE
9 Frags -> DOMINATING
11 Frags -> UNSTOPPABLE
13 Frags -> MEGA KILL
15 Frags -> ULTRA KILL
16 Frags -> EAGLE EYE
17 Frags -> OWNAGE
18 Frags -> LUDICROUS KILL
19 Frags -> HEAD HUNTER
20 Frags -> WICKED SICK
21 Frags -> MONSTER KILL
23 Frags -> HOLY SHIT
24 Frags -> G O D L I K E


KILL MSG должен появятся с левой стороны с задержкой после килла
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя r1nk0
сообщение 11.10.2018, 21:10
Сообщение #2


Стаж: 12 лет

Сообщений: 1417
Благодарностей: 705
Полезность: 349

https://forums.alliedmods.net/showthread.php?p=638940


Создание и редактирование карт ($) - vk.com/id476857873
Настройка и техническое обслуживание ваших игровых серверов - vk.com/id476857873
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ShaRk1
сообщение 12.10.2018, 3:11
Сообщение #3
Стаж: 11 лет

Сообщений: 23
Благодарностей: 3
Полезность: 20

Цитата(r1nk0 @ 11.10.2018, 22:10) *

, Там MSG kill на середине монитора показывает , мне нужен с что бы с левой стороны показывал + с задержкой на 5 сек после килла
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя VenigreT
сообщение 12.10.2018, 3:55
Сообщение #4
Стаж: 10 лет

Сообщений: 674
Благодарностей: 202
Полезность: 537

ShaRk1, сколько просишь чтобы тебе делали и давали плагины, но ни разу спасибо даже не сказал, и на спасибку не нажал.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя tyne
сообщение 12.10.2018, 6:32
Сообщение #5


Стаж: 13 лет

Сообщений: 544
Благодарностей: 137
Полезность: 91

ShaRk1, так возьми этот исходник и сделай чтоб слева показывало, настроить это можно
А то и найти не можешь, и координаты поменять
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Tiproni
сообщение 12.10.2018, 10:10
Сообщение #6


Стаж: 8 лет 1 месяц
Город: Пермь

Сообщений: 278
Благодарностей: 129
Полезность: 576

Цитата

Строки: 161, 183, 267, 303 и 309
Заменяешь содержимое на:
Код:
set_hudmessage(200, 200, 200, 0.0, -1.0, 0, 6.0, 5.0)

Подробнее о худ сообщениях игроку, можно узнать тут.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ShaRk1
сообщение 12.10.2018, 13:57
Сообщение #7
Стаж: 11 лет

Сообщений: 23
Благодарностей: 3
Полезность: 20

Цитата(VenigreT @ 12.10.2018, 4:55) *
ShaRk1, сколько просишь чтобы тебе делали и давали плагины, но ни разу спасибо даже не сказал, и на спасибку не нажал.

Спасибо чувак, я даже незнаю где тут поблагодарить
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ShaRk1
сообщение 12.10.2018, 13:57
Сообщение #8
Стаж: 11 лет

Сообщений: 23
Благодарностей: 3
Полезность: 20

Цитата(tyne @ 12.10.2018, 7:32) *
ShaRk1, так возьми этот исходник и сделай чтоб слева показывало, настроить это можно
А то и найти не можешь, и координаты поменять

Щас попробую
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ShaRk1
сообщение 12.10.2018, 17:00
Сообщение #9
Стаж: 11 лет

Сообщений: 23
Благодарностей: 3
Полезность: 20

Братан там другие тексты
Спойлер
Код
/********************************************************************************
*****
******* PRAGMA ***********************************************************************
********************************************************************************
*****/

// WHETHER OR NOT TO FORCE ';' AFTER EACH LINE
//
// #pragma semicolon    1

// WHETHER OR NOT TO INCREASE MEMORY FOR THIS SCRIPT
//
#pragma dynamic            524288        // 128 * 128 * 32

// WHETHER OR NOT TO USE '\' AS A CONTROL CHARACTER
// INSTEAD OF THE DEFAULT ONE, WHICH IS '^'
//
// #pragma ctrlchar        '\'

// SETS THE TAB SIZE ('\t' AND ' ') TO 0
// GLOBALLY
//
#pragma tabsize            0

// REQUIRES XSTATS MODULE IF AVAILABLE
//
#pragma reqclass        xstats

// XSTATS DEFAULTS
//
#pragma defclasslib        xstats    csx
#pragma defclasslib        xstats    dodx
#pragma defclasslib        xstats    tfcx
#pragma defclasslib        xstats    tsx


/********************************************************************************
*****
******* HEADERS **********************************************************************
********************************************************************************
*****/

// AMX MOD X HEADER FILES
//
#include < amxmodx >
#include < amxmisc >

// FAKE META HEADER FILE
//
#include < fakemeta >


/********************************************************************************
*****
******* DEFINITIONS ******************************************************************
********************************************************************************
*****/

// SECONDS DELAY TO SHOW THE INFORMATION MESSAGE REGARDING '/SOUNDS' COMMAND
// AFTER THE PLAYER JOINS THE GAME SERVER
//
#define QS_PLUGIN_INFORMATION_DELAY        ( 6.0 )                // 6

// HUD MESSAGE'S MAXIMUM LENGTH
//
#define QS_HUD_MESSAGE_MAX_LENGTH        ( 384 )                // 384

// CENTERED HUD MESSAGE'S "X" POSITION
//
#define QS_HUD_MESSAGE_X_POSITION        ( -1.0 )            // -1

// HUD MESSAGE'S HOLD TIME (SECONDS TO BE DISPLAYED)
//
#define QS_HUD_MESSAGE_HOLD_TIME        ( 5.0 )                // 5

// PLUGIN'S VERSION
//
#define QS_PLUGIN_VERSION                ( "5.0" )            // "5"

// INVALID PLAYER
//
#define QS_INVALID_PLAYER                ( 0x000000FF )        // 255

// MAXIMUM PLAYERS
//
#define QS_MAX_PLAYERS                    ( 32 )                // 32

// MAXIMUM BYTE (8 BIT)
//
#define QS_MAX_BYTE                        ( 0x000000FF )        // 255

// INVALID TEAM
//
#define QS_INVALID_TEAM                    ( 0x000000FF )        // 255

// [ MONSTER KILL, MULTI KILL, UNSTOPPABLE, .. ] HUD MESSAGE'S "Y" (VERTICAL) POSITION
//
#define QS_STREAK_Y_POSITION            ( 0.2215 )            // .2215

// [ SUICIDE, KNIFE, GRENADE, .. ] HUD MESSAGE'S "Y" (VERTICAL) POSITION
//
#define QS_MINOR_EVENTS_Y_POSITION        ( 0.2415 )            // .2415

// [ PREPARE TO FIGHT, .. ] HUD MESSAGE'S "Y" (VERTICAL) POSITION
//
#define QS_ROUND_START_Y_POSITION        ( 0.2615 )            // .2615

// [ FLAWLESS VICTORY EVENT ] HUD MESSAGE'S "Y" (VERTICAL) POSITION
//
#define QS_FLAWLESS_Y_POSITION            ( 0.2815 )            // .2815

// [ HATTRICK ( THE LEADER OF THE ROUND ) ] HUD MESSAGE'S "Y" (VERTICAL) POSITION
//
#define QS_HATTRICK_Y_POSITION            ( 0.2015 )            // .2015

// HUD MESSAGE PURPOSES
//
enum /* HUD MESSAGE PURPOSE */
{
    HUDMSG_EVENT = 0,
    HUDMSG_STREAK,
    HUDMSG_ROUND,

    HUDMSG_MAX,
};


/********************************************************************************
*****
******* GLOBAL VARIABLES *************************************************************
********************************************************************************
*****/

// PLUG-IN ON/ OFF
//
new bool: g_bPluginEnabled = false;

/**
* HEAD SHOT
*/

// HEAD SHOT ON/ OFF
//
new bool: g_bHShot = false;

// HEAD SHOT MESSAGE ON/ OFF
//
new bool: g_bHShotMsg = false;

// HEAD SHOT MESSAGE
//
new g_HShotMsg [ QS_HUD_MESSAGE_MAX_LENGTH ];

// HEAD SHOT SOUNDS COUNT
//
new g_HShotSize = 0;

// HEAD SHOT ONLY FOR KILLER
//
new bool: g_bHShotOnlyKiller = false;

// HEAD SHOT SOUNDS CONTAINER
//
new Array: g_pHShot = Invalid_Array;

/**
* REVENGE
*/

// REVENGE ON/ OFF
//
new bool: g_bRevenge = false;

// REVENGE MESSAGE FOR KILLER ON/ OFF
//
new bool: g_bRevengeMsgKiller = false;

// REVENGE MESSAGE FOR VICTIM ON/ OFF
//
new bool: g_bRevengeMsgVictim = false;

// REVENGE MESSAGE FOR KILLER (IF ENABLED)
//
new g_RevengeMsgKiller [ QS_HUD_MESSAGE_MAX_LENGTH ];

// REVENGE MESSAGE FOR VICTIM (IF ENABLED)
//
new g_RevengeMsgVictim [ QS_HUD_MESSAGE_MAX_LENGTH ];

// REVENGE SOUNDS COUNT
//
new g_RevengeSize = 0;

// REVENGE ONLY FOR KILER
//
new bool: g_bRevengeOnlyKiller = false;

// REVENGE SOUNDS CONTAINER
//
new Array: g_pRevenge = Invalid_Array;

/**
* HATTRICK
* THE LEADER OF CURRENT ROUND
*/

// HATTRICK ON/ OFF
//
new bool: g_bHattrick = false;

// HATTRICK MESSAGE ON/ OFF
//
new bool: g_bHattrickMsg = false;

// HATTRICK MESSAGE
//
new g_HattrickMsg [ QS_HUD_MESSAGE_MAX_LENGTH ];

// HATTRICK SOUNDS COUNT
//
new g_HattrickSize = 0;

// MINIMUM KILLS REQUIRED FOR HATTRICK
//
new g_MinimumKillsForHattrick = 0;

// HATTRICK SOUNDS CONTAINER
//
new Array: g_pHattrick = Invalid_Array;

/**
* SUICIDE
*/

// SUICIDE ON/ OFF
//
new bool: g_bSuicide = false;

// SUICIDE MESSAGE ON/ OFF
//
new bool: g_bSuicideMsg = false;

// SUICIDE MESSAGE
//
new g_SuicideMsg [ QS_HUD_MESSAGE_MAX_LENGTH ];

// SUICIDE SOUNDS COUNT
//
new g_SuicideSize = 0;

// SUICIDE SOUNDS CONTAINER
//
new Array: g_pSuicide = Invalid_Array;

/**
* GRENADE
*/

// GRENADE ON/ OFF
//
new bool: g_bGrenade = false;

// GRENADE MESSAGE ON/ OFF
//
new bool: g_bGrenadeMsg = false;

// GRENADE KILL MESSAGE
//
new g_GrenadeMsg [ QS_HUD_MESSAGE_MAX_LENGTH ];

// GRENADE SOUNDS COUNT
//
new g_GrenadeSize = 0;

// GRENADE SOUNDS CONTAINER
//
new Array: g_pGrenade = Invalid_Array;

/**
* TEAM KILL
*/

// TEAM KILL ON/ OFF
//
new bool: g_bTKill = false;

// TEAM KILL MESSAGE ON/ OFF
//
new bool: g_bTKillMsg = false;

// TEAM KILL MESSAGE
//
new g_TKillMsg [ QS_HUD_MESSAGE_MAX_LENGTH ];

// TEAM KILL SOUNDS COUNT
//
new g_TKillSize = 0;

// TEAM KILL SOUNDS CONTAINER
//
new Array: g_pTKill = Invalid_Array;

/**
* KNIFE
*/

// KNIFE ON/ OFF
//
new bool: g_bKnife = false;

// KNIFE MESSAGE ON/ OFF
//
new bool: g_bKnifeMsg = false;

// KNIFE KILL MESSAGE
//
new g_KnifeMsg [ QS_HUD_MESSAGE_MAX_LENGTH ];

// KNIFE KILL SOUNDS COUNT
//
new g_KnifeSize = 0;

// KNIFE SOUNDS CONTAINER
//
new Array: g_pKnife = Invalid_Array;

/**
* FIRST BLOOD
*/

// FIRST BLOOD ON/ OFF
//
new bool: g_bFBlood = false;

// FIRST BLOOD MESSAGE ON/ OFF
//
new bool: g_bFBloodMsg = false;

// FIRST BLOOD MESSAGE
//
new g_FBloodMsg [ QS_HUD_MESSAGE_MAX_LENGTH ];

// FIRST BLOOD SOUNDS COUNT
//
new g_FBloodSize = 0;

// FIRST BLOOD VARIABLE
//
new g_FBlood = 0;

// FIRST BLOOD SOUNDS CONTAINER
//
new Array: g_pFBlood = Invalid_Array;

/**
* KILLS STREAK
*/

// KILLS STREAK ON/ OFF
//
new bool: g_bKStreak = false;

// KILL STREAK SOUNDS COUNT
//
new g_KStreakSoundsSize = 0;

// KILLS STREAK SOUNDS CONTAINER
//
new Array: g_pKStreakSounds = Invalid_Array;

// KILLS STREAK MESSAGES CONTAINER
//
new Array: g_pKStreakMessages = Invalid_Array;

// KILLS STREAK REQUIRED KILLS CONTAINER
//
new Array: g_pKStreakRequiredKills = Invalid_Array;

/**
* ROUND START
*/

// ROUND START ON/ OFF
//
new bool: g_bRStart = false;

// ROUND START MESSAGE ON/ OFF
//
new bool: g_bRStartMsg = false;

// ROUND START MESSAGE
//
new g_RStartMsg [ QS_HUD_MESSAGE_MAX_LENGTH ];

// ROUND START SOUNDS COUNT
//
new g_RStartSize = 0;

// ROUND START SOUNDS CONTAINER
//
new Array: g_pRStart = Invalid_Array;

/**
* DOUBLE KILL
*/

// DOUBLE KILL ON/ OFF
//
new bool: g_bDKill = false;

// DOUBLE KILL MESSAGE ON/ OFF
//
new bool: g_bDKillMsg = false;

// DOUBLE KILL MESSAGE
//
new g_DKillMsg [ QS_HUD_MESSAGE_MAX_LENGTH ];

// DOUBLE KILL SOUNDS COUNT
//
new g_DKillSize = 0;

// DOUBLE KILL SOUNDS CONTAINER
//
new Array: g_pDKill = Invalid_Array;

/**
* FLAWLESS
* IF A TEAM KILLS THE OTHER ONE W/ O GETTING ANY CASUALTIES
*/

// FLAWLESS ON/ OFF
//
new bool: g_bFlawless = false;

// FLAWLESS MESSAGE ON/ OFF
//
new bool: g_bFlawlessMsg = false;

// FLAWLESS MESSAGE
//
new g_FlawlessMsg [ QS_HUD_MESSAGE_MAX_LENGTH ];

// FLAWLESS TEAM NAME FOR TEAM [1]
//
new g_FlawlessTeamName_1 [ QS_HUD_MESSAGE_MAX_LENGTH ];

// FLAWLESS TEAM NAME FOR TEAM [2]
//
new g_FlawlessTeamName_2 [ QS_HUD_MESSAGE_MAX_LENGTH ];

// FLAWLESS SOUNDS COUNT
//
new g_FlawlessSize = 0;

// FLAWLESS SOUNDS CONTAINER
//
new Array: g_pFlawless = Invalid_Array;


/**
* HUD MESSAGE [TE_TEXTMESSAGE]
*/

// CHANNEL HANDLES
//
new g_pHudMsg [ HUDMSG_MAX ];

// RED
//
new g_Red = 0;

// RANDOM RED
//
new bool: g_bRandomRed = false;

// GREEN
//
new g_Green = 0;

// RANDOM GREEN
//
new bool: g_bRandomGreen = false;

// BLUE
//
new g_Blue = 0;

// RANDOM BLUE
//
new bool: g_bRandomBlue = false;


/**
* GAME RELATED
*/

// MOD NAME
//
new g_ModName [ 8 ];

// ON DEATHMSG
//
new bool: g_bOnDeathMsg = false;

// DEATHMSG BYTE STATUS
//
new g_DeathMsgByteStatus = 0;

// DEATHMSG ONLY AVAILABLE
//
new bool: g_bDeathMsgOnly = false;

// CACHED KILLER ID
//
new g_Killer = 0;

// CACHED VICTIM ID
//
new g_Victim = 0;

// CACHED WEAPON ID
//
new g_Weapon = 0;

// CACHED HIT PLACE
//
new g_Place = 0;

// CACHED TEAM KILL BOOLEAN
//
new g_TeamKill = 0;


/**
* PLAYERS RELATED
*/

// MAXIMUM PLAYERS
//
new g_MaxPlayers = 0;

// TOTAL KILLS PER PLAYER PER LIFE
// RESETS ON PLAYER DEATH
//
new g_Kills [ QS_MAX_PLAYERS + 1 ];

// TOTAL KILLS PER PLAYER PER ROUND
// RESETS NEXT ROUND
//
new g_KillsThisRound [ QS_MAX_PLAYERS + 1 ];

// HLTV
//
new bool: g_bHLTV [ QS_MAX_PLAYERS + 1 ];

// BOT
//
new bool: g_bBOT [ QS_MAX_PLAYERS + 1 ];

// CONNECTED
//
new bool: g_bConnected [ QS_MAX_PLAYERS + 1 ];

// NAME
//
new g_Name [ QS_MAX_PLAYERS + 1 ] [ 32 ];

// REVENGE KILL NAME STAMP
//
new g_RevengeStamp [ QS_MAX_PLAYERS + 1 ] [ 32 ];

// SOUNDS DISABLED PER PLAYER
//
new bool: g_bDisabled [ QS_MAX_PLAYERS + 1 ];

// LAST KILL TIME STAMP (GAME TIME)
//
new Float: g_fLastKillTimeStamp [ QS_MAX_PLAYERS + 1 ];


/********************************************************************************
*****
******* FORWARDS *********************************************************************
********************************************************************************
*****/

// PLUG-IN NATIVES
//
public plugin_natives ( )
{
    // SETS MODULE FILTER
    //
    set_module_filter ( "QS_Module_Filter" );
}

// FILTERS MODULE
//
public QS_Module_Filter ( Module [ ] )
{
    // XSTATS
    //
    if ( equali ( Module, "XStats" ) )
    {
        // LOAD
        //
        return PLUGIN_HANDLED;
    }

    // OK
    //
    return PLUGIN_CONTINUE;
}

// plugin_precache()
// THE RIGHT MOMENT FOR INI FILES
// AND PRECACHING DATA
//
public plugin_precache ( )
{
    // GETS MOD NAME
    //
    QS_CheckMod ( );

    // CREATES ARRAYS FIRST
    //
    g_pHShot =                        ArrayCreate ( 256 );
    g_pSuicide =                    ArrayCreate ( 256 );
    g_pGrenade =                    ArrayCreate ( 256 );
    g_pTKill =                        ArrayCreate ( 256 );
    g_pKnife =                        ArrayCreate ( 256 );
    g_pFBlood =                        ArrayCreate ( 256 );
    g_pRStart =                        ArrayCreate ( 256 );
    g_pDKill =                        ArrayCreate ( 256 );
    g_pHattrick =                    ArrayCreate ( 256 );
    g_pFlawless =                    ArrayCreate ( 256 );
    g_pRevenge =                    ArrayCreate ( 256 );
    g_pKStreakSounds =                ArrayCreate ( 256 );
    g_pKStreakMessages =            ArrayCreate ( QS_HUD_MESSAGE_MAX_LENGTH );
    g_pKStreakRequiredKills =        ArrayCreate ( 8 );

    // READS FILE
    //
    __Load ( );

    // PRECACHES NOTHING
    // IF PLUG-IN IS OFF
    //
    if ( !g_bPluginEnabled )
        return;

    // RETRIEVES SOUNDS COUNT
    //
    g_HShotSize =                    ArraySize ( g_pHShot );
    g_SuicideSize =                    ArraySize ( g_pSuicide );
    g_GrenadeSize =                    ArraySize ( g_pGrenade );
    g_TKillSize =                    ArraySize ( g_pTKill );
    g_KnifeSize =                    ArraySize ( g_pKnife );
    g_FBloodSize =                    ArraySize ( g_pFBlood );
    g_RStartSize =                    ArraySize ( g_pRStart );
    g_DKillSize =                    ArraySize ( g_pDKill );
    g_HattrickSize =                ArraySize ( g_pHattrick );
    g_FlawlessSize =                ArraySize ( g_pFlawless );
    g_RevengeSize =                    ArraySize ( g_pRevenge );
    g_KStreakSoundsSize =            ArraySize ( g_pKStreakSounds );

    // DEFINES ITERATOR FOR FURTHER USE
    //
    new Iterator = 0;

    // DEFINES SOUND FOR FURTHER USE
    //
    new Sound [ 256 ];

    if ( g_bHShot )
    {
        for ( Iterator = 0; Iterator < g_HShotSize; Iterator ++ )
            ArrayGetString ( g_pHShot, Iterator, Sound, charsmax ( Sound ) ), precache_sound ( Sound );
    }

    if ( g_bSuicide )
    {
        for ( Iterator = 0; Iterator < g_SuicideSize; Iterator ++ )
            ArrayGetString ( g_pSuicide, Iterator, Sound, charsmax ( Sound ) ), precache_sound ( Sound );
    }

    if ( g_bGrenade )
    {
        for ( Iterator = 0; Iterator < g_GrenadeSize; Iterator ++ )
            ArrayGetString ( g_pGrenade, Iterator, Sound, charsmax ( Sound ) ), precache_sound ( Sound );
    }

    if ( g_bTKill )
    {
        for ( Iterator = 0; Iterator < g_TKillSize; Iterator ++ )
            ArrayGetString ( g_pTKill, Iterator, Sound, charsmax ( Sound ) ), precache_sound ( Sound );
    }

    if ( g_bKnife )
    {
        for ( Iterator = 0; Iterator < g_KnifeSize; Iterator ++ )
            ArrayGetString ( g_pKnife, Iterator, Sound, charsmax ( Sound ) ), precache_sound ( Sound );
    }

    if ( g_bFBlood )
    {
        for ( Iterator = 0; Iterator < g_FBloodSize; Iterator ++ )
            ArrayGetString ( g_pFBlood, Iterator, Sound, charsmax ( Sound ) ), precache_sound ( Sound );
    }

    if ( g_bRStart )
    {
        for ( Iterator = 0; Iterator < g_RStartSize; Iterator ++ )
            ArrayGetString ( g_pRStart, Iterator, Sound, charsmax ( Sound ) ), precache_sound ( Sound );
    }

    if ( g_bDKill )
    {
        for ( Iterator = 0; Iterator < g_DKillSize; Iterator ++ )
            ArrayGetString ( g_pDKill, Iterator, Sound, charsmax ( Sound ) ), precache_sound ( Sound );
    }

    if ( g_bHattrick )
    {
        for ( Iterator = 0; Iterator < g_HattrickSize; Iterator ++ )
            ArrayGetString ( g_pHattrick, Iterator, Sound, charsmax ( Sound ) ), precache_sound ( Sound );
    }

    if ( g_bFlawless )
    {
        for ( Iterator = 0; Iterator < g_FlawlessSize; Iterator ++ )
            ArrayGetString ( g_pFlawless, Iterator, Sound, charsmax ( Sound ) ), precache_sound ( Sound );
    }

    if ( g_bRevenge )
    {
        for ( Iterator = 0; Iterator < g_RevengeSize; Iterator ++ )
            ArrayGetString ( g_pRevenge, Iterator, Sound, charsmax ( Sound ) ), precache_sound ( Sound );
    }

    if ( g_bKStreak )
    {
        for ( Iterator = 0; Iterator < g_KStreakSoundsSize; Iterator ++ )
            ArrayGetString ( g_pKStreakSounds, Iterator, Sound, charsmax ( Sound ) ), precache_sound ( Sound );
    }
}

// plugin_end()
// PLUG-IN ENDS
//
public plugin_end ( )
{
    // DESTROYS ARRAYS
    //
    ArrayDestroy ( g_pHShot );
    ArrayDestroy ( g_pSuicide );
    ArrayDestroy ( g_pGrenade );
    ArrayDestroy ( g_pTKill );
    ArrayDestroy ( g_pKnife );
    ArrayDestroy ( g_pFBlood );
    ArrayDestroy ( g_pRStart );
    ArrayDestroy ( g_pDKill );
    ArrayDestroy ( g_pHattrick );
    ArrayDestroy ( g_pFlawless );
    ArrayDestroy ( g_pRevenge );
    ArrayDestroy ( g_pKStreakSounds );
    ArrayDestroy ( g_pKStreakMessages );
    ArrayDestroy ( g_pKStreakRequiredKills );
}

// plugin_init()
// PLUG-IN STARTS
// THE RIGHT MOMENT TO REGISTER STUFF
//
public plugin_init ( )
{
    // GETS MOD NAME
    //
    QS_CheckMod ( );

    // REGISTERS CONSOLE VARIABLE
    //
    new pCVar = register_cvar ( "advanced_quake_sounds",        QS_PLUGIN_VERSION,    ( FCVAR_SERVER | FCVAR_EXTDLL | FCVAR_UNLOGGED | FCVAR_SPONLY ) );

    // SETS CONSOLE VARIABLE STRING
    //
    if ( pCVar )
        set_pcvar_string ( pCVar,                                QS_PLUGIN_VERSION );

    // STOPS HERE IF THE PLUG-IN IS DISABLED
    //
    if ( !g_bPluginEnabled )
    {
        // REGISTERS PLUG-IN
        //
        register_plugin ( "ADV. QUAKE SOUNDS (DISABLED)",        QS_PLUGIN_VERSION,    "HATTRICK (HTTRCKCLDHKS)" );

        return;
    }

    // REGISTERS PLUG-IN
    //
    register_plugin ( "ADV. QUAKE SOUNDS (ENABLED)",            QS_PLUGIN_VERSION,    "HATTRICK (HTTRCKCLDHKS)" );

    // REGISTERS FAKE META FORWARDS
    //
    register_forward ( FM_MessageBegin,                            "OnMessageBegin",    1 );
    register_forward ( FM_WriteByte,                            "OnWriteByte",        1 );
    register_forward ( FM_MessageEnd,                            "OnMessageEnd",        1 );

    // GETS MAXIMUM PLAYERS
    //
    g_MaxPlayers = get_maxplayers ( );

    // CHECKS WHETHER XSTATS MODULE IS LOADED
    //
    if ( !module_exists ( "xstats" ) )
        g_bDeathMsgOnly = true;

    // COUNTER-STRIKE
    //
    if ( equali ( g_ModName, "CS", 2 ) || \
            equali ( g_ModName, "CZ", 2 ) )
    {
        // ROUND RESTART
        //
        register_event ( "TextMsg", "OnRRestart", "a", "2&#Game_C", "2&#Game_w" );

        // ROUND START
        //
        register_logevent ( "OnRStart",    2,    "1=Round_Start" );

        // ROUND END
        //
        register_logevent ( "OnREnd",    2,    "1=Round_End" );
    }

    // DAY OF DEFEAT
    //
    else if ( equali ( g_ModName, "DOD", 3 ) )
    {
        // ROUND START
        //
        register_event ( "RoundState",    "OnRStart",    "a",    "1=1" );

        // ROUND END
        //
        register_event ( "RoundState",    "OnREnd",    "a",    "1=3",    "1=4" );

        // DISABLES HATTRICK
        //
        g_bHattrick =                false;

        // DISABLES FLAWLESS
        //
        g_bFlawless =                false;
    }

    // NO CS/ CZ OR DOD
    //
    else
    {
        // DISABLES TEAM KILL
        //
        g_bTKill =                    false;

        // DISABLES HATTRICK
        //
        g_bHattrick =                false;

        // DISABLES FLAWLESS
        //
        g_bFlawless =                false;

        // DISABLES ROUND START
        //
        g_bRStart =                    false;
    }

    // HUD MESSAGE [TE_TEXTMESSAGE] CHANNEL HANDLES
    //
    g_pHudMsg [ HUDMSG_STREAK ] =    CreateHudSyncObj ( );
    g_pHudMsg [ HUDMSG_EVENT ] =    CreateHudSyncObj ( );
    g_pHudMsg [ HUDMSG_ROUND ] =    CreateHudSyncObj ( );
}

// plugin_cfg()
// PLUG-IN EXECUTES THE CONFIGURATION FILES
// THE RIGHT MOMENT TO RE-LOAD THE SETTINGS
//
public plugin_cfg ( )
{
    /**
    * MESSAGES ON/ OFF
    */

    g_bHShotMsg =            g_HShotMsg [ 0 ] ?            true : false;
    g_bSuicideMsg =            g_SuicideMsg [ 0 ] ?        true : false;
    g_bGrenadeMsg =            g_GrenadeMsg [ 0 ] ?        true : false;
    g_bTKillMsg =            g_TKillMsg [ 0 ] ?            true : false;
    g_bKnifeMsg =            g_KnifeMsg [ 0 ] ?            true : false;
    g_bFBloodMsg =            g_FBloodMsg [ 0 ] ?            true : false;
    g_bRStartMsg =            g_RStartMsg [ 0 ] ?            true : false;
    g_bDKillMsg =            g_DKillMsg [ 0 ] ?            true : false;
    g_bHattrickMsg =        g_HattrickMsg [ 0 ] ?        true : false;
    g_bFlawlessMsg =        g_FlawlessMsg [ 0 ] ?        true : false;
    g_bRevengeMsgVictim =    g_RevengeMsgVictim [ 0 ] ?    true : false;
    g_bRevengeMsgKiller =    g_RevengeMsgKiller [ 0 ] ?    true : false;
}

// client_infochanged ( Player )
// EXECUTES WHEN CLIENT CHANGES INFORMATION
//
public client_infochanged ( Player )
{
    static Name [ 32 ];

    // PLAYER IS CONNECTED AND IT'S NOT A HLTV
    //
    if ( g_bConnected [ Player ] && !g_bHLTV [ Player ] )
    {
        // RETRIEVES NEW NAME (IF ANY)
        //
        get_user_info ( Player, "name", Name, charsmax ( Name ) );

        // UPDATES IF NEEDED
        //
        g_Name [ Player ] = Name;
    }
}

// client_disconnected(Player)
// EXECUTES AFTER CLIENT DISCONNECTS
//
public client_disconnected ( Player )
{
    // NO MORE KILLS
    //
    g_Kills [ Player ] = g_KillsThisRound [ Player ] =                                                0;

    // NO MORE TRUE DATA
    //
    g_bHLTV [ Player ] = g_bBOT [ Player ] = g_bDisabled [ Player ] = g_bConnected [ Player ] =        false;

    // NO MORE VALID STRINGS
    //
    QS_ClearString                                                                                    ( g_Name            [ Player ] );
    QS_ClearString                                                                                    ( g_RevengeStamp    [ Player ] );
}

// client_command(Player)
// EXECUTES WHEN CLIENT TYPES
//
public client_command ( Player )
{
    static Argument [ 16 ];

    // CONNECTED, NOT BOT AND NOT HLTV
    //
    if ( g_bConnected [ Player ] && !g_bBOT [ Player ] && !g_bHLTV [ Player ] )
    {
        // RETRIEVES THE ARGUMENT
        //
        read_argv ( 1, Argument, charsmax ( Argument ) );

        // CHECKS ARGUMENT
        //
        if ( equali ( Argument, "/Sounds", 7 ) || equali ( Argument, "Sounds", 6 ) )
        {
            // ENABLES/ DISABLES SOUNDS PER CLIENT
            //
            client_print ( Player, print_chat, ">> QUAKE SOUNDS HAVE BEEN %s.", g_bDisabled [ Player ] ? "ENABLED" : "DISABLED" );
            g_bDisabled [ Player ] = !g_bDisabled [ Player ];
        }
    }
}

// client_putinserver(Player)
// EXECUTES WHEN CLIENT JOINS
//
public client_putinserver ( Player )
{
    // RETRIEVES PLAYER NAME
    //
    get_user_name ( Player, g_Name [ Player ], charsmax ( g_Name [ ] ) );

    // HLTV
    //
    g_bHLTV [ Player ] =                bool: is_user_hltv ( Player );

    // BOT
    //
    g_bBOT [ Player ] =                    bool: is_user_bot ( Player );

    // NO KILLS
    //
    g_Kills [ Player ] =                0;
    g_KillsThisRound [ Player ] =        0;

    // CONNECTED
    //
    g_bConnected [ Player ] =            true;

    // SETTINGS ON
    //
    g_bDisabled [ Player ] =            false;

    // NO REVENGE STAMP YET
    //
    QS_ClearString                        ( g_RevengeStamp [ Player ] );

    // PRINTS INFORMATION FOR VALID PLAYERS ONLY
    //
    if ( !g_bBOT [ Player ] && !g_bHLTV [ Player ] )
        set_task ( QS_PLUGIN_INFORMATION_DELAY, "QuakeSoundsInfo", Player );
}

// PRINTS INFORMATION TO PLAYER
//
public QuakeSoundsInfo ( Player )
{
    // ONLY IF CONNECTED
    //
    if ( g_bConnected [ Player ] )
        client_print ( Player, print_chat, ">> TYPE 'sounds' TO TURN QUAKE SOUNDS ON OR OFF." );
}

// EXECUTED ON PLAYER DEATH
// THIS IS ONLY REQUIRED FOR CS/ CZ, DOD, TS AND TFC
// THIS IS EXECUTED BEFORE THE DEATH MESSAGE EVENT
//
public client_death ( Killer, Victim, Weapon, Place, TeamKill )
{
    // CACHES WEAPON ID
    //
    g_Weapon =        Weapon;

    // CACHES HIT PLACE
    //
    g_Place =        Place;

    // CACHES TEAM KILL
    //
    g_TeamKill =    TeamKill;
}

// WHEN ROUND RE-STARTS
//
public OnRRestart ( )
{
    static Player;
    for ( Player = 1; Player <= g_MaxPlayers; Player ++ )
    {
        // CLEARS DATA
        //
        g_Kills [ Player ] =                0;
        g_KillsThisRound [ Player ] =        0;

        QS_ClearString                        ( g_RevengeStamp [ Player ] );
    }
}

// WHEN ROUND STARTS
//
public OnRStart ( )
{
    static Player;

    // RESETS FIRST BLOOD
    //
    if ( g_bFBlood )
        g_FBlood = 0;

    // PREPARES ROUND START EVENT
    //
    if ( g_bRStart )
    {
        if ( g_bRStartMsg )
        {
            if ( g_bRandomRed )        g_Red =        random_num ( 0, QS_MAX_BYTE );
            if ( g_bRandomGreen )    g_Green =    random_num ( 0, QS_MAX_BYTE );
            if ( g_bRandomBlue )    g_Blue =    random_num ( 0, QS_MAX_BYTE );

            set_hudmessage ( g_Red, g_Green, g_Blue, QS_HUD_MESSAGE_X_POSITION, QS_ROUND_START_Y_POSITION, _, _, QS_HUD_MESSAGE_HOLD_TIME );
            QS_ShowHudMsg ( 0, g_pHudMsg [ HUDMSG_ROUND ], g_RStartMsg );
        }

        QS_ClientCommand ( 0, "SPK ^"%a^"", ArrayGetStringHandle ( g_pRStart, random_num ( 0, g_RStartSize - 1 ) ) );
    }

    // RESETS HATTRICK DATA
    //
    if ( g_bHattrick )
    {
        for ( Player = 1; Player <= g_MaxPlayers; Player ++ )
            g_KillsThisRound [ Player ] = 0;
    }
}

// WHEN ROUND ENDS
//
public OnREnd ( )
{
    // GETS HATTRICK READY
    //
    if ( g_bHattrick )    set_task ( 2.8, "__Hattrick" );

    // GETS FLAWLESS READY
    //
    if ( g_bFlawless )    set_task ( 1.2, "__Flawless" );
}

// PREPARES HATTRICK
//
public __Hattrick ( )
{
    // RETRIEVES THE LEADER'S ID
    //
    static Leader;
    Leader = __Leader ( );

    // IF ANY
    //
    if ( Leader != QS_INVALID_PLAYER )
    {
        if ( g_bRandomRed )        g_Red =        random_num ( 0, QS_MAX_BYTE );
        if ( g_bRandomGreen )    g_Green =    random_num ( 0, QS_MAX_BYTE );
        if ( g_bRandomBlue )    g_Blue =    random_num ( 0, QS_MAX_BYTE );

        if ( g_KillsThisRound [ Leader ] >= g_MinimumKillsForHattrick )
        {
            if ( g_bHattrickMsg )
            {
                set_hudmessage ( g_Red, g_Green, g_Blue, QS_HUD_MESSAGE_X_POSITION, QS_HATTRICK_Y_POSITION, _, _, QS_HUD_MESSAGE_HOLD_TIME );
                QS_ShowHudMsg ( 0, g_pHudMsg [ HUDMSG_EVENT ], g_HattrickMsg, g_Name [ Leader ] );
            }

            QS_ClientCommand ( 0, "SPK ^"%a^"", ArrayGetStringHandle ( g_pHattrick, random_num ( 0, g_HattrickSize - 1 ) ) );
        }
    }
}

// PREPARES FLAWLESS
//
public __Flawless ( )
{
    static aliveTeam_1,        aliveTeam_2;
    static allTeam_1,        allTeam_2;

    if ( g_bRandomRed )        g_Red =            random_num ( 0, QS_MAX_BYTE );
    if ( g_bRandomGreen )    g_Green =        random_num ( 0, QS_MAX_BYTE );
    if ( g_bRandomBlue )    g_Blue =        random_num ( 0, QS_MAX_BYTE );

    aliveTeam_1 =            __Players        ( true, 1 );
    aliveTeam_2 =            __Players        ( true, 2 );

    allTeam_1 =                aliveTeam_1 +    __Players ( false, 1 );
    allTeam_2 =                aliveTeam_2 +    __Players ( false, 2 );

    set_hudmessage ( g_Red, g_Green, g_Blue, QS_HUD_MESSAGE_X_POSITION, QS_FLAWLESS_Y_POSITION, _, _, QS_HUD_MESSAGE_HOLD_TIME );

    if ( allTeam_1 == aliveTeam_1 )
    {
        if ( g_bFlawlessMsg )
            QS_ShowHudMsg ( 0, g_pHudMsg [ HUDMSG_ROUND ], g_FlawlessMsg, g_FlawlessTeamName_1 );

        QS_ClientCommand ( 0, "SPK ^"%a^"", ArrayGetStringHandle ( g_pFlawless, random_num ( 0, g_FlawlessSize - 1 ) ) );
    }

    else if ( allTeam_2 == aliveTeam_2 )
    {
        if ( g_bFlawlessMsg )
            QS_ShowHudMsg ( 0, g_pHudMsg [ HUDMSG_ROUND ], g_FlawlessMsg, g_FlawlessTeamName_2 );

        QS_ClientCommand ( 0, "SPK ^"%a^"", ArrayGetStringHandle ( g_pFlawless, random_num ( 0, g_FlawlessSize - 1 ) ) );
    }
}

// pfnMessageBegin()
// FIRED WHEN A MESSAGE BEGINS
//
public OnMessageBegin ( Destination, Type )
{
    static deathMsg = 0;

    // GETS DEATHMSG ID
    //
    if ( deathMsg == 0 )
        deathMsg = get_user_msgid ( "DeathMsg" );

    // IF GLOBALLY SENT
    //
    if ( deathMsg > 0 && \
            Type == deathMsg && \
                ( Destination == MSG_ALL || Destination == MSG_BROADCAST ) )
    {
        g_bOnDeathMsg =            true;
        g_DeathMsgByteStatus =    0;
    }
}

// pfnWriteByte()
// FIRED WHEN A BYTE IS BEING WRITTEN
//
public OnWriteByte ( Byte )
{
    // OUR DEATHMSG
    //
    if ( g_bOnDeathMsg )
    {
        // GETS DATA
        //
        switch ( ++ g_DeathMsgByteStatus )
        {
            case 1: g_Killer =    Byte;
            case 2: g_Victim =    Byte;
        }
    }
}

// pfnMessageEnd()
// FIRED WHEN A MESSAGE ENDS
//
public OnMessageEnd ( )
{
    // OUR DEATHMSG
    //
    if ( g_bOnDeathMsg )
    {
        g_bOnDeathMsg =                                false;
        g_DeathMsgByteStatus =                        0;

        if ( g_bDeathMsgOnly )
            g_Weapon = g_Place = g_TeamKill =        0;

        // FIRES
        //
        set_task ( 0.0, "__DeathMsg" );
    }
}

// WHEN A PLAYER DIES
// THIS IS EXECUTED AFTER XSTATS MODULE "client_death" FORWARD
//
public __DeathMsg ( )
{
    // DECLARES THE HIT PLACE AND THE WEAPON ID
    //
    static Place, Weapon;

    // SETS THE DECLARED VARIABLES TO ZERO
    //
    Place = Weapon = 0;

    // PREPARES THE WEAPON ID AND THE HIT PLACE
    //
    if ( g_bConnected [ g_Victim ] )
        get_user_attacker ( g_Victim, Weapon, Place );

    // POSSIBLE WEAPON ID FIX
    //
    if ( g_Weapon < 1 )
    {
        if ( Weapon < 1 )
        {
            if ( g_bConnected [ g_Killer ] )
                g_Weapon = get_user_weapon ( g_Killer );
        }

        else
            g_Weapon = Weapon;
    }

    // POSSIBLE HIT PLACE FIX
    //
    if ( g_Place < 1 && Place > 0 )
        g_Place = Place;

    // PREPARES TEAM KILL BOOLEAN IF NEEDED
    //
    if ( g_bDeathMsgOnly && g_bConnected [ g_Killer ] && g_bConnected [ g_Victim ] )
        g_TeamKill = ( get_user_team ( g_Killer ) == get_user_team ( g_Victim ) ) ? 1 : 0;

    // PROCESSES DEATH
    //
    __Death ( g_Killer, g_Victim, g_Weapon, g_Place, g_TeamKill );
}


/********************************************************************************
*****
******* FUNCTIONS ********************************************************************
********************************************************************************
*****/

// PROCESSES CLIENT DEATH STUFF FOR ALL MODS
//
__Death ( Killer, Victim, Weapon, Place, TeamKill )
{
    // VARIABLES
    //
    static Iterator = 0, Float: fGameTime = 0.0, WeaponName [ 32 ], Sound [ 256 ], Message [ QS_HUD_MESSAGE_MAX_LENGTH ];

    // RESETS KILLS FOR VICTIM
    //
    if ( g_bKStreak )
        g_Kills [ Victim ] = 0;

    // INVALID KILLER (WORLD)
    //
    if ( !g_bConnected [ Killer ] )
        return;

    // PREPARES HUD MESSAGE COLOR
    //
    if ( g_bRandomRed )        g_Red =        random_num ( 0, QS_MAX_BYTE );
    if ( g_bRandomGreen )    g_Green =    random_num ( 0, QS_MAX_BYTE );
    if ( g_bRandomBlue )    g_Blue =    random_num ( 0, QS_MAX_BYTE );

    // PREPARES HUD MESSAGE
    //
    set_hudmessage ( g_Red, g_Green, g_Blue, QS_HUD_MESSAGE_X_POSITION, QS_MINOR_EVENTS_Y_POSITION, _, _, QS_HUD_MESSAGE_HOLD_TIME );

    // REVENGE KILLER STAMP
    //
    if ( g_bRevenge )
        g_RevengeStamp [ Victim ] = g_Name [ Killer ];

    // SUICIDE
    //
    if ( Victim == Killer )
    {
        if ( g_bSuicide )
        {
            if ( g_bSuicideMsg )
                QS_ShowHudMsg ( 0, g_pHudMsg [ HUDMSG_EVENT ], g_SuicideMsg, g_Name [ Victim ] );

            QS_ClientCommand ( 0, "SPK ^"%a^"", ArrayGetStringHandle ( g_pSuicide, random_num ( 0, g_SuicideSize - 1 ) ) );
        }

        if ( g_bHattrick )
            g_KillsThisRound [ Victim ] --;
    }

    // NORMAL DEATH
    //
    else
    {
        if ( g_bKStreak )
            g_Kills                [ Killer ] ++;

        if ( g_bHattrick )
            g_KillsThisRound    [ Killer ] ++;

        // WEAPON NAME
        //
        if ( Weapon > 0 )
            get_weaponname ( Weapon, WeaponName, charsmax ( WeaponName ) );

        // NO WEAPON
        //
        else
            QS_ClearString ( WeaponName );

        if ( g_bRevenge && equali ( g_Name [ Victim ], g_RevengeStamp [ Killer ] ) )
        {
            QS_ClearString ( g_RevengeStamp [ Killer ] );

            if ( g_bRevengeMsgKiller )
                QS_ShowHudMsg ( Killer, g_pHudMsg [ HUDMSG_EVENT ], g_RevengeMsgKiller, g_Name [ Victim ] );

            if ( g_bRevengeMsgVictim && !g_bRevengeOnlyKiller )
                QS_ShowHudMsg ( Victim, g_pHudMsg [ HUDMSG_EVENT ], g_RevengeMsgVictim, g_Name [ Killer ] );

            QS_ClientCommand ( Killer, "SPK ^"%a^"", ArrayGetStringHandle ( g_pRevenge, random_num ( 0, g_RevengeSize - 1 ) ) );

            if ( !g_bRevengeOnlyKiller )
                QS_ClientCommand ( Victim, "SPK ^"%a^"", ArrayGetStringHandle ( g_pRevenge, random_num ( 0, g_RevengeSize - 1 ) ) );
        }

        if ( g_bHShot && Place == HIT_HEAD )
        {
            if ( g_bHShotMsg )
                QS_ShowHudMsg ( 0, g_pHudMsg [ HUDMSG_EVENT ], g_HShotMsg, g_Name [ Killer ], g_Name [ Victim ] );

            QS_ClientCommand ( g_bHShotOnlyKiller ? Killer : 0, "SPK ^"%a^"", ArrayGetStringHandle ( g_pHShot, random_num ( 0, g_HShotSize - 1 ) ) );
        }

        if ( g_bFBlood && ++ g_FBlood == 1 )
        {
            if ( g_bFBloodMsg )
                QS_ShowHudMsg ( 0, g_pHudMsg [ HUDMSG_EVENT ], g_FBloodMsg, g_Name [ Killer ] );

            QS_ClientCommand ( 0, "SPK ^"%a^"", ArrayGetStringHandle ( g_pFBlood, random_num ( 0, g_FBloodSize - 1 ) ) );
        }

        if ( g_bTKill && TeamKill > 0 )
        {
            if ( g_bTKillMsg )
                QS_ShowHudMsg ( 0, g_pHudMsg [ HUDMSG_EVENT ], g_TKillMsg, g_Name [ Killer ] );

            QS_ClientCommand ( 0, "SPK ^"%a^"", ArrayGetStringHandle ( g_pTKill, random_num ( 0, g_TKillSize - 1 ) ) );
        }

        if ( g_bGrenade && ( containi ( WeaponName, "RECK" ) != -1 || \
                                containi ( WeaponName, "ROCK" ) != -1 || \
                                    containi ( WeaponName, "MK" ) != -1 || \
                                        containi ( WeaponName, "GRANATE" ) != -1 || \
                                            containi ( WeaponName, "BOMB" ) != -1 || \
                                                containi ( WeaponName, "GREN" ) != -1 || \
                                                    containi ( WeaponName, "PIAT" ) != -1 || \
                                                        containi ( WeaponName, "BAZOOKA" ) != -1 || \
                                                            containi ( WeaponName, "PANZER" ) != -1 ) )
        {
            if ( g_bGrenadeMsg )
                QS_ShowHudMsg ( 0, g_pHudMsg [ HUDMSG_EVENT ], g_GrenadeMsg, g_Name [ Killer ], g_Name [ Victim ] );

            QS_ClientCommand ( 0, "SPK ^"%a^"", ArrayGetStringHandle ( g_pGrenade, random_num ( 0, g_GrenadeSize - 1 ) ) );
        }

        if ( g_bKnife && ( containi ( WeaponName, "KNIFE" ) != -1 || \
                                containi ( WeaponName, "SPADE" ) != -1 || \
                                    containi ( WeaponName, "SATCHEL" ) != -1 ) )
        {
            if ( g_bKnifeMsg )
                QS_ShowHudMsg ( 0, g_pHudMsg [ HUDMSG_EVENT ], g_KnifeMsg, g_Name [ Killer ], g_Name [ Victim ] );

            QS_ClientCommand ( 0, "SPK ^"%a^"", ArrayGetStringHandle ( g_pKnife, random_num ( 0, g_KnifeSize - 1 ) ) );
        }

        if ( g_bDKill )
        {
            // GAME TIME
            //
            fGameTime = get_gametime ( );

            if ( g_fLastKillTimeStamp [ Killer ] > fGameTime )
            {
                if ( g_bDKillMsg )
                    QS_ShowHudMsg ( 0, g_pHudMsg [ HUDMSG_EVENT ], g_DKillMsg, g_Name [ Killer ], g_Name [ Victim ] );

                QS_ClientCommand ( 0, "SPK ^"%a^"", ArrayGetStringHandle ( g_pDKill, random_num ( 0, g_DKillSize - 1 ) ) );
            }

            g_fLastKillTimeStamp [ Killer ] = fGameTime + 0.1;
        }

        if ( g_bKStreak )
        {
            for ( Iterator = 0; Iterator < g_KStreakSoundsSize; Iterator ++ )
            {
                if ( g_Kills [ Killer ] == ArrayGetCell ( g_pKStreakRequiredKills, Iterator ) )
                {
                    ArrayGetString ( g_pKStreakMessages,    Iterator,    Message,    charsmax ( Message ) );
                    ArrayGetString ( g_pKStreakSounds,        Iterator,    Sound,        charsmax ( Sound ) );

                    __Display ( Killer, Message, Sound );

                    break;
                }
            }
        }
    }
}

// LOADS THE FILE
//
__Load ( )
{
    // PREPARES CONFIGURATIONS FILE DIRECTORY
    //
    new File [ 256 ];
    get_configsdir ( File, charsmax ( File ) );

    // APPENDS CONFIGURATIONS FILE NAME
    //
    add ( File, charsmax ( File ), "/quakesounds.ini" );

    // OPENS FILE
    //
    new pFile = fopen ( File, "r" );

    if ( !pFile )
        return;

    // PREPARES FILE LINE
    //
    new Line [ 1024 ], Key [ 256 ], Value [ 768 ], Type [ 512 ], Sound [ 256 ], RequiredKills [ 8 ], Dummy [ 4 ], Message [ QS_HUD_MESSAGE_MAX_LENGTH ];

    // READS FILE
    //
    while ( !feof ( pFile ) )
    {
        // GETS LINE
        //
        fgets ( pFile, Line, charsmax ( Line ) );

        // TRIMS LINE OFF
        //
        trim ( Line );

        // CHECK FOR VALIDITY
        //
        if ( Line [ 0 ] == EOS || \
                Line [ 0 ] == ';' || \
                    Line [ 0 ] == '#' || \
                        ( Line [ 0 ] == '/' && Line [ 1 ] == '/' ) )
        {
            continue;
        }

        // SPLITS STRING IN TOKENS
        //
        strtok ( Line, Key, charsmax ( Key ), Value, charsmax ( Value ), '=' );

        // TRIMS KEY
        //
        trim ( Key );

        // TRIMS VALUE
        //
        trim ( Value );

        //
        // SETTINGS
        //

        if ( equali ( Key, "ENABLE/DISABLE PLUGIN" ) )            g_bPluginEnabled =                bool:    str_to_num ( Value );
        else if ( equali ( Key, "HEADSHOT ONLY KILLER" ) )        g_bHShotOnlyKiller =            bool:    str_to_num ( Value );
        else if ( equali ( Key, "MIN FRAGS FOR HATTRICK" ) )    g_MinimumKillsForHattrick =                str_to_num ( Value );
        else if ( equali ( Key, "REVENGE ONLY FOR KILLER" ) )    g_bRevengeOnlyKiller =            bool:    str_to_num ( Value );

        //
        // HUD MESSAGES
        //

        else if ( equali ( Key, "HUDMSG RED" ) )
        {
            if ( equal ( Value, "_" ) )        g_bRandomRed =        true;
            else g_Red =                    str_to_num ( Value );
        }

        else if ( equali ( Key, "HUDMSG GREEN" ) )
        {
            if ( equal ( Value, "_" ) )        g_bRandomGreen =    true;
            else g_Green =                    str_to_num ( Value );
        }

        else if ( equali ( Key, "HUDMSG BLUE" ) )
        {
            if ( equal ( Value, "_" ) )        g_bRandomBlue =        true;
            else g_Blue =                    str_to_num ( Value );
        }

        // KILLS STREAK SOUNDS
        //
        else if ( equali ( Key, "SOUND" ) )
        {
            parse ( Value, Dummy, charsmax ( Dummy ), Type, charsmax ( Type ) );

            if ( equali ( Type, "REQUIREDKILLS" ) )
            {
                parse ( Value, Dummy, charsmax ( Dummy ), Type, charsmax ( Type ), RequiredKills, \
                    charsmax ( RequiredKills ), Dummy, charsmax ( Dummy ), Sound, charsmax ( Sound ) );

                ArrayPushString ( g_pKStreakSounds, Sound );
                ArrayPushCell ( g_pKStreakRequiredKills, str_to_num ( RequiredKills ) );
            }

            else if ( equali ( Type, "MESSAGE" ) )
            {
                strtok ( Value, Type, charsmax ( Type ), Message, charsmax ( Message ), '@' );
                trim ( Message );

                ArrayPushString ( g_pKStreakMessages, Message );
            }
        }

        //
        // EVENTS ON/ OFF
        //

        else if ( equali ( Key, "KILLSTREAK EVENT" ) )        g_bKStreak =        bool: str_to_num ( Value );
        else if ( equali ( Key, "REVENGE EVENT" ) )            g_bRevenge =        bool: str_to_num ( Value );
        else if ( equali ( Key, "HEADSHOT EVENT" ) )        g_bHShot =            bool: str_to_num ( Value );
        else if ( equali ( Key, "SUICIDE EVENT" ) )            g_bSuicide =        bool: str_to_num ( Value );
        else if ( equali ( Key, "NADE EVENT" ) )            g_bGrenade =        bool: str_to_num ( Value );
        else if ( equali ( Key, "TEAMKILL EVENT" ) )        g_bTKill =            bool: str_to_num ( Value );
        else if ( equali ( Key, "KNIFE EVENT" ) )            g_bKnife =            bool: str_to_num ( Value );
        else if ( equali ( Key, "FIRSTBLOOD EVENT" ) )        g_bFBlood =            bool: str_to_num ( Value );
        else if ( equali ( Key, "ROUNDSTART EVENT" ) )        g_bRStart =            bool: str_to_num ( Value );
        else if ( equali ( Key, "DOUBLEKILL EVENT" ) )        g_bDKill =            bool: str_to_num ( Value );
        else if ( equali ( Key, "HATTRICK EVENT" ) )        g_bHattrick =        bool: str_to_num ( Value );
        else if ( equali ( Key, "FLAWLESS VICTORY" ) )        g_bFlawless =        bool: str_to_num ( Value );

        //
        // EVENT SOUNDS
        //

        else if ( equali ( Key, "HEADSHOT SOUNDS" ) )
        {
            while ( Value [ 0 ] != EOS && strtok ( Value, Key, charsmax ( Key ), Value, charsmax ( Value ), ',' ) )
            {
                trim ( Key ), trim ( Value );
                ArrayPushString ( g_pHShot, Key );
            }
        }

        else if ( equali ( Key, "REVENGE SOUNDS" ) )
        {
            while ( Value [ 0 ] != EOS && strtok ( Value, Key, charsmax ( Key ), Value, charsmax ( Value ), ',' ) )
            {
                trim ( Key ), trim ( Value );
                ArrayPushString ( g_pRevenge, Key );
            }
        }

        else if ( equali ( Key, "SUICIDE SOUNDS" ) )
        {
            while ( Value [ 0 ] != EOS && strtok ( Value, Key, charsmax ( Key ), Value, charsmax ( Value ), ',' ) )
            {
                trim ( Key ), trim ( Value );
                ArrayPushString ( g_pSuicide, Key );
            }
        }

        else if ( equali ( Key, "NADE SOUNDS" ) )
        {
            while ( Value [ 0 ] != EOS && strtok ( Value, Key, charsmax ( Key ), Value, charsmax ( Value ), ',' ) )
            {
                trim ( Key ), trim ( Value );
                ArrayPushString ( g_pGrenade, Key );
            }
        }

        else if ( equali ( Key, "TEAMKILL SOUNDS" ) )
        {
            while ( Value [ 0 ] != EOS && strtok ( Value, Key, charsmax ( Key ), Value, charsmax ( Value ), ',' ) )
            {
                trim ( Key ), trim ( Value );
                ArrayPushString ( g_pTKill, Key );
            }
        }

        else if ( equali ( Key, "KNIFE SOUNDS" ) )
        {
            while ( Value [ 0 ] != EOS && strtok ( Value, Key, charsmax ( Key ), Value, charsmax ( Value ), ',' ) )
            {
                trim ( Key ), trim ( Value );
                ArrayPushString ( g_pKnife, Key );
            }
        }

        else if ( equali ( Key, "FIRSTBLOOD SOUNDS" ) )
        {
            while ( Value [ 0 ] != EOS && strtok ( Value, Key, charsmax ( Key ), Value, charsmax ( Value ), ',' ) )
            {
                trim ( Key ), trim ( Value );
                ArrayPushString ( g_pFBlood, Key );
            }
        }

        else if ( equali ( Key, "ROUNDSTART SOUNDS" ) )
        {
            while ( Value [ 0 ] != EOS && strtok ( Value, Key, charsmax ( Key ), Value, charsmax ( Value ), ',' ) )
            {
                trim ( Key ), trim ( Value );
                ArrayPushString ( g_pRStart, Key );
            }
        }

        else if ( equali ( Key, "DOUBLEKILL SOUNDS" ) )
        {
            while ( Value [ 0 ] != EOS && strtok ( Value, Key, charsmax ( Key ), Value, charsmax ( Value ), ',' ) )
            {
                trim ( Key ), trim ( Value );
                ArrayPushString ( g_pDKill, Key );
            }
        }

        else if ( equali ( Key, "HATTRICK SOUNDS" ) )
        {
            while ( Value [ 0 ] != EOS && strtok ( Value, Key, charsmax ( Key ), Value, charsmax ( Value ), ',' ) )
            {
                trim ( Key ), trim ( Value );
                ArrayPushString ( g_pHattrick, Key );
            }
        }

        else if ( equali ( Key, "FLAWLESS SOUNDS" ) )
        {
            while ( Value [ 0 ] != EOS && strtok ( Value, Key, charsmax ( Key ), Value, charsmax ( Value ), ',' ) )
            {
                trim ( Key ), trim ( Value );
                ArrayPushString ( g_pFlawless, Key );
            }
        }

        //
        // MESSAGE STRINGS
        //

        else if ( equali ( Key, "HEADSHOT HUDMSG" ) )            copy ( g_HShotMsg,                charsmax ( g_HShotMsg ),            Value );
        else if ( equali ( Key, "SUICIDE HUDMSG" ) )            copy ( g_SuicideMsg,            charsmax ( g_SuicideMsg ),            Value );
        else if ( equali ( Key, "NADE HUDMSG" ) )                copy ( g_GrenadeMsg,            charsmax ( g_GrenadeMsg ),            Value );
        else if ( equali ( Key, "TEAMKILL HUDMSG" ) )            copy ( g_TKillMsg,                charsmax ( g_TKillMsg ),            Value );
        else if ( equali ( Key, "KNIFE HUDMSG" ) )                copy ( g_KnifeMsg,                charsmax ( g_KnifeMsg ),            Value );
        else if ( equali ( Key, "FIRSTBLOOD HUDMSG" ) )            copy ( g_FBloodMsg,                charsmax ( g_FBloodMsg ),            Value );
        else if ( equali ( Key, "ROUNDSTART HUDMSG" ) )            copy ( g_RStartMsg,                charsmax ( g_RStartMsg ),            Value );
        else if ( equali ( Key, "DOUBLEKILL HUDMSG" ) )            copy ( g_DKillMsg,                charsmax ( g_DKillMsg ),            Value );
        else if ( equali ( Key, "HATTRICK HUDMSG" ) )            copy ( g_HattrickMsg,            charsmax ( g_HattrickMsg ),            Value );
        else if ( equali ( Key, "FLAWLESS VICTORY HUDMSG" ) )    copy ( g_FlawlessMsg,            charsmax ( g_FlawlessMsg ),            Value );
        else if ( equali ( Key, "REVENGE KILLER MESSAGE" ) )    copy ( g_RevengeMsgKiller,        charsmax ( g_RevengeMsgKiller ),    Value );
        else if ( equali ( Key, "REVENGE VICTIM MESSAGE" ) )    copy ( g_RevengeMsgVictim,        charsmax ( g_RevengeMsgVictim ),    Value );
        else if ( equali ( Key, "TERRO TEAM NAME" ) )            copy ( g_FlawlessTeamName_1,    charsmax ( g_FlawlessTeamName_1 ),    Value );
        else if ( equali ( Key, "CT TEAM NAME" ) )                copy ( g_FlawlessTeamName_2,    charsmax ( g_FlawlessTeamName_2 ),    Value );
    }

    // CLOSES
    //
    fclose ( pFile );
}

// DISPLAYS KILLS STREAK GLOBALLY
//
__Display ( Killer, Message [ ], Sound [ ] )
{
    if ( g_bRandomRed )        g_Red =        random_num ( 0, QS_MAX_BYTE );
    if ( g_bRandomGreen )    g_Green =    random_num ( 0, QS_MAX_BYTE );
    if ( g_bRandomBlue )    g_Blue =    random_num ( 0, QS_MAX_BYTE );

    set_hudmessage ( g_Red, g_Green, g_Blue, QS_HUD_MESSAGE_X_POSITION, QS_STREAK_Y_POSITION, _, _, QS_HUD_MESSAGE_HOLD_TIME );
    QS_ShowHudMsg ( 0, g_pHudMsg [ HUDMSG_STREAK ], Message, g_Name [ Killer ] );

    QS_ClientCommand ( 0, "SPK ^"%s^"", Sound );
}

// RETRIEVES PLAYERS COUNT
// bAlive [ TRUE/ FALSE ]
// Team [ QS_INVALID_TEAM / 1 / 2 / 3 ]
//
__Players ( bool: bAlive, Team = QS_INVALID_TEAM )
{
    // PLAYERS COUNT
    //
    static Total, Player;

    // ITERATES BETWEEN PLAYERS
    //
    for ( Total = 0, Player = 1; Player <= g_MaxPlayers; Player ++ )
    {
        // CONNECTED, NOT HLTV, IN SPECIFIED TEAM AND ALIVE/ DEAD
        //
        if ( g_bConnected [ Player ] && !g_bHLTV [ Player ] && \
                ( Team != QS_INVALID_TEAM && ( get_user_team ( Player ) == Team ) ) && \
                    ( bAlive == bool: is_user_alive ( Player ) ) )
        {
            // TOTAL = TOTAL + 1
            //
            Total ++;
        }
    }

    // GETS TOTAL
    //
    return Total;
}

// RETRIEVES THE LEADER OF THIS ROUND
// RETURNS "QS_INVALID_PLAYER" IF THERE IS NO LEADER
//
__Leader ( )
{
    // DECLARES VARIABLES
    //
    static Leader, Kills, Client;

    // ITERATES BETWEEN CLIENTS
    //
    for ( Client = 1, Leader = QS_INVALID_PLAYER, Kills = 0; Client <= g_MaxPlayers; Client ++ )
    {
        // CONNECTED AND NOT HLTV
        //
        if ( g_bConnected [ Client ] && !g_bHLTV [ Client ] )
        {
            // HAS MANY KILLS THAN THE ONE PREVIOUSLY CHECKED
            //
            if ( g_KillsThisRound [ Client ] > Kills )
            {
                // THIS IS THE NEW LEADER
                //
                Kills =        g_KillsThisRound [ Client ];
                Leader =    Client;
            }
        }
    }

    // GETS LEADER ID
    //
    return Leader;
}

// PROCESSES HUD MESSAGE
//
QS_ShowHudMsg ( Target, pObject, Rules [ ], any: ... )
{
    // ARGUMENT FORMAT
    //
    static Buffer [ QS_HUD_MESSAGE_MAX_LENGTH ], Player;
    vformat ( Buffer, charsmax ( Buffer ), Rules, 4 );

    // SPECIFIED CLIENT
    //
    if ( Target > 0 && g_bConnected [ Target ] && !g_bBOT [ Target ] && !g_bHLTV [ Target ] && !g_bDisabled [ Target ] )
        ShowSyncHudMsg ( Target, pObject, Buffer );

    // NO TARGET
    //
    else if ( Target < 1 )
    {
        for ( Player = 1; Player <= g_MaxPlayers; Player ++ )
        {
            if ( g_bConnected [ Player ] && !g_bBOT [ Player ] && !g_bHLTV [ Player ] && !g_bDisabled [ Player ] )
                ShowSyncHudMsg ( Player, pObject, Buffer );
        }
    }
}

// PROCESSES CLIENT COMMAND
//
QS_ClientCommand ( Target, Rules [ ], any: ... )
{
    // ARGUMENT FORMAT
    //
    static Buffer [ 256 ], Player;
    vformat ( Buffer, charsmax ( Buffer ), Rules, 3 );

    // SPECIFIED CLIENT
    //
    if ( Target > 0 && g_bConnected [ Target ] && !g_bBOT [ Target ] && !g_bHLTV [ Target ] && !g_bDisabled [ Target ] )
        client_cmd ( Target, Buffer );

    // NO TARGET
    //
    else if ( Target < 1 )
    {
        for ( Player = 1; Player <= g_MaxPlayers; Player ++ )
        {
            if ( g_bConnected [ Player ] && !g_bBOT [ Player ] && !g_bHLTV [ Player ] && !g_bDisabled [ Player ] )
                client_cmd ( Player, Buffer );
        }
    }
}

// CLEARS STRING
//
QS_ClearString ( String [ ] )
{
    String [ 0 ] = EOS;
}

// CHECKS MOD
//
QS_CheckMod ( )
{
    if ( g_ModName [ 0 ] == EOS )
        get_modname ( g_ModName, charsmax ( g_ModName ) );
}


Отредактировал: ShaRk1, - 12.10.2018, 17:02
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя tyne
сообщение 12.10.2018, 17:07
Сообщение #10


Стаж: 13 лет

Сообщений: 544
Благодарностей: 137
Полезность: 91

ShaRk1, > строки 161, 183, 267, 303 и 309
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ShaRk1
сообщение 12.10.2018, 17:42
Сообщение #11
Стаж: 11 лет

Сообщений: 23
Благодарностей: 3
Полезность: 20

Цитата(tyne @ 12.10.2018, 18:07) *
ShaRk1, > строки 161, 183, 267, 303 и 309

set_hudmessage(200, 200, 200, 0.0, -1.0, 0, 6.0, 5.0) туда скопировать поставить да?

ShaRk1,


ShaRk1, или так?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Tiproni
сообщение 12.10.2018, 19:51
Сообщение #12


Стаж: 8 лет 1 месяц
Город: Пермь

Сообщений: 278
Благодарностей: 129
Полезность: 576

Вот лови измененный
тык
Код:
#include <amxmodx>
#include <amxmisc>

#define VERSION "2.1"

new g_kills[33] = {0,...}
new g_deaths[33] = {0,...}
new g_levels[13] = {3, 5, 7, 9, 11, 13, 16, 19, 22, 25, 28, 31, 35}

new g_roundKills[33], g_top
new g_firstBlood

new bool:g_died[33]

new streakSounds[13][] =
{
"qs/rampage.wav",
"qs/killingspree.wav",
"qs/dominating.wav",
"qs/unstoppable.wav",
"qs/ultrakill.wav",
"qs/eagleeye.wav",
"qs/ownage.wav",
"qs/ludicrouskill.wav",
"qs/headhunter.wav",
"qs/whickedsick.wav",
"qs/monsterkill.wav",
"qs/holyshit.wav",
"qs/godlike.wav"
}

new streakMsgs[13][] =
{
"RAMPAGE",
"KILLING_SPREE",
"DOMINATING",
"UNSTOPPABLE",
"ULTRA_KILL",
"EAGLE_EYE",
"OWNAGE",
"LUDICROUS_KILL",
"HEAD_HUNTER",
"WHICKED_SICK",
"MONSTER_KILL",
"HOLY_SHIT",
"GODLIKE"
}

new qs_enable, qs_streak, qs_firstblood, qs_headshot, qs_humiliatingdefeat, qs_hattrick, qs_flawlessvictory

new g_msgHudSync

public plugin_init()
{
register_plugin("Quake Sounds", VERSION, "hleV")
register_cvar("qs_version", VERSION, FCVAR_SPONLY|FCVAR_SERVER)

register_dictionary("quakesounds.txt")
register_dictionary("common.txt")

register_concmd("amx_quakesounds", "cmdQuakeSounds", ADMIN_RCON, "<1|0> - enables/disables Quake Sounds")
register_clcmd("say qs_version", "cmdSayVersion")

qs_enable = register_cvar("qs_enable", "1")
qs_streak = register_cvar("qs_streak", "1")
qs_firstblood = register_cvar("qs_firstblood", "1")
qs_headshot = register_cvar("qs_headshot", "1")
qs_humiliatingdefeat = register_cvar("qs_humiliatingdefeat", "1")
qs_hattrick = register_cvar("qs_hattrick", "4")
qs_flawlessvictory = register_cvar("qs_flawlessvictory", "6")

register_event("DeathMsg", "death", "a", "1>0")
register_event("DeathMsg", "deathHS", "a", "3=1")
register_event("DeathMsg", "deathHD", "a", "4&kni")
register_event("SendAudio", "roundEnd", "a", "2=%!MRAD_terwin", "2=%!MRAD_ctwin", "2=%!MRAD_rounddraw")
register_event("SendAudio", "soundCTWin", "a", "2=%!MRAD_ctwin")
register_event("SendAudio", "soundTWin", "a", "2=%!MRAD_terwin")

register_logevent("gameStart", 2, "1=Game_Commencing")
register_logevent("roundStart", 2, "1=Round_Start")

g_msgHudSync = CreateHudSyncObj()
}

public cmdQuakeSounds(id, level)
{
if (!(get_user_flags(id) & level))
{
console_print(id, "%L", LANG_SERVER, "NO_ACC_COM")

return PLUGIN_HANDLED
}

new arg[2]
read_argv(1, arg, 1)

if (equali(arg, "1"))
{
if (get_pcvar_num(qs_enable))
console_print(id, "%L", LANG_SERVER, "ALREADY_ENABLED")
else
{
set_pcvar_num(qs_enable, 1)
console_print(id, "%L", LANG_SERVER, "ENABLED")
}
}
else if (equali(arg, "0"))
{
if (get_pcvar_num(qs_enable))
{
set_pcvar_num(qs_enable, 0)
console_print(id, "%L", LANG_SERVER, "DISABLED")
}
else
console_print(id, "%L", LANG_SERVER, "ALREADY_DISABLED")
}
else
console_print(id, "%L: amx_quakesounds <1|0>", LANG_SERVER, "USAGE")

return PLUGIN_HANDLED
}

public cmdSayVersion(id)
client_print(id, print_chat, "Quake Sounds %s by hleV | Download @ www.amxmodx.org", VERSION)

public client_connect(id)
{
g_kills[id] = 0
g_deaths[id] = 0
g_roundKills[id] = 0
g_top = 0
}

public death()
{
if (!get_pcvar_num(qs_enable))
return PLUGIN_HANDLED

new killer = read_data(1)
new victim = read_data(2)

g_kills[victim] = 0
g_deaths[victim] += 1
g_died[victim] = true

if (get_pcvar_num(qs_streak) && killer != victim)
{
g_kills[killer] += 1
g_kills[victim] = 0

for (new i = 0; i < 13; i++)
if (g_kills[killer] == g_levels[i])
streakAnnounce(killer, i)
}

if (get_pcvar_num(qs_firstblood) && g_firstBlood && killer != victim)
{
new name[32]
get_user_name(killer, name, 31)

set_hudmessage(200, 200, 200, 0.0, -1.0, 0, 6.0, 5.0)
ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "FIRST_BLOOD", name)
client_cmd(0, "spk qs/firstBlood")

g_firstBlood = 0
}

if (get_pcvar_num(qs_hattrick) && killer != victim)
{
g_roundKills[killer] = g_roundKills[killer] + 1

topPlayer()
}

return PLUGIN_CONTINUE
}

streakAnnounce(killer, level)
{
new name[32]
get_user_name(killer, name, 32)

set_hudmessage(200, 200, 200, 0.0, -1.0, 0, 6.0, 5.0)
ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, streakMsgs[level], name)
client_cmd(0, "spk %s", streakSounds[level])
}

public topPlayer()
{
new players[32], score, playerNum
get_players(players, playerNum)

for (new i = 0; i < playerNum; i++)
{
if (g_roundKills[players[i]] > score)
{
score = g_roundKills[players[i]]
g_top = players[i]
}
else if (g_roundKills[players[i]] == score)
g_top = 0
}
}

public gameStart() g_firstBlood = 1

public roundStart()
{
if (get_pcvar_num(qs_firstblood) >= 2)
g_firstBlood = 1

for (new i = 1; i <= get_maxplayers(); i++)
g_died[i] = false
}

public deathHS()
{
if (!get_pcvar_num(qs_enable) || !get_pcvar_num(qs_headshot))
return PLUGIN_HANDLED

if (get_pcvar_num(qs_headshot) == 1)
client_cmd(read_data(1), "spk qs/headshot")
else if (get_pcvar_num(qs_headshot) >= 2)
client_cmd(0, "spk qs/headshot")

return PLUGIN_CONTINUE
}

public deathHD()
{
if (!get_pcvar_num(qs_enable) || !get_pcvar_num(qs_humiliatingdefeat))
return PLUGIN_HANDLED

if (get_pcvar_num(qs_humiliatingdefeat) == 1)
client_cmd(read_data(1), "spk qs/humiliatingdefeat")
else if (get_pcvar_num(qs_humiliatingdefeat) >= 2)
client_cmd(0, "spk qs/humiliatingdefeat")

return PLUGIN_CONTINUE
}

public roundEnd()
{
if (!get_pcvar_num(qs_enable) || !get_pcvar_num(qs_hattrick))
return PLUGIN_HANDLED

new players[32], playerNum
get_players(players, playerNum)

if (g_top != 0 && g_roundKills[g_top] >= get_pcvar_num(qs_hattrick))
set_task(3.0, "setHattrick", g_top)

for (new i = 0; i < playerNum; i++)
{
g_roundKills[players[i]] = 0
g_top = 0
}

return PLUGIN_CONTINUE
}

public setHattrick(g_top)
{
new name[32]
get_user_name(g_top, name, 32)

set_hudmessage(200, 200, 200, 0.0, -1.0, 0, 6.0, 5.0)
ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "HATTRICK", name)
client_cmd(0, "spk qs/hattrick")
}

public soundCTWin() checkAlive("CT")
public soundTWin() checkAlive("TERRORIST")

checkAlive(const team[])
{
if (!get_pcvar_num(qs_enable) || !get_pcvar_num(qs_flawlessvictory))
return PLUGIN_HANDLED

new players[32], playerNum, bool:g_flawlessVictory = true
get_players(players, playerNum, "e", team)

for (new i = 0; i < playerNum; i++)
{
if (!is_user_alive(players[i]) && g_died[players[i]])
{
g_flawlessVictory = false

break
}
}

if (g_flawlessVictory)
set_task(1.5, "setFlawlessVictory", team[0])

return 1
}

public setFlawlessVictory(team)
{
if (team == 'C')
{
set_hudmessage(200, 200, 200, 0.0, -1.0, 0, 6.0, 10.0)
show_hudmessage(0, "%L", LANG_SERVER, "FLAWLESS_VICTORY_CT")
client_cmd(0, "speak qs/flawlessvictory")
}
else if (team == 'T')
{
set_hudmessage(200, 200, 200, 0.0, -1.0, 0, 6.0, 10.0)
show_hudmessage(0, "%L", LANG_SERVER, "FLAWLESS_VICTORY_T")
client_cmd(0, "speak qs/flawlessvictory")
}
}

public plugin_precache()
{
new i

for (i = 0; i < 13; i++)
precache_sound(streakSounds[i])

precache_sound("qs/firstblood.wav")
precache_sound("qs/headshot.wav")
precache_sound("qs/humiliatingdefeat.wav")
precache_sound("qs/hattrick.wav")
precache_sound("qs/flawlessvictory.wav")
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ShaRk1
сообщение 12.10.2018, 20:02
Сообщение #13
Стаж: 11 лет

Сообщений: 23
Благодарностей: 3
Полезность: 20

ShaRk1,
Помогите пожалуйста прошу вас, не могу разобраться я вообще 0.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя tyne
сообщение 12.10.2018, 20:47
Сообщение #14


Стаж: 13 лет

Сообщений: 544
Благодарностей: 137
Полезность: 91

Выше же скинули готовый
Скомпилируй его и всё
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Tiproni
сообщение 12.10.2018, 21:11
Сообщение #15


Стаж: 8 лет 1 месяц
Город: Пермь

Сообщений: 278
Благодарностей: 129
Полезность: 576

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

исправил
тык
Код:
#include <amxmodx>
#include <amxmisc>

#define VERSION "2.1"

new g_kills[33] = {0,...}
new g_deaths[33] = {0,...}
new g_levels[13] = {3, 5, 7, 9, 11, 13, 16, 19, 22, 25, 28, 31, 35}

new g_roundKills[33], g_top
new g_firstBlood

new bool:g_died[33]

new streakSounds[13][] =
{
"qs/rampage.wav",
"qs/killingspree.wav",
"qs/dominating.wav",
"qs/unstoppable.wav",
"qs/ultrakill.wav",
"qs/eagleeye.wav",
"qs/ownage.wav",
"qs/ludicrouskill.wav",
"qs/headhunter.wav",
"qs/whickedsick.wav",
"qs/monsterkill.wav",
"qs/holyshit.wav",
"qs/godlike.wav"
}

new streakMsgs[13][] =
{
"RAMPAGE",
"KILLING_SPREE",
"DOMINATING",
"UNSTOPPABLE",
"ULTRA_KILL",
"EAGLE_EYE",
"OWNAGE",
"LUDICROUS_KILL",
"HEAD_HUNTER",
"WHICKED_SICK",
"MONSTER_KILL",
"HOLY_SHIT",
"GODLIKE"
}

new qs_enable, qs_streak, qs_firstblood, qs_headshot, qs_humiliatingdefeat, qs_hattrick, qs_flawlessvictory

new g_msgHudSync

public plugin_init()
{
register_plugin("Quake Sounds", VERSION, "hleV")
register_cvar("qs_version", VERSION, FCVAR_SPONLY|FCVAR_SERVER)

register_dictionary("quakesounds.txt")
register_dictionary("common.txt")

register_concmd("amx_quakesounds", "cmdQuakeSounds", ADMIN_RCON, "<1|0> - enables/disables Quake Sounds")
register_clcmd("say qs_version", "cmdSayVersion")

qs_enable = register_cvar("qs_enable", "1")
qs_streak = register_cvar("qs_streak", "1")
qs_firstblood = register_cvar("qs_firstblood", "1")
qs_headshot = register_cvar("qs_headshot", "1")
qs_humiliatingdefeat = register_cvar("qs_humiliatingdefeat", "1")
qs_hattrick = register_cvar("qs_hattrick", "4")
qs_flawlessvictory = register_cvar("qs_flawlessvictory", "6")

register_event("DeathMsg", "death", "a", "1>0")
register_event("DeathMsg", "deathHS", "a", "3=1")
register_event("DeathMsg", "deathHD", "a", "4&kni")
register_event("SendAudio", "roundEnd", "a", "2=%!MRAD_terwin", "2=%!MRAD_ctwin", "2=%!MRAD_rounddraw")
register_event("SendAudio", "soundCTWin", "a", "2=%!MRAD_ctwin")
register_event("SendAudio", "soundTWin", "a", "2=%!MRAD_terwin")

register_logevent("gameStart", 2, "1=Game_Commencing")
register_logevent("roundStart", 2, "1=Round_Start")

g_msgHudSync = CreateHudSyncObj()
}

public cmdQuakeSounds(id, level)
{
if (!(get_user_flags(id) & level))
{
console_print(id, "%L", LANG_SERVER, "NO_ACC_COM")

return PLUGIN_HANDLED
}

new arg[2]
read_argv(1, arg, 1)

if (equali(arg, "1"))
{
if (get_pcvar_num(qs_enable))
console_print(id, "%L", LANG_SERVER, "ALREADY_ENABLED")
else
{
set_pcvar_num(qs_enable, 1)
console_print(id, "%L", LANG_SERVER, "ENABLED")
}
}
else if (equali(arg, "0"))
{
if (get_pcvar_num(qs_enable))
{
set_pcvar_num(qs_enable, 0)
console_print(id, "%L", LANG_SERVER, "DISABLED")
}
else
console_print(id, "%L", LANG_SERVER, "ALREADY_DISABLED")
}
else
console_print(id, "%L: amx_quakesounds <1|0>", LANG_SERVER, "USAGE")

return PLUGIN_HANDLED
}

public client_connect(id)
{
g_kills[id] = 0
g_deaths[id] = 0
g_roundKills[id] = 0
g_top = 0
}

public death()
{
if (!get_pcvar_num(qs_enable))
return PLUGIN_HANDLED

new killer = read_data(1)
new victim = read_data(2)

g_kills[victim] = 0
g_deaths[victim] += 1
g_died[victim] = true

if (get_pcvar_num(qs_streak) && killer != victim)
{
g_kills[killer] += 1
g_kills[victim] = 0

for (new i = 0; i < 13; i++)
if (g_kills[killer] == g_levels[i])
streakAnnounce(killer, i)
}

if (get_pcvar_num(qs_firstblood) && g_firstBlood && killer != victim)
{
new name[32]
get_user_name(killer, name, 31)

set_hudmessage(200, 200, 200, 0.0, -1.0, 0, 6.0, 5.0)
ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "FIRST_BLOOD", name)
client_cmd(0, "spk qs/firstBlood")

g_firstBlood = 0
}

if (get_pcvar_num(qs_hattrick) && killer != victim)
{
g_roundKills[killer] = g_roundKills[killer] + 1

topPlayer()
}

return PLUGIN_CONTINUE
}

streakAnnounce(killer, level)
{
new name[32]
get_user_name(killer, name, 32)

set_hudmessage(200, 200, 200, 0.0, -1.0, 0, 6.0, 5.0)
ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, streakMsgs[level], name)
client_cmd(0, "spk %s", streakSounds[level])
}

public topPlayer()
{
new players[32], score, playerNum
get_players(players, playerNum)

for (new i = 0; i < playerNum; i++)
{
if (g_roundKills[players[i]] > score)
{
score = g_roundKills[players[i]]
g_top = players[i]
}
else if (g_roundKills[players[i]] == score)
g_top = 0
}
}

public gameStart() g_firstBlood = 1

public roundStart()
{
if (get_pcvar_num(qs_firstblood) >= 2)
g_firstBlood = 1

for (new i = 1; i <= get_maxplayers(); i++)
g_died[i] = false
}

public deathHS()
{
if (!get_pcvar_num(qs_enable) || !get_pcvar_num(qs_headshot))
return PLUGIN_HANDLED

if (get_pcvar_num(qs_headshot) == 1)
client_cmd(read_data(1), "spk qs/headshot")
else if (get_pcvar_num(qs_headshot) >= 2)
client_cmd(0, "spk qs/headshot")

return PLUGIN_CONTINUE
}

public deathHD()
{
if (!get_pcvar_num(qs_enable) || !get_pcvar_num(qs_humiliatingdefeat))
return PLUGIN_HANDLED

if (get_pcvar_num(qs_humiliatingdefeat) == 1)
client_cmd(read_data(1), "spk qs/humiliatingdefeat")
else if (get_pcvar_num(qs_humiliatingdefeat) >= 2)
client_cmd(0, "spk qs/humiliatingdefeat")

return PLUGIN_CONTINUE
}

public roundEnd()
{
if (!get_pcvar_num(qs_enable) || !get_pcvar_num(qs_hattrick))
return PLUGIN_HANDLED

new players[32], playerNum
get_players(players, playerNum)

if (g_top != 0 && g_roundKills[g_top] >= get_pcvar_num(qs_hattrick))
set_task(3.0, "setHattrick", g_top)

for (new i = 0; i < playerNum; i++)
{
g_roundKills[players[i]] = 0
g_top = 0
}

return PLUGIN_CONTINUE
}

public setHattrick(g_top)
{
new name[32]
get_user_name(g_top, name, 32)

set_hudmessage(200, 200, 200, 0.0, -1.0, 0, 6.0, 5.0)
ShowSyncHudMsg(0, g_msgHudSync, "%L", LANG_SERVER, "HATTRICK", name)
client_cmd(0, "spk qs/hattrick")
}

public soundCTWin() checkAlive("CT")
public soundTWin() checkAlive("TERRORIST")

checkAlive(const team[])
{
if (!get_pcvar_num(qs_enable) || !get_pcvar_num(qs_flawlessvictory))
return PLUGIN_HANDLED

new players[32], playerNum, bool:g_flawlessVictory = true
get_players(players, playerNum, "e", team)

for (new i = 0; i < playerNum; i++)
{
if (!is_user_alive(players[i]) && g_died[players[i]])
{
g_flawlessVictory = false

break
}
}

if (g_flawlessVictory)
set_task(1.5, "setFlawlessVictory", team[0])

return 1
}

public setFlawlessVictory(team)
{
if (team == 'C')
{
set_hudmessage(200, 200, 200, 0.0, -1.0, 0, 6.0, 10.0)
show_hudmessage(0, "%L", LANG_SERVER, "FLAWLESS_VICTORY_CT")
client_cmd(0, "speak qs/flawlessvictory")
}
else if (team == 'T')
{
set_hudmessage(200, 200, 200, 0.0, -1.0, 0, 6.0, 10.0)
show_hudmessage(0, "%L", LANG_SERVER, "FLAWLESS_VICTORY_T")
client_cmd(0, "speak qs/flawlessvictory")
}
}

public plugin_precache()
{
new i

for (i = 0; i < 13; i++)
precache_sound(streakSounds[i])

precache_sound("qs/firstblood.wav")
precache_sound("qs/headshot.wav")
precache_sound("qs/humiliatingdefeat.wav")
precache_sound("qs/hattrick.wav")
precache_sound("qs/flawlessvictory.wav")
}

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
podbot
сообщение 12.10.2018, 22:58
Сообщение #16
Стаж: 11 лет

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

следующий вопрос будет "у меня не пишет надписи"...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ShaRk1
сообщение 13.10.2018, 17:24
Сообщение #17
Стаж: 11 лет

Сообщений: 23
Благодарностей: 3
Полезность: 20

Tiproni,
Спасибо, но не смог поставить. Установил https://forums.alliedmods.net/showthread.php?p=416080
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ShaRk1
сообщение 13.10.2018, 17:29
Сообщение #18
Стаж: 11 лет

Сообщений: 23
Благодарностей: 3
Полезность: 20

ShaRk1,
Теперь только надо настроить, как сделать что-бы после KILL сразу не звучали и не показывали DOUBLE KILL , TRIPPLE KILL . После килла через 3сек должны звучить и показывать MSG.
КОД[pawn
/* Ultimate KillStreak Advanced


! Available Sounds for enemy kills, headshot kills, knife kills , first blood kills , double kill , round counter.

1) 10 sounds for enemy kills :
- At 3 kills -> play TripleKill sound
- 4 -> play MultiKill sound (it's not basically multikill sound)
- 6 -> play UltraKill sound (it's not basically ultrakill sound)
- 8 -> play KillingSpree sound (it's not basically killingspree sound)
- 10 -> play MegaKill sound
- 12 -> play Holy Shit sound
- 14 -> play Ludicrouskill sound
- 15 -> play rampage sound
- 16 -> play Unstoppable Sound (it's not basically unstoppable sound)
- 18 -> play Monster Kill sound (it's not basically monster kill sound)


2) 2 Sounds for Headshot (random play)
3) 2 Sounds for Knife Kill (random play)
4) 2 Sounds for First Blood (random play)
5) 3 Sounds for Round Counter Events (random play)
6) 1 Sound for Grenade Kill Events
7) 4 Sounds for Suicide Events
8) 2 Sounds for Double Kill Events



* CVARs:

- ut_killstreak_advanced (default 3) - enable/disable kill report, hudmessages
1 = Only HudMessages
2 = Only Sounds
3 = Sounds and HudMessages
Another number disable this event


- ut_killstreak_hs (default 1) -> enable/disable headshot events
Includes 2 sounds, hudmessages

- ut_killstreak_knife (default 1) -> enable/disable knife kill events
Includes 2 sounds, hudmessages

- ut_firstblood (default 1) -> enable/disable first blood events
Includes 2 sounds, hudmessages

- ut_nade_events (default 1) -> enable/disable Grenade kill events
Includes 1 sounds, hudmessages

- ut_suicide_events (default 1) -> enable/disable Suicide Events
Includes 4 sounds, hudmessages

- ut_doublekill_events (default 1) -> enable/disable Double Kill Events
Includes 2 sounds, hudmessage

- ut_roundcout_sounds (default 1) -> enable/disable Round Counter Sounds
Includes 3 sounds, hudmessage


* [UPDATE] 0.6 - > 0.7 (10/02/2007)
- Changed the ul_killstreak_advanced cvar (read on head plugin at "CVARS"
- Chaged the cord of hudmessages, to be to center
- Now on killstreak announce, messages will be with random colors


* [UPDATE] 0.5 -> 0.6
- Fixed bugs
- Added Round Counter Cvar:
ut_roundcout_sounds



* [UPDATE] 0.4 -> 0.5
- Added Double Kill Events
Cvar : ut_doublekill_events (default 1)
Sounds : 2 sounds (random play)
Messages : 1 Hud Message
This is only if you kill 2 players with a bullet

* [UPDATE] 0.3 -> 0.4
- Added Grenade Kill Events ->
Cvar : ut_nade_events (default 1)
Sounds : 1 sound
Messages : 4 hud messages (random display)

- Added Suicide Events
Cvar : ut_suicide_events (default 1)
Sounds : 4 (random play)
Messages : 2 hud messages (random display)


* [UPDATE] 0.2 -> 0.3
- Added First Blood Events:
Cvar : ut_firstblood (default 1)
Sounds : 2 sounds (random play)
Messages : 3 hud messages (random display)

- Added Round Counter Events:
Sounds : 3 sounds (random play)
Messages : 1 hud message



* [UPDATE] 0.1 -> 0.2
- Added new 4 headshot kill messages
- Added new 3 knife kill messages
This messages will displayed at random


* Install:
1) Enable Plugin
2) Copy "ultimate_sounds" folder in to your "cstrike\sound" folder
3) Restart server


* Credits:
- xxAvalancheXx for double kill codes
- jim_yang for some sugestion and grenade events codes
- bo0m! for help me with an register event function
- Duca for Streak Mode Example

* Have a nice day now

*/




#include <amxmodx>
#include <amxmisc>

#define PLUGIN_NAME "Ultimate KillStreak Advanced"
#define PLUGIN_VERSION "0.7"
#define PLUGIN_AUTHOR "ELDIYAR"


new kills[33] = {0,...};
new deaths[33] = {0,...};
new firstblood
new kill[33][24];

#define LEVELS 10
#define hsounds 2
#define knsounds 2
#define fbsounds 2
#define prpsounds 3
#define suicidesounds 4
#define maxdbsounds 2
#define TASK_CLEAR_KILL 100

new hsenable
new knifeenable
new firstbloodenable
new nadecvar
new suicidecvar
new cvardouble
new rnstartcvar
new killstreaktype


new levels[10] = {3, 4, 6, 8, 10, 12,14,15,16,18};

new sounds[10][] =
{
"ultimate_sounds/triplekill_ultimate",
"ultimate_sounds/multikill_ultimate",
"ultimate_sounds/ultrakill_ultimate",
"ultimate_sounds/killingspree_ultimate",
"ultimate_sounds/megakill_ultimate",
"ultimate_sounds/holyshit_ultimate",
"ultimate_sounds/ludicrouskill_ultimate",
"ultimate_sounds/rampage_ultimate",
"ultimate_sounds/unstoppable_ultimate",
"ultimate_sounds/monsterkill_ultimate"
};

new messages[10][] =
{
"%s: Triple Kill !",
"%s: Multi Kill !",
"%s: Ultra Kill !",
"%s: Killing Spree !",
"%s: Mega Kill !",
"%s: Holy Shit !",
"%s: Ludicrous Kill !",
"%s: Rampage !",
"%s: Unstoppable !",
"%s: M o n s t e R K i L L ! ! !"
};

new hslist[hsounds][] =
{
"ultimate_sounds/headshot1_ultimate",
"ultimate_sounds/headshot2_ultimate"
}

new fblist[fbsounds][]=
{
"ultimate_sounds/firstblood1_ultimate",
"ultimate_sounds/firstblood2_ultimate"
}

new preplist[prpsounds][]=
{
"ultimate_sounds/prepare1_ultimate",
"ultimate_sounds/prepare2_ultimate",
"ultimate_sounds/prepare3_ultimate"
}


new fbmessages[3][]=
{
"%s : First Blood !",
"%s Drew First Blood !!!",
"%s First Shot on tha Mark !"
}

new hsmessages[4][]=
{
"%s removed %s head !!",
"%s had a superb aim with %s !",
"%s Made a superb headshot to %s!",
"%s down %s with a superb headshot !"
}

new knlist[knsounds][]=
{
"ultimate_sounds/knife1_ultimate",
"ultimate_sounds/knife2_ultimate"
}

new knmessages[3][]=
{
"%s sliced and diced %s",
"%s pulled out knife and gutted %s",
"%s knifed %s"
}

new nademessages[3][]=
{
"%s got a big explosion for %s",
"%s made a precision throw to %s",
"%s is good grenadier ! i think he back from the war ..."
}

new suicidemess[2][]=
{
"%s knows how the kill command works!",
"%s prefer to kill himself...rather than die on battle land"
}

new suicidelist[suicidesounds][]=
{
"ultimate_sounds/suicide1_ultimate",
"ultimate_sounds/suicide2_ultimate",
"ultimate_sounds/suicide3_ultimate",
"ultimate_sounds/suicide4_ultimate"
}

new doublelist[maxdbsounds][]=
{
"ultimate_sounds/doublekill1_ultimate",
"ultimate_sounds/doublekill2_ultimate"
}

is_mode_set(bits) {
new mode[9];
get_cvar_string("ut_killstreak_advanced", mode, 8);
return read_flags(mode) & bits;
}

public plugin_init() {
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
killstreaktype = register_cvar("ut_killstreak_advanced", "3");
register_event("ResetHUD", "reset_hud", "b");
register_event("HLTV","rnstart","a", "1=0", "2=0");
register_event("DeathMsg", "event_death", "a");
hsenable = register_cvar("ut_killstreak_hs","1");
knifeenable = register_cvar("ut_killstreak_knife","1");
firstbloodenable = register_cvar("ut_firstblood","1");
nadecvar = register_cvar("ut_nade_events","1");
suicidecvar = register_cvar("ut_suicide_events","1");
cvardouble = register_cvar("ut_doublekill_events","1");
rnstartcvar = register_cvar("ut_roundcout_sounds","1");

return PLUGIN_CONTINUE;
}


public event_death(id) {
new killer = read_data(1);
new victim = read_data(2);
new headshot = read_data(3);
new weapon[24], vicname[32], killname[32]
read_data(4,weapon,23)
get_user_name(victim,vicname,31)
get_user_name(killer,killname,31)



if(headshot == 1 && get_pcvar_num(hsenable) ==1)
{
set_hudmessage(0, 0, 255, -1.0, 0.30, 0, 6.0, 6.0)
show_hudmessage(0, (hsmessages[random_num(0,3)]), killname, vicname)
new i
i = random_num(0,hsounds-1)
client_cmd(0,"spk %s",hslist[i])
}


if(weapon[0] == 'k' && get_pcvar_num(knifeenable) ==1)
{
set_hudmessage(255, 0, 255, -1.0, 0.30, 0, 6.0, 6.0)
show_hudmessage(0, (knmessages[random_num(0,2)]), killname, vicname)
new r
r = random_num(0,knsounds-1)
client_cmd(0,"spk %s",knlist[r])
}


if(firstblood && killer!=victim && killer>0 && get_pcvar_num(firstbloodenable) ==1)
{
set_hudmessage(255, 0, 255, -1.0, 0.30, 0, 6.0, 6.0)
show_hudmessage(0, (fbmessages[random_num(0,2)]), killname)
new t
t = random_num(0,fbsounds-1)
client_cmd(0,"spk %s",fblist[t])
firstblood = 0
}


if(weapon[1] == 'r' && get_pcvar_num(nadecvar) ==1)
{
set_hudmessage(255, 0, 255, -1.0, 0.30, 0, 6.0, 6.0)
show_hudmessage(0,(nademessages[random_num(0,2)]),killname,vicname)
client_cmd(0,"spk ultimate_sounds/nade_ultimate")
}


if(killer == victim && get_pcvar_num(suicidecvar) ==1)
{
set_hudmessage(255, 0, 255, -1.0, 0.30, 0, 6.0, 6.0)
show_hudmessage(0,(suicidemess[random_num(0,1)]), vicname)
new z
z = random_num(0,suicidesounds-1)
client_cmd(0,"spk %s",suicidelist[z])

}


if(kill[killer][0] && equal(kill[killer],weapon) && get_pcvar_num(cvardouble) == 1)
{
set_hudmessage(255, 0, 255, -1.0, 0.30, 0, 6.0, 6.0)
show_hudmessage(0,"Wow %s made a double kill", killname)
kill[killer][0] = 0;
new q
q= random_num(0,maxdbsounds-1)
client_cmd(0,"spk %s",doublelist[q])
}

else
{
kill[killer] = weapon;
set_task(0.1,"clear_kill",TASK_CLEAR_KILL+killer);
}



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 name[33]
new r = random(256)
new g = random(256)
new b = random(256)

get_user_name(killer, name, 32);
set_hudmessage(r,g,b, 0.05, 0.65, 2, 0.02, 6.0, 0.01, 0.1, 2);

if( (get_pcvar_num(killstreaktype) <= 0 ) || get_pcvar_num(killstreaktype) > 3)
return PLUGIN_HANDLED;



if(get_pcvar_num(killstreaktype) == 1)
{
show_hudmessage(0, messages[level], name);
}

if(get_pcvar_num(killstreaktype) == 2)
{
client_cmd(0, "spk %s", sounds[level]);
}

if(get_pcvar_num(killstreaktype) == 3)
{
show_hudmessage(0, messages[level], name);
client_cmd(0, "spk %s", sounds[level]);
}

return PLUGIN_CONTINUE;

}


public reset_hud(id)
{
firstblood = 1
if (is_mode_set(16)) {
if (kills[id] > levels[0]) {
client_print(id, print_chat,
"* You are on a killstreak with %d kills.", kills[id]);
} else if (deaths[id] > 1) {
client_print(id, print_chat,
"* Take care, you are on a deathstreak with %d deaths in a row.", deaths[id]);

}
}
}

public rnstart(id)
{
if(get_pcvar_num(rnstartcvar) == 1)
{
firstblood = 1
set_hudmessage(255, 0, 255, -1.0, 0.30, 0, 6.0, 6.0)
show_hudmessage(0, "Prepare To Fight!")
new q
q = random_num(0,prpsounds-1)
client_cmd(0,"spk %s",preplist[q])
}
}

public client_connect(id) {
kills[id] = 0;
deaths[id] = 0;
}

public clear_kill(taskid)
{
new id = taskid-TASK_CLEAR_KILL;
kill[id][0] = 0;
}

public plugin_precache()
{
precache_sound("ultimate_sounds/triplekill_ultimate.wav")
precache_sound("ultimate_sounds/multikill_ultimate.wav")
precache_sound("ultimate_sounds/ultrakill_ultimate.wav")
precache_sound("ultimate_sounds/killingspree_ultimate.wav")
precache_sound("ultimate_sounds/megakill_ultimate.wav")
precache_sound("ultimate_sounds/holyshit_ultimate.wav")
precache_sound("ultimate_sounds/ludicrouskill_ultimate.wav")
precache_sound("ultimate_sounds/rampage_ultimate.wav")
precache_sound("ultimate_sounds/unstoppable_ultimate.wav")
precache_sound("ultimate_sounds/monsterkill_ultimate.wav")
precache_sound("ultimate_sounds/headshot1_ultimate.wav")
precache_sound("ultimate_sounds/headshot2_ultimate.wav")
precache_sound("ultimate_sounds/knife1_ultimate.wav")
precache_sound("ultimate_sounds/knife2_ultimate.wav")
precache_sound("ultimate_sounds/firstblood1_ultimate.wav")
precache_sound("ultimate_sounds/firstblood2_ultimate.wav")
precache_sound("ultimate_sounds/prepare1_ultimate.wav")
precache_sound("ultimate_sounds/prepare2_ultimate.wav")
precache_sound("ultimate_sounds/prepare3_ultimate.wav")
precache_sound("ultimate_sounds/nade_ultimate.wav")
precache_sound("ultimate_sounds/suicide1_ultimate.wav")
precache_sound("ultimate_sounds/suicide2_ultimate.wav")
precache_sound("ultimate_sounds/suicide3_ultimate.wav")
precache_sound("ultimate_sounds/suicide4_ultimate.wav")
precache_sound("ultimate_sounds/doublekill1_ultimate.wav")
precache_sound("ultimate_sounds/doublekill2_ultimate.wav")
}



[/pawn]


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