Цитата(velikolepniy @ 1.3.2015, 19:14)

насчёт этого, возможно сделать, чтобы оружие можно было взять раз за раунд?
Вот...
* оружие можно взять раз за раунд
* вместе с диглом и армором CT получают Defusor'ы
* обычным игрокам вообще ничего не пишется при вызове меню
Код:
#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <fun>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif
#define ADMIN_ACCES ADMIN_LEVEL_H
#define AutoRR
const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_0
const WEAPON_KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_9|MENU_KEY_0
new 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 const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
new bool:g_Dmg[33], bool:g_Grenade[33], bool:g_Equip[33], bool:has_used[33], g_RoundCount, g_HudSync, g_AWP, g_Weapon, g_Menu
public plugin_init() {
register_plugin("Special Admin Bonus", "0.1", "Alienware")
register_menucmd(register_menuid("menu_title"), KEYSMENU, "menu_handler")
register_menucmd(register_menuid("weapon_menu"), WEAPON_KEYSMENU, "weapon_menu_handler")
register_clcmd("say /menu", "show_adminmenu")
register_clcmd("vip_menu", "show_adminmenu")
RegisterHam(Ham_Spawn, "player", "equip_for_admin", 1)
//Cvars
g_AWP = register_cvar("amx_give_awp_round", "3")
g_Weapon = register_cvar("amx_give_weapon_round", "2")
g_Menu = register_cvar("amx_enable_menu_round", "2")
register_logevent("Round_End", 2, "1=Round_End")
register_logevent("Round_Start", 2, "1=Round_Start")
#if defined AutoRR
register_event("TextMsg", "Event_GameRestart", "a", "2=#Game_Commencing", "2=#Game_will_restart_in")
#endif
register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")
g_HudSync = CreateHudSyncObj()
}
#if defined AutoRR
public Event_GameRestart()
g_RoundCount = 1
#endif
public client_putinserver(id) {
g_Dmg[id] = false
g_Grenade[id] = false
g_Equip[id] = false
}
public Round_End()
g_RoundCount++
public Round_Start()
arrayset(has_used, false, 33)
public equip_for_admin(id) {
if(!is_user_alive(id) || !is_user_connected(id) || !(get_user_flags(id) & ADMIN_ACCES))
return PLUGIN_HANDLED
if(g_Grenade[id]) {
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_smokegrenade")
cs_set_user_bpammo(id, CSW_FLASHBANG, 2)
}
if(g_Equip[id] && g_RoundCount >= 2) {
drop_weapons(id, 2)
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
if(cs_get_user_team(id) == CS_TEAM_CT) {
cs_set_user_defuse(id, 1)
}
cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
}
return PLUGIN_HANDLED
}
public on_damage(id) {
new attacker = get_user_attacker(id)
new damage = read_data(2)
if (is_user_connected(attacker) && get_user_flags(attacker) & ADMIN_ACCES && g_Dmg[attacker]) {
set_hudmessage(0, 100, 200, -1.0, 0.52, 2, 0.1, 4.0, 0.02, 0.02, -1)
ShowSyncHudMsg(attacker, g_HudSync, "%i", damage)
}
}
public show_adminmenu(id) {
if(!(get_user_flags(id) & ADMIN_ACCES)) {
return 0
}
if(g_RoundCount < get_pcvar_num(g_Menu)) {
client_print_color(id, 0, "^4[VIP] ^1Меню доступно с^4 %d-го ^1раунда", get_pcvar_num(g_Menu))
return PLUGIN_HANDLED
}
static szMenu[512], len
len = formatex(szMenu, charsmax(szMenu), "\wVIP меню^n^n")
len += formatex(szMenu[len], charsmax(szMenu) - len, "\r1. \wАрсенал^n")
len += formatex(szMenu[len], charsmax(szMenu) - len, "\r2. \w100AP + Deagle \r[%s\r]^n", g_Equip[id] ? "\yВкл" : "\dВыкл")
len += formatex(szMenu[len], charsmax(szMenu) - len, "\r3. \wВсе гранаты \r[%s\r]^n", g_Grenade[id] ? "\yВкл" : "\dВыкл")
len += formatex(szMenu[len], charsmax(szMenu) - len, "\r4. \wДамагер \r[%s\r]^n^n", g_Dmg[id] ? "\yВкл" : "\dВыкл")
len += formatex(szMenu[len], charsmax(szMenu) - len, "\r0. \wВыход")
show_menu(id, KEYSMENU, szMenu, -1, "menu_title")
return PLUGIN_HANDLED
}
public menu_handler(id, item) {
switch(item) {
case 0: WeaponMenu(id)
case 1: {
g_Equip[id] ? (g_Equip[id] = false) : (g_Equip[id] = true)
/* client_print_color(id, 0, "^1Эквип^4 %s", g_Equip[id] ? "включен" : "выключен") */
show_adminmenu(id)
}
case 2: {
g_Grenade[id] ? (g_Grenade[id] = false) : (g_Grenade[id] = true)
/* client_print_color(id, 0, "^1Гранаты^4 %s", g_Grenade[id] ? "включены" : "выключены") */
show_adminmenu(id)
}
case 3: {
g_Dmg[id] ? (g_Dmg[id] = false) : (g_Dmg[id] = true)
/* client_print_color(id, 0, "^1Дамагер^4 %s", g_Dmg[id] ? "включен" : "выключен") */
show_adminmenu(id)
}
}
return PLUGIN_HANDLED
}
WeaponMenu(id) {
static WP_Menu[512], len
len = formatex(WP_Menu, charsmax(WP_Menu), "\wАрсенал^n^n")
len += formatex(WP_Menu[len], charsmax(WP_Menu) - len, "\r1. \wFamas^n")
len += formatex(WP_Menu[len], charsmax(WP_Menu) - len, "\r2. \wM4A1^n")
len += formatex(WP_Menu[len], charsmax(WP_Menu) - len, "\r3. \wAK-47^n")
len += formatex(WP_Menu[len], charsmax(WP_Menu) - len, "\r4. \wAWP^n^n")
len += formatex(WP_Menu[len], charsmax(WP_Menu) - len, "\r9. \wНазад^n")
len += formatex(WP_Menu[len], charsmax(WP_Menu) - len, "\r0. \wВыход")
show_menu(id, WEAPON_KEYSMENU, WP_Menu, -1, "weapon_menu")
return PLUGIN_HANDLED
}
public weapon_menu_handler(id, item) {
if(!has_used[id]) {
switch(item) {
case 0: {
if(!is_user_alive(id)) {
client_print_color(id, 0, "^4[VIP] ^1Доступно только для ^4живых^1!")
return PLUGIN_HANDLED
}
if(g_RoundCount >= 2) {
drop_weapons(id, 1)
give_item(id, "weapon_famas")
cs_set_user_bpammo(id, CSW_FAMAS, 90)
has_used[id] = true
} else {
client_print_color(id, 0, "^4[VIP] ^1Доступно со^4 %d-го ^1раунда!", get_pcvar_num(g_Weapon))
return PLUGIN_HANDLED
}
}
case 1: {
if(!is_user_alive(id)) {
client_print_color(id, 0, "^4[VIP] ^1Доступно только для ^4живых^1!")
return PLUGIN_HANDLED
}
if(g_RoundCount >= 2) {
drop_weapons(id, 1)
give_item(id, "weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 90)
has_used[id] = true
} else {
client_print_color(id, 0, "^4[VIP] ^1Доступно со^4 %d-го ^1раунда!", get_pcvar_num(g_Weapon))
return PLUGIN_HANDLED
}
}
case 2: {
if(!is_user_alive(id)) {
client_print_color(id, 0, "^4[VIP] ^1Доступно только для ^4живых^1!")
return PLUGIN_HANDLED
}
if(g_RoundCount >= 2) {
drop_weapons(id, 1)
give_item(id, "weapon_ak47")
cs_set_user_bpammo(id, CSW_AK47, 90)
has_used[id] = true
} else {
client_print_color(id, 0, "^4[VIP] ^1Доступно со^4 %d-го ^1раунда!", get_pcvar_num(g_Menu))
return PLUGIN_HANDLED
}
}
case 3: {
if(!is_user_alive(id)) {
client_print_color(id, 0, "^4[VIP] ^1Доступно только для ^4живых^1!")
return PLUGIN_HANDLED
}
if(g_RoundCount >= 3) {
drop_weapons(id, 1)
give_item(id, "weapon_awp")
cs_set_user_bpammo(id, CSW_AWP, 30)
has_used[id] = true
} else {
client_print_color(id, 0, "^4[VIP] ^1Доступно с^4 %d-го ^1раунда!", get_pcvar_num(g_AWP))
return PLUGIN_HANDLED
}
}
case 8: show_adminmenu(id)
}
} else {
client_print_color(id, 0, "^4[VIP] ^1Уже использовалось")
}
return PLUGIN_HANDLED
}
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, charsmax(wname))
engclient_cmd(id, "drop", wname)
}
}
}