Teraz jest So 27 kwi, 2024 13:24


Desant morski

Archiwum działów sekcji Armed Assault
  • Autor
  • Wiadomość
Offline
Avatar użytkownika

Marcin_BM

Porucznik

Porucznik

  • Posty: 330
  • Dołączył(a): N 25 lip, 2004 20:49

Desant morski

PostŚr 18 kwi, 2007 20:50

Wiem że takie pytanie było co do OFP ale moj problem polega na tym ze w OFP łódź chciała dopłynąc do brzegu i wysadzic ludzi na ladzie a w ARMA wywala ich do wody z 10m od ladu a ci zanim doplyna to gina albo traca bron :(
Offline
Avatar użytkownika

MaRcin

Major

Major

  • Posty: 966
  • Dołączył(a): Śr 21 lip, 2004 09:45

PostŚr 18 kwi, 2007 23:05

jest to problem, który opisywał Vilas jakiś czas temu i od tamtej pory nikt nie wymyślił sensownego rozwiązania.
Good Times Gone
Offline
Avatar użytkownika

gremdek

Porucznik

Porucznik

  • Posty: 428
  • Dołączył(a): Pn 27 lut, 2006 15:02

PostŚr 25 kwi, 2007 13:20

czekam na jakiś komentarz.

zrobiłem małe poprawki.
problem jest jeden że desant paru osób najprawdopodobniej wywali w jedno miejsce, ale to jest kwestia modyfikacji ostatniej linijki (tej z _unit setpos[x,y]), nie chciało mi się w to wnikać.


Kod: Zaznacz cały
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;          poprawa desantu, beta 0.9999999          ;;;;
;; this addeventhandler ["getout",{_this exec "woda.sqs"}]
;;;   _rmax - maksymalny promień sprawdzania,
;;;     jeśli brzeg jest dalej, wypad do wody 
;;;  _rmin - minimalny promień         
;;; _d przerwa pomiedzy sprawdzanymi okregami
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; MODYFIKOWAC               ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
_rmax = 30
_rmin = 5
_d = 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; NIE MODYFIKOWAC           ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



_vcl = _this select 0
_unit = _this select 2

_a = getpos _vcl select 0
_b = getpos _vcl select 1

? !surfaceisWater [_a,_b] : exit
_n = _rmin
;(_x-_a)*(_x-_a) + (_y-_b)*(_y-_b) = _r*_r

#loop
_y = _b + _n
_delta = 4*_a*_a - 4*((_y-_b)*(_y-_b) + _a*_a - _n*_n)
_x1 = (2*_a - sqrt(_delta))/2
_x2 = (2*_a + sqrt(_delta))/2
_n=_n+_d
? !surfaceisWater [_x1,_y] : _x=_x1; goto "getout";
? !surfaceisWater [_x2,_y] : _x=_x2; goto "getout";
?_n==_rmax : _n=_rmin; goto "loop2";
goto "loop"
#loop2
_y = _b - _n
_delta = 4*_a*_a - 4*((_y-_b)*(_y-_b) + _a*_a - _n*_n)
_x1 = (2*_a - sqrt(_delta))/2
_x2 = (2*_a + sqrt(_delta))/2
_n=_n+_d
? !surfaceisWater [_x1,_y] : _x=_x1; goto "getout";
? !surfaceisWater [_x2,_y] : _x=_x2; goto "getout";
?_n==_rmax : exit
goto "loop2"
#getout
_unit setpos [_x,_y,0]
exit
:(

Powrót do Armed Assault

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 71 gości