←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Jak zrobic samemu totem

Locked

Tomi's Photo Tomi 08.04.2010

Witam, Chcialbym Dostać jakis poradnik, wskazówki jak Zrobić swojego Totema. Pomoglibyście :)? Przydało by się to dla nowych
Quote

  • +
  • -
G[o]Q's Photo G[o]Q 08.04.2010

masz 2 przyklady w Sma malo :?:

naucz sie wymyslac swoje pomysly i wprowadzac je w zycie bo znajac je twoj server bedzie nie oryginalny :/
Quote

Tomi's Photo Tomi 08.04.2010

Goq Chcialbym na razie sie nauczyć podstaw.
A do Totema jest pełno "Linijek"


wystarczy przerobic to?
public item_totemheal(id)
{
	if (used_item[id])
	{
		hudmsg(id,2.0,"Leczacy Totem 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_Healing_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() + 7 + 0.1)
	
	engfunc(EngFunc_SetModel, ent, "addons/amxmodx/diablo/totem_heal.mdl")  	
	set_rendering ( ent, kRenderFxGlowShell, 255,0,0, kRenderFxNone, 255 ) 	
	engfunc(EngFunc_DropToFloor,ent)
	
	set_pev(ent,pev_nextthink, halflife_time() + 0.1)
	
	return PLUGIN_CONTINUE	
}

public Effect_Healing_Totem_Think(ent)
{
	new id = pev(ent,pev_owner)
	new totem_dist = 300
	new amount_healed = player_b_heal[id]
	
	//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)) change_health(pid,amount_healed,0,"")			
		}
		
		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( 255 ); // r, g, b
	write_byte( 100 ); // r, g, b
	write_byte( 100 ); // 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

}


Edited by backspace, 08.04.2010 17:15.
Quote

  • +
  • -
G[o]Q's Photo G[o]Q 08.04.2010

mowisz ze chcesz przyklad to ci odpowiadam masz 2 przyklady w sma a pozatym jak nie ogarniasz podstaw to nie bierz sie za cos co ich wymaga
Quote

Tomi's Photo Tomi 08.04.2010

Przepięknie Motywujesz Ludzi do działania. Nie pytam Ciebie jak mam sie zacząć uczyć tylko czy ktoś może Mi pomóc jak zrobić totem.
Quote

  • +
  • -
KoRnY's Photo KoRnY 08.04.2010

Ale taka jest prawda?
Teraz wszyscy wszystko kopiują.
Tak jak powiedział G[o]Q przykłady masz w kodzie.
Quote

Tomi's Photo Tomi 08.04.2010

To po kiego Ku.... h... jest te forum... proszę o pomoc w temacie Pytania
Ty KoRnY nie chce nic mówić ale tylko spamujesz lub powtarzasz po innych....
Ludzie chciałem wskazówki. To sie do mnie rzuca jeden z drugim
Quote

  • +
  • -
KoRnY's Photo KoRnY 08.04.2010

wystarczy przerobic to?

public item_totemheal(id)
{
	if (used_item[id])
	{
		hudmsg(id,2.0,"Leczacy Totem 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_Healing_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() + 7 + 0.1)
	
	engfunc(EngFunc_SetModel, ent, "addons/amxmodx/diablo/totem_heal.mdl")  	
	set_rendering ( ent, kRenderFxGlowShell, 255,0,0, kRenderFxNone, 255 ) 	
	engfunc(EngFunc_DropToFloor,ent)
	
	set_pev(ent,pev_nextthink, halflife_time() + 0.1)
	
	return PLUGIN_CONTINUE	
}

public Effect_Healing_Totem_Think(ent)
{
	new id = pev(ent,pev_owner)
	new totem_dist = 300
	new amount_healed = player_b_heal[id]
	
	//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)) change_health(pid,amount_healed,0,"")			
		}
		
		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( 255 ); // r, g, b
	write_byte( 100 ); // r, g, b
	write_byte( 100 ); // 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

}



Tak wystarczy to przerobić.
+ dodać ewentualny efekt którego w diablo nie ma
Quote

Tomi's Photo Tomi 08.04.2010

Dziekuje....
Quote

  • +
  • -
G[o]Q's Photo G[o]Q 08.04.2010

nie masz co dziekowac bo to i tak nie zadziala :P
Quote

Tomi's Photo Tomi 08.04.2010

Czemu niby : / To co to za pomoc skoro I tak to nie ma dzialac?
Quote

  • +
  • -
Vertricus's Photo Vertricus 08.04.2010

Kod totemu najlepiej skopiować pousuwać co zbędę i zrobić gotowa.
Dodać do check_magic wywołanie oraz register_think w plugin_init.
Wklejasz twój kod z totema funkcje nadajesz taką nazwę jak wywołanie z check_magic a classname na taki z register_think.
Kopiujesz kod thinka nazywając funkcję jak w register_think.
I tu właśnie w thinku będzie kod który będzie odpowiadać za to co dany totem robi.
Czyli tak Spawn -> wygląd, model, miejsce, latający, wyglądający jak paka czy też jak ta emotikonka :giggle:
a w thinku -> moc tj, piorun, leczenie, oślepianie, podrzucanie, bomba, czy zabijanie śmiechem.
Masz wskazówkę a właściwie mini tut ;| Moce możesz skopiować z zombie moda np. zamrożenie, edytując warunki pod diablo :blaga: :blaga: :blaga: :blaga: :blaga: :blaga: :blaga: :blaga:
Quote

Tomi's Photo Tomi 09.04.2010

Dzięki Wystarczyło mi takie coś : )
Quote

Adminek AMXX.PL's Photo Adminek AMXX.PL 09.04.2010

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Bo śnieg (Rozwiązany)

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Quote
Locked