Плагин [ReAPI] Health Nade

Плагин Хил гранаты для сервера кс 1 6

Аватара пользователя

Автор Темы
Host-v
Администратор
Сообщения: 100
Зарегистрирован: 04 окт 2020, 14:08
Репутация: 0
Откуда: Красноярск
Благодарил (а): 1 раз
Поблагодарили: 3 раза
Контактная информация:
Статус: Не в сети

Плагин [ReAPI] Health Nade

Сообщение Host-v »

Игорь Павленко, Ссылка не работает. Отправьте исходный код под спойлер


Хостинг игровых серверов host-v.ru
Аватара пользователя

Автор Темы
Host-v
Администратор
Сообщения: 100
Зарегистрирован: 04 окт 2020, 14:08
Репутация: 0
Откуда: Красноярск
Благодарил (а): 1 раз
Поблагодарили: 3 раза
Контактная информация:
Статус: Не в сети

Плагин [ReAPI] Health Nade

Сообщение Host-v »

Обновления плагина до версии 4.4

05.12.21 - обновить .amxx и .cfg
- Добавлена выдача по флагам GameCMS

Код: Выделить всё

// Чтобы добавить флаг доступа GameCMS, добавьте новую строку в формате
// hn_gamecms_flag "имя_флага" "кол-во гранат"
//
// hn_gamecms_flag "_healthnade" "1"
Хостинг игровых серверов host-v.ru
Аватара пользователя

Сергей Григорьичев
Сообщения: 14
Зарегистрирован: 03 ноя 2021, 01:11
Репутация: 0
Контактная информация:
Статус: Не в сети

Плагин [ReAPI] Health Nade

Сообщение Сергей Григорьичев »

Host-v писал(а): Обновления плагина до версии 4.4

05.12.21 - обновить .amxx и .cfg
- Добавлена выдача по флагам GameCMS

Код: Выделить всё

// Чтобы добавить флаг доступа GameCMS, добавьте новую строку в формате
// hn_gamecms_flag "имя_флага" "кол-во гранат"
//
// hn_gamecms_flag "_healthnade" "1"
Это называется по названию услуги.
Аватара пользователя

slepcovdenis
Сообщения: 1
Зарегистрирован: 04 дек 2021, 18:47
Репутация: 0
Статус: Не в сети

Плагин [ReAPI] Health Nade

Сообщение slepcovdenis »

L 12/07/2021 - 15:47:42: [AMXX] Plugin says: [Защита] Плагин не запущен. Проверьте лицензионный ключ!
L 12/07/2021 - 15:47:42: [AMXX] Run time error 1 (plugin "health_nade.amxx") - forced exit
Добрый день у меня вот такая ошибка ключ имеется вписан!
Аватара пользователя

Автор Темы
Host-v
Администратор
Сообщения: 100
Зарегистрирован: 04 окт 2020, 14:08
Репутация: 0
Откуда: Красноярск
Благодарил (а): 1 раз
Поблагодарили: 3 раза
Контактная информация:
Статус: Не в сети

Плагин [ReAPI] Health Nade

Сообщение Host-v »

slepcovdenis писал(а): L 12/07/2021 - 15:47:42: [AMXX] Plugin says: [Защита] Плагин не запущен. Проверьте лицензионный ключ!
L 12/07/2021 - 15:47:42: [AMXX] Run time error 1 (plugin "health_nade.amxx") - forced exit
Добрый день у меня вот такая ошибка ключ имеется вписан!
Проверьте всё более подробнее куда у вас вписан ключ. Особенно обратите внимание на второе сообщение в данной теме
Хостинг игровых серверов host-v.ru
Аватара пользователя

Игорь Павленко
Сообщения: 6
Зарегистрирован: 29 ноя 2021, 16:58
Репутация: 0
Контактная информация:
Статус: Не в сети

Плагин [ReAPI] Health Nade

Сообщение Игорь Павленко »

Спойлер

Код: Выделить всё

#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <fun>
#include <csx>
#include <reapi>

#pragma semicolon 1

new const szPluginInfo[][] = {"Smoke HealthNade", "1.1", "medusa + ApXuTekToR"};

#define SUPPORT_GAMECMS

#if defined SUPPORT_GAMECMS
native Array:cmsapi_get_user_services(const index, const szAuth[] = "", const szService[] = "", serviceID = 0, bool:part = false);
#endif

#define MODEL_V		"models/health_nade/v_he_mk_nade.mdl"
#define MODEL_P		"models/health_nade/p_he_mk_nade.mdl"
#define MODEL_W		"models/health_nade/w_he_mk_nade.mdl"

new const SPRITE_EXPLODE1[]	= "sprites/health_nade/heal_explode.spr";
new const SPRITE_PROS[]		= "sprites/health_nade/heal_shape.spr";

new const SOUND_HEAL[]		= "health_nade/woomen_expr.wav";

enum {
	XO_WEAPON    = 4,
	XO_CGRENADE	 = 5,
	m_pPlayer    = 41,
	m_usEvent    = 114
}

new const EXCLASS[] = "grenade";

enum { STATUSICON_HIDE = 0, STATUSICON_FLASH = 2 };

const flagSmokeEvent    = (1 << 1);

#define IsSgGrenade(%1)			(get_pdata_int(%1, m_usEvent, XO_CGRENADE) & flagSmokeEvent)

#define _GetEntOwner(%1)        pev(%1, pev_owner)
#define _GetEntOrigin(%1,%2)    pev(%1, pev_origin, %2)

#define _SetViewModel(%1,%2)    set_pev(%1, pev_viewmodel2, %2)
#define _SetWeaponModel(%1,%2)	set_pev(%1, pev_weaponmodel2, %2)
#define _SetWorldModel(%1,%2)	engfunc(EngFunc_SetModel, %1, %2)

#define _RemoveEntity(%1)		engfunc(EngFunc_RemoveEntity, %1)

#define _get_blindStartTime(%1)	get_ent_data_float(%1, "CBasePlayer", "m_blindStartTime")
#define _get_blindFadeTime(%1)	get_ent_data_float(%1, "CBasePlayer", "m_blindFadeTime")

#if AMXX_VERSION_NUM < 183
#error [ERROR]: AMXX 1.8.2 - not supported (cuz use new fakemeta natives)!
#endif

new g_MsgId_StatusIcon, g_MsgId_ScreenFade;

new g_pFirstExplosion,
g_pPros,
g_pCircle;

enum status_s { status_DISABLED = 0, status_ENABLED = 1 };
new status_s: g_bCanUseItem = status_ENABLED;

enum e_cvars {
	c_AccessUse_Nade,
	c_AccessFlags[16],
	c_AccessServices[32],
	c_HealTeammates_Or_All,

	c_GiveHealth_Num,
	c_GiveHealth_Limite,
	c_GiveHealth_Radius,

	c_ScreenFade_Effects,
}
new cvars[e_cvars];

public plugin_natives()
{
	register_native("SHN_SetStatus", "native__SetStatus", .style = 0);
	register_native("SHN_GetStatus", "native__GetStatus", .style = 0);
}

public plugin_init() {
	g_MsgId_StatusIcon = get_user_msgid("StatusIcon");
	g_MsgId_ScreenFade = get_user_msgid("ScreenFade");
	register_touch(EXCLASS, "*", "CGrenade_ExplodeTouch");
	register_event("CurWeapon", "Event_CurWeapon", "be", "1=1");
	initCvars();

	register_srvcmd("HealthNade_lockmap", "Check_LockMap");

	new szConfigsDir[256];
	get_localinfo("amxx_configsdir", szConfigsDir, charsmax(szConfigsDir));
	server_cmd("exec %s/SevCorp/HelthNade.cfg", szConfigsDir);
	server_exec();
}

#if defined SUPPORT_GAMECMS
public plugin_cfg() {
	if(is_plugin_loaded("GameCMS_API") == INVALID_PLUGIN_ID)
	{
		log_amx("WARNING: gamecms_api.amxx isn't loaded! Plugin Stopped.");
		pause("a");
		return;
	}
}
#endif

public plugin_precache() {
	register_plugin(szPluginInfo[0], szPluginInfo[1], szPluginInfo[2]);
	precache_model(MODEL_V);
	precache_model(MODEL_P);
	precache_model(MODEL_W);
	g_pFirstExplosion = precache_model(SPRITE_EXPLODE1);
	g_pPros = precache_model(SPRITE_PROS);
	g_pCircle = precache_model("sprites/shockwave.spr");
	precache_sound(SOUND_HEAL);

}

public initCvars() {
	register_cvar("HelthGrenade_AccessUse_Nade",		"0");
	register_cvar("HelthGrenade_AccessFlags",        	"m");
#if defined SUPPORT_GAMECMS
	register_cvar("HelthGrenade_AccessServices",        "_healthnade");
#endif
	register_cvar("HelthGrenade_HealTeammates_Or_All",	"0");

	register_cvar("HelthGrenade_GiveHealth_Num",        "50");
	register_cvar("HelthGrenade_GiveHealth_Limite",		"110");
	register_cvar("HelthGrenade_GiveHealth_Radius",		"300");
	register_cvar("HelthGrenade_ScreenFade_Effects",	"1");

	get_cvar_string("HelthGrenade_AccessFlags", cvars[c_AccessFlags], charsmax(cvars[c_AccessFlags]));
#if defined SUPPORT_GAMECMS
	get_cvar_string("HelthGrenade_AccessServices", cvars[c_AccessServices], charsmax(cvars[c_AccessServices]));
#endif
	cvars[c_AccessUse_Nade]			= get_cvar_num("HelthGrenade_AccessUse_Nade");
	cvars[c_HealTeammates_Or_All]	= get_cvar_num("HelthGrenade_HealTeammates_Or_All");

	cvars[c_GiveHealth_Num]			= get_cvar_num("HelthGrenade_GiveHealth_Num");
	cvars[c_GiveHealth_Limite]		= get_cvar_num("HelthGrenade_GiveHealth_Limite");
	cvars[c_GiveHealth_Radius]		= get_cvar_num("HelthGrenade_GiveHealth_Radius");
	cvars[c_ScreenFade_Effects]		= get_cvar_num("HelthGrenade_ScreenFade_Effects");
}

public Event_CurWeapon(pPlayer) {
	enum { WeaponID = 2 };
	if(read_data(WeaponID) == CSW_SMOKEGRENADE)	{
		if(!IsAllowedToUse(pPlayer)) return;
		OnPlayer_SetViewModels(pPlayer);
		Send_StatusIcon__Cross(pPlayer);
	} else Send_StatusIcon__Cross(pPlayer, .status = STATUSICON_HIDE);
}

public grenade_throw(pPlayer, pEnt, w_id) {
	if(w_id != CSW_SMOKEGRENADE)
	return;

	if(!IsAllowedToUse(pPlayer))
	return;

	OnGrenade_SetWorldModel(pEnt);
}

public CGrenade_ExplodeTouch(const pEnt, const pOther) {
	if(!IsSgGrenade(pEnt))
	return;

	static iOwner; iOwner = _GetEntOwner(pEnt);

	if(!IsAllowedToUse(iOwner))
	return;

	static Float: fOrigin[3], iOrigin[3];
	_GetEntOrigin(pEnt, fOrigin);
	FVecIVec(fOrigin, iOrigin);
	Send_Explode(iOrigin);
	Send_Pros(iOrigin);
	Send_ShockWave(iOrigin);
	OnGrenade_PlaySound(pEnt);
	OnGrenade_RemoveByTouch(pEnt);
	HealPlayersOnRadius(iOwner, fOrigin);
}

stock HealPlayersOnRadius(pInflictor, Float: fOrigin[3]) {
	for(new pPlayer = 1; pPlayer <= MaxClients; pPlayer++) { 
		if(is_user_alive(pPlayer)) {

			if(cvars[c_HealTeammates_Or_All] == 1) {
				if(get_user_team(pInflictor) != get_user_team(pPlayer))
				continue;
			}

			#pragma unused pInflictor

			static Float: playerOrigin[3];
			_GetEntOrigin(pPlayer, playerOrigin);

			if(get_distance_f(fOrigin, playerOrigin) < cvars[c_GiveHealth_Radius])
			OnPlayer_HealEvent(pPlayer);
		}
	}
}

stock OnPlayer_HealEvent(const pPlayer) {
	if((get_user_health(pPlayer) + cvars[c_GiveHealth_Num]) < cvars[c_GiveHealth_Limite]) {
		set_user_health(pPlayer, (get_user_health(pPlayer) + cvars[c_GiveHealth_Num]));
	} else if((get_user_health(pPlayer) + cvars[c_GiveHealth_Num]) >= cvars[c_GiveHealth_Limite]) {
		set_user_health(pPlayer, cvars[c_GiveHealth_Limite]);
	}

	if(cvars[c_ScreenFade_Effects] == 1) {
		if(!IsBlind(pPlayer)) __UTIL_ScreenFade(pPlayer);
	} 
}

stock OnPlayer_SetViewModels(const pPlayer) {
	_SetViewModel(pPlayer, MODEL_V);
	_SetWeaponModel(pPlayer, MODEL_P);
}

stock OnGrenade_SetWorldModel(const pEnt)
_SetWorldModel(pEnt, MODEL_W);

stock OnGrenade_RemoveByTouch(const pEnt)
_RemoveEntity(pEnt);

stock Send_StatusIcon__Cross(const pPlayer, status = STATUSICON_FLASH) {
	message_begin(MSG_ONE_UNRELIABLE, g_MsgId_StatusIcon, .player = pPlayer);
	write_byte(status);
	write_string("cross");
	write_byte(0);
	write_byte(255);
	write_byte(0);
	message_end();
}

stock OnGrenade_PlaySound(const pEnt)
engfunc(EngFunc_EmitSound, pEnt, CHAN_WEAPON, SOUND_HEAL, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);


stock Send_Explode(iOrigin[3]) {
	emessage_begin(MSG_PVS, SVC_TEMPENTITY);
	ewrite_byte(TE_EXPLOSION);
	ewrite_coord(iOrigin[0]);
	ewrite_coord(iOrigin[1]);
	ewrite_coord(iOrigin[2] + 65);
	ewrite_short(g_pFirstExplosion);
	ewrite_byte(30);
	ewrite_byte(20);
	ewrite_byte(TE_EXPLFLAG_NOSOUND | TE_EXPLFLAG_NOPARTICLES);
	emessage_end();
}

stock Send_Pros(iOrigin[3]) {
	emessage_begin(MSG_PVS, SVC_TEMPENTITY);
	ewrite_byte(TE_SPRITETRAIL);
	ewrite_coord(iOrigin[0]);
	ewrite_coord(iOrigin[1]);
	ewrite_coord(iOrigin[2] + 20);
	ewrite_coord(iOrigin[0]);
	ewrite_coord(iOrigin[1]);
	ewrite_coord(iOrigin[2] + 80);
	ewrite_short(g_pPros);
	ewrite_byte(20);
	ewrite_byte(20);
	ewrite_byte(4);
	ewrite_byte(20);
	ewrite_byte(10);
	emessage_end();
}

stock Send_ShockWave(iOrigin[3]) {
	emessage_begin(MSG_PVS, SVC_TEMPENTITY);
	ewrite_byte(TE_BEAMCYLINDER);
	ewrite_coord(iOrigin[0]);
	ewrite_coord(iOrigin[1]);
	ewrite_coord(iOrigin[2]);
	ewrite_coord(iOrigin[0]);
	ewrite_coord(iOrigin[1]);
	ewrite_coord(iOrigin[2] + cvars[c_GiveHealth_Radius]);
	ewrite_short(g_pCircle);
	ewrite_byte(0);
	ewrite_byte(1);
	ewrite_byte(5);
	ewrite_byte(30);
	ewrite_byte(1);
	ewrite_byte(10);
	ewrite_byte(255);
	ewrite_byte(40);
	ewrite_byte(255); 
	ewrite_byte(5);
	emessage_end();
}

stock __UTIL_ScreenFade(const pPlayer, iColor[3] = {170, 255, 0}, iAlpha = 80, Float: flFxTime = 1.0, Float: flHoldTime = 0.3) {
	const FFADE_IN = 0x0000;

	emessage_begin(MSG_ONE_UNRELIABLE, g_MsgId_ScreenFade, .player = pPlayer);
	ewrite_short(FixedUnsigned16(flFxTime));
	ewrite_short(FixedUnsigned16(flHoldTime));
	ewrite_short(FFADE_IN);
	ewrite_byte(iColor[0]);
	ewrite_byte(iColor[1]);
	ewrite_byte(iColor[2]);
	ewrite_byte(iAlpha);
	emessage_end();
}

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

bool: IsAllowedToUse(pPlayer) {
#pragma unused pPlayer

	if(g_bCanUseItem == status_DISABLED) {
		client_print_color(pPlayer, print_team_default, "^3[^4Nade^3] ^1Лечебная граната выключена^4!");
		return false;
	}

	if(cvars[c_AccessUse_Nade] == 1) {
		if((checkAccess(pPlayer, cvars[c_AccessFlags]))) {
			return true;
		}
	}
#if defined SUPPORT_GAMECMS
	else if(cvars[c_AccessUse_Nade] == 2) {
		static Array:Services;
		Services = cmsapi_get_user_services(pPlayer, "", cvars[c_AccessServices]);
		if(Services) {
			return true;
		}
	} else if(cvars[c_AccessUse_Nade] == 3){
		static Array:Services;
		Services = cmsapi_get_user_services(pPlayer, "", cvars[c_AccessServices]);
		if((checkAccess(pPlayer, cvars[c_AccessFlags])) || Services) {
			return true;
		}
	}
#endif
	return false;
}

stock bool: IsBlind(pPlayer) {
	return bool:(Float: _get_blindStartTime(pPlayer) + Float: _get_blindFadeTime(pPlayer) >= get_gametime());
}

checkAccess(const pPlayer, const flags[]){
	return (get_user_flags(pPlayer) & read_flags(flags));
}

/* API?! */

/**
* Set item status to use.
*
* @note Usage examples:
*       SHN_SetStatus(1);
*
* @param status: 1 - enabled / 0 - disabled
*
* @noreturn
*/
// native SHN_SetStatus(status)
public native__SetStatus(plugin_id, argc)
{
	enum { arg_status = 1 };

	g_bCanUseItem = get_param(arg_status) == 1 ? status_ENABLED : status_DISABLED;
}

/**
* Retrieves the item status to use.
*
* @note Usage examples:
*       SHN_GetStatus();
*
* @return Current status: 1 - enabled / 0 - disabled
*/
// native SHN_GetStatus()
public native__GetStatus(plugin_id, argc)
{
	return g_bCanUseItem == status_ENABLED ? status_ENABLED : status_DISABLED;
}

/* ============= Блокировка карт =========================== */
public Check_LockMap()
{
	new getmap[32], map[32];
	read_args(getmap, charsmax(getmap));
	remove_quotes(getmap);

	get_mapname(map, charsmax(map));

	if(!strcmp(getmap, map, true))
	{
		pause("ad");
	}
}
Спойлер

Код: Выделить всё

// Тип выдачи гранаты:
// '0' - Всем
// '1' - По флагу
// '2' - По названию услуги
// -
// Default: "0"
HelthGrenade_AccessUse_Nade "2"

// Флаг доступа для получения гранаты
// -
// Default: "m"
HelthGrenade_AccessFlags "m"

// Название услуги для получения гранаты
// -
// Default: "_healthnade"
HelthGrenade_AccessServices "_healthnade"

// Кого будет личить граната?
// '0' - Всех
// '1' - Только своих
// -
// Default: "0"
HelthGrenade_HealTeammates_Or_All "1"

// Кол-во 'HP' на которое вылечит граната
// -
// Default: "50"
HelthGrenade_GiveHealth_Num "50"

// Максимальное кол-во 'HP' до которого вылечит граната
// -
// Default: "110"
HelthGrenade_GiveHealth_Limite "110"

// Радиус, в котором будет лечить граната
// -
// Default: "300"
HelthGrenade_GiveHealth_Radius "300"

// Включить/Выключить 'ScreenFade' при лечении
// -
// Default: "1"
HelthGrenade_ScreenFade_Effects "1"

// Блокировка плагина на определенных картах
// Формат добавления:
// Vampire_lockmap "карта"
HealthNade_lockmap "$2000$"
Аватара пользователя

Автор Темы
Host-v
Администратор
Сообщения: 100
Зарегистрирован: 04 окт 2020, 14:08
Репутация: 0
Откуда: Красноярск
Благодарил (а): 1 раз
Поблагодарили: 3 раза
Контактная информация:
Статус: Не в сети

Плагин [ReAPI] Health Nade

Сообщение Host-v »

Игорь Павленко писал(а):
► Показать

Отправлено спустя 1 минуту 40 секунд:
► Показать
Если это ваш плагин, тогда создайте в данном разделе Бесплатные Плагины новую тему с описанием.


Отправлено спустя 25 минут 1 секунду:

Или вы это как пример скинули? просто обновление уже вышло там добавлена возможность выдачи через GAMECMS Чтобы получать уведомления о выходи новых версий подпишитесь на телеграмм канал.
Хостинг игровых серверов host-v.ru
Аватара пользователя

Автор Темы
Host-v
Администратор
Сообщения: 100
Зарегистрирован: 04 окт 2020, 14:08
Репутация: 0
Откуда: Красноярск
Благодарил (а): 1 раз
Поблагодарили: 3 раза
Контактная информация:
Статус: Не в сети

Плагин [ReAPI] Health Nade

Сообщение Host-v »

Обновления плагина до версии 4.5

14.12.21 - обновить Все файлы
- Добавлена возможность пить зелье на ПКМ (спасибо AnonymousAmx, MayroN, Psycrow)
- Добавлены квары hn_health_drink, hn_usage_msg, hn_full_hp_msg, hn_throw_flag, hn_drink_flag
- Добавлены ML-ключи HEALTHNADE__USAGE_MSG, HEALTHNADE__FULL_HP_MSG, HEALTHNADE__CANT_DRINK, HEALTHNADE__CANT_DRINK
- Заменена модель в руках (v_) на модель с анимацией выпивания.
- Добавлен звук выпивания (обратите внимание, модель содержит другие пути к звукам!)

Код: Выделить всё

// На сколько исцелять при выпивании
hn_health_drink "65"

// Флаг доступа к броску ("" - для всех)
hn_throw_flag ""

// Флаг доступа к выпиванию ("" - для всех)
hn_drink_flag ""

// Показывать информацию об использовании гранаты?
hn_usage_msg "1"

// Показывать информацию о недоступности лечения из-за полного здоровья?
hn_full_hp_msg "1"
Хостинг игровых серверов host-v.ru
Адрес email:
Ответить Пред. темаСлед. тема