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

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

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

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

История благодарностей участнику Karpen ::: Спасибо сказали: 27
Дата поста: В теме: За сообщение: Спасибо сказали:
14.11.2011, 11:27 Server Stat System
redow,
вот еслиб кто-то выложил такой скрипт:
1. Показывался онлайн на сервере.
2. Показывалась статистика в ТОП на сервере.
3. Подробней статистика об игроке в ТОП.
4. Активность Админа на сервере (онлайн/оффлайн)

Вот былоб круто)
Kirby Magicman
12.11.2011, 18:38 что за строка?
ZZZombiE,
да.
FixX
9.11.2011, 19:29 нужен скрипт мониторинга
edge,
то такой-же как и там стоит.
Только там вид другой и всё.
edge
23.10.2011, 0:15 Скрипты для AmxBans 5.0+
Скрипты by Karpen для AmxBans 5.0+!

Скрипт №1 Последний бан игрока V1.2

[attachment=15158:111.PNG]

Описание: показывает последнего игрока, зашедшего в бан лист, с не большой информацией.

Установка: смотрите ниже.

Возможности:
Ник - выводит ник игрока.
IP-адрес - выводит IP игрока.
Причина - выводит причину бана.
Админом - выводит Админа, который забанил.
Время бана - Время бана (если больше одного дня, показывает в днях)
Дата бана - Дата бана игрока
Забанен на - На каком сервер забанен

Вопрос: Как сделать чтоб дата выводилась в форме: 10.01.11?
Ответ: найдите в скрипте строчку: $last_player_ban_data = dateShorttime и замените на $last_player_ban_data = dateShort

Вопрос: У меня показывает иероглифы, что делать?
Ответ: есть не много вариантов это исправить!
1. Самый лучший, переведите файл в кодировку UTF-8 no BOM
2. Тоже не плох вставьте перед if(empty($last_player_ban_length)) {$last_player_ban_length = lang("_PERMANENT");}
Такой скрипт:

Код
$last_player_ban_nickname = iconv('CP1251','utf-8',$last_player_ban_nickname);
$last_player_ban_adm = iconv('CP1251','utf-8',$last_player_ban_adm);
$last_player_ban_reason = iconv('CP1251','utf-8',$last_player_ban_reason);
$last_player_server_name = iconv('CP1251','utf-8',$last_player_server_name);


Вопрос: Вид бана будет такой-же как и на скрине выше?
Ответ: нет, я тестировал на своей ст сайта, где не был подключены стили, если подключить, всё будет красиво thank_you2.gif

Скрипт
Код
<table class='listtable' cellspacing='0' cellpadding='0' border='0' width='100%'>
<tr><td class='listtable_top' colspan='4'>Последний бан:</td></tr>
<?php
require("include/config.inc.php");
require("$config->path_root/include/functions.lang.php");
require("$config->path_root/include/functions.inc.php");

$last_ban = mysql_query("SELECT bid, player_ip, player_nick, admin_nick, ban_reason, ban_created, ban_length, server_name FROM $config->bans ORDER BY ban_created DESC LIMIT 1");
$last_bans = mysql_query("SELECT bid, player_ip, player_nick, admin_nick, ban_reason, ban_created, ban_length, server_name FROM $config->bans ORDER BY ban_created DESC LIMIT 1");

$timezone_correction = $config->timezone_fixx * 3600;
while($row = mysql_fetch_array($last_ban)){
    $last_player_ban_bid = $row['bid'];
    $last_player_ban_ip = $row['player_ip'];
    $last_player_ban_nickname = $row['player_nick'];
    $last_player_ban_adm = $row['admin_nick'];
    $last_player_ban_reason = $row['ban_reason'];
    while($rows = mysql_fetch_object($last_bans)) {$last_player_ban_data = dateShorttime($rows->ban_created + $timezone_correction);}
    $last_player_ban_length = $row['ban_length'];
    $last_player_server_name = $row['server_name'];
    
        if(empty($last_player_ban_length)) {$last_player_ban_length = lang("_PERMANENT");}
        else {if ($last_player_ban_length >= 1440) {$last_player_ban_length = round($last_player_ban_length / 1440);
            if ($duration == 1) $last_player_ban_length = "$last_player_ban_length " . lang("_DAY");
            else $last_player_ban_length = "$last_player_ban_length " . lang("_DAYS");
        } else {$last_player_ban_length = "$last_player_ban_length " . lang("_MINS");}
            }

    echo "
    <tr><td class='listtable_1'>Ник:</td> <td class='listtable_1'><a href='ban_details.php?bid=$last_player_ban_bid'>$last_player_ban_nickname</a></td></tr>
    <tr><td class='listtable_1'>IP-адрес:</td> <td class='listtable_1'>$last_player_ban_ip</td></tr>
    <tr><td class='listtable_1'>Причина:</td> <td class='listtable_1'>$last_player_ban_reason</td></tr>
    <tr><td class='listtable_1'>Админом:</td> <td class='listtable_1'>$last_player_ban_adm</td></tr>
    <tr><td class='listtable_1'>Время бана:</td> <td class='listtable_1'>$last_player_ban_length</td></tr>
    <tr><td class='listtable_1'>Дата бана:</td> <td class='listtable_1'>$last_player_ban_data</td></tr>
    <tr><td class='listtable_1'>Забанен на:</td> <td class='listtable_1'>$last_player_server_name</td></tr>
    ";
}
?>

</table>


Скрипт №2 Статистика Администратора V1.5

[attachment=15159:112.PNG]

Описание: Показывает сколько банов всего (забанено/истекших), сколько Активных и истекших, из тех что забанил, также сколько розбанил игроков.

Установка: смотрите ниже.

Скрипт
Код
<?php
if(isset($_SESSION['uid'])) {
if ($config->error_handler == "enabled") {include("$config->error_handler_path");}
$adm = $_SESSION['uid'];

$result1 = mysql_query("SELECT count(*) FROM amx_bans WHERE admin_nick='$adm'");
$result2 = mysql_query("SELECT count(*) FROM amx_banhistory WHERE admin_nick='$adm'");
while($all_rows = mysql_fetch_array($result2))
while($all_row = mysql_fetch_array($result1)){$all_bans = $all_row['count(*)'] + $all_rows['count(*)']; echo "[Всего банов: <b>$all_bans</b>] ";}

$result3 = mysql_query("SELECT count(*) FROM amx_bans WHERE admin_nick='$adm'");
while($rowe = mysql_fetch_array($result3)){$ac_bans = $rowe['count(*)']; echo "[Активных банов: <b>$ac_bans</b>] ";}

$result4 = mysql_query("SELECT count(*) FROM amx_banhistory WHERE admin_nick='$adm'");
while($ex_row = mysql_fetch_array($result4)){$ex_bans = $ex_row['count(*)']; echo "[Истекших банов: <b>$ex_bans</b>] ";}

$result5 = mysql_query("SELECT count(*) FROM amx_banhistory WHERE unban_admin_nick='$adm'");
while($no_pl_row = mysql_fetch_array($result5)){$no_player = $no_pl_row['count(*)']; echo "[Разбанил игроков: <b>$no_player</b>]";}
}
?>



Скрипт №3 Статистика банлиста V2.0


[attachment=15160:3111131.PNG]

Описание: выводит полную статистику бан лист, тоетсть, сколько банов всего, сколько из них активных/истекло, сколько банов на всегда а сколько по времени, сколько Админов на сайте и серверов, сколько подключено серверв. до банлиста.

Установка: смотрите ниже.

Вопрос: Как правильно удалять?
Ответ: Это ошибка всего скрипта :biggrin: просто в базе данных стоит что Какой-то Админ есть на сервере, например если у вас было 3 Админа, и вес 3 на сервер подключено, сначала нужно отключить от сервера, а потом удалять, поскольку после удаления, он будет храниться в другой таблице БД (базы данных).

Вопрос: Я удалил не отключив от сервера, что делать?
Ответ: Вообще это сложно, но возможно, заходим в phpMyAdmin выбираем там bans (тоесть наша база данных, возможно у вас другая) дальше найдём таблицу amx_admins_servers кликаем как на скрине ниже

[attachment=15161:11111111111.PNG]

и удаляем кто вам не нужен (можно удалить всех, но потом поставить наново Админов на сервера, через Админку AmxBans) Удолять по ID.

Скрипт
Код
<?php
require("include/config.inc.php");
require("$config->path_root/include/functions.lang.php");
require("$config->path_root/include/functions.inc.php");

    $active_bans    = mysql_query("SELECT COUNT(bid) AS active_bans FROM $config->bans") or die(mysql_error());
    $result        = mysql_fetch_object($active_bans);

    $expired_bans    = mysql_query("SELECT COUNT(bhid) AS expired_bans FROM $config->ban_history") or die(mysql_error());
    $result2    = mysql_fetch_object($expired_bans);
    
    $total = $result->active_bans + $result2->expired_bans;
    
    $perm_bans    = mysql_query("SELECT COUNT(*) AS perm_bans FROM $config->bans WHERE ban_length='0'") or die(mysql_error());
    $result3    = mysql_fetch_object($perm_bans);
    
    $temp_bans    = mysql_query("SELECT COUNT(*) AS temp_bans FROM $config->bans WHERE ban_length!='0'") or die(mysql_error());
    $result4    = mysql_fetch_object($temp_bans);
    
    $adms    = mysql_query("SELECT COUNT(*) AS adms FROM $config->webadmins") or die(mysql_error());
    $result5    = mysql_fetch_object($adms);
    
    $admse    = mysql_query("SELECT COUNT(*) AS admse FROM $config->admins_servers") or die(mysql_error());
    $result7    = mysql_fetch_object($admse);
    
    $servers    = mysql_query("SELECT COUNT(*) AS servers FROM $config->servers") or die(mysql_error());
    $result6    = mysql_fetch_object($servers);
    
    echo "
    <table cellpadding='0' cellspacing='0' width='100%'><tr>
    <td width='80%'>Всего банов</td>
    <td width='20%'>".$total."</td>
    </tr><tr>
    <td width='80%'>Активных</td>
    <td width='20%'>".$result->active_bans."</td>
    </tr><tr>
    <td width='80%'>Истекших</td>
    <td width='20%'>".$result2->expired_bans."</td>
    </tr><tr>
    <td width='80%'>Банов на всегда</td>
    <td width='20%'>".$result3->perm_bans."</td>
    </tr><tr>
    <td width='80%'>Временных</td>
    <td width='20%'>".$result4->temp_bans."</td>
    </tr><tr>
    <td width='80%'>Админов на сайте</td>
    <td width='20%'>".$result5->adms."</td>
    </tr><tr>
    <td width='80%'>Админов на серверах</td>
    <td width='20%'>".$result7->admse."</td>
    </tr><tr>
    <td width='80%'>Серверов</td>
    <td width='20%'>".$result6->servers."</td>
    </tr></table>
";
?>





Установка:
1. Создаем новый файл например в папке bans/include с названием banLict_my.php
2. Вставляем скрипт который ниже, где вы хотите увидеть информацию (тоесть скрипт который вы хотите установить)

Код
{php}if (file_exists('include/banLict_my.php')) {include 'include/banLict_my.php';} else {include '../include/banLict_my.php';}{/php}


Обновление информации ежедневно.
не забывайте про: Спасибо.
bomj, fantom1922, Orty_Hart
22.9.2011, 18:13 Мониторинг для серверов CS 1.6
Автору не нравиться то, что некоторые пользователи оскорбили скрипт Karpen, и все данный - были удалены.

Тему - удалить.
Pich, Tr1sT, voloxastik, Vortex Club, гога_95
17.8.2011, 14:15 AmxBans 5.0 - Не показывает флаги стран игроков
Я вот установил AmxBans 5.0 и у меня была такая проблемка:

У меня не показывались флаги стран, возле ника игрока...

Что я сделал, поюзал Google, и понял что в AmxBans 5.1 показывает флаги...
Я узнал, что файл /bans/include/GeoIP.dat - отвечает за это.

Так решение такое: заменить файл GeoIP.dat от AmxBans 5.0 на GeoIP.dat от AmxBans 5.1

Рабочий файл:
[attachment=14739:GeoIP.rar]

Более новей версия GeoIP чем та, что выше.
[attachment=14743:GeoIP2.rar]

Последняя версия GeoIP (Август 2011)
[attachment=14744:GeoIP.dat.gz]

Установка:
Закиньте файл GeoIP.dat (который скачали) в папку /bans/include/
При замене файла, нажимаем Да.
basket, belone, Z[1].
16.6.2011, 13:11 Админ в чате зелёный [поправить]
Akushi,
ох, спасибо, я просто создал тестовый сервер, а на нем просто отключил плагин статистики :D

Вот плагин, кому надо, без багов и с рабочими командами.

тему офф.
MiXa, МУЖЫК
15.6.2011, 7:23 Поздравляем проект c-s.net.ua с 5-летием!
Поздравляю с таким не малым проектом! yy.gif
iLLuSioN, MaZzai, System Error
30.5.2011, 17:54 miscstats - баг
Вот я сделал, только не знаю, правильно ли сделал...

Вот оригинал плагина:

miscstats.sma
Код
#include <amxmodx>
#include <csx>
#include <cstrike>

public MultiKill
public MultiKillSound
public BombPlanting
public BombDefusing
public BombPlanted
public BombDefused
public BombFailed
public BombPickUp
public BombDrop
public BombCountVoice
public BombCountDef
public BombReached
public ItalyBonusKill
public EnemyRemaining
public LastMan
public KnifeKill
public KnifeKillSound
public GrenadeKill
public GrenadeSuicide
public HeadShotKill
public HeadShotKillSound
public RoundCounterSound
public RoundCounter
public KillingStreak
public KillingStreakSound
public DoubleKill
public DoubleKillSound
public PlayerName
public FirstBloodSound

new g_streakKills[33][2]
new g_multiKills[33][2]
new g_C4Timer
new g_Defusing
new g_Planter
new Float:g_LastOmg
new g_LastAnnounce
new g_roundCount
new Float:g_doubleKill
new g_doubleKillId
new g_friend[33]
new g_firstBlood
new g_center1_sync
new g_announce_sync
new g_status_sync
new g_left_sync
new g_bottom_sync
new g_he_sync

new g_MultiKillMsg[7][] =
{
    "Multi-Kill! %s^n%L %d %L (%d %L)",
    "Ultra-Kill!!! %s^n%L %d %L (%d %L)",
    "%s IS ON A KILLING SPREE!!!^n%L %d %L (%d %L)",
    "RAMPAGE!!! %s^n%L %d %L (%d hs)",
    "%s IS UNSTOPPABLE!!!^n%L %d %L (%d %L)",
    "%s IS A MONSTER!^n%L %d %L (%d %L)",
    "%s IS GODLIKE!!!!^n%L %d %L (%d %L)"
}

new g_Sounds[7][] =
{
    "multikill",
    "ultrakill",
    "killingspree",
    "rampage",
    "unstoppable",
    "monsterkill",
    "godlike"
}
new g_KillingMsg[7][] =
{
    "%s: Multi-Kill!",
    "%s: Ultra-Kill!!!",
    "%s IS ON A KILLING SPREE!!!",
    "%s: RAMPAGE!!!",
    "%s IS UNSTOPPABLE!!!",
    "%s IS A MONSTER!",
    "%s IS GODLIKE!!!"
}

new g_KinfeMsg[4][] =
{
    "KNIFE_MSG_1",
    "KNIFE_MSG_2",
    "KNIFE_MSG_3",
    "KNIFE_MSG_4"
}

new g_LastMessages[4][] =
{
    "LAST_MSG_1",
    "LAST_MSG_2",
    "LAST_MSG_3",
    "LAST_MSG_4"
}

new g_HeMessages[4][] =
{
    "HE_MSG_1",
    "HE_MSG_2",
    "HE_MSG_3",
    "HE_MSG_4"
}

new g_SHeMessages[4][] =
{
    "SHE_MSG_1",
    "SHE_MSG_2",
    "SHE_MSG_3",
    "SHE_MSG_4"
}

new g_HeadShots[7][] =
{
    "HS_MSG_1",
    "HS_MSG_2",
    "HS_MSG_3",
    "HS_MSG_4",
    "HS_MSG_5",
    "HS_MSG_6",
    "HS_MSG_7"
}

new g_teamsNames[4][] =
{
    "Террорист",
    "Контр Террорист",
    "Террориста",
    "Контр Террориста"
}

public plugin_init()
{
    register_plugin("CS Misc. Stats", AMXX_VERSION_STR, "AMXX Dev Team")
    register_dictionary("miscstats.txt")
    register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w")
    register_event("SendAudio", "eEndRound", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin", "2&%!MRAD_rounddraw")
    register_event("RoundTime", "eNewRound", "bc")
    register_event("StatusValue", "setTeam", "be", "1=1")
    register_event("StatusValue", "showStatus", "be", "1=2", "2!0")
    register_event("StatusValue", "hideStatus", "be", "1=1", "2=0")

    new mapname[32]
    get_mapname(mapname, 31)

    if (equali(mapname, "de_", 3) || equali(mapname, "csde_", 5))
    {
        register_event("StatusIcon", "eGotBomb", "be", "1=1", "1=2", "2=c4")
        register_event("TextMsg", "eBombPickUp", "bc", "2&#Got_bomb")
        register_event("TextMsg", "eBombDrop", "bc", "2&#Game_bomb_d")
    }
    else if (equali(mapname, "cs_italy"))
    {
        register_event("23", "chickenKill", "a", "1=108", /*"12=106", */ "15=4")
        register_event("23", "radioKill", "a", "1=108", /*"12=294", */ "15=2")
    }
    
    g_center1_sync = CreateHudSyncObj()
    g_announce_sync = CreateHudSyncObj()
    g_status_sync = CreateHudSyncObj()
    g_left_sync = CreateHudSyncObj()
    g_bottom_sync = CreateHudSyncObj()
    g_he_sync = CreateHudSyncObj()
}

public plugin_cfg()
{
    new g_addStast[] = "amx_statscfg add ^"%s^" %s"
    
    server_cmd(g_addStast, "ST_MULTI_KILL", "MultiKill")
    server_cmd(g_addStast, "ST_MULTI_KILL_SOUND", "MultiKillSound")
    server_cmd(g_addStast, "ST_BOMB_PLANTING", "BombPlanting")
    server_cmd(g_addStast, "ST_BOMB_DEFUSING", "BombDefusing")
    server_cmd(g_addStast, "ST_BOMB_PLANTED", "BombPlanted")
    server_cmd(g_addStast, "ST_BOMB_DEF_SUCC", "BombDefused")
    server_cmd(g_addStast, "ST_BOMB_DEF_FAIL", "BombFailed")
    server_cmd(g_addStast, "ST_BOMB_PICKUP", "BombPickUp")
    server_cmd(g_addStast, "ST_BOMB_DROP", "BombDrop")
    server_cmd(g_addStast, "ST_BOMB_CD_VOICE", "BombCountVoice")
    server_cmd(g_addStast, "ST_BOMB_CD_DEF", "BombCountDef")
    server_cmd(g_addStast, "ST_BOMB_SITE", "BombReached")
    server_cmd(g_addStast, "ST_ITALY_BONUS", "ItalyBonusKill")
    server_cmd(g_addStast, "ST_LAST_MAN", "LastMan")
    server_cmd(g_addStast, "ST_KNIFE_KILL", "KnifeKill")
    server_cmd(g_addStast, "ST_KNIFE_KILL_SOUND", "KnifeKillSound")
    server_cmd(g_addStast, "ST_HE_KILL", "GrenadeKill")
    server_cmd(g_addStast, "ST_HE_SUICIDE", "GrenadeSuicide")
    server_cmd(g_addStast, "ST_HS_KILL", "HeadShotKill")
    server_cmd(g_addStast, "ST_HS_KILL_SOUND", "HeadShotKillSound")
    server_cmd(g_addStast, "ST_ROUND_CNT", "RoundCounter")
    server_cmd(g_addStast, "ST_ROUND_CNT_SOUND", "RoundCounterSound")
    server_cmd(g_addStast, "ST_KILL_STR", "KillingStreak")
    server_cmd(g_addStast, "ST_KILL_STR_SOUND", "KillingStreakSound")
    server_cmd(g_addStast, "ST_ENEMY_REM", "EnemyRemaining")
    server_cmd(g_addStast, "ST_DOUBLE_KILL", "DoubleKill")
    server_cmd(g_addStast, "ST_DOUBLE_KILL_SOUND", "DoubleKillSound")
    server_cmd(g_addStast, "ST_PLAYER_NAME", "PlayerName")
    server_cmd(g_addStast, "ST_FIRST_BLOOD_SOUND", "FirstBloodSound")
}

public client_putinserver(id)
{
    g_multiKills[id] = {0, 0}
    g_streakKills[id] = {0, 0}
}

public client_death(killer, victim, wpnindex, hitplace, TK)
{
    if (wpnindex == CSW_C4)
        return

    new headshot = (hitplace == HIT_HEAD) ? 1 : 0
    new selfkill = (killer == victim) ? 1 : 0

    if (g_firstBlood)
    {
        g_firstBlood = 0
        if (FirstBloodSound)
            play_sound("misc/firstblood")
    }

    if ((KillingStreak || KillingStreakSound) && !TK)
    {
        g_streakKills[victim][1]++
        g_streakKills[victim][0] = 0

        if (!selfkill)
        {
            g_streakKills[killer][0]++
            g_streakKills[killer][1] = 0
            
            new a = g_streakKills[killer][0] - 3

            if ((a > -1) && !(a % 2))
            {
                new name[32]
                get_user_name(killer, name, 31)
                
                if ((a >>= 1) > 6)
                    a = 6
                
                if (KillingStreak)
                {
                    set_hudmessage(0, 100, 255, 0.05, 0.50, 2, 0.02, 6.0, 0.01, 0.1, -1)
                    ShowSyncHudMsg(0, g_left_sync, g_KillingMsg[a], name)
                }
                
                if (KillingStreakSound)
                {
                    new file[32]
                    
                    format(file, 31, "misc/%s", g_Sounds[a])
                    play_sound(file)
                }
            }
        }
    }

    if (MultiKill || MultiKillSound)
    {
        if (!selfkill && !TK && killer)
        {
            g_multiKills[killer][0]++
            g_multiKills[killer][1] += headshot
            
            new param[2]
            
            param[0] = killer
            param[1] = g_multiKills[killer][0]
            set_task(4.0 + float(param[1]), "checkKills", 0, param, 2)
        }
    }

    if (EnemyRemaining && is_user_connected(victim))
    {
        new ppl[32], pplnum = 0, maxplayers = get_maxplayers()
        new epplnum = 0
        new CsTeams:team = cs_get_user_team(victim)
        new CsTeams:other_team
        new CsTeams:enemy_team = (team == CS_TEAM_T) ? CS_TEAM_CT : CS_TEAM_T
        
        if (team == CS_TEAM_T || team == CS_TEAM_CT)
        {
            for (new i=1; i<=maxplayers; i++)
            {
                if (!is_user_connected(i))
                {
                    continue
                }
                if (i == victim)
                {
                    continue
                }
                other_team = cs_get_user_team(i)
                if (other_team == team && is_user_alive(i))
                {
                    epplnum++
                } else if (other_team == enemy_team) {
                    ppl[pplnum++] = i
                }
            }
            
            if (pplnum && epplnum)
            {
                new message[128], team_name[32]

                set_hudmessage(255, 255, 255, 0.02, 0.85, 2, 0.05, 0.1, 0.02, 3.0, -1)
                
                /* This is a pretty stupid thing to translate, but whatever */
                new _teamname[32]
                if (team == CS_TEAM_T)
                {
                    format(_teamname, 31, "TERRORIST%s", (epplnum == 1) ? "" : "S")
                } else if (team == CS_TEAM_CT) {
                    format(_teamname, 31, "CT%s", (epplnum == 1) ? "" : "S")
                }

                for (new a = 0; a < pplnum; ++a)
                {
                    format(team_name, 31, "%L", ppl[a], _teamname)
                    format(message, 127, "%L", ppl[a], "REMAINING", epplnum, team_name)
                    ShowSyncHudMsg(ppl[a], g_bottom_sync, "%s", message)
                }
            }
        }
    }

    if (LastMan)
    {
        new cts[32], ts[32], ctsnum, tsnum
        new maxplayers = get_maxplayers()
        new CsTeams:team
        
        for (new i=1; i<=maxplayers; i++)
        {
            if (!is_user_connected(i) || !is_user_alive(i))
            {
                continue
            }
            team = cs_get_user_team(i)
            if (team == CS_TEAM_T)
            {
                ts[tsnum++] = i
            } else if (team == CS_TEAM_CT) {
                cts[ctsnum++] = i
            }
        }
        
        if (ctsnum == 1 && tsnum == 1)
        {
            new ctname[32], tname[32]
            
            get_user_name(cts[0], ctname, 31)
            get_user_name(ts[0], tname, 31)
            
            set_hudmessage(0, 255, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1)
            ShowSyncHudMsg(0, g_center1_sync, "Остался %s против %s", ctname, tname)
            
            play_sound("misc/maytheforce")
        }
        else if (!g_LastAnnounce)
        {
            new oposite = 0, _team = 0
            
            if (ctsnum == 1 && tsnum > 1)
            {
                g_LastAnnounce = cts[0]
                oposite = tsnum
                _team = 0
            }
            else if (tsnum == 1 && ctsnum > 1)
            {
                g_LastAnnounce = ts[0]
                oposite = ctsnum
                _team = 1
            }

            if (g_LastAnnounce)
            {
                new name[32]
                
                get_user_name(g_LastAnnounce, name, 31)
                
                set_hudmessage(0, 255, 255, -1.0, 0.38, 0, 6.0, 6.0, 0.5, 0.15, -1)
                ShowSyncHudMsg(0, g_center1_sync, "Остался %s (%d HP) против %d-оx %s%s %L", name, get_user_health(g_LastAnnounce), oposite, g_teamsNames[_team], (oposite == 1) ? "" : "S", LANG_PLAYER, g_LastMessages[random_num(0, 3)])
                
                if (!is_user_connecting(g_LastAnnounce))
                {
                    client_cmd(g_LastAnnounce, "spk misc/oneandonly")
                }
            }
        }
    }

    if (wpnindex == CSW_KNIFE && (KnifeKill || KnifeKillSound))
    {
        if (KnifeKill)
        {
            new killer_name[32], victim_name[32]
            
            get_user_name(killer, killer_name, 31)
            get_user_name(victim, victim_name, 31)
            
            set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, -1)
            ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_KinfeMsg[random_num(0, 3)], killer_name, victim_name)
        }
        
        if (KnifeKillSound)
            play_sound("misc/humiliation")
    }

    if (wpnindex == CSW_HEGRENADE && (GrenadeKill || GrenadeSuicide))
    {
        new killer_name[32], victim_name[32]
        
        get_user_name(killer, killer_name, 31)
        get_user_name(victim, victim_name, 31)
        
        set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, -1)
        
        if (!selfkill)
        {
            if (GrenadeKill)
                ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_HeMessages[random_num(0, 3)], killer_name, victim_name)
        }
        else if (GrenadeSuicide)
            ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_SHeMessages[random_num(0, 3)], victim_name)
    }

    if (headshot && (HeadShotKill || HeadShotKillSound))
    {
        if (HeadShotKill && wpnindex)
        {
            new killer_name[32], victim_name[32], weapon_name[32], message[256], players[32], pnum
            
            xmod_get_wpnname(wpnindex, weapon_name, 31)
            get_user_name(killer, killer_name, 31)
            get_user_name(victim, victim_name, 31)
            get_players(players, pnum, "c")
            
            for (new i = 0; i < pnum; i++)
            {
                format(message, sizeof(message)-1, "%L", players[i], g_HeadShots[random_num(0, 6)])
                
                replace(message, sizeof(message)-1, "$vn", victim_name)
                replace(message, sizeof(message)-1, "$wn", weapon_name)
                replace(message, sizeof(message)-1, "$kn", killer_name)
                
                set_hudmessage(100, 100, 255, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
                ShowSyncHudMsg(players[i], g_announce_sync, "%s", message)
            }
        }
        
        if (HeadShotKillSound)
        {
            client_cmd(killer, "spk misc/headshot")
            client_cmd(victim, "spk misc/headshot")
        }
    }

    if ((DoubleKill || DoubleKillSound) && !selfkill)
    {
        new Float:nowtime = get_gametime()
        
        if (g_doubleKill == nowtime && g_doubleKillId == killer)
        {
            if (DoubleKill)
            {
                new name[32]
                
                get_user_name(killer, name, 31)
                
                set_hudmessage(255, 0, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1)
                ShowSyncHudMsg(0, g_center1_sync, "%L", LANG_PLAYER, "DOUBLE_KILL", name)
            }
            
            if (DoubleKillSound)
                play_sound("misc/doublekill")
        }
        
        g_doubleKill = nowtime
        g_doubleKillId = killer
    }
}

public hideStatus(id)
{
    if (PlayerName)
    {
        ClearSyncHud(id, g_status_sync)
    }
}

public setTeam(id)
    g_friend[id] = read_data(2)

public showStatus(id)
{
    if(!is_user_bot(id) && is_user_connected(id) && PlayerName)
    {
        new name[32], pid = read_data(2)
    
        get_user_name(pid, name, 31)
        new color1 = 0, color2 = 0
    
        if (get_user_team(pid) == 1)
            color1 = 255
        else
            color2 = 255
        
        if (g_friend[id] == 1)    // friend
        {
            new clip, ammo, wpnid = get_user_weapon(pid, clip, ammo)
            new wpnname[32]
        
            if (wpnid)
                xmod_get_wpnname(wpnid, wpnname, 31)
        
            set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1)
            ShowSyncHudMsg(id, g_status_sync, "%s -- %d HP / %d AP / %s", name, get_user_health(pid), get_user_armor(pid), wpnname)
        } else {
            set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1)
            ShowSyncHudMsg(id, g_status_sync, "%s", name)
        }
    }
}

public eNewRound()
{
    if (read_data(1) == floatround(get_cvar_float("mp_roundtime") * 60.0,floatround_floor))
    {
        g_firstBlood = 1
        g_C4Timer = 0
        ++g_roundCount
        
        if (RoundCounter)
        {
            set_hudmessage(200, 0, 0, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
            ShowSyncHudMsg(0, g_announce_sync, "%L", LANG_PLAYER, "PREPARE_FIGHT", g_roundCount)
        }
        
        if (RoundCounterSound)
            play_sound("misc/prepare")
        
        if (KillingStreak)
        {
            new appl[32], ppl, i
            get_players(appl, ppl, "ac")
            
            for (new a = 0; a < ppl; ++a)
            {
                i = appl[a]
                
                if (g_streakKills[i][0] >= 2)
                    client_print(i, print_chat, "* %L", i, "KILLED_ROW", g_streakKills[i][0])
                else if (g_streakKills[i][1] >= 2)
                    client_print(i, print_chat, "* %L", i, "DIED_ROUNDS", g_streakKills[i][1])
            }
        }
    }
}

public eRestart()
{
    eEndRound()
    g_roundCount = 0
    g_firstBlood = 1
}

public eEndRound()
{
    g_C4Timer = -2
    g_LastOmg = 0.0
    remove_task(8038)
    g_LastAnnounce = 0
}

public checkKills(param[])
{
    new id = param[0]
    new a = param[1]
    
    if (a == g_multiKills[id][0])
    {
        a -= 3
        
        if (a > -1)
        {
            if (a > 6)
            {
                a = 6
            }
            
            if (MultiKill)
            {
                new name[32]
                
                get_user_name(id, name, 31)
                set_hudmessage(255, 0, 100, 0.05, 0.50, 2, 0.02, 6.0, 0.01, 0.1, -1)
                
                ShowSyncHudMsg(0, g_left_sync, g_MultiKillMsg[a], name, LANG_PLAYER, "WITH", g_multiKills[id][0], LANG_PLAYER, "KILLS", g_multiKills[id][1], LANG_PLAYER, "HS")
            }
            
            if (MultiKillSound)
            {
                new sound[24]
                format(sound, 23, "misc/%s", g_Sounds[a])
                play_sound(sound)
            }
        }
        g_multiKills[id] = {0, 0}
    }
}

public chickenKill()
{
    if (ItalyBonusKill)
        announceEvent(0, "KILLED_CHICKEN")
}

public radioKill()
{
    if (ItalyBonusKill)
        announceEvent(0, "BLEW_RADIO")
}

announceEvent(id, message[])
{
    new name[32]
    
    get_user_name(id, name, 31)
    set_hudmessage(255, 100, 50, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
    ShowSyncHudMsg(0, g_announce_sync, "%L", LANG_PLAYER, message, name)
}

public eBombPickUp(id)
{
    if (BombPickUp)
        announceEvent(id, "PICKED_BOMB")
}

public eBombDrop()
{
    if (BombDrop)
        announceEvent(g_Planter, "DROPPED_BOMB")
}

public eGotBomb(id)
{
    g_Planter = id
    
    if (BombReached && read_data(1) == 2 && g_LastOmg < get_gametime())
    {
        g_LastOmg = get_gametime() + 15.0
        announceEvent(g_Planter, "REACHED_TARGET")
    }
}

public bombTimer()
{
    if (--g_C4Timer > 0)
    {
        if (BombCountVoice)
        {
            if (g_C4Timer == 30 || g_C4Timer == 20)
            {
                new temp[64]
                
                num_to_word(g_C4Timer, temp, 63)
                format(temp, 63, "^"vox/%s seconds until explosion^"", temp)
                play_sound(temp)
            }
            else if (g_C4Timer < 11)
            {
                new temp[64]
                
                num_to_word(g_C4Timer, temp, 63)
                format(temp, 63, "^"vox/%s^"", temp)
                play_sound(temp)
            }
        }
        if (BombCountDef && g_Defusing)
            client_print(g_Defusing, print_center, "%d", g_C4Timer)
    }
    else
        remove_task(8038)
}

public bomb_planted(planter)
{
    g_Defusing = 0
    
    if (BombPlanted)
        announceEvent(planter, "SET_UP_BOMB")
    
    g_C4Timer = get_cvar_num("mp_c4timer")
    set_task(1.0, "bombTimer", 8038, "", 0, "b")
}

public bomb_planting(planter)
{
    if (BombPlanting)
        announceEvent(planter, "PLANT_BOMB")
}

public bomb_defusing(defuser)
{
    if (BombDefusing)
        announceEvent(defuser, "DEFUSING_BOMB")
    
    g_Defusing = defuser
}

public bomb_defused(defuser)
{
    if (BombDefused)
        announceEvent(defuser, "DEFUSED_BOMB")
}

public bomb_explode(planter, defuser)
{
    if (BombFailed && defuser)
        announceEvent(defuser, "FAILED_DEFU")
}

public play_sound(sound[])
{
    new players[32], pnum
    get_players(players, pnum, "c")
    new i
    
    for (i = 0; i < pnum; i++)
    {
        if (is_user_connecting(players[i]))
            continue
        
        client_cmd(players[i], "spk %s", sound)
    }
}


Вот что я сделал:

miscstats.sma
Код
#include <amxmodx>
#include <csx>
#include <cstrike>

public MultiKill
public MultiKillSound
public BombPlanting
public BombDefusing
public BombPlanted
public BombDefused
public BombFailed
public BombPickUp
public BombDrop
public BombCountVoice
public BombCountDef
public BombReached
public ItalyBonusKill
public EnemyRemaining
public LastMan
public KnifeKill
public KnifeKillSound
public GrenadeKill
public GrenadeSuicide
public HeadShotKill
public HeadShotKillSound
public RoundCounterSound
public RoundCounter
public KillingStreak
public KillingStreakSound
public DoubleKill
public DoubleKillSound
public PlayerName
public FirstBloodSound

new g_streakKills[33][2]
new g_multiKills[33][2]
new g_C4Timer
new g_Defusing
new g_Planter
new Float:g_LastOmg
new g_LastAnnounce
new g_roundCount
new Float:g_doubleKill
new g_doubleKillId
new g_friend[33]
new g_firstBlood
new g_center1_sync
new g_announce_sync
new g_status_sync
new g_left_sync
new g_bottom_sync
new g_he_sync

new g_MultiKillMsg[7][] =
{
    "Multi-Kill! %s^n%L %d %L (%d %L)",
    "Ultra-Kill!!! %s^n%L %d %L (%d %L)",
    "%s IS ON A KILLING SPREE!!!^n%L %d %L (%d %L)",
    "RAMPAGE!!! %s^n%L %d %L (%d hs)",
    "%s IS UNSTOPPABLE!!!^n%L %d %L (%d %L)",
    "%s IS A MONSTER!^n%L %d %L (%d %L)",
    "%s IS GODLIKE!!!!^n%L %d %L (%d %L)"
}

new g_Sounds[7][] =
{
    "multikill",
    "ultrakill",
    "killingspree",
    "rampage",
    "unstoppable",
    "monsterkill",
    "godlike"
}
new g_KillingMsg[7][] =
{
    "%s: Multi-Kill!",
    "%s: Ultra-Kill!!!",
    "%s IS ON A KILLING SPREE!!!",
    "%s: RAMPAGE!!!",
    "%s IS UNSTOPPABLE!!!",
    "%s IS A MONSTER!",
    "%s IS GODLIKE!!!"
}

new g_KinfeMsg[4][] =
{
    "KNIFE_MSG_1",
    "KNIFE_MSG_2",
    "KNIFE_MSG_3",
    "KNIFE_MSG_4"
}

new g_LastMessages[4][] =
{
    "LAST_MSG_1",
    "LAST_MSG_2",
    "LAST_MSG_3",
    "LAST_MSG_4"
}

new g_HeMessages[4][] =
{
    "HE_MSG_1",
    "HE_MSG_2",
    "HE_MSG_3",
    "HE_MSG_4"
}

new g_SHeMessages[4][] =
{
    "SHE_MSG_1",
    "SHE_MSG_2",
    "SHE_MSG_3",
    "SHE_MSG_4"
}

new g_HeadShots[7][] =
{
    "HS_MSG_1",
    "HS_MSG_2",
    "HS_MSG_3",
    "HS_MSG_4",
    "HS_MSG_5",
    "HS_MSG_6",
    "HS_MSG_7"
}

new g_teamsNames[4][] =
{
    "Террорист",
    "Контр Террорист",
    "Террориста",
    "Контр Террориста"
}

public plugin_init()
{
    register_plugin("CS Misc. Stats", AMXX_VERSION_STR, "AMXX Dev Team")
    register_dictionary("miscstats.txt")
    register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w")
    register_event("SendAudio", "eEndRound", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin", "2&%!MRAD_rounddraw")
    register_event("RoundTime", "eNewRound", "bc")
    register_event("StatusValue", "setTeam", "be", "1=1")
    register_event("StatusValue", "showStatus", "be", "1=2", "2!0")
    register_event("StatusValue", "hideStatus", "be", "1=1", "2=0")

    new mapname[32]
    get_mapname(mapname, 31)

    if (equali(mapname, "de_", 3) || equali(mapname, "csde_", 5))
    {
        register_event("StatusIcon", "eGotBomb", "be", "1=1", "1=2", "2=c4")
        register_event("TextMsg", "eBombPickUp", "bc", "2&#Got_bomb")
        register_event("TextMsg", "eBombDrop", "bc", "2&#Game_bomb_d")
    }
    else if (equali(mapname, "cs_italy"))
    {
        register_event("23", "chickenKill", "a", "1=108", /*"12=106", */ "15=4")
        register_event("23", "radioKill", "a", "1=108", /*"12=294", */ "15=2")
    }
    
    g_center1_sync = CreateHudSyncObj()
    g_announce_sync = CreateHudSyncObj()
    g_status_sync = CreateHudSyncObj()
    g_left_sync = CreateHudSyncObj()
    g_bottom_sync = CreateHudSyncObj()
    g_he_sync = CreateHudSyncObj()
}

public plugin_cfg()
{
    new g_addStast[] = "amx_statscfg add ^"%s^" %s"
    
    server_cmd(g_addStast, "ST_MULTI_KILL", "MultiKill")
    server_cmd(g_addStast, "ST_MULTI_KILL_SOUND", "MultiKillSound")
    server_cmd(g_addStast, "ST_BOMB_PLANTING", "BombPlanting")
    server_cmd(g_addStast, "ST_BOMB_DEFUSING", "BombDefusing")
    server_cmd(g_addStast, "ST_BOMB_PLANTED", "BombPlanted")
    server_cmd(g_addStast, "ST_BOMB_DEF_SUCC", "BombDefused")
    server_cmd(g_addStast, "ST_BOMB_DEF_FAIL", "BombFailed")
    server_cmd(g_addStast, "ST_BOMB_PICKUP", "BombPickUp")
    server_cmd(g_addStast, "ST_BOMB_DROP", "BombDrop")
    server_cmd(g_addStast, "ST_BOMB_CD_VOICE", "BombCountVoice")
    server_cmd(g_addStast, "ST_BOMB_CD_DEF", "BombCountDef")
    server_cmd(g_addStast, "ST_BOMB_SITE", "BombReached")
    server_cmd(g_addStast, "ST_ITALY_BONUS", "ItalyBonusKill")
    server_cmd(g_addStast, "ST_LAST_MAN", "LastMan")
    server_cmd(g_addStast, "ST_KNIFE_KILL", "KnifeKill")
    server_cmd(g_addStast, "ST_KNIFE_KILL_SOUND", "KnifeKillSound")
    server_cmd(g_addStast, "ST_HE_KILL", "GrenadeKill")
    server_cmd(g_addStast, "ST_HE_SUICIDE", "GrenadeSuicide")
    server_cmd(g_addStast, "ST_HS_KILL", "HeadShotKill")
    server_cmd(g_addStast, "ST_HS_KILL_SOUND", "HeadShotKillSound")
    server_cmd(g_addStast, "ST_ROUND_CNT", "RoundCounter")
    server_cmd(g_addStast, "ST_ROUND_CNT_SOUND", "RoundCounterSound")
    server_cmd(g_addStast, "ST_KILL_STR", "KillingStreak")
    server_cmd(g_addStast, "ST_KILL_STR_SOUND", "KillingStreakSound")
    server_cmd(g_addStast, "ST_ENEMY_REM", "EnemyRemaining")
    server_cmd(g_addStast, "ST_DOUBLE_KILL", "DoubleKill")
    server_cmd(g_addStast, "ST_DOUBLE_KILL_SOUND", "DoubleKillSound")
    server_cmd(g_addStast, "ST_PLAYER_NAME", "PlayerName")
    server_cmd(g_addStast, "ST_FIRST_BLOOD_SOUND", "FirstBloodSound")
}

public client_putinserver(id)
{
    g_multiKills[id] = {0, 0}
    g_streakKills[id] = {0, 0}
}

public client_death(killer, victim, wpnindex, hitplace, TK)
{
    if (wpnindex == CSW_C4)
        return

    new headshot = (hitplace == HIT_HEAD) ? 1 : 0
    new selfkill = (killer == victim) ? 1 : 0

    if (g_firstBlood)
    {
        g_firstBlood = 0
        if (FirstBloodSound)
            play_sound("misc/firstblood")
    }

    if ((KillingStreak || KillingStreakSound) && !TK)
    {
        g_streakKills[victim][1]++
        g_streakKills[victim][0] = 0

        if (!selfkill)
        {
            g_streakKills[killer][0]++
            g_streakKills[killer][1] = 0
            
            new a = g_streakKills[killer][0] - 3

            if ((a > -1) && !(a % 2))
            {
                new name[32]
                get_user_name(killer, name, 31)
                
                if ((a >>= 1) > 6)
                    a = 6
                
                if (KillingStreak)
                {
                    set_hudmessage(0, 100, 255, 0.05, 0.50, 2, 0.02, 6.0, 0.01, 0.1, -1)
                    ShowSyncHudMsg(0, g_left_sync, g_KillingMsg[a], name)
                }
                
                if (KillingStreakSound)
                {
                    new file[32]
                    
                    format(file, 31, "misc/%s", g_Sounds[a])
                    play_sound(file)
                }
            }
        }
    }

    if (MultiKill || MultiKillSound)
    {
        if (!selfkill && !TK && killer)
        {
            g_multiKills[killer][0]++
            g_multiKills[killer][1] += headshot
            
            new param[2]
            
            param[0] = killer
            param[1] = g_multiKills[killer][0]
            set_task(4.0 + float(param[1]), "checkKills", 0, param, 2)
        }
    }

    if (EnemyRemaining && is_user_connected(victim))
    {
        new ppl[32], pplnum = 0, maxplayers = get_maxplayers()
        new epplnum = 0
        new CsTeams:team = cs_get_user_team(victim)
        new CsTeams:other_team
        new CsTeams:enemy_team = (team == CS_TEAM_T) ? CS_TEAM_CT : CS_TEAM_T
        
        if (team == CS_TEAM_T || team == CS_TEAM_CT)
        {
            for (new i=1; i<=maxplayers; i++)
            {
                if (!is_user_connected(i))
                {
                    continue
                }
                if (i == victim)
                {
                    continue
                }
                other_team = cs_get_user_team(i)
                if (other_team == team && is_user_alive(i))
                {
                    epplnum++
                } else if (other_team == enemy_team) {
                    ppl[pplnum++] = i
                }
            }
            
            if (pplnum && epplnum)
            {
                new message[128], team_name[32]

                set_hudmessage(255, 255, 255, 0.02, 0.85, 2, 0.05, 0.1, 0.02, 3.0, -1)
                
                /* This is a pretty stupid thing to translate, but whatever */
                new _teamname[32]
                if (team == CS_TEAM_T)
                {
                    format(_teamname, 31, "TERRORIST%s", (epplnum == 1) ? "" : "S")
                } else if (team == CS_TEAM_CT) {
                    format(_teamname, 31, "CT%s", (epplnum == 1) ? "" : "S")
                }

                for (new a = 0; a < pplnum; ++a)
                {
                    format(team_name, 31, "%L", ppl[a], _teamname)
                    format(message, 127, "%L", ppl[a], "REMAINING", epplnum, team_name)
                    ShowSyncHudMsg(ppl[a], g_bottom_sync, "%s", message)
                }
            }
        }
    }

    if (LastMan)
    {
        new cts[32], ts[32], ctsnum, tsnum
        new maxplayers = get_maxplayers()
        new CsTeams:team
        
        for (new i=1; i<=maxplayers; i++)
        {
            if (!is_user_connected(i) || !is_user_alive(i))
            {
                continue
            }
            team = cs_get_user_team(i)
            if (team == CS_TEAM_T)
            {
                ts[tsnum++] = i
            } else if (team == CS_TEAM_CT) {
                cts[ctsnum++] = i
            }
        }
        
        if (ctsnum == 1 && tsnum == 1)
        {
            new ctname[32], tname[32]
            
            get_user_name(cts[0], ctname, 31)
            get_user_name(ts[0], tname, 31)
            
            set_hudmessage(0, 255, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1)
            ShowSyncHudMsg(0, g_center1_sync, "Остался %s против %s", ctname, tname)
            
            play_sound("misc/maytheforce")
        }
        else if (!g_LastAnnounce)
        {
            new oposite = 0, _team = 0
            
            if (ctsnum == 1 && tsnum > 1)
            {
                g_LastAnnounce = cts[0]
                oposite = tsnum
                _team = 0
            }
            else if (tsnum == 1 && ctsnum > 1)
            {
                g_LastAnnounce = ts[0]
                oposite = ctsnum
                _team = 1
            }

            if (g_LastAnnounce)
            {
                new name[32]
                
                get_user_name(g_LastAnnounce, name, 31)
                
                set_hudmessage(0, 255, 255, -1.0, 0.38, 0, 6.0, 6.0, 0.5, 0.15, -1)
                ShowSyncHudMsg(0, g_center1_sync, "Остался %s (%d HP) против %d-оx %s%s %L", name, get_user_health(g_LastAnnounce), oposite, g_teamsNames[_team], (oposite == 1) ? "" : "S", LANG_PLAYER, g_LastMessages[random_num(0, 3)])
                
                if (!is_user_connecting(g_LastAnnounce))
                {
                    client_cmd(g_LastAnnounce, "spk misc/oneandonly")
                }
            }
        }
    }

    if (wpnindex == CSW_KNIFE && (KnifeKill || KnifeKillSound))
    {
        if (KnifeKill)
        {
            new killer_name[32], victim_name[32]
            
            get_user_name(killer, killer_name, 31)
            get_user_name(victim, victim_name, 31)
            
            set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, -1)
            ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_KinfeMsg[random_num(0, 3)], killer_name, victim_name)
        }
        
        if (KnifeKillSound)
            play_sound("misc/humiliation")
    }

    if (wpnindex == CSW_HEGRENADE && (GrenadeKill || GrenadeSuicide))
    {
        new killer_name[32], victim_name[32]
        
        get_user_name(killer, killer_name, 31)
        get_user_name(victim, victim_name, 31)
        
        set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, -1)
        
        if (!selfkill)
        {
            if (GrenadeKill)
                ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_HeMessages[random_num(0, 3)], killer_name, victim_name)
        }
        else if (GrenadeSuicide)
            ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_SHeMessages[random_num(0, 3)], victim_name)
    }

    if (headshot && (HeadShotKill || HeadShotKillSound))
    {
        if (HeadShotKill && wpnindex)
        {
            new killer_name[32], victim_name[32], weapon_name[32], message[256], players[32], pnum
            
            xmod_get_wpnname(wpnindex, weapon_name, 31)
            get_user_name(killer, killer_name, 31)
            get_user_name(victim, victim_name, 31)
            get_players(players, pnum, "c")
            
            for (new i = 0; i < pnum; i++)
            {
                format(message, sizeof(message)-1, "%L", players[i], g_HeadShots[random_num(0, 6)])
                
                replace(message, sizeof(message)-1, "$vn", victim_name)
                replace(message, sizeof(message)-1, "$wn", weapon_name)
                replace(message, sizeof(message)-1, "$kn", killer_name)
                
                set_hudmessage(100, 100, 255, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
                ShowSyncHudMsg(players[i], g_announce_sync, "%s", message)
            }
        }
        
        if (HeadShotKillSound)
        {
            client_cmd(killer, "spk misc/headshot")
            client_cmd(victim, "spk misc/headshot")
        }
    }

    if ((DoubleKill || DoubleKillSound) && !selfkill)
    {
        new Float:nowtime = get_gametime()
        
        if (g_doubleKill == nowtime && g_doubleKillId == killer)
        {
            if (DoubleKill)
            {
                new name[32]
                
                get_user_name(killer, name, 31)
                
                set_hudmessage(255, 0, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1)
                ShowSyncHudMsg(0, g_center1_sync, "%L", LANG_PLAYER, "DOUBLE_KILL", name)
            }
            
            if (DoubleKillSound)
                play_sound("misc/doublekill")
        }
        
        g_doubleKill = nowtime
        g_doubleKillId = killer
    }
}

public hideStatus(id)
{
    if (PlayerName)
    {
        ClearSyncHud(id, g_status_sync)
    }
}

public setTeam(id)
    g_friend[id] = read_data(2)

public showStatus(id)
{
    if(!is_user_bot(id) && is_user_connected(id) && PlayerName)
    {
        new name[32], pid = read_data(2)
    
        get_user_name(pid, name, 31)
        new color1 = 0, color2 = 0
    
        if (get_user_team(pid) == 1)
            color1 = 255
        else
            color2 = 255
        
        if (g_friend[id] == 1)    // friend
        {
            new clip, ammo, wpnid = get_user_weapon(pid, clip, ammo)
            new wpnname[32]
        
            if (wpnid)
                xmod_get_wpnname(wpnid, wpnname, 31)
        
            set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1)
            ShowSyncHudMsg(id, g_status_sync, "%s -- %d HP / %d AP / %s", name, get_user_health(pid), get_user_armor(pid), wpnname)
        } else {
            set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1)
            ShowSyncHudMsg(id, g_status_sync, "%s", name)
        }
    }
}

public eNewRound()
{
    if (read_data(1) == floatround(get_cvar_float("mp_roundtime") * 60.0,floatround_floor))
    {
        g_firstBlood = 1
        g_C4Timer = 0
        ++g_roundCount
        
        if (RoundCounter)
        {
            set_hudmessage(200, 0, 0, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
            ShowSyncHudMsg(0, g_announce_sync, "%L", LANG_PLAYER, "PREPARE_FIGHT", g_roundCount)
        }
        
        if (RoundCounterSound)
            play_sound("misc/prepare")
        
        if (KillingStreak)
        {
            new appl[32], ppl, i
            get_players(appl, ppl, "ac")
            
            for (new a = 0; a < ppl; ++a)
            {
                i = appl[a]
                
                if (g_streakKills[i][0] >= 2)
                    client_print(i, print_chat, "* %L", i, "KILLED_ROW", g_streakKills[i][0])
                else if (g_streakKills[i][1] >= 2)
                    client_print(i, print_chat, "* %L", i, "DIED_ROUNDS", g_streakKills[i][1])
            }
        }
    }
}

public eRestart()
{
    eEndRound()
    g_roundCount = 0
    g_firstBlood = 1
}

public eEndRound()
{
    g_C4Timer = -2
    g_LastOmg = 0.0
    remove_task(8038)
    g_LastAnnounce = 0
}

public checkKills(param[])
{
    new id = param[0]
    new a = param[1]
    
    if (a == g_multiKills[id][0])
    {
        a -= 3
        
        if (a > -1)
        {
            if (a > 6)
            {
                a = 6
            }
            
            if (MultiKill)
            {
                new name[32]
                
                get_user_name(id, name, 31)
                set_hudmessage(255, 0, 100, 0.05, 0.50, 2, 0.02, 6.0, 0.01, 0.1, -1)
                
                ShowSyncHudMsg(0, g_left_sync, g_MultiKillMsg[a], name, LANG_PLAYER, "WITH", g_multiKills[id][0], LANG_PLAYER, "KILLS", g_multiKills[id][1], LANG_PLAYER, "HS")
            }
            
            if (MultiKillSound)
            {
                new sound[24]
                format(sound, 23, "misc/%s", g_Sounds[a])
                play_sound(sound)
            }
        }
        g_multiKills[id] = {0, 0}
    }
}

public chickenKill()
{
    if (ItalyBonusKill)
        announceEvent(0, "KILLED_CHICKEN")
}

public radioKill()
{
    if (ItalyBonusKill)
        announceEvent(0, "BLEW_RADIO")
}

announceEvent(id, message[])
{
    new name[32]
    
    get_user_name(id, name, 31)
    set_hudmessage(255, 100, 50, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
    ShowSyncHudMsg(0, g_announce_sync, "%L", LANG_PLAYER, message, name)
}

public eBombPickUp(id)
{
    if (BombPickUp)
        announceEvent(id, "PICKED_BOMB")
}

public eBombDrop()
{
    if (BombDrop)
        announceEvent(g_Planter, "DROPPED_BOMB")
}

public eGotBomb(id)
{
    g_Planter = id
    
    if (BombReached && read_data(1) == 2 && g_LastOmg < get_gametime())
    {
        g_LastOmg = get_gametime() + 15.0
        announceEvent(g_Planter, "REACHED_TARGET")
    }
}

public bombTimer()
{
    if (--g_C4Timer > 0)
    {
        if (BombCountVoice)
        {
            if (g_C4Timer == 30 || g_C4Timer == 20)
            {
                new temp[64]
                
                num_to_word(g_C4Timer, temp, 63)
                format(temp, 63, "^"vox/%s seconds until explosion^"", temp)
                play_sound(temp)
            }
            else if (g_C4Timer < 11)
            {
                new temp[64]
                
                num_to_word(g_C4Timer, temp, 63)
                format(temp, 63, "^"vox/%s^"", temp)
                play_sound(temp)
            }
        }
        if (BombCountDef && g_Defusing)
            client_print(g_Defusing, print_center, "%d", g_C4Timer)
    }
    else
        remove_task(8038)
}

public bomb_planted(planter)
{
    g_Defusing = 0
    
    if (BombPlanted)
        announceEvent(planter, "SET_UP_BOMB")
    
    g_C4Timer = get_cvar_num("mp_c4timer")
    set_task(1.0, "bombTimer", 8038, "", 0, "b")
}

public bomb_planting(planter)
{
    if (BombPlanting)
        announceEvent(planter, "PLANT_BOMB")
}

public bomb_defusing(defuser)
{
    if (BombDefusing)
        announceEvent(defuser, "DEFUSING_BOMB")
    
    g_Defusing = defuser
}

public bomb_defused(defuser)
{
    if (BombDefused)
        announceEvent(defuser, "DEFUSED_BOMB")
}

public bomb_explode(planter, defuser)
{
    if (BombFailed && defuser)
        announceEvent(defuser, "FAILED_DEFU")
}

public play_sound(sound[])
{
    new players[32], pnum
    get_players(players, pnum, "c")
    new i
    
    for (i = 0; i < pnum; i++)
    {
        if (is_user_connecting(players[i]))
            continue
        
        client_cmd(players[i], "spk %s", sound)
    }
}


Что я добавил в самом низу:

Что я добавил
Код
public plugin_precache() {
  precache_sound ("/sound/misc/godlike.wav")
  precache_sound ("/sound/misc/headshot.wav")
  precache_sound ("/sound/misc/holyshit.wav")
  precache_sound ("/sound/misc/humiliation.wav")
  precache_sound ("/sound/misc/killingspree.wav")
  precache_sound ("/sound/misc/maytheforce.wav")
  precache_sound ("/sound/misc/monsterkill.wav")
  precache_sound ("/sound/misc/multikill.wav")

  return PLUGIN_CONTINUE
}
TheArtemMaps
6.5.2011, 11:13 Loadingsound and Roundsound by Karpen 06.05.11
Вот моя нарезка трэков для сайта c-s.net.ua by Karpen

В архиве: Loadingsound
1). плагин для Loadingsound
2). 28 трэков :biggrin:
3). размер: 5.45мб.

Жанры:
1. Drum And Bass

Loadingsound_1.mp3 [размер: 213кб. длительность: 13сек.]
Loadingsound_2.mp3 [размер: 227кб. длительность: 14сек.]
Loadingsound_3.mp3 [размер: 231кб. длительность: 14сек.]
Loadingsound_4.mp3 [размер: 287кб. длительность: 11сек.]

2. Electro

Loadingsound_1.mp3 [размер: 219кб. длительность: 14сек.]
Loadingsound_2.mp3 [размер: 163кб. длительность: 10сек.]
Loadingsound_3.mp3 [размер: 211кб. длительность: 13сек.]
Loadingsound_4.mp3 [размер: 170кб. длительность: 10сек.]
Loadingsound_5.mp3 [размер: 202кб. длительность: 12сек.]
Loadingsound_6.mp3 [размер: 184кб. длительность: 11сек.]

3. Minimal

Loadingsound_1.mp3 [размер: 219кб. длительность: 13сек.]
Loadingsound_2.mp3 [размер: 195кб. длительность: 12сек.]
Loadingsound_3.mp3 [размер: 212кб. длительность: 13сек.]
Loadingsound_4.mp3 [размер: 229кб. длительность: 14сек.]

4. Rock

Loadingsound_1.mp3 [размер: 227кб. длительность: 14сек.]
Loadingsound_2.mp3 [размер: 165кб. длительность: 10сек.]
Loadingsound_3.mp3 [размер: 203кб. длительность: 13сек.]
Loadingsound_4.mp3 [размер: 180кб. длительность: 11сек.]
Loadingsound_5.mp3 [размер: 264кб. длительность: 16сек.]
Loadingsound_6.mp3 [размер: 168кб. длительность: 10сек.]
Loadingsound_7.mp3 [размер: 255кб. длительность: 16сек.]
Loadingsound_8.mp3 [размер: 198кб. длительность: 12сек.]

5. Trans

Loadingsound_1.mp3 [размер: 193кб. длительность: 12сек.]
Loadingsound_2.mp3 [размер: 209кб. длительность: 13сек.]
Loadingsound_3.mp3 [размер: 186кб. длительность: 11сек.]
Loadingsound_4.mp3 [размер: 267кб. длительность: 17сек.]

6. and all

Loadingsound_1.mp3 [размер: 248кб. длительность: 15сек.]

Настройки плагина loadingsound.sma

#include <amxmodx>
#define Maxsounds 4 //количество песен

new soundlist[Maxsounds][] = {"Loadingsound_1","Loadingsound_2","Loadingsound_3","Loadingsound_4"} //название песен

public client_connect(id) {
new i
i = random_num(0,Maxsounds-1)
client_cmd(id,"mp3 play sound/loading/%s",soundlist[i])
return PLUGIN_CONTINUE
}

public plugin_init() {
register_plugin("Loading Sound","1.0","Sutar")
return PLUGIN_CONTINUE
}

public plugin_precache() {
precache_sound ("loading/rLoadingsound_1.mp3") //путь к песне в папке
precache_sound ("loading/Loadingsound_2.mp3") //путь к песне в папке
precache_sound ("loading/Loadingsound_3.mp3") //путь к песне в папке
precache_sound ("loading/Loadingsound_4.mp3") //путь к песне в папке

return PLUGIN_CONTINUE
}


В архиве: Roundsound
1). плагин для Roundsound
2). 28 трэков :biggrin:
3). размер 7.63мб.

Жанры:
1. Drum And Bass

Loadingsound_1.mp3 [размер: 516кб. длительность: 11сек.]
Loadingsound_2.mp3 [размер: 636кб. длительность: 14сек.]
Loadingsound_3.mp3 [размер: 586кб. длительность: 13сек.]
Loadingsound_4.mp3 [размер: 626кб. длительность: 14сек.]

2. Electro

Loadingsound_1.mp3 [размер: 604кб. длительность: 14сек.]
Loadingsound_2.mp3 [размер: 448кб. длительность: 10сек.]
Loadingsound_3.mp3 [размер: 580кб. длительность: 13сек.]
Loadingsound_4.mp3 [размер: 468кб. длительность: 10сек.]
Loadingsound_5.mp3 [размер: 556кб. длительность: 12сек.]
Loadingsound_6.mp3 [размер: 506кб. длительность: 11сек.]

3. Minimal

Loadingsound_1.mp3 [размер: 586кб. длительность: 13сек.]
Loadingsound_2.mp3 [размер: 603кб. длительность: 14сек.]
Loadingsound_3.mp3 [размер: 538кб. длительность: 12сек.]
Loadingsound_4.mp3 [размер: 602кб. длительность: 13сек.]

4. Rock

Loadingsound_1.mp3 [размер: 728кб. длительность: 16сек.]
Loadingsound_2.mp3 [размер: 546кб. длительность: 12сек.]
Loadingsound_3.mp3 [размер: 463кб. длительность: 10сек.]
Loadingsound_4.mp3 [размер: 702кб. длительность: 16сек.]
Loadingsound_5.mp3 [размер: 626кб. длительность: 14сек.]
Loadingsound_6.mp3 [размер: 454кб. длительность: 10сек.]
Loadingsound_7.mp3 [размер: 560кб. длительность: 13сек.]
Loadingsound_8.mp3 [размер: 494кб. длительность: 11сек.]

5. Trans

Loadingsound_1.mp3 [размер: 530кб. длительность: 12сек.]
Loadingsound_2.mp3 [размер: 576кб. длительность: 13сек.]
Loadingsound_3.mp3 [размер: 514кб. длительность: 11сек.]
Loadingsound_4.mp3 [размер: 736кб. длительность: 17сек.]

6. and all

Loadingsound_1.mp3 [размер: 682кб. длительность: 15сек.]

Настройки плагина roundsound.sma

#include <amxmodx>

public plugin_init()
{
register_plugin("RoundSound","1.5","Sutar")
register_event("SendAudio", "t_win", "a", "2&%!MRAD_terwin")
register_event("SendAudio", "ct_win", "a", "2&%!MRAD_ctwin")
}

public t_win()
{
new rand = random_num(1,3) //количество песен контеров win

client_cmd(0,"stopsound")

switch(rand)
{
case 1: client_cmd(0,"spk roundsound/roundsound_ctwin_1") //песни в папке roundsound контеров win
case 2: client_cmd(0,"spk roundsound/roundsound_ctwin_2") //песни в папке roundsound контеров win
case 3: client_cmd(0,"spk roundsound/roundsound_ctwin_3") //песни в папке roundsound контеров win
}

return PLUGIN_HANDLED
}

public ct_win()
{
new rand = random_num(1,3) //количество песен тероров win

client_cmd(0,"stopsound")

switch(rand)
{
case 1: client_cmd(0,"spk roundsound/roundsound_twin_1") //песни в папке roundsound тороров win
case 2: client_cmd(0,"spk roundsound/roundsound_twin_2") //песни в папке roundsound тороров win
case 3: client_cmd(0,"spk roundsound/roundsound_twin_3") //песни в папке roundsound тороров win
}

return PLUGIN_HANDLED
}

public plugin_precache()
{
precache_sound("roundsound/roundsound_twin_1.wav") //список всех треков
precache_sound("roundsound/roundsound_twin_2.wav") //список всех треков
precache_sound("roundsound/roundsound_twin_3.wav") //список всех треков
precache_sound("roundsound/roundsound_сtwin_1.wav") //список всех треков
precache_sound("roundsound/roundsound_сtwin_2.wav") //список всех треков
precache_sound("roundsound/roundsound_сtwin_3.wav") //список всех треков

return PLUGIN_CONTINUE
}


Как сделать быструю скачку звуков с сервера

1. Заливаем звуки в корень папки
Пример:
Звук на сервере лежит так: loadingsound/loadingsound_1.mp3
Значить в сайте, заливаю звук в такомже порядке... http://site.com/download/loadingsound/loadingsound_1.mp3
2. прописываем в \cstrike\server.cfg

Код
sv_allowdownload 0            // возможность скачивания с сервера недостающих файлов
sv_allowupload 1                // разрешить закачку файлов (например decals, спрей-логи, карты) на сервер
sv_downloadurl "http://site.com/download"    // путь к папке с файлами


3. Всё, готово!

Не понятно? смотри ТУТ!


Не забываем про кнопку Спасибо! crazy.gif
cs125, Fox-CaH9, MaximumEnergy, nividimka, vertu.nk, Yes I Do Not, z.i.k.o