Problema Armura la Grenada de Infectie

Discutii despre problemele aparute in jocul Counter-Strike.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
sammi1
Membru, skill 0
Membru, skill 0
Posts: 49
Joined: 30 Jan 2021, 22:38
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Detinator server CS: Zm.CsPower.Ro
Fond eXtream: 0
Has thanked: 23 times

06 Feb 2021, 01:46

Salutare din nou, am un plugin de infection nade pentru Biohazard, si am pus o functie cu care, daca ai armura si arunca cu grenada de infectie in tine sa scada armura prima oara, si abia dupaia sa te infecteze (daca arunca cu alta grenada), adica sa scada armura la 0 cu grenada, problema e ca o data aruncata grenada de infectie intru-un player, scade armura la 0 la toti playerii de pe server, chiar daca sunt sau nu in raza de explozie a grenadei, daca aveti vreo idee.

Functie scadere armura la 0:

Code: Select all

public Infection_Explosion(Ent)
{
	static Float:Origin[3]; pev(Ent, pev_origin, Origin)
	static owner; owner = pev(Ent, pev_owner);

	if (!is_user_zombie(owner))
		return;
	
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
	write_byte(TE_SPRITETRAIL)
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2] + 50)
	write_short(g_Ball_SprIDinf) // (sprite index)
	write_byte(25) // (count)
	write_byte(random_num(2, 5)) // (life in 0.1's)
	write_byte(5) // byte (scale in 0.1's)
	write_byte(random_num(10, 50)) // (velocity along vector in 10's)
	write_byte(5) // (randomness of velocity in 10's)
	message_end()
	
	static rgb[3];
	rgb[0] = COLOR[0]
	rgb[1] = COLOR[1]
	rgb[2] = COLOR[2]
	Effect_Ring(Origin, g_Exp_SprID, rgb, INFECT_RADIUS)
	
	emit_sound(Ent, CHAN_BODY, SOUND_EXPLOSION, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	
	// Check Affect
	static Float:Origin2[3]
	for(new i = 1; i <= g_MaxPlayers; i++)
	{
		if(get_user_armor(i) > 0){
			 set_user_armor(i, 0)
			 continue
		} 
		if(!is_alive(i)) continue
		if(owner == i) continue
		//if(_:cs_get_user_team(i) == Team) continue
		if(entity_range(Ent, i) > INFECT_RADIUS) continue
		if(is_user_zombie(i)) continue;

		pev(i, pev_origin, Origin2)
		if(is_wall_between_points(Origin, Origin2, 0)) continue;
		


		infect_user(i, owner, 1);
	}
}
Sursa:

Code: Select all

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <cstrike>
#include <hamsandwich>
#include <fun>
#include <biohazard>

// original code by Dias (avalanche frost)

#define PLUGIN "[BIO] Nades"
#define VERSION "2.0"
#define AUTHOR "YONTU"

// ============================
//     START INFECTION NADE
// ============================
#define MODEL_V "models/biohazard/v_grenade_infect.mdl"
#define MODEL_W_OLD_SM2 "models/w_flashbang.mdl"
#define MAXPLAYERS 32
#define CSW_INFECT_NADE CSW_FLASHBANG
#define weapon_infection "weapon_flashbang"

#define SOUND_EXPLOSION "biohazard_res/exp2.wav"
#define INFECT_RADIUS 200.0
#define IMPACT_EXPLOSION_INF 1

const INFECTION_NADE = 1111;
new const COLOR[3] = {77, 181, 25};
// ============================
//     END INFECTION NADE
// ============================

// ============================
//       START FROST NADE
// ============================
#define MODEL_W_OLD_SM "models/w_smokegrenade.mdl"

#define CSW_FROSTNOVA CSW_SMOKEGRENADE
#define weapon_frostnova "weapon_smokegrenade"

#define SOUND_EXPLOSION "biohazard_res/exp2.wav"
#define SOUND_HIT "biohazard_res/exp2.wav"
#define SOUND_RELEASE "warcraft3/impalelaunch1.wav"

#define IMPACT_EXPLOSION_FROST 0
#define FROST_RADIUS 200.0
#define FROST_HOLDTIME 2.0

#define TASK_HOLD 212015

const FROST_NADE = 2222;
new const NOVA_COLOR[3] = {0, 127, 255};
// ============================
//       END FROST NADE
// ============================

const PEV_NADE_TYPE = pev_flTimeStepSound;

// ========================
//  	    ARMURA
// ========================

new g_pArmor[MAXPLAYERS+1];



// MACROS
#define Get_BitVar(%1,%2) (%1 & (1 << (%2 & 31)))
#define Set_BitVar(%1,%2) %1 |= (1 << (%2 & 31))
#define UnSet_BitVar(%1,%2) %1 &= ~(1 << (%2 & 31))

enum
{
	ANIM_IDLE = 0,
	ANIM_PULLPIN,
	ANIM_THROW,
	ANIM_DRAW
}

new g_Trail_SprIDInf, g_Exp_SprID, g_Ball_SprIDinf
new g_Trail_SprIDfrost, g_Ball_SprIDfrost, g_Flame_SprID, g_GlassGib_SprID
new g_MaxPlayers, g_HamBot

new g_has_InfectionNade, g_Has_FrostNova, g_IsFrozen, Float:g_FrozenOrigin[33][3];

// Safety
new g_IsConnected, g_IsAlive;

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	Register_SafetyFunc()
	register_event("DeathMsg", "Event_Death", "a")
	register_forward(FM_SetModel, "fw_SetModel")
	RegisterHam(Ham_Touch, "grenade", "fw_GrenadeTouch")
	RegisterHam(Ham_Think, "grenade", "fw_GrenadeThink")
	RegisterHam(Ham_Item_Deploy, weapon_infection, "fw_Item_Deploy_PostInf", 1)
	RegisterHam(Ham_Item_Deploy, weapon_frostnova, "fw_Item_Deploy_PostFrs", 1)
	
	g_MaxPlayers = get_maxplayers()
}

public plugin_precache()
{
	precache_sound(SOUND_EXPLOSION)
	precache_model(MODEL_V)
	
	// Cache
	g_Trail_SprIDInf = precache_model("sprites/smoke.spr")
	g_Trail_SprIDfrost = precache_model("sprites/biohazard_res/trail_2.spr")
	g_Exp_SprID = precache_model("sprites/shockwave.spr")
	g_Ball_SprIDinf = precache_model("sprites/biohazard/Infection.spr")
	g_Ball_SprIDfrost = precache_model("sprites/biohazard_res/snowflake_1.spr")
	g_Flame_SprID = precache_model("sprites/biohazard_res/frostexp_2.spr")
	g_GlassGib_SprID = precache_model("models/glassgibs.mdl")
}

public plugin_natives()
{
    register_native("set_user_infection_nade", "_set_user_infection_nade")
}

public _set_user_infection_nade(iPlugin, iParams)
{
	if(iParams != 1)
		return PLUGIN_CONTINUE
        
	new id = get_param(1)
	if(!id || !is_user_zombie(id))
		return PLUGIN_CONTINUE
        
	Set_BitVar(g_has_InfectionNade, id)
	give_item(id, weapon_infection)
	
	if(get_user_weapon(id) == CSW_INFECT_NADE)
	{
		set_pev(id, pev_viewmodel2, MODEL_V)
		Set_Player_NextAttack(id, 0.75)
		Set_WeaponAnim(id, ANIM_DRAW)
	}

	return PLUGIN_HANDLED;
}

public client_putinserver(id)
{
	Safety_Connected(id)
	
	if(!g_HamBot && is_user_bot(id))
	{
		g_HamBot = 1
		set_task(0.1, "Do_Register_HamBot", id)
	}
}

public Do_Register_HamBot(id) 
{
	Register_SafetyFuncBot(id)
}

public client_disconnect(id)
{
	Safety_Disconnected(id)
}

public Event_Death()
{
	static Victim; Victim = read_data(2)
	if(Get_BitVar(g_IsFrozen, Victim))
		Release_Player(Victim+TASK_HOLD)
}

public fw_SetModel(Ent, const Model[])
{
	static id; id = pev(Ent, pev_owner)
	if(!is_user_connected(id)) return FMRES_IGNORED
		
	static Float:DMGTime; pev(Ent, pev_dmgtime, DMGTime)
	if(DMGTime == 0.0) return FMRES_IGNORED
	
	if(equal(Model, MODEL_W_OLD_SM2) && Get_BitVar(g_has_InfectionNade, id))
	{
		set_rendering(Ent, kRenderFxGlowShell, COLOR[0], COLOR[1], COLOR[2], kRenderNormal, 16);
		
		static rgb[3];
		rgb[0] = COLOR[0]
		rgb[1] = COLOR[1]
		rgb[2] = COLOR[2]
		Create_Trail(g_Trail_SprIDInf, Ent, 10, 10, rgb, 250)
		
		UnSet_BitVar(g_has_InfectionNade, id)
		set_pev(Ent, PEV_NADE_TYPE, INFECTION_NADE);
		
		return FMRES_SUPERCEDE
	}

	if(equal(Model, MODEL_W_OLD_SM) && Get_BitVar(g_Has_FrostNova, id))
	{
		static Team; Team = _:cs_get_user_team(id)
		set_pev(Ent, pev_team, Team)
		
		// Glow
		set_rendering(Ent, kRenderFxGlowShell, NOVA_COLOR[0], NOVA_COLOR[1], NOVA_COLOR[2], kRenderNormal, 16);
		
		static rgb[3];
		rgb[0] = NOVA_COLOR[0]
		rgb[1] = NOVA_COLOR[1]
		rgb[2] = NOVA_COLOR[2]
		Create_Trail(g_Trail_SprIDfrost, Ent, 10, 10, rgb, 250)
		
		// Remove
		UnSet_BitVar(g_Has_FrostNova, id)
		set_pev(Ent, PEV_NADE_TYPE, FROST_NADE);
		
		return FMRES_SUPERCEDE
	}
	
	return FMRES_IGNORED
}

public fw_GrenadeTouch(Ent, Touched)
{
	//if(!pev_valid(Ent) || pev(Ent, PEV_NADE_TYPE) != INFECTION_NADE) 
	//	return HAM_IGNORED
	if(!pev_valid(Ent))
		return HAM_IGNORED;
		
	switch (pev(Ent, PEV_NADE_TYPE))
	{
		case FROST_NADE:
		{
			static Impact; Impact = IMPACT_EXPLOSION_FROST
			if(Impact) set_pev(Ent, pev_dmgtime, get_gametime())
		}
		case INFECTION_NADE:
		{
			static Impact; Impact = IMPACT_EXPLOSION_INF;
			if(Impact) set_pev(Ent, pev_dmgtime, get_gametime())
		}
	}
	return HAM_IGNORED
}

public fw_GrenadeThink(Ent)
{
	//if(!pev_valid(Ent) || pev(Ent, PEV_NADE_TYPE) != INFECTION_NADE) 
	//	return HAM_IGNORED

	if(!pev_valid(Ent))
		return HAM_IGNORED
	
	static Float:DMGTime; pev(Ent, pev_dmgtime, DMGTime)
	if(DMGTime > get_gametime()) 
		return HAM_IGNORED

	switch (pev(Ent, PEV_NADE_TYPE))
	{
		case FROST_NADE:
		{
			AvalancheFrost_Explosion(Ent)
			engfunc(EngFunc_RemoveEntity, Ent)
			return HAM_SUPERCEDE
		}
		case INFECTION_NADE:
		{
			Infection_Explosion(Ent)
			engfunc(EngFunc_RemoveEntity, Ent)
			return HAM_SUPERCEDE
		}
	}

	return HAM_IGNORED
}

public fw_Item_Deploy_PostInf(Ent)
{
	if(pev_valid(Ent) != 2)
		return
	static Id; Id = get_pdata_cbase(Ent, 41, 4)
	if(get_pdata_cbase(Id, 373) != Ent)
		return
	if(!Get_BitVar(g_has_InfectionNade, Id))
		return

	Set_BitVar(g_has_InfectionNade, Id)
	Set_WeaponAnim(Id, ANIM_DRAW)
	
	set_pev(Id, pev_viewmodel2, MODEL_V)
}

public fw_Item_Deploy_PostFrs(Ent)
{
	if(pev_valid(Ent) != 2)
		return

	static Id; Id = get_pdata_cbase(Ent, 41, 4)
	if(get_pdata_cbase(Id, 373) != Ent)
		return

	Set_BitVar(g_Has_FrostNova, Id)
	Set_WeaponAnim(Id, ANIM_DRAW)
}

public Infection_Explosion(Ent)
{
	static Float:Origin[3]; pev(Ent, pev_origin, Origin)
	static owner; owner = pev(Ent, pev_owner);

	if (!is_user_zombie(owner))
		return;
	
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
	write_byte(TE_SPRITETRAIL)
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2] + 50)
	write_short(g_Ball_SprIDinf) // (sprite index)
	write_byte(25) // (count)
	write_byte(random_num(2, 5)) // (life in 0.1's)
	write_byte(5) // byte (scale in 0.1's)
	write_byte(random_num(10, 50)) // (velocity along vector in 10's)
	write_byte(5) // (randomness of velocity in 10's)
	message_end()
	
	static rgb[3];
	rgb[0] = COLOR[0]
	rgb[1] = COLOR[1]
	rgb[2] = COLOR[2]
	Effect_Ring(Origin, g_Exp_SprID, rgb, INFECT_RADIUS)
	
	emit_sound(Ent, CHAN_BODY, SOUND_EXPLOSION, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	
	// Check Affect
	static Float:Origin2[3]
	for(new i = 1; i <= g_MaxPlayers; i++)
	{
		if(get_user_armor(i) > 0){
			 set_user_armor(i, 0)
			 continue
		} 
		if(!is_alive(i)) continue
		if(owner == i) continue
		//if(_:cs_get_user_team(i) == Team) continue
		if(entity_range(Ent, i) > INFECT_RADIUS) continue
		if(is_user_zombie(i)) continue;

		pev(i, pev_origin, Origin2)
		if(is_wall_between_points(Origin, Origin2, 0)) continue;
		


		infect_user(i, owner, 1);
	}
}

public Effect_Ring(Float:Origin[3], SpriteID, RGB[3], Float:Radius)
{
	// smallest ring
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
	write_byte(TE_BEAMCYLINDER);
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2] + 200.0)
	write_short(SpriteID); // sprite
	write_byte(0); // start frame
	write_byte(0); // framerate
	write_byte(4); // life
	write_byte(60); // width
	write_byte(0); // noise
	write_byte(RGB[0]); // red
	write_byte(RGB[1]); // green
	write_byte(RGB[2]); // blue
	write_byte(250); // brightness
	write_byte(0); // speed
	message_end();

	// medium ring
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
	write_byte(TE_BEAMCYLINDER);
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2] + 450.0)
	write_short(SpriteID); // sprite
	write_byte(0); // start frame
	write_byte(0); // framerate
	write_byte(4); // life
	write_byte(60); // width
	write_byte(0); // noise
	write_byte(RGB[0]); // red
	write_byte(RGB[1]); // green
	write_byte(RGB[2]); // blue
	write_byte(200); // brightness
	write_byte(0); // speed
	message_end();

	// largest ring
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
	write_byte(TE_BEAMCYLINDER);
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2] + 700.0)
	write_short(SpriteID); // sprite
	write_byte(0); // start frame
	write_byte(0); // framerate
	write_byte(4); // life
	write_byte(60); // width
	write_byte(0); // noise
	write_byte(RGB[0]); // red
	write_byte(RGB[1]); // green
	write_byte(RGB[2]); // blue
	write_byte(150); // brightness
	write_byte(0); // speed
	message_end();

	// light effect
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
	write_byte(TE_DLIGHT);
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	write_byte(floatround(Radius/5.0)); // radius
	write_byte(RGB[0]); // r
	write_byte(RGB[1]); // g
	write_byte(RGB[2]); // b
	write_byte(8); // life
	write_byte(60); // decay rate
	message_end();
}

public Create_Trail(sprite, Ent, Life, Width, RGB[3], Brightness)
{
	Clear_Trail(Ent)

	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte(TE_BEAMFOLLOW)
	write_short(Ent)
	write_short(sprite); // sprite
	write_byte(Life); // life
	write_byte(Width); // width
	write_byte(RGB[0]); // red
	write_byte(RGB[1]); // green
	write_byte(RGB[2]); // blue
	write_byte(Brightness); // brightness
	message_end();
}

public Clear_Trail(Ent)
{
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_KILLBEAM)
	write_short(Ent)
	message_end()
}

public AvalancheFrost_Explosion(Ent)
{
	static Team; Team = pev(Ent, pev_team)
	static Float:Origin[3]; pev(Ent, pev_origin, Origin)
	
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
	write_byte(TE_EXPLOSION)
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	write_short(g_Flame_SprID)	// sprite index
	write_byte(15)	// scale in 0.1's
	write_byte(20)	// framerate
	write_byte(TE_EXPLFLAG_NODLIGHTS | TE_EXPLFLAG_NOSOUND)	// flags
	message_end()
	
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
	write_byte(TE_SPRITETRAIL)
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2] + 50)
	write_short(g_Ball_SprIDfrost) // (sprite index)
	write_byte(25) // (count)
	write_byte(random_num(2, 5)) // (life in 0.1's)
	write_byte(5) // byte (scale in 0.1's)
	write_byte(random_num(10, 50)) // (velocity along vector in 10's)
	write_byte(5) // (randomness of velocity in 10's)
	message_end()
	
	static rgb[3];
	rgb[0] = NOVA_COLOR[0]
	rgb[1] = NOVA_COLOR[1]
	rgb[2] = NOVA_COLOR[2]
	Effect_Ring(Origin, g_Exp_SprID, rgb, FROST_RADIUS)
	
	emit_sound(Ent, CHAN_BODY, SOUND_EXPLOSION, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	
	// Check Affect
	static Float:Origin2[3]
	for(new i = 1; i <= g_MaxPlayers; i++)
	{
		if(!is_alive(i)) continue
		if(pev(Ent, pev_owner) == i) continue
		if(_:cs_get_user_team(i) == Team) continue
		if(entity_range(Ent, i) > FROST_RADIUS) continue
		if(!is_user_zombie(i)) continue;
		pev(i, pev_origin, Origin2)
		if(is_wall_between_points(Origin, Origin2, 0)) continue
		
		emit_sound(i, CHAN_ITEM, SOUND_HIT, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
		Freeze_Player(i)
	}
}

public Freeze_Player(id)
{
	if(Get_BitVar(g_IsFrozen, id))
	{
		// Hold Time
		remove_task(id+TASK_HOLD)
		set_task(FROST_HOLDTIME + random_float(-0.5, 1.0), "Release_Player", id+TASK_HOLD)
		
		return
	}
	
	// Stop
	set_pev(id, pev_velocity, Float:{0.0,0.0,0.0})
	set_pev(id, pev_maxspeed, 1.0);
	
	pev(id, pev_origin, g_FrozenOrigin[id])
	Set_BitVar(g_IsFrozen, id)
	
	// Effect
	set_user_rendering(id, kRenderFxGlowShell, NOVA_COLOR[0], NOVA_COLOR[1], NOVA_COLOR[2], kRenderTransTexture, 1);
	
	// Hold Time
	remove_task(id+TASK_HOLD)
	set_task(FROST_HOLDTIME + random_float(-0.5, 1.0), "Release_Player", id+TASK_HOLD)
}

public Release_Player(id)
{
	id -= TASK_HOLD
	
	if(!is_connected(id))
		return
		
	UnSet_BitVar(g_IsFrozen, id)
	set_user_rendering( id, kRenderFxNone, 0, 0, 0, kRenderTransTexture, 1 );
	set_pev(id, pev_maxspeed, get_class_data(id, DATA_SPEED));
	//set_user_rendering(id)
	
	// Effect
	static Float:Origin[3]; pev(id, pev_origin, Origin)

	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
	write_byte(TE_IMPLOSION);
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2] + 8.0)
	write_byte(64)
	write_byte(10)
	write_byte(3)
	message_end()

	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
	write_byte(TE_SPARKS);
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	message_end();

	// add the shatter
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
	write_byte(TE_BREAKMODEL);
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2] + 24.0)
	engfunc(EngFunc_WriteCoord, 16.0)
	engfunc(EngFunc_WriteCoord, 16.0)
	engfunc(EngFunc_WriteCoord, 16.0)
	write_coord(random_num(-50,50)); // velocity x
	write_coord(random_num(-50,50)); // velocity y
	engfunc(EngFunc_WriteCoord, 25.0)
	write_byte(10); // random velocity
	write_short(g_GlassGib_SprID); // model
	write_byte(25); // count
	write_byte(25); // life
	write_byte(0x01/*BREAK_GLASS*/); // flags
	message_end();
	
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
	write_byte(TE_BEAMCYLINDER);
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2] + 100.0)
	write_short(g_Exp_SprID); // sprite
	write_byte(0); // start frame
	write_byte(0); // framerate
	write_byte(4); // life
	write_byte(30); // width
	write_byte(0); // noise
	write_byte(NOVA_COLOR[0]); // red
	write_byte(NOVA_COLOR[1]); // green
	write_byte(NOVA_COLOR[2]); // blue
	write_byte(250); // brightness
	write_byte(0); // speed
	message_end();
	
	// Sound
	emit_sound(id, CHAN_ITEM, SOUND_RELEASE, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	
	// Remove Effect
	//if(pev_valid(g_MyNova[id])) set_pev(g_MyNova[id], pev_flags, pev(g_MyNova[id], pev_flags) | FL_KILLME)
}

public client_PreThink(id)
{
	if(!is_alive(id))
		return
	if(!Get_BitVar(g_IsFrozen, id))
		return
		
	static Float:Origin[3]; pev(id, pev_origin, Origin)
	if(get_distance_f(Origin, g_FrozenOrigin[id]) > 8.0)
		HookEnt(id, g_FrozenOrigin[id], 50.0)
}

stock HookEnt(Ent, Float:VicOrigin[3], Float:Speed)
{
	static Float:fl_Velocity[3], Float:EntOrigin[3], Float:distance_f, Float:fl_Time
	pev(Ent, pev_origin, EntOrigin)
	
	distance_f = get_distance_f(EntOrigin, VicOrigin)
	fl_Time = distance_f / Speed
		
	fl_Velocity[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
	fl_Velocity[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
	fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time

	set_pev(Ent, pev_velocity, fl_Velocity)
}


stock Set_Player_NextAttack(id, Float:NextTime) set_pdata_float(id, 83, NextTime, 5)
stock Set_WeaponAnim(id, anim)
{
	set_pev(id, pev_weaponanim, anim)
	
	message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, {0, 0, 0}, id)
	write_byte(anim)
	write_byte(pev(id, pev_body))
	message_end()
}

stock is_wall_between_points(Float:start[3], Float:end[3], ignore_ent)
{
	static pentru
	pentru = create_tr2()

	engfunc(EngFunc_TraceLine, start, end, IGNORE_MONSTERS, ignore_ent, pentru)
	
	static Float:EndPos[3]
	get_tr2(pentru, TR_vecEndPos, EndPos)

	free_tr2(pentru)
	return floatround(get_distance_f(end, EndPos))
} 

/* ===============================
------------- SAFETY -------------
=================================*/
public Register_SafetyFunc()
{
	RegisterHam(Ham_Spawn, "player", "fw_Safety_Spawn_Post", 1)
	RegisterHam(Ham_Killed, "player", "fw_Safety_Killed_Post", 1)
}

public Register_SafetyFuncBot(id)
{
	RegisterHamFromEntity(Ham_Spawn, id, "fw_Safety_Spawn_Post", 1)
	RegisterHamFromEntity(Ham_Killed, id, "fw_Safety_Killed_Post", 1)
}

public Safety_Connected(id)
{
	Set_BitVar(g_IsConnected, id)
	UnSet_BitVar(g_IsAlive, id)
}

public Safety_Disconnected(id)
{
	UnSet_BitVar(g_IsConnected, id)
	UnSet_BitVar(g_IsAlive, id)
}

public fw_Safety_Spawn_Post(id)
{
	if(!is_user_alive(id))
		return
		
	Set_BitVar(g_IsAlive, id)
}

public fw_Safety_Killed_Post(id)
{
	UnSet_BitVar(g_IsAlive, id)
}
Ps. in acea sursa e si frost nade, sper sa nu incurce
RoyalServer
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3850
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: 76561198063679589
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 595 times
Contact:

06 Feb 2021, 23:20

înlocuiești primu cod cu

Code: Select all

public Infection_Explosion(Ent)
{
	static Float:Origin[3]; pev(Ent, pev_origin, Origin)
	static owner; owner = pev(Ent, pev_owner);

	if (!is_user_zombie(owner))
		return;
	
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
	write_byte(TE_SPRITETRAIL)
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2] + 50)
	write_short(g_Ball_SprIDinf) // (sprite index)
	write_byte(25) // (count)
	write_byte(random_num(2, 5)) // (life in 0.1's)
	write_byte(5) // byte (scale in 0.1's)
	write_byte(random_num(10, 50)) // (velocity along vector in 10's)
	write_byte(5) // (randomness of velocity in 10's)
	message_end()
	
	static rgb[3];
	rgb[0] = COLOR[0]
	rgb[1] = COLOR[1]
	rgb[2] = COLOR[2]
	Effect_Ring(Origin, g_Exp_SprID, rgb, INFECT_RADIUS)
	
	emit_sound(Ent, CHAN_BODY, SOUND_EXPLOSION, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	
	// Check Affect
	static Float:Origin2[3]
	for(new i = 1; i <= g_MaxPlayers; i++)
	{
		if(!is_alive(i)) continue
		if(owner == i) continue
		//if(_:cs_get_user_team(i) == Team) continue
		if(entity_range(Ent, i) > INFECT_RADIUS) continue
		if(is_user_zombie(i)) continue;
		if(get_user_armor(i) > 0){
			 set_user_armor(i, 0)
			 continue
		}
		pev(i, pev_origin, Origin2)
		if(is_wall_between_points(Origin, Origin2, 0)) continue;
		infect_user(i, owner, 1);
	}
}
Nu îmi mai trimiteți PM pe forum! Nu merge să răspund
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
sammi1
Membru, skill 0
Membru, skill 0
Posts: 49
Joined: 30 Jan 2021, 22:38
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Detinator server CS: Zm.CsPower.Ro
Fond eXtream: 0
Has thanked: 23 times

07 Feb 2021, 02:11

Din ce am reusit sa testez pana acum merge bine, exact cum am vrut, mai lasa topicul deschis pana maine seara, sa revin cu edit in caz de vreo problema, mersi frumos din nou
sammi1
Membru, skill 0
Membru, skill 0
Posts: 49
Joined: 30 Jan 2021, 22:38
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Detinator server CS: Zm.CsPower.Ro
Fond eXtream: 0
Has thanked: 23 times

10 Feb 2021, 14:11

Rezolvat
Se poate da T/C
The Kalu
Fost administrator
Fost administrator
Posts: 13712
Joined: 09 Oct 2010, 12:39
Detinator Steam: Da
CS Status: In grajd!
SteamID: kalulord
Reputatie: Fost Administrator
Fost membru Club eXtreamCS (6 luni)
Nume anterior: Terra
Location: Romania, Ploiesti
Has thanked: 328 times
Been thanked: 646 times
Contact:

10 Feb 2021, 16:09

sammi1 wrote:
07 Feb 2021, 02:11
Din ce am reusit sa testez pana acum merge bine, exact cum am vrut, mai lasa topicul deschis pana maine seara, sa revin cu edit in caz de vreo problema, mersi frumos din nou
Subiectul ramane deschis, poate mai are cineva vreo problema similara.
Image
Post Reply

Return to “Probleme in jocul Counter-Strike”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 19 guests