- Регистрация
- 24 Июл 2017
- Сообщения
- 133
- Симпатии
- 18
- Пол
- Мужской
есть плагин вип меню
там есть авто выдача диглга вкл/выкл
по дефолту выключена
как сделать что бы по дефолту включить
сохранение по nvault
чтобы автоматический вкл после игрок что бы мог отключить
там есть авто выдача диглга вкл/выкл
по дефолту выключена
как сделать что бы по дефолту включить
сохранение по nvault
чтобы автоматический вкл после игрок что бы мог отключить
Код:
#define PLUGIN "VIP Account Additions"
#define AUTHOR "ill(+wopox)"
#define VERSION "2.23a4"
/* 14.03.16
v.2.2 (by wopox)
- Добавлена настройка дефайнов моделей оружия, выдача бонусов в виде денег, и подробные настройки к ним. (всё опционально) ;
- G3/SG-1 в вип меню заменено на GALIL ;
- Добавлена настройка информирования: Сообщение при коннекте, и его звук можно отключить ;
- Использован правильный метод выставления VIP флага в таблице счёта (thx to Safety1st) ;
- Добавлена настройка на отображение VIP в таблице счёта ;
- Добавлена настройка использования Автоответичиков MOTD (/vipka, /adminka) ;
- Добавлена настройка VAMPIRE - отключение\включение функции прибавления HP при убийстве ;
- Добавлена настройка на использование конфига для плагина, и настройка его имени ;
- Добавлено удаление некоторых оружий (G3/SG-1, AWP), выкинутых VIP-игроком ;
- Исправлено сообщение о запрете выдачи Снайперских винтовок (ранее при вводе в чат /awp писало, что !автоматы вы уже брали) ;
- Добавлена DHUD визаулизация к функции VAMPIRE ;
- Добавлена настройка "с какого раунда доступна VIP меню" ;
v.2.21
- Исправлен баг с показом полученного дамага, даже при отключении дамагера в меню;
- Исправлен баг с не рабочим exec vip.cfg;
- Добавлена команда в чат /galil - выдача Galil;
- #include <dhudmessage> исключён, если отключена дефайном функция VAMPIRE;
v.2.22
- Фикс дропа, для чат команд, если он уже есть (say /dgl,ak47,awp);
- Убраны магические числа из функций выдачи оружия;
- Добавлена настройка с какого раунда разрешить выдачу AWP, M249 (AWPM249MINROUND);
- Добавлены дефайны на начальные раунды для фукнций меню и выдачи оружия;
v.2.22f1
- Пофикшена функция показа урона. (!!!);
- Добавлена возможность показа меню на функцию включения фонарика;
- Не большая оптимизация кода (сообщения о запрете оружий);
v.2.23
- Убран квар макс. количества получения снайперских винтовок из меню;
- Добавлена возможность установки количества выдаваемых FB гранат;
- Добавлена возможность установить количество брони, выдаваемое VIP игроку;
- Не значительная оптимизация VAMPIRE;
- Добавлены квары: vip_money_bonus, vip_maxmoney_bonus, vip_maxbonushp;
- Добавлена команда в чат /m249 - выдача пулемёта;
v.2.23a2
- Добавлена команда подгрузки конфига плагина;
- Добавлено информирование в консоль сервера при отсутствии конфига;
- Добавлена функция выдачи девушкам повышенной брони (дефайн);
- Добавлен квар, отображающий версию плагина;
- Фикс выдачи бонус денег в первом раунде при VIPSTARTROUND = 1;
- Изменён метод добавки денег.
v.2.23.a3
- По дефу выдаётся дигл.
- Добавлен срок окончания услуги в меню випки ( совместная работа с плагином adminload https://goldsrc.ru/topic/760/ )
- Компиляция с инклудом от плагина adminload (#include <adminload>)
*/
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <nvault>
#include <adminload>
#if AMXX_VERSION_NUM >= 183
#define client_disconnect client_disconnected
#endif
/* НАСТРОЙКА ПЛАГИНА **********************/
#define VIP_LEVEL ADMIN_LEVEL_H
#define ADMIN_LEVEL ADMIN_BAN
#define GIRL_LEVEL ADMIN_LEVEL_G
#define CONNECTVIPNOTICE // Оповещение, при заходе VIP игрока
#if defined CONNECTVIPNOTICE
#define SOUND_CONNECT // Использоват ли звук при оповещении. Закомментируйте, если не нужно.
#endif
//#define MONEY_BONUS // Выдача денежного бонуса VIP игрокам. Закомментируйте, если не нужно.
#define VIPSTARTROUND 1 // С какого раунда начнёт работать меню и действовать выдача VIP дополнений (Броня, гранаты, щипцы)
#define AUTOMINROUND 2 // С какого раунда можно брать автоматы
#define AWPM249MINROUND 3 // С какого раунда можно брать AWP, M249
#define OPENMENUROUND 2 // С какого раунда открывать меню
#define INFORMERS // Автоответичики MOTD (/vipka, /adminka)
#define TABVIPSHOW // Включить показ VIP флага в таблице счёта (TAB)
#define DELETEDROP // Удаление дропа (скорострелки, AWP) от VIP игроков
#define VAMPIRE // Прибавление HP при убийстве противника
#if defined VAMPIRE
#define VAMPIRE_MESSAGE_POS 1.0, 0.8 // Позиция сообщении о прибавке HP.
#define VAMPIRE_MESSAGE_COLOR 0, 255, 0 // Цвет сообщения, информера HP. Тип цвета RGB, http://www.colorschemer.com/online.html
#endif
//#define USECONFIG "vip.cfg" // Использовать ли конфиг для плагина
#define IMPULSEHOOKID 100 // Функция отображения меню на "F"
#if defined IMPULSEHOOKID
#include <engine>
#endif
//#define GIRLARMOR 200 // Выдача дополнительного ARMOR девушкам
/* НАСТРОЙКА ПЛАГИНА **********************/
#define isVIP(%1) (get_user_flags(%1) & VIP_LEVEL)
#define isGIRL(%1) (get_user_flags(%1) & GIRL_LEVEL)
#if defined SOUND_CONNECT
new const sound_vip[] = { "sound/vip_connect.mp3" } // путь к вашему звуку приветствия VIP (.mp3)
#endif
#define PDATA_SAFE 2
#define m_iAccount 115
const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
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)
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|
(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
new const MAXBPAMMO[] = { -1, 52, -1, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120,
30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, -1, 100 }
new const AMMOTYPE[][] = { "", "357sig", "", "762nato", "", "buckshot", "", "45acp", "556nato", "", "9mm", "57mm", "45acp",
"556nato", "556nato", "556nato", "45acp", "9mm", "338magnum", "9mm", "556natobox", "buckshot",
"556nato", "9mm", "762nato", "", "50ae", "556nato", "762nato", "", "57mm" }
new g_maxplayers, g_msgSayText, g_HudSync
new round_count
#if defined VAMPIRE
new cvar_kill_hp, cvar_kill_hs, cvar_kill_hp_max
#endif
new cvar_dgl, cvar_he, cvar_fl, cvar_sm, cvar_armor, cvar_dmg, cvar_menu_auto, cvar_menu_def, cvar_maxtime
#if defined MONEY_BONUS
new cvar_moneybonus, cvar_Maxmoneybonus
#endif
new cvar_take_secondary, cvar_take_primary
new g_take_pistol[33]
new g_take_autom[33]
new g_auto_dgl[33], g_auto_menu[33]
new g_damager[33]
new g_Save
new g_iRoundStart
new bool:g_ViewMenu[33]
new bool:g_EditMenu[33]
new bool:g_bLoadAuth = false;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
#if defined TABVIPSHOW
register_message( get_user_msgid ("ScoreAttrib"), "msg_ScoreAttrib" )
#endif
register_clcmd("vipmenu", "press_wm") // Команда для вызова VIP меню
register_clcmd("say /vipmenu", "press_wm")
#if defined IMPULSEHOOKID
register_impulse(IMPULSEHOOKID, "press_wm") // Меню на F
#endif
#if defined INFORMERS
register_clcmd("say /vip", "vip_motd") // Команда для вызова Окна продажи VIP прав
register_clcmd("say /admin", "admin_motd") // Команда для вызова Окна продажи Админских прав
#endif
register_clcmd("say /dgl", "take_dgl") // Команда выдачи в чат Deagle
register_clcmd("say /usp", "take_usp") // Команда выдачи в чат USP
register_clcmd("say /glk", "take_glk") // Команда выдачи в чат Glock18
register_clcmd("say /five", "take_five") // Команда выдачи в чат FiveSeven
register_clcmd("say /ak47", "take_ak47") // Команда выдачи в чат AK-47
register_clcmd("say /m4a1", "take_m4a1") // Команда выдачи в чат M4A1
register_clcmd("say /famas", "take_famas") // Команда выдачи в чат FAMAS
register_clcmd("say /galil", "take_galil") // Команда выдачи в чат GALIL
register_clcmd("say /awp", "take_awp") // Команда выдачи в чат AWP
register_clcmd("say /m249", "take_m249") // Команда выдачи в чат AWP
#if defined USECONFIG
register_clcmd("vip_load", "load_config", ADMIN_RCON, "Load the VIP plugin config") // Команда подгрузки конфига
#endif
register_menu("VIP Weapon", KEYSMENU, "weapon_menu")
register_event("HLTV", "RoundStart", "a", "1=0", "2=0")
register_event("TextMsg", "RoundRestart", "a", "2=#Game_Commencing", "2=#Game_will_restart_in")
register_event("Damage", "damage_message", "b", "2!0", "3=0", "4!0")
#if defined VAMPIRE
register_event("DeathMsg", "on_death", "a", "1>0")
#endif
#if defined MODEL_WEAPONS
register_event("CurWeapon","CurrentWeapon","be","1=1")
#endif
RegisterHam(Ham_Spawn, "player", "fw_SpawnPost", 1)
#if defined DELETEDROP
register_forward(FM_SetModel, "fw_SetModel")
#endif
#if defined VAMPIRE
cvar_kill_hp_max = register_cvar("vip_bonus_hpmax", "100") // Максимальное HP игрока
cvar_kill_hp = register_cvar("vip_bonus_hp", "10") // Прибавка указанного HP за убийство в тело
cvar_kill_hs = register_cvar("vip_bonus_hp_hs", "15") // Прибавка указанного HP за убийство в голову
#endif
cvar_dgl = register_cvar("vip_dgl", "1") // Функция получения: Deagle
cvar_he = register_cvar("vip_he", "1") // HE
cvar_fl = register_cvar("vip_fb", "2") // FB *2 (Максимум 2 флешки)
cvar_sm = register_cvar("vip_sg", "1") // SG
cvar_armor = register_cvar("vip_armor", "100") // Брони (количество от 0 до 999)
cvar_dmg = register_cvar("vip_dmg", "1") // Функция дамагера
cvar_menu_auto = register_cvar("vip_menu_set", "1") // Функция автопоказа VIPменю
cvar_menu_def = register_cvar("vip_menu_def", "0") // Автопоказ VIPmenu включен по стандарту
cvar_take_secondary = register_cvar("vip_take_secondary", "2") // Сколько раз за раунд можно взять оружие из 2 слота из VIPmenu
cvar_take_primary = register_cvar("vip_take_primary", "2") // Сколько раз за раунд можно взять оружие из 1 слота из VIPmenu
cvar_maxtime = register_cvar("vip_take_maxtime", "120") // Сколько времени от начала раунда можно брать оружие из VIPменю (секунд)
#if defined MONEY_BONUS
cvar_moneybonus = register_cvar("vip_bonus_money", "0") // Количество бонусных денег. (0 - отключить)
cvar_Maxmoneybonus = register_cvar("vip_bonus_moneymax", "3000") // Если у игрока на счету больше чем значение данного макроса, то ему выдаваться деньги не будут.
#endif
register_cvar ("vip_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY)
g_maxplayers = get_maxplayers()
g_msgSayText = get_user_msgid("SayText")
g_HudSync = CreateHudSyncObj()
g_Save = nvault_open("vip_settings")
#if defined USECONFIG
load_config()
#endif
}
#if defined TABVIPSHOW
public msg_ScoreAttrib( msg_id, msg_dest, receiver ) {
#define ARG_PlayerID 1
#define ARG_Flags 2
#define SCOREBOARD_VIP (1 << 2)
if( get_user_flags( get_msg_arg_int(ARG_PlayerID) ) & VIP_LEVEL )
set_msg_arg_int( ARG_Flags, ARG_BYTE, get_msg_arg_int(ARG_Flags) | SCOREBOARD_VIP )
}
#endif
#if defined USECONFIG
public load_config()
{
static g_ConfigsDir[64], g_FileName[256]
get_configsdir(g_ConfigsDir, charsmax(g_ConfigsDir))
format(g_FileName, 255, "%s/%s",g_ConfigsDir ,USECONFIG)
if(!file_exists(g_FileName))
{
server_print("[WARN] VIP Account: config %s/%s no exist!",g_ConfigsDir ,USECONFIG)
return
}
server_cmd("exec %s/%s", g_ConfigsDir, USECONFIG)
//server_print("VIP Account %s Loaded", VERSION)
}
#endif
public plugin_precache()
{
#if defined SOUND_CONNECT
precache_generic(sound_vip)
#endif
}
public plugin_natives()
{
register_native("vip_auto_deagle", "native_vip_auto_deagle", 1)
}
public adminload_loaded()
{
g_bLoadAuth = true;
}
public native_vip_auto_deagle(id)
{
if(!isVIP(id))
return PLUGIN_HANDLED
return g_auto_dgl[id]
}
public RoundStart()
{
round_count++
for(new id = 1; id <= g_maxplayers; id++)
{
g_take_pistol[id] = 0
g_take_autom[id] = 0
}
g_iRoundStart = get_systime()
}
public client_putinserver(id)
{
g_auto_dgl[id] = 1
g_damager[id] = 1
g_auto_menu[id] = get_pcvar_num(cvar_menu_def)
g_ViewMenu[id] = false
g_EditMenu[id] = false
if(g_bLoadAuth)
{
ConnectVip(id);
} else {
set_task(random_float(3.0, 5.0), "ConnectVip", id);
}
}
public ConnectVip(id)
{
if(is_user_connected(id) && isVIP(id))
{
#if defined CONNECTVIPNOTICE
new name[33]
get_user_name(id, name, 32)
colored_print(0, "^x01Подключается^x04 VIP ^x01игрок ^x04%s", name)
#if defined SOUND_CONNECT
client_cmd(0, "mp3 play ^"%s^"", sound_vip)
#endif
#endif
LoadSet(id);
return 1;
}
return 0;
}
public LoadSet(id)
{
new vaultkey[64], vaultdata[256], AuthID[33]
get_user_authid(id, AuthID, 32)
formatex(vaultkey, 64, "%s-/", AuthID)
nvault_get(g_Save, vaultkey, vaultdata, 255)
replace_all(vaultdata, 255, "#", " ")
new data[3]
new data2[3]
parse(vaultdata, data, 2, data2, 2)
g_auto_dgl[id] = str_to_num(data)
g_damager[id] = str_to_num(data2)
}
public SaveSet(id)
{
new vaultkey[64], vaultdata[256]
new AuthID[33]
get_user_authid(id, AuthID, 32)
formatex(vaultkey, 64, "%s-/", AuthID)
format(vaultdata, 255, "%i#%i#", g_auto_dgl[id], g_damager[id])
nvault_set(g_Save, vaultkey, vaultdata)
}
public client_disconnect(id)
{
remove_task(id);
if(g_EditMenu[id] == true && isVIP(id))
{
SaveSet(id);
}
}
public RoundRestart(id)
{
round_count = 0
for(new id = 1; id <= g_maxplayers; id++)
{
g_take_pistol[id] = 0
g_take_autom[id] = 0
}
}
public RestWeaponsMsgAlive(id) colored_print(id, "^x04[VIP]^x01 Доступно только когда вы живы.")
public RestMenuMsgMinRounds(id) colored_print(id, "^x04[VIP]^x01 Меню доступно с ^x04%d^x01 раунда, не нарушайте баланс игры!", OPENMENUROUND)
public RestWeaponsMsgAccess(id) colored_print(id, "^x04[VIP]^x01 Доступно только ^x04VIP^x01 игрокам.")
public RestWeaponsMsgTime(id) colored_print(id, "^x04[VIP]^x01 Можно брать только в первые ^x04%d^x01 сек от начала раунда.", get_pcvar_num(cvar_maxtime))
public RestPistMsgMaxTake(id) colored_print(id, "^x04[VIP]^x01 Пистолеты доступны только ^x04%d^x01 раза за раунд.", get_pcvar_num(cvar_take_secondary))
public RestAutomMsgMinRound(id) colored_print(id, "^x04[VIP]^x01 Автоматы доступны с ^x04%d^x01 рануда.", AUTOMINROUND)
public RestAutomMsgMaxTake(id) colored_print(id, "^x04[VIP]^x01 Автоматы доступны только ^x04%d^x01 раз за раунд.", get_pcvar_num(cvar_take_primary))
public RestAWPMsgMinRound(id) colored_print(id, "^x04[VIP]^x01 Доступно только с ^x04%d^x01 раунда.", AWPM249MINROUND)
public RestAWPMsgMaxTake(id) colored_print(id, "^x04[VIP]^x01 AWP и M249 доступны только ^x04%d^x01 раз за раунд.", get_pcvar_num(cvar_take_primary))
public take_dgl(id)
{
if(!isVIP(id))
{
RestWeaponsMsgAccess(id)
return PLUGIN_HANDLED
}
if(g_take_pistol[id] == get_pcvar_num(cvar_take_secondary))
{
RestPistMsgMaxTake(id)
return PLUGIN_HANDLED
}
if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))
{
RestWeaponsMsgTime(id)
return PLUGIN_HANDLED
}
if(!user_has_weapon(id, CSW_DEAGLE))
{
drop_weapons(id, 2)
give_item(id,"weapon_deagle")
}
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
g_take_pistol[id]++
return PLUGIN_HANDLED
}
public take_usp(id)
{
if(!isVIP(id))
{
RestWeaponsMsgAccess(id)
return PLUGIN_HANDLED
}
if(g_take_pistol[id] == get_pcvar_num(cvar_take_secondary))
{
RestPistMsgMaxTake(id)
return PLUGIN_HANDLED
}
if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))
{
RestWeaponsMsgTime(id)
return PLUGIN_HANDLED
}
if(!user_has_weapon(id, CSW_USP))
{
drop_weapons(id, 2)
give_item(id,"weapon_usp")
}
cs_set_user_bpammo(id, CSW_USP, 120)
g_take_pistol[id]++
return PLUGIN_HANDLED
}
public take_glk(id)
{
if(!isVIP(id))
{
RestWeaponsMsgAccess(id)
return PLUGIN_HANDLED
}
if(g_take_pistol[id] == get_pcvar_num(cvar_take_secondary))
{
RestPistMsgMaxTake(id)
return PLUGIN_HANDLED
}
if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))
{
RestWeaponsMsgTime(id)
return PLUGIN_HANDLED
}
if(!user_has_weapon(id, CSW_GLOCK18))
{
drop_weapons(id, 2)
give_item(id,"weapon_glock18")
}
cs_set_user_bpammo(id, CSW_GLOCK18, 120)
g_take_pistol[id]++
return PLUGIN_HANDLED
}
public take_five(id)
{
if(!isVIP(id))
{
RestWeaponsMsgAccess(id)
return PLUGIN_HANDLED
}
if(g_take_pistol[id] == get_pcvar_num(cvar_take_secondary))
{
RestPistMsgMaxTake(id)
return PLUGIN_HANDLED
}
if(!user_has_weapon(id, CSW_FIVESEVEN))
{
drop_weapons(id, 2)
give_item(id,"weapon_fiveseven")
}
cs_set_user_bpammo(id, CSW_FIVESEVEN, 120)
g_take_pistol[id]++
return PLUGIN_HANDLED
}
public take_ak47(id)
{
if(!isVIP(id))
{
RestWeaponsMsgAccess(id)
return PLUGIN_HANDLED
}
if(round_count < AUTOMINROUND)
{
RestAutomMsgMinRound(id)
return PLUGIN_HANDLED
}
if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))
{
RestAutomMsgMaxTake(id)
return PLUGIN_HANDLED
}
if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))
{
RestWeaponsMsgTime(id)
return PLUGIN_HANDLED
}
if(!user_has_weapon(id, CSW_AK47))
{
drop_weapons(id, 1)
give_item(id,"weapon_ak47")
}
cs_set_user_bpammo(id, CSW_AK47, 90)
g_take_autom[id]++
return PLUGIN_HANDLED
}
public take_m4a1(id)
{
if(!isVIP(id))
{
RestWeaponsMsgAccess(id)
return PLUGIN_HANDLED
}
if(round_count < AUTOMINROUND)
{
RestAutomMsgMinRound(id)
return PLUGIN_HANDLED
}
if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))
{
RestAutomMsgMaxTake(id)
return PLUGIN_HANDLED
}
if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))
{
RestWeaponsMsgTime(id)
return PLUGIN_HANDLED
}
if(!user_has_weapon(id, CSW_M4A1))
{
drop_weapons(id, 1)
give_item(id,"weapon_m4a1")
}
cs_set_user_bpammo(id, CSW_M4A1, 90)
g_take_autom[id]++
return PLUGIN_HANDLED
}
public take_famas(id)
{
if(!isVIP(id))
{
RestWeaponsMsgAccess(id)
return PLUGIN_HANDLED
}
if(round_count < AUTOMINROUND)
{
RestAutomMsgMinRound(id)
return PLUGIN_HANDLED
}
if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))
{
RestAutomMsgMaxTake(id)
return PLUGIN_HANDLED
}
if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))
{
RestWeaponsMsgTime(id)
return PLUGIN_HANDLED
}
if(!user_has_weapon(id, CSW_FAMAS))
{
drop_weapons(id, 1)
give_item(id,"weapon_famas")
}
cs_set_user_bpammo(id, CSW_FAMAS, 90)
g_take_autom[id]++
return PLUGIN_HANDLED
}
public take_galil(id)
{
if(!isVIP(id))
{
RestWeaponsMsgAccess(id)
return PLUGIN_HANDLED
}
if(round_count < AUTOMINROUND)
{
RestAutomMsgMinRound(id)
return PLUGIN_HANDLED
}
if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))
{
RestAutomMsgMaxTake(id)
return PLUGIN_HANDLED
}
if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))
{
RestWeaponsMsgTime(id)
return PLUGIN_HANDLED
}
if(!user_has_weapon(id, CSW_GALIL))
{
drop_weapons(id, 1)
give_item(id,"weapon_galil")
}
cs_set_user_bpammo(id, CSW_GALIL, 90)
g_take_autom[id]++
return PLUGIN_HANDLED
}
public take_awp(id)
{
if(!isVIP(id))
{
RestWeaponsMsgAccess(id)
return PLUGIN_HANDLED
}
if(round_count < AWPM249MINROUND)
{
RestAWPMsgMinRound(id)
return PLUGIN_HANDLED
}
if(g_take_autom[id] == get_pcvar_num(cvar_take_primary))
{
RestAWPMsgMaxTake(id)
return PLUGIN_HANDLED
}
if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))
{
RestWeaponsMsgTime(id)
return PLUGIN_HANDLED
}
if(!user_has_weapon(id, CSW_AWP))
{
drop_weapons(id, 1)
give_item(id,"weapon_awp")
}
cs_set_user_bpammo(id, CSW_AWP, 30)
g_take_autom[id]++
return PLUGIN_HANDLED
}
public take_m249(id)
{
if(!isVIP(id))
{
RestWeaponsMsgAccess(id)
return PLUGIN_HANDLED
}
if(round_count < AWPM249MINROUND)
{
RestAWPMsgMinRound(id)
return PLUGIN_HANDLED
}
if(g_take_autom[id] == get_pcvar_num(cvar_take_primary))
{
RestAWPMsgMaxTake(id)
return PLUGIN_HANDLED
}
if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))
{
RestWeaponsMsgTime(id)
return PLUGIN_HANDLED
}
if(!user_has_weapon(id, CSW_M249))
{
drop_weapons(id, 1)
give_item(id,"weapon_m249")
}
cs_set_user_bpammo(id, CSW_M249, 200)
g_take_autom[id]++
return PLUGIN_HANDLED
}
public fw_SpawnPost(id)
{
if(!is_user_alive(id))
return
if(isVIP(id))
{
if(round_count >= VIPSTARTROUND)
{
if(get_pcvar_num(cvar_he)) give_item(id, "weapon_hegrenade")
if(get_pcvar_num(cvar_fl))
{
give_item(id, "weapon_flashbang")
if(get_pcvar_num(cvar_fl) > 1) give_item(id, "weapon_flashbang")
}
if(get_pcvar_num(cvar_sm)) give_item(id, "weapon_smokegrenade")
new iCvArmorValue = get_pcvar_num(cvar_armor)
if(0 < iCvArmorValue < 1000)
{
#if defined GIRLARMOR
if(isGIRL(id))
cs_set_user_armor(id, GIRLARMOR, CS_ARMOR_VESTHELM)
else
#endif
cs_set_user_armor(id, iCvArmorValue, CS_ARMOR_VESTHELM)
}
if(get_user_team(id) == 2)
give_item(id, "item_thighpack")
#if defined MONEY_BONUS
new iCvMoneyValue = get_pcvar_num(cvar_moneybonus)
if(0 < iCvMoneyValue && round_count != 1)
{
new iMoney = cs_get_user_money(id)
new iCvMaxMoneyValue = get_pcvar_num(cvar_Maxmoneybonus)
if(iMoney < iCvMaxMoneyValue)
{
cs_set_user_money(id, iMoney + iCvMoneyValue)
}
}
#endif
}
if(get_pcvar_num(cvar_dgl) && g_auto_dgl[id])
{
if(!user_has_weapon(id, CSW_DEAGLE))
{
drop_weapons(id, 2)
give_item(id,"weapon_deagle")
}
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
}
if(get_pcvar_num(cvar_menu_auto) && g_auto_menu[id] && round_count >= OPENMENUROUND)
{
show_weapons_menu(id)
}
}
}
public givebpammo(id)
{
if (!is_user_alive(id)) return PLUGIN_HANDLED;
static weapons[32], num, i, currentammo, weaponid, refilled
num = 0
refilled = false
get_user_weapons(id, weapons, num)
for (i = 0; i < num; i++)
{
weaponid = weapons[i]
if (MAXBPAMMO[weaponid] > 2)
{
currentammo = cs_get_user_bpammo(id, weaponid)
ExecuteHamB(Ham_GiveAmmo, id, MAXBPAMMO[weaponid], AMMOTYPE[weaponid], MAXBPAMMO[weaponid])
if (cs_get_user_bpammo(id, weaponid) - currentammo > 0) refilled = true
}
}
if (!refilled) return PLUGIN_HANDLED;
return PLUGIN_HANDLED;
}
public press_wm(id)
{
if(!isVIP(id))
{
RestWeaponsMsgAccess(id)
return PLUGIN_HANDLED
}
if(round_count < OPENMENUROUND)
{
RestMenuMsgMinRounds(id)
return PLUGIN_HANDLED
}
if(g_ViewMenu[id]){
show_menu(id, 0, "^n", 1)
g_ViewMenu[id] = false
}
else if(!g_ViewMenu[id]) {
show_weapons_menu(id)
}
return PLUGIN_HANDLED
}
public show_weapons_menu(id)
{
static menu[512], len, keys
len = 0
keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_0
new exp = adminload_get_daysleft(id)
new left[32]
if(!exp)
{
formatex(left, charsmax(left), "\rБессрочная\w")
}
else
{
num_to_str(exp, left, charsmax(left))
}
len += formatex(menu[len], charsmax(menu) - len, "\wВипка истекает через, дней: %s.^n^n", left)
len += formatex(menu[len], charsmax(menu) - len, "\wВзять оружие^n")
len += formatex(menu[len], charsmax(menu) - len, "\w1.\r[\yAK47\r]^n")
len += formatex(menu[len], charsmax(menu) - len, "\w2.\r[\yM4A1\r]^n")
len += formatex(menu[len], charsmax(menu) - len, "\w3.\r[\yAWP\r]^n")
len += formatex(menu[len], charsmax(menu) - len, "\w4.\r[\yFAMAS\r]^n")
len += formatex(menu[len], charsmax(menu) - len, "\w5.\r[\yGALIL\r]^n")
len += formatex(menu[len], charsmax(menu) - len, "\w6.\r[\yM249\r]^n")
len += formatex(menu[len], charsmax(menu) - len, "\w7.\w Авто-выдача Deagle [\r%s\w]^n", g_auto_dgl[id] == 1 ? "\yВкл" : "\rВыкл")
if(get_pcvar_num(cvar_menu_auto))
{
keys += MENU_KEY_8
len += formatex(menu[len], charsmax(menu) - len, "\w8.\w Выводить меню с оружием? [\r%s\w]^n", g_auto_menu[id] == 1 ? "\yДа" : "\rНет")
}
if(get_pcvar_num(cvar_dmg))
{
keys += MENU_KEY_9
len += formatex(menu[len], charsmax(menu) - len, "\w9.\w Показывать урон [%s\w]^n", g_damager[id] ? (g_damager[id] == 1 ? "\yЦифры" : "\y*") : "\rНет")
}
len += formatex(menu[len], charsmax(menu) - len, "^n\w0.\r[\yВыход\r]^n")
show_menu(id, keys, menu, -1, "VIP Weapon")
g_ViewMenu[id] = true
}
public weapon_menu(id, key)
{
if(key < 6)
{
g_ViewMenu[id] = false
if(!is_user_alive(id))
{
RestWeaponsMsgAlive(id)
show_weapons_menu(id)
return PLUGIN_HANDLED
}
if(get_systime() - g_iRoundStart > get_pcvar_num(cvar_maxtime))
{
RestWeaponsMsgTime(id)
show_weapons_menu(id)
return PLUGIN_HANDLED
}
}
switch (key)
{
case 0:
{
if(round_count < AUTOMINROUND)
{
RestAutomMsgMinRound(id)
show_weapons_menu(id)
return PLUGIN_HANDLED
}
if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))
{
RestAutomMsgMaxTake(id)
show_weapons_menu(id)
return PLUGIN_HANDLED
}
drop_weapons(id, 1)
give_item(id,"weapon_ak47")
cs_set_user_bpammo(id, CSW_AK47, 90)
g_take_autom[id]++
}
case 1:
{
if(round_count < AUTOMINROUND)
{
RestAutomMsgMinRound(id)
show_weapons_menu(id)
return PLUGIN_HANDLED
}
if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))
{
RestAutomMsgMaxTake(id)
show_weapons_menu(id)
return PLUGIN_HANDLED
}
drop_weapons(id, 1)
give_item(id,"weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 90)
g_take_autom[id]++
}
case 2:
{
if(round_count < AWPM249MINROUND)
{
RestAWPMsgMinRound(id)
show_weapons_menu(id)
return PLUGIN_HANDLED
}
if(g_take_autom[id] == get_pcvar_num(cvar_take_primary))
{
RestAWPMsgMaxTake(id)
show_weapons_menu(id)
return PLUGIN_HANDLED
}
drop_weapons(id, 1)
give_item(id,"weapon_awp")
cs_set_user_bpammo(id, CSW_AWP, 30)
g_take_autom[id]++
}
case 3:
{
if(round_count < AUTOMINROUND)
{
RestAutomMsgMinRound(id)
show_weapons_menu(id)
return PLUGIN_HANDLED
}
if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))
{
RestAutomMsgMaxTake(id)
show_weapons_menu(id)
return PLUGIN_HANDLED
}
drop_weapons(id, 1)
give_item(id,"weapon_famas")
cs_set_user_bpammo(id, CSW_FAMAS, 90)
g_take_autom[id]++
}
case 4:
{
if(round_count < AUTOMINROUND)
{
RestAutomMsgMinRound(id)
show_weapons_menu(id)
return PLUGIN_HANDLED
}
if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))
{
RestAutomMsgMaxTake(id)
show_weapons_menu(id)
return PLUGIN_HANDLED
}
drop_weapons(id, 1)
give_item(id,"weapon_galil")
cs_set_user_bpammo(id, CSW_GALIL, 90)
g_take_autom[id]++
}
case 5:
{
if(round_count < AWPM249MINROUND)
{
RestAWPMsgMinRound(id)
show_weapons_menu(id)
return PLUGIN_HANDLED
}
if(g_take_autom[id] >= get_pcvar_num(cvar_take_primary))
{
RestAWPMsgMaxTake(id)
show_weapons_menu(id)
return PLUGIN_HANDLED
}
drop_weapons(id, 1)
give_item(id,"weapon_m249")
cs_set_user_bpammo(id, CSW_M249, 200)
g_take_autom[id]++
}
case 6:
{
g_EditMenu[id] = true
g_auto_dgl[id] == 1 ? (g_auto_dgl[id] = 0) : (g_auto_dgl[id] = 1)
colored_print(id, "^x04[VIP]^x01 Выдача Deagle^x04 %s", g_auto_dgl[id] == 1 ? "включена" : "отключена")
show_weapons_menu(id)
}
case 7:
{
g_auto_menu[id] == 1 ? (g_auto_menu[id] = 0) : (g_auto_menu[id] = 1)
colored_print(id, "^x04[VIP]^x01 Авто-открытие меню^x04 %s", g_auto_menu[id] == 1 ? "включено" : "отключено")
show_weapons_menu(id)
}
case 8:
{
g_EditMenu[id] = true
g_damager[id]++
g_damager[id] %= 3
show_weapons_menu(id)
}
default: g_ViewMenu[id] = false
}
return PLUGIN_HANDLED
}
#if defined DELETEDROP
public fw_SetModel(entity, const szModel[])
{
if(!is_valid_ent(entity))
return FMRES_IGNORED
if(strlen(szModel) < 8 || szModel[7] != 'w' || szModel[8] != '_')
return FMRES_IGNORED
if(!equal(szModel[9], "sg550", 5) && !equal(szModel[9], "g3sg1", 5) && !equal(szModel[9], "awp", 3)) /* Удаление дропа */
return FMRES_IGNORED
static id
id = pev(entity, pev_owner)
if(!isVIP(id))
return FMRES_IGNORED
static classname[10]
pev(entity, pev_classname, classname, charsmax(classname))
if(equal(classname, "weaponbox"))
{
set_pev(entity, pev_nextthink, get_gametime() + 0.1)
return FMRES_IGNORED
}
return FMRES_IGNORED
}
#endif
public damage_message(id)
{
new attacker = get_user_attacker(id), damage = read_data(2)
if (is_user_connected(attacker) && isVIP(attacker) && get_pcvar_num(cvar_dmg))
{
if(g_damager[attacker] == 1)
{
set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
ShowSyncHudMsg(attacker, g_HudSync, "%i", damage)
}
else if(g_damager[attacker] == 2)
{
set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
ShowSyncHudMsg(attacker, g_HudSync, "*")
}
}
}
#if defined VAMPIRE
#if AMXX_VERSION_NUM < 183
#include <dhudmessage>
#endif
public on_death()
{
new nKiller, nKiller_hp, nHp_add, nHp_max
nKiller = read_data(1)
if(isVIP(nKiller))
{
if(read_data(3) == 1 && read_data(5) == 0)
nHp_add = get_pcvar_num(cvar_kill_hs)
else
nHp_add = get_pcvar_num(cvar_kill_hp)
nHp_max = get_pcvar_num(cvar_kill_hp_max)
nKiller_hp = get_user_health(nKiller)
nKiller_hp += nHp_add
if (nKiller_hp > nHp_max)
nKiller_hp = nHp_max
set_user_health(nKiller, nKiller_hp)
if(nHp_add != 0){
set_dhudmessage(VAMPIRE_MESSAGE_COLOR, VAMPIRE_MESSAGE_POS, 0, 0.1, 1.0, 0.05, 0.05)
show_dhudmessage(nKiller, "+%d HP", nHp_add)
}
}
}
#endif
#if defined INFORMERS
public vip_motd(id) show_motd(id, "vip.txt", "VIP")
public admin_motd(id) show_motd(id, "admin.txt", "ADMIN")
#endif
stock colored_print( target, const message[], any:... )
{
static buffer[ 190 ]
if( !target )
{
static player
for( player = 1; player <= g_maxplayers; player++ )
{
if ( !is_user_connected( player ) )
continue;
vformat( buffer, charsmax( buffer ), message, 3 )
message_begin( MSG_ONE_UNRELIABLE, g_msgSayText, _, player )
write_byte( player )
write_string( buffer )
message_end()
}
}
else
{
if ( !is_user_connected( target ) ) return
vformat( buffer, charsmax( buffer ), message, 3 )
message_begin( MSG_ONE, g_msgSayText, _, target )
write_byte( target )
write_string( buffer )
message_end()
}
}
stock drop_weapons(id, dropwhat)
{
static weapons[32], num, i, weaponid
num = 0
get_user_weapons(id, weapons, num)
for (i = 0; i < num; i++)
{
weaponid = weapons[i]
if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
{
static wname[32]
get_weaponname(weaponid, wname, sizeof wname - 1)
engclient_cmd(id, "drop", wname)
}
}
}
public plugin_end()
{
for(new id = 1; id <= g_maxplayers; id++)
{
if(g_EditMenu[id] == false) {
continue;
}
if(isVIP(id)) {
SaveSet(id);
}
g_EditMenu[id] = false;
}
nvault_close(g_Save);
}
Последнее редактирование: