←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Totem - piorun moc

Zablokowany

  • +
  • -
KariiO - zdjęcie KariiO 18.04.2011

Witam mam pewną moc w zasadzie to piorun ale chciałbym go umieścić w totem sytuacja by wyglądała tak(totem zrobiony już[brakmocy]) że wchodzimy na obszar totemu(on wytwarza taki okrąg...) i jeżeli tam się znajdziemy to ma robić to:
new target = UTIL_FindNearestOpponent(id,600)

	if (target == -1) 
	return PLUGIN_HANDLED
	
	new Hit[3]
	get_user_origin(target,Hit)

	//Create Lightning
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(1) // TE_BEAMENTPOINT
	write_short(id)
	write_coord(Hit[0])
	write_coord(Hit[1])
	write_coord(Hit[2])
	write_short(sprite_lgt)
	write_byte(0)
	write_byte(1)
	write_byte(3)
	write_byte(10)	//WITD
	write_byte(60)
	write_byte(255) //r
	write_byte(0)   //g
	write_byte(0)   //b
	write_byte(100)	//BRIGT
	write_byte(0)
	message_end()
	
	//dalej bierze HP...
Czyli od totemu do gracza czerwony promień który bierze ustaloną ilość HP...Pójdzie to ? Jak nie to co mam źle?
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 18.04.2011

A czemu miało by nie pójść? Najlepiej jakbyś pokazał całą tą funkcję razem z tym wycinkiem kodu, bo przecież nikt nie jest jasnowidzem, żeby wiedzieć czy to zadziała.
Odpowiedz

GoldeN - zdjęcie GoldeN 19.04.2011

Wiadomość która pobiera koordy bytu i koordy id gracza, a nie ten co podałeś.
Użytkownik GoldeN edytował ten post 19.04.2011 15:36
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 19.04.2011

Całość wygląda tak:
public item_piorun(id)
{
	if (used_item[id])
	{
		hudmsg(id,2.0,"Totemu mozesz uzyc raz na runde!")
		return PLUGIN_CONTINUE
	}
	
	used_item[id] = true
	
	new origin[3]
	pev(id,pev_origin,origin)
	
	new ent = Spawn_Ent("info_target")
	set_pev(ent,pev_classname,"Effect_Piorun_Totem")
	set_pev(ent,pev_owner,id)
	set_pev(ent,pev_solid,SOLID_TRIGGER)
	set_pev(ent,pev_origin,origin)
	set_pev(ent,pev_ltime, halflife_time() + 15 + 0.1)
	
	engfunc(EngFunc_SetModel, ent, "addons/amxmodx/diablo/totem_heal.mdl")  	
	set_rendering ( ent, kRenderFxGlowShell, 0,100,255, kRenderFxNone, 255 ) 	
	engfunc(EngFunc_DropToFloor,ent)
	
	set_pev(ent,pev_nextthink, halflife_time() + 0.1)
	
	return PLUGIN_CONTINUE	
}

public Effect_Piorun_Totem_Think(ent)
{
	new id = pev(ent,pev_owner)
	new totem_dist = 300
	
	//We have emitted beam. Apply effect (this is delayed)
	if (pev(ent,pev_euser2) == 1)
	{		
		new Float:forigin[3], origin[3]
		pev(ent,pev_origin,forigin)	
		FVecIVec(forigin,origin)
		
		//Find people near and damage them
		new entlist[513]
		new numfound = find_sphere_class(0,"player",totem_dist+0.0,entlist,512,forigin)		

		for (new i=0; i < numfound; i++)
		{		
			new pid = entlist[i]
			
			if (get_user_team(pid) == get_user_team(id))
			continue
			
			if (is_user_alive(pid)){
			zadajobrazenia(pid)
			}			
		}
		
		set_pev(ent,pev_euser2,0)
		set_pev(ent,pev_nextthink, halflife_time() + 1.5)
		
		return PLUGIN_CONTINUE
	}
	
	//Entity should be destroyed because livetime is over
	if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id))
	{
		remove_entity(ent)
		return PLUGIN_CONTINUE
	}
	
	//If this object is almost dead, apply some render to make it fade out
	if (pev(ent,pev_ltime)-2.0 < halflife_time())
	set_rendering ( ent, kRenderFxNone, 255,255,255, kRenderTransAlpha, 100 ) 
	
	new Float:forigin[3], origin[3]
	pev(ent,pev_origin,forigin)	
	FVecIVec(forigin,origin)
	
	//Find people near and give them health
	message_begin( MSG_BROADCAST, SVC_TEMPENTITY, origin );
	write_byte( TE_BEAMCYLINDER );
	write_coord( origin[0] );
	write_coord( origin[1] );
	write_coord( origin[2] );
	write_coord( origin[0] );
	write_coord( origin[1] + totem_dist );
	write_coord( origin[2] + totem_dist );
	write_short( sprite_white );
	write_byte( 0 ); // startframe
	write_byte( 0 ); // framerate
	write_byte( 10 ); // life
	write_byte( 10 ); // width
	write_byte( 255 ); // noise
	write_byte( 0 ); // r, g, b
	write_byte( 100 ); // r, g, b
	write_byte( 255 ); // r, g, b
	write_byte( 128 ); // brightness
	write_byte( 5 ); // speed
	message_end();
	
	set_pev(ent,pev_euser2,1)
	set_pev(ent,pev_nextthink, halflife_time() + 0.5)
	
	
	return PLUGIN_CONTINUE
	
}

public zadajobrazenia(id)
{	
	new Hit[3]
	get_user_origin(target,Hit)

	//Create Lightning
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(1) // TE_BEAMENTPOINT
	write_short(id)
	write_coord(Hit[0])
	write_coord(Hit[1])
	write_coord(Hit[2])
	write_short(sprite_lgt)
	write_byte(0)
	write_byte(1)
	write_byte(3)
	write_byte(10)	//WITD
	write_byte(60)
	write_byte(255) //r
	write_byte(0)   //g
	write_byte(0)   //b
	write_byte(100)	//BRIGT
	write_byte(0)
	message_end()
	
	//dalej bierze HP...
}
Odpowiedz

GoldeN - zdjęcie GoldeN 19.04.2011

Ta, ustawiłeś origin obrywającego i start na obrywającym (W sumie to nawet nie na obrywającym), brawo. Dobra, ja nie zamierzam się w tym temacie wypowiadać.. Chyba sam wiesz czemu.
Użytkownik GoldeN edytował ten post 19.04.2011 18:18
Odpowiedz
Zablokowany