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

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

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

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

Помогите с army rank

Статус пользователя syam
сообщение 24.11.2013, 16:17
Сообщение #1
Стаж: 13 лет

Сообщений: 50
Благодарностей: 4
Полезность: 2

Скрытый текст]Помогите сделать что бы при новом звании хп не прибавлялось, а оставалось по прежнему 100
вот код
Скрытый текст
Код
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <fun>
#include <cstrike>
//
#define PLUGIN "Army Ranks"
#define VERSION "1.2"
#define AUTHOR "Arctic"
#define I_ID 7777
#pragma tabsize 0
////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////// НАСТРОЙКА МОДА ////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
//=========================== Кол-во опыта,даваемого игроку за килл : ==============================
#define XP_VALUE     1 // по умолчанию 1 опыт за 1 килл,рекомендую на время праздников увеличивать его :)
//============================= Выберите тип сохранения данных : ===================================
// чтобы сохранять с помощью nvault : //#define USE_SQL
// чтобы сохранять с помощью mysql  :   #define USE_SQL
//#define USE_SQL
#if defined USE_SQL
#include <sqlx>
new Host[]         = ""
new User[]        = ""
new Pass[]         = ""
new Db[]         = ""
new Handle:g_SqlTuple
new g_Error[512]
#else
#include <nvault>
new gVault;
#endif
//================================================================================
==================
//============================= Действия с чатом ===================================================
// если ваш сервер использует Colored Translit : #define USE_COLORED_TRANSLIT
// иначе (если нет) : //#define USE_COLORED_TRANSLIT
//#define USE_COLORED_TRANSLIT
#if !defined USE_COLORED_TRANSLIT
new Msg[512];
#endif
//================================================================================
==================
//==================== Запрет бонусного меню-оружия на некоторых картах ============================
// если вы используете запрет бонусного меню : #define USE_RSTR_BONUS
// иначе (если нет) : //#define USE_RSTR_BONUS
#define USE_RSTR_BONUS
//================================================================================
==================
//
new g_sync_creat_statustext;
new PlayerXP[33],PlayerLevel[33],needXP[64],g_MsgHud,MaxPlayers,levelUp[33];
new players_menu,lvl_menu,cls_menu, players[32], num, i,accessmenu, iName[64], callback,pl_glvl;
new bool:restr_blocked;
new g_PlBonus,g_plNewLvl,g_AdminGMsg;
//таблица званий (значения находнятся в lang-файле)
new const CLASSES[][] = {
"I_0",        // (пусто)
"I_1",        // ряд
"I_2",        // ефр
"I_3",        // млсерж
"I_4",        // серж
"I_5",        // стсерж
"I_6",        // старш
"I_7",        // прапор
"I_8",        // мллейт
"I_9",        // лейт
"I_10",        // стлейт
"I_11",        // кап
"I_12",        // май
"I_13",        // подпол
"I_14",        // полк
"I_15",        // гнмай
"I_16",        // гнлейт
"I_17",        // гнполк
"I_18",        // гнарм
"I_19"        // вгк
};
// таблица уровней
new const LEVELS[] = {
0,        // ряд
10,        // ефр
20,        // млсерж
30,        // серж
50,        // стсерж
70,        // старш
100,        // прапор
150,        // мллейт
200,        // лейт
300,        // стлейт
400,        // кап
600,        // май
800,        // подпол
1000,        // полк
1300,        // гнмай
1600,        // гнлейт
1900,        // гнполк
2200,        // гнарм
2500        // вгк
};
// таблица бонусов,0 = не давать,1 = давать.При условии того,что значени квара g_PlBonus = 1.
new const FLASH_G[] = {
0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
};
new const SMOKE_G[] = {
0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1
};
new const HE_G[] = {
0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1
};
new const NIGHT_V[] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1
};
new const ARMOR_B[] = {
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
};
new const DEFUSE_N[] = {
0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1
};
// 1.2 бонус хп за каждый лвл,для csdm сервера :)
new const HEALTH_BONUS[] = {
0,5,7,10,13,15,17,20,24,28,35,41,47,53,60,70,80,90,100
};
#if defined USE_RSTR_BONUS
// 1.2 запрет вызова меню оружия на картах,редактируйте его под себя
// ВАЖНО! чтобы последний элемент массива был БЕЗ запятой
new const restrict_bonus[][] = {
"35hp",
"35hp_2",
"35hp_gx",
"35hp_gladiators_day",
"most_wanted",
"35hp_xmas",
"35hp_3",
"aim_afl_deagle",
"awp_8bit",
"awp_india",
"awp_india_csp",
"awp_pit",
"ka_100x100",
"ka_wintershank" // последний элемент массива БЕЗ запятой
};
#endif
//
public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_cvar("army_ranks",VERSION, FCVAR_SERVER | FCVAR_SPONLY);
    set_cvar_string("army_ranks",VERSION);
    register_logevent( "EventRoundStart", 2, "1=Round_Start" );
    set_task(1.0, "Info", I_ID, "", 0, "b")
    g_MsgHud = CreateHudSyncObj();
    MaxPlayers = get_maxplayers();
    register_dictionary("army.txt" );
    register_event( "DeathMsg","EventDeath",      "a");
    g_PlBonus    = register_cvar( "ar_givebonus",         "1" ); // давать бонусы игроку взависимости от звания (гранаты и т.п.)
    g_plNewLvl    = register_cvar( "ar_givebonusnl",         "1" ); // давать бонусы игроку при получении нового лвл (оружие)    
    g_AdminGMsg    = register_cvar( "ar_admin_cchat",         "1" ); // 1 = сообщ.админа зеленое,0 = желтое, 2 = цвета команды.
    // v1.2 проверка на запр карты
    #if defined USE_RSTR_BONUS
    if(get_pcvar_num(g_plNewLvl))
    {
        new szMapName[64];
        get_mapname(szMapName,63);
        for(new a = 0; a < sizeof restrict_bonus; a++)
        {
            if(equal(szMapName, restrict_bonus[a]))
            {
                restr_blocked = true;
                server_print("weapon menu is blocked on this map [%s]",restrict_bonus[a]);
                break;
            } else {
                restr_blocked = false;
            }
                
        }
    }
    #endif
    TeamInfo = get_user_msgid("TeamInfo");
    SayText = get_user_msgid("SayText");
    register_event("StatusValue", "show_ranks", "be", "1=2", "2!0")
    g_sync_creat_statustext = CreateHudSyncObj()
    register_clcmd("amx_armenu", "main_admar_menu", ADMIN_KICK, "Main army ranks admin-menu")
    
    // установить фраги
    register_clcmd("amx_set_xp", "Set_Xp_Menu", ADMIN_KICK, "Set frags player")
    register_clcmd("amx_setxp", "Set_Xp", ADMIN_KICK, "Set frags player")
    // дать фраги
    register_clcmd("amx_give_xp", "Give_Xp_Menu", ADMIN_KICK, "Give frags player")
    register_clcmd("amx_givexp", "Give_Xp", ADMIN_KICK, "Give frags player")
    // установить звание
    register_clcmd("amx_set_lvl", "Set_Lvl_Menu", ADMIN_KICK, "Set lvl player")
    // статистика игроков онлайн
    register_clcmd("say /astats", "ShowInfMotd")
    register_clcmd("say_team /astats", "ShowInfMotd")
    
    // система сохранения
    #if defined USE_SQL
    set_task(1.0,"MySql_Init");
    #else
    gVault = nvault_open("plData");
    #endif
    // использование чата
    #if !defined USE_COLORED_TRANSLIT
    register_clcmd("say",         "hookSay")
    register_clcmd("say_team",     "hookSayTeam")
    #endif
}
public plugin_end()
{
    #if defined USE_SQL
    SQL_FreeHandle(g_SqlTuple);
    #else
    nvault_close(gVault);
    #endif
}
public client_putinserver(id)
{
    load_client_data(id);
}

