desc.ext: Difference between revisions
m (Text replacement - " ofp " to " {{ofp}} ") |
Lou Montana (talk | contribs) m (Text replacement - " (={2,})([^ = ])(.*)([^ = ])(={2,}) * " to " $1 $2$3$4 $5 ") |
||
Line 1: | Line 1: | ||
=Basics= | =Basics= | ||
==Mission Related File References== | == Mission Related File References == | ||
'Mission Related' files are | 'Mission Related' files are | ||
Line 8: | Line 8: | ||
*any.bikb (arma only) | *any.bikb (arma only) | ||
*any.fsm (arma only) | *any.fsm (arma only) | ||
==Files vs Paths== | == Files vs Paths == | ||
There are four classes of file reference. | There are four classes of file reference. | ||
Line 41: | Line 41: | ||
For Addons that have no internal prefix (All of OFP, and some Arma Oem's), the NameOfPbo is substitued. | For Addons that have no internal prefix (All of OFP, and some Arma Oem's), the NameOfPbo is substitued. | ||
==Ofp vs Arma== | == Ofp vs Arma == | ||
*Where relevant, prepending DtaExt\ or Scripts\ remains the same. | *Where relevant, prepending DtaExt\ or Scripts\ remains the same. | ||
Line 49: | Line 49: | ||
sound[] = {"S01v05.ogg", db-10, 1.0}; | sound[] = {"S01v05.ogg", db-10, 1.0}; | ||
actually refers to a ~Sound\S01v05.ogg. Arma does not prepend. | actually refers to a ~Sound\S01v05.ogg. Arma does not prepend. | ||
==sqX (Scripts)== | == sqX (Scripts) == | ||
sqX is the scripting language found in mission.sqm, *.sqs and *.sqf. A sqX script, regardless of source follows the following file pathing for missionspace (note that sqX encountered in addons behaves differently) | sqX is the scripting language found in mission.sqm, *.sqs and *.sqf. A sqX script, regardless of source follows the following file pathing for missionspace (note that sqX encountered in addons behaves differently) | ||
By convention only, sqX files are .sqs for exec calls and .sqf for execVM calls. (The actual extension is immaterial) | By convention only, sqX files are .sqs for exec calls and .sqf for execVM calls. (The actual extension is immaterial) | ||
===OFP=== | === OFP === | ||
OFP only uses exec | OFP only uses exec | ||
Line 66: | Line 66: | ||
*campaign\Scripts\ | *campaign\Scripts\ | ||
*OFP\Scripts\ | *OFP\Scripts\ | ||
===ARMA=== | === ARMA === | ||
[] exec(VM) "SoftFile.sqX"; | [] exec(VM) "SoftFile.sqX"; | ||
Line 82: | Line 82: | ||
*exe\ | *exe\ | ||
==desc.ext== | == desc.ext == | ||
===OFP=== | ===OFP=== | ||
====mission.ext==== | ==== mission.ext ==== | ||
sound[] = {"Anything",1,1}; | sound[] = {"Anything",1,1}; | ||
mission\Sound | mission\Sound | ||
sound[] = {"\Anything",1,1}; | sound[] = {"\Anything",1,1}; | ||
mission\ | mission\ | ||
====campaign.ext==== | ==== campaign.ext ==== | ||
sound[] = {"\Anything",1,1}; | sound[] = {"\Anything",1,1}; | ||
campaign\dtaext\Anything | campaign\dtaext\Anything | ||
Line 95: | Line 95: | ||
campaign\dtaext\sound\Anything | campaign\dtaext\sound\Anything | ||
====notes:==== | ==== notes: ==== | ||
For large missions, although and of course, you can place everything in a single mission folder with no subfolders, Ofp mission designers tend to use the following folder constructs: | For large missions, although and of course, you can place everything in a single mission folder with no subfolders, Ofp mission designers tend to use the following folder constructs: | ||
Line 112: | Line 112: | ||
sound[] = {"music\S01v05.ogg", db-10, 1.0}; //refers to ~\SOUND\Music\S01v05.ogg | sound[] = {"music\S01v05.ogg", db-10, 1.0}; //refers to ~\SOUND\Music\S01v05.ogg | ||
===ARMA=== | === ARMA === | ||
====mission.ext==== | ====mission.ext==== | ||
====campaign.ext==== | ==== campaign.ext ==== | ||
Unlike OFP, Arma engines allow a desc.ext to reference files otuside of it is own space. | Unlike OFP, Arma engines allow a desc.ext to reference files otuside of it is own space. | ||
Unlike OFP, Arma engines allow access from mission description.ext's into the campaign\space. | Unlike OFP, Arma engines allow access from mission description.ext's into the campaign\space. | ||
Line 131: | Line 131: | ||
loadScreen="\HardFile.paa"; | loadScreen="\HardFile.paa"; | ||
*exe\ ONLY | *exe\ ONLY | ||
==bikb== | == bikb == | ||
*Prior to hotfix patch in version 1.05, bikb couldn't access anything except addons | *Prior to hotfix patch in version 1.05, bikb couldn't access anything except addons | ||
*bikb is only a convention. you can have any extension. | *bikb is only a convention. you can have any extension. |
Revision as of 19:11, 31 January 2021
Basics
Mission Related File References
'Mission Related' files are
- mission.sqm
- desc.ext
- any.sqX file call (execvm, loadfile, etc)
- any.bikb (arma only)
- any.fsm (arma only)
Files vs Paths
There are four classes of file reference.
- \Hard\Path
- \HardFile (no path, just a file)
- Soft\Path
- SoftFile
Innocently similar references will result in drastically different search paths for the file of interest.
Note that a Soft\Path is not a relative file reference. (BI do not use relative addressing for anything in their engines except #include)
The following 'truth' was gleaned from an invaluable tool that saved days of hair pulling frustration:
http://technet.microsoft.com/en-us/sysinternals/bb896645
All honor and glory to Kju and Alef
General
As a general guide, the file search algorithm breaks down to the following, and in the following order:
- mission\
- Campaign\Scripts\ or Campaign\DtaExt\ (if a campaign)
- exe\Scripts\ or exe\DtaExt\
- PboPrefix
- exe\
PboPrefix is where the initial part (or all), of the Soft or \Hard path matches an Arma Addon's internal prefix.
By definition, Soft and \Hard files cannot refer to Addons because a file has no path information. Addons are defined as pbo's containing config.cpp's.
For Addons that have no internal prefix (All of OFP, and some Arma Oem's), the NameOfPbo is substitued.
Ofp vs Arma
- Where relevant, prepending DtaExt\ or Scripts\ remains the same.
- Arma extends desc.ext to be able to refer to files outside of it is own folder and children.
- Arma extends mission\desc.ext's to be able to refer to files in campaign\desc.ext
- An OFP engine prepends a Sound\ Folder to sound references in it is desc.ext. Thus:
sound[] = {"S01v05.ogg", db-10, 1.0};
actually refers to a ~Sound\S01v05.ogg. Arma does not prepend.
sqX (Scripts)
sqX is the scripting language found in mission.sqm, *.sqs and *.sqf. A sqX script, regardless of source follows the following file pathing for missionspace (note that sqX encountered in addons behaves differently)
By convention only, sqX files are .sqs for exec calls and .sqf for execVM calls. (The actual extension is immaterial)
OFP
OFP only uses exec
[] exec "\anything"
- exe\anything
[] exec "Soft\Path.sqs";
- mission\
[] exec "SoftFile.sqs";
- mission\
- campaign\Scripts\
- OFP\Scripts\
ARMA
[] exec(VM) "SoftFile.sqX";
- mission\
- exe\scripts\ OR campaign\scripts\
- exe\
[] exec(VM) "Soft\Path.sqX";
- mission\
- exe\scripts\ OR campaign\scripts\
- PboPrefix
[] execVM "\HardFile.sqf";
- exe\ ONLY
[] execVM "\Hard\Path.sqf";
- PboPrefix
- exe\
desc.ext
OFP
mission.ext
sound[] = {"Anything",1,1};
mission\Sound
sound[] = {"\Anything",1,1};
mission\
campaign.ext
sound[] = {"\Anything",1,1};
campaign\dtaext\Anything
sound[] = {"Anything",1,1};
campaign\dtaext\sound\Anything
notes:
For large missions, although and of course, you can place everything in a single mission folder with no subfolders, Ofp mission designers tend to use the following folder constructs:
- Sound
- Music
- Voice
- Scripts
- OtherStuff
This innocent and sensible looking order illustrates inconsistency of syntax in the texts. Thus:
sound[] = {"S01v05.ogg", db-10, 1.0}; // and sound[] = {"\sound\S01v05.ogg", db-10, 1.0}; // both refer to ~\Sound\S01v05.ogg
and
sound[] = {"\music\S01v05.ogg", db-10, 1.0}; //refers to ~\Music\S01v05.ogg
but
sound[] = {"music\S01v05.ogg", db-10, 1.0}; //refers to ~\SOUND\Music\S01v05.ogg
ARMA
mission.ext
campaign.ext
Unlike OFP, Arma engines allow a desc.ext to reference files otuside of it is own space. Unlike OFP, Arma engines allow access from mission description.ext's into the campaign\space.
loadScreen="Soft\Path.paa";
- mission\
- campaign\dtaext\
- arma\dtaext\
- PboPrefix
loadScreen="SoftFile.paa";
- mission\
- campaign\dtaext\
- arma\dtaext\
- exe\
loadScreen="\Hard\Path.paa";
- PboPrefix ONLY
loadScreen="\HardFile.paa";
- exe\ ONLY
bikb
- Prior to hotfix patch in version 1.05, bikb couldn't access anything except addons
- bikb is only a convention. you can have any extension.
- the file cannot be binarised even tho it is classtext. This is marked to change at further engine revisions.
- You can't specify soft\paths or SoftFiles, it results in a rpt error
Protocol bin\config.bin/RadioProtocol_EP1_EN/: Missing word fred\05bv01.ogg
speech[] = {"\Hard\Path.ogg"}; speech[] = {"\HardFile.ogg"};
either reference searches in the following order
- mission\
- campaign\
- PboPrefix (in the obvious case of a \hard\path)
other misc
class CfgRadio //straightfoward array of {filename,volume,pitch} { sounds[]={}; class Seq0{name="Seq0"; sound[]={"sound\09r06.wss", db-40, 1.0}; title=$STRM_09r06; }; }; class CfgSFX { sounds[]={hospoda2}; class Hospoda2 { name="Hospoda2"; sounds[]={sound1};//<<<<<name of sound array sound1[]={"hospoda2.ogg", db-0,1, 1, 1, 1, 1};//who knows empty[]= {, , , , 1 , 5, 20}; }; };
cfgSounds
titles[]={StartTime,Text,...};
ofp can use semi colons between
titles[]=
class CfgSounds { sounds[]={}; class Seq1 {name="Seq1"; sound[]={"sound\09v07.ogg", db, 1.0}; titles[]={0, $STRM_09v07}; };//standard class 11v01{name="11v01"; sound[]={"sound\11v01.ogg", db-05, 1.0}; titles[]={{0,0.4}, $STRM_11v01}; }; class 11v04{name="11v04"; sound[]={"sound\11v04.ogg", db-05, 1.0}; titles[]={ 0, $STRM_11v04, {5.5,0.5}, $STRM_11v04a}; }; class DX04v01 { name="DX04v01"; sound[]={"sound\DX04v01.ogg", db+60, 1.0}; titlesfont="tahomaB24"; titlessize=0.025; titles[]= { 0, $STRD_DX04v01; 10, $STRD_DX04v02;//show next text in 10 seconds // {{ofp}} will accept semi colon or ; for above }; };
cfgENVsounds=
class CfgEnvSounds { sounds[]={dest}; class dest { name="dest"; sound[]={"sound\dest.ogg", db, 1.0}; soundNight[]={"sound\dest.ogg", db, 1.0};//<<<< titles[]={}; }; };