Пользователь
- Сообщения
- 21
- Реакции
- 1
Здравствуйте, уважаемые пользователи Dev-cs.ru
Хотел бы задавать несколько вопрос и получить совет от опытных скриптеров.
На данный момент практикуюсь в PAWN и есть первый плагин, но с небольшими недоработками.
Вопрос по блокировки взятия оружия
Есть отлов начала раунда, а как обнулить переменную если например произошел рестарт.
Вопрос по if/else
Можно ли опускать else в условном выражении ?
Вопрос по menu_destroy
Обязательно ли выполнять его если выполнена какая-та задача в меню ?
Хотел бы задавать несколько вопрос и получить совет от опытных скриптеров.
На данный момент практикуюсь в PAWN и есть первый плагин, но с небольшими недоработками.
C++:
#include <amxmodx>
#include <reapi>
new g_BlockRoundWeapon;
public plugin_init()
{
register_plugin("[CSP] Vip Menu", "0.1", "Jony");
register_clcmd("say /vipmenu", "ClCmd_VipMenu", ADMIN_LEVEL_H);
RegisterHookChain(RG_CSGameRules_RestartRound, "RG_CSGameRules_RestartRound_Post", 1);
}
public RG_CSGameRules_RestartRound_Post(id)
{
g_BlockRoundWeapon++;
}
public ClCmd_VipMenu(id, flags)
{
if(get_user_flags(id) & flags)
{
show_menuvip(id);
return PLUGIN_HANDLED;
}
client_print_color(id, print_team_default, "^4[CSP] ^3У вас нет доступа к этому меню");
return PLUGIN_HANDLED;
}
show_menuvip(id)
{
new V_Menu = menu_create("\y[CSP]\wВип меню", "vip_menu");
if(g_BlockRoundWeapon < 3)
{
menu_additem(V_Menu, "\dВзять M4A1", "1", ADMIN_LEVEL_H);
}
else
{
menu_additem(V_Menu, "Взять M4A1", "1", ADMIN_LEVEL_H);
}
if(g_BlockRoundWeapon < 3)
{
menu_additem(V_Menu, "\dВзять АК47", "2", ADMIN_LEVEL_H);
}
else
{
menu_additem(V_Menu, "Взять АК47", "2", ADMIN_LEVEL_H);
}
if(g_BlockRoundWeapon < 3)
{
menu_additem(V_Menu, "\dВзять AWP", "3", ADMIN_LEVEL_H);
}
else
{
menu_additem(V_Menu, "Взять AWP", "3", ADMIN_LEVEL_H);
}
menu_setprop(V_Menu, MPROP_EXITNAME, "Выход");
menu_display(id, V_Menu, 0)
}
public vip_menu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(!is_user_connected(id))
{
return PLUGIN_HANDLED;
}
new info[64], name[64], access, callback;
menu_item_getinfo(menu, item, access, info, charsmax(info), name, charsmax(name), callback)
new key = str_to_num(info);
switch(key)
{
case 1:
{
if(g_BlockRoundWeapon <= 3)
{
client_print_color(id, print_team_default, "^4[CSP] ^3Оружие можно взять только после 3 раунда!");
menu_destroy(menu);
return PLUGIN_HANDLED;
}
rg_give_item(id, "weapon_m4a1", GT_DROP_AND_REPLACE);
rg_set_user_bpammo(id, WEAPON_M4A1, 90);
client_print_color(id, print_team_default, "^4[CSP] ^3Вы взяли себе ^4М4А1");
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 2:
{
if(g_BlockRoundWeapon <= 3)
{
client_print_color(id, print_team_default, "^4[CSP] ^3Оружие можно взять только после 3 раунда!");
menu_destroy(menu);
return PLUGIN_HANDLED;
}
rg_give_item(id, "weapon_ak47", GT_DROP_AND_REPLACE);
rg_set_user_bpammo(id, WEAPON_AK47, 90);
client_print_color(id, print_team_default, "^4[CSP] ^3Вы взяли себе ^4АК47");
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 3:
{
if(g_BlockRoundWeapon <= 3)
{
client_print_color(id, print_team_default, "^4[CSP] ^3Оружие можно взять только после 3 раунда!");
menu_destroy(menu);
return PLUGIN_HANDLED;
}
rg_give_item(id, "weapon_awp", GT_DROP_AND_REPLACE);
rg_set_user_bpammo(id, WEAPON_AWP, 90);
client_print_color(id, print_team_default, "^4[CSP] ^3Вы взяли себе ^4AWP");
menu_destroy(menu);
return PLUGIN_HANDLED;
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
Есть отлов начала раунда, а как обнулить переменную если например произошел рестарт.
C++:
new g_BlockRoundWeapon;
RegisterHookChain(RG_CSGameRules_RestartRound, "RG_CSGameRules_RestartRound_Post", 1);
public RG_CSGameRules_RestartRound_Post(id)
{
g_BlockRoundWeapon++;
}
Можно ли опускать else в условном выражении ?
Вопрос по menu_destroy
Обязательно ли выполнять его если выполнена какая-та задача в меню ?