Jak sprawzić czy dany gracz jest widzialny ?
GT Team 19.07.2012
Witam mam pytanie jak sprawdzić czy gracz jest widzialny bo za pomocą is_visible mi nie działa ;/
fm_is_visible też nie
tzn.
Chce zrobić coś takiego że w client_prethink sprawdza czy gracz jest widziany przez kogoś
a dokładniej czy patrzy na niego.. ?
fm_is_visible też nie
tzn.
Chce zrobić coś takiego że w client_prethink sprawdza czy gracz jest widziany przez kogoś
a dokładniej czy patrzy na niego.. ?
d0naciak
20.07.2012
http://amxx.pl/topic...ci-gracza-bytu/
//czekaj, jezeli chcesz sprawdzic czy patrzy na niego, uzyj get_user_aiming(id, target, body); //target == id na ktorego patrzysz
//czekaj, jezeli chcesz sprawdzic czy patrzy na niego, uzyj get_user_aiming(id, target, body); //target == id na ktorego patrzysz
GT Team 20.07.2012
Get_user_aiming sprawdza czy gracz ma na celowniku cel
A mi chodzi o to czy na ekranie jest gracz
A mi chodzi o to czy na ekranie jest gracz
sebul
20.07.2012
Użyj is_in_viewcone.
/* SDK function - checks if an origin is in an entity's view cone * Set use3d to 1 to do the calculation in 3D. Otherwise it will be in 2D. */
DarkGL
22.07.2012
to że jest w viewcone niedowodzi jedoznacznie że jest widoczny może być ale nie musi
GT Team 02.08.2012
Właśnie sprawdzałem, sorka za odkopanie, ale funkcja bardzo by mi się przydała a w adv ence bullet dam age jest taka opcja ze gdy się strzeli przez ścianę to nie pokazuje ile się zadało obrażeń ( to jest na cvary ) I chyba musi sprawdzać czy grac jest widoczny albo jakiś byt nie przeszkadza w jego zobaczeniu.
sebul
02.08.2012
Sprawdzałeś fm_is_ent_visible? Albo spróbuj tak
Ogólnie gdybyś od razu napisał dokładnie o co Ci chodzi, to odpowiedź miałbyś dużo szybciej.
new Float:Iorigin[3], Float:Torigin[3], Float:Rorigin[3];
entity_get_vector(id, EV_VEC_origin, Iorigin);
entity_get_vector(target, EV_VEC_origin, Torigin);
trace_line(id, Iorigin, Torigin, Rorigin);
if(get_distance_f(Torigin, Rorigin) < 30.0) {
// id widzi target
}
Ogólnie gdybyś od razu napisał dokładnie o co Ci chodzi, to odpowiedź miałbyś dużo szybciej.
G[o]Q
04.08.2012
/** * Description: Unsure, I assume it is whether or not the other entity is visible to this entity. * Forward params: function(this, idOther); * Return type: Integer (boolean). * Execute params: ExecuteHam(Ham_FVisible, this, idOther); */ Ham_FVisible,
w bullet_damage jest chyba zwykly traceline ktory sprawdza czy nic nie ma miedzy graczami
Fili:P
04.08.2012
W bullet damage jest http://amxx.pl/dokum...-is-ent-visibleQ' timestamp='1344093499' post='440663']
w bullet_damage jest chyba zwykly traceline ktory sprawdza czy nic nie ma miedzy graczami
Chyba ktoś to już wyżej podał
G[o]Q
04.08.2012
tutaj masz jeszcze kod który znalazlem z kiedyś ten kawalek jest odpowiedzialny za wybuch ent'a jak flash'a czyli jesli gracz patrzy na ent to mu zakrywa caly ekran jesli stoi tylem to polowe czyli rozwiązuje to chyba twój problem.
Funkcja wyszukuje graczy w zasięgu 700 unitów jest to kod z diablo więc kilka przeróbek by bylo potrzebnych
a tutaj stock fm_is_ent_visibles czyli troche przerobiona wersja z fm_util
Funkcja wyszukuje graczy w zasięgu 700 unitów jest to kod z diablo więc kilka przeróbek by bylo potrzebnych
public flash_boom(ent){ emit_sound( 0, CHAN_AUTO, "weapons/flashbang-1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM ) //new id=pev(ent,pev_owner) new Float:forigin[3], origin[3] pev(ent,pev_origin,forigin) FVecIVec(forigin,origin) new entlist[513] new numfound = find_sphere_class(0,"player",700.0,entlist,512,forigin) for (new i=0; i < numfound; i++) { new pid=entlist[i] new wynik new Float:fAngle; if(fm_is_ent_visibles(pid, ent, fAngle) && fAngle <= 45.0)wynik=1 else wynik=0 if(player_class[pid]==Flasher) continue if(wynik) Display_Fade(pid,5600,5600,0,255,255,255,230) else Display_Fade(pid,5600,5600,0,255,255,255,160) } remove_entity(ent) }
a tutaj stock fm_is_ent_visibles czyli troche przerobiona wersja z fm_util
stock bool:fm_is_ent_visibles(index, ent, &Float:fAngle, brush=0, ignoremonsters = 0){ new Float:start[3], Float:view_ofs[3] pev(index, pev_origin, start) pev(index, pev_view_ofs, view_ofs) xs_vec_add(start, view_ofs, start); new Float:point[3]; if(brush) fm_get_brush_entity_origins(ent, point); else pev(ent, pev_origin, point); new solid = pev(ent, pev_solid); set_pev(ent, pev_solid, SOLID_NOT); engfunc(EngFunc_TraceLine, start, point, ignoremonsters, index, 0) set_pev(ent, pev_solid, solid); //Angle start[0] = point[0] - start[0]; start[1] = point[1] - start[1]; start[2] = point[2] - start[2]; xs_vec_normalize(start, start); new Float:view[3]; pev(index, pev_v_angle, view); angle_vector(view, ANGLEVECTOR_FORWARD, view); fAngle = xs_vec_angle(view, start); //is visible? new Float:fraction get_tr2(0, TR_flFraction, fraction) if (fraction == 1.0) return true return false }
GT Team 10.08.2012
/** * Description: Unsure, I assume it is whether or not the other entity is visible to this entity. * Forward params: function(this, idOther); * Return type: Integer (boolean). * Execute params: ExecuteHam(Ham_FVisible, this, idOther); */ Ham_FVisible,
w bullet_damage jest chyba zwykly traceline ktory sprawdza czy nic nie ma miedzy graczami
ExecuteHam(Ham_FVisible, this, idOther);
this = ?
idOther = ?
this to kto a id other to kogo ?
Edit ://
if(fm_is_ent_visibles(pid, ent, fAngle) && fAngle <= 45.0)wynik=1
pid to kto a ent to kogo ?
co to jest fAngle ?
tam po tym jest && fAngle < =45.0
To jest o kąt widzenia ? czyli 45 stopni w lewo i 45 stopni w prawo ?
Edited by PaTrIcKx, 10.08.2012 18:27.
G[o]Q
11.08.2012
ent to to na co sie patrzy
pid to ten kto patrzy
fAngle to referencja więc ma być puste i jest to kąt
this to jest gracz dla którego wykonujesz funkcje
idOther to drugi gracz/ent
ten kawalek z ham'a sprawdza czy this ma na swoim ekranie idOther
pid to ten kto patrzy
fAngle to referencja więc ma być puste i jest to kąt
this to jest gracz dla którego wykonujesz funkcje
idOther to drugi gracz/ent
ten kawalek z ham'a sprawdza czy this ma na swoim ekranie idOther
GT Team 11.08.2012
Czy ma na swoim ekranie - Nawet jeżeli jest za sciana ale na ekranie gracza?
G[o]Q
11.08.2012
ehh jak gosc jest za scianą to masz go na ekranie?? widzisz go ? bo chyba nie