Взривяване на граната с оръжие [Преработка]

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Взривяване на граната с оръжие [Преработка]

Мнение от Marinovv » 24 Апр 2018, 08:36

Хей всички. Може ли да се преработи, ако обичате този плъгин да се използва, за всички 3 вида гранати, а не само HE гранатата и да се премахне демиджа и. Тоест искам, когато избухне от патрон една HE граната примерно тя да си взима нормалния демидж, а не някакъв настроен.

Код за потвърждение: Избери целия код

/*
The Description plugin:

Now the HeGrenade will possible blast in game process.
*/

#include <amxmodx>
#include <fakemeta>

new g_FireGre[33][2]
new g_PlayersInEvent[33]
new g_Grenade[33]
new g_sprite
new g_Mins, g_Normal, g_Maxs
new g_expl, g_hedmg

new const g_model[] = "models/w_hegrenade.mdl"

public plugin_precache()
{
	g_sprite = precache_model("sprites/zerogxplode2.spr")
}

public plugin_init()
{
	register_plugin("ShotOnHeGrenade", "1.0", "defa")
	register_event("CurWeapon", "Event_CurWeapon", "b")
	
	g_Mins = register_cvar("minimal_distance", "100")
	g_Normal = register_cvar("normal_distance", "101")
	g_Maxs = register_cvar("maximum_distance", "500")
	g_expl = register_cvar("grenade_explo","150")
	g_hedmg = register_cvar("grenade_dmg","23")
}

public Event_CurWeapon(id)
{
	static wID, cAmmo
	wID = read_data(2)
	cAmmo = read_data(3)
	
	if(g_FireGre[id][0] != wID)
	{
		g_FireGre[id][0] = wID
		g_FireGre[id][1] = cAmmo
		return PLUGIN_CONTINUE
	}
	
	if(g_FireGre[id][1] < cAmmo)
	{
		g_FireGre[id][1] = cAmmo
		return PLUGIN_CONTINUE
	}
	
	if(g_FireGre[id][1] == cAmmo)
	return PLUGIN_CONTINUE
		
	g_FireGre[id][1] = cAmmo
	g_FireGre[id][0] = wID
		
	static entity, Arg[2]
	
	entity = FindeGrenade(Arg[0])
	
	if(entity)
	FireGrenade(Arg[0], Arg[1])
		
	return PLUGIN_CONTINUE
}

FindeGrenade(Own)
{
	new ent
	while((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "grenade")))
	g_Grenade[Own] = ent
	
	new model[32]
	pev(g_Grenade[Own], pev_model, model, 31)
	
	if(equal(model, g_model))
	return true
	
	return false
}

FireGrenade(Owner, Victim)
{
	if(!pev_valid(g_Grenade[Owner]))
	return
	
	static Float:origin[3], IntOrigin[3]
	pev(g_Grenade[Owner], pev_origin, origin)
	FVecIVec(origin, IntOrigin)
	
	engfunc(EngFunc_RemoveEntity, g_Grenade[Owner])
	
	static Players[32], i, Nums, Origin[3]
	static Dist, Fixed, Float:Damage
	static GreDmg, DmgOpr
	
	GreDmg = get_pcvar_num(g_hedmg)
	DmgOpr = get_pcvar_num(g_expl)
	
	get_players(Players, Nums)
	for(i=0; i<Nums; i++){
		get_user_origin(Players[i], Origin)
		Dist = get_distance(IntOrigin, Origin)
		
		if(get_pcvar_num(g_Normal) <= Dist <= get_pcvar_num(g_Maxs))
		{
			message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, Players[i])
			write_short(1<<14)
			write_short(1<<13)
			write_short(1<<14)
			message_end()
		}
		
		if(Dist <= get_pcvar_num(g_Mins))
		{
			message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, Players[i])
			write_short(1<<14)
			write_short(1<<13)
			write_short(1<<14)
			message_end()
			
			g_PlayersInEvent[Victim] = 1
			g_PlayersInEvent[Victim] = Players[i]
			
			static Float:health
			Fixed = ((GreDmg*GreDmg)/DmgOpr)
			Damage = 1.0*sqroot(((DmgOpr-Dist)*Fixed))
			
			pev(g_PlayersInEvent[Victim], pev_health, health)
			
			if(health <= Damage)
			{
				user_silentkill(g_PlayersInEvent[Victim])
				message_begin(MSG_ONE, get_user_msgid("DeathMsg"), {0,0,0}, g_PlayersInEvent[Victim])
				write_byte(g_PlayersInEvent[Victim])
				write_byte(g_PlayersInEvent[Victim])
				write_byte(0)
				write_string("hegrenade")
				message_end()
				
				g_PlayersInEvent[Victim] = 0
			}else{
				set_pev(g_PlayersInEvent[Victim], pev_health, health-Damage)
			}
			
			if(health > Damage)
			{
				g_PlayersInEvent[Victim] = 0
			}
		}		
	}
	
	message_begin(MSG_ALL, SVC_TEMPENTITY)
	write_byte(TE_EXPLOSION)
	write_coord(IntOrigin[0])
	write_coord(IntOrigin[1])
	write_coord(IntOrigin[2]+7)
	write_short(g_sprite)
	write_byte(9)
	write_byte(255)
	write_byte(0)
	message_end()
	
	message_begin(MSG_ALL, SVC_TEMPENTITY)
	write_byte(TE_WORLDDECAL)
	write_coord(IntOrigin[0])
	write_coord(IntOrigin[1])
	write_coord(IntOrigin[2])
	write_byte(28)
	message_end()
	
	return
}

public client_putinserver(id)
{
	g_PlayersInEvent[id] = 0
}

public client_disconnect(id)
{
	g_PlayersInEvent[id] = 0
}
	
	
	
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/
Ако ви е по лесно пък ми изработете или намерете друг такъв. Въпроса е , че тук ми хареса как се разклаща екрана, когато си в близост до нея.
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot] и 13 госта