Raised This Month: $12 Target: $400
 3% 

help laser


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Pak army
Junior Member
Join Date: Feb 2021
Old 02-24-2021 , 06:48   help laser
Reply With Quote #1

Hi everyone i have laserfence sma but need to add
press R to rotate left MOVE laser fence
press e to rotate Right Move laser fence
Someone can add this please
LOOk VIDEO : https://www.youtube.com/watch?v=5mim2NTjuyk

Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include < cstrike >
#include <engine>
#include <hamsandwich>
#include <xs>
#include <dhudmessage>
#include <colorchat>

#define Mine_Model "models/NS_Laser_Grid_v2_6.mdl"
#define Mine_Sprite_Laser_CT "sprites/lasermine_ct.spr"
#define Mine_Sprite_Laser_T "sprites/lasermine_t.spr"
#define Mine_Sprite_Explo "sprites/zerogxplode.spr"
#define Mine_Sprite_Explo_Extra "sprites/nhth1.spr"

#define Mine_Sound_Placed "test/mine_deploy.wav"
#define Mine_Sound_Loading "test/mine_charge.wav"
#define Mine_Sound_Activate "test/mine_activate.wav"
#define Mine_Sound_Hit "test/beamstart9.wav"

new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0



new g_Entity_Mine
new g_iBeam_T, g_iBeam_CT

new bool:g_bSettingMine[33]
new g_iMine[33], g_iCountMines[33]
new g_rotating[33]
new g_iCvar[10]
new Float:g_fTime[33], Float:g_fTime2[33]
new g_iSPR_Explo, g_iSPR_Explo2, g_iSPR_Smoke

new g_IDEniti[33]

public plugin_precache()
{
	precache_model(Mine_Model)
	g_iBeam_CT=precache_model(Mine_Sprite_Laser_CT)
	g_iBeam_T=precache_model(Mine_Sprite_Laser_T)
	g_iSPR_Explo=precache_model(Mine_Sprite_Explo)
	g_iSPR_Explo2=precache_model(Mine_Sprite_Explo_Extra)
	g_iSPR_Smoke=precache_model("sprites/black_smoke4.spr")	
	
	precache_sound(Mine_Sound_Placed)
	precache_sound(Mine_Sound_Loading)
	precache_sound(Mine_Sound_Activate)
	precache_sound(Mine_Sound_Hit)
}

public plugin_init()
{
	register_clcmd("+setfence","clcmd_setlaser_plus")
	register_clcmd("-setfence","clcmd_setlaser_minus")
	
	register_dictionary("laserfence.txt")
	
	RegisterHam(Ham_TakeDamage, "func_breakable", "Laser_TakeDamage")
	
	RegisterHam(Ham_Killed, "player", "ham_killed_post", 1)
	
	register_touch("Laser_Fence", "player", "touch_player")
	
	register_menu("Menu_1", keys, "func_menu") 
	register_forward(FM_PlayerPreThink, "fm_playerprethink")
	
	register_forward(FM_CmdStart,"fm_cmdstart")
	
	register_think("Laser_Fence", "think_laser_mine")
	
	g_iCvar[0]=register_cvar("lf_damage","50")
	g_iCvar[1]=register_cvar("lf_health","1000")
	g_iCvar[2]=register_cvar("lf_reward", "1000")
	g_iCvar[3]=register_cvar("lf_explo_effect","0")
	g_iCvar[4]=register_cvar("lf_glow","0")
	
	g_iCvar[5]=register_cvar("lf_cost", "100")
	g_iCvar[6]=register_cvar("lf_cost_repair", "100")
	g_iCvar[7]=register_cvar("lf_cost_turn", "100")
	g_iCvar[8]=register_cvar("lf_cost_up", "1000")
}


public plugin_natives() register_native("delete_lf", "delete_lf", 1)


public touch_player(ent, id)
{
	g_IDEniti[id] = ent

	if( pev ( ent, pev_euser4 ) == 1)
	{
		Server_Menu(id)
	}
}


public Server_Menu(id)
{
	new name[32]
	get_user_name(id, name, 31)
	
	
	//new status_obgreid[33]
	 
	
	static menu[650], iLen
	iLen = 0
		iLen = formatex(menu[iLen],	charsmax(menu)	-	iLen,	"%L",id,"MENU", get_pcvar_num(g_iCvar[8]));
	{
		iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L", id, "MENU_1")
		keys |= MENU_KEY_1
	}
	{
		iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L", id, "MENU_2")
		keys |= MENU_KEY_2
	}
	iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L", id, "MENU_OF")
	keys |= MENU_KEY_0
	
	show_menu(id, keys, menu, -1, "Menu_1");
	return PLUGIN_HANDLED
}
public func_menu(id, key)
{
	switch(key)
	{
		case 0: 
		{
			if(cs_get_user_money( id ) >= get_pcvar_num(g_iCvar[8]))
			{
				cs_set_user_money( id, cs_get_user_money( id ) - get_pcvar_num(g_iCvar[8]) )
				set_pev( g_IDEniti[id], pev_euser4, 2 ); // уровень
				set_anim( g_IDEniti[id], 0)
				
				engfunc(EngFunc_SetSize, g_IDEniti[id], Float:{ -8.0, -8.0, -4.0 }, Float:{ 8.0, 8.0, 84.0 })
			}
			else
			{
				ColorChat(id,BLUE,"%L", id, "LF_ZAPRET", get_pcvar_num(g_iCvar[8]))
			}
		}
		case 1:
		{
		}
	}
}

public plugin_cfg()
{
	g_Entity_Mine = engfunc(EngFunc_AllocString, "func_breakable")
	
	new file[128]; get_localinfo("amxx_configsdir",file,63)
	format(file, 127, "%s/nova/laserfence.cfg", file)
	if(file_exists(file)) server_cmd("exec %s", file), server_exec()
}

public clcmd_setlaser_plus(id)
{
	if(!is_user_alive(id)) return PLUGIN_HANDLED
		
	new target, body
	get_user_aiming(id, target, body, 64)
	
	static ClassName[32]
	pev(target, pev_classname, ClassName, charsmax(ClassName))
	if (equal(ClassName, "Laser_Fence")) 
	{
		if(fm_cs_get_user_team(id)!=pev(target, pev_iuser1)) 
			return PLUGIN_HANDLED
		
		g_rotating[id]=1
		g_iMine[id]=target
		
		if(get_pcvar_num(g_iCvar[4]))
		{
			switch(pev(target, pev_iuser1))
			{
				case 1: fm_set_rendering(target,kRenderFxGlowShell,200,10,10,kRenderTransAdd,150)
				case 2: fm_set_rendering(target,kRenderFxGlowShell,10,10,200,kRenderTransAdd,150)
			}
		} else{
			fm_set_rendering(target, kRenderFxNone, 255, 255, 255, kRenderTransAdd, 200)
		}
		
		return PLUGIN_HANDLED
	}
	
	if(g_iCountMines[id])
	{
		ColorChat(id,BLUE,"%L", id, "LF_ZAPRET_2")
		return PLUGIN_HANDLED
	}
		
	if(cs_get_user_money( id ) < get_pcvar_num(g_iCvar[5]))
	{
		ColorChat(id,BLUE,"%L", id, "LF_ZAPRET", get_pcvar_num(g_iCvar[5]))
		return PLUGIN_HANDLED
	}
	
		
	create(id)
	g_bSettingMine[id]=true
	
	message_begin(MSG_ONE, 108, _, id)
	write_byte(1)
	write_byte(0)
	message_end()
	
	set_task(1.05, "Task_Spawn_Mine", id+777)
	
	return PLUGIN_HANDLED
}

public Task_Spawn_Mine(taskid)
{
	new id=taskid-777
	
	cs_set_user_money( id, cs_get_user_money( id ) - get_pcvar_num(g_iCvar[5]) )
	
	new i_Ent=g_iMine[id]
	
	if(get_pcvar_num(g_iCvar[4]))
	{
		switch(pev(i_Ent, pev_iuser1))
		{
			case 1: fm_set_rendering(i_Ent,kRenderFxGlowShell,200,50,50,kRenderNormal,5)
			case 2: fm_set_rendering(i_Ent,kRenderFxGlowShell,50,50,200,kRenderNormal,5)
		}
	} else{
		fm_set_rendering(i_Ent)
	}
	
	emit_sound(i_Ent, CHAN_VOICE, Mine_Sound_Placed, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	emit_sound(i_Ent, CHAN_BODY , Mine_Sound_Loading, 0.2, ATTN_NORM, 0, PITCH_NORM)
	
	g_bSettingMine[id]=false
		
	g_iCountMines[id]++
	
	set_pev(i_Ent, pev_nextthink, get_gametime()+1.0)
}

public clcmd_setlaser_minus(id)
{
	if(g_rotating[id]){
		g_rotating[id]=0
		
		new i_Ent=g_iMine[id]
		
		if(get_pcvar_num(g_iCvar[4]))
		{
			switch(pev(i_Ent, pev_iuser1))
			{
				case 1: fm_set_rendering(i_Ent,kRenderFxGlowShell,200,50,50,kRenderNormal,5)
				case 2: fm_set_rendering(i_Ent,kRenderFxGlowShell,50,50,200,kRenderNormal,5)
			}
		} else{
			fm_set_rendering(i_Ent)
		}
		
		return PLUGIN_HANDLED
	}
	if(!g_bSettingMine[id]) return PLUGIN_HANDLED
	
	g_bSettingMine[id]=false
	
	remove_task(id+777)
	
	new i_Ent=g_iMine[id]
	
	engfunc(EngFunc_RemoveEntity, i_Ent)
	
	message_begin(MSG_ONE, 108, _, id)
	write_byte(0)
	write_byte(0)
	message_end()
	
	return PLUGIN_HANDLED
}

public client_putinserver(id)
{
	set_task(1.0, "Task_Informer", id+666)
}

public Task_Informer(taskid)
{
	new id=taskid-666
	
	set_task(1.0, "Task_Informer", taskid)
	
	if(!is_user_alive(id))return
	
	new target, body
	get_user_aiming(id, target, body, 128)
	
	static ClassName[32]
	pev(target, pev_classname, ClassName, charsmax(ClassName))
	if (equal(ClassName, "Laser_Fence")) 
	{
		if(fm_cs_get_user_team(id)!=pev(target, pev_iuser1)) return
		
		new Float:Health
		pev(target, pev_health, Health)
		new Name[32]
		get_user_name(pev(target, pev_iuser2),Name,31)
		
		set_dhudmessage(200, 50, 50, -1.0, 0.60, 0, 0.0, 1.0, 0.01, 0.01)
		show_dhudmessage(id, "%L", id, "LF_DHUD_INF", Name, pev(target, pev_iuser3),pev ( target, pev_euser4 ), floatround(Health), get_pcvar_num(g_iCvar[1]))
	}
}

public ham_killed_post(id)
{
	if(g_iCountMines[id]>0)
	{
		Cycle_delete_mines(id)
	}
}

public client_disconnect(id)
{
	if(g_iCountMines[id]>0)
	{
		Cycle_delete_mines(id)
	}
}

public delete_lf(id)
{
	if(g_iCountMines[id]>0)
	{
		Cycle_delete_mines(id)
	}
}

public fm_cmdstart(id, uc_handle, seed) {
	if(!is_user_alive(id)) return
	if(g_fTime[id]>get_gametime()) return
	
	new buttons = get_uc(uc_handle,UC_Buttons)
	
	if(buttons & IN_USE)
	{
		new target, body
		get_user_aiming(id, target, body, 128)
		
		static ClassName[32]
		pev(target, pev_classname, ClassName, charsmax(ClassName))
		if (equal(ClassName, "Laser_Fence")) 
		{
			if(fm_cs_get_user_team(id)!=pev(target, pev_iuser1)) return
			
			g_fTime[id]=get_gametime()+0.2
						
			new Float:Health
			pev(target, pev_health, Health)
			
			new Float:Max=get_pcvar_float(g_iCvar[1]) 
			
			if(Health>=Max)return
			
			//new iTime
			//new Float:iHpTime=Health/500.0  
			
			//iTime=4 - floatround(iHpTime) 
			
			g_fTime2[id]=get_gametime()+0.3
			
			if(Health+25.0>Max){
				Health=Max
				if(pev(target, pev_iuser2)==id) fChatColor(id, "!tYou have completely repaired your laser fence!")
				else{
					fChatColor(id, "!tYou have completely repaired your laser fence!")
					fChatColor(pev(target, pev_iuser2), "!tYour laser fence has been repaired! ")
				}
			}
			else Health+=25.0

			set_pev(target, pev_health, Health)
			
			}
	}
}
public fm_playerprethink(id)
{
	if(g_rotating[id])
	{
		new i_Ent=g_iMine[id]
		
		new Float:flOrigin[3], Float:flOrigin2[3]
		pev(id, pev_origin, flOrigin)
		pev(i_Ent, pev_origin, flOrigin2)
		
		new Float:flDistance = get_distance_f (flOrigin, flOrigin2)   
		
		if(flDistance>65.0){
			g_rotating[id]=0
			
			if(get_pcvar_num(g_iCvar[4]))
			{
				switch(pev(i_Ent, pev_iuser1))
				{
					case 1: fm_set_rendering(i_Ent,kRenderFxGlowShell,200,50,50,kRenderNormal,5)
					case 2: fm_set_rendering(i_Ent,kRenderFxGlowShell,50,50,200,kRenderNormal,5)
				}
			} else{
				fm_set_rendering(i_Ent)
			}
			return
		}

		new Float:angles[3]
		pev(i_Ent,pev_angles,angles)
		
		angles[1]+=0.25
		
		if( pev ( i_Ent, pev_euser4 ) == 1)
		{
			set_anim(i_Ent, 1)
		}
		if( pev ( i_Ent, pev_euser4 ) == 2)
		{
			set_anim(i_Ent, 6)
		}
		
		set_pev(i_Ent,pev_angles,angles)
	}
	
	if(!g_bSettingMine[id]) return
	
	new i_Ent=g_iMine[id]
	
	new Float:vOrigin[3];
	new Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3], Float:vTraceEnd[3]
		
	pev(id, pev_origin, vOrigin)
	
	velocity_by_aim(id, 50, vTraceDirection)
	
	xs_vec_add(vTraceDirection, vOrigin, vTraceEnd)

	engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0)
	
	get_tr2(0, TR_vecEndPos, vTraceEnd)
	
	new Float:TrAc[3]
	TrAc[0]=vTraceEnd[0]
	TrAc[1]=vTraceEnd[1]
	TrAc[2]=-1000.0
	engfunc(EngFunc_TraceLine, vTraceEnd, TrAc, DONT_IGNORE_MONSTERS, id, 0)
	
	new Float:fFraction
	get_tr2(0, TR_flFraction, fFraction)

	if(fFraction < 1.0)
	{
		get_tr2(0, TR_vecEndPos, vTraceEnd);
		get_tr2(0, TR_vecPlaneNormal, vNormal);
	} else {
		clcmd_setlaser_minus(id)
		return
	}
	
	if(pev(i_Ent, pev_waterlevel)==2 || (pev(i_Ent, pev_flags)&FL_INWATER)){
		clcmd_setlaser_minus(id)
		return
	}

	xs_vec_add(vTraceEnd, vNormal, vNewOrigin)
	engfunc(EngFunc_SetOrigin, i_Ent, vNewOrigin)
	
	new Float:angles[3]
	pev(id,pev_angles,angles)
	angles[0]=90.0
	set_pev(i_Ent,pev_angles,angles)	
}

public create(id)
{
	new i_Ent = engfunc(EngFunc_CreateNamedEntity,g_Entity_Mine)
	
	if(!i_Ent) return
	
	g_iMine[id]=i_Ent

	set_pev(i_Ent, pev_classname, "Laser_Fence")
	engfunc(EngFunc_SetModel, i_Ent, Mine_Model)
	
	set_pev(i_Ent, pev_solid, SOLID_NOT)
	set_pev(i_Ent, pev_movetype, MOVETYPE_FLY)
	
	set_pev( i_Ent, pev_euser4, 1 ); // уровень
	
	engfunc(EngFunc_SetSize, i_Ent, Float:{ -8.0, -8.0, -4.0 }, Float:{ 8.0, 8.0, 35.0 })
	
	fm_set_rendering(i_Ent, kRenderFxNone, 255, 255, 255, kRenderTransAdd, 200)

	set_pev(i_Ent, pev_takedamage, DAMAGE_NO)
	
	set_pev(i_Ent, pev_iuser1, fm_cs_get_user_team(id))
	
	set_pev(i_Ent, pev_health, get_pcvar_float(g_iCvar[1]))
	
	set_pev(i_Ent, pev_iuser2, id)
	
	set_anim(i_Ent, 1)
	
	set_pdata_int(i_Ent, 36, 6, 4)
}

stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
	static Float:color[3]
	color[0] = float(r)
	color[1] = float(g)
	color[2] = float(b)
	
	set_pev(entity, pev_renderfx, fx)
	set_pev(entity, pev_rendercolor, color)
	set_pev(entity, pev_rendermode, render)
	set_pev(entity, pev_renderamt, float(amount))
}

public think_laser_mine(i_Ent)
{
	if(!pev_valid(i_Ent)) return
	
	static Float:vOrigin[3]
	pev(i_Ent, pev_origin, vOrigin)
	
	if(pev(i_Ent, pev_takedamage)== DAMAGE_NO)
	{
		new victim = -1, g_counts = 0
		while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, vOrigin, 12.0)) != 0)
		{
			if(!is_user_connected(victim)||!is_user_alive(victim))continue
			g_counts++
		}
		if(g_counts)
		{
			set_pev(i_Ent, pev_nextthink, get_gametime()+0.3)
			return
		}
		emit_sound(i_Ent, CHAN_VOICE, Mine_Sound_Activate, 0.5, ATTN_NORM, 1, 75);
		set_pev(i_Ent, pev_solid, SOLID_BBOX)
		set_pev(i_Ent, pev_takedamage, DAMAGE_YES)
		set_pev(i_Ent, pev_nextthink, get_gametime()+0.1)
		return
	}
	
	new Float:HP
	pev(i_Ent, pev_health, HP)
	if(HP<=200.0 && pev ( i_Ent, pev_euser4 ) == 2){
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
		write_byte(TE_SMOKE)
		engfunc(EngFunc_WriteCoord, vOrigin[0]+random_float(-8.0, 8.0))
		engfunc(EngFunc_WriteCoord, vOrigin[1]+random_float(-8.0, 8.0))
		engfunc(EngFunc_WriteCoord, vOrigin[2]+random_float(70.0, 80.0))
		write_short(g_iSPR_Smoke)
		write_byte(random_num(3,7))
		write_byte(30)
		message_end()	
	}
	
	new Float:vTracedBeamEnd[3]
	pev(i_Ent,pev_angles,vTracedBeamEnd)
	
	new Float:vForward[3], Float:vRight[3], Float:vUp[3]
	
	angle_vector(vTracedBeamEnd,ANGLEVECTOR_FORWARD,vForward) 
	angle_vector(vTracedBeamEnd,ANGLEVECTOR_RIGHT,vRight)
	angle_vector(vTracedBeamEnd,ANGLEVECTOR_UP,vUp)
	
	vTracedBeamEnd[0]=vOrigin[0]+vForward[0]*500.0+vRight[0]+vUp[0]*(-64000.0)
	vTracedBeamEnd[1]=vOrigin[1]+vForward[1]*500.0+vRight[1]+vUp[1]*(-64000.0)
	vTracedBeamEnd[2]=vOrigin[2]+vForward[2]*500.0+vRight[2]+vUp[2]*(-64000.0)
	
	if( pev ( i_Ent, pev_euser4 ) == 2)
	{
		set_anim(i_Ent, 6)
	}
	
	if( pev ( i_Ent, pev_euser4 ) == 1)
	{
		set_anim(i_Ent, 1)
	}
	
	if( pev ( i_Ent, pev_euser4 ) == 1)
	{
		vOrigin[2]+=10.3
		vTracedBeamEnd[2]-=11.0
		laserFunc(i_Ent, vOrigin, vTracedBeamEnd)
	
		vOrigin[2]+=10.0
		vTracedBeamEnd[2]+=10.0
		laserFunc(i_Ent, vOrigin, vTracedBeamEnd)
	
		vOrigin[2]+=10.0
		vTracedBeamEnd[2]+=10.0
		laserFunc(i_Ent, vOrigin, vTracedBeamEnd)
	
		vOrigin[2]+=10.0
		vTracedBeamEnd[2]+=10.0
		laserFunc(i_Ent, vOrigin, vTracedBeamEnd)

		vOrigin[2]+=10.0
		vTracedBeamEnd[2]+=10.0
		laserFunc(i_Ent, vOrigin, vTracedBeamEnd)
	}
	
	if( pev ( i_Ent, pev_euser4 ) == 2)
	{
		vOrigin[2]+=14.3
		vTracedBeamEnd[2]-=15.0
		laserFunc(i_Ent, vOrigin, vTracedBeamEnd)
	
		vOrigin[2]+=18.0
		vTracedBeamEnd[2]+=18.0
		laserFunc(i_Ent, vOrigin, vTracedBeamEnd)
	
		vOrigin[2]+=18.0
		vTracedBeamEnd[2]+=18.0
		laserFunc(i_Ent, vOrigin, vTracedBeamEnd)
	
		vOrigin[2]+=18.0
		vTracedBeamEnd[2]+=18.0
		laserFunc(i_Ent, vOrigin, vTracedBeamEnd)

		vOrigin[2]+=18.0
		vTracedBeamEnd[2]+=18.0
		laserFunc(i_Ent, vOrigin, vTracedBeamEnd)
	}
	
	set_pev(i_Ent, pev_nextthink, get_gametime()+0.1)
}

public laserFunc(i_Ent, const Float:vOrigin[3], const Float:vTracedBeamEnd[3])
{
	new ptr = create_tr2()
	engfunc(EngFunc_TraceLine, vOrigin, vTracedBeamEnd, DONT_IGNORE_MONSTERS , i_Ent, ptr)
	
	static Float:vTracedBeamEnd1[3]
	get_tr2(ptr, TR_vecEndPos, vTracedBeamEnd1)
	
	static iHit, Float:fFraction;
	get_tr2(ptr, TR_flFraction, fFraction);
	iHit = get_tr2(ptr, TR_pHit);
	
	if(fFraction < 1.0)
	{
		if(pev_valid(iHit)&&is_user_alive(iHit)&&fm_cs_get_user_team(iHit)!=pev(i_Ent, pev_iuser1))
		{
			emit_sound(iHit, CHAN_WEAPON, Mine_Sound_Hit, 1.0, ATTN_NORM, 0, PITCH_NORM)
			new Float:Health
			pev(iHit, pev_health, Health)
			if(Health>get_pcvar_float(g_iCvar[0])) {
				ExecuteHamB(Ham_TakeDamage, iHit, i_Ent, pev(i_Ent, pev_iuser2), get_pcvar_float(g_iCvar[0]), DMG_BLAST)
			}else {
				ExecuteHamB(Ham_TakeDamage, iHit, i_Ent, pev(i_Ent, pev_iuser2), get_pcvar_float(g_iCvar[0]), DMG_BULLET)
				set_pev(i_Ent, pev_iuser3, pev(i_Ent, pev_iuser3)+1)
			}
		}
	}
	
	DrawLaser(i_Ent, vOrigin, vTracedBeamEnd1)
}

DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3])
{
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte(TE_BEAMPOINTS)
	engfunc(EngFunc_WriteCoord,v_Origin[0])
	engfunc(EngFunc_WriteCoord,v_Origin[1])
	engfunc(EngFunc_WriteCoord,v_Origin[2])
	engfunc(EngFunc_WriteCoord,v_EndOrigin[0])
	engfunc(EngFunc_WriteCoord,v_EndOrigin[1])
	engfunc(EngFunc_WriteCoord,v_EndOrigin[2])
	switch(pev(i_Ent, pev_iuser1))
	{
		case 1: write_short(g_iBeam_T)
		case 2: write_short(g_iBeam_CT)
	}
	write_byte(0);
	write_byte(0);
	write_byte(1)
	if( pev ( i_Ent, pev_euser4 ) == 1)
	{
		write_byte(10)
	}
	else
	if( pev ( i_Ent, pev_euser4 ) == 2)
	{
		write_byte(15)
	}
	write_byte(0)
	write_byte(255)
	write_byte(255)
	write_byte(255)
	write_byte(255)
	write_byte(255)
	message_end()
	
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
	write_byte(TE_SPARKS)
	engfunc(EngFunc_WriteCoord,v_EndOrigin[0])
	engfunc(EngFunc_WriteCoord,v_EndOrigin[1])
	engfunc(EngFunc_WriteCoord,v_EndOrigin[2])
	message_end()
}

stock fm_cs_get_user_team(id)
{
	if (pev_valid(id) != 2) return 0
	
	return get_pdata_int(id, 114, 5)
}

stock Cycle_delete_mines(i_Owner)
{
	new iEnt = 33
	while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", "Laser_Fence")))
	{
		if(pev(iEnt, pev_iuser2) != i_Owner) continue

		engfunc(EngFunc_RemoveEntity, iEnt)
	}
	g_iCountMines[i_Owner]=0
}

public Laser_TakeDamage(victim, inflictor, attacker, Float:damage, bit_Damage)
{
	if(!pev_valid(victim)) return HAM_IGNORED
	
	static ClassName[32]
	pev(victim, pev_classname, ClassName, charsmax(ClassName))
	if (equal(ClassName, "Laser_Fence")) 
	{
		if(!is_user_connected(attacker)||(fm_cs_get_user_team(attacker)==pev(victim, pev_iuser1)&&attacker!=pev(victim, pev_iuser2))) 
			return HAM_SUPERCEDE
			
		new Float:g_Health
		pev(victim, pev_health, g_Health)
		if (g_Health <= damage)
		{
						
			fChatColor(pev(victim, pev_iuser2), "!tВаша стена разрушена")
			
			g_iCountMines[pev(victim, pev_iuser2)]--
			
			CreateExplosion(victim)
			
			engfunc(EngFunc_RemoveEntity, victim)
			
			return HAM_SUPERCEDE
		}
	}
	return HAM_IGNORED
}

CreateExplosion(iCurrent)
{
	new Float:vOrigin[3]
	pev(iCurrent,pev_origin,vOrigin)

	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(99)
	write_short(iCurrent)
	message_end()
	
	if(get_pcvar_num(g_iCvar[3])==2){
		message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
		write_byte(TE_SPRITETRAIL) // Throws a shower of sprites or models
		engfunc(EngFunc_WriteCoord, vOrigin[ 0 ]) // start pos
		engfunc(EngFunc_WriteCoord, vOrigin[ 1 ])
		engfunc(EngFunc_WriteCoord, vOrigin[ 2 ])
		engfunc(EngFunc_WriteCoord, vOrigin[ 0 ]) // velocity
		engfunc(EngFunc_WriteCoord, vOrigin[ 1 ])
		engfunc(EngFunc_WriteCoord, vOrigin[ 2 ]+6.0)
		write_short(g_iSPR_Explo2) // spr
		write_byte(random_num(20,30)) // (count)
		write_byte(10) // (life in 0.1's)
		write_byte(1) // byte (scale in 0.1's)
		write_byte(30) // (velocity along vector in 10's)
		write_byte(20) // (randomness of velocity in 10's)
		message_end() 
		
		engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0)
		write_byte(TE_EXPLOSION)
		engfunc(EngFunc_WriteCoord,vOrigin[0])
		engfunc(EngFunc_WriteCoord,vOrigin[1])
		engfunc(EngFunc_WriteCoord,vOrigin[2])
		write_short(g_iSPR_Explo)
		write_byte(30)
		write_byte(15)
		write_byte(0)
		message_end()
	} else if(get_pcvar_num(g_iCvar[3])==1){
		message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
		write_byte(TE_SPRITETRAIL) // Throws a shower of sprites or models
		engfunc(EngFunc_WriteCoord, vOrigin[ 0 ]) // start pos
		engfunc(EngFunc_WriteCoord, vOrigin[ 1 ])
		engfunc(EngFunc_WriteCoord, vOrigin[ 2 ])
		engfunc(EngFunc_WriteCoord, vOrigin[ 0 ]) // velocity
		engfunc(EngFunc_WriteCoord, vOrigin[ 1 ])
		engfunc(EngFunc_WriteCoord, vOrigin[ 2 ]+6.0)
		write_short(g_iSPR_Explo2) // spr
		write_byte(random_num(20,30)) // (count)
		write_byte(10) // (life in 0.1's)
		write_byte(1) // byte (scale in 0.1's)
		write_byte(30) // (velocity along vector in 10's)
		write_byte(20) // (randomness of velocity in 10's)
		message_end() 
	} else {		
		engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0)
		write_byte(TE_EXPLOSION)
		engfunc(EngFunc_WriteCoord,vOrigin[0])
		engfunc(EngFunc_WriteCoord,vOrigin[1])
		engfunc(EngFunc_WriteCoord,vOrigin[2])
		write_short(g_iSPR_Explo)
		write_byte(30)
		write_byte(15)
		write_byte(0)
		message_end()
	}
}


stock fChatColor(const idUser, const input[], any:...)
{
    new count = 1, arrPlayers[32];
	new szMsgText[256];
    vformat(szMsgText, charsmax(szMsgText), input, 3);
    
    replace_all(szMsgText, charsmax(szMsgText), "!g", "^4");
    replace_all(szMsgText, charsmax(szMsgText), "!y", "^1");
    replace_all(szMsgText, charsmax(szMsgText), "!t", "^3");
    
    if (idUser) 
		arrPlayers[0] = idUser; 
	else 
		get_players(arrPlayers, count, "ch");
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(arrPlayers[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, arrPlayers[i]);
                write_byte(arrPlayers[i]);
                write_string(szMsgText);
                message_end();
            }
        } 
    }
} 


stock set_anim(ent, sequence) 
{
	set_pev(ent, pev_sequence, sequence)
	set_pev(ent, pev_animtime, halflife_time())
	set_pev(ent, pev_framerate, 1.0)
}
Pak army is offline
Pak army
Junior Member
Join Date: Feb 2021
Old 02-26-2021 , 05:55   Re: help laser
Reply With Quote #2

someone help me please
Pak army is offline
Pak army
Junior Member
Join Date: Feb 2021
Old 03-01-2021 , 07:09   Re: help laser
Reply With Quote #3

please helpp
Pak army is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 07:09.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode