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

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

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

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

История благодарностей участнику BeasTa ::: Спасибо сказали: 7
Дата поста: В теме: За сообщение: Спасибо сказали:
31.3.2016, 19:58 Kill assists FIX
Вот без меседжей, сам пока еще не проверял код

Код:
#include <amxmodx>
#include <fun>
#include <cstrike>

#define LIVE_UPDATE // Сразу обновлять кол-во фрагов или же в начале раунда. Включение добавит "тяжести"

#define IsValidPlayers(%1,%2) ((1 <= %1 <= 32) && (1 <= %2 <= 32))

new g_iAssist[33];
new g_iAssDamage[33][33];

public plugin_init()
{
#define VERSION "1.17"
register_plugin("Lite Kill Assist", VERSION, "neygomon");
register_cvar("lite_assist", VERSION, FCVAR_SERVER | FCVAR_SPONLY);

register_event("HLTV", "eRoundStart", "a", "1=0", "2=0");
register_event("DeathMsg", "eDeathMsg", "a", "1>0");
register_event("Damage", "eDamage", "be", "2!0", "3=0", "4!0");
}

public client_disconnect(id)
ResetAssist(id);

public eRoundStart()
{
new pl[32], pnum; get_players(pl, pnum);
for(new i; i < pnum; i++)
ResetAssist(pl[i]);
}

public eDeathMsg()
{
static pKiller, pVictim;
pKiller = read_data(1);
pVictim = read_data(2);
if(pKiller == pVictim || pKiller == g_iAssist[pVictim] || !is_user_connected(g_iAssist[pVictim])) return;

cs_set_user_money(g_iAssist[pVictim], cs_get_user_money(g_iAssist[pVictim]) + 300);
static iFrags; iFrags = get_user_frags(g_iAssist[pVictim]) + 1;
set_user_frags(g_iAssist[pVictim], iFrags);
#if defined LIVE_UPDATE
static mScoreInfo; if(!mScoreInfo) mScoreInfo = get_user_msgid("ScoreInfo");
message_begin(MSG_ALL, mScoreInfo);
write_byte(g_iAssist[pVictim]);
write_short(iFrags);
write_short(get_user_deaths(g_iAssist[pVictim]));
write_short(0);
write_short(get_user_team(g_iAssist[pVictim]));
message_end();
#endif
static killer[32], victim[32];
is_user_connected(pKiller) ? get_user_name(pKiller, killer, charsmax(killer)) : formatex(killer, charsmax(killer), "Killer unknown");
get_user_name(pVictim, victim, charsmax(victim));
//ChatColor(g_iAssist[pVictim], "^1[^4Assist^1] ^4Вы помогли ^3%s ^4убить противника. Бонус:^3 1 фраг ^1+^3 300$", killer);
ResetAssist(pVictim);
}

public eDamage(id)
{
static pAttacker; pAttacker = get_user_attacker(id);
if(id == pAttacker || !IsValidPlayers(id, pAttacker)) return;
g_iAssDamage[id][pAttacker] += read_data(2);
if(!g_iAssist[id] && g_iAssDamage[id][pAttacker] >= 50)
g_iAssist[id] = pAttacker;
}

ResetAssist(id)
{
g_iAssist[id] = 0;
arrayset(g_iAssDamage[id], 0, sizeof g_iAssDamage[]);
}

/*stock ChatColor(id, const szMessage[], any:...)
{
static szMsg[190], IdMsg; vformat(szMsg, charsmax(szMsg), szMessage, 3);
if(!IdMsg) IdMsg = get_user_msgid("SayText");
message_begin(MSG_ONE, IdMsg, .player = id);
write_byte(id);
write_string(szMsg);
message_end();
}*/
Landir163
22.9.2015, 16:52 DJ BeasT или BeasT кидалово.
Всем спасибо за понимание.
Баги, любой скриптер подтердит, практически всегда есть в большом коде, сразу редко что получается.
ТСу сказал, нормально говори о багах, всё исправлю, а если будешь делать мозги, закину в чс. В итоге - за что боролся, на то и напоролся.
Извините, здесь не буду следить за темой.
Буду отвечать на амхх и то, если будет время.
Те, кто меня знают хотябы более менее, знают, что я не спобен кинуть.
Способен ТОЛЬКО отвечать тем же, с чем приходят ко мне.
Problem
21.2.2015, 16:23 Admin Control v1.0
Admin Control V1.0

Плагин, позволяет:
1) Добавлять админов в реальном времени через меню на сервре, выбрал игрока, выбрал, какую привелегию выдать (вип, админ, админвип, гл. админ), ввёл дату окончания админки, как только выбрал нужного игрока, ему в эту же секунду выдаются выбранные права.
2) В системе есть авто-отключение прав по истечении датыи.
3) Данная система позволит избежать не срабатывания выдачи прав, при смене карты (такое зачастую бывает на серверах, использующих амхбанс и ему подобные).
4) Система все данные пишет в бд через модуль sqlx.
5) Для игроков, имеющих привелегии есть личый кабинет, в котором показывает дату окончания привелегии, текущий пароль, который можно сменить в этом же кабинете. Для открытия личного кабинета нужно просто написать в чате /kabinet
6) Настройки довольно гибкие, есть отдельный конфиг, в котором и хранятся все настройки.
admin_control.cfg

acontrol_sql_host "localhost" // Хост бд
acontrol_sql_user "user_bd" // Юзер бд
acontrol_sql_pass "password" // Пароль бд
acontrol_sql_db "bd_name" // Имя бд

ac_bd_table "AControl" // Таблица, которую плагин создаст в бд.
//Если вы используете плагин на нескольких серверах и хотите записывать всех админов одну бд,
//и хотите, чтобы на всех серверах были разные админы, просто на каждом сервере, в этом конфиге поставьте разные называния таблиц.

ac_add_menu_flags "z" // Флаги доступа к меню добавления админов
ac_kabinet_flags "b" // Флаги доступа к личному кабинету

ac_remove_flags "abcdefghijkmnopqrstu" // Все флаги, которые нужно удалить, при отключении админки

ac_admin_flags "abcdefghijkmnopqrstu" // Флаги, которые будут выдаваться админу
ac_vipadmin_flags "abcdefghijkmnopqrstu" // Флаги, которые будут выдаваться випадмину
ac_vip_flags "abcdefghijkmnopqrstu" // Флаги, которые будут выдаваться випу
ac_gladmin_flags "abcdefghijkmnopqrstu" // Флаги, которые будут выдаваться гл.админу
ac_other_flags "z" // Флаги, которые будут выставлятся админу, после его удаления

LANG файл
admin_control.txt
[ru]
AC_REASON = Вы не имеете права захода под этим ником!
AC_KICKED = !g*!yИгрок!g %s !yкикнут за неправомерное использование этого ника!
AC_SUCCESSFULDELETTE = !g*!yВы !gуспешно !tудалили !y учетную запись игрока!
AC_NEWPASS = !g*!yПридумайте !gновый !yпароль
AC_SUCCESSFULNEWPASS = !g*!yВы !gуспешно !yсменили пароль!
AC_NOТSIMBOLS = !g*!yПароль должен содержать хотябы !g1!y символ!
AC_KABNOACCESS = !g*!yВы не имеете !gправ!y доступа к !gличному кабинету!y!
AC_ADDADMINNOACCESS = !g*!yВы не имеете !gправ!y доступа к !tменю!y добавления!g админов!y!
AC_TITLEKABADMINVIP = \rЛичный кабинет^n\yАдм\w и \yВип\w закончится:\y %d\w.\y%d\w.\y%d^n\wВаш пароль:\y setinfo _pw %s
AC_ENDACCESS = !yВаша ваши права на этом сервере закончились!
AC_TITLEKABADMIN = \rЛичный кабинет^n\yАдм\w закончится:\y %d\w.\y%d\w.\y%d^n\wВаш пароль:\y setinfo _pw %s
AC_TITLEKABVIP = \rЛичный кабинет^n\yВип\w закончится:\y %d\w.\y%d\w.\y%d^n\wВаш пароль:\y setinfo _pw %s
AC_TITLEKABGLADMIN = \rЛичный кабинет^n\yГЛ.Адм\w закончится:\y %d\w.\y%d\w.\y%d^n\wВаш пароль:\y setinfo _pw %s
AC_KABITEMONE = Сменить пароль
AC_ADDADMINSUCCESS = !g*!y Вы!g успешно!g выдали!y привелегии игроку -!g %s
AC_NEWADMINNOACCESS = !g*!y Вы!g успешно!g обновили!y привелегии игроку -!g %s
AC_TITLEADDMENU = Что будем делать?
AC_TITLEADDITEM = \rДобавить\w/\yОбновить\w админа
AC_TITLEADDITEMTWO = Удалить админа
AC_TITLEDELMENU = Кого будем удалять?
AC_TITLEPRIVELEGEMENU = Что выдаём?
AC_ITEMPRIVELEGEMENU = ГЛ.Админ
AC_ITEMTWOPRIVELEGEMENU = Админ + Вип
AC_ITEMTHREEPRIVELEGEMENU = Админ
AC_ITEMFORPRIVELEGEMENU = Вип
AC_DELADMINSUCCESFUL = !g*!y Вы!g успешно!y удалили привелегии игроку -!g %s
AC_SETDATEY = !g* !yВведите год окончания привелегии!
AC_SETDATEM = !g* !yВведите месяц окончания привелегии!
AC_SETDATED = !g* !yВведите день окончания привелегии!
AC_CHOOSEPLAYERSETFLAGS = Выберите игрока


Установка плагина и что нужно для его работы
1) Качаете плагин ОТСЮДА
2) Расскладываете всё по папкам, как в архиве.
3) Покупаете серийник ТУТ

4) Настраиваете admin_control.cfg
5) Прописываете плагин в plugins.ini
6) Перезагружаете сервер\меняете карту и вуаля, плагин работает в полную силу
7) Если плагин не работает, в папке amxmodx/logs есть файл AControl.log, в нём написана вся нужная инфа.
8) Плагин предоставляется без раскрытия исходного кода.
9) Лицензия приобретается на один сервер hlds, при обнаружении использования одного серийного номера на нескольких он будет заблокирован без возврата денежных средств.
10) Для работы плагина необходимо использование сокетов.
11) Для работы плагина необходимо использование модуля MySQL.
12) Обновления плагина бесплатны.

Скрины можно посмотреть Тут

Changelog:
1.0 - Релиз
Oneshot
13.2.2015, 13:32 Изменить плагин
Так будет смотрибельнее)

Код:
if ( iRank <= 10 )
{
get_user_name(id, szName, 32);

ChatColor ( 0 , "!gТрепещите! На сервер зашёл топ%s !team %s ",iRank , szName ); // Выводим сообщение в чат
client_cmd ( 0, "spk ambience/thunder_clap" ); // Воспроизводим звук
}
MrTsar
13.2.2015, 5:43 Изменить плагин
if ( iRank <= 10 )
{
get_user_name(id, szName, 32);
ChatColor ( 0 , "!gТрепещите! На сервер зашёл игрок из топ10 !team %s ", szName );
client_cmd(0,"spk ambience/thunder_clap")
}
MrTsar
11.2.2015, 10:08 VIP плагин
Ой, точно xD

Код:
/**
* Last update:
* 2/1/2014
*
* Changes are:
* - VIP tag is assigned for VIPs on every map
* - VIP autoequipment and VIP armory doesn't work on awp_*, 35hp_* and aim_* maps
* - VIP autoequipment and VIP armory also doesn't work for the 1st round
* - added reset for round counter after Game Commencing / Game Restart
* - fixes and optimizations
*/

#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta_util>

#define VIP_FLAG ADMIN_LEVEL_D // flag 'p'

const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)

new giRoundCounter, pRound, giMenu

new bool:gbDisableArmory // whether VIP autoequipment and VIP armory are disabled for that map
new bool:gbBombMap // whether there is bomb objective on the map
new giIsUsed // whether player has used VIP menu in the current round

// macro; %1 - variable being modified, %2 - player id
#define CheckUsed(%1) ( giIsUsed & ( 1 << (%1-1) ) )
#define SetUsed(%1) ( giIsUsed |= ( 1 << (%1-1) ) )

#define VIP_TAG (1<<2)

public plugin_init() {
register_plugin( "Vip_weapon", "1.60", "7eVen / Safety1st" )

register_event( "ResetHUD", "ResetHUD", "be" )
register_event( "HLTV", "Event_NewRound", "a", "1=0", "2=0" )
register_event( "TextMsg", "Event_NewGame", "a", "2=#Game_will_restart_in", "2=#Game_Commencing" )
register_message( get_user_msgid( "ScoreAttrib" ), "msgScoreAttrib" )

register_clcmd( "vipmenu", "vip_menu" )
register_clcmd( "say /vipmenu", "vip_menu" )

register_clcmd( "say /adminka", "adminka" )
register_clcmd( "say /vip","vipka" )

pRound = register_cvar("amx_vip_give", "3")

if( engfunc( EngFunc_FindEntityByString, -1, "classname", "func_bomb_target" ) )
gbBombMap = true
else if( engfunc( EngFunc_FindEntityByString, -1, "classname", "info_bomb_target" ) )
gbBombMap = true

new szMap[32]
get_mapname( szMap, charsmax(szMap) )
if( containi( szMap , "awp_" ) != -1 || containi( szMap , "35hp_" ) != -1 || containi( szMap , "aim_" ) != -1 )
gbDisableArmory = true

// build menu
giMenu = menu_create( "\r Оружейка \w[\y V.I.P \w]", "show_vipmenu" )

menu_additem( giMenu, "\wВзять \r[\y Famas \r]\r", "1" )
menu_additem( giMenu, "\wВзять \r[\y M4A1 \r]\r", "2" )
menu_additem( giMenu, "\wВзять \r[\y AK47 \r]\r", "3" )
menu_additem( giMenu, "\wВзять \r[\y AWP \r]\r", "4" )

menu_setprop( giMenu, MPROP_NUMBER_COLOR, "\y" )
menu_setprop( giMenu, MPROP_NEXTNAME, "Дальше" )
menu_setprop( giMenu, MPROP_BACKNAME, "Назад" )
menu_setprop( giMenu, MPROP_EXITNAME, "Выход" )
menu_setprop( giMenu, MPROP_EXIT,MEXIT_ALL )
}

drop_weapon(id) {
static weapons[32], i, num, weaponid, wname[32]

num = 0
get_user_weapons( id, weapons, num )

for( i = 0; i < num; i++ ) {
weaponid = weapons[i]

if( ( (1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM ) ) {
get_weaponname( weaponid, wname, 31 )
engclient_cmd( id, "drop", wname )
}
}
}

public vip_menu(id) {
if( !is_user_alive(id) )
return PLUGIN_HANDLED

if( !( get_user_flags(id) & VIP_FLAG ) ) {
ChatColor( id, "^1[ ^4V.I.P^1 ] Только для ^4[V.I.P]" )
return PLUGIN_HANDLED
}

if( gbDisableArmory ) {
ChatColor( id, "^1[ ^4V.I.P^1 ] На текущей карте оружейка отключена!" )
return PLUGIN_HANDLED
}

if( CheckUsed(id) ) {
ChatColor( id, "^1[ ^4V.I.P^1 ] Вы уже использовали. Подождите..." )
return PLUGIN_HANDLED
}

new iRound = get_pcvar_num(pRound)
if( giRoundCounter < iRound ) {
ChatColor( id, "^1[ ^4V.I.P^1 ] Доступно с %d раунда!", iRound )
return PLUGIN_HANDLED
}

menu_display( id, giMenu )
return PLUGIN_HANDLED
}

public show_vipmenu( id, giMenu, item ) {
if( item == MENU_EXIT || !is_user_alive(id) )
return PLUGIN_HANDLED

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

drop_weapon(id)

switch( ++item ) {
case 1: {
give_item( id, "weapon_famas" )
cs_set_user_bpammo( id , CSW_FAMAS, 90 )
ChatColor( 0, "^1[ ^4V.I.P^1 ] Игрок^4 %s^1 взял^4 FAMAS!y!", name )
}
case 2: {
give_item( id, "weapon_m4a1" )
cs_set_user_bpammo( id , CSW_M4A1, 90 )
ChatColor( 0, "^1[ ^4V.I.P^1 ] Игрок^4 %s^1 взял^4 M4A1!y!", name )
}
case 3: {
give_item( id, "weapon_ak47" )
cs_set_user_bpammo( id , CSW_AK47, 90 )
ChatColor( 0, "^1[ ^4V.I.P^1 ] Игрок^4 %s^1 взял^4 AK47!y!", name )
}
case 4: {
give_item( id, "weapon_awp" )
cs_set_user_bpammo( id , CSW_AWP, 30 )
ChatColor( 0, "^1[ ^4V.I.P^1 ] Игрок^4 %s^1 взял^4 AWP!y!", name )
}
}

SetUsed(id)
return PLUGIN_HANDLED
}

public Event_NewRound() {
giRoundCounter++
giIsUsed = 0 // reset uses
}

public Event_NewGame() {
giRoundCounter = 0
}

public adminka(id) {
show_motd( id, "adminka.txt", "Покупка - Админки!" )
}

public vipka(id) {
show_motd( id, "vip.txt", "Покупка - V.I.P" )
}

public ResetHUD(id) {
if( gbDisableArmory )
return

if( giRoundCounter < 2 )
return

if( get_user_flags(id) & VIP_FLAG )
set_task( 0.5, "EquipVIP", id )
}

public EquipVIP(id) {
if( is_user_alive(id) ) {
cs_set_user_armor( id, 100, CsArmorType:CS_ARMOR_VESTHELM )
if( cs_get_user_team(id) == CS_TEAM_CT && gbBombMap && !cs_get_user_defuse(id) )
cs_set_user_defuse( id, .defusekit = 1 )

static const iPistols[] = { CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_USP, CSW_GLOCK18 }
for( new i = 0; i < 5; i++ ) {
if( fm_strip_user_gun( id, iPistols[i] ) )
break
}
give_item( id, "weapon_hegrenade" )
give_item( id, "weapon_flashbang" )
give_item( id, "weapon_flashbang" )
give_item( id, "weapon_smokegrenade" )

give_item( id, "weapon_deagle")
give_item( id, "ammo_50ae" )
give_item( id, "ammo_50ae" )
give_item( id, "ammo_50ae" )
give_item( id, "ammo_50ae" )
give_item( id, "ammo_50ae" )
}
}

public msgScoreAttrib(const MsgId, const MsgType, const MsgDest) { //xpaw's code
if ( get_user_flags(get_msg_arg_int(1)) & VIP_FLAG && !get_msg_arg_int(2) )
set_msg_arg_int( 2, ARG_BYTE, VIP_TAG )
}

ChatColor(const id, const input[], any:...) {
new count = 1, players[32], iPlayer
static msg[192], iMsgSayText
vformat(msg, 191, input, 3)

if ( !iMsgSayText )
iMsgSayText = get_user_msgid("SayText")

if (id)
players[0] = id
else
get_players(players, count, "ch")

for( new i = 0; i < count; i++ ) {
iPlayer = players[i]
message_begin(MSG_ONE_UNRELIABLE, iMsgSayText, _, iPlayer)
write_byte(iPlayer)
write_string(msg)
message_end()
}
}
Mandarin96rus
11.2.2015, 5:01 VIP плагин
Держи :)
Код:
/**
* Last update:
* 2/1/2014
*
* Changes are:
* - VIP tag is assigned for VIPs on every map
* - VIP autoequipment and VIP armory doesn't work on awp_*, 35hp_* and aim_* maps
* - VIP autoequipment and VIP armory also doesn't work for the 1st round
* - added reset for round counter after Game Commencing / Game Restart
* - fixes and optimizations
*/

#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta_util>

#define VIP_FLAG ADMIN_LEVEL_D // flag 'p'

const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)

new giRoundCounter, pRound, giMenu

new bool:gbDisableArmory // whether VIP autoequipment and VIP armory are disabled for that map
new bool:gbBombMap // whether there is bomb objective on the map
new giIsUsed // whether player has used VIP menu in the current round

// macro; %1 - variable being modified, %2 - player id
#define CheckUsed(%1) ( giIsUsed & ( 1 << (%1-1) ) )
#define SetUsed(%1) ( giIsUsed |= ( 1 << (%1-1) ) )

#define VIP_TAG (1<<2)

public plugin_init() {
register_plugin( "Vip_weapon", "1.60", "7eVen / Safety1st" )

register_event( "ResetHUD", "ResetHUD", "be" )
register_event( "HLTV", "Event_NewRound", "a", "1=0", "2=0" )
register_event( "TextMsg", "Event_NewGame", "a", "2=#Game_will_restart_in", "2=#Game_Commencing" )
register_message( get_user_msgid( "ScoreAttrib" ), "msgScoreAttrib" )

register_clcmd( "vipmenu", "vip_menu" )
register_clcmd( "say /vipmenu", "vip_menu" )

register_clcmd( "say /adminka", "adminka" )
register_clcmd( "say /vip","vipka" )

pRound = register_cvar("amx_vip_give", "3")

if( engfunc( EngFunc_FindEntityByString, -1, "classname", "func_bomb_target" ) )
gbBombMap = true
else if( engfunc( EngFunc_FindEntityByString, -1, "classname", "info_bomb_target" ) )
gbBombMap = true

new szMap[32]
get_mapname( szMap, charsmax(szMap) )
if( containi( szMap , "awp_" ) != -1 || containi( szMap , "35hp_" ) != -1 || containi( szMap , "aim_" ) != -1 )
gbDisableArmory = true

// build menu
giMenu = menu_create( "\r Оружейка \w[\y V.I.P \w]", "show_vipmenu" )

menu_additem( giMenu, "\wВзять \r[\y Famas \r]\r", "1" )
menu_additem( giMenu, "\wВзять \r[\y M4A1 \r]\r", "2" )
menu_additem( giMenu, "\wВзять \r[\y AK47 \r]\r", "3" )
menu_additem( giMenu, "\wВзять \r[\y AWP \r]\r", "4" )

menu_setprop( giMenu, MPROP_NUMBER_COLOR, "\y" )
menu_setprop( giMenu, MPROP_NEXTNAME, "Дальше" )
menu_setprop( giMenu, MPROP_BACKNAME, "Назад" )
menu_setprop( giMenu, MPROP_EXITNAME, "Выход" )
menu_setprop( giMenu, MPROP_EXIT,MEXIT_ALL )
}

drop_weapon(id) {
static weapons[32], i, num, weaponid, wname[32]

num = 0
get_user_weapons( id, weapons, num )

for( i = 0; i < num; i++ ) {
weaponid = weapons[i]

if( ( (1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM ) ) {
get_weaponname( weaponid, wname, 31 )
engclient_cmd( id, "drop", wname )
}
}
}

public vip_menu(id) {
if( !is_user_alive(id) )
return PLUGIN_HANDLED

if( !( get_user_flags(id) & VIP_FLAG ) ) {
ChatColor( id, "^1[ ^4V.I.P^1 ] Только для ^4[V.I.P]" )
return PLUGIN_HANDLED
}

if( gbDisableArmory ) {
ChatColor( id, "^1[ ^4V.I.P^1 ] На текущей карте оружейка отключена!" )
return PLUGIN_HANDLED
}

if( CheckUsed(id) ) {
ChatColor( id, "^1[ ^4V.I.P^1 ] Вы уже использовали. Подождите..." )
return PLUGIN_HANDLED
}

new iRound = get_pcvar_num(pRound)
if( giRoundCounter < iRound ) {
ChatColor( id, "^1[ ^4V.I.P^1 ] Доступно с %d раунда!", iRound )
return PLUGIN_HANDLED
}

menu_display( id, giMenu )
return PLUGIN_HANDLED
}

public show_vipmenu( id, giMenu, item ) {
if( item == MENU_EXIT || !is_user_alive(id) )
return PLUGIN_HANDLED

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

drop_weapon(id)

switch( ++item ) {
case 1: {
give_item( id, "weapon_famas" )
cs_set_user_bpammo( id , CSW_FAMAS, 90 )
ChatColor( id, "^1[ ^4V.I.P^1 ] Игрок^4 %s^1 взял^4 FAMAS!y!", name )
}
case 2: {
give_item( id, "weapon_m4a1" )
cs_set_user_bpammo( id , CSW_M4A1, 90 )
ChatColor( id, "^1[ ^4V.I.P^1 ] Игрок^4 %s^1 взял^4 M4A1!y!", name )
}
case 3: {
give_item( id, "weapon_ak47" )
cs_set_user_bpammo( id , CSW_AK47, 90 )
ChatColor( id, "^1[ ^4V.I.P^1 ] Игрок^4 %s^1 взял^4 AK47!y!", name )
}
case 4: {
give_item( id, "weapon_awp" )
cs_set_user_bpammo( id , CSW_AWP, 30 )
ChatColor( id, "^1[ ^4V.I.P^1 ] Игрок^4 %s^1 взял^4 AWP!y!", name )
}
}

SetUsed(id)
return PLUGIN_HANDLED
}

public Event_NewRound() {
giRoundCounter++
giIsUsed = 0 // reset uses
}

public Event_NewGame() {
giRoundCounter = 0
}

public adminka(id) {
show_motd( id, "adminka.txt", "Покупка - Админки!" )
}

public vipka(id) {
show_motd( id, "vip.txt", "Покупка - V.I.P" )
}

public ResetHUD(id) {
if( gbDisableArmory )
return

if( giRoundCounter < 2 )
return

if( get_user_flags(id) & VIP_FLAG )
set_task( 0.5, "EquipVIP", id )
}

public EquipVIP(id) {
if( is_user_alive(id) ) {
cs_set_user_armor( id, 100, CsArmorType:CS_ARMOR_VESTHELM )
if( cs_get_user_team(id) == CS_TEAM_CT && gbBombMap && !cs_get_user_defuse(id) )
cs_set_user_defuse( id, .defusekit = 1 )

static const iPistols[] = { CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_USP, CSW_GLOCK18 }
for( new i = 0; i < 5; i++ ) {
if( fm_strip_user_gun( id, iPistols[i] ) )
break
}
give_item( id, "weapon_hegrenade" )
give_item( id, "weapon_flashbang" )
give_item( id, "weapon_flashbang" )
give_item( id, "weapon_smokegrenade" )

give_item( id, "weapon_deagle")
give_item( id, "ammo_50ae" )
give_item( id, "ammo_50ae" )
give_item( id, "ammo_50ae" )
give_item( id, "ammo_50ae" )
give_item( id, "ammo_50ae" )
}
}

public msgScoreAttrib(const MsgId, const MsgType, const MsgDest) { //xpaw's code
if ( get_user_flags(get_msg_arg_int(1)) & VIP_FLAG && !get_msg_arg_int(2) )
set_msg_arg_int( 2, ARG_BYTE, VIP_TAG )
}

ChatColor(const id, const input[], any:...) {
new count = 1, players[32], iPlayer
static msg[192], iMsgSayText
vformat(msg, 191, input, 3)

if ( !iMsgSayText )
iMsgSayText = get_user_msgid("SayText")

if (id)
players[0] = id
else
get_players(players, count, "ch")

for( new i = 0; i < count; i++ ) {
iPlayer = players[i]
message_begin(MSG_ONE_UNRELIABLE, iMsgSayText, _, iPlayer)
write_byte(iPlayer)
write_string(msg)
message_end()
}
}
ThePhoenix