Difference between revisions of "User:POLPOX"

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Easter eggs in BI games: ;-))
(ParticleArray refresh idea (WIP))
Line 1,180: Line 1,180:
 
Not even tested - I'd like to add it to [[ctrlCreate]] article after confirm
 
Not even tested - I'd like to add it to [[ctrlCreate]] article after confirm
 
<code><nowiki>"(isNumber (_x >> 'type') isEqualTo true) and !isClass (_x >> 'controls')" configClasses (configFile) apply {"* " + configName _x} joinString endl</nowiki></code>
 
<code><nowiki>"(isNumber (_x >> 'type') isEqualTo true) and !isClass (_x >> 'controls')" configClasses (configFile) apply {"* " + configName _x} joinString endl</nowiki></code>
 +
 +
=ParticleArray=
 +
 +
'''Todo and note:'''<br>
 +
'''-Add the section for the array from setParticleRandom, setParticleCircle, setParticleFire?'''<br>
 +
'''-Planning remove and merge to format section, suggestions?'''<br>
 +
'''-Make A3-compatible copy-and-paste examples'''<br>
 +
<br>
 +
{{Wikipedia|Particle_system|Particle}} is a lightweight for performance effect system that is to be used for emulate dusts, fires, explosions, and/or anything. Every explosions, dusts, fires and most of in-game 3D effects are made in this system. <br>
 +
Particles can be generated by script commands like [[drop]], so you can also do emulate them easily.
 +
 +
 +
== Format ==
 +
 +
<code>[
 +
shapeName,
 +
animationName,
 +
type,
 +
timerPeriod,
 +
lifeTime,
 +
position,
 +
moveVelocity,
 +
rotationVelocity,
 +
weight,
 +
volume,
 +
rubbing,
 +
size,
 +
color,
 +
animationPhase,
 +
randomDirectionPeriod,
 +
randomDirectionIntensity,
 +
onTimer,
 +
beforeDestroy,
 +
object,
 +
angle, {{cc|{{since||}}}}
 +
onSurface, {{cc|{{since|arma3|0.74}}}}
 +
bounceOnSurface, {{cc|{{since|arma3|0.74}}}}
 +
emissiveColor, {{cc|{{since|arma3|1.08}}}}
 +
vectorDir {{cc|{{since|arma3|1.92}}}}
 +
]</code>
 +
{| class="wikitable sortable"
 +
! # !! parameter name !! Type !! Description
 +
|-
 +
| 1 || shapeName || Render || [[Image:a3_universal_ca.jpg|thumb|{{arma3}} universal particle texture, file path: ''a3\data_f\ParticleEffects\Universal\Universal'']]
 +
[[String]] or [[Array]] format [p3dPath, n<sup>th</sup>, index, count, loop]:
 +
* p3dPath: [[String]] - File path to the particle you desired to use.
 +
* n<sup>th</sup>: [[Number]] - Divide the particle texture by this number.
 +
* index: [[Number]] - The row index that start of the animation.
 +
* count: [[Number]] - The animation count that the particles will use. If the number is bigger than n<sup>th</sup>, will continue to next row.
 +
* loop: [[Number]] - ('''Optional''', default 1) If 0, the particle will stop its animation when there's no more texture left, 1 to loop back to the start of the texture set.
 +
For example, to use the fire texture that shown in the picture, put this:
 +
<code>["a3\data_f\ParticleEffects\Universal\Universal", 16, 10, 32, 1]</code>
 +
|-
 +
| 2 || animationName || {{n/a}} || [[String]] - obsolete parameter that was meant to play .rtm anims, will throw "Skeletal animation not supported for particles" rpt error if not empty
 +
|-
 +
| 3 || type || Render || [[String]] - "Billboard" that the particle will always face to the camera, or "SpaceObject" that that particle is similar with regular objects.
 +
|-
 +
| 4 || timerPeriod || Script || [[Number]] - The script that defined in ''onTimer'' parameter will be executed in this time after a particle is generated, in seconds.
 +
|-
 +
| 5 || lifetime || Physical || [[Number]] - The life time of each particles in seconds.
 +
|-
 +
| 6 || position || Physical || [[Array]] format [[Position]], the center is the position of the source.
 +
|-
 +
| 7 || moveVelocity || Physical || [[Array]] format [[velocity]].
 +
|-
 +
| 8 || rotationVelocity || Physical || [[Number]] - particle rotations per second.
 +
|-
 +
| 9 || weight || Physical || [[Number]] - weight of the particle (kg).
 +
|-
 +
| 10 || volume || Physical || [[Number]] - volume of the particle in m<sup>3</sup>.
 +
|-
 +
| 11 || rubbing || Physical || [[Number]] - Determines how particles blown by winds (include downwash by helicopters).
 +
|-
 +
| 12 || size || Render || [[Array]] of [[Number]]s - particle size along its ''lifetime'', in meter.
 +
Example: this will generate particles that 1m sized, then will increase its size to 2m and 4m when its end of life, smoothly.
 +
<code>[1, 2, 4]</code>
 +
|-
 +
| 13 || color || Render || [[Array]] of [[Array]]s format [[Color]]
 +
Example: this will generate half-transparent grey particle, then will change its color to transparent white.
 +
<code>[[0.5, 0.5, 0.5, 0.3], [1, 1, 1, 0]]</code>
 +
|-
 +
| 14 || animationPhase || Render || [[Array]] of [[Number]]s - phase of the animation in time. In other words, the play speed of the selected frames for the Number of Frames to Play above.  The higher the number, the faster it plays through the animation frames. Note that if the Number of Frames to Play above is set to 1, this will have no visible effect.
 +
Example:
 +
<code>[2, 0]</code>
 +
|-
 +
| 15 || randomDirectionPeriod || Random || [[Number]] - In seconds.
 +
|-
 +
| 16 || randomDirectionIntensity || Random || [[Number]] - How particles change its velocity every once in ''randomDirectionPeriod'' seconds, in meters'''?'''
 +
|-
 +
| 17 || onTimer || Script || [[String]] - code executed on timer. <code>[[private]] _particlePosition = [[this]];</code>
 +
|-
 +
| 18 || beforeDestroy || Script || [[String]] - code executed right before particle's destruction. <code>[[private]] _particlePosition = [[this]];</code>
 +
|-
 +
| 19 || object || Physical || [[Object]] - If this parameter isn't [[objNull]], the particle source will be attached to the object. The source will stop to generate its particles when the distahce between the object and the source is further than [[getObjectViewDistance|Object View Distance]].
 +
|-
 +
| 20 || angle || Physical || [[Number]] - ('''Optional''', default 0) determines the particle's starting angle '''in radian'''. [[pi]] = 180°. {{since|||y}}
 +
|-
 +
| 21 || onSurface || Physical || [[Boolean]] - ('''Optional''', default [[false]]) Bounce the particles when hit the surface if [[true]]. If ''circleRadius'' > 0, placing of particle on (water) surface on start of its existence. Circle radius is defined by command [[setParticleCircle]]. {{since|arma3|0.74|y}}
 +
|-
 +
| 22 || bounceOnSurface || Physical || [[Number]] - ('''Optional''', default -1) coef of bounce in collision with ground, 0..1 for collisions, -1 to disable collision. Should be used soberly as it has a significant impact on performance. {{since|arma3|0.74|y}}
 +
|-
 +
| 23 || emissiveColor || Render || [[Array]] of [[Array]]s format [[Color]] - ('''Optional''', default {{Inline code|[&nbsp;]}}'''?''') Sets emissivity of the particle ('''RGB0'''). Works as lighting of particles, so must be combined with correctly set particle color. Last parameter has no meaning for now. {{since|arma3|1.08|y}}
 +
|-
 +
| 24 || vectorDir || Physical || [[Array]] format [[vectorDir]]'''?''' - ('''Optional''') Sets the default direction for '''SpaceObject''' particles. {{since|arma3|1.92|y}}
 +
|}
 +
 +
== Parameters ==
 +
 +
=== Global parameters ===
 +
 +
[[Image:Particles.jpg|thumb|ArmA particle texture]]
 +
'''ShapeName -''' Name of the shape associated with the particle.
 +
: In ArmA, the ShapeName is defined as an array.  This should be the particle shape name, followed by three integers.
 +
: Example: ["\Ca\Data\ParticleEffects\FireAndSmokeAnim\SmokeAnim.p3d", 8, 5, 0]
 +
: 1. Anim Divisor (1 for a 1x1, 8 for a 8x8, etc)
 +
: 2. Anim Starting Row
 +
: 3. Number of Frames to Play (speed controlled by animation phase below)
 +
 +
: In this shot of [[:Image:Particles.jpg|"\Ca\Data\ParticleEffects\FireAndSmokeAnim\SmokeAnim.p3d"]], note the following:
 +
 +
:: The image used for this particle effect is 8X8 effect frames.  This means you need to use 8 as your Anim Divisor.  Overwise, the game will either draw too much of the image used, or too little.  This is highly visible in most situations.
 +
 +
:: The Anim Starting Row picks the coresponding superimposed number in the image above.  0 picks the first smoke effect, 1 picks the second smoke effect, 2 picks the first fire effect, etc.
 +
 +
:: The setting for the Number of Number of Frames to Play should, in most cases, be the number of effects available to the animation.  If you go over this (for example, selecting 9 in this 8X8 tile), it will start playing the animation frames of the next effect down.  If there is nothing below to grab, it will draw a blank for that frame.  If 1 is used, it will only play the first frame of the selected row.
 +
:: If you want to find out of how many rows a datasource consists use ["...", 1, 0, 1] to see the full picture as a particle.
 +
 +
[[Image:Arma2_universal_particle_texture.jpg|thumb|Arma2 particle texture]]
 +
In '''ArmA 2 (and OA)''', the method for determining how many frames to play has changed.
 +
 +
''Example 1:''
 +
:["\Ca\Data\ParticleEffects\Universal\Universal", 16, 10, 32, 1]
 +
:1. Anim Divisor (for the new Universal particle model it is 16 since the texture file is 16x16)
 +
:2. Anim Starting Row (starting a 0)
 +
:3. Number of Frames to play (Starting with 1 and not 0)
 +
:4. Animation Loop (0 = no loop, 1 = loop (default if left blank is 1))
 +
 +
:Example 1 above (a fire burning) will start the animation in row 10, will play from frames 1 to 32, and will loop.
 +
 +
 +
Also in '''ArmA 2 and OA''', To achieve a single frame of animation that is not the first column of a row, use the third numerical value as a column selection instead of indicating how many frames to play.
 +
 +
''Example 2:''
 +
:["\Ca\Data\ParticleEffects\Universal\Universal", 16, 12, 9, 0]
 +
:1. Anim Divisor (for the new Universal particle model it is 16 since the texture file is 16x16)
 +
:2. Anim Starting Row (starting at 0)
 +
:3. Column Selection (Starting with 1 and not 0)
 +
:4. Animation Loop (0 = no loop, 1 = loop (default if left blank is 1))
 +
:Additional Step: You must also set the AnimationPhase value (described in render parameters) to a large number (such as 1000) if you only want to play a single frame. The reason for this is that the game engine does not only play a single frame, it actually begins at the first frame in the row and cycles to the desired frame.  If a small AnimationPhase number is used then you can actualy see the animation cycle through the all the frames (1-9).  A large number makes this imperceptible and only the desired frame appears to be displayed.
 +
 +
[[Image:a3_universal_ca.jpg|thumb|Arma3 particle texture (Universal)]]
 +
:Example 2 above (exploding rock dust) will start the animation in row 12, will only play frame 9, and will not loop.
 +
 +
 +
'''AnimationName -''' Has to be a [[String]], but it is obsolete. Used to play .rtm anims, if not empty, it will throw "Skeletal animation not supported for particles" rpt error
 +
 +
'''Type -''' Type of particle (either "Billboard" or "SpaceObject").
 +
 +
'''TimerPeriod -''' The period of calling the "OnTimer" event (in sec).
 +
 +
'''LifeTime -''' Life time of the particle (in sec).
 +
 +
=== Physical parameters ===
 +
 +
''Position -''' Either 3D coordinate (x, y, z) or name of the selection - in this case the Object property must be set.
 +
 +
'''MoveVelocity -''' 3D vector (x, y, z) which describes the velocity vector of the particle direction and speed in m/s.
 +
 +
'''RotationVelocity -''' Float number which determines number of rotations in one second.
 +
 +
'''Weight -''' Weight of the particle (kg).
 +
 +
'''Volume -''' Volume of the particle (m^3).
 +
 +
'''Rubbing -''' Float number without dimension which determines the impact of the density of the environment on this particle. '''0''' - no impact (vacuum).
 +
 +
'''Angle -''' Float number which determines starting angle of the particle.
 +
 +
'''OnSurface -''' Boolean. Placing of particle on (water) surface on start of it's existence, default value is true, works only if circleRadius > 0. Circle radius is defined by command [[setParticleCircle]]. Works since Arma 3 v. 0.74.
 +
 +
'''BounceOnSurface -''' Coef of speed's loosing in collision with ground, 0-1 for collisions, -1 disable collision. Default value -1. Should be used soberly, it has significant impact on performance. Works since Arma 3 v. 0.74.
 +
 +
[[Image:a3_universal_02_ca.jpg|thumb|Arma3 particle texture (Universal_02)]]
 +
=== Render parameters ===
 +
 +
 +
'''Note:''' All these values are set as arrays to show their development in time.
 +
 +
If you set the array [1, 2] as a size, then at the beginning the size of the particle will be 1 and at the end of the life time of the particle its size will be 2.
 +
 +
The rest of the values during the life time will be linearly interpolated.
 +
 +
 +
'''Size -''' Size of the particle in time to render ('''m''').
 +
 +
'''Color -''' Colour of the particle in time to render ('''RGBA''').
 +
 +
'''EmissiveColor -''' Sets emissivity of the particle ('''RGB0'''). Works as lighting of particles, so must be combined with correctly set particle color. Last parameter has no meaning for now.
 +
 +
'''AnimationPhase -''' Phase of the animation in time. In other words, the play speed of the selected frames for the Number of Frames to Play above.  The higher the number, the faster it plays through the animation frames.  Note that if the Number of Frames to Play above is set to 1, this will have no visible effect.
 +
 +
=== Random parameters ===
 +
 +
'''RandomDirectionPeriod -''' Period of change of the velocity vector (s).
 +
 +
'''RandomDirectionIntensity -''' Each MoveVelocity component will be changed with random value from interval <0, RandomDirectionIntensity>.
 +
 +
'''OnTimer -''' Name of the script to run every period determined by TimerPeriod property.
 +
 +
Position of the particle is stored in "this" variable.
 +
 +
'''BeforeDestroy -''' Name of the script to run right before destroying the particle.
 +
 +
Position of the particle is stored in "this" variable.
 +
 +
'''Object -''' Object to bind this particle to.
 +
 +
 +
== Example ==
 +
 +
For several examples of the kind of effects that can be accomplished via particles, see [[ParticleTemplates]].
 +
 +
=== Thunderbolt ===
 +
 +
Create thunderbolt on logic named ''logic1'':
 +
[[private]] _pos = [<nowiki/>[[position]] logic1 [[select]] 0,[[position]] logic1 [[select]] 1, 10];
 +
[[drop]] ["blesk1", "", "Billboard", 0.01, 0.2, _pos, [0,0,0], 0, 1, 1, 0, [20 + [[random]] 20], [<nowiki/>[1,1,1,1], [1,1,1,0.7]], [1,0], 0, 0, "", "", ""];
 +
 +
=== Mass grave Flies ===
 +
 +
{{cc|SCRIPT FOR GENERATING FLIES AROUND MASS GRAVE}}
 +
 +
{{cc|FIXED PARAMS}}
 +
[[private]] _source = "#particlesource" [[createVehicleLocal]] [[getPos]] (_this [[select]] 0);
 +
_source [[setParticleParams]] [
 +
{{codecomment|/* Sprite */}} ["\ca\characters2\OTHER\FLY.p3d",1,0,1,0], {{cc|File,Ntieth,Index,Count,Loop}}
 +
{{codecomment|/* Animation */}} "",
 +
{{codecomment|/* Type */}} "spaceObject",
 +
{{codecomment|/* TimerPer */}} 1,
 +
{{codecomment|/* Lifetime */}} 4,
 +
{{codecomment|/* Position */}} [0,0,0],
 +
{{codecomment|/* MoveVelocity */}} [0,0,0.5],
 +
{{codecomment|/* Simulation */}} 1,1.30,1,0, {{cc|rotationVel, weight, volume, rubbing}}
 +
{{codecomment|/* Scale */}} [0.03,0.03,0.03,0],
 +
{{codecomment|/* Color */}} [[1,1,1,1],[1,1,1,1]],
 +
{{codecomment|/* AnimSpeed */}} [1.5,0.5],
 +
{{codecomment|/* randDirPeriod */}} 0.01,
 +
{{codecomment|/* randDirIntensity */}} 0.08,
 +
{{codecomment|/* onTimerScript */}} "",
 +
{{codecomment|/* DestroyScript */}} "",
 +
{{codecomment|/* object */}} _this,
 +
{{codecomment|/* Angle */}}            0,
 +
{{codecomment|/* onSurface */}}        true,
 +
{{codecomment|/* bounceOnSurface */}}  0.5,
 +
{{codecomment|/* emissiveColor */}}    [<nowiki/>[0,0,0,0]]];
 +
 +
{{cc|RANDOM / TOLERANCE PARAMS}}
 +
_source [[setParticleRandom]] [
 +
{{codecomment|/* LifeTime */}} 2,
 +
{{codecomment|/* Position */}} [2,2,0.25],
 +
{{codecomment|/* MoveVelocity */}} [0,0,0],
 +
{{codecomment|/* rotationVel */}} 1,
 +
{{codecomment|/* Scale */}} 0.02,
 +
{{codecomment|/* Color */}} [0,0,0,0.1],
 +
{{codecomment|/* randDirPeriod */}} 0.01,
 +
{{codecomment|/* randDirIntensity */}} 0.03,
 +
{{codecomment|/* Angle */}} 10];
 +
 +
_source [[setDropInterval]] 0.003;
 +
[[private]] _soundSource = [[createSoundSource]] ["Sound_Flies", [[getPos]] ([[_this]] [[select]] 0), [], 0];
 +
 +
 +
== Tutorials ==
 +
 +
* [http://www.ofpec.com/ed_depot/index.php?action=details&id=38&page=0&cat=xyz Vektorboson's Drop Tutorial]

Revision as of 05:58, 19 January 2020

ja This user is an native Japanese speaker. このユーザーは日本語母語話者です。
en-2 This user is able to contribute at an intermediate level of English.
Where I live
Steam Twitter(JA/EN) Forums
Also cursed biography on my blog

My very own sandbox (aka Idea for contribute to the wiki)

April Fool things by Bohemia Interactive

2014 Arma 3 Karts (It eventually became true)
2015 Nothing?
2016 “Arma” Eau De Combat
2017 Nothing due to it being a Saturday.
2018 Nothing due to it being a Sunday.
2019 Bohemia Sandbox Theme Park
2020 More to come... Soon™
... ...
2035 Launches Operation Magnitude

Missing events in Armaverse Timeline

  • Red Tiger Coup
  • Kavala Coup
  • Jerusalem Ceasefire
  • First Contact events (Which aren't canon though)
    • June 15 2039, Electron-39 starts
    • Olom Meteor Strike in 2020 (Coverup news)
    • July 7 2039, Electron-39 supposed to be ended

Maybe there's more

Easter eggs in BI games

Category:Easter Eggs

Is DLC Restricted?

->Arma_3_DLC_Restrictions¯\_(ツ)_/¯

Obsolete → Outdated template

🗑
The following information is outdated as of Armed Assault v1.15: See Template:outdated 😉

Missile Components

Kind of personal memo. Useful when you're trying to do setMissileTarget and setMissileTargetPos?
Looks like SACLOS one (manualControl = 1) is the only component to do setMissileTargetPos.
See Also: Component Types, Munition guidance list

Missile Components list
classname Cone (degrees) Components Air Target Range (m) Ground Target Range (m) Max lock speed (km/h) Used in
MissileCore 50 SACLOS N/A N/A 0 N/A
ammo_Missile_CruiseBase 360 Data Link 0?-32000 0?-32000 1 N/A
ammo_Missile_CannonLaunchedBase 50 AI Manual 500-8000 500-8000 0 N/A
SACLOS N/A N/A
ammo_Bomb_LaserGuidedBase 120 NV 500-5000 500-5000 30 N/A
Laser 0?-5000 0?-5000
Laserbeam 0 SACLOS N/A N/A 0 Designator Batteries
M_PG_AT 30 IR 500-4000 500-4000 35 DAGR
DAGR
DAGR
Laser 0?-4000 0?-4000
SACLOS N/A N/A
M_AT 30 IR 500-4000 500-4000 35 DAR
DAR
DAR
Laser 0?-4000 0?-4000
M_NLAW_AT_F 5 Visual 500-800 500-800 35 PCML Missile
M_Scalpel_AT 30 IR 500-6000 500-6000 55 Scalpel E2
Scalpel E2
Scalpel E2
Scalpel
Scalpel
Scalpel 3x
Scalpel 4x
Laser 0?-6000 0?-6000
SACLOS N/A N/A
M_Scalpel_AT_hidden 30 IR 500-6000 500-6000 55 Scalpel E2
Laser 0?-6000 0?-6000
SACLOS N/A N/A
Bo_Air_LGB 30 IR 500-6000 500-6000 55 N/A
Laser 0?-6000 0?-6000
SACLOS N/A N/A
Bo_Air_LGB_hidden 30 IR 500-6000 500-6000 55 N/A
Laser 0?-6000 0?-6000
SACLOS N/A N/A
Bo_GBU12_LGB 120 NV 500-5000 500-5000 30 GBU-12
Laser 0?-5000 0?-5000
Bo_GBU12_LGB_MI10 120 NV 500-5000 500-5000 30 GBU-12
Laser 0?-5000 0?-5000
Bomb_03_F 120 NV 500-5000 500-5000 30 LOM-250G
KAB 250 LGB x1
KAB 250 LGB x1
Laser 0?-5000 0?-5000
Bomb_04_F 120 NV 500-5000 500-5000 30 GBU-12
GBU 12 LGB x1
GBU 12 LGB x1
GBU 12 LGB x2
Laser 0?-5000 0?-5000
M_Titan_AA 4 IR 500-3500 500-2500 250 Titan AA Missile
M_Titan_AA_static 4 IR 500-3500 500-2500 250 Zephyr
M_Titan_AA_long 30 IR 500-4500 500-3500 500 Titan Missile
Titan Missile
M_Zephyr 40 Radar 0?-10000 0?-5000 835 Zephyr
Zephyr
Zephyr
M_Zephyr_Mi06 40 Radar 0?-10000 0?-5000 835 N/A
M_Zephyr_air 40 Radar 0?-10000 0?-5000 835 N/A
M_Air_AA 90 IR 500-6000 500-5000 600 ASRAAM
ASRAAM
ASRAAM
ASRAAM
M_Air_AA_MI02 90 IR 500-6000 500-5000 600 ASRAAM
ASRAAM
M_Air_AA_MI06 90 IR 500-6000 500-5000 600 ASRAAM
M_Titan_AT 4.5 IR 500-2000 500-2000 35 Titan AT Missile
SACLOS N/A N/A
M_Titan_AP 4.5 SACLOS N/A N/A 35 Titan AP Missile
M_Titan_AT_static 4.5 IR 500-2000 500-2000 35 Titan Missile
SACLOS N/A N/A
M_Titan_AT_long 12 IR 500-5000 500-5000 35 Titan Missile
Titan Missile
Titan Missile
SACLOS N/A N/A
M_Air_AT 4.5 IR 500-2000 500-2000 35 AG Missiles
AG Missiles
SACLOS N/A N/A
Missile_AA_04_F 30 IR 500-5000 500-4000 445 Falchion-22
Falchion-22
Missile_AGM_02_F 50 IR 500-8000 500-8000 55 Macer
Macer 3x
Macer II AGM x1
Macer II AGM x1
Macer II AGM x2
Macer II AGM x1
Macer II AGM x2
M_Mo_82mm_AT 40 IR 500-800 500-800 0 N/A
M_Mo_82mm_AT_LG 40 Laser 0?-800 0?-800 0 N/A
M_Mo_120mm_AT 40 IR 500-800 500-800 0 N/A
M_Mo_120mm_AT_LG 40 Laser 0?-800 0?-800 0 N/A
M_Mo_155mm_AT 40 IR 500-800 500-800 0 N/A
M_Mo_155mm_AT_LG 40 Laser 0?-800 0?-800 0 N/A
M_Mo_230mm_AT_LG 40 Laser 0?-800 0?-800 0 N/A
M_Mo_230mm_AT 40 IR 500-800 500-800 0 N/A
Missile_AA_03_F 45 IR 500-6000 500-4000 700 Sahr-3
Sahr-3
Missile_AGM_01_F 20 IR 500-8000 500-8000 40 Sharur
KH25 AGM x1
KH25 AGM x1
KH25 AGM x1
M_Jian_AT 30 IR 500-6000 500-6000 35 Jian
Laser 0?-6000 0?-6000
SACLOS N/A N/A
ammo_Missile_MediumRangeAABase 70 Active Radar 0?-12000 0?-8000 777.778 N/A
Data Link 0?-12000 0?-8000
ammo_Missile_ShortRangeAABase 180 IR 500-5000 500-4000 600 N/A
ammo_Missile_rim116 180 IR 500-5000 500-4000 600 Spartan AA
ammo_Missile_rim162 170 Active Radar 0?-12000 0?-8000 888.889 Centurion AA
Data Link 0?-12000 0?-8000
ammo_Missile_AMRAAM_C 70 Active Radar 0?-12000 0?-8000 777.778 AMRAAM C AA x1
AMRAAM C AA x1
AMRAAM C AA x1
AMRAAM C AA x2
Data Link 0?-12000 0?-8000
ammo_Missile_AMRAAM_D 140 Active Radar 0?-13000 0?-9000 777.778 AMRAAM D AA x1
AMRAAM D AA x1
AMRAAM D AA x1
AMRAAM D AA x1
AMRAAM D AA x2
Data Link 0?-13000 0?-9000
ammo_Missile_BIM9X 180 IR 500-5000 500-4000 600 BIM 9X AA x1
BIM 9X AA x1
BIM 9X AA x1
BIM 9X AA x2
ammo_Missile_AA_R77 90 Active Radar 0?-12000 0?-8000 777.778 R77 MR AA x1
R77 MR AA x1
R77 MR AA x1
Data Link 0?-12000 0?-8000
ammo_Missile_AA_R73 150 IR 500-6000 500-4000 600 R73 SR AA x1
R73 SR AA x1
BombCluster_01_Ammo_F 120 NV 500-5000 500-5000 30 CBU-85
CBU-85 Cluster x1
CBU-85 Cluster x2
Laser 0?-5000 0?-5000
BombCluster_02_Ammo_F 120 NV 500-5000 500-5000 30 RBK-500F
RBK-500F Cluster x1
Laser 0?-5000 0?-5000
BombCluster_02_Cap_Ammo_F 120 NV 500-5000 500-5000 30 RBK-500F Cluster x1
Laser 0?-5000 0?-5000
BombCluster_03_Ammo_F 120 NV 500-5000 500-5000 30 BL778
BL778 Cluster x1
BL778 Cluster x2
Laser 0?-5000 0?-5000
M_125mm_cannon_ATGM 50 AI Manual 500-8000 500-8000 0 125mm ATGM
SACLOS N/A N/A
M_120mm_cannon_ATGM 50 AI Manual 500-8000 500-8000 0 120mm ATGM
SACLOS N/A N/A
M_120mm_cannon_ATGM_LG 180 Laser 0?-8000 0?-8000 35 120mm ATGM LG
M_Vorona_HEAT 50 SACLOS N/A N/A 0 9M135 HEAT Missile
M_Vorona_HE 50 SACLOS N/A N/A 0 9M135 HE Missile
M_127mm_Firefist_AT 4 IR 500-4500 500-4500 41.6667 FireFIST ATGM Missile
ammo_Missile_Cruise_01 360 Data Link 0?-32000 0?-32000 1 Cruise Missile HE
ammo_Missile_Cruise_01_Cluster 360 Data Link 0?-32000 0?-32000 1 Cruise Missile Cluster
ammo_Missile_LongRangeAABase 70 Active Radar 0?-16000 0?-8000 777.778 N/A
Data Link 0?-16000 0?-8000
ammo_Missile_AntiRadiationBase 120 Anti Radiation 0?-16000 0?-16000 55 N/A
ammo_Bomb_SmallDiameterBase 120 NV 0?-8000 0?-8000 30 N/A
Laser 0?-8000 0?-8000
IR 500-8000 500-8000
ammo_Missile_mim145 120 Active Radar 0?-16000 0?-8000 777.778 Defender AA
ammo_Missile_s750 120 Active Radar 0?-16000 0?-8000 777.778 Rhea AA
ammo_Missile_HARM 120 Anti Radiation 0?-16000 0?-16000 55 AGM-88C HARM x1
AGM-88C HARM x1
AGM-88C HARM x1
AGM-88C HARM x1
ammo_Bomb_SDB 120 NV 0?-8000 0?-8000 30 GBU SDB x1
GBU SDB x4
Laser 0?-8000 0?-8000
IR 500-8000 500-8000
ammo_Missile_KH58 120 Anti Radiation 0?-16000 0?-16000 55 KH58 ARM x1
KH58 ARM x1
KH58 ARM x1

_data = ("isClass (_x >> 'Components' >> 'SensorsManagerComponent' >> 'Components') or (getNumber (_x >> 'manualControl') == 1)" configClasses (configFile >> "CfgAmmo") apply { _cfg = _x ; _mags = "getText (_x >> 'ammo') == configName _cfg" configClasses (configFile >> "CfgMagazines") ; _launchers = ("(getNumber (_x >> 'scope') >= 1) and { (configName _x) isKindOf ['LauncherCore',(configFile >> 'CfgWeapons')] }" configClasses (configFile >> "CfgWeapons")) ; [ configName _cfg, "true" configClasses (_cfg >> "components" >> "SensorsManagerComponent" >> "Components"), _mags//_launchers select {(toLower (_mags#0)) in (([configName _x,true] call BIS_fnc_compatibleMagazines) apply {toLower _x})} ] }) ; #define PB _return pushBack _return = [ '{| class="wikitable sortable"', '|+Missile Components list', '|-', '!classname', '!Cone (degrees)', '!Components', '!Air Target Range (m)', '!Ground Target Range (m)', '!Max lock speed (km/h)', '!Used in' ] ; _lastSpan = 0 ; _addComponent = { if !(_this isEqualTo "SACLOS") then { PB "|" + (configName _this call _componentToString) ; { _minRange = getNumber (_this >> _x >> "minRange") ; _maxRange = getNumber (_this >> _x >> "maxRange") ; if (_minRange == _maxRange) then { PB "|" + "0?-" + (str _maxRange) ; } else { PB "|" + (str _minRange) + "-" + (str _maxRange) ; } ; } forEach ["AirTarget","GroundTarget"] ; } else { PB "|" + "SACLOS" ; PB "|" + "N/A" ; PB "|" + "N/A" ; } ; } ; _componentToString = { if (_this == "IRSensorComponent") exitWith {"IR"} ; if (_this == "NVSensorComponent") exitWith {"NV"} ; if (_this == "LaserSensorComponent") exitWith {"Laser"} ; if (_this == "VisualSensorComponent") exitWith {"Visual"} ; if (_this == "RadarSensorComponent") exitWith {"Radar"} ; if (_this == "DataLinkSensorComponent") exitWith {"Data Link"} ; if (_this == "ActiveRadarSensorComponent") exitWith {"Active Radar"} ; if (_this == "AntiRadiationSensorComponent") exitWith {"Anti Radiation"} ; if (_this == "AIManualSensorComponent") exitWith {"AI Manual"} ; _this } ; { _x params ["_name","_sensors","_wpn"] ; _cfg = (configFile >> "CfgAmmo" >> _name) ; if (getNumber (_cfg >> "manualControl") == 1) then { _sensors pushBack "SACLOS" ; } ; PB "|-" ; _rowspan = (if (count _sensors >= 2) then {format ['rowspan="%1"|',count _sensors]} else {""}) ; PB "|" + _rowspan + _name ; PB "|" + _rowspan + str getNumber (_cfg >> "missileLockCone") ; _sensors#0 call _addComponent ; PB "|" + _rowspan + str getNumber (_cfg >> "missileLockMaxSpeed") ; if (count _wpn != 0) then { PB "|" + _rowspan + ((_wpn apply {getText (_x >> "displayName")}) - [""] joinString "<BR>") ; } else { PB "|" + _rowspan + "N/A" ; } ; { if (_forEachIndex != 0) then { PB "|-" ; _x call _addComponent ; } ; } forEach _sensors ; } forEach _data ; PB "|}" ; copyToClipboard (_return joinString endl) ;

Particle effects

Useful particle effects.
See also: ParticleArray

Type Note
["a3\data_f\particleeffects\universal\universal.p3d",16,10,32,1],"","billboard" Fire
["a3\data_f\particleeffects\universal\universal.p3d",16,12,8,0],"","billboard" White smoke
["a3\data_f\particleeffects\universal\universal.p3d",16,13,2,0],"","billboard" Fire spark
["a3\data_f\particleeffects\universal\universal.p3d",16,14,5,1],"","billboard" Chaff
["a3\data_f\particleeffects\universal\universal.p3d",16,7,48,1],"","billboard" Smoke 1
["a3\data_f\particleeffects\universal\universal_02.p3d",8,0,40,1],"","billboard" Smoke 2
["a3\data_f\particleeffects\universal\universal.p3d",16,12,13,0],"","billboard" Dusty smoke
["a3\data_f\particleeffects\universal\universal.p3d",16,2,80,0],"","billboard" Explosion 1
["a3\data_f\particleeffects\universal\universal.p3d",16,0,32,0],"","billboard" Explosion 2
["a3\data_f\particleeffects\universal\universal.p3d",16,13,10,0],"","billboard" Water splash
["a3\data_f\particleeffects\universal\universalonsurface.p3d",16,12,8,0],"","billboard" Water splash (surface)
["a3\data_f\particleeffects\universal\stonesmall.p3d",1,0,1,1],"","spaceobject" Stone (grey)
["a3\data_f\particleeffects\pstone\pstone.p3d",1,0,1,1],"","spaceobject" Stone (khaki)
["a3\data_f\particleeffects\wallpart\wallpart.p3d",1,0,1,1],"","spaceobject" Building shard
["a3\data_f\particleeffects\universal\universal.p3d",16,12,9,0],"","billboard" Dirt
["a3\data_f\particleeffects\shard\shard.p3d",1,0,1,0],"","spaceobject" Metal shard 1
["a3\data_f\particleeffects\shard\shard2.p3d",1,0,1,0],"","spaceobject" Metal shard 2
["a3\data_f\particleeffects\shard\shard3.p3d",1,0,1,0],"","spaceobject" Metal shard 3
["a3\data_f\particleeffects\shard\shard4.p3d",1,0,1,0],"","spaceobject" Metal shard 4
["a3\data_f\particleeffects\universal\refract.p3d",1,0,1,0],"","billboard" Refract/haze
["a3\data_f\particleeffects\universal\underwatersmoke.p3d",4,0,16,1],"","billboard" Bubbles
["a3\data_f\particleeffects\universal\universal.p3d",16,13,1,0],"","billboard" Blood
["a3\data_f\particleeffects\universal\meat_ca.p3d",1,0,1,0],"","spaceobject" Body meat
["a3\data_f\particleeffects\universal\universalonsurface.p3d",16,13,3,0],"","billboard" Water splash 2 (surface)
["a3\data_f\particleeffects\universal\universal.p3d",16,12,16,0],"","billboard" White orb
["a3\data_f\particleeffects\universal\sparksball.p3d",1,0,1,0],"","spaceobject" Spark
["a3\data_f\particleeffects\wallpart\wallpart2.p3d",1,0,1,1],"","spaceobject" Concrete debri
["a3\data_f\particleeffects\universal\universal.p3d",16,15,15,1],"","billboard" Single bubble

ctrlCreate controls

Show text

Not even tested - I'd like to add it to ctrlCreate article after confirm "(isNumber (_x >> 'type') isEqualTo true) and !isClass (_x >> 'controls')" configClasses (configFile) apply {"* " + configName _x} joinString endl

ParticleArray

Todo and note:
-Add the section for the array from setParticleRandom, setParticleCircle, setParticleFire?
-Planning remove and merge to format section, suggestions?
-Make A3-compatible copy-and-paste examples

Particle is a lightweight for performance effect system that is to be used for emulate dusts, fires, explosions, and/or anything. Every explosions, dusts, fires and most of in-game 3D effects are made in this system.
Particles can be generated by script commands like drop, so you can also do emulate them easily.


Format

[ shapeName, animationName, type, timerPeriod, lifeTime, position, moveVelocity, rotationVelocity, weight, volume, rubbing, size, color, animationPhase, randomDirectionPeriod, randomDirectionIntensity, onTimer, beforeDestroy, object, angle, // since an unknown game/version onSurface, // since Arma 3 v0.74 bounceOnSurface, // since Arma 3 v0.74 emissiveColor, // since Arma 3 v1.08 vectorDir // since Arma 3 v1.92 ]

# parameter name Type Description
1 shapeName Render
Arma 3 universal particle texture, file path: a3\data_f\ParticleEffects\Universal\Universal

String or Array format [p3dPath, nth, index, count, loop]:

  • p3dPath: String - File path to the particle you desired to use.
  • nth: Number - Divide the particle texture by this number.
  • index: Number - The row index that start of the animation.
  • count: Number - The animation count that the particles will use. If the number is bigger than nth, will continue to next row.
  • loop: Number - (Optional, default 1) If 0, the particle will stop its animation when there's no more texture left, 1 to loop back to the start of the texture set.

For example, to use the fire texture that shown in the picture, put this: ["a3\data_f\ParticleEffects\Universal\Universal", 16, 10, 32, 1]

2 animationName N/A String - obsolete parameter that was meant to play .rtm anims, will throw "Skeletal animation not supported for particles" rpt error if not empty
3 type Render String - "Billboard" that the particle will always face to the camera, or "SpaceObject" that that particle is similar with regular objects.
4 timerPeriod Script Number - The script that defined in onTimer parameter will be executed in this time after a particle is generated, in seconds.
5 lifetime Physical Number - The life time of each particles in seconds.
6 position Physical Array format Position, the center is the position of the source.
7 moveVelocity Physical Array format velocity.
8 rotationVelocity Physical Number - particle rotations per second.
9 weight Physical Number - weight of the particle (kg).
10 volume Physical Number - volume of the particle in m3.
11 rubbing Physical Number - Determines how particles blown by winds (include downwash by helicopters).
12 size Render Array of Numbers - particle size along its lifetime, in meter.

Example: this will generate particles that 1m sized, then will increase its size to 2m and 4m when its end of life, smoothly. [1, 2, 4]

13 color Render Array of Arrays format Color

Example: this will generate half-transparent grey particle, then will change its color to transparent white. [[0.5, 0.5, 0.5, 0.3], [1, 1, 1, 0]]

14 animationPhase Render Array of Numbers - phase of the animation in time. In other words, the play speed of the selected frames for the Number of Frames to Play above. The higher the number, the faster it plays through the animation frames. Note that if the Number of Frames to Play above is set to 1, this will have no visible effect.

Example: [2, 0]

15 randomDirectionPeriod Random Number - In seconds.
16 randomDirectionIntensity Random Number - How particles change its velocity every once in randomDirectionPeriod seconds, in meters?
17 onTimer Script String - code executed on timer. private _particlePosition = this;
18 beforeDestroy Script String - code executed right before particle's destruction. private _particlePosition = this;
19 object Physical Object - If this parameter isn't objNull, the particle source will be attached to the object. The source will stop to generate its particles when the distahce between the object and the source is further than Object View Distance.
20 angle Physical Number - (Optional, default 0) determines the particle's starting angle in radian. pi = 180°. Since an unknown game/version
21 onSurface Physical Boolean - (Optional, default false) Bounce the particles when hit the surface if true. If circleRadius > 0, placing of particle on (water) surface on start of its existence. Circle radius is defined by command setParticleCircle. Since Arma 3 v0.74
22 bounceOnSurface Physical Number - (Optional, default -1) coef of bounce in collision with ground, 0..1 for collisions, -1 to disable collision. Should be used soberly as it has a significant impact on performance. Since Arma 3 v0.74
23 emissiveColor Render Array of Arrays format Color - (Optional, default [ ]?) Sets emissivity of the particle (RGB0). Works as lighting of particles, so must be combined with correctly set particle color. Last parameter has no meaning for now. Since Arma 3 v1.08
24 vectorDir Physical Array format vectorDir? - (Optional) Sets the default direction for SpaceObject particles. Since Arma 3 v1.92

Parameters

Global parameters

ArmA particle texture

ShapeName - Name of the shape associated with the particle.

In ArmA, the ShapeName is defined as an array. This should be the particle shape name, followed by three integers.
Example: ["\Ca\Data\ParticleEffects\FireAndSmokeAnim\SmokeAnim.p3d", 8, 5, 0]
1. Anim Divisor (1 for a 1x1, 8 for a 8x8, etc)
2. Anim Starting Row
3. Number of Frames to Play (speed controlled by animation phase below)
In this shot of "\Ca\Data\ParticleEffects\FireAndSmokeAnim\SmokeAnim.p3d", note the following:
The image used for this particle effect is 8X8 effect frames. This means you need to use 8 as your Anim Divisor. Overwise, the game will either draw too much of the image used, or too little. This is highly visible in most situations.
The Anim Starting Row picks the coresponding superimposed number in the image above. 0 picks the first smoke effect, 1 picks the second smoke effect, 2 picks the first fire effect, etc.
The setting for the Number of Number of Frames to Play should, in most cases, be the number of effects available to the animation. If you go over this (for example, selecting 9 in this 8X8 tile), it will start playing the animation frames of the next effect down. If there is nothing below to grab, it will draw a blank for that frame. If 1 is used, it will only play the first frame of the selected row.
If you want to find out of how many rows a datasource consists use ["...", 1, 0, 1] to see the full picture as a particle.
Arma2 particle texture

In ArmA 2 (and OA), the method for determining how many frames to play has changed.

Example 1:

["\Ca\Data\ParticleEffects\Universal\Universal", 16, 10, 32, 1]
1. Anim Divisor (for the new Universal particle model it is 16 since the texture file is 16x16)
2. Anim Starting Row (starting a 0)
3. Number of Frames to play (Starting with 1 and not 0)
4. Animation Loop (0 = no loop, 1 = loop (default if left blank is 1))
Example 1 above (a fire burning) will start the animation in row 10, will play from frames 1 to 32, and will loop.


Also in ArmA 2 and OA, To achieve a single frame of animation that is not the first column of a row, use the third numerical value as a column selection instead of indicating how many frames to play.

Example 2:

["\Ca\Data\ParticleEffects\Universal\Universal", 16, 12, 9, 0]
1. Anim Divisor (for the new Universal particle model it is 16 since the texture file is 16x16)
2. Anim Starting Row (starting at 0)
3. Column Selection (Starting with 1 and not 0)
4. Animation Loop (0 = no loop, 1 = loop (default if left blank is 1))
Additional Step: You must also set the AnimationPhase value (described in render parameters) to a large number (such as 1000) if you only want to play a single frame. The reason for this is that the game engine does not only play a single frame, it actually begins at the first frame in the row and cycles to the desired frame. If a small AnimationPhase number is used then you can actualy see the animation cycle through the all the frames (1-9). A large number makes this imperceptible and only the desired frame appears to be displayed.
Arma3 particle texture (Universal)
Example 2 above (exploding rock dust) will start the animation in row 12, will only play frame 9, and will not loop.


AnimationName - Has to be a String, but it is obsolete. Used to play .rtm anims, if not empty, it will throw "Skeletal animation not supported for particles" rpt error

Type - Type of particle (either "Billboard" or "SpaceObject").

TimerPeriod - The period of calling the "OnTimer" event (in sec).

LifeTime - Life time of the particle (in sec).

Physical parameters

Position -' Either 3D coordinate (x, y, z) or name of the selection - in this case the Object property must be set.

MoveVelocity - 3D vector (x, y, z) which describes the velocity vector of the particle direction and speed in m/s.

RotationVelocity - Float number which determines number of rotations in one second.

Weight - Weight of the particle (kg).

Volume - Volume of the particle (m^3).

Rubbing - Float number without dimension which determines the impact of the density of the environment on this particle. 0 - no impact (vacuum).

Angle - Float number which determines starting angle of the particle.

OnSurface - Boolean. Placing of particle on (water) surface on start of it's existence, default value is true, works only if circleRadius > 0. Circle radius is defined by command setParticleCircle. Works since Arma 3 v. 0.74.

BounceOnSurface - Coef of speed's loosing in collision with ground, 0-1 for collisions, -1 disable collision. Default value -1. Should be used soberly, it has significant impact on performance. Works since Arma 3 v. 0.74.

Arma3 particle texture (Universal_02)

Render parameters

Note: All these values are set as arrays to show their development in time.

If you set the array [1, 2] as a size, then at the beginning the size of the particle will be 1 and at the end of the life time of the particle its size will be 2.

The rest of the values during the life time will be linearly interpolated.


Size - Size of the particle in time to render (m).

Color - Colour of the particle in time to render (RGBA).

EmissiveColor - Sets emissivity of the particle (RGB0). Works as lighting of particles, so must be combined with correctly set particle color. Last parameter has no meaning for now.

AnimationPhase - Phase of the animation in time. In other words, the play speed of the selected frames for the Number of Frames to Play above. The higher the number, the faster it plays through the animation frames. Note that if the Number of Frames to Play above is set to 1, this will have no visible effect.

Random parameters

RandomDirectionPeriod - Period of change of the velocity vector (s).

RandomDirectionIntensity - Each MoveVelocity component will be changed with random value from interval <0, RandomDirectionIntensity>.

OnTimer - Name of the script to run every period determined by TimerPeriod property.

Position of the particle is stored in "this" variable.

BeforeDestroy - Name of the script to run right before destroying the particle.

Position of the particle is stored in "this" variable.

Object - Object to bind this particle to.


Example

For several examples of the kind of effects that can be accomplished via particles, see ParticleTemplates.

Thunderbolt

Create thunderbolt on logic named logic1:

private _pos = [position logic1 select 0,position logic1 select 1, 10];
drop ["blesk1", "", "Billboard", 0.01, 0.2, _pos, [0,0,0], 0, 1, 1, 0, [20 + random 20], [[1,1,1,1], [1,1,1,0.7]], [1,0], 0, 0, "", "", ""];

Mass grave Flies

// SCRIPT FOR GENERATING FLIES AROUND MASS GRAVE

// FIXED PARAMS
private _source = "#particlesource" createVehicleLocal getPos (_this select 0);
_source setParticleParams [
/* Sprite */			["\ca\characters2\OTHER\FLY.p3d",1,0,1,0], // File,Ntieth,Index,Count,Loop
/* Animation */			"",
/* Type */				"spaceObject",
/* TimerPer */			1,
/* Lifetime */			4,
/* Position */			[0,0,0],
/* MoveVelocity */		[0,0,0.5],
/* Simulation */		1,1.30,1,0, // rotationVel, weight, volume, rubbing
/* Scale */				[0.03,0.03,0.03,0],
/* Color */				[[1,1,1,1],[1,1,1,1]],
/* AnimSpeed */			[1.5,0.5],
/* randDirPeriod */		0.01,
/* randDirIntensity */	0.08,
/* onTimerScript */		"",
/* DestroyScript */		"",
/* object */			_this,
/* Angle */             0,
/* onSurface */         true,
/* bounceOnSurface */   0.5,
/* emissiveColor */     [[0,0,0,0]]];

// RANDOM / TOLERANCE PARAMS
_source setParticleRandom [
/* LifeTime */			2,
/* Position */			[2,2,0.25],
/* MoveVelocity */		[0,0,0],
/* rotationVel */		1,
/* Scale */				0.02,
/* Color */				[0,0,0,0.1],
/* randDirPeriod */		0.01,
/* randDirIntensity */	0.03,
/* Angle */				10];

_source setDropInterval 0.003;
private _soundSource = createSoundSource ["Sound_Flies", getPos (_this select 0), [], 0];


Tutorials