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

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

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

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

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Army поправить

MrMrak
сообщение 5.7.2015, 2:00
Сообщение #1
Стаж: 10 лет

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

Помогите пожалуйста перенести худ на верх в угол а то он с лева в нижнем углу)

sma
Код:
/*

*/

#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <fun>
#include <cstrike>
#include <csstats>
#include <csx>
#include <hamsandwich>
#include <fakemeta>
#include <engine>

////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////// НАСТРОЙКА МОДА //////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

// если ваш сервер НЕ использует Colored Translit, то закомментируйте следующую строку
//#define USE_COLORED_TRANSLIT

#define ADMIN_LISTEN ADMIN_RCON

#if !defined USE_COLORED_TRANSLIT
new g_AdminGMsg, g_Prefix, g_NoSlesh

new message[192]
new sayText
new teamInfo

new strName[191]
new strText[191]
new alive[11]

new g_AdminListen
#endif

////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////// НАСТРОЙКА МОДА //////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

#define PLUGIN "Army Ranks StatsX"
#define VERSION "1.1"
#define AUTHOR "Serega"

#define TASKID_INFO 7777
#define TASKID_LOAD 8888
#define TASKID_DED 9999

//StatusText=================
enum _:MAX_TYPES
{
TYPE_NONE,
TYPE_RELATION,
TYPE_PLAYER
}

enum
{
LOOK_FRIEND = 1,
LOOK_ENEMY,
LOOK_HOSTAGE
}

enum _:MAX_REPLACES
{
RE_HP,
RE_ARMY,
RE_NAME
}

new const Replaces[MAX_REPLACES][] =
{
"%hp%",
"%army%",
"%name%"
}

new status_value[MAX_TYPES]
new gStatusText
//===========================

new Array:g_array_restrict_bonus
new Array:g_array_astats

new MaxPlayers, g_RestFile[64]
new g_rounds
new g_DedRound[33]
new PlayerXP[33], PlayerLevel[33], g_MsgHud, levelUp[33]
new bool:bonus_blocked
new bool:g_Prof_Enable[33]
new bool:g_Prof_Auto[33]

new g_PlBonus, g_plNewLvl, g_PlusBonusNewLVL, g_PlusBonusNewLVLMoney, g_PlusBonusNewLVLHP
new g_CentrID, g_XPvalue, g_XPheadshot, g_XPc4def
new g_HudColor, g_HudPos, g_FirstRound
new g_Dedovshina, g_DedovshinaLock, g_DedovshinaTime, g_DedovshinaMoney, g_DedovshinaKnife, g_DedovshinaSlap, g_DownloadCS, g_See_Steam
new g_Bonus_He, g_Bonus_Flash, g_Bonus_Smoke, g_Bonus_Armor, g_Bonus_Defuse, g_Bonus_NV, g_Bonus_Health, g_Levels

new HE_G[31], FLASH_G[31], SMOKE_G[31], ARMOR_B[31], DEFUSE_N[31], NIGHT_V[31], HEALTH_BONUS[31], LEVELS[31]
new const CLASSES[][] = { "I_1", "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", "I_20", "I_21", "I_22", "I_23", "I_24", "I_25", "I_26", "I_27", "I_28", "I_29", "I_30" }

new g_Prof_Deagle, g_Prof_Famas, g_Prof_Scout, g_Prof_Ak47, g_Prof_M4a1, g_Prof_m249, g_Prof_Awp, g_Prof_Awp_Damage, g_Prof_He_Damage, g_Prof_Flag
new g_Prof_Auto_Default, g_Prof_Flag_Default, g_Prof_Awp_Default, g_Prof_He_Default

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_dictionary("army_ranks_statsx_30.txt" )

register_logevent("RestartRound", 2, "1=Game_Commencing")
register_event("TextMsg", "RestartRound", "a", "2=#Game_will_restart_in")

register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0")
register_event( "DeathMsg","EventDeath", "a")

set_task(1.0, "Info", TASKID_INFO, "", 0, "b")
g_MsgHud = CreateHudSyncObj()

gStatusText = get_user_msgid("StatusText")
register_event("StatusValue", "event_StatusValue", "be")

RegisterHam(Ham_TakeDamage, "player", "Prof_Weapon")

g_array_restrict_bonus = ArrayCreate(32, 1)
g_array_astats = ArrayCreate(32, 1)

// настройки
g_XPvalue = register_cvar("ar_xp_value", "1")
g_XPc4def = register_cvar("ar_xp_c4def", "1")
g_XPheadshot = register_cvar("ar_xp_hs", "1")

g_PlBonus = register_cvar("ar_givebonus", "1")
g_plNewLvl = register_cvar("ar_givebonusnl", "1")
g_PlusBonusNewLVL = register_cvar("ar_plusbonusnl", "1")
g_PlusBonusNewLVLMoney = register_cvar("ar_plusbonusnl_money", "16000")
g_PlusBonusNewLVLHP = register_cvar("ar_plusbonusnl_hp", "200")
g_CentrID = register_cvar("ar_centrid", "1")
g_HudColor = register_cvar("ar_hudcolor", "100 100 100")
g_HudPos = register_cvar("ar_hudpos", "0.01 0.90")
g_FirstRound = register_cvar("ar_firstround", "1")
g_Dedovshina = register_cvar("ar_ded", "1")
g_DedovshinaLock = register_cvar("ar_ded_lockround", "5")
g_DedovshinaTime = register_cvar("ar_ded_time", "3.0")
g_DedovshinaMoney = register_cvar("ar_ded_money", "1")
g_DedovshinaKnife = register_cvar("ar_ded_knife", "1")
g_DedovshinaSlap = register_cvar("ar_ded_slap", "10")
g_DownloadCS = register_cvar("ar_download_url", "http://makeserver.ru/skachat_counter_strike_16.html")
g_See_Steam = register_cvar("ar_see_steam", "1")

#if !defined USE_COLORED_TRANSLIT
g_NoSlesh = register_cvar("ar_noslesh","0")
g_AdminGMsg = register_cvar("ar_adminchat", "1")
g_Prefix = register_cvar("ar_prefix","1")
#endif

g_Bonus_He = register_cvar("ar_bonus_he", "0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
g_Bonus_Flash = register_cvar("ar_bonus_flash", "0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
g_Bonus_Smoke = register_cvar("ar_bonus_smoke", "0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
g_Bonus_Armor = register_cvar("ar_bonus_armor", "0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
g_Bonus_Defuse = register_cvar("ar_bonus_defuse", "0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
g_Bonus_NV = register_cvar("ar_bonus_nv", "0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
g_Bonus_Health = register_cvar("ar_bonus_hp", "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0")
g_Levels = register_cvar("ar_levels", "0 10 20 30 50 100 150 200 250 300 350 400 500 600 700 800 1000 1200 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 6500 7000")
register_concmd("ar_lockmap", "MapConst", ADMIN_RCON, "Lock Map. <map>")

g_Prof_Deagle = register_cvar("ar_prof_deagle", "21")
g_Prof_Famas = register_cvar("ar_prof_famas", "22")
g_Prof_Scout = register_cvar("ar_prof_scout", "23")
g_Prof_Ak47 = register_cvar("ar_prof_ak47", "24")
g_Prof_M4a1 = register_cvar("ar_prof_m4a1", "25")
g_Prof_m249 = register_cvar("ar_prof_m249", "26")
g_Prof_Awp = register_cvar("ar_prof_awp", "27")
g_Prof_Awp_Damage = register_cvar("ar_prof_awp_damage", "28")
g_Prof_He_Damage = register_cvar("ar_prof_he_damage", "29")
g_Prof_Flag = register_cvar("ar_prof_flag", "30")

g_Prof_Auto_Default = register_cvar("ar_prof_auto", "1")
g_Prof_Awp_Default = register_cvar("ar_prof_awp_default", "2.0")
g_Prof_He_Default = register_cvar("ar_prof_he_default", "1.5")
g_Prof_Flag_Default = register_cvar("ar_prof_flag_default", "t")

// статистика игроков онлайн=====================
register_clcmd("say /astats", "ShowStatsMotd")
register_clcmd("say_team /astats", "ShowStatsMotd")
register_clcmd("say /steam", "ShowStatsMotd")
register_clcmd("say_team /steam", "ShowStatsMotd")

// информация о настройках плагина===============
register_clcmd("say /ainfo", "ShowSettingsMotd")
register_clcmd("say_team /ainfo", "ShowSettingsMotd")

// информация о бонусах==========================
register_clcmd("say /abonus", "ShowBonusMotd")
register_clcmd("say_team /abonus", "ShowBonusMotd")

// prof menu=====================================
register_clcmd("say /aprof", "prof_menu")
register_clcmd("say_team /aprof", "prof_menu")

// prof auto on==================================
register_clcmd("say /aauto", "prof_auto")
register_clcmd("say_team /aauto", "prof_auto")

// меню==========================================
register_clcmd("say /amenu", "amenu")
register_clcmd("say_team /amenu", "amenu")
register_clcmd("amenu", "amenu")

// использование чата============================
#if !defined USE_COLORED_TRANSLIT
g_AdminListen = register_cvar ("amx_listen", "1")
register_clcmd("say", "hook_say")
register_clcmd("say_team", "hook_teamsay")
sayText = get_user_msgid("SayText")
teamInfo = get_user_msgid("TeamInfo")
register_message(sayText, "arubaid_duplicated")
#endif

// загрузка конфига==============================
new configsDir[64]
get_configsdir(configsDir, 63)
server_cmd("exec %s/army_ranks_statsx_30.cfg", configsDir)

format(g_RestFile, 63, "%s/weaprest.ini", configsDir)
MaxPlayers = get_maxplayers()

set_task(0.1, "RestrBonus")
set_task(0.1, "LoadSettings")
}

// Проверка на запрещенные карты======================================================
public RestrBonus() {
if(get_pcvar_num(g_plNewLvl)) {
new Map[32]
get_mapname(Map, 31)
for(new i = 0; i < ArraySize(g_array_restrict_bonus); i++) {
new restrict_bonus[32]
ArrayGetString(g_array_restrict_bonus, i, restrict_bonus, 31)

if(equal(Map, restrict_bonus)) {
bonus_blocked = true
break
}
else
bonus_blocked = false
}
}
}
// Проверка на первый раунд===========================================================
public RestartRound() {
g_rounds = 0

for(new id = 1; id <= MaxPlayers; id++)
g_DedRound[id] = 0
}

// Загрузка настроек запрещенных карт==================================================
public MapConst(id, level, cid) {
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED

new arg[32]
read_argv(1, arg, 31)
ArrayPushString(g_array_restrict_bonus, arg)

return PLUGIN_HANDLED
}

// Загрузка настроек бонусов===========================================================
public LoadSettings() {
new i
new Bonus_He[64]
get_pcvar_string(g_Bonus_He, Bonus_He, 63)
trim(Bonus_He)
for (i = 0; i < 30; i++)
HE_G[i+1] = str_to_num(Bonus_He[i*2])

new Bonus_Flash[64]
get_pcvar_string(g_Bonus_Flash, Bonus_Flash, 63)
trim(Bonus_Flash)
for (i = 0; i < 30; i++)
FLASH_G[i+1] = str_to_num(Bonus_Flash[i*2])

new Bonus_Smoke[64]
get_pcvar_string(g_Bonus_Smoke, Bonus_Smoke, 63)
trim(Bonus_Smoke)
for (i = 0; i < 30; i++)
SMOKE_G[i+1] = str_to_num(Bonus_Smoke[i*2])

new Bonus_Armor[64]
get_pcvar_string(g_Bonus_Armor, Bonus_Armor, 63)
trim(Bonus_Armor)
for (i = 0; i < 30; i++)
ARMOR_B[i+1] = str_to_num(Bonus_Armor[i*2])

new Bonus_Defuse[64]
get_pcvar_string(g_Bonus_Defuse, Bonus_Defuse, 63)
trim(Bonus_Defuse)
for (i = 0; i < 30; i++)
DEFUSE_N[i+1] = str_to_num(Bonus_Defuse[i*2])

new Bonus_NV[64]
get_pcvar_string(g_Bonus_NV, Bonus_NV, 63)
trim(Bonus_NV)
for (i = 0; i < 30; i++)
NIGHT_V[i+1] = str_to_num(Bonus_NV[i*2])

new Bonus_Health[256], B_H[31][16]
get_pcvar_string(g_Bonus_Health, Bonus_Health, 255)
trim(Bonus_Health)
parse(Bonus_Health,
B_H[0], 15, B_H[1], 15, B_H[2], 15, B_H[3], 15, B_H[4], 15, B_H[5], 15, B_H[6], 15, B_H[7], 15, B_H[8], 15, B_H[9], 15,
B_H[10], 15, B_H[11], 15, B_H[12], 15, B_H[13], 15, B_H[14], 15, B_H[15], 15, B_H[16], 15, B_H[17], 15, B_H[18], 15, B_H[19], 15,
B_H[20], 15, B_H[21], 15, B_H[22], 15, B_H[23], 15, B_H[24], 15, B_H[25], 15, B_H[26], 15, B_H[27], 15, B_H[28], 15, B_H[29], 15, B_H[30], 15
)
for (i = 0; i < 30; i++)
HEALTH_BONUS[i+1] = str_to_num(B_H[i])

new cvLevels[256], LVL[31][16]
get_pcvar_string(g_Levels, cvLevels, 255)
trim(cvLevels)
parse(cvLevels,
LVL[0], 15, LVL[1], 15, LVL[2], 15, LVL[3], 15, LVL[4], 15, LVL[5], 15, LVL[6], 15, LVL[7], 15, LVL[8], 15, LVL[9], 15,
LVL[10], 15, LVL[11], 15, LVL[12], 15, LVL[13], 15, LVL[14], 15, LVL[15], 15, LVL[16], 15, LVL[17], 15, LVL[18], 15, LVL[19], 15,
LVL[20], 15, LVL[21], 15, LVL[22], 15, LVL[23], 15, LVL[24], 15, LVL[25], 15, LVL[26], 15, LVL[27], 15, LVL[28], 15, LVL[29], 15, LVL[30], 15
)
for (i = 0; i < 30; i++)
LEVELS[i+1] = str_to_num(LVL[i])

return PLUGIN_HANDLED
}

// проф =============================================================================
public prof_auto(id) {
if(g_Prof_Auto[id]) {
g_Prof_Auto[id] = false
ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_AUTO_OFF")
}
else {
g_Prof_Auto[id] = true
ColorChat(id, BLUE, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_AUTO_ON")
}
}

public prof_menu(id) {
if(get_pcvar_num(g_FirstRound) && g_rounds < get_pcvar_num(g_FirstRound)) {
ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_ROUND", get_pcvar_num(g_FirstRound))
return PLUGIN_CONTINUE
}
if(!g_Prof_Enable[id]) {
ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_DISABLE")
return PLUGIN_CONTINUE
}
if(!is_user_alive(id)) {
ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_ALIVE")
return PLUGIN_CONTINUE
}
new szText[700]
formatex(szText, charsmax(szText), "%L %L", LANG_PLAYER, "AR_TAG_MENU", LANG_PLAYER, "PROF_MENU_NAME")
new menu = menu_create(szText, "prof_menu_item")

if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Deagle)) {
formatex(szText, charsmax(szText), "Deagle")
menu_additem(menu, szText, "1")
}
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Famas)) {
formatex(szText, charsmax(szText), "Famas")
menu_additem(menu, szText, "2")
}
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Scout)) {
formatex(szText, charsmax(szText), "Scout")
menu_additem(menu, szText, "3")
}
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Ak47)) {
formatex(szText, charsmax(szText), "AK47")
menu_additem(menu, szText, "4")
}
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_M4a1)) {
formatex(szText, charsmax(szText), "M4A1")
menu_additem(menu, szText, "5")
}
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_m249)) {
formatex(szText, charsmax(szText), "Papagan")
menu_additem(menu, szText, "6")
}
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Awp)) {
formatex(szText, charsmax(szText), "AWP")
menu_additem(menu, szText, "7")
}

format(szText, charsmax(szText), "%L", LANG_PLAYER,"MENU_EXITLANG")
menu_setprop(menu, MPROP_EXITNAME, szText)

menu_display(id, menu, 0)

return PLUGIN_CONTINUE
}
public prof_menu_item(id,menu,item) {
if(item == MENU_EXIT)
return PLUGIN_HANDLED

if(!is_user_alive(id)) {
ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_ALIVE")
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_prof(id, CSW_DEAGLE)
case 2:
give_prof(id, CSW_FAMAS)
case 3:
give_prof(id, CSW_SCOUT)
case 4:
give_prof(id, CSW_AK47)
case 5:
give_prof(id, CSW_M4A1)
case 6:
give_prof(id, CSW_M249)
case 7:
give_prof(id, CSW_AWP)
}
g_Prof_Enable[id] = false
return PLUGIN_HANDLED
}

public give_prof(id, weapon) {
if (restSettings(weapon)) {
client_print(id, print_center, "* This item is restricted *")
prof_menu(id)
return PLUGIN_HANDLED
}
for(new i = 1; i < 33; i++) {
if (i == 2 || i== 4 || i == 6 || i == 9 || i == 29 || i == 31 || i == 32)
continue
if (weapon == 26) {
if(user_has_weapon(id, i)) {
client_cmd(id, "slot2;drop")
break
}
}
if(user_has_weapon(id, i)) {
client_cmd(id, "slot1;drop")
break
}
}
new weapon_name[24]
get_weaponname(weapon, weapon_name, 24)
give_item(id, weapon_name)
if(weapon == 3 || weapon == 15 || weapon == 22 || weapon == 28)
cs_set_user_bpammo(id, weapon, 90)
else if(weapon == 26)
cs_set_user_bpammo(id, weapon, 35)
else if(weapon == 20)
cs_set_user_bpammo(id, weapon, 200)
else if(weapon == 18)
cs_set_user_bpammo(id, weapon, 30)

return PLUGIN_HANDLED
}

public Prof_Weapon(victim, inflicator, attacker, Float:damage) {
if(!is_user_connected(attacker))
return
if(victim == attacker || !victim)
return

if(get_user_weapon(attacker) == CSW_AWP && PlayerLevel[attacker] >= get_pcvar_num(g_Prof_Awp_Damage))
SetHamParamFloat(4, damage * get_pcvar_float(g_Prof_Awp_Default))
if(inflicator > 100 && PlayerLevel[attacker] >= get_pcvar_num(g_Prof_He_Damage))
SetHamParamFloat(4, damage * get_pcvar_float(g_Prof_He_Default))
}
// использование чата=================================================================
#if !defined USE_COLORED_TRANSLIT

public arubaid_duplicated(msgId, msgDest, receiver) {
return PLUGIN_HANDLED
}

public hook_say(id) {
if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id) || !get_pcvar_num(g_Prefix)) {
return PLUGIN_CONTINUE
}

read_args (message, 191)
remove_quotes (message)

if (message[0] == '@' || equal (message, ""))
return PLUGIN_CONTINUE
if(get_pcvar_num(g_NoSlesh)) {
if (message[0] == '/')
return PLUGIN_CONTINUE
}

new name[32]
get_user_name (id, name, 31)

new isAlive

if (is_user_alive (id)) {
isAlive = 1
alive = "^x01"
}
else {
isAlive = 0
alive = "^x01*DEAD* "
}

static color[10]

if (get_user_flags(id) & ADMIN_CHAT) {
get_user_team (id, color, 9)

if(get_pcvar_num(g_AdminGMsg) == 1) // green color
{
format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ^x04", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}
else if(get_pcvar_num(g_AdminGMsg) == 2) // team color
{
format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ^x03", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}
else // yellow color
{
format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}
}
else {
get_user_team (id, color, 9)
format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}

format (strText, 191, "%s", message)
format (message, 191, "%s%s", strName, strText)

sendMessage (color, isAlive)

return PLUGIN_CONTINUE
}

public hook_teamsay(id) {
if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id) || !get_pcvar_num(g_Prefix)) {
return PLUGIN_CONTINUE
}
new playerTeam = get_user_team(id)
new playerTeamName[19]

switch (playerTeam)
{
case 1:
copy (playerTeamName, 11, "Terrorists")

case 2:
copy (playerTeamName, 18, "Counter-Terrorists")

default:
copy (playerTeamName, 9, "Spectator")
}

read_args (message, 191)
remove_quotes (message)

if (message[0] == '@' || equal (message, ""))
return PLUGIN_CONTINUE
if(get_pcvar_num(g_NoSlesh)) {
if (message[0] == '/')
return PLUGIN_CONTINUE
}

new name[32]
get_user_name(id, name, 31)

new isAlive

if (is_user_alive (id)) {
isAlive = 1
alive = "^x01"
}
else {
isAlive = 0
alive = "^x01*DEAD* "
}

static color[10]

if (get_user_flags(id) & ADMIN_CHAT) {
get_user_team (id, color, 9)

if(get_pcvar_num(g_AdminGMsg) == 1) // green color
{
format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ^x04", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}
else if(get_pcvar_num(g_AdminGMsg) == 2) // team color
{
format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ^x03", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}
else // yellow color
{
format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}
}
else {
get_user_team(id, color, 9)

format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}

format (strText, 191, "%s", message)
format (message, 191, "%s%s", strName, strText)

sendTeamMessage(color, isAlive, playerTeam)

return PLUGIN_CONTINUE
}

public sendMessage (color[], alive) {
new teamName[10]

for (new player = 1; player < MaxPlayers; player++) {
if (!is_user_connected(player))
continue

if (alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN) {
get_user_team(player, teamName, 9)
changeTeamInfo(player, color)
writeMessage(player, message)
changeTeamInfo(player, teamName)
}
}
}

public sendTeamMessage (color[], alive, playerTeam) {
new teamName[10]

for (new player = 1; player < MaxPlayers; player++) {
if (!is_user_connected(player))
continue

if (get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN) {
if (alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN) {
get_user_team(player, teamName, 9)
changeTeamInfo(player, color)
writeMessage(player, message)
changeTeamInfo(player, teamName)
}
}
}
}

public changeTeamInfo(player, team[]) {
message_begin(MSG_ONE, teamInfo, _, player)
write_byte(player)
write_string(team)
message_end()
}

public writeMessage(player, message[]) {
message_begin(MSG_ONE, sayText, {0, 0, 0}, player)
write_byte(player)
write_string(message)
message_end()
}

#endif

// Проверка уровня====================================================================
public checkLvl(id) {
if(id > 0 && id < 33) {
if (PlayerLevel[id] <= 0)
PlayerLevel[id] = 1
if (PlayerLevel[id] < 30) {
while(PlayerXP[id] >= LEVELS[PlayerLevel[id]+1]) {
PlayerLevel[id]++
levelUp[id] = 1
new Name[32]
get_user_name(id, Name, 31)
if(cs_get_user_team(id) == CS_TEAM_T)
ColorChat(0, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL", Name, LANG_PLAYER,CLASSES[PlayerLevel[id]])
else
ColorChat(0, BLUE, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL", Name, LANG_PLAYER,CLASSES[PlayerLevel[id]])
}
}
}
}
// Добавляет опыт======================================================================
public EventDeath() {
new iVictim = read_data(2)
new iTeam = get_user_team(iVictim)
new iKiller = read_data(1)
new headshot = read_data(3)
if(iKiller != iVictim && get_user_team(iKiller) != iTeam && is_user_connected(iKiller) && PlayerLevel[iKiller] < 30) {
if (get_pcvar_num(g_XPheadshot)) {
if(headshot)
PlayerXP[iKiller] += get_pcvar_num(g_XPvalue) * 2
else
PlayerXP[iKiller] += get_pcvar_num(g_XPvalue)
}
else
PlayerXP[iKiller] += get_pcvar_num(g_XPvalue)

checkLvl(iKiller)
}
return PLUGIN_CONTINUE
}

public bomb_explode(planter, defuser) {
if (get_pcvar_num(g_XPc4def)) {
PlayerXP[planter] += get_pcvar_num(g_XPvalue)*3
checkLvl(planter)
}
return PLUGIN_CONTINUE
}

public bomb_defused(defuser) {
if (get_pcvar_num(g_XPc4def)) {
PlayerXP[defuser] += get_pcvar_num(g_XPvalue)*3
checkLvl(defuser)
}
return PLUGIN_CONTINUE
}

// Старт раунда=======================================================================
public EventRoundStart() {
g_rounds++
set_task(0.1, "BonusRoundStart")

for(new id = 1; id <= MaxPlayers; id++) {
g_Prof_Enable[id] = true
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Deagle) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Famas) ||
PlayerLevel[id] >= get_pcvar_num(g_Prof_Scout) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Ak47) ||
PlayerLevel[id] >= get_pcvar_num(g_Prof_M4a1) || PlayerLevel[id] >= get_pcvar_num(g_Prof_m249) ||
PlayerLevel[id] >= get_pcvar_num(g_Prof_Awp)) {
if(is_user_connected(id) && is_user_alive(id) && g_Prof_Auto[id]) {
if(get_pcvar_num(g_FirstRound) && g_rounds < get_pcvar_num(g_FirstRound))
return PLUGIN_CONTINUE
prof_menu(id)
}
}
}
return PLUGIN_CONTINUE
}

public BonusRoundStart() {
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_connected(id)) {
set_task(1.0, "load_client_data", id)
}
if(is_user_alive(id) && is_user_connected(id) && get_pcvar_num(g_PlBonus)) {
if (get_pcvar_num(g_FirstRound) && g_rounds < get_pcvar_num(g_FirstRound))
return PLUGIN_CONTINUE
else {
if(!bonus_blocked) {
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]]
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)) {
BonusNewLVL(id)
levelUp[id] = 0
}
}
}
}
}
return PLUGIN_CONTINUE
}

// Получение бонуса за lvl==============================================================
public BonusNewLVL(id) {
new szText[700 char]
formatex(szText, charsmax(szText), "%L %L", LANG_PLAYER, "AR_TAG_MENU", LANG_PLAYER, "NEW_LEVEL_MENU")
new menu = menu_create(szText, "bnl_menu")

formatex(szText, charsmax(szText), "AWP")
menu_additem(menu, szText, "1", 0)

formatex(szText, charsmax(szText), "AK47")
menu_additem(menu, szText, "2", 0)

formatex(szText, charsmax(szText), "M4A1")
menu_additem(menu, szText, "3", 0)

formatex(szText, charsmax(szText), "Galil")
menu_additem(menu, szText, "4", 0)

formatex(szText, charsmax(szText), "Famas")
menu_additem(menu, szText, "5", 0)

if(get_pcvar_num(g_PlusBonusNewLVL)) {
formatex(szText, charsmax(szText), "%d$", get_pcvar_num(g_PlusBonusNewLVLMoney))
menu_additem(menu, szText, "6", 0)

formatex(szText, charsmax(szText), "%dHP", get_pcvar_num(g_PlusBonusNewLVLHP))
menu_additem(menu, szText, "7", 0)
}

menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu, 0)

return PLUGIN_CONTINUE
}
public bnl_menu(id, menu, item) {
if(!is_user_alive(id) && is_user_connected(id)) {
ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_ALIVE")
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_weapons(id, CSW_AWP)
case 2:
give_weapons(id, CSW_AK47)
case 3:
give_weapons(id, CSW_M4A1)
case 4:
give_weapons(id, CSW_GALIL)
case 5:
give_weapons(id, CSW_FAMAS)
case 6:
{
if(get_pcvar_num(g_PlusBonusNewLVL)) {
cs_set_user_money(id, get_pcvar_num(g_PlusBonusNewLVLMoney))
ColorChat(id, BLUE, "%L %L %d$", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL_GIVE", get_pcvar_num(g_PlusBonusNewLVLMoney))
}
}
case 7:
{
if(get_pcvar_num(g_PlusBonusNewLVL)) {
set_user_health(id, get_pcvar_num(g_PlusBonusNewLVLHP))
ColorChat(id, BLUE, "%L %L %dHP", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL_GIVE", get_pcvar_num(g_PlusBonusNewLVLHP))
}
}
}
return PLUGIN_HANDLED
}

public give_weapons(id, weapon) {
if (restSettings(weapon)) {
client_print(id, print_center, "* This item is restricted *")
BonusNewLVL(id)
return PLUGIN_HANDLED
}
for(new i = 1; i < 33; i++) {
if (i == 2 || i== 4 || i == 6 || i == 9 || i == 10 || i == 11 || i == 16 || i == 17 || i == 25 || i == 26 || i == 29 || i == 31 || i == 32)
continue

if(user_has_weapon(id, i))
client_cmd(id, "slot1;drop")
}
new weapon_name[24]
get_weaponname(weapon, weapon_name, 24)
give_item(id, weapon_name)
cs_set_user_bpammo(id, weapon, 90)
cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_smokegrenade")

if(cs_get_user_team(id) == CS_TEAM_CT && !cs_get_user_defuse(id))
cs_set_user_defuse(id, 1, 0, 160, 0, _, 0)

ColorChat(id, RED, "%L %L %s", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL_GIVE", weapon_name[7])

return PLUGIN_HANDLED
}

restSettings(weapon) {
if (!file_exists(g_RestFile))
return 0

new text[16]
new a, pos = 0

while (read_file(g_RestFile, pos++, text, 15, a)) {
if (text[0] == ';' || !a)
continue

new weapon_name[24], weapon_rest[24]
get_weaponname(weapon, weapon_name, 24)
parse(text, text, 15)
format(weapon_rest, 23, "weapon_%s", text)
if(equal(weapon_name, weapon_rest))
return 1
}
return 0
}

stock give_user_bonus(id, f_g, h_g, s_g, n_v, a_b, d_k, health) {
if(f_g >= 1)
give_item(id, "weapon_flashbang")
if(h_g>= 1)
give_item(id, "weapon_hegrenade")
if(s_g>= 1)
give_item(id, "weapon_smokegrenade")
if(n_v >= 1)
cs_set_user_nvg(id, n_v)
if(a_b >= 1)
cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
if(d_k >= 1) {
if(cs_get_user_team(id) == CS_TEAM_CT && !cs_get_user_defuse(id))
cs_set_user_defuse(id, 1, 0, 160, 0, _, 0)
}
set_user_health(id, get_user_health(id)+health)
}

// Информер========================================================================
=
public Info() {
static temp[3][10], color[3], Float:pos[2], i, text[21]
new needXP[64]

get_pcvar_string(g_HudColor, text, 20)
parse(text, temp[0], 3, temp[1], 3, temp[2], 3)
for(i = 0; i < 3; i++) color[i] = str_to_num(temp[i])

get_pcvar_string(g_HudPos, text, 20)
parse(text, temp[0], 9, temp[1], 9)
for(i = 0; i < 2; i++) pos[i] = floatstr(temp[i])

for(new id = 1; id <= MaxPlayers; id++) {
if(!is_user_bot(id) && is_user_connected(id)) {
set_hudmessage(color[0], color[1], color[2], pos[0], pos[1], 0, 0.0, 1.0, _, _, -1)
static buffer[192], len

if(!is_user_alive(id)) {
new id2 = pev(id, pev_iuser2)
if(id2 > 0) {
new Name2[32]
get_user_name(id2, Name2, 31)
if(PlayerLevel[id2] < 30) {
needXP[id2] = LEVELS[PlayerLevel[id2]+1] - PlayerXP[id2]
len = format(buffer, charsmax(buffer), "%L : %s", LANG_PLAYER,"A_NAME", Name2)
len += format(buffer[len], charsmax(buffer) - len, "^n%L :", LANG_PLAYER,"ZVANIE")
len += format(buffer[len], charsmax(buffer) - len, " %L", LANG_PLAYER,CLASSES[PlayerLevel[id2]])
len += format(buffer[len], charsmax(buffer) - len, "^n%L : %d", LANG_PLAYER,"PL_XP",PlayerXP[id2])
len += format(buffer[len], charsmax(buffer) - len, "^n%L :", LANG_PLAYER,"NEXT_LVL")
len += format(buffer[len], charsmax(buffer) - len, " %d ", needXP[id2])
len += format(buffer[len], charsmax(buffer) - len, "%L", LANG_PLAYER,"FRAGS")
}
else {
len = format(buffer, charsmax(buffer), "%L : %s", LANG_PLAYER,"A_NAME", Name2)
len += format(buffer[len], charsmax(buffer) - len, "^n%L :",LANG_PLAYER,"ZVANIE")
len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,CLASSES[PlayerLevel[id2]])
len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_MAX")
}
}
else {
if(PlayerLevel[id] < 30) {
needXP[id] = LEVELS[PlayerLevel[id]+1] - PlayerXP[id]
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")
}
else {
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")
}
}
}
else {
if(PlayerLevel[id] < 30) {
needXP[id] = LEVELS[PlayerLevel[id]+1] - PlayerXP[id]
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")
}
else {
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
}

public client_putinserver(id) {
if(get_pcvar_num(g_Prof_Auto_Default))
g_Prof_Auto[id] = true
else
g_Prof_Auto[id] = false

set_task(0.1, "load_client_data", id)
}

public load_client_data(id) {
if(!is_user_connected(id))
return PLUGIN_HANDLED

new stats[8], bodyhits[8], stats2[4]
get_user_stats(id, stats, bodyhits)

if (get_pcvar_num(g_XPc4def))
get_user_stats2(id, stats2)

if (get_pcvar_num(g_XPheadshot))
PlayerXP[id] = ((stats[2]*2 + (stats[0] - stats[2])) + (stats2[1]*3 + stats2[3]*3)) * get_pcvar_num(g_XPvalue)
else
PlayerXP[id] = (stats2[1]*3 + stats2[3]*3 + stats[0]) * get_pcvar_num(g_XPvalue)

new STEAM[32]
get_user_authid(id, STEAM, 31)
if (equal(STEAM, "STEAM_ID_LAN") || equal(STEAM, "VALVE_ID_LAN")) {
PlayerXP[id] = 0
new DownloadURL[64]
get_pcvar_string(g_DownloadCS, DownloadURL, 63)
client_print(id, print_console, "[%L] %L", LANG_PLAYER,"ARMY", LANG_PLAYER,"STEAM_ID_LAN")
client_print(id, print_console, "[%L] %L %s", LANG_PLAYER,"ARMY", LANG_PLAYER,"DOWNLOAD_CS", DownloadURL)
ColorChat(id, RED, "%L ^03%L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"STEAM_ID_LAN")
ColorChat(id, RED, "%L ^03%L ^04%s", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DOWNLOAD_CS", DownloadURL)
}

for(new i = 1; i <= 30; i++) {
if (i < 30) {
if (PlayerXP[id] >= LEVELS[i] && PlayerXP[id] < LEVELS[i+1])
PlayerLevel[id] = i
}
else {
if (PlayerXP[id] >= LEVELS[30])
PlayerLevel[id] = 30
}
}
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Flag)) {
new string[32]
get_pcvar_string(g_Prof_Flag_Default, string, 31)
new flags = read_flags(string)
set_user_flags(id, flags)
}
return PLUGIN_HANDLED
}

public plugin_natives()
register_native("get_user_lvl", "native_get_user_lvl", 1)

public native_get_user_lvl(id)
return PlayerLevel[id]

// Наведение прицела на игрока=========================================================
public event_StatusValue(id) {
new num = read_data(1)
if( num <= 0 || num >= MAX_TYPES)
return

new update = status_value[num] = read_data(2)
new id2 = read_data(2)
switch(num) {
case TYPE_RELATION: {
if(!update && is_user_alive(id) && get_pcvar_num(g_CentrID)) {
message_begin(MSG_ONE_UNRELIABLE, gStatusText, _, id)
write_byte(0)
write_string("")
message_end()
}
if(is_user_connected(id) && get_pcvar_num(g_Dedovshina) && (g_rounds >= g_DedRound[id])) {
remove_task(id+TASKID_DED)
MsgBarTime(id, 0)
}
}
case TYPE_PLAYER: {
if(is_user_alive(id) && get_pcvar_num(g_CentrID)) {
new message[192]
switch(status_value[TYPE_RELATION]) {
case LOOK_FRIEND: {
copy(message, charsmax(message), "Friend : %name% Health : %hp% %army%")
}
case LOOK_ENEMY: {
copy(message, charsmax(message), "Enemy : %name% %army%")
}
case LOOK_HOSTAGE: {
return
}
}
EditMessage(message, update, true, get_user_health(update))
message_begin(MSG_ONE_UNRELIABLE, gStatusText, _, id)
write_byte(0)
write_string(message)
message_end()
}
if(is_user_connected(id) && is_user_connected(id2) && is_user_alive(id) && get_pcvar_num(g_Dedovshina) && (g_rounds >= g_DedRound[id]) && (get_user_button(id) & IN_USE)) {
if(cs_get_user_team(id) == cs_get_user_team(id2)) {
MsgBarTime(id, floatround(get_pcvar_float(g_DedovshinaTime)))
new arg[2]
arg[0] = id
arg[1] = id2
set_task(get_pcvar_float(g_DedovshinaTime), "Dedovshina", id+TASKID_DED, arg, 2)
}
}
}
}
}
EditMessage(message[192], player, bool:status_text, hp) {
new temp[35]

if(is_user_alive(player)) {
for(new i; i < MAX_REPLACES; i++) {
switch(i) {
case RE_HP: {
num_to_str(hp, temp, charsmax(temp))
}
case RE_ARMY: {
format(temp, charsmax(temp), "^n%L : %L", LANG_PLAYER,"ZVANIE", LANG_PLAYER,CLASSES[PlayerLevel[player]])
}
case RE_NAME: {
if(status_text)
copy(temp, charsmax(temp), "%p2")
else
get_user_name(player, temp, charsmax(temp))
}
default: {
copy(temp, charsmax(temp), "")
}
}
replace(message, charsmax(message), Replaces[i], temp)
}
}
trim(message)
}

public Dedovshina(arg[]) {
new Name[32], Name2[32], ded_pcvar

get_user_name(arg[0], Name, 31)
get_user_name(arg[1], Name2, 31)

if(PlayerLevel[arg[0]] <= PlayerLevel[arg[1]]) {
ColorChat(arg[0], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_FAIL", Name2)

return PLUGIN_HANDLED
}

if(get_pcvar_num(g_Dedovshina) == 4)
ded_pcvar = random_num(1, 2)
else
ded_pcvar = get_pcvar_num(g_Dedovshina)

if(ded_pcvar == 1) {
new money2 = cs_get_user_money(arg[1])

if(cs_get_user_money(arg[0]) + money2 > 16000 && get_pcvar_num(g_DedovshinaMoney))
cs_set_user_money(arg[0], 16000)
else
cs_set_user_money(arg[0], cs_get_user_money(arg[0]) + money2)

cs_set_user_money(arg[1], 0)
ColorChat(arg[0], BLUE, "%L %L %d$", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_1", Name2, money2)
ColorChat(arg[1], RED, "%L ^04%s ^01%L %d$", LANG_PLAYER,"AR_TAG", Name, LANG_PLAYER,"DED_2", money2)
client_cmd(arg[0], "spk buttons/bell1")
client_cmd(arg[1], "spk buttons/blip1")
}
else if(ded_pcvar == 2) {
new clip, ammo, weapon_name[24]
new weapon_id = get_user_weapon(arg[1], clip, ammo)

if(!get_pcvar_num(g_DedovshinaKnife)) {
if (weapon_id == 29) {
ColorChat(arg[0], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_FAIL_WEAPON")

return PLUGIN_HANDLED
}
}
get_weaponname(weapon_id, weapon_name, 24)
ham_strip_weapon(arg[1], weapon_name)
give_item(arg[0], weapon_name)

if (weapon_id != 29 && weapon_id != 9 && weapon_id != 6 && weapon_id != 4)
cs_set_user_bpammo(arg[0], weapon_id, cs_get_user_bpammo(arg[0], weapon_id) + ammo)

ColorChat(arg[0], BLUE, "%L %L %s", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_1", Name2, weapon_name[7])
ColorChat(arg[1], RED, "%L ^04%s ^01%L %s", LANG_PLAYER,"AR_TAG", Name, LANG_PLAYER,"DED_2", weapon_name[7])
client_cmd(arg[0], "spk buttons/bell1")
client_cmd(arg[1], "spk buttons/blip1")
}
else if(ded_pcvar == 3) {
user_slap(arg[1], get_pcvar_num(g_DedovshinaSlap), 1)
ColorChat(arg[0], BLUE, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_SLAP_1", Name2, get_pcvar_num(g_DedovshinaSlap))
ColorChat(arg[1], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_SLAP_2", Name, get_pcvar_num(g_DedovshinaSlap))
client_cmd(arg[0], "spk buttons/bell1")
client_cmd(arg[1], "spk buttons/blip1")
}

g_DedRound[arg[0]] = g_rounds + get_pcvar_num(g_DedovshinaLock)
ColorChat(arg[0], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_LOCK", get_pcvar_num(g_DedovshinaLock))

return PLUGIN_HANDLED
}

stock MsgBarTime(iPlayer, iTime) {
message_begin(MSG_ONE, 108, _, iPlayer)
write_short(iTime)
message_end()
}

stock ham_strip_weapon(id,weapon[]) {
if(!equal(weapon,"weapon_",7)) return 0

new wId = get_weaponid(weapon)
if(!wId) return 0

new wEnt
while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
if(!wEnt) return 0

if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt)

if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0
ExecuteHamB(Ham_Item_Kill,wEnt)

set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId))

return 1
}
// Звания игроков онлайн===============================================================
public ShowStatsMotd(id) {
new iPlayers[32], iNum, iPlayer, player_stats[6]
get_players(iPlayers, iNum, "ch")
for(new i = 0; i < iNum; i++) {
iPlayer = iPlayers[i]
format(player_stats, 5, "%d %d", iPlayer, PlayerXP[iPlayer])
ArrayPushString(g_array_astats, player_stats)
}
ArraySort(g_array_astats, "sort_astats")

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> %L <td class=th> %L <td class=th> %L</tr>", LANG_PLAYER,"A_NAME", LANG_PLAYER,"ZVANIE", LANG_PLAYER,"PL_XP")

for(new i2 = 0; i2 < iNum; i2++) {
new string[6], PlayerID, Name[32], STEAM[35]

ArrayGetString(g_array_astats, i2, string, 5)
PlayerID = str_to_num(string[0])
get_user_name(PlayerID, Name, 31)
get_user_authid(PlayerID, STEAM, 34)

if(get_pcvar_num(g_See_Steam)) {
if(strlen(STEAM) > 18 || equal(STEAM, "STEAM_ID_LAN") || equal(STEAM, "VALVE_ID_LAN"))
len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %s ", Name)
else
len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %s <b>&lt;STEAM&gt;</b>", Name)
}
else
len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %s ", Name)

len += format(buffer[len], charsmax(buffer) - len, "<td> %L ", LANG_PLAYER,CLASSES[PlayerLevel[PlayerID]])
len += format(buffer[len], charsmax(buffer) - len, "<td> %d ", PlayerXP[PlayerID])
}
len += format(buffer[len], charsmax(buffer) - len, "</tr></table></body></html>")
new motd[64]
formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Stats")

show_motd(id, buffer, motd)

ArrayClear(g_array_astats)
}

public sort_astats(Array:g_array_astats, e1, e2) {
new string_e1[6], string_e2[6], var1, var2

ArrayGetString(g_array_astats, e1, string_e1, 5)
ArrayGetString(g_array_astats, e2, string_e2, 5)

var1 = str_to_num(string_e1[2])
var2 = str_to_num(string_e2[2])

if (var1 > var2)
return -1
if (var1 == var2)
return 0
if (var1 <= var2)
return 1
return 0
}


// Информация о бонусных настройках===================================================
public ShowSettingsMotd(id) {
new XPc4def[33], XPheadshot[33], PlBonus[33], PlNewLvl[33], FirstRound[64], Dedovshina[33]

if (get_pcvar_num(g_XPc4def))
copy(XPc4def, 32, "<font color=#008000>ON</font>")
else
copy(XPc4def, 32, "<font color=#FF0000>OFF</font>")

if (get_pcvar_num(g_XPheadshot))
copy(XPheadshot, 32, "<font color=#008000>ON</font>")
else
copy(XPheadshot, 32, "<font color=#FF0000>OFF</font>")

if (get_pcvar_num(g_PlBonus))
copy(PlBonus, 32, "<font color=#008000>ON</font>")
else
copy(PlBonus, 32, "<font color=#FF0000>OFF</font>")

if (get_pcvar_num(g_plNewLvl))
copy(PlNewLvl, 32, "<font color=#008000>ON</font>")
else
copy(PlNewLvl, 32, "<font color=#FF0000>OFF</font>")

if (get_pcvar_num(g_FirstRound) == 0 || get_pcvar_num(g_FirstRound) == 1)
format(FirstRound, 63, "<font color=#008000>%L </font>", LANG_PLAYER,"ALL")
else
format(FirstRound, 63, "<font color=#FF0000>%L <b>%d</b></font>", LANG_PLAYER,"DO", get_pcvar_num(g_FirstRound))

if (get_pcvar_num(g_Dedovshina))
copy(Dedovshina, 32, "<font color=#008000>ON</font>")
else
copy(Dedovshina, 32, "<font color=#FF0000>OFF</font>")

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> %L <td class=th> %L </tr>", LANG_PLAYER,"FUNCTION", LANG_PLAYER,"STATUS")

len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"XP_VALUE")
len += format(buffer[len], charsmax(buffer) - len, "<td><font color=#008000> <b> %d</b></font> ", get_pcvar_num(g_XPvalue))

len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"XP_C4DEF")
len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", XPc4def)

len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"XP_HEADSHOT")
len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", XPheadshot)

len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"PL_BONUS")
len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", PlBonus)

len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"PL_NEWLVL")
len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", PlNewLvl)

len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"FIRST_ROUND")
len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", FirstRound)

len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"DED_INFO")
len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", Dedovshina)

len += format(buffer[len], charsmax(buffer) - len, "</tr></table></body></html>")

new motd[64]
formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Settings")

show_motd(id, buffer, motd)
}

// Информация о бонусах===============================================================
public ShowBonusMotd(id) {
if(!get_pcvar_num(g_PlBonus)) {
ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"BONUS_OFF")

return PLUGIN_HANDLED
}
new NextLVL = PlayerLevel[id]+1
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; font-size:11px; 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 }")

if (PlayerLevel[id] == 30) {
len += format(buffer[len], charsmax(buffer) - len, ".th{ width:800; 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>%L <b>%L</b></tr>", LANG_PLAYER,"YOUR_LVL", LANG_PLAYER,CLASSES[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<tr><td>")

if(HE_G[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"HE_G")
if(FLASH_G[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"FLASH_G")
if(SMOKE_G[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"SMOKE_G")
if(ARMOR_B[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"ARMOR_B")
if(DEFUSE_N[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"DEFUSE_N")
if(NIGHT_V[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"NIGHT_V")
if(HEALTH_BONUS[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>+%d HP</b><br>", HEALTH_BONUS[PlayerLevel[id]])

len += format(buffer[len], charsmax(buffer) - len, "</tr></table>")
len += format(buffer[len], charsmax(buffer) - len, "<br><center>%L</center></body></html>", LANG_PLAYER,"BONUS_INFO")

new motd[64]
formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Bonus")

show_motd(id, buffer, motd)

return PLUGIN_HANDLED
}

len += format(buffer[len], charsmax(buffer) - len, ".th{ width:400; 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>%L <b>%L</b><td class=th>%L <b>%L</b></tr>", LANG_PLAYER,"YOUR_LVL", LANG_PLAYER,CLASSES[PlayerLevel[id]], LANG_PLAYER,"NEXT_LVL2", LANG_PLAYER,CLASSES[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<tr><td>")

if(HE_G[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"HE_G")
if(FLASH_G[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"FLASH_G")
if(SMOKE_G[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"SMOKE_G")
if(ARMOR_B[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"ARMOR_B")
if(DEFUSE_N[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"DEFUSE_N")
if(NIGHT_V[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"NIGHT_V")
if(HEALTH_BONUS[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>+%d HP</b><br>", HEALTH_BONUS[PlayerLevel[id]])

len += format(buffer[len], charsmax(buffer) - len, "<td>")

if(HE_G[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"HE_G")
if(FLASH_G[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"FLASH_G")
if(SMOKE_G[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"SMOKE_G")
if(ARMOR_B[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"ARMOR_B")
if(DEFUSE_N[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"DEFUSE_N")
if(NIGHT_V[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"NIGHT_V")
if(HEALTH_BONUS[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<b>+%d HP</b><br>", HEALTH_BONUS[NextLVL])

len += format(buffer[len], charsmax(buffer) - len, "</tr></table>")
len += format(buffer[len], charsmax(buffer) - len, "<br><center>%L</center></body></html>", LANG_PLAYER,"BONUS_INFO")

new motd[64]
formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Bonus")

show_motd(id, buffer, motd)

return PLUGIN_HANDLED
}

public amenu(id) {
new nameMenu[128], format_astats[64], format_ainfo[64], format_abonus[64], format_aprof[64], exitname[32]

format(nameMenu, 127, "%L", LANG_PLAYER,"AR_TAG_MENU", LANG_PLAYER,"MENU_NAME")
format(format_astats, 63, "%L", LANG_PLAYER,"MENU_ASTATS")
format(format_ainfo, 63, "%L", LANG_PLAYER,"MENU_AINFO")
format(format_abonus, 63, "%L", LANG_PLAYER,"MENU_ABONUS")
format(format_aprof, 63, "%L", LANG_PLAYER,"MENU_APROF")
format(exitname, 31, "%L", LANG_PLAYER,"MENU_EXITLANG")

new menu=menu_create(nameMenu, "amenu_item")
menu_additem(menu, format_astats, "1")
menu_additem(menu, format_ainfo, "2")
menu_additem(menu, format_abonus, "3")

if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Deagle) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Famas) ||
PlayerLevel[id] >= get_pcvar_num(g_Prof_Scout) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Ak47) ||
PlayerLevel[id] >= get_pcvar_num(g_Prof_M4a1) || PlayerLevel[id] >= get_pcvar_num(g_Prof_m249) ||
PlayerLevel[id] >= get_pcvar_num(g_Prof_Awp)) {
menu_additem(menu, format_aprof, "4")
}

if(is_plugin_loaded("Army Ranks StatsX Web") != -1) {
new format_atop[64]
format(format_atop, 63, "%L", LANG_PLAYER,"MENU_ATOP")
menu_additem(menu, format_atop, "5")
}

menu_setprop(menu, MPROP_EXITNAME, exitname)

menu_display(id, menu, 0)

return PLUGIN_CONTINUE
}

public amenu_item(id, menu, item) {
new data[6], iName[64], access, callback
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
new key = str_to_num(data)

switch(key) {
case 1:{
ShowStatsMotd(id)
}
case 2:{
ShowSettingsMotd(id)
}
case 3:{
ShowBonusMotd(id)
}
case 4:{
prof_menu(id)
}
case 5:{
client_cmd(id, "say /atop")
}
}
return PLUGIN_HANDLED
}


Отредактировал: GOOD FELLOW, - 6.7.2015, 18:47
Причина: Выдано устное предупреждение!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Avrora
сообщение 5.7.2015, 4:39
Сообщение #2


Стаж: 13 лет
Город: Санкт-Петербург


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

На пробуй
sma
Код
/*

*/

#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <fun>
#include <cstrike>
#include <csstats>
#include <csx>
#include <hamsandwich>
#include <fakemeta>
#include <engine>

////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////// НАСТРОЙКА МОДА //////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

// если ваш сервер НЕ использует Colored Translit, то закомментируйте следующую строку
//#define USE_COLORED_TRANSLIT

#define ADMIN_LISTEN ADMIN_RCON

#if !defined USE_COLORED_TRANSLIT
new g_AdminGMsg, g_Prefix, g_NoSlesh

new message[192]
new sayText
new teamInfo

new strName[191]
new strText[191]
new alive[11]

new g_AdminListen
#endif

////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////// НАСТРОЙКА МОДА //////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

#define PLUGIN "Army Ranks StatsX"
#define VERSION "1.1"
#define AUTHOR "Serega"

#define TASKID_INFO 7777
#define TASKID_LOAD 8888
#define TASKID_DED 9999

//StatusText=================
enum _:MAX_TYPES
{
   TYPE_NONE,
   TYPE_RELATION,
   TYPE_PLAYER
}

enum
{
   LOOK_FRIEND = 1,
   LOOK_ENEMY,
   LOOK_HOSTAGE
}

enum _:MAX_REPLACES
{
   RE_HP,
   RE_ARMY,
   RE_NAME
}

new const Replaces[MAX_REPLACES][] =
{
   "%hp%",
   "%army%",
   "%name%"
}

new status_value[MAX_TYPES]
new gStatusText
//===========================

new Array:g_array_restrict_bonus
new Array:g_array_astats

new MaxPlayers, g_RestFile[64]
new g_rounds
new g_DedRound[33]
new PlayerXP[33], PlayerLevel[33], g_MsgHud, levelUp[33]
new bool:bonus_blocked
new bool:g_Prof_Enable[33]
new bool:g_Prof_Auto[33]

new g_PlBonus, g_plNewLvl, g_PlusBonusNewLVL, g_PlusBonusNewLVLMoney, g_PlusBonusNewLVLHP
new g_CentrID, g_XPvalue, g_XPheadshot, g_XPc4def
new g_HudColor, g_HudPos, g_FirstRound
new g_Dedovshina, g_DedovshinaLock, g_DedovshinaTime, g_DedovshinaMoney, g_DedovshinaKnife, g_DedovshinaSlap, g_DownloadCS, g_See_Steam
new g_Bonus_He, g_Bonus_Flash, g_Bonus_Smoke, g_Bonus_Armor, g_Bonus_Defuse, g_Bonus_NV, g_Bonus_Health, g_Levels

new HE_G[31], FLASH_G[31], SMOKE_G[31], ARMOR_B[31], DEFUSE_N[31], NIGHT_V[31], HEALTH_BONUS[31], LEVELS[31]
new const CLASSES[][] = { "I_1", "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", "I_20", "I_21", "I_22", "I_23", "I_24", "I_25", "I_26", "I_27", "I_28", "I_29", "I_30" }

new g_Prof_Deagle, g_Prof_Famas, g_Prof_Scout, g_Prof_Ak47, g_Prof_M4a1,   g_Prof_m249, g_Prof_Awp, g_Prof_Awp_Damage, g_Prof_He_Damage, g_Prof_Flag
new g_Prof_Auto_Default, g_Prof_Flag_Default, g_Prof_Awp_Default, g_Prof_He_Default

public plugin_init() {
   register_plugin(PLUGIN, VERSION, AUTHOR)
   register_dictionary("army_ranks_statsx_30.txt" )

   register_logevent("RestartRound", 2, "1=Game_Commencing")
   register_event("TextMsg", "RestartRound", "a", "2=#Game_will_restart_in")

   register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0")
   register_event( "DeathMsg","EventDeath", "a")

   set_task(1.0, "Info", TASKID_INFO, "", 0, "b")
   g_MsgHud = CreateHudSyncObj()

   gStatusText = get_user_msgid("StatusText")
   register_event("StatusValue", "event_StatusValue", "be")

   RegisterHam(Ham_TakeDamage, "player", "Prof_Weapon")

   g_array_restrict_bonus = ArrayCreate(32, 1)
   g_array_astats = ArrayCreate(32, 1)

// настройки
   g_XPvalue = register_cvar("ar_xp_value", "1")
   g_XPc4def = register_cvar("ar_xp_c4def", "1")
   g_XPheadshot = register_cvar("ar_xp_hs", "1")

   g_PlBonus = register_cvar("ar_givebonus", "1")
   g_plNewLvl = register_cvar("ar_givebonusnl", "1")
   g_PlusBonusNewLVL = register_cvar("ar_plusbonusnl", "1")  
   g_PlusBonusNewLVLMoney = register_cvar("ar_plusbonusnl_money", "16000")  
   g_PlusBonusNewLVLHP = register_cvar("ar_plusbonusnl_hp", "200")  
   g_CentrID = register_cvar("ar_centrid", "1")
   g_HudColor = register_cvar("ar_hudcolor", "100 100 100")
   g_HudPos = register_cvar("ar_hudpos", "0.01 0.90")
   g_FirstRound = register_cvar("ar_firstround", "1")
   g_Dedovshina = register_cvar("ar_ded", "1")
   g_DedovshinaLock = register_cvar("ar_ded_lockround", "5")
   g_DedovshinaTime = register_cvar("ar_ded_time", "3.0")
   g_DedovshinaMoney = register_cvar("ar_ded_money", "1")
   g_DedovshinaKnife = register_cvar("ar_ded_knife", "1")
   g_DedovshinaSlap = register_cvar("ar_ded_slap", "10")
   g_DownloadCS = register_cvar("ar_download_url", "http://makeserver.ru/skachat_counter_strike_16.html")
   g_See_Steam = register_cvar("ar_see_steam", "1")

   #if !defined USE_COLORED_TRANSLIT
   g_NoSlesh = register_cvar("ar_noslesh","0")
   g_AdminGMsg   = register_cvar("ar_adminchat", "1")
   g_Prefix = register_cvar("ar_prefix","1")
   #endif

   g_Bonus_He = register_cvar("ar_bonus_he", "0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
   g_Bonus_Flash = register_cvar("ar_bonus_flash", "0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
   g_Bonus_Smoke = register_cvar("ar_bonus_smoke", "0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
   g_Bonus_Armor = register_cvar("ar_bonus_armor", "0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
   g_Bonus_Defuse = register_cvar("ar_bonus_defuse", "0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
   g_Bonus_NV = register_cvar("ar_bonus_nv", "0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
   g_Bonus_Health = register_cvar("ar_bonus_hp", "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0")
   g_Levels = register_cvar("ar_levels", "0 10 20 30 50 100 150 200 250 300 350 400 500 600 700 800 1000 1200 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 6500 7000")
   register_concmd("ar_lockmap", "MapConst", ADMIN_RCON, "Lock Map. <map>")

   g_Prof_Deagle = register_cvar("ar_prof_deagle", "21")
   g_Prof_Famas = register_cvar("ar_prof_famas", "22")
   g_Prof_Scout = register_cvar("ar_prof_scout", "23")
   g_Prof_Ak47 = register_cvar("ar_prof_ak47", "24")
   g_Prof_M4a1 = register_cvar("ar_prof_m4a1", "25")
   g_Prof_m249 = register_cvar("ar_prof_m249", "26")
   g_Prof_Awp = register_cvar("ar_prof_awp", "27")
   g_Prof_Awp_Damage = register_cvar("ar_prof_awp_damage", "28")
   g_Prof_He_Damage = register_cvar("ar_prof_he_damage", "29")
   g_Prof_Flag = register_cvar("ar_prof_flag", "30")

   g_Prof_Auto_Default = register_cvar("ar_prof_auto", "1")
   g_Prof_Awp_Default = register_cvar("ar_prof_awp_default", "2.0")
   g_Prof_He_Default = register_cvar("ar_prof_he_default", "1.5")
   g_Prof_Flag_Default = register_cvar("ar_prof_flag_default", "t")

// статистика игроков онлайн=====================
   register_clcmd("say /astats", "ShowStatsMotd")
   register_clcmd("say_team /astats", "ShowStatsMotd")
   register_clcmd("say /steam", "ShowStatsMotd")
   register_clcmd("say_team /steam", "ShowStatsMotd")

// информация о настройках плагина===============
   register_clcmd("say /ainfo", "ShowSettingsMotd")
   register_clcmd("say_team /ainfo", "ShowSettingsMotd")

// информация о бонусах==========================
   register_clcmd("say /abonus", "ShowBonusMotd")
   register_clcmd("say_team /abonus", "ShowBonusMotd")

// prof menu=====================================
   register_clcmd("say /aprof", "prof_menu")
   register_clcmd("say_team /aprof", "prof_menu")

// prof auto on==================================
   register_clcmd("say /aauto", "prof_auto")
   register_clcmd("say_team /aauto", "prof_auto")

// меню==========================================
   register_clcmd("say /amenu", "amenu")
   register_clcmd("say_team /amenu", "amenu")
   register_clcmd("amenu", "amenu")

// использование чата============================
   #if !defined USE_COLORED_TRANSLIT
   g_AdminListen = register_cvar ("amx_listen", "1")
   register_clcmd("say", "hook_say")
   register_clcmd("say_team", "hook_teamsay")
   sayText = get_user_msgid("SayText")
   teamInfo = get_user_msgid("TeamInfo")
   register_message(sayText, "arubaid_duplicated")
   #endif

// загрузка конфига==============================
   new configsDir[64]
   get_configsdir(configsDir, 63)
   server_cmd("exec %s/army_ranks_statsx_30.cfg", configsDir)

   format(g_RestFile, 63, "%s/weaprest.ini", configsDir)
   MaxPlayers = get_maxplayers()

   set_task(0.1, "RestrBonus")
   set_task(0.1, "LoadSettings")
}

// Проверка на запрещенные карты======================================================
public RestrBonus() {
   if(get_pcvar_num(g_plNewLvl)) {
      new Map[32]
      get_mapname(Map, 31)
      for(new i = 0; i < ArraySize(g_array_restrict_bonus); i++) {
         new restrict_bonus[32]
         ArrayGetString(g_array_restrict_bonus, i, restrict_bonus, 31)

         if(equal(Map, restrict_bonus)) {
            bonus_blocked = true
            break
         }
         else
            bonus_blocked = false
      }
   }
}
// Проверка на первый раунд===========================================================
public RestartRound() {
   g_rounds = 0
    
   for(new id = 1; id <= MaxPlayers; id++)
      g_DedRound[id] = 0
}

// Загрузка настроек запрещенных карт==================================================
public MapConst(id, level, cid) {
   if(!cmd_access(id, level, cid, 2))
      return PLUGIN_HANDLED

   new arg[32]
   read_argv(1, arg, 31)
   ArrayPushString(g_array_restrict_bonus, arg)

   return PLUGIN_HANDLED
}

// Загрузка настроек бонусов===========================================================
public LoadSettings() {
   new i
   new Bonus_He[64]
   get_pcvar_string(g_Bonus_He, Bonus_He, 63)
   trim(Bonus_He)
   for (i = 0; i < 30; i++)
      HE_G[i+1] = str_to_num(Bonus_He[i*2])

   new Bonus_Flash[64]
   get_pcvar_string(g_Bonus_Flash, Bonus_Flash, 63)
   trim(Bonus_Flash)
   for (i = 0; i < 30; i++)
      FLASH_G[i+1] = str_to_num(Bonus_Flash[i*2])

   new Bonus_Smoke[64]
   get_pcvar_string(g_Bonus_Smoke, Bonus_Smoke, 63)
   trim(Bonus_Smoke)
   for (i = 0; i < 30; i++)
      SMOKE_G[i+1] = str_to_num(Bonus_Smoke[i*2])

   new Bonus_Armor[64]
   get_pcvar_string(g_Bonus_Armor, Bonus_Armor, 63)
   trim(Bonus_Armor)
   for (i = 0; i < 30; i++)
      ARMOR_B[i+1] = str_to_num(Bonus_Armor[i*2])

   new Bonus_Defuse[64]
   get_pcvar_string(g_Bonus_Defuse, Bonus_Defuse, 63)
   trim(Bonus_Defuse)
   for (i = 0; i < 30; i++)
      DEFUSE_N[i+1] = str_to_num(Bonus_Defuse[i*2])

   new Bonus_NV[64]
   get_pcvar_string(g_Bonus_NV, Bonus_NV, 63)
   trim(Bonus_NV)
   for (i = 0; i < 30; i++)
      NIGHT_V[i+1] = str_to_num(Bonus_NV[i*2])

   new Bonus_Health[256], B_H[31][16]
   get_pcvar_string(g_Bonus_Health, Bonus_Health, 255)
   trim(Bonus_Health)
   parse(Bonus_Health,
      B_H[0], 15, B_H[1], 15, B_H[2], 15, B_H[3], 15, B_H[4], 15, B_H[5], 15, B_H[6], 15, B_H[7], 15, B_H[8], 15, B_H[9], 15,
      B_H[10], 15, B_H[11], 15, B_H[12], 15, B_H[13], 15, B_H[14], 15, B_H[15], 15, B_H[16], 15, B_H[17], 15, B_H[18], 15, B_H[19], 15,
      B_H[20], 15, B_H[21], 15, B_H[22], 15, B_H[23], 15, B_H[24], 15, B_H[25], 15, B_H[26], 15, B_H[27], 15, B_H[28], 15, B_H[29], 15, B_H[30], 15
   )
   for (i = 0; i < 30; i++)
      HEALTH_BONUS[i+1] = str_to_num(B_H[i])

   new cvLevels[256], LVL[31][16]
   get_pcvar_string(g_Levels, cvLevels, 255)
   trim(cvLevels)
   parse(cvLevels,
      LVL[0], 15, LVL[1], 15, LVL[2], 15, LVL[3], 15, LVL[4], 15, LVL[5], 15, LVL[6], 15, LVL[7], 15, LVL[8], 15, LVL[9], 15,
      LVL[10], 15, LVL[11], 15, LVL[12], 15, LVL[13], 15, LVL[14], 15, LVL[15], 15, LVL[16], 15, LVL[17], 15, LVL[18], 15, LVL[19], 15,
      LVL[20], 15, LVL[21], 15, LVL[22], 15, LVL[23], 15, LVL[24], 15, LVL[25], 15, LVL[26], 15, LVL[27], 15, LVL[28], 15, LVL[29], 15, LVL[30], 15
   )
   for (i = 0; i < 30; i++)
      LEVELS[i+1] = str_to_num(LVL[i])

   return PLUGIN_HANDLED
}

// проф =============================================================================
public prof_auto(id) {
   if(g_Prof_Auto[id]) {
      g_Prof_Auto[id] = false
      ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_AUTO_OFF")
   }
   else {
      g_Prof_Auto[id] = true
      ColorChat(id, BLUE, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_AUTO_ON")
   }
}

public prof_menu(id) {
   if(get_pcvar_num(g_FirstRound) && g_rounds < get_pcvar_num(g_FirstRound)) {
      ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_ROUND", get_pcvar_num(g_FirstRound))
      return PLUGIN_CONTINUE
   }
   if(!g_Prof_Enable[id]) {
      ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_DISABLE")
      return PLUGIN_CONTINUE
   }
   if(!is_user_alive(id)) {
      ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_ALIVE")
      return PLUGIN_CONTINUE
   }
   new szText[700]
   formatex(szText, charsmax(szText), "%L %L", LANG_PLAYER, "AR_TAG_MENU", LANG_PLAYER, "PROF_MENU_NAME")
   new menu = menu_create(szText, "prof_menu_item")

   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Deagle)) {
      formatex(szText, charsmax(szText), "Deagle")
      menu_additem(menu, szText, "1")
   }
   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Famas)) {
      formatex(szText, charsmax(szText), "Famas")
      menu_additem(menu, szText, "2")
   }
   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Scout)) {
      formatex(szText, charsmax(szText), "Scout")
      menu_additem(menu, szText, "3")                      
   }
   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Ak47)) {
      formatex(szText, charsmax(szText), "AK47")
      menu_additem(menu, szText, "4")
   }
   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_M4a1)) {
      formatex(szText, charsmax(szText), "M4A1")
      menu_additem(menu, szText, "5")
   }
   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_m249)) {
      formatex(szText, charsmax(szText), "Papagan")
      menu_additem(menu, szText, "6")
   }
   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Awp)) {
      formatex(szText, charsmax(szText), "AWP")
      menu_additem(menu, szText, "7")
   }

   format(szText, charsmax(szText), "%L", LANG_PLAYER,"MENU_EXITLANG")
   menu_setprop(menu, MPROP_EXITNAME, szText)

   menu_display(id, menu, 0)

   return PLUGIN_CONTINUE
}
public prof_menu_item(id,menu,item) {
   if(item == MENU_EXIT)
      return PLUGIN_HANDLED

   if(!is_user_alive(id)) {
      ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_ALIVE")
      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_prof(id, CSW_DEAGLE)
      case 2:
         give_prof(id, CSW_FAMAS)
      case 3:
         give_prof(id, CSW_SCOUT)
      case 4:
         give_prof(id, CSW_AK47)
      case 5:
         give_prof(id, CSW_M4A1)
      case 6:
         give_prof(id, CSW_M249)
      case 7:
         give_prof(id, CSW_AWP)  
   }
   g_Prof_Enable[id] = false
   return PLUGIN_HANDLED
}

public give_prof(id, weapon) {
   if (restSettings(weapon)) {
      client_print(id, print_center, "* This item is restricted *")
      prof_menu(id)
      return PLUGIN_HANDLED
   }
   for(new i = 1; i < 33; i++) {
      if (i == 2 || i== 4 || i == 6 || i == 9  || i == 29 || i == 31 || i == 32)
         continue
      if (weapon == 26) {
         if(user_has_weapon(id, i)) {
            client_cmd(id, "slot2;drop")
            break
         }
      }
      if(user_has_weapon(id, i)) {
         client_cmd(id, "slot1;drop")
         break
      }
   }
   new weapon_name[24]
   get_weaponname(weapon, weapon_name, 24)
   give_item(id, weapon_name)
   if(weapon == 3 || weapon == 15 || weapon == 22 || weapon == 28)
      cs_set_user_bpammo(id, weapon, 90)
   else if(weapon == 26)
      cs_set_user_bpammo(id, weapon, 35)
   else if(weapon == 20)
      cs_set_user_bpammo(id, weapon, 200)
   else if(weapon == 18)
      cs_set_user_bpammo(id, weapon, 30)

   return PLUGIN_HANDLED
}

public Prof_Weapon(victim, inflicator, attacker, Float:damage) {
   if(!is_user_connected(attacker))
      return
   if(victim == attacker || !victim)
      return

   if(get_user_weapon(attacker) == CSW_AWP && PlayerLevel[attacker] >= get_pcvar_num(g_Prof_Awp_Damage))
      SetHamParamFloat(4, damage * get_pcvar_float(g_Prof_Awp_Default))
   if(inflicator > 100 && PlayerLevel[attacker] >= get_pcvar_num(g_Prof_He_Damage))
      SetHamParamFloat(4, damage * get_pcvar_float(g_Prof_He_Default))
}
// использование чата=================================================================
#if !defined USE_COLORED_TRANSLIT

public arubaid_duplicated(msgId, msgDest, receiver) {
   return PLUGIN_HANDLED
}

public hook_say(id) {
   if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id) || !get_pcvar_num(g_Prefix)) {
      return PLUGIN_CONTINUE
   }

   read_args (message, 191)
   remove_quotes (message)
    
   if (message[0] == '@' || equal (message, ""))
      return PLUGIN_CONTINUE
   if(get_pcvar_num(g_NoSlesh)) {
      if (message[0] == '/')
         return PLUGIN_CONTINUE
   }

   new name[32]
   get_user_name (id, name, 31)
    
   new isAlive
    
   if (is_user_alive (id)) {
      isAlive = 1
      alive = "^x01"
   }
   else   {
      isAlive = 0
      alive = "^x01*DEAD* "
   }
    
   static color[10]
    
   if (get_user_flags(id) & ADMIN_CHAT) {
      get_user_team (id, color, 9)

      if(get_pcvar_num(g_AdminGMsg) == 1)    // green color
      {
         format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ^x04", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
      }
      else if(get_pcvar_num(g_AdminGMsg) == 2) // team color
      {
         format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ^x03", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
      }
      else // yellow color
      {
         format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
      }
   }
   else {
      get_user_team (id, color, 9)
      format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
   }

   format (strText, 191, "%s", message)
   format (message, 191, "%s%s", strName, strText)
          
   sendMessage (color, isAlive)
    
   return PLUGIN_CONTINUE
}

public hook_teamsay(id) {
   if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id) || !get_pcvar_num(g_Prefix)) {
      return PLUGIN_CONTINUE
   }
   new playerTeam = get_user_team(id)
   new playerTeamName[19]
    
   switch (playerTeam)
   {
      case 1:
         copy (playerTeamName, 11, "Terrorists")
          
      case 2:
         copy (playerTeamName, 18, "Counter-Terrorists")
          
      default:
         copy (playerTeamName, 9, "Spectator")
   }
      
   read_args (message, 191)
   remove_quotes (message)
    
   if (message[0] == '@' || equal (message, ""))
      return PLUGIN_CONTINUE
   if(get_pcvar_num(g_NoSlesh)) {
      if (message[0] == '/')
         return PLUGIN_CONTINUE
   }

   new name[32]
   get_user_name(id, name, 31)
    
   new isAlive
    
   if (is_user_alive (id)) {
      isAlive = 1
      alive = "^x01"
   }
   else {
      isAlive = 0
      alive = "^x01*DEAD* "
   }
    
   static color[10]

   if (get_user_flags(id) & ADMIN_CHAT) {
      get_user_team (id, color, 9)

      if(get_pcvar_num(g_AdminGMsg) == 1)    // green color
      {
         format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ^x04", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
      }
      else if(get_pcvar_num(g_AdminGMsg) == 2) // team color
      {
         format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ^x03", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
      }
      else // yellow color
      {
         format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
      }
   }
   else {
      get_user_team(id, color, 9)

      format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
   }
          
   format (strText, 191, "%s", message)
   format (message, 191, "%s%s", strName, strText)
    
   sendTeamMessage(color, isAlive, playerTeam)
    
   return PLUGIN_CONTINUE  
}

public sendMessage (color[], alive) {
   new teamName[10]
    
   for (new player = 1; player < MaxPlayers; player++) {
      if (!is_user_connected(player))
         continue

      if (alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player)  & ADMIN_LISTEN) {
         get_user_team(player, teamName, 9)
         changeTeamInfo(player, color)
         writeMessage(player, message)
         changeTeamInfo(player, teamName)
      }
   }
}

public sendTeamMessage (color[], alive, playerTeam) {
   new teamName[10]
    
   for (new player = 1; player < MaxPlayers; player++) {
      if (!is_user_connected(player))
         continue

      if (get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN) {
         if (alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN) {
            get_user_team(player, teamName, 9)
            changeTeamInfo(player, color)
            writeMessage(player, message)
            changeTeamInfo(player, teamName)
         }
      }
   }
}

public changeTeamInfo(player, team[]) {
   message_begin(MSG_ONE, teamInfo, _, player)
   write_byte(player)
   write_string(team)
   message_end()
}

public writeMessage(player, message[]) {
   message_begin(MSG_ONE, sayText, {0, 0, 0}, player)
   write_byte(player)
   write_string(message)
   message_end()
}

#endif

// Проверка уровня====================================================================
public checkLvl(id) {
   if(id > 0 && id < 33) {
      if (PlayerLevel[id] <= 0)
         PlayerLevel[id] = 1
      if (PlayerLevel[id] < 30) {
         while(PlayerXP[id] >= LEVELS[PlayerLevel[id]+1]) {
            PlayerLevel[id]++
            levelUp[id] = 1
            new Name[32]
            get_user_name(id, Name, 31)
            if(cs_get_user_team(id) == CS_TEAM_T)
               ColorChat(0, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL", Name, LANG_PLAYER,CLASSES[PlayerLevel[id]])
            else
               ColorChat(0, BLUE, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL", Name, LANG_PLAYER,CLASSES[PlayerLevel[id]])
         }
      }
   }
}
// Добавляет опыт======================================================================
public EventDeath() {
   new iVictim = read_data(2)
   new iTeam = get_user_team(iVictim)
   new iKiller = read_data(1)
   new headshot = read_data(3)
   if(iKiller != iVictim && get_user_team(iKiller) != iTeam && is_user_connected(iKiller) && PlayerLevel[iKiller] < 30) {
      if (get_pcvar_num(g_XPheadshot)) {
         if(headshot)
            PlayerXP[iKiller] += get_pcvar_num(g_XPvalue) * 2
         else
            PlayerXP[iKiller] += get_pcvar_num(g_XPvalue)
      }
      else
         PlayerXP[iKiller] += get_pcvar_num(g_XPvalue)

      checkLvl(iKiller)
   }
   return PLUGIN_CONTINUE
}

public bomb_explode(planter, defuser) {
   if (get_pcvar_num(g_XPc4def)) {
      PlayerXP[planter] += get_pcvar_num(g_XPvalue)*3
      checkLvl(planter)
   }
   return PLUGIN_CONTINUE
}

public bomb_defused(defuser) {
   if (get_pcvar_num(g_XPc4def)) {
      PlayerXP[defuser] += get_pcvar_num(g_XPvalue)*3
      checkLvl(defuser)
   }
   return PLUGIN_CONTINUE
}

// Старт раунда=======================================================================
public EventRoundStart() {
   g_rounds++
   set_task(0.1, "BonusRoundStart")

   for(new id = 1; id <= MaxPlayers; id++) {
      g_Prof_Enable[id] = true
      if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Deagle) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Famas) ||
      PlayerLevel[id] >= get_pcvar_num(g_Prof_Scout) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Ak47) ||
      PlayerLevel[id] >= get_pcvar_num(g_Prof_M4a1) || PlayerLevel[id] >= get_pcvar_num(g_Prof_m249) ||
      PlayerLevel[id] >= get_pcvar_num(g_Prof_Awp)) {
         if(is_user_connected(id) && is_user_alive(id) && g_Prof_Auto[id]) {
            if(get_pcvar_num(g_FirstRound) && g_rounds < get_pcvar_num(g_FirstRound))
               return PLUGIN_CONTINUE
            prof_menu(id)
         }
      }
   }
   return PLUGIN_CONTINUE
}

public BonusRoundStart() {
   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_connected(id)) {
         set_task(1.0, "load_client_data", id)
      }
      if(is_user_alive(id) && is_user_connected(id) && get_pcvar_num(g_PlBonus)) {
         if (get_pcvar_num(g_FirstRound) && g_rounds < get_pcvar_num(g_FirstRound))
            return PLUGIN_CONTINUE
         else {
            if(!bonus_blocked) {
               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]]
               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)) {
                  BonusNewLVL(id)
                  levelUp[id] = 0
               }
            }
         }
      }
   }
   return PLUGIN_CONTINUE
}

// Получение бонуса за lvl==============================================================
public BonusNewLVL(id) {
   new szText[700 char]
   formatex(szText, charsmax(szText), "%L %L", LANG_PLAYER, "AR_TAG_MENU", LANG_PLAYER, "NEW_LEVEL_MENU")
   new menu = menu_create(szText, "bnl_menu")

   formatex(szText, charsmax(szText), "AWP")
   menu_additem(menu, szText, "1", 0)

   formatex(szText, charsmax(szText), "AK47")
   menu_additem(menu, szText, "2", 0)

   formatex(szText, charsmax(szText), "M4A1")
   menu_additem(menu, szText, "3", 0)

   formatex(szText, charsmax(szText), "Galil")
   menu_additem(menu, szText, "4", 0)

   formatex(szText, charsmax(szText), "Famas")
   menu_additem(menu, szText, "5", 0)

   if(get_pcvar_num(g_PlusBonusNewLVL)) {
      formatex(szText, charsmax(szText), "%d$", get_pcvar_num(g_PlusBonusNewLVLMoney))
      menu_additem(menu, szText, "6", 0)

      formatex(szText, charsmax(szText), "%dHP", get_pcvar_num(g_PlusBonusNewLVLHP))
      menu_additem(menu, szText, "7", 0)
   }

   menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
   menu_display(id, menu, 0)

   return PLUGIN_CONTINUE
}
public bnl_menu(id, menu, item) {
   if(!is_user_alive(id) && is_user_connected(id)) {
      ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_ALIVE")
      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_weapons(id, CSW_AWP)
      case 2:
         give_weapons(id, CSW_AK47)
      case 3:
         give_weapons(id, CSW_M4A1)
      case 4:
         give_weapons(id, CSW_GALIL)
      case 5:
         give_weapons(id, CSW_FAMAS)
      case 6:
      {
         if(get_pcvar_num(g_PlusBonusNewLVL)) {
            cs_set_user_money(id, get_pcvar_num(g_PlusBonusNewLVLMoney))
            ColorChat(id, BLUE, "%L %L %d$", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL_GIVE", get_pcvar_num(g_PlusBonusNewLVLMoney))
         }
      }
      case 7:
      {
         if(get_pcvar_num(g_PlusBonusNewLVL)) {
            set_user_health(id, get_pcvar_num(g_PlusBonusNewLVLHP))
            ColorChat(id, BLUE, "%L %L %dHP", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL_GIVE", get_pcvar_num(g_PlusBonusNewLVLHP))
         }
      }
   }
   return PLUGIN_HANDLED
}

public give_weapons(id, weapon) {
   if (restSettings(weapon)) {
      client_print(id, print_center, "* This item is restricted *")
      BonusNewLVL(id)
      return PLUGIN_HANDLED
   }
   for(new i = 1; i < 33; i++) {
      if (i == 2 || i== 4 || i == 6 || i == 9  || i == 10 || i == 11 || i == 16 || i == 17 || i == 25 || i == 26 || i == 29 || i == 31 || i == 32)
         continue

      if(user_has_weapon(id, i))
         client_cmd(id, "slot1;drop")
   }
   new weapon_name[24]
   get_weaponname(weapon, weapon_name, 24)
   give_item(id, weapon_name)
   cs_set_user_bpammo(id, weapon, 90)
   cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
   give_item(id, "weapon_hegrenade")
   give_item(id, "weapon_flashbang")
   give_item(id, "weapon_flashbang")
   give_item(id, "weapon_smokegrenade")

   if(cs_get_user_team(id) == CS_TEAM_CT && !cs_get_user_defuse(id))
      cs_set_user_defuse(id, 1, 0, 160, 0, _, 0)

   ColorChat(id, RED, "%L %L %s", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL_GIVE", weapon_name[7])

   return PLUGIN_HANDLED
}

restSettings(weapon) {
   if (!file_exists(g_RestFile))
      return 0

   new text[16]
   new a, pos = 0

   while (read_file(g_RestFile, pos++, text, 15, a)) {
      if (text[0] == ';' || !a)
         continue

      new weapon_name[24], weapon_rest[24]
      get_weaponname(weapon, weapon_name, 24)
      parse(text, text, 15)
      format(weapon_rest, 23, "weapon_%s", text)
      if(equal(weapon_name, weapon_rest))
         return 1
   }
   return 0
}

stock give_user_bonus(id, f_g, h_g, s_g, n_v, a_b, d_k, health) {
   if(f_g >= 1)
      give_item(id, "weapon_flashbang")
   if(h_g>= 1)
      give_item(id, "weapon_hegrenade")
   if(s_g>= 1)
      give_item(id, "weapon_smokegrenade")
   if(n_v >= 1)
      cs_set_user_nvg(id, n_v)
   if(a_b >= 1)
      cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
   if(d_k >= 1) {
      if(cs_get_user_team(id) == CS_TEAM_CT && !cs_get_user_defuse(id))
         cs_set_user_defuse(id, 1, 0, 160, 0, _, 0)
   }
   set_user_health(id, get_user_health(id)+health)
}

// Информер========================================================================
=
public Info() {
   static temp[3][10], color[3], Float:pos[2], i, text[21]                    
   new needXP[64]
                                                  
   get_pcvar_string(g_HudColor, text, 20)
   parse(text, temp[0], 3, temp[1], 3, temp[2], 3)
   for(i = 0; i < 3; i++) color[i] = str_to_num(temp[i])
  
   get_pcvar_string(g_HudPos, text, 20)                                                        
   parse(text, temp[0], 9, temp[1], 9)
   for(i = 0; i < 2; i++) pos[i] = floatstr(temp[i])

   for(new id = 1; id <= MaxPlayers; id++) {                              
      if(!is_user_bot(id) && is_user_connected(id)) {
         set_hudmessage(color[0], color[1], color[2], pos[0], pos[1], 0.75, 0.0, 0, 6.0, 12.0)
         static buffer[192], len

         if(!is_user_alive(id)) {
            new id2 = pev(id, pev_iuser2)
            if(id2 > 0) {
               new Name2[32]
               get_user_name(id2, Name2, 31)
               if(PlayerLevel[id2] < 30) {
                  needXP[id2] = LEVELS[PlayerLevel[id2]+1] - PlayerXP[id2]
                  len = format(buffer, charsmax(buffer), "%L : %s", LANG_PLAYER,"A_NAME", Name2)
                  len += format(buffer[len], charsmax(buffer) - len, "^n%L :", LANG_PLAYER,"ZVANIE")
                  len += format(buffer[len], charsmax(buffer) - len, " %L", LANG_PLAYER,CLASSES[PlayerLevel[id2]])
                  len += format(buffer[len], charsmax(buffer) - len, "^n%L : %d", LANG_PLAYER,"PL_XP",PlayerXP[id2])
                  len += format(buffer[len], charsmax(buffer) - len, "^n%L :", LANG_PLAYER,"NEXT_LVL")
                  len += format(buffer[len], charsmax(buffer) - len, " %d ", needXP[id2])
                  len += format(buffer[len], charsmax(buffer) - len, "%L", LANG_PLAYER,"FRAGS")
               }
               else {
                  len = format(buffer, charsmax(buffer), "%L : %s", LANG_PLAYER,"A_NAME", Name2)
                  len += format(buffer[len], charsmax(buffer) - len, "^n%L :",LANG_PLAYER,"ZVANIE")
                  len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,CLASSES[PlayerLevel[id2]])
                  len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_MAX")
               }
            }
            else {
               if(PlayerLevel[id] < 30) {
                  needXP[id] = LEVELS[PlayerLevel[id]+1] - PlayerXP[id]
                  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")
               }
               else {
                  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")
               }
            }
         }
         else {
            if(PlayerLevel[id] < 30) {
               needXP[id] = LEVELS[PlayerLevel[id]+1] - PlayerXP[id]
               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")
            }
            else {
               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
}

public client_putinserver(id) {
   if(get_pcvar_num(g_Prof_Auto_Default))
      g_Prof_Auto[id] = true
   else
      g_Prof_Auto[id] = false

   set_task(0.1, "load_client_data", id)
}

public load_client_data(id) {
   if(!is_user_connected(id))
      return PLUGIN_HANDLED

   new stats[8], bodyhits[8], stats2[4]
   get_user_stats(id, stats, bodyhits)

   if (get_pcvar_num(g_XPc4def))
      get_user_stats2(id, stats2)
    
   if (get_pcvar_num(g_XPheadshot))
      PlayerXP[id] = ((stats[2]*2 + (stats[0] - stats[2])) + (stats2[1]*3 + stats2[3]*3)) * get_pcvar_num(g_XPvalue)
   else
      PlayerXP[id] = (stats2[1]*3 + stats2[3]*3 + stats[0]) * get_pcvar_num(g_XPvalue)

   new STEAM[32]
   get_user_authid(id, STEAM, 31)
   if (equal(STEAM, "STEAM_ID_LAN") || equal(STEAM, "VALVE_ID_LAN")) {
      PlayerXP[id] = 0
      new DownloadURL[64]
      get_pcvar_string(g_DownloadCS, DownloadURL, 63)
      client_print(id, print_console, "[%L] %L", LANG_PLAYER,"ARMY", LANG_PLAYER,"STEAM_ID_LAN")
      client_print(id, print_console, "[%L] %L %s", LANG_PLAYER,"ARMY", LANG_PLAYER,"DOWNLOAD_CS", DownloadURL)
      ColorChat(id, RED, "%L ^03%L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"STEAM_ID_LAN")
      ColorChat(id, RED, "%L ^03%L ^04%s", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DOWNLOAD_CS", DownloadURL)
   }

   for(new i = 1; i <= 30; i++) {
      if (i < 30) {
         if (PlayerXP[id] >= LEVELS[i] && PlayerXP[id] < LEVELS[i+1])
            PlayerLevel[id] = i
      }
      else {
         if (PlayerXP[id] >= LEVELS[30])
            PlayerLevel[id] = 30
      }
   }
   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Flag)) {
      new string[32]
      get_pcvar_string(g_Prof_Flag_Default, string, 31)
      new flags = read_flags(string)
      set_user_flags(id, flags)
   }
   return PLUGIN_HANDLED
}

public plugin_natives()
   register_native("get_user_lvl", "native_get_user_lvl", 1)

public native_get_user_lvl(id)
   return PlayerLevel[id]

// Наведение прицела на игрока=========================================================
public event_StatusValue(id) {
   new num = read_data(1)
   if( num <= 0 || num >= MAX_TYPES)
      return

   new update = status_value[num] = read_data(2)
   new id2 = read_data(2)
   switch(num) {
      case TYPE_RELATION: {
         if(!update && is_user_alive(id) &&   get_pcvar_num(g_CentrID)) {
            message_begin(MSG_ONE_UNRELIABLE, gStatusText, _, id)
            write_byte(0)
            write_string("")
            message_end()
         }
         if(is_user_connected(id) && get_pcvar_num(g_Dedovshina) && (g_rounds >= g_DedRound[id])) {
            remove_task(id+TASKID_DED)
            MsgBarTime(id, 0)
         }
      }
      case TYPE_PLAYER: {
         if(is_user_alive(id) && get_pcvar_num(g_CentrID)) {
            new message[192]
            switch(status_value[TYPE_RELATION]) {
               case LOOK_FRIEND: {
                  copy(message, charsmax(message), "Friend : %name%  Health : %hp%  %army%")
               }
               case LOOK_ENEMY: {
                  copy(message, charsmax(message), "Enemy : %name%  %army%")
               }
               case LOOK_HOSTAGE: {
                  return
               }
            }
            EditMessage(message, update, true, get_user_health(update))
            message_begin(MSG_ONE_UNRELIABLE, gStatusText, _, id)
            write_byte(0)
            write_string(message)
            message_end()
         }
         if(is_user_connected(id) && is_user_connected(id2) && is_user_alive(id) && get_pcvar_num(g_Dedovshina) && (g_rounds >= g_DedRound[id]) && (get_user_button(id) & IN_USE)) {
            if(cs_get_user_team(id) == cs_get_user_team(id2)) {
               MsgBarTime(id, floatround(get_pcvar_float(g_DedovshinaTime)))
               new arg[2]
               arg[0] = id
               arg[1] = id2
               set_task(get_pcvar_float(g_DedovshinaTime), "Dedovshina", id+TASKID_DED, arg, 2)
            }
         }
      }
   }
}
EditMessage(message[192], player, bool:status_text, hp) {
   new temp[35]

   if(is_user_alive(player)) {
      for(new i; i < MAX_REPLACES; i++) {
         switch(i) {
            case RE_HP: {
               num_to_str(hp, temp, charsmax(temp))
            }
            case RE_ARMY: {
               format(temp, charsmax(temp), "^n%L : %L", LANG_PLAYER,"ZVANIE", LANG_PLAYER,CLASSES[PlayerLevel[player]])
            }
            case RE_NAME: {
               if(status_text)
                  copy(temp, charsmax(temp), "%p2")
               else
                  get_user_name(player, temp, charsmax(temp))
            }
            default: {
               copy(temp, charsmax(temp), "")
            }
         }
         replace(message, charsmax(message), Replaces[i], temp)
      }
   }
   trim(message)
}

public Dedovshina(arg[]) {
   new Name[32], Name2[32], ded_pcvar

   get_user_name(arg[0], Name, 31)
   get_user_name(arg[1], Name2, 31)

   if(PlayerLevel[arg[0]] <= PlayerLevel[arg[1]]) {
      ColorChat(arg[0], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_FAIL", Name2)

      return PLUGIN_HANDLED
   }

   if(get_pcvar_num(g_Dedovshina) == 4)
      ded_pcvar = random_num(1, 2)
   else
      ded_pcvar = get_pcvar_num(g_Dedovshina)

   if(ded_pcvar == 1) {
      new money2 = cs_get_user_money(arg[1])

      if(cs_get_user_money(arg[0]) + money2 > 16000 && get_pcvar_num(g_DedovshinaMoney))
         cs_set_user_money(arg[0], 16000)
      else
         cs_set_user_money(arg[0], cs_get_user_money(arg[0]) + money2)

      cs_set_user_money(arg[1], 0)
      ColorChat(arg[0], BLUE, "%L %L %d$", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_1", Name2, money2)
      ColorChat(arg[1], RED, "%L ^04%s ^01%L %d$", LANG_PLAYER,"AR_TAG", Name, LANG_PLAYER,"DED_2", money2)
      client_cmd(arg[0], "spk buttons/bell1")
      client_cmd(arg[1], "spk buttons/blip1")
   }
   else if(ded_pcvar == 2) {
      new clip, ammo, weapon_name[24]
      new weapon_id = get_user_weapon(arg[1], clip, ammo)

      if(!get_pcvar_num(g_DedovshinaKnife)) {
         if (weapon_id == 29) {
            ColorChat(arg[0], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_FAIL_WEAPON")

            return PLUGIN_HANDLED
         }
      }
      get_weaponname(weapon_id, weapon_name, 24)
      ham_strip_weapon(arg[1], weapon_name)
      give_item(arg[0], weapon_name)

      if (weapon_id != 29 && weapon_id != 9 && weapon_id != 6 && weapon_id != 4)
         cs_set_user_bpammo(arg[0], weapon_id, cs_get_user_bpammo(arg[0], weapon_id) + ammo)

      ColorChat(arg[0], BLUE, "%L %L %s", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_1", Name2, weapon_name[7])
      ColorChat(arg[1], RED, "%L ^04%s ^01%L %s", LANG_PLAYER,"AR_TAG", Name, LANG_PLAYER,"DED_2", weapon_name[7])
      client_cmd(arg[0], "spk buttons/bell1")
      client_cmd(arg[1], "spk buttons/blip1")
   }
   else if(ded_pcvar == 3) {
      user_slap(arg[1], get_pcvar_num(g_DedovshinaSlap), 1)
      ColorChat(arg[0], BLUE, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_SLAP_1", Name2, get_pcvar_num(g_DedovshinaSlap))
      ColorChat(arg[1], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_SLAP_2", Name, get_pcvar_num(g_DedovshinaSlap))
      client_cmd(arg[0], "spk buttons/bell1")
      client_cmd(arg[1], "spk buttons/blip1")
   }

   g_DedRound[arg[0]] = g_rounds + get_pcvar_num(g_DedovshinaLock)
   ColorChat(arg[0], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_LOCK", get_pcvar_num(g_DedovshinaLock))

   return PLUGIN_HANDLED
}

stock MsgBarTime(iPlayer, iTime) {
   message_begin(MSG_ONE, 108, _, iPlayer)
   write_short(iTime)
   message_end()
}

stock ham_strip_weapon(id,weapon[]) {
   if(!equal(weapon,"weapon_",7)) return 0
  
   new wId = get_weaponid(weapon)
   if(!wId) return 0
  
   new wEnt
   while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
   if(!wEnt) return 0
  
   if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt)
  
   if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0
   ExecuteHamB(Ham_Item_Kill,wEnt)
  
   set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId))
    
   return 1
}
// Звания игроков онлайн===============================================================
public ShowStatsMotd(id) {
   new iPlayers[32], iNum, iPlayer, player_stats[6]
   get_players(iPlayers, iNum, "ch")
   for(new i = 0; i < iNum; i++) {
      iPlayer = iPlayers[i]
      format(player_stats, 5, "%d %d", iPlayer, PlayerXP[iPlayer])
      ArrayPushString(g_array_astats, player_stats)
   }
   ArraySort(g_array_astats, "sort_astats")

   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> %L <td class=th> %L <td class=th> %L</tr>", LANG_PLAYER,"A_NAME", LANG_PLAYER,"ZVANIE", LANG_PLAYER,"PL_XP")

   for(new i2 = 0; i2 < iNum; i2++) {
      new string[6], PlayerID, Name[32], STEAM[35]

      ArrayGetString(g_array_astats, i2, string, 5)
      PlayerID = str_to_num(string[0])
      get_user_name(PlayerID, Name, 31)
      get_user_authid(PlayerID, STEAM, 34)

      if(get_pcvar_num(g_See_Steam)) {
         if(strlen(STEAM) > 18 || equal(STEAM, "STEAM_ID_LAN") || equal(STEAM, "VALVE_ID_LAN"))
            len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %s ", Name)
         else
            len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %s <b>&lt;STEAM&gt;</b>", Name)
      }
      else
         len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %s ", Name)

      len += format(buffer[len], charsmax(buffer) - len, "<td> %L ", LANG_PLAYER,CLASSES[PlayerLevel[PlayerID]])
      len += format(buffer[len], charsmax(buffer) - len, "<td> %d ", PlayerXP[PlayerID])
   }
   len += format(buffer[len], charsmax(buffer) - len, "</tr></table></body></html>")
   new motd[64]
   formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Stats")

   show_motd(id, buffer, motd)

   ArrayClear(g_array_astats)
}

public sort_astats(Array:g_array_astats, e1, e2) {
   new string_e1[6], string_e2[6], var1, var2

   ArrayGetString(g_array_astats, e1, string_e1, 5)
   ArrayGetString(g_array_astats, e2, string_e2, 5)

   var1 = str_to_num(string_e1[2])
   var2 = str_to_num(string_e2[2])

   if (var1 > var2)
      return -1
   if (var1 == var2)
      return 0
   if (var1 <= var2)
      return 1
   return 0
}


// Информация о бонусных настройках===================================================
public ShowSettingsMotd(id) {
   new XPc4def[33], XPheadshot[33], PlBonus[33], PlNewLvl[33], FirstRound[64], Dedovshina[33]

   if (get_pcvar_num(g_XPc4def))
      copy(XPc4def, 32, "<font color=#008000>ON</font>")
   else
      copy(XPc4def, 32, "<font color=#FF0000>OFF</font>")

   if (get_pcvar_num(g_XPheadshot))
      copy(XPheadshot, 32, "<font color=#008000>ON</font>")
   else
      copy(XPheadshot, 32, "<font color=#FF0000>OFF</font>")

   if (get_pcvar_num(g_PlBonus))
      copy(PlBonus, 32, "<font color=#008000>ON</font>")
   else
      copy(PlBonus, 32, "<font color=#FF0000>OFF</font>")

   if (get_pcvar_num(g_plNewLvl))
      copy(PlNewLvl, 32, "<font color=#008000>ON</font>")
   else
      copy(PlNewLvl, 32, "<font color=#FF0000>OFF</font>")

   if (get_pcvar_num(g_FirstRound) == 0 || get_pcvar_num(g_FirstRound) == 1)
      format(FirstRound, 63, "<font color=#008000>%L </font>", LANG_PLAYER,"ALL")
   else
      format(FirstRound, 63, "<font color=#FF0000>%L <b>%d</b></font>", LANG_PLAYER,"DO", get_pcvar_num(g_FirstRound))

   if (get_pcvar_num(g_Dedovshina))
      copy(Dedovshina, 32, "<font color=#008000>ON</font>")
   else
      copy(Dedovshina, 32, "<font color=#FF0000>OFF</font>")

   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> %L <td class=th> %L </tr>", LANG_PLAYER,"FUNCTION", LANG_PLAYER,"STATUS")

   len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"XP_VALUE")
   len += format(buffer[len], charsmax(buffer) - len, "<td><font color=#008000> <b> %d</b></font> ", get_pcvar_num(g_XPvalue))

   len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"XP_C4DEF")
   len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", XPc4def)

   len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"XP_HEADSHOT")
   len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", XPheadshot)

   len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"PL_BONUS")
   len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", PlBonus)

   len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"PL_NEWLVL")
   len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", PlNewLvl)

   len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"FIRST_ROUND")
   len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", FirstRound)

   len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"DED_INFO")
   len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", Dedovshina)

   len += format(buffer[len], charsmax(buffer) - len, "</tr></table></body></html>")

   new motd[64]
   formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Settings")

   show_motd(id, buffer, motd)
}

// Информация о бонусах===============================================================
public ShowBonusMotd(id) {
   if(!get_pcvar_num(g_PlBonus)) {
      ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"BONUS_OFF")

      return PLUGIN_HANDLED
   }
   new NextLVL = PlayerLevel[id]+1
   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; font-size:11px; 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 }")

   if (PlayerLevel[id] == 30) {
      len += format(buffer[len], charsmax(buffer) - len, ".th{ width:800; 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>%L <b>%L</b></tr>", LANG_PLAYER,"YOUR_LVL", LANG_PLAYER,CLASSES[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<tr><td>")

      if(HE_G[PlayerLevel[id]])
         len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"HE_G")
      if(FLASH_G[PlayerLevel[id]])
         len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"FLASH_G")
      if(SMOKE_G[PlayerLevel[id]])
         len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"SMOKE_G")
      if(ARMOR_B[PlayerLevel[id]])
         len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"ARMOR_B")
      if(DEFUSE_N[PlayerLevel[id]])
         len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"DEFUSE_N")
      if(NIGHT_V[PlayerLevel[id]])
         len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"NIGHT_V")
      if(HEALTH_BONUS[PlayerLevel[id]])
         len += format(buffer[len], charsmax(buffer) - len, "<b>+%d HP</b>
", HEALTH_BONUS[PlayerLevel[id]])

      len += format(buffer[len], charsmax(buffer) - len, "</tr></table>")
      len += format(buffer[len], charsmax(buffer) - len, "
<center>%L</center></body></html>", LANG_PLAYER,"BONUS_INFO")

      new motd[64]
      formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Bonus")

      show_motd(id, buffer, motd)

      return PLUGIN_HANDLED
   }

   len += format(buffer[len], charsmax(buffer) - len, ".th{ width:400; 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>%L <b>%L</b><td class=th>%L <b>%L</b></tr>", LANG_PLAYER,"YOUR_LVL", LANG_PLAYER,CLASSES[PlayerLevel[id]], LANG_PLAYER,"NEXT_LVL2", LANG_PLAYER,CLASSES[NextLVL])
   len += format(buffer[len], charsmax(buffer) - len, "<tr><td>")

   if(HE_G[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"HE_G")
   if(FLASH_G[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"FLASH_G")
   if(SMOKE_G[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"SMOKE_G")
   if(ARMOR_B[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"ARMOR_B")
   if(DEFUSE_N[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"DEFUSE_N")
   if(NIGHT_V[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"NIGHT_V")
   if(HEALTH_BONUS[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<b>+%d HP</b>
", HEALTH_BONUS[PlayerLevel[id]])

   len += format(buffer[len], charsmax(buffer) - len, "<td>")

   if(HE_G[NextLVL])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"HE_G")
   if(FLASH_G[NextLVL])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"FLASH_G")
   if(SMOKE_G[NextLVL])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"SMOKE_G")
   if(ARMOR_B[NextLVL])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"ARMOR_B")
   if(DEFUSE_N[NextLVL])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"DEFUSE_N")
   if(NIGHT_V[NextLVL])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"NIGHT_V")
   if(HEALTH_BONUS[NextLVL])
      len += format(buffer[len], charsmax(buffer) - len, "<b>+%d HP</b>
", HEALTH_BONUS[NextLVL])

   len += format(buffer[len], charsmax(buffer) - len, "</tr></table>")
   len += format(buffer[len], charsmax(buffer) - len, "
<center>%L</center></body></html>", LANG_PLAYER,"BONUS_INFO")

   new motd[64]
   formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Bonus")

   show_motd(id, buffer, motd)

   return PLUGIN_HANDLED
}

public amenu(id) {
   new nameMenu[128], format_astats[64], format_ainfo[64], format_abonus[64], format_aprof[64], exitname[32]

   format(nameMenu, 127, "%L", LANG_PLAYER,"AR_TAG_MENU", LANG_PLAYER,"MENU_NAME")
   format(format_astats, 63, "%L", LANG_PLAYER,"MENU_ASTATS")
   format(format_ainfo, 63, "%L", LANG_PLAYER,"MENU_AINFO")
   format(format_abonus, 63, "%L", LANG_PLAYER,"MENU_ABONUS")
   format(format_aprof, 63, "%L", LANG_PLAYER,"MENU_APROF")
   format(exitname, 31, "%L", LANG_PLAYER,"MENU_EXITLANG")

   new menu=menu_create(nameMenu, "amenu_item")
   menu_additem(menu, format_astats, "1")
   menu_additem(menu, format_ainfo, "2")
   menu_additem(menu, format_abonus, "3")

   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Deagle) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Famas) ||
   PlayerLevel[id] >= get_pcvar_num(g_Prof_Scout) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Ak47) ||
   PlayerLevel[id] >= get_pcvar_num(g_Prof_M4a1) || PlayerLevel[id] >= get_pcvar_num(g_Prof_m249) ||
   PlayerLevel[id] >= get_pcvar_num(g_Prof_Awp)) {
      menu_additem(menu, format_aprof, "4")
   }

   if(is_plugin_loaded("Army Ranks StatsX Web") != -1) {
      new format_atop[64]
      format(format_atop, 63, "%L", LANG_PLAYER,"MENU_ATOP")
      menu_additem(menu, format_atop, "5")
   }

   menu_setprop(menu, MPROP_EXITNAME, exitname)

   menu_display(id, menu, 0)

   return PLUGIN_CONTINUE
}

public amenu_item(id, menu, item) {
   new data[6], iName[64], access, callback
    menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
   new key = str_to_num(data)
    
   switch(key) {
      case 1:{
         ShowStatsMotd(id)
      }
      case 2:{
         ShowSettingsMotd(id)
      }
      case 3:{
         ShowBonusMotd(id)
      }
      case 4:{
         prof_menu(id)
      }
      case 5:{
         client_cmd(id, "say /atop")
      }
   }
   return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
MrMrak
сообщение 5.7.2015, 11:47
Сообщение #3
Стаж: 10 лет

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

Цитата(Avrora @ 5.7.2015, 5:39) *
На пробуй
sma
Код
/*

*/

#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <fun>
#include <cstrike>
#include <csstats>
#include <csx>
#include <hamsandwich>
#include <fakemeta>
#include <engine>

////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////// НАСТРОЙКА МОДА //////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

// если ваш сервер НЕ использует Colored Translit, то закомментируйте следующую строку
//#define USE_COLORED_TRANSLIT

#define ADMIN_LISTEN ADMIN_RCON

#if !defined USE_COLORED_TRANSLIT
new g_AdminGMsg, g_Prefix, g_NoSlesh

new message[192]
new sayText
new teamInfo

new strName[191]
new strText[191]
new alive[11]

new g_AdminListen
#endif

////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////// НАСТРОЙКА МОДА //////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

#define PLUGIN "Army Ranks StatsX"
#define VERSION "1.1"
#define AUTHOR "Serega"

#define TASKID_INFO 7777
#define TASKID_LOAD 8888
#define TASKID_DED 9999

//StatusText=================
enum _:MAX_TYPES
{
   TYPE_NONE,
   TYPE_RELATION,
   TYPE_PLAYER
}

enum
{
   LOOK_FRIEND = 1,
   LOOK_ENEMY,
   LOOK_HOSTAGE
}

enum _:MAX_REPLACES
{
   RE_HP,
   RE_ARMY,
   RE_NAME
}

new const Replaces[MAX_REPLACES][] =
{
   "%hp%",
   "%army%",
   "%name%"
}

new status_value[MAX_TYPES]
new gStatusText
//===========================

new Array:g_array_restrict_bonus
new Array:g_array_astats

new MaxPlayers, g_RestFile[64]
new g_rounds
new g_DedRound[33]
new PlayerXP[33], PlayerLevel[33], g_MsgHud, levelUp[33]
new bool:bonus_blocked
new bool:g_Prof_Enable[33]
new bool:g_Prof_Auto[33]

new g_PlBonus, g_plNewLvl, g_PlusBonusNewLVL, g_PlusBonusNewLVLMoney, g_PlusBonusNewLVLHP
new g_CentrID, g_XPvalue, g_XPheadshot, g_XPc4def
new g_HudColor, g_HudPos, g_FirstRound
new g_Dedovshina, g_DedovshinaLock, g_DedovshinaTime, g_DedovshinaMoney, g_DedovshinaKnife, g_DedovshinaSlap, g_DownloadCS, g_See_Steam
new g_Bonus_He, g_Bonus_Flash, g_Bonus_Smoke, g_Bonus_Armor, g_Bonus_Defuse, g_Bonus_NV, g_Bonus_Health, g_Levels

new HE_G[31], FLASH_G[31], SMOKE_G[31], ARMOR_B[31], DEFUSE_N[31], NIGHT_V[31], HEALTH_BONUS[31], LEVELS[31]
new const CLASSES[][] = { "I_1", "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", "I_20", "I_21", "I_22", "I_23", "I_24", "I_25", "I_26", "I_27", "I_28", "I_29", "I_30" }

new g_Prof_Deagle, g_Prof_Famas, g_Prof_Scout, g_Prof_Ak47, g_Prof_M4a1,   g_Prof_m249, g_Prof_Awp, g_Prof_Awp_Damage, g_Prof_He_Damage, g_Prof_Flag
new g_Prof_Auto_Default, g_Prof_Flag_Default, g_Prof_Awp_Default, g_Prof_He_Default

public plugin_init() {
   register_plugin(PLUGIN, VERSION, AUTHOR)
   register_dictionary("army_ranks_statsx_30.txt" )

   register_logevent("RestartRound", 2, "1=Game_Commencing")
   register_event("TextMsg", "RestartRound", "a", "2=#Game_will_restart_in")

   register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0")
   register_event( "DeathMsg","EventDeath", "a")

   set_task(1.0, "Info", TASKID_INFO, "", 0, "b")
   g_MsgHud = CreateHudSyncObj()

   gStatusText = get_user_msgid("StatusText")
   register_event("StatusValue", "event_StatusValue", "be")

   RegisterHam(Ham_TakeDamage, "player", "Prof_Weapon")

   g_array_restrict_bonus = ArrayCreate(32, 1)
   g_array_astats = ArrayCreate(32, 1)

// настройки
   g_XPvalue = register_cvar("ar_xp_value", "1")
   g_XPc4def = register_cvar("ar_xp_c4def", "1")
   g_XPheadshot = register_cvar("ar_xp_hs", "1")

   g_PlBonus = register_cvar("ar_givebonus", "1")
   g_plNewLvl = register_cvar("ar_givebonusnl", "1")
   g_PlusBonusNewLVL = register_cvar("ar_plusbonusnl", "1")  
   g_PlusBonusNewLVLMoney = register_cvar("ar_plusbonusnl_money", "16000")  
   g_PlusBonusNewLVLHP = register_cvar("ar_plusbonusnl_hp", "200")  
   g_CentrID = register_cvar("ar_centrid", "1")
   g_HudColor = register_cvar("ar_hudcolor", "100 100 100")
   g_HudPos = register_cvar("ar_hudpos", "0.01 0.90")
   g_FirstRound = register_cvar("ar_firstround", "1")
   g_Dedovshina = register_cvar("ar_ded", "1")
   g_DedovshinaLock = register_cvar("ar_ded_lockround", "5")
   g_DedovshinaTime = register_cvar("ar_ded_time", "3.0")
   g_DedovshinaMoney = register_cvar("ar_ded_money", "1")
   g_DedovshinaKnife = register_cvar("ar_ded_knife", "1")
   g_DedovshinaSlap = register_cvar("ar_ded_slap", "10")
   g_DownloadCS = register_cvar("ar_download_url", "http://makeserver.ru/skachat_counter_strike_16.html")
   g_See_Steam = register_cvar("ar_see_steam", "1")

   #if !defined USE_COLORED_TRANSLIT
   g_NoSlesh = register_cvar("ar_noslesh","0")
   g_AdminGMsg   = register_cvar("ar_adminchat", "1")
   g_Prefix = register_cvar("ar_prefix","1")
   #endif

   g_Bonus_He = register_cvar("ar_bonus_he", "0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
   g_Bonus_Flash = register_cvar("ar_bonus_flash", "0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
   g_Bonus_Smoke = register_cvar("ar_bonus_smoke", "0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
   g_Bonus_Armor = register_cvar("ar_bonus_armor", "0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
   g_Bonus_Defuse = register_cvar("ar_bonus_defuse", "0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
   g_Bonus_NV = register_cvar("ar_bonus_nv", "0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
   g_Bonus_Health = register_cvar("ar_bonus_hp", "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0")
   g_Levels = register_cvar("ar_levels", "0 10 20 30 50 100 150 200 250 300 350 400 500 600 700 800 1000 1200 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 6500 7000")
   register_concmd("ar_lockmap", "MapConst", ADMIN_RCON, "Lock Map. <map>")

   g_Prof_Deagle = register_cvar("ar_prof_deagle", "21")
   g_Prof_Famas = register_cvar("ar_prof_famas", "22")
   g_Prof_Scout = register_cvar("ar_prof_scout", "23")
   g_Prof_Ak47 = register_cvar("ar_prof_ak47", "24")
   g_Prof_M4a1 = register_cvar("ar_prof_m4a1", "25")
   g_Prof_m249 = register_cvar("ar_prof_m249", "26")
   g_Prof_Awp = register_cvar("ar_prof_awp", "27")
   g_Prof_Awp_Damage = register_cvar("ar_prof_awp_damage", "28")
   g_Prof_He_Damage = register_cvar("ar_prof_he_damage", "29")
   g_Prof_Flag = register_cvar("ar_prof_flag", "30")

   g_Prof_Auto_Default = register_cvar("ar_prof_auto", "1")
   g_Prof_Awp_Default = register_cvar("ar_prof_awp_default", "2.0")
   g_Prof_He_Default = register_cvar("ar_prof_he_default", "1.5")
   g_Prof_Flag_Default = register_cvar("ar_prof_flag_default", "t")

// статистика игроков онлайн=====================
   register_clcmd("say /astats", "ShowStatsMotd")
   register_clcmd("say_team /astats", "ShowStatsMotd")
   register_clcmd("say /steam", "ShowStatsMotd")
   register_clcmd("say_team /steam", "ShowStatsMotd")

// информация о настройках плагина===============
   register_clcmd("say /ainfo", "ShowSettingsMotd")
   register_clcmd("say_team /ainfo", "ShowSettingsMotd")

// информация о бонусах==========================
   register_clcmd("say /abonus", "ShowBonusMotd")
   register_clcmd("say_team /abonus", "ShowBonusMotd")

// prof menu=====================================
   register_clcmd("say /aprof", "prof_menu")
   register_clcmd("say_team /aprof", "prof_menu")

// prof auto on==================================
   register_clcmd("say /aauto", "prof_auto")
   register_clcmd("say_team /aauto", "prof_auto")

// меню==========================================
   register_clcmd("say /amenu", "amenu")
   register_clcmd("say_team /amenu", "amenu")
   register_clcmd("amenu", "amenu")

// использование чата============================
   #if !defined USE_COLORED_TRANSLIT
   g_AdminListen = register_cvar ("amx_listen", "1")
   register_clcmd("say", "hook_say")
   register_clcmd("say_team", "hook_teamsay")
   sayText = get_user_msgid("SayText")
   teamInfo = get_user_msgid("TeamInfo")
   register_message(sayText, "arubaid_duplicated")
   #endif

// загрузка конфига==============================
   new configsDir[64]
   get_configsdir(configsDir, 63)
   server_cmd("exec %s/army_ranks_statsx_30.cfg", configsDir)

   format(g_RestFile, 63, "%s/weaprest.ini", configsDir)
   MaxPlayers = get_maxplayers()

   set_task(0.1, "RestrBonus")
   set_task(0.1, "LoadSettings")
}

// Проверка на запрещенные карты======================================================
public RestrBonus() {
   if(get_pcvar_num(g_plNewLvl)) {
      new Map[32]
      get_mapname(Map, 31)
      for(new i = 0; i < ArraySize(g_array_restrict_bonus); i++) {
         new restrict_bonus[32]
         ArrayGetString(g_array_restrict_bonus, i, restrict_bonus, 31)

         if(equal(Map, restrict_bonus)) {
            bonus_blocked = true
            break
         }
         else
            bonus_blocked = false
      }
   }
}
// Проверка на первый раунд===========================================================
public RestartRound() {
   g_rounds = 0
    
   for(new id = 1; id <= MaxPlayers; id++)
      g_DedRound[id] = 0
}

// Загрузка настроек запрещенных карт==================================================
public MapConst(id, level, cid) {
   if(!cmd_access(id, level, cid, 2))
      return PLUGIN_HANDLED

   new arg[32]
   read_argv(1, arg, 31)
   ArrayPushString(g_array_restrict_bonus, arg)

   return PLUGIN_HANDLED
}

// Загрузка настроек бонусов===========================================================
public LoadSettings() {
   new i
   new Bonus_He[64]
   get_pcvar_string(g_Bonus_He, Bonus_He, 63)
   trim(Bonus_He)
   for (i = 0; i < 30; i++)
      HE_G[i+1] = str_to_num(Bonus_He[i*2])

   new Bonus_Flash[64]
   get_pcvar_string(g_Bonus_Flash, Bonus_Flash, 63)
   trim(Bonus_Flash)
   for (i = 0; i < 30; i++)
      FLASH_G[i+1] = str_to_num(Bonus_Flash[i*2])

   new Bonus_Smoke[64]
   get_pcvar_string(g_Bonus_Smoke, Bonus_Smoke, 63)
   trim(Bonus_Smoke)
   for (i = 0; i < 30; i++)
      SMOKE_G[i+1] = str_to_num(Bonus_Smoke[i*2])

   new Bonus_Armor[64]
   get_pcvar_string(g_Bonus_Armor, Bonus_Armor, 63)
   trim(Bonus_Armor)
   for (i = 0; i < 30; i++)
      ARMOR_B[i+1] = str_to_num(Bonus_Armor[i*2])

   new Bonus_Defuse[64]
   get_pcvar_string(g_Bonus_Defuse, Bonus_Defuse, 63)
   trim(Bonus_Defuse)
   for (i = 0; i < 30; i++)
      DEFUSE_N[i+1] = str_to_num(Bonus_Defuse[i*2])

   new Bonus_NV[64]
   get_pcvar_string(g_Bonus_NV, Bonus_NV, 63)
   trim(Bonus_NV)
   for (i = 0; i < 30; i++)
      NIGHT_V[i+1] = str_to_num(Bonus_NV[i*2])

   new Bonus_Health[256], B_H[31][16]
   get_pcvar_string(g_Bonus_Health, Bonus_Health, 255)
   trim(Bonus_Health)
   parse(Bonus_Health,
      B_H[0], 15, B_H[1], 15, B_H[2], 15, B_H[3], 15, B_H[4], 15, B_H[5], 15, B_H[6], 15, B_H[7], 15, B_H[8], 15, B_H[9], 15,
      B_H[10], 15, B_H[11], 15, B_H[12], 15, B_H[13], 15, B_H[14], 15, B_H[15], 15, B_H[16], 15, B_H[17], 15, B_H[18], 15, B_H[19], 15,
      B_H[20], 15, B_H[21], 15, B_H[22], 15, B_H[23], 15, B_H[24], 15, B_H[25], 15, B_H[26], 15, B_H[27], 15, B_H[28], 15, B_H[29], 15, B_H[30], 15
   )
   for (i = 0; i < 30; i++)
      HEALTH_BONUS[i+1] = str_to_num(B_H[i])

   new cvLevels[256], LVL[31][16]
   get_pcvar_string(g_Levels, cvLevels, 255)
   trim(cvLevels)
   parse(cvLevels,
      LVL[0], 15, LVL[1], 15, LVL[2], 15, LVL[3], 15, LVL[4], 15, LVL[5], 15, LVL[6], 15, LVL[7], 15, LVL[8], 15, LVL[9], 15,
      LVL[10], 15, LVL[11], 15, LVL[12], 15, LVL[13], 15, LVL[14], 15, LVL[15], 15, LVL[16], 15, LVL[17], 15, LVL[18], 15, LVL[19], 15,
      LVL[20], 15, LVL[21], 15, LVL[22], 15, LVL[23], 15, LVL[24], 15, LVL[25], 15, LVL[26], 15, LVL[27], 15, LVL[28], 15, LVL[29], 15, LVL[30], 15
   )
   for (i = 0; i < 30; i++)
      LEVELS[i+1] = str_to_num(LVL[i])

   return PLUGIN_HANDLED
}

// проф =============================================================================
public prof_auto(id) {
   if(g_Prof_Auto[id]) {
      g_Prof_Auto[id] = false
      ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_AUTO_OFF")
   }
   else {
      g_Prof_Auto[id] = true
      ColorChat(id, BLUE, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_AUTO_ON")
   }
}

public prof_menu(id) {
   if(get_pcvar_num(g_FirstRound) && g_rounds < get_pcvar_num(g_FirstRound)) {
      ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_ROUND", get_pcvar_num(g_FirstRound))
      return PLUGIN_CONTINUE
   }
   if(!g_Prof_Enable[id]) {
      ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_DISABLE")
      return PLUGIN_CONTINUE
   }
   if(!is_user_alive(id)) {
      ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_ALIVE")
      return PLUGIN_CONTINUE
   }
   new szText[700]
   formatex(szText, charsmax(szText), "%L %L", LANG_PLAYER, "AR_TAG_MENU", LANG_PLAYER, "PROF_MENU_NAME")
   new menu = menu_create(szText, "prof_menu_item")

   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Deagle)) {
      formatex(szText, charsmax(szText), "Deagle")
      menu_additem(menu, szText, "1")
   }
   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Famas)) {
      formatex(szText, charsmax(szText), "Famas")
      menu_additem(menu, szText, "2")
   }
   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Scout)) {
      formatex(szText, charsmax(szText), "Scout")
      menu_additem(menu, szText, "3")                      
   }
   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Ak47)) {
      formatex(szText, charsmax(szText), "AK47")
      menu_additem(menu, szText, "4")
   }
   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_M4a1)) {
      formatex(szText, charsmax(szText), "M4A1")
      menu_additem(menu, szText, "5")
   }
   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_m249)) {
      formatex(szText, charsmax(szText), "Papagan")
      menu_additem(menu, szText, "6")
   }
   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Awp)) {
      formatex(szText, charsmax(szText), "AWP")
      menu_additem(menu, szText, "7")
   }

   format(szText, charsmax(szText), "%L", LANG_PLAYER,"MENU_EXITLANG")
   menu_setprop(menu, MPROP_EXITNAME, szText)

   menu_display(id, menu, 0)

   return PLUGIN_CONTINUE
}
public prof_menu_item(id,menu,item) {
   if(item == MENU_EXIT)
      return PLUGIN_HANDLED

   if(!is_user_alive(id)) {
      ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_ALIVE")
      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_prof(id, CSW_DEAGLE)
      case 2:
         give_prof(id, CSW_FAMAS)
      case 3:
         give_prof(id, CSW_SCOUT)
      case 4:
         give_prof(id, CSW_AK47)
      case 5:
         give_prof(id, CSW_M4A1)
      case 6:
         give_prof(id, CSW_M249)
      case 7:
         give_prof(id, CSW_AWP)  
   }
   g_Prof_Enable[id] = false
   return PLUGIN_HANDLED
}

public give_prof(id, weapon) {
   if (restSettings(weapon)) {
      client_print(id, print_center, "* This item is restricted *")
      prof_menu(id)
      return PLUGIN_HANDLED
   }
   for(new i = 1; i < 33; i++) {
      if (i == 2 || i== 4 || i == 6 || i == 9  || i == 29 || i == 31 || i == 32)
         continue
      if (weapon == 26) {
         if(user_has_weapon(id, i)) {
            client_cmd(id, "slot2;drop")
            break
         }
      }
      if(user_has_weapon(id, i)) {
         client_cmd(id, "slot1;drop")
         break
      }
   }
   new weapon_name[24]
   get_weaponname(weapon, weapon_name, 24)
   give_item(id, weapon_name)
   if(weapon == 3 || weapon == 15 || weapon == 22 || weapon == 28)
      cs_set_user_bpammo(id, weapon, 90)
   else if(weapon == 26)
      cs_set_user_bpammo(id, weapon, 35)
   else if(weapon == 20)
      cs_set_user_bpammo(id, weapon, 200)
   else if(weapon == 18)
      cs_set_user_bpammo(id, weapon, 30)

   return PLUGIN_HANDLED
}

public Prof_Weapon(victim, inflicator, attacker, Float:damage) {
   if(!is_user_connected(attacker))
      return
   if(victim == attacker || !victim)
      return

   if(get_user_weapon(attacker) == CSW_AWP && PlayerLevel[attacker] >= get_pcvar_num(g_Prof_Awp_Damage))
      SetHamParamFloat(4, damage * get_pcvar_float(g_Prof_Awp_Default))
   if(inflicator > 100 && PlayerLevel[attacker] >= get_pcvar_num(g_Prof_He_Damage))
      SetHamParamFloat(4, damage * get_pcvar_float(g_Prof_He_Default))
}
// использование чата=================================================================
#if !defined USE_COLORED_TRANSLIT

public arubaid_duplicated(msgId, msgDest, receiver) {
   return PLUGIN_HANDLED
}

public hook_say(id) {
   if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id) || !get_pcvar_num(g_Prefix)) {
      return PLUGIN_CONTINUE
   }

   read_args (message, 191)
   remove_quotes (message)
    
   if (message[0] == '@' || equal (message, ""))
      return PLUGIN_CONTINUE
   if(get_pcvar_num(g_NoSlesh)) {
      if (message[0] == '/')
         return PLUGIN_CONTINUE
   }

   new name[32]
   get_user_name (id, name, 31)
    
   new isAlive
    
   if (is_user_alive (id)) {
      isAlive = 1
      alive = "^x01"
   }
   else   {
      isAlive = 0
      alive = "^x01*DEAD* "
   }
    
   static color[10]
    
   if (get_user_flags(id) & ADMIN_CHAT) {
      get_user_team (id, color, 9)

      if(get_pcvar_num(g_AdminGMsg) == 1)    // green color
      {
         format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ^x04", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
      }
      else if(get_pcvar_num(g_AdminGMsg) == 2) // team color
      {
         format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ^x03", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
      }
      else // yellow color
      {
         format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
      }
   }
   else {
      get_user_team (id, color, 9)
      format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
   }

   format (strText, 191, "%s", message)
   format (message, 191, "%s%s", strName, strText)
          
   sendMessage (color, isAlive)
    
   return PLUGIN_CONTINUE
}

public hook_teamsay(id) {
   if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id) || !get_pcvar_num(g_Prefix)) {
      return PLUGIN_CONTINUE
   }
   new playerTeam = get_user_team(id)
   new playerTeamName[19]
    
   switch (playerTeam)
   {
      case 1:
         copy (playerTeamName, 11, "Terrorists")
          
      case 2:
         copy (playerTeamName, 18, "Counter-Terrorists")
          
      default:
         copy (playerTeamName, 9, "Spectator")
   }
      
   read_args (message, 191)
   remove_quotes (message)
    
   if (message[0] == '@' || equal (message, ""))
      return PLUGIN_CONTINUE
   if(get_pcvar_num(g_NoSlesh)) {
      if (message[0] == '/')
         return PLUGIN_CONTINUE
   }

   new name[32]
   get_user_name(id, name, 31)
    
   new isAlive
    
   if (is_user_alive (id)) {
      isAlive = 1
      alive = "^x01"
   }
   else {
      isAlive = 0
      alive = "^x01*DEAD* "
   }
    
   static color[10]

   if (get_user_flags(id) & ADMIN_CHAT) {
      get_user_team (id, color, 9)

      if(get_pcvar_num(g_AdminGMsg) == 1)    // green color
      {
         format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ^x04", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
      }
      else if(get_pcvar_num(g_AdminGMsg) == 2) // team color
      {
         format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ^x03", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
      }
      else // yellow color
      {
         format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
      }
   }
   else {
      get_user_team(id, color, 9)

      format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
   }
          
   format (strText, 191, "%s", message)
   format (message, 191, "%s%s", strName, strText)
    
   sendTeamMessage(color, isAlive, playerTeam)
    
   return PLUGIN_CONTINUE  
}

public sendMessage (color[], alive) {
   new teamName[10]
    
   for (new player = 1; player < MaxPlayers; player++) {
      if (!is_user_connected(player))
         continue

      if (alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player)  & ADMIN_LISTEN) {
         get_user_team(player, teamName, 9)
         changeTeamInfo(player, color)
         writeMessage(player, message)
         changeTeamInfo(player, teamName)
      }
   }
}

public sendTeamMessage (color[], alive, playerTeam) {
   new teamName[10]
    
   for (new player = 1; player < MaxPlayers; player++) {
      if (!is_user_connected(player))
         continue

      if (get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN) {
         if (alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN) {
            get_user_team(player, teamName, 9)
            changeTeamInfo(player, color)
            writeMessage(player, message)
            changeTeamInfo(player, teamName)
         }
      }
   }
}

public changeTeamInfo(player, team[]) {
   message_begin(MSG_ONE, teamInfo, _, player)
   write_byte(player)
   write_string(team)
   message_end()
}

public writeMessage(player, message[]) {
   message_begin(MSG_ONE, sayText, {0, 0, 0}, player)
   write_byte(player)
   write_string(message)
   message_end()
}

#endif

// Проверка уровня====================================================================
public checkLvl(id) {
   if(id > 0 && id < 33) {
      if (PlayerLevel[id] <= 0)
         PlayerLevel[id] = 1
      if (PlayerLevel[id] < 30) {
         while(PlayerXP[id] >= LEVELS[PlayerLevel[id]+1]) {
            PlayerLevel[id]++
            levelUp[id] = 1
            new Name[32]
            get_user_name(id, Name, 31)
            if(cs_get_user_team(id) == CS_TEAM_T)
               ColorChat(0, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL", Name, LANG_PLAYER,CLASSES[PlayerLevel[id]])
            else
               ColorChat(0, BLUE, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL", Name, LANG_PLAYER,CLASSES[PlayerLevel[id]])
         }
      }
   }
}
// Добавляет опыт======================================================================
public EventDeath() {
   new iVictim = read_data(2)
   new iTeam = get_user_team(iVictim)
   new iKiller = read_data(1)
   new headshot = read_data(3)
   if(iKiller != iVictim && get_user_team(iKiller) != iTeam && is_user_connected(iKiller) && PlayerLevel[iKiller] < 30) {
      if (get_pcvar_num(g_XPheadshot)) {
         if(headshot)
            PlayerXP[iKiller] += get_pcvar_num(g_XPvalue) * 2
         else
            PlayerXP[iKiller] += get_pcvar_num(g_XPvalue)
      }
      else
         PlayerXP[iKiller] += get_pcvar_num(g_XPvalue)

      checkLvl(iKiller)
   }
   return PLUGIN_CONTINUE
}

public bomb_explode(planter, defuser) {
   if (get_pcvar_num(g_XPc4def)) {
      PlayerXP[planter] += get_pcvar_num(g_XPvalue)*3
      checkLvl(planter)
   }
   return PLUGIN_CONTINUE
}

public bomb_defused(defuser) {
   if (get_pcvar_num(g_XPc4def)) {
      PlayerXP[defuser] += get_pcvar_num(g_XPvalue)*3
      checkLvl(defuser)
   }
   return PLUGIN_CONTINUE
}

// Старт раунда=======================================================================
public EventRoundStart() {
   g_rounds++
   set_task(0.1, "BonusRoundStart")

   for(new id = 1; id <= MaxPlayers; id++) {
      g_Prof_Enable[id] = true
      if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Deagle) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Famas) ||
      PlayerLevel[id] >= get_pcvar_num(g_Prof_Scout) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Ak47) ||
      PlayerLevel[id] >= get_pcvar_num(g_Prof_M4a1) || PlayerLevel[id] >= get_pcvar_num(g_Prof_m249) ||
      PlayerLevel[id] >= get_pcvar_num(g_Prof_Awp)) {
         if(is_user_connected(id) && is_user_alive(id) && g_Prof_Auto[id]) {
            if(get_pcvar_num(g_FirstRound) && g_rounds < get_pcvar_num(g_FirstRound))
               return PLUGIN_CONTINUE
            prof_menu(id)
         }
      }
   }
   return PLUGIN_CONTINUE
}

public BonusRoundStart() {
   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_connected(id)) {
         set_task(1.0, "load_client_data", id)
      }
      if(is_user_alive(id) && is_user_connected(id) && get_pcvar_num(g_PlBonus)) {
         if (get_pcvar_num(g_FirstRound) && g_rounds < get_pcvar_num(g_FirstRound))
            return PLUGIN_CONTINUE
         else {
            if(!bonus_blocked) {
               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]]
               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)) {
                  BonusNewLVL(id)
                  levelUp[id] = 0
               }
            }
         }
      }
   }
   return PLUGIN_CONTINUE
}

