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

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

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

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

Death Stats

, say /me
Статус пользователя user.gameover.user
сообщение 8.11.2014, 3:33
Сообщение #1
Стаж: 15 лет

Сообщений: 1470
Благодарностей: 426
Полезность: 700

Отдельный плагин для работы всем известных команд в чат /me /hp

death_stats.sma
Код
#include <amxmodx>
#include <WPMGPrintChatColor>

#define CHAT_PREFIX "STAT"
#define is_player(%0) (32 >= %0 >= 1)

new const g_szHIT_NAMES[][] =
{
    "Тело",
    "Голова",
    "Грудь",
    "Живот",
    "Л. рука",
    "П. рука",
    "Л. нога",
    "П. нога"    
}

enum _:DATA
{
    DMGCOUNT,
    DMGVALUE,
    
    ATT_ID,
    ATT_NAME[32],
    ATT_HP,
    ATT_AR,
    ATT_WPN[32],
    ATT_DIST
}

new g_eDMG[33][DATA];
new g_iHITS[33][8];

public plugin_init()
{
    register_plugin("STATS", "1", "brown_dev");
    
    register_event("Damage", "EVENT_Damage", "b", "2!0", "4!0"); // was before 3=0 bullet dmg only
    register_event("HLTV", "event_HLTV", "a", "1=0", "2=0");
    
    register_clcmd("say /me", "ShowME");
    register_clcmd("say /hp", "ShowHP");
    register_clcmd("say_team /me", "ShowME");
    register_clcmd("say_team /hp", "ShowHP");
}

public EVENT_Damage(id)
{
    static at, wpn, body;
    at = get_user_attacker(id, wpn, body)
    
    if( !is_player(at) || !is_user_connected(at) ) return;
    
    
    g_eDMG[at][DMGCOUNT] ++;
    g_eDMG[at][DMGVALUE] += read_data(2);
    
    g_iHITS[at][body] ++;
    
    //instead DeathMsg Event
    if( is_user_connected(id) && !is_user_alive(id) )
    {
        static vOr[3], aOr[3];
        
        get_user_origin(id, vOr);
        get_user_origin(at, aOr);
        
        get_user_name(at, g_eDMG[id][ATT_NAME], 31);
        
        get_weaponname(wpn, g_eDMG[id][ATT_WPN], 31);
        replace(g_eDMG[id][ATT_WPN], 31, "weapon_", "");
        ucfirst(g_eDMG[id][ATT_WPN]);
        
        g_eDMG[id][ATT_ID] = at;
        g_eDMG[id][ATT_HP] = get_user_health(at);
        g_eDMG[id][ATT_AR] = get_user_armor(at);
        g_eDMG[id][ATT_DIST] = get_distance(vOr, aOr);    //can do it with engine, but why?
    }
}

public event_HLTV()
{
    for ( new i = 1; i < 33; i ++ )
    {
        g_eDMG[i][DMGCOUNT] =    g_eDMG[i][DMGVALUE] =    
        g_eDMG[i][ATT_HP] =    g_eDMG[i][ATT_DIST] =        g_eDMG[i][ATT_ID] =
        g_eDMG[i][ATT_AR] =    g_eDMG[i][ATT_NAME][0] =    g_eDMG[i][ATT_WPN][0] = 0;
        
        g_iHITS[i][1] =     g_iHITS[i][2] =        
        g_iHITS[i][3] =        g_iHITS[i][4] =
        g_iHITS[i][5] =        g_iHITS[i][6] = g_iHITS[i][7] = 0;
    }
}

public ShowME(id)
{
    if( is_user_alive(id) )
    {
        PrintChatColor(id, _, "^4[%s]^1 Доступно только для мертвых.", CHAT_PREFIX);
        return;
    }
    
    if( !g_eDMG[id][DMGCOUNT] )
    {
        PrintChatColor(id, _, "^4[%s]^1^1 Данные обнулены.", CHAT_PREFIX);
        return;
    }
    
    new szBuffer[128];
    get_hits(id, szBuffer, 127)
    
    PrintChatColor(id, _, "^4[%s]^1 Результат: ^3%d ^1попаданий, ^3%d ^1урона.", CHAT_PREFIX, g_eDMG[id][DMGCOUNT], g_eDMG[id][DMGVALUE]);
    PrintChatColor(id, _, "^4[%s]^1 Части тела: %s", CHAT_PREFIX, szBuffer);
}

public ShowHP(id)
{
    if( !g_eDMG[id][ATT_ID] )
    {
        PrintChatColor(id, _, "^4[%s]^1 Данные обнулены.", CHAT_PREFIX);
        return;
    }
    
    new szBuffer[128];
    get_hits(g_eDMG[id][ATT_ID], szBuffer, 127);
    
    PrintChatColor(id, _, "^4[%s]^1 Убийца: ^3%s ^1Оружие: ^3%s ^1Расст: ^3%d ^1(^3%d ^1HP | ^3%d ^1AR)", CHAT_PREFIX, g_eDMG[id][ATT_NAME], g_eDMG[id][ATT_WPN], g_eDMG[id][ATT_DIST], g_eDMG[id][ATT_HP], g_eDMG[id][ATT_AR]);
    PrintChatColor(id, _, "^4[%s]^1 Части тела: %s", CHAT_PREFIX, szBuffer)
}

get_hits(id, buffer[], len)
{
    for ( new hit = 1; hit < 8; hit ++ )
    {
        if(g_iHITS[id][hit])
        {
            format(buffer, len, "%s ^1%s ^3%d", buffer, g_szHIT_NAMES[hit], g_iHITS[id][hit])
        }
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/


/me показывает только мертвому игроку
Нужен был для сервера со статистикой GameMe
Плагин предоставляется как есть,без доработок, ошибок не обнаружено

Прикрепленное изображение

Прикрепленный файл  addons.rar ( 8,06 килобайт ) Кол-во скачиваний: 107


Отредактировал: user.gameover.user, - 8.11.2014, 12:49
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: