Не выдается лечебная граната.

kent9709

Пользователь
Лучшие ответы
0
Реакции
2
Добрый день! Ситуация такая поставил выдачу лечебной гранаты (4ый слот) через меню, изначально все работало хорошо, а вчера резко перестало, по флагу граната выдается но через меню нет! Не могу найти причину почему, прошу вас подсказать!

#pragma semicolon 1

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <reapi>

const Float:HEAL_RADIUS = 300.0;
const Float:HEAL_AMOUNT = 100.0;
const ACCESS_FLAG = ADMIN_CHAT;

const WeaponIdType:WEAPON_ID = WEAPON_SMOKEGRENADE;
const WeaponIdType:WEAPON_NEW_ID = WEAPON_GLOCK;
const WeaponIdType:WEAPON_FAKE_ID = WeaponIdType:75;
new const WEAPON_NAME[] = "weapon_smokegrenade";
new const AMMO_NAME[] = "HealthNade";
new const WEAPON_NEW_NAME[] = "reapi_healthnade/weapon_healthnade";
new const ITEM_CLASSNAME[] = "weapon_healthnade";
new const GRENADE_CLASSNAME[] = "healthnade";
const AMMO_ID = 16;

new SpriteCylinder, SpriteExplode, SpriteShape;
new MsgIdWeaponList, MsgIdAmmoPickup, MsgIdStatusIcon, MsgIdScreenFade;
#if WEAPON_NEW_ID != WEAPON_GLOCK
new FwdRegUserMsg, MsgHookWeaponList;
#endif

public plugin_precache() {
register_plugin("[ReAPI] Healthnade", "0.0.2", "F@nt0M");

precache_generic("sprites/reapi_healthnade/weapon_healthnade.txt");
precache_generic("sprites/reapi_healthnade/640hud128.spr");

precache_model("models/reapi_healthnade/v_healthnade.mdl");
precache_model("models/reapi_healthnade/p_healthnade.mdl");
precache_model("models/reapi_healthnade/w_healthnade.mdl");

precache_sound("weapons/reapi_healthnade/deploy.wav");
precache_sound("weapons/reapi_healthnade/pullpin.wav");

SpriteExplode = precache_model("sprites/reapi_healthnade/heal_explode.spr");
SpriteShape = precache_model("sprites/reapi_healthnade/heal_shape.spr");
SpriteCylinder = precache_model("sprites/shockwave.spr");

precache_sound("weapons/reapi_healthnade/heal.wav");

register_srvcmd("amx_give_healthnades", "Command_GiveNade");

#if WEAPON_NEW_ID != WEAPON_GLOCK
MsgIdWeaponList = get_user_msgid("WeaponList");
if (MsgIdWeaponList) {
MsgHookWeaponList = register_message(MsgIdWeaponList, "HookWeaponList");
} else {
FwdRegUserMsg = register_forward(FM_RegUserMsg, "RegUserMsg_Post", true);
}
#endif
}

public plugin_init() {
register_clcmd(WEAPON_NEW_NAME, "CmdSelect");

RegisterHookChain(RG_CBasePlayer_OnSpawnEquip, "CBasePlayer_OnSpawnEquip_Post", true);

RegisterHookChain(RG_CSGameRules_CleanUpMap, "CSGameRules_CleanUpMap_Post", true);
RegisterHookChain(RG_CBasePlayer_GiveAmmo, "CBasePlayer_GiveAmmo_Pre", false);
RegisterHookChain(RG_CBasePlayerWeapon_DefaultDeploy, "CBasePlayerWeapon_DefaultDeploy_Pre", false);

RegisterHam(Ham_Item_Deploy, WEAPON_NAME, "Item_Deploy_Post", true);
RegisterHam(Ham_Item_Holster, WEAPON_NAME, "Item_Holster_Post", true);

RegisterHookChain(RG_CBasePlayer_ThrowGrenade, "CBasePlayer_ThrowGrenade_Pre", false);

MsgIdAmmoPickup = get_user_msgid("AmmoPickup");
MsgIdStatusIcon = get_user_msgid("StatusIcon");
MsgIdScreenFade = get_user_msgid("ScreenFade");

#if WEAPON_NEW_ID == WEAPON_GLOCK
MsgIdWeaponList = get_user_msgid("WeaponList");
UTIL_WeapoList(
MSG_INIT, 0,
WEAPON_NEW_NAME,
AMMO_ID, 1,
-1, -1, GRENADE_SLOT, 4, WEAPON_NEW_ID,
ITEM_FLAG_LIMITINWORLD | ITEM_FLAG_EXHAUSTIBLE
);
#else
if (FwdRegUserMsg) {
unregister_forward(FM_RegUserMsg, FwdRegUserMsg, true);
}
unregister_message(MsgIdWeaponList, MsgHookWeaponList);
#endif
}

public Command_GiveNade()
{
new sUserId[5];

read_argv(1, sUserId, charsmax(sUserId));
trim(sUserId);
remove_quotes(sUserId);

replace(sUserId, charsmax(sUserId), "#", "");

new iPlayerId = str_to_num(sUserId);

new iPlayer = find_player("k", iPlayerId);

if(!iPlayer)
{
return PLUGIN_HANDLED;
}

if(!is_user_alive(iPlayer))
{
return PLUGIN_HANDLED;
}

giveNade(iPlayer);

return PLUGIN_HANDLED;
}

#if WEAPON_NEW_ID != WEAPON_GLOCK
public RegUserMsg_Post(const name[]) {
if (strcmp(name, "WeaponList") == 0) {
MsgIdWeaponList = get_orig_retval();
MsgHookWeaponList = register_message(MsgIdWeaponList, "HookWeaponList");
}
}

public HookWeaponList(const msg_id, const msg_dest, const msg_entity) {
enum {
arg_name = 1,
arg_ammo1,
arg_ammo1_max,
arg_ammo2,
arg_ammo2_max,
arg_slot,
arg_position,
arg_id,
arg_flags,
};

if (msg_dest != MSG_INIT || WeaponIdType:get_msg_arg_int(arg_id) != WEAPON_NEW_ID) {
return PLUGIN_CONTINUE;
}

set_msg_arg_string(arg_name,WEAPON_NEW_NAME);
set_msg_arg_int(arg_ammo1, ARG_BYTE, AMMO_ID);
set_msg_arg_int(arg_ammo1_max, ARG_BYTE, 1);
set_msg_arg_int(arg_ammo2, ARG_BYTE, -1);
set_msg_arg_int(arg_ammo2_max, ARG_BYTE, -1);
set_msg_arg_int(arg_slot, ARG_BYTE, _:GRENADE_SLOT - 1);
set_msg_arg_int(arg_position, ARG_BYTE, 4);
set_msg_arg_int(arg_flags, ARG_BYTE, ITEM_FLAG_LIMITINWORLD | ITEM_FLAG_EXHAUSTIBLE);

return PLUGIN_CONTINUE;
}
#endif

public CBasePlayer_OnSpawnEquip_Post(const id) {
#if defined ACCESS_FLAG
if (~get_user_flags(id) & ACCESS_FLAG) {
return;
}
#endif
giveNade(id);
}

public CmdSelect(const id) {
if (!is_user_alive(id)) {
return PLUGIN_HANDLED;
}

new item = rg_get_player_item(id, ITEM_CLASSNAME, GRENADE_SLOT);
if (item != 0 && get_member(id, m_pActiveItem) != item) {
rg_switch_weapon(id, item);
}
return PLUGIN_HANDLED;
}

public CSGameRules_CleanUpMap_Post() {
new ent = rg_find_ent_by_class(NULLENT, GRENADE_CLASSNAME, false);
while (ent > 0) {
destroyNade(ent);
ent = rg_find_ent_by_class(ent, GRENADE_CLASSNAME, false);
}
}

public CBasePlayer_GiveAmmo_Pre(const id, const amount, const name[]) {
if (strcmp(name, AMMO_NAME) != 0) {
return HC_CONTINUE;
}

giveAmmo(id, amount, AMMO_ID, 1);
SetHookChainReturn(ATYPE_INTEGER, AMMO_ID);
return HC_SUPERCEDE;
}


public CBasePlayerWeapon_DefaultDeploy_Pre(const item, const szViewModel[], const szWeaponModel[], const iAnim, const szAnimExt[], const skiplocal) {
if (FClassnameIs(item, ITEM_CLASSNAME)) {
SetHookChainArg(2, ATYPE_STRING, "models/reapi_healthnade/v_healthnade.mdl");
SetHookChainArg(3, ATYPE_STRING, "models/reapi_healthnade/p_healthnade.mdl");
}

new WeaponIdType:wid = WeaponIdType:rg_get_iteminfo(item, ItemInfo_iId);
if (wid != WEAPON_ID && wid != WEAPON_FAKE_ID) {
return HC_CONTINUE;
}

new lastItem = get_member(get_member(item, m_pPlayer), m_pLastItem);
if (is_nullent(lastItem) || item == lastItem) {
return HC_CONTINUE;
}

if (WeaponIdType:rg_get_iteminfo(lastItem, ItemInfo_iId) == WEAPON_ID) {
SetHookChainArg(6, ATYPE_INTEGER, 0);
}

return HC_CONTINUE;
}

public Item_Deploy_Post(const item) {
if (WeaponIdType:rg_get_iteminfo(item, ItemInfo_iId) == WEAPON_FAKE_ID) {
rg_set_iteminfo(item, ItemInfo_iId, WEAPON_ID);
}

new other = get_member(get_member(item, m_pPlayer), m_rgpPlayerItems, GRENADE_SLOT);
while (!is_nullent(other)) {
if (item != other && WeaponIdType:rg_get_iteminfo(other, ItemInfo_iId) == WEAPON_ID) {
rg_set_iteminfo(other, ItemInfo_iId, WEAPON_FAKE_ID);
}
other = get_member(other, m_pNext);
}
}

public Item_Holster_Post(const item) {
new other = get_member(get_member(item, m_pPlayer), m_rgpPlayerItems, GRENADE_SLOT);
while (!is_nullent(other)) {
if (item != other && WeaponIdType:rg_get_iteminfo(other, ItemInfo_iId) == WEAPON_FAKE_ID) {
rg_set_iteminfo(other, ItemInfo_iId, WEAPON_ID);
}
other = get_member(other, m_pNext);
}
}

public CBasePlayer_ThrowGrenade_Pre(const id, const item, const Float:vecSrc[3], const Float:vecThrow[3], const Float:time, const const usEvent) {
if (!FClassnameIs(item, ITEM_CLASSNAME)) {
return HC_CONTINUE;
}

new grenade = throwNade(id, vecSrc, vecThrow, time);
SetHookChainReturn(ATYPE_INTEGER, grenade);
return HC_SUPERCEDE;
}

public GrenadeTouch(const grenade, const other) {
if (!is_nullent(grenade)) {
explodeNade(grenade);
}
}

public GrenadeThink(const grenade) {
if (!is_nullent(grenade)) {
explodeNade(grenade);
}
}

giveNade(const id) {
new item = rg_get_player_item(id, ITEM_CLASSNAME, GRENADE_SLOT);
if (item != 0) {
giveAmmo(id, 1, AMMO_ID, 1);
return item;
}

item = rg_create_entity(WEAPON_NAME, false);
if (is_nullent(item)) {
return NULLENT;
}

new Float:eek:rigin[3];
get_entvar(id, var_origin, origin);
set_entvar(item, var_origin, origin);
set_entvar(item, var_spawnflags, get_entvar(item, var_spawnflags) | SF_NORESPAWN);

set_member(item, m_Weapon_iPrimaryAmmoType, AMMO_ID);
set_member(item, m_Weapon_iSecondaryAmmoType, -1);

set_entvar(item, var_classname, ITEM_CLASSNAME);

dllfunc(DLLFunc_Spawn, item);

set_member(item, m_iId, WEAPON_NEW_ID);

rg_set_iteminfo(item, ItemInfo_pszName, WEAPON_NEW_NAME);
rg_set_iteminfo(item, ItemInfo_pszAmmo1, AMMO_NAME);
rg_set_iteminfo(item, ItemInfo_iMaxAmmo1, 1);
rg_set_iteminfo(item, ItemInfo_iId, WEAPON_FAKE_ID);
rg_set_iteminfo(item, ItemInfo_iPosition, 4);
rg_set_iteminfo(item, ItemInfo_iWeight, 1);

dllfunc(DLLFunc_Touch, item, id);

if (get_entvar(item, var_owner) != id) {
set_entvar(item, var_flags, FL_KILLME);
return NULLENT;
}

return item;
}

giveAmmo(const id, const amount, const ammo, const max) {
if (get_entvar(id, var_flags) & FL_SPECTATOR) {
return;
}

new count = get_member(id, m_rgAmmo, ammo);
new add = min(amount, max - count);
if (add < 1) {
return;
}

set_member(id, m_rgAmmo, count + add, ammo);

emessage_begin(MSG_ONE, MsgIdAmmoPickup, .player = id);
ewrite_byte(ammo);
ewrite_byte(add);
emessage_end();
}

throwNade(const id, const Float:vecSrc[3], const Float:vecThrow[3], const Float:time) {
new grenade = rg_create_entity("info_target", false);
if (is_nullent(grenade)) {
return 0;
}

set_entvar(grenade, var_classname, GRENADE_CLASSNAME);

set_entvar(grenade, var_movetype, MOVETYPE_BOUNCE);
set_entvar(grenade, var_solid, SOLID_BBOX);

engfunc(EngFunc_SetOrigin, grenade, vecSrc);

new Float:angles[3];
get_entvar(id, var_angles, angles);
set_entvar(grenade, var_angles, angles);

set_entvar(grenade, var_owner, id);

if (time < 0.1) {
set_entvar(grenade, var_nextthink, get_gametime());
set_entvar(grenade, var_velocity, Float:{0.0, 0.0, 0.0});
} else {
set_entvar(grenade, var_nextthink, get_gametime() + time);
set_entvar(grenade, var_velocity, vecThrow);
}

set_entvar(grenade, var_sequence, random_num(3, 6));
set_entvar(grenade, var_framerate, 1.0);
set_entvar(grenade, var_gravity, 0.5);
set_entvar(grenade, var_friction, 0.8);
engfunc(EngFunc_SetModel, grenade, "models/reapi_healthnade/w_healthnade.mdl");
set_entvar(grenade, var_dmg, 30.0);
set_entvar(grenade, var_dmgtime, get_gametime() + time);

SetTouch(grenade, "GrenadeTouch");
SetThink(grenade, "GrenadeThink");
return grenade;
}

explodeNade(const grenade) {
new Float:eek:rigin[3];
get_entvar(grenade, var_origin, origin);

UTIL_BeamCylinder(origin, SpriteCylinder, 1, 5, 30, 1, {10, 255, 40}, 255, 5, HEAL_RADIUS);
UTIL_CreateExplosion(origin, 65.0, SpriteExplode, 30, 20, (TE_EXPLFLAG_NOSOUND | TE_EXPLFLAG_NOPARTICLES));
UTIL_SpriteTrail(origin, SpriteShape);

rh_emit_sound2(grenade, 0, CHAN_WEAPON, "weapons/reapi_healthnade/heal.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);

new id = get_entvar(grenade, var_owner);
new team = get_member(id, m_iTeam);

for (new player = 1, Float:playerOrigin[3]; player <= MaxClients; player++) {
if (!is_user_alive(player) || get_member(player, m_iTeam) != team) {
continue;
}

get_entvar(player, var_origin, playerOrigin);
if (get_distance_f(origin, playerOrigin) < HEAL_RADIUS) {
ExecuteHamB(Ham_TakeHealth, player, HEAL_AMOUNT, DMG_GENERIC);
UTIL_ScreenFade(player);
}
}

destroyNade(grenade);
}

destroyNade(const grenade) {
SetTouch(grenade, "");
SetThink(grenade, "");
set_entvar(grenade, var_flags, FL_KILLME);
}

stock rg_get_player_item(const id, const classname[], const InventorySlotType:slot = NONE_SLOT) {
new item = get_member(id, m_rgpPlayerItems, slot);
while (!is_nullent(item)) {
if (FClassnameIs(item, classname)) {
return item;
}
item = get_member(item, m_pNext);
}

return 0;
}

stock bool:IsBlind(const player) {
return bool:(Float:get_member(player, m_blindUntilTime) > get_gametime());
}

stock UTIL_WeapoList(
const type,
const player,
const name[],
const ammo1,
const maxAmmo1,
const ammo2,
const maxammo2,
const InventorySlotType:slot,
const position,
const WeaponIdType:id,
const flags
) {
message_begin(type, MsgIdWeaponList, .player = player);
write_string(name);
write_byte(ammo1);
write_byte(maxAmmo1);
write_byte(ammo2);
write_byte(maxammo2);
write_byte(_:slot - 1);
write_byte(position);
write_byte(_:id);
write_byte(flags);
message_end();
}

stock UTIL_StatusIcon(const player, const type, const sprite[], const color[3]) {
message_begin(MSG_ONE, MsgIdStatusIcon, .player = player);
write_byte(type); // 0 - hide 1 - show 2 - flash
write_string(sprite);
write_byte(color[0]);
write_byte(color[1]);
write_byte(color[2]);
message_end();
}

stock UTIL_ScreenFade(const player, const Float:fxTime = 1.0, const Float:holdTime = 0.3, const color[3] = {170, 255, 0}, const alpha = 80) {
if (IsBlind(player)) {
return;
}

const FFADE_IN = 0x0000;

message_begin(MSG_ONE_UNRELIABLE, MsgIdScreenFade, .player = player);
write_short(FixedUnsigned16(fxTime));
write_short(FixedUnsigned16(holdTime));
write_short(FFADE_IN);
write_byte(color[0]);
write_byte(color[1]);
write_byte(color[2]);
write_byte(alpha);
message_end();
}

stock UTIL_BeamCylinder(const Float:eek:rigin[3], const sprite, const framerate, const life, const width, const amplitude, const color[3], const bright, const speed, const Float:size) {
message_begin_f(MSG_PVS, SVC_TEMPENTITY, origin, 0);
write_byte(TE_BEAMCYLINDER);
write_coord_f(origin[0]);
write_coord_f(origin[1]);
write_coord_f(origin[2]);
write_coord_f(origin[0]);
write_coord_f(origin[1]);
write_coord_f(origin[2] + size);
write_short(sprite);
write_byte(0);
write_byte(framerate);
write_byte(life);
write_byte(width);
write_byte(amplitude);
write_byte(color[0]);
write_byte(color[1]);
write_byte(color[2]);
write_byte(bright);
write_byte(speed);
message_end();
}

stock UTIL_CreateExplosion(const Float:eek:rigin[3], const Float:vecUp, const modelIndex, const scale, const frameRate, const flags) {
message_begin_f(MSG_PVS, SVC_TEMPENTITY, origin, 0);
write_byte(TE_EXPLOSION);
write_coord_f(origin[0]);
write_coord_f(origin[1]);
write_coord_f(origin[2] + vecUp);
write_short(modelIndex);
write_byte(scale);
write_byte(frameRate);
write_byte(flags);
message_end();
}

stock UTIL_SpriteTrail(Float:eek:rigin[3], const sprite, const cound = 20, const life = 20, const scale = 4, const noise = 20, const speed = 10) {
message_begin(MSG_BROADCAST, SVC_TEMPENTITY); // MSG_PVS
write_byte(TE_SPRITETRAIL);
write_coord_f(origin[0]);
write_coord_f(origin[1]);
write_coord_f(origin[2] + 20.0);
write_coord_f(origin[0]);
write_coord_f(origin[1]);
write_coord_f(origin[2] + 80.0);
write_short(sprite);
write_byte(cound);
write_byte(life);
write_byte(scale);
write_byte(noise);
write_byte(speed);
message_end();
}

stock FixedUnsigned16(Float:value, scale = (1 << 12)) {
return clamp(floatround(value * scale), 0, 0xFFFF);
}

// Лицензионный ключ вводить в файл amxmodx/data/fg_keys.ini (если файла нет, он создастся сам при рестарте/смены карты сервера)


//////////////
// Основное //
//////////////

// Режим меню
// 0 - выключить меню
// 1 - нормальный режим (доступно всем)
// 2 - только для Т
// 3 - только для СТ
bonusmenu_mode "1"

// Включить логирование. Логи будут писаться в папку logs/bonusmenu_rbs/
bonusmenu_log "0"

// При включенном кваре, плагин будет записывать в личный кабинет юзера на сайте GameCMS информацию об обмене поинтов на деньги и наоборот
// При первом запуске сервера, он добавит в таблицу `money__actions_types` необходимые строки, изменить их можно в ланг файле BONUSMENU_GAMECMS_*
bonusmenu_balance_logs "0"

// Если у игрока в руках есть оружие, заменить его?
// Сделано для того, чтобы игроки не бегали к примеру с ak47 и m4a1 одновременно.
// 1 - выкинуть
// 2 - уничтожить
// 0 - отключить
bonusmenu_replace_weapon "1"

// Показывать иконку слева, что в руках находиться мега дигл или мега граната?
// 0 - не показывать
// 1 - показывать красную иконку
// 2 - показывать мигающую иконку
bonusmenu_megaicon "1"

// Разрешить меню с определенного раунда
// 0 или 1 - разрешить всегда.
// если стоит csdm, то указывайте тут секунды
bonusmenu_firstround "3"

// Время от начала раунда, в течении которого можно использовать меню.
// 0 - можно всегда
// -1 - время mp_buytime
bonusmenu_time "25"

// Закрывать меню после выбора бонуса.
bonusmenu_close "1"

// Включите, если у Вас csdm мод или бесконечный раунд.
// (если у Вас CSDM, то включится ограничение не по раундам, а по секундам)
// -1 - включится автоматически
// 1 - включить
// 0 - выключить
bonusmenu_csdm "-1"

// Список карт, на которых запрещено брать оружие
bonusmenu_maps_weapons "35hp"
bonusmenu_maps_weapons "35hp2"

// Список карт, на которых не выдаются бонусы
bonusmenu_maps_points "35hp"
bonusmenu_maps_points "35hp2"

// Список карт, на которых вообще не работает меню
bonusmenu_maps_disable "35hp"
bonusmenu_maps_disable "35hp2"

/////////////////////////
// Настройка информера //
/////////////////////////

// R G B X Y TIME TYPE
// R,G,B - цвет информера в формате RGB
// X,Y, - координаты
// TIME - обновление информера в секундах
// TYPE - тип информера
// 0 - отключить
// 1 - обычный hud
// 2 - жирный DHUD
bonusmenu_hud "100 100 100 -1.0 0.90 3.0 1"

// Цвет худа, когда меню нельзя открыть
// 0 - всегда будет один цвет
bonusmenu_hud_not "255 50 50"

////////////////////
// Выдача поинтов //
////////////////////

// Разрешить выдавать поинты. (можно отключить плагином Cvar On Map в нужное время)
bonusmenu_points_enable "1"

// Блокировать выдачу поинтов до раунда bonusmenu_firstround
// 1 вкл, 0 выкл
bonusmenu_points_block "0"

// Поинты за количество фрагов, убийств в голову и прочего.
// <количество_фрагов> <количество_бонуса_за_них>
// Если игрок умирает, накопленное количество фрагов сгорает.
// 0 - выключить.
bonusmenu_points_frags "10 2" // За фраги
bonusmenu_points_hs "10 5" // За убийство в голову
bonusmenu_points_knife "1 2" // За убийство с ножа
bonusmenu_points_gren "1 2" // За убийство с гранаты

// Если стоит плагин Army Ranks Ultimate, то сколько поинтов давать за новое звание?
bonusmenu_points_army "30"


//////////////
// BuyAdmin //
//////////////

// Покупка админки/випки за поинты
// Наилучший вариант выдавать флаги через плагин Ultimate Flags

// Выбор в меню, на что ставить админку
// bonusmenu_buyadmin_option "Nick SteamID IP"
bonusmenu_buyadmin_option "SteamID" // если выдаете права через плагин Ultimate Flags, то укажите только SteamID


// Команда для добавления админа
// Этот плагин не добавляет админа, он посылает команду другому плагину, который отвечает за добавления админа
// Это может быть либо стандартный плагин admin.amxx, либо amxbans_rbs.amxx (либо еще какой то, о котором я не знаю)
// Ниже представлена команда для добавления админа через AMXBans RBS
// ПЕРЕМЕННЫЕ:
// %write% - ник,айди или айпи игрока, на который будет записана админка
// %flags% - флаги
// %password% - пароль(может быть пустым)
// %auth% - тип записи (nick/steam/ip)
// %nick% - возвратит ник игрока
// %time% - срок админки в секундах
// ' - заменится символом ". Если вы хотите взять в кавычки, то используйте ' вместо "
//bonusmenu_buyadmin_cmd "amx_addadmin '%write%' '%flags%' '%password%' '%auth%' '%nick%' 'yes' '%time%' 'комментарий'" // Выдача через плагин AMXBans RBS и подобные
bonusmenu_buyadmin_cmd "flags_add_user '%write%' '+%flags%' '+%time%' '%nick%' 'anew %flags%'" // Выдача через плагин Ultimate Flags


// Если игрок уже покупал випку, то повторная покупка добавляет время.
// Можно в bonusmenu_rbs.ini выставить несколько пунктов, покупка випки, покупка иммунитета, покупка админки, покупка випки с золотыми оружиями...
// Игрок сам решит, что захочет купить/продлить.

/////////////////
// Editor Menu //
/////////////////

// Флаг доступа в меню bonusmenu_editor
// 0 - отключить меню
bonusmenu_editor_flag "l"

// Восьмым пунктом в меню можно выбрать шаг, на сколько прибавлять/отнимать поинты игрокам.
// Тут можно изменить эти шаги.
bonusmenu_editor_step "+1 +5 +10 +100 +2021 +5000 +1000 -10 -5 -1"

; "идентификатор"
; Это функция, которая что то выдает игроку. Например идентификатор "money" выдаст игроку деньги,
; а идентификатор "damageattaker" увеличит наносимый урон.
;
; "очки"
; Стоимость бонуса
;
; "дополнительное значение(доп.зн.)"
; Применяется не ко всем идентификаторам. Например если идентификатор "health", то дополнительное значение -
; это количество жизней, которые получит игрок.
;
; "время"
; Время в секундах, в течении которого работает бонус.
; Действует не на все идентификаторы (Вы поймете на какие).
;
; "уровень (лвл)"
; Если у Вас стоит плагин Army Ranks Ultimate, то сдесь ставите номер звания,
; с которого будет работать данный бонус.
; "0" или "" - можно использовать всем.
;
; "ограничение раундов (огран.)"
; Ограничивает использование данного пункта на 1 раз за раунд, или 1 раз за 3 раунда и т.п.
; "0" или "" - бесконечное число раз
; (если у вас CSDM сервер, то указывайте тут количество секунд, в течении которых нельзя будет повторно взять бонус)
;
; "описание"
; Тут будет написано название пункта в меню.
; Используйте \r, \w, \d, \y для подцветки символов.


; КАК ВЫДАТЬ ОРУЖИЕ?
; Чтобы выдать оружие, напишите в графе "идентификатор" его название
; Чтобы выдать несколько оружий, воспользуйтесь символом разделителем |
;
; Если хотите указать оружию свое количество патрон(или количество гранат или брони), напишите его в графе "дополнительно значение"
; Если несколько оружий, пишите патроны соответственно через разделитель |
; 0 - выдаст стандартное количество патрон. Если хотите оставить по стандарту, можете в этой графе ничего не писать.
;
; Названия оружий:
; B1: glock18,usp,p228,deagle,elite,fiveseven
; B2: m3,xm1014
; B3: mac10,tmp,mp5navy,ump45,p90
; B4: galil,ak47,m4a1,famas,sg552,aug,g3sg1,sg550,scout,awp
; B5: m249
; B8: vest,vesthelm,flashbang,hegrenade,smokegrenade,nvgs,defuser,shield
; ULTIMATE: так же можете использовать оружие из плагина Ultimate Weapons, просто впишите его название, которое указывали в ultimate_weapons.ini. Например "ultimate_ak47"

[menu]
; Пункты в меню
;"идентификатор" "очки" "доп.зн." "время" "лвл" "огран." "описание"
;"buyadmin" "100" "30|t" "0" "0" "0" "Покупка VIP" ; Покупка прав випа на 30 дней за 100 поинтов
;"buyadmin" "200" "30|bcdfij" "0" "10" "0" "Покупка ADMIN" ; Покупка прав админа на 30 дней за 200 поинтов

;"points_to_balance" "50" "5" "" "0" "0" "\y%sруб\w на баланс сайта" ; Пополнение баланса на сайте GameCMS
;"points_to_balance" "100" "15" "" "0" "0" "\y%sруб\w на баланс сайта" ; Пополнение баланса на сайте GameCMS
;"balance_to_points" "5" "50" "" "0" "0" "Купить \y%s\w поинтов" ; Покупка поинтов с баланса сайта GameCMS (доп.зн. это кол-во покупаемых поинтов)
;"balance_to_points" "15" "100" "" "0" "0" "Купить \y%s\w поинтов" ; Покупка поинтов с баланса сайта GameCMS (доп.зн. это кол-во покупаемых поинтов)

;"buyxp" "30" "100" "0" "0" "0" "100 опыта Army Ranks"

;"empty" "" "" "" "" "" "" ; Пустая строка в меню

"megagren" "15" "200" "0" "0" "2" "\yМега граната \r(\y200% урона\r)"
"megadeagle" "20" "120" "0" "0" "3" "\yМега DEAGLE \r(\y200% урона\r)"
"srvcmd" "10" "amx_give_healthnades #%userid%" "0" "0" "1" "\yЛечебная граната\r(\yЛечит 100ХП\r)"
"empty" "" "" "" "" "" "" ; Пустая строка в меню
;"buyadmin" "20" "1|n" "0" "0" "0" "\yСкины оружия (Дикий Лотос) на 1дн"
;"buyadmin" "30" "1|m" "0" "0" "0" "\yСкины оружия (Токсичные) на 1дн"
;"buyadmin" "50" "1|r" "0" "0" "0" "\yСкины оружия (Смертоносные) на 1дн"
"buyadmin" "600" "15|t" "0" "3" "0" "\yПокупка VIP на 15дн"
"buyadmin" "1500" "15|p" "0" "3" "0" "\yПокупка Gold VIP на 15дн"



;"speed" "5" "100" "60" "0" "8" "Ускорение на \r100%"
;"gravity" "5" "70" "60" "0" "8" "Гравитация \r70%"
;"money" "1" "16000" "" "0" "4" "Взять \r16000$"
;"render" "5" "50" "160" "0" "8" "Прозрачность \r50%"
;"health" "3" "200" "" "0" "1" "200\rHP"
;"respawn" "3" "" "" "0" "1" "Возрождение"
;"damageattaker" "5" "30" "500" "0" "8" "Увеличение урона на \r30%"
;"damagevictim" "5" "30" "500" "0" "8" "Уменьшение полученного урона на \r30%"
;"ammo" "5" "" "300" "0" "8" "Восстановление патрон"
;"multijump" "10" "2" "300" "15" "10" "Тройные прыжки"
;"bunnyhop" "10" "" "1000" "15" "0" "Bunny Hop"

;"awp|deagle|vesthelm" "3" "100" "" "" "0" "AWP"
;"ultimate_ak47|vesthelm" "0" "" "" "" "0" "Золотой AK47" ; Золотой AK47 из плагина ultimate_weapons.amxx
;"ultimate_m4a1toxic|vesthelm" "0" "" "" "" "0" "M4A1 Токсичный" ; M4A1 из плагина ultimate_weapons.amxx

; "exec" - выполняет консольную команду, которая выполняется на стороне клиента
; доп.знач. это сама команда, например: "say /menu"
; данный идентификатор предназначен для открытия меню из стороннего плагина, поэтому при его выборе, бонусные очки не будут сниматься
; Пример открытия меню для игроков, из плагина amxmodmenu_rbs.amxx:
;"exec" "0" "say /menu" "" "0" "0" "Главное меню"

; "srvcmd" - выполняет консольную команду, которая выполняется на стороне СЕРВЕРА
; доп.знач. это сама консольная команда
; допустим у вас есть плагин, который с помощью команды выдает коктейл молотова игроку
; чтобы внедрить данный пункт в меню, достаточно указать доп значении этого идентификатора: "amx_give_molotov #%userid%"
; где %userid% это айди самого игрока
; Таким образом, в меню можно внедрить практически любую функцию, с помощью стороннего плагина
; ВАЖНО! При выборе пункта, плагин обязательно спишет поинты, он не знает, получит ли коктейл молотова игрок, или нет
; Если Вы хотите, чтобы сторонний плагин отвечал за списывание поинтов, и вывод сообщения в чат, то поставьте восклицательный знак перед консольной командой
; Пример выдачи коктейля молотова:
;"srvcmd" "3" "amx_give_molotov #%userid%" "" "0" "0" "Коктейл молотова"
; Тоже самое, только блокировать списание поинтов
;"srvcmd" "3" "!amx_give_molotov #%userid%" "" "0" "0" "Коктейл молотова"

[commands]
; Команды плагина
; Данные команды могут быть вызваны как при написании в чат, так и при написании в консоль
; "идентификатор" "имя команды"
"openmenu" "anew" ; вызов меню
"openmenu" "bonus" ; альтернативная команда вызова меню
 
amxx plugins
Currently loaded plugins:
name version author file status
[ 1] ReAimDetector API 0.2.2 ReHLDS Team reaimdetector.a running
[ 2] GameCMS_API 5.4.7 zhorzh78 gamecms_api_5.4 running
[ 3] [190] AMXBans RBS 20.06.06 SKAJIbnEJIb & La amxbans_rbs.amx running
[ 4] [190] AdminCmd RBS 20.06.06 SKAJIbnEJIb & AM admincmd_rbs.am running
[ 5] Slots Reservation 1.9.0.5262 AMXX Dev Team adminslots.amxx running
[ 6] Multi-Lingual System 1.9.0.5262 AMXX Dev Team multilingual.am running
[ 7] [190] Ultimate Weapons 20.06.06 SKAJIbnEJIb ultimate_weapon running
[ 8] Menus Front-End 20.06.06 SKAJIbnEJIb & AM amxmodmenu_rbs. running
[ 9] [190] CmdMenu RBS 20.06.06 SKAJIbnEJIb & AM cmdmenu_rbs.amx running
[ 10] [190] MapsMenu RBS 20.06.06 SKAJIbnEJIb & AM mapsmenu_rbs.am running
[ 11] Plugin Menu 1.9.0.5262 AMXX Dev Team pluginmenu.amxx running
[ 12] [190] AdminChat RBS 20.06.06 SKAJIbnEJIb adminchat_rbs.a running
[ 13] Anti Flood 1.9.0.5262 AMXX Dev Team antiflood.amxx running
[ 14] [190] Ad From Server 20.06.06 SKAJIbnEJIb ad_from_server. running
[ 15] [190] NextMap 18.09.25 SKAJIbnEJIb & AM nextmap.amxx running
[ 16] [190] MapChooser RBS 20.08.02 SKAJIbnEJIb & UF mapchooser_rbs. running
[ 17] [190] TimeLeft 18.09.25 SKAJIbnEJIb & AM timeleft.amxx running
[ 18] Pause Plugins 1.9.0.5262 AMXX Dev Team pausecfg.amxx running
[ 19] [190] Stats Configurat 20.06.06 SKAJIbnEJIb & AM statscfg_rbs.am running
[ 20] [190] RestMenu RBS 20.06.06 SKAJIbnEJIb & AM restmenu_rbs.am running
[ 21] [190] StatsX RBS 20.06.06 SKAJIbnEJIb & AM statsx_rbs.amxx running
[ 22] AuthEmu API 1.0 Dev-MS Team authemu.amxx running
[ 23] [190] VoteBan RBS 20.06.06 SKAJIbnEJIb voteban_rbs.amx running
[ 24] GameCMS_GagManager 2.2.3 ReAP zhorzh78 gamecms_gagmana running
[ 25] From Rock to Ban 1.02 Safety1st++ rock2gag.amxx running
[ 26] Time for info 1.0 neugomon time_for_info.a running
[ 27] [190] CsStats MySQL 20.06.06 SKAJIbnEJIb csstats_mysql.a running
[ 28] [190] Skill ELO 20.06.06 SKAJIbnEJIb skill_elo.amxx running
[ 29] [190] Army Ranks Ultim 20.06.06 SKAJIbnEJIb army_ranks_ulti running
[ 30] [190] Warmup RBS 20.08.08 SKAJIbnEJIb warmup_rbs.amxx running
[ 31] [190] Ultimate Models 20.06.06 SKAJIbnEJIb ultimate_models running
[ 32] [190] Parachute RBS 20.06.06 SKAJIbnEJIb & KR parachute_rbs.a running
[ 33] Reset Score 1.0 Silenttt resetscore.amxx running
[ 34] [190] Ultimate Flags 20.06.06 SKAJIbnEJIb ultimate_flags. running
[ 35] [190] Top Award RBS 20.06.06 SKAJIbnEJIb topaward_rbs.am running
[ 36] MOTD Model 1.1.0 fl0wer motd_model.amxx running
[ 37] [190] Balancing Map Fu 20.06.06 SKAJIbnEJIb balancing_map_f running
[ 38] [190] Damager RBS 20.06.06 SKAJIbnEJIb damager_rbs.amx running
[ 39] AFK Control ReNew 1.2(a) neygomon afk_control.amx running
[ 40] [190] CsStats Editor 20.06.06 SKAJIbnEJIb csstats_editor. running
[ 41] [190] ESP RBS 20.06.06 SKAJIbnEJIb & Ko esp_rbs.amxx running
[ 42] [190] PTB RBS 20.06.06 SKAJIbnEJIb ptb_rbs.amxx running
[ 43] [190] Chat RBS 20.06.06 SKAJIbnEJIb chat_rbs.amxx running
[ 44] [190] DemoRecorder RBS 20.06.06 SKAJIbnEJIb demorecorder_rb running
[ 45] [190] No Team Flash 20.06.06 SKAJIbnEJIb NoTeamFlash.amx running
[ 46] [190] Snipers RBS 20.06.06 SKAJIbnEJIb snipers_rbs.amx running
[ 47] [190] Kill Assist RBS 20.06.06 SKAJIbnEJIb & Di killassist_rbs. running
[ 48] [190] Stimulation RBS 20.06.06 SKAJIbnEJIb stimulation_rbs running
[ 49] [190] Ultimate Informe 20.06.06 SKAJIbnEJIb ultimate_inform running
[ 50] [190] VIP RBS 20.07.20 SKAJIbnEJIb vip_rbs.amxx running
[ 51] [190] Screen Player 20.06.06 SKAJIbnEJIb screen_player.a running
[ 52] [ReAPI] Healthnade 0.0.2 F@nt0M reapi_healthnad running
[ 53] [190] Block Reconnect 20.06.06 ShaTalKiN Block_Reconnect running
[ 54] [190] High Ping Kicker 20.06.06 SKAJIbnEJIb hpk_rbs.amxx running
[ 55] [190] BonusMenu RBS 20.06.06 SKAJIbnEJIb bonusmenu_rbs.a running
[ 56] Kills Counter 0.3 serfreeman1337 kills_counter.a running
[ 57] [190] Map Spawns Edito 20.06.06 SKAJIbnEJIb & iG MapSpawnsEditor running
[ 58] [190] Replace Weapons 20.06.06 SKAJIbnEJIb replace_weapons running
[ 59] [190] Analizator 20.06.06 SKAJIbnEJIb analizator.amxx running
[ 60] [ReAPI] Block 'Fire in 0.0.1 sergrib reapi_block_FIT running
[ 61] Team Grenade Trail 1.2 Numb team_grenade_tr running
[ 62] [190] SlayLosers RBS 20.06.06 SKAJIbnEJIb & d3 slaylosers_rbs. running
[ 63] [190] Cvar On Map 20.06.06 SKAJIbnEJIb cvar_on_map.amx running
63 plugins, 63 running
В логах вот стандартно ошибок вообще нет!
amxx plugins
Currently loaded plugins:
name version author file status
[ 1] ReAimDetector API 0.2.2 ReHLDS Team reaimdetector.a running
[ 2] GameCMS_API 5.4.7 zhorzh78 gamecms_api_5.4 running
[ 3] [190] AMXBans RBS 20.06.06 SKAJIbnEJIb & La amxbans_rbs.amx running
[ 4] [190] AdminCmd RBS 20.06.06 SKAJIbnEJIb & AM admincmd_rbs.am running
[ 5] Slots Reservation 1.9.0.5262 AMXX Dev Team adminslots.amxx running
[ 6] Multi-Lingual System 1.9.0.5262 AMXX Dev Team multilingual.am running
[ 7] [190] Ultimate Weapons 20.06.06 SKAJIbnEJIb ultimate_weapons running
[ 8] Menus Front-End 20.06.06 SKAJIbnEJIb & AM amxmodmenu_rbs. running
[ 9] [190] CmdMenu RBS 20.06.06 SKAJIbnEJIb & AM cmdmenu_rbs.amx running
[ 10] [190] MapsMenu RBS 20.06.06 SKAJIbnEJIb & AM mapsmenu_rbs.am running
[ 11] Plugin Menu 1.9.0.5262 AMXX Dev Team pluginmenu.amxx running
[ 12] [190] AdminChat RBS 20.06.06 SKAJIbnEJIb adminchat_rbs.a running
[ 13] Anti Flood 1.9.0.5262 AMXX Dev Team antiflood.amxx running
[ 14] [190] Ad From Server 20.06.06 SKAJIbnEJIb ad_from_server. running
[ 15] [190] NextMap 18.09.25 SKAJIbnEJIb & AM nextmap.amxx running
[ 16] [190] MapChooser RBS 20.08.02 SKAJIbnEJIb & UF mapchooser_rbs. running
[ 17] [190] TimeLeft 18.09.25 SKAJIbnEJIb & AM timeleft.amxx running
[ 18] Pause Plugins 1.9.0.5262 AMXX Dev Team pausecfg.amxx running
[ 19] [190] Stats Configurat 20.06.06 SKAJIbnEJIb & AM statscfg_rbs.am running
[ 20] [190] RestMenu RBS 20.06.06 SKAJIbnEJIb & AM restmenu_rbs.am running
[ 21] [190] StatsX RBS 20.06.06 SKAJIbnEJIb & AM statsx_rbs.amxx running
[ 22] AuthEmu API 1.0 Dev-MS Team authemu.amxx running
[ 23] [190] VoteBan RBS 20.06.06 SKAJIbnEJIb voteban_rbs.amx running
[ 24] GameCMS_GagManager 2.2.3 ReAP zhorzh78 gamecms_gagmana running
[ 25] From Rock to Ban 1.02 Safety1st++ rock2gag.amxx running
[ 26] Time for info 1.0 neugomon time_for_info.a running
[ 27] [190] CsStats MySQL 20.06.06 SKAJIbnEJIb csstats_mysql.a running
[ 28] [190] Skill ELO 20.06.06 SKAJIbnEJIb skill_elo.amxx running
[ 29] [190] Army Ranks Ultimate 20.06.06 SKAJIbnEJIb army_ranks_ultimate running
[ 30] [190] Warmup RBS 20.08.08 SKAJIbnEJIb warmup_rbs.amxx running
[ 31] [190] Ultimate Models 20.06.06 SKAJIbnEJIb ultimate_models running
[ 32] [190] Parachute RBS 20.06.06 SKAJIbnEJIb & KR parachute_rbs.a running
[ 33] Reset Score 1.0 Silenttt resetscore.amxx running
[ 34] [190] Ultimate Flags 20.06.06 SKAJIbnEJIb ultimate_flags. running
[ 35] [190] Top Award RBS 20.06.06 SKAJIbnEJIb topaward_rbs.am running
[ 36] MOTD Model 1.1.0 fl0wer motd_model.amxx running
[ 37] [190] Balancing Map Fu 20.06.06 SKAJIbnEJIb balancing_map_full running
[ 38] [190] Damager RBS 20.06.06 SKAJIbnEJIb damager_rbs.amx running
[ 39] AFK Control ReNew 1.2(a) neygomon afk_control.amx running
[ 40] [190] CsStats Editor 20.06.06 SKAJIbnEJIb csstats_editor. running
[ 41] [190] ESP RBS 20.06.06 SKAJIbnEJIb & Ko esp_rbs.amxx running
[ 42] [190] PTB RBS 20.06.06 SKAJIbnEJIb ptb_rbs.amxx running
[ 43] [190] Chat RBS 20.06.06 SKAJIbnEJIb chat_rbs.amxx running
[ 44] [190] DemoRecorder RBS 20.06.06 SKAJIbnEJIb demorecorder_rbs running
[ 45] [190] No Team Flash 20.06.06 SKAJIbnEJIb NoTeamFlash.amx running
[ 46] [190] Snipers RBS 20.06.06 SKAJIbnEJIb snipers_rbs.amx running
[ 47] [190] Kill Assist RBS 20.06.06 SKAJIbnEJIb & Di killassist_rbs. running
[ 48] [190] Stimulation RBS 20.06.06 SKAJIbnEJIb stimulation_rbs running
[ 49] [190] Ultimate Informer 20.06.06 SKAJIbnEJIb ultimate_informer running
[ 50] [190] VIP RBS 20.07.20 SKAJIbnEJIb vip_rbs.amxx running
[ 51] [190] Screen Player 20.06.06 SKAJIbnEJIb screen_player.a running
[ 52] [ReAPI] Healthnade 0.0.2 F@nt0M reapi_healthnad running
[ 53] [190] Block Reconnect Respawn 20.06.06 ShaTalKiN Block_Reconnect_Respawn running
[ 54] [190] High Ping Kicker RBS 20.06.06 SKAJIbnEJIb hpk_rbs.amxx running
[ 55] [190] BonusMenu RBS 20.06.06 SKAJIbnEJIb bonusmenu_rbs.a running
[ 56] Kills Counter 0.3 serfreeman1337 kills_counter.a running
[ 57] [190] Map Spawns Editor RBS 20.06.06 SKAJIbnEJIb & iG MapSpawnsEditor_RBS running
[ 58] [190] Replace Weapons 20.06.06 SKAJIbnEJIb replace_weapons running
[ 59] [190] Analizator 20.06.06 SKAJIbnEJIb Analizator.amxx running
[ 60] [ReAPI] Block 'Fire in 0.0.1 sergrib reapi_block_FIT running
[ 61] Team Grenade Trail 1.2 Numb team_grenade_tr running
[ 62] [190] SlayLosers RBS 20.06.06 SKAJIbnEJIb & d3 slaylosers_rbs. running
[ 63] [190] Cvar On Map 20.06.06 SKAJIbnEJIb cvar_on_map.amx running
63 plugins, 63 running

SKAJIbnEJIb

visibility
Администратор
Скриптер
Лучшие ответы
560
Реакции
656
Такая команда вообще существует в плагине гранаты? Или вы сами ее придумали?
Сообщение автоматически объединено:

Вижу, существует. А через консоль сервера вообще выдается граната? Потому что указано в конфигах все верно
 

kent9709

Пользователь
Лучшие ответы
0
Реакции
2
@SKAJIbnEJIb, да существует, register_srvcmd("amx_give_healthnades", "Command_GiveNade"); она выдавалась буквально вчера с утра а вечером перестала.
Сообщение автоматически объединено:

Вижу, существует. А через консоль сервера вообще выдается граната? Потому что указано в конфигах все верно
Так же перестала выдаваться и через консоль
Сообщение автоматически объединено:

Может я что то упустил в настройках, вроде проверил уже все
Так же перестала выдаваться и через консоль
Сообщение автоматически объединено:

Такая команда вообще существует в плагине гранаты? Или вы сами ее придумали?
Сообщение автоматически объединено:

Вижу, существует. А через консоль сервера вообще выдается граната? Потому что указано в конфигах все верно
Что вчера изменялось, добавлялись скины в ultimate_weapons, ultimate_models, replace_weapons (все работает стабильно)
 
Последнее редактирование:

SKAJIbnEJIb

visibility
Администратор
Скриптер
Лучшие ответы
560
Реакции
656
Если через консоль сейчас не выдается, значит что то с самим плагином healthgren, его я не юзал, поэтому ничего сказать не могу
 

kent9709

Пользователь
Лучшие ответы
0
Реакции
2
@SKAJIbnEJIb, сейчас так же заметил, раньше можно было купить оружие из ultimate_weapons через консоль по его названию сейчас данная функция тоже не работает
 

SKAJIbnEJIb

visibility
Администратор
Скриптер
Лучшие ответы
560
Реакции
656
@kent9709, скрин покажите как вводите в консоль
 

kent9709

Пользователь
Лучшие ответы
0
Реакции
2
@SKAJIbnEJIb, сделал рестарт сервера, после чего все начало работать, но сегодня все повторилось, снова не выдается
 
Сверху