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;
}