Teraz jest So 18 kwi, 2026 11:02


skrypt BAS_Rotorwash

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

Sudayev

Major

Major

  • Posty: 509
  • Dołączył(a): So 11 lut, 2006 15:44

skrypt BAS_Rotorwash

PostCz 25 maja, 2006 13:10

Zapytanie na dole;)



;BAS ROTOR WASH SCRIPT by TJ, Seed (and ideas from Rastovich and Vektorboson)

;custom version for mh60 series
;KISS

? (BAS_60Effects == 0):exit
?BAS_mpgame:exit

? (format ["%1",BAS_IslandMap] == {scalar bool array string 0xfcffffef}): BAS_IslandMap = 1
? (format ["%1",BAS_WINDUST] == {scalar bool array string 0xfcffffef}):BAS_WINDUST = false
? (format ["%1",BAS_DESDUST] == {scalar bool array string 0xfcffffef}):BAS_DESDUST = false

_unit = _this


@ isEngineOn _unit

~7

private ["_sensor"];
_sensor = "EmptyDetector" createVehicle [0,0,0]
_calcH = {private["_result"]; _sensor setpos [getpos _unit select 0, getpos _unit select 1]; _result = getpos _sensor select 2; _result};

; Colors defined here
_desert = [[0.345,0.29,0.168,0],[0.345,0.29,0.168,0.15], [0.345,0.29,0.168,0.29], [0.345 ,0.29,0.168, 0.2 + (random 0.1)], [0.345,0.274,0.168,0]]
_standard = [[0.325,0.27,0.148,0],[0.325,0.27,0.148, 0.01], [0.325,0.27,0.148,0.13], [0.325,0.27,0.148, 0.13 + (random 0.2)], [0.325,0.27,0.148,0]]
_vietnam = [[0.45,0.29,0.2,0],[ .4,.3, 0.2,0.2], [ .4,.3, .2,0.25], [.4,.3, .2, 0.3], [ .4, .3, .2, 0]]
_snow = [[1,1,1,0],[0.95,0.95,0.95,0.2], [0.95,0.95, 0.95,0.4], [0.95 ,0.95,0.95,0.4], [1,1,1,0]]
_colorwater = [[1, 1, 1, 0.01], [ 1, 1, 1, 0.22], [ 1, 1, 1, 0.18], [ 1, 1, 1, 0]]


_terrain = BAS_IslandMap

? (_terrain == 1 || _terrain == 2 || _terrain == 3 || _terrain == 5) : _color = _standard
? (_terrain == 4 || _terrain == 7): _color = _desert
? _terrain == 6: _color = _vietnam

? BAS_WINDUST: _color = _snow
? BAS_DESDUST: _color = _desert
? BAS_DESDUST:_terrain = 4

? _terrain == 5: _descentre = "Emptydetector" createvehicle [2023,4454]
? _terrain == 5: _snow1centre = "Emptydetector" createvehicle [8730,9532]
? _terrain == 5: _snow2centre = "Emptydetector" createvehicle [9571,9664]


_heightfx = 19
_maxdust =10
?(_terrain == 4 || _terrain == 7 || _terrain == 6): _maxdust = _maxdust + 9
?(_terrain == 4 || _terrain == 7 || _terrain == 6): _heightfx = 30

_origcolor = _color
_origheightfx = _heightfx
_origmaxdust = _maxdust


_delay = 0.01
_dustpos = 20
_dustsize = 0
_spinup = True
_flying = False
_spindown = False
_dir4 = 0
_dir5 = 0
_skipper = 0

#Loop

? isEngineOn _unit : goto "SpinUp"
? _dustsize > 0:goto "spindown"

goto "Idle"

#Dust

? getDammage _unit >= 1 : goto "end"
? ! isengineon _unit:goto "spindown"

; particle direction
_dir = random 360
_dir2 = random 360
_dir3 = random 360
_dir4 =_dir4 +10
_dir5 = _dir5 +10
_rand = random 10
? _dir4 >= 360:_dir4 =_rand
?_dir5 >= 360:_dir5=_rand
_velo = 15


; particle array elements

_ShapeName = "cl_basic"
_AnimationName = ""
_Type = "Billboard"
_TimerPeriod = 1
_LifeTime = 2
?(_terrain == 4 || _terrain == 7 || _terrain == 6): _Lifetime = 3
_Position = [getpos _unit select 0, getpos _unit select 1,0]
_MoveVelocity = [_velo * sin _dir, _velo * cos _dir, 0+ random 1.5]
? benchmark <1400: goto "skip"
_MoveVelocity2 = [_velo *cos _dir2, _velo * sin _dir2, 0+ random 1]
_MoveVelocity3 = [11 *sin _dir3, 11 * cos _dir3, 0]
_MoveVelocity4 = [5 *cos _dir4, 5 *sin _dir4,0.3]
_MoveVelocity5 = [5 *sin _dir5, 5 *cos _dir5,0.3]
#skip
_RotationVelocity = 0
_Weight = 1.270
_Volume = 1
_Rubbing = 0.2
_Size = [0.01,0.02,1,1+ (random _dustsize)]
?(_terrain == 4 || _terrain == 7 || _terrain == 6): _Size = [0.01,0.02,3,3 + (random _dustsize)]

_AnimationPhase = [0,1]
_RandomDirectionPeriod = 1.2
_RandomDirectionIntensity = 2
_OnTimer = ""
_BeforeDestroy = ""
_Object = ""


? abs (call _calcH) <= 2.4:goto "water"
? abs (call _calcH) > 2.4 && abs (call _calcH) < 3.99:goto "shore"
? abs (call _calcH) >4 :goto "dusty"

goto "lowend"

#dusty
_color = _origcolor
_maxdust = _origmaxdust
_heightfx = _origheightfx
_terrain = BAS_islandmap
? _unit distance _descentre <1800:_color = _desert;_heightfx = 35; _maxdust = _maxdust + 15;_terrain = 4
? _unit distance _snow1centre <270:_color = _snow; _maxdust = _maxdust + 15;_heightfx = 35
? _unit distance _snow2centre <270:_color = _snow; _maxdust = _maxdust + 15;_heightfx = 35


? speed _unit > 150: goto "lowend"
drop ["cl_basic", "","Billboard",1,2, _Position, _MoveVelocity,0,1.270, 1,0.2, _Size, _Color, [0,1],1.2,2, "", "", _object]


? benchmark <1500: goto "lowend"
?(BAS_60Effects == 0.5):goto "lowend"

;gravel
? getpos _unit select 2 >5:goto "moredust"
drop ["sutr2", _AnimationName, "SpaceObject", _TimerPeriod, 2, _Position, _Movevelocity, _RotationVelocity, 1.276, 1, 0, [0, 0.13], [[0.402,0.402,0.402, 1]], [0], 0, 0, "", "", _Object]


# moredust
drop ["cl_basic","", _Type, 1, 1+ (random 0.8), _Position, _MoveVelocity2, 0, 1.272 + random 0.01, 1,0.1, _Size, _color, [0,1], 1, 3,"","",""]


#desertdustonly
? (_terrain == 1 || _terrain == 2 || _terrain == 3 || _terrain == 5):goto "lowend"
drop [_ShapeName, _AnimationName, _Type, _TimerPeriod, 2+ random 0.3, _Position, _MoveVelocity2, 0, _Weight + random 0.01, _Volume, _Rubbing, _Size, _color, [0,1], 1, 3,"","\BAS_MAH60\scripts\BAS_exdust.sqs",""]

goto "lowend"

#water
? speed _unit > 150: goto "lowend"

drop ["cl_water", "", _Type, _TimerPeriod, 2, _Position, _MoveVelocity, 1, 1.280, 1, 0.1, [0,0,2,8], _colorwater,[0,1,0],1.8,0.2, "", "", _Object]

? benchmark < 1500: goto "lowend"
?(BAS_60Effects ==0.5):goto "lowend"

drop ["cl_water", "", _Type, _TimerPeriod, 2, _Position, _MoveVelocity2,1,1.260, 1,0.15, [0,0,4,7], _colorwater,[0,1,0], 1.8,1, "", "", ""]

drop ["cl_water", _AnimationName, _Type, _TimerPeriod, 3, _Position, _MoveVelocity3, 1, 1.260, 1, 0.2, [0,1,4,9 + random 2], [[1, 1, 1, 0.1], [ 1, 1, 1, 0.3], [ 1, 1, 1, 0.3], [ 1, 1, 1, 0.007]], [0,1], 1.9,1, "", "", ""]


;ripples at hover
? speed _unit > 15: goto "lowend"
drop ["cl_water", _AnimationName, _Type, _TimerPeriod, 2.5, [getpos _unit select 0, getpos _unit select 1,-1], _MoveVelocity4, 0,1.275,1, 0, [0,0,0,1.5,1,2,1,2,1,2,1], [[1,1,1,0],[1,0,1,0],[1,1,1,0],[.9,.9,.9,0.07],[.9,.9,.9,0.07],[.9,.9,.9,0.07],[.9,.9,.9,0.07],[.9,.9,.9,0.07],[.9,.9,.9,0.07],[.9,.9,.9,0.07],[.9,.9,.9,0.07]], [0,1],0,0, "", "", ""]

drop ["cl_water", _AnimationName, _Type, _TimerPeriod, 2.5, [getpos _unit select 0, getpos _unit select 1,-1], _MoveVelocity5, 0, 1.275, 1, 0, [0,0,0,1.5,1,2,1,2,1,2,1], [[1,1,1,0],[1,1,1,0],[1,1,1,0],[.9,.9,.9,0.07],[.9,.9,.9,0.07],[.9,.9,.9,0.07],[.9,.9,.9,0.07],[.9,.9,.9,0.07],[.9,.9,.9,0.07],[.9,.9,.9,0.07],[.9,.9,.9,0.07]], [0,1], 0,0, "","", ""]

goto "lowend"

#shore
? speed _unit > 80: goto "lowend"
drop ["cl_water", _AnimationName, _Type, _TimerPeriod, 2, _Position, _MoveVelocity, _RotationVelocity, 0.007, _Volume, _Rubbing, [0,0,7], [[0.8,0.8,0.8,0.2],[0.7,0.7,0.7,0.1]], _AnimationPhase, _RandomDirectionPeriod,0, _OnTimer, _BeforeDestroy, _Object]

#lowend
~_delay
? _spinup : goto "SpinUp"
? _flying : goto "Flying"
? _spindown : goto "SpinDown"

exit

#SpinUp
? _dustsize < _maxdust : _dustsize = _dustsize + .02
? _dustsize >= _maxdust || (getPos _unit select 2) > _heightfx: _spinup = false, _flying = true

goto "Dust"

#Flying
_dustsize =_maxdust
_height = getPos _unit select 2
? _height < 1 : _height = 1
? _height > _heightfx : goto "NoDust"

_dustsize = _dustsize - (_height *0.5)

? !isEngineOn _unit : _flying = false, _spindown = true
goto "Dust"


#SpinDown
? _dustsize > 0 : _dustsize = _dustsize - .04
? _dustsize <= 0 : _spindown = false, _spinup = true, goto "Loop"
? isEngineOn _unit : _spinup = true, _spindown = false

goto "Dust"

#Idle
~1
? !isEngineOn _unit : exit
goto "Loop"

#NoDust
~1.5
? getPos _unit select 2 > _heightfx : goto "NoDust"
goto "Flying"

#end
deletevehicle _sensor
deletevehicle _descentre
deletevehicle _snow1centre
deletevehicle _snow2centre
exit


Wrzucam ten skryp do misji, podaje warunek by dwa helikoptery sterowane przez graczy posiadaly efekt "Rotorwash". Wszystko gra, ale ... Po wyjsciu z helikoptera i ponownym wejsciu nasze maszyny nie chca kurzyc. Co zrobic by skryp byl aktywny pomimo wyjscia z maszyny ?
Ostatnio edytowano Cz 25 maja, 2006 14:15 przez Sudayev, łącznie edytowano 1 raz
Offline
Avatar użytkownika

Volt

Major

Major

  • Posty: 905
  • Dołączył(a): Wt 20 lip, 2004 09:50
  • Lokalizacja: Wrocław

PostCz 25 maja, 2006 13:37

Możliwe że przy wyjściu skrypt się wyłącza, może lepiej przypisać to dla pustej maszyny i za pomocą moveindriver wsadzić pilota?
Obrazek
Offline
Avatar użytkownika

Sudayev

Major

Major

  • Posty: 509
  • Dołączył(a): So 11 lut, 2006 15:44

PostCz 25 maja, 2006 14:21

Volt z tym juz probowalem wczesniej,dalej to samo. Ewentualnie moze ktos wkleic jakis alternatywny dzialajacy skrypt. Napewno sie przyda niektorym.
Offline
Avatar użytkownika

Matte

Chorąży

Chorąży

  • Posty: 246
  • Dołączył(a): Pn 28 lis, 2005 19:09

PostCz 25 maja, 2006 15:57

Kod: Zaznacz cały
?!(local client): exit

_heli = _this select 0

; Heli Dust script by Vektorboson
; see _sensor and _calcH for above sea level calculation!
; execute just
; MyHeli exec "effects\heli_dust.sqs"

_null = "scalar bool array string 0xfcffffef"

private ["_sensor"];

_sensor = "EmptyDetector" createVehicle [0,0,0]
_calcH = {private["_result"]; _sensor setpos [getpos _this select 0, getpos _this select 1, 0]; _result = getpos _sensor select 2; _result};

?format["%1",HDSIN ] == _null: HDSIN = call {private["_i","_result"]; _result = []; _i = 0; while "_i < 50" do {_result = _result + [sin (7.2*_i)*15]; _i = _i+1;}; _result}
?format["%1",HDCOS ] == _null: HDCOS = call {private["_i","_result"]; _result = []; _i = 0; while "_i < 50" do {_result = _result + [cos (7.2*_i)*15]; _i = _i + 1}; _result}

HDCOLORWATER  = [ [0.8,0.8,0.9,0] ,  [0.9,0.9,1,0.7]   ,  [0.8,0.8,0.9,0]    ,   [0.8,0.8,0.9,0]   ]

; color for this helictoper
_icolor = [CFG_Addon_Tank_Shock_Dust_color1 + [0], CFG_Addon_Tank_Shock_Dust_color2 + [0.7], CFG_Addon_Tank_Shock_Dust_color3 + [0]]

_repeat = true
_lifetime = 2
_shape = "cl_basic"
_color = _icolor

; here comes all the visual part!

#repeat
~1
?(getpos _heli select 2) < 30 && speed _heli < 120 && isEngineOn _heli: goto "loop"
?!(isEngineOn _heli): exit
goto "repeat"


#loop
_pos = getpos _heli
_x = _pos select 0
_y = _pos select 1

_i = 0
#l1

?!effectsON: goto "silentloop"

_vel = [HDSIN select _i, HDCOS select _i, 0]
_size1 = random 2
_size2 = random 3 + 3
_size = [_size1, _size2]
drop [_shape, "", "Billboard", _lifetime, _lifetime, [_x, _y, 0], _vel, 0, 0.2, 0.157, 0.001, _size, _color, [0], 0.1, 0.2, "", "", ""]
_i = _i + 1
?_i < 50: goto "l1"
~0.01
_color = _icolor
_shape = "cl_basic"
?abs(_heli call _calcH) < 3: _color = HDCOLORWATER; _shape = "cl_water"
?(getpos _heli select 2) < 30 && speed _heli < 120 && isEngineOn _heli: goto "loop"

?_repeat && alive _heli : goto "repeat"

#silentloop
~1
? effectsON: goto "repeat"
?!alive _heli: exit
?!(isEngineOn _heli): exit
exit


Tyle ode mnie
Obrazek
Offline
Avatar użytkownika

Sudayev

Major

Major

  • Posty: 509
  • Dołączył(a): So 11 lut, 2006 15:44

PostCz 25 maja, 2006 19:32

Wrzucam skrypt, nazywam wszystko jak trzeba, linijka do Init i wyskakuje:
Kod: Zaznacz cały
_unit = _this select 0|#|': Error select: Type Object, expected Array


WTF ?
Offline

archiee

Chorąży

Chorąży

  • Posty: 100
  • Dołączył(a): Cz 16 mar, 2006 15:23
  • Lokalizacja: Łódź

PostCz 25 maja, 2006 22:06

Pewnie napisałeś:
Kod: Zaznacz cały
nazwa_heli exec "\effects\heli_dust.sqs"


Spróbuj dodać nawiasy kwadratowe (żeby był array):
Kod: Zaznacz cały
[nazwa_heli] exec "\effects\heli_dust.sqs"


albo zamień w skrypcie:
Kod: Zaznacz cały
_heli = _this select 0

na
Kod: Zaznacz cały
_heli = _this


EDIT
Mam dośc przypominania w kółko tego samego. Od dzisiaj posty w których użyto cytatów, fragmentów lub całości skryptów bez odpowiedniego zaznaczenia tagami code i quote zostaną w trybie natychmiastowym KASOWANE, a autorzy podpadajacy w tej sprawie pod recydywę-traktowani zgodnie z obowiązującym tu regulaminem - YacieK
Ostatnio edytowano Pt 26 maja, 2006 14:42 przez archiee, łącznie edytowano 1 raz
Offline
Avatar użytkownika

Sudayev

Major

Major

  • Posty: 509
  • Dołączył(a): So 11 lut, 2006 15:44

PostPt 26 maja, 2006 14:22

Rece odpadaja kombinuje z tym i nic nie wychodzi. W skrypcie pisze heli exec "effect/tralala.sqs". Wyskakuje costam is enginOn itd. Zero efektu. Potem kombinuje z nawiasami i mam cos takiego: [shape", billboard", lifetime" [x,y,x vel 02, size color ...

HELP
Offline
Avatar użytkownika

Sudayev

Major

Major

  • Posty: 509
  • Dołączył(a): So 11 lut, 2006 15:44

PostSo 27 maja, 2006 00:43

Yaciek, to chyba dosc wiekowy skrypt bo ciezko to wylowic w sieci. Znalazlem cos takiego. jak to nie to, to fajnie by bylo jakbys podzielil sie tym Rastavoviczem ;)

Kod: Zaznacz cały
_repeat = true


#repeat
@(getpos _this select 2) < 20 && speed _this < 80 && isEngineOn _this

_c = 50
_color = [[0.35,0.35,0.3,0], [0.6, 0.57, 0.5, 0.5],[0.5, 0.47, 0.4, 0]]
_size = [2, 5]
_lifetime = 2
_step = 360 / _c


#loop
_pos = getpos _this
_x = _pos select 0
_y = _pos select 1

_i = 0
#l1
_vel = [sin(_i * _step)*15, cos(_i * _step)*15, 0]
drop ["cl_basic", "", "Billboard", _lifetime, _lifetime, [_x, _y, 0.2], _vel, 0, 0.2, 0.157, 0.001, _size, _color, [0], 0.1, 0.2, "", "", ""]

_i = _i + 1
?_i < _c: goto "l1"
~0.01
?(getpos _this select 2) < 20 && alive _this && speed _this < 80 && isEngineOn _this: goto "loop"

?_repeat && alive _this: goto "repeat"
Offline
Avatar użytkownika

Sudayev

Major

Major

  • Posty: 509
  • Dołączył(a): So 11 lut, 2006 15:44

PostN 28 maja, 2006 10:23

Dzieki Yaciek, skryp jest niezly. I co najwazniejsze dziala w multi, aczkolwiek nie zauwazylem zmiany koloru pylp w zaleznosci nad jakim sie znajduje. Wyjatek woda.

Skryp dziala tylko gdy przypisze sie go do konkretnej jednostki latajacej z zaloga. w przypadku gdy chce przypisac go do pustej maszyny (bo gracz bedzie musial do niej wsiasc) wowczas nic sie nie dzieje.

Powrót do Operation Flashpoint

Kto przegląda forum

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

cron