Код:
/*
*/
#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><STEAM></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
}