https://wiki.zeroy.com/api.php?action=feedcontributions&user=CoDEmanX&feedformat=atom COD Modding & Mapping Wiki - User contributions [en] 2024-03-28T08:43:31Z User contributions MediaWiki 1.41.0 https://wiki.zeroy.com/index.php?title=Call_of_Duty:_Create_Models_with_Blender_(without_Maya)&diff=16719 Call of Duty: Create Models with Blender (without Maya) 2012-10-07T13:51:20Z <p>CoDEmanX: </p> <hr /> <div>''By CoDEmanX and Flybynyt''<br /> <br /> Create models and animations for CoD using free Blender and Blender-CoD addon (without Maya)! <br /> <br /> =Introduction=<br /> <br /> The Call of Duty mod tools include plugins for the commercial 3d modelling software [http://usa.autodesk.com/maya/ Maya] by Autodesk (former Alias). It's an expansive application and not many modders want to or can afford it.<br /> <br /> Fortunately, you don't require it anymore to create models (static/rigged) and animations for CoD:<br /> <br /> <br /> =Blender-CoD Add-On=<br /> <br /> [http://code.google.com/p/blender-cod/ Blender-CoD] is a '''free''', '''open-source''' project and provides a plugin for the as well free and open-source '''3D modelling software''' [http://www.blender.org/ '''Blender''']. It adds support for XMODEL_EXPORT v5/v6 and XANIM_EXPORT v3 formats, which can be compiled to xmodels and xanims using the mod tools. All CoD titles are supported for export (Blender -&gt; Asset Manager -&gt; Call of Duty):<br /> <br /> *XMODEL_EXPORT v5 (vCoD, CoD:UO)<br /> *XMODEL_EXPORT v6 (CoD2-CoD7)<br /> *XANIM_EXPORT v3 (all)<br /> *NT_EXPORT (CoD5, CoD7)<br /> <br /> You can basically import any supported 3d model into Blender (e.g. Blender files, Wavefront OBJ, Collada DAE, 3ds Max 3DS and more), edit it and finally export it for CoD using the Blender-CoD Add-On.<br /> <br /> <br /> ==Project page==<br /> <br /> The project is hosted at Google Projects. You can:<br /> *submit bugs and feature requests on the [http://code.google.com/p/blender-cod/issues/list '''issue'''] section,<br /> *browse the code of the repository in the [http://code.google.com/p/blender-cod/source/browse/ '''source'''] section and<br /> *get the latest releases in the [http://code.google.com/p/blender-cod/downloads/list '''download'''] area<br /> <br /> <br /> Link: http://code.google.com/p/blender-cod/<br /> <br /> If you want to contribute to the project as a coder, file and issue or send a mail to &lt;code&gt;blender-cod AT online DOT de&lt;/code&gt;<br /> <br /> <br /> ==Releases==<br /> <br /> *12-Apr-12 | [http://code.google.com/p/blender-cod/downloads/detail?name=Blender-CoD_Addon_v0.3.5_alpha3.zip '''Blender-CoD Addon v0.3.5 (alpha 3)'''] for [http://builder.blender.org/download/ Blender 2.62.3 (beta)] and later<br /> *01-Apr-12 | Blender-CoD Addon v0.3.4 (alpha 3) for Blender 2.62.3 (beta) and later<br /> *16-Feb-12 | Blender-CoD Addon v0.3.3 (alpha 3) for [http://www.blender.org/download/get-blender/ Blender 2.6x] and 2.59<br /> *25-Jan-12 | Blender-CoD Addon v0.3.2 (alpha 3)<br /> *29-Nov-11 | Blender-CoD Addon v0.3.1 (alpha 3)<br /> *22-Nov-11 | Blender-CoD Addon v0.3.0 (alpha 3)<br /> *09-Oct-11 | Blender-CoD Addon v0.2.3 (alpha 2)<br /> *29-Sep-11 | Blender-CoD Addon v0.2.2 (alpha 2)<br /> <br /> ==Features==<br /> <br /> '''XMODEL_EXPORT v5/v6'''<br /> *Supports mesh export with automatic triangulation<br /> *Armature export (bones)<br /> *Vertex colors (v6 only, optionally: use color as alpha)<br /> *Mesh modifiers except Armature (optional)<br /> *Armature animation (poses) to xmodel sequences (&quot;Pose animation&quot;)<br /> *Adjustable minimum bone weight (optional)<br /> *Vertex clean-up (optional)<br /> *User Interface: File &gt; Export &gt; CoD Xmodel (.XMODEL_EXPORT)<br /> <br /> <br /> '''XANIM_EXPORT v3'''<br /> *Supports armature animation export<br /> *Frame range and framerate can be specified<br /> *Notetrack export (all CoD titles)<br /> *User Interface: File &gt; Export &gt; CoD Xanim (.XANIM_EXPORT)<br /> <br /> <br /> ==Installation==<br /> <br /> #Download the archive, but don't unzip it!<br /> #Start Blender<br /> #Click menu ''File &gt; User Preferences...''<br /> #Activate the ''Addons'' section<br /> #Ignore an already installed version, it will be overwritten by default <br /> #Click ''Install Add-On...'' button at the bottom<br /> #Double-click the archive<br /> #The following entry should be shown: ''Import-Export: CoD model/anim addon (version)''<br /> #Tick the checkbox on the right to enable it<br /> #Click ''Save As Default'' button at the bottom to enable it permanently<br /> #Use the newly available options of the File &gt; Export / File &gt; Import menu <br /> <br /> <br /> &lt;videoflash&gt;6SkHz7wrAA8&lt;/videoflash&gt;<br /> <br /> <br /> =Usage=<br /> <br /> [[File:Blender-CoD_HowTo_Materials.png|thumb|Photo-montage about how to use materials in Blender for Blender-CoD addon]]<br /> <br /> Make sure the model meets the following requirements:<br /> *Meshes must have at least 3 vertices,<br /> *1 face,<br /> *1 image material and<br /> *UV mapping (mesh was unwrapped)<br /> <br /> <br /> Basic video tutorial on how to use the addon: [[Call_of_Duty:_Blender_to_COD|Blender to CoD]]<br /> <br /> <br /> ==Blender Tutorials==<br /> <br /> *[http://www.blender.org/education-help/tutorials/ Official Blender.org tutorial page] (many good text and video tutorials)<br /> *[http://www.blenderguru.com/ BlenderGuru.com tutorials] (high quality video tutorials and blog)<br /> *[http://blenderartists.org/forum/forumdisplay.php?32-Tutorials BlenderArtists.org Forum tutorials]<br /> *[http://en.wikibooks.org/wiki/Blender_3D:_Tutorial_Links_List Wikibooks Blender tutorial list] (some may be outdated, look for Blender 2.5x tutorials)<br /> *[http://www.blendernation.com/category/education/tutorials/ BlenderNation.com tutorials]<br /> *[http://www.pixel2life.com/tutorials/blender_3d/ Pixel2Life.com Blender tutorials]<br /> *[http://www.tutorialized.com/tutorials/Blender-3d/1 Tutorialized.com Blender tutorials]<br /> <br /> <br /> [[Category:Call of Duty 1]]<br /> [[Category:Call of Duty 2]]<br /> [[Category:Call of Duty 4]]<br /> [[Category:Call of Duty 5]]<br /> [[Category:Call of Duty 7]]<br /> [[Category:Modtools]]<br /> [[Category:Advanced Editing]]<br /> [[Category:Modelling]]<br /> [[Category:Blender]]<br /> [[Category:Maya]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_4:_Scripting_Reference_-_File::OpenFile&diff=16712 Call of Duty 4: Scripting Reference - File::OpenFile 2012-08-22T13:53:24Z <p>CoDEmanX: </p> <hr /> <div>{{Function<br /> |Version=4<br /> |Name=OpenFile( &amp;lt;filename&amp;gt;, &amp;lt;mode&amp;gt; )<br /> |Module=File<br /> |Available<br /> |Summary=Open a file for reading, writing, or appending. If successful returns a file number, otherwise returns -1<br /> |Call_on<br /> |Example=&lt;pre&gt;filenum = OpenFile( &quot;info.txt&quot;, &quot;read&quot; );&lt;/pre&gt;<br /> |Required_args=<br /> # &amp;lt;filename&amp;gt; The name of the file to open.<br /> # &amp;lt;mode&amp;gt; The file mode. Valid arguments are 'read', 'write' and 'append'.<br /> |Notes=Before opening a file, one should wait for the frame end:<br /> &lt;pre&gt;waittillframeend;<br /> openfile(...);&lt;/pre&gt;<br /> Reading files on a listen server might work during match start up only, see [http://modsonline.com/Forums-top-162943-0.html here].<br /> }}</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Custom_Sound_2&diff=16681 Call of Duty 5: Custom Sound 2 2012-04-25T21:17:40Z <p>CoDEmanX: </p> <hr /> <div>This tutorial explains how to encode soundfiles for World at War.<br /> <br /> This CoD title does not support MP3, but different types of WAVE: uncompressed PCM, xWMA, ADPCM and WAVEbext.&lt;br&gt;<br /> They all need a proprietary data block, called '''PRIV chunk'''. You can create it with the modtools' '''MODSound.exe''' as described below.<br /> <br /> <br /> __TOC__<br /> <br /> == Setup sound encode environment (once) ==<br /> <br /> Sound encoding won't work if there are any spaces in the folder paths, special characters might also cause problems. As the default installation path of the game contains spaces and renaming the directories would potentially break the game, I suggest to set up a new folder structure for sound conversion.<br /> <br /> #Create a folder on any drive, in any subfolders you want, but with '''no spaces''' in path!&lt;br&gt;For instance &lt;code style=&quot;color: green&quot;&gt;D:\Games\ModSound\&lt;/code&gt; (will be refered to as ''modsound dir'')&lt;br&gt;Bad: &lt;span style=&quot;text-decoration: line-through;&quot;&gt;&lt;code style=&quot;color: red&quot;&gt;D:\Games\sound path\&lt;/code&gt;&lt;/span&gt;<br /> #Create these 8 subfolders:&lt;ul&gt;&lt;li&gt;&lt;code&gt;ModSound\bin\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\raw\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\raw\soundaliases\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\sound_assets\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\sound_assets\raw\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\sound_assets\raw\sound\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\sound_assets\raw\sound\SFX\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\sound_assets\raw\sound\stream\&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;<br /> #Copy '''MODSound.exe''' from CoD modtools to your ModSound\bin\ folder (and keep explorer opened for later)<br /> #Get Microsoft's [http://msdn.microsoft.com/en-us/directx/ DirectX SDK]: [http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=6812 Download SDK June 2010] (currently latest)<br /> #Open the downloaded file (&lt;code&gt;DXSDK_Jun10.exe&lt;/code&gt;) with 7-Zip, e.g. right-click in explorer on the file, 7-Zip &gt; Open<br /> #Navigate to '''DXSDK\Utilities\bin\x86\'''<br /> #Select '''AdpcmEncode.exe''' and '''xWMAEncode.exe''', drag and drop them into your modsound's bin dir: &lt;code&gt;ModSound\bin\AdpcmEncode.exe&lt;/code&gt;...<br /> #Rename xWMAEncode.exe to '''WMAEncode.exe''' (leading &quot;x&quot; stripped off)<br /> #Get the zip-package of the [http://sourceforge.net/projects/sox/files/sox/ latest SoX] tool (Sound-Exchange): [http://sourceforge.net/projects/sox/files/sox/14.4.0/sox-14.4.0-win32.zip/download Download SoX v14.4.0]<br /> #Open it with 7-Zip or the like and extract the following files to your modsound folder's &lt;code&gt;bin\&lt;/code&gt; directory:&lt;ul&gt;&lt;li&gt;libgomp-1.dll&lt;/li&gt;&lt;li&gt;pthreadgc2.dll&lt;/li&gt;&lt;li&gt;sox.exe&lt;/li&gt;&lt;li&gt;zlib1.dll&lt;/li&gt;&lt;/ul&gt;<br /> #Done, your sound encoding environment is ready to go!<br /> <br /> <br /> == Convert sounds and soundaliases ==<br /> <br /> #Copy your custom soundalias file(s) from &lt;code&gt;CoD5\raw\soundaliases\&lt;/code&gt; to &lt;code&gt;ModSound\raw\soundaliases\&lt;/code&gt;&lt;br&gt;Soundalias CSV creation is not covered here, check other tutorials and stock CSVs (you may use [http://www.openoffice.org/ Open Office] to view them).&lt;br&gt;'''Note:''' Don't forget the column header line, which goes like &lt;code&gt;name,platform,file,sequence,vol_min&lt;/code&gt;... or it won't work at all!<br /> #Convert the sound files you wanna use to '''WAVE (Microsoft PCM 16-bit)''' using [http://audacity.sourceforge.net/download/ Audacity] if they aren't already wav (e.g. mp3 to wav).&lt;br&gt;You may also re-export wav files with fancy sample rates (other than 11025, 22050, 44100, 48000, 96000) or if you experience problems with sound conversion later on.<br /> #Put them into subfolders of &lt;code&gt;ModSound\sound_assets\raw\sound\&lt;/code&gt;, streamed audio goes into &lt;code&gt;stream\...&lt;/code&gt; and sound fx into &lt;code&gt;SFX\...&lt;/code&gt;&lt;br&gt;Create missing subfolders, like stream\'''music\''' for streamed music tracks or e.g. SFX\'''weapon\MG\''' if it's going to become a MG sound.<br /> #Sounds shouldn't be directly placed into &lt;code&gt;ModSound\sound_assets\raw\sound\&lt;/code&gt;, they may not work!<br /> #Go to &lt;code&gt;ModSound\&lt;/code&gt; in explorer, select '''bin''' folder, hold '''Shift and right-click''' on it. Context menu opens, click '''Open Command Window here''' (also see [http://www.askvg.com/enable-open-command-window-here-option-in-context-menu-in-windows-vista/ here])&lt;br&gt;Alternatively, hit Windows key, type cmd and hit enter to open a command prompt. If it says C:\... but your ModSound folder is on D:\..., type &lt;code&gt;D:&lt;/code&gt; (drive letter and colon) and hit return. Change to ModSound\bin\ folder with &lt;code&gt;cd the\path\ModSound\bin&lt;/code&gt; (e.g. Games\ModSound\bin) and hit enter<br /> #Type &lt;code&gt;modsound -pc -verbose -aliasfiles your_aliasfile_name&lt;/code&gt;&lt;br&gt;If the soundalias CSV is &lt;code&gt;ModSound\raw\soundaliases\mp_yourmap.csv&lt;/code&gt;, ''your_alias_name'' would be &lt;code&gt;mp_yourmap&lt;/code&gt;&lt;br&gt;(Note: modsound is not the ModSound directory, but the executable modsound.exe)<br /> #If you wanna force it to encode all sounds even if they been already converted, add &lt;code&gt;-clean&lt;/code&gt;, e.g. &lt;code&gt;modsound -pc -clean -verbose ...&lt;/code&gt;<br /> #As soon as you hit return, encoding will start and some info will be displayed. Hang on, especially ADPCM encoding can last quite a bit!<br /> #When it's finished, copy the encoded sound files from &lt;code&gt;ModSound\raw\sound\&lt;/code&gt; to &lt;code&gt;CoD5\raw\sound\&lt;/code&gt;<br /> #Add the soundalias CSV to your zone file: &lt;code&gt;sound,mp_yourmap,,all_mp&lt;/code&gt; (for SP: ''all_sp'' at the end)<br /> #Add sound fx (from &lt;code&gt;SFX\&lt;/code&gt; folder) as well.&lt;br&gt;Example for &lt;code&gt;raw\sound\&lt;u&gt;SFX\weapon\MG\shot&lt;/u&gt;.wav&lt;/code&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;sound,SFX/weapon/MG/shot&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;<br /> #Build fastfile with your zone file (either using Launcher or a batch script).<br /> #Pack streamed audio as IWD (not covered here).&lt;br&gt;Example for &lt;code&gt;raw\&lt;u&gt;sound\stream\music\mytrack.wav&lt;/u&gt;&lt;/code&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;mp_yourmap.iwd\sound\stream\music\mytrack.wav&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;<br /> #The soundaliases defined in your soundalias CSV should now be available. Note: You may have to place fastfiles / IWDs into &lt;code&gt;%localappdata%\Activision\CoDWaW\usermaps\mp_yourmap\&lt;/code&gt;!<br /> <br /> <br /> == Trouble shooting ==<br /> <br /> &lt;ul&gt;&lt;li&gt;<br /> &lt;p style=&quot;border: 1px solid gray&quot;&gt;ERROR: .../sound_assets/'''MODSound.hst : file not found'''&lt;/p&gt;<br /> You can ignore this error message, MODSound.hst will be automatically created.<br /> &lt;/li&gt;&lt;li&gt;<br /> If there are spaces or special characters in the folder paths to your ModSound directory, the following errors will occur:<br /> &lt;p style=&quot;border: 1px solid gray&quot;&gt;<br /> Converting D:\CoD5\'''path''' to '''space'''\sound_assets\raw\sound\SFX\test_raw.wav failed with&lt;br&gt;<br /> error '''ERROR_FILE_NOT_FOUND''' (The system cannot find the file specified)<br /> &lt;br&gt;&lt;br&gt;<br /> ERROR: '''Couldn't open input file.'''<br /> &lt;/p&gt;<br /> Read the above guide how to setup the sound encode environment!<br /> &lt;/li&gt;&lt;li&gt;<br /> MODSound.exe choses xWMA or ADPCM compression automatically. It will encode sounds from &lt;code&gt;raw\sound\stream\&lt;/code&gt; with ADPCM, as xWMA streaming isn't supported by the engine. So don't try to use an xWMA encoded wav as streamed music track, it will not work!<br /> &lt;/li&gt;&lt;/ul&gt;<br /> <br /> <br /> --[[User:CoDEmanX|CoDEmanX]] 22:03, 25 April 2012 (IST)<br /> <br /> [[Category:Call of Duty 5]]<br /> [[Category:Sounds]]<br /> [[Category:Modding]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Custom_Sound_2&diff=16680 Call of Duty 5: Custom Sound 2 2012-04-25T21:08:38Z <p>CoDEmanX: </p> <hr /> <div>This tutorial explains how to encode soundfiles for World at War. This CoD title does not support MP3, but different types of WAVE: uncompressed PCM, xWMA, ADPCM and WAVEbext. They all need a proprietary data block, called PRIV chunk. You can create it with the modtools' MODSound.exe as described below.<br /> <br /> == Setup sound encode environment (once) ==<br /> <br /> Sound encoding won't work if there are any spaces in the folder paths, special characters might also cause problems. As the default installation path of the game contains spaces and renaming the directories would potentially break the game, I suggest to set up a new folder structure for sound conversion.<br /> <br /> #Create a folder on any drive, in any subfolders you want, but with '''no spaces''' in path!&lt;br&gt;For instance &lt;code style=&quot;color: green&quot;&gt;D:\Games\ModSound\&lt;/code&gt; (will be refered to as ''modsound dir'')&lt;br&gt;Bad: &lt;span style=&quot;text-decoration: line-through;&quot;&gt;&lt;code style=&quot;color: red&quot;&gt;D:\Games\sound path\&lt;/code&gt;&lt;/span&gt;<br /> #Create these 8 subfolders:&lt;ul&gt;&lt;li&gt;&lt;code&gt;ModSound\bin\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\raw\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\raw\soundaliases\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\sound_assets\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\sound_assets\raw\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\sound_assets\raw\sound\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\sound_assets\raw\sound\SFX\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\sound_assets\raw\sound\stream\&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;<br /> #Copy '''MODSound.exe''' from CoD modtools to your ModSound\bin\ folder (and keep explorer opened for later)<br /> #Get Microsoft's [http://msdn.microsoft.com/en-us/directx/ DirectX SDK]: [http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=6812 Download SDK June 2010] (currently latest)<br /> #Open the downloaded file (&lt;code&gt;DXSDK_Jun10.exe&lt;/code&gt;) with 7-Zip, e.g. right-click in explorer on the file, 7-Zip &gt; Open<br /> #Navigate to '''DXSDK\Utilities\bin\x86\'''<br /> #Select '''AdpcmEncode.exe''' and '''xWMAEncode.exe''', drag and drop them into your modsound's bin dir: &lt;code&gt;ModSound\bin\AdpcmEncode.exe&lt;/code&gt;...<br /> #Rename xWMAEncode.exe to '''WMAEncode.exe''' (leading &quot;x&quot; stripped off)<br /> #Get the zip-package of the [http://sourceforge.net/projects/sox/files/sox/ latest SoX] tool (Sound-Exchange): [http://sourceforge.net/projects/sox/files/sox/14.4.0/sox-14.4.0-win32.zip/download Download SoX v14.4.0]<br /> #Open it with 7-Zip or the like and extract the following files to your modsound folder's &lt;code&gt;bin\&lt;/code&gt; directory:&lt;ul&gt;&lt;li&gt;libgomp-1.dll&lt;/li&gt;&lt;li&gt;pthreadgc2.dll&lt;/li&gt;&lt;li&gt;sox.exe&lt;/li&gt;&lt;li&gt;zlib1.dll&lt;/li&gt;&lt;/ul&gt;<br /> #Done, your sound encoding environment is ready to go!<br /> <br /> <br /> == Convert sounds and soundaliases ==<br /> <br /> #Copy your custom soundalias file(s) from &lt;code&gt;CoD5\raw\soundaliases\&lt;/code&gt; to &lt;code&gt;ModSound\raw\soundaliases\&lt;/code&gt;&lt;br&gt;Soundalias CSV creation is not covered here, check other tutorials and stock CSVs (you may use [http://www.openoffice.org/ Open Office] to view them).&lt;br&gt;'''Note:''' Don't forget the column header line, which goes like &lt;code&gt;name,platform,file,sequence,vol_min&lt;/code&gt;... or it won't work at all!<br /> #Convert the sound files you wanna use to '''WAVE (Microsoft PCM 16-bit)''' using [http://audacity.sourceforge.net/download/ Audacity] if they aren't already wav (e.g. mp3 to wav).&lt;br&gt;You may also re-export wav files with fancy sample rates (other than 11025, 22050, 44100, 48000, 96000) or if you experience problems with sound conversion later on.<br /> #Put them into subfolders of &lt;code&gt;ModSound\sound_assets\raw\sound\&lt;/code&gt;, streamed audio goes into &lt;code&gt;stream\...&lt;/code&gt; and sound fx into &lt;code&gt;SFX\...&lt;/code&gt;&lt;br&gt;Create missing subfolders, like stream\'''music\''' for streamed music tracks or e.g. SFX\'''weapon\MG\''' if it's going to become a MG sound.<br /> #Sounds shouldn't be directly placed into &lt;code&gt;ModSound\sound_assets\raw\sound\&lt;/code&gt;, they may not work!<br /> #Go to &lt;code&gt;ModSound\&lt;/code&gt; in explorer, select '''bin''' folder, hold '''Shift and right-click''' on it. Context menu opens, click '''Open Command Window here''' (also see [http://www.askvg.com/enable-open-command-window-here-option-in-context-menu-in-windows-vista/ here])&lt;br&gt;Alternatively, hit Windows key, type cmd and hit enter to open a command prompt. If it says C:\... but your ModSound folder is on D:\..., type &lt;code&gt;D:&lt;/code&gt; (drive letter and colon) and hit return. Change to ModSound\bin\ folder with &lt;code&gt;cd the\path\ModSound\bin&lt;/code&gt; (e.g. Games\ModSound\bin) and hit enter<br /> #Type &lt;code&gt;modsound -pc -verbose -aliasfiles your_aliasfile_name&lt;/code&gt;&lt;br&gt;If the soundalias CSV is &lt;code&gt;ModSound\raw\soundaliases\mp_yourmap.csv&lt;/code&gt;, ''your_alias_name'' would be &lt;code&gt;mp_yourmap&lt;/code&gt;&lt;br&gt;(Note: modsound is not the ModSound directory, but the executable modsound.exe)<br /> #If you wanna force it to encode all sounds even if they been already converted, add &lt;code&gt;-clean&lt;/code&gt;, e.g. &lt;code&gt;modsound -pc -clean -verbose ...&lt;/code&gt;<br /> #As soon as you hit return, encoding will start and some info will be displayed. Hang on, especially ADPCM encoding can last quite a bit!<br /> #When it's finished, copy the encoded sound files from &lt;code&gt;ModSound\raw\sound\&lt;/code&gt; to &lt;code&gt;CoD5\raw\sound\&lt;/code&gt;<br /> #Add the soundalias CSV to your zone file: &lt;code&gt;sound,mp_yourmap,,all_mp&lt;/code&gt; (for SP: ''all_sp'' at the end)<br /> #Add sound fx (from &lt;code&gt;SFX\&lt;/code&gt; folder) as well.&lt;br&gt;Example for &lt;code&gt;raw\sound\&lt;u&gt;SFX\weapon\MG\shot&lt;/u&gt;.wav&lt;/code&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;sound,SFX/weapon/MG/shot&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;<br /> #Build fastfile with your zone file (either using Launcher or a batch script).<br /> #Pack streamed audio as IWD (not covered here).&lt;br&gt;Example for &lt;code&gt;raw\&lt;u&gt;sound\stream\music\mytrack.wav&lt;/u&gt;&lt;/code&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;mp_yourmap.iwd\sound\stream\music\mytrack.wav&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;<br /> #The soundaliases defined in your soundalias CSV should now be available. Note: You may have to place fastfiles / IWDs into &lt;code&gt;%localappdata%\Activision\CoDWaW\usermaps\mp_yourmap\&lt;/code&gt;!<br /> <br /> <br /> == Trouble shooting ==<br /> <br /> &lt;ul&gt;&lt;li&gt;<br /> &lt;p style=&quot;border: 1px solid gray&quot;&gt;ERROR: .../sound_assets/'''MODSound.hst : file not found'''&lt;/p&gt;<br /> You can ignore this error message, MODSound.hst will be automatically created.<br /> &lt;/li&gt;&lt;li&gt;<br /> If there are spaces or special characters in the folder paths to your ModSound directory, the following errors will occur:<br /> &lt;p style=&quot;border: 1px solid gray&quot;&gt;<br /> Converting D:\CoD5\'''path''' to '''space'''\sound_assets\raw\sound\SFX\test_raw.wav failed with&lt;br&gt;<br /> error '''ERROR_FILE_NOT_FOUND''' (The system cannot find the file specified)<br /> &lt;br&gt;&lt;br&gt;<br /> ERROR: '''Couldn't open input file.'''<br /> &lt;/p&gt;<br /> Read the above guide how to setup the sound encode environment!<br /> &lt;/li&gt;&lt;/ul&gt;<br /> <br /> <br /> --[[User:CoDEmanX|CoDEmanX]] 22:03, 25 April 2012 (IST)<br /> <br /> [[Category:Call of Duty 5]]<br /> [[Category:Sounds]]<br /> [[Category:Modding]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Custom_Sound_2&diff=16679 Call of Duty 5: Custom Sound 2 2012-04-25T21:03:25Z <p>CoDEmanX: </p> <hr /> <div>! WIP !<br /> <br /> == Setup sound encode environment (once) ==<br /> <br /> Sound encoding won't work if there are any spaces in the folder paths, special characters might also cause problems. As the default installation path of the game contains spaces and renaming the directories would potentially break the game, I suggest to set up a new folder structure for sound conversion.<br /> <br /> #Create a folder on any drive, in any subfolders you want, but with '''no spaces''' in path!&lt;br&gt;For instance &lt;code style=&quot;color: green&quot;&gt;D:\Games\ModSound\&lt;/code&gt; (will be refered to as ''modsound dir'')&lt;br&gt;Bad: &lt;span style=&quot;text-decoration: line-through;&quot;&gt;&lt;code style=&quot;color: red&quot;&gt;D:\Games\sound path\&lt;/code&gt;&lt;/span&gt;<br /> #Create these 8 subfolders:&lt;ul&gt;&lt;li&gt;&lt;code&gt;ModSound\bin\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\raw\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\raw\soundaliases\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\sound_assets\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\sound_assets\raw\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\sound_assets\raw\sound\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\sound_assets\raw\sound\SFX\&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ModSound\sound_assets\raw\sound\stream\&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;<br /> #Copy '''MODSound.exe''' from CoD modtools to your ModSound\bin\ folder (and keep explorer opened for later)<br /> #Get Microsoft's [http://msdn.microsoft.com/en-us/directx/ DirectX SDK]: [http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=6812 Download SDK June 2010] (currently latest)<br /> #Open the downloaded file (&lt;code&gt;DXSDK_Jun10.exe&lt;/code&gt;) with 7-Zip, e.g. right-click in explorer on the file, 7-Zip &gt; Open<br /> #Navigate to '''DXSDK\Utilities\bin\x86\'''<br /> #Select '''AdpcmEncode.exe''' and '''xWMAEncode.exe''', drag and drop them into your modsound's bin dir: &lt;code&gt;ModSound\bin\AdpcmEncode.exe&lt;/code&gt;...<br /> #Rename xWMAEncode.exe to '''WMAEncode.exe''' (leading &quot;x&quot; stripped off)<br /> #Get the zip-package of the [http://sourceforge.net/projects/sox/files/sox/ latest SoX] tool (Sound-Exchange): [http://sourceforge.net/projects/sox/files/sox/14.4.0/sox-14.4.0-win32.zip/download Download SoX v14.4.0]<br /> #Open it with 7-Zip or the like and extract the following files to your modsound folder's &lt;code&gt;bin\&lt;/code&gt; directory:&lt;ul&gt;&lt;li&gt;libgomp-1.dll&lt;/li&gt;&lt;li&gt;pthreadgc2.dll&lt;/li&gt;&lt;li&gt;sox.exe&lt;/li&gt;&lt;li&gt;zlib1.dll&lt;/li&gt;&lt;/ul&gt;<br /> #Done, your sound encoding environment is ready to go!<br /> <br /> <br /> == Convert sounds and soundaliases ==<br /> <br /> #Copy your custom soundalias file(s) from &lt;code&gt;CoD5\raw\soundaliases\&lt;/code&gt; to &lt;code&gt;ModSound\raw\soundaliases\&lt;/code&gt;&lt;br&gt;Soundalias CSV creation is not covered here, check other tutorials and stock CSVs (you may use [http://www.openoffice.org/ Open Office] to view them).&lt;br&gt;'''Note:''' Don't forget the column header line, which goes like &lt;code&gt;name,platform,file,sequence,vol_min&lt;/code&gt;... or it won't work at all!<br /> #Convert the sound files you wanna use to '''WAVE (Microsoft PCM 16-bit)''' using [http://audacity.sourceforge.net/download/ Audacity] if they aren't already wav (e.g. mp3 to wav).&lt;br&gt;You may also re-export wav files with fancy sample rates (other than 11025, 22050, 44100, 48000, 96000) or if you experience problems with sound conversion later on.<br /> #Put them into subfolders of &lt;code&gt;ModSound\sound_assets\raw\sound\&lt;/code&gt;, streamed audio goes into &lt;code&gt;stream\...&lt;/code&gt; and sound fx into &lt;code&gt;SFX\...&lt;/code&gt;&lt;br&gt;Create missing subfolders, like stream\'''music\''' for streamed music tracks or e.g. SFX\'''weapon\MG\''' if it's going to become a MG sound.<br /> #Sounds shouldn't be directly placed into &lt;code&gt;ModSound\sound_assets\raw\sound\&lt;/code&gt;, they may not work!<br /> #Go to &lt;code&gt;ModSound\&lt;/code&gt; in explorer, select '''bin''' folder, hold '''Shift and right-click''' on it. Context menu opens, click '''Open Command Window here''' (also see [http://www.askvg.com/enable-open-command-window-here-option-in-context-menu-in-windows-vista/ here])&lt;br&gt;Alternatively, hit Windows key, type cmd and hit enter to open a command prompt. If it says C:\... but your ModSound folder is on D:\..., type &lt;code&gt;D:&lt;/code&gt; (drive letter and colon) and hit return. Change to ModSound\bin\ folder with &lt;code&gt;cd the\path\ModSound\bin&lt;/code&gt; (e.g. Games\ModSound\bin) and hit enter<br /> #Type &lt;code&gt;modsound -pc -verbose -aliasfiles your_aliasfile_name&lt;/code&gt;&lt;br&gt;If the soundalias CSV is &lt;code&gt;ModSound\raw\soundaliases\mp_yourmap.csv&lt;/code&gt;, ''your_alias_name'' would be &lt;code&gt;mp_yourmap&lt;/code&gt;&lt;br&gt;(Note: modsound is not the ModSound directory, but the executable modsound.exe)<br /> #If you wanna force it to encode all sounds even if they been already converted, add &lt;code&gt;-clean&lt;/code&gt;, e.g. &lt;code&gt;modsound -pc -clean -verbose ...&lt;/code&gt;<br /> #As soon as you hit return, encoding will start and some info will be displayed. Hang on, especially ADPCM encoding can last quite a bit!<br /> #When it's finished, copy the encoded sound files from &lt;code&gt;ModSound\raw\sound\&lt;/code&gt; to &lt;code&gt;CoD5\raw\sound\&lt;/code&gt;<br /> #Add the soundalias CSV to your zone file: &lt;code&gt;sound,mp_yourmap,,all_mp&lt;/code&gt; (for SP: ''all_sp'' at the end)<br /> #Add sound fx (from &lt;code&gt;SFX\&lt;/code&gt; folder) as well.&lt;br&gt;Example for &lt;code&gt;raw\sound\&lt;u&gt;SFX\weapon\MG\shot&lt;/u&gt;.wav&lt;/code&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;sound,SFX/weapon/MG/shot&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;<br /> #Build fastfile with your zone file (either using Launcher or a batch script).<br /> #Pack streamed audio as IWD (not covered here).&lt;br&gt;Example for &lt;code&gt;raw\&lt;u&gt;sound\stream\music\mytrack.wav&lt;/u&gt;&lt;/code&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;mp_yourmap.iwd\sound\stream\music\mytrack.wav&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;<br /> #The soundaliases defined in your soundalias CSV should now be available. Note: You may have to place fastfiles / IWDs into &lt;code&gt;%localappdata%\Activision\CoDWaW\usermaps\mp_yourmap\&lt;/code&gt;!<br /> <br /> <br /> == Trouble shooting ==<br /> <br /> &lt;ul&gt;&lt;li&gt;<br /> &lt;p style=&quot;border: 1px solid gray&quot;&gt;ERROR: .../sound_assets/'''MODSound.hst : file not found'''&lt;/p&gt;<br /> You can ignore this error message, MODSound.hst will be automatically created.<br /> &lt;/li&gt;&lt;li&gt;<br /> If there are spaces or special characters in the folder paths to your ModSound directory, the following errors will occur:<br /> &lt;p style=&quot;border: 1px solid gray&quot;&gt;<br /> Converting D:\CoD5\'''path''' to '''space'''\sound_assets\raw\sound\SFX\test_raw.wav failed with&lt;br&gt;<br /> error '''ERROR_FILE_NOT_FOUND''' (The system cannot find the file specified)<br /> &lt;br&gt;&lt;br&gt;<br /> ERROR: '''Couldn't open input file.'''<br /> &lt;/p&gt;<br /> Read the above guide how to setup the sound encode environment!<br /> &lt;/li&gt;&lt;/ul&gt;<br /> <br /> <br /> --[[User:CoDEmanX|CoDEmanX]] 22:03, 25 April 2012 (IST)<br /> <br /> [[Category:Call of Duty 5]]<br /> [[Category:Sounds]]<br /> [[Category:Modding]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Custom_Sound_2&diff=16678 Call of Duty 5: Custom Sound 2 2012-04-25T13:22:18Z <p>CoDEmanX: Created page with &quot;! WIP ! Sound encoding won't work if there are any spaces in the folder paths, special characters might also cause problems. As the default installation path of the game contai...&quot;</p> <hr /> <div>! WIP !<br /> <br /> <br /> Sound encoding won't work if there are any spaces in the folder paths, special characters might also cause problems. As the default installation path of the game contains spaces and renaming the directories would potentially break the game, I suggest to set up a new folder structure for sound conversion.<br /> <br /> Create a folder on any drive and in subfolders you want, but with '''no spaces''' in path! For instance &lt;code&gt;D:\Games\ModSound\&lt;/code&gt; (will be refered to as mod dir)<br /> <br /> ...<br /> <br /> Get Microsoft's [http://msdn.microsoft.com/en-us/directx/ DirectX SDK]: [http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=6812 Download SDK June 2010] (currently latest)<br /> <br /> Open the downloaded file (&lt;code&gt;DXSDK_Jun10.exe&lt;/code&gt;) with 7-Zip, e.g. right-click in explorer on the file, 7-Zip &gt; Open<br /> <br /> Navigate to '''DXSDK\Utilities\bin\x86\'''<br /> <br /> Select '''AdpcmEncode.exe''' and '''xWMAEncode.exe''', drag and drop them into your mod dir.</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_4:_Waving_models_(using_flag_shader)&diff=16662 Call of Duty 4: Waving models (using flag shader) 2012-04-16T22:29:43Z <p>CoDEmanX: </p> <hr /> <div>== Overview ==<br /> <br /> To achieve this correctly you must be reasonably proficient with a 3d modeling program, e.g. Maya, Blender. The modeling program must also have an export plugin for cod4 available for the program. I am using Maya and the tut is written for that, but the technique will work for any modeling software.<br /> <br /> [CoDEmanX: Note that Blender doesn't support alpha transparency for vertex colors. But since [[Call_of_Duty:_Create_Models_with_Blender_(without_Maya)|Blender-CoD]] v0.3.5, there's an option to export the color as alpha, thus you may use Blender as free alternative to Maya for this tutorial.]<br /> <br /> This tut will not tell you how to make models or export them.<br /> <br /> You can quite easily make any Xmodel in cod4 wave around by simply using a custom material, the problem is that using a custom material on its own offers no control over the way the Xmodel waves and it will just wave around randomly. To control the strength of the distortion effect you assign vertex colors.<br /> <br /> <br /> == Preparing the model ==<br /> <br /> So first you need a model.<br /> <br /> [[File:Flag shader - Basic model.jpg]]<br /> <br /> You may notice in the above model that it has a lot of what look like unnecessary subdivisions, the more vertices you have on the model the smoother the effect.<br /> <br /> All cod 4 models must have vertex colors assigned usually they are always white, so assign your vetex color of white to the whole model to start with.<br /> <br /> In maya make sure you are in polygons mode<br /> <br /> [[File:Flag shader - Maya 1.jpg]]<br /> <br /> to assign the vertex color go to paint &gt; apply color and click the box next to the text to bring up the apply color options dialogue.<br /> <br /> [[File:Flag shader - Maya 2.jpg]]<br /> <br /> set the color value to white and hit apply color with the settings in the image below.<br /> <br /> [[File:Flag shader - Maya 3.jpg]]<br /> <br /> go to shading &gt; smooth shaded all to see the color without the texture<br /> <br /> [[File:Flag shader - Model vertex white.jpg]]<br /> <br /> If the model was left like this it would wave around with a uniform scale all over. this may be fine for some things but it is way to intense for a waving flag.<br /> <br /> To scale down the amount of distortion you need to change the vertex color alpha of each vertex in the model.<br /> <br /> Alpha color of black stops the vert from moving altogether, alpha color of white give the vertex its full range of movement. any shade of grey inbetween scales the movement of the vert.<br /> <br /> In Maya Press F9 to swap to vertex select mode.<br /> <br /> now you can select each individual vert or groups of verts and set the vert alpha color, for this model I wanted a more subtle movement so to start with I selected every vert and set the vertex alpha color to 0.18<br /> <br /> [[File:Flag shader - Vert alpha 1.jpg]]<br /> <br /> when you click apply the models opacity will be reduced, this is fine.<br /> <br /> [[File:Flag shader - Vert alpha 2.jpg]]<br /> <br /> Now I needed to alter some individual verts to prevent there movement althogether this is where the sheet would be tied off to other geometry in the map. I selected the verts and reduced the alpha to 0 these vertices will be completely static.<br /> <br /> [[File:Flag shader - Vert alpha 3.jpg]]<br /> <br /> you can carry on and change the vert alpha any way you like. to reduce on increase movement for the effect you want to achieve.<br /> <br /> Once done just export the model to an xmodel_export file and its ready import with asset manager.<br /> <br /> <br /> == Asset Manager ==<br /> <br /> === Material ===<br /> <br /> First create your new material.<br /> <br /> open asset manager<br /> <br /> Go to file Open and choose your levels.gdt (source_data\levels.gdt)<br /> [CoDEmanX: you may start with a blank new GDT and save it in source_data folder, no need to use a stock one]<br /> <br /> create a new material<br /> <br /> use these settings:<br /> <br /> [[File:Flag shader - Ass man 1.jpg]]<br /> <br /> * Material type &gt; must be custom<br /> * surface type &gt; set to match your surface<br /> * alphatest &gt; must be set to GE128 (even if your image has no alpha channel)<br /> * cullface &gt; None<br /> * template &gt; mtl_phong_flag<br /> * vertex color &gt; scales distortion stength<br /> * color map &gt; your models texture<br /> <br /> if you have normal and or specular maps add them in the usual way.<br /> <br /> save the gdt then hit f10 to convert the texture as normal.<br /> <br /> <br /> === XModel ===<br /> <br /> now in asset manager create a new xmodel<br /> <br /> use these settings:<br /> <br /> [[File:Flag shader - Ass man 2.jpg]]<br /> <br /> * type &gt; rigid<br /> * filename &gt; your model<br /> * collisionLOD high<br /> <br /> save the gdt and hit f10 to convert the model.<br /> <br /> <br /> == Radiant ==<br /> <br /> Drop the model in your map in the usual way, sometimes these models cause shadow problems so with the model selected hit N and bring up the entity window and check the No Static Shadows box.<br /> <br /> The result can be seen here:<br /> <br /> &lt;videoflash&gt;Mdymak_0_N0&lt;/videoflash&gt;<br /> <br /> <br /> ''From -]K6[-Grimm for Codutility.com''<br /> <br /> [http://www.codutility.com/vb/showthread.php?1142-Waving-models&amp;p=4685 Source]<br /> <br /> [[Category:Call of Duty 4]]<br /> [[Category:Animations]]<br /> [[Category:Shader]]<br /> [[Category:Modelling]]<br /> [[Category:Advanced Editing]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty:_Create_Models_with_Blender_(without_Maya)&diff=16659 Call of Duty: Create Models with Blender (without Maya) 2012-04-13T20:51:49Z <p>CoDEmanX: </p> <hr /> <div>''By CoDEmanX and Flybynyt''<br /> <br /> Create models and animations for CoD using free Blender and Blender-CoD addon (without Maya)! <br /> <br /> =Introduction=<br /> <br /> The Call of Duty mod tools include plugins for the commercial 3d modelling software [http://usa.autodesk.com/maya/ Maya] by Autodesk (former Alias). It's an expansive application and not many modders want to or can afford it.<br /> <br /> Fortunately, you don't require it anymore to create models (static/rigged) and animations for CoD:<br /> <br /> <br /> =Blender-CoD Add-On=<br /> <br /> [http://code.google.com/p/blender-cod/ Blender-CoD] is a '''free''', '''open-source''' project and provides a plugin for the as well free and open-source '''3D modelling software''' [http://www.blender.org/ '''Blender''']. It adds support for XMODEL_EXPORT v5/v6 and XANIM_EXPORT v3 formats, which can be compiled to xmodels and xanims using the mod tools. All CoD titles are supported:<br /> <br /> *XMODEL_EXPORT v5 (vCoD, CoD:UO)<br /> *XMODEL_EXPORT v6 (CoD2-CoD7)<br /> *XANIM_EXPORT v3 (all)<br /> *NT_EXPORT (CoD5, CoD7)<br /> <br /> You can basically import any supported 3d model into Blender (e.g. Blender files, Wavefront OBJ, Collada DAE, 3ds Max 3DS and more), edit it and finally export it for CoD using the Blender-CoD Add-On.<br /> <br /> <br /> ==Project page==<br /> <br /> The project is hosted at Google Projects. You can:<br /> *submit bugs and feature requests on the [http://code.google.com/p/blender-cod/issues/list '''issue'''] section,<br /> *browse the code of the repository in the [http://code.google.com/p/blender-cod/source/browse/ '''source'''] section and<br /> *get the latest releases in the [http://code.google.com/p/blender-cod/downloads/list '''download'''] area<br /> <br /> <br /> Link: http://code.google.com/p/blender-cod/<br /> <br /> If you want to contribute to the project as a coder, file and issue or send a mail to &lt;code&gt;blender-cod AT online DOT de&lt;/code&gt;<br /> <br /> <br /> ==Releases==<br /> <br /> *12-Apr-12 | [http://code.google.com/p/blender-cod/downloads/detail?name=Blender-CoD_Addon_v0.3.5_alpha3.zip '''Blender-CoD Addon v0.3.5 (alpha 3)'''] for [http://builder.blender.org/download/ Blender 2.62.3 (beta)] and later<br /> *01-Apr-12 | Blender-CoD Addon v0.3.4 (alpha 3) for Blender 2.62.3 (beta) and later<br /> *16-Feb-12 | Blender-CoD Addon v0.3.3 (alpha 3) for [http://www.blender.org/download/get-blender/ Blender 2.6x] and 2.59<br /> *25-Jan-12 | Blender-CoD Addon v0.3.2 (alpha 3)<br /> *29-Nov-11 | Blender-CoD Addon v0.3.1 (alpha 3)<br /> *22-Nov-11 | Blender-CoD Addon v0.3.0 (alpha 3)<br /> *09-Oct-11 | Blender-CoD Addon v0.2.3 (alpha 2)<br /> *29-Sep-11 | Blender-CoD Addon v0.2.2 (alpha 2)<br /> <br /> ==Features==<br /> <br /> '''XMODEL_EXPORT v5/v6'''<br /> *Supports mesh export with automatic triangulation<br /> *Armature export (bones)<br /> *Vertex colors (v6 only, optionally: use color as alpha)<br /> *Mesh modifiers except Armature (optional)<br /> *Armature animation (poses) to xmodel sequences (&quot;Pose animation&quot;)<br /> *Adjustable minimum bone weight (optional)<br /> *Vertex clean-up (optional)<br /> *User Interface: File &gt; Export &gt; CoD Xmodel (.XMODEL_EXPORT)<br /> <br /> <br /> '''XANIM_EXPORT v3'''<br /> *Supports armature animation export<br /> *Frame range and framerate can be specified<br /> *Notetrack export (all CoD titles)<br /> *User Interface: File &gt; Export &gt; CoD Xanim (.XANIM_EXPORT)<br /> <br /> <br /> ==Installation==<br /> <br /> #Download the archive, but don't unzip it!<br /> #Start Blender<br /> #Click menu ''File &gt; User Preferences...''<br /> #Activate the ''Addons'' section<br /> #Ignore an already installed version, it will be overwritten by default <br /> #Click ''Install Add-On...'' button at the bottom<br /> #Double-click the archive<br /> #The following entry should be shown: ''Import-Export: CoD model/anim addon (version)''<br /> #Tick the checkbox on the right to enable it<br /> #Click ''Save As Default'' button at the bottom to enable it permanently<br /> #Use the newly available options of the File &gt; Export / File &gt; Import menu <br /> <br /> <br /> &lt;videoflash&gt;6SkHz7wrAA8&lt;/videoflash&gt;<br /> <br /> <br /> =Usage=<br /> <br /> [[File:Blender-CoD_HowTo_Materials.png|thumb|Photo-montage about how to use materials in Blender for Blender-CoD addon]]<br /> <br /> Make sure the model meets the following requirements:<br /> *Meshes must have at least 3 vertices,<br /> *1 face,<br /> *1 image material and<br /> *UV mapping (mesh was unwrapped)<br /> <br /> <br /> Basic video tutorial on how to use the addon: [[Call_of_Duty:_Blender_to_COD|Blender to CoD]]<br /> <br /> <br /> ==Blender Tutorials==<br /> <br /> *[http://www.blender.org/education-help/tutorials/ Official Blender.org tutorial page] (many good text and video tutorials)<br /> *[http://www.blenderguru.com/ BlenderGuru.com tutorials] (high quality video tutorials and blog)<br /> *[http://blenderartists.org/forum/forumdisplay.php?32-Tutorials BlenderArtists.org Forum tutorials]<br /> *[http://en.wikibooks.org/wiki/Blender_3D:_Tutorial_Links_List Wikibooks Blender tutorial list] (some may be outdated, look for Blender 2.5x tutorials)<br /> *[http://www.blendernation.com/category/education/tutorials/ BlenderNation.com tutorials]<br /> *[http://www.pixel2life.com/tutorials/blender_3d/ Pixel2Life.com Blender tutorials]<br /> *[http://www.tutorialized.com/tutorials/Blender-3d/1 Tutorialized.com Blender tutorials]<br /> <br /> <br /> [[Category:Call of Duty 1]]<br /> [[Category:Call of Duty 2]]<br /> [[Category:Call of Duty 4]]<br /> [[Category:Call of Duty 5]]<br /> [[Category:Call of Duty 7]]<br /> [[Category:Modtools]]<br /> [[Category:Advanced Editing]]<br /> [[Category:Modelling]]<br /> [[Category:Blender]]<br /> [[Category:Maya]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty:_Blender_to_COD&diff=16658 Call of Duty: Blender to COD 2012-04-13T20:42:05Z <p>CoDEmanX: </p> <hr /> <div>{{Warning_forpro}}<br /> ''By Irishstorm''<br /> <br /> {{Note|This video tutorial will show you the basics of importing model made in Blender into CoD.}}<br /> <br /> {{Warning_advanced}}<br /> <br /> = Whats needed = <br /> <br /> * [http://www.blender.org/ Blender 2.5 or later] (from 2.62 on there's no more limitation in material name length if importing from OBJ!)<br /> * [http://code.google.com/p/blender-cod/ CoDEmanX's Blender plugin (BlenderCoD)] - More info: [[Call of Duty: Create Models with Blender (without Maya)|Create Models with Blender]]<br /> <br /> = Notes =<br /> <br /> * There's no need to do &quot;Quads to Tris&quot; before export, the addon will triangulate everything automatically!<br /> * Texture doesn't matter, it gets written to export file but Asset Manager ignores it<br /> * If you change to the &quot;Scripting&quot; view in Blender, in the upper part you find a log window. Scroll down before exporting to see when it's finished (green entry showing the time it took)<br /> * You may run Blender from console (cmd) if you experience problems, the addon may print some info and warnings<br /> <br /> = The video =<br /> <br /> &lt;videoflash&gt;NDPLThWllu0&lt;/videoflash&gt;<br /> <br /> = German video =<br /> <br /> &lt;videoflash&gt;FGJbwyKTGAI&lt;/videoflash&gt;<br /> <br /> By MrSchulzi1996 for CoD2.<br /> <br /> <br /> {{#TwitterFBLike:|small}}<br /> <br /> [[Category:Call of Duty 4]]<br /> [[Category:Call of Duty 5]]<br /> [[Category:Modtools]]<br /> [[Category:Advanced Editing]]<br /> [[Category:Modelling]]<br /> [[Category:Blender]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_4:_Waving_models_(using_flag_shader)&diff=16657 Call of Duty 4: Waving models (using flag shader) 2012-04-12T10:54:33Z <p>CoDEmanX: Created page with &quot;== Overview == To achieve this correctly you must be reasonably proficient with a 3d modeling program, e.g. maya, blender, the modeling program must also have an export plugin f...&quot;</p> <hr /> <div>== Overview ==<br /> <br /> To achieve this correctly you must be reasonably proficient with a 3d modeling program, e.g. maya, blender, the modeling program must also have an export plugin for cod4 available for the program. I am using Maya and the tut is written for that, but the technique will work for any modeling software.<br /> <br /> [CoDEmanX: Note that Blender doesn't support alpha transparency for vertex colors so far, thus it's impossible<br /> <br /> This tut will not tell you how to make models or export them.<br /> <br /> You can quite easily make any Xmodel in cod4 wave around by simply using a custom material, the problem is that using a custom material on its own offers no control over the way the Xmodel waves and it will just wave around randomly. To control the strength of the distortion effect you assign vertex colors.<br /> <br /> <br /> == Preparing the model ==<br /> <br /> So first you need a model.<br /> <br /> [[File:Flag shader - Basic model.jpg]]<br /> <br /> You may notice in the above model that it has a lot of what look like unnecessary subdivisions, the more vertices you have on the model the smoother the effect.<br /> <br /> All cod 4 models must have vertex colors assigned usually they are always white, so assign your vetex color of white to the whole model to start with.<br /> <br /> In maya make sure you are in polygons mode<br /> <br /> [[File:Flag shader - Maya 1.jpg]]<br /> <br /> to assign the vertex color go to paint &gt; apply color and click the box next to the text to bring up the apply color options dialogue.<br /> <br /> [[File:Flag shader - Maya 2.jpg]]<br /> <br /> set the color value to white and hit apply color with the settings in the image below.<br /> <br /> [[File:Flag shader - Maya 3.jpg]]<br /> <br /> go to shading &gt; smooth shaded all to see the color without the texture<br /> <br /> [[File:Flag shader - Model vertex white.jpg]]<br /> <br /> If the model was left like this it would wave around with a uniform scale all over. this may be fine for some things but it is way to intense for a waving flag.<br /> <br /> To scale down the amount of distortion you need to change the vertex color alpha of each vertex in the model.<br /> <br /> Alpha color of black stops the vert from moving altogether, alpha color of white give the vertex its full range of movement. any shade of grey inbetween scales the movement of the vert.<br /> <br /> In Maya Press F9 to swap to vertex select mode.<br /> <br /> now you can select each individual vert or groups of verts and set the vert alpha color, for this model I wanted a more subtle movement so to start with I selected every vert and set the vertex alpha color to 0.18<br /> <br /> [[File:Flag shader - Vert alpha 1.jpg]]<br /> <br /> when you click apply the models opacity will be reduced, this is fine.<br /> <br /> [[File:Flag shader - Vert alpha 2.jpg]]<br /> <br /> Now I needed to alter some individual verts to prevent there movement althogether this is where the sheet would be tied off to other geometry in the map. I selected the verts and reduced the alpha to 0 these vertices will be completely static.<br /> <br /> [[File:Flag shader - Vert alpha 3.jpg]]<br /> <br /> you can carry on and change the vert alpha any way you like. to reduce on increase movement for the effect you want to achieve.<br /> <br /> Once done just export the model to an xmodel_export file and its ready import with asset manager.<br /> <br /> <br /> == Asset Manager ==<br /> <br /> === Material ===<br /> <br /> First create your new material.<br /> <br /> open asset manager<br /> <br /> Go to file Open and choose your levels.gdt (source_data\levels.gdt)<br /> [CoDEmanX: you may start with a blank new GDT and save it in source_data folder, no need to use a stock one]<br /> <br /> create a new material<br /> <br /> use these settings:<br /> <br /> [[File:Flag shader - Ass man 1.jpg]]<br /> <br /> * Material type &gt; must be custom<br /> * surface type &gt; set to match your surface<br /> * alphatest &gt; must be set to GE128 (even if your image has no alpha channel)<br /> * cullface &gt; None<br /> * template &gt; mtl_phong_flag<br /> * vertex color &gt; scales distortion stength<br /> * color map &gt; your models texture<br /> <br /> if you have normal and or specular maps add them in the usual way.<br /> <br /> save the gdt then hit f10 to convert the texture as normal.<br /> <br /> <br /> === XModel ===<br /> <br /> now in asset manager create a new xmodel<br /> <br /> use these settings:<br /> <br /> [[File:Flag shader - Ass man 2.jpg]]<br /> <br /> * type &gt; rigid<br /> * filename &gt; your model<br /> * collisionLOD high<br /> <br /> save the gdt and hit f10 to convert the model.<br /> <br /> <br /> == Radiant ==<br /> <br /> Drop the model in your map in the usual way, sometimes these models cause shadow problems so with the model selected hit N and bring up the entity window and check the No Static Shadows box.<br /> <br /> The result can be seen here:<br /> <br /> &lt;videoflash&gt;Mdymak_0_N0&lt;/videoflash&gt;<br /> <br /> <br /> ''From -]K6[-Grimm for Codutility.com''<br /> <br /> [http://www.codutility.com/vb/showthread.php?1142-Waving-models&amp;p=4685 Source]<br /> <br /> [[Category:Call of Duty 4]]<br /> [[Category:Animations]]<br /> [[Category:Shader]]<br /> [[Category:Modelling]]<br /> [[Category:Advanced Editing]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=File:Flag_shader_-_Ass_man_2.jpg&diff=16656 File:Flag shader - Ass man 2.jpg 2012-04-12T09:47:31Z <p>CoDEmanX: </p> <hr /> <div></div> CoDEmanX https://wiki.zeroy.com/index.php?title=File:Flag_shader_-_Ass_man_1.jpg&diff=16655 File:Flag shader - Ass man 1.jpg 2012-04-12T09:47:08Z <p>CoDEmanX: </p> <hr /> <div></div> CoDEmanX https://wiki.zeroy.com/index.php?title=File:Flag_shader_-_Vert_alpha_3.jpg&diff=16654 File:Flag shader - Vert alpha 3.jpg 2012-04-12T09:46:56Z <p>CoDEmanX: </p> <hr /> <div></div> CoDEmanX https://wiki.zeroy.com/index.php?title=File:Flag_shader_-_Vert_alpha_2.jpg&diff=16653 File:Flag shader - Vert alpha 2.jpg 2012-04-12T09:46:46Z <p>CoDEmanX: </p> <hr /> <div></div> CoDEmanX https://wiki.zeroy.com/index.php?title=File:Flag_shader_-_Vert_alpha_1.jpg&diff=16652 File:Flag shader - Vert alpha 1.jpg 2012-04-12T09:46:33Z <p>CoDEmanX: </p> <hr /> <div></div> CoDEmanX https://wiki.zeroy.com/index.php?title=File:Flag_shader_-_Model_vertex_white.jpg&diff=16651 File:Flag shader - Model vertex white.jpg 2012-04-12T09:46:20Z <p>CoDEmanX: </p> <hr /> <div></div> CoDEmanX https://wiki.zeroy.com/index.php?title=File:Flag_shader_-_Maya_3.jpg&diff=16650 File:Flag shader - Maya 3.jpg 2012-04-12T09:46:04Z <p>CoDEmanX: </p> <hr /> <div></div> CoDEmanX https://wiki.zeroy.com/index.php?title=File:Flag_shader_-_Maya_2.jpg&diff=16649 File:Flag shader - Maya 2.jpg 2012-04-12T09:45:38Z <p>CoDEmanX: </p> <hr /> <div></div> CoDEmanX https://wiki.zeroy.com/index.php?title=File:Flag_shader_-_Maya_1.jpg&diff=16648 File:Flag shader - Maya 1.jpg 2012-04-12T09:45:27Z <p>CoDEmanX: </p> <hr /> <div></div> CoDEmanX https://wiki.zeroy.com/index.php?title=File:Flag_shader_-_Basic_model.jpg&diff=16647 File:Flag shader - Basic model.jpg 2012-04-12T09:45:08Z <p>CoDEmanX: </p> <hr /> <div></div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_4:_Ripping_sounds&diff=16642 Call of Duty 4: Ripping sounds 2012-04-04T15:48:38Z <p>CoDEmanX: </p> <hr /> <div>{{note|In this tutorial explains how to rip sounds from fast file from call of duty 4 and call of duty Modern Warfare 2}}<br /> <br /> ==Start==<br /> <br /> For 1st we should get fast file. Now we unpack it (you can use different ways, include different programs or manual convert. More easy way download FFviewer).<br /> <br /> If you use FF viewer - open fast file in program and after that go to the folder with common.ff and find file: %fast file name%-extract.dat. It's already unpacked file which we need. Also, you can use FF viewer for easy browse which sounds .FF include (in program: Extra Data -&gt; sound).<br /> <br /> [[File:In_ff_viewer.JPG]]<br /> <br /> I would show on MW2 example (in cod4 we worked simply too).<br /> ''<br /> Also, this way doesnt work in Black Ops, looks like sounds after unpack comes damaged and cant be used anyway.''<br /> <br /> <br /> ==Seaching sounds==<br /> <br /> Now when we have unpacked .FF, open it in any HEX editor([http://mh-nexus.de/en/ for example]). Press ctrl+f and type any name of sound, which we get in FF viewer. Be careful - sound header looks like <br /> <br /> яяяuser_interface/ui_arcade_multiply1'''.wav'''<br /> <br /> but not like <br /> <br /> weap_magpul_fire_aki - it's just part of soundaliases or smth else I think.<br /> <br /> <br /> [[File:In_hex_editor.JPG]]<br /> <br /> <br /> ==Saving==<br /> <br /> Now we found sound, for example weap_magpul_slst_4b.wav .<br /> <br /> <br /> Copy part of code after '''.wav.'''%CODE_HERE%<br /> <br /> ''Copy not a litle number of code, but not so much (like half of fast file, lol). Sometimes if you copy too much sounds comes damaged in soundeditor.''<br /> <br /> Now go to File -&gt; New. Create new blank, past code and save without format.<br /> <br /> <br /> ==In audio editor==<br /> <br /> Now we need import our non-format file in audio editor as RAW data. I prefer [http://audacity.sourceforge.net/download/ Audacity] for that.<br /> <br /> When we import it in program, it says about settenings. <br /> <br /> <br /> Encoding type is always Signed 16 bit PCM;<br /> <br /> Byte order is different: there is a litle endian and big endian sounds. If you get sounds smth like &quot;shhhhh&quot; just change byte orther on another one. Almostly, it's Litle endian.<br /> <br /> Channels is different too. If cod4 used in most of .wavs mono, in MW2 most of fire sounds is stereo. All (as I know) foley sounds (clip in/out, ect) are mono. And again, if you get fast/slow sounds, change this option. <br /> <br /> Also, be careful, sometimes programm change 'Start Offset option' to 1, it should be always 0.<br /> <br /> <br /> [[File:In_audacity.JPG]]<br /> <br /> <br /> Now when all is ok, import sound, cut it and save :)<br /> <br /> <br /> ==Video==<br /> <br /> &lt;videoflash&gt;aigw2QfRRT0&lt;/videoflash&gt;<br /> <br /> Example what we're doing.<br /> <br /> ==Author==<br /> <br /> Pepper (original idea, talking about import full unpacked fast file, not separated parts).<br /> <br /> --[[User:Sanya|Sanya]] 17:47, 18 April 2011 (IST)<br /> <br /> <br /> [[Category:Call of Duty 4]]<br /> [[Category:Sounds]]<br /> [[Category:Audio]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Menu_Scripting&diff=16641 Call of Duty 5: Menu Scripting 2012-04-02T20:26:39Z <p>CoDEmanX: </p> <hr /> <div>{{note|List of stuff for menu editing}}<br /> <br /> == Actions ==<br /> <br /> &lt;pre&gt;<br /> accept<br /> action<br /> close<br /> closeforgametype<br /> doubleclick<br /> execKey<br /> execKeyInt<br /> execnow<br /> execNowOnDvarFloatValue<br /> execNowOnDvarIntValue<br /> execNowOnDvarStringValue<br /> execOnDvarFloatValue<br /> execOnDvarIntValue<br /> execOnDvarStringValue<br /> getautoupdate<br /> hideMenu<br /> ingameclose<br /> ingameopen<br /> inviteToSquad<br /> joinNewSquad<br /> leaveFocus<br /> mouseEnter<br /> mouseEnterText<br /> mouseExit<br /> mouseExitText<br /> open<br /> openforgametype<br /> play<br /> removeFromSquad<br /> scriptMenuRespondOnDvarFloatValue<br /> scriptMenuRespondOnDvarIntValue<br /> scriptMenuRespondOnDvarStringValue<br /> scriptmenuresponse<br /> setAttachmentOnType<br /> setbackground<br /> setcolor<br /> setDvar<br /> setDvarFromLocString<br /> setDvarStringUsingTable<br /> setfocus<br /> setfocusbydvar<br /> setitemcolor<br /> setLocalVarBool<br /> setLocalVarFloat<br /> setLocalVarInt<br /> setLocalVarString<br /> showMenu<br /> statclearbitmask<br /> statGetInDvarUsingTable<br /> statsetbitmask<br /> statSetOnDvarStringValue<br /> statSetUsingTable<br /> &lt;/pre&gt;<br /> <br /> == Events ==<br /> <br /> &lt;pre&gt;<br /> onClose<br /> onESC<br /> onFocus<br /> onListboxSelectionChange<br /> onOpen<br /> &lt;/pre&gt;<br /> <br /> == Properties ==<br /> <br /> &lt;pre&gt;<br /> align<br /> allowedBinding<br /> autowrapped<br /> backcolor<br /> background<br /> backgroundItemListbox<br /> blurWorld<br /> border<br /> bordercolor<br /> borderSize<br /> columns<br /> decoration<br /> disablecolor<br /> disableDvar<br /> dvar<br /> dvarEnumList<br /> dvarFloat<br /> dvarFloatList<br /> dvarStrList<br /> dvarTest<br /> elementheight<br /> elementtype<br /> elementwidth<br /> enableDvar<br /> exp<br /> fadeAmount<br /> fadeClamp<br /> fadeCycle<br /> fadein<br /> fadeInAmount<br /> fadeout<br /> feeder<br /> feederBottom<br /> feederTop<br /> focusColor<br /> focusDvar<br /> focusfirst<br /> focusSound<br /> forecolor<br /> gamemsgwindowindex<br /> gamemsgwindowmode<br /> group<br /> hiddenDuringFlashbang<br /> hiddenDuringScope<br /> hiddenDuringUI<br /> hideDvar<br /> highlightTexture<br /> horizontalscroll<br /> itemDef<br /> legacySplitScreenScale<br /> maxChars<br /> maxCharsGotoNext<br /> maxPaintChars<br /> noscrollbars<br /> notselectable<br /> outlinecolor<br /> outOfBoundsClick<br /> ownerdraw<br /> ownerdrawFlag<br /> popup<br /> selectBorder<br /> selectIcon<br /> showDvar<br /> soundLoop<br /> special<br /> style<br /> textalign<br /> textalignx<br /> textaligny<br /> textcinematicsubtitle<br /> textfile<br /> textfont<br /> textsavegame<br /> textscale<br /> textstyle<br /> usepaging<br /> &lt;/pre&gt;<br /> <br /> ==When expressions==<br /> <br /> For example:<br /> &lt;pre&gt;<br /> itemdef<br /> {<br /> // ...<br /> visible when( !dvarBool( ui_show_loadout ) )<br /> }<br /> &lt;/pre&gt;<br /> <br /> {|border=1<br /> |-<br /> |%f<br /> |float<br /> |-<br /> |%.2f<br /> |float, 2 digits after the decimal point<br /> |-<br /> |%i<br /> |integer<br /> |-<br /> |%s<br /> |string<br /> |}<br /> <br /> &lt;pre&gt;<br /> adsjavelin() = %i<br /> AloneInPrivateParty() = %i<br /> CheckIfPlayerAlreadyInvitedToSquad() = %i<br /> clipAmmo<br /> cos( %f ) = %f<br /> dpad<br /> dvarbool( %s ) = %i<br /> dvarfloat( %s ) = %f<br /> dvarint( %s ) = %i<br /> dvarstring( %s ) = %s<br /> flashbanged() = %i<br /> GameHost() = %i<br /> GetPlayerSquadId() = %i<br /> GetSquadId() = %i<br /> InKillcam() = %i<br /> InLobby() = %i<br /> InPrivateParty() = %i<br /> IsArtillery() = %i<br /> IsCinematicFinished() = %i<br /> isIntermission() = %i<br /> ismenuopen( %s ) = %i<br /> IsSquadLeader() = %i<br /> localVarBool( %s ) = %i<br /> localVarFloat( %s ) = %f<br /> localVarInt( %s ) = %i<br /> localVarString( %s ) = %s<br /> milliseconds() = %i<br /> otherteamname<br /> player( %s ) = %i<br /> player( %s ) = %s<br /> PrivatePartyHost() = %i<br /> PrivatePartyHostInLobby() = %i<br /> scoped() = %i<br /> scoreboard<br /> scoreboard_visible() = %i<br /> secondsToCountdown() = %s<br /> secondsToTime() = %s<br /> selecting_location() = %i<br /> sin( %f ) = %f<br /> Splitscreen() = %i<br /> SplitscreenHost() = %i<br /> SplitscreenNum() = %i<br /> stat( %i ) = %i<br /> statRangeAnyBitsSet( %i, %i, %i ) = %i<br /> team(%i)( %s ) = %i<br /> team(%i)( %s ) = %s<br /> teamname<br /> ui_active() = %i<br /> weapattackdirect() = %i<br /> weapattacktop() = %i<br /> weaplockblink( %.2f ) = %i<br /> writingdata() = %i<br /> &lt;/pre&gt;<br /> <br /> <br /> == Pre-Processor commands ==<br /> <br /> &lt;pre&gt;<br /> #define<br /> #else<br /> #endif<br /> #ifdef<br /> #ifndef<br /> #include<br /> #undef<br /> &lt;/pre&gt;<br /> <br /> --[[User:CoDEmanX|CoDEmanX]] 15:22, 29 July 2009 (UTC)<br /> <br /> [[Category:Call of Duty 5]]<br /> [[Category:Scripting]]<br /> [[Category:Menu]]<br /> [[Category:Modding]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Blender_Video_Tutorials&diff=16640 Blender Video Tutorials 2012-03-27T14:01:38Z <p>CoDEmanX: </p> <hr /> <div>==Blender to CoD - Import, export and convert a model==<br /> Model used: [http://thefree3dmodels.com/stuff/accessories/barrel/21-1-0-1488 Barrel]<br /> <br /> &lt;videoflash&gt;_kTR3eCZECE&lt;/videoflash&gt;<br /> <br /> &lt;videoflash&gt;9h486eO8JIc&lt;/videoflash&gt;<br /> <br /> <br /> ==Add a texture to an imported model==<br /> Model used: [http://thefree3dmodels.com/stuff/vehicles/ford_mustang_1966_hirez/13-1-0-426 Ford Mustang]<br /> <br /> &lt;videoflash&gt;hSbo2aSjDTc&lt;/videoflash&gt;<br /> <br /> <br /> ==Remove geometry and remesh a model==<br /> Model used: [http://thefree3dmodels.com/stuff/vehicles/ford_mustang_1966_hirez/13-1-0-426 Ford Mustang]<br /> <br /> &lt;videoflash&gt;wHzk22SEe2Q&lt;/videoflash&gt;<br /> <br /> <br /> ==Split model into multiple objects==<br /> This is especially required for complex CoD2 models!<br /> <br /> &lt;videoflash&gt;ZLISpG-tV1Y&lt;/videoflash&gt;<br /> <br /> <br /> ==Rescale and correct orientation==<br /> &lt;videoflash&gt;6OqRlYdcoGs&lt;/videoflash&gt;<br /> <br /> ==Real world scale==<br /> Correct model scale: cm to inches and proportional scaling to a reallife dimension<br /> <br /> &lt;videoflash&gt;USPSDwzcss0&lt;/videoflash&gt;<br /> <br /> <br /> ==Placing a root and another tag==<br /> The root bone's head will become the '''tag_origin''', which will be the model's (0,0,0) coordiante and its origin.<br /> <br /> &lt;videoflash&gt;hWHvJgQJ5j8&lt;/videoflash&gt;<br /> <br /> <br /> ==Parenting a single bone (tag) and a mesh==<br /> &lt;videoflash&gt;qe1F5evl8ZA&lt;/videoflash&gt;<br /> <br /> --[[User:CoDEmanX|CoDEmanX]] 16:16, 16 March 2012 (UTC)<br /> <br /> [[Category:Advanced Editing]]<br /> [[Category:Modelling]]<br /> [[Category:Blender]]<br /> [[Category:Modtools]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Blender_Video_Tutorials&diff=16636 Blender Video Tutorials 2012-03-16T16:16:27Z <p>CoDEmanX: Put my Blender related youtube videos here</p> <hr /> <div>==Blender to CoD - Import, export and convert a model==<br /> Model used: [http://thefree3dmodels.com/stuff/accessories/barrel/21-1-0-1488 Barrel]<br /> <br /> &lt;videoflash&gt;_kTR3eCZECE&lt;/videoflash&gt;<br /> <br /> &lt;videoflash&gt;9h486eO8JIc&lt;/videoflash&gt;<br /> <br /> <br /> ==Add a texture to an imported model==<br /> Model used: [http://thefree3dmodels.com/stuff/vehicles/ford_mustang_1966_hirez/13-1-0-426 Ford Mustang]<br /> <br /> &lt;videoflash&gt;hSbo2aSjDTc&lt;/videoflash&gt;<br /> <br /> <br /> ==Remove geometry and remesh a model==<br /> Model used: [http://thefree3dmodels.com/stuff/vehicles/ford_mustang_1966_hirez/13-1-0-426 Ford Mustang]<br /> <br /> &lt;videoflash&gt;wHzk22SEe2Q&lt;/videoflash&gt;<br /> <br /> <br /> ==Split model into multiple objects==<br /> This is especially required for complex CoD2 models!<br /> <br /> &lt;videoflash&gt;ZLISpG-tV1Y&lt;/videoflash&gt;<br /> <br /> <br /> ==Rescale and correct orientation==<br /> &lt;videoflash&gt;6OqRlYdcoGs&lt;/videoflash&gt;<br /> <br /> <br /> ==Placing a root and another tag==<br /> The root bone's head will become the '''tag_origin''', which will be the model's (0,0,0) coordiante and its origin.<br /> <br /> &lt;videoflash&gt;hWHvJgQJ5j8&lt;/videoflash&gt;<br /> <br /> <br /> ==Parenting a single bone (tag) and a mesh==<br /> &lt;videoflash&gt;qe1F5evl8ZA&lt;/videoflash&gt;<br /> <br /> --[[User:CoDEmanX|CoDEmanX]] 16:16, 16 March 2012 (UTC)<br /> <br /> [[Category:Advanced Editing]]<br /> [[Category:Modelling]]<br /> [[Category:Blender]]<br /> [[Category:Modtools]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Custom_Skyboxes&diff=16628 Call of Duty 5: Custom Skyboxes 2012-03-12T05:14:21Z <p>CoDEmanX: </p> <hr /> <div>[[Image:Nutshell.png]] This page describes how to configure a Skybox in CoDWaW, and how to get it into the game.<br /> <br /> ==What Makes Up A Skybox?==<br /> <br /> The original IW engine supports a cube mapped Skybox that's built as part of the map. Our skybox is a bit different - in that it's simply an arbitrary artist-designed model from Maya. And just like any other Maya-exported xmodel, it can contain multiple pieces of geometry (including the sky dome itself), and may reference multiple materials.<br /> <br /> Once you've exported your model from Maya, launch '''AssetManager''', open the '''model_export/skybox.gdt''' file, and add your skybox's '''xmodel''' and '''materials'''.<br /> <br /> <br /> == Skybox Material Settings ==<br /> <br /> In AssetManager, special care should be taken when adding skybox geometry materials.<br /> <br /> [[Image:Skybox_Imp_0.JPG]]<br /> <br /> ;&lt;font color=&quot;red&quot;&gt;'''materialType'''&lt;/font&gt;<br /> :skybox geometry materials must have their '''materialType''' set to ''&quot;sky noncubemap&quot;''<br /> <br /> ;&lt;font color=&quot;red&quot;&gt;'''sort'''&lt;/font&gt;<br /> :use one of the sky* settings. This determines the render order of the associated geometry. For example, the base skydome geometry should be rendered first(before the clouds), so set it to '''Sky''', the very first sky sort.<br /> <br /> ;&lt;font color=&quot;red&quot;&gt;'''blendFunc'''&lt;/font&gt;<br /> :for the base skydome geometry material, set this to '''Replace''', so that it replaces any existing color. For anything that's on top of the base skydome(such as cloud layers), set it to '''Blend'''(if you want alpha blending)<br /> <br /> ;&lt;font color=&quot;red&quot;&gt;'''alphaTest'''&lt;/font&gt;<br /> :set this to '''Always*'''(effectively turning alpha test off).<br /> <br /> ;&lt;font color=&quot;red&quot;&gt;'''depthTest'''&lt;/font&gt;<br /> :should be set to '''LessEqual*'''.<br /> <br /> ;&lt;font color=&quot;red&quot;&gt;'''depthWrite'''&lt;/font&gt;<br /> :make sure this is '''off'''.<br /> <br /> ;&lt;font color=&quot;red&quot;&gt;'''Enabling UV Texture Animation'''&lt;/font&gt;<br /> :this is controlled by the '''uScroll''' and '''vScroll''' settings.<br /> <br /> == Setting a skybox for your map ==<br /> <br /> Load up the map in CoD5Radiant, and add a key/value pair on the worldspawn. The key must be '''skyboxmodel''', the value must be the name of one of the xmodels defined in '''model_export/skybox.gdt''':<br /> <br /> [[Image:Skybox Imp 1.JPG]]<br /> <br /> <br /> == Seeing The Skybox In Game ==<br /> <br /> Once you have set the worldspawn key/value pair in your map, save it and compile it. Then build the level fastfile. After this is done, you can run your map and should see the skybox.<br /> <br /> <br /> <br /> Sources: [http://wiki.treyarch.com/wiki/Create_Custom_Skybox Treyarch's Wiki]<br /> [[Category:Modding]]<br /> [[Category:Mapping]]<br /> [[Category:Call of Duty 5]]<br /> [[Category:Lighting]]<br /> [[Category:Skybox]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_SP_-_Enviromental_Audio_System&diff=16627 Call of Duty 5: SP - Enviromental Audio System 2012-03-12T05:01:50Z <p>CoDEmanX: </p> <hr /> <div>[[Category:Call of Duty 5]]<br /> [[Category:Modding]]<br /> [[Category:Scripting]]<br /> [[Category:Audio]]<br /> [[Image:Nutshell.png]] The Environmental audio system is a collection of simple objects that allow you to detail out the audio in a map, in full Surround Sound, without ever needing to create a background track by playing everything at world coordinates in a map. <br /> <br /> [[Image:Ambient_system_go.JPG|350px]]<br /> <br /> The system works completely within Radiant and a few script definitions. You can use as many of these elements as you wish without hurting game performance. <br /> <br /> NOTE: all sound must be set to '''3D''' and be '''MONO''' sounds.<br /> == Overview ==<br /> <br /> Below is the quick hit list of the objects that make up the Environmental Sound System.<br /> <br /> * ''looper'' - This is a locational loop based sound.<br /> * ''random'' - This is a locational one shot sound that will play with random intervals.<br /> * ''line_emitter'' - This is a sound entity that is constrained by a line, but it will always follow the player if he is moving parallel to the line.<br /> * ''ambient_room'' - This is a designation of space that you can use to add reverb and control 'Room Tones'...which is just like an old school background track, but instead of having all of your environmental sound in a static track, you playback only non spatialized sounds, room tone (or blend), or even nothing at all (which is what World at War usually does).<br /> * ''ambient_package'' - An ambient package is a collection of one shot sounds that follow the player around. These are Ambient Accents...or one shot sounds that spawn around the player in 3D space, but are not constrained to a specific location in a map.<br /> Not much to it...so here's how you actually put them in the game:<br /> <br /> == LOOPING SOUND EMITTER ==<br /> <br /> * add a script_struct to your map<br /> * select it and press &quot;n&quot; to bring up the entities menu<br /> * give it a targetname (''looper_loop'' in the screenshot)<br /> * in the key window, type '''script_label''' <br /> * 5in the value window, type '''looper''' and press enter<br /> * in the key window, type '''script_looping'''<br /> * in the value window, type '''1'''<br /> * in the key window, type '''script_sound'''<br /> * in the value window, type '''ALIAS_NAME''' - replace that with the looping alias you want to play<br /> <br /> Following the above steps will play your sound alias as a loop at the structs location.<br /> <br /> [[Image:Add_struct.jpg|400px]] [[Image:Entity_window_looper.jpg|400px]]<br /> <br /> == RANDOM SOUND EMITTER ==<br /> <br /> * add a script_struct to your map<br /> * select it and press &quot;n&quot; to bring up the entities menu<br /> * give it a targetname (''random_rand'' in the screenshot)<br /> * in the key window, type '''script_label''' <br /> * in the value window, type '''random''' and press enter<br /> * in the key window, type '''script_wait_min'''<br /> * in the value window, type '''1'''<br /> * in the key window, type '''script_wait_max'''<br /> * in the value window, type '''3'''<br /> * in the key window, type '''script_sound'''<br /> * in the value window, type '''ALIAS_NAME''' - replace that with the looping alias you want to play<br /> <br /> Following the above steps will play your sound alias between the script_wait_min value and the script_wait_max value at the structs location. (The time here is in seconds).<br /> <br /> [[Image:Entity_window_random.jpg|400px]]<br /> <br /> == LINE SOUND EMITTER ==<br /> <br /> * add two script_structs to your map<br /> * select them both and press '''w''' to weld them together.<br /> * deselect them both and then reselect the first point (where the arrows are going away from the struct) and press '''n''' to bring up the entity view.<br /> * give the first point a unique targetname ('''line_emitter_example''' in the screenshot.<br /> * in the key window, type '''script_label''' <br /> * in the value window, type '''line_emitter''' and press enter<br /> * in the key window, type '''script_looping'''<br /> * in the value window, type '''1'''<br /> * in the key window, type '''script_sound'''<br /> * in the value window, type '''ALIAS_NAME''' - replace that with the looping alias you want to play<br /> <br /> [[Image:Entity_window_line_emitter.jpg|400px]]<br /> <br /> Following the above steps will create a line that your looping sound will play on. As you walk down the line, the sound will slide with you...but as you walk away from it, the sound will stay put. This is useful for a lot of things, but a river would be a good simple example...you just play a looping river sound on a line that follows the river and it will sound right (and be positioned correctly) no matter how the player moves through the environment.<br /> <br /> If the crosshairs in the picture above is the player, then the sound would be sitting near the end of the line. If the you move along the line, the sound will slide along with you.<br /> <br /> == DESIGNATING ROOMS AND PACKAGES ==<br /> <br /> &lt;font color=&quot;red&quot;&gt;'''OVERVIEW'''&lt;/font&gt;<br /> <br /> There are two parts to designating an ambient room &amp; package. The first part of this is in Radiant. The second part of this is in script.<br /> <br /> Really, all you are doing is creating a trigger_multiple and assigning it values that the audio engine can understand. &quot;script_ambientroom&quot; is the name of the room that you'll define in the second part of this tutorial. &quot;script_ambientpackage&quot; is a 'package' of one shot ambient sounds that will spawn around you, based on some definitions that we'll also take care of in the second part of the tutorial. &quot;script_ambientpriority&quot; tells the game engine what package to use in case the player is in multiple triggers at once (the highest number prevails).<br /> <br /> &lt;font color=&quot;red&quot;&gt;'''PART ONE'''&lt;/font&gt;<br /> <br /> Let's say you have a building that you can go into and you want to change the reverb settings and maybe the Accent sounds that are playing when you go inside. You simply:<br /> <br /> * create a trigger_multiple<br /> * make the trigger fit the space exactly!<br /> * select the trigger and press '''n''' to bring up the entity window.<br /> * type '''script_ambientroom''' in the key window<br /> * type '''ROOM_NAME''' in the value window and press enter (replace '''ROOM_NAME''' with the name of your choice...you'll define it in the next section)<br /> * type '''script_ambientpackage''' in the key window<br /> * type '''PACKAGE_NAME''' in the value window and press enter. (replace '''PACKAGE_NAME''' with the name of your choice...you'll define it in the next section)<br /> * type '''targetname''' in the key window<br /> * type '''ambient_package''' in the value window and press enter. ('''NOTE:''' These MUST be named '''ambient_package''' or they will not work!)<br /> * type '''script_ambientpriority''' in the key window<br /> * type '''1''' in the value window and press enter.<br /> <br /> [[Image:Ambient_room_radiant.jpg|400px]]<br /> <br /> So now you have a trigger with the right parameters, but you need the audio engine to understand what it all means...so lets go define these rooms.<br /> <br /> &lt;font color=&quot;red&quot;&gt;'''PART TWO'''&lt;/font&gt;<br /> <br /> As you can see from the picture above my room is called &quot;sniper_wood_interior&quot; and my package (heh) is called &quot;sniper_wood_interior&quot;. I named them the same because it was a lot easier to keep track of hundreds of rooms during development. You can name these any way you like, but its good to have some consistency so you know that a specific package also goes with a specific room.<br /> <br /> So, the first thing you need to do is open the .csc file that corresponds to your map. We'll use Sniper as the example.<br /> <br /> * open your_level.csc<br /> * anywhere in the main() function in this file, you can set up your rooms.<br /> * use '''declareAmbientRoom(&quot;ROOM_NAME&quot;);''' this should correspond to the room name you listed in Radiant in part 1.<br /> * use '''setAmbientRoomTone(&quot;ROOM_NAME&quot;, &quot;SOUND_ALIAS&quot;);''' (as you can see in the screenshot below, I didn't use one of these in sniper.<br /> * use '''setAmbientRoomReverb(&quot;ROOM_NAME&quot;, &quot;REVERB_NAME&quot;, 1, 1);''' (you can get a list of valid reverb names in globals\reverb.csv. Additionally, the extra parameters control dry and wet volumes respectively...I used &quot;padded_cell&quot; in sniper.<br /> * use '''declareAmbientPackage (&quot;PACKAGE_NAME&quot;);''' this should correspond to the package name you listed in Radiant in part 1.<br /> * use '''addAmbientElement (&quot;PACKAGE_NAME&quot;, &quot;SOUND_ALIAS&quot;, p1, p2, p3, p4);''' (p1 = min time, p2 = max time, p3 = min dist, p4 = max dist). You can add as many alias' to the ambient package system as you like.<br /> <br /> [[Image:Ambient_scripting_full.jpg|600px]]<br /> <br /> <br /> So the last part of this is activating the &quot;default&quot; room. Instead of having to draw triggers everywhere (even out in the open), we think of the triggers you just made as an 'override'. You can set a default room and package that is 'everywhere except inside a trigger'. This is done with the '''activateAmbientRoom ( 0, &quot;outdoors_room&quot;, 0); and activateAmbientPackage( 0, &quot;oudoors_pkg&quot;, 0);''' you see at the end of the main() function of sniper in the example above.<br /> <br /> <br /> <br /> Sources: [http://wiki.treyarch.com/wiki/Treyarch_Enviromental_Audio_System Treyarch's Wiki]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Audio_References&diff=16626 Call of Duty 5: Audio References 2012-03-12T04:59:45Z <p>CoDEmanX: </p> <hr /> <div>[[Category:Call of Duty 5]]<br /> [[Category:Modding]]<br /> [[Category:Scripting]]<br /> [[Category:Audio]]<br /> [[Image:Nutshell.png]] In the interest of helping you understand our tools and pipelines better, it may be good to see how we go about thinking about putting audio into our games. First and foremost, we needed a toolset that would help us create more realistic sounding games that support 5.1 and 7.1 natively, include more robust ambient or environmental audio support, and that have enough dynamic control over playing sounds so that we can manipulate what you hear in the same ways that movies do. To that end, we've come up with some new essential pieces of technology that are outlined here so you can mod them and hopefully do some amazing work with sound.<br /> <br /> To get the most out of the new sound engine, you'll need to understand what these new technologies and processes do, and how they work together.<br /> <br /> == '''New Features''' ==<br /> <br /> <br /> * &lt;font color=&quot;red&quot;&gt;''Fully Dynamic Audio Occlusion''&lt;/font&gt; - This is a system that filters high frequencies out of sounds that are played behind obstructions (which is actually a better name for what we're really doing here, but that's a different discussion). In other words, sounds that are blocked by props or terrain sound muffled. Longer sounds that continue to play as you round corners will be muffled only when you keep obstacles in between you and the sound source. So, as you play, you'll notice sounds constantly changing based on what you are doing. <br /> <br /> * &lt;font color=&quot;red&quot;&gt;''Environmental Audio System''&lt;/font&gt; - This is a complete system utilized within Radiant that allows full control over a level's ambient sound. The system serves one primary purpose - make the level sound detailed and extremly positional in stereo, 5.1, or 7.1. This system completely removes the need for the old school background track...the game can now dynamically render this audio in realtime, giving you much greater control over how each area sounds and is fully customizable. The system allows you to control reverb (including custom presets), occlusion overrides, Ambient Accents, and RoomTones (if you want one). The system itself is extrodinarily simple to use, but also very powerful.<br /> <br /> * &lt;font color=&quot;red&quot;&gt;''FLUX''&lt;/font&gt; - Flux is a system we developed that simulates ''reflections'' (sound bouncing off of terrain\objects) and ''shockwaves'' (sound eminating from loud sources---like grenades and other explosions). This system keeps sound moving constantly, instead of always remaining static. You can hear an example of this system in action by listening to the sounds of the sniper rifles in the game. The decay from the shot is no longer static...it moves throughout the environment and keeps everything sounding fluid and dynamic.<br /> <br /> * &lt;font color=&quot;red&quot;&gt;''Multi-Layering''&lt;/font&gt; - This is less a piece of technology, and more of a process, however, we have implemented a method that allows things like gunshots to be multi-layered (some of the guns in the game have 5 or 6 layers, just for the shot). These layers can be blended by the audio engine in real-time, which allows for sounds to have distant, medium, and close range sounds that all come in and out seamlessly when you move through an environment.<br /> <br /> * &lt;font color=&quot;red&quot;&gt;''Event Based Music System''&lt;/font&gt; - We've developed a music package system that allows you to define music states that have oneshot in, loop, and a oneshot transition out when states chage. This gives you a lot of flexibility in creating musical landscapes that are as nonlinear as your level.<br /> <br /> * &lt;font color=&quot;red&quot;&gt;''Fully Scriptable Busing System''&lt;/font&gt; - This system allows you to define bus states that can control multiple sound files simultaneously in terms of volume for dramatic effect.<br /> <br /> * &lt;font color=&quot;red&quot;&gt;''Built in Ring Modulator DSP''&lt;/font&gt; - Perfect for special effects.<br /> <br /> * &lt;font color=&quot;red&quot;&gt;''Low Pass Filter DSP''&lt;/font&gt; - For both occlusion\obstruction effects and for distance filtering.<br /> <br /> * &lt;font color=&quot;red&quot;&gt;''Dynamic Channel Management System''&lt;/font&gt; - This is a dynamic real-time channel management system that ensures that the only channels being shut off are channels that are playing the most quiet sounds. This reduces popping and noise caused when sounds are shut off improperly. It also allows us to increase the range at which you hear sounds dramatically. <br /> <br /> * &lt;font color=&quot;red&quot;&gt;''Instance Limiting''&lt;/font&gt; - This system gives you the ability to control how many instances of a single alias are allowed to exist, and what to do in case more than the limited amount try to play. This gives you great static control over your channel useage and helps with phasing sounds.<br /> <br /> * &lt;font color=&quot;red&quot;&gt;''Randomize Type''&lt;/font&gt; - This system was designed to keep sounds from phasing so much when there are several of the same sound playing at once. In COD games you tend to have multiple weapons firing simultaneously, most likely of the same type. Without this system, you would have little control over phasing---this system allows you to define certain aspects of a playing sound alias, so that if another of the same alias fires, you can give yourself great odds that it will not phase. No solution is going to be 100% on this, but the system allows for great flexibility. It is also used to kill the 3rd person pitch variance on 3rd person SMG's.<br /> <br /> * &lt;font color=&quot;red&quot;&gt;''Reverb Wet\Dry Curves; Reverb Max Distance''&lt;/font&gt; - This gives you the ability to modulate wet signal reverb over distance.<br /> <br /> <br /> <br /> Sources: [http://wiki.treyarch.com/wiki/Brief_Overview_of_Audio_Philosophy Treyarch's Wiki]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty:_Changing_LOD_distance_of_existing_model&diff=16624 Call of Duty: Changing LOD distance of existing model 2012-03-11T19:42:23Z <p>CoDEmanX: </p> <hr /> <div>== Required ==<br /> <br /> * Tiny Hexer - Download from [http://www.softpedia.com/get/Others/Miscellaneous/tiny-hexer.shtml Mirror 1] or [http://www.chip.de/downloads/Tiny-Hexer-1.8.1.6_13014623.html Mirror 2]<br /> <br /> * Alternative: [http://www.sweetscape.com/010editor/ SweetScape 010 Editor] (Shareware)<br /> <br /> <br /> == Description ==<br /> <br /> #Open an '''xmodel file''' in hex editor<br /> #Look for xmodelsurfs names<br /> #Position cursor at the beginning of such a name, e.g. &lt;span style=&quot;color:gray&quot;&gt;HERE&lt;/span&gt;body_sp_zakaev_load01...<br /> #Go '''back 4 bytes'''<br /> #Open from menu if not already: Tools &gt; '''Value Editor''' &lt;br&gt;- SweetScape 010 Editor: use the Inspector panel instead<br /> #Change type to SINGLE '''Float''' (IEEE, 32 bits)<br /> #Make sure '''Radix''' is set to '''10'''<br /> #Change value and hit enter to apply<br /> #Save under '''different file''' name to xmodel folder<br /> <br /> <br /> == Video ==<br /> <br /> &lt;videoflash&gt;Ja0XyXGZCms&lt;/videoflash&gt;<br /> <br /> --[[User:CoDEmanX|CoDEmanX]] 17:46, 11 March 2012 (UTC)</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty:_Changing_LOD_distance_of_existing_model&diff=16623 Call of Duty: Changing LOD distance of existing model 2012-03-11T17:46:19Z <p>CoDEmanX: Created page with &quot;== Required == * Tiny Hexer - Download from [http://www.softpedia.com/get/Others/Miscellaneous/tiny-hexer.shtml Mirror 1] or [http://www.chip.de/downloads/Tiny-Hexer-1.8.1.6_130...&quot;</p> <hr /> <div>== Required ==<br /> <br /> * Tiny Hexer - Download from [http://www.softpedia.com/get/Others/Miscellaneous/tiny-hexer.shtml Mirror 1] or [http://www.chip.de/downloads/Tiny-Hexer-1.8.1.6_13014623.html Mirror 2]<br /> <br /> * Alternative: [http://www.sweetscape.com/010editor/ SweetScape 010 Editor] (Shareware)<br /> <br /> <br /> == Description ==<br /> <br /> #Open an '''xmodel file''' in hex editor<br /> #Look for xmodelsurfs names<br /> #Position cursor at the beginning of such a name, e.g. &lt;span style=&quot;color:gray&quot;&gt;HERE&lt;/span&gt;body_sp_zakaev_load01...<br /> #Go '''back 4 bytes'''<br /> #Open from menu if not already: Tools &gt; '''Value Editor''' &lt;br&gt;- SweetScape 010 Editor: use the Inspector panel instead<br /> #Change type to SINGLE '''Float''' (IEEE, 32 bits)<br /> #Change value and hit enter to apply<br /> #Save under '''different file''' name to xmodel folder<br /> <br /> <br /> == Video ==<br /> <br /> &lt;videoflash&gt;Ja0XyXGZCms&lt;/videoflash&gt;<br /> <br /> --[[User:CoDEmanX|CoDEmanX]] 17:46, 11 March 2012 (UTC)</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&diff=16622 Call of Duty 2: d3dbsp 2012-03-10T21:19:45Z <p>CoDEmanX: -spam</p> <hr /> <div>{{Note|Deciphering the Call of Duty 2 D3DBSP format}}<br /> <br /> The .d3dbsp structure, Call of Duty 2's variant on the well-known BSP format, is rather difficult to decipher. Since it's a binary file you can't simply read it. A hexadecimal editor is the best tool in this case. I am still deciphering it myself, I will post anything I happen to get known of regarding the file format.<br /> <br /> <br /> Be sure to read [http://www.geocities.com/cofrdrbob/bspformat.html here] and [http://en.wikipedia.org/wiki/BSP_(file_extension) here] before you even try to decipher it. Knowing what the technique is that BSP formatted maps use, could be handy as well. The Call of Duty 2 engine is based on its ancestor, so is the BSP: [[Call of Duty 1: d3dbsp]]<br /> <br /> Every number ending with an 'h' indicates its a number using the hexadecimal count system. For other numbers one can assume the decimal count system is used.<br /> <br /> '''Numbers are stored in little-endian.'''<br /> The endianness describes the order in which a sequence of bytes are stored in computer memory. Little-endian is an order in which the &quot;little end&quot; (least significant value in the sequence) is stored first.<br /> <br /> <br /> An useful however not documented feature of the cod2map.exe is the &lt;code&gt;-info&lt;/code&gt; parameter. It analyzes the given BSP and prints the name, length and entry count of all lumps to console. One can use it for deductions regarding the lump and entry sizes and also to identify the kind of content.<br /> <br /> <br /> =Header=<br /> The file starts with 2 DWORDS: the header 'IBSP' indicating this is a BSP file originally designed by ID software and the version number 4 (4h).<br /> <br /> Then there is an array, filled with DWORD pairs, indicating the lump's offset and length respectively. The array ends with 2 empty (zero) DWORDs. Each lump that has size 0 in the list is simply not filled / not used.<br /> <br /> [[Image:Lightbulb.png]]'' Note: there can be a difference of number of lumps per map. If a map has a leak<br /> (no solid skybox or not everything is IN the skybox) the bsp only has 24 lumps (or even 23 if light is not<br /> compiled). The bsp description yet only supports the 37-lumps version (a valid map).''<br /> <br /> <br /> =Lumps=<br /> A BSP is organized in several sections, called lumps. Each lump stores data with different functionality. It's a data unit containing sub-sections, or better: entries. Every entry is a binary representations of something, a plane &lt;span class=&quot;plainlinks&quot;&gt;[http://www.surgepromotions.com/74/custom-shot-glasses/ &lt;span style=&quot;color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&quot;&gt;custom shot glasses&lt;/span&gt;] for instance. Such a plane is stored as a normal vector (3 floats) and a distance (1 float). The length of the datatype &quot;float&quot; is 4 byte (DWORD), so the size of one plane entry is 4 DWORDs (4*4 = 16 bytes).<br /> <br /> <br /> == Lump[0] - Materials ==<br /> ''former Textures''<br /> <br /> Texture information is 72 bytes long per texture. The first 64 bytes are used for the texture name. Then we have an DWORD for flags, and another DWORD for content flags.<br /> <br /> &lt;pre&gt;struct Material<br /> {<br /> char name[64];<br /> unsigned char flags[2][4];<br /> };&lt;/pre&gt;<br /> <br /> <br /> '''Example:'''<br /> &lt;pre&gt;<br /> d_beachpebble 0x00b00000 0x00000004<br /> stalingrad_ground_trench 0x00e00000 0x00000001<br /> duhoc_dirt_ground1 0x00600000 0x00000001<br /> &lt;/pre&gt;<br /> <br /> <br /> '''Flags:'''<br /> &lt;pre&gt;<br /> Surface type:<br /> -------------<br /> - - &lt;error&gt; (asset manager will fail)<br /> 0x00000000 0x00000001 &lt;none&gt;<br /> 0x01600000 0x00000001 asphalt<br /> 0x00100000 0x00000001 bark<br /> 0x00200000 0x00000001 brick<br /> 0x00300000 0x00000001 carpet<br /> 0x00400000 0x00000001 cloth<br /> 0x00500000 0x00000001 concrete<br /> 0x00600000 0x00000001 dirt<br /> 0x00700000 0x00000001 flesh<br /> 0x00800000 0x00000002 foliage<br /> 0x00900000 0x00000010 glass<br /> 0x00a00000 0x00000001 grass<br /> 0x00b00000 0x00000001 gravel<br /> 0x00c00000 0x00000001 ice<br /> 0x00d00000 0x00000001 metal<br /> 0x00e00000 0x00000001 mud<br /> 0x00f00000 0x00000001 paper<br /> 0x01000000 0x00000001 plaster<br /> 0x01100000 0x00000001 rock<br /> 0x01200000 0x00000001 sand<br /> 0x01300000 0x00000001 snow<br /> 0x01400000 0x00000020 water<br /> 0x01500000 0x00000001 wood<br /> <br /> Surface properties:<br /> -------------------<br /> 0x00000000 0x00000080 missileClip<br /> 0x00000000 0x00002000 bulletClip<br /> 0x00000000 0x00010000 playerClip<br /> 0x00000000 0x00000200 vehicleClip<br /> 0x00000000 0x00020000 aiClip<br /> 0x00000000 0x00000400 itemClip<br /> 0x00000000 0x00000041 canShootClip<br /> 0x00000000 0x00001000 aiSightClip<br /> 0x00000001 0x00000001 noFallDamage<br /> 0x00002000 0x00000001 noSteps<br /> 0x00000010 0x00000001 noImpact<br /> 0x00000020 0x00000001 noMarks<br /> 0x00000000 0x80000000 noDrop<br /> 0x00000002 0x00000001 slick<br /> 0x00000008 0x00000001 ladder<br /> 0x02000000 0x01000001 mantleOn<br /> 0x04000000 0x01000001 mantleOver<br /> 0x00000000 0x00000001 noLightmap<br /> 0x00020000 0x00000001 noDynamicLight<br /> 0x00040000 0x00000001 noCastShadow<br /> 0x00000080 0x00000001 noDraw<br /> 0x00000000 0x00000001 noFog<br /> 0x00000000 0x00000001 drawToggle<br /> 0x00000004 0x00000800 sky<br /> 0x00000000 0x00000001 radialNormals<br /> 0x00000000 0x00000004 nonColliding<br /> 0x00004000 0x00000000 nonSolid<br /> 0x00000000 0x20000001 transparent \__ (two entries<br /> 0x00000000 0x28000001 transparent / added to lump)<br /> 0x00000000 0x08000001 detail<br /> 0x00000000 0x10000001 structural<br /> 0x80000000 0x00000000 portal<br /> 0x00000000 0x00000001 occluder<br /> - - origin (no lump entry)<br /> &lt;/pre&gt;<br /> <br /> &lt;br id=&quot;combinations&quot;&gt;<br /> Combinations (examples):<br /> &lt;pre&gt;<br /> 0x00000000 0x00002080 missleClip &amp; bulletClip<br /> 0x00000000 0xb0000000 noDrop &amp; transparent &amp; structural<br /> 0x00000000 0x90000000 noDrop &amp; structural<br /> 0x00000004 0x20000800 transparent &amp; sky \__ (two entries<br /> 0x00000004 0x28000800 transparent &amp; sky / added to lump)<br /> 0x01400088 0x00000020 water &amp; noFog &amp; noDraw &amp; ladder<br /> &lt;/pre&gt;<br /> <br /> These flags can be set in AssMan, nonetheless some Radiant functions influence them as well, e.g.<br /> <br /> &lt;pre&gt;&quot;Make Weapon Clip&quot; on a wood-textured brush<br /> <br /> 0x01500000 0x00000001 \__ usual wood flags<br /> 0x01500000 0x00002080 / first flag like wood, second flag missleClip &amp; bulletClip<br /> <br /> Note: the brush lost its collision (less planes in lump 4 etc.)&lt;/pre&gt;<br /> <br /> <br /> == Lump[1] - Lightmaps ==<br /> ''former World Lightning''<br /> <br /> Contains most of the pre-processed lightning. Not present if compiled without lightning, otherwise a multiple of 4.096 KB.<br /> <br /> Without: World geometry is rendered overbright<br /> <br /> [[Image:CoD2 Toujane Lump1.jpg|300px]]<br /> <br /> <br /> == Lump[2] - Light Grid Hash ==<br /> former ''Light Volume''<br /> <br /> Precalculated (sun)light in the 3d space of the playable area, also called light grid. Each entry is 8 bytes long.<br /> <br /> Without: a lot less light influence and a little rainbow colors on entities (e.g. player)<br /> <br /> [[Image:CoD2 Toujane Lump2.jpg|300px]]<br /> <br /> <br /> == Lump[3] - Light Grid Values ==<br /> ''former Model Lightning''<br /> <br /> Base (sun)light for model entities (ground lighting for xmodels). 24 bytes per entry.<br /> <br /> Without: models show up very dark<br /> <br /> [[Image:CoD2 Toujane Lump3.jpg|300px]]<br /> <br /> <br /> == Lump[4] - Planes ==<br /> Each plane is defined by 4 DWORDs (16 bytes), 3 for the normal vector and 1 for the offset of the origin. Planes are faces with infinite length, we suspect they have to do with the rendering system.<br /> <br /> &lt;pre&gt;struct Plane<br /> {<br /> float normal[3];<br /> float distance;<br /> };&lt;/pre&gt;<br /> <br /> <br /> '''Example:'''<br /> <br /> [[Image:CoD2_Planes.png|300px]]<br /> &lt;pre&gt;<br /> 0 | 0 0 1 128<br /> 1 | 0 0 1 320<br /> 2 | 0 1 0 -384<br /> 3 | 1 0 0 384<br /> 4 | 0 1 0 -128<br /> 5 | 1 0 0 128<br /> 6 | 0 0.707107 0.707107 90.5097<br /> &lt;/pre&gt;<br /> <br /> <br /> == Lump[5] - Brushsides ==<br /> Without: CMod_LoadBrushes: bad side count<br /> <br /> &lt;pre&gt;struct Brushside<br /> {<br /> union Column1 // first 6 entries indicated by an entry in lump 6 are distances, rest is plane ID's<br /> {<br /> unsigned int plane;<br /> float distance;<br /> } column1;<br /> <br /> unsigned int texture;<br /> };&lt;/pre&gt;<br /> <br /> <br /> Lump 5 and 6 are used for the collision map, however the second column holds texture IDs. The ID is a reference to [[#Lump.5B0.5D_-_Materials|lump 0]] and can be used to look up the texture flags. These tell the game wether the brush is used for collision detection only, acts as ladder, player clip etc.<br /> <br /> Each entry has a length of 8 bytes. Two columns, first either distance or plane id:<br /> *&lt;code&gt;float&amp;nbsp; distance - plane parallel to x, y or z axis&lt;/code&gt;<br /> *&lt;code&gt;ushort plane_id - slant plane reference to [[#Lump.5B4.5D_-_Planes|lump 4]] (#)&lt;/code&gt;<br /> <br /> <br /> The first six entries per brush ([[#Lump.5B6.5D_-_Brushes|lump 6]]) are distances defining a bounding box, followed by optional plane IDs for more complex, but still convex brushes. Imagine a wooden cube (bounding box), where you cut off pieces with an axe. Note that the axe's blade is infinite, you can't do partial cuts.<br /> <br /> The normal vector's direction represents the plane's facing. The decision, which part will be kept of the volume (brush), is made here. The part the vector points is dropped. If you negate the normal vector, it points to the remaining volume.<br /> <br /> [[Image:CoD2_-_Cutting_Brush_with_Plane_2.png|600px]]<br /> <br /> <br /> '''Example:'''<br /> &lt;pre&gt;<br /> 128 20<br /> 384 18<br /> -384 17<br /> -128 19<br /> 128 15<br /> 320 16<br /> 13 # 21<br /> 128 12<br /> 384 14<br /> 128 13<br /> 384 14<br /> 128 11<br /> 320 14<br /> 10 # 14<br /> 12 # 14<br /> &lt;/pre&gt;<br /> <br /> {|<br /> |-valign=&quot;top&quot;<br /> | [[Image:CoD2_Brush_Bounding_Box.png|350px]]<br /> |&lt;div style=&quot;margin-left:20px;margin-right:20px;&quot;&gt;<br /> <br /> '''Order of the bounding box sides:'''<br /> &lt;br&gt;<br /> *1 - left<br /> *2 - right<br /> *3 - front<br /> *4 - back<br /> *5 - bottom<br /> *6 - top<br /> &lt;br&gt;<br /> Bounding Box:<br /> &lt;p&gt;The minimum or smallest bounding or enclosing box&lt;br&gt;<br /> that indicates the maximum extents of an object.&lt;br&gt;<br /> In our case, each two sides are parallel to&lt;br&gt;<br /> one of the axis (x/y/z) to shape an aligned cube.&lt;br&gt;<br /> (technical term: AABB - axis-aligned bounding box)&lt;/p&gt;<br /> &lt;/div&gt;<br /> |}<br /> <br /> <br /> Second column is a texture id, texture lump:<br /> &lt;pre&gt;<br /> 0 | dawnville2_wartorn_brick07 0x00200000 0x00000001<br /> 1 | dawnville2_wood_boards01 0x01500000 0x00000001<br /> 2 | dawnville2_wood_boards01 0x01500000 0x00002080<br /> &lt;/pre&gt;<br /> <br /> == Lump[6] - Brushes ==<br /> Without: no collision with brush geometry. [http://xfire.com/video/79c82/ Footage (Xfire)]<br /> <br /> <br /> &lt;pre&gt;struct Brush<br /> {<br /> unsigned short sides;<br /> unsigned short material_id;<br /> };&lt;/pre&gt;<br /> <br /> <br /> Brushside index, two ushorts per entry (2 byte unsigned integer, 4 bytes each row).<br /> <br /> *First column:<br /> Amount of brushsides, start id can be calculated &lt;code&gt;(sum_of_previous_amounts - 1)&lt;/code&gt;&lt;br&gt;<br /> For end id, add the entry value to the start id &lt;code&gt;(sum_of_previous_amounts - 1 + amount_of_brushsides)&lt;/code&gt;<br /> <br /> &lt;pre&gt;<br /> 7 15<br /> 8 11<br /> &lt;/pre&gt;<br /> <br /> *Second column:<br /> Might be texture id, perhaps one of the applied textures as default.&lt;br&gt;<br /> If more than one texture is mapped to the brush, it may get overwritten (brushsides lump texture id).<br /> <br /> New theory: the texture flags (properties) are actually referenced to set up the brush characteristic and the engine behaves accordingly.<br /> <br /> <br /> == Lump[7] - TriangleSoups ==<br /> Without: LoadMap: funny lump size in (*.d3dbsp)<br /> <br /> It's like the missing link between the triangles ([[#Lump.5B9.5D_-_Triangles|lump 9]]) and vertices ([[#Lump.5B8.5D_-_Vertices|lump 8]]). It refers to both of them defining the texture per triangle, giving the offset in the vertex lump to which the numbers in lump 9 point to (ID's in lump 9 point to vertex as in: offset + ID, offset is given in this lump). Also offset in triangles lump is given.<br /> <br /> 16 bytes per entry:<br /> <br /> &lt;pre&gt;struct TriangleSoup<br /> {<br /> unsigned short material_id;<br /> <br /> unsigned short draw_order;<br /> <br /> unsigned int vertex_offset;<br /> unsigned short vertex_length;<br /> <br /> unsigned short triangle_length;<br /> unsigned int triangle_offset;<br /> };&lt;/pre&gt;<br /> <br /> <br /> '''Example:'''<br /> &lt;pre&gt;<br /> 0 0 0 24 84 0<br /> 1 0 24 8 24 84<br /> 2 0 32 14 18 108<br /> 3 0 46 40 66 126<br /> 4 0 86 16 24 192<br /> 5 0 102 78 144 216<br /> &lt;/pre&gt;<br /> <br /> <br /> == Lump[8] - Vertices ==<br /> ''or DrawVerts''<br /> <br /> Every vertex entry is 17 DWORDs long (68 bytes).<br /> First 3 DWORDs define the position (x y and z). Next 3 DWORDs define the normal vector of the vertex (x y and z) (WHY?!), then a DWORD which defines the colour (BGR) and the opacity (A). Then 2 DWORDs which have to do with texture shifting, and 2 more DWORDs for something yet unknown. At the end we have 6 DWORDs having to do with texture alignment (rotation?).<br /> <br /> &lt;pre&gt;struct DrawVertex<br /> {<br /> float position[3];<br /> float normal[3];<br /> unsigned char rgba[4];<br /> <br /> float uv[2];<br /> float st[2];<br /> <br /> float unknown[6];<br /> };&lt;/pre&gt;<br /> <br /> <br /> '''Example:'''<br /> &lt;pre style=&quot;overflow:auto;&quot;&gt;<br /> 256 256 -64 0.235702 0.235702 0.942809 0xff80a0c0 1.000000 1.000000 0.023438 0.001953 0.970143 0.000000 -0.242536 -0.057166 0.971825 -0.228665 <br /> 0 256 0 0.119573 0.119573 0.985599 0xff80a0c0 0.000000 1.000000 0.007813 0.001953 0.992719 0.000117 -0.120451 -0.014518 0.992825 -0.118689 <br /> 0 0 0 0 0 1 0xff80a0c0 0.000000 0.000000 0.007813 0.017578 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 <br /> 256 0 0 0.119573 0.119573 0.985599 0xff80a0c0 1.000000 0.000000 0.023438 0.017578 0.992719 0.000117 -0.120451 -0.014518 0.992825 -0.118689 <br /> -100 0 0 0 0 1 0xffffffff 0.804688 0.000000 0.001709 0.017578 1.000000 0.000000 0.000000 0.000000 -1.000000 0.000000 <br /> 0 0 0 0 0 1 0xffffffff 1.000000 0.000000 0.007813 0.017578 1.000000 0.000000 0.000000 0.000000 -1.000000 0.000000 <br /> &lt;/pre&gt;<br /> <br /> <br /> == Lump[9] - Triangles ==<br /> ''or DrawIndexes''<br /> <br /> A face is made up of 3 vertexes, giving a triangle. One entry is actually 2 bytes long (ushort), but 3 sequently stored make up one triangle. So 3 entries can be treated as 1.<br /> <br /> &lt;pre&gt;struct DrawIndex<br /> {<br /> unsigned short vertex[3];<br /> };&lt;/pre&gt;<br /> <br /> <br /> '''Example:'''<br /> &lt;pre&gt;<br /> 8 9 6 <br /> 12 13 10 <br /> 22 23 20 <br /> 20 21 22 <br /> 2 19 0 <br /> 0 5 2 <br /> 18 3 16 <br /> 16 17 18 <br /> 10 14 12 <br /> 6 15 8 <br /> 11 7 4 <br /> 4 1 11 <br /> 6 7 4 <br /> 4 5 6 <br /> 2 3 0 <br /> 0 1 2 <br /> &lt;/pre&gt;<br /> <br /> <br /> == Lump[10] - Cull Groups ==<br /> 32 bytes per entry.<br /> <br /> <br /> == Lump[11] - Cull Group Indexes ==<br /> 4 bytes per entry.<br /> <br /> <br /> == Lump[17] - Portal Verts ==<br /> 12 bytes per entry.<br /> <br /> &lt;pre&gt;struct PortalVertex<br /> {<br /> float unknown[3];<br /> };&lt;/pre&gt;<br /> <br /> == Lump[18] - Occluder ==<br /> 20 bytes per entry. Fine portalling within a cell, [http://developer.valvesoftware.com/wiki/Func_occluder Valve Engine example]<br /> <br /> <br /> == Lump[19] - Occluder Planes ==<br /> 4 bytes per entry.<br /> <br /> <br /> == Lump[20] - Occluder Edges ==<br /> 4 bytes per entry.<br /> <br /> <br /> == Lump[21] - Occluder Indexes ==<br /> 2 bytes per entry.<br /> <br /> <br /> == Lump[22] - AABB Trees ==<br /> Without: game crashes with application error<br /> <br /> 12 bytes per entry. Web links: [http://www.cyberkreations.com/kreationsedge/?page_id=27] [http://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323]<br /> <br /> &lt;pre&gt;struct AABBTree<br /> {<br /> unsigned int unknown[3];<br /> };&lt;/pre&gt;<br /> <br /> <br /> '''Example:'''<br /> &lt;pre&gt;<br /> 0 1278 8 <br /> 0 300 6 <br /> 300 22 2 <br /> 322 292 5 <br /> 614 17 2 <br /> &lt;/pre&gt;<br /> <br /> <br /> == Lump[23] - Cells ==<br /> Assumed to be VIS portals, contains a cell in Skybox dimension (first entry). 52 bytes per entry (example needs update!).<br /> <br /> &lt;pre&gt;struct Cell<br /> {<br /> float unknown[3];<br /> };&lt;/pre&gt;<br /> <br /> <br /> '''Example:'''<br /> &lt;pre&gt;<br /> 120 -392 120 <br /> 392 -120 328 <br /> 0 0 0 <br /> 0 0 0 <br /> &lt;/pre&gt;<br /> <br /> <br /> == Lump[24] - Portals ==<br /> 16 bytes per entry.<br /> <br /> &lt;pre&gt;struct Portal<br /> {<br /> unsigned int unknown[4];<br /> };&lt;/pre&gt;<br /> <br /> <br /> == Lump[25] - Nodes ==<br /> Without: Map has no Nodes<br /> <br /> 36 bytes per entry.<br /> <br /> &lt;pre&gt;struct Node<br /> {<br /> int unknown[9];<br /> };&lt;/pre&gt;<br /> <br /> <br /> '''Example:'''<br /> &lt;pre&gt;<br /> 1 -2 1 -16 -16 -8 8 8 16 <br /> 5 2 -8 -16 -16 -8 8 8 8 <br /> 0 3 -7 -8 -16 -8 8 8 8 <br /> 3 -3 4 -8 -16 0 8 8 8 <br /> 4 -4 5 -8 -16 0 0 8 8 <br /> 2 -5 -6 -8 -16 0 0 0 8 <br /> &lt;/pre&gt;<br /> <br /> <br /> == Lump[26] - Leafs ==<br /> Without: Map has no Leafs<br /> <br /> 36 bytes per entry.<br /> <br /> &lt;pre&gt;struct Leaf<br /> {<br /> int unknown[9];<br /> };&lt;/pre&gt;<br /> <br /> <br /> '''Example:'''<br /> &lt;pre&gt;<br /> 0 0 0 0 0 0 0 0 0 <br /> -1 -1 0 0 0 1 -1 0 0 <br /> -1 -1 0 0 1 1 -1 0 0 <br /> -1 -1 0 0 2 1 -1 0 0 <br /> 0 0 0 0 3 0 0 0 0 <br /> -1 -1 0 0 3 1 -1 0 0 <br /> -1 -1 0 0 4 1 -1 0 0 <br /> &lt;/pre&gt;<br /> <br /> The 5th column is possibly an id of lump 27.<br /> <br /> <br /> == Lump[27] - Leaf Brushes ==<br /> Without: Stuck in loadscreen, game closes after a couple seconds without error.<br /> <br /> This lump contains a list of brush IDs ([[#Lump.5B6.5D_-_Brushes|lump 6]]), there might be an index lump for it. 4 bytes per entry.<br /> <br /> &lt;pre&gt;struct LeafBrush<br /> {<br /> int unknown;<br /> };&lt;/pre&gt;<br /> <br /> <br /> '''Example:'''<br /> &lt;pre&gt;<br /> 53<br /> 52<br /> 51<br /> 50<br /> 14<br /> 1<br /> &lt;/pre&gt;<br /> <br /> <br /> == Lump[29] - Collision Verts ==<br /> Without: no visible changes<br /> <br /> 16 bytes per entry.<br /> <br /> &lt;pre&gt;struct CollisionVertex<br /> {<br /> float unknown[4];<br /> };&lt;/pre&gt;<br /> <br /> <br /> == Lump[30] - Collision Edges ==<br /> ''former Player Terrain Collision''<br /> <br /> Without: terrain retains collision, but player can't move smoothly on the ground. It's easy to get stuck or float around. Still okay where terrain is very even. [http://xfire.com/video/79c90/ Footage (Xfire)]. 56 bytes per entry.<br /> <br /> &lt;pre&gt;struct CollisionEdge<br /> {<br /> unsigned int unknown;<br /> <br /> float position[3];<br /> float normal[3][3];<br /> float distance;<br /> };&lt;/pre&gt;<br /> <br /> <br /> '''Example:'''<br /> &lt;pre style=&quot;overflow:auto;&quot;&gt;<br /> 0 64 128 8 0 0 1 -0.707107 -0.707107 0 0.707107 -0.707107 0 90.5097 <br /> 0 128 64 8 0 1 0 0 0 -1 -1 0 0 64 <br /> 0 64 64 8 1 0 0 0 0 -1 0 1 0 64 <br /> 0 64 128 8 0 1 0 0 0 1 1 0 0 64 <br /> 0 128 128 8 1 0 0 0 0 1 0 -1 0 64 <br /> 0 128 128 8 0 0 1 -0.707107 -0.707107 0 0.707107 -0.707107 0 90.5097 <br /> &lt;/pre&gt;<br /> <br /> <br /> == Lump[31] - Collision Tris ==<br /> Without: game crashes with application error<br /> <br /> 72 bytes per entry.<br /> <br /> &lt;pre&gt;struct CollisionTriangles<br /> {<br /> float normal[3];<br /> float distance;<br /> float unknown[8];<br /> int id[6];<br /> };&lt;/pre&gt;<br /> <br /> <br /> == Lump[32] - Collision Borders ==<br /> Without: no visible changes<br /> <br /> 28 bytes per entry.<br /> <br /> <br /> == Lump[33] - Collision Parts ==<br /> Without: game crashes with application error<br /> <br /> 12 bytes per entry.<br /> <br /> <br /> == Lump[34] - Collision AABBs ==<br /> Without: game crashes with application error<br /> <br /> 32 bytes per entry.<br /> <br /> <br /> == Lump[35] - Models ==<br /> Without: Map with no models<br /> <br /> Possibly similar to &quot;rigid groups of world geometry&quot;: [http://graphics.stanford.edu/~kekoa/q3/#Models Quake3 - Model Lump]<br /> <br /> Seems to contain script_brushmodels, maybe more. 48 bytes per entry.<br /> <br /> &lt;pre&gt;struct Models<br /> {<br /> float position[6];<br /> int id[6];<br /> };&lt;/pre&gt;<br /> <br /> <br /> '''Example:'''<br /> &lt;pre&gt;<br /> -18048 -11904 -896 -2944 6144 5160 0 5748 0 0 0 8260 <br /> -112 -112 -48 112 112 48 5748 0 3072 0 8260 1 <br /> -11072 -7504 16 -11014 -7382 144 5748 0 3072 0 8261 1 <br /> -112 -112 -48 112 112 48 5748 0 3072 0 8262 1 <br /> -9208 -6264 0 -9150 -6142 128 5748 0 3072 0 8263 1 <br /> -40 -40 0 40 40 56 5748 0 3072 0 8264 1 <br /> -17920 -11904 -512 -3072 6144 -384 5748 0 3072 0 8265 1 <br /> -17849 -11977 -512 -3001 6071 -384 5748 0 3072 0 8266 1 <br /> &lt;/pre&gt;<br /> <br /> <br /> '''Current investigation status:'''<br /> <br /> <br /> How a script_brushmodel appears in the BSP ([[#Lump.5B37.5D_-_Entities|lump 37]]):<br /> &lt;pre&gt;<br /> { // ----- worldspawn block start<br /> {<br /> // brush definition inside of the worldspawn entity<br /> // all geometry elements which belongs to a group of lump 35 are stored sequently<br /> }<br /> } // ----- worldspawn block end<br /> <br /> {<br /> &quot;classname&quot; &quot;script_brushmodel&quot;<br /> &quot;model&quot; &quot;*1&quot;<br /> &quot;targetname&quot; &quot;auto1&quot;<br /> }<br /> &lt;/pre&gt;<br /> <br /> <br /> In the source .map it looks different:<br /> &lt;pre&gt;<br /> // entity 1<br /> {<br /> &quot;targetname&quot; &quot;auto1&quot;<br /> &quot;classname&quot; &quot;script_brushmodel&quot;<br /> <br /> // brush 0<br /> {<br /> // ...<br /> }<br /> <br /> // brush 1<br /> {<br /> // ...<br /> }<br /> <br /> // brush 2<br /> {<br /> // ...<br /> }<br /> <br /> }&lt;/pre&gt;<br /> <br /> It requires a transformation to get script_brushmodels back. The missing link between the geometry and the entity is lump 35. model *''n'' is an id and refers to an entry of this lump. It references 3 other lumps in turn.<br /> <br /> <br /> &lt;pre&gt;<br /> Example:<br /> [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]<br /> <br /> 0 256 192 112 320 256 0 1 0 0 0 1 <br /> 16 0 0 152 128 112 1 4 0 0 1 3 <br /> 208 0 192 320 128 312 5 2 0 0 4 2 <br /> <br /> 1 - left (x)<br /> 2 - front (y)<br /> 3 - bottom (z)<br /> 4 - right (x)<br /> 5 - back (y)<br /> 6 - top (z)<br /> 7 - texture group (start)<br /> 8 - texture group (amount)<br /> 9 - mesh (start)<br /> 10 - mesh (amount)<br /> 11 - brush (start)<br /> 12 - brush (amount)<br /> <br /> 1-6 : bounding box<br /> 7+8 : texture group id reference (lump 7)<br /> 9+10: patch id reference<br /> 11+12: brush id reference (lump 6)<br /> &lt;/pre&gt;<br /> Note: No planes in lump 4 for meshes / patches. Additional verts and tris if surface is visible.<br /> Mesh related lumps: 29, 30, 31, 33 and 34. One or more of them may contain collision data.<br /> <br /> <br /> == Lump[36] - Visibility ==<br /> ''former VIS''<br /> <br /> Present if VIS (portalling) has been calculated during the compile process. Apparently a single block of data.<br /> <br /> Without: &lt;code&gt;/r_singlecell 1&lt;/code&gt; still shows the portals, forced VIS?<br /> <br /> <br /> == Lump[37] - Entities ==<br /> ''or EntData''<br /> <br /> The entities lump is readable and stored (almost) the same way described in the [[Call_of_Duty_4:_.MAP_file_structure#Entity|.MAP file structure]].<br /> <br /> &lt;pre&gt;struct Entity<br /> {<br /> char data[];<br /> };&lt;/pre&gt;<br /> <br /> Or, after getting rid of redundant data, one might interpret the entity lump like this:<br /> <br /> &lt;pre&gt;struct Entity<br /> {<br /> std::map&lt;std::string, std::string&gt; pairs;<br /> };&lt;/pre&gt;<br /> <br /> In other words, the Entities lump consists of a a number of Entity structs. Each entity struct holds a list of string pairs.<br /> <br /> <br /> Couple entity types in this lump got a &quot;model&quot; key/value pair with a star and a number (*''n''), causing Radiant to crash and the compiler to ignore the whole block (see [[#Lump.5B35.5D_-_Models|lump 35]]). You also have to remove certain other things til the decompiler supports a reconstruction method for the necessary data:<br /> *model *''n''<br /> *fx<br /> *script_exploder<br /> *trigger<br /> *gndLt (optional, ignored by Radiant)<br /> Furthermore, you need to recreate the skybox at the moment, as there will likely be leaks in the ground caused from caulk/clip/... textured geometry. It's not visible in game as you know and therefore not stored in the usual lumps for vertices, triangles and so on. But it has collision, and the collision data is either stored in the brush or terrain collmap lumps. Note that many models are clipped using invisible textures as well. If no collmap file is present for a model, create one or it will lack collision after compile. A decompiler would have to reconstruct the collision map to avoid this.<br /> <br /> <br /> == Lump[38] - Paths ==<br /> SinglePlayer only, connected waypoints and/or paths? Variable in length.<br /> <br /> <br /> ==Unidentified lumps==<br /> Not seen on any map so far, presumably not in use. Feasible lump number predictions in brackets:<br /> <br /> *[12] Shadow Verts<br /> *[13] Shadow Indices<br /> *[14] Shadow Clusters<br /> *[15] Shadow AABB Trees<br /> *[16] Shadow Sources<br /> *[28] Leaf Surfaces<br /> *[39] Lights<br /> <br /> <br /> = Web Links =<br /> <br /> *[http://en.wikipedia.org/wiki/Binary_space_partitioning Binary Space Partitioning]<br /> *[http://www.geocities.com/cofrdrbob/bspformat.html BSP Format]<br /> *[http://en.wikipedia.org/wiki/BSP_(file_extension) BSP (File Extension)]<br /> *[http://qxx.planetquake.gamespy.com/bsp/ BSP for Dummies]<br /> *[http://graphics.stanford.edu/~kekoa/q3/ Unofficial Quake3 Map Specs]<br /> *[http://www.gamers.org/dEngine/quake/spec/quake-spec34/ Quake Documentation v3.4]<br /> *[http://www.flipcode.com/archives/Quake_2_BSP_File_Format.shtml Quake 2 BSP File Format]<br /> *[http://www.modsonwiki.com/index.php/Call_of_Duty_2:_Map_File_Format Call of Duty 2: Map File Format]<br /> *[http://tremmapping.pbwiki.com/Understanding%20Vis%20and%20Hint%20Brushes Understanding Vis and Hint Brushes (Portalling)]<br /> *[http://code.google.com/p/bsp-renderer/source/browse/#svn/trunk/src Quake BSP Renderer]<br /> *[http://quark.planetquake.gamespy.com/infobase/glossary.html Quake Glossary]<br /> *[http://en.wikipedia.org/wiki/Endianness Endianness]<br /> <br /> <br /> ''Made by CoDEmanX and Daevius''<br /> <br /> [[Category:Call of Duty 2]]<br /> [[Category:Technical Reference]]<br /> [[Category:File formats]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_4:_FastFile_Format&diff=16621 Call of Duty 4: FastFile Format 2012-03-10T16:06:30Z <p>CoDEmanX: -spam</p> <hr /> <div>[[Image:Under Construction Small.png‎]] '''*** Article and investigation in early progress ***'''<br /> <br /> == Preface ==<br /> <br /> Be aware, FF files are little endian, so swap those bytes 'round!<br /> <br /> The data block types (also called &quot;index identifier&quot;) are written in big endian in this article, e.g. 00 00 00 1F is actually 1F 00 00 00 in ff, although ints and floats in the examples are kept little endian!<br /> <br /> <br /> The global file layout starts with a header. After which you get a string list (model tag names, animation notetracks, maybe more; not always present). Followed by an index list. This list gives information about the rest of the file, which is a concatenation of compiled files (reinterpreted and linked data generated from source files like d3dbsp and stringtables, hereinafter referred to as data blocks).<br /> <br /> * Header<br /> * String list index<br /> * String list<br /> * Data block index<br /> * Data blocks<br /> <br /> Each file is separated by the separation key: 0xFFFFFFFF. But be aware, each file itself can also contain such a sequence which is not meant to be the separation key! So it is necessary to understand each data type in the FF file.<br /> <br /> Edit: The latest research led to the assumption, that it's no real separation key but an address pointer (which is 0xFFFFFFFF if the data follows or 0x??????4? if the content is located elsewhere).<br /> <br /> It seems to be 0xFFFFFFFF replaces pointers used during compilation, leading to the following data block structure in case of some data blocks (at least rawfile):<br /> <br /> * Block header (containing one or more 0xFFFFFFFF pointers, size needs to be known to properly read files)<br /> * Block data (one for each 0xFFFFFFFF data, can be anything from a string to raw binary data, possibly a 00 marks the end for strings?)<br /> <br /> <br /> == Header ==<br /> <br /> ''(Note: not up to date and not generalized)''<br /> <br /> *Byte 0-3: decompressed fastfile size minus 44 (0x2C)<br /> *Byte 4-7: about the total size of referenced data, e.g. the required memory for IWI textures if material files are in the ff<br /> *Byte 8-11: ''unknown'', might be a flag<br /> *Byte 12-23: ''unknown''<br /> *Byte 24-27: somehow related to ff size?<br /> *Byte 28-43: ''unknown''<br /> *Byte 44-47: equal to number of entries in &quot;1st index&quot; and amount of (model tag/joint/notetrack) strings (times 4 for index length)<br /> *Byte 48-51: separator? (FF FF FF FF)<br /> *Byte 52-55: number of records* (&quot;2nd index&quot;, times 8 for index length)<br /> *Byte 56-63: separator? (FF FF FF FF FF FF FF FF)<br /> *Byte 64-x: string list (xmodelsurfs?) --&gt; not always, depends on the content (required offsets are in the FF header)*<br /> <br /> &lt;nowiki&gt;*&lt;/nowiki&gt; under re-investigation &lt;!-- If a file was missing on ff compile, it does not count but the error message is added to the end of the file. There are usually more index entries than the number of records in the header. The given number of records is not equal to the entries in the assetinfo or assetlist file, it's usually higher. --&gt;<br /> <br /> <br /> === Example: smallest possible fastfile (mod.ff) ===<br /> <br /> &lt;pre&gt;<br /> 29 00 00 00 decompressed fastfile size minus 44 <br /> 00 00 00 00 <br /> 1C 00 00 00 unknown<br /> <br /> 00 00 00 00 00 00 00 00 00 00 00 00<br /> <br /> 0D 00 00 00 data size in memory (?)<br /> <br /> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br /> <br /> 01 00 00 00 one index entry<br /> <br /> FF FF FF FF 1F 00 00 00 a rawfile<br /> <br /> FF FF FF FF index end<br /> <br /> FF FF FF FF start separator<br /> 00 00 00 00 rawfile length (empty, no errors occured during compilation)<br /> FF FF FF FF separator<br /> 6D 6F 64 00 fastfile name as rawfile name<br /> 00 rawfile string (empty)<br /> &lt;/pre&gt;<br /> <br /> <br /> === Example: mp_backlot_load.ff ===<br /> <br /> '''Contains:'''<br /> *2x shaders <br /> *3x materials<br /> *(1x fastfile name)<br /> <br /> <br /> Materials:<br /> # $victorybackdrop - mile_high_victory_screen.iwi (699,092 bytes)<br /> # $defeatbackdrop - (none)<br /> # $levelbriefing - loadscreen_mp_backlot.iwi (524,316 bytes)<br /> <br /> &lt;pre&gt;<br /> ----------- [start of file and header]<br /> <br /> 71 03 00 00 Decompressed file size - 44 (hex: 371 + 2C = 39D; dec: 881 + 44 = 925)<br /> <br /> B8 AA 12 00 Size of both IWI's the materials in FF point to - 56 (2x28, 28 bytes = IWI header)<br /> 0x12AAB8 = 1,223,352<br /> 699,092 + 524,316 = 1,223,408<br /> difference: 56<br /> <br /> A4 00 00 00 Might be a flag<br /> <br /> 00 00 00 00 Unknown<br /> 00 00 00 00 Unknown<br /> 00 00 00 00 Unknown<br /> E5 00 00 00 Size of fastfile in memory (that is at least without header and separators, and maybe more)<br /> 00 00 00 00 Unknown<br /> 00 00 00 00 Unknown<br /> 00 00 00 00 Unknown<br /> 00 00 00 00 Unknown<br /> <br /> ----------- [end of header] (44 bytes), [start of index]<br /> <br /> 00 00 00 00 Unknown, is sometimes FF FF FF FF<br /> <br /> 06 00 00 00 Number of records in index (6)<br /> <br /> FF FF FF FF 05 00 00 00 1st: shader<br /> FF FF FF FF 05 00 00 00 2nd: shader<br /> FF FF FF FF 04 00 00 00 3rd: material<br /> FF FF FF FF 04 00 00 00 4th: material<br /> FF FF FF FF 04 00 00 00 5th: material<br /> FF FF FF FF 1F 00 00 00 6th: rawfile<br /> <br /> FF FF FF FF end separator (the following FF FF FF FF is the start seperator of the next data block!)<br /> <br /> ----------- [end of index]<br /> &lt;/pre&gt;<br /> <br /> <br /> == Index ==<br /> <br /> Starts with an int telling the number of dword couples. Such a couple is composed of 2 ints:<br /> <br /> 4 byte offset (FF FF FF FF = -1, meaning right after the previous block?)&lt;br&gt;<br /> 4 byte identifier (data block type)<br /> <br /> Separator (FF FF FF FF) after last couple<br /> <br /> === Types ===<br /> <br /> {|<br /> |-<br /> ! Type name<br /> ! hex value<br /> |-<br /> | xmodelpieces<br /> | 0<br /> |-<br /> | physpreset<br /> | 1<br /> |-<br /> | xanim<br /> | 2<br /> |-<br /> | xmodel<br /> | 3<br /> |-<br /> | material<br /> | 4<br /> |-<br /> | pixelshader<br /> | 5<br /> |-<br /> | techset<br /> | 6<br /> |-<br /> | image<br /> | 7<br /> |-<br /> | sndcurve<br /> | 8<br /> |-<br /> | loaded_sound<br /> | 9<br /> |-<br /> | col_map_sp<br /> | 0x0a<br /> |-<br /> | col_map_mp<br /> | 0x0b<br /> |-<br /> | com_map<br /> | 0x0c<br /> |-<br /> | game_map_sp<br /> | 0x0d<br /> |-<br /> | game_map_mp<br /> | 0x0e<br /> |-<br /> | map_ents<br /> | 0x0f<br /> |-<br /> | gfx_map<br /> | 0x10<br /> |-<br /> | lightdef<br /> | 0x11<br /> |-<br /> | ui_map<br /> | 0x12<br /> |-<br /> | font<br /> | 0x13<br /> |-<br /> | menufile<br /> | 0x14<br /> |-<br /> | menu<br /> | 0x15<br /> |-<br /> | localize<br /> | 0x16<br /> |-<br /> | weapon<br /> | 0x17<br /> |-<br /> | snddriverglobals<br /> | 0x18<br /> |-<br /> | impactfx<br /> | 0x19<br /> |-<br /> | aitype<br /> | 0x1a<br /> |-<br /> | mptype<br /> | 0x1b<br /> |-<br /> | character<br /> | 0x1c<br /> |-<br /> | xmodelalias<br /> | 0x1d<br /> |-<br /> | rawfile<br /> | 0x1f<br /> |-<br /> | stringtable<br /> | 0x20<br /> |}<br /> <br /> == Content ==<br /> <br /> Since there is a FF FF FF FF separator (respectively pointer) in front of every block and none at the very end (after last 1F-block), we can assume that each block has a start separation and no end separation. Thus, any FF FF FF FFs you find after data blocks are actually the start separators of the next block. This means the index end separator is rather FFFFFFFF than FFFFFFFFFFFFFFFF!<br /> <br /> <br /> === 00 00 00 04 (material) ===<br /> <br /> &lt;pre&gt;<br /> ----------- [block start]<br /> <br /> 00 2B 01 01 First 4 bytes seem to be 4 (unsigned) char's.<br /> 1st byte is so far always 0x00 (perhaps it's a short together with the second byte).<br /> 2nd byte so far either 0x2B or 0x00, I think this is a length.<br /> 3rd byte so far 0x01, when 0x00 (all 4) the content is only a number of 0x00's, then the filename (0x00 termination)<br /> 4th byte either 0x00 or 0x01. Can be a length or a bool.<br /> Then 0x10 bytes of more header.<br /> FF FF FF FF Separator<br /> 00 When fourth byte is 01, there's a 0x00 following? <br /> Then there's garbage (0xFF) and some shorts it looks of length in the second byte.<br /> Then more information...<br /> 02 00 0E E0 Often ends with this<br /> <br /> ----------- [block end]<br /> &lt;/pre&gt;<br /> <br /> === 00 00 00 05 (shader) ===<br /> <br /> A shader consists of 3 levels. One, the top level, consists of a header (with a name inside). Then the next level is a pack of shaders, it has a header, shaders and at the end a name. Then the bottom level is the shader itself, it has a header (containing a name of the source file and the length of the data) and the raw shader data.<br /> <br /> &lt;pre&gt;<br /> ----------- [block start]<br /> <br /> 36 pointers (0x90 bytes) (bytes 0x19 up to 0x22 say if we get any content at all?)<br /> ?? ?? .. 00 Then techset file name (0x00 termination) if pointer is 0xFFFFFFFF?<br /> <br /> ----------- [start of shader pack]<br /> <br /> pointer<br /> 1 dword of some character-length options / flags?<br /> 3 pointers<br /> 1 dword of some character-length sizes<br /> FF FF FF FF Separator<br /> 0x64 bytes of some short length options / flags? If the second pointer above is 0xFFFFFFFF<br /> <br /> ----------- [start of shader]<br /> <br /> pointer, if not 0xFFFFFFFF, no filename is further on<br /> pointer, often 00 00 00 00<br /> FF FF FF FF Separator<br /> ?? ?? 00 00 2 shorts, first short multiplied by 4 gives the length of the shader, second is a flag?<br /> ?? ?? .. 00 String if first pointer is 0xFFFFFFFF, 0x00 terminated (name of shader source file)<br /> Raw shader file (except the first 4 bytes, which, in the shader file, denotes the length of the file)<br /> FF FF 00 00 which ends with this (always?)<br /> <br /> ----------- [end of shader]<br /> <br /> Can either have more shaders (go back to [start of shader]) or shaders have ended<br /> <br /> Variable length of 'stuff' (technique commands?)<br /> 41 10 AB A0 which ends with this (always?)<br /> ?? ?? .. 00 String, 0x00 terminated (technique file name)<br /> <br /> ----------- [end of shader pack]<br /> <br /> Can either have more shader packs (go back to [start of shader pack]) or shader packs have ended<br /> <br /> ----------- [block end]<br /> &lt;/pre&gt;<br /> <br /> === 00 00 00 06 (image) ===<br /> <br /> Stores some information about the specified IWI in fastfile. Does not include the actual image data.<br /> Length is 52 bytes + IWI name (+1 for string termination).<br /> <br /> &lt;pre&gt;<br /> ----------- [block start]<br /> <br /> 03 00 00 00<br /> FE FF FF FF separator?<br /> 00 00 00 00<br /> 00 00 00 00<br /> <br /> 70 55 01 00 IWI size minus 28 (0x1C)<br /> 70 55 01 00 same<br /> <br /> 00 01 00 01<br /> 01 00 03 00<br /> FF FF FF FF separator?<br /> <br /> 73 70 .. 00 IWI name without file extension (string + termination, variable size)<br /> <br /> 00 00 00 01<br /> 00 01 01 00<br /> <br /> 44 58 54 35 00 00 00 00 fixed size char[] for type? (here: DXT5....)<br /> <br /> ----------- [block end]<br /> &lt;/pre&gt;<br /> <br /> === 00 00 00 13 (font) ===<br /> <br /> See also [[Call of Duty: Font System]]. Implicitly adds shaders.<br /> <br /> &lt;pre&gt;<br /> ----------- [block start] 216 byte + 2 strings<br /> 18 00 00 00 int font_size<br /> BF 00 00 00 int number_of_records<br /> FE FF FF FF ?<br /> FE FF FF FF ?<br /> FF FF FF FF separator<br /> 66 6F .. 00 string font_name (e.g. fonts/bigFont.)<br /> FF FF FF FF separator<br /> 00 2B 01 01 ?<br /> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br /> FF FF FF FF 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF<br /> FF FF 01 00 01 00 03 00<br /> 0D 00 00 40 pointer?<br /> FF FF FF FF<br /> 00 00 00 00<br /> FF FF FF FF<br /> 66 6F .. 00 string font_material (e.g. fonts/gamefonts_pc.)<br /> 41 10 AB A0 63 70 EB 00 ?<br /> <br /> ----------- [image block] 112 bytes + 1 string<br /> <br /> FF FF FF FF start separator / pointer<br /> 03 00 00 00<br /> FE FF FF FF separator?<br /> 00 00 01 00 ?<br /> 00 00 00 00<br /> D0 AA 0A 00 IWI size minus 28 (0x1C)<br /> D0 AA 0A 00 same<br /> 00 02 00 04<br /> 01 00 03 00 ?<br /> FF FF FF FF separator<br /> 67 61 .. 00 IWI name<br /> 00 00 00 02<br /> 00 04 01 00 ?<br /> 44 58 54 35<br /> 00 00 00 00 compression (here: DXT5....)<br /> <br /> ----------- [unknown block] 168 bytes<br /> <br /> 65 91 28 19<br /> 02 00 0E E0 ?<br /> FF FF FF FF separator?<br /> 00 04 01 01 ?<br /> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br /> FF FF FF FF 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF<br /> 01 00 01 00 03 00 ?<br /> 0D 00 00 40 pointer? (same as above)<br /> FF FF FF FF separator?<br /> 00 00 00 00<br /> <br /> ----------- [font block] 48 bytes + 1 string + number_of_records * 24 bytes<br /> <br /> FF FF FF FF separator/pointer<br /> 66 6F .. 00 font effect name? (e.g. fonts/gamefonts_pc_glow.)<br /> 41 10 AB A0<br /> 63 70 EB 00<br /> 95 06 00 40<br /> 25 91 28 19<br /> 02 00 0E E0 ?<br /> <br /> ?? ?? ?? ?? font file entries (24 bytes each)<br /> <br /> ----------- [block end]<br /> &lt;/pre&gt;<br /> <br /> === 00 00 00 16 (localized string asset) ===<br /> <br /> A localized string asset consists of an alias name and a translated string. During compilation, it takes the given alias name (REFERENCE) from *.str file and prepands the *.str file's name in upper-case plus an underscore. Example:<br /> <br /> <br /> '''example.str'''<br /> &lt;pre&gt;VERSION &quot;1&quot;<br /> CONFIG &quot;C:\trees\cod3\cod3\bin\StringEd.cfg&quot;<br /> FILENOTES &quot;&quot;<br /> //--------------------------------<br /> <br /> REFERENCE MARINES_NAME<br /> LANG_ENGLISH &quot;US Airforce&quot;<br /> <br /> //--------------------------------<br /> ENDMARKER&lt;/pre&gt;<br /> <br /> <br /> '''mod.ff'''<br /> &lt;pre&gt;<br /> ÿÿÿÿ<br /> ÿÿÿÿ<br /> EXAMPLE_MARINES_NAME.<br /> US Airforce.<br /> &lt;/pre&gt;<br /> <br /> <br /> Length is 8 bytes + string sizes (string count = 0-2, depends on the first two ints).<br /> <br /> &lt;pre&gt;<br /> ----------- [block start]<br /> <br /> FF FF FF FF either pointer or FFFFFFFF if the string wasn't used before<br /> FF FF FF FF same. If two pointers are used here, then no strings will follow.<br /> 55 53 .. 00 alias name for the localized<br /> 53 54 .. 00 actual localized string<br /> <br /> ----------- [block end]<br /> &lt;/pre&gt;<br /> <br /> === 00 00 00 1F (rawfile) ===<br /> <br /> A rawfile. Often a rawfile named right after the fastfile's name is implicitly added. It contains the errors thrown when it was compiling / linking.<br /> <br /> &lt;pre&gt;<br /> ----------- [block start]<br /> <br /> 64 00 00 00 Length of the file's content (example: decimal 100; does not count the string termination!)<br /> <br /> FF FF FF FF Separator<br /> <br /> 6D 6F 64 00 File name or if it's the last 1F-block FastFile name (example: mod.)<br /> ?? ?? .. 00 Plain text content of length above (string, terminated by 0x00)<br /> <br /> ----------- [block end OR even end of file]<br /> &lt;/pre&gt;<br /> <br /> === 00 00 00 20 (stringtable) === <br /> <br /> A compiled stringtable (comma separated list, *.csv). Even values are stored as strings.<br /> <br /> &lt;pre&gt;<br /> ----------- [block start]<br /> <br /> 05 00 00 00 (int) columns<br /> 02 00 00 00 (int) rows<br /> <br /> FF FF FF FF separator<br /> ?? ?? .. 00 filename (path/*.csv) + string termination (0x00)<br /> <br /> ----------- [table cell description]<br /> <br /> ?? ?? ?? ?? columns * rows integers (5 * 2 * 4 = 40 bytes in total, 5 * 2 = 10 cells)<br /> FF FF FF FF - if the string wasn't used before and follows after the cell description<br /> ?? ?? ?? 4? - if an identical string was already used (in another csv). It is some kind of memory offset (pointer). Base address calculation not figured out yet (0x40000072 ?)<br /> <br /> ----------- [cell content / strings]<br /> <br /> ?? ?? .. 00 string + termination (0x00)<br /> Number of strings = amount of FF FF FF FFs in table cell description<br /> <br /> ----------- [block end]<br /> &lt;/pre&gt;<br /> <br /> --[[User:NTAuthority|NTAuthority]] 10:54, 3 June 2010 (UTC) (some tiny information)<br /> <br /> --[[User:CoDEmanX|CoDEmanX]] 01:45, 8 December 2009 (UTC)<br /> <br /> --[[User:Daevius|Daevius]] 23:00, 8 December 2009 (UTC)<br /> <br /> <br /> [[Category:Call of Duty 4]]<br /> [[Category:Technical Reference]]<br /> [[Category:File formats]]<br /> <br /> <br /> <br /> <br /> <br /> &lt;!-- outdated investigations below<br /> <br /> === Shaders ===<br /> <br /> 05 00 00 00 or<br /> 04 00 00 00<br /> <br /> &lt;pre&gt;<br /> FF FF FF FF<br /> 00 00 00 00<br /> FF FF FF FF<br /> 9F 00 00 00 size after filename<br /> <br /> filename ended with 0x00<br /> <br /> (size * 4) bytes of shader data, seems to end with FF FF 00 00<br /> might contain more data<br /> <br /> FF FF FF FF<br /> &lt;/pre&gt;<br /> <br /> or<br /> <br /> &lt;pre&gt;<br /> FF FF FF FF<br /> 00 00 00 00<br /> <br /> filename starts with ','<br /> <br /> FF FF FF FF<br /> &lt;/pre&gt;<br /> <br /> --&gt;</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_FastFile_Study&diff=16620 Call of Duty 5: FastFile Study 2012-03-10T12:47:56Z <p>CoDEmanX: </p> <hr /> <div>[[Image:Under Construction Small.png‎]] '''*** Article and investigation in early progress ***'''&lt;br&gt;<br /> {{Note|Article looking at how fast files are made and how the process is coded, hope this is useful to people who want to know a little bit more on how the fast file process is handled.}}<br /> <br /> '''New information regarding fast files'''<br /> <br /> Due to the strings in the linker_pc.exe, I have discovered that the encrypter that Infinity Ward and Treyarch use is &quot;libtomcrypt-1.17&quot;, this is an open source program that is available [http://libtomcrypt.sourcearchive.com/documentation/1.17-2/dir_28e256608898860b95a85334d778d51f.html here]<br /> <br /> <br /> &lt;syntaxhighlight lang=&quot;cpp&quot;&gt;<br /> private void ModBuildFastFileDelegate(Process lastProcess)<br /> {<br /> if (this.LauncherModBuildFastFilesCheckBox.Checked)<br /> {<br /> Launcher.CopyFileSmart(Path.Combine(Launcher.GetModDirectory(this.modName), &quot;mod.csv&quot;), Path.Combine(Launcher.GetZoneSourceDirectory(), &quot;mod.csv&quot;));<br /> }<br /> this.LaunchProcessHelper(this.LauncherModBuildFastFilesCheckBox.Checked, new ProcessFinishedDelegate(this.ModBuildMoveModFastFileDelegate), Launcher.GetLanguage() + &quot; -moddir &quot; + this.modName + &quot; mod&quot;);<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> &lt;br&gt;&lt;br&gt;&lt;br&gt;<br /> &lt;syntaxhighlight lang=&quot;cpp&quot;&gt;<br /> private void CompileLevelMoveFastFilesDelegate(Process lastProcess)<br /> {<br /> string zoneDirectory = Launcher.GetZoneDirectory();<br /> string str2 = Launcher.mapSettings.GetBoolean(&quot;compile_modenabled&quot;) ? Launcher.GetModDirectory(Launcher.mapSettings.GetString(&quot;compile_modname&quot;)) : Path.Combine(Launcher.GetUsermapsDirectory(), this.mapName);<br /> string str3 = this.mapName + &quot;.ff&quot;;<br /> string str4 = this.mapName + &quot;_load.ff&quot;;<br /> Launcher.MoveFile(Path.Combine(str3), Path.Combine(str3));<br /> Launcher.MoveFile(Path.Combine(str3), Path.Combine(str3));<br /> Launcher.MoveFile(Path.Combine(str4), Path.Combine(str4));<br /> Launcher.Publish();<br /> this.CompileLevelRunGameDelegate(lastProcess);<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> &lt;br&gt;&lt;br&gt;&lt;br&gt;<br /> &lt;syntaxhighlight lang=&quot;cpp&quot;&gt;<br /> public static void CreateZoneSourceFiles(string mapName)<br /> {<br /> using (StreamWriter writer = new StreamWriter(GetZoneSourceFile(IsMP(writer.WriteLine(&quot;ignore,code_post_gfx_mp&quot;);<br /> WriteLine(&quot;ignore,common_mp&quot;);<br /> WriteLine(&quot;col_map_mp,maps/mp/&quot; + writer.WriteLine(&quot;rawfile,maps/mp/&quot; + writer.WriteLine(&quot;rawfile,maps/mp/&quot; + writer.WriteLine(&quot;sound,common,&quot; + writer.WriteLine(&quot;sound,generic,&quot; + writer.WriteLine(&quot;sound,voiceovers,&quot; + writer.WriteLine(&quot;sound,multiplayer,&quot; + string GetRawDirectory();<br /> &lt;/syntaxhighlight&gt;<br /> &lt;br&gt;&lt;br&gt;&lt;br&gt;<br /> What I believe this means, with the little coding I know, I think in the fast file, they combine the d3dbsp with the &quot;launcherCS.launcher&quot; file, and they also combine the zone source directory with the d3dbsp, what i'm I missing?<br /> &lt;br&gt;<br /> The more I look into it, the more I realize the launcher.cs.launcher file is mostly just calling every string, I will post more of the file later today.<br /> Here is part of the launcher.cs.launcher file, like stated above, its just calling strings.<br /> &lt;br&gt;&lt;br&gt;&lt;br&gt;<br /> &lt;syntaxhighlight lang=&quot;cpp&quot;&gt;<br /> public static string GetRawMapsDirectory();<br /> public static string GetRootDirectory();<br /> etc....<br /> &lt;/syntaxhighlight&gt;<br /> --[[User:Theoneman|Theoneman]] 16:27, 3 January 2012 (UTC)<br /> <br /> The code you posted has nothing to do with fastfile compilation, it's the code of modbuilder, which generates a zone file (csv) for compilation. Not sure about encryption, the fastfile isn't in the first place. Remove the first 12 bytes and decompress with zlib, will give you a block file with many unencrypted data such as map entities. If there's encryption involved, then they did it for certain parts only. --[[User:CoDEmanX|CoDEmanX]] 12:47, 10 March 2012 (UTC)<br /> <br /> [[Category:Call of Duty 5]]<br /> [[Category:Technical Reference]]<br /> [[Category:File formats]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty:_Blender_to_COD&diff=16616 Call of Duty: Blender to COD 2012-03-07T20:59:27Z <p>CoDEmanX: </p> <hr /> <div>{{Warning_forpro}}<br /> ''By Irishstorm''<br /> <br /> {{Note|This video tutorial will show you the basics of importing model made in Blender into CoD.}}<br /> <br /> {{Warning_advanced}}<br /> <br /> = Whats needed = <br /> <br /> * [http://www.blender.org/ Blender 2.5 or later] (from 2.62 on there's no more limitation in material name length if importing from OBJ!)<br /> * [http://code.google.com/p/blender-cod/ CoDEmanX's Blender plugin (BlenderCoD)]<br /> <br /> = Notes =<br /> <br /> * There's no need to do &quot;Quads to Tris&quot; before export, the addon will triangulate everything automatically!<br /> * Texture doesn't matter, it gets written to export file but Asset Manager ignores it<br /> * If you change to the &quot;Scripting&quot; view in Blender, in the upper part you find a log window. Scroll down before exporting to see when it's finished (green entry showing the time it took)<br /> * You may run Blender from console (cmd) if you experience problems, the addon may print some info and warnings<br /> <br /> = The video =<br /> <br /> &lt;videoflash&gt;NDPLThWllu0&lt;/videoflash&gt;<br /> <br /> = German video =<br /> <br /> &lt;videoflash&gt;FGJbwyKTGAI&lt;/videoflash&gt;<br /> <br /> By MrSchulzi1996 for CoD2.<br /> <br /> <br /> {{#TwitterFBLike:|small}}<br /> <br /> [[Category:Call of Duty 4]]<br /> [[Category:Call of Duty 5]]<br /> [[Category:Modtools]]<br /> [[Category:Advanced Editing]]<br /> [[Category:Modelling]]<br /> [[Category:Blender]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_4:_Tips&diff=16615 Call of Duty 4: Tips 2012-03-07T16:33:17Z <p>CoDEmanX: no more dependant on modsonline thread, removed outdated link</p> <hr /> <div>== Common Errors &amp; Solutions ==<br /> <br /> *&lt;font color=&quot;orange&quot;&gt;Help! My map is shining all red!&lt;/font&gt;<br /> <br /> You need to add [Call of Duty 4: Reflection Probes|Reflection Probes]. <br /> <br /> *&lt;font color=&quot;orange&quot;&gt;Help! My guns and random stuff are shining rainbow!&lt;/font&gt;<br /> <br /> First stop smokin the good stuff, then create a [Call of Duty 4: Gridfile|Grid File].<br /> <br /> *&lt;font color=&quot;orange&quot;&gt;While compiling the BSP, I get an error that .d3dbsp cannot be loaded!:&lt;/font&gt; <br /> <br /> The editor automatically tries to load a previous version of a compiled map if it runs into errors while compiling. If for some reason the previously compiled files are missing, it gives that error. If you scroll up the DOS window, i'm sure another error will display itself, and that's the real reason you aren't compiling.<br /> <br /> *&lt;font color=&quot;orange&quot;&gt;I've added destructible cars to my map, and now when compiling reflections I get &quot;CANNOT SWITCH ON UNDEFINED&quot;:&lt;/font&gt; <br /> <br /> Open raw\maps\mp\_load.gsc, go to line 57 and comment out the function call (two slashes added):<br /> // thread maps\mp\_destructible::init();<br /> <br /> [http://www.modsonline.com/Tutorials-read-457.html Source]<br /> <br /> *&lt;font color=&quot;orange&quot;&gt;While compiling the BSP, I get errors about lights leaking or *******Leaking*******&lt;/font&gt;<br /> <br /> This happens when your skybox is not completely closed and the player has the possibility to see the infinity! Close the compile, go to the editor, and go to File &gt;&gt; PointFile. It will show you where it's leaking. This can also be the cause of Portals not being in an enclosed space. Learn about portals and re-implement! Links above!<br /> <br /> *&lt;font color=&quot;orange&quot;&gt;Surface partially floating or needs to be aligned&lt;/font&gt;<br /> <br /> You can, most of the time ignore this warning but to be sure, load the map in Radiant and use the Error File to check that patches are properlly alighend toghether.<br /> <br /> *&lt;font color=&quot;orange&quot;&gt;WARNING: Attempting to meld model, but root part 'j_spine4' of model 'blah blah' not found in model 'blah blah' or any of its descendant.&lt;/font&gt;<br /> <br /> Basically, add &quot;include,mptypes_woodland&quot; into your map CSV. &quot;include,mptypes_desert&quot; if you are using desert style players. Update zone file and build new FF and map works fine with extreme and ace and awe.<br /> <br /> *&lt;font color=&quot;orange&quot;&gt;Screen is completely red (can't see anything) or red FX signs over bodies&lt;/font&gt;<br /> <br /> Read the above and do it.<br /> <br /> == Useful commands ==<br /> <br /> <br /> In Console:<br /> <br /> If mp_backlot automatically loads when you try to run your map, type in these commands to load into your map even with errors, allowing you to shift+tilde (~) and see what is wrong.<br /> <br /> <br /> /sv_mapRotation &quot;&quot;<br /> /sv_mapRotationCurrent &quot;&quot;<br /> /devmap [yourmapname]<br /> Change to any map without dev mode.<br /> <br /> /map [themap]<br /> Third person view (first load with /devmap [mapname])<br /> <br /> /cg_thirdperson 1<br /> <br /> More Usefull ServerCommands:<br /> <br /> ''only available in devmap mode.''<br /> <br /> \give airstrike_mp<br /> \give helicopter_mp<br /> \give radar_mp<br /> <br /> In CoD4Tools Custom Command Line Options:<br /> <br /> &lt;pre&gt;+set scr_game_matchstarttime 0 +set scr_game_playerwaittime 0 +set fs_game mods/modWarfare&lt;/pre&gt;<br /> This one line takes off the wait timers at the beginning of the game when you load in, as well as loads you into ModWarfare from the start.<br /> <br /> [[Category:Call of Duty 4]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Menu_Modding_Basics&diff=16611 Call of Duty 5: Menu Modding Basics 2012-03-01T01:29:28Z <p>CoDEmanX: </p> <hr /> <div>{{Note|Tutorial on Menu scripting and scripting related to it}}<br /> <br /> ''By xholyx''<br /> <br /> =Intro / Pre-requisite=<br /> <br /> Well to start off, i recommend you to have a proper Text editor or Programming tool to have a good overview how to edit everything.<br /> My mod folder i start with is going to be called :''' menumod'''<br /> <br /> To start you have this to be done<br /> <br /> &lt;span style=&quot;color:blue&quot;&gt;<br /> - You have the modtools , and you understand how to make a proper mod folder.&lt;br&gt;<br /> - Downloaded wscite GSC programming tool [http://scintilla.sourceforge.net/SciTEDownload.html HERE]&lt;br&gt;<br /> - You have this program opened&lt;br&gt;<br /> - Open launcher.exe ( placed in Activision/Call of duty World at war/bin&lt;br&gt;<br /> - A few things you need to have copied from the '''RAW''' folder is <br /> maps/mp/gametypes/_globallogic.gsc<br /> ui_mp/wm_quickmessages&lt;/span&gt;<br /> <br /> Also make a new folder in your mod folder called :'''functions'''<br /> <br /> If you have this and you checked this '''twice!''' then we can start off.<br /> <br /> <br /> =Editing a existing menu=<br /> <br /> First we are going to open ui_mp/wm_quickmessages.menu with the Programming tool.<br /> <br /> You will see this:<br /> <br /> [[Image:modmenu_1.jpg|500px]]<br /> <br /> Scroll down to the most lower point of the page. You will see this:<br /> <br /> &lt;syntaxhighlight lang=&quot;cpp&quot;&gt;<br /> itemDef<br /> {<br /> name &quot;window&quot;<br /> visible 1<br /> rect 16 52 0 0<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> forecolor 1 1 1 1<br /> textfont UI_FONT_NORMAL<br /> textscale .24<br /> textaligny 8<br /> text &quot;@QUICKMESSAGE_3_RESPONSES&quot;<br /> decoration<br /> }<br /> execKey &quot;3&quot; { close quickmessage; open quickresponses }<br /> <br /> itemDef<br /> {<br /> name &quot;window&quot;<br /> visible 1<br /> rect 16 68 0 0<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> forecolor 1 1 1 1<br /> textfont UI_FONT_NORMAL<br /> textscale .24<br /> textaligny 8<br /> text &quot;@QUICKMESSAGE_ESC_EXIT&quot;<br /> decoration<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> <br /> These 2 item defs are functions also called items.<br /> <br /> itemdef{} is the function, you can fill in a lot things but we are going to do this:<br /> <br /> *add a new button <br /> *change the text <br /> *change coordinates of the buttons<br /> <br /> In the quickmessage menu it will look like this in-game<br /> <br /> [[Image:modmenu_2.jpg]]<br /> <br /> You see there is no space between the buttons to place anything, as we want to place a new button between Esc. and button 3.<br /> What we are going to do is to place the Esc button a bit to below and insert the button with same coordinates a.k.a '''RECT'''<br /> <br /> {{Info|Note: rect coordinates are like this}}<br /> <br /> rect x y width height <br /> <br /> So if i want to make a image in a menu that is below on left side of screen ( 400 y below ) and the image is 64 high and 128 wide then do this<br /> <br /> rect 0 400 64 128 <br /> <br /> *Now lets off and start the coordinates first to have something about standard values, the standard y size for this font size is 16 , so we need to add 1 line ,<br /> this means the Esc button will go 16 y's below ( thats +16 ) so '''68 + 16 = 84'''<br /> <br /> *Also we are going do add a new button so we just copy the itemdef of button3 like below and we are just editing it with the same coordinates as Esc button '''rect 16 68 0 0'''<br /> With the new button we want to open a new menu , this one will be called mymenu .<br /> So we also change the execkeyint as we want to open it with 4 and if we press 4 it will open a new menu called mymenu ,plus it closes this menu to prevent a lot of menus be opened at the same time.<br /> <br /> &lt;syntaxhighlight lang=&quot;cpp&quot;&gt;<br /> itemDef<br /> {<br /> name &quot;window&quot;<br /> visible 1<br /> rect 16 64 0 0<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> forecolor 1 1 1 1<br /> textfont UI_FONT_NORMAL<br /> textscale .24<br /> textaligny 8<br /> <br /> text &quot;4.Open my menu&quot;<br /> <br /> decoration<br /> }<br /> execKey &quot;4&quot; { close quickmessage; open mynewmenu }<br /> &lt;/syntaxhighlight&gt;<br /> <br /> Then insert it below and change escape button coordinates to + 16<br /> <br /> &lt;syntaxhighlight lang=&quot;cpp&quot;&gt;<br /> itemDef<br /> {<br /> name &quot;window&quot;<br /> visible 1<br /> rect 16 52 0 0<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> forecolor 1 1 1 1<br /> textfont UI_FONT_NORMAL<br /> textscale .24<br /> textaligny 8<br /> text &quot;@QUICKMESSAGE_3_RESPONSES&quot;<br /> decoration<br /> }<br /> execKey &quot;3&quot; { close quickmessage; open quickresponses }<br /> <br /> itemDef<br /> {<br /> name &quot;window&quot;<br /> visible 1<br /> rect 16 64 0 0<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> forecolor 1 1 1 1<br /> textfont UI_FONT_NORMAL<br /> textscale .24<br /> textaligny 8<br /> text &quot;4.Open my menu&quot;<br /> decoration<br /> }<br /> execKey &quot;4&quot; { close quickmessage; open mynewmenu}<br /> <br /> itemDef<br /> {<br /> name &quot;window&quot;<br /> visible 1<br /> rect 16 84 0 0<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> forecolor 1 1 1 1<br /> textfont UI_FONT_NORMAL<br /> textscale .24<br /> textaligny 8<br /> text &quot;@QUICKMESSAGE_ESC_EXIT&quot;<br /> decoration<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> <br /> *Now '''SAVE''' it and go to your mod folder where you saved it -&gt; ui_mp/wm_quickmessages .<br /> *Copy this one and paste it in your ''raw folder'' <br /> <br /> Call of Duty World at War-&gt; raw<br /> <br /> *Go to your ModTool - ( launcher.exe ) Select the Modbuilder tab <br /> *Select in the dropdown box '''menumod''' .<br /> *And type like below:<br /> <br /> menufile,ui_mp/wm_quickmessage.menu<br /> <br /> '''Example:'''<br /> <br /> <br /> [[Image:modmenu_3.jpg]]<br /> <br /> <br /> =Make your own menu file=<br /> <br /> *Now we have a backup for everything. Although we edited a menu, we now need our mymenu , because else we dont have anything that will open it :O!.<br /> *As reference im going to use the quickmessage menu as layout ('''NOTE : Using other menus is much easier as reference point and editing them, because making a layout yourself is a time-spending event.<br /> *So lets open our quickmessage menu in your mods folder ('''ui_mp/wm_quickmessages''')<br /> *Now first we are going to save it as mymenu.menu<br /> <br /> <br /> Upper corner you see FILE - &gt; Save as..<br /> <br /> *Now save it in ui_mp of your raw folder as mymenu.menu.<br /> *Now you did this we are going to remove the buttons 2, 3 and 4.<br /> *Select them and just delete the part and save it ( Ctrl+S ).<br /> *If it is correct you only have this left:<br /> <br /> &lt;syntaxhighlight lang=&quot;cpp&quot;&gt;<br /> #include &quot;ui/menudef.h&quot;<br /> <br /> #define ORIGIN_QUICKMESSAGETAB 32 224<br /> #define ORIGIN_QUICKMESSAGEWINDOW 32 256<br /> <br /> {<br /> menuDef<br /> {<br /> name &quot;quickmessage&quot;<br /> visible 0<br /> fullscreen 0<br /> rect 0 0 640 480<br /> focuscolor 1 1 1 1<br /> disablecolor 0 0 0 0<br /> style WINDOW_STYLE_EMPTY<br /> <br /> onOpen<br /> {<br /> setDvar cl_bypassMouseInput &quot;1&quot;<br /> }<br /> onClose<br /> {<br /> setDvar cl_bypassMouseInput &quot;0&quot;<br /> }<br /> <br /> // WINDOW BACKGROUND<br /> itemDef<br /> {<br /> name &quot;window_background&quot;<br /> visible 1<br /> rect 0 0 224 192<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> style WINDOW_STYLE_FILLED<br /> forecolor 1 1 1 1<br /> backcolor 0 0 0 0.7975<br /> decoration<br /> }<br /> <br /> // WINDOW LINES<br /> itemDef<br /> {<br /> name &quot;window_lines&quot;<br /> visible 1<br /> rect 3 0 2 187<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> style WINDOW_STYLE_FILLED<br /> backcolor 1 1 1 .125<br /> decoration<br /> }<br /> itemDef<br /> {<br /> name &quot;window_lines&quot;<br /> visible 1<br /> rect 219 0 2 187<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> style WINDOW_STYLE_FILLED<br /> backcolor 1 1 1 .125<br /> decoration<br /> }<br /> itemDef<br /> {<br /> name &quot;window_lines&quot;<br /> visible 1<br /> rect 5 0 214 2<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> style WINDOW_STYLE_FILLED<br /> backcolor 1 1 1 .125<br /> decoration<br /> }<br /> itemDef<br /> {<br /> name &quot;window_lines&quot;<br /> visible 1<br /> rect 3 187 218 2<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> style WINDOW_STYLE_FILLED<br /> backcolor 1 1 1 .125<br /> decoration<br /> }<br /> <br /> // TITLE<br /> itemDef<br /> {<br /> name &quot;title&quot;<br /> visible 1<br /> rect 0 0 224 32<br /> origin ORIGIN_QUICKMESSAGETAB<br /> style WINDOW_STYLE_FILLED<br /> forecolor 1 1 1 1<br /> backcolor 0 0 0 0.7975<br /> type ITEM_TYPE_TEXT<br /> text &quot;@QUICKMESSAGE_QUICK_MESSAGE&quot;<br /> textfont UI_FONT_NORMAL<br /> textscale .24<br /> textaligny 24<br /> textalign ITEM_ALIGN_CENTER<br /> decoration<br /> }<br /> itemDef<br /> {<br /> name &quot;title_quickmessage_gray&quot;<br /> visible 1<br /> rect 3 3 218 29<br /> origin ORIGIN_QUICKMESSAGETAB<br /> style WINDOW_STYLE_FILLED<br /> backcolor 1 1 1 .125<br /> decoration<br /> }<br /> <br /> itemDef<br /> {<br /> name &quot;window&quot;<br /> visible 1<br /> rect 16 20 0 0<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> forecolor 1 1 1 1<br /> textfont UI_FONT_NORMAL<br /> textscale .24<br /> textaligny 8<br /> text &quot;@QUICKMESSAGE_1_COMMANDS&quot;<br /> decoration<br /> }<br /> execKey &quot;1&quot; { close quickmessage; open quickcommands }<br /> <br /> <br /> itemDef<br /> {<br /> name &quot;window&quot;<br /> visible 1<br /> rect 16 68 0 0<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> forecolor 1 1 1 1<br /> textfont UI_FONT_NORMAL<br /> textscale .24<br /> textaligny 8<br /> text &quot;@QUICKMESSAGE_ESC_EXIT&quot;<br /> decoration<br /> }<br /> }<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> <br /> =Script response=<br /> <br /> After you done this we still have the wrong &quot;Response&quot; sending out to the engine, because what we want to do is making a Text come up in our screen, what we are going to do is in a few steps:<br /> <br /> *make a new response <br /> *make a .gsc that will see our response <br /> *the .gsc will send out to the player a text in screen if he sees the response<br /> <br /> First we are going to edit the button, and change the response of ExeckeyInt <br /> <br /> The engine gets his responses by this command&lt;br&gt;<br /> <br /> ''ScriptMenuResponse''<br /> <br /> Our ScriptmenuResponse is going to be &quot;helloworld''.<br /> So below we are going to edit it <br /> <br /> &lt;syntaxhighlight lang=&quot;cpp&quot;&gt;<br /> itemDef<br /> {<br /> name &quot;window&quot;<br /> visible 1<br /> rect 16 20 0 0<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> forecolor 1 1 1 1<br /> textfont UI_FONT_NORMAL<br /> textscale .24<br /> textaligny 8<br /> text &quot;Hello world!&quot;<br /> decoration<br /> }<br /> execKey &quot;1&quot; { close quickmessage; ScriptMenuResponse &quot;helloworld&quot; }<br /> &lt;/syntaxhighlight&gt;<br /> <br /> *Also we need to name it to our own menu:<br /> <br /> Search below the first lines of the file to ''MenuDef'' if you scroll down you see <br /> <br /> name &quot;quickmessage&quot;<br /> <br /> We are going to change it to our own name like below<br /> <br /> &lt;syntaxhighlight lang=&quot;cpp&quot;&gt;<br /> menuDef<br /> {<br /> name &quot;mymenu&quot;<br /> <br /> visible 0<br /> fullscreen 0<br /> rect 0 0 640 480<br /> focuscolor 1 1 1 1<br /> disablecolor 0 0 0 0<br /> style WINDOW_STYLE_EMPTY<br /> <br /> onOpen<br /> {<br /> setDvar cl_bypassMouseInput &quot;1&quot;<br /> }<br /> onClose<br /> {<br /> setDvar cl_bypassMouseInput &quot;0&quot;<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> <br /> Now save the edited menu! It should look now like this your menu :&lt;br&gt;<br /> <br /> &lt;syntaxhighlight lang=&quot;cpp&quot;&gt;<br /> #include &quot;ui/menudef.h&quot;<br /> <br /> #define ORIGIN_QUICKMESSAGETAB 32 224<br /> #define ORIGIN_QUICKMESSAGEWINDOW 32 256<br /> <br /> {<br /> menuDef<br /> {<br /> name &quot;mymenu&quot;<br /> visible 0<br /> fullscreen 0<br /> rect 0 0 640 480<br /> focuscolor 1 1 1 1<br /> disablecolor 0 0 0 0<br /> style WINDOW_STYLE_EMPTY<br /> <br /> onOpen<br /> {<br /> setDvar cl_bypassMouseInput &quot;1&quot;<br /> }<br /> onClose<br /> {<br /> setDvar cl_bypassMouseInput &quot;0&quot;<br /> }<br /> <br /> // WINDOW BACKGROUND<br /> itemDef<br /> {<br /> name &quot;window_background&quot;<br /> visible 1<br /> rect 0 0 224 192<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> style WINDOW_STYLE_FILLED<br /> forecolor 1 1 1 1<br /> backcolor 0 0 0 0.7975<br /> decoration<br /> }<br /> <br /> // WINDOW LINES<br /> itemDef<br /> {<br /> name &quot;window_lines&quot;<br /> visible 1<br /> rect 3 0 2 187<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> style WINDOW_STYLE_FILLED<br /> backcolor 1 1 1 .125<br /> decoration<br /> }<br /> itemDef<br /> {<br /> name &quot;window_lines&quot;<br /> visible 1<br /> rect 219 0 2 187<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> style WINDOW_STYLE_FILLED<br /> backcolor 1 1 1 .125<br /> decoration<br /> }<br /> itemDef<br /> {<br /> name &quot;window_lines&quot;<br /> visible 1<br /> rect 5 0 214 2<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> style WINDOW_STYLE_FILLED<br /> backcolor 1 1 1 .125<br /> decoration<br /> }<br /> itemDef<br /> {<br /> name &quot;window_lines&quot;<br /> visible 1<br /> rect 3 187 218 2<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> style WINDOW_STYLE_FILLED<br /> backcolor 1 1 1 .125<br /> decoration<br /> }<br /> <br /> // TITLE<br /> itemDef<br /> {<br /> name &quot;title&quot;<br /> visible 1<br /> rect 0 0 224 32<br /> origin ORIGIN_QUICKMESSAGETAB<br /> style WINDOW_STYLE_FILLED<br /> forecolor 1 1 1 1<br /> backcolor 0 0 0 0.7975<br /> type ITEM_TYPE_TEXT<br /> text &quot;@QUICKMESSAGE_QUICK_MESSAGE&quot;<br /> textfont UI_FONT_NORMAL<br /> textscale .24<br /> textaligny 24<br /> textalign ITEM_ALIGN_CENTER<br /> decoration<br /> }<br /> itemDef<br /> {<br /> name &quot;title_quickmessage_gray&quot;<br /> visible 1<br /> rect 3 3 218 29<br /> origin ORIGIN_QUICKMESSAGETAB<br /> style WINDOW_STYLE_FILLED<br /> backcolor 1 1 1 .125<br /> decoration<br /> }<br /> <br /> itemDef<br /> {<br /> name &quot;window&quot;<br /> visible 1<br /> rect 16 20 0 0<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> forecolor 1 1 1 1<br /> textfont UI_FONT_NORMAL<br /> textscale .24<br /> textaligny 8<br /> text &quot;Hello world!&quot;<br /> decoration<br /> }<br /> execKey &quot;1&quot; { close quickmessage; ScriptMenuResponse &quot;helloworld&quot; }<br /> <br /> itemDef<br /> {<br /> name &quot;window&quot;<br /> visible 1<br /> rect 16 68 0 0<br /> origin ORIGIN_QUICKMESSAGEWINDOW<br /> forecolor 1 1 1 1<br /> textfont UI_FONT_NORMAL<br /> textscale .24<br /> textaligny 8<br /> text &quot;@QUICKMESSAGE_ESC_EXIT&quot;<br /> decoration<br /> }<br /> }<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> <br /> =Prepare for use=<br /> <br /> Copy the new menu and copy it to multiple folders <br /> <br /> *Cut the mymenu.menu from ui_mp in the mod folder to a new folder you create , this will be called scriptmenus<br /> *Now copy this mymenu.menu from the ui_mp/scriptmenus to your raw folder and place it in &lt;span style=&quot;color:red&quot;&gt;ui_mp/scriptmenus&lt;/span&gt;<br /> *Now add this line to your Modbuilder ( the Launcher.exe )<br /> *menufile,ui_mp/scriptmenus/mymenu.menu<br /> &lt;br&gt;<br /> Ok now we need to make a .gsc that checks the response<br /> &lt;br&gt;<br /> &lt;span style=&quot;color:red&quot;&gt;'''SO LETS START!'''&lt;/span&gt;<br /> First go to your mod folder and open maps/mp/gametypes/_globallogic.gsc with the GSC programming tool.<br /> <br /> If you did this select above in the programming tool this:<br /> <br /> [[Image:modmenu_4.jpg|500px]]<br /> <br /> *Select it so its checked.<br /> *Now you see line numbers. <br /> *Go to line:'''4348'''<br /> *Add this:<br /> <br /> &lt;syntaxhighlight lang=&quot;cpp&quot;&gt;<br /> thread functions\_mymenu::init();<br /> &lt;/syntaxhighlight&gt;<br /> <br /> I shall explain what this means. This function well execute the function init() in folder ''functions'' called ''_mymenu.gsc''. What we need to do now is make a new file with the programming tool (Above you see a workbar and on the left upper corner you see ''' File -&gt; New ''' select this )<br /> <br /> *Now type here this:<br /> <br /> &lt;syntaxhighlight lang=&quot;cpp&quot;&gt;<br /> init()<br /> {<br /> game[&quot;mymenu&quot;] = &quot;mymenu&quot;; //mymenu is the name of menu so keep this.<br /> Precachemenu(game[&quot;mymenu&quot;]);<br /> thread Onplayerconnect();<br /> }<br /> <br /> Onplayerconnect()<br /> {<br /> while(1)<br /> {<br /> level waittill(&quot;connecting&quot;,player);<br /> player thread OnSpawnPlayer();<br /> }<br /> <br /> <br /> }<br /> <br /> OnSpawnPlayer()<br /> {<br /> <br /> while(1)<br /> {<br /> self waittill(&quot;spawned&quot;);<br /> self thread MenuResponses();<br /> }<br /> <br /> }<br /> <br /> <br /> MenuResponses()<br /> {<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> <br /> First i will explain what it will do. When the game is loading it will '''load''' the functions into the game; <br /> <br /> so it will read like this:<br /> <br /> *Init -&gt; precache the menu ( load it ) -&gt;do function OnPlayerconnect -&gt; wait till anybody is connecting , and wait till its a variable player - &gt; if this is done -&gt; do function OnSpawnPlayer on the *player - &gt; Player waits till it is spawned - &gt; Engine says the player is spawned - &gt; now do a function MenuResponses '''<br /> <br /> The '''while(1)''' is a loop command, so you have to see it as a command that repeats time over time , so if it has waitted if someone has connected then it will thread the command and wait again to someone connects , and over again.<br /> <br /> Now we did this we are going to focus on the Scripting part of Menuresponses, we need a few things:<br /> <br /> *a loop<br /> *a check ( waittill ) that waits till we have a response sended out by the engine<br /> <br /> This will look like this: ( this is a standard thing, cant change it, just do it like this)<br /> <br /> &lt;syntaxhighlight lang=&quot;cpp&quot;&gt;<br /> MenuResponses()<br /> {<br /> while(1)<br /> {<br /> self waittill(&quot;menuresponse&quot;,menu,response)<br /> if(menu == game[&quot;mymenu&quot;] ) // if the response sended out is the menu called mymenu then proceed with the script<br /> {<br /> if(response == &quot;helloworld&quot;)<br /> self iprintlnbold(&quot;Hello world :O!!! =D&quot;);// print in a text inscreen that only the player that pressed the button will see<br /> <br /> }<br /> }<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> <br /> Now we have this in our script below, save it as _mymenu.gsc ( File -&gt; save as ) in your mod folder ( menumod folder ) -&gt; functions<br /> <br /> &lt;syntaxhighlight lang=&quot;cpp&quot;&gt;<br /> init()<br /> {<br /> game[&quot;mymenu&quot;] = &quot;mymenu&quot;; //mymenu is the name of menu so keep this.<br /> Precachemenu(game[&quot;mymenu&quot;]);<br /> thread Onplayerconnect();<br /> }<br /> <br /> Onplayerconnect()<br /> {<br /> while(1)<br /> {<br /> level waittill(&quot;connecting&quot;,player);<br /> player thread OnSpawnPlayer();<br /> }<br /> <br /> <br /> }<br /> <br /> OnSpawnPlayer()<br /> {<br /> <br /> while(1)<br /> {<br /> self waittill(&quot;spawned&quot;);<br /> self thread MenuResponses();<br /> }<br /> <br /> }<br /> <br /> MenuResponses()<br /> {<br /> while(1)<br /> {<br /> self waittill(&quot;menuresponse&quot;,menu,response)<br /> if(menu == game[&quot;mymenu&quot;] ) // if the response sended out is the menu called mymenu then proceed with the script<br /> {<br /> if(response == &quot;helloworld&quot;)<br /> self iprintlnbold(&quot;Hello world :O!!! =D&quot;);// print in a text inscreen that only the player that pressed the button will see<br /> <br /> }<br /> }<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> <br /> If we have done this, check and make sure if you have this:<br /> &lt;font color=&quot;red&quot;&gt;<br /> *mymenu.menu placed in raw/ui_mp/scriptmenus <br /> *mymenu.menu placed in mods/menumod/ui_mp/scriptmenus<br /> *mymenu.menu placed in <br /> **Vista : C:\Users\Username\AppData\Local\Activision\CoDWaW\mods\menumod\ui_mp\scriptmenus<br /> **XP : C:\Documents and Settings\[username]\Local Settings\Application Data\Activision\CoDWaW\mods\menumod\ui_mp\scriptmenus<br /> *wm_quickmessages.menu placed in raw/ui_mp/ <br /> *wm_quickmessages.menu placed in mods/menumod/ui_mp/<br /> *wm_quickmessages.menu placed in <br /> **Vista : C:\Users\Username\AppData\Local\Activision\CoDWaW\mods\menumod\ui_mp\<br /> **XP : C:\Documents and Settings\[username]\Local Settings\Application Data\Activision\CoDWaW\mods\menumod\ui_mp\<br /> *The Functions and Maps folder (the gsc files) placed in mods/menumod/<br /> *The Functions and Maps folder (the gsc files) placed in<br /> **Vista : C:\Users\Username\AppData\Local\Activision\CoDWaW\mods\menumod\ui_mp\<br /> **XP:: C:\Documents and Settings\[username]\Local Settings\Application Data\Activision\CoDWaW\mods\menumod\ui_mp\<br /> &lt;/font&gt;<br /> <br /> Now if you have this go to your launcher , then select the Modbuild tab, Select your menumod , then press the Build Mod button.<br /> <br /> If it is ready with compiling select the Run Game Tab -&gt; select MP - &gt; Select the menumod from dropdown box&lt;br&gt;<br /> Check below that if these things are checked:<br /> <br /> developer 2 <br /> devmap mp_dome (this is our testmap''')<br /> <br /> If it works, well done you made a menu mod :) !!!<br /> <br /> <br /> --[[User:Zeroy|Zeroy.]] 10:39, 8 April 2009 (UTC)<br /> [[Category:Call of Duty 5]]<br /> [[Category:Modding]]<br /> [[Category:Scripting]]<br /> [[Category:Menu]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=General_:_Anatomy_of_a_Combat_Zone&diff=16610 General : Anatomy of a Combat Zone 2012-02-29T19:57:27Z <p>CoDEmanX: </p> <hr /> <div>{{Note|In this detailed design article, Blue Castle (Dead Rising 2) level design director Josh Bridge examines how you design memorable, tactical combat areas for first/third-person shooter games.}}<br /> <br /> == Overview ==<br /> <br /> The following is an attempt to identify, name and describe the key ingredients to necessary for typical cover-based video game shooter. Usually in a shooter, the core gameplay revolves around living long enough to kill what is threatening you or impeding your progress.<br /> <br /> <br /> The challenge is to present this small amount of gameplay in new and exciting ways so that the player is compelled to sit through and play all the way to the end... and hopefully want to play the sequel.<br /> <br /> <br /> It should also be noted that the following is focused solely on the areas of combat within a level, and should not to be misinterpreted as the sole ingredient needed for an entire level's design.<br /> <br /> <br /> == The Combat Zone ==<br /> <br /> <br /> [[Image:ev1.jpg|center]]<br /> <br /> <br /> The Combat Zone is a reference to the area of gameplay within a level designated for battle. This is a broad term and doesn't necessarily imply explicit, physical boundaries... though in some cases it can. In either case, the LD creates areas of expected battle with various gameplay support; enemies, cover objects, destructibles, impassable points, flanking positions, etc. &lt;br&gt;&lt;br&gt;<br /> The layout and placement carries the expectation that the player will have to battle through the area -- in essence, the presentation of the core gameplay.&lt;br&gt;&lt;br&gt;<br /> <br /> <br /> === The Kill Zone ===<br /> <br /> Defined as the area in which the player and/or AI is without cover and can be fired directly upon, and potentially killed. This area can be visible (landmines on the ground) or virtual (tracer fire). The effectiveness of the design here determines the difficulty of the firefight. Without an effective Kill Zone, the player doesn't need cover, and eliminates one of the key ingredients intended for gameplay.<br /> <br /> <br /> === Defensive Cover ===<br /> <br /> The required companion to a Kill Zone. There should be areas in which the player and/or AI is protected from direct fire. Without this, the experience boils down to shoot or be shot. Cover has a huge impact on play styles and difficulty, which I will go into a bit further on.<br /> <br /> <br /> == Player Paths ==<br /> <br /> === Play Your Way ===<br /> <br /> Players should be able to play the way THEY want to. Why? It allows for a more creative experience, something that players will likely want to come back to again. Limiting the player to one path and play style over and over again gets tiresome; variety is key to keeping the player engaged.&lt;br&gt;&lt;br&gt;<br /> <br /> *Everyone has a preferred play style in shooters:<br /> ** Run and Gun - guns blazing, shooting everything on sight as they usually stick to the most obvious play path.<br /> ** Ninja - climbing up and jumping across everything or sneaking around through small passages that are discovered; they usually avoid the most obvious play path.<br /> ** Camper - loves to hang back in safe spot and snipe from as far away as possible before moving in.<br /> <br /> <br /> [[Image:ev2.jpg|center]]<br /> <br /> <br /> In the above level mock-up are examples of multiple play paths that accommodate these styles:&lt;br&gt;<br /> <br /> *The Run and Gunner will likely shoot their way across the trench, taking cover only when necessary.<br /> *The Ninja will likely climb up and jump across all the cover objects, making their way across the playfield.<br /> *The Camper will likely look for a safe spot atop the catwalk to snipe the enemies from afar.&lt;br&gt;<br /> <br /> Focusing on accommodating each one of these play styles in each Combat Zone isn't easy and based on experience really should be planned from the beginning. However, this element is critical to getting out of the linear/scripted old school way of designing levels.&lt;br&gt;&lt;br&gt;<br /> <br /> When you think you are about done with your napkin sketch, ask yourself:&lt;br&gt;<br /> <br /> *Is there way to circle the enemy undetected?<br /> *Can the player climb under and over enemies?<br /> *Can the player have a variety of cover options?<br /> *Does the player have to crouch?<br /> *Can the player navigate the space by jumping from object to object?<br /> <br /> <br /> === Is It Obvious? ===<br /> <br /> Giving the player multiple choices and paths within a Combat Zone lends to openness and freedom. But, all is for not if the player can't see it. Avoid trying to hide alternate routes and options; everything should be obvious!&lt;br&gt;<br /> <br /> Sell the player on the paths by:&lt;br&gt;<br /> <br /> *Face the player: Show the player their options as soon as possible. Guiding the player with a more restrictive path at the entrance to a combat zone increases the odds that they will be facing the right direction.<br /> <br /> {{Info|Note: the paths don't necessarily need to be restricted with immovable static mesh. Players can be guided with hazards of moveable objects to encourage the direction they should move. Some players will ignore this and push forward, but the majority will follow and avoid trying to push through.}}<br /> <br /> *Metrics: be consistent with path widths and angles. Narrow and steep approaches look uninviting and are not obvious.<br /> *Lighting/FX: 'god rays' or glowing fireflies that highlight a tunnel or ladder.<br /> *Pawns: spawn some non-lethal pawns to attract the player's attention.<br /> <br /> No More Tubes!<br /> <br /> <br /> [[Image:ev3.jpg|center]]<br /> <br /> <br /> Most common, and easiest to produce are flat layouts with odd pieces of cover. These are possibly okay as an early training level, but boring and &quot;been there&quot; through the course of the entire game. The challenge is to create layouts that offer a variety of angles and directions for the player to shoot from and take advantage of the fact that the world is 3D.<br /> <br /> <br /> == Cover ==<br /> <br /> Cover is a key component of a shooter for obvious reasons. But, before you dismiss it as something that just 'happens' when the level is decorated, be sure that you understand what types and how placement directly affects the player's experience.&lt;br&gt;&lt;br&gt;<br /> <br /> <br /> === Fiction and Story - Unorthodox Cover ===<br /> <br /> <br /> [[Image:ev4.jpg|center]]<br /> <br /> <br /> '''''F@#$#!!@G CRATES!?!?!?'''''<br /> <br /> <br /> Repeating crates are a great indication that the team has run out of ideas. They work if the fiction supports it (a crate warehouse!), but should be avoided. Great cover ideally doesn't stand out and yell:<br /> <br /> &lt;div style=&quot;border:1px solid silver;padding:10px;font-weight:bold;&quot;&gt;&quot;Hey, look at me! I am the token cover object for the battle that is about to start as soon as you hit that invisible trigger!&quot;&lt;/div&gt;<br /> <br /> By using the same looking, sized, and shaped cover objects throughout a level the player starts to see the game and not the world. The player can see the Combat Zone coming. This is especially nasty when the cover objects don't really match the fiction of the area... like crates in the jungle.<br /> <br /> Everything has to make sense. When designing a Combat Zone, it is critical to use the fiction of the area to inspire what objects will be placed on the play floor, and how they can be used as cover. This needs to be a part of your napkin sketch plan, as it is symbiotic to the environment your level is within.&lt;br&gt;&lt;br&gt;<br /> <br /> '''''Flank!'''''<br /> <br /> [[Image:ev5.jpg|center]]<br /> <br /> <br /> Players want to feel like a big badass that can outsmart the &quot;stupid game&quot;. Giving the player the ability to outsmart AI by flanking the Kill Zone and Defensive Cover is key. Plan for ways that the player can get the perk of feeling like a hero that outsmarted the enemy.&lt;br&gt;&lt;br&gt;<br /> <br /> The image above indicates a few ways a player could approach flanking the enemy within the example layout.<br /> <br /> <br /> === Relation to Difficulty ===<br /> <br /> Cover is critical to controlling the difficulty of a Combat Zone. Taking into account the level Intensity and Difficulty Beats, your Combat Zone should reflect this.&lt;br&gt;<br /> <br /> Control cover difficulty by taking the following into account:&lt;br&gt;<br /> <br /> *Amount: More cover means more protection from enemy fire and more opportunities to sneak around and pop an enemy. Less results in a larger and more deadly Kill Zone that ups the challenge.<br /> *Spacing: Player speed is key to spacing, so ensure that you are well versed in our metrics. Cover that is spaced further than the player can sprint makes for a risky run through the Kill Zone. Cover that allows the player to connect jumps facilitates a layered Ninja path.<br /> *Size and Height: Big and wide offers ample cover while a narrow tree exposes the player to multiple lines of fire. Forcing the player to crouch behind a stump is tough than just running and standing behind a wall.<br /> *Density: A cluster of small trees breaks sight lines, but not shots fired.<br /> *Temporary: Destructible cover leads to no cover and exposes the player to the Kill Zone.<br /> <br /> <br /> Leverage the above intelligently following your Intensity and Difficulty Beats, so that your Combat Zones challenge the player in a variety of deliberate ways.&lt;br&gt;<br /> <br /> <br /> == Layering and Verticality ==<br /> <br /> Layering refers to having multiple layers of game play surfaces stacked on top of each other. Layered Combat Zones are critical to supporting the above mentioned play styles. Layers need to be planned in your Napkin Sketch as the environment needs to justify it. Catwalks in the jungle, anyone?&lt;br&gt;&lt;br&gt;<br /> <br /> The image below is an example of layered Combat Zone.<br /> <br /> <br /> [[Image:ev6.jpg|center]]<br /> <br /> <br /> Verticality refers to a Combat Zone that is built vertically vs. horizontally. The challenge is focused on moving through the space vertically with lots of emphasis on climbing/jumping, which makes for a challenge that is focused on traversing a space. Couple that with combat, and it dramatically increases the difficulty.<br /> <br /> <br /> == Combat Zone Layouts ==<br /> <br /> There are two main types of Combat Zone layouts; those that feature explicit bottlenecks, referred to as Choke Points, in which the player has to cross and overcome a deadly Kill Zone which I refer to as &quot;defined&quot;. Note the image below; it features a few paths that all choke at the same point.&lt;br&gt;<br /> <br /> <br /> [[Image:ev7.jpg|center]]<br /> <br /> <br /> The second layout type is referred to as &quot;freeform&quot;, where the choke point isn't explicit. The resulting experience is more &quot;loose&quot; as the Kill Zone could come together at various areas within the Combat Zone depending the player's approach.&lt;br&gt;<br /> <br /> <br /> [[Image:ev8.jpg|center]]<br /> <br /> <br /> === Switching it up ===<br /> <br /> Is it possible to design a Combat Zone that starts off as freeform, and then becomes defined -- and vice versa? The switch could be an exciting component and make for a memorable battle.<br /> <br /> <br /> == Functional Design ==<br /> <br /> ''Why is there a crate in the middle of the jungle?''&lt;br&gt;&lt;br&gt;<br /> Everything in the area needs to be justified and fit the fiction of the world. Research and gather reference to ground your design layouts. Take into account:&lt;br&gt;<br /> <br /> *Where in the overall world map is this area?<br /> *Is it old or new?<br /> *Why are these objects here?<br /> *Is there a waterway (stream/river/dried up river bed)<br /> *Was the area cleared or is it naturally dense?<br /> *Have the trees been cut down?<br /> *How do people get in and out of the area?<br /> *To re-enforce the suspension of disbelief, the layout should be believable. There are a few ways to help support this:<br /> <br /> <br /> '''Functionality:''' As opposed to randomly placing objects and structures to serve the need for an effective Combat Zone, keep in mind that the layout has to technically be functional and ultimately believable. For example, if it is some sort of storage warehouse, then how do items get loaded and unloaded? Can everything fit through the doorways? &lt;br&gt;&lt;br&gt;<br /> <br /> '''History:''' How long has this area existed? If it is old, does the layout reflect this (broken/disarray)? Thinking through the history of the layout helps to feed ideas about structures and their state. If it is an old area, could you just walk in through the front door? Is it overgrown? Is it broken? Maybe another way in through a collapsed part of a perimeter wall would fit better with the age of the layout. &lt;br&gt;&lt;br&gt;<br /> <br /> '''Mini-story:''' Nothing breaks the illusion more than enemies that are mindlessly patrolling obvious loops or standing and idling (read: waiting to be killed). What is their role? What should they be doing when you enter the area? If they just arrived are they setting up camp and unloading? If they have been there for a while, what do they do to kill time?<br /> <br /> <br /> The idea is to create a believable environment that simply isn't a random assembly of objects strictly serving the purpose of creating an effective Combat Zone.<br /> <br /> <br /> == Controlling The Challenge ==<br /> <br /> === Kill Zone on the move ===<br /> <br /> As the player gets used to the concept of a Kill Zone, the game play still runs the risk of becoming stale if each Combat Zone feels as predictable and static as the last. This is especially true if the player is simply 'pop and shooting' from the sort of Defensive Zone throughout the course of the fight.<br /> <br /> Designing Kill Zones that change angles and positions forces the player to find a new Defensive Zone. This helps to create the impression of a dynamic world along believably intelligent AI.<br /> <br /> <br /> '''Ways that this can be achieved:'''<br /> <br /> *Stage alternate positions in which reinforcements enter the Combat Zone so that players are not mowing down enemies one after another from the same angle.<br /> <br /> {{Info|Note that this should be an event that this presented to the player.}}<br /> <br /> *Destructible element changes the playfield; great if it is a gameplay object that the player is aware of.<br /> *AI 'fallback' and 'charge'; the Kill Zone moving forward and back within the Combat Zone depending if the player is whittling their numbers down (AI fallback), or if there has been a standoff for sometime (AI charge)&lt;br&gt;<br /> <br /> <br /> '''Risk and reward'''<br /> <br /> There is nothing wrong with letting the player feel empowered, even if it is for a short period of time. The hunted becoming the hunter for a short period of time armed to the teeth; not unlike Pac-Man eating a power pellet.<br /> <br /> <br /> Within the layout, consider the placement of objects/items that would give the player a huge advantage in the battle.<br /> <br /> For example: An RPG with a few shots prominently displayed in the middle of the Kill Zone; the player can then choose to stay put and play it safe, or try risking his life sprint out and dive for the RPG.&lt;br&gt;<br /> <br /> <br /> == Extending Gameplay ==<br /> <br /> Last but most importantly of all is planning for ways to stage the Combat Zone in a way that they stand out from each other. The level designer is faced with the challenge of presenting the same gameplay that, end-to-end, maybe lasts less than 30 seconds -- over the course of a 10+ hour experience.&lt;br&gt;&lt;br&gt;<br /> <br /> Even with the understanding of what is needed to support a fun and engaging combat experience, pushing further on adding variety to the core combat experience is needed to extend the experience.<br /> <br /> <br /> === Adding a Twist - Unique Staging ===<br /> <br /> Consider the elements that make up the core mechanics and challenge the player on one or more. The player can:&lt;br&gt;<br /> <br /> See<br /> Move<br /> Shoot<br /> Take cover<br /> Hear<br /> Get Hurt<br /> <br /> By either giving the player a positive perk for one or a negative perk can help to create a memorable experience.<br /> <br /> <br /> With that in mind a negative perk could be an area that is filled with thick smoke that limits the player's ability to see. Or having a stampede of massive dinosaurs creates areas that cause damage and slow the player's movement.<br /> <br /> <br /> Positive perks also give the player a memorable twist to the combat experience. A moment where the player comes across a huge pile of explosives as they are suddenly attacked by a hoard of dinosaurs give the player the chance to blow up and gib till the heart's content.<br /> <br /> <br /> == Summing it All Up ==<br /> <br /> It all starts with the Napkin Sketch; plan for these key elements early on.&lt;br&gt;<br /> Ask yourself: &quot;What will players remember about this battle that is different than others?&quot;<br /> <br /> [http://www.gamasutra.com/view/feature/4080/anatomy_of_a_combat_zone.php Sources]<br /> <br /> <br /> <br /> --[[User:Zeroy|Zeroy.]] 16:14, 15 July 2009 (UTC)<br /> <br /> [[Category:Mapping]]<br /> [[Category:Basic Editing]]<br /> [[Category:Gameplay]]<br /> [[Category:Level Design]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_4:_Your_First_Map&diff=16594 Call of Duty 4: Your First Map 2012-02-23T03:46:14Z <p>CoDEmanX: </p> <hr /> <div>[[Category:Call of Duty 4]]<br /> [[Category:Basic Editing]]<br /> [[Category:Gameplay]]<br /> [[Category:Level Design]]<br /> <br /> [[Image:Noobs.png|200px|right]]<br /> [[Image:Nutshell.png]] There are many many ways to build a MP map and what you will find below are the way i usually work when building a map - The information are Guidelines and isnt the only way to go about mapping for Call of Duty 4 Modern Warfare, but it's ONE way.<br /> <br /> ==Use 2d Picture for Layout==<br /> <br /> This is a tip i found very handy for the scaling of your project early in the making.<br /> <br /> *Create your layout on paper or on drawing/cad third-party (make it quite big, at 1024*1024)<br /> *Use [[Call of Duty 4: Assets Manager|Asset Manager]] to import the pic in Radiant <br /> *In radiant go to preferences (P) &gt; tick the option &quot;Texture Brushes in 2D&quot;<br /> *Select your newly imported layout texture<br /> *Create a brush &gt; terrain patch with it for the size of your map/area to use layout<br /> <br /> <br /> Here is the result (using stock layout pics), you can then build on top of this or place your prefabs easily<br /> <br /> <br /> [[Image:layout_test.jpg]]<br /> <br /> <br /> Before beginning to map it is always best to plan a map project properly so it makes everything easier on later on stages.<br /> The very first step of mapping is studying a map layout that will become your final release.<br /> <br /> Not every layout made according to this tutorial should be automatically good.<br /> Only sticking to the basic principles mentioned in this topic, does not always guarantee you to have fun gameplay. It needs good insight and a lot of testing. But to increase the fun in the layout, it could be wise to read the following<br /> <br /> <br /> Call of Duty 4 is TDM based by default. But to cover all gametypes, it's best to stick to S&amp;D (objectives) when designing the layout. For S&amp;D it's critical to be able to reach objectives from several directions, in order to keep gameplay fun. And as S&amp;D is fun, then it is very likely that other non-objective gametypes are fun as well. So I will continue this tutorial with the S&amp;D gametype in mind.<br /> <br /> <br /> == Start simple ==<br /> <br /> Most people, including me to a long while back, started with detailing immediately, without keeping gameplay in mind.<br /> &quot;I'll just create and play along the way&quot;. For some people it works, for others it doesn't. I advice you to start out simple. Place BSP blocks everywhere where you want the player to be able to walk, and what he can or cannot see. Test it with a small group of people. If that plays fun, replace the blocks with simplistic shapes of houses / buildings to get a general impression of what it will look like in the end. If it is still fun, replace everything with detailed stuff.<br /> <br /> <br /> == Three routes ==<br /> <br /> Every layout needs at least 3 main routes to the objectives. One would cause a bottleneck and hardly any choice to go somewhere. This will get boring eventually. Two could be done, but then people are kind of forced to stick to either one side of the map or the other. Also that could get frustrating. And whenever something is frustrating, your map will only be played for 5 minutes and is doomed to fail. So three main routes are essential to have a good start for a layout.<br /> <br /> <br /> == Alternative routes ==<br /> <br /> From these three routes you can create smaller alternative routes, to flank the enemy or have a different approach than the main route. This offers variation and extra choices to the player. Don't overdo it, but make sure the player has enough choices to go somewhere. Players like choices.<br /> With alternative routes you can think of buildings, sewers or rooftops you can walk on. An alternative route would be a route you wouldn't take with the entire team (well almost never) but for yourself when you're alone.<br /> <br /> <br /> == In favor of defenders ==<br /> <br /> Make sure your objective placement is in favor of the defenders, so they can position themselves or form a plan on how to defend the objective zone area. Though, it is very important that once they have reached the objective zone, the time is relatively short for them to position, otherwise people will start to camp. Make sure that the difference between the time they position, and the attackers reach the objective, is about 3-4 seconds.<br /> <br /> For example:<br /> <br /> Defenders to Objective: 15 seconds<br /> Attackers to Objective: 18 seconds<br /> <br /> So make sure the defenders reach their objective first.<br /> <br /> <br /> == Defenders ==<br /> <br /> Like I mentioned above, make sure the defenders got the opportunity to position themselves and defend the objective zone.<br /> Good positions for defenders would be height differences. You can think of roofs, windows or bridges overlooking the objective.<br /> Don't create camp-positions, that will decrease the fun for the attackers. So also make sure the attackers can reach the positions as well to kill them from the side or back, instead of being constantly shot by a camper.<br /> <br /> <br /> == Open ==<br /> <br /> Don't put an objective in a corridor you can reach from only two sides. It would create a bottleneck situation and will become frustrating if people are in the same place every time. Also, don't make the objective area too open, so the attacker becomes too vulnerable for snipers. Place enough cover around the objective zone, so the attacker can defend himself when being attacked.<br /> <br /> <br /> == Logical ==<br /> <br /> That also brings me to the following subject: Place the objectives logical. To place the objective on a balcony somewhere, or in the church tower would be weird. Why would someone place their weapon stashes in a church tower or balcony? Plus, this would cause only one way to reach the objective. So basically, make sure the placement makes sense.<br /> <br /> <br /> == Height variations ==<br /> <br /> Height variations are greatly appreciated by players. It doesn't only break up a repetitive visual, but also offers new gameplay. It can offer new flanking routes and it gives the player the feel that the map is more dynamic. A third, more technical aspect, would be the performance. If you are in one room above, the stuff below doesn't get calculated (gets occluded). So working with height variations is definitely appreciated.<br /> <br /> <br /> == Technical ==<br /> <br /> Even though the games are getting better and better and are technically improving, don't push the engine's limits.<br /> It only brings you into the land of engine errors, which can only be fixed by deleting some stuff from your map. And I assume you don't want that. So instead, think of a layout the engine can handle. For example, CoD4 can't handle big open landscapes such as in the Battlefield series. Call of Duty 4 (still) works with portals, meaning you need structures to apply them on. So think of a layout being portal friendly.<br /> Also keep visibility in mind. The more objects need to be drawn, the worse it gets for FPS. Make sure you occlude a lot (that means, cover up open sights, so that not too many objects are being seen / calculated. You can easily solve this by height variations (like in UO's Stanjel), or just the buildings when your map is flat.<br /> <br /> <br /> Remember, these are all basics every map should actually have, or should be thought about. This doesn't guarantee you will have an awesome map, but at least the basics are there so you are on the right track.<br /> <br /> ''by Major Pain''</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_4:_Your_First_Map&diff=16593 Call of Duty 4: Your First Map 2012-02-23T03:45:38Z <p>CoDEmanX: </p> <hr /> <div>[[Category:Call of Duty 4]]<br /> [[Category:Basic Editing]]<br /> [[Category:Gameplay]]<br /> [[Category:Level Design]]<br /> <br /> [[Image:Noobs.png|200px|right]]<br /> [[Image:Nutshell.png]] There are many many ways to build a MP map and what you will find below are the way i usually work when building a map - The information are Guidelines and isnt the only way to go about mapping for Call of Duty 4 Modern Warfare, but it's ONE way.<br /> <br /> ==Use 2d Picture for Layout==<br /> <br /> This is a tip i found very handy for the scaling of your project early in the making.<br /> <br /> *Create your layout on paper or on drawing/cad third-party (make it quite big, at 1024*1024)<br /> *Use [[Call of Duty 4: Assets Manager|Asset Manager]] to import the pic in Radiant <br /> *In radiant go to preferences (P) &gt; tick the option &quot;Texture Brushes in 2D&quot;<br /> *Select your newly imported layout texture<br /> *Create a brush &gt; terrain patch with it for the size of your map/area to use layout<br /> <br /> <br /> Here is the result (using stock layout pics), you can then build on top of this or place your prefabs easily<br /> <br /> <br /> [[Image:layout_test.jpg]]<br /> <br /> <br /> Before beginning to map it is always best to plan a map project properly so it makes everything easier on later on stages.<br /> The very first step of mapping is studying a map layout that will become your final release.<br /> <br /> Not every layout made according to this tutorial should be automatically good.<br /> Only sticking to the basic principles mentioned in this topic, does not always guarantee you to have fun gameplay. It needs good insight and a lot of testing. But to increase the fun in the layout, it could be wise to read the following<br /> <br /> <br /> Call of Duty 4 is TDM based by default. But to cover all gametypes, it's best to stick to S&amp;D (objectives) when designing the layout. For S&amp;D it's critical to be able to reach objectives from several directions, in order to keep gameplay fun. And as S&amp;D is fun, then it is very likely that other non-objective gametypes are fun as well. So I will continue this tutorial with the S&amp;D gametype in mind.<br /> <br /> <br /> == Start simple ==<br /> <br /> Most people, including me to a long while back, started with detailing immediately, without keeping gameplay in mind.<br /> &quot;I'll just create and play along the way&quot;. For some people it works, for others it doesn't. I advice you to start out simple. Place BSP blocks everywhere where you want the player to be able to walk, and what he can or cannot see. Test it with a small group of people. If that plays fun, replace the blocks with simplistic shapes of houses / buildings to get a general impression of what it will look like in the end. If it is still fun, replace everything with detailed stuff.<br /> <br /> <br /> == Three routes ==<br /> <br /> Every layout needs at least 3 main routes to the objectives. One would cause a bottleneck and hardly any choice to go somewhere. This will get boring eventually. Two could be done, but then people are kind of forced to stick to either one side of the map or the other. Also that could get frustrating. And whenever something is frustrating, your map will only be played for 5 minutes and is doomed to fail. So three main routes are essential to have a good start for a layout.<br /> <br /> <br /> == Alternative routes ==<br /> <br /> From these three routes you can create smaller alternative routes, to flank the enemy or have a different approach than the main route. This offers variation and extra choices to the player. Don't overdo it, but make sure the player has enough choices to go somewhere. Players like choices.<br /> With alternative routes you can think of buildings, sewers or rooftops you can walk on. An alternative route would be a route you wouldn't take with the entire team (well almost never) but for yourself when you're alone.<br /> <br /> <br /> == In favor of defenders ==<br /> <br /> Make sure your objective placement is in favor of the defenders, so they can position themselves or form a plan on how to defend the objective zone area. Though, it is very important that once they have reached the objective zone, the time is relatively short for them to position, otherwise people will start to camp. Make sure that the difference between the time they position, and the attackers reach the objective, is about 3-4 seconds.<br /> <br /> For example:<br /> <br /> Defenders to Objective: 15 seconds<br /> Attackers to Objective: 18 seconds<br /> <br /> So make sure the defenders reach their objective first.<br /> <br /> <br /> == Defenders ==<br /> <br /> Like I mentioned above, make sure the defenders got the opportunity to position themselves and defend the objective zone.<br /> Good positions for defenders would be height differences. You can think of roofs, windows or bridges overlooking the objective.<br /> Don't create camp-positions, that will decrease the fun for the attackers. So also make sure the attackers can reach the positions as well to kill them from the side or back, instead of being constantly shot by a camper.<br /> <br /> <br /> == Open ==<br /> <br /> Don't put an objective in a corridor you can reach from only two sides. It would create a bottleneck situation and will become frustrating if people are in the same place every time. Also, don't make the objective area too open, so the attacker becomes too vulnerable for snipers. Place enough cover around the objective zone, so the attacker can defend himself when being attacked.<br /> <br /> <br /> == Logical ==<br /> <br /> That also brings me to the following subject: Place the objectives logical. To place the objective on a balcony somewhere, or in the church tower would be weird. Why would someone place their weapon stashes in a church tower or balcony? Plus, this would cause only one way to reach the objective. So basically, make sure the placement makes sense.<br /> <br /> <br /> == Height variations ==<br /> <br /> Height variations are greatly appreciated by players. It doesn't only break up a repetitive visual, but also offers new gameplay. It can offer new flanking routes and it gives the player the feel that the map is more dynamic. A third, more technical aspect, would be the performance. If you are in one room above, the stuff below doesn't get calculated (gets occluded). So working with height variations is definitely appreciated.<br /> <br /> <br /> == Technical ==<br /> <br /> Even though the games are getting better and better and are technically improving, don't push the engine's limits.<br /> It only brings you into the land of engine errors, which can only be fixed by deleting some stuff from your map. And I assume you don't want that. So instead, think of a layout the engine can handle. For example, CoD4 can't handle big open landscapes such as in the Battlefield series. Call of Duty 4 (still) works with portals, meaning you need structures to apply them on. So think of a layout being portal friendly.<br /> Also keep visibility in mind. The more objects need to be drawn, the worse it gets for FPS. Make sure you occlude a lot (that means, cover up open sights, so that not too many objects are being seen / calculated. You can easily solve this by height variations (like in UO's Stanjel), or just the buildings when your map is flat.<br /> <br /> <br /> Remember, these are all basics every map should actually have, or should be thought about. This doesn't guarantee you will have an awesome map, but at least the basics are there so you are on the right track.<br /> <br /> ''by Major Pain''<br /> <br /> &lt;!-- layout --&gt;</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_4:_Scripting_Reference_-_Trace::BulletTrace&diff=16571 Call of Duty 4: Scripting Reference - Trace::BulletTrace 2012-02-21T02:30:37Z <p>CoDEmanX: </p> <hr /> <div>{{Function<br /> |Version=4<br /> |Name=BulletTrace( &amp;lt;start&amp;gt;, &amp;lt;end&amp;gt;, &amp;lt;hit characters&amp;gt;, &amp;lt;ignore entity&amp;gt; )<br /> |Module=Trace<br /> |Available<br /> |Summary=Allows script to do a point trace with MASK_SHOT. Returns hit position, hit entity, hit surface normal.<br /> |Call_on<br /> |Example=&lt;pre&gt;trace = BulletTrace( magicBulletOrigin.origin, eyePos, true, undefined );&lt;/pre&gt;<br /> |Required_args=<br /> # &amp;lt;start&amp;gt; The bullet start point<br /> # &amp;lt;end&amp;gt; The bullet end point<br /> # &amp;lt;hit characters&amp;gt; When set to true, this will trace for character hits<br /> # &amp;lt;ignore entity&amp;gt; An entity to ignore<br /> |Notes=*trace[&quot;position&quot;] is the hit position<br /> *trace[&quot;normal&quot;] is the normal vector of the hit surface<br /> *trace[&quot;entity&quot;] hit entity if there was one in the way<br /> *trace[&quot;surfacetype&quot;] holds the hit surface type e.g. wood or carpet<br /> *trace[&quot;fraction&quot;] tells the relative amount of travelled distance from start to end &lt;br&gt;(0 means it hit at starting position, 1 it either hit at end position or failed, 0.5 it travelled the half distance when it hit)<br /> }}</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty:_Create_Models_with_Blender_(without_Maya)&diff=16570 Call of Duty: Create Models with Blender (without Maya) 2012-02-18T21:51:02Z <p>CoDEmanX: </p> <hr /> <div>''By CoDEmanX and Flybynyt''<br /> <br /> Create models and animations for CoD using free Blender and Blender-CoD addon (without Maya)! <br /> <br /> =Introduction=<br /> <br /> The Call of Duty mod tools include plugins for the commercial 3d modelling software [http://usa.autodesk.com/maya/ Maya] by Autodesk (former Alias). It's an expansive application and not many modders want to or can afford it.<br /> <br /> Fortunately, you don't require it anymore to create models (static/rigged) and animations for CoD:<br /> <br /> <br /> =Blender-CoD Add-On=<br /> <br /> [http://code.google.com/p/blender-cod/ Blender-CoD] is a '''free''', '''open-source''' project and provides a plugin for the as well free and open-source '''3D modelling software''' [http://www.blender.org/ '''Blender''']. It adds support for XMODEL_EXPORT v5/v6 and XANIM_EXPORT v3 formats, which can be compiled to xmodels and xanims using the mod tools. All CoD titles are supported:<br /> <br /> *XMODEL_EXPORT v5 (vCoD, CoD:UO)<br /> *XMODEL_EXPORT v6 (CoD2-CoD7)<br /> *XANIM_EXPORT v3 (all)<br /> *NT_EXPORT (CoD5, CoD7)<br /> <br /> You can basically import any supported 3d model into Blender (e.g. Blender files, Wavefront OBJ, Collada DAE, 3ds Max 3DS and more), edit it and finally export it for CoD using the Blender-CoD Add-On.<br /> <br /> <br /> ==Project page==<br /> <br /> The project is hosted at Google Projects. You can:<br /> *submit bugs and feature requests on the [http://code.google.com/p/blender-cod/issues/list '''issue'''] section,<br /> *browse the code of the repository in the [http://code.google.com/p/blender-cod/source/browse/ '''source'''] section and<br /> *get the latest releases in the [http://code.google.com/p/blender-cod/downloads/list '''download'''] area<br /> <br /> <br /> Link: http://code.google.com/p/blender-cod/<br /> <br /> If you want to contribute to the project as a coder, file and issue or send a mail to &lt;code&gt;blender-cod AT online DOT de&lt;/code&gt;<br /> <br /> <br /> ==Releases==<br /> <br /> *16-Feb-12 | [http://code.google.com/p/blender-cod/downloads/detail?name=Blender-CoD_Addon_v0.3.3_alpha3.zip '''Blender-CoD Addon v0.3.3 (alpha 3)'''] for [http://www.blender.org/download/get-blender/ Blender 2.6x] and 2.59<br /> *25-Jan-12 | Blender-CoD Addon v0.3.2 (alpha 3)<br /> *29-Nov-11 | Blender-CoD Addon v0.3.1 (alpha 3)<br /> *22-Nov-11 | Blender-CoD Addon v0.3.0 (alpha 3)<br /> *09-Oct-11 | Blender-CoD Addon v0.2.3 (alpha 2)<br /> *29-Sep-11 | Blender-CoD Addon v0.2.2 (alpha 2)<br /> <br /> ==Features==<br /> <br /> '''XMODEL_EXPORT v5/v6'''<br /> *Supports mesh export with automatic triangulation<br /> *Armature export (bones)<br /> *Vertex colors (v6 only)<br /> *Mesh modifiers except Armature (optional)<br /> *Armature animation (poses) to xmodel sequences (&quot;Pose animation&quot;)<br /> *Adjustable minimum bone weight (optional)<br /> *Vertex clean-up (optional)<br /> *User Interface: File &gt; Export &gt; CoD Xmodel (.XMODEL_EXPORT)<br /> <br /> <br /> '''XANIM_EXPORT v3'''<br /> *Supports armature animation export<br /> *Frame range and framerate can be specified<br /> *Notetrack export (all CoD titles)<br /> *User Interface: File &gt; Export &gt; CoD Xanim (.XANIM_EXPORT)<br /> <br /> <br /> ==Installation==<br /> <br /> #Download the archive, but don't unzip it!<br /> #Start Blender<br /> #Click menu ''File &gt; User Preferences...''<br /> #Activate the ''Addons'' section<br /> #Ignore an already installed version, it will be overwritten by default <br /> #Click ''Install Add-On...'' button at the bottom<br /> #Double-click the archive<br /> #The following entry should be shown: ''Import-Export: CoD model/anim addon (version)''<br /> #Tick the checkbox on the right to enable it<br /> #Click ''Save As Default'' button at the bottom to enable it permanently<br /> #Use the newly available options of the File &gt; Export / File &gt; Import menu <br /> <br /> <br /> &lt;videoflash&gt;6SkHz7wrAA8&lt;/videoflash&gt;<br /> <br /> <br /> =Usage=<br /> <br /> [[File:Blender-CoD_HowTo_Materials.png|thumb|Photo-montage about how to use materials in Blender for Blender-CoD addon]]<br /> <br /> Make sure the model meets the following requirements:<br /> *Meshes must have at least 3 vertices,<br /> *1 face,<br /> *1 image material and<br /> *UV mapping (mesh was unwrapped)<br /> <br /> <br /> Basic video tutorial on how to use the addon: [[Call_of_Duty:_Blender_to_COD|Blender to CoD]]<br /> <br /> <br /> ==Blender Tutorials==<br /> <br /> *[http://www.blender.org/education-help/tutorials/ Official Blender.org tutorial page] (many good text and video tutorials)<br /> *[http://www.blenderguru.com/ BlenderGuru.com tutorials] (high quality video tutorials and blog)<br /> *[http://blenderartists.org/forum/forumdisplay.php?32-Tutorials BlenderArtists.org Forum tutorials]<br /> *[http://en.wikibooks.org/wiki/Blender_3D:_Tutorial_Links_List Wikibooks Blender tutorial list] (some may be outdated, look for Blender 2.5x tutorials)<br /> *[http://www.blendernation.com/category/education/tutorials/ BlenderNation.com tutorials]<br /> *[http://www.pixel2life.com/tutorials/blender_3d/ Pixel2Life.com Blender tutorials]<br /> *[http://www.tutorialized.com/tutorials/Blender-3d/1 Tutorialized.com Blender tutorials]<br /> <br /> <br /> [[Category:Call of Duty 1]]<br /> [[Category:Call of Duty 2]]<br /> [[Category:Call of Duty 4]]<br /> [[Category:Call of Duty 5]]<br /> [[Category:Call of Duty 7]]<br /> [[Category:Modtools]]<br /> [[Category:Advanced Editing]]<br /> [[Category:Modelling]]<br /> [[Category:Blender]]<br /> [[Category:Maya]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_8:_Multiplayer_Minimaps&diff=16569 Call of Duty 8: Multiplayer Minimaps 2012-02-18T03:21:15Z <p>CoDEmanX: </p> <hr /> <div>= Stock Multiplayer Minimaps =<br /> <br /> == Lockdown (mp_alpha)==<br /> <br /> [[File:compass_map_mp_alpha.png|400px]]<br /> <br /> == Bootleg (mp_bootleg) ==<br /> <br /> [[File:compass_map_mp_bootleg.png|400px]]<br /> <br /> == Mission (mp_bravo)==<br /> <br /> [[File:compass_map_mp_bravo.png|400px]]<br /> <br /> == Carbon (mp_carbon) ==<br /> <br /> [[File:compass_map_mp_carbon.png|400px]]<br /> <br /> == Dome (mp_dome) ==<br /> <br /> [[File:compass_map_mp_dome.png|400px]]<br /> <br /> == Downturn (mp_exchange)==<br /> <br /> [[File:compass_map_mp_exchange.png|400px]]<br /> <br /> == Hardhat (mp_hardhat) ==<br /> <br /> [[File:compass_map_mp_hardhat.png|400px]]<br /> <br /> == Interchange (mp_interchange)==<br /> <br /> [[File:compass_map_mp_interchange.png|400px]]<br /> <br /> == Fallen (mp_lambeth)==<br /> <br /> [[File:compass_map_mp_lambeth.png|400px]]<br /> <br /> == Bakaara (mp_mogadishu)==<br /> <br /> [[File:compass_map_mp_mogadishu.png|400px]]<br /> <br /> == Resistance (mp_paris)==<br /> <br /> [[File:compass_map_mp_paris.png|400px]]<br /> <br /> == Arkaden (mp_plaza2)==<br /> <br /> [[File:compass_map_mp_plaza2.png|400px]]<br /> <br /> == Outpost (mp_radar)==<br /> <br /> [[File:compass_map_mp_radar.png|400px]]<br /> <br /> == Seatown (mp_seatown) ==<br /> <br /> [[File:compass_map_mp_seatown.png|400px]]<br /> <br /> == Underground (mp_underground) ==<br /> <br /> [[File:compass_map_mp_underground.png|400px]]<br /> <br /> == Village (mp_village) ==<br /> <br /> [[File:compass_map_mp_village.png|400px]]<br /> <br /> [[Category:Call of Duty 8]]<br /> [[Category:Minimap]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Category:AssMan&diff=16567 Category:AssMan 2012-02-11T17:22:35Z <p>CoDEmanX: -spam</p> <hr /> <div></div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Import_a_custom_model&diff=16566 Call of Duty 5: Import a custom model 2012-02-11T13:29:34Z <p>CoDEmanX: </p> <hr /> <div>{{warning_forpro}}<br /> <br /> [[Image:Nutshell.png]] This tutorial will show you the basics of importing a new weapon model into CoD5. <br /> <br /> <br /> ==Setup of Plugins==<br /> <br /> ''(Not documented yet)''<br /> <br /> <br /> ==Prepare the model==<br /> <br /> # Create and skin your model in Maya 8.5.<br /> # Call of Duty is a Z up system so you may need to rotate your model. Chances are you will have to rotate on the X axis 90 degrees.<br /> # With your model selected goto “Color → Apply Color Options (Box)”.<br /> # Change “Color” to White and “Apply”.<br /> <br /> [[Image:CoD5_Custom_Model_Import_3.jpg]] [[Image:CoD5_Custom_Model_Import_4.jpg]]<br /> <br /> <br /> ==Export==<br /> <br /> # Open the Model Exporter, “Call of Duty: World at War ? Model Exporter”.<br /> # Click on “Add New Entry” and check the box to the left of “Entry1”.<br /> # To the right, click on “...” and select the file currently open and you want to export. <br /> # Click Yes to replace if asked.<br /> # Open “Window ? Outliner” and select everything (Ctrl Click) you want to export, meshes and bones if you have them. Once everything is selected click on “Set Exports”.<br /> # If you have bones then also select “Force Export Selected Joints”.<br /> # It should say “Successfully exported...” in Maya's console.<br /> <br /> [[Image:CoD5_Custom_Model_Import_1.jpg|800px]]<br /> <br /> <br /> ==Asset Manager==<br /> <br /> 1. Open Asset manager and make a new .gdt with your model's name.&lt;br&gt;<br /> 2. Setup your skin.&lt;br&gt;<br /> *a. Scroll down to material and click on New Entry. This is the same name as in your Maya phong.&lt;br&gt;<br /> *b. The only changes you should make from the default are:&lt;br&gt;<br /> **1. materialType / model phong&lt;br&gt;<br /> **2. surfaceType / &lt;none&gt;&lt;br&gt;<br /> **3. usage / &lt;not in editor&gt;&lt;br&gt;<br /> *c. Then select your skin.&lt;br&gt;<br /> **1. Color map is the image.&lt;br&gt;<br /> **2. Normal map is the bumps, white is high and black is low, uses entire greyscale.&lt;br&gt;<br /> **3. Detail normal map are tiny bumps when viewed very close.&lt;br&gt;<br /> **4. Specular color map is the shininess, white is full shine, black is no shine. [CoDEmanX: It's rather the reflection color texture]&lt;br&gt;<br /> **5. Cosine power map is modifications to the spec map, very rarely used. [CoDEmanX: This is actually the shininess texture]&lt;br&gt;<br /> 3. Save and Convert&lt;br&gt;<br /> *a. File → Save.&lt;br&gt;<br /> *b. Convert → Current Asset Only F10&lt;br&gt;<br /> 4. Setup your xmodel.&lt;br&gt;<br /> *a. Scroll down to “xmodel” and click on “New Entry”. You can name this whatever you want.&lt;br&gt;<br /> **1. type / rigid.&lt;br&gt;<br /> **2. filename / your_model_export_file.XMODEL_EXPORT&lt;br&gt;<br /> *b. This file is where your maya file is saved, move it to “CODWW'/model_export”.&lt;br&gt;<br /> ** CODWW is your installation directory.&lt;br&gt;<br /> **3. You can make more of the same model with less polys and export it separately for a lower LOD.&lt;br&gt;<br /> 5. Save and Convert.<br /> <br /> [[Image:CoD5_Custom_Model_Import_5.jpg|800px]]&lt;br&gt;&lt;br&gt;<br /> [[Image:CoD5_Custom_Model_Import_7.jpg|800px]]<br /> <br /> <br /> ==Viewing your new model==<br /> <br /> Goto CODWW/bin/asset_viewer.exe&lt;br&gt;<br /> Scroll down or search for your model and if it shows up then you have successfully exported your object.&lt;br&gt;<br /> If your object is too small or too big than you wanted then you will have to resize it in Maya and export again. 1 unit in Maya = 1 unit in Radiant.&lt;br&gt;<br /> To ship your map with the model then in your zone file add “xmodel,modelname”.&lt;br&gt;<br /> *Only “raw/images” has to be in your .iwd, even&lt;br&gt;<br /> There actually 6 files to your model if you send it off alone.&lt;br&gt;<br /> *Model:&lt;br&gt;<br /> **raw/xmodel&lt;br&gt;<br /> **raw/xmodelparts&lt;br&gt;<br /> **raw/xmodelsurfs&lt;br&gt;<br /> *Skin:&lt;br&gt;<br /> **raw/images&lt;br&gt;<br /> **raw/materials&lt;br&gt;<br /> **raw/material_properties&lt;br&gt;<br /> &lt;br&gt;[[Image:CoD5_Custom_Model_Import_2.jpg|800px]]<br /> <br /> <br /> Sources: [http://wiki.treyarch.com/wiki/Importing_A_Custom_Model Treyarch's Wiki]<br /> <br /> [[Category:Call of Duty 5]]<br /> [[Category:Modtools]]<br /> [[Category:Radiant]]<br /> [[Category:Advanced Editing]]<br /> [[Category:Modelling]]<br /> [[Category:Maya]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_8:_Console_Commands&diff=16530 Call of Duty 8: Console Commands 2012-02-07T15:00:31Z <p>CoDEmanX: </p> <hr /> <div>{{Note|This is a work in progress}}<br /> <br /> = Stock console Commands =<br /> <br /> &lt;pre&gt;<br /> status<br /> start_map_rotate<br /> sv_maprotation &quot;map rotation file&quot;<br /> dumpuser &quot;user name&quot;<br /> map &lt;map name&gt;<br /> gameOpt &lt;option name&gt; &lt;option value&gt;<br /> addip &lt;ip-mask&gt;<br /> sv removeip &lt;ip-mask&gt;<br /> set &lt;variable&gt; &lt;value&gt;<br /> seta &lt;variable&gt; &lt;value&gt;<br /> setfromdvar &lt;dest_dvar&gt; &lt;source_dvar&gt;<br /> reset &lt;variable&gt;<br /> ban &quot;player name&quot; &lt;optional reason&gt; (all = kick everyone)<br /> banClient &lt;client number&gt; &lt;optional reason&gt;<br /> unban &quot;player name&quot;<br /> &lt;/pre&gt;<br /> <br /> --[[User:Zeroy|Zeroy]] 12:56, 9 November 2011 (UTC)<br /> <br /> [[Category:Call of Duty 8]]<br /> [[Category:Technical Reference]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_8:_Default_Playlist&diff=16529 Call of Duty 8: Default Playlist 2012-02-07T15:00:12Z <p>CoDEmanX: </p> <hr /> <div>{{note|This article concerns the Map Rotation or &quot;playlist&quot; to be setup for Dedicated servers}}<br /> <br /> = Stock Playlist =<br /> <br /> &lt;pre&gt;<br /> ///////////////////////////////////////////////////////////////////////////<br /> ///////////Modern Warfare 3 dedicated server default playlist//////////////<br /> ///////////////////////////////////////////////////////////////////////////<br /> <br /> //format is <br /> //&lt;mapname&gt;, &lt;dsr filename&gt;, &lt;weight&gt;<br /> <br /> //&lt;mapname&gt;<br /> //valid mapnames:<br /> //*<br /> //mp_alpha<br /> //mp_bootleg<br /> //mp_bravo<br /> //mp_carbon<br /> //mp_dome<br /> //mp_exchange<br /> //mp_hardhat<br /> //mp_interchange<br /> //mp_lambeth<br /> //mp_mogadishu<br /> //mp_paris<br /> //mp_plaza2<br /> //mp_radar<br /> //mp_seatown<br /> //mp_underground<br /> //mp_village<br /> //&lt;dlc maps&gt; (included under '*')<br /> <br /> //dsr filename<br /> //name of recipe file without the dsr extension<br /> //included in this package are the following recipe defaults:<br /> //TDM_default (Team Deathmatch)<br /> //DOM_default (Domination)<br /> //CTF_default (Capture The Flag)<br /> //DZ_default (Drop Zone)<br /> //FFA_default (Free For All)<br /> //GG_default (Gun Game)<br /> //HQ_default (Headquarters)<br /> //INF_default (Infected)<br /> //JUG_default (Juggernaut)<br /> //KC_default (Kill Confirmed)<br /> //OIC_default (One In The Chamber)<br /> //SAB_default (Sabotage)<br /> //SD_default (Search and Destroy)<br /> //TDEF_default (Team Defender)<br /> //TJ_default (Team Juggernaut)<br /> <br /> // Weight (1-&gt;1000)<br /> // Selection is weighted random (higher weights increase selection chance)<br /> <br /> *,TDM_default,1<br /> mp_alpha,DOM_default,1<br /> mp_bootleg,DOM_default,1<br /> *,TDEF_default,1000<br /> mp_bravo,JUG_default,1<br /> &lt;/pre&gt;<br /> <br /> = Playlist Examples =<br /> <br /> * All maps, gametypes, randomized:<br /> <br /> &lt;pre&gt;<br /> ///////////////////////////////////////////////////////////////////////////<br /> ///////////Modern Warfare 3 dedicated server default playlist//////////////<br /> ///////////////////////////////////////////////////////////////////////////<br /> <br /> //TDM_default (Team Deathmatch)<br /> //DOM_default (Domination)<br /> //CTF_default (Capture The Flag)<br /> //DZ_default (Drop Zone)<br /> //FFA_default (Free For All)<br /> //GG_default (Gun Game)<br /> //HQ_default (Headquarters)<br /> //INF_default (Infected)<br /> //JUG_default (Juggernaut)<br /> //KC_default (Kill Confirmed)<br /> //OIC_default (One In The Chamber)<br /> //SAB_default (Sabotage)<br /> //SD_default (Search and Destroy)<br /> //TDEF_default (Team Defender)<br /> //TJ_default (Team Juggernaut)<br /> <br /> *,TDM_default,1000<br /> *,DOM_default,1000<br /> *,CTF_default,1000<br /> *,DZ_default,1000<br /> *,FFA_default,1000<br /> *,GG_default,1000<br /> *,HQ_default,1000<br /> *,INF_default,1000<br /> *,KC_default,1000<br /> *,OIC_default,1000<br /> *,SAB_default,1000<br /> *,SD_default,1000<br /> *,JUG_default,1000<br /> *,TDEF_default,1000<br /> *,TJ_default,1000<br /> &lt;/pre&gt;<br /> <br /> <br /> --[[User:Zeroy|Zeroy]] 13:09, 9 November 2011 (UTC)<br /> <br /> [[Category:Call of Duty 8]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_8:_Game_Options_List&diff=16528 Call of Duty 8: Game Options List 2012-02-07T15:00:04Z <p>CoDEmanX: </p> <hr /> <div>{{Note|This is a work in progress}}<br /> <br /> = GameOpt list =<br /> <br /> &lt;pre&gt;<br /> commonOption.allowCustomClasses &quot;1&quot; // [ 0, 1 ]<br /> commonOption.allowKillstreaks &quot;1&quot; // [ 0, 1 ]<br /> commonOption.allowPerks &quot;1&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.acog &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.akimbo &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.eotech &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.gl &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.gp25 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.grip &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.hamrhybrid &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.heartbeat &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.hybrid &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.m320 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.reflex &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.rof &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.shotgun &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.silencer &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.silencer02 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.silencer03 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.tactical &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.thermal &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.vzscope &quot;0&quot; // [ 0, 1 ]<br /> commonOption.attachmentRestricted.xmags &quot;0&quot; // [ 0, 1 ]<br /> commonOption.forceRespawn &quot;1&quot; // [ 0, 1 ]<br /> commonOption.forceThirdPersonView &quot;0&quot; // [ 0, 1 ]<br /> commonOption.friendlyFire &quot;0&quot; // [ 0, 1 ]<br /> commonOption.hardcoreModeOn &quot;0&quot; // [ 0, 1 ]<br /> commonOption.headshotsOnly &quot;0&quot; // [ 0, 1 ]<br /> commonOption.healthRegen &quot;5.0000&quot; // [ 5, 0-10 ]<br /> <br /> commonOption.killstreakClassRestricted.streaktype_assault &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakClassRestricted.streaktype_specialist &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakClassRestricted.streaktype_support &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted._specialty_blastshield_ks &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.ac130 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.airdrop_assault &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.airdrop_juggernaut &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.airdrop_juggernaut_recon &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.airdrop_remote_tank &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.airdrop_sentry_minigun &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.airdrop_trap &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.counter_uav &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.deployable_vest &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.emp &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.escort_airdrop &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.helicopter &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.helicopter_flares &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.ims &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.littlebird_flock &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.littlebird_support &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.osprey_gunner &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.precision_airstrike &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.predator_missile &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.remote_mg_turret &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.remote_mortar &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.remote_uav &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.sam_turret &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.specialty_autospot_ks &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.specialty_blindeye_ks &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.specialty_bulletaccuracy_ks &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.specialty_coldblooded_ks &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.specialty_detectexplosive_ks &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.specialty_fastreload_ks &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.specialty_hardline_ks &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.specialty_longersprint_ks &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.specialty_paint_ks &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.specialty_quickdraw_ks &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.specialty_quieter_ks &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.specialty_scavenger_ks &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.specialty_stalker_ks &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.stealth_airstrike &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.triple_uav &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.uav &quot;0&quot; // [ 0, 1 ]<br /> commonOption.killstreakRestricted.uav_support &quot;0&quot; // [ 0, 1 ]<br /> <br /> commonOption.maxHealth &quot;100.0000&quot; // [ 30, 50, 100, 200 ]<br /> commonOption.numLives &quot;0&quot; // [ 0, 1, 2, 3, 5, 9 ]<br /> <br /> commonOption.perkRestricted._specialty_blastshield &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.bouncingbetty_mp &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.c4_mp &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.claymore_mp &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.concussion_grenade_mp &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.emp_grenade_mp &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.flash_grenade_mp &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.frag_grenade_mp &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.semtex_mp &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.smoke_grenade_mp &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_autospot &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_blindeye &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_bling &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_bulletaccuracy &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_c4death &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_coldblooded &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_detectexplosive &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_fastermelee &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_fastreload &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_finalstand &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_grenadepulldeath &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_hardline &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_holdbreathwhileads &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_juiced &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_lightweight &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_longerrange &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_longersprint &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_marksman &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_moredamage &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_paint &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_portable_radar &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_quickdraw &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_quieter &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_reducedsway &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_revenge &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_scavenger &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_scrambler &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_sharp_focus &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_stalker &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_stopping_power &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_tacticalinsertion &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.specialty_twoprimaries &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.throwingknife_mp &quot;0&quot; // [ 0, 1 ]<br /> commonOption.perkRestricted.trophy_mp &quot;0&quot; // [ 0, 1 ]<br /> <br /> commonOption.radarAlwaysOn &quot;0&quot; // [ 0, 1 ]<br /> commonOption.respawnDelay &quot;0.0000&quot; // [ 0, 5, 7.5, 10, 15, 30 ]<br /> commonOption.scoreLimit &quot;3&quot; // [ 0, 1, 3, 4, 5, 8, 10, 12, 20, 24, 30, 50, 100, 200, 250, 500, 750, 1000, 1500, 2500, 3000, 5000, 7000, 7500, 10000, 15000 ]<br /> commonOption.showKillcam &quot;1&quot; // [ 0, 1 ]<br /> commonOption.spectateModeAllowed &quot;2&quot; // [ 0, 1, 2 ]<br /> commonOption.timeLimit &quot;5.0000&quot; // [ 0-30 ]<br /> commonOption.waveRespawnDelay &quot;10&quot; // [ 0, 5, 10, 15, 30 ]<br /> <br /> commonOption.weaponRestricted.iw5_1887 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_44magnum &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_aa12 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_acr &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_ak47 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_as50 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_barrett &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_cm901 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_deserteagle &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_dragunov &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_fad &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_fmg9 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_fnfiveseven &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_g18 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_g36c &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_ksg &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_l96a1 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_m16 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_m4 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_m60 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_m9 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_mg36 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_mk14 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_mk46 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_mp412 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_mp5 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_mp7 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_mp9 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_msr &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_p90 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_p99 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_pecheneg &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_pp90m1 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_rsass &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_sa80 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_scar &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_skorpion &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_smaw &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_spas12 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_striker &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_type95 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_ump45 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_usas12 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.iw5_usp45 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.javelin &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.m320 &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.riotshield &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.rpg &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.stinger &quot;0&quot; // [ 0, 1 ]<br /> commonOption.weaponRestricted.xm25 &quot;0&quot; // [ 0, 1 ]<br /> <br /> defaultClasses.allies.[0].class.assaultStreaks.[0] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[0].class.assaultStreaks.[1] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[0].class.assaultStreaks.[2] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[0].class.deathstreak &quot;specialty_null&quot; // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ]<br /> defaultClasses.allies.[0].class.defenseStreaks.[0] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[0].class.defenseStreaks.[1] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[0].class.defenseStreaks.[2] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[0].class.inUse &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[0].class.name &quot;&quot;<br /> defaultClasses.allies.[0].class.perks.[0] &quot;specialty_null&quot; // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ]<br /> defaultClasses.allies.[0].class.perks.[1] &quot;specialty_null&quot; // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ]<br /> defaultClasses.allies.[0].class.perks.[2] &quot;specialty_null&quot; // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ]<br /> defaultClasses.allies.[0].class.perks.[3] &quot;specialty_null&quot; // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ]<br /> defaultClasses.allies.[0].class.perks.[5] &quot;specialty_null&quot; // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ]<br /> defaultClasses.allies.[0].class.perks.[6] &quot;specialty_null&quot; // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ]<br /> defaultClasses.allies.[0].class.specialistStreakKills.[0] &quot;2&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[0].class.specialistStreakKills.[1] &quot;4&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[0].class.specialistStreakKills.[2] &quot;6&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[0].class.specialistStreaks.[0] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[0].class.specialistStreaks.[1] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[0].class.specialistStreaks.[2] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[0].class.specialistStreaksBeenPicked &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[0].class.weaponSetups.[0].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[0].class.weaponSetups.[0].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[0].class.weaponSetups.[0].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.allies.[0].class.weaponSetups.[0].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.allies.[0].class.weaponSetups.[0].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.allies.[0].class.weaponSetups.[0].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.allies.[0].class.weaponSetups.[1].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[0].class.weaponSetups.[1].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[0].class.weaponSetups.[1].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.allies.[0].class.weaponSetups.[1].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.allies.[0].class.weaponSetups.[1].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.allies.[0].class.weaponSetups.[1].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.allies.[0].juggernaut &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[1].class.assaultStreaks.[0] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[1].class.assaultStreaks.[1] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[1].class.assaultStreaks.[2] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[1].class.deathstreak &quot;specialty_null&quot; // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ]<br /> defaultClasses.allies.[1].class.defenseStreaks.[0] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[1].class.defenseStreaks.[1] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[1].class.defenseStreaks.[2] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[1].class.inUse &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[1].class.name &quot;&quot;<br /> defaultClasses.allies.[1].class.perks.[0] &quot;specialty_null&quot; // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ]<br /> defaultClasses.allies.[1].class.perks.[1] &quot;specialty_null&quot; // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ]<br /> defaultClasses.allies.[1].class.perks.[2] &quot;specialty_null&quot; // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ]<br /> defaultClasses.allies.[1].class.perks.[3] &quot;specialty_null&quot; // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ]<br /> defaultClasses.allies.[1].class.perks.[5] &quot;specialty_null&quot; // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ]<br /> defaultClasses.allies.[1].class.perks.[6] &quot;specialty_null&quot; // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ]<br /> defaultClasses.allies.[1].class.specialistStreakKills.[0] &quot;2&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[1].class.specialistStreakKills.[1] &quot;4&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[1].class.specialistStreakKills.[2] &quot;6&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[1].class.specialistStreaks.[0] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[1].class.specialistStreaks.[1] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[1].class.specialistStreaks.[2] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[1].class.specialistStreaksBeenPicked &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[1].class.weaponSetups.[0].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[1].class.weaponSetups.[0].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[1].class.weaponSetups.[0].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.allies.[1].class.weaponSetups.[0].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.allies.[1].class.weaponSetups.[0].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.allies.[1].class.weaponSetups.[0].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.allies.[1].class.weaponSetups.[1].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[1].class.weaponSetups.[1].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[1].class.weaponSetups.[1].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.allies.[1].class.weaponSetups.[1].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.allies.[1].class.weaponSetups.[1].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.allies.[1].class.weaponSetups.[1].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.allies.[1].juggernaut &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[2].class.assaultStreaks.[0] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[2].class.assaultStreaks.[1] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[2].class.assaultStreaks.[2] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[2].class.deathstreak &quot;specialty_null&quot; // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ]<br /> defaultClasses.allies.[2].class.defenseStreaks.[0] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[2].class.defenseStreaks.[1] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[2].class.defenseStreaks.[2] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[2].class.inUse &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[2].class.name &quot;&quot;<br /> defaultClasses.allies.[2].class.perks.[0] &quot;specialty_null&quot; // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ]<br /> defaultClasses.allies.[2].class.perks.[1] &quot;specialty_null&quot; // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ]<br /> defaultClasses.allies.[2].class.perks.[2] &quot;specialty_null&quot; // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ]<br /> defaultClasses.allies.[2].class.perks.[3] &quot;specialty_null&quot; // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ]<br /> defaultClasses.allies.[2].class.perks.[5] &quot;specialty_null&quot; // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ]<br /> defaultClasses.allies.[2].class.perks.[6] &quot;specialty_null&quot; // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ]<br /> defaultClasses.allies.[2].class.specialistStreakKills.[0] &quot;2&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[2].class.specialistStreakKills.[1] &quot;4&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[2].class.specialistStreakKills.[2] &quot;6&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[2].class.specialistStreaks.[0] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[2].class.specialistStreaks.[1] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[2].class.specialistStreaks.[2] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[2].class.specialistStreaksBeenPicked &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[2].class.weaponSetups.[0].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[2].class.weaponSetups.[0].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[2].class.weaponSetups.[0].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.allies.[2].class.weaponSetups.[0].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.allies.[2].class.weaponSetups.[0].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.allies.[2].class.weaponSetups.[0].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.allies.[2].class.weaponSetups.[1].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[2].class.weaponSetups.[1].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[2].class.weaponSetups.[1].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.allies.[2].class.weaponSetups.[1].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.allies.[2].class.weaponSetups.[1].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.allies.[2].class.weaponSetups.[1].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.allies.[2].juggernaut &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[3].class.assaultStreaks.[0] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[3].class.assaultStreaks.[1] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[3].class.assaultStreaks.[2] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[3].class.deathstreak &quot;specialty_null&quot; // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ]<br /> defaultClasses.allies.[3].class.defenseStreaks.[0] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[3].class.defenseStreaks.[1] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[3].class.defenseStreaks.[2] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[3].class.inUse &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[3].class.name &quot;&quot;<br /> defaultClasses.allies.[3].class.perks.[0] &quot;specialty_null&quot; // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ]<br /> defaultClasses.allies.[3].class.perks.[1] &quot;specialty_null&quot; // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ]<br /> defaultClasses.allies.[3].class.perks.[2] &quot;specialty_null&quot; // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ]<br /> defaultClasses.allies.[3].class.perks.[3] &quot;specialty_null&quot; // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ]<br /> defaultClasses.allies.[3].class.perks.[5] &quot;specialty_null&quot; // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ]<br /> defaultClasses.allies.[3].class.perks.[6] &quot;specialty_null&quot; // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ]<br /> defaultClasses.allies.[3].class.specialistStreakKills.[0] &quot;2&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[3].class.specialistStreakKills.[1] &quot;4&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[3].class.specialistStreakKills.[2] &quot;6&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[3].class.specialistStreaks.[0] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[3].class.specialistStreaks.[1] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[3].class.specialistStreaks.[2] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[3].class.specialistStreaksBeenPicked &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[3].class.weaponSetups.[0].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[3].class.weaponSetups.[0].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[3].class.weaponSetups.[0].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.allies.[3].class.weaponSetups.[0].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.allies.[3].class.weaponSetups.[0].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.allies.[3].class.weaponSetups.[0].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.allies.[3].class.weaponSetups.[1].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[3].class.weaponSetups.[1].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[3].class.weaponSetups.[1].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.allies.[3].class.weaponSetups.[1].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.allies.[3].class.weaponSetups.[1].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.allies.[3].class.weaponSetups.[1].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.allies.[3].juggernaut &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[4].class.assaultStreaks.[0] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[4].class.assaultStreaks.[1] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[4].class.assaultStreaks.[2] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[4].class.deathstreak &quot;specialty_null&quot; // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ]<br /> defaultClasses.allies.[4].class.defenseStreaks.[0] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[4].class.defenseStreaks.[1] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[4].class.defenseStreaks.[2] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[4].class.inUse &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[4].class.name &quot;&quot;<br /> defaultClasses.allies.[4].class.perks.[0] &quot;specialty_null&quot; // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ]<br /> defaultClasses.allies.[4].class.perks.[1] &quot;specialty_null&quot; // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ]<br /> defaultClasses.allies.[4].class.perks.[2] &quot;specialty_null&quot; // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ]<br /> defaultClasses.allies.[4].class.perks.[3] &quot;specialty_null&quot; // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ]<br /> defaultClasses.allies.[4].class.perks.[5] &quot;specialty_null&quot; // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ]<br /> defaultClasses.allies.[4].class.perks.[6] &quot;specialty_null&quot; // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ]<br /> defaultClasses.allies.[4].class.specialistStreakKills.[0] &quot;2&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[4].class.specialistStreakKills.[1] &quot;4&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[4].class.specialistStreakKills.[2] &quot;6&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[4].class.specialistStreaks.[0] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[4].class.specialistStreaks.[1] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[4].class.specialistStreaks.[2] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[4].class.specialistStreaksBeenPicked &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[4].class.weaponSetups.[0].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[4].class.weaponSetups.[0].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[4].class.weaponSetups.[0].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.allies.[4].class.weaponSetups.[0].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.allies.[4].class.weaponSetups.[0].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.allies.[4].class.weaponSetups.[0].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.allies.[4].class.weaponSetups.[1].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[4].class.weaponSetups.[1].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[4].class.weaponSetups.[1].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.allies.[4].class.weaponSetups.[1].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.allies.[4].class.weaponSetups.[1].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.allies.[4].class.weaponSetups.[1].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.allies.[4].juggernaut &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[5].class.assaultStreaks.[0] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[5].class.assaultStreaks.[1] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[5].class.assaultStreaks.[2] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.allies.[5].class.deathstreak &quot;specialty_null&quot; // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ]<br /> defaultClasses.allies.[5].class.defenseStreaks.[0] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[5].class.defenseStreaks.[1] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[5].class.defenseStreaks.[2] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.allies.[5].class.inUse &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[5].class.name &quot;&quot;<br /> defaultClasses.allies.[5].class.perks.[0] &quot;specialty_null&quot; // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ]<br /> defaultClasses.allies.[5].class.perks.[1] &quot;specialty_null&quot; // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ]<br /> defaultClasses.allies.[5].class.perks.[2] &quot;specialty_null&quot; // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ]<br /> defaultClasses.allies.[5].class.perks.[3] &quot;specialty_null&quot; // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ]<br /> defaultClasses.allies.[5].class.perks.[5] &quot;specialty_null&quot; // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ]<br /> defaultClasses.allies.[5].class.perks.[6] &quot;specialty_null&quot; // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ]<br /> defaultClasses.allies.[5].class.specialistStreakKills.[0] &quot;2&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[5].class.specialistStreakKills.[1] &quot;4&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[5].class.specialistStreakKills.[2] &quot;6&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.allies.[5].class.specialistStreaks.[0] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[5].class.specialistStreaks.[1] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[5].class.specialistStreaks.[2] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.allies.[5].class.specialistStreaksBeenPicked &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.allies.[5].class.weaponSetups.[0].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[5].class.weaponSetups.[0].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[5].class.weaponSetups.[0].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.allies.[5].class.weaponSetups.[0].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.allies.[5].class.weaponSetups.[0].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.allies.[5].class.weaponSetups.[0].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.allies.[5].class.weaponSetups.[1].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[5].class.weaponSetups.[1].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.allies.[5].class.weaponSetups.[1].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.allies.[5].class.weaponSetups.[1].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.allies.[5].class.weaponSetups.[1].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.allies.[5].class.weaponSetups.[1].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.allies.[5].juggernaut &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[0].class.assaultStreaks.[0] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[0].class.assaultStreaks.[1] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[0].class.assaultStreaks.[2] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[0].class.deathstreak &quot;specialty_null&quot; // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ]<br /> defaultClasses.axis.[0].class.defenseStreaks.[0] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[0].class.defenseStreaks.[1] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[0].class.defenseStreaks.[2] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[0].class.inUse &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[0].class.name &quot;&quot;<br /> defaultClasses.axis.[0].class.perks.[0] &quot;specialty_null&quot; // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ]<br /> defaultClasses.axis.[0].class.perks.[1] &quot;specialty_null&quot; // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ]<br /> defaultClasses.axis.[0].class.perks.[2] &quot;specialty_null&quot; // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ]<br /> defaultClasses.axis.[0].class.perks.[3] &quot;specialty_null&quot; // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ]<br /> defaultClasses.axis.[0].class.perks.[5] &quot;specialty_null&quot; // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ]<br /> defaultClasses.axis.[0].class.perks.[6] &quot;specialty_null&quot; // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ]<br /> defaultClasses.axis.[0].class.specialistStreakKills.[0] &quot;2&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[0].class.specialistStreakKills.[1] &quot;4&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[0].class.specialistStreakKills.[2] &quot;6&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[0].class.specialistStreaks.[0] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[0].class.specialistStreaks.[1] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[0].class.specialistStreaks.[2] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[0].class.specialistStreaksBeenPicked &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[0].class.weaponSetups.[0].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[0].class.weaponSetups.[0].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[0].class.weaponSetups.[0].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.axis.[0].class.weaponSetups.[0].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.axis.[0].class.weaponSetups.[0].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.axis.[0].class.weaponSetups.[0].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.axis.[0].class.weaponSetups.[1].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[0].class.weaponSetups.[1].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[0].class.weaponSetups.[1].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.axis.[0].class.weaponSetups.[1].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.axis.[0].class.weaponSetups.[1].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.axis.[0].class.weaponSetups.[1].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.axis.[0].juggernaut &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[1].class.assaultStreaks.[0] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[1].class.assaultStreaks.[1] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[1].class.assaultStreaks.[2] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[1].class.deathstreak &quot;specialty_null&quot; // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ]<br /> defaultClasses.axis.[1].class.defenseStreaks.[0] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[1].class.defenseStreaks.[1] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[1].class.defenseStreaks.[2] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[1].class.inUse &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[1].class.name &quot;&quot;<br /> defaultClasses.axis.[1].class.perks.[0] &quot;specialty_null&quot; // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ]<br /> defaultClasses.axis.[1].class.perks.[1] &quot;specialty_null&quot; // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ]<br /> defaultClasses.axis.[1].class.perks.[2] &quot;specialty_null&quot; // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ]<br /> defaultClasses.axis.[1].class.perks.[3] &quot;specialty_null&quot; // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ]<br /> defaultClasses.axis.[1].class.perks.[5] &quot;specialty_null&quot; // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ]<br /> defaultClasses.axis.[1].class.perks.[6] &quot;specialty_null&quot; // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ]<br /> defaultClasses.axis.[1].class.specialistStreakKills.[0] &quot;2&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[1].class.specialistStreakKills.[1] &quot;4&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[1].class.specialistStreakKills.[2] &quot;6&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[1].class.specialistStreaks.[0] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[1].class.specialistStreaks.[1] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[1].class.specialistStreaks.[2] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[1].class.specialistStreaksBeenPicked &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[1].class.weaponSetups.[0].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[1].class.weaponSetups.[0].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[1].class.weaponSetups.[0].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.axis.[1].class.weaponSetups.[0].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.axis.[1].class.weaponSetups.[0].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.axis.[1].class.weaponSetups.[0].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.axis.[1].class.weaponSetups.[1].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[1].class.weaponSetups.[1].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[1].class.weaponSetups.[1].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.axis.[1].class.weaponSetups.[1].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.axis.[1].class.weaponSetups.[1].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.axis.[1].class.weaponSetups.[1].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.axis.[1].juggernaut &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[2].class.assaultStreaks.[0] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[2].class.assaultStreaks.[1] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[2].class.assaultStreaks.[2] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[2].class.deathstreak &quot;specialty_null&quot; // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ]<br /> defaultClasses.axis.[2].class.defenseStreaks.[0] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[2].class.defenseStreaks.[1] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[2].class.defenseStreaks.[2] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[2].class.inUse &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[2].class.name &quot;&quot;<br /> defaultClasses.axis.[2].class.perks.[0] &quot;specialty_null&quot; // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ]<br /> defaultClasses.axis.[2].class.perks.[1] &quot;specialty_null&quot; // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ]<br /> defaultClasses.axis.[2].class.perks.[2] &quot;specialty_null&quot; // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ]<br /> defaultClasses.axis.[2].class.perks.[3] &quot;specialty_null&quot; // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ]<br /> defaultClasses.axis.[2].class.perks.[5] &quot;specialty_null&quot; // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ]<br /> defaultClasses.axis.[2].class.perks.[6] &quot;specialty_null&quot; // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ]<br /> defaultClasses.axis.[2].class.specialistStreakKills.[0] &quot;2&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[2].class.specialistStreakKills.[1] &quot;4&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[2].class.specialistStreakKills.[2] &quot;6&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[2].class.specialistStreaks.[0] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[2].class.specialistStreaks.[1] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[2].class.specialistStreaks.[2] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[2].class.specialistStreaksBeenPicked &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[2].class.weaponSetups.[0].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[2].class.weaponSetups.[0].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[2].class.weaponSetups.[0].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.axis.[2].class.weaponSetups.[0].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.axis.[2].class.weaponSetups.[0].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.axis.[2].class.weaponSetups.[0].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.axis.[2].class.weaponSetups.[1].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[2].class.weaponSetups.[1].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[2].class.weaponSetups.[1].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.axis.[2].class.weaponSetups.[1].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.axis.[2].class.weaponSetups.[1].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.axis.[2].class.weaponSetups.[1].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.axis.[2].juggernaut &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[3].class.assaultStreaks.[0] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[3].class.assaultStreaks.[1] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[3].class.assaultStreaks.[2] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[3].class.deathstreak &quot;specialty_null&quot; // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ]<br /> defaultClasses.axis.[3].class.defenseStreaks.[0] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[3].class.defenseStreaks.[1] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[3].class.defenseStreaks.[2] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[3].class.inUse &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[3].class.name &quot;&quot;<br /> defaultClasses.axis.[3].class.perks.[0] &quot;specialty_null&quot; // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ]<br /> defaultClasses.axis.[3].class.perks.[1] &quot;specialty_null&quot; // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ]<br /> defaultClasses.axis.[3].class.perks.[2] &quot;specialty_null&quot; // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ]<br /> defaultClasses.axis.[3].class.perks.[3] &quot;specialty_null&quot; // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ]<br /> defaultClasses.axis.[3].class.perks.[5] &quot;specialty_null&quot; // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ]<br /> defaultClasses.axis.[3].class.perks.[6] &quot;specialty_null&quot; // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ]<br /> defaultClasses.axis.[3].class.specialistStreakKills.[0] &quot;2&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[3].class.specialistStreakKills.[1] &quot;4&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[3].class.specialistStreakKills.[2] &quot;6&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[3].class.specialistStreaks.[0] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[3].class.specialistStreaks.[1] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[3].class.specialistStreaks.[2] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[3].class.specialistStreaksBeenPicked &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[3].class.weaponSetups.[0].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[3].class.weaponSetups.[0].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[3].class.weaponSetups.[0].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.axis.[3].class.weaponSetups.[0].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.axis.[3].class.weaponSetups.[0].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.axis.[3].class.weaponSetups.[0].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.axis.[3].class.weaponSetups.[1].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[3].class.weaponSetups.[1].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[3].class.weaponSetups.[1].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.axis.[3].class.weaponSetups.[1].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.axis.[3].class.weaponSetups.[1].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.axis.[3].class.weaponSetups.[1].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.axis.[3].juggernaut &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[4].class.assaultStreaks.[0] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[4].class.assaultStreaks.[1] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[4].class.assaultStreaks.[2] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[4].class.deathstreak &quot;specialty_null&quot; // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ]<br /> defaultClasses.axis.[4].class.defenseStreaks.[0] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[4].class.defenseStreaks.[1] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[4].class.defenseStreaks.[2] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[4].class.inUse &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[4].class.name &quot;&quot;<br /> defaultClasses.axis.[4].class.perks.[0] &quot;specialty_null&quot; // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ]<br /> defaultClasses.axis.[4].class.perks.[1] &quot;specialty_null&quot; // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ]<br /> defaultClasses.axis.[4].class.perks.[2] &quot;specialty_null&quot; // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ]<br /> defaultClasses.axis.[4].class.perks.[3] &quot;specialty_null&quot; // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ]<br /> defaultClasses.axis.[4].class.perks.[5] &quot;specialty_null&quot; // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ]<br /> defaultClasses.axis.[4].class.perks.[6] &quot;specialty_null&quot; // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ]<br /> defaultClasses.axis.[4].class.specialistStreakKills.[0] &quot;2&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[4].class.specialistStreakKills.[1] &quot;4&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[4].class.specialistStreakKills.[2] &quot;6&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[4].class.specialistStreaks.[0] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[4].class.specialistStreaks.[1] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[4].class.specialistStreaks.[2] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[4].class.specialistStreaksBeenPicked &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[4].class.weaponSetups.[0].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[4].class.weaponSetups.[0].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[4].class.weaponSetups.[0].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.axis.[4].class.weaponSetups.[0].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.axis.[4].class.weaponSetups.[0].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.axis.[4].class.weaponSetups.[0].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.axis.[4].class.weaponSetups.[1].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[4].class.weaponSetups.[1].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[4].class.weaponSetups.[1].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.axis.[4].class.weaponSetups.[1].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.axis.[4].class.weaponSetups.[1].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.axis.[4].class.weaponSetups.[1].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.axis.[4].juggernaut &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[5].class.assaultStreaks.[0] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[5].class.assaultStreaks.[1] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[5].class.assaultStreaks.[2] &quot;none&quot; // [ none, uav, airdrop_assault, ims, predator_missile, airdrop_sentry_minigun, precision_airstrike, helicopter, littlebird_flock, littlebird_support, remote_mortar, airdrop_remote_tank, ac130, helicopter_flares, airdrop_juggernaut, osprey_gunner ]<br /> defaultClasses.axis.[5].class.deathstreak &quot;specialty_null&quot; // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ]<br /> defaultClasses.axis.[5].class.defenseStreaks.[0] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[5].class.defenseStreaks.[1] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[5].class.defenseStreaks.[2] &quot;none&quot; // [ none, uav_support, counter_uav, deployable_vest, sam_turret, remote_uav, airdrop_trap, triple_uav, remote_mg_turret, emp, stealth_airstrike, airdrop_juggernaut_recon, escort_airdrop ]<br /> defaultClasses.axis.[5].class.inUse &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[5].class.name &quot;&quot;<br /> defaultClasses.axis.[5].class.perks.[0] &quot;specialty_null&quot; // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ]<br /> defaultClasses.axis.[5].class.perks.[1] &quot;specialty_null&quot; // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ]<br /> defaultClasses.axis.[5].class.perks.[2] &quot;specialty_null&quot; // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ]<br /> defaultClasses.axis.[5].class.perks.[3] &quot;specialty_null&quot; // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ]<br /> defaultClasses.axis.[5].class.perks.[5] &quot;specialty_null&quot; // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ]<br /> defaultClasses.axis.[5].class.perks.[6] &quot;specialty_null&quot; // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ]<br /> defaultClasses.axis.[5].class.specialistStreakKills.[0] &quot;2&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[5].class.specialistStreakKills.[1] &quot;4&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[5].class.specialistStreakKills.[2] &quot;6&quot; // [ 2, 3, 4, 5, 6, 7, 8, 9 ]<br /> defaultClasses.axis.[5].class.specialistStreaks.[0] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[5].class.specialistStreaks.[1] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[5].class.specialistStreaks.[2] &quot;none&quot; // [ none, specialty_longersprint_ks, specialty_fastreload_ks, specialty_scavenger_ks, specialty_blindeye_ks, specialty_paint_ks, specialty_hardline_ks, specialty_coldblooded_ks, specialty_quickdraw_ks, _specialty_blastshield_ks, specialty_detectexplosive_ks, specialty_autospot_ks, specialty_bulletaccuracy_ks, specialty_quieter_ks, specialty_stalker_ks ]<br /> defaultClasses.axis.[5].class.specialistStreaksBeenPicked &quot;0&quot; // [ 0, 1 ]<br /> defaultClasses.axis.[5].class.weaponSetups.[0].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[5].class.weaponSetups.[0].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[5].class.weaponSetups.[0].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.axis.[5].class.weaponSetups.[0].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.axis.[5].class.weaponSetups.[0].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.axis.[5].class.weaponSetups.[0].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.axis.[5].class.weaponSetups.[1].attachment.[0] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[5].class.weaponSetups.[1].attachment.[1] &quot;none&quot; // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ]<br /> defaultClasses.axis.[5].class.weaponSetups.[1].buff &quot;specialty_null&quot; // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ]<br /> defaultClasses.axis.[5].class.weaponSetups.[1].camo &quot;none&quot; // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ]<br /> defaultClasses.axis.[5].class.weaponSetups.[1].reticle &quot;none&quot; // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ]<br /> defaultClasses.axis.[5].class.weaponSetups.[1].weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, <br /> iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, stinger, iw5_smaw, m320, riotshield, xm25 ]<br /> defaultClasses.axis.[5].juggernaut &quot;0&quot; // [ 0, 1 ]<br /> <br /> demData.bombTimer &quot;0&quot; // [ 0-120 ]<br /> demData.defuseTime &quot;0.0000&quot; // [ 0-10 ]<br /> demData.extraTime &quot;0.0000&quot; // [ 0-5 ]<br /> demData.plantTime &quot;0.0000&quot; // [ 0-10 ]<br /> demData.roundSwitch &quot;0&quot; // [ 0, 1, 2, 3, 4 ]<br /> <br /> grndData.dropTime &quot;0.0000&quot; // [ 0-120 ]<br /> grndData.zoneSwitchTime &quot;0.0000&quot; // [ 0-5 ]<br /> <br /> gunData.guns.[0] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[1] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[2] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[3] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[4] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[5] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[6] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[7] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[8] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[9] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[10] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[11] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[12] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[13] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[14] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[15] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[16] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[17] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[18] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> gunData.guns.[19] &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, <br /> iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, riotshield, xm25 ]<br /> <br /> gunData.numGuns &quot;0&quot; // [ 0-20 ]<br /> gunData.randomize &quot;0&quot; // [ 0, 1 ]<br /> <br /> hqData.HQActivateDelay &quot;0&quot; // [ 0-60 ]<br /> hqData.HQLifetime &quot;0&quot; // [ 0-120 ]<br /> <br /> infectData.numInitialInfected &quot;0&quot; // [ 0-9 ]<br /> <br /> juggData.respawnNewJugg &quot;0&quot; // [ 0, 1 ]<br /> juggData.showJuggRadarIcon &quot;0&quot; // [ 0, 1 ]<br /> juggData.showJuggWorldIcon &quot;0&quot; // [ 0, 1 ]<br /> juggData.useJuggTimeLimit &quot;0&quot;<br /> <br /> oicData.initialAmmoCount &quot;0&quot; // [ 1, 0-15 ]<br /> oicData.killRewardAmmoCount &quot;0&quot; // [ 1, 0-15 ]<br /> oicData.oneShotKill &quot;0&quot; // [ 0, 1 ]<br /> oicData.weapon &quot;none&quot; // [ none, iw5_usp45, iw5_mp412, iw5_44magnum, iw5_deserteagle, iw5_p99, iw5_fnfiveseven, iw5_acr, iw5_type95, iw5_m4, iw5_ak47, iw5_m16, iw5_mk14, iw5_g36c, iw5_scar, iw5_fad, <br /> iw5_cm901, iw5_mp5, iw5_m9, iw5_p90, iw5_pp90m1, iw5_ump45, iw5_mp7, iw5_fmg9, iw5_g18, iw5_mp9, iw5_skorpion, iw5_spas12, iw5_aa12, iw5_striker, iw5_1887, iw5_usas12, iw5_ksg, iw5_m60, iw5_mk46, iw5_pecheneg, iw5_sa80, iw5_mg36, iw5_barrett, iw5_msr, iw5_rsass, iw5_dragunov, iw5_as50, iw5_l96a1, rpg, javelin, iw5_smaw, m320, xm25 ]<br /> <br /> sabData.bombTimer &quot;0&quot; // [ 5, 0-120 ]<br /> sabData.defuseTime &quot;0.0000&quot; // [ 5, 0-10 ]<br /> sabData.plantTime &quot;0.0000&quot; // [ 1, 0-10 ]<br /> sabData.sharedBombTimer &quot;0&quot; // [ 0, 1 ]<br /> sdData.bombTimer &quot;0&quot; // [ 0-60 ]<br /> sdData.defuseTime &quot;0.0000&quot; // [ 0-10 ]<br /> sdData.multiBomb &quot;0&quot; // [ 0, 1 ]<br /> sdData.plantTime &quot;0.0000&quot; // [ 0-10 ]<br /> sdData.roundLength &quot;0.0000&quot; // [ 0-10 ]<br /> sdData.roundSwitch &quot;0&quot; // [ 0-4 ]<br /> tdefData.enemyFlagRadar &quot;0&quot; // [ 0, 1 ]<br /> tjuggData.juggSwitchTime &quot;0.0000&quot; // [ 0-120 ]<br /> &lt;/pre&gt;<br /> <br /> --[[User:Zeroy|Zeroy]] 12:56, 9 November 2011 (UTC)<br /> <br /> [[Category:Call of Duty 8]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_8:_Multiplayer_Minimaps&diff=16527 Call of Duty 8: Multiplayer Minimaps 2012-02-07T14:59:34Z <p>CoDEmanX: </p> <hr /> <div>= Stock Multiplayer Minimaps =<br /> <br /> == Lockdown ==<br /> <br /> [[File:compass_map_mp_alpha.png|400px]]<br /> <br /> == Bootleg (mp_bootleg) ==<br /> <br /> [[File:compass_map_mp_bootleg.png|400px]]<br /> <br /> == Mission ==<br /> <br /> [[File:compass_map_mp_bravo.png|400px]]<br /> <br /> == Carbon (mp_carbon) ==<br /> <br /> [[File:compass_map_mp_carbon.png|400px]]<br /> <br /> == Dome (mp_dome) ==<br /> <br /> [[File:compass_map_mp_dome.png|400px]]<br /> <br /> == Downturn ==<br /> <br /> [[File:compass_map_mp_exchange.png|400px]]<br /> <br /> == Hardhat (mp_hardhat) ==<br /> <br /> [[File:compass_map_mp_hardhat.png|400px]]<br /> <br /> == Interchange ==<br /> <br /> [[File:compass_map_mp_interchange.png|400px]]<br /> <br /> == Fallen ==<br /> <br /> [[File:compass_map_mp_lambeth.png|400px]]<br /> <br /> == Bakaara ==<br /> <br /> [[File:compass_map_mp_mogadishu.png|400px]]<br /> <br /> == Resistance ==<br /> <br /> [[File:compass_map_mp_paris.png|400px]]<br /> <br /> == Arkaden ==<br /> <br /> [[File:compass_map_mp_plaza2.png|400px]]<br /> <br /> == Outpost ==<br /> <br /> [[File:compass_map_mp_radar.png|400px]]<br /> <br /> == Seatown (mp_seatown) ==<br /> <br /> [[File:compass_map_mp_seatown.png|400px]]<br /> <br /> == Underground (mp_underground) ==<br /> <br /> [[File:compass_map_mp_underground.png|400px]]<br /> <br /> == Village (mp_village) ==<br /> <br /> [[File:compass_map_mp_village.png|400px]]<br /> <br /> [[Category:Call of Duty 8]]<br /> [[Category:Minimap]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_7:_MP_-_Minimaps&diff=16526 Call of Duty 7: MP - Minimaps 2012-02-07T14:57:56Z <p>CoDEmanX: </p> <hr /> <div>= Stock Multiplayer =<br /> <br /> == mp_array ==<br /> <br /> [[File:compass_map_mp_array.png|400px]]<br /> <br /> == mp_cairo ==<br /> <br /> [[File:compass_map_mp_cairo.png|400px]]<br /> <br /> == mp_cosmodrome ==<br /> <br /> [[File:compass_map_mp_cosmodrome.png|400px]]<br /> <br /> == mp_cracked ==<br /> <br /> [[File:compass_map_mp_cracked.png|400px]]<br /> <br /> == mp_crisis ==<br /> <br /> [[File:compass_map_mp_crisis.png|400px]]<br /> <br /> == mp_duga ==<br /> <br /> [[File:compass_map_mp_duga.png|400px]]<br /> <br /> == mp_firingrange ==<br /> <br /> [[File:compass_map_mp_firingrange.png|400px]]<br /> <br /> == mp_hanoi ==<br /> <br /> [[File:compass_map_mp_hanoi.png|400px]]<br /> <br /> == mp_havoc ==<br /> <br /> [[File:compass_map_mp_havoc.png|400px]]<br /> <br /> == mp_mountain ==<br /> <br /> [[File:compass_map_mp_mountain.png|400px]]<br /> <br /> == mp_nuked ==<br /> <br /> [[File:compass_map_mp_nuked.png|400px]]<br /> <br /> == mp_radiation ==<br /> <br /> [[File:compass_map_mp_radiation.png|400px]]<br /> <br /> == mp_russianbase ==<br /> <br /> [[File:compass_map_mp_russianbase.png|400px]]<br /> <br /> == mp_villa ==<br /> <br /> [[File:compass_map_mp_villa.png|400px]]<br /> <br /> = DLC Multiplayer =<br /> <br /> == mp_berlinwall2 ==<br /> <br /> [[File:compass_map_mp_berlinwall2.png|400px]]<br /> <br /> == mp_kowloon ==<br /> <br /> [[File:compass_map_mp_kowloon.png|400px]]<br /> <br /> == mp_discovery2 ==<br /> <br /> [[File:compass_map_mp_discovery2.png|400px]]<br /> <br /> == mp_stadium ==<br /> <br /> [[File:compass_map_mp_stadium.png|400px]]<br /> <br /> <br /> = Wager Multiplayer =<br /> <br /> == mp_array ==<br /> <br /> [[File:compass_map_mp_array_wager.png|400px]]<br /> <br /> == mp_cairo ==<br /> <br /> [[File:compass_map_mp_cairo_wager.png|400px]]<br /> <br /> == mp_cosmodrome ==<br /> <br /> [[File:compass_map_mp_cosmodrome_wager.png|400px]]<br /> <br /> == mp_cracked ==<br /> <br /> [[File:compass_map_mp_cracked_wager.png|400px]]<br /> <br /> == mp_crisis ==<br /> <br /> [[File:compass_map_mp_crisis_wager.png|400px]]<br /> <br /> == mp_duga ==<br /> <br /> [[File:compass_map_mp_duga_wager.png|400px]]<br /> <br /> == mp_hanoi ==<br /> <br /> [[File:compass_map_mp_hanoi_wager.png|400px]]<br /> <br /> == mp_havoc ==<br /> <br /> [[File:compass_map_mp_havoc_wager.png|400px]]<br /> <br /> == mp_mountain ==<br /> <br /> [[File:compass_map_mp_mountain_wager.png|400px]]<br /> <br /> == mp_radiation ==<br /> <br /> [[File:compass_map_mp_radiation_wager.png|400px]]<br /> <br /> == mp_russianbase ==<br /> <br /> [[File:compass_map_mp_russianbase_wager.png|400px]]<br /> <br /> == mp_villa ==<br /> <br /> [[File:compass_map_mp_villa_wager.png|400px]]<br /> <br /> = Wager DLC =<br /> <br /> == mp_berlinwall2 ==<br /> <br /> [[File:compass_map_mp_berlinwall2_wager.png|400px]]<br /> <br /> == mp_kowloon ==<br /> <br /> [[File:compass_map_mp_kowloon_wager.png|400px]]<br /> <br /> == mp_discovery2 ==<br /> <br /> [[File:compass_map_mp_discovery2_wager.png|400px]]<br /> <br /> == mp_stadium ==<br /> <br /> [[File:compass_map_mp_stadium_wager.png|400px]]<br /> <br /> <br /> --[[User:Zeroy|Zeroy]] 09:56, 27 May 2011 (IST)<br /> <br /> [[Category:Call of Duty 7]]<br /> [[Category:Minimap]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_5:_Stock_Loadscreens&diff=16525 Call of Duty 5: Stock Loadscreens 2012-02-07T14:56:33Z <p>CoDEmanX: </p> <hr /> <div>==Airfield==<br /> <br /> [[Image:loadscreen_map_mp_airfield.png|600px]]<br /> <br /> ==Asylum==<br /> <br /> [[Image:loadscreen_map_mp_asylum.png|600px]]<br /> <br /> ==Banzai (mp_kwai)==<br /> <br /> [[Image:Loadscreen_mp_kwai.png|600px]]<br /> <br /> ==Castle==<br /> <br /> [[Image:loadscreen_map_mp_castle.png|600px]]<br /> <br /> ==Cliffside (mp_shrine)==<br /> <br /> [[Image:loadscreen_map_mp_shrine.png|600px]]<br /> <br /> ==Corrosion (mp_stalingrad)==<br /> <br /> [[Image:Loadscreen_mp_stalingrad.png|600px]]<br /> <br /> ==Courtyard==<br /> <br /> [[Image:loadscreen_map_mp_courtyard.png|600px]]<br /> <br /> ==Dome==<br /> <br /> [[Image:loadscreen_map_mp_dome.png|600px]]<br /> <br /> ==Downfall==<br /> <br /> [[Image:loadscreen_map_mp_downfall_2.jpg|600px]]<br /> <br /> ==Hangar==<br /> <br /> [[Image:loadscreen_map_mp_hangar.png|600px]]<br /> <br /> ==Makin==<br /> <br /> [[Image:loadscreen_map_mp_makin.png|600px]]<br /> <br /> ==Makin Day==<br /> <br /> [[Image:Loadscreen_mp_makin_day.png|600px]]<br /> <br /> ==Outskirts==<br /> <br /> [[Image:loadscreen_map_mp_outskirts.png|600px]]<br /> <br /> ==Roundhouse==<br /> <br /> [[Image:loadscreen_map_mp_roundhouse.png|600px]]<br /> <br /> ==Seelow==<br /> <br /> [[Image:loadscreen_map_mp_seelow.png|600px]]<br /> <br /> ==Upheaval (mp_suburban)==<br /> <br /> [[Image:loadscreen_map_mp_suburban.png|600px]]<br /> <br /> ==KneeDeep==<br /> <br /> [[Image:loadscreen_map_mp_kneedeep.png|600px]]<br /> <br /> ==Nightfire (mp_nachtfeuer)==<br /> <br /> [[Image:Loadscreen_map_mp_nachtfeuer.png|600px]]<br /> <br /> ==Station (mp_subway)==<br /> <br /> [[Image:loadscreen_map_mp_subway.png|600px]]<br /> <br /> ==Sub Pens (mp_docks)==<br /> <br /> [[Image:Loadscreen_mp_docks.png|600px]]<br /> <br /> <br /> [[Category:Call of Duty 5]]<br /> [[Category:Technical Reference]]<br /> [[Category:Maps]]<br /> [[Category:Loadscreens]]</div> CoDEmanX https://wiki.zeroy.com/index.php?title=Call_of_Duty_8:_Multiplayer_Loadscreens&diff=16524 Call of Duty 8: Multiplayer Loadscreens 2012-02-07T14:56:10Z <p>CoDEmanX: </p> <hr /> <div>= Stock Multiplayer Minimaps =<br /> <br /> == Lockdown ==<br /> <br /> [[File:loadscreen_mp_alpha.png|400px]]<br /> <br /> == Bootleg ==<br /> <br /> [[File:loadscreen_mp_bootleg.png|400px]]<br /> <br /> == Mission ==<br /> <br /> [[File:loadscreen_mp_bravo.png|400px]]<br /> <br /> == Carbon ==<br /> <br /> [[File:loadscreen_mp_carbon.png|400px]]<br /> <br /> == Dome ==<br /> <br /> [[File:loadscreen_mp_dome.png|400px]]<br /> <br /> == Downturn ==<br /> <br /> [[File:loadscreen_mp_exchange.png|400px]]<br /> <br /> == Hardhat ==<br /> <br /> [[File:loadscreen_mp_hardhat.png|400px]]<br /> <br /> == Interchange ==<br /> <br /> [[File:loadscreen_mp_interchange.png|400px]]<br /> <br /> == Fallen ==<br /> <br /> [[File:loadscreen_mp_lambeth.png|400px]]<br /> <br /> == Bakaara ==<br /> <br /> [[File:loadscreen_mp_mogadishu.png|400px]]<br /> <br /> == Resistance ==<br /> <br /> [[File:loadscreen_mp_paris.png|400px]]<br /> <br /> == Arkaden ==<br /> <br /> [[File:loadscreen_mp_plaza2.png|400px]]<br /> <br /> == Outpost ==<br /> <br /> [[File:loadscreen_mp_radar.png|400px]]<br /> <br /> == Seatown ==<br /> <br /> [[File:loadscreen_mp_seatown.png|400px]]<br /> <br /> == Underground ==<br /> <br /> [[File:loadscreen_mp_underground.png|400px]]<br /> <br /> == Village ==<br /> <br /> [[File:loadscreen_mp_village.png|400px]]<br /> <br /> [[Category:Call of Duty 8]]<br /> [[Category:Loadscreens]]</div> CoDEmanX