←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Najechanie na byt

Nenczoks - zdjęcie Nenczoks 09.12.2011

Witam,

Jaka jest funkcja na to, aby po najechaniu celownikiem na byt, tu chodzi mi o pakę wykonywała się dana czynność? Nie mogę niestety zbytnio znaleźć w dokumentacji odnośnie bomby.
Użytkownik Nenczoks edytował ten post 09.12.2011 22:13
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 09.12.2011

get_user_aiming
najechanie na gracza możesz wykryć poprzez register_event statusvalue/statustext
Odpowiedz

Nenczoks - zdjęcie Nenczoks 09.12.2011

http://forums.allied...d.php?p=1419078 - a tutaj? Bo ja chciałem zrobić coś takiego, że celownikiem na bombę i wyświetli się tekst, hmm?
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 10.12.2011

Emp` podał kod w tamtym temacie
stock Float:get_user_aiming2( iPlayer, &id, &body=0, dist=9999 )
{
	new Float:vStart[3], Float:vEnd[3], Float:vReturn[3];
	GetOriginOutsidePlayer( iPlayer, vStart );
	velocity_by_aim( iPlayer, dist, vEnd );
	xs_vec_add( vStart, vEnd, vEnd );

	#if defined _engine_included
		id = trace_line(0, vStart, vEnd, vReturn);
		body = traceresult( TR_Hitgroup );
		return get_distance_f( vStart, vReturn );
	#else
		engfunc(EngFunc_TraceLine, vStart, vEnd, DONT_IGNORE_MONSTERS, 0, 0);
		id = get_tr2(0, TR_pHit);
		body = get_tr2(0, TR_iHitgroup);
		get_tr2(0, TR_vecEndPos, vReturn);
		return get_distance_f( vStart, vReturn );
	#endif
}

stock GetOriginOutsidePlayer( iPlayer, Float:vecReturn[ 3 ] )
{
	velocity_by_aim( iPlayer, 1, vecReturn );

	new Float:vAbsAim[3];
	vAbsAim[0] = floatabs( vecReturn[0] );
	vAbsAim[1] = floatabs( vecReturn[1] );
	vAbsAim[2] = floatabs( vecReturn[2] );

	new longest_axis;
	if( vAbsAim[1] > vAbsAim[0] && vAbsAim[1] > vAbsAim[2] )
		longest_axis = 1;
	else if( vAbsAim[2] > vAbsAim[0] && vAbsAim[2] > vAbsAim[1] )
		longest_axis = 2;

	new Float:box[3];
	pev( iPlayer, ( vecReturn[ longest_axis ] < 0.0 ) ? pev_mins : pev_maxs, box );

	xs_vec_mul_scalar( vecReturn, ( ( 1.0 + floatabs( box[ longest_axis ] ) ) / ( vAbsAim[ longest_axis ] ) ), vecReturn );

	new Float:vOrigin[3];
	pev( iPlayer, pev_origin, vOrigin );
	xs_vec_add( vecReturn, vOrigin, vecReturn );
}
Odpowiedz

Nenczoks - zdjęcie Nenczoks 10.12.2011

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <xs>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Nenczoks"


new const g_classname[] = "classname"

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

register_forward(FM_PlayerPreThink, "ltm_PreThink");
}

public ltm_PreThink(id)
{
new ent, body;
get_user_aiming2(id, ent, body);

new const c4 = engfunc(EngFunc_FindEntityByString, FM_NULLENT, g_classname, "weapon_c4")

if( ent == c4 )
{
get_user_aiming(id, ent, body);
set_hudmessage(255, 255, 0, -1.0, 0.62, 0, 6.0, 0.5);
show_hudmessage(id, "Test");
}

return FMRES_IGNORED;
}

stock Float:get_user_aiming2( iPlayer, &id, &body=0, dist=9999 )
{
new Float:vStart[3], Float:vEnd[3], Float:vReturn[3];
GetOriginOutsidePlayer( iPlayer, vStart );
velocity_by_aim( iPlayer, dist, vEnd );
xs_vec_add( vStart, vEnd, vEnd );

#if defined _engine_included
id = trace_line(0, vStart, vEnd, vReturn);
body = traceresult( TR_Hitgroup );
return get_distance_f( vStart, vReturn );
#else
engfunc(EngFunc_TraceLine, vStart, vEnd, DONT_IGNORE_MONSTERS, 0, 0);
id = get_tr2(0, TR_pHit);
body = get_tr2(0, TR_iHitgroup);
get_tr2(0, TR_vecEndPos, vReturn);
return get_distance_f( vStart, vReturn );
#endif
}

stock GetOriginOutsidePlayer( iPlayer, Float:vecReturn[ 3 ] )
{
velocity_by_aim( iPlayer, 1, vecReturn );

new Float:vAbsAim[3];
vAbsAim[0] = floatabs( vecReturn[0] );
vAbsAim[1] = floatabs( vecReturn[1] );
vAbsAim[2] = floatabs( vecReturn[2] );

new longest_axis;
if( vAbsAim[1] > vAbsAim[0] && vAbsAim[1] > vAbsAim[2] )
longest_axis = 1;
else if( vAbsAim[2] > vAbsAim[0] && vAbsAim[2] > vAbsAim[1] )
longest_axis = 2;

new Float:box[3];
pev( iPlayer, ( vecReturn[ longest_axis ] < 0.0 ) ? pev_mins : pev_maxs, box );

xs_vec_mul_scalar( vecReturn, ( ( 1.0 + floatabs( box[ longest_axis ] ) ) / ( vAbsAim[ longest_axis ] ) ), vecReturn );

new Float:vOrigin[3];
pev( iPlayer, pev_origin, vOrigin );
xs_vec_add( vecReturn, vOrigin, vecReturn );
}



i nie działa.
Użytkownik Nenczoks edytował ten post 10.12.2011 16:43
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 10.12.2011

jakieś logi masz ?
Odpowiedz

Nenczoks - zdjęcie Nenczoks 10.12.2011

Nie.
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 10.12.2011

Głupio spytam, włączyłeś moduły i masz xs ?
Odpowiedz

Kukol - zdjęcie Kukol 10.12.2011

Głupio spytam, włączyłeś moduły i masz xs ?


Moduły włączają się same, a gdyby nie miał xs to by nie skompilował. ;F
Odpowiedz

  • +
  • -
Gh0st - zdjęcie Gh0st 10.12.2011

Fili'emu chodziło o plik modules.ini ... czy tam masz odblokowane moduły
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 10.12.2011

Fili'emu chodziło o plik modules.ini ... czy tam masz odblokowane moduły

Dokładnie.
Odpowiedz

Nenczoks - zdjęcie Nenczoks 10.12.2011

A może to jest powód tego, że paka ma model choinki? A co do tego, dodałem do modules ini "xs" i nadal nie pokazuje po najechaniu na c4 "test". Czy ktoś może podjąć się zrobienia tego? Dla Was to proste :)
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 11.12.2011

xs to nie moduł

A może to jest powód tego, że paka ma model choinki

tak to też może mieć znaczenie jeśli ta choinka to odzielnny ent i ma nadane mins i maxs
Odpowiedz

Nenczoks - zdjęcie Nenczoks 16.12.2011

Sprawdziłem to, wyłączyłem plugin i niestety nadal nie pokazuje.

Hm?

Dalej czekam.
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 16.12.2011

a podłożona paka nie ma przypadkiem classname grenade
sprawdź za pomocą tego http://amxx.pl/topic...ine-entity-lab/
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 16.12.2011

weapon_c4 masz jak ją wyrzucisz na ziemie bodajże a jak jest podlozona to jest grenade i trzeba sprawdzić model najlepiej
Odpowiedz

  • +
  • -
Stachuu :D ?? - zdjęcie Stachuu :D ?? 17.12.2011

find_ent_by_model(-1, "grenade", "models/w_c4.mdl"))
)
Odpowiedz

Nenczoks - zdjęcie Nenczoks 17.12.2011

/* Plugin generated by AMXX-Studio*/

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <xs>
#include <engine>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Nenczoks"


new const g_classname[] = "classname"
new const g_c4[] = find_ent_by_model(-1, "grenade", "models/c14-cristmastree.mdl"))
//"weapon_c4"

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

register_forward(FM_PlayerPreThink, "ltm_PreThink");
}

public ltm_PreThink(id)
{
new ent, body;
get_user_aiming2(id, ent, body);

new const c4 = engfunc(EngFunc_FindEntityByString, FM_NULLENT, g_classname, g_c4) //if(find_ent_by_model(-1, "grenade", "models/c14-cristmastree.mdl"))

if( ent == c4 )//if(find_ent_by_model(-1, "grenade", "models/c14-cristmastree.mdl"))
{
get_user_aiming(id, ent, body);
set_hudmessage(255, 255, 0, -1.0, 0.62, 0, 6.0, 0.5);
show_hudmessage(id, "Test");
}
return FMRES_IGNORED;
}

stock Float:get_user_aiming2( iPlayer, &id, &body=0, dist=9999 )
{
new Float:vStart[3], Float:vEnd[3], Float:vReturn[3];
GetOriginOutsidePlayer( iPlayer, vStart );
velocity_by_aim( iPlayer, dist, vEnd );
xs_vec_add( vStart, vEnd, vEnd );

#if defined _engine_included
id = trace_line(0, vStart, vEnd, vReturn);
body = traceresult( TR_Hitgroup );
return get_distance_f( vStart, vReturn );
#else
engfunc(EngFunc_TraceLine, vStart, vEnd, DONT_IGNORE_MONSTERS, 0, 0);
id = get_tr2(0, TR_pHit);
body = get_tr2(0, TR_iHitgroup);
get_tr2(0, TR_vecEndPos, vReturn);
return get_distance_f( vStart, vReturn );
#endif
}

stock GetOriginOutsidePlayer( iPlayer, Float:vecReturn[ 3 ] )
{
velocity_by_aim( iPlayer, 1, vecReturn );

new Float:vAbsAim[3];
vAbsAim[0] = floatabs( vecReturn[0] );
vAbsAim[1] = floatabs( vecReturn[1] );
vAbsAim[2] = floatabs( vecReturn[2] );

new longest_axis;
if( vAbsAim[1] > vAbsAim[0] && vAbsAim[1] > vAbsAim[2] )
longest_axis = 1;
else if( vAbsAim[2] > vAbsAim[0] && vAbsAim[2] > vAbsAim[1] )
longest_axis = 2;

new Float:box[3];
pev( iPlayer, ( vecReturn[ longest_axis ] < 0.0 ) ? pev_mins : pev_maxs, box );

xs_vec_mul_scalar( vecReturn, ( ( 1.0 + floatabs( box[ longest_axis ] ) ) / ( vAbsAim[ longest_axis ] ) ), vecReturn );

new Float:vOrigin[3];
pev( iPlayer, pev_origin, vOrigin );
xs_vec_add( vecReturn, vOrigin, vecReturn );
}


Popatrz gdzie to wstawialem, nadal nie działa.
@DarkGL - nie znam tego kodowania.
Użytkownik Nenczoks edytował ten post 17.12.2011 16:43
Odpowiedz

  • +
  • -
Stachuu :D ?? - zdjęcie Stachuu :D ?? 17.12.2011

daj moze

new c4
    if ((c4 = find_ent_by_model(-1, "grenade", g_c4)))

zamiast


new const c4 = engfunc(EngFunc_FindEntityByString, FM_NULLENT, g_classname, g_c4) //if(find_ent_by_model(-1, "grenade", "models/c14-cristmastree.mdl"))


Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 17.12.2011

nie znam tego kodowania.

???:(

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <xs>
#include <engine>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Nenczoks"


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_forward(FM_PlayerPreThink, "ltm_PreThink");
}

public ltm_PreThink(id)
{
	new ent, body;
	get_user_aiming2(id, ent, body);
	
	new const c4 = find_ent_by_model(-1, "grenade", "models/c14-cristmastree.mdl");
	
	if( ent && c4 && ent == c4 ){
		get_user_aiming(id, ent, body);
		set_hudmessage(255, 255, 0, -1.0, 0.62, 0, 6.0, 0.5);
		show_hudmessage(id, "Test");
	}
	return FMRES_IGNORED;
}

stock Float:get_user_aiming2( iPlayer, &id, &body=0, dist=9999 )
{
	new Float:vStart[3], Float:vEnd[3], Float:vReturn[3];
	GetOriginOutsidePlayer( iPlayer, vStart );
	velocity_by_aim( iPlayer, dist, vEnd );
	xs_vec_add( vStart, vEnd, vEnd );
	
	#if defined _engine_included
	id = trace_line(0, vStart, vEnd, vReturn);
	body = traceresult( TR_Hitgroup );
	return get_distance_f( vStart, vReturn );
	#else
	engfunc(EngFunc_TraceLine, vStart, vEnd, DONT_IGNORE_MONSTERS, 0, 0);
	id = get_tr2(0, TR_pHit);
	body = get_tr2(0, TR_iHitgroup);
	get_tr2(0, TR_vecEndPos, vReturn);
	return get_distance_f( vStart, vReturn );
	#endif
}

stock GetOriginOutsidePlayer( iPlayer, Float:vecReturn[ 3 ] )
{
	velocity_by_aim( iPlayer, 1, vecReturn );
	
	new Float:vAbsAim[3];
	vAbsAim[0] = floatabs( vecReturn[0] );
	vAbsAim[1] = floatabs( vecReturn[1] );
	vAbsAim[2] = floatabs( vecReturn[2] );
	
	new longest_axis;
	if( vAbsAim[1] > vAbsAim[0] && vAbsAim[1] > vAbsAim[2] )
		longest_axis = 1;
	else if( vAbsAim[2] > vAbsAim[0] && vAbsAim[2] > vAbsAim[1] )
		longest_axis = 2;
	
	new Float:box[3];
	pev( iPlayer, ( vecReturn[ longest_axis ] < 0.0 ) ? pev_mins : pev_maxs, box );
	
	xs_vec_mul_scalar( vecReturn, ( ( 1.0 + floatabs( box[ longest_axis ] ) ) / ( vAbsAim[ longest_axis ] ) ), vecReturn );
	
	new Float:vOrigin[3];
	pev( iPlayer, pev_origin, vOrigin );
	xs_vec_add( vecReturn, vOrigin, vecReturn );
}
lub
zamiast c14-cristmastree.mdl daj standardowy model c4
sprawdzić możesz go przy pomocy pluginu który podałem wcześniej
Odpowiedz