Pawn Додаткова граната. Приклад коду для навчання
Про матеріал

У цьому коді визначено кілька констант, які визначають прапорець доступу команди "b" (TEAM_FLAG), максимальну кількість гранат, яку гравець може мати (MAX_GRANADES), шлях до користувацької моделі гранати (CUSTOM_GRENADE_MODEL) і шлях до користувацького звуку гранати (CUSTOM_GRENADE_SOUND).
Функція plugin_init() реєструє плагін і команду buygrenade2. Ця команда викликатиметься, коли гравець купуватиме гранату в додатковий слот.
Функція DeathMsg() обробляє подію вбивства гравця та перевіряє, чи має гравець-нападник прапорець доступу "b". Якщо так, перевіряється кількість гранат у гравця-нападника та додається одна граната, якщо їхня кількість не перевищує MAX_GRANADES.
Функція buygrenade2(id) виконує купівлю гранати в додатковий слот для гравців із прапорцем доступу "b". Вона перевіряє прапорець доступу гравця, його команду та кількість гранат, а потім додає одну гранату, якщо це можливо. Звук гранати відтворюється за допомогою функції emit_sound, і гравцеві виводиться повідомлення про купівлю гранати.
Після компіляції та встановлення плагіна на сервер Counter-Strike 1.6 гравці з прапорцем доступу "b" зможуть купувати та використовувати додаткову гранату в грі без заміни стандартної гранати.
#include < amxmodx >
#include < amxmisc >
new const TEAM_FLAG = 'b';
new const MAX_GRANADES = 1;
new const CUSTOM_GRENADE_MODEL[] = "models/custom_grenade.mdl";
new const CUSTOM_GRENADE_SOUND[] = "sound/custom_grenade.wav";
public plugin_init()
{
register_plugin("b_custom_grenade", "1.0", "Your Name");
register_clcmd("buygrenade2", "buygrenade2");
register_event("DeathMsg", "DeathMsg", "be", "1=0,1=0");
}
public DeathMsg()
{
new victim = read_data(1), attacker = read_data(2);
new const flag = get_user_flags(attacker);
if (victim > 0 && attacker > 0 && (flag & ADMIN_KICK))
{
new const attacker_team = get_user_team(attacker);
if (attacker_team == TEAM_FLAG)
{
new const attacker_grenades = get_user_grenades(attacker, CS_WEAPON_HEGRENADE);
if (attacker_grenades < MAX_GRANADES)
{
set_user_grenades(attacker, CS_WEAPON_HEGRENADE, attacker_grenades + 1);
}
}
}
}
public buygrenade2(id)
{
new const flag = get_user_flags(id);
if (flag & ADMIN_KICK)
{
new const team = get_user_team(id);
if (team == TEAM_FLAG)
{
new const grenades = get_user_grenades(id, CS_WEAPON_HEGRENADE);
if (grenades < MAX_GRANADES)
{
set_user_grenades(id, CS_WEAPON_HEGRENADE, grenades + 1);
emit_sound(id, CHAN_ITEM, CUSTOM_GRENADE_SOUND, 1.0, ATTN_NORM, 0, 100);
client_print(id, print_chat, "You bought an extra grenade!");
return PLUGIN_HANDLED;
}
else
{
client_print(id, print_chat, "You already have the maximum number of grenades!");
return PLUGIN_STOP;
}
}
}
return PLUGIN_CONTINUE;
}
Коментарі (0)