// Получение бонуса за lvl==============================================================
public BonusNewLVL(id) {
   new szText[700 char]
   formatex(szText, charsmax(szText), "%L %L", LANG_PLAYER, "AR_TAG_MENU", LANG_PLAYER, "NEW_LEVEL_MENU")
   new menu = menu_create(szText, "bnl_menu")

   formatex(szText, charsmax(szText), "AWP")
   menu_additem(menu, szText, "1", 0)

   formatex(szText, charsmax(szText), "AK47")
   menu_additem(menu, szText, "2", 0)

   formatex(szText, charsmax(szText), "M4A1")
   menu_additem(menu, szText, "3", 0)

   formatex(szText, charsmax(szText), "Galil")
   menu_additem(menu, szText, "4", 0)

   formatex(szText, charsmax(szText), "Famas")
   menu_additem(menu, szText, "5", 0)

   if(get_pcvar_num(g_PlusBonusNewLVL)) {
      formatex(szText, charsmax(szText), "%d$", get_pcvar_num(g_PlusBonusNewLVLMoney))
      menu_additem(menu, szText, "6", 0)

      formatex(szText, charsmax(szText), "%dHP", get_pcvar_num(g_PlusBonusNewLVLHP))
      menu_additem(menu, szText, "7", 0)
   }

   menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
   menu_display(id, menu, 0)

   return PLUGIN_CONTINUE
}
public bnl_menu(id, menu, item) {
   if(!is_user_alive(id) && is_user_connected(id)) {
      ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_ALIVE")
      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_weapons(id, CSW_AWP)
      case 2:
         give_weapons(id, CSW_AK47)
      case 3:
         give_weapons(id, CSW_M4A1)
      case 4:
         give_weapons(id, CSW_GALIL)
      case 5:
         give_weapons(id, CSW_FAMAS)
      case 6:
      {
         if(get_pcvar_num(g_PlusBonusNewLVL)) {
            cs_set_user_money(id, get_pcvar_num(g_PlusBonusNewLVLMoney))
            ColorChat(id, BLUE, "%L %L %d$", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL_GIVE", get_pcvar_num(g_PlusBonusNewLVLMoney))
         }
      }
      case 7:
      {
         if(get_pcvar_num(g_PlusBonusNewLVL)) {
            set_user_health(id, get_pcvar_num(g_PlusBonusNewLVLHP))
            ColorChat(id, BLUE, "%L %L %dHP", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL_GIVE", get_pcvar_num(g_PlusBonusNewLVLHP))
         }
      }
   }
   return PLUGIN_HANDLED
}

public give_weapons(id, weapon) {
   if (restSettings(weapon)) {
      client_print(id, print_center, "* This item is restricted *")
      BonusNewLVL(id)
      return PLUGIN_HANDLED
   }
   for(new i = 1; i < 33; i++) {
      if (i == 2 || i== 4 || i == 6 || i == 9  || i == 10 || i == 11 || i == 16 || i == 17 || i == 25 || i == 26 || i == 29 || i == 31 || i == 32)
         continue

      if(user_has_weapon(id, i))
         client_cmd(id, "slot1;drop")
   }
   new weapon_name[24]
   get_weaponname(weapon, weapon_name, 24)
   give_item(id, weapon_name)
   cs_set_user_bpammo(id, weapon, 90)
   cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
   give_item(id, "weapon_hegrenade")
   give_item(id, "weapon_flashbang")
   give_item(id, "weapon_flashbang")
   give_item(id, "weapon_smokegrenade")

   if(cs_get_user_team(id) == CS_TEAM_CT && !cs_get_user_defuse(id))
      cs_set_user_defuse(id, 1, 0, 160, 0, _, 0)

   ColorChat(id, RED, "%L %L %s", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL_GIVE", weapon_name[7])

   return PLUGIN_HANDLED
}

restSettings(weapon) {
   if (!file_exists(g_RestFile))
      return 0

   new text[16]
   new a, pos = 0

   while (read_file(g_RestFile, pos++, text, 15, a)) {
      if (text[0] == ';' || !a)
         continue

      new weapon_name[24], weapon_rest[24]
      get_weaponname(weapon, weapon_name, 24)
      parse(text, text, 15)
      format(weapon_rest, 23, "weapon_%s", text)
      if(equal(weapon_name, weapon_rest))
         return 1
   }
   return 0
}

stock give_user_bonus(id, f_g, h_g, s_g, n_v, a_b, d_k, health) {
   if(f_g >= 1)
      give_item(id, "weapon_flashbang")
   if(h_g>= 1)
      give_item(id, "weapon_hegrenade")
   if(s_g>= 1)
      give_item(id, "weapon_smokegrenade")
   if(n_v >= 1)
      cs_set_user_nvg(id, n_v)
   if(a_b >= 1)
      cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
   if(d_k >= 1) {
      if(cs_get_user_team(id) == CS_TEAM_CT && !cs_get_user_defuse(id))
         cs_set_user_defuse(id, 1, 0, 160, 0, _, 0)
   }
   set_user_health(id, get_user_health(id)+health)
}

// Информер========================================================================
=
public Info() {
   static temp[3][10], color[3], Float:pos[2], i, text[21]                    
   new needXP[64]
                                                  
   get_pcvar_string(g_HudColor, text, 20)
   parse(text, temp[0], 3, temp[1], 3, temp[2], 3)
   for(i = 0; i < 3; i++) color[i] = str_to_num(temp[i])
  
   get_pcvar_string(g_HudPos, text, 20)                                                        
   parse(text, temp[0], 9, temp[1], 9)
   for(i = 0; i < 2; i++) pos[i] = floatstr(temp[i])

   for(new id = 1; id <= MaxPlayers; id++) {                              
      if(!is_user_bot(id) && is_user_connected(id)) {
         set_hudmessage(color[0], color[1], color[2], pos[0], pos[1], 0.75, 0.0, 0, 6.0, 12.0)
         static buffer[192], len

         if(!is_user_alive(id)) {
            new id2 = pev(id, pev_iuser2)
            if(id2 > 0) {
               new Name2[32]
               get_user_name(id2, Name2, 31)
               if(PlayerLevel[id2] < 30) {
                  needXP[id2] = LEVELS[PlayerLevel[id2]+1] - PlayerXP[id2]
                  len = format(buffer, charsmax(buffer), "%L : %s", LANG_PLAYER,"A_NAME", Name2)
                  len += format(buffer[len], charsmax(buffer) - len, "^n%L :", LANG_PLAYER,"ZVANIE")
                  len += format(buffer[len], charsmax(buffer) - len, " %L", LANG_PLAYER,CLASSES[PlayerLevel[id2]])
                  len += format(buffer[len], charsmax(buffer) - len, "^n%L : %d", LANG_PLAYER,"PL_XP",PlayerXP[id2])
                  len += format(buffer[len], charsmax(buffer) - len, "^n%L :", LANG_PLAYER,"NEXT_LVL")
                  len += format(buffer[len], charsmax(buffer) - len, " %d ", needXP[id2])
                  len += format(buffer[len], charsmax(buffer) - len, "%L", LANG_PLAYER,"FRAGS")
               }
               else {
                  len = format(buffer, charsmax(buffer), "%L : %s", LANG_PLAYER,"A_NAME", Name2)
                  len += format(buffer[len], charsmax(buffer) - len, "^n%L :",LANG_PLAYER,"ZVANIE")
                  len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,CLASSES[PlayerLevel[id2]])
                  len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_MAX")
               }
            }
            else {
               if(PlayerLevel[id] < 30) {
                  needXP[id] = LEVELS[PlayerLevel[id]+1] - PlayerXP[id]
                  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")
               }
               else {
                  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")
               }
            }
         }
         else {
            if(PlayerLevel[id] < 30) {
               needXP[id] = LEVELS[PlayerLevel[id]+1] - PlayerXP[id]
               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")
            }
            else {
               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
}

public client_putinserver(id) {
   if(get_pcvar_num(g_Prof_Auto_Default))
      g_Prof_Auto[id] = true
   else
      g_Prof_Auto[id] = false

   set_task(0.1, "load_client_data", id)
}

public load_client_data(id) {
   if(!is_user_connected(id))
      return PLUGIN_HANDLED

   new stats[8], bodyhits[8], stats2[4]
   get_user_stats(id, stats, bodyhits)

   if (get_pcvar_num(g_XPc4def))
      get_user_stats2(id, stats2)
    
   if (get_pcvar_num(g_XPheadshot))
      PlayerXP[id] = ((stats[2]*2 + (stats[0] - stats[2])) + (stats2[1]*3 + stats2[3]*3)) * get_pcvar_num(g_XPvalue)
   else
      PlayerXP[id] = (stats2[1]*3 + stats2[3]*3 + stats[0]) * get_pcvar_num(g_XPvalue)

   new STEAM[32]
   get_user_authid(id, STEAM, 31)
   if (equal(STEAM, "STEAM_ID_LAN") || equal(STEAM, "VALVE_ID_LAN")) {
      PlayerXP[id] = 0
      new DownloadURL[64]
      get_pcvar_string(g_DownloadCS, DownloadURL, 63)
      client_print(id, print_console, "[%L] %L", LANG_PLAYER,"ARMY", LANG_PLAYER,"STEAM_ID_LAN")
      client_print(id, print_console, "[%L] %L %s", LANG_PLAYER,"ARMY", LANG_PLAYER,"DOWNLOAD_CS", DownloadURL)
      ColorChat(id, RED, "%L ^03%L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"STEAM_ID_LAN")
      ColorChat(id, RED, "%L ^03%L ^04%s", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DOWNLOAD_CS", DownloadURL)
   }

   for(new i = 1; i <= 30; i++) {
      if (i < 30) {
         if (PlayerXP[id] >= LEVELS[i] && PlayerXP[id] < LEVELS[i+1])
            PlayerLevel[id] = i
      }
      else {
         if (PlayerXP[id] >= LEVELS[30])
            PlayerLevel[id] = 30
      }
   }
   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Flag)) {
      new string[32]
      get_pcvar_string(g_Prof_Flag_Default, string, 31)
      new flags = read_flags(string)
      set_user_flags(id, flags)
   }
   return PLUGIN_HANDLED
}

public plugin_natives()
   register_native("get_user_lvl", "native_get_user_lvl", 1)

public native_get_user_lvl(id)
   return PlayerLevel[id]

// Наведение прицела на игрока=========================================================
public event_StatusValue(id) {
   new num = read_data(1)
   if( num <= 0 || num >= MAX_TYPES)
      return

   new update = status_value[num] = read_data(2)
   new id2 = read_data(2)
   switch(num) {
      case TYPE_RELATION: {
         if(!update && is_user_alive(id) &&   get_pcvar_num(g_CentrID)) {
            message_begin(MSG_ONE_UNRELIABLE, gStatusText, _, id)
            write_byte(0)
            write_string("")
            message_end()
         }
         if(is_user_connected(id) && get_pcvar_num(g_Dedovshina) && (g_rounds >= g_DedRound[id])) {
            remove_task(id+TASKID_DED)
            MsgBarTime(id, 0)
         }
      }
      case TYPE_PLAYER: {
         if(is_user_alive(id) && get_pcvar_num(g_CentrID)) {
            new message[192]
            switch(status_value[TYPE_RELATION]) {
               case LOOK_FRIEND: {
                  copy(message, charsmax(message), "Friend : %name%  Health : %hp%  %army%")
               }
               case LOOK_ENEMY: {
                  copy(message, charsmax(message), "Enemy : %name%  %army%")
               }
               case LOOK_HOSTAGE: {
                  return
               }
            }
            EditMessage(message, update, true, get_user_health(update))
            message_begin(MSG_ONE_UNRELIABLE, gStatusText, _, id)
            write_byte(0)
            write_string(message)
            message_end()
         }
         if(is_user_connected(id) && is_user_connected(id2) && is_user_alive(id) && get_pcvar_num(g_Dedovshina) && (g_rounds >= g_DedRound[id]) && (get_user_button(id) & IN_USE)) {
            if(cs_get_user_team(id) == cs_get_user_team(id2)) {
               MsgBarTime(id, floatround(get_pcvar_float(g_DedovshinaTime)))
               new arg[2]
               arg[0] = id
               arg[1] = id2
               set_task(get_pcvar_float(g_DedovshinaTime), "Dedovshina", id+TASKID_DED, arg, 2)
            }
         }
      }
   }
}
EditMessage(message[192], player, bool:status_text, hp) {
   new temp[35]

   if(is_user_alive(player)) {
      for(new i; i < MAX_REPLACES; i++) {
         switch(i) {
            case RE_HP: {
               num_to_str(hp, temp, charsmax(temp))
            }
            case RE_ARMY: {
               format(temp, charsmax(temp), "^n%L : %L", LANG_PLAYER,"ZVANIE", LANG_PLAYER,CLASSES[PlayerLevel[player]])
            }
            case RE_NAME: {
               if(status_text)
                  copy(temp, charsmax(temp), "%p2")
               else
                  get_user_name(player, temp, charsmax(temp))
            }
            default: {
               copy(temp, charsmax(temp), "")
            }
         }
         replace(message, charsmax(message), Replaces[i], temp)
      }
   }
   trim(message)
}

public Dedovshina(arg[]) {
   new Name[32], Name2[32], ded_pcvar

   get_user_name(arg[0], Name, 31)
   get_user_name(arg[1], Name2, 31)

   if(PlayerLevel[arg[0]] <= PlayerLevel[arg[1]]) {
      ColorChat(arg[0], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_FAIL", Name2)

      return PLUGIN_HANDLED
   }

   if(get_pcvar_num(g_Dedovshina) == 4)
      ded_pcvar = random_num(1, 2)
   else
      ded_pcvar = get_pcvar_num(g_Dedovshina)

   if(ded_pcvar == 1) {
      new money2 = cs_get_user_money(arg[1])

      if(cs_get_user_money(arg[0]) + money2 > 16000 && get_pcvar_num(g_DedovshinaMoney))
         cs_set_user_money(arg[0], 16000)
      else
         cs_set_user_money(arg[0], cs_get_user_money(arg[0]) + money2)

      cs_set_user_money(arg[1], 0)
      ColorChat(arg[0], BLUE, "%L %L %d$", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_1", Name2, money2)
      ColorChat(arg[1], RED, "%L ^04%s ^01%L %d$", LANG_PLAYER,"AR_TAG", Name, LANG_PLAYER,"DED_2", money2)
      client_cmd(arg[0], "spk buttons/bell1")
      client_cmd(arg[1], "spk buttons/blip1")
   }
   else if(ded_pcvar == 2) {
      new clip, ammo, weapon_name[24]
      new weapon_id = get_user_weapon(arg[1], clip, ammo)

      if(!get_pcvar_num(g_DedovshinaKnife)) {
         if (weapon_id == 29) {
            ColorChat(arg[0], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_FAIL_WEAPON")

            return PLUGIN_HANDLED
         }
      }
      get_weaponname(weapon_id, weapon_name, 24)
      ham_strip_weapon(arg[1], weapon_name)
      give_item(arg[0], weapon_name)

      if (weapon_id != 29 && weapon_id != 9 && weapon_id != 6 && weapon_id != 4)
         cs_set_user_bpammo(arg[0], weapon_id, cs_get_user_bpammo(arg[0], weapon_id) + ammo)

      ColorChat(arg[0], BLUE, "%L %L %s", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_1", Name2, weapon_name[7])
      ColorChat(arg[1], RED, "%L ^04%s ^01%L %s", LANG_PLAYER,"AR_TAG", Name, LANG_PLAYER,"DED_2", weapon_name[7])
      client_cmd(arg[0], "spk buttons/bell1")
      client_cmd(arg[1], "spk buttons/blip1")
   }
   else if(ded_pcvar == 3) {
      user_slap(arg[1], get_pcvar_num(g_DedovshinaSlap), 1)
      ColorChat(arg[0], BLUE, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_SLAP_1", Name2, get_pcvar_num(g_DedovshinaSlap))
      ColorChat(arg[1], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_SLAP_2", Name, get_pcvar_num(g_DedovshinaSlap))
      client_cmd(arg[0], "spk buttons/bell1")
      client_cmd(arg[1], "spk buttons/blip1")
   }

   g_DedRound[arg[0]] = g_rounds + get_pcvar_num(g_DedovshinaLock)
   ColorChat(arg[0], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_LOCK", get_pcvar_num(g_DedovshinaLock))

   return PLUGIN_HANDLED
}

stock MsgBarTime(iPlayer, iTime) {
   message_begin(MSG_ONE, 108, _, iPlayer)
   write_short(iTime)
   message_end()
}

stock ham_strip_weapon(id,weapon[]) {
   if(!equal(weapon,"weapon_",7)) return 0
  
   new wId = get_weaponid(weapon)
   if(!wId) return 0
  
   new wEnt
   while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
   if(!wEnt) return 0
  
   if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt)
  
   if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0
   ExecuteHamB(Ham_Item_Kill,wEnt)
  
   set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId))
    
   return 1
}
// Звания игроков онлайн===============================================================
public ShowStatsMotd(id) {
   new iPlayers[32], iNum, iPlayer, player_stats[6]
   get_players(iPlayers, iNum, "ch")
   for(new i = 0; i < iNum; i++) {
      iPlayer = iPlayers[i]
      format(player_stats, 5, "%d %d", iPlayer, PlayerXP[iPlayer])
      ArrayPushString(g_array_astats, player_stats)
   }
   ArraySort(g_array_astats, "sort_astats")

   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> %L <td class=th> %L <td class=th> %L</tr>", LANG_PLAYER,"A_NAME", LANG_PLAYER,"ZVANIE", LANG_PLAYER,"PL_XP")

   for(new i2 = 0; i2 < iNum; i2++) {
      new string[6], PlayerID, Name[32], STEAM[35]

      ArrayGetString(g_array_astats, i2, string, 5)
      PlayerID = str_to_num(string[0])
      get_user_name(PlayerID, Name, 31)
      get_user_authid(PlayerID, STEAM, 34)

      if(get_pcvar_num(g_See_Steam)) {
         if(strlen(STEAM) > 18 || equal(STEAM, "STEAM_ID_LAN") || equal(STEAM, "VALVE_ID_LAN"))
            len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %s ", Name)
         else
            len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %s <b>&lt;STEAM&gt;</b>", Name)
      }
      else
         len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %s ", Name)

      len += format(buffer[len], charsmax(buffer) - len, "<td> %L ", LANG_PLAYER,CLASSES[PlayerLevel[PlayerID]])
      len += format(buffer[len], charsmax(buffer) - len, "<td> %d ", PlayerXP[PlayerID])
   }
   len += format(buffer[len], charsmax(buffer) - len, "</tr></table></body></html>")
   new motd[64]
   formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Stats")

   show_motd(id, buffer, motd)

   ArrayClear(g_array_astats)
}

public sort_astats(Array:g_array_astats, e1, e2) {
   new string_e1[6], string_e2[6], var1, var2

   ArrayGetString(g_array_astats, e1, string_e1, 5)
   ArrayGetString(g_array_astats, e2, string_e2, 5)

   var1 = str_to_num(string_e1[2])
   var2 = str_to_num(string_e2[2])

   if (var1 > var2)
      return -1
   if (var1 == var2)
      return 0
   if (var1 <= var2)
      return 1
   return 0
}


// Информация о бонусных настройках===================================================
public ShowSettingsMotd(id) {
   new XPc4def[33], XPheadshot[33], PlBonus[33], PlNewLvl[33], FirstRound[64], Dedovshina[33]

   if (get_pcvar_num(g_XPc4def))
      copy(XPc4def, 32, "<font color=#008000>ON</font>")
   else
      copy(XPc4def, 32, "<font color=#FF0000>OFF</font>")

   if (get_pcvar_num(g_XPheadshot))
      copy(XPheadshot, 32, "<font color=#008000>ON</font>")
   else
      copy(XPheadshot, 32, "<font color=#FF0000>OFF</font>")

   if (get_pcvar_num(g_PlBonus))
      copy(PlBonus, 32, "<font color=#008000>ON</font>")
   else
      copy(PlBonus, 32, "<font color=#FF0000>OFF</font>")

   if (get_pcvar_num(g_plNewLvl))
      copy(PlNewLvl, 32, "<font color=#008000>ON</font>")
   else
      copy(PlNewLvl, 32, "<font color=#FF0000>OFF</font>")

   if (get_pcvar_num(g_FirstRound) == 0 || get_pcvar_num(g_FirstRound) == 1)
      format(FirstRound, 63, "<font color=#008000>%L </font>", LANG_PLAYER,"ALL")
   else
      format(FirstRound, 63, "<font color=#FF0000>%L <b>%d</b></font>", LANG_PLAYER,"DO", get_pcvar_num(g_FirstRound))

   if (get_pcvar_num(g_Dedovshina))
      copy(Dedovshina, 32, "<font color=#008000>ON</font>")
   else
      copy(Dedovshina, 32, "<font color=#FF0000>OFF</font>")

   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> %L <td class=th> %L </tr>", LANG_PLAYER,"FUNCTION", LANG_PLAYER,"STATUS")

   len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"XP_VALUE")
   len += format(buffer[len], charsmax(buffer) - len, "<td><font color=#008000> <b> %d</b></font> ", get_pcvar_num(g_XPvalue))

   len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"XP_C4DEF")
   len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", XPc4def)

   len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"XP_HEADSHOT")
   len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", XPheadshot)

   len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"PL_BONUS")
   len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", PlBonus)

   len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"PL_NEWLVL")
   len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", PlNewLvl)

   len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"FIRST_ROUND")
   len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", FirstRound)

   len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"DED_INFO")
   len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", Dedovshina)

   len += format(buffer[len], charsmax(buffer) - len, "</tr></table></body></html>")

   new motd[64]
   formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Settings")

   show_motd(id, buffer, motd)
}

// Информация о бонусах===============================================================
public ShowBonusMotd(id) {
   if(!get_pcvar_num(g_PlBonus)) {
      ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"BONUS_OFF")

      return PLUGIN_HANDLED
   }
   new NextLVL = PlayerLevel[id]+1
   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; font-size:11px; 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 }")

   if (PlayerLevel[id] == 30) {
      len += format(buffer[len], charsmax(buffer) - len, ".th{ width:800; 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>%L <b>%L</b></tr>", LANG_PLAYER,"YOUR_LVL", LANG_PLAYER,CLASSES[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<tr><td>")

      if(HE_G[PlayerLevel[id]])
         len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"HE_G")
      if(FLASH_G[PlayerLevel[id]])
         len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"FLASH_G")
      if(SMOKE_G[PlayerLevel[id]])
         len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"SMOKE_G")
      if(ARMOR_B[PlayerLevel[id]])
         len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"ARMOR_B")
      if(DEFUSE_N[PlayerLevel[id]])
         len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"DEFUSE_N")
      if(NIGHT_V[PlayerLevel[id]])
         len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"NIGHT_V")
      if(HEALTH_BONUS[PlayerLevel[id]])
         len += format(buffer[len], charsmax(buffer) - len, "<b>+%d HP</b>
", HEALTH_BONUS[PlayerLevel[id]])

      len += format(buffer[len], charsmax(buffer) - len, "</tr></table>")
      len += format(buffer[len], charsmax(buffer) - len, "
<center>%L</center></body></html>", LANG_PLAYER,"BONUS_INFO")

      new motd[64]
      formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Bonus")

      show_motd(id, buffer, motd)

      return PLUGIN_HANDLED
   }

   len += format(buffer[len], charsmax(buffer) - len, ".th{ width:400; 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>%L <b>%L</b><td class=th>%L <b>%L</b></tr>", LANG_PLAYER,"YOUR_LVL", LANG_PLAYER,CLASSES[PlayerLevel[id]], LANG_PLAYER,"NEXT_LVL2", LANG_PLAYER,CLASSES[NextLVL])
   len += format(buffer[len], charsmax(buffer) - len, "<tr><td>")

   if(HE_G[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"HE_G")
   if(FLASH_G[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"FLASH_G")
   if(SMOKE_G[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"SMOKE_G")
   if(ARMOR_B[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"ARMOR_B")
   if(DEFUSE_N[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"DEFUSE_N")
   if(NIGHT_V[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"NIGHT_V")
   if(HEALTH_BONUS[PlayerLevel[id]])
      len += format(buffer[len], charsmax(buffer) - len, "<b>+%d HP</b>
", HEALTH_BONUS[PlayerLevel[id]])

   len += format(buffer[len], charsmax(buffer) - len, "<td>")

   if(HE_G[NextLVL])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"HE_G")
   if(FLASH_G[NextLVL])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"FLASH_G")
   if(SMOKE_G[NextLVL])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"SMOKE_G")
   if(ARMOR_B[NextLVL])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"ARMOR_B")
   if(DEFUSE_N[NextLVL])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"DEFUSE_N")
   if(NIGHT_V[NextLVL])
      len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b>
", LANG_PLAYER,"NIGHT_V")
   if(HEALTH_BONUS[NextLVL])
      len += format(buffer[len], charsmax(buffer) - len, "<b>+%d HP</b>
", HEALTH_BONUS[NextLVL])

   len += format(buffer[len], charsmax(buffer) - len, "</tr></table>")
   len += format(buffer[len], charsmax(buffer) - len, "
<center>%L</center></body></html>", LANG_PLAYER,"BONUS_INFO")

   new motd[64]
   formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Bonus")

   show_motd(id, buffer, motd)

   return PLUGIN_HANDLED
}

public amenu(id) {
   new nameMenu[128], format_astats[64], format_ainfo[64], format_abonus[64], format_aprof[64], exitname[32]

   format(nameMenu, 127, "%L", LANG_PLAYER,"AR_TAG_MENU", LANG_PLAYER,"MENU_NAME")
   format(format_astats, 63, "%L", LANG_PLAYER,"MENU_ASTATS")
   format(format_ainfo, 63, "%L", LANG_PLAYER,"MENU_AINFO")
   format(format_abonus, 63, "%L", LANG_PLAYER,"MENU_ABONUS")
   format(format_aprof, 63, "%L", LANG_PLAYER,"MENU_APROF")
   format(exitname, 31, "%L", LANG_PLAYER,"MENU_EXITLANG")

   new menu=menu_create(nameMenu, "amenu_item")
   menu_additem(menu, format_astats, "1")
   menu_additem(menu, format_ainfo, "2")
   menu_additem(menu, format_abonus, "3")

   if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Deagle) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Famas) ||
   PlayerLevel[id] >= get_pcvar_num(g_Prof_Scout) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Ak47) ||
   PlayerLevel[id] >= get_pcvar_num(g_Prof_M4a1) || PlayerLevel[id] >= get_pcvar_num(g_Prof_m249) ||
   PlayerLevel[id] >= get_pcvar_num(g_Prof_Awp)) {
      menu_additem(menu, format_aprof, "4")
   }

   if(is_plugin_loaded("Army Ranks StatsX Web") != -1) {
      new format_atop[64]
      format(format_atop, 63, "%L", LANG_PLAYER,"MENU_ATOP")
      menu_additem(menu, format_atop, "5")
   }

   menu_setprop(menu, MPROP_EXITNAME, exitname)

   menu_display(id, menu, 0)

   return PLUGIN_CONTINUE
}

public amenu_item(id, menu, item) {
   new data[6], iName[64], access, callback
    menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
   new key = str_to_num(data)
    
   switch(key) {
      case 1:{
         ShowStatsMotd(id)
      }
      case 2:{
         ShowSettingsMotd(id)
      }
      case 3:{
         ShowBonusMotd(id)
      }
      case 4:{
         prof_menu(id)
      }
      case 5:{
         client_cmd(id, "say /atop")
      }
   }
   return PLUGIN_HANDLED
}

не компилируется ошибки выдает
ошибки
army_ranks.sma(918) : error 010: invalid function or declaration
army_ranks.sma(933) : warning 213: tag mismatch
army_ranks.sma(933) : warning 213: tag mismatch
army_ranks.sma(1396) : error 037: invalid string (possibly non-terminated string)
army_ranks.sma(1397) : warning 217: loose indentation
army_ranks.sma(1397) : warning 215: expression has no effect
army_ranks.sma(1397) : error 001: expected token: ";", but found "-identifier-"
army_ranks.sma(1397) : error 037: invalid string (possibly non-terminated string)
army_ranks.sma(1397 -- 1398) : warning 215: expression has no effect
army_ranks.sma(1398) : warning 217: loose indentation
army_ranks.sma(1399) : error 037: invalid string (possibly non-terminated string)
army_ranks.sma(1400) : warning 217: loose indentation
army_ranks.sma(1400) : warning 215: expression has no effect
army_ranks.sma(1400) : error 001: expected token: ";", but found "-identifier-"
army_ranks.sma(1400) : error 037: invalid string (possibly non-terminated string)
army_ranks.sma(1400 -- 1401) : warning 215: expression has no effect
army_ranks.sma(1401) : warning 217: loose indentation
army_ranks.sma(1402) : error 037: invalid string (possibly non-terminated string)
army_ranks.sma(1403) : warning 217: loose indentation
army_ranks.sma(1403) : warning 215: expression has no effect
army_ranks.sma(1403) : error 001: expected token: ";", but found "-identifier-"
army_ranks.sma(1403) : error 037: invalid string (possibly non-terminated string)
army_ranks.sma(1403 -- 1404) : warning 215: expression has no effect
army_ranks.sma(1404) : warning 217: loose indentation
army_ranks.sma(1405) : error 037: invalid string (possibly non-terminated string)
army_ranks.sma(1406) : warning 217: loose indentation
army_ranks.sma(1406) : warning 215: expression has no effect
army_ranks.sma(1406) : error 001: expected token: ";", but found "-identifier-"
army_ranks.sma(1406) : error 037: invalid string (possibly non-terminated string)
army_ranks.sma(1406 -- 1407) : warning 215: expression has no effect
army_ranks.sma(1407) : warning 217: loose indentation
army_ranks.sma(1408) : error 037: invalid string (possibly non-terminated string)
army_ranks.sma(1409) : warning 217: loose indentation
army_ranks.sma(1409) : warning 215: expression has no effect
army_ranks.sma(1409) : error 001: expected token: ";", but found "-identifier-"
army_ranks.sma(1409) : error 037: invalid string (possibly non-terminated string)
army_ranks.sma(1409 -- 1410) : warning 215: expression has no effect
army_ranks.sma(1410) : warning 217: loose indentation
army_ranks.sma(1411) : error 037: invalid string (possibly non-terminated string)
army_ranks.sma(1412) : warning 217: loose indentation
army_ranks.sma(1412) : warning 215: expression has no effect
army_ranks.sma(1412) : error 001: expected token: ";", but found "-identifier-"
army_ranks.sma(1412) : error 037: invalid string (possibly non-terminated string)
army_ranks.sma(1412 -- 1413) : warning 215: expression has no effect
army_ranks.sma(1413) : warning 217: loose indentation
army_ranks.sma(1414) : error 037: invalid string (possibly non-terminated string)
army_ranks.sma(1415) : warning 217: loose indentation
army_ranks.sma(1415 -- 1417) : warning 215: expression has no effect
army_ranks.sma(1417) : warning 217: loose indentation
army_ranks.sma(1418) : error 037: invalid string (possibly non-terminated string)
army_ranks.sma(1419) : warning 217: loose indentation
army_ranks.sma(1419) : error 017: undefined symbol "L"
army_ranks.sma(1419) : error 017: undefined symbol "BONUS_INFO"
army_ranks.sma(1419 -- 1421) : error 088: number of arguments does not match definition
army_ranks.sma(1419 -- 1421) : fatal error 107: too many error messages on one line

Compilation aborted.
25 Errors.

terminate called after throwing an instance of 'std::bad_alloc'
what(): St9bad_alloc
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
MrMrak
сообщение 5.7.2015, 12:10
Сообщение #4
Стаж: 10 лет

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

Ребят помогите кто нибудь а =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 9art
сообщение 6.7.2015, 0:05
Сообщение #5


Стаж: 12 лет

Сообщений: 991
Благодарностей: 534
Полезность: 843

ar_hudpos "0.01 0.16"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
MrMrak
сообщение 6.7.2015, 0:19
Сообщение #6
Стаж: 10 лет

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

Цитата(9art @ 6.7.2015, 1:05) *
ar_hudpos "0.01 0.16"

Благодарю, но не мог бы ты мне помочь исправить тут ощибки а то не компилируется

sma
Код:
/*

*/

#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <fun>
#include <cstrike>
#include <csstats>
#include <csx>
#include <hamsandwich>
#include <fakemeta>
#include <engine>

////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////// НАСТРОЙКА МОДА //////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

// если ваш сервер НЕ использует Colored Translit, то закомментируйте следующую строку
//#define USE_COLORED_TRANSLIT

#define ADMIN_LISTEN ADMIN_RCON

#if !defined USE_COLORED_TRANSLIT
new g_AdminGMsg, g_Prefix, g_NoSlesh

new message[192]
new sayText
new teamInfo

new strName[191]
new strText[191]
new alive[11]

new g_AdminListen
#endif

////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////// НАСТРОЙКА МОДА //////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

#define PLUGIN "Army Ranks StatsX"
#define VERSION "1.1"
#define AUTHOR "Serega"

#define TASKID_INFO 7777
#define TASKID_LOAD 8888
#define TASKID_DED 9999

//StatusText=================
enum _:MAX_TYPES
{
TYPE_NONE,
TYPE_RELATION,
TYPE_PLAYER
}

enum
{
LOOK_FRIEND = 1,
LOOK_ENEMY,
LOOK_HOSTAGE
}

enum _:MAX_REPLACES
{
RE_HP,
RE_ARMY,
RE_NAME
}

new const Replaces[MAX_REPLACES][] =
{
"%hp%",
"%army%",
"%name%"
}

new status_value[MAX_TYPES]
new gStatusText
//===========================

new Array:g_array_restrict_bonus
new Array:g_array_astats

new MaxPlayers, g_RestFile[64]
new g_rounds
new g_DedRound[33]
new PlayerXP[33], PlayerLevel[33], g_MsgHud, levelUp[33]
new bool:bonus_blocked
new bool:g_Prof_Enable[33]
new bool:g_Prof_Auto[33]

new g_PlBonus, g_plNewLvl, g_PlusBonusNewLVL, g_PlusBonusNewLVLMoney, g_PlusBonusNewLVLHP
new g_CentrID, g_XPvalue, g_XPheadshot, g_XPc4def
new g_HudColor, g_HudPos, g_FirstRound
new g_Dedovshina, g_DedovshinaLock, g_DedovshinaTime, g_DedovshinaMoney, g_DedovshinaKnife, g_DedovshinaSlap, g_DownloadCS, g_See_Steam
new g_Bonus_He, g_Bonus_Flash, g_Bonus_Smoke, g_Bonus_Armor, g_Bonus_Defuse, g_Bonus_NV, g_Bonus_Health, g_Levels

new HE_G[31], FLASH_G[31], SMOKE_G[31], ARMOR_B[31], DEFUSE_N[31], NIGHT_V[31], HEALTH_BONUS[31], LEVELS[31]
new const CLASSES[][] = { "I_1", "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", "I_20", "I_21", "I_22", "I_23", "I_24", "I_25", "I_26", "I_27", "I_28", "I_29", "I_30" }

new g_Prof_Deagle, g_Prof_Famas, g_Prof_Scout, g_Prof_Ak47, g_Prof_M4a1, g_Prof_m249, g_Prof_Awp, g_Prof_Awp_Damage, g_Prof_He_Damage, g_Prof_Flag
new g_Prof_Auto_Default, g_Prof_Flag_Default, g_Prof_Awp_Default, g_Prof_He_Default

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_dictionary("army_ranks_statsx_30.txt" )

register_logevent("RestartRound", 2, "1=Game_Commencing")
register_event("TextMsg", "RestartRound", "a", "2=#Game_will_restart_in")

register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0")
register_event( "DeathMsg","EventDeath", "a")

set_task(1.0, "Info", TASKID_INFO, "", 0, "b")
g_MsgHud = CreateHudSyncObj()

gStatusText = get_user_msgid("StatusText")
register_event("StatusValue", "event_StatusValue", "be")

RegisterHam(Ham_TakeDamage, "player", "Prof_Weapon")

g_array_restrict_bonus = ArrayCreate(32, 1)
g_array_astats = ArrayCreate(32, 1)

// настройки
g_XPvalue = register_cvar("ar_xp_value", "1")
g_XPc4def = register_cvar("ar_xp_c4def", "1")
g_XPheadshot = register_cvar("ar_xp_hs", "1")

g_PlBonus = register_cvar("ar_givebonus", "1")
g_plNewLvl = register_cvar("ar_givebonusnl", "1")
g_PlusBonusNewLVL = register_cvar("ar_plusbonusnl", "1")
g_PlusBonusNewLVLMoney = register_cvar("ar_plusbonusnl_money", "16000")
g_PlusBonusNewLVLHP = register_cvar("ar_plusbonusnl_hp", "200")
g_CentrID = register_cvar("ar_centrid", "1")
g_HudColor = register_cvar("ar_hudcolor", "100 100 100")
g_HudPos = register_cvar("ar_hudpos", "0.01 0.16")
g_FirstRound = register_cvar("ar_firstround", "1")
g_Dedovshina = register_cvar("ar_ded", "1")
g_DedovshinaLock = register_cvar("ar_ded_lockround", "5")
g_DedovshinaTime = register_cvar("ar_ded_time", "3.0")
g_DedovshinaMoney = register_cvar("ar_ded_money", "1")
g_DedovshinaKnife = register_cvar("ar_ded_knife", "1")
g_DedovshinaSlap = register_cvar("ar_ded_slap", "10")
g_DownloadCS = register_cvar("ar_download_url", "vk.com/vdserver")
g_See_Steam = register_cvar("ar_see_steam", "1")

#if !defined USE_COLORED_TRANSLIT
g_NoSlesh = register_cvar("ar_noslesh","0")
g_AdminGMsg = register_cvar("ar_adminchat", "1")
g_Prefix = register_cvar("ar_prefix","1")
#endif

g_Bonus_He = register_cvar("ar_bonus_he", "0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
g_Bonus_Flash = register_cvar("ar_bonus_flash", "0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
g_Bonus_Smoke = register_cvar("ar_bonus_smoke", "0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
g_Bonus_Armor = register_cvar("ar_bonus_armor", "0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
g_Bonus_Defuse = register_cvar("ar_bonus_defuse", "0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
g_Bonus_NV = register_cvar("ar_bonus_nv", "0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1")
g_Bonus_Health = register_cvar("ar_bonus_hp", "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0")
g_Levels = register_cvar("ar_levels", "0 10 20 30 50 100 150 200 250 300 350 400 500 600 700 800 1000 1200 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 6500 7000")
register_concmd("ar_lockmap", "MapConst", ADMIN_RCON, "Lock Map. <map>")

g_Prof_Deagle = register_cvar("ar_prof_deagle", "21")
g_Prof_Famas = register_cvar("ar_prof_famas", "22")
g_Prof_Scout = register_cvar("ar_prof_scout", "23")
g_Prof_Ak47 = register_cvar("ar_prof_ak47", "24")
g_Prof_M4a1 = register_cvar("ar_prof_m4a1", "25")
g_Prof_m249 = register_cvar("ar_prof_m249", "26")
g_Prof_Awp = register_cvar("ar_prof_awp", "27")
g_Prof_Awp_Damage = register_cvar("ar_prof_awp_damage", "28")
g_Prof_He_Damage = register_cvar("ar_prof_he_damage", "29")
g_Prof_Flag = register_cvar("ar_prof_flag", "30")

g_Prof_Auto_Default = register_cvar("ar_prof_auto", "1")
g_Prof_Awp_Default = register_cvar("ar_prof_awp_default", "2.0")
g_Prof_He_Default = register_cvar("ar_prof_he_default", "1.5")
g_Prof_Flag_Default = register_cvar("ar_prof_flag_default", "t")

// статистика игроков онлайн=====================
register_clcmd("say /astats", "ShowStatsMotd")
register_clcmd("say_team /astats", "ShowStatsMotd")
register_clcmd("say /steam", "ShowStatsMotd")
register_clcmd("say_team /steam", "ShowStatsMotd")

// информация о настройках плагина===============
register_clcmd("say /ainfo", "ShowSettingsMotd")
register_clcmd("say_team /ainfo", "ShowSettingsMotd")

// информация о бонусах==========================
register_clcmd("say /abonus", "ShowBonusMotd")
register_clcmd("say_team /abonus", "ShowBonusMotd")

// prof menu=====================================
register_clcmd("say /aprof", "prof_menu")
register_clcmd("say_team /aprof", "prof_menu")

// prof auto on==================================
register_clcmd("say /aauto", "prof_auto")
register_clcmd("say_team /aauto", "prof_auto")

// меню==========================================
register_clcmd("say /amenu", "amenu")
register_clcmd("say_team /amenu", "amenu")
register_clcmd("amenu", "amenu")

// использование чата============================
#if !defined USE_COLORED_TRANSLIT
g_AdminListen = register_cvar ("amx_listen", "1")
register_clcmd("say", "hook_say")
register_clcmd("say_team", "hook_teamsay")
sayText = get_user_msgid("SayText")
teamInfo = get_user_msgid("TeamInfo")
register_message(sayText, "arubaid_duplicated")
#endif

// загрузка конфига==============================
new configsDir[64]
get_configsdir(configsDir, 63)
server_cmd("exec %s/army_ranks_statsx_30.cfg", configsDir)

format(g_RestFile, 63, "%s/weaprest.ini", configsDir)
MaxPlayers = get_maxplayers()

set_task(0.1, "RestrBonus")
set_task(0.1, "LoadSettings")
}

// Проверка на запрещенные карты======================================================
public RestrBonus() {
if(get_pcvar_num(g_plNewLvl)) {
new Map[32]
get_mapname(Map, 31)
for(new i = 0; i < ArraySize(g_array_restrict_bonus); i++) {
new restrict_bonus[32]
ArrayGetString(g_array_restrict_bonus, i, restrict_bonus, 31)

if(equal(Map, restrict_bonus)) {
bonus_blocked = true
break
}
else
bonus_blocked = false
}
}
}
// Проверка на первый раунд===========================================================
public RestartRound() {
g_rounds = 0

for(new id = 1; id <= MaxPlayers; id++)
g_DedRound[id] = 0
}

// Загрузка настроек запрещенных карт==================================================
public MapConst(id, level, cid) {
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED

new arg[32]
read_argv(1, arg, 31)
ArrayPushString(g_array_restrict_bonus, arg)

return PLUGIN_HANDLED
}

// Загрузка настроек бонусов===========================================================
public LoadSettings() {
new i
new Bonus_He[64]
get_pcvar_string(g_Bonus_He, Bonus_He, 63)
trim(Bonus_He)
for (i = 0; i < 30; i++)
HE_G[i+1] = str_to_num(Bonus_He[i*2])

new Bonus_Flash[64]
get_pcvar_string(g_Bonus_Flash, Bonus_Flash, 63)
trim(Bonus_Flash)
for (i = 0; i < 30; i++)
FLASH_G[i+1] = str_to_num(Bonus_Flash[i*2])

new Bonus_Smoke[64]
get_pcvar_string(g_Bonus_Smoke, Bonus_Smoke, 63)
trim(Bonus_Smoke)
for (i = 0; i < 30; i++)
SMOKE_G[i+1] = str_to_num(Bonus_Smoke[i*2])

new Bonus_Armor[64]
get_pcvar_string(g_Bonus_Armor, Bonus_Armor, 63)
trim(Bonus_Armor)
for (i = 0; i < 30; i++)
ARMOR_B[i+1] = str_to_num(Bonus_Armor[i*2])

new Bonus_Defuse[64]
get_pcvar_string(g_Bonus_Defuse, Bonus_Defuse, 63)
trim(Bonus_Defuse)
for (i = 0; i < 30; i++)
DEFUSE_N[i+1] = str_to_num(Bonus_Defuse[i*2])

new Bonus_NV[64]
get_pcvar_string(g_Bonus_NV, Bonus_NV, 63)
trim(Bonus_NV)
for (i = 0; i < 30; i++)
NIGHT_V[i+1] = str_to_num(Bonus_NV[i*2])

new Bonus_Health[256], B_H[31][16]
get_pcvar_string(g_Bonus_Health, Bonus_Health, 255)
trim(Bonus_Health)
parse(Bonus_Health,
B_H[0], 15, B_H[1], 15, B_H[2], 15, B_H[3], 15, B_H[4], 15, B_H[5], 15, B_H[6], 15, B_H[7], 15, B_H[8], 15, B_H[9], 15,
B_H[10], 15, B_H[11], 15, B_H[12], 15, B_H[13], 15, B_H[14], 15, B_H[15], 15, B_H[16], 15, B_H[17], 15, B_H[18], 15, B_H[19], 15,
B_H[20], 15, B_H[21], 15, B_H[22], 15, B_H[23], 15, B_H[24], 15, B_H[25], 15, B_H[26], 15, B_H[27], 15, B_H[28], 15, B_H[29], 15, B_H[30], 15
)
for (i = 0; i < 30; i++)
HEALTH_BONUS[i+1] = str_to_num(B_H[i])

new cvLevels[256], LVL[31][16]
get_pcvar_string(g_Levels, cvLevels, 255)
trim(cvLevels)
parse(cvLevels,
LVL[0], 15, LVL[1], 15, LVL[2], 15, LVL[3], 15, LVL[4], 15, LVL[5], 15, LVL[6], 15, LVL[7], 15, LVL[8], 15, LVL[9], 15,
LVL[10], 15, LVL[11], 15, LVL[12], 15, LVL[13], 15, LVL[14], 15, LVL[15], 15, LVL[16], 15, LVL[17], 15, LVL[18], 15, LVL[19], 15,
LVL[20], 15, LVL[21], 15, LVL[22], 15, LVL[23], 15, LVL[24], 15, LVL[25], 15, LVL[26], 15, LVL[27], 15, LVL[28], 15, LVL[29], 15, LVL[30], 15
)
for (i = 0; i < 30; i++)
LEVELS[i+1] = str_to_num(LVL[i])

return PLUGIN_HANDLED
}

// проф =============================================================================
public prof_auto(id) {
if(g_Prof_Auto[id]) {
g_Prof_Auto[id] = false
ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_AUTO_OFF")
}
else {
g_Prof_Auto[id] = true
ColorChat(id, BLUE, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_AUTO_ON")
}
}

public prof_menu(id) {
if(get_pcvar_num(g_FirstRound) && g_rounds < get_pcvar_num(g_FirstRound)) {
ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_ROUND", get_pcvar_num(g_FirstRound))
return PLUGIN_CONTINUE
}
if(!g_Prof_Enable[id]) {
ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_PROF_DISABLE")
return PLUGIN_CONTINUE
}
if(!is_user_alive(id)) {
ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_ALIVE")
return PLUGIN_CONTINUE
}
new szText[700]
formatex(szText, charsmax(szText), "%L %L", LANG_PLAYER, "AR_TAG_MENU", LANG_PLAYER, "PROF_MENU_NAME")
new menu = menu_create(szText, "prof_menu_item")

if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Deagle)) {
formatex(szText, charsmax(szText), "Deagle")
menu_additem(menu, szText, "1")
}
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Famas)) {
formatex(szText, charsmax(szText), "Famas")
menu_additem(menu, szText, "2")
}
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Scout)) {
formatex(szText, charsmax(szText), "Scout")
menu_additem(menu, szText, "3")
}
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Ak47)) {
formatex(szText, charsmax(szText), "AK47")
menu_additem(menu, szText, "4")
}
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_M4a1)) {
formatex(szText, charsmax(szText), "M4A1")
menu_additem(menu, szText, "5")
}
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_m249)) {
formatex(szText, charsmax(szText), "Papagan")
menu_additem(menu, szText, "6")
}
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Awp)) {
formatex(szText, charsmax(szText), "AWP")
menu_additem(menu, szText, "7")
}

format(szText, charsmax(szText), "%L", LANG_PLAYER,"MENU_EXITLANG")
menu_setprop(menu, MPROP_EXITNAME, szText)

menu_display(id, menu, 0)

return PLUGIN_CONTINUE
}
public prof_menu_item(id,menu,item) {
if(item == MENU_EXIT)
return PLUGIN_HANDLED

if(!is_user_alive(id)) {
ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_ALIVE")
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_prof(id, CSW_DEAGLE)
case 2:
give_prof(id, CSW_FAMAS)
case 3:
give_prof(id, CSW_SCOUT)
case 4:
give_prof(id, CSW_AK47)
case 5:
give_prof(id, CSW_M4A1)
case 6:
give_prof(id, CSW_M249)
case 7:
give_prof(id, CSW_AWP)
}
g_Prof_Enable[id] = false
return PLUGIN_HANDLED
}

public give_prof(id, weapon) {
if (restSettings(weapon)) {
client_print(id, print_center, "* This item is restricted *")
prof_menu(id)
return PLUGIN_HANDLED
}
for(new i = 1; i < 33; i++) {
if (i == 2 || i== 4 || i == 6 || i == 9 || i == 29 || i == 31 || i == 32)
continue
if (weapon == 26) {
if(user_has_weapon(id, i)) {
client_cmd(id, "slot2;drop")
break
}
}
if(user_has_weapon(id, i)) {
client_cmd(id, "slot1;drop")
break
}
}
new weapon_name[24]
get_weaponname(weapon, weapon_name, 24)
give_item(id, weapon_name)
if(weapon == 3 || weapon == 15 || weapon == 22 || weapon == 28)
cs_set_user_bpammo(id, weapon, 90)
else if(weapon == 26)
cs_set_user_bpammo(id, weapon, 35)
else if(weapon == 20)
cs_set_user_bpammo(id, weapon, 200)
else if(weapon == 18)
cs_set_user_bpammo(id, weapon, 30)

return PLUGIN_HANDLED
}

public Prof_Weapon(victim, inflicator, attacker, Float:damage) {
if(!is_user_connected(attacker))
return
if(victim == attacker || !victim)
return

if(get_user_weapon(attacker) == CSW_AWP && PlayerLevel[attacker] >= get_pcvar_num(g_Prof_Awp_Damage))
SetHamParamFloat(4, damage * get_pcvar_float(g_Prof_Awp_Default))
if(inflicator > 100 && PlayerLevel[attacker] >= get_pcvar_num(g_Prof_He_Damage))
SetHamParamFloat(4, damage * get_pcvar_float(g_Prof_He_Default))
}
// использование чата=================================================================
#if !defined USE_COLORED_TRANSLIT

public arubaid_duplicated(msgId, msgDest, receiver) {
return PLUGIN_HANDLED
}

public hook_say(id) {
if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id) || !get_pcvar_num(g_Prefix)) {
return PLUGIN_CONTINUE
}

read_args (message, 191)
remove_quotes (message)

if (message[0] == '@' || equal (message, ""))
return PLUGIN_CONTINUE
if(get_pcvar_num(g_NoSlesh)) {
if (message[0] == '/')
return PLUGIN_CONTINUE
}

new name[32]
get_user_name (id, name, 31)

new isAlive

if (is_user_alive (id)) {
isAlive = 1
alive = "^x01"
}
else {
isAlive = 0
alive = "^x01*DEAD* "
}

static color[10]

if (get_user_flags(id) & ADMIN_CHAT) {
get_user_team (id, color, 9)

if(get_pcvar_num(g_AdminGMsg) == 1) // green color
{
format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ^x04", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}
else if(get_pcvar_num(g_AdminGMsg) == 2) // team color
{
format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ^x03", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}
else // yellow color
{
format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}
}
else {
get_user_team (id, color, 9)
format (strName, 191, "%s^x01[^x04%L^x01] ^x03%s ^x01: ", alive, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}

format (strText, 191, "%s", message)
format (message, 191, "%s%s", strName, strText)

sendMessage (color, isAlive)

return PLUGIN_CONTINUE
}

public hook_teamsay(id) {
if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id) || !get_pcvar_num(g_Prefix)) {
return PLUGIN_CONTINUE
}
new playerTeam = get_user_team(id)
new playerTeamName[19]

switch (playerTeam)
{
case 1:
copy (playerTeamName, 11, "Terrorists")

case 2:
copy (playerTeamName, 18, "Counter-Terrorists")

default:
copy (playerTeamName, 9, "Spectator")
}

read_args (message, 191)
remove_quotes (message)

if (message[0] == '@' || equal (message, ""))
return PLUGIN_CONTINUE
if(get_pcvar_num(g_NoSlesh)) {
if (message[0] == '/')
return PLUGIN_CONTINUE
}

new name[32]
get_user_name(id, name, 31)

new isAlive

if (is_user_alive (id)) {
isAlive = 1
alive = "^x01"
}
else {
isAlive = 0
alive = "^x01*DEAD* "
}

static color[10]

if (get_user_flags(id) & ADMIN_CHAT) {
get_user_team (id, color, 9)

if(get_pcvar_num(g_AdminGMsg) == 1) // green color
{
format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ^x04", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}
else if(get_pcvar_num(g_AdminGMsg) == 2) // team color
{
format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ^x03", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}
else // yellow color
{
format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}
}
else {
get_user_team(id, color, 9)

format (strName, 191, "%s(%s) ^x01[^x04%L^x01] ^x03%s ^x01: ", alive, playerTeamName, LANG_PLAYER,CLASSES[PlayerLevel[id]], name)
}

format (strText, 191, "%s", message)
format (message, 191, "%s%s", strName, strText)

sendTeamMessage(color, isAlive, playerTeam)

return PLUGIN_CONTINUE
}

public sendMessage (color[], alive) {
new teamName[10]

for (new player = 1; player < MaxPlayers; player++) {
if (!is_user_connected(player))
continue

if (alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN) {
get_user_team(player, teamName, 9)
changeTeamInfo(player, color)
writeMessage(player, message)
changeTeamInfo(player, teamName)
}
}
}

public sendTeamMessage (color[], alive, playerTeam) {
new teamName[10]

for (new player = 1; player < MaxPlayers; player++) {
if (!is_user_connected(player))
continue

if (get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN) {
if (alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN) {
get_user_team(player, teamName, 9)
changeTeamInfo(player, color)
writeMessage(player, message)
changeTeamInfo(player, teamName)
}
}
}
}

public changeTeamInfo(player, team[]) {
message_begin(MSG_ONE, teamInfo, _, player)
write_byte(player)
write_string(team)
message_end()
}

public writeMessage(player, message[]) {
message_begin(MSG_ONE, sayText, {0, 0, 0}, player)
write_byte(player)
write_string(message)
message_end()
}

#endif

// Проверка уровня====================================================================
public checkLvl(id) {
if(id > 0 && id < 33) {
if (PlayerLevel[id] <= 0)
PlayerLevel[id] = 1
if (PlayerLevel[id] < 30) {
while(PlayerXP[id] >= LEVELS[PlayerLevel[id]+1]) {
PlayerLevel[id]++
levelUp[id] = 1
new Name[32]
get_user_name(id, Name, 31)
if(cs_get_user_team(id) == CS_TEAM_T)
ColorChat(0, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL", Name, LANG_PLAYER,CLASSES[PlayerLevel[id]])
else
ColorChat(0, BLUE, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL", Name, LANG_PLAYER,CLASSES[PlayerLevel[id]])
}
}
}
}
// Добавляет опыт======================================================================
public EventDeath() {
new iVictim = read_data(2)
new iTeam = get_user_team(iVictim)
new iKiller = read_data(1)
new headshot = read_data(3)
if(iKiller != iVictim && get_user_team(iKiller) != iTeam && is_user_connected(iKiller) && PlayerLevel[iKiller] < 30) {
if (get_pcvar_num(g_XPheadshot)) {
if(headshot)
PlayerXP[iKiller] += get_pcvar_num(g_XPvalue) * 2
else
PlayerXP[iKiller] += get_pcvar_num(g_XPvalue)
}
else
PlayerXP[iKiller] += get_pcvar_num(g_XPvalue)

checkLvl(iKiller)
}
return PLUGIN_CONTINUE
}

public bomb_explode(planter, defuser) {
if (get_pcvar_num(g_XPc4def)) {
PlayerXP[planter] += get_pcvar_num(g_XPvalue)*3
checkLvl(planter)
}
return PLUGIN_CONTINUE
}

public bomb_defused(defuser) {
if (get_pcvar_num(g_XPc4def)) {
PlayerXP[defuser] += get_pcvar_num(g_XPvalue)*3
checkLvl(defuser)
}
return PLUGIN_CONTINUE
}

// Старт раунда=======================================================================
public EventRoundStart() {
g_rounds++
set_task(0.1, "BonusRoundStart")

for(new id = 1; id <= MaxPlayers; id++) {
g_Prof_Enable[id] = true
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Deagle) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Famas) ||
PlayerLevel[id] >= get_pcvar_num(g_Prof_Scout) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Ak47) ||
PlayerLevel[id] >= get_pcvar_num(g_Prof_M4a1) || PlayerLevel[id] >= get_pcvar_num(g_Prof_m249) ||
PlayerLevel[id] >= get_pcvar_num(g_Prof_Awp)) {
if(is_user_connected(id) && is_user_alive(id) && g_Prof_Auto[id]) {
if(get_pcvar_num(g_FirstRound) && g_rounds < get_pcvar_num(g_FirstRound))
return PLUGIN_CONTINUE
prof_menu(id)
}
}
}
return PLUGIN_CONTINUE
}

public BonusRoundStart() {
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_connected(id)) {
set_task(1.0, "load_client_data", id)
}
if(is_user_alive(id) && is_user_connected(id) && get_pcvar_num(g_PlBonus)) {
if (get_pcvar_num(g_FirstRound) && g_rounds < get_pcvar_num(g_FirstRound))
return PLUGIN_CONTINUE
else {
if(!bonus_blocked) {
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]]
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)) {
BonusNewLVL(id)
levelUp[id] = 0
}
}
}
}
}
return PLUGIN_CONTINUE
}

// Получение бонуса за lvl==============================================================
public BonusNewLVL(id) {
new szText[700 char]
formatex(szText, charsmax(szText), "%L %L", LANG_PLAYER, "AR_TAG_MENU", LANG_PLAYER, "NEW_LEVEL_MENU")
new menu = menu_create(szText, "bnl_menu")

formatex(szText, charsmax(szText), "AWP")
menu_additem(menu, szText, "1", 0)

formatex(szText, charsmax(szText), "AK47")
menu_additem(menu, szText, "2", 0)

formatex(szText, charsmax(szText), "M4A1")
menu_additem(menu, szText, "3", 0)

formatex(szText, charsmax(szText), "Galil")
menu_additem(menu, szText, "4", 0)

formatex(szText, charsmax(szText), "Famas")
menu_additem(menu, szText, "5", 0)

if(get_pcvar_num(g_PlusBonusNewLVL)) {
formatex(szText, charsmax(szText), "%d$", get_pcvar_num(g_PlusBonusNewLVLMoney))
menu_additem(menu, szText, "6", 0)

formatex(szText, charsmax(szText), "%dHP", get_pcvar_num(g_PlusBonusNewLVLHP))
menu_additem(menu, szText, "7", 0)
}

menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu, 0)

return PLUGIN_CONTINUE
}
public bnl_menu(id, menu, item) {
if(!is_user_alive(id) && is_user_connected(id)) {
ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"AR_ALIVE")
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_weapons(id, CSW_AWP)
case 2:
give_weapons(id, CSW_AK47)
case 3:
give_weapons(id, CSW_M4A1)
case 4:
give_weapons(id, CSW_GALIL)
case 5:
give_weapons(id, CSW_FAMAS)
case 6:
{
if(get_pcvar_num(g_PlusBonusNewLVL)) {
cs_set_user_money(id, get_pcvar_num(g_PlusBonusNewLVLMoney))
ColorChat(id, BLUE, "%L %L %d$", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL_GIVE", get_pcvar_num(g_PlusBonusNewLVLMoney))
}
}
case 7:
{
if(get_pcvar_num(g_PlusBonusNewLVL)) {
set_user_health(id, get_pcvar_num(g_PlusBonusNewLVLHP))
ColorChat(id, BLUE, "%L %L %dHP", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL_GIVE", get_pcvar_num(g_PlusBonusNewLVLHP))
}
}
}
return PLUGIN_HANDLED
}

public give_weapons(id, weapon) {
if (restSettings(weapon)) {
client_print(id, print_center, "* This item is restricted *")
BonusNewLVL(id)
return PLUGIN_HANDLED
}
for(new i = 1; i < 33; i++) {
if (i == 2 || i== 4 || i == 6 || i == 9 || i == 10 || i == 11 || i == 16 || i == 17 || i == 25 || i == 26 || i == 29 || i == 31 || i == 32)
continue

if(user_has_weapon(id, i))
client_cmd(id, "slot1;drop")
}
new weapon_name[24]
get_weaponname(weapon, weapon_name, 24)
give_item(id, weapon_name)
cs_set_user_bpammo(id, weapon, 90)
cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_smokegrenade")

if(cs_get_user_team(id) == CS_TEAM_CT && !cs_get_user_defuse(id))
cs_set_user_defuse(id, 1, 0, 160, 0, _, 0)

ColorChat(id, RED, "%L %L %s", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"NEW_LEVEL_GIVE", weapon_name[7])

return PLUGIN_HANDLED
}

restSettings(weapon) {
if (!file_exists(g_RestFile))
return 0

new text[16]
new a, pos = 0

while (read_file(g_RestFile, pos++, text, 15, a)) {
if (text[0] == ';' || !a)
continue

new weapon_name[24], weapon_rest[24]
get_weaponname(weapon, weapon_name, 24)
parse(text, text, 15)
format(weapon_rest, 23, "weapon_%s", text)
if(equal(weapon_name, weapon_rest))
return 1
}
return 0
}

stock give_user_bonus(id, f_g, h_g, s_g, n_v, a_b, d_k, health) {
if(f_g >= 1)
give_item(id, "weapon_flashbang")
if(h_g>= 1)
give_item(id, "weapon_hegrenade")
if(s_g>= 1)
give_item(id, "weapon_smokegrenade")
if(n_v >= 1)
cs_set_user_nvg(id, n_v)
if(a_b >= 1)
cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
if(d_k >= 1) {
if(cs_get_user_team(id) == CS_TEAM_CT && !cs_get_user_defuse(id))
cs_set_user_defuse(id, 1, 0, 160, 0, _, 0)
}
set_user_health(id, get_user_health(id)+health)
}

// Информер========================================================================
=
public Info() {
static temp[3][10], color[3], Float:pos[2], i, text[21]
new needXP[64]

get_pcvar_string(g_HudColor, text, 20)
parse(text, temp[0], 3, temp[1], 3, temp[2], 3)
for(i = 0; i < 3; i++) color[i] = str_to_num(temp[i])

get_pcvar_string(g_HudPos, text, 20)
parse(text, temp[0], 9, temp[1], 9)
for(i = 0; i < 2; i++) pos[i] = floatstr(temp[i])

for(new id = 1; id <= MaxPlayers; id++) {
if(!is_user_bot(id) && is_user_connected(id)) {
set_hudmessage(color[0], color[1], color[2], pos[0], pos[1], 0, 0.0, 1.0, _, _, -1)
static buffer[192], len

if(!is_user_alive(id)) {
new id2 = pev(id, pev_iuser2)
if(id2 > 0) {
new Name2[32]
get_user_name(id2, Name2, 31)
if(PlayerLevel[id2] < 30) {
needXP[id2] = LEVELS[PlayerLevel[id2]+1] - PlayerXP[id2]
len = format(buffer, charsmax(buffer), "%L : %s", LANG_PLAYER,"A_NAME", Name2)
len += format(buffer[len], charsmax(buffer) - len, "^n%L :", LANG_PLAYER,"ZVANIE")
len += format(buffer[len], charsmax(buffer) - len, " %L", LANG_PLAYER,CLASSES[PlayerLevel[id2]])
len += format(buffer[len], charsmax(buffer) - len, "^n%L : %d", LANG_PLAYER,"PL_XP",PlayerXP[id2])
len += format(buffer[len], charsmax(buffer) - len, "^n%L :", LANG_PLAYER,"NEXT_LVL")
len += format(buffer[len], charsmax(buffer) - len, " %d ", needXP[id2])
len += format(buffer[len], charsmax(buffer) - len, "%L", LANG_PLAYER,"FRAGS")
}
else {
len = format(buffer, charsmax(buffer), "%L : %s", LANG_PLAYER,"A_NAME", Name2)
len += format(buffer[len], charsmax(buffer) - len, "^n%L :",LANG_PLAYER,"ZVANIE")
len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,CLASSES[PlayerLevel[id2]])
len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_MAX")
}
}
else {
if(PlayerLevel[id] < 30) {
needXP[id] = LEVELS[PlayerLevel[id]+1] - PlayerXP[id]
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")
}
else {
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")
}
}
}
else {
if(PlayerLevel[id] < 30) {
needXP[id] = LEVELS[PlayerLevel[id]+1] - PlayerXP[id]
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")
}
else {
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
}

public client_putinserver(id) {
if(get_pcvar_num(g_Prof_Auto_Default))
g_Prof_Auto[id] = true
else
g_Prof_Auto[id] = false

set_task(0.1, "load_client_data", id)
}

public load_client_data(id) {
if(!is_user_connected(id))
return PLUGIN_HANDLED

new stats[8], bodyhits[8], stats2[4]
get_user_stats(id, stats, bodyhits)

if (get_pcvar_num(g_XPc4def))
get_user_stats2(id, stats2)

if (get_pcvar_num(g_XPheadshot))
PlayerXP[id] = ((stats[2]*2 + (stats[0] - stats[2])) + (stats2[1]*3 + stats2[3]*3)) * get_pcvar_num(g_XPvalue)
else
PlayerXP[id] = (stats2[1]*3 + stats2[3]*3 + stats[0]) * get_pcvar_num(g_XPvalue)

new STEAM[32]
get_user_authid(id, STEAM, 31)
if (equal(STEAM, "STEAM_ID_LAN") || equal(STEAM, "VALVE_ID_LAN")) {
PlayerXP[id] = 0
new DownloadURL[64]
get_pcvar_string(g_DownloadCS, DownloadURL, 63)
client_print(id, print_console, "[%L] %L", LANG_PLAYER,"ARMY", LANG_PLAYER,"STEAM_ID_LAN")
client_print(id, print_console, "[%L] %L %s", LANG_PLAYER,"ARMY", LANG_PLAYER,"DOWNLOAD_CS", DownloadURL)
ColorChat(id, RED, "%L ^03%L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"STEAM_ID_LAN")
ColorChat(id, RED, "%L ^03%L ^04%s", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DOWNLOAD_CS", DownloadURL)
}

for(new i = 1; i <= 30; i++) {
if (i < 30) {
if (PlayerXP[id] >= LEVELS[i] && PlayerXP[id] < LEVELS[i+1])
PlayerLevel[id] = i
}
else {
if (PlayerXP[id] >= LEVELS[30])
PlayerLevel[id] = 30
}
}
if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Flag)) {
new string[32]
get_pcvar_string(g_Prof_Flag_Default, string, 31)
new flags = read_flags(string)
set_user_flags(id, flags)
}
return PLUGIN_HANDLED
}

public plugin_natives()
register_native("get_user_lvl", "native_get_user_lvl", 1)

public native_get_user_lvl(id)
return PlayerLevel[id]

// Наведение прицела на игрока=========================================================
public event_StatusValue(id) {
new num = read_data(1)
if( num <= 0 || num >= MAX_TYPES)
return

new update = status_value[num] = read_data(2)
new id2 = read_data(2)
switch(num) {
case TYPE_RELATION: {
if(!update && is_user_alive(id) && get_pcvar_num(g_CentrID)) {
message_begin(MSG_ONE_UNRELIABLE, gStatusText, _, id)
write_byte(0)
write_string("")
message_end()
}
if(is_user_connected(id) && get_pcvar_num(g_Dedovshina) && (g_rounds >= g_DedRound[id])) {
remove_task(id+TASKID_DED)
MsgBarTime(id, 0)
}
}
case TYPE_PLAYER: {
if(is_user_alive(id) && get_pcvar_num(g_CentrID)) {
new message[192]
switch(status_value[TYPE_RELATION]) {
case LOOK_FRIEND: {
copy(message, charsmax(message), "Friend : %name% Health : %hp% %army%")
}
case LOOK_ENEMY: {
copy(message, charsmax(message), "Enemy : %name% %army%")
}
case LOOK_HOSTAGE: {
return
}
}
EditMessage(message, update, true, get_user_health(update))
message_begin(MSG_ONE_UNRELIABLE, gStatusText, _, id)
write_byte(0)
write_string(message)
message_end()
}
if(is_user_connected(id) && is_user_connected(id2) && is_user_alive(id) && get_pcvar_num(g_Dedovshina) && (g_rounds >= g_DedRound[id]) && (get_user_button(id) & IN_USE)) {
if(cs_get_user_team(id) == cs_get_user_team(id2)) {
MsgBarTime(id, floatround(get_pcvar_float(g_DedovshinaTime)))
new arg[2]
arg[0] = id
arg[1] = id2
set_task(get_pcvar_float(g_DedovshinaTime), "Dedovshina", id+TASKID_DED, arg, 2)
}
}
}
}
}
EditMessage(message[192], player, bool:status_text, hp) {
new temp[35]

if(is_user_alive(player)) {
for(new i; i < MAX_REPLACES; i++) {
switch(i) {
case RE_HP: {
num_to_str(hp, temp, charsmax(temp))
}
case RE_ARMY: {
format(temp, charsmax(temp), "^n%L : %L", LANG_PLAYER,"ZVANIE", LANG_PLAYER,CLASSES[PlayerLevel[player]])
}
case RE_NAME: {
if(status_text)
copy(temp, charsmax(temp), "%p2")
else
get_user_name(player, temp, charsmax(temp))
}
default: {
copy(temp, charsmax(temp), "")
}
}
replace(message, charsmax(message), Replaces[i], temp)
}
}
trim(message)
}

public Dedovshina(arg[]) {
new Name[32], Name2[32], ded_pcvar

get_user_name(arg[0], Name, 31)
get_user_name(arg[1], Name2, 31)

if(PlayerLevel[arg[0]] <= PlayerLevel[arg[1]]) {
ColorChat(arg[0], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_FAIL", Name2)

return PLUGIN_HANDLED
}

if(get_pcvar_num(g_Dedovshina) == 4)
ded_pcvar = random_num(1, 2)
else
ded_pcvar = get_pcvar_num(g_Dedovshina)

if(ded_pcvar == 1) {
new money2 = cs_get_user_money(arg[1])

if(cs_get_user_money(arg[0]) + money2 > 16000 && get_pcvar_num(g_DedovshinaMoney))
cs_set_user_money(arg[0], 16000)
else
cs_set_user_money(arg[0], cs_get_user_money(arg[0]) + money2)

cs_set_user_money(arg[1], 0)
ColorChat(arg[0], BLUE, "%L %L %d$", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_1", Name2, money2)
ColorChat(arg[1], RED, "%L ^04%s ^01%L %d$", LANG_PLAYER,"AR_TAG", Name, LANG_PLAYER,"DED_2", money2)
client_cmd(arg[0], "spk buttons/bell1")
client_cmd(arg[1], "spk buttons/blip1")
}
else if(ded_pcvar == 2) {
new clip, ammo, weapon_name[24]
new weapon_id = get_user_weapon(arg[1], clip, ammo)

if(!get_pcvar_num(g_DedovshinaKnife)) {
if (weapon_id == 29) {
ColorChat(arg[0], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_FAIL_WEAPON")

return PLUGIN_HANDLED
}
}
get_weaponname(weapon_id, weapon_name, 24)
ham_strip_weapon(arg[1], weapon_name)
give_item(arg[0], weapon_name)

if (weapon_id != 29 && weapon_id != 9 && weapon_id != 6 && weapon_id != 4)
cs_set_user_bpammo(arg[0], weapon_id, cs_get_user_bpammo(arg[0], weapon_id) + ammo)

ColorChat(arg[0], BLUE, "%L %L %s", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_1", Name2, weapon_name[7])
ColorChat(arg[1], RED, "%L ^04%s ^01%L %s", LANG_PLAYER,"AR_TAG", Name, LANG_PLAYER,"DED_2", weapon_name[7])
client_cmd(arg[0], "spk buttons/bell1")
client_cmd(arg[1], "spk buttons/blip1")
}
else if(ded_pcvar == 3) {
user_slap(arg[1], get_pcvar_num(g_DedovshinaSlap), 1)
ColorChat(arg[0], BLUE, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_SLAP_1", Name2, get_pcvar_num(g_DedovshinaSlap))
ColorChat(arg[1], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_SLAP_2", Name, get_pcvar_num(g_DedovshinaSlap))
client_cmd(arg[0], "spk buttons/bell1")
client_cmd(arg[1], "spk buttons/blip1")
}

g_DedRound[arg[0]] = g_rounds + get_pcvar_num(g_DedovshinaLock)
ColorChat(arg[0], RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"DED_LOCK", get_pcvar_num(g_DedovshinaLock))

return PLUGIN_HANDLED
}

stock MsgBarTime(iPlayer, iTime) {
message_begin(MSG_ONE, 108, _, iPlayer)
write_short(iTime)
message_end()
}

stock ham_strip_weapon(id,weapon[]) {
if(!equal(weapon,"weapon_",7)) return 0

new wId = get_weaponid(weapon)
if(!wId) return 0

new wEnt
while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
if(!wEnt) return 0

if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt)

if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0
ExecuteHamB(Ham_Item_Kill,wEnt)

set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId))

return 1
}
// Звания игроков онлайн===============================================================
public ShowStatsMotd(id) {
new iPlayers[32], iNum, iPlayer, player_stats[6]
get_players(iPlayers, iNum, "ch")
for(new i = 0; i < iNum; i++) {
iPlayer = iPlayers[i]
format(player_stats, 5, "%d %d", iPlayer, PlayerXP[iPlayer])
ArrayPushString(g_array_astats, player_stats)
}
ArraySort(g_array_astats, "sort_astats")

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> %L <td class=th> %L <td class=th> %L</tr>", LANG_PLAYER,"A_NAME", LANG_PLAYER,"ZVANIE", LANG_PLAYER,"PL_XP")

for(new i2 = 0; i2 < iNum; i2++) {
new string[6], PlayerID, Name[32], STEAM[35]

ArrayGetString(g_array_astats, i2, string, 5)
PlayerID = str_to_num(string[0])
get_user_name(PlayerID, Name, 31)
get_user_authid(PlayerID, STEAM, 34)

if(get_pcvar_num(g_See_Steam)) {
if(strlen(STEAM) > 18 || equal(STEAM, "STEAM_ID_LAN") || equal(STEAM, "VALVE_ID_LAN"))
len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %s ", Name)
else
len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %s <b>&lt;STEAM&gt;</b>", Name)
}
else
len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %s ", Name)

len += format(buffer[len], charsmax(buffer) - len, "<td> %L ", LANG_PLAYER,CLASSES[PlayerLevel[PlayerID]])
len += format(buffer[len], charsmax(buffer) - len, "<td> %d ", PlayerXP[PlayerID])
}
len += format(buffer[len], charsmax(buffer) - len, "</tr></table></body></html>")
new motd[64]
formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Stats")

show_motd(id, buffer, motd)

ArrayClear(g_array_astats)
}

public sort_astats(Array:g_array_astats, e1, e2) {
new string_e1[6], string_e2[6], var1, var2

ArrayGetString(g_array_astats, e1, string_e1, 5)
ArrayGetString(g_array_astats, e2, string_e2, 5)

var1 = str_to_num(string_e1[2])
var2 = str_to_num(string_e2[2])

if (var1 > var2)
return -1
if (var1 == var2)
return 0
if (var1 <= var2)
return 1
return 0
}


// Информация о бонусных настройках===================================================
public ShowSettingsMotd(id) {
new XPc4def[33], XPheadshot[33], PlBonus[33], PlNewLvl[33], FirstRound[64], Dedovshina[33]

if (get_pcvar_num(g_XPc4def))
copy(XPc4def, 32, "<font color=#008000>ON</font>")
else
copy(XPc4def, 32, "<font color=#FF0000>OFF</font>")

if (get_pcvar_num(g_XPheadshot))
copy(XPheadshot, 32, "<font color=#008000>ON</font>")
else
copy(XPheadshot, 32, "<font color=#FF0000>OFF</font>")

if (get_pcvar_num(g_PlBonus))
copy(PlBonus, 32, "<font color=#008000>ON</font>")
else
copy(PlBonus, 32, "<font color=#FF0000>OFF</font>")

if (get_pcvar_num(g_plNewLvl))
copy(PlNewLvl, 32, "<font color=#008000>ON</font>")
else
copy(PlNewLvl, 32, "<font color=#FF0000>OFF</font>")

if (get_pcvar_num(g_FirstRound) == 0 || get_pcvar_num(g_FirstRound) == 1)
format(FirstRound, 63, "<font color=#008000>%L </font>", LANG_PLAYER,"ALL")
else
format(FirstRound, 63, "<font color=#FF0000>%L <b>%d</b></font>", LANG_PLAYER,"DO", get_pcvar_num(g_FirstRound))

if (get_pcvar_num(g_Dedovshina))
copy(Dedovshina, 32, "<font color=#008000>ON</font>")
else
copy(Dedovshina, 32, "<font color=#FF0000>OFF</font>")

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> %L <td class=th> %L </tr>", LANG_PLAYER,"FUNCTION", LANG_PLAYER,"STATUS")

len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"XP_VALUE")
len += format(buffer[len], charsmax(buffer) - len, "<td><font color=#008000> <b> %d</b></font> ", get_pcvar_num(g_XPvalue))

len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"XP_C4DEF")
len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", XPc4def)

len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"XP_HEADSHOT")
len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", XPheadshot)

len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"PL_BONUS")
len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", PlBonus)

len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"PL_NEWLVL")
len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", PlNewLvl)

len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"FIRST_ROUND")
len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", FirstRound)

len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %L ", LANG_PLAYER,"DED_INFO")
len += format(buffer[len], charsmax(buffer) - len, "<td> %s ", Dedovshina)

len += format(buffer[len], charsmax(buffer) - len, "</tr></table></body></html>")

new motd[64]
formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Settings")

show_motd(id, buffer, motd)
}

// Информация о бонусах===============================================================
public ShowBonusMotd(id) {
if(!get_pcvar_num(g_PlBonus)) {
ColorChat(id, RED, "%L %L", LANG_PLAYER,"AR_TAG", LANG_PLAYER,"BONUS_OFF")

return PLUGIN_HANDLED
}
new NextLVL = PlayerLevel[id]+1
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; font-size:11px; 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 }")

if (PlayerLevel[id] == 30) {
len += format(buffer[len], charsmax(buffer) - len, ".th{ width:800; 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>%L <b>%L</b></tr>", LANG_PLAYER,"YOUR_LVL", LANG_PLAYER,CLASSES[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<tr><td>")

if(HE_G[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"HE_G")
if(FLASH_G[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"FLASH_G")
if(SMOKE_G[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"SMOKE_G")
if(ARMOR_B[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"ARMOR_B")
if(DEFUSE_N[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"DEFUSE_N")
if(NIGHT_V[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"NIGHT_V")
if(HEALTH_BONUS[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>+%d HP</b><br>", HEALTH_BONUS[PlayerLevel[id]])

len += format(buffer[len], charsmax(buffer) - len, "</tr></table>")
len += format(buffer[len], charsmax(buffer) - len, "<br><center>%L</center></body></html>", LANG_PLAYER,"BONUS_INFO")

new motd[64]
formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Bonus")

show_motd(id, buffer, motd)

return PLUGIN_HANDLED
}

len += format(buffer[len], charsmax(buffer) - len, ".th{ width:400; 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>%L <b>%L</b><td class=th>%L <b>%L</b></tr>", LANG_PLAYER,"YOUR_LVL", LANG_PLAYER,CLASSES[PlayerLevel[id]], LANG_PLAYER,"NEXT_LVL2", LANG_PLAYER,CLASSES[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<tr><td>")

if(HE_G[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"HE_G")
if(FLASH_G[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"FLASH_G")
if(SMOKE_G[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"SMOKE_G")
if(ARMOR_B[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"ARMOR_B")
if(DEFUSE_N[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"DEFUSE_N")
if(NIGHT_V[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"NIGHT_V")
if(HEALTH_BONUS[PlayerLevel[id]])
len += format(buffer[len], charsmax(buffer) - len, "<b>+%d HP</b><br>", HEALTH_BONUS[PlayerLevel[id]])

len += format(buffer[len], charsmax(buffer) - len, "<td>")

if(HE_G[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"HE_G")
if(FLASH_G[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"FLASH_G")
if(SMOKE_G[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"SMOKE_G")
if(ARMOR_B[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"ARMOR_B")
if(DEFUSE_N[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"DEFUSE_N")
if(NIGHT_V[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<b>%L</b><br>", LANG_PLAYER,"NIGHT_V")
if(HEALTH_BONUS[NextLVL])
len += format(buffer[len], charsmax(buffer) - len, "<b>+%d HP</b><br>", HEALTH_BONUS[NextLVL])

len += format(buffer[len], charsmax(buffer) - len, "</tr></table>")
len += format(buffer[len], charsmax(buffer) - len, "<br><center>%L</center></body></html>", LANG_PLAYER,"BONUS_INFO")

new motd[64]
formatex(motd[0], charsmax(motd), "[Army Ranks StatsX] Bonus")

show_motd(id, buffer, motd)

return PLUGIN_HANDLED
}

public amenu(id) {
new nameMenu[128], format_astats[64], format_ainfo[64], format_abonus[64], format_aprof[64], exitname[32]

format(nameMenu, 127, "%L", LANG_PLAYER,"AR_TAG_MENU", LANG_PLAYER,"MENU_NAME")
format(format_astats, 63, "%L", LANG_PLAYER,"MENU_ASTATS")
format(format_ainfo, 63, "%L", LANG_PLAYER,"MENU_AINFO")
format(format_abonus, 63, "%L", LANG_PLAYER,"MENU_ABONUS")
format(format_aprof, 63, "%L", LANG_PLAYER,"MENU_APROF")
format(exitname, 31, "%L", LANG_PLAYER,"MENU_EXITLANG")

new menu=menu_create(nameMenu, "amenu_item")
menu_additem(menu, format_astats, "1")
menu_additem(menu, format_ainfo, "2")
menu_additem(menu, format_abonus, "3")

if(PlayerLevel[id] >= get_pcvar_num(g_Prof_Deagle) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Famas) ||
PlayerLevel[id] >= get_pcvar_num(g_Prof_Scout) || PlayerLevel[id] >= get_pcvar_num(g_Prof_Ak47) ||
PlayerLevel[id] >= get_pcvar_num(g_Prof_M4a1) || PlayerLevel[id] >= get_pcvar_num(g_Prof_m249) ||
PlayerLevel[id] >= get_pcvar_num(g_Prof_Awp)) {
menu_additem(menu, format_aprof, "4")
}

if(is_plugin_loaded("Army Ranks StatsX Web") != -1) {
new format_atop[64]
format(format_atop, 63, "%L", LANG_PLAYER,"MENU_ATOP")
menu_additem(menu, format_atop, "5")
}

menu_setprop(menu, MPROP_EXITNAME, exitname)

menu_display(id, menu, 0)

return PLUGIN_CONTINUE
}

public amenu_item(id, menu, item) {
new data[6], iName[64], access, callback
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
new key = str_to_num(data)

switch(key) {
case 1:{
ShowStatsMotd(id)
}
case 2:{
ShowSettingsMotd(id)
}
case 3:{
ShowBonusMotd(id)
}
case 4:{
prof_menu(id)
}
case 5:{
client_cmd(id, "say /atop")
}
}
return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: