←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Jak wykryć func_breakable 20 unitów przed...


Best Answer grankee 16.04.2016 14:42

Ja widzę różne opcje:

- Zwiększ wymiary boxu strzały tak aby sięgały 30 unitów. Wtedy touchem wykryjesz. Opcja o tyle niedokładna, że zależnie od kąta nachylenia itd box bytu będzie większy także w niepotrzebnych wymiarach przez co może przelatywać obok func_breakable i go zniszczyć.

- Licz w częstym thinku tego bytu odległość od wszystkich func_breakable na mapie i jeśli jest odpowiednio mała to wywołuj obrażenia na func_breakable. Tutaj możesz się bawić do woli, zaleznie od kątu nachylenia liczysz odległość tylko w jednym kierunku, w którym leci strzała, w zasadzie ogranicza Cię tylko wiedza z matmy a dokładniej geometrii no i optymalność.

- Ostatni wydaje mi się najsensowniejszy. Nie wiem jaki movetype ma Twoja strzała, ale zakładam, że nie leci po linii prostej tylko działa nań grawitacja. Jeśli nie to nawet prościej będzie.

---Jeśli leci prosto to puszczasz traceline w kierunku gdzie leci. Jak traceline przetnie funca to Tworzysz nextthink na przybliżony czas kiedy doleci. Wzór na prędkość/drogę/czas znasz :D Wtedy w tym thinku sprawdzasz czy jest odpowiednio blisko żeby rozwalić 'kratkę', jeśli nie to tworzysz nextthink na bardzo krótki czas i sprawdzasz ponownie i tak do skutku. Jeśli na drodze nie ma żadnego func_breakable to nie ustawiasz thinka do sprawdzenia, bo i po co. 

---Jeśli leci z lekką grawitacją to już trochę więcej zabawy, ale dalej da się przewidzieć gdzie poleci. Nie wiem jak to dokładnie zrobić, ale widziałem kiedys plugin DarkGL, który malował łukowatą linię wskazującą gdzie poleci granat po rzucie. Może tak znajdziesz sposób jak przewidzieć drogę strzały.

Go to the full post

  • +
  • -
NoLiFeR's Photo NoLiFeR 16.04.2016

Witam, jest to mój pierwszy post od bardzo dawna, więc chciałbym się przywitać po tej nieobecności ^^

Cześć :)

Ale przejde do rzeczy.
Tworze strzałe, której nadaje określoną prędkość, kąt, movetype, grawitacje etc..
Chciałbym, aby ta strzała rozbijała byty func_breakable, gdy w nie wleci. Ale nie gdy ich dotknie, bo z touchem problemu nie ma, lecz wtedy, gdy byt znajduje się 20-30 unitów przed tym bytem, uwzględniając jego kąty nachylenia.
Najlepiej, aby funkcje dało podpiąć się pod jakiś think, ponieważ chcę graczowi na ekranie wyświetlać przykładową wiadomość informującą o trafieniu ("Przebiłeś tarcze"?)


Problem nie z samym dmg, lecz z wykryciem tego bytu przed strzałą :v


Edited by NoLiFeR, 16.04.2016 13:32.
Quote

  • +
  • -
Best Answer grankee's Photo grankee 16.04.2016

Ja widzę różne opcje:

- Zwiększ wymiary boxu strzały tak aby sięgały 30 unitów. Wtedy touchem wykryjesz. Opcja o tyle niedokładna, że zależnie od kąta nachylenia itd box bytu będzie większy także w niepotrzebnych wymiarach przez co może przelatywać obok func_breakable i go zniszczyć.

- Licz w częstym thinku tego bytu odległość od wszystkich func_breakable na mapie i jeśli jest odpowiednio mała to wywołuj obrażenia na func_breakable. Tutaj możesz się bawić do woli, zaleznie od kątu nachylenia liczysz odległość tylko w jednym kierunku, w którym leci strzała, w zasadzie ogranicza Cię tylko wiedza z matmy a dokładniej geometrii no i optymalność.

- Ostatni wydaje mi się najsensowniejszy. Nie wiem jaki movetype ma Twoja strzała, ale zakładam, że nie leci po linii prostej tylko działa nań grawitacja. Jeśli nie to nawet prościej będzie.

---Jeśli leci prosto to puszczasz traceline w kierunku gdzie leci. Jak traceline przetnie funca to Tworzysz nextthink na przybliżony czas kiedy doleci. Wzór na prędkość/drogę/czas znasz :D Wtedy w tym thinku sprawdzasz czy jest odpowiednio blisko żeby rozwalić 'kratkę', jeśli nie to tworzysz nextthink na bardzo krótki czas i sprawdzasz ponownie i tak do skutku. Jeśli na drodze nie ma żadnego func_breakable to nie ustawiasz thinka do sprawdzenia, bo i po co. 

---Jeśli leci z lekką grawitacją to już trochę więcej zabawy, ale dalej da się przewidzieć gdzie poleci. Nie wiem jak to dokładnie zrobić, ale widziałem kiedys plugin DarkGL, który malował łukowatą linię wskazującą gdzie poleci granat po rzucie. Może tak znajdziesz sposób jak przewidzieć drogę strzały.

Quote

  • +
  • -
NoLiFeR's Photo NoLiFeR 16.04.2016

Sytuacja jest na tyle niekonfortowa, że w pluginie który tworzę, będzie możliwa do uzyskania "tarcza" zakrzywiająca tor lotu strzały :/ Muszę to robić z miejsca, w którym strzała jest w danym momencie.. 2 opcja wydaje się ok, jeżeli na mapie jest max 10 breakablesów. Jak jest ich 100 to serwer będzie przy 5 strzałach siadał :/

 

Jeżeli chodzi o traceline, to siada :/ Miałbyś przykład jakiś ? z tego co pamiętam, jeżeli zwróci 1.0 to się nie przetnie ? Ale jak sprawdzić czy przebity ent to breakable ?


Edited by NoLiFeR, 16.04.2016 15:17.
Quote

  • +
  • -
NoLiFeR's Photo NoLiFeR 16.04.2016

https://amxx.pl/topi...rzedza-graczem/+ EV_VEC_angles + traceline i hit rozwiązało sprawe ;)
Dzięki za pomoc grankee

 

Quote

  • +
  • -
grankee's Photo grankee 17.04.2016

Po zakrzywieniu toru lotu dajesz to samo co po wystrzeleniu ale juz z nowymi parametrami lotu wiec to zaden problem.

Quote