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

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

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

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

Что не так сделал?

Статус пользователя Akushi
сообщение 23.10.2012, 22:18
Сообщение #1


Стаж: 16 лет

Сообщений: 883
Благодарностей: 313
Полезность: 604

Выделил красным что криво работает... Должно после любого покупки оружия блокировать оружейки, а работает только когда дигл берёшь.
Помогите исправить в чём проблема?
Скрытый текст
#include <amxmodx>
#include <hamsandwich>
#include <fun>
#include <color_print>

#define PLUGIN "VIP_menu"
#define VERSION "0.3"
#define AUTHOR "Akushi"

new round
new bool:has_used[33]

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /V_I_P_menu", "vipmenu")
register_event("HLTV", "RoundStart", "a", "1=0", "2=0")
register_event("TextMsg", "Event_TextMsg_Restart", "a", "2&#Game_C", "2&#Game_w")
RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
}


public Event_TextMsg_Restart()
{
round=0
}

public player_spawn(id)
{
if((is_user_alive(id))&&(get_user_flags(id) & ADMIN_LEVEL_F) )
{

color_print(id, "^4[^3VIP^4] ^3Вы получили ^4Все гранаты, броню и шлем")
set_task(0.1, "give_nades", id+1000)
}
}

public give_nades(id)
{
id-=1000
give_item(id, "weapon_flashbang")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_hegrenade")
give_item(id,"item_assaultsuit")
set_user_armor(id, 100)
}


public RoundStart()
{
arrayset(has_used, false, 33)
round++
}




public client_putinserver(id)
{
set_task(5.0, "putinserver_task", id)
}

public putinserver_task(id)
{

if(get_user_flags(id) & ADMIN_IMMUNITY)
{
console_cmd(id, "bind ^"F3^" ^"admin_menu^"")
}

if(get_user_flags(id) & ADMIN_LEVEL_F)
{
console_cmd(id, "bind ^"F4^" ^"say /V_I_P_menu^"")
}
}

public vipmenu(id)
{
if(get_user_flags(id) & ADMIN_LEVEL_F)
{
new menu = menu_create("\rVIP меню \w[Fijex.Ru]","menu_o")
menu_additem(menu,"\wОружейка","1",0)
menu_additem(menu,"\wВипы \d[\rOnline VIP\d]","2",0)
menu_additem(menu,"\wОбнулить счет \d[\r/rs\d]","3",0)
menu_setprop(menu,MPROP_EXITNAME,"\wВыход")
menu_setprop(menu,MPROP_EXIT,MEXIT_ALL)
menu_display(id,menu,0)
}

else
{
color_print(id, "^4У вас недостаточно прав")
}
}

public menu_o(id,menu,item)
{
if (item==MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}

new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

new i_Key = str_to_num(s_Data)
switch(i_Key)
{
case 1:
{
Sub_Menu(id)
}
case 2:
{
client_cmd(id,"say /vips")
}
case 3:
{
client_cmd(id,"say /rs")
}
}

menu_destroy(menu)
return PLUGIN_HANDLED
}

public Sub_Menu(id)
{
if(!has_used[id])

{
new menu = menu_create("\wОружейка", "submenu_handler")
menu_additem(menu, "\wDesert Eagle", "1", 0)
menu_additem(menu, "\wAK-47 и Deagle", "2", 0)
menu_additem(menu, "\wM4A1 и Deagle", "3", 0)
menu_additem(menu,"\wAWP и Deagle", "4", 0)
menu_setprop(menu,MPROP_EXITNAME,"\wВыход")
menu_setprop(menu,MPROP_EXIT, MEXIT_ALL)
menu_display(id,menu,0)
}
else
{
color_print(id, "^4[^3VIP^4] Открывать Оружейку можно один раз за раунд!!!")
}
}


public submenu_handler(id, menu, item)

{
if(item==MENU_EXIT)
{
menu_destroy(menu)

if(is_user_connected(id))
vipmenu(id)

return PLUGIN_HANDLED
}

new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

new i_Key = str_to_num(s_Data)

switch(i_Key)
{
case 1:
{
if(is_user_alive(id))
{
strip_user_weapons(id)
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")
give_item(id,"weapon_knife")
set_task(0.1, "give_nades", id+1000)
color_print(id, "^4[^3VIP^4] ^3Вы получили ^4Desert Eagle")
}
}

case 2:
{
if(round>1)
{
if(is_user_alive(id))
{
strip_user_weapons(id)
give_item(id,"weapon_ak47")
give_item(id,"ammo_762nato")
give_item(id,"ammo_762nato")
give_item(id,"ammo_762nato")
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")
give_item(id,"weapon_knife")
set_task(0.1, "give_nades", id+1000)
color_print(id, "^4[^3VIP^4] ^3Вы получили ^4AK-47 ^3и ^4Desert Eagle")
return PLUGIN_HANDLED
}
}
else
{
color_print(id, "^4[^3VIP^4] Вы не можете взять это оружие в этом раунде")
return PLUGIN_HANDLED
}
}
case 3:
{
if(round>1)
{
if(is_user_alive(id))
{
strip_user_weapons(id)
give_item(id,"weapon_m4a1")
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")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"ammo_556nato")
give_item(id,"weapon_knife")
set_task(0.1, "give_nades", id+1000)
color_print(id, "^4[^3VIP^4] ^3Вы получили ^4M4A1 ^3и ^4Desert Eagle")
return PLUGIN_HANDLED
}
}
else
{
color_print(id, "^4[^3VIP^4] Вы не можете взять это оружие в этом раунде")
return PLUGIN_HANDLED
}


}
case 4:
{
if(round>2)
{
if(is_user_alive(id))
{
strip_user_weapons(id)
give_item(id,"weapon_awp")
give_item(id,"ammo_338magnum")
give_item(id,"ammo_338magnum")
give_item(id,"ammo_338magnum")
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")
give_item(id,"weapon_knife")
set_task(0.1, "give_nades", id+1000)
color_print(id, "^4[^3VIP^4] ^3Вы получили ^4AWP ^3и ^4Desert Eagle")
return PLUGIN_HANDLED
}
}

else
{
color_print(id, "^4[^3VIP^4] Вы не можете взять это оружие в этом раунде")
return PLUGIN_HANDLED
}

}
}
has_used[id] = true
menu_destroy(menu)
vipmenu(id)
return PLUGIN_HANDLED
}

И ещё какой функций можно отбирать определенное оружие при выдаче нового...
strip_user_weapons(id) отбирает всё сразу, в том числе и нож и приходится выдавать даже те же гранаты которые игрок уже получил вначале раундаю

Отредактировал: Akushi, - 23.10.2012, 22:20
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Safety1st
сообщение 24.10.2012, 0:20
Сообщение #2
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Выложи sma, если хочешь, чтобы тебе помогли. Наверное, для тебя это будет даже проще, чем научиться вкладывать код в правильных тэгах.

Селективное отнимание оружия вот.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Akushi
сообщение 24.10.2012, 2:49
Сообщение #3


Стаж: 16 лет

Сообщений: 883
Благодарностей: 313
Полезность: 604

Прикрепленный файл  VIP_menu.sma ( 6,57 килобайт ) Кол-во скачиваний: 2
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 24.10.2012, 9:07
Сообщение #4
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Из функции public submenu_handler(id, menu, item) надо поубирать в каждом case
Код
return PLUGIN_HANDLED

Из-за этого мы из функции 'выходим' и последние 4 строчки кода, где как раз и устанавливается has_used[id] = true не выполняются. А у 'дигла' выхода как раз не производится, потому и работает. У тебя там switch, так что можно не бояться, что код из соседнего case выполнится)

Добавь ещё в плагин реакцию на рестарт игры, раз в первых 2-х раундах нельзя круче дигла брать)
И вместе с sma всегда выкладывай все нестандартные inc-файлы, требующиеся плагину.

Отредактировал: Safety1st, - 24.10.2012, 9:08
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Akushi
сообщение 24.10.2012, 10:58
Сообщение #5


Стаж: 16 лет

Сообщений: 883
Благодарностей: 313
Полезность: 604

Цитата(Safety1st @ 24.10.2012, 13:07) *
Добавь ещё в плагин реакцию на рестарт игры, раз в первых 2-х раундах нельзя круче дигла брать)

Можно поподробней?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 24.10.2012, 15:51
Сообщение #6
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Код
register_event( "TextMsg", "Event_NewGame", "a", "2=#Game_will_restart_in", "2=#Game_Commencing" )

public Event_NewGame() {
    round_number = 0
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: