←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Dotykanie bytu przez 5 sekund.

  • +
  • -
Ixik - zdjęcie 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
Odpowiedz

  • +
  • -
sebul - zdjęcie 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.
Odpowiedz

  • +
  • -
speedkill - zdjęcie speedkill 09.11.2012

http://amxx.pl/dokum.../register_touch

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 ;)
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie 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).
Odpowiedz

  • +
  • -
DarkGL - zdjęcie 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
Odpowiedz

  • +
  • -
Ixik - zdjęcie 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
Odpowiedz

  • +
  • -
Ixik - zdjęcie Ixik 09.11.2012

Okej, ale jak w PreThinku wykryć "ent" find_ent_by_class?
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie 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
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie 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ć ;)
Odpowiedz

  • +
  • -
Ixik - zdjęcie Ixik 12.11.2012

Jakiś przykład? Bo niezbyt ogarniam jak to napisać..
Odpowiedz