[ROZWIĄZANE] Najechanie na byt
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
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
DarkGL
09.12.2011
get_user_aiming
najechanie na gracza możesz wykryć poprzez register_event statusvalue/statustext
najechanie na gracza możesz wykryć poprzez register_event statusvalue/statustext
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?
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 ); }
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
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
Fili:P
10.12.2011
Dokładnie.Fili'emu chodziło o plik modules.ini ... czy tam masz odblokowane moduły
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
DarkGL
11.12.2011
xs to nie moduł
tak to też może mieć znaczenie jeśli ta choinka to odzielnny ent i ma nadane mins i maxsA może to jest powód tego, że paka ma model choinki
Nenczoks 16.12.2011
Sprawdziłem to, wyłączyłem plugin i niestety nadal nie pokazuje.
Hm?
Dalej czekam.
Hm?
Dalej czekam.
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/
sprawdź za pomocą tego http://amxx.pl/topic...ine-entity-lab/
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
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
Stachuu :D ??
17.12.2011
daj moze
zamiast
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"))
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