public client_disconnect(id)
{
    save_client_data(id);
}
#if !defined USE_COLORED_TRANSLIT
public hookSay(id)
{
    if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
    {
        return PLUGIN_CONTINUE;
    }
    new message[192],Len;
    read_args(message, 191);
    remove_quotes(message);
    new szName[32];
    get_user_name(id,szName,31);
    if(is_user_admin(id))
    {
        if(get_pcvar_num(g_AdminGMsg) == 1)     // green color
        {
            Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
            Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
            Len += format(Msg[Len], charsmax(Msg) - 1, "%s",message);
            ColorChat(0,NORMAL,Msg)
        }
        else if(get_pcvar_num(g_AdminGMsg) == 2) // team color
        {
            Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
            Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
            Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s",message);
            ColorChat(0,NORMAL,Msg)
        } else {                // yellow color
            Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
            Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
            Len += format(Msg[Len], charsmax(Msg) - 1, "^1%s",message);
            ColorChat(0,NORMAL,Msg)
        }
    }
    else
    {
        Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
        Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
        Len += format(Msg[Len], charsmax(Msg) - 1, "^1%s",message);
        ColorChat(0,NORMAL,Msg)
    }
    return PLUGIN_HANDLED_MAIN
}
public hookSayTeam(id)
{
    if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
    {
        return PLUGIN_CONTINUE;
    }
    new message[192],Len;
    read_args(message, 191);
    remove_quotes(message);
    new szName[32];
    get_user_name(id,szName,31);
    if(is_user_admin(id))
    {
        if(get_pcvar_num(g_AdminGMsg) == 1)     // green color
        {
            Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
            Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
            Len += format(Msg[Len], charsmax(Msg) - 1, "%s",message);
            SendTeamMessage(Msg,get_user_team(id));
        }
        else if(get_pcvar_num(g_AdminGMsg) == 2) // team color
        {
            Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
            Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
            Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s",message);
            SendTeamMessage(Msg,get_user_team(id));
        } else {                // yellow color
            Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
            Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
            Len += format(Msg[Len], charsmax(Msg) - 1, "^1%s",message);
            SendTeamMessage(Msg,get_user_team(id));
        }
    }
    else
    {
        Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
        Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
        Len += format(Msg[Len], charsmax(Msg) - 1, "^1%s",message);
        SendTeamMessage(Msg,get_user_team(id));
    }
    return PLUGIN_HANDLED_MAIN
}
stock SendTeamMessage(Message[],playerTeam)
{
    for (new player = 0; player <= MaxPlayers; player++)
    {
        if (!is_user_connected(player))
        {
            continue
        }
        if(get_user_team(player) == playerTeam)
        {
            ColorChat(player,NORMAL,Message);
        }
    }
}
#endif
public checkLvl(id)
{
    if(PlayerLevel[id] <= 0)
    {
        PlayerLevel[id] = 1;
    }
    while(PlayerXP[id] >= LEVELS[PlayerLevel[id]])
    {
        PlayerLevel[id]++;
        levelUp[id] = 1;
        new szName[ 32 ];
        get_user_name( id, szName, 31 );
        static buffer[192], len;
        len = format(buffer, charsmax(buffer), "^4[^3%L^4]^1 ",LANG_PLAYER,"ARMY");
        len += format(buffer[len], charsmax(buffer) - len, "%L ",LANG_PLAYER,"PLAYER");
        len += format(buffer[len], charsmax(buffer) - len, "^4%s^1 ",szName);
        len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,"NEW_LEVEL");
        len += format(buffer[len], charsmax(buffer) - len, " ^4%L^1.",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
        len += format(buffer[len], charsmax(buffer) - len, "%L",LANG_PLAYER,"CONTR");
        ColorChat(0,NORMAL,buffer);
        //break;
    }
}
// ======================================== добавляем фраги ========================================
public EventDeath()
{
    new iVictim = read_data( 2 );
    new iTeam = get_user_team(iVictim);
    new iKiller = read_data( 1 );
    if(iKiller != iVictim && get_user_team(iKiller) != iTeam && is_user_connected(iKiller) && PlayerLevel[iKiller] <= 18)
    {
        PlayerXP[iKiller] += XP_VALUE;
        save_client_data(iKiller);
        checkLvl(iKiller);
    }
    return PLUGIN_CONTINUE;
}
// ======================================== Получение бонуса =======================================
public EventRoundStart()
{
    new flash[33],he[33],smoke[33],arm[33],nv[33],def[33],hlth[33];
    for(new id = 1; id <= MaxPlayers; id++)
    {
        if(is_user_alive(id) && is_user_connected(id) && get_pcvar_num(g_PlBonus))
        {
            flash[id] = FLASH_G[PlayerLevel[id]];
            he[id]     = HE_G[PlayerLevel[id]];
            smoke[id] = SMOKE_G[PlayerLevel[id]];
            arm[id] = ARMOR_B[PlayerLevel[id]];
            nv[id]     = NIGHT_V[PlayerLevel[id]];
            def[id] = DEFUSE_N[PlayerLevel[id]];
            hlth[id] = HEALTH_BONUS[PlayerLevel[id]];// 1.2
            give_user_bonus(id,flash[id],he[id],smoke[id],nv[id],arm[id],def[id],hlth[id]);
            if(levelUp[id] == 1 && get_pcvar_num(g_plNewLvl) && !restr_blocked) // if g_plNewLvl == 1
            {
                GetWeapon(id);
                levelUp[id] = 0;
            }
        }
    }
    return PLUGIN_CONTINUE;
}
// ======================================== Получение бонуса за lvl ================================
public GetWeapon(id)
{
    new szText[700 char];
    formatex( szText, charsmax( szText ), "%L", id, "GW_TITLE");
    new menu = menu_create( szText, "gw_menu" );
    //================================================================================
==========
    formatex( szText, charsmax( szText ), "AWP");
    menu_additem( menu, szText, "1", 0 );
//
    formatex( szText, charsmax( szText ), "AK-47");
    menu_additem( menu, szText, "2", 0 );
//
    formatex( szText, charsmax( szText ), "M16");
    menu_additem( menu, szText, "3", 0 );
//
    formatex( szText, charsmax( szText ), "Famas");
    menu_additem( menu, szText, "4", 0 );
    //================================================================================
==========
    menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
    menu_display( id, menu,0);
    return PLUGIN_CONTINUE;
}
public gw_menu(id,menu,item)
{
    if( item == MENU_EXIT )
    {
        return PLUGIN_HANDLED;
    }
    
    new data[ 6 ], iName[ 64 ], access, callback;
    menu_item_getinfo( menu, item, access, data, charsmax( data ), iName, charsmax( iName ), callback );
    new key = str_to_num( data );
    switch( key )
    {
        case 1:
        {
            give_item(id,"weapon_awp");
            cs_set_user_bpammo( id, CSW_AWP, 100);
        }
        case 2:
        {
            give_item(id,"weapon_ak47");
            cs_set_user_bpammo( id, CSW_AK47, 200);
        }
        case 3:
        {
            give_item(id,"weapon_m4a1");
            cs_set_user_bpammo( id, CSW_M4A1, 200);
        }
        case 4:
        {
            give_item(id,"weapon_famas");
            cs_set_user_bpammo( id, CSW_FAMAS, 200);
        }
    }
    
    return PLUGIN_HANDLED;
}

stock give_user_bonus(id,f_g,h_g,s_g,n_v,a_b,d_k,health)
{
    if(f_g)
    {
        give_item(id,"weapon_flashbang");
    }
    if(h_g)
    {
        give_item(id,"weapon_hegrenade");
    }
    if(s_g)
    {
        give_item(id,"weapon_smokegrenade");
    }
    cs_set_user_nvg(id,n_v)
    if(a_b)
    {
        give_item(id,"item_kevlar");
    }
    if(d_k)
    {
        give_item(id,"item_assaultsuit");
    }
    set_user_health(id,get_user_health(id)+health);
}
// ======================================== Информер ===============================================
public Info()
{
    for(new id = 1; id <= MaxPlayers; id++)
    {
        if(!is_user_bot(id) && is_user_connected(id))
        {
            if(PlayerLevel[id] <= 18)
            {
                needXP[id] = LEVELS[PlayerLevel[id]] - PlayerXP[id];
                set_hudmessage(100, 100, 100, 0.01, 0.13, 0, 1.0, 1.0, _, _, -1)
                static buffer[192], len;
                len = format(buffer, charsmax(buffer), "%L",LANG_PLAYER,"ZVANIE");
                len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
                len += format(buffer[len], charsmax(buffer) - len, "^n%L %d",LANG_PLAYER,"PL_XP",PlayerXP[id]);
                len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"NEXT_LVL");
                len += format(buffer[len], charsmax(buffer) - len, " %d ",needXP[id]);
                len += format(buffer[len], charsmax(buffer) - len, "%L",LANG_PLAYER,"FRAGS");
                ShowSyncHudMsg(id, g_MsgHud, "%s", buffer);
            } else {
                set_hudmessage(100, 100, 100, 0.01, 0.13, 0, 1.0, 1.0, _, _, -1)
                static buffer[192], len;
                len = format(buffer, charsmax(buffer), "%L",LANG_PLAYER,"ZVANIE");
                len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
                len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_MAX");
                ShowSyncHudMsg(id, g_MsgHud, "%s", buffer);
            }
        }
    }
    return PLUGIN_CONTINUE
}

stock save_client_data(id)
{
    new szName[33];
    get_user_name(id, szName, charsmax(szName))
    #if defined USE_SQL
    new szTemp[512];
    format(szTemp,charsmax(szTemp),"UPDATE `pl_data` SET `pl_xp` = '%i',`pl_lvl` = '%i' WHERE `pl_data`.`pl_name` = '%s';",PlayerXP[id],PlayerLevel[id], szName)
    SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
    #else
    new vaultkey[64],vaultdata[256]
    format(vaultkey,63,"%s-data",szName)
    format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id]);
    nvault_set(gVault,vaultkey,vaultdata)
    #endif
}
stock load_client_data(id)
{
    new szName[33];
    get_user_name(id, szName, charsmax(szName))
    #if defined USE_SQL
    new Data[1],szTemp[512];
    Data[0] = id;
    format(szTemp,charsmax(szTemp),"SELECT * FROM `pl_data` WHERE (`pl_data`.`pl_name` = '%s')", szName)
    SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp,Data,1)
    #else
    new vaultkey[64],vaultdata[256]
    format(vaultkey,63,"%s-data",szName)
    format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id]);
    nvault_get(gVault,vaultkey,vaultdata,255)
    replace_all(vaultdata, 255, "#", " ")
    new ldr[33],lvl[33];
    parse(vaultdata, ldr, 32,lvl,32);
    PlayerXP[id]     = str_to_num(ldr);
    PlayerLevel[id]    = str_to_num(lvl);
    #endif
}
#if defined USE_SQL
public MySql_Init()
{
    g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db);
    new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error));
    if(SqlConnection == Empty_Handle)
        set_fail_state(g_Error);
          
    new Handle:Queries;
    Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS pl_data (pl_name varchar(32),pl_xp INT(11),pl_lvl INT(11))");
    if(!SQL_Execute(Queries))
    {
        SQL_QueryError(Queries,g_Error,charsmax(g_Error));
        set_fail_state(g_Error);
    }
    SQL_FreeHandle(Queries);
    SQL_FreeHandle(SqlConnection);
}
public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    if(FailState == TQUERY_CONNECT_FAILED)
    {
        log_amx("Load - Could not connect to SQL database.  [%d] %s", Errcode, Error)
    }
    else if(FailState == TQUERY_QUERY_FAILED)
    {
        log_amx("Load Query failed. [%d] %s", Errcode, Error)
    }
    new id = Data[0]
    if(SQL_NumResults(Query) < 1)
    {
        new szName[33]
        get_user_name(id, szName, charsmax(szName))
        if (equal(szName,"ID_PENDING"))
            return PLUGIN_HANDLED
        
        new szTemp[512]
        format(szTemp,charsmax(szTemp),"INSERT INTO `pl_data` ( `pl_name` , `pl_xp`, `pl_lvl`)VALUES ('%s','0','1');",szName)
        SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
    }
    else
    {
        PlayerXP[id] = SQL_ReadResult(Query, 1)
        PlayerLevel[id] = SQL_ReadResult(Query, 2)
        
    }
    return PLUGIN_HANDLED
}
public IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    SQL_FreeHandle(Query)
    return PLUGIN_HANDLED
}
#endif
public plugin_natives()
{
    register_native("get_user_exp", "native_get_user_exp", 1);
    register_native("get_user_lvl", "native_get_user_lvl", 1);
}

public native_get_user_exp(id)
{
    return PlayerXP[id];
}

public native_get_user_lvl(id)
{
    return PlayerLevel[id];
}
////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////// ДОБАВЛЕНО В ВЕРСИИ 1.2 ////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
//=============  установить фраги (хр) =============================================================
public Set_Xp_Menu(id)
{
    new szText[700 char],tempname[32], info[10];
    get_players(players, num, "h")
    formatex( szText, charsmax( szText ), "%L", id, "CHOOSE_PLAYER");
    players_menu = menu_create( szText, "setxp_handler" );
    for(i = 0; i < num; i++)
    {
        get_user_name(players[i], tempname, 31)
        num_to_str(players[i], info, 9)
        menu_additem(players_menu, tempname, info, 0)
    }
    menu_setprop(players_menu, MPROP_EXIT, MEXIT_ALL)
    menu_display(id, players_menu, 0);
    return PLUGIN_CONTINUE;
}
public setxp_handler(id, players_menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(players_menu)
        return PLUGIN_HANDLED
    }
    new data[6]
    menu_item_getinfo(players_menu, item, accessmenu, data, charsmax(data), iName, charsmax(iName), callback)
    new player = str_to_num(data)
    client_cmd(id, "messagemode ^"amx_setxp %i^"", player)
    return PLUGIN_CONTINUE
}
public Set_Xp(id)
{
    new param[10],names[2][32];
    read_argv(2, param, charsmax(param))
    for (new x; x < strlen(param); x++)
    {
        if(!isdigit(param[x]))
        {
            ColorChat(id, NORMAL,"^3[Army Ranks]^1 %L",LANG_PLAYER,"PARAM_VALUE");  
            return PLUGIN_HANDLED
        }
    }
    new amount = str_to_num(param);
    if (amount <= 0)
    {
        ColorChat(id, NORMAL, "^3[Army Ranks]^1 %L | ^3%d",LANG_PLAYER,"PARAM_MIN",amount);  
        return PLUGIN_HANDLED
    }
    if (amount > 2499)
    {
        ColorChat(id, NORMAL, "^3[Army Ranks]^1 %L | ^3%d",LANG_PLAYER,"PARAM_MAX",amount);  
        return PLUGIN_HANDLED
    }
    read_argv(1, param, charsmax(param))
    new player = str_to_num(param)
    PlayerXP[player] = amount;
    setlvl_user(player);
    setlvl_user(player);
    save_client_data(player);
    get_user_name(id, names[0], 31)
    get_user_name(player, names[1], 31)
    ColorChat(0, NORMAL, "^3[Army Ranks]^1 %L",LANG_PLAYER,"SET_XP", names[0], names[1],amount);
    return PLUGIN_HANDLED
}
//=============  дать фраги (хр) ===================================================================
public Give_Xp_Menu(id)
{
    new szText[700 char],tempname[32], info[10];
    get_players(players, num, "h")
    formatex( szText, charsmax( szText ), "%L", id, "CHOOSE_PLAYER");
    players_menu = menu_create( szText, "givexp_handler" );
    for(i = 0; i < num; i++)
    {
        get_user_name(players[i], tempname, 31)
        num_to_str(players[i], info, 9)
        menu_additem(players_menu, tempname, info, 0)
    }
    menu_setprop(players_menu, MPROP_EXIT, MEXIT_ALL)
    menu_display(id, players_menu, 0);
    return PLUGIN_CONTINUE;
}
public givexp_handler(id, players_menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(players_menu)
        return PLUGIN_HANDLED
    }
    new data[6]
    menu_item_getinfo(players_menu, item, accessmenu, data, charsmax(data), iName, charsmax(iName), callback)
    new player = str_to_num(data)
    client_cmd(id, "messagemode ^"amx_givexp %i^"", player)
    return PLUGIN_CONTINUE
}
public Give_Xp(id)
{
    new param[10],names[2][32];
    read_argv(2, param, charsmax(param))
    for (new x; x < strlen(param); x++)
    {
        if(!isdigit(param[x]))
        {
            ColorChat(id, NORMAL,"^3[Army Ranks]^1 %L",LANG_PLAYER,"PARAM_VALUE");  
            return PLUGIN_HANDLED
        }
    }
    new amount = str_to_num(param);
    if (amount <= 0)
    {
        ColorChat(id, NORMAL, "^3[Army Ranks]^1 %L | ^3%d",LANG_PLAYER,"PARAM_MIN",amount);  
        return PLUGIN_HANDLED
    }
    if (amount > 2499)
    {
        ColorChat(id, NORMAL, "^3[Army Ranks]^1 %L | ^3%d",LANG_PLAYER,"PARAM_MAX",amount);  
        return PLUGIN_HANDLED
    }
    read_argv(1, param, charsmax(param))
    new player = str_to_num(param)
    PlayerXP[player] += amount;
    setlvl_user(player);
    save_client_data(player);
    get_user_name(id, names[0], 31)
    get_user_name(player, names[1], 31)
    ColorChat(0, NORMAL, "^3[Army Ranks]^1 %L",LANG_PLAYER,"GIVE_XP", names[0],amount,names[1]);
    return PLUGIN_HANDLED
}
stock setlvl_user(id)
{
    if(PlayerLevel[id] <= 18)
    {
        while(PlayerXP[id] >= LEVELS[PlayerLevel[id]])
        {
            PlayerLevel[id]++;
        }
        checkLvl(id);
    }
}
//=============  дать звание (лвл) =================================================================
public Set_Lvl_Menu(id)
{
    if(pl_glvl != 0)
    {
        ColorChat(id,NORMAL,"^3[Army Ranks]^1 %L",LANG_PLAYER,"ALREADY_USE")
        return PLUGIN_HANDLED
    }
    new szText[700 char],tempname[32], info[10];
    get_players(players, num, "h")
    formatex( szText, charsmax( szText ), "%L", id, "CHOOSE_PLAYER");
    lvl_menu = menu_create( szText, "setlvl_handler" );
    for(i = 0; i < num; i++)
    {
        get_user_name(players[i], tempname, 31)
        num_to_str(players[i], info, 9)
        menu_additem(lvl_menu, tempname, info, 0)
    }
    menu_setprop(lvl_menu, MPROP_EXIT, MEXIT_ALL)
    menu_display(id, lvl_menu, 0);
    return PLUGIN_CONTINUE;
}
public setlvl_handler(id, lvl_menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(lvl_menu);
        return PLUGIN_HANDLED
    }
    new data[10];
    menu_item_getinfo(lvl_menu, item, accessmenu, data, charsmax(data), iName, charsmax(iName), callback)
    pl_glvl= str_to_num(data);
    sub_slm(id);
    menu_destroy(lvl_menu);
    return PLUGIN_CONTINUE
}
public sub_slm(id)
{
    new szText[700 char],cid[3];
    get_players(players, num, "h")
    formatex( szText, charsmax( szText ), "%L", id, "CHOOSE_RANK");
    cls_menu = menu_create( szText, "sub_slm_handler" );
    for(i = 1; i < sizeof CLASSES; i++)
    {    formatex(szText, charsmax( szText ),"%L",id,CLASSES[i]);
        formatex(cid, charsmax( cid ),"%d",i);
        menu_additem(cls_menu,szText, cid);
        //client_print(id,print_chat,"%L = %d",LANG_PLAYER,CLASSES[i],i);
    }
    menu_setprop(cls_menu, MPROP_EXIT, MEXIT_ALL)
    menu_display(id, cls_menu, 0);
    return PLUGIN_CONTINUE;
}
public sub_slm_handler(id, cls_menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(cls_menu);
        return PLUGIN_HANDLED
    }
    if(is_user_bot(pl_glvl) || !is_user_connected(pl_glvl))
    {
        menu_destroy(cls_menu);
        ColorChat(id, NORMAL, "^3[Army Ranks]^1 %L | ^3%d",LANG_PLAYER,"NO_ID",pl_glvl);
        pl_glvl = 0;
        return PLUGIN_HANDLED
    }
    new data2[10];
    menu_item_getinfo(cls_menu, item, accessmenu, data2, charsmax(data2), iName, charsmax(iName), callback)
    new rank_num = str_to_num(data2);
    PlayerLevel[pl_glvl] = rank_num - 1
    PlayerXP[pl_glvl] = LEVELS[PlayerLevel[pl_glvl]]
    setlvl_user(pl_glvl);
    static buffer[192], len, names[2][32];
    get_user_name(id, names[0], 31)
    get_user_name(pl_glvl, names[1], 31)
    len = format(buffer, charsmax(buffer), "^3[Army Ranks]^1 ");
    len += format(buffer[len], charsmax(buffer) - len, "%L ",LANG_PLAYER,"SET_LVL1",names[0]);
    len += format(buffer[len], charsmax(buffer) - len, "^4%L^1",LANG_PLAYER,CLASSES[PlayerLevel[pl_glvl]]);
    len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,"SET_LVL2",names[1]);
    ColorChat(0,NORMAL,buffer);
    menu_destroy(cls_menu);
    pl_glvl = 0;
    return PLUGIN_CONTINUE
}
//=============  данные игрока,при наведении прицела на него =======================================
public show_ranks(id)
{
    if(!is_user_bot(id) && is_user_connected(id))
    {
        static name[32]
        new pid = read_data(2)
        new red = 0, blue = 0;
        if (cs_get_user_team(pid) == CS_TEAM_T)
            red = 255
        else if(cs_get_user_team(pid) == CS_TEAM_CT)
            blue = 255
        
        get_user_name(pid, name, charsmax(name))
        set_hudmessage(red, 50, blue, -1.0, 0.60, 1, 0.01, 0.6, 0.01, 0.01, 8)
        static buffer[192], len;
        len = format(buffer, charsmax(buffer), "^n^n%L :",LANG_PLAYER,"A_NAME");
        len += format(buffer[len], charsmax(buffer) - len, " %s^n",name);
        len += format(buffer[len], charsmax(buffer) - len, "%L :",LANG_PLAYER,"ZVANIE");
        len += format(buffer[len], charsmax(buffer) - len, " %L^n",LANG_PLAYER,CLASSES[PlayerLevel[pid]]);
        len += format(buffer[len], charsmax(buffer) - len, "%L %d",LANG_PLAYER,"PL_XP",PlayerXP[pid]);
        ShowSyncHudMsg(id, g_sync_creat_statustext, "%s", buffer);
    }
    return PLUGIN_CONTINUE
}
//=============  Звания игроков онлайн =============================================================
public ShowInfMotd(id)
{
    static buffer[4096], len;
    len = format(buffer, charsmax(buffer), "<html><head><meta http-equiv=Content-Type content=text/html; charset=utf-8><style>")
    len += format(buffer[len], charsmax(buffer) - len, "body{ background:#F2F2F2; font-family:Arial; margin:0; padding:0;}")
    len += format(buffer[len], charsmax(buffer) - len, "table{ width:800; height;auto; color:#153B7C; background:#F4F4F4; font-size:11px; border:1px solid #BFBDBD }")
    len += format(buffer[len], charsmax(buffer) - len, ".th{ width:200; height:auto; background:#175D8B; color:#FFF; padding:7; border:1px solid #BFBDBD}")
    len += format(buffer[len], charsmax(buffer) - len, "td{ padding:3; border:1px solid #BFBDBD}")
    len += format(buffer[len], charsmax(buffer) - len, "</style></head><body>")
    len += format(buffer[len], charsmax(buffer) - len, " <table>")
    len += format(buffer[len], charsmax(buffer) - len, "<tr><td class=th> Huk <td class=th> 3BaHue <td class=th> XP</tr>")
    new iPlayers[ 32 ], iNum, iPlayer;
    get_players( iPlayers, iNum, "c" );
    for( new i = 0; i < iNum; i++ )
    {
        iPlayer = iPlayers[ i ];
        new namepl[32];
        get_user_name(iPlayer, namepl, 31);
        len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %s ",namepl)
        len += format(buffer[len], charsmax(buffer) - len, "<td> %L ",LANG_PLAYER,CLASSES[PlayerLevel[iPlayer]]);
        len += format(buffer[len], charsmax(buffer) - len, "<td> %d ",PlayerXP[iPlayer])
    }
    len += format(buffer[len], charsmax(buffer) - len, "</tr></table> </body></html>")
    new motd[64]
    formatex(motd[0], charsmax(motd), "[Army Ranks] On-line player stats :")
    show_motd(id, buffer, motd)
}
//========== Главное адм.меню ======================================================================
public main_admar_menu(id)
{
    if(!is_user_admin(id))
    { // nahyi
        return PLUGIN_HANDLED;
    }
    new szText[700 char];
    formatex( szText, charsmax( szText ), "%L", id, "MAIN_MENUAR");
    new menu_main = menu_create( szText, "mainar_handler" );
    //
    formatex( szText, charsmax( szText ), "%L", id, "ADM_AR_SET");
    menu_additem( menu_main, szText, "1", 0 );
    formatex( szText, charsmax( szText ), "%L", id, "ADM_AR_GIVE");
    menu_additem( menu_main, szText, "2", 0 );
    formatex( szText, charsmax( szText ), "%L", id, "ADM_AR_RANK");
    menu_additem( menu_main, szText, "3", 0 );
         //
    menu_setprop( menu_main, MPROP_EXIT, MEXIT_ALL );
    menu_display( id, menu_main,0);
    return PLUGIN_CONTINUE;
}
public mainar_handler(id,menu,item)
{
    if( item == MENU_EXIT )
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    
    new data[ 6 ], iName[ 64 ], access, callback;
    menu_item_getinfo( menu, item, access, data, charsmax( data ), iName, charsmax( iName ), callback );
    new key = str_to_num( data );
    switch( key )
    {
        case 1:
        {
            client_cmd(id,"amx_set_xp")
        }
        case 2:
        {
            client_cmd(id,"amx_give_xp")
        }
        case 3:
        {
            client_cmd(id,"amx_set_lvl")
        }
    }
    
    return PLUGIN_HANDLED;
}


Отредактировал: syam, - 24.11.2013, 16:55
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя f1nik
сообщение 24.11.2013, 16:20
Сообщение #2


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

Стаж: 15 лет

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

Бомбануло
Ипать, спойлер где?!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя proff_q
сообщение 25.11.2013, 9:47
Сообщение #3
Стаж: 14 лет

Сообщений: 357
Благодарностей: 263
Полезность: 804

Код:
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <fun>
#include <cstrike>
//
#define PLUGIN "Army Ranks"
#define VERSION "1.2"
#define AUTHOR "Arctic"
#define I_ID 7777
#pragma tabsize 0
////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////// НАСТРОЙКА МОДА ////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
//=========================== Кол-во опыта,даваемого игроку за килл : ==============================
#define XP_VALUE 1 // по умолчанию 1 опыт за 1 килл,рекомендую на время праздников увеличивать его :)
//============================= Выберите тип сохранения данных : ===================================
// чтобы сохранять с помощью nvault : //#define USE_SQL
// чтобы сохранять с помощью mysql : #define USE_SQL
//#define USE_SQL
#if defined USE_SQL
#include <sqlx>
new Host[] = ""
new User[] = ""
new Pass[] = ""
new Db[] = ""
new Handle:g_SqlTuple
new g_Error[512]
#else
#include <nvault>
new gVault;
#endif
//================================================================================
==================
//============================= Действия с чатом ===================================================
// если ваш сервер использует Colored Translit : #define USE_COLORED_TRANSLIT
// иначе (если нет) : //#define USE_COLORED_TRANSLIT
//#define USE_COLORED_TRANSLIT
#if !defined USE_COLORED_TRANSLIT
new Msg[512];
#endif
//================================================================================
==================
//==================== Запрет бонусного меню-оружия на некоторых картах ============================
// если вы используете запрет бонусного меню : #define USE_RSTR_BONUS
// иначе (если нет) : //#define USE_RSTR_BONUS
#define USE_RSTR_BONUS
//================================================================================
==================
//
new g_sync_creat_statustext;
new PlayerXP[33],PlayerLevel[33],needXP[64],g_MsgHud,MaxPlayers,levelUp[33];
new players_menu,lvl_menu,cls_menu, players[32], num, i,accessmenu, iName[64], callback,pl_glvl;
new bool:restr_blocked;
new g_PlBonus,g_plNewLvl,g_AdminGMsg;
//таблица званий (значения находнятся в lang-файле)
new const CLASSES[][] = {
"I_0", // (пусто)
"I_1", // ряд
"I_2", // ефр
"I_3", // млсерж
"I_4", // серж
"I_5", // стсерж
"I_6", // старш
"I_7", // прапор
"I_8", // мллейт
"I_9", // лейт
"I_10", // стлейт
"I_11", // кап
"I_12", // май
"I_13", // подпол
"I_14", // полк
"I_15", // гнмай
"I_16", // гнлейт
"I_17", // гнполк
"I_18", // гнарм
"I_19" // вгк
};
// таблица уровней
new const LEVELS[] = {
0, // ряд
10, // ефр
20, // млсерж
30, // серж
50, // стсерж
70, // старш
100, // прапор
150, // мллейт
200, // лейт
300, // стлейт
400, // кап
600, // май
800, // подпол
1000, // полк
1300, // гнмай
1600, // гнлейт
1900, // гнполк
2200, // гнарм
2500 // вгк
};
// таблица бонусов,0 = не давать,1 = давать.При условии того,что значени квара g_PlBonus = 1.
new const FLASH_G[] = {
0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
};
new const SMOKE_G[] = {
0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1
};
new const HE_G[] = {
0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1
};
new const NIGHT_V[] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1
};
new const ARMOR_B[] = {
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
};
new const DEFUSE_N[] = {
0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1
};
#if defined USE_RSTR_BONUS
// 1.2 запрет вызова меню оружия на картах,редактируйте его под себя
// ВАЖНО! чтобы последний элемент массива был БЕЗ запятой
new const restrict_bonus[][] = {
"35hp",
"35hp_2",
"35hp_gx",
"35hp_gladiators_day",
"most_wanted",
"35hp_xmas",
"35hp_3",
"aim_afl_deagle",
"awp_8bit",
"awp_india",
"awp_india_csp",
"awp_pit",
"ka_100x100",
"ka_wintershank" // последний элемент массива БЕЗ запятой
};
#endif
//
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_cvar("army_ranks",VERSION, FCVAR_SERVER | FCVAR_SPONLY);
set_cvar_string("army_ranks",VERSION);
register_logevent( "EventRoundStart", 2, "1=Round_Start" );
set_task(1.0, "Info", I_ID, "", 0, "b")
g_MsgHud = CreateHudSyncObj();
MaxPlayers = get_maxplayers();
register_dictionary("army.txt" );
register_event( "DeathMsg","EventDeath", "a");
g_PlBonus = register_cvar( "ar_givebonus", "1" ); // давать бонусы игроку взависимости от звания (гранаты и т.п.)
g_plNewLvl = register_cvar( "ar_givebonusnl", "1" ); // давать бонусы игроку при получении нового лвл (оружие)
g_AdminGMsg = register_cvar( "ar_admin_cchat", "1" ); // 1 = сообщ.админа зеленое,0 = желтое, 2 = цвета команды.
// v1.2 проверка на запр карты
#if defined USE_RSTR_BONUS
if(get_pcvar_num(g_plNewLvl))
{
new szMapName[64];
get_mapname(szMapName,63);
for(new a = 0; a < sizeof restrict_bonus; a++)
{
if(equal(szMapName, restrict_bonus[a]))
{
restr_blocked = true;
server_print("weapon menu is blocked on this map [%s]",restrict_bonus[a]);
break;
} else {
restr_blocked = false;
}

}
}
#endif
TeamInfo = get_user_msgid("TeamInfo");
SayText = get_user_msgid("SayText");
register_event("StatusValue", "show_ranks", "be", "1=2", "2!0")
g_sync_creat_statustext = CreateHudSyncObj()
register_clcmd("amx_armenu", "main_admar_menu", ADMIN_KICK, "Main army ranks admin-menu")

// установить фраги
register_clcmd("amx_set_xp", "Set_Xp_Menu", ADMIN_KICK, "Set frags player")
register_clcmd("amx_setxp", "Set_Xp", ADMIN_KICK, "Set frags player")
// дать фраги
register_clcmd("amx_give_xp", "Give_Xp_Menu", ADMIN_KICK, "Give frags player")
register_clcmd("amx_givexp", "Give_Xp", ADMIN_KICK, "Give frags player")
// установить звание
register_clcmd("amx_set_lvl", "Set_Lvl_Menu", ADMIN_KICK, "Set lvl player")
// статистика игроков онлайн
register_clcmd("say /astats", "ShowInfMotd")
register_clcmd("say_team /astats", "ShowInfMotd")

// система сохранения
#if defined USE_SQL
set_task(1.0,"MySql_Init");
#else
gVault = nvault_open("plData");
#endif
// использование чата
#if !defined USE_COLORED_TRANSLIT
register_clcmd("say", "hookSay")
register_clcmd("say_team", "hookSayTeam")
#endif
}
public plugin_end()
{
#if defined USE_SQL
SQL_FreeHandle(g_SqlTuple);
#else
nvault_close(gVault);
#endif
}
public client_putinserver(id)
{
load_client_data(id);
}

public client_disconnect(id)
{
save_client_data(id);
}
#if !defined USE_COLORED_TRANSLIT
public hookSay(id)
{
if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
{
return PLUGIN_CONTINUE;
}
new message[192],Len;
read_args(message, 191);
remove_quotes(message);
new szName[32];
get_user_name(id,szName,31);
if(is_user_admin(id))
{
if(get_pcvar_num(g_AdminGMsg) == 1) // green color
{
Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
Len += format(Msg[Len], charsmax(Msg) - 1, "%s",message);
ColorChat(0,NORMAL,Msg)
}
else if(get_pcvar_num(g_AdminGMsg) == 2) // team color
{
Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s",message);
ColorChat(0,NORMAL,Msg)
} else { // yellow color
Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
Len += format(Msg[Len], charsmax(Msg) - 1, "^1%s",message);
ColorChat(0,NORMAL,Msg)
}
}
else
{
Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
Len += format(Msg[Len], charsmax(Msg) - 1, "^1%s",message);
ColorChat(0,NORMAL,Msg)
}
return PLUGIN_HANDLED_MAIN
}
public hookSayTeam(id)
{
if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id))
{
return PLUGIN_CONTINUE;
}
new message[192],Len;
read_args(message, 191);
remove_quotes(message);
new szName[32];
get_user_name(id,szName,31);
if(is_user_admin(id))
{
if(get_pcvar_num(g_AdminGMsg) == 1) // green color
{
Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
Len += format(Msg[Len], charsmax(Msg) - 1, "%s",message);
SendTeamMessage(Msg,get_user_team(id));
}
else if(get_pcvar_num(g_AdminGMsg) == 2) // team color
{
Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s",message);
SendTeamMessage(Msg,get_user_team(id));
} else { // yellow color
Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
Len += format(Msg[Len], charsmax(Msg) - 1, "^1%s",message);
SendTeamMessage(Msg,get_user_team(id));
}
}
else
{
Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName);
Len += format(Msg[Len], charsmax(Msg) - 1, "^1%s",message);
SendTeamMessage(Msg,get_user_team(id));
}
return PLUGIN_HANDLED_MAIN
}
stock SendTeamMessage(Message[],playerTeam)
{
for (new player = 0; player <= MaxPlayers; player++)
{
if (!is_user_connected(player))
{
continue
}
if(get_user_team(player) == playerTeam)
{
ColorChat(player,NORMAL,Message);
}
}
}
#endif
public checkLvl(id)
{
if(PlayerLevel[id] <= 0)
{
PlayerLevel[id] = 1;
}
while(PlayerXP[id] >= LEVELS[PlayerLevel[id]])
{
PlayerLevel[id]++;
levelUp[id] = 1;
new szName[ 32 ];
get_user_name( id, szName, 31 );
static buffer[192], len;
len = format(buffer, charsmax(buffer), "^4[^3%L^4]^1 ",LANG_PLAYER,"ARMY");
len += format(buffer[len], charsmax(buffer) - len, "%L ",LANG_PLAYER,"PLAYER");
len += format(buffer[len], charsmax(buffer) - len, "^4%s^1 ",szName);
len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,"NEW_LEVEL");
len += format(buffer[len], charsmax(buffer) - len, " ^4%L^1.",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
len += format(buffer[len], charsmax(buffer) - len, "%L",LANG_PLAYER,"CONTR");
ColorChat(0,NORMAL,buffer);
//break;
}
}
// ======================================== добавляем фраги ========================================
public EventDeath()
{
new iVictim = read_data( 2 );
new iTeam = get_user_team(iVictim);
new iKiller = read_data( 1 );
if(iKiller != iVictim && get_user_team(iKiller) != iTeam && is_user_connected(iKiller) && PlayerLevel[iKiller] <= 18)
{
PlayerXP[iKiller] += XP_VALUE;
save_client_data(iKiller);
checkLvl(iKiller);
}
return PLUGIN_CONTINUE;
}
// ======================================== Получение бонуса =======================================
public EventRoundStart()
{
new flash[33],he[33],smoke[33],arm[33],nv[33],def[33];
for(new id = 1; id <= MaxPlayers; id++)
{
if(is_user_alive(id) && is_user_connected(id) && get_pcvar_num(g_PlBonus))
{
flash[id] = FLASH_G[PlayerLevel[id]];
he[id] = HE_G[PlayerLevel[id]];
smoke[id] = SMOKE_G[PlayerLevel[id]];
arm[id] = ARMOR_B[PlayerLevel[id]];
nv[id] = NIGHT_V[PlayerLevel[id]];
def[id] = DEFUSE_N[PlayerLevel[id]];
give_user_bonus(id,flash[id],he[id],smoke[id],nv[id],arm[id],def[id]);
if(levelUp[id] == 1 && get_pcvar_num(g_plNewLvl) && !restr_blocked) // if g_plNewLvl == 1
{
GetWeapon(id);
levelUp[id] = 0;
}
}
}
return PLUGIN_CONTINUE;
}
// ======================================== Получение бонуса за lvl ================================
public GetWeapon(id)
{
new szText[700 char];
formatex( szText, charsmax( szText ), "%L", id, "GW_TITLE");
new menu = menu_create( szText, "gw_menu" );
//================================================================================
==========
formatex( szText, charsmax( szText ), "AWP");
menu_additem( menu, szText, "1", 0 );
//
formatex( szText, charsmax( szText ), "AK-47");
menu_additem( menu, szText, "2", 0 );
//
formatex( szText, charsmax( szText ), "M16");
menu_additem( menu, szText, "3", 0 );
//
formatex( szText, charsmax( szText ), "Famas");
menu_additem( menu, szText, "4", 0 );
//================================================================================
==========
menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
menu_display( id, menu,0);
return PLUGIN_CONTINUE;
}
public gw_menu(id,menu,item)
{
if( item == MENU_EXIT )
{
return PLUGIN_HANDLED;
}

new data[ 6 ], iName[ 64 ], access, callback;
menu_item_getinfo( menu, item, access, data, charsmax( data ), iName, charsmax( iName ), callback );
new key = str_to_num( data );
switch( key )
{
case 1:
{
give_item(id,"weapon_awp");
cs_set_user_bpammo( id, CSW_AWP, 100);
}
case 2:
{
give_item(id,"weapon_ak47");
cs_set_user_bpammo( id, CSW_AK47, 200);
}
case 3:
{
give_item(id,"weapon_m4a1");
cs_set_user_bpammo( id, CSW_M4A1, 200);
}
case 4:
{
give_item(id,"weapon_famas");
cs_set_user_bpammo( id, CSW_FAMAS, 200);
}
}

return PLUGIN_HANDLED;
}

stock give_user_bonus(id,f_g,h_g,s_g,n_v,a_b,d_k)
{
if(f_g)
{
give_item(id,"weapon_flashbang");
}
if(h_g)
{
give_item(id,"weapon_hegrenade");
}
if(s_g)
{
give_item(id,"weapon_smokegrenade");
}
cs_set_user_nvg(id,n_v)
if(a_b)
{
give_item(id,"item_kevlar");
}
if(d_k)
{
give_item(id,"item_assaultsuit");
}
}
// ======================================== Информер ===============================================
public Info()
{
for(new id = 1; id <= MaxPlayers; id++)
{
if(!is_user_bot(id) && is_user_connected(id))
{
if(PlayerLevel[id] <= 18)
{
needXP[id] = LEVELS[PlayerLevel[id]] - PlayerXP[id];
set_hudmessage(100, 100, 100, 0.01, 0.13, 0, 1.0, 1.0, _, _, -1)
static buffer[192], len;
len = format(buffer, charsmax(buffer), "%L",LANG_PLAYER,"ZVANIE");
len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
len += format(buffer[len], charsmax(buffer) - len, "^n%L %d",LANG_PLAYER,"PL_XP",PlayerXP[id]);
len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"NEXT_LVL");
len += format(buffer[len], charsmax(buffer) - len, " %d ",needXP[id]);
len += format(buffer[len], charsmax(buffer) - len, "%L",LANG_PLAYER,"FRAGS");
ShowSyncHudMsg(id, g_MsgHud, "%s", buffer);
} else {
set_hudmessage(100, 100, 100, 0.01, 0.13, 0, 1.0, 1.0, _, _, -1)
static buffer[192], len;
len = format(buffer, charsmax(buffer), "%L",LANG_PLAYER,"ZVANIE");
len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,CLASSES[PlayerLevel[id]]);
len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_MAX");
ShowSyncHudMsg(id, g_MsgHud, "%s", buffer);
}
}
}
return PLUGIN_CONTINUE
}

stock save_client_data(id)
{
new szName[33];
get_user_name(id, szName, charsmax(szName))
#if defined USE_SQL
new szTemp[512];
format(szTemp,charsmax(szTemp),"UPDATE `pl_data` SET `pl_xp` = '%i',`pl_lvl` = '%i' WHERE `pl_data`.`pl_name` = '%s';",PlayerXP[id],PlayerLevel[id], szName)
SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
#else
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-data",szName)
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id]);
nvault_set(gVault,vaultkey,vaultdata)
#endif
}
stock load_client_data(id)
{
new szName[33];
get_user_name(id, szName, charsmax(szName))
#if defined USE_SQL
new Data[1],szTemp[512];
Data[0] = id;
format(szTemp,charsmax(szTemp),"SELECT * FROM `pl_data` WHERE (`pl_data`.`pl_name` = '%s')", szName)
SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp,Data,1)
#else
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-data",szName)
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id]);
nvault_get(gVault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")
new ldr[33],lvl[33];
parse(vaultdata, ldr, 32,lvl,32);
PlayerXP[id] = str_to_num(ldr);
PlayerLevel[id] = str_to_num(lvl);
#endif
}
#if defined USE_SQL
public MySql_Init()
{
g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db);
new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error));
if(SqlConnection == Empty_Handle)
set_fail_state(g_Error);

new Handle:Queries;
Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS pl_data (pl_name varchar(32),pl_xp INT(11),pl_lvl INT(11))");
if(!SQL_Execute(Queries))
{
SQL_QueryError(Queries,g_Error,charsmax(g_Error));
set_fail_state(g_Error);
}
SQL_FreeHandle(Queries);
SQL_FreeHandle(SqlConnection);
}
public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED)
{
log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error)
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_amx("Load Query failed. [%d] %s", Errcode, Error)
}
new id = Data[0]
if(SQL_NumResults(Query) < 1)
{
new szName[33]
get_user_name(id, szName, charsmax(szName))
if (equal(szName,"ID_PENDING"))
return PLUGIN_HANDLED

new szTemp[512]
format(szTemp,charsmax(szTemp),"INSERT INTO `pl_data` ( `pl_name` , `pl_xp`, `pl_lvl`)VALUES ('%s','0','1');",szName)
SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
}
else
{
PlayerXP[id] = SQL_ReadResult(Query, 1)
PlayerLevel[id] = SQL_ReadResult(Query, 2)

}
return PLUGIN_HANDLED
}
public IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
SQL_FreeHandle(Query)
return PLUGIN_HANDLED
}
#endif
public plugin_natives()
{
register_native("get_user_exp", "native_get_user_exp", 1);
register_native("get_user_lvl", "native_get_user_lvl", 1);
}

public native_get_user_exp(id)
{
return PlayerXP[id];
}

public native_get_user_lvl(id)
{
return PlayerLevel[id];
}
////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////// ДОБАВЛЕНО В ВЕРСИИ 1.2 ////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
//============= установить фраги (хр) =============================================================
public Set_Xp_Menu(id)
{
new szText[700 char],tempname[32], info[10];
get_players(players, num, "h")
formatex( szText, charsmax( szText ), "%L", id, "CHOOSE_PLAYER");
players_menu = menu_create( szText, "setxp_handler" );
for(i = 0; i < num; i++)
{
get_user_name(players[i], tempname, 31)
num_to_str(players[i], info, 9)
menu_additem(players_menu, tempname, info, 0)
}
menu_setprop(players_menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, players_menu, 0);
return PLUGIN_CONTINUE;
}
public setxp_handler(id, players_menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(players_menu)
return PLUGIN_HANDLED
}
new data[6]
menu_item_getinfo(players_menu, item, accessmenu, data, charsmax(data), iName, charsmax(iName), callback)
new player = str_to_num(data)
client_cmd(id, "messagemode ^"amx_setxp %i^"", player)
return PLUGIN_CONTINUE
}
public Set_Xp(id)
{
new param[10],names[2][32];
read_argv(2, param, charsmax(param))
for (new x; x < strlen(param); x++)
{
if(!isdigit(param[x]))
{
ColorChat(id, NORMAL,"^3[Army Ranks]^1 %L",LANG_PLAYER,"PARAM_VALUE");
return PLUGIN_HANDLED
}
}
new amount = str_to_num(param);
if (amount <= 0)
{
ColorChat(id, NORMAL, "^3[Army Ranks]^1 %L | ^3%d",LANG_PLAYER,"PARAM_MIN",amount);
return PLUGIN_HANDLED
}
if (amount > 2499)
{
ColorChat(id, NORMAL, "^3[Army Ranks]^1 %L | ^3%d",LANG_PLAYER,"PARAM_MAX",amount);
return PLUGIN_HANDLED
}
read_argv(1, param, charsmax(param))
new player = str_to_num(param)
PlayerXP[player] = amount;
setlvl_user(player);
setlvl_user(player);
save_client_data(player);
get_user_name(id, names[0], 31)
get_user_name(player, names[1], 31)
ColorChat(0, NORMAL, "^3[Army Ranks]^1 %L",LANG_PLAYER,"SET_XP", names[0], names[1],amount);
return PLUGIN_HANDLED
}
//============= дать фраги (хр) ===================================================================
public Give_Xp_Menu(id)
{
new szText[700 char],tempname[32], info[10];
get_players(players, num, "h")
formatex( szText, charsmax( szText ), "%L", id, "CHOOSE_PLAYER");
players_menu = menu_create( szText, "givexp_handler" );
for(i = 0; i < num; i++)
{
get_user_name(players[i], tempname, 31)
num_to_str(players[i], info, 9)
menu_additem(players_menu, tempname, info, 0)
}
menu_setprop(players_menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, players_menu, 0);
return PLUGIN_CONTINUE;
}
public givexp_handler(id, players_menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(players_menu)
return PLUGIN_HANDLED
}
new data[6]
menu_item_getinfo(players_menu, item, accessmenu, data, charsmax(data), iName, charsmax(iName), callback)
new player = str_to_num(data)
client_cmd(id, "messagemode ^"amx_givexp %i^"", player)
return PLUGIN_CONTINUE
}
public Give_Xp(id)
{
new param[10],names[2][32];
read_argv(2, param, charsmax(param))
for (new x; x < strlen(param); x++)
{
if(!isdigit(param[x]))
{
ColorChat(id, NORMAL,"^3[Army Ranks]^1 %L",LANG_PLAYER,"PARAM_VALUE");
return PLUGIN_HANDLED
}
}
new amount = str_to_num(param);
if (amount <= 0)
{
ColorChat(id, NORMAL, "^3[Army Ranks]^1 %L | ^3%d",LANG_PLAYER,"PARAM_MIN",amount);
return PLUGIN_HANDLED
}
if (amount > 2499)
{
ColorChat(id, NORMAL, "^3[Army Ranks]^1 %L | ^3%d",LANG_PLAYER,"PARAM_MAX",amount);
return PLUGIN_HANDLED
}
read_argv(1, param, charsmax(param))
new player = str_to_num(param)
PlayerXP[player] += amount;
setlvl_user(player);
save_client_data(player);
get_user_name(id, names[0], 31)
get_user_name(player, names[1], 31)
ColorChat(0, NORMAL, "^3[Army Ranks]^1 %L",LANG_PLAYER,"GIVE_XP", names[0],amount,names[1]);
return PLUGIN_HANDLED
}
stock setlvl_user(id)
{
if(PlayerLevel[id] <= 18)
{
while(PlayerXP[id] >= LEVELS[PlayerLevel[id]])
{
PlayerLevel[id]++;
}
checkLvl(id);
}
}
//============= дать звание (лвл) =================================================================
public Set_Lvl_Menu(id)
{
if(pl_glvl != 0)
{
ColorChat(id,NORMAL,"^3[Army Ranks]^1 %L",LANG_PLAYER,"ALREADY_USE")
return PLUGIN_HANDLED
}
new szText[700 char],tempname[32], info[10];
get_players(players, num, "h")
formatex( szText, charsmax( szText ), "%L", id, "CHOOSE_PLAYER");
lvl_menu = menu_create( szText, "setlvl_handler" );
for(i = 0; i < num; i++)
{
get_user_name(players[i], tempname, 31)
num_to_str(players[i], info, 9)
menu_additem(lvl_menu, tempname, info, 0)
}
menu_setprop(lvl_menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, lvl_menu, 0);
return PLUGIN_CONTINUE;
}
public setlvl_handler(id, lvl_menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(lvl_menu);
return PLUGIN_HANDLED
}
new data[10];
menu_item_getinfo(lvl_menu, item, accessmenu, data, charsmax(data), iName, charsmax(iName), callback)
pl_glvl= str_to_num(data);
sub_slm(id);
menu_destroy(lvl_menu);
return PLUGIN_CONTINUE
}
public sub_slm(id)
{
new szText[700 char],cid[3];
get_players(players, num, "h")
formatex( szText, charsmax( szText ), "%L", id, "CHOOSE_RANK");
cls_menu = menu_create( szText, "sub_slm_handler" );
for(i = 1; i < sizeof CLASSES; i++)
{ formatex(szText, charsmax( szText ),"%L",id,CLASSES[i]);
formatex(cid, charsmax( cid ),"%d",i);
menu_additem(cls_menu,szText, cid);
//client_print(id,print_chat,"%L = %d",LANG_PLAYER,CLASSES[i],i);
}
menu_setprop(cls_menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, cls_menu, 0);
return PLUGIN_CONTINUE;
}
public sub_slm_handler(id, cls_menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(cls_menu);
return PLUGIN_HANDLED
}
if(is_user_bot(pl_glvl) || !is_user_connected(pl_glvl))
{
menu_destroy(cls_menu);
ColorChat(id, NORMAL, "^3[Army Ranks]^1 %L | ^3%d",LANG_PLAYER,"NO_ID",pl_glvl);
pl_glvl = 0;
return PLUGIN_HANDLED
}
new data2[10];
menu_item_getinfo(cls_menu, item, accessmenu, data2, charsmax(data2), iName, charsmax(iName), callback)
new rank_num = str_to_num(data2);
PlayerLevel[pl_glvl] = rank_num - 1
PlayerXP[pl_glvl] = LEVELS[PlayerLevel[pl_glvl]]
setlvl_user(pl_glvl);
static buffer[192], len, names[2][32];
get_user_name(id, names[0], 31)
get_user_name(pl_glvl, names[1], 31)
len = format(buffer, charsmax(buffer), "^3[Army Ranks]^1 ");
len += format(buffer[len], charsmax(buffer) - len, "%L ",LANG_PLAYER,"SET_LVL1",names[0]);
len += format(buffer[len], charsmax(buffer) - len, "^4%L^1",LANG_PLAYER,CLASSES[PlayerLevel[pl_glvl]]);
len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,"SET_LVL2",names[1]);
ColorChat(0,NORMAL,buffer);
menu_destroy(cls_menu);
pl_glvl = 0;
return PLUGIN_CONTINUE
}
//============= данные игрока,при наведении прицела на него =======================================
public show_ranks(id)
{
if(!is_user_bot(id) && is_user_connected(id))
{
static name[32]
new pid = read_data(2)
new red = 0, blue = 0;
if (cs_get_user_team(pid) == CS_TEAM_T)
red = 255
else if(cs_get_user_team(pid) == CS_TEAM_CT)
blue = 255

get_user_name(pid, name, charsmax(name))
set_hudmessage(red, 50, blue, -1.0, 0.60, 1, 0.01, 0.6, 0.01, 0.01, 8)
static buffer[192], len;
len = format(buffer, charsmax(buffer), "^n^n%L :",LANG_PLAYER,"A_NAME");
len += format(buffer[len], charsmax(buffer) - len, " %s^n",name);
len += format(buffer[len], charsmax(buffer) - len, "%L :",LANG_PLAYER,"ZVANIE");
len += format(buffer[len], charsmax(buffer) - len, " %L^n",LANG_PLAYER,CLASSES[PlayerLevel[pid]]);
len += format(buffer[len], charsmax(buffer) - len, "%L %d",LANG_PLAYER,"PL_XP",PlayerXP[pid]);
ShowSyncHudMsg(id, g_sync_creat_statustext, "%s", buffer);
}
return PLUGIN_CONTINUE
}
//============= Звания игроков онлайн =============================================================
public ShowInfMotd(id)
{
static buffer[4096], len;
len = format(buffer, charsmax(buffer), "<html><head><meta http-equiv=Content-Type content=text/html; charset=utf-8><style>")
len += format(buffer[len], charsmax(buffer) - len, "body{ background:#F2F2F2; font-family:Arial; margin:0; padding:0;}")
len += format(buffer[len], charsmax(buffer) - len, "table{ width:800; height;auto; color:#153B7C; background:#F4F4F4; font-size:11px; border:1px solid #BFBDBD }")
len += format(buffer[len], charsmax(buffer) - len, ".th{ width:200; height:auto; background:#175D8B; color:#FFF; padding:7; border:1px solid #BFBDBD}")
len += format(buffer[len], charsmax(buffer) - len, "td{ padding:3; border:1px solid #BFBDBD}")
len += format(buffer[len], charsmax(buffer) - len, "</style></head><body>")
len += format(buffer[len], charsmax(buffer) - len, " <table>")
len += format(buffer[len], charsmax(buffer) - len, "<tr><td class=th> Huk <td class=th> 3BaHue <td class=th> XP</tr>")
new iPlayers[ 32 ], iNum, iPlayer;
get_players( iPlayers, iNum, "c" );
for( new i = 0; i < iNum; i++ )
{
iPlayer = iPlayers[ i ];
new namepl[32];
get_user_name(iPlayer, namepl, 31);
len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %s ",namepl)
len += format(buffer[len], charsmax(buffer) - len, "<td> %L ",LANG_PLAYER,CLASSES[PlayerLevel[iPlayer]]);
len += format(buffer[len], charsmax(buffer) - len, "<td> %d ",PlayerXP[iPlayer])
}
len += format(buffer[len], charsmax(buffer) - len, "</tr></table> </body></html>")
new motd[64]
formatex(motd[0], charsmax(motd), "[Army Ranks] On-line player stats :")
show_motd(id, buffer, motd)
}
//========== Главное адм.меню ======================================================================
public main_admar_menu(id)
{
if(!is_user_admin(id))
{ // nahyi
return PLUGIN_HANDLED;
}
new szText[700 char];
formatex( szText, charsmax( szText ), "%L", id, "MAIN_MENUAR");
new menu_main = menu_create( szText, "mainar_handler" );
//
formatex( szText, charsmax( szText ), "%L", id, "ADM_AR_SET");
menu_additem( menu_main, szText, "1", 0 );
formatex( szText, charsmax( szText ), "%L", id, "ADM_AR_GIVE");
menu_additem( menu_main, szText, "2", 0 );
formatex( szText, charsmax( szText ), "%L", id, "ADM_AR_RANK");
menu_additem( menu_main, szText, "3", 0 );
//
menu_setprop( menu_main, MPROP_EXIT, MEXIT_ALL );
menu_display( id, menu_main,0);
return PLUGIN_CONTINUE;
}
public mainar_handler(id,menu,item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}

new data[ 6 ], iName[ 64 ], access, callback;
menu_item_getinfo( menu, item, access, data, charsmax( data ), iName, charsmax( iName ), callback );
new key = str_to_num( data );
switch( key )
{
case 1:
{
client_cmd(id,"amx_set_xp")
}
case 2:
{
client_cmd(id,"amx_give_xp")
}
case 3:
{
client_cmd(id,"amx_set_lvl")
}
}

return PLUGIN_HANDLED;
}


Отредактировал: proff_q, - 25.11.2013, 9:54
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя gudaus
сообщение 25.11.2013, 9:56
Сообщение #4


Стаж: 14 лет

Сообщений: 1571
Благодарностей: 1211
Полезность: 741

Код
new const HEALTH_BONUS[] = {
0,5,7,10,13,15,17,20,24,28,35,41,47,53,60,70,80,90,100

Исправь на нули, прибавка исчезнет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя syam
сообщение 25.11.2013, 12:43
Сообщение #5
Стаж: 13 лет

Сообщений: 50
Благодарностей: 4
Полезность: 2

Ошибка при компиляции
вот ошибка
Ошибка
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2013 ITB CompuPhase, AMX Mod X Team

work.sma(176) : error 017: undefined symbol "TeamInfo"
work.sma(177) : error 017: undefined symbol "SayText"

2 Errors.
Could not locate output file work.amx (compile failed).

Изменил всего лишь получение hp на 0
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя proff_q
сообщение 25.11.2013, 12:52
Сообщение #6
Стаж: 14 лет

Сообщений: 357
Благодарностей: 263
Полезность: 804

Вы предоставили битый исходник.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя gudaus
сообщение 25.11.2013, 13:04
Сообщение #7


Стаж: 14 лет

Сообщений: 1571
Благодарностей: 1211
Полезность: 741

Ну да, proff_q прав. У тебя исходник даже без исправлений не компилируется.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя syam
сообщение 25.11.2013, 13:08
Сообщение #8
Стаж: 13 лет

Сообщений: 50
Благодарностей: 4
Полезность: 2

Вот сам исходник уже исправленный на 0 hp

Отредактировал: syam, - 25.11.2013, 13:09
Прикрепленные файлы:
Прикрепленный файл  work.sma ( 29,69 килобайт ) Кол-во скачиваний: 7
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя skripaura
сообщение 13.12.2013, 13:31
Сообщение #9
Стаж: 12 лет

Сообщений: 101
Благодарностей: 37
Полезность: 51

restrict_maps "1" // вкл запрет бонусов на карте.
level_bonus "1" // вкл оружие при получении уровня.
flash_nades "1" // вкл бонуса флешек
smoke_nades "1" // вкл бонуса дымовых
he_nades "1" // вкл бонуса осколочных
hp_by_level "3" // кол-во хп, которое дается за лвл, если = 0 - то выкл
ap_by_level "5" // кол-во брони, которое дается за лвл, если = 0 - то выкл
hide_radar "1" // скрывать радар у игрока
army_chat "1" // использовать чат плагина, то есть приставка в чате, цвет сообщ. для админа
admin_color "1" // 1 = сообщ.админа зеленое,0 = желтое, 2 = цвета команды
save_type "0" // 0 - nvault, 1- mysql.
slash_messages "1" // не отображать команды со слэшем
team_kill_lost_xp "1" // терять exp при тимкилле
lost_xp_val "3" // кол-во теряемых exp при тк
level_up_msg "1" // сообщение при лвл-апе игрока : 1- вкл (всем), 2 - только игроку
mysql_host "127.0.0.1" // host
mysql_user "root" // username
mysql_password "qwerty" // password
mysql_db_name "test" // database name
mysql_table_name "army_ranks" // название таблицы mysql

закинуть в папку config и отредактировать на свое усмотрение

configs
Прикрепленные файлы:
Прикрепленный файл  configs.rar ( 762 байт ) Кол-во скачиваний: 4
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: