"Ignorowanie" sciany przy strzale.
Owner123
04.10.2010
Jest jakiś sposób aby po strzale przez ścianie nie zmniejszało obrażeń? Próbowałem użyć TraceAttack oraz FM_TraceLine ale żadne z tych rzeczy nie dało efektu.
kyku
04.10.2010
sprobuj "podpatrzeć" sposob z advanced bulletdamage (czy jak to sie nazywa) ktory nie pokazuje obrazen przez sciane i blokowac dmg
Użytkownik kyku edytował ten post 04.10.2010 17:19
register_forward(FM_TraceLine, "fw_traceline", 1);+
public fw_traceline(Float:vecStart[3],Float:vecEnd[3],ignoreM,id,trace) { if(id<1||id>32) return FMRES_IGNORED; if(!is_user_connected(id) || is_user_bot(id)) return FMRES_IGNORED; // not a player entity, or player is dead if(!is_user_alive(id)) return FMRES_IGNORED; if(!(pev(id,pev_button) & IN_ATTACK)) return FMRES_IGNORED; new hit = get_tr2(trace, TR_pHit) if(hit<1||hit>32) return FMRES_IGNORED; if(is_valid_ent(hit)) { if(is_user_alive(hit)) { if(tutaj_warunek_czy_jest_za_sciana) set_tr(TR_flFraction,1.0) } } return FMRES_IGNORED; }(to powinno dzialac)
Użytkownik kyku edytował ten post 04.10.2010 17:19
Owner123
04.10.2010
Mam takiego ifa:
I strzaly nadal tracą na sile. Przy twoim to strzaly przelatywaly mi nawet przez graczy
if(player_b_wallbang[id] && !ExecuteHam(Ham_IsPlayer, hit))
set_tr2(trace, TR_flFraction, 1.0)
I strzaly nadal tracą na sile. Przy twoim to strzaly przelatywaly mi nawet przez graczy
G[o]Q
05.10.2010
mozna tez w pre- take_damage zwracac HAM_SUPERCEDE jesli nie spelniony warunek
if(fm_is_ent_visible(attacker,id))
Owner123
05.10.2010
Chodzi o to aby po strzale przez ściane dmg był taki sam jak przy normalnym strzale ...
grankee
05.10.2010
Jest sposób na około, ale mogę tylko opisać o co chodzi, nie mam niestety na tyle czasu, aby się w to bawić.
Trzeba zrobić liste możliwych dmg ze wszystkich broni i wszystkich zakresów dystansów między graczami, sprawdzić traceline czy strzał idzie przez ściane, jeśli tak to odpowiednią zmienną globalną (wcześniej utworzoną na te potrzeby) zmienić na true, a w ham_takedamage sprawdzać czy strzał szedł przez ściane (za pomocą owej zmiennej) i jeśli tak ustawiać obrażenia zależnie od dystansu i broni.
Trzeba zrobić liste możliwych dmg ze wszystkich broni i wszystkich zakresów dystansów między graczami, sprawdzić traceline czy strzał idzie przez ściane, jeśli tak to odpowiednią zmienną globalną (wcześniej utworzoną na te potrzeby) zmienić na true, a w ham_takedamage sprawdzać czy strzał szedł przez ściane (za pomocą owej zmiennej) i jeśli tak ustawiać obrażenia zależnie od dystansu i broni.
Owner123
07.10.2010
Własnego Traceline'a ? Mógłbyś to bardziej opisać lub podać jakiś przykład ?
R3X
07.10.2010
Zwrócenie HANDLED nie zadziałało?
Jak chcesz własnego, to proszę.
id- atakujący
victim- ofiara
Jak chcesz własnego, to proszę.
id- atakujący
victim- ofiara
new Float:start[3] ,Float:end[3]; pev(id, pev_origin, start); pev(victim, pev_origin, end); new tr = create_tr2(); engfunc(EngFunc_TraceLine, start, end, IGNORE_MONSTERS, id, tr); //get_tr2(tr).... free_tr2(tr);
Owner123
07.10.2010
Tak, zwrocilem HANDLED i nadal to samo.
Mam taki kod:
I nadal strzaly traca na sile przy strzale przez sciane :s
Mam taki kod:
new tr = create_tr2();
new Float:fVictimOrigin[3];
new Float:fAttackerOrigin[3];
pev(id, pev_origin, fAttackerOrigin);
pev(hit, pev_origin, fVictimOrigin);
engfunc(EngFunc_TraceLine, fAttackerOrigin, fVictimOrigin, IGNORE_MONSTERS, id, tr);
if(!fm_is_ent_visible(id, hit))
set_tr2(tr, TR_flFraction, 1.0);
free_tr2(tr);
return FMRES_SUPERCEDE;
I nadal strzaly traca na sile przy strzale przez sciane :s
R3X
07.10.2010
a traceline złapałeś z post=1?
co do kodu:
no na pewno nie w ten sposób
jak chcesz skorzystać z rady grankee to zamiast modyfikować trace modyfikuj obrażenia; ja Ci podałem tylko inny sposób (może lepszy, a może nie) na wykrycie czy gracze się widzą
co do kodu:
no na pewno nie w ten sposób
jak chcesz skorzystać z rady grankee to zamiast modyfikować trace modyfikuj obrażenia; ja Ci podałem tylko inny sposób (może lepszy, a może nie) na wykrycie czy gracze się widzą
Owner123
07.10.2010
Na wykrycie czy gracze mnie widzą mam fm_is_ent_visible
Hmm, widzę że sporo roboty będzie z tym No dobra. Widzę że wszystko już wyczerpane. Temat do zamknięcia.
Hmm, widzę że sporo roboty będzie z tym No dobra. Widzę że wszystko już wyczerpane. Temat do zamknięcia.