Участник
Пользователь
- Сообщения
- 166
- Реакции
- 34
- Помог
- 3 раз(а)
Всем добрый день, ребят подскажите пожалуйста как осуществить
Доступ к меню только определенной команде. Код полностью внизу прикрепил.
Где то в этом куске нужно сделать проверку только на доступ команде СТ
Наверно после проверки на живых
Доступ к меню только определенной команде. Код полностью внизу прикрепил.
Где то в этом куске нужно сделать проверку только на доступ команде СТ
Наверно после проверки на живых
Код:
if(!is_user_alive(id))
Код:
public Menu_Heroes(id, key)
{
if(!is_user_alive(id))
return;
switch(key)
{
case 0:
{
gHero[id] = 0;
OptionSave[id] = true;
ModelChangeFunction(id);
HealthFunction(id);
SpeedFunction(id);
GravityFunction(id);
MessageInfo(id);
}
case 1:
{
gHero[id] = 1;
OptionSave[id] = true;
ModelChangeFunction(id);
HealthFunction(id);
SpeedFunction(id);
GravityFunction(id);
MessageInfo(id);
}
case 2:
{
gHero[id] = 2;
OptionSave[id] = true;
ModelChangeFunction(id);
HealthFunction(id);
SpeedFunction(id);
GravityFunction(id);
MessageInfo(id);
}
case 3:
{
gHero[id] = 3;
OptionSave[id] = true;
ModelChangeFunction(id);
HealthFunction(id);
SpeedFunction(id);
GravityFunction(id);
MessageInfo(id);
}
case 7:
{
DescriptionMenu(id);
}
}
Код:
/*
Автор: 6u3oH
Контакты: vk.com/6u3oH
Прошу посетить группу: https://vk.com/halt_gamers
Если у вас есть какое-либо предложение по созданию плагина (любая идея), вы можете смело предложить в этой группе.
А так же если вы нашли какой-либо баг, то в данной группе вы можете его описать, после чего он будет исправлен.
Спасибо, что скачали этот плагин!
*/
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#define PLUGIN "Heroes Mode"
#define VERSION "1.0"
#define AUTHOR "6u3oH"
#define Ham_CS_Player_ResetMaxSpeed Ham_Item_PreFrame // если amxmodx > 1.8.3, то закоментируйте строку
#define HeroesAmmount 4 // Максимум героев [Не трогать]
#define MaxPlayer 32 // Максимум игроков [Не трогать]
#define TaskIdOne 19867 // Ид задачи [Не трогать]
new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_8|MENU_KEY_0;
new keys2 = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_8|MENU_KEY_0;
new gHero[MaxPlayer];
new OptionSave[MaxPlayer];
new const HeroModel1[] = "models/player/hero1/hero1.mdl"; // Путь до модели героя 1
new const HeroModel2[] = "models/player/hero2/hero2.mdl"; // Путь до модели героя 2
new const HeroModel3[] = "models/player/hero3/hero3.mdl"; // Путь до модели героя 3
new const HeroModel4[] = "models/player/hero4/hero4.mdl"; // Путь до модели героя 4
new HeroesList[HeroesAmmount][]=
{
"Хиппер", // Имя 1 героя
"Мэйтдрайв", // Имя 2 героя
"Хэбатор", // Имя 3 героя
"Фрилансия" // Имя 4 героя
};
new HeroesDescription[HeroesAmmount][]=
{
"Баланс сил: HP[+], Speed [+], Jump [+]", // Описание способности 1 героя
"Гравитация: HP [+], Speed [+], Jump [++]", // Описание способности 2 героя
"Сильный: HP [++], Speed [-], Jump [-] Dmg [+]", // Описание способности 3 героя
"Скорость: HP [+], Speed [++], Jump [+]" // Описание способности 4 героя
};
new HeroesHealth[HeroesAmmount]=
{
110, // Кол-во здоровья у 1 героя
110, // Кол-во здоровья у 2 героя
130, // Кол-во здоровья у 3 героя
105 // Кол-во здоровья у 4 героя
};
new Float: HeroesSpeed[HeroesAmmount]=
{
270.0, // Скорость 1 героя
270.0, // Скорость 2 героя
250.0, // Скорость 3 героя (250.0 - стандартная)
300.0 // Скорость 4 героя
};
new Float: HeroesGravity[HeroesAmmount]=
{
0.9, // Значение гравитации у 1 героя
0.8, // Значение гравитации у 2 героя
1.0, // Значение гравитации у 3 героя (1.0 - стандартная)
0.9 // Значение гравитации у 4 героя
};
new Float: DmgHero = 1.2; // Насколько умножать урон у героя Хэбатор
public plugin_precache()
{
precache_model(HeroModel1);
precache_model(HeroModel2);
precache_model(HeroModel3);
precache_model(HeroModel4);
}
public plugin_connect(id)
{
gHero[id] = 0;
}
public plugin_disconnect(id)
{
remove_task(TaskIdOne);
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /hero", "HeroesMenu");
RegisterHam(Ham_Spawn, "player", "SpawnFunction", .Post = true);
RegisterHam(Ham_CS_Player_ResetMaxSpeed, "player", "SpeedFunction", .Post = true);
RegisterHam(Ham_TakeDamage, "player", "TakeDamageFunction", .Post = true)
register_menu("Menu 1", keys, "Menu_Heroes");
register_menu("Menu 2", keys2, "Menu_Description");
set_task(1.0, "HudMessage", TaskIdOne, _, _, "b");
}
public SpawnFunction(id)
{
if(!is_user_alive(id))
return;
OptionSave[id] = false;
ModelChangeFunction(id);
RenderModel(id);
HealthFunction(id);
HeroesMenu(id);
GravityFunction(id);
}
public HudMessage()
{
for(new id = 1; id <= get_maxplayers(); id++)
{
if(!is_user_alive(id))
continue;
set_hudmessage(0, 255, 0, 0.01, 0.18, 0, 6.0, 1.0, 1.0, 1.0, 1)
show_hudmessage(id, "Герой: %s", HeroesList[gHero[id]]);
}
}
public HeroesMenu(id)
{
if(!is_user_alive(id))
return;
if(OptionSave[id])
{
ColorChat(id, GREEN, "Вы в этом раунде уже выбирали героя");
return;
}
static menu[650], iLen
iLen = 0
iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\yМеню Героев^n\rВыберите персонажа^n^n")
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \y%s^n", HeroesList[0])
keys |= MENU_KEY_1
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \y%s^n", HeroesList[1])
keys |= MENU_KEY_2
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \y%s^n", HeroesList[2])
keys |= MENU_KEY_3
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \y%s^n^n", HeroesList[3])
keys |= MENU_KEY_4
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \w-- \rИнформация о героях \w--^n")
keys |= MENU_KEY_8
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r0. \wВыход^n")
keys |= MENU_KEY_0
show_menu(id, keys, menu, -1, "Menu 1")
}
public Menu_Heroes(id, key)
{
if(!is_user_alive(id))
return;
switch(key)
{
case 0:
{
gHero[id] = 0;
OptionSave[id] = true;
ModelChangeFunction(id);
HealthFunction(id);
SpeedFunction(id);
GravityFunction(id);
MessageInfo(id);
}
case 1:
{
gHero[id] = 1;
OptionSave[id] = true;
ModelChangeFunction(id);
HealthFunction(id);
SpeedFunction(id);
GravityFunction(id);
MessageInfo(id);
}
case 2:
{
gHero[id] = 2;
OptionSave[id] = true;
ModelChangeFunction(id);
HealthFunction(id);
SpeedFunction(id);
GravityFunction(id);
MessageInfo(id);
}
case 3:
{
gHero[id] = 3;
OptionSave[id] = true;
ModelChangeFunction(id);
HealthFunction(id);
SpeedFunction(id);
GravityFunction(id);
MessageInfo(id);
}
case 7:
{
DescriptionMenu(id);
}
}
}
public DescriptionMenu(id)
{
if(!is_user_alive(id))
return;
static menu[650], iLen
iLen = 0
iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\yВозможности Героев^n\rВыбор невозможен^n^n")
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \y%s^n", HeroesDescription[0])
keys2 &= MENU_KEY_1
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \y%s^n", HeroesDescription[1])
keys2 &= MENU_KEY_2
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \y%s^n", HeroesDescription[2])
keys2 &= MENU_KEY_3
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \y%s^n^n", HeroesDescription[3])
keys2 &= MENU_KEY_4
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \w-- \rВыбрать героя \w--^n")
keys2 |= MENU_KEY_8
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r0. \wВыход^n")
keys2 |= MENU_KEY_0
show_menu(id, keys2, menu, -1, "Menu 2")
}
public Menu_Description(id, key)
{
if(!is_user_alive(id))
return;
switch(key)
{
case 0: client_print(id, print_chat, "Автор плагина: 6u3oH"); // Пункт нажать нельзя
case 1: client_print(id, print_chat, "Контакты: vk.com/6u3oH"); // Потому пишу здесь
case 2: client_print(id, print_chat, "Группа Вконтакте:"); // На правах автора
case 3: client_print(id, print_chat, "vk.com/halh_gamers"); // Свою рекламу
case 7: HeroesMenu(id)
}
}
public TakeDamageFunction(szVictim, szWeapon, szAttacker, Float: szDamage, szDamagebits )
{
if(!is_user_connected(szVictim) || !is_user_connected(szAttacker))
return;
if(cs_get_user_team(szAttacker) == cs_get_user_team(szVictim) || szAttacker == szVictim)
return;
if(gHero[szAttacker] == 2)
{
szDamage *= DmgHero;
}
}
public MessageInfo(id)
{
if(!is_user_alive(id))
return;
ColorChat(id, GREEN, "Вы выбрали героя: ^4%s", HeroesList[gHero[id]]);
ColorChat(id, GREEN, "Описание - ^4%s", HeroesDescription[gHero[id]]);
}
public RenderModel(id)
{
if(!is_user_alive(id))
return;
if(cs_get_user_team(id) == CS_TEAM_T)
{
set_user_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 10)
}
if(cs_get_user_team(id) == CS_TEAM_CT)
{
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 10)
}
}
public ModelChangeFunction(id)
{
if(!is_user_alive(id))
return;
switch(gHero[id])
{
case 0: cs_set_user_model(id, "hero1");
case 1: cs_set_user_model(id, "hero2");
case 2: cs_set_user_model(id, "hero3");
case 3: cs_set_user_model(id, "hero4");
}
}
public HealthFunction(id)
{
if(!is_user_alive(id))
return;
set_user_health(id, HeroesHealth[gHero[id]]);
}
public SpeedFunction(id)
{
if(!is_user_alive(id))
return;
set_user_maxspeed(id, Float: HeroesSpeed[gHero[id]]);
}
public GravityFunction(id)
{
if(!is_user_alive(id))
return;
set_user_gravity(id, Float: HeroesGravity[gHero[id]]);
}