Dotykanie bytu przez 5 sekund.
Ixik
09.11.2012
Siema. Jak wyglądałby Touch lub Think bytu, który miałby działać tak:
Jeżeli stoję 5 sekund na danym bycie, to wyświetla się np. napis.
Ale liczenie ma się odbyć dopiero po stanięciu na bycie.
Użytkownik Ixik edytował ten post 09.11.2012 02:05
Jeżeli stoję 5 sekund na danym bycie, to wyświetla się np. napis.
Ale liczenie ma się odbyć dopiero po stanięciu na bycie.
Użytkownik Ixik edytował ten post 09.11.2012 02:05
sebul
09.11.2012
Rejestrujesz touch i jeśli ktoś dotknie byt, to wtedy dajesz taska, albo wywołującego się co sekundę, aby można było sprawdzić, czy gracz dalej dotyka bytu, albo takiego taska, któremu od razu ustawiasz te 5 sekund.
speedkill
09.11.2012
http://amxx.pl/dokum.../register_touch
Lub możesz zarejestrować touch'a tak:
Tylko, że w tym sposobie będziesz musiał pobrać w funkcji nazwe bytu.
Możesz zrobić tak, że ustawiasz zmienną true, jeśli na nim stoi, i sprawdzasz co sekunde czy nadal stoi na nim. Lub ustawiasz zmienną na true, i dajesz taska na 5 sekund i po czasie sprawdzasz czy nadal dotyka. Choć ten z jedną sekundą będzie bardziej dokładny
Lub możesz zarejestrować touch'a tak:
register_forward(FM_Touch, "fw_touch");
Tylko, że w tym sposobie będziesz musiał pobrać w funkcji nazwe bytu.
Możesz zrobić tak, że ustawiasz zmienną true, jeśli na nim stoi, i sprawdzasz co sekunde czy nadal stoi na nim. Lub ustawiasz zmienną na true, i dajesz taska na 5 sekund i po czasie sprawdzasz czy nadal dotyka. Choć ten z jedną sekundą będzie bardziej dokładny
GwynBleidD
09.11.2012
Jeśli gracz może dotknąć bytu również od innej strony niż od góry, to po wykryciu dotyku musisz sprawdzić jego pozycję (no chyba, że to jak dotyka gracz bytu jest nieistotne).
DarkGL
09.11.2012
Jeżeli touch nie jest zależny od strony użyj register_touch ( lub funkcji fakemety/hamsandwich ) jeżeli tylko od góry to sprawdzaj pev_groundentity
Ixik
09.11.2012
Stwierdziłem, że w prethinku będę sprawdzać czy ktoś stoi na bycie, a jeżeli nie, to resetuje taska ktory jest ustawiony na 5 sekund.
Ale jak sprawdzić w prethinku pev(id, pev_groundentity) czy gracz stoi na danym bycie?
Użytkownik Ixik edytował ten post 09.11.2012 14:15
Ale jak sprawdzić w prethinku pev(id, pev_groundentity) czy gracz stoi na danym bycie?
Użytkownik Ixik edytował ten post 09.11.2012 14:15
G[o]Q
10.11.2012
juz lepiej zamiast prethinka wziać think bytu i wyszukiwać playerów znajdujących się na bycie (mozna porównywac coordy albo poprstu touch) i w thinku bytu liczyc sekundy dla kazdego gracza (ustawiasz think'a np co 1 sek) potem sprawdzac tablice z czasami czy ktorys ma juz wiecej niz 5 i wywolac akcje
GwynBleidD
11.11.2012
Cóż... robienia czegokolwiek w preThinku lepiej unikać, tu przyznam rację. Najlepszy by był touch event.
Ixik, spodziewam się, że jeśli chcesz wykrywać taką akcję, to ten byt tworzysz sam, więc możesz sobie jego id gdzieś zapisać. Jeśli jednak nie tworzysz, ale nie ma ich dużo na mapie (tak do 10ciu) to też możesz wyszukać wszystkie na początku mapy.
Ciekaw jestem do czego miałoby to służyć
Ixik, spodziewam się, że jeśli chcesz wykrywać taką akcję, to ten byt tworzysz sam, więc możesz sobie jego id gdzieś zapisać. Jeśli jednak nie tworzysz, ale nie ma ich dużo na mapie (tak do 10ciu) to też możesz wyszukać wszystkie na początku mapy.
Ciekaw jestem do czego miałoby to służyć