Witam,
jak w temacie, jak sprawdzić czy ent jest w ścianie (|), czy w podłodze (_).
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.
|
Napisano 24.12.2013 20:33
Witam,
jak w temacie, jak sprawdzić czy ent jest w ścianie (|), czy w podłodze (_).
Napisano 24.12.2013 22:24
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
Napisano 24.12.2013 22:43
A może tak, wbijam ent w ścianę, i chcę wyświetlić na nim sprite (a dokładniej stworzyć drugi ent (wyżej o 20 jednostek) z modelem sprita), niestety sprite jest tez w ścianie i chciał bym go z tej ściany o kilka jednostek wyłonić bo kiepski efekt jest, na ziemi to wygląda pięknie, w ścianie już nie bardzo
@EDIT
Oto efekt:
I chciał bym wydobyć tego enta (z modelem sprite) z zafajdanej ściany by był ładnie widoczny
Użytkownik Czaso Umilacz edytował ten post 24.12.2013 22:55
Napisano 25.12.2013 11:56
Znalazłem pseudo rozwiązanie, może komuś się kiedyś przyda (jak będzie chciał rysować sprite na encie wbitym w ściane/podłogę), postanowiłem wysunąć ent z ściany (wcześniej ustawiłem vangle tak by nie oglądał ściany - obrót v_angle o 180*)), następnie zapisałem jego origin w 2 zmienne, w jednej zwiększyłem wysokość o 1, w drogiej zmniejszyłem o 1, jeśli znajdzie się cos miezy dwoma originami to najprawdopodobniej podłoga (pomija oczywiście ent który badamy), jeśli nie ściana (o ile ent jest wbity w ścianę na odpowiednią wysokość, około 2 jednostki wyżej od ściany), u mnie to działa, podaje kod:
stock bool:is_ent_in_floor(ent){ static Float:origin[3], Float:velocity[3]; entity_get_vector(ent, EV_VEC_origin, origin); // Pobranie położenia bytu VelocityByAim(ent, 16, velocity); // Nie wiem co to robi, ale wiem że jak się doda tego wynik do originu, otrzymamy origin w pewnej odległości od pierwszego static Float:temp[3], Float:ret[3]; xs_vec_add(velocity, origin, origin); // Otrzymanie originu bytu po wysunięciu z ściany xs_vec_copy(origin, temp); // Zapisanie wyniku do drugiej zmiennej origin[2] += 1.0; // Manipulacja położeniem (1 w górę i jeden w dół) temp[2] -= 1.0; if(trace_normal(ent, origin, temp, ret) == 1) // Sprawdzenie czy coś miedzy dwoma origanami się znajduje return true; return false; }
Następnie po sprawdzaniu znowu wysuwam ent z ściany ale juz w funkcji która ustawia jego położenie
Sorki za spam ale nie ma opcji edytuj (chyba się wyłącza po czasie), oraz proszę o zamknięcie tematu
Użytkownik Czaso Umilacz edytował ten post 25.12.2013 12:00
Napisano 25.12.2013 15:56
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
0 użytkowników, 0 gości, 0 anonimowych