Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Guest Message by DevFuse
"Ignorowanie" sciany przy strzale.
Temat rozp. Owner123, 04.10.2010 16:58
12 odpowiedzi w tym temacie
#1
Napisano 04.10.2010 16:58
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.
#2
Napisano 04.10.2010 17:18
sprobuj "podpatrzeć" sposob z advanced bulletdamage (czy jak to sie nazywa) ktory nie pokazuje obrazen przez sciane i blokowac dmg
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
#3
Napisano 04.10.2010 18:43
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
#4
Napisano 04.10.2010 21:09
po set zwróć FMRES_HANDLED
#5
Napisano 05.10.2010 17:15
mozna tez w pre- take_damage zwracac HAM_SUPERCEDE jesli nie spelniony warunek
if(fm_is_ent_visible(attacker,id))
Manual ponad wszystko, konsola ponad manual :&
Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka
GG:6022845 (nie pomagam za free osobom ponizej rangi MoD)
Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka
GG:6022845 (nie pomagam za free osobom ponizej rangi MoD)
#6
Napisano 05.10.2010 20:42
Chodzi o to aby po strzale przez ściane dmg był taki sam jak przy normalnym strzale ...
#7
Napisano 05.10.2010 23:37
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.
#8
Napisano 06.10.2010 15:29
albo po prostu zrobić własnego TraceLine`a
#9
Napisano 07.10.2010 12:32
Własnego Traceline'a ? Mógłbyś to bardziej opisać lub podać jakiś przykład ?
#10
Napisano 07.10.2010 13:37
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);
#11
Napisano 07.10.2010 16:50
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
#12
Napisano 07.10.2010 17:04
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ą
#13
Napisano 07.10.2010 17:30
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.
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych