Compare commits
	
		
			73 Commits
		
	
	
		
			v2.1.0
			...
			7a8041f065
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 7a8041f065 | ||
|  | d92d2c03c4 | ||
|  | 12ca117bdc | ||
|  | 0300692cdd | ||
|  | d2ddce2169 | ||
|  | 7028290495 | ||
|  | 39c6f5054f | ||
|  | b47088538e | ||
|  | 1e0daca087 | ||
|  | dfe2ba0c47 | ||
|  | c8df9ef311 | ||
|  | 0b22a6b8a6 | ||
|  | 60a8f65180 | ||
|  | 5719080f45 | ||
|  | 1bf8314acd | ||
|  | f31a306b0a | ||
|  | c4a222089c | ||
|  | a1651baa5a | ||
|  | 748d261c02 | ||
|  | 06dfea7790 | ||
|  | a9ea7acec3 | ||
|  | 26a5adae13 | ||
|  | a37aadfc2b | ||
|  | f0a37dcfb7 | ||
|  | 0e8c73357e | ||
|  | 04f5bc79ed | ||
|  | 469918d271 | ||
|  | 65e8d0629c | ||
|  | d48f35bcff | ||
|  | a56b11d478 | ||
|  | 02017ca288 | ||
|  | 3ff48407d5 | ||
|  | 04b7296246 | ||
|  | ca17899595 | ||
|  | 2459a37a64 | ||
|  | 11e6ab8469 | ||
|  | a1d7e85fbc | ||
|  | d738287275 | ||
|  | 72997da9d6 | ||
|  | a2e8e1bb3b | ||
|  | bd2207eaf5 | ||
|  | a32b0ac00d | ||
|  | 6042bcbd41 | ||
|  | e664f60335 | ||
|  | a838a56770 | ||
|  | 2eff53e976 | ||
|  | 9a0db18829 | ||
|  | 814cd9609e | ||
|  | f0db932a5a | ||
|  | 145f4da703 | ||
|  | f6d050631a | ||
|  | 8971cd806d | ||
|  | 3debfd92d2 | ||
|  | 119a8f8639 | ||
|  | 5ceeabcc2a | ||
|  | e02f7d6cb2 | ||
|  | 8ecaf48ba9 | ||
|  | b5cfd27fa0 | ||
|  | 1a991fbc95 | ||
|  | 980faf9174 | ||
|  | 41862fb341 | ||
|  | ea9ea321c7 | ||
|  | 5f621bbf09 | ||
|  | fed01fb54c | ||
|  | 6903fe09fc | ||
|  | 47168c27d9 | ||
|  | b0bd171b31 | ||
|  | 98aa33dbf0 | ||
|  | 07f24e266f | ||
|  | 32a76e964f | ||
|  | 9c013c5bd8 | ||
|  | 38ddce8e71 | ||
|  | 6a5af7d510 | 
							
								
								
									
										14
									
								
								.astylerc
									
									
									
									
									
								
							
							
						
						| @@ -1,21 +1,27 @@ | |||||||
| # try to mimic the original gsc provided | # try to mimic the original gsc provided | ||||||
|  | # mode=ghc | ||||||
| mode=c | mode=c | ||||||
| style=allman | style=allman | ||||||
|  |  | ||||||
| indent=tab | indent=force-tab=2 | ||||||
| lineend=windows | lineend=windows | ||||||
|  |  | ||||||
| pad-oper | pad-oper | ||||||
| pad-paren-in | pad-paren-in | ||||||
| pad-header | pad-header | ||||||
|  | # pad-brackets-in | ||||||
| # delete-empty-lines | fill-empty-lines | ||||||
|  | squeeze-lines=2 | ||||||
|  | squeeze-ws | ||||||
|  | break-one-line-headers | ||||||
|  | add-braces | ||||||
|  | remove-comment-prefix | ||||||
|  |  | ||||||
| break-blocks | break-blocks | ||||||
| # remove-braces |  | ||||||
|  |  | ||||||
| indent-switches | indent-switches | ||||||
| indent-cases | indent-cases | ||||||
| indent-after-parens | indent-after-parens | ||||||
|  | indent-col1-comments | ||||||
|  |  | ||||||
| remove-comment-prefix | remove-comment-prefix | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ root = true | |||||||
| indent_style = tab | indent_style = tab | ||||||
| indent_size = 2 | indent_size = 2 | ||||||
| charset = latin1 | charset = latin1 | ||||||
| trim_trailing_whitespace = true | trim_trailing_whitespace = false | ||||||
| insert_final_newline = true | insert_final_newline = true | ||||||
|  |  | ||||||
| [*.md] | [*.md] | ||||||
|   | |||||||
							
								
								
									
										21
									
								
								.github/workflows/gsc-tool.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,21 @@ | |||||||
|  | name: gsc-tool | ||||||
|  |  | ||||||
|  | on: [push] | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   main-win: | ||||||
|  |     name: Compile on Windows | ||||||
|  |     runs-on: windows-latest | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |       - name: Check out files | ||||||
|  |         uses: actions/checkout@main | ||||||
|  |  | ||||||
|  |       - name: Setup gsc-tool | ||||||
|  |         uses: xensik/setup-gsc-tool@v1 | ||||||
|  |         with: | ||||||
|  |           version: '1.4.0' | ||||||
|  |  | ||||||
|  |       - name: Run script | ||||||
|  |         run: | | ||||||
|  |           ci/gsc-tool.bat | ||||||
							
								
								
									
										16
									
								
								.github/workflows/pregsc.ymloff
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,16 @@ | |||||||
|  | name: pregsc | ||||||
|  |  | ||||||
|  | on: [push] | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   main-win: | ||||||
|  |     name: Run on Windows | ||||||
|  |     runs-on: windows-latest | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |       - name: Check out files | ||||||
|  |         uses: actions/checkout@main | ||||||
|  |  | ||||||
|  |       - name: Run script | ||||||
|  |         run: | | ||||||
|  |           ci/pregsc.bat | ||||||
							
								
								
									
										54
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -1,52 +1,14 @@ | |||||||
| # Ignore everything in repository root |  | ||||||
| /* |  | ||||||
|  |  | ||||||
| # Files to not ignore |  | ||||||
| !/.gitignore |  | ||||||
| !/.vscode |  | ||||||
| !/.editorconfig |  | ||||||
| !/.gitattributes |  | ||||||
|  |  | ||||||
| # Folder to not ignore |  | ||||||
| !/raw |  | ||||||
| /raw/* |  | ||||||
| !/raw/scripts |  | ||||||
|  |  | ||||||
| !/.astylerc |  | ||||||
| !/deploy.js |  | ||||||
| !/deploy.bat |  | ||||||
| !/z_deploy.bat |  | ||||||
|  |  | ||||||
| !/raw/maps |  | ||||||
| /raw/maps/* |  | ||||||
| !/raw/maps/mp/ |  | ||||||
| /raw/maps/mp/** |  | ||||||
| !/raw/maps/mp/bots/ |  | ||||||
| !/raw/maps/mp/bots/_bot_chat.gsc |  | ||||||
| !/raw/bw-assets |  | ||||||
| !/raw/bots.txt |  | ||||||
| !/out |  | ||||||
|  |  | ||||||
| !/raw/maps/mp/gametypes |  | ||||||
| !/raw/maps/mp/killstreaks |  | ||||||
| !/raw/maps/mp/mp_rust.d3dbsp.ents |  | ||||||
| !/raw/maps/mp/mp_nuked.d3dbsp.ents |  | ||||||
|  |  | ||||||
|  |  | ||||||
| !/admin |  | ||||||
| /admin/* |  | ||||||
|  |  | ||||||
| !/admin/server.cfg |  | ||||||
| !/admin/server.dsr |  | ||||||
| !/z_server.bat |  | ||||||
|  |  | ||||||
| !/README.md |  | ||||||
|  |  | ||||||
|  |  | ||||||
| *.zip | *.zip | ||||||
| *.log | *.log | ||||||
| *.stat | *.stat | ||||||
|  | *.exe | ||||||
|  | *.gscbin | ||||||
|  | !ci/ | ||||||
|  | out/ | ||||||
| logs/ | logs/ | ||||||
| demos/ | demos/ | ||||||
| images/ |  | ||||||
| missingasset.csv | missingasset.csv | ||||||
|  | compiled/ | ||||||
|  | source/ | ||||||
|  | pregsc/ | ||||||
|  | pregsc.dat | ||||||
|   | |||||||
							
								
								
									
										71
									
								
								README.md
									
									
									
									
									
								
							
							
						
						| @@ -1,11 +1,11 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| # PlutoniumIW5 Bot Warfare | # IW5 Bot Warfare | ||||||
| Bot Warfare is a GSC mod for the [PlutoniumIW5 project](https://plutonium.pw/). | Bot Warfare is a GSC mod for the [PlutoniumIW5 project](https://plutonium.pw/). | ||||||
|  |  | ||||||
| It aims to add playable AI to the multiplayer games of Modern Warfare 3. | It aims to add playable AI to the multiplayer games of Modern Warfare 3. | ||||||
|  |  | ||||||
| You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfare/downloads/piw5-bot-warfare-latest). | You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfare/downloads/iw5-bot-warfare-latest). | ||||||
|  |  | ||||||
| ## Contents | ## Contents | ||||||
| - [Features](#Features) | - [Features](#Features) | ||||||
| @@ -15,7 +15,7 @@ You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfar | |||||||
| - [Credits](#Credits) | - [Credits](#Credits) | ||||||
|  |  | ||||||
| ## Features | ## Features | ||||||
| - A Waypoint Editor for creating and modifying bot's waypoints of traversing the map. Have a look at [Using the Waypoint editor](/raw/bw-assets/wpedit.md). | - A Waypoint Editor for creating and modifying bot's waypoints of traversing the map. Have a look at [Using the Waypoint editor](/bw-assets/wpedit.md). | ||||||
|  |  | ||||||
| - A clean and nice menu, you can edit every bot DVAR within in-game. | - A clean and nice menu, you can edit every bot DVAR within in-game. | ||||||
|  |  | ||||||
| @@ -52,7 +52,7 @@ You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfar | |||||||
|  |  | ||||||
| ## Installation | ## Installation | ||||||
| 0. Make sure that [PlutoniumIW5](https://plutonium.pw/docs/install/#iw5) is installed, updated and working properly. | 0. Make sure that [PlutoniumIW5](https://plutonium.pw/docs/install/#iw5) is installed, updated and working properly. | ||||||
|     - Download the [latest release](https://github.com/ineedbots/piw5_bot_warfare/releases) of Bot Warfare. |     - Download the [latest release](https://github.com/ineedbots/iw5_bot_warfare/releases) of Bot Warfare. | ||||||
| 1. Extract all the files from the Bot Warfare release archive you downloaded to anywhere on your computer. | 1. Extract all the files from the Bot Warfare release archive you downloaded to anywhere on your computer. | ||||||
| 2. Run the 'install.bat'. This copies the mod to your PlutoniumIW5 storage folder. | 2. Run the 'install.bat'. This copies the mod to your PlutoniumIW5 storage folder. | ||||||
| 3. The mod is now installed, now run your game. | 3. The mod is now installed, now run your game. | ||||||
| @@ -70,48 +70,60 @@ You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfar | |||||||
| ### DVARs | ### DVARs | ||||||
| | Dvar                             | Description                                                                                 | Default Value | | | Dvar                             | Description                                                                                 | Default Value | | ||||||
| |----------------------------------|---------------------------------------------------------------------------------------------|--------------:| | |----------------------------------|---------------------------------------------------------------------------------------------|--------------:| | ||||||
| | bots_main                        | Enable this mod.                                                                            | true          | | | bots_main                        | Enable this mod.                                                                            | 1             | | ||||||
| | bots_main_firstIsHost            | The first player to connect will be given host.                                             | false         | | | bots_main_firstIsHost            | The first player to connect will be given host.                                             | 0             | | ||||||
| | bots_main_GUIDs                  | A comma separated list of GUIDs of players who will be given host.                          | ""            | | | bots_main_GUIDs                  | A comma separated list of GUIDs of players who will be given host.                          |               | | ||||||
| | bots_main_waitForHostTime        | How many seconds to wait for the host player to connect before adding bots to the match.    | 10            | | | bots_main_waitForHostTime        | How many seconds to wait for the host player to connect before adding bots to the match.    | 10            | | ||||||
| | bots_main_menu                   | Enable the in-game menu for hosts.                                                          | true          | | | bots_main_menu                   | Enable the in-game menu for hosts.                                                          | 1             | | ||||||
| | bots_main_debug                  | Enable the in-game waypoint editor.                                                         | false         | | | bots_main_debug                  | Enable the in-game waypoint editor.                                                         | 0             | | ||||||
| | bots_main_kickBotsAtEnd          | Kick the bots at the end of a match.                                                        | false         | | | bots_main_kickBotsAtEnd          | Kick the bots at the end of a match.                                                        | 0             | | ||||||
| | bots_main_chat                   | The rate bots will chat at, set to 0 to disable.                                            | 1.0           | | | bots_main_chat                   | The rate bots will chat at, set to 0 to disable.                                            | 1.0           | | ||||||
| | bots_manage_add                  | Amount of bots to add to the game, once bots are added, resets back to `0`.                 | 0             | | | bots_manage_add                  | Amount of bots to add to the game, once bots are added, resets back to `0`.                 | 0             | | ||||||
| | bots_manage_fill                 | Amount of players/bots (look at `bots_manage_fill_mode`) to maintain in the match.          | 0             | | | bots_manage_fill                 | Amount of players/bots (look at `bots_manage_fill_mode`) to maintain in the match.          | 0             | | ||||||
| | bots_manage_fill_mode            | `bots_manage_fill` players/bots counting method.<ul><li>`0` - counts both players and bots.</li><li>`1` - only counts bots.</li></ul> | 0 | | | bots_manage_fill_mode            | `bots_manage_fill` players/bots counting method.<ul><li>`0` - counts both players and bots.</li><li>`1` - only counts bots.</li></ul> | 0 | | ||||||
| | bots_manage_fill_kick            | If the amount of players/bots in the match exceeds `bots_manage_fill`, kick bots until no longer exceeds. | false | | | bots_manage_fill_kick            | If the amount of players/bots in the match exceeds `bots_manage_fill`, kick bots until no longer exceeds. | 0     | | ||||||
| | bots_manage_fill_spec            | If when counting players for `bots_manage_fill` should include spectators.                  | true          | | | bots_manage_fill_spec            | If when counting players for `bots_manage_fill` should include spectators.                  | 1             | | ||||||
| | bots_team                        | One of `autoassign`, `allies`, `axis`, `spectator`, or `custom`. What team the bots should be on. | autoassign | | | bots_team                        | One of `autoassign`, `allies`, `axis`, `spectator`, or `custom`. What team the bots should be on. | autoassign | | ||||||
| | bots_team_amount                 | When `bots_team` is set to `custom`. The amount of bots to be placed on the axis team. The remainder will be placed on the allies team. | 0 | | | bots_team_amount                 | When `bots_team` is set to `custom`. The amount of bots to be placed on the axis team. The remainder will be placed on the allies team. | 0 | | ||||||
| | bots_team_force                  | If the server should force bots' teams according to the `bots_team` value. When `bots_team` is `autoassign`, unbalanced teams will be balanced. This dvar is ignored when `bots_team` is `custom`. | false | | | bots_team_force                  | If the server should force bots' teams according to the `bots_team` value. When `bots_team` is `autoassign`, unbalanced teams will be balanced. This dvar is ignored when `bots_team` is `custom`. | 0     | | ||||||
| | bots_team_mode                   | When `bots_team_force` is `true` and `bots_team` is `autoassign`, players/bots counting method. <ul><li>`0` - counts both players and bots.</li><li>`1` - only counts bots</li></ul> | 0 | | | bots_team_mode                   | When `bots_team_force` is `true` and `bots_team` is `autoassign`, players/bots counting method. <ul><li>`0` - counts both players and bots.</li><li>`1` - only counts bots</li></ul> | 0 | | ||||||
| | bots_skill                       | Bots' difficulty.<ul><li>`0` - Random difficulty for each bot.</li><li>`1` - Easiest difficulty for all bots.</li><li>`2` to `6` - Between easy and hard difficulty for all bots.</li><li>`7` - The hardest difficulty for all bots.</li><li>`8` - custom (look at the `bots_skill_<team>_<difficulty>` dvars</li></ul> | 0 | | | bots_skill                       | Bots' difficulty.<ul><li>`0` - Random difficulty for each bot.</li><li>`1` - Easiest difficulty for all bots.</li><li>`2` to `6` - Between easy and hard difficulty for all bots.</li><li>`7` - The hardest difficulty for all bots.</li><li>`8` - custom (look at the `bots_skill_<team>_<difficulty>` dvars)</li></ul> | 0 | | ||||||
| | bots_skill_axis_hard             | When `bots_skill` is set to `8`, the amount of hard difficulty bots to set on the axis team. | 0            | | | bots_skill_axis_hard             | When `bots_skill` is set to `8`, the amount of hard difficulty bots to set on the axis team. | 0            | | ||||||
| | bots_skill_axis_med              | When `bots_skill` is set to `8`, the amount of medium difficulty bots to set on the axis team. The remaining bots on the team will be set to easy difficulty. | 0 | | | bots_skill_axis_med              | When `bots_skill` is set to `8`, the amount of medium difficulty bots to set on the axis team. The remaining bots on the team will be set to easy difficulty. | 0 | | ||||||
| | bots_skill_allies_hard           | When `bots_skill` is set to `8`, the amount of hard difficulty bots to set on the allies team. | 0          | | | bots_skill_allies_hard           | When `bots_skill` is set to `8`, the amount of hard difficulty bots to set on the allies team. | 0          | | ||||||
| | bots_skill_allies_med            | When `bots_skill` is set to `8`, the amount of medium difficulty bots to set on the allies team. The remaining bots on the team will be set to easy difficulty. | 0 | | | bots_skill_allies_med            | When `bots_skill` is set to `8`, the amount of medium difficulty bots to set on the allies team. The remaining bots on the team will be set to easy difficulty. | 0 | | ||||||
| | bots_skill_min                   | The minimum difficulty level for the bots.                                                     | 1          | | | bots_skill_min                   | The minimum difficulty level for the bots.                                                     | 1          | | ||||||
| | bots_skill_max                   | The maximum difficulty level for the bots.                                                     | 7          | | | bots_skill_max                   | The maximum difficulty level for the bots.                                                     | 7          | | ||||||
| | bots_loadout_reasonable          | If the bots should filter bad performing create-a-class selections.                            | false      | | | bots_loadout_reasonable          | If the bots should filter bad performing create-a-class selections.                            | 0          | | ||||||
| | bots_loadout_allow_op            | If the bots should be able to use overpowered and annoying create-a-class selections.          | true       | | | bots_loadout_allow_op            | If the bots should be able to use overpowered and annoying create-a-class selections.          | 1          | | ||||||
| | bots_loadout_rank                | What rank to set the bots.<ul><li>`-1` - Average of all players in the match.</li><li>`0` - All random.</li><li>`1` or higher - Sets the bots' rank to this.</li></ul> | -1 | | | bots_loadout_rank                | What rank to set the bots.<ul><li>`-1` - Average of all players in the match.</li><li>`0` - All random.</li><li>`1` or higher - Sets the bots' rank to this.</li></ul> | -1 | | ||||||
| | bots_loadout_prestige            | What prestige to set the bots.<ul><li>`-1` - Same as host player in the match.</li><li>`-2` - All random.</li><li>`0` or higher - Sets the bots' prestige to this.</li></ul> | -1 | | | bots_loadout_prestige            | What prestige to set the bots.<ul><li>`-1` - Same as host player in the match.</li><li>`-2` - All random.</li><li>`0` or higher - Sets the bots' prestige to this.</li></ul> | -1 | | ||||||
| | bots_play_move                   | If the bots can move.                                                                          | true       | | | bots_play_move                   | If the bots can move.                                                                          | 1          | | ||||||
| | bots_play_knife                  | If the bots can knife.                                                                         | true       | | | bots_play_knife                  | If the bots can knife.                                                                         | 1          | | ||||||
| | bots_play_fire                   | If the bots can fire.                                                                          | true       | | | bots_play_fire                   | If the bots can fire.                                                                          | 1          | | ||||||
| | bots_play_nade                   | If the bots can grenade.                                                                       | true       | | | bots_play_nade                   | If the bots can grenade.                                                                       | 1          | | ||||||
| | bots_play_take_carepackages      | If the bots can take carepackages.                                                             | true       | | | bots_play_take_carepackages      | If the bots can take carepackages.                                                             | 1          | | ||||||
| | bots_play_obj                    | If the bots can play the objective.                                                            | true       | | | bots_play_obj                    | If the bots can play the objective.                                                            | 1          | | ||||||
| | bots_play_camp                   | If the bots can camp.                                                                          | true       | | | bots_play_camp                   | If the bots can camp.                                                                          | 1          | | ||||||
| | bots_play_jumpdrop               | If the bots can jump/drop shot.                                                                | true       | | | bots_play_jumpdrop               | If the bots can jump/drop shot.                                                                | 1          | | ||||||
| | bots_play_target_other           | If the bots can target other entities other than players.                                      | true       | | | bots_play_target_other           | If the bots can target other entities other than players.                                      | 1          | | ||||||
| | bots_play_killstreak             | If the bots can call in killstreaks.                                                           | true       | | | bots_play_killstreak             | If the bots can call in killstreaks.                                                           | 1          | | ||||||
| | bots_play_ads                    | If the bots can aim down sights.                                                               | true       | | | bots_play_ads                    | If the bots can aim down sights.                                                               | 1          | | ||||||
| | bots_play_aim                    | If the bots can aim.                                                                           | true       | | | bots_play_aim                    | If the bots can aim.                                                                           | 1          | | ||||||
|  |  | ||||||
| ## Changelog | ## Changelog | ||||||
|  | - v2.3.0 | ||||||
|  |   - Fixed bots aiming in ac130/chopper being broken at times | ||||||
|  |   - Bots properly use pred missiles | ||||||
|  |   - Smoothed bot aim at range | ||||||
|  |   - Fixed bots_manage_fill_spec players being counted with bots_manage_fill_mode 1 (bot only) | ||||||
|  |  | ||||||
|  | - v2.2.0 | ||||||
|  |   - Bots can now melee lunge | ||||||
|  |   - Fixed some chat related script runtime errors | ||||||
|  |   - Fix bots possibly being stuck in sab | ||||||
|  |   - Major cleanup | ||||||
|  |  | ||||||
| - v2.1.0 | - v2.1.0 | ||||||
|   - Initial release (sync'd versions with other Bot Warfares) |   - Initial release (sync'd versions with other Bot Warfares) | ||||||
|  |  | ||||||
| @@ -124,6 +136,7 @@ You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfar | |||||||
| - apdonato - http://rsebots.blogspot.ca/ | - apdonato - http://rsebots.blogspot.ca/ | ||||||
| - Ability | - Ability | ||||||
| - Salvation | - Salvation | ||||||
|  | - Xensik - https://github.com/xensik/gsc-tool | ||||||
|  |  | ||||||
| ### Waypoint Creators | ### Waypoint Creators | ||||||
| - FragsAreUs - https://github.com/FragsAreUs | - FragsAreUs - https://github.com/FragsAreUs | ||||||
|   | |||||||
							
								
								
									
										202
									
								
								admin/server.cfg
									
									
									
									
									
								
							
							
						
						| @@ -1,202 +0,0 @@ | |||||||
| /////////////////////////////////////////////////// |  | ||||||
| ///     PlutoIW5 Server Configuration file       // |  | ||||||
| /////////////////////////////////////////////////// |  | ||||||
|  |  | ||||||
| /////////////////////////////////////////////////// |  | ||||||
| // SERVER NAME & COLORS	TIPS                     // |  | ||||||
| /////////////////////////////////////////////////// |  | ||||||
| //                                               // |  | ||||||
| // ^1 Red                                        // |  | ||||||
| // ^2 Green                                      // |  | ||||||
| // ^3 yellow                                     // |  | ||||||
| // ^4 Blue                                       // |  | ||||||
| // ^5 Cyan                                       // |  | ||||||
| // ^6 Pink                                       // |  | ||||||
| // ^7 White                                      // |  | ||||||
| // ^8 Depends on the team colors playing.        // |  | ||||||
| // ^9 Grey                                       // |  | ||||||
| // ^0 Black                                      // |  | ||||||
| //                                               // |  | ||||||
| /////////////////////////////////////////////////// |  | ||||||
|  |  | ||||||
|  |  | ||||||
| set sv_hostname "^1Bot ^3War^5fare"               // Probbly useless. Change sv_hostname by changing your key at http://platform.plutonium.pw/serverkeys |  | ||||||
| set sv_motd "^1Bot ^3War^5fare"                                      // Sets a custom motd which is shown on the intel message loadscreen when a player joins. leave blank for defualt intel messages. |  | ||||||
|  |  | ||||||
| ////////////////////////////////////////////////// |  | ||||||
| // BASIC CONFIGURATION                          // |  | ||||||
| ////////////////////////////////////////////////// |  | ||||||
|  |  | ||||||
| set g_password ""                                   // Password Protected Server. Leave blank if you want players to join or set password if you want to keep public out. |  | ||||||
| set sv_maxclients "18"                              // Max players in your server. (Range 2-18) |  | ||||||
| set sv_timeout "20"                                 // Timeout time period. You will timeout after (20) seconds when attempting to connect or if you are getting connection interruptions |  | ||||||
| set sv_reconnectlimit "3"                           // How many times you can try to reconnect |  | ||||||
| set sv_kickBanTime "0"                           // Time in seconds for a player temporary ban (on kick/tempban) (range 0 - 3600) |  | ||||||
| set sv_allowClientConsole "1"                       // Enable or Disable players ability to access server commands |  | ||||||
| set sv_pure "0"                                     // verifying cilent files. |  | ||||||
| set sv_floodProtect "1"                             // Chat Spam Protection. |  | ||||||
| set scr_teambalance "0"                             // Balance players on team based games for for fair play. |  | ||||||
| seta g_allowVote "0"                                // Toggle voting for [player kick/map restart/next map] (0 or 1 (default) ) |  | ||||||
| seta g_deadChat "1"                                   // Toggle allowing dead players to chat with living players (0 (default) or 1) |  | ||||||
| set sv_enableBounces "1"                            // Enables bouncing on the server. |  | ||||||
| seta sv_enableDoubleTaps "1"                        // Allow double tap on weapon switching. |  | ||||||
| set g_inactivity "180"							// Enable auto kick feature for idle/AFK players |  | ||||||
| set sv_allowAimAssist "1" // aa for controllers |  | ||||||
|  |  | ||||||
| set g_inactivitySpectator "180"					// Time in seconds before a spectator gets kicked |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ////////////////////////////////////////////////// |  | ||||||
| // MOD SETTINGS                                 // |  | ||||||
| ////////////////////////////////////////////////// |  | ||||||
|  |  | ||||||
| seta sv_wwwBaseURL ""                               // Configure the URL to Fast DL mods from. (i.e. http://domain.tld/iw5) |  | ||||||
| seta fs_game ""                                     // What mod are we loading? (i.e. "mods/MyMod") |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ////////////////////////////////////////////////// |  | ||||||
| // PRIVATE SLOT SETTINGS                        // |  | ||||||
| ////////////////////////////////////////////////// |  | ||||||
|  |  | ||||||
| seta sv_privateClients "0"                            // Maximum number of private clients allowed on the server (range 0-18 (clamped to sv_maxclients) ) |  | ||||||
| // Password for the private slots on this server. If set, users will be prompted on join attempt. |  | ||||||
| //    Users providing this password will have access to all slots. |  | ||||||
| //    Users providing an incorrect password will have access to the (sv_maxClients - sv_privateClients) public slots. |  | ||||||
| seta sv_privatePassword "" |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ////////////////////////////////////////////////// |  | ||||||
| // B3, IW4MADMIN, GAME LOG & RCON SETTINGS      // |  | ||||||
| ////////////////////////////////////////////////// |  | ||||||
|  |  | ||||||
| set logfile "2"                                    // Enable loging 1-2? enable. 0 disable. Leave it on if you plan on using B3 or IW4MAdmin. |  | ||||||
| set g_logSync "1"                                  // 0 only flush on game end, 1 flush when buffer full, 2 always flush after a write, 3 append to old logs. |  | ||||||
| set g_log "logs\games_mp.log"                      // IMPORTANT! Make sure the filename is unique for each server you clone! |  | ||||||
| set sv_sayName "^7Server^7"                        // name server-side 'say' commands show up as. |  | ||||||
| set sv_voice "1" |  | ||||||
| set sv_voiceQuality "0" |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ////////////////////////////////////////////////////// |  | ||||||
| // LOAD GAMETYPE DSR RECIPE CONFIGURATION           // |  | ||||||
| ////////////////////////////////////////////////////// |  | ||||||
| //  This is defualt gametypes from admin folder.    // |  | ||||||
| //                                                  // |  | ||||||
| //  Can always custom make one in Private Match or  // |  | ||||||
| //  edit existing defulat DSR file with Notepad.    // |  | ||||||
| //                                                  // |  | ||||||
| // TDM_default             Team Deathmatch          // |  | ||||||
| // DOM_default             Domination               // |  | ||||||
| // CTF_default             Capture The Flag         // |  | ||||||
| // DZ_default              Drop Zone                // |  | ||||||
| // FFA_default             Free For All             // |  | ||||||
| // GG_default              Gun Game                 // |  | ||||||
| // HQ_default              Headquarters             // |  | ||||||
| // INF_default             Infected                 // |  | ||||||
| // JUG_default             Juggernaut               // |  | ||||||
| // KC_default              Kill Confirmed           // |  | ||||||
| // OIC_default             One In The Chamber       // |  | ||||||
| // SAB_default             Sabotage                 // |  | ||||||
| // SD_default              Search and Destroy       // |  | ||||||
| // TDEF_default            Team Defender            // |  | ||||||
| // TJ_default              Team Juggernaut          // |  | ||||||
| //                                                  // |  | ||||||
| ////////////////////////////////////////////////////// |  | ||||||
|  |  | ||||||
| ////////////////////////////////////////////////////// |  | ||||||
| // MAP SHORT NAMES ROTATION LIST                    // |  | ||||||
| ////////////////////////////////////////////////////// |  | ||||||
| //                                                  // |  | ||||||
| // mp_alpha                  - Lockdown             // |  | ||||||
| // mp_bootleg                - Bootleg              // |  | ||||||
| // mp_bravo                  - Mission              // |  | ||||||
| // mp_carbon                 - Carbon               // |  | ||||||
| // mp_dome                   - Dome                 // |  | ||||||
| // mp_exchange               - Downturn             // |  | ||||||
| // mp_hardhat                - Hardhat              // |  | ||||||
| // mp_interchange            - Interchange          // |  | ||||||
| // mp_lambeth                - Fallen               // |  | ||||||
| // mp_mogadishu              - Bakaara              // |  | ||||||
| // mp_paris                  - Resistance           // |  | ||||||
| // mp_plaza2                 - Arkaden              // |  | ||||||
| // mp_radar                  - Outpost              // |  | ||||||
| // mp_seatown                - Seatown              // |  | ||||||
| // mp_underground            - Underground          // |  | ||||||
| // mp_village                - Village              // |  | ||||||
| //                                                  // |  | ||||||
| //// DLC FREE //////////////////////////////////////// |  | ||||||
| //                                                  // |  | ||||||
| // mp_terminal_cls           - Terminal             // |  | ||||||
| // mp_aground_ss             - Aground              // |  | ||||||
| // mp_courtyard_ss           - Erosion              // |  | ||||||
| //                                                  // |  | ||||||
| //// DLC COLLECTION 1 //////////////////////////////// |  | ||||||
| //                                                  // |  | ||||||
| // mp_italy                  - Piazza               // |  | ||||||
| // mp_overwatch              - Overwatch            // |  | ||||||
| // mp_morningwood            - Black Box            // |  | ||||||
| // mp_park                   - Liberation           // |  | ||||||
| //                                                  // |  | ||||||
| //// DLC COLLECTION 2 //////////////////////////////// |  | ||||||
| //                                                  // |  | ||||||
| // mp_meteora                - Sanctuary            // |  | ||||||
| // mp_cement                 - Foundation           // |  | ||||||
| // mp_qadeem                 - Oasis                // |  | ||||||
| // mp_restrepo_ss            - Lookout              // |  | ||||||
| // mp_hillside_ss            - Getaway              // |  | ||||||
| //                                                  // |  | ||||||
| //// DLC COLLECTION 3 //////////////////////////////// |  | ||||||
| //                                                  // |  | ||||||
| // mp_crosswalk_ss           - Intersection         // |  | ||||||
| // mp_burn_ss                - U-Turn               // |  | ||||||
| // mp_six_ss                 - Vortex               // |  | ||||||
| //                                                  // |  | ||||||
| //// DLC COLLECTION 4 //////////////////////////////// |  | ||||||
| //                                                  // |  | ||||||
| // mp_boardwalk              - Boardwalk            // |  | ||||||
| // mp_moab                   - Gulch                // |  | ||||||
| // mp_roughneck              - Off Shore            // |  | ||||||
| // mp_shipbreaker            - Decommission         // |  | ||||||
| // mp_nola                   - Parish               // |  | ||||||
| //                                                  // |  | ||||||
| //// PLUTONIUM DLC /////////////////////////////////// |  | ||||||
| //                                                  // |  | ||||||
| // mp_rust                   - Rust                 // |  | ||||||
| //                                                  // |  | ||||||
| ////////////////////////////////////////////////////// |  | ||||||
|  |  | ||||||
| set bots_manage_add "9" |  | ||||||
| set bots_manage_fill "9" |  | ||||||
| set bots_manage_fill_kick "1" |  | ||||||
| set bots_manage_fill_spec "0" |  | ||||||
| set bots_manage_fill_mode "1" |  | ||||||
| set bots_team_force "1" |  | ||||||
| set bots_team_mode "0" |  | ||||||
| set bots_team "axis" |  | ||||||
| set bots_main_waitforhosttime "0" |  | ||||||
| set bots_loadout_allow_op "0" |  | ||||||
| set bots_main_menu "0" |  | ||||||
|  |  | ||||||
| set bots_skill "8" |  | ||||||
| set bots_skill_axis_med "3" |  | ||||||
|  |  | ||||||
| set dom_lastFlagUseTimeMulti "4.0" |  | ||||||
| set scr_showHP "1" |  | ||||||
| set scr_killstreak_print "2" |  | ||||||
| set scr_printDamage "1" |  | ||||||
|  |  | ||||||
| set g_playerCollision "1" |  | ||||||
| set g_playerEjection "1" |  | ||||||
| set g_fixBulletDamageDupe "1" |  | ||||||
| set bullet_penetration_affected_by_team "0" |  | ||||||
| set sv_patchXmagShotguns "0" |  | ||||||
|  |  | ||||||
| set scr_xpscale_ "10" |  | ||||||
| set scr_weaponxpscale_ "2" |  | ||||||
| set killstreakSpawnShield "0" |  | ||||||
|  |  | ||||||
| set sv_local_client_snapshot_msec "-1" |  | ||||||
| set cl_penaltyTimeBookend "0" |  | ||||||
| set cl_adjTimeDeltaCalcAlgorithmMW2 "1" |  | ||||||
|  |  | ||||||
| set sv_maprotation "dsr server map mp_dome map mp_rust map mp_nuked" |  | ||||||
							
								
								
									
										651
									
								
								admin/server.dsr
									
									
									
									
									
								
							
							
						
						| @@ -1,651 +0,0 @@ | |||||||
| gameOpt commonOption.allowCustomClasses "1" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.allowKillstreaks "1" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.allowPerks "1" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.acog "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.akimbo "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.eotech "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.gl "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.gp25 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.grip "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.hamrhybrid "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.heartbeat "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.hybrid "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.m320 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.reflex "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.rof "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.shotgun "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.silencer "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.silencer02 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.silencer03 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.tactical "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.thermal "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.vzscope "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.attachmentRestricted.xmags "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.forceRespawn "1" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.forceThirdPersonView "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.friendlyFire "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.hardcoreModeOn "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.headshotsOnly "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.healthRegen "5.0000" // [ 5, 0-10 ] |  | ||||||
| gameOpt commonOption.killstreakClassRestricted.streaktype_assault "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakClassRestricted.streaktype_specialist "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakClassRestricted.streaktype_support "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted._specialty_blastshield_ks "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.ac130 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.airdrop_assault "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.airdrop_juggernaut "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.airdrop_juggernaut_recon "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.airdrop_remote_tank "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.airdrop_sentry_minigun "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.airdrop_trap "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.counter_uav "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.deployable_vest "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.emp "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.escort_airdrop "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.helicopter "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.helicopter_flares "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.ims "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.littlebird_flock "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.littlebird_support "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.osprey_gunner "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.precision_airstrike "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.predator_missile "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.remote_mg_turret "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.remote_mortar "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.remote_uav "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.sam_turret "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.specialty_autospot_ks "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.specialty_blindeye_ks "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.specialty_bulletaccuracy_ks "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.specialty_coldblooded_ks "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.specialty_detectexplosive_ks "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.specialty_fastreload_ks "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.specialty_hardline_ks "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.specialty_longersprint_ks "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.specialty_paint_ks "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.specialty_quickdraw_ks "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.specialty_quieter_ks "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.specialty_scavenger_ks "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.specialty_stalker_ks "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.stealth_airstrike "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.triple_uav "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.uav "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.killstreakRestricted.uav_support "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.maxHealth "100.0000" // [ 30, 50, 100, 200 ] |  | ||||||
| gameOpt commonOption.numLives "0" // [ 0, 1, 2, 3, 5, 9 ] |  | ||||||
| gameOpt commonOption.perkRestricted._specialty_blastshield "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.bouncingbetty_mp "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.c4_mp "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.claymore_mp "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.concussion_grenade_mp "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.emp_grenade_mp "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.flash_grenade_mp "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.frag_grenade_mp "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.semtex_mp "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.smoke_grenade_mp "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_autospot "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_blindeye "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_bling "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_bulletaccuracy "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_c4death "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_coldblooded "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_detectexplosive "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_fastermelee "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_fastreload "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_finalstand "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_grenadepulldeath "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_hardline "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_holdbreathwhileads "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_juiced "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_lightweight "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_longerrange "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_longersprint "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_marksman "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_moredamage "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_paint "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_portable_radar "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_quickdraw "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_quieter "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_reducedsway "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_revenge "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_scavenger "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_scrambler "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_sharp_focus "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_stalker "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_stopping_power "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_tacticalinsertion "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.specialty_twoprimaries "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.throwingknife_mp "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.perkRestricted.trophy_mp "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.radarAlwaysOn "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.respawnDelay "0.0000" // [ 0, 5, 7.5, 10, 15, 30 ] |  | ||||||
| gameOpt commonOption.scoreLimit "250" // [ 0, 1, 3, 4, 5, 8, 10, 12, 15, 20, 24, 30, 50, 65, 80, 100, 200, 250, 500, 750, 1000, 1500, 2500, 3000, 5000, 7000, 7500, 10000, 15000, 20000, 30000 ] |  | ||||||
| gameOpt commonOption.showKillcam "1" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.spectateModeAllowed "2" // [ 0, 1, 2 ] |  | ||||||
| gameOpt commonOption.timeLimit "30" // [ 0-30 ] |  | ||||||
| gameOpt commonOption.waveRespawnDelay "0" // [ 0, 5, 10, 15, 30 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_1887 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_44magnum "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_aa12 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_acr "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_ak47 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_ak74u "0" |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_as50 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_barrett "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_cheytac "0" |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_cm901 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_deserteagle "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_dragunov "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_fad "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_fmg9 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_fnfiveseven "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_g18 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_g36c "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_ksg "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_l96a1 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_m16 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_m4 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_m60 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_m9 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_mg36 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_mk14 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_mk46 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_mp412 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_mp5 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_mp7 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_mp9 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_msr "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_p90 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_p99 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_pecheneg "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_pp90m1 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_rsass "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_sa80 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_scar "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_skorpion "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_smaw "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_spas12 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_striker "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_type95 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_ump45 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_usas12 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.iw5_usp45 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.javelin "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.m320 "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.riotshield "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.rpg "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.stinger "0" // [ 0, 1 ] |  | ||||||
| gameOpt commonOption.weaponRestricted.xm25 "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.assaultStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.assaultStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.assaultStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.deathstreak "specialty_finalstand" // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.defenseStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.defenseStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.defenseStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.inUse "1" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.name "AR" |  | ||||||
| gameOpt defaultClasses.allies.[0].class.perks.[0] "c4_mp" // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.perks.[1] "specialty_scavenger" // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.perks.[2] "specialty_hardline" // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.perks.[3] "specialty_stalker" // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.perks.[5] "streaktype_specialist" // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.perks.[6] "specialty_portable_radar" // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.specialistStreakKills.[0] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.specialistStreakKills.[1] "4" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.specialistStreakKills.[2] "6" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.specialistStreaks.[0] "specialty_autospot_ks" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.specialistStreaks.[1] "specialty_fastreload_ks" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.specialistStreaks.[2] "specialty_quickdraw_ks" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.specialistStreaksBeenPicked "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.weaponSetups.[0].attachment.[0] "xmags" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.weaponSetups.[0].attachment.[1] "silencer" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.weaponSetups.[0].buff "specialty_bling" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.weaponSetups.[0].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.weaponSetups.[0].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.weaponSetups.[0].weapon "iw5_acr" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.weaponSetups.[1].attachment.[0] "akimbo" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.weaponSetups.[1].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.weaponSetups.[1].buff "specialty_null" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.weaponSetups.[1].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.weaponSetups.[1].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].class.weaponSetups.[1].weapon "iw5_fmg9" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[0].juggernaut "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.assaultStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.assaultStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.assaultStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.deathstreak "specialty_stopping_power" // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.defenseStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.defenseStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.defenseStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.inUse "1" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.name "SHOTGUN" |  | ||||||
| gameOpt defaultClasses.allies.[1].class.perks.[0] "c4_mp" // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.perks.[1] "specialty_scavenger" // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.perks.[2] "specialty_hardline" // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.perks.[3] "specialty_bulletaccuracy" // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.perks.[5] "streaktype_specialist" // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.perks.[6] "specialty_tacticalinsertion" // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.specialistStreakKills.[0] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.specialistStreakKills.[1] "4" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.specialistStreakKills.[2] "6" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.specialistStreaks.[0] "specialty_fastreload_ks" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.specialistStreaks.[1] "specialty_longersprint_ks" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.specialistStreaks.[2] "specialty_detectexplosive_ks" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.specialistStreaksBeenPicked "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.weaponSetups.[0].attachment.[0] "xmags" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.weaponSetups.[0].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.weaponSetups.[0].buff "specialty_longerrange" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.weaponSetups.[0].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.weaponSetups.[0].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.weaponSetups.[0].weapon "iw5_striker" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.weaponSetups.[1].attachment.[0] "akimbo" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.weaponSetups.[1].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.weaponSetups.[1].buff "specialty_null" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.weaponSetups.[1].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.weaponSetups.[1].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].class.weaponSetups.[1].weapon "iw5_skorpion" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[1].juggernaut "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.assaultStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.assaultStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.assaultStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.deathstreak "specialty_juiced" // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.defenseStreaks.[0] "uav_support" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.defenseStreaks.[1] "stealth_airstrike" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.defenseStreaks.[2] "emp" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.inUse "1" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.name "SNIPER" |  | ||||||
| gameOpt defaultClasses.allies.[2].class.perks.[0] "throwingknife_mp" // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.perks.[1] "specialty_fastreload" // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.perks.[2] "specialty_quickdraw" // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.perks.[3] "specialty_bulletaccuracy" // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.perks.[5] "streaktype_support" // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.perks.[6] "specialty_tacticalinsertion" // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.specialistStreakKills.[0] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.specialistStreakKills.[1] "4" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.specialistStreakKills.[2] "6" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.specialistStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.specialistStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.specialistStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.specialistStreaksBeenPicked "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.weaponSetups.[0].attachment.[0] "xmags" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.weaponSetups.[0].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.weaponSetups.[0].buff "specialty_reducedsway" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.weaponSetups.[0].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.weaponSetups.[0].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.weaponSetups.[0].weapon "iw5_msr" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.weaponSetups.[1].attachment.[0] "tactical" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.weaponSetups.[1].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.weaponSetups.[1].buff "specialty_null" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.weaponSetups.[1].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.weaponSetups.[1].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].class.weaponSetups.[1].weapon "iw5_p99" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[2].juggernaut "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.assaultStreaks.[0] "predator_missile" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.assaultStreaks.[1] "littlebird_flock" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.assaultStreaks.[2] "helicopter_flares" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.deathstreak "specialty_grenadepulldeath" // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.defenseStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.defenseStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.defenseStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.inUse "1" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.name "LMG" |  | ||||||
| gameOpt defaultClasses.allies.[3].class.perks.[0] "c4_mp" // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.perks.[1] "specialty_scavenger" // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.perks.[2] "specialty_twoprimaries" // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.perks.[3] "specialty_stalker" // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.perks.[5] "streaktype_assault" // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.perks.[6] "specialty_portable_radar" // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.specialistStreakKills.[0] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.specialistStreakKills.[1] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.specialistStreakKills.[2] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.specialistStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.specialistStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.specialistStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.specialistStreaksBeenPicked "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.weaponSetups.[0].attachment.[0] "reflex" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.weaponSetups.[0].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.weaponSetups.[0].buff "specialty_lightweight" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.weaponSetups.[0].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.weaponSetups.[0].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.weaponSetups.[0].weapon "iw5_m60" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.weaponSetups.[1].attachment.[0] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.weaponSetups.[1].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.weaponSetups.[1].buff "specialty_lightweight" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.weaponSetups.[1].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.weaponSetups.[1].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].class.weaponSetups.[1].weapon "riotshield" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[3].juggernaut "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.assaultStreaks.[0] "ims" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.assaultStreaks.[1] "precision_airstrike" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.assaultStreaks.[2] "littlebird_support" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.deathstreak "specialty_finalstand" // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.defenseStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.defenseStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.defenseStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.inUse "1" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.name "SMG" |  | ||||||
| gameOpt defaultClasses.allies.[4].class.perks.[0] "c4_mp" // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.perks.[1] "specialty_scavenger" // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.perks.[2] "specialty_hardline" // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.perks.[3] "specialty_bulletaccuracy" // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.perks.[5] "streaktype_assault" // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.perks.[6] "specialty_portable_radar" // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.specialistStreakKills.[0] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.specialistStreakKills.[1] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.specialistStreakKills.[2] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.specialistStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.specialistStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.specialistStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.specialistStreaksBeenPicked "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.weaponSetups.[0].attachment.[0] "xmags" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.weaponSetups.[0].attachment.[1] "silencer" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.weaponSetups.[0].buff "specialty_bling" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.weaponSetups.[0].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.weaponSetups.[0].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.weaponSetups.[0].weapon "iw5_mp7" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.weaponSetups.[1].attachment.[0] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.weaponSetups.[1].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.weaponSetups.[1].buff "specialty_null" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.weaponSetups.[1].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.weaponSetups.[1].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].class.weaponSetups.[1].weapon "javelin" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[4].juggernaut "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.assaultStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.assaultStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.assaultStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.deathstreak "specialty_null" // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.defenseStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.defenseStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.defenseStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.inUse "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.name "Custom Class 6" |  | ||||||
| gameOpt defaultClasses.allies.[5].class.perks.[0] "specialty_null" // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.perks.[1] "specialty_null" // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.perks.[2] "specialty_null" // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.perks.[3] "specialty_null" // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.perks.[5] "specialty_null" // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.perks.[6] "specialty_null" // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.specialistStreakKills.[0] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.specialistStreakKills.[1] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.specialistStreakKills.[2] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.specialistStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.specialistStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.specialistStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.specialistStreaksBeenPicked "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.weaponSetups.[0].attachment.[0] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.weaponSetups.[0].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.weaponSetups.[0].buff "specialty_null" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.weaponSetups.[0].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.weaponSetups.[0].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.weaponSetups.[0].weapon "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.weaponSetups.[1].attachment.[0] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.weaponSetups.[1].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.weaponSetups.[1].buff "specialty_null" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.weaponSetups.[1].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.weaponSetups.[1].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].class.weaponSetups.[1].weapon "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.allies.[5].juggernaut "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.assaultStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.assaultStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.assaultStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.deathstreak "specialty_finalstand" // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.defenseStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.defenseStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.defenseStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.inUse "1" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.name "AR" |  | ||||||
| gameOpt defaultClasses.axis.[0].class.perks.[0] "c4_mp" // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.perks.[1] "specialty_scavenger" // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.perks.[2] "specialty_hardline" // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.perks.[3] "specialty_stalker" // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.perks.[5] "streaktype_specialist" // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.perks.[6] "specialty_portable_radar" // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.specialistStreakKills.[0] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.specialistStreakKills.[1] "4" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.specialistStreakKills.[2] "6" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.specialistStreaks.[0] "specialty_autospot_ks" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.specialistStreaks.[1] "specialty_fastreload_ks" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.specialistStreaks.[2] "specialty_quickdraw_ks" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.specialistStreaksBeenPicked "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.weaponSetups.[0].attachment.[0] "xmags" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.weaponSetups.[0].attachment.[1] "silencer" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.weaponSetups.[0].buff "specialty_bling" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.weaponSetups.[0].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.weaponSetups.[0].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.weaponSetups.[0].weapon "iw5_acr" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.weaponSetups.[1].attachment.[0] "akimbo" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.weaponSetups.[1].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.weaponSetups.[1].buff "specialty_null" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.weaponSetups.[1].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.weaponSetups.[1].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].class.weaponSetups.[1].weapon "iw5_fmg9" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[0].juggernaut "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.assaultStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.assaultStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.assaultStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.deathstreak "specialty_stopping_power" // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.defenseStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.defenseStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.defenseStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.inUse "1" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.name "SHOTGUN" |  | ||||||
| gameOpt defaultClasses.axis.[1].class.perks.[0] "c4_mp" // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.perks.[1] "specialty_scavenger" // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.perks.[2] "specialty_hardline" // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.perks.[3] "specialty_bulletaccuracy" // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.perks.[5] "streaktype_specialist" // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.perks.[6] "specialty_tacticalinsertion" // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.specialistStreakKills.[0] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.specialistStreakKills.[1] "4" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.specialistStreakKills.[2] "6" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.specialistStreaks.[0] "specialty_fastreload_ks" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.specialistStreaks.[1] "specialty_longersprint_ks" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.specialistStreaks.[2] "specialty_detectexplosive_ks" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.specialistStreaksBeenPicked "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.weaponSetups.[0].attachment.[0] "xmags" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.weaponSetups.[0].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.weaponSetups.[0].buff "specialty_longerrange" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.weaponSetups.[0].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.weaponSetups.[0].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.weaponSetups.[0].weapon "iw5_striker" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.weaponSetups.[1].attachment.[0] "akimbo" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.weaponSetups.[1].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.weaponSetups.[1].buff "specialty_null" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.weaponSetups.[1].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.weaponSetups.[1].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].class.weaponSetups.[1].weapon "iw5_skorpion" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[1].juggernaut "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.assaultStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.assaultStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.assaultStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.deathstreak "specialty_juiced" // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.defenseStreaks.[0] "uav_support" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.defenseStreaks.[1] "stealth_airstrike" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.defenseStreaks.[2] "emp" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.inUse "1" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.name "SNIPER" |  | ||||||
| gameOpt defaultClasses.axis.[2].class.perks.[0] "throwingknife_mp" // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.perks.[1] "specialty_fastreload" // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.perks.[2] "specialty_quickdraw" // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.perks.[3] "specialty_bulletaccuracy" // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.perks.[5] "streaktype_support" // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.perks.[6] "specialty_tacticalinsertion" // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.specialistStreakKills.[0] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.specialistStreakKills.[1] "4" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.specialistStreakKills.[2] "6" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.specialistStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.specialistStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.specialistStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.specialistStreaksBeenPicked "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.weaponSetups.[0].attachment.[0] "xmags" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.weaponSetups.[0].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.weaponSetups.[0].buff "specialty_reducedsway" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.weaponSetups.[0].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.weaponSetups.[0].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.weaponSetups.[0].weapon "iw5_msr" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.weaponSetups.[1].attachment.[0] "tactical" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.weaponSetups.[1].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.weaponSetups.[1].buff "specialty_null" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.weaponSetups.[1].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.weaponSetups.[1].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].class.weaponSetups.[1].weapon "iw5_p99" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[2].juggernaut "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.assaultStreaks.[0] "predator_missile" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.assaultStreaks.[1] "littlebird_flock" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.assaultStreaks.[2] "helicopter_flares" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.deathstreak "specialty_grenadepulldeath" // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.defenseStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.defenseStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.defenseStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.inUse "1" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.name "LMG" |  | ||||||
| gameOpt defaultClasses.axis.[3].class.perks.[0] "c4_mp" // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.perks.[1] "specialty_scavenger" // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.perks.[2] "specialty_twoprimaries" // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.perks.[3] "specialty_stalker" // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.perks.[5] "streaktype_assault" // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.perks.[6] "specialty_portable_radar" // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.specialistStreakKills.[0] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.specialistStreakKills.[1] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.specialistStreakKills.[2] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.specialistStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.specialistStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.specialistStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.specialistStreaksBeenPicked "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.weaponSetups.[0].attachment.[0] "reflex" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.weaponSetups.[0].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.weaponSetups.[0].buff "specialty_lightweight" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.weaponSetups.[0].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.weaponSetups.[0].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.weaponSetups.[0].weapon "iw5_m60" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.weaponSetups.[1].attachment.[0] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.weaponSetups.[1].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.weaponSetups.[1].buff "specialty_lightweight" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.weaponSetups.[1].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.weaponSetups.[1].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].class.weaponSetups.[1].weapon "riotshield" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[3].juggernaut "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.assaultStreaks.[0] "ims" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.assaultStreaks.[1] "precision_airstrike" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.assaultStreaks.[2] "littlebird_support" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.deathstreak "specialty_finalstand" // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.defenseStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.defenseStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.defenseStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.inUse "1" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.name "SMG" |  | ||||||
| gameOpt defaultClasses.axis.[4].class.perks.[0] "c4_mp" // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.perks.[1] "specialty_scavenger" // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.perks.[2] "specialty_hardline" // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.perks.[3] "specialty_bulletaccuracy" // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.perks.[5] "streaktype_assault" // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.perks.[6] "specialty_portable_radar" // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.specialistStreakKills.[0] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.specialistStreakKills.[1] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.specialistStreakKills.[2] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.specialistStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.specialistStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.specialistStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.specialistStreaksBeenPicked "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.weaponSetups.[0].attachment.[0] "xmags" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.weaponSetups.[0].attachment.[1] "silencer" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.weaponSetups.[0].buff "specialty_bling" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.weaponSetups.[0].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.weaponSetups.[0].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.weaponSetups.[0].weapon "iw5_mp7" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.weaponSetups.[1].attachment.[0] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.weaponSetups.[1].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.weaponSetups.[1].buff "specialty_null" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.weaponSetups.[1].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.weaponSetups.[1].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].class.weaponSetups.[1].weapon "javelin" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[4].juggernaut "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.assaultStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.assaultStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.assaultStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.deathstreak "specialty_null" // [ specialty_null, specialty_juiced, specialty_revenge, specialty_finalstand, specialty_grenadepulldeath, specialty_c4death, specialty_stopping_power ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.defenseStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.defenseStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.defenseStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.inUse "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.name "Custom Class 6" |  | ||||||
| gameOpt defaultClasses.axis.[5].class.perks.[0] "specialty_null" // [ specialty_null, bouncingbetty_mp, frag_grenade_mp, semtex_mp, throwingknife_mp, claymore_mp, c4_mp ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.perks.[1] "specialty_null" // [ specialty_null, specialty_paint, specialty_fastreload, specialty_blindeye, specialty_longersprint, specialty_scavenger ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.perks.[2] "specialty_null" // [ specialty_null, specialty_quickdraw, _specialty_blastshield, specialty_hardline, specialty_coldblooded, specialty_twoprimaries ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.perks.[3] "specialty_null" // [ specialty_null, specialty_autospot, specialty_stalker, specialty_detectexplosive, specialty_bulletaccuracy, specialty_quieter ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.perks.[5] "specialty_null" // [ specialty_null, streaktype_specialist, streaktype_support, streaktype_assault ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.perks.[6] "specialty_null" // [ specialty_null, flash_grenade_mp, concussion_grenade_mp, specialty_scrambler, emp_grenade_mp, smoke_grenade_mp, trophy_mp, specialty_tacticalinsertion, specialty_portable_radar ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.specialistStreakKills.[0] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.specialistStreakKills.[1] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.specialistStreakKills.[2] "2" // [ 2, 3, 4, 5, 6, 7, 8, 9 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.specialistStreaks.[0] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.specialistStreaks.[1] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.specialistStreaks.[2] "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.specialistStreaksBeenPicked "0" // [ 0, 1 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.weaponSetups.[0].attachment.[0] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.weaponSetups.[0].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.weaponSetups.[0].buff "specialty_null" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.weaponSetups.[0].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.weaponSetups.[0].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.weaponSetups.[0].weapon "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.weaponSetups.[1].attachment.[0] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.weaponSetups.[1].attachment.[1] "none" // [ none, reflex, acog, grip, akimbo, thermal, shotgun, heartbeat, xmags, rof, eotech, tactical, vzscope, gl, gp25, m320, silencer, silencer02, silencer03, hamrhybrid, hybrid ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.weaponSetups.[1].buff "specialty_null" // [ specialty_marksman, specialty_bulletpenetration, specialty_bling, specialty_sharp_focus, specialty_holdbreathwhileads, specialty_reducedsway, specialty_longerrange, specialty_fastermelee, specialty_lightweight, specialty_moredamage, specialty_null ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.weaponSetups.[1].camo "none" // [ none, classic, snow, multi, d_urban, hex, choco, marine, snake, winter, blue, red, autumn, gold ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.weaponSetups.[1].reticle "none" // [ none, ret1, ret2, ret3, ret4, ret5, ret6 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].class.weaponSetups.[1].weapon "none" // [ 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 ] |  | ||||||
| gameOpt defaultClasses.axis.[5].juggernaut "0" // [ 0, 1 ] |  | ||||||
| gameOpt demData.bombTimer "0" // [ 0-120 ] |  | ||||||
| gameOpt demData.defuseTime "0.0000" // [ 0-10 ] |  | ||||||
| gameOpt demData.extraTime "0.0000" // [ 0-5 ] |  | ||||||
| gameOpt demData.plantTime "0.0000" // [ 0-10 ] |  | ||||||
| gameOpt demData.roundSwitch "0" // [ 0, 1, 2, 3, 4 ] |  | ||||||
| gameOpt gametype "dom" // [ war, dm, sd, sab, dom, koth, ctf, dd, tdef, conf, grnd, tjugg, jugg, gun, infect, oic ] |  | ||||||
| gameOpt grndData.dropTime "0.0000" // [ 0-120 ] |  | ||||||
| gameOpt grndData.zoneSwitchTime "0.0000" // [ 0-5 ] |  | ||||||
| gameOpt gunData.guns.[0] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[1] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[2] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[3] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[4] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[5] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[6] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[7] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[8] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[9] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[10] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[11] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[12] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[13] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[14] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[15] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[16] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[17] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[18] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.guns.[19] "none" // [ 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 ] |  | ||||||
| gameOpt gunData.numGuns "0" // [ 0-20 ] |  | ||||||
| gameOpt gunData.randomize "0" // [ 0, 1 ] |  | ||||||
| gameOpt hqData.HQActivateDelay "0" // [ 0-60 ] |  | ||||||
| gameOpt hqData.HQLifetime "0" // [ 0-120 ] |  | ||||||
| gameOpt infectData.numInitialInfected "0" // [ 0-9 ] |  | ||||||
| gameOpt juggData.respawnNewJugg "0" // [ 0, 1 ] |  | ||||||
| gameOpt juggData.showJuggRadarIcon "0" // [ 0, 1 ] |  | ||||||
| gameOpt juggData.showJuggWorldIcon "0" // [ 0, 1 ] |  | ||||||
| gameOpt juggData.useJuggTimeLimit "0" |  | ||||||
| gameOpt oicData.initialAmmoCount "0" // [ 1, 0-15 ] |  | ||||||
| gameOpt oicData.killRewardAmmoCount "0" // [ 1, 0-15 ] |  | ||||||
| gameOpt oicData.oneShotKill "0" // [ 0, 1 ] |  | ||||||
| gameOpt oicData.weapon "none" // [ 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, xm25 ] |  | ||||||
| gameOpt sabData.bombTimer "0" // [ 5, 0-120 ] |  | ||||||
| gameOpt sabData.defuseTime "0.0000" // [ 5, 0-10 ] |  | ||||||
| gameOpt sabData.plantTime "0.0000" // [ 1, 0-10 ] |  | ||||||
| gameOpt sabData.sharedBombTimer "0" // [ 0, 1 ] |  | ||||||
| gameOpt sdData.bombTimer "0" // [ 0-60 ] |  | ||||||
| gameOpt sdData.defuseTime "0.0000" // [ 0-10 ] |  | ||||||
| gameOpt sdData.multiBomb "0" // [ 0, 1 ] |  | ||||||
| gameOpt sdData.plantTime "0.0000" // [ 0-10 ] |  | ||||||
| gameOpt sdData.roundLength "0.0000" // [ 0-10 ] |  | ||||||
| gameOpt sdData.roundSwitch "0" // [ 0-4 ] |  | ||||||
| gameOpt tdefData.enemyFlagRadar "0" // [ 0, 1 ] |  | ||||||
| gameOpt tjuggData.juggSwitchTime "0.0000" // [ 0-120 ] |  | ||||||
| Before Width: | Height: | Size: 731 KiB After Width: | Height: | Size: 731 KiB | 
| Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 172 KiB | 
| Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 1.7 MiB | 
| Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 1.7 MiB | 
| Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 1.6 MiB | 
| Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 194 KiB | 
| Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB | 
| Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB | 
| Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 1.7 MiB | 
| Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB | 
							
								
								
									
										
											BIN
										
									
								
								bw-assets/wp-editor-wps-path.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 6.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								bw-assets/wp-editor-wps.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 44 KiB | 
| @@ -13,15 +13,15 @@ Now if you want to modify existing or create new waypoints for PlutoniumIW5 maps | |||||||
| The Bot Warfare mod comes with the Waypoint Editor out of the box, so its just a matter of telling the mod you want to use it. Its a matter of setting the 'bots_main_debug' DVAR to '1'. | The Bot Warfare mod comes with the Waypoint Editor out of the box, so its just a matter of telling the mod you want to use it. Its a matter of setting the 'bots_main_debug' DVAR to '1'. | ||||||
| 
 | 
 | ||||||
| Start your game, and load up the Bot Warfare mod. Now open your console with tilde(~).<br> | Start your game, and load up the Bot Warfare mod. Now open your console with tilde(~).<br> | ||||||
|  |  | ||||||
| 
 | 
 | ||||||
| In the console, type in ```set bots_main_debug 1```<br> | In the console, type in ```set bots_main_debug 1```<br> | ||||||
|  |  | ||||||
| 
 | 
 | ||||||
| Now start a match with the map you want to edit. | Now start a match with the map you want to edit. | ||||||
| 
 | 
 | ||||||
| ## The Editor | ## The Editor | ||||||
| <br> | <br> | ||||||
| This is the Waypoint Editor. You can view, edit and create the waypoint graph. | This is the Waypoint Editor. You can view, edit and create the waypoint graph. | ||||||
| - Each death icons you see are waypoints. | - Each death icons you see are waypoints. | ||||||
| - Each line of knives show the links between the waypoints, a link defines that a bot can walk from A to B. | - Each line of knives show the links between the waypoints, a link defines that a bot can walk from A to B. | ||||||
| @@ -59,10 +59,10 @@ Pressing any of these buttons will initiate a command to the Waypoint Editor. | |||||||
| Okay, now that you know how to control the Editor, lets now goahead and create some waypoints. | Okay, now that you know how to control the Editor, lets now goahead and create some waypoints. | ||||||
| 
 | 
 | ||||||
| Here I added a waypoint.<br> | Here I added a waypoint.<br> | ||||||
|  |  | ||||||
| 
 | 
 | ||||||
| And I added a second waypoint.<br> | And I added a second waypoint.<br> | ||||||
|  |  | ||||||
| 
 | 
 | ||||||
| There are several types of waypoints, holding a modifier button before pressing the add waypoint button will create a special type of waypoint. | There are several types of waypoints, holding a modifier button before pressing the add waypoint button will create a special type of waypoint. | ||||||
| - Types of waypoints: | - Types of waypoints: | ||||||
| @@ -75,7 +75,7 @@ There are several types of waypoints, holding a modifier button before pressing | |||||||
|   - javelin - bots will use the javelin and lockon at the target location |   - javelin - bots will use the javelin and lockon at the target location | ||||||
| 
 | 
 | ||||||
| Here I linked the two waypoints together.<br> | Here I linked the two waypoints together.<br> | ||||||
|  |  | ||||||
| 
 | 
 | ||||||
| Linking waypoints are very important, it tells the bots that they can reach waypoint 1 from waypoint 0, and vice versa. | Linking waypoints are very important, it tells the bots that they can reach waypoint 1 from waypoint 0, and vice versa. | ||||||
| 
 | 
 | ||||||
| @@ -84,19 +84,29 @@ Now go and waypoint the whole map out. This may take awhile and can be pretty te | |||||||
| Once you feel like you are done, press the Save button. This will output the waypoints to your `games_mp.log` file. | Once you feel like you are done, press the Save button. This will output the waypoints to your `games_mp.log` file. | ||||||
| 
 | 
 | ||||||
| Your `games_mp.log` can be located at the `C:\Users\<LOGINNAME>\AppData\Plutonium\storage\iw5` folder.<br> | Your `games_mp.log` can be located at the `C:\Users\<LOGINNAME>\AppData\Plutonium\storage\iw5` folder.<br> | ||||||
|  |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| The editor will generate some GSC code for the waypoints.<br> | The editor will generate some GSC code for the waypoints.<br> | ||||||
| <br> | <br> | ||||||
| This is the GSC function that will generate the waypoints for the map. If you have trouble beyond this point, simply create an Issue and provide the output from here, I can do the rest from there. | This is the GSC function that will generate the waypoints for the map. If you have trouble beyond this point, simply create an Issue and provide the output from here, I can do the rest from there. | ||||||
| 
 | 
 | ||||||
| You can create/replace the map's waypoints GSC file with the function in `games_mp.log`. Just copy and paste the function into the `maps\mp\bots\waypoints\<MAPNAME>.gsc` file.<br> | You can create/replace the map's waypoints GSC file with the function in `games_mp.log`.   | ||||||
|  | Just copy and paste the function into the `scripts\mp\<MAPNAME>\<WAYPOINT>.gsc` file.   | ||||||
|  | If you're working with a custom map you might need to create the folder with your map's name.   | ||||||
|  | Then inside that newly created folder put your waypoints GSC file.   | ||||||
|  | Make sure to have it named `wps_mapname`.   | ||||||
|  | Also you need to add this `main` function at the topc of your waypoints GSC file to ensure Bot Warfare will load your waypoints. Replace `Dome` with the name of the function in your file. | ||||||
|  | ``` | ||||||
|  | main() | ||||||
|  | { | ||||||
|  |     level.waypoints = Dome(); | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  | <br> | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| The waypoints are loaded in the `maps\mp\bots\_bot_utility::load_waypoints()` function. Make changes accordingly to have Bot Warfare load your waypoints.<br> | Now Bot Warfare will use your waypoints you've created!   | ||||||
|  |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Now Bot Warfare will use your waypoints you've created! Create a pull request to have your waypoints included in the mod if you like, any help is greatly appreciated. |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								ci/30.gscbin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								ci/366.gscbin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								ci/851.gscbin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										6
									
								
								ci/gsc-tool.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,6 @@ | |||||||
|  | @echo off | ||||||
|  |  | ||||||
|  | xcopy /y .\ci\*.gscbin .\ | ||||||
|  | rm .\scripts\mp\bots_adapter_piw5.gsc | ||||||
|  |  | ||||||
|  | gsc-tool.exe -m comp -g iw5 -s pc .\ | ||||||
							
								
								
									
										10
									
								
								ci/pregsc.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,10 @@ | |||||||
|  | @echo off | ||||||
|  |  | ||||||
|  | if not exist ".\source\" mkdir .\source\ | ||||||
|  | if not exist ".\source\scripts\" mkdir .\source\scripts\ | ||||||
|  | if not exist ".\source\maps\" mkdir .\source\maps\ | ||||||
|  |  | ||||||
|  | xcopy /y /s /e .\scripts\ .\source\scripts\ | ||||||
|  | xcopy /y /s /e .\maps\ .\source\maps\ | ||||||
|  |  | ||||||
|  | preGSC.exe -noforeach -nopause -infold .\source\ -outfold .\pregsc\ | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| xcopy piw5_bot_warfare\raw\maps raw\maps\ /Y /I /E /H /C |  | ||||||
| xcopy piw5_bot_warfare\raw\scripts raw\scripts\ /Y /I /E /H /C |  | ||||||
| xcopy piw5_bot_warfare\admin admin\ /Y /I /E /H /C |  | ||||||
| xcopy piw5_bot_warfare\raw\bots.txt raw\ /Y /I /H /C |  | ||||||
							
								
								
									
										54
									
								
								deploy.js
									
									
									
									
									
								
							
							
						
						| @@ -1,54 +0,0 @@ | |||||||
| // nodejs 14+ |  | ||||||
|  |  | ||||||
| const exec = require('util').promisify(require('child_process').exec) |  | ||||||
|  |  | ||||||
| const repo_name = 'piw5_bot_warfare' |  | ||||||
| const repo_url = `https://github.com/ineedbots/${repo_name}` |  | ||||||
| const deploy_check_rate = 60000 |  | ||||||
| const title = 'PIW5 Bot Warfare Git Deployer' |  | ||||||
|  |  | ||||||
| function printToConsole(what, error = false) |  | ||||||
| { |  | ||||||
|   log = error ? console.error : console.log |  | ||||||
|  |  | ||||||
|   log(`[${new Date().toISOString()}]:`, what) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| async function doDeploy() { |  | ||||||
|   try { |  | ||||||
|     const { stdout, stderr } = await exec(`cd ${repo_name} && git fetch`) |  | ||||||
|  |  | ||||||
|     if (stderr.length <= 0) |  | ||||||
|       return |  | ||||||
|  |  | ||||||
|     if (stderr.startsWith('From ')) |  | ||||||
|     { |  | ||||||
|       printToConsole('git fetched! Pulling...') |  | ||||||
|       await exec(`cd ${repo_name} && git pull && git submodule update --init --recursive`) |  | ||||||
|       printToConsole('Deploying...') |  | ||||||
|       await exec('deploy.bat') |  | ||||||
|       printToConsole('Deployed!') |  | ||||||
|     } |  | ||||||
|   } catch (e) { |  | ||||||
|     printToConsole(e, true) |  | ||||||
|  |  | ||||||
|     if (!e.stderr.startsWith('The system cannot find the path specified')) |  | ||||||
|       return |  | ||||||
|  |  | ||||||
|     printToConsole('Cloning repo...') |  | ||||||
|     try { |  | ||||||
|       await exec(`git clone ${repo_url} && cd ${repo_name} && git submodule update --init --recursive`) |  | ||||||
|  |  | ||||||
|       printToConsole('Cloned!') |  | ||||||
|       printToConsole('Deploying...') |  | ||||||
|       await exec('deploy.bat') |  | ||||||
|       printToConsole('Deployed!') |  | ||||||
|     } catch (f) { |  | ||||||
|       printToConsole(f, true) |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| process.stdout.write(`${String.fromCharCode(27)}]0;${title}${String.fromCharCode(7)}`) |  | ||||||
| doDeploy() |  | ||||||
| setInterval(doDeploy, deploy_check_rate) |  | ||||||
							
								
								
									
										1657
									
								
								maps/mp/bots/_bot.gsc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										3569
									
								
								maps/mp/bots/_bot_internal.gsc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										3900
									
								
								maps/mp/bots/_bot_utility.gsc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1389
									
								
								maps/mp/bots/_menu.gsc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1084
									
								
								maps/mp/bots/_wp_editor.gsc
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -1,46 +0,0 @@ | |||||||
| # PlutoniumIW5 Bot Warfare v2.1.0 |  | ||||||
| Bot Warfare is a GSC mod for the PlutoniumIW5 project. |  | ||||||
|  |  | ||||||
| It aims to add playable AI to the multiplayer games of Modern Warfare 3. |  | ||||||
|  |  | ||||||
| You can find the GitHub containing more info at https://github.com/ineedbots/piw5_bot_warfare |  | ||||||
|  |  | ||||||
| ## Installation |  | ||||||
| 0. Make sure that PlutoniumIW5 is installed, updated and working properly. |  | ||||||
| 1. Extract all the files from this archive to anywhere on your computer. |  | ||||||
| 2. Run the 'install.bat'. This copies the mod to your PlutoniumIW5 storage folder. |  | ||||||
| 3. The mod is now installed, now run your game. |  | ||||||
| 4. The mod should be loaded! Now go start a map and play! |  | ||||||
|  |  | ||||||
| ## Menu Usage |  | ||||||
| - You can open the menu by pressing the Action Slot 1 key (default 'N', nightvision key). |  | ||||||
|  |  | ||||||
| - You can navigate the options by pressing your movement keys (default WASD), and you can select options by pressing your jump key (default SPACE). |  | ||||||
|  |  | ||||||
| - Pressing the menu button again closes menus. |  | ||||||
|  |  | ||||||
| ## Changelog |  | ||||||
| - v2.1.0 |  | ||||||
|   - Initial release (sync'd versions with other Bot Warfares) |  | ||||||
|  |  | ||||||
| ## Credits |  | ||||||
| - Plutonium Team - https://plutonium.pw/ |  | ||||||
| - CoD4x Team - https://github.com/callofduty4x/CoD4x_Server |  | ||||||
| - INeedGames - http://www.moddb.com/mods/bot-warfare |  | ||||||
| - tinkie101 - https://web.archive.org/web/20120326060712/http://alteriw.net/viewtopic.php?f=72&t=4869 |  | ||||||
| - PeZBot team - http://www.moddb.com/mods/pezbot |  | ||||||
| - apdonato - http://rsebots.blogspot.ca/ |  | ||||||
| - Ability |  | ||||||
| - Salvation |  | ||||||
|  |  | ||||||
| ## Waypoint Creators |  | ||||||
| - FragsAreUs - https://github.com/FragsAreUs |  | ||||||
| - Aesirix - https://github.com/Aesirix |  | ||||||
| - EpikIzCool - https://github.com/super23 |  | ||||||
| - doa3 - https://github.com/doa3 |  | ||||||
| - ghostwulf - https://github.com/ghostwulf |  | ||||||
| - LeRutY - https://github.com/LeRutY |  | ||||||
| - GaryTheNoTrashCougar - https://github.com/GaryTheNoTrashCougar |  | ||||||
|  |  | ||||||
| Feel free to use code, host on other sites, host on servers, mod it and merge mods with it, just give credit where credit is due! |  | ||||||
| 	-INeedGames/INeedBot(s) @ ineedbots@outlook.com |  | ||||||
| @@ -1,2 +0,0 @@ | |||||||
| xcopy z_svr_bots.iwd "%LOCALAPPDATA%"\Plutonium\storage\iw5\ /Y |  | ||||||
| pause |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								out/ss.jpg
									
									
									
									
									
								
							
							
						
						| Before Width: | Height: | Size: 1.3 MiB | 
							
								
								
									
										26
									
								
								raw/bots.txt
									
									
									
									
									
								
							
							
						
						| @@ -1,26 +0,0 @@ | |||||||
| a |  | ||||||
| b |  | ||||||
| c |  | ||||||
| d |  | ||||||
| e |  | ||||||
| f |  | ||||||
| g |  | ||||||
| h |  | ||||||
| i |  | ||||||
| j |  | ||||||
| k |  | ||||||
| l |  | ||||||
| m |  | ||||||
| n |  | ||||||
| o |  | ||||||
| p |  | ||||||
| q |  | ||||||
| r |  | ||||||
| s |  | ||||||
| t |  | ||||||
| u |  | ||||||
| v |  | ||||||
| w |  | ||||||
| x |  | ||||||
| y |  | ||||||
| z |  | ||||||
| Before Width: | Height: | Size: 29 KiB | 
| @@ -1,964 +0,0 @@ | |||||||
| /* |  | ||||||
| 	_wp_editor |  | ||||||
| 	Author: INeedGames |  | ||||||
| 	Date: 05/08/2021 |  | ||||||
| 	The ingame waypoint editor. |  | ||||||
| */ |  | ||||||
|  |  | ||||||
| #include common_scripts\utility; |  | ||||||
| #include maps\mp\_utility; |  | ||||||
| #include maps\mp\gametypes\_hud_util; |  | ||||||
| #include maps\mp\bots\_bot_utility; |  | ||||||
|  |  | ||||||
| init() |  | ||||||
| { |  | ||||||
| 	if ( getDvar( "bots_main_debug" ) == "" ) |  | ||||||
| 		setDvar( "bots_main_debug", 0 ); |  | ||||||
|  |  | ||||||
| 	if ( !getDVarint( "bots_main_debug" ) ) |  | ||||||
| 		return; |  | ||||||
|  |  | ||||||
| 	/*  if(!getDVarint("developer")) |  | ||||||
| 	    { |  | ||||||
| 		setdvar("developer_script", 1); |  | ||||||
| 		setdvar("developer", 1); |  | ||||||
|  |  | ||||||
| 		setdvar("sv_mapRotation", "map "+getDvar("mapname")); |  | ||||||
| 		exitLevel(false); |  | ||||||
| 	    }*/ |  | ||||||
|  |  | ||||||
| 	setDvar( "bots_main", 0 ); |  | ||||||
| 	setdvar( "bots_main_menu", 0 ); |  | ||||||
| 	setdvar( "bots_manage_fill_mode", 0 ); |  | ||||||
| 	setdvar( "bots_manage_fill", 0 ); |  | ||||||
| 	setdvar( "bots_manage_add", 0 ); |  | ||||||
| 	setdvar( "bots_manage_fill_kick", 1 ); |  | ||||||
| 	setDvar( "bots_manage_fill_spec", 1 ); |  | ||||||
|  |  | ||||||
| 	if ( getDvar( "bots_main_debug_distance" ) == "" ) |  | ||||||
| 		setDvar( "bots_main_debug_distance", 512.0 ); |  | ||||||
|  |  | ||||||
| 	if ( getDvar( "bots_main_debug_cone" ) == "" ) |  | ||||||
| 		setDvar( "bots_main_debug_cone", 0.65 ); |  | ||||||
|  |  | ||||||
| 	if ( getDvar( "bots_main_debug_minDist" ) == "" ) |  | ||||||
| 		setDvar( "bots_main_debug_minDist", 32.0 ); |  | ||||||
|  |  | ||||||
| 	if ( getDvar( "bots_main_debug_drawThrough" ) == "" ) |  | ||||||
| 		setDvar( "bots_main_debug_drawThrough", false ); |  | ||||||
|  |  | ||||||
| 	if ( getDvar( "bots_main_debug_updateRate" ) == "" ) |  | ||||||
| 		setDvar( "bots_main_debug_updateRate", 500 ); |  | ||||||
|  |  | ||||||
| 	if ( getDvar( "bots_main_debug_dashAmount" ) == "" ) |  | ||||||
| 		setDvar( "bots_main_debug_dashAmount", 35.0 ); |  | ||||||
|  |  | ||||||
| 	setDvar( "player_sustainAmmo", 1 ); |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	if ( !isDefined( level.waypoints ) ) |  | ||||||
| 		level.waypoints = []; |  | ||||||
|  |  | ||||||
| 	level.waypointCount = 0; |  | ||||||
|  |  | ||||||
| 	level waittill( "connected", player ); |  | ||||||
| 	player thread onPlayerSpawned(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| onPlayerSpawned() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
|  |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		self waittill( "spawned_player" ); |  | ||||||
| 		self thread startDev(); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| StartDev() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
| 	self endon( "death" ); |  | ||||||
|  |  | ||||||
| 	level.wpToLink = -1; |  | ||||||
| 	level.autoLink = false; |  | ||||||
| 	self.nearest = -1; |  | ||||||
|  |  | ||||||
| 	self takeAllWeapons(); |  | ||||||
| 	self giveWeapon( "iw5_m16_mp_gl" ); //to knife windows |  | ||||||
| 	self giveWeapon( "javelin_mp" ); //to mark jav spots |  | ||||||
| 	self SetOffhandPrimaryClass( "other" ); |  | ||||||
| 	self giveWeapon( "semtex_mp" ); |  | ||||||
| 	self _clearperks(); |  | ||||||
| 	self.specialty = []; |  | ||||||
| 	// need to find out how to setperks in mw3 |  | ||||||
| 	/*  self maps\mp\perks\_perks::givePerk("specialty_fastmantle"); |  | ||||||
| 	    self maps\mp\perks\_perks::givePerk("specialty_falldamage"); |  | ||||||
| 	    self maps\mp\perks\_perks::givePerk("specialty_marathon"); |  | ||||||
| 	    self maps\mp\perks\_perks::givePerk("specialty_lightweight");*/ |  | ||||||
| 	self freezecontrols( false ); |  | ||||||
|  |  | ||||||
| 	self thread watchAddWaypointCommand(); |  | ||||||
| 	self thread watchDeleteAllWaypointsCommand(); |  | ||||||
| 	self thread watchDeleteWaypointCommand(); |  | ||||||
| 	self thread watchLinkWaypointCommand(); |  | ||||||
| 	self thread watchLoadWaypointsCommand(); |  | ||||||
| 	self thread watchSaveWaypointsCommand(); |  | ||||||
| 	self thread watchUnlinkWaypointCommand(); |  | ||||||
| 	self thread watchAutoLinkCommand(); |  | ||||||
| 	self thread updateWaypointsStats(); |  | ||||||
| 	self thread watchAstarCommand(); |  | ||||||
|  |  | ||||||
| 	self thread sayExtras(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| sayExtras() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
| 	self endon( "death" ); |  | ||||||
| 	self iprintln( "Before adding waypoints, holding buttons:" ); |  | ||||||
| 	wait 4; |  | ||||||
| 	self iprintln( "ADS - climb" ); |  | ||||||
| 	self iprintln( "Use + Attack - tube" ); |  | ||||||
| 	self iprintln( "Attack - grenade" ); |  | ||||||
| 	self iprintln( "Use - claymore" ); |  | ||||||
| 	wait 4; |  | ||||||
| 	self iprintln( "Else the waypoint will be your stance." ); |  | ||||||
| 	self iprintln( "Making a crouch waypoint with only one link..." ); |  | ||||||
| 	self iprintln( "Makes a camping waypoint." ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| watchAstarCommand() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
| 	self endon( "death" ); |  | ||||||
|  |  | ||||||
| 	self notifyOnPlayerCommand( "astar", "+gostand" ); |  | ||||||
|  |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		self waittill( "astar" ); |  | ||||||
|  |  | ||||||
| 		if ( 1 ) |  | ||||||
| 			continue; |  | ||||||
|  |  | ||||||
| 		self iprintln( "Start AStar" ); |  | ||||||
| 		self.astar = undefined; |  | ||||||
| 		astar = spawnStruct(); |  | ||||||
| 		astar.start = self.origin; |  | ||||||
|  |  | ||||||
| 		self waittill( "astar" ); |  | ||||||
| 		self iprintln( "End AStar" ); |  | ||||||
| 		astar.goal = self.origin; |  | ||||||
|  |  | ||||||
| 		astar.nodes = AStarSearch( astar.start, astar.goal, undefined, true ); |  | ||||||
| 		self iprintln( "AStar size: " + astar.nodes.size ); |  | ||||||
|  |  | ||||||
| 		self.astar = astar; |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| drawWaypoint( i ) |  | ||||||
| { |  | ||||||
| 	if ( !isDefined( level.drawn_wps ) ) |  | ||||||
| 		level.drawn_wps = []; |  | ||||||
|  |  | ||||||
| 	newdeathicon = newHudElem(); |  | ||||||
| 	newdeathicon.x = level.waypoints[i].origin[0]; |  | ||||||
| 	newdeathicon.y = level.waypoints[i].origin[1]; |  | ||||||
| 	newdeathicon.z = level.waypoints[i].origin[2] + 50; |  | ||||||
| 	newdeathicon.alpha = .61; |  | ||||||
| 	newdeathicon.archived = true; |  | ||||||
| 	newdeathicon setShader( "headicon_dead", 5, 5 ); |  | ||||||
| 	newdeathicon setwaypoint( true, false ); |  | ||||||
|  |  | ||||||
| 	level.drawn_wps[level.drawn_wps.size] = newdeathicon; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| drawPath( where ) |  | ||||||
| { |  | ||||||
| 	if ( !isDefined( level.drawn_wps ) ) |  | ||||||
| 		level.drawn_wps = []; |  | ||||||
|  |  | ||||||
| 	newdeathicon = newHudElem(); |  | ||||||
| 	newdeathicon.x = where[0]; |  | ||||||
| 	newdeathicon.y = where[1]; |  | ||||||
| 	newdeathicon.z = where[2] + 20; |  | ||||||
| 	newdeathicon.alpha = .61; |  | ||||||
| 	newdeathicon.archived = true; |  | ||||||
| 	newdeathicon setShader( "headicon_dead", 5, 5 ); |  | ||||||
| 	newdeathicon setwaypoint( true, false ); |  | ||||||
|  |  | ||||||
| 	level.drawn_wps[level.drawn_wps.size] = newdeathicon; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| clearWaypoints() |  | ||||||
| { |  | ||||||
| 	if ( !isDefined( level.drawn_wps ) ) |  | ||||||
| 		return; |  | ||||||
|  |  | ||||||
| 	for ( i = 0; i < level.drawn_wps.size; i++ ) |  | ||||||
| 	{ |  | ||||||
| 		level.drawn_wps[i] destroy(); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	level.drawn_wps = []; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| clearWpLinks() |  | ||||||
| { |  | ||||||
| 	if ( !isDefined( level.drawn_links ) ) |  | ||||||
| 		return; |  | ||||||
|  |  | ||||||
| 	for ( i = 0; i < level.waypointCount; i++ ) |  | ||||||
| 	{ |  | ||||||
| 		level.waypoints[i].drawn_links = []; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	for ( i = 0; i < level.drawn_links.size; i++ ) |  | ||||||
| 	{ |  | ||||||
| 		level.drawn_links[i] delete (); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	level.drawn_links = []; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| showWpLink( i, h ) |  | ||||||
| { |  | ||||||
| 	if ( !isDefined( level.drawn_links ) ) |  | ||||||
| 		level.drawn_links = []; |  | ||||||
|  |  | ||||||
| 	if ( !isDefined( level.waypoints[i].drawn_links ) ) |  | ||||||
| 		level.waypoints[i].drawn_links = []; |  | ||||||
|  |  | ||||||
| 	if ( !isDefined( level.waypoints[h].drawn_links ) ) |  | ||||||
| 		level.waypoints[h].drawn_links = []; |  | ||||||
|  |  | ||||||
| 	if ( isDefined( level.waypoints[h].drawn_links["" + i] ) || isDefined( level.waypoints[i].drawn_links["" + h] ) ) |  | ||||||
| 		return; |  | ||||||
|  |  | ||||||
| 	level.waypoints[h].drawn_links["" + i] = true; |  | ||||||
| 	level.waypoints[i].drawn_links["" + h] = true; |  | ||||||
|  |  | ||||||
| 	start = level.waypoints[i].origin + ( 0, 0, 45 ); |  | ||||||
| 	end = level.waypoints[h].origin + ( 0, 0, 45 ); |  | ||||||
| 	diff = end - start; |  | ||||||
| 	dir = VectorToAngles( diff ); |  | ||||||
|  |  | ||||||
| 	dist = distance( start, end ); |  | ||||||
| 	dash_count = int( dist / getDvarFloat( "bots_main_debug_dashAmount" ) ); |  | ||||||
|  |  | ||||||
| 	for ( j = 0; j < dash_count; j++ ) |  | ||||||
| 	{ |  | ||||||
| 		dash = spawn( "script_model", start + ( ( diff * j ) / dash_count ) ); |  | ||||||
| 		dash setModel( "weapon_parabolic_knife" ); |  | ||||||
| 		dash.angles = dir; |  | ||||||
|  |  | ||||||
| 		level.drawn_links[level.drawn_links.size] = dash; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	dash = spawn( "script_model", end ); |  | ||||||
| 	dash setModel( "weapon_parabolic_knife" ); |  | ||||||
| 	dash.angles = dir; |  | ||||||
|  |  | ||||||
| 	level.drawn_links[level.drawn_links.size] = dash; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| updateWaypointsStats() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
| 	self endon( "death" ); |  | ||||||
|  |  | ||||||
| 	self initHudElem( "TotalWps:", 102, 5 ); |  | ||||||
| 	totalWpsHud = self initHudElem( "", 180, 5 ); |  | ||||||
| 	self initHudElem( "NearestWP:", 102, 15 ); |  | ||||||
| 	nearestWP = self initHudElem( "", 180, 15 ); |  | ||||||
| 	self initHudElem( "Childs:", 102, 25 ); |  | ||||||
| 	children = self initHudElem( "", 160, 25 ); |  | ||||||
| 	self initHudElem( "Type:", 102, 35 ); |  | ||||||
| 	type = self initHudElem( "", 160, 35 ); |  | ||||||
| 	self initHudElem( "ToLink:", 102, 45 ); |  | ||||||
| 	wpToLink = self initHudElem( "", 160, 45 ); |  | ||||||
|  |  | ||||||
| 	infotext = self initHudElem2(); |  | ||||||
| 	self initHudElem3(); |  | ||||||
| 	self initHudElem4(); |  | ||||||
|  |  | ||||||
| 	intTimer = 0; |  | ||||||
|  |  | ||||||
| 	for ( time = 0;; time += 0.05 ) |  | ||||||
| 	{ |  | ||||||
| 		wait 0.05; |  | ||||||
| 		intTimer += 50; |  | ||||||
|  |  | ||||||
| 		totalWpsHud setValue( level.waypointCount ); |  | ||||||
|  |  | ||||||
| 		closest = -1; |  | ||||||
| 		myEye = self getEye(); |  | ||||||
| 		myAngles = self GetPlayerAngles(); |  | ||||||
| 		timeToUpdate = ( ( intTimer % getDvarInt( "bots_main_debug_updateRate" ) ) == 0 ); |  | ||||||
|  |  | ||||||
| 		if ( timeToUpdate ) |  | ||||||
| 		{ |  | ||||||
| 			clearWaypoints(); |  | ||||||
| 			clearWpLinks(); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		for ( i = 0; i < level.waypointCount; i++ ) |  | ||||||
| 		{ |  | ||||||
| 			if ( closest == -1 || closer( self.origin, level.waypoints[i].origin, level.waypoints[closest].origin ) ) |  | ||||||
| 				closest = i; |  | ||||||
|  |  | ||||||
| 			wpOrg = level.waypoints[i].origin + ( 0, 0, 25 ); |  | ||||||
|  |  | ||||||
| 			if ( distance( level.waypoints[i].origin, self.origin ) < getDvarFloat( "bots_main_debug_distance" ) && ( bulletTracePassed( myEye, wpOrg, false, self ) || getDVarint( "bots_main_debug_drawThrough" ) ) ) |  | ||||||
| 			{ |  | ||||||
| 				if ( timeToUpdate ) |  | ||||||
| 				{ |  | ||||||
| 					if ( getConeDot( wpOrg, myEye, myAngles ) > getDvarFloat( "bots_main_debug_cone" ) ) |  | ||||||
| 					{ |  | ||||||
| 						drawWaypoint( i ); |  | ||||||
|  |  | ||||||
| 						for ( h = level.waypoints[i].children.size - 1; h >= 0; h-- ) |  | ||||||
| 							showWpLink( i, level.waypoints[i].children[h] ); |  | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
|  |  | ||||||
| 				// mw3 doesnt have debug gsc calls :( |  | ||||||
| 				/*  for(h = level.waypoints[i].children.size - 1; h >= 0; h--) |  | ||||||
| 					line(wpOrg, level.waypoints[level.waypoints[i].children[h]].origin + (0, 0, 25), (1,0,1)); |  | ||||||
|  |  | ||||||
| 				    if(getConeDot(wpOrg, myEye, myAngles) > getDvarFloat("bots_main_debug_cone")) |  | ||||||
| 					print3d(wpOrg, i, (1,0,0), 2); |  | ||||||
|  |  | ||||||
| 				    if (isDefined(level.waypoints[i].angles) && level.waypoints[i].type != "stand") |  | ||||||
| 					line(wpOrg, wpOrg + AnglesToForward(level.waypoints[i].angles) * 64, (1,1,1)); |  | ||||||
|  |  | ||||||
| 				    if (isDefined(level.waypoints[i].jav_point)) |  | ||||||
| 					line(wpOrg, level.waypoints[i].jav_point, (0,0,0));*/ |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		self.nearest = closest; |  | ||||||
|  |  | ||||||
| 		nearestWP setValue( self.nearest ); |  | ||||||
|  |  | ||||||
| 		children setValue( buildChildCountString( self.nearest ) ); |  | ||||||
|  |  | ||||||
| 		type setText( buildTypeString( self.nearest ) ); |  | ||||||
|  |  | ||||||
| 		wpToLink setValue( level.wpToLink ); |  | ||||||
|  |  | ||||||
| 		infotext.x = infotext.x - 2; |  | ||||||
|  |  | ||||||
| 		if ( infotext.x <= -800 ) |  | ||||||
| 			infotext.x = 800; |  | ||||||
|  |  | ||||||
| 		if ( time > 2 && self UseButtonPressed() ) |  | ||||||
| 		{ |  | ||||||
| 			time = 0; |  | ||||||
| 			self iPrintLnBold( self.nearest + " children:  " + buildChildString( self.nearest ) ); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		if ( isDefined( self.astar ) ) |  | ||||||
| 		{ |  | ||||||
| 			//print3d(self.astar.start + (0, 0, 35), "start", (0,0,1), 2); |  | ||||||
| 			//print3d(self.astar.goal + (0, 0, 35), "goal", (0,0,1), 2); |  | ||||||
| 			if ( timeToUpdate ) |  | ||||||
| 			{ |  | ||||||
| 				drawPath( self.astar.start ); |  | ||||||
| 				drawPath( self.astar.goal ); |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			prev = self.astar.start + ( 0, 0, 35 ); |  | ||||||
|  |  | ||||||
| 			for ( i = self.astar.nodes.size - 1; i >= 0; i-- ) |  | ||||||
| 			{ |  | ||||||
| 				node = self.astar.nodes[i]; |  | ||||||
|  |  | ||||||
| 				//line(prev, level.waypoints[node].origin + (0, 0, 35), (0,1,1)); |  | ||||||
| 				if ( timeToUpdate ) drawPath( level.waypoints[node].origin ); |  | ||||||
|  |  | ||||||
| 				prev = level.waypoints[node].origin + ( 0, 0, 35 ); |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			//line(prev, self.astar.goal + (0, 0, 35), (0,1,1)); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| watchLoadWaypointsCommand() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
| 	self endon( "death" ); |  | ||||||
|  |  | ||||||
| 	self notifyOnPlayerCommand( "[{+actionslot 5}]", "+actionslot 5" ); |  | ||||||
|  |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		self waittill( "[{+actionslot 5}]" ); |  | ||||||
| 		self LoadWaypoints(); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| watchAddWaypointCommand() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
| 	self endon( "death" ); |  | ||||||
|  |  | ||||||
| 	self notifyOnPlayerCommand( "[{+smoke}]", "+smoke" ); |  | ||||||
|  |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		self waittill( "[{+smoke}]" ); |  | ||||||
| 		self AddWaypoint(); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| watchAutoLinkCommand() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
| 	self endon( "death" ); |  | ||||||
|  |  | ||||||
| 	self notifyOnPlayerCommand( "[{+frag}]", "+frag" ); |  | ||||||
|  |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		self waittill( "[{+frag}]" ); |  | ||||||
|  |  | ||||||
| 		if ( level.autoLink ) |  | ||||||
| 		{ |  | ||||||
| 			self iPrintlnBold( "Auto link disabled" ); |  | ||||||
| 			level.autoLink = false; |  | ||||||
| 			level.wpToLink = -1; |  | ||||||
| 		} |  | ||||||
| 		else |  | ||||||
| 		{ |  | ||||||
| 			self iPrintlnBold( "Auto link enabled" ); |  | ||||||
| 			level.autoLink = true; |  | ||||||
| 			level.wpToLink = self.nearest; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| watchLinkWaypointCommand() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
| 	self endon( "death" ); |  | ||||||
|  |  | ||||||
| 	self notifyOnPlayerCommand( "[{+melee_zoom}]", "+melee_zoom" ); |  | ||||||
|  |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		self waittill( "[{+melee_zoom}]" ); |  | ||||||
| 		self LinkWaypoint( self.nearest ); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| watchUnlinkWaypointCommand() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
| 	self endon( "death" ); |  | ||||||
|  |  | ||||||
| 	self notifyOnPlayerCommand( "[{+reload}]", "+reload" ); |  | ||||||
|  |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		self waittill( "[{+reload}]" ); |  | ||||||
| 		self UnLinkWaypoint( self.nearest ); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| watchDeleteWaypointCommand() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
| 	self endon( "death" ); |  | ||||||
|  |  | ||||||
| 	self notifyOnPlayerCommand( "[{+actionslot 3}]", "+actionslot 3" ); |  | ||||||
|  |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		self waittill( "[{+actionslot 3}]" ); |  | ||||||
| 		self DeleteWaypoint( self.nearest ); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| watchDeleteAllWaypointsCommand() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
| 	self endon( "death" ); |  | ||||||
|  |  | ||||||
| 	self notifyOnPlayerCommand( "[{+actionslot 4}]", "+actionslot 4" ); |  | ||||||
|  |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		self waittill( "[{+actionslot 4}]" ); |  | ||||||
| 		self DeleteAllWaypoints(); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| watchSaveWaypointsCommand() |  | ||||||
| { |  | ||||||
| 	self endon( "death" ); |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
|  |  | ||||||
| 	self notifyOnPlayerCommand( "[{+actionslot 1}]", "+actionslot 1" ); |  | ||||||
|  |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		self waittill( "[{+actionslot 1}]" ); |  | ||||||
|  |  | ||||||
| 		self checkForWarnings(); |  | ||||||
| 		wait 1; |  | ||||||
|  |  | ||||||
| 		logprint( "***********ABiliTy's WPDump**************\n\n" ); |  | ||||||
| 		logprint( "\n\n\n\n" ); |  | ||||||
| 		mpnm = getMapName( getdvar( "mapname" ) ); |  | ||||||
| 		logprint( "\n\n" + mpnm + "()\n{\n/*" ); |  | ||||||
| 		logprint( "*/waypoints = [];\n/*" ); |  | ||||||
|  |  | ||||||
| 		for ( i = 0; i < level.waypointCount; i++ ) |  | ||||||
| 		{ |  | ||||||
| 			logprint( "*/waypoints[" + i + "] = spawnstruct();\n/*" ); |  | ||||||
| 			logprint( "*/waypoints[" + i + "].origin = " + level.waypoints[i].origin + ";\n/*" ); |  | ||||||
| 			logprint( "*/waypoints[" + i + "].type = \"" + level.waypoints[i].type + "\";\n/*" ); |  | ||||||
|  |  | ||||||
| 			for ( c = 0; c < level.waypoints[i].children.size; c++ ) |  | ||||||
| 			{ |  | ||||||
| 				logprint( "*/waypoints[" + i + "].children[" + c + "] = " + level.waypoints[i].children[c] + ";\n/*" ); |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			if ( isDefined( level.waypoints[i].angles ) && ( level.waypoints[i].type == "claymore" || level.waypoints[i].type == "tube" || ( level.waypoints[i].type == "crouch" && level.waypoints[i].children.size == 1 ) || level.waypoints[i].type == "climb" || level.waypoints[i].type == "grenade" ) ) |  | ||||||
| 				logprint( "*/waypoints[" + i + "].angles = " + level.waypoints[i].angles + ";\n/*" ); |  | ||||||
|  |  | ||||||
| 			if ( isDefined( level.waypoints[i].jav_point ) && level.waypoints[i].type == "javelin" ) |  | ||||||
| 				logprint( "*/waypoints[" + i + "].jav_point = " + level.waypoints[i].jav_point + ";\n/*" ); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		logprint( "*/return waypoints;\n}\n\n\n\n" ); |  | ||||||
|  |  | ||||||
| 		filename = "waypoints/" + getdvar( "mapname" ) + "_wp.csv"; |  | ||||||
|  |  | ||||||
| 		PrintLn( "********* Start Bot Warfare WPDump *********" ); |  | ||||||
| 		PrintLn( level.waypointCount ); |  | ||||||
|  |  | ||||||
| 		//fileWrite(filename, level.waypointCount+"\n", "write"); |  | ||||||
| 		for ( i = 0; i < level.waypointCount; i++ ) |  | ||||||
| 		{ |  | ||||||
| 			str = ""; |  | ||||||
| 			wp = level.waypoints[i]; |  | ||||||
|  |  | ||||||
| 			str += wp.origin[0] + " " + wp.origin[1] + " " + wp.origin[2] + ","; |  | ||||||
|  |  | ||||||
| 			for ( h = 0; h < wp.children.size; h++ ) |  | ||||||
| 			{ |  | ||||||
| 				str += wp.children[h]; |  | ||||||
|  |  | ||||||
| 				if ( h < wp.children.size - 1 ) |  | ||||||
| 					str += " "; |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			str += "," + wp.type + ","; |  | ||||||
|  |  | ||||||
| 			if ( isDefined( wp.angles ) ) |  | ||||||
| 				str += wp.angles[0] + " " + wp.angles[1] + " " + wp.angles[2] + ","; |  | ||||||
| 			else |  | ||||||
| 				str += ","; |  | ||||||
|  |  | ||||||
| 			if ( isDefined( wp.jav_point ) ) |  | ||||||
| 				str += wp.jav_point[0] + " " + wp.jav_point[1] + " " + wp.jav_point[2] + ","; |  | ||||||
| 			else |  | ||||||
| 				str += ","; |  | ||||||
|  |  | ||||||
| 			PrintLn( str ); |  | ||||||
| 			//fileWrite(filename, str+"\n", "append"); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		PrintLn( "\n\n\n\n\n\n" ); |  | ||||||
|  |  | ||||||
| 		self iprintln( "Saved!!! to " + filename ); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| LoadWaypoints() |  | ||||||
| { |  | ||||||
| 	// self DeleteAllWaypoints(); |  | ||||||
| 	self iPrintlnBold( "Loading WPS..." ); |  | ||||||
| 	load_waypoints(); |  | ||||||
|  |  | ||||||
| 	wait 1; |  | ||||||
|  |  | ||||||
| 	self checkForWarnings(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| checkForWarnings() |  | ||||||
| { |  | ||||||
| 	if ( level.waypointCount <= 0 ) |  | ||||||
| 		self iprintln( "WARNING: waypointCount is " + level.waypointCount ); |  | ||||||
|  |  | ||||||
| 	if ( level.waypointCount != level.waypoints.size ) |  | ||||||
| 		self iprintln( "WARNING: waypointCount is not " + level.waypoints.size ); |  | ||||||
|  |  | ||||||
| 	for ( i = 0; i < level.waypointCount; i++ ) |  | ||||||
| 	{ |  | ||||||
| 		if ( !isDefined( level.waypoints[i] ) ) |  | ||||||
| 		{ |  | ||||||
| 			self iprintln( "WARNING: waypoint " + i + " is undefined" ); |  | ||||||
| 			continue; |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		if ( level.waypoints[i].children.size <= 0 ) |  | ||||||
| 			self iprintln( "WARNING: waypoint " + i + " childCount is " + level.waypoints[i].children.size ); |  | ||||||
| 		else |  | ||||||
| 		{ |  | ||||||
| 			if ( !isDefined( level.waypoints[i].children ) || !isDefined( level.waypoints[i].children.size ) ) |  | ||||||
| 			{ |  | ||||||
| 				self iprintln( "WARNING: waypoint " + i + " children is not defined" ); |  | ||||||
| 			} |  | ||||||
| 			else |  | ||||||
| 			{ |  | ||||||
| 				for ( h = level.waypoints[i].children.size - 1; h >= 0; h-- ) |  | ||||||
| 				{ |  | ||||||
| 					child = level.waypoints[i].children[h]; |  | ||||||
|  |  | ||||||
| 					if ( !isDefined( level.waypoints[child] ) ) |  | ||||||
| 						self iprintln( "WARNING: waypoint " + i + " child " + child + " is undefined" ); |  | ||||||
| 					else if ( child == i ) |  | ||||||
| 						self iprintln( "WARNING: waypoint " + i + " child " + child + " is itself" ); |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		if ( !isDefined( level.waypoints[i].type ) ) |  | ||||||
| 		{ |  | ||||||
| 			self iprintln( "WARNING: waypoint " + i + " type is undefined" ); |  | ||||||
| 			continue; |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		if ( level.waypoints[i].type == "javelin" && !isDefined( level.waypoints[i].jav_point ) ) |  | ||||||
| 			self iprintln( "WARNING: waypoint " + i + " jav_point is undefined" ); |  | ||||||
|  |  | ||||||
| 		if ( !isDefined( level.waypoints[i].angles ) && ( level.waypoints[i].type == "claymore" || level.waypoints[i].type == "tube" || ( level.waypoints[i].type == "crouch" && level.waypoints[i].children.size == 1 ) || level.waypoints[i].type == "climb" || level.waypoints[i].type == "grenade" ) ) |  | ||||||
| 			self iprintln( "WARNING: waypoint " + i + " angles is undefined" ); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// check reachability, assume bidirectional graph |  | ||||||
|  |  | ||||||
| 	wpIdx = randomInt( level.waypointCount ); |  | ||||||
|  |  | ||||||
| 	for ( i = 0; i < level.waypointCount; i++ ) |  | ||||||
| 	{ |  | ||||||
| 		if ( i % 5 == 0 ) |  | ||||||
| 			wait 0.05; |  | ||||||
|  |  | ||||||
| 		astar = AStarSearch( level.waypoints[wpIdx].origin, level.waypoints[i].origin, undefined, true ); |  | ||||||
|  |  | ||||||
| 		if ( astar.size <= 0 ) |  | ||||||
| 			self iprintln( "WARNING: waypoint " + wpIdx + " has no path to waypoint " + i ); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	self iprintln( "Waypoint warnings check completed." ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| UnLinkWaypoint( nwp ) |  | ||||||
| { |  | ||||||
| 	if ( nwp == -1 || distance( self.origin, level.waypoints[nwp].origin ) > getDvarFloat( "bots_main_debug_minDist" ) ) |  | ||||||
| 	{ |  | ||||||
| 		self iprintln( "Waypoint Unlink Cancelled " + level.wpToLink ); |  | ||||||
| 		level.wpToLink = -1; |  | ||||||
| 		return; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if ( level.wpToLink == -1 || nwp == level.wpToLink ) |  | ||||||
| 	{ |  | ||||||
| 		level.wpToLink = nwp; |  | ||||||
| 		self iprintln( "Waypoint Unlink Started " + nwp ); |  | ||||||
| 		return; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	level.waypoints[nwp].children = array_remove( level.waypoints[nwp].children, level.wpToLink ); |  | ||||||
| 	level.waypoints[level.wpToLink].children = array_remove( level.waypoints[level.wpToLink].children, nwp ); |  | ||||||
|  |  | ||||||
| 	self iprintln( "Waypoint " + nwp + " Broken to " + level.wpToLink ); |  | ||||||
| 	level.wpToLink = -1; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| LinkWaypoint( nwp ) |  | ||||||
| { |  | ||||||
| 	if ( nwp == -1 || distance( self.origin, level.waypoints[nwp].origin ) > getDvarFloat( "bots_main_debug_minDist" ) ) |  | ||||||
| 	{ |  | ||||||
| 		self iprintln( "Waypoint Link Cancelled " + level.wpToLink ); |  | ||||||
| 		level.wpToLink = -1; |  | ||||||
| 		return; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if ( level.wpToLink == -1 || nwp == level.wpToLink ) |  | ||||||
| 	{ |  | ||||||
| 		level.wpToLink = nwp; |  | ||||||
| 		self iprintln( "Waypoint Link Started " + nwp ); |  | ||||||
| 		return; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	weGood = true; |  | ||||||
|  |  | ||||||
| 	for ( i = level.waypoints[level.wpToLink].children.size - 1; i >= 0; i-- ) |  | ||||||
| 	{ |  | ||||||
| 		child = level.waypoints[level.wpToLink].children[i]; |  | ||||||
|  |  | ||||||
| 		if ( child == nwp ) |  | ||||||
| 		{ |  | ||||||
| 			weGood = false; |  | ||||||
| 			break; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if ( weGood ) |  | ||||||
| 	{ |  | ||||||
| 		for ( i = level.waypoints[nwp].children.size - 1; i >= 0; i-- ) |  | ||||||
| 		{ |  | ||||||
| 			child = level.waypoints[nwp].children[i]; |  | ||||||
|  |  | ||||||
| 			if ( child == level.wpToLink ) |  | ||||||
| 			{ |  | ||||||
| 				weGood = false; |  | ||||||
| 				break; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if ( !weGood ) |  | ||||||
| 	{ |  | ||||||
| 		self iprintln( "Waypoint Link Cancelled " + nwp + " and " + level.wpToLink + " already linked." ); |  | ||||||
| 		level.wpToLink = -1; |  | ||||||
| 		return; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	level.waypoints[level.wpToLink].children[level.waypoints[level.wpToLink].children.size] = nwp; |  | ||||||
| 	level.waypoints[nwp].children[level.waypoints[nwp].children.size] = level.wpToLink; |  | ||||||
|  |  | ||||||
| 	self iprintln( "Waypoint " + nwp + " Linked to " + level.wpToLink ); |  | ||||||
| 	level.wpToLink = -1; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| DeleteWaypoint( nwp ) |  | ||||||
| { |  | ||||||
| 	if ( nwp == -1 || distance( self.origin, level.waypoints[nwp].origin ) > getDvarFloat( "bots_main_debug_minDist" ) ) |  | ||||||
| 	{ |  | ||||||
| 		self iprintln( "No close enough waypoint to delete." ); |  | ||||||
| 		return; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	level.wpToLink = -1; |  | ||||||
|  |  | ||||||
| 	for ( i = level.waypoints[nwp].children.size - 1; i >= 0; i-- ) |  | ||||||
| 	{ |  | ||||||
| 		child = level.waypoints[nwp].children[i]; |  | ||||||
|  |  | ||||||
| 		level.waypoints[child].children = array_remove( level.waypoints[child].children, nwp ); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	for ( i = 0; i < level.waypointCount; i++ ) |  | ||||||
| 	{ |  | ||||||
| 		for ( h = level.waypoints[i].children.size - 1; h >= 0; h-- ) |  | ||||||
| 		{ |  | ||||||
| 			if ( level.waypoints[i].children[h] > nwp ) |  | ||||||
| 				level.waypoints[i].children[h]--; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	for ( entry = 0; entry < level.waypointCount; entry++ ) |  | ||||||
| 	{ |  | ||||||
| 		if ( entry == nwp ) |  | ||||||
| 		{ |  | ||||||
| 			while ( entry < level.waypointCount - 1 ) |  | ||||||
| 			{ |  | ||||||
| 				level.waypoints[entry] = level.waypoints[entry + 1]; |  | ||||||
| 				entry++; |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			level.waypoints[entry] = undefined; |  | ||||||
| 			break; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	level.waypointCount--; |  | ||||||
|  |  | ||||||
| 	self iprintln( "DelWp " + nwp ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| AddWaypoint() |  | ||||||
| { |  | ||||||
| 	level.waypoints[level.waypointCount] = spawnstruct(); |  | ||||||
|  |  | ||||||
| 	pos = self getOrigin(); |  | ||||||
| 	level.waypoints[level.waypointCount].origin = pos; |  | ||||||
|  |  | ||||||
| 	if ( isDefined( self.javelinTargetPoint ) ) |  | ||||||
| 		level.waypoints[level.waypointCount].type = "javelin"; |  | ||||||
| 	else if ( self AdsButtonPressed() ) |  | ||||||
| 		level.waypoints[level.waypointCount].type = "climb"; |  | ||||||
| 	else if ( self AttackButtonPressed() && self UseButtonPressed() ) |  | ||||||
| 		level.waypoints[level.waypointCount].type = "tube"; |  | ||||||
| 	else if ( self AttackButtonPressed() ) |  | ||||||
| 		level.waypoints[level.waypointCount].type = "grenade"; |  | ||||||
| 	else if ( self UseButtonPressed() ) |  | ||||||
| 		level.waypoints[level.waypointCount].type = "claymore"; |  | ||||||
| 	else |  | ||||||
| 		level.waypoints[level.waypointCount].type = self getStance(); |  | ||||||
|  |  | ||||||
| 	level.waypoints[level.waypointCount].angles = self getPlayerAngles(); |  | ||||||
|  |  | ||||||
| 	level.waypoints[level.waypointCount].children = []; |  | ||||||
|  |  | ||||||
| 	if ( level.waypoints[level.waypointCount].type == "javelin" ) |  | ||||||
| 	{ |  | ||||||
| 		level.waypoints[level.waypointCount].jav_point = self.javelinTargetPoint; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	self iprintln( level.waypoints[level.waypointCount].type + " Waypoint " + level.waypointCount + " Added at " + pos ); |  | ||||||
|  |  | ||||||
| 	if ( level.autoLink ) |  | ||||||
| 	{ |  | ||||||
| 		if ( level.wpToLink == -1 ) |  | ||||||
| 			level.wpToLink = level.waypointCount - 1; |  | ||||||
|  |  | ||||||
| 		level.waypointCount++; |  | ||||||
| 		self LinkWaypoint( level.waypointCount - 1 ); |  | ||||||
| 	} |  | ||||||
| 	else |  | ||||||
| 	{ |  | ||||||
| 		level.waypointCount++; |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| DeleteAllWaypoints() |  | ||||||
| { |  | ||||||
| 	level.waypoints = []; |  | ||||||
| 	level.waypointCount = 0; |  | ||||||
|  |  | ||||||
| 	self iprintln( "DelAllWps" ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| buildChildCountString ( wp ) |  | ||||||
| { |  | ||||||
| 	if ( wp == -1 ) |  | ||||||
| 		return -1; |  | ||||||
|  |  | ||||||
| 	wpstr = level.waypoints[wp].children.size; |  | ||||||
|  |  | ||||||
| 	return wpstr; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| buildChildString( wp ) |  | ||||||
| { |  | ||||||
| 	if ( wp == -1 ) |  | ||||||
| 		return ""; |  | ||||||
|  |  | ||||||
| 	wpstr = ""; |  | ||||||
|  |  | ||||||
| 	for ( i = 0; i < level.waypoints[wp].children.size; i++ ) |  | ||||||
| 	{ |  | ||||||
| 		if ( i != 0 ) |  | ||||||
| 			wpstr = wpstr + "," + level.waypoints[wp].children[i]; |  | ||||||
| 		else |  | ||||||
| 			wpstr = wpstr + level.waypoints[wp].children[i]; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return wpstr; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| buildTypeString( wp ) |  | ||||||
| { |  | ||||||
| 	if ( wp == -1 ) |  | ||||||
| 		return ""; |  | ||||||
|  |  | ||||||
| 	return level.waypoints[wp].type; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| destroyOnDeath( hud ) |  | ||||||
| { |  | ||||||
| 	hud endon( "death" ); |  | ||||||
| 	self waittill_either( "death", "disconnect" ); |  | ||||||
| 	hud destroy(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| initHudElem( txt, xl, yl ) |  | ||||||
| { |  | ||||||
| 	hud = NewClientHudElem( self ); |  | ||||||
| 	hud setText( txt ); |  | ||||||
| 	hud.alignX = "left"; |  | ||||||
| 	hud.alignY =  "top"; |  | ||||||
| 	hud.horzAlign =  "left"; |  | ||||||
| 	hud.vertAlign =  "top"; |  | ||||||
| 	hud.x = xl; |  | ||||||
| 	hud.y = yl; |  | ||||||
| 	hud.foreground = true; |  | ||||||
| 	hud.fontScale = 1; |  | ||||||
| 	hud.font = "objective"; |  | ||||||
| 	hud.alpha = 1; |  | ||||||
| 	hud.glow = 0; |  | ||||||
| 	hud.glowColor = ( 0, 0, 0 ); |  | ||||||
| 	hud.glowAlpha = 1; |  | ||||||
| 	hud.color = ( 1.0, 1.0, 1.0 ); |  | ||||||
|  |  | ||||||
| 	self thread destroyOnDeath( hud ); |  | ||||||
|  |  | ||||||
| 	return hud; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| initHudElem2() |  | ||||||
| { |  | ||||||
| 	infotext = NewHudElem(); |  | ||||||
| 	infotext setText( "^1[{+smoke}]-AddWp ^2[{+melee_zoom}]-LinkWp ^3[{+reload}]-UnLinkWp ^4[{+actionslot 3}]-DeleteWp ^5[{+actionslot 4}]-DelAllWps ^6[{+actionslot 5}]-LoadWPS ^7[{+actionslot 1}]-SaveWp" ); |  | ||||||
| 	infotext.alignX = "center"; |  | ||||||
| 	infotext.alignY = "bottom"; |  | ||||||
| 	infotext.horzAlign = "center"; |  | ||||||
| 	infotext.vertAlign = "bottom"; |  | ||||||
| 	infotext.x = -800; |  | ||||||
| 	infotext.y = 25; |  | ||||||
| 	infotext.foreground = true; |  | ||||||
| 	infotext.fontScale = 1.35; |  | ||||||
| 	infotext.font = "objective"; |  | ||||||
| 	infotext.alpha = 1; |  | ||||||
| 	infotext.glow = 0; |  | ||||||
| 	infotext.glowColor = ( 0, 0, 0 ); |  | ||||||
| 	infotext.glowAlpha = 1; |  | ||||||
| 	infotext.color = ( 1.0, 1.0, 1.0 ); |  | ||||||
|  |  | ||||||
| 	self thread destroyOnDeath( infotext ); |  | ||||||
|  |  | ||||||
| 	return infotext; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| initHudElem3() |  | ||||||
| { |  | ||||||
| 	bar = level createServerBar( ( 0.5, 0.5, 0.5 ), 1000, 25 ); |  | ||||||
| 	bar.alignX = "center"; |  | ||||||
| 	bar.alignY = "bottom"; |  | ||||||
| 	bar.horzAlign = "center"; |  | ||||||
| 	bar.vertAlign = "bottom"; |  | ||||||
| 	bar.y = 30; |  | ||||||
| 	bar.foreground = true; |  | ||||||
|  |  | ||||||
| 	self thread destroyOnDeath( bar ); |  | ||||||
|  |  | ||||||
| 	return bar; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| initHudElem4() |  | ||||||
| { |  | ||||||
| 	OptionsBG = NewClientHudElem( self ); |  | ||||||
| 	OptionsBG.x = 100; |  | ||||||
| 	OptionsBG.y = 2; |  | ||||||
| 	OptionsBG.alignX = "left"; |  | ||||||
| 	OptionsBG.alignY = "top"; |  | ||||||
| 	OptionsBG.horzAlign = "left"; |  | ||||||
| 	OptionsBG.vertAlign = "top"; |  | ||||||
| 	OptionsBG setshader( "black", 200, 60 ); |  | ||||||
| 	OptionsBG.alpha = 0.4; |  | ||||||
|  |  | ||||||
| 	self thread destroyOnDeath( OptionsBG ); |  | ||||||
|  |  | ||||||
| 	return OptionsBG; |  | ||||||
| } |  | ||||||
| @@ -1,771 +0,0 @@ | |||||||
| #include common_scripts\utility; |  | ||||||
| #include maps\mp\_utility; |  | ||||||
| #include maps\mp\gametypes\_hud_util; |  | ||||||
|  |  | ||||||
| init() |  | ||||||
| { |  | ||||||
| 	level thread watchNuke(); |  | ||||||
|  |  | ||||||
| 	level thread onPlayerConnect(); |  | ||||||
|  |  | ||||||
| 	setDvarIfUninitialized( "scr_killstreak_print", 0 ); |  | ||||||
| 	setDvarIfUninitialized( "scr_printDamage", 0 ); |  | ||||||
|  |  | ||||||
| 	level.killstreakPrint = getDvarInt( "scr_killstreak_print" ); |  | ||||||
| 	level.allowPrintDamage = getDvarInt( "scr_printDamage" ); |  | ||||||
|  |  | ||||||
| 	level thread hook_callbacks(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| hook_callbacks() |  | ||||||
| { |  | ||||||
| 	level waittill( "prematch_over" ); // iw4madmin waits this long for some reason... |  | ||||||
| 	wait 0.1; // so we need to be one frame after it sets up its callbacks. |  | ||||||
| 	level.prevCallbackPlayerDamage2 = level.callbackPlayerDamage; |  | ||||||
| 	level.callbackPlayerDamage = ::onPlayerDamage; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| onPlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset ) |  | ||||||
| { |  | ||||||
| 	if ( isSubStr( sWeapon, "iw5_1887_mp" ) && sMeansOfDeath != "MOD_MELEE" ) |  | ||||||
| 		iDamage = 35; |  | ||||||
|  |  | ||||||
| 	self [[level.prevCallbackPlayerDamage2]]( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| main() |  | ||||||
| { |  | ||||||
| 	setDvarIfUninitialized( "scr_xpscale_", 1 ); |  | ||||||
| 	setDvarIfUninitialized( "scr_weaponxpscale_", 1 ); |  | ||||||
|  |  | ||||||
| 	// fix G-GetPlayereye bug |  | ||||||
| 	replaceFunc( maps\mp\killstreaks\_helicopter::heli_leave, ::heli_leave ); |  | ||||||
| 	replaceFunc( maps\mp\killstreaks\_helicopter::heli_explode, ::heli_explode ); |  | ||||||
|  |  | ||||||
| 	// allow scr_xpscale to be anything |  | ||||||
| 	replaceFunc( maps\mp\gametypes\_rank::init, ::rank_init ); |  | ||||||
| 	replaceFunc( maps\mp\gametypes\_rank::syncXPStat, ::syncXPStat ); |  | ||||||
|  |  | ||||||
| 	// add scr_spawnpointfavorweight dvar |  | ||||||
| 	replaceFunc( maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam, ::getSpawnpoint_NearTeam ); |  | ||||||
|  |  | ||||||
| 	// add damage numbers |  | ||||||
| 	replaceFunc( maps\mp\gametypes\_damage::finishPlayerDamageWrapper, ::finishPlayerDamageWrapper ); |  | ||||||
|  |  | ||||||
| 	// more perks for specialist bonus |  | ||||||
| 	replaceFunc( maps\mp\killstreaks\_killstreaks::giveAllPerks, ::giveAllPerks ); |  | ||||||
|  |  | ||||||
| 	// scavenge all types of ammo |  | ||||||
| 	replaceFunc( maps\mp\gametypes\_weapons::handleScavengerBagPickup, ::handleScavengerBagPickup ); |  | ||||||
|  |  | ||||||
| 	// only nuke slow mo once |  | ||||||
| 	replaceFunc( maps\mp\killstreaks\_nuke::nukeSlowMo, ::nukeSlowMo ); |  | ||||||
|  |  | ||||||
| 	// fix array index issue with remoteuav when gettime is high |  | ||||||
| 	replaceFunc( maps\mp\killstreaks\_remoteuav::remoteUAV_trackEntities, ::remoteUAV_trackEntities ); |  | ||||||
| 	replaceFunc( maps\mp\killstreaks\_remoteuav::remoteUAV_unmarkRemovedPlayer, ::remoteUAV_unmarkRemovedPlayer ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| heli_explode( var_0 ) |  | ||||||
| { |  | ||||||
| 	self notify( "death" ); |  | ||||||
|  |  | ||||||
| 	if ( isdefined( var_0 ) && isdefined( level.chopper_fx["explode"]["air_death"][self.heli_type] ) ) |  | ||||||
| 	{ |  | ||||||
| 		var_1 = self gettagangles( "tag_deathfx" ); |  | ||||||
| 		playfx( level.chopper_fx["explode"]["air_death"][self.heli_type], self gettagorigin( "tag_deathfx" ), anglestoforward( var_1 ), anglestoup( var_1 ) ); |  | ||||||
| 	} |  | ||||||
| 	else |  | ||||||
| 	{ |  | ||||||
| 		var_2 = self.origin; |  | ||||||
| 		var_3 = self.origin + ( 0, 0, 1 ) - self.origin; |  | ||||||
| 		playfx( level.chopper_fx["explode"]["death"][self.heli_type], var_2, var_3 ); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	self playsound( level.heli_sound[self.team]["crash"] ); |  | ||||||
| 	wait 0.05; |  | ||||||
|  |  | ||||||
| 	if ( isdefined( self.killCamEnt ) ) |  | ||||||
| 		self.killCamEnt delete (); |  | ||||||
|  |  | ||||||
| 	if ( self.heliType == "osprey_gunner" ) |  | ||||||
| 	{ |  | ||||||
| 		if ( isDefined( self ) ) |  | ||||||
| 			self hide(); |  | ||||||
|  |  | ||||||
| 		wait 30; |  | ||||||
|  |  | ||||||
| 		maps\mp\_utility::decrementFauxVehicleCount(); |  | ||||||
|  |  | ||||||
| 		if ( isDefined( self ) ) |  | ||||||
| 			self delete (); |  | ||||||
| 	} |  | ||||||
| 	else |  | ||||||
| 	{ |  | ||||||
| 		maps\mp\_utility::decrementFauxVehicleCount(); |  | ||||||
| 		self delete (); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| heli_leave( var_0 ) |  | ||||||
| { |  | ||||||
| 	self notify( "leaving" ); |  | ||||||
|  |  | ||||||
| 	if ( isdefined( self.heliType ) && self.heliType == "osprey" && isdefined( self.pathGoal ) ) |  | ||||||
| 	{ |  | ||||||
| 		self setvehgoalpos( self.pathGoal, 1 ); |  | ||||||
| 		common_scripts\utility::waittill_any_timeout( 5, "goal" ); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if ( !isdefined( var_0 ) ) |  | ||||||
| 	{ |  | ||||||
| 		var_1 = level.heli_leave_nodes[randomint( level.heli_leave_nodes.size )]; |  | ||||||
| 		var_0 = var_1.origin; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	var_2 = spawn( "script_origin", var_0 ); |  | ||||||
|  |  | ||||||
| 	if ( isdefined( var_2 ) ) |  | ||||||
| 	{ |  | ||||||
| 		self setlookatent( var_2 ); |  | ||||||
| 		var_2 thread maps\mp\killstreaks\_helicopter::wait_and_delete( 3.0 ); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	maps\mp\killstreaks\_helicopter::heli_reset(); |  | ||||||
| 	self vehicle_setspeed( 100, 45 ); |  | ||||||
| 	self setvehgoalpos( var_0, 1 ); |  | ||||||
| 	self waittillmatch( "goal" ); |  | ||||||
| 	self notify( "death" ); |  | ||||||
| 	wait 0.05; |  | ||||||
|  |  | ||||||
| 	if ( isdefined( self.killCamEnt ) ) |  | ||||||
| 		self.killCamEnt delete (); |  | ||||||
|  |  | ||||||
| 	if ( self.heliType == "osprey_gunner" ) |  | ||||||
| 	{ |  | ||||||
| 		if ( isDefined( self ) ) |  | ||||||
| 			self hide(); |  | ||||||
|  |  | ||||||
| 		wait 30; |  | ||||||
|  |  | ||||||
| 		maps\mp\_utility::decrementFauxVehicleCount(); |  | ||||||
|  |  | ||||||
| 		if ( isDefined( self ) ) |  | ||||||
| 			self delete (); |  | ||||||
| 	} |  | ||||||
| 	else |  | ||||||
| 	{ |  | ||||||
| 		maps\mp\_utility::decrementFauxVehicleCount(); |  | ||||||
| 		self delete (); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| syncXPStat() |  | ||||||
| { |  | ||||||
| 	var_0 = maps\mp\gametypes\_rank::getRankXP(); |  | ||||||
| 	maps\mp\gametypes\_persistence::statSet( "experience", var_0 ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| rank_init() |  | ||||||
| { |  | ||||||
| 	level.scoreInfo = []; |  | ||||||
| 	level.xpScale = getdvarint( "scr_xpscale_" ); |  | ||||||
| 	level.weaponxpscale = getdvarint( "scr_weaponxpscale_" ); |  | ||||||
| 	level.rankTable = []; |  | ||||||
| 	level.weaponRankTable = []; |  | ||||||
| 	precacheshader( "white" ); |  | ||||||
| 	precachestring( &"RANK_PLAYER_WAS_PROMOTED_N" ); |  | ||||||
| 	precachestring( &"RANK_PLAYER_WAS_PROMOTED" ); |  | ||||||
| 	precachestring( &"RANK_WEAPON_WAS_PROMOTED" ); |  | ||||||
| 	precachestring( &"RANK_PROMOTED" ); |  | ||||||
| 	precachestring( &"RANK_PROMOTED_WEAPON" ); |  | ||||||
| 	precachestring( &"MP_PLUS" ); |  | ||||||
| 	precachestring( &"RANK_ROMANI" ); |  | ||||||
| 	precachestring( &"RANK_ROMANII" ); |  | ||||||
| 	precachestring( &"RANK_ROMANIII" ); |  | ||||||
| 	precachestring( &"SPLASHES_LONGSHOT" ); |  | ||||||
| 	precachestring( &"SPLASHES_PROXIMITYASSIST" ); |  | ||||||
| 	precachestring( &"SPLASHES_PROXIMITYKILL" ); |  | ||||||
| 	precachestring( &"SPLASHES_EXECUTION" ); |  | ||||||
| 	precachestring( &"SPLASHES_AVENGER" ); |  | ||||||
| 	precachestring( &"SPLASHES_ASSISTEDSUICIDE" ); |  | ||||||
| 	precachestring( &"SPLASHES_DEFENDER" ); |  | ||||||
| 	precachestring( &"SPLASHES_POSTHUMOUS" ); |  | ||||||
| 	precachestring( &"SPLASHES_REVENGE" ); |  | ||||||
| 	precachestring( &"SPLASHES_DOUBLEKILL" ); |  | ||||||
| 	precachestring( &"SPLASHES_TRIPLEKILL" ); |  | ||||||
| 	precachestring( &"SPLASHES_MULTIKILL" ); |  | ||||||
| 	precachestring( &"SPLASHES_BUZZKILL" ); |  | ||||||
| 	precachestring( &"SPLASHES_COMEBACK" ); |  | ||||||
| 	precachestring( &"SPLASHES_KNIFETHROW" ); |  | ||||||
| 	precachestring( &"SPLASHES_ONE_SHOT_KILL" ); |  | ||||||
|  |  | ||||||
| 	if ( level.teamBased ) |  | ||||||
| 	{ |  | ||||||
| 		maps\mp\gametypes\_rank::registerScoreInfo( "kill", 100 ); |  | ||||||
| 		maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 100 ); |  | ||||||
| 		maps\mp\gametypes\_rank::registerScoreInfo( "assist", 20 ); |  | ||||||
| 		maps\mp\gametypes\_rank::registerScoreInfo( "proximityassist", 20 ); |  | ||||||
| 		maps\mp\gametypes\_rank::registerScoreInfo( "proximitykill", 20 ); |  | ||||||
| 		maps\mp\gametypes\_rank::registerScoreInfo( "suicide", 0 ); |  | ||||||
| 		maps\mp\gametypes\_rank::registerScoreInfo( "teamkill", 0 ); |  | ||||||
| 	} |  | ||||||
| 	else |  | ||||||
| 	{ |  | ||||||
| 		maps\mp\gametypes\_rank::registerScoreInfo( "kill", 50 ); |  | ||||||
| 		maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 50 ); |  | ||||||
| 		maps\mp\gametypes\_rank::registerScoreInfo( "assist", 0 ); |  | ||||||
| 		maps\mp\gametypes\_rank::registerScoreInfo( "suicide", 0 ); |  | ||||||
| 		maps\mp\gametypes\_rank::registerScoreInfo( "teamkill", 0 ); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	maps\mp\gametypes\_rank::registerScoreInfo( "win", 1 ); |  | ||||||
| 	maps\mp\gametypes\_rank::registerScoreInfo( "loss", 0.5 ); |  | ||||||
| 	maps\mp\gametypes\_rank::registerScoreInfo( "tie", 0.75 ); |  | ||||||
| 	maps\mp\gametypes\_rank::registerScoreInfo( "capture", 300 ); |  | ||||||
| 	maps\mp\gametypes\_rank::registerScoreInfo( "defend", 300 ); |  | ||||||
| 	maps\mp\gametypes\_rank::registerScoreInfo( "challenge", 2500 ); |  | ||||||
| 	level.maxRank = int( tablelookup( "mp/rankTable.csv", 0, "maxrank", 1 ) ); |  | ||||||
| 	level.maxPrestige = int( tablelookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ) ); |  | ||||||
| 	var_0 = 0; |  | ||||||
| 	var_1 = 0; |  | ||||||
|  |  | ||||||
| 	for ( var_0 = 0; var_0 <= min( 10, level.maxPrestige ); var_0++ ) |  | ||||||
| 	{ |  | ||||||
| 		for ( var_1 = 0; var_1 <= level.maxRank; var_1++ ) |  | ||||||
| 			precacheshader( tablelookup( "mp/rankIconTable.csv", 0, var_1, var_0 + 1 ) ); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	var_2 = 0; |  | ||||||
|  |  | ||||||
| 	for ( var_3 = tablelookup( "mp/ranktable.csv", 0, var_2, 1 ); isdefined( var_3 ) && var_3 != ""; var_3 = tablelookup( "mp/ranktable.csv", 0, var_2, 1 ) ) |  | ||||||
| 	{ |  | ||||||
| 		level.rankTable[var_2][1] = tablelookup( "mp/ranktable.csv", 0, var_2, 1 ); |  | ||||||
| 		level.rankTable[var_2][2] = tablelookup( "mp/ranktable.csv", 0, var_2, 2 ); |  | ||||||
| 		level.rankTable[var_2][3] = tablelookup( "mp/ranktable.csv", 0, var_2, 3 ); |  | ||||||
| 		level.rankTable[var_2][7] = tablelookup( "mp/ranktable.csv", 0, var_2, 7 ); |  | ||||||
| 		precachestring( tablelookupistring( "mp/ranktable.csv", 0, var_2, 16 ) ); |  | ||||||
| 		var_2++; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	var_4 = int( tablelookup( "mp/weaponRankTable.csv", 0, "maxrank", 1 ) ); |  | ||||||
|  |  | ||||||
| 	for ( var_5 = 0; var_5 < var_4 + 1; var_5++ ) |  | ||||||
| 	{ |  | ||||||
| 		level.weaponRankTable[var_5][1] = tablelookup( "mp/weaponRankTable.csv", 0, var_5, 1 ); |  | ||||||
| 		level.weaponRankTable[var_5][2] = tablelookup( "mp/weaponRankTable.csv", 0, var_5, 2 ); |  | ||||||
| 		level.weaponRankTable[var_5][3] = tablelookup( "mp/weaponRankTable.csv", 0, var_5, 3 ); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	maps\mp\gametypes\_missions::buildChallegeInfo(); |  | ||||||
| 	level thread maps\mp\gametypes\_rank::patientZeroWaiter(); |  | ||||||
| 	level thread maps\mp\gametypes\_rank::onPlayerConnect(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| getSpawnpoint_NearTeam( var_0, var_1 ) |  | ||||||
| { |  | ||||||
| 	if ( !isdefined( var_0 ) ) |  | ||||||
| 		return undefined; |  | ||||||
|  |  | ||||||
| 	maps\mp\gametypes\_spawnlogic::Spawnlogic_Begin(); |  | ||||||
| 	maps\mp\gametypes\_spawnlogic::initWeights( var_0 ); |  | ||||||
|  |  | ||||||
| 	var_2 = 2; |  | ||||||
|  |  | ||||||
| 	if ( getDVar( "scr_alliedDistanceWeight" ) != "" ) |  | ||||||
| 		var_2 = getDVarFloat( "scr_alliedDistanceWeight" ); |  | ||||||
|  |  | ||||||
| 	var_3 = self.team; |  | ||||||
| 	var_4 = maps\mp\_utility::getOtherTeam( var_3 ); |  | ||||||
| 	var_5 = getentarray( "care_package", "targetname" ); |  | ||||||
|  |  | ||||||
| 	foreach ( var_7 in var_0 ) |  | ||||||
| 	{ |  | ||||||
| 		if ( var_7.numPlayersAtLastUpdate > 0 ) |  | ||||||
| 		{ |  | ||||||
| 			var_8 = var_7.weightedDistSum[var_3]; |  | ||||||
| 			var_9 = var_7.distSum[var_4]; |  | ||||||
| 			var_7.weight = ( var_9 - var_2 * var_8 ) / var_7.numPlayersAtLastUpdate; |  | ||||||
|  |  | ||||||
| 			if ( isdefined( level.favorCloseSpawnEnt ) ) |  | ||||||
| 			{ |  | ||||||
| 				if ( !isdefined( level.favorCloseSpawnScalar ) ) |  | ||||||
| 					level.favorCloseSpawnScalar = 1; |  | ||||||
|  |  | ||||||
| 				var_10 = distance( var_7.origin, level.favorCloseSpawnEnt.origin ); |  | ||||||
| 				var_7.weight = var_7.weight - var_10 * level.favorCloseSpawnScalar; |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			if ( isdefined( level.favorclosespawnentattacker ) ) |  | ||||||
| 			{ |  | ||||||
| 				if ( !isdefined( level.favorclosespawnscalarattacker ) ) |  | ||||||
| 					level.favorclosespawnscalarattacker = 1; |  | ||||||
|  |  | ||||||
| 				var_10 = distance( var_7.origin, level.favorclosespawnentattacker.origin ); |  | ||||||
| 				var_7.weight = var_7.weight - var_10 * level.favorclosespawnscalarattacker; |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			if ( isdefined( level.favorclosespawnentdefender ) ) |  | ||||||
| 			{ |  | ||||||
| 				if ( !isdefined( level.favorclosespawnscalardefender ) ) |  | ||||||
| 					level.favorclosespawnscalardefender = 1; |  | ||||||
|  |  | ||||||
| 				var_10 = distance( var_7.origin, level.favorclosespawnentdefender.origin ); |  | ||||||
| 				var_7.weight = var_7.weight - var_10 * level.favorclosespawnscalardefender; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		else |  | ||||||
| 			var_7.weight = 0; |  | ||||||
|  |  | ||||||
| 		if ( var_5.size && !canspawn( var_7.origin ) ) |  | ||||||
| 			var_7.weight = var_7.weight - 500000; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	favor_weight = 50000; |  | ||||||
|  |  | ||||||
| 	if ( getDVar( "scr_spawnpointfavorweight" ) != "" ) |  | ||||||
| 		favor_weight = getDVarInt( "scr_spawnpointfavorweight" ); |  | ||||||
|  |  | ||||||
| 	if ( isdefined( var_1 ) ) |  | ||||||
| 	{ |  | ||||||
| 		for ( var_12 = 0; var_12 < var_1.size; var_12++ ) |  | ||||||
| 			var_1[var_12].weight = var_1[var_12].weight + favor_weight; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if ( isdefined( self.predictedSpawnPoint ) && isdefined( self.predictedSpawnPoint.weight ) ) |  | ||||||
| 		self.predictedSpawnPoint.weight = self.predictedSpawnPoint.weight + 100; |  | ||||||
|  |  | ||||||
| 	maps\mp\gametypes\_spawnlogic::avoidSameSpawn(); |  | ||||||
| 	maps\mp\gametypes\_spawnlogic::avoidWeaponDamage( var_0 ); |  | ||||||
| 	maps\mp\gametypes\_spawnlogic::avoidVisibleEnemies( var_0, 1 ); |  | ||||||
|  |  | ||||||
| 	if ( isdefined( self.lastDeathPos ) && level.gameType != "dom" ) |  | ||||||
| 		maps\mp\gametypes\_spawnlogic::avoidRevengeSpawn( var_0, self.lastDeathPos ); |  | ||||||
|  |  | ||||||
| 	var_13 = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Final( var_0 ); |  | ||||||
| 	return var_13; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| doPrintDamage( dmg, hitloc, flags ) |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
|  |  | ||||||
| 	huddamage = newclienthudelem( self ); |  | ||||||
| 	huddamage.alignx = "center"; |  | ||||||
| 	huddamage.horzalign = "center"; |  | ||||||
| 	huddamage.x = 10; |  | ||||||
| 	huddamage.y = 235; |  | ||||||
| 	huddamage.fontscale = 1.6; |  | ||||||
| 	huddamage.font = "objective"; |  | ||||||
| 	huddamage setvalue( dmg ); |  | ||||||
|  |  | ||||||
| 	if ( ( flags & level.iDFLAGS_RADIUS ) != 0 ) |  | ||||||
| 		huddamage.color = ( 0.25, 0.25, 0.25 ); |  | ||||||
|  |  | ||||||
| 	if ( ( flags & level.iDFLAGS_PENETRATION ) != 0 ) |  | ||||||
| 		huddamage.color = ( 1, 1, 0.25 ); |  | ||||||
|  |  | ||||||
| 	if ( hitloc == "head" ) |  | ||||||
| 		huddamage.color = ( 1, 0.25, 0.25 ); |  | ||||||
|  |  | ||||||
| 	huddamage moveovertime( 1 ); |  | ||||||
| 	huddamage fadeovertime( 1 ); |  | ||||||
| 	huddamage.alpha = 0; |  | ||||||
| 	huddamage.x = randomIntRange( 25, 70 ); |  | ||||||
|  |  | ||||||
| 	val = 1; |  | ||||||
|  |  | ||||||
| 	if ( randomInt( 2 ) ) |  | ||||||
| 		val = -1; |  | ||||||
|  |  | ||||||
| 	huddamage.y = 235 + randomIntRange( 25, 70 ) * val; |  | ||||||
|  |  | ||||||
| 	wait 1; |  | ||||||
|  |  | ||||||
| 	if ( isDefined( huddamage ) ) |  | ||||||
| 		huddamage destroy(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| finishPlayerDamageWrapper( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10 ) |  | ||||||
| { |  | ||||||
| 	if ( isDefined( level.allowPrintDamage ) && level.allowPrintDamage ) |  | ||||||
| 	{ |  | ||||||
| 		if ( !isDefined( var_1 ) ) |  | ||||||
| 		{ |  | ||||||
| 			if ( !isDefined( var_0 ) && isDefined( self.printDamage ) && self.printDamage ) |  | ||||||
| 				self thread doPrintDamage( var_2, var_8, var_3 ); |  | ||||||
| 		} |  | ||||||
| 		else if ( isPlayer( var_1 ) && isDefined( var_1.printDamage ) && var_1.printDamage ) |  | ||||||
| 			var_1 thread doPrintDamage( var_2, var_8, var_3 ); |  | ||||||
| 		else if ( isDefined( var_1.owner ) && isPlayer( var_1.owner ) && isDefined( var_1.owner.printDamage ) && var_1.owner.printDamage ) |  | ||||||
| 			var_1.owner thread doPrintDamage( var_2, var_8, var_3 ); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if ( maps\mp\_utility::isUsingRemote() && var_2 >= self.health && !( var_3 & level.iDFLAGS_STUN ) ) |  | ||||||
| 	{ |  | ||||||
| 		if ( !isdefined( var_7 ) ) |  | ||||||
| 			var_7 = ( 0, 0, 0 ); |  | ||||||
|  |  | ||||||
| 		if ( !isdefined( var_1 ) && !isdefined( var_0 ) ) |  | ||||||
| 		{ |  | ||||||
| 			var_1 = self; |  | ||||||
| 			var_0 = var_1; |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		maps\mp\gametypes\_damage::PlayerKilled_internal( var_0, var_1, self, var_2, var_4, var_5, var_7, var_8, var_9, 0, 1 ); |  | ||||||
| 	} |  | ||||||
| 	else |  | ||||||
| 	{ |  | ||||||
| 		if ( !maps\mp\gametypes\_damage::Callback_KillingBlow( var_0, var_1, var_2 - var_2 * var_10, var_3, var_4, var_5, var_6, var_7, var_8, var_9 ) ) |  | ||||||
| 			return; |  | ||||||
|  |  | ||||||
| 		if ( !isalive( self ) ) |  | ||||||
| 			return; |  | ||||||
|  |  | ||||||
| 		self finishplayerdamage( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10 ); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if ( var_4 == "MOD_EXPLOSIVE_BULLET" ) |  | ||||||
| 		self shellshock( "damage_mp", getdvarfloat( "scr_csmode" ) ); |  | ||||||
|  |  | ||||||
| 	maps\mp\gametypes\_damage::damageShellshockAndRumble( var_0, var_5, var_4, var_2, var_3, var_1 ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| giveAllPerks() |  | ||||||
| { |  | ||||||
| 	var_0 = []; |  | ||||||
| 	var_0[var_0.size] = "specialty_longersprint"; |  | ||||||
| 	var_0[var_0.size] = "specialty_fastreload"; |  | ||||||
| 	var_0[var_0.size] = "specialty_scavenger"; |  | ||||||
| 	var_0[var_0.size] = "specialty_blindeye"; |  | ||||||
| 	var_0[var_0.size] = "specialty_paint"; |  | ||||||
| 	var_0[var_0.size] = "specialty_hardline"; |  | ||||||
| 	var_0[var_0.size] = "specialty_coldblooded"; |  | ||||||
| 	var_0[var_0.size] = "specialty_quickdraw"; |  | ||||||
| 	var_0[var_0.size] = "_specialty_blastshield"; |  | ||||||
| 	var_0[var_0.size] = "specialty_detectexplosive"; |  | ||||||
| 	var_0[var_0.size] = "specialty_autospot"; |  | ||||||
| 	var_0[var_0.size] = "specialty_bulletaccuracy"; |  | ||||||
| 	var_0[var_0.size] = "specialty_quieter"; |  | ||||||
| 	var_0[var_0.size] = "specialty_stalker"; |  | ||||||
| 	var_0[var_0.size] = "specialty_marksman"; |  | ||||||
| 	var_0[var_0.size] = "specialty_sharp_focus"; |  | ||||||
| 	var_0[var_0.size] = "specialty_longerrange"; |  | ||||||
| 	var_0[var_0.size] = "specialty_fastermelee"; |  | ||||||
| 	var_0[var_0.size] = "specialty_reducedsway"; |  | ||||||
| 	var_0[var_0.size] = "specialty_lightweight"; |  | ||||||
|  |  | ||||||
| 	// patch_mp removed these? why |  | ||||||
| 	var_0[ var_0.size ] = "specialty_bulletpenetration"; |  | ||||||
| 	var_0[ var_0.size ] = "specialty_holdbreathwhileads"; |  | ||||||
|  |  | ||||||
| 	// too op? |  | ||||||
| 	var_0[ var_0.size ] = "specialty_moredamage"; |  | ||||||
|  |  | ||||||
| 	foreach ( var_2 in var_0 ) |  | ||||||
| 	{ |  | ||||||
| 		if ( !maps\mp\_utility::_hasPerk( var_2 ) ) |  | ||||||
| 		{ |  | ||||||
| 			maps\mp\_utility::givePerk( var_2, 0 ); |  | ||||||
|  |  | ||||||
| 			if ( maps\mp\gametypes\_class::isPerkUpgraded( var_2 ) ) |  | ||||||
| 			{ |  | ||||||
| 				var_3 = tablelookup( "mp/perktable.csv", 1, var_2, 8 ); |  | ||||||
| 				maps\mp\_utility::givePerk( var_3, 0 ); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| handleScavengerBagPickup( var_0 ) |  | ||||||
| { |  | ||||||
| 	self endon( "death" ); |  | ||||||
| 	level endon( "game_ended" ); |  | ||||||
| 	self waittill( "scavenger",  var_1  ); |  | ||||||
| 	var_1 notify( "scavenger_pickup" ); |  | ||||||
| 	var_1 playlocalsound( "scavenger_pack_pickup" ); |  | ||||||
| 	var_2 = var_1 getweaponslistoffhands(); |  | ||||||
|  |  | ||||||
| 	foreach ( var_4 in var_2 ) |  | ||||||
| 	{ |  | ||||||
| 		var_5 = var_1 getweaponammoclip( var_4 ); |  | ||||||
| 		var_1 setweaponammoclip( var_4, var_5 + 1 ); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	var_7 = var_1 getweaponslistprimaries(); |  | ||||||
|  |  | ||||||
| 	foreach ( var_9 in var_7 ) |  | ||||||
| 	{ |  | ||||||
| 		var_10 = var_1 getweaponammostock( var_9 ); |  | ||||||
| 		var_11 = weaponclipsize( var_9 ); |  | ||||||
| 		var_1 setweaponammostock( var_9, var_10 + var_11 ); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	var_1 maps\mp\gametypes\_damagefeedback::updateDamageFeedback( "scavenger" ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| nukeSlowMo() |  | ||||||
| { |  | ||||||
| 	level endon ( "nuke_cancelled" ); |  | ||||||
|  |  | ||||||
| 	if ( isDefined( level.nuked ) && level.nuked >= 3 ) |  | ||||||
| 		return; |  | ||||||
|  |  | ||||||
| 	//SetSlowMotion( <startTimescale>, <endTimescale>, <deltaTime> ) |  | ||||||
| 	SetSlowMotion( 1.0, 0.25, 0.5 ); |  | ||||||
| 	level waittill( "nuke_death" ); |  | ||||||
| 	SetSlowMotion( 0.25, 1, 2.0 ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| remoteUAV_trackEntities( var_0, var_1, var_2 ) |  | ||||||
| { |  | ||||||
| 	level endon( "game_ended" ); |  | ||||||
| 	var_3 = undefined; |  | ||||||
|  |  | ||||||
| 	foreach ( var_5 in var_1 ) |  | ||||||
| 	{ |  | ||||||
| 		if ( level.teamBased && ( !isdefined( var_5.team ) || var_5.team == self.team ) ) |  | ||||||
| 			continue; |  | ||||||
|  |  | ||||||
| 		if ( isplayer( var_5 ) ) |  | ||||||
| 		{ |  | ||||||
| 			if ( !maps\mp\_utility::isReallyAlive( var_5 ) ) |  | ||||||
| 				continue; |  | ||||||
|  |  | ||||||
| 			if ( var_5 == self ) |  | ||||||
| 				continue; |  | ||||||
|  |  | ||||||
| 			var_6 = var_5.guid + ""; |  | ||||||
| 		} |  | ||||||
| 		else |  | ||||||
| 			var_6 = var_5.birthtime + ""; |  | ||||||
|  |  | ||||||
| 		if ( isdefined( var_5.sentryType ) || isdefined( var_5.turretType ) ) |  | ||||||
| 		{ |  | ||||||
| 			var_7 = ( 0, 0, 32 ); |  | ||||||
| 			var_8 = "hud_fofbox_hostile_vehicle"; |  | ||||||
| 		} |  | ||||||
| 		else if ( isdefined( var_5.uavType ) ) |  | ||||||
| 		{ |  | ||||||
| 			var_7 = ( 0, 0, -52 ); |  | ||||||
| 			var_8 = "hud_fofbox_hostile_vehicle"; |  | ||||||
| 		} |  | ||||||
| 		else |  | ||||||
| 		{ |  | ||||||
| 			var_7 = ( 0, 0, 26 ); |  | ||||||
| 			var_8 = "veh_hud_target_unmarked"; |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		if ( isdefined( var_5.UAVRemoteMarkedBy ) ) |  | ||||||
| 		{ |  | ||||||
| 			if ( !isdefined( var_0.markedPlayers[var_6] ) ) |  | ||||||
| 			{ |  | ||||||
| 				var_0.markedPlayers[var_6] = []; |  | ||||||
| 				var_0.markedPlayers[var_6]["player"] = var_5; |  | ||||||
| 				var_0.markedPlayers[var_6]["icon"] = var_5 maps\mp\_entityheadicons::setHeadIcon( self, "veh_hud_target_marked", var_7, 10, 10, 0, 0.05, 0, 0, 0, 0 ); |  | ||||||
| 				var_0.markedPlayers[var_6]["icon"].shader = "veh_hud_target_marked"; |  | ||||||
|  |  | ||||||
| 				if ( !isdefined( var_5.sentryType ) || !isdefined( var_5.turretType ) ) |  | ||||||
| 					var_0.markedPlayers[var_6]["icon"] settargetent( var_5 ); |  | ||||||
| 			} |  | ||||||
| 			else if ( isdefined( var_0.markedPlayers[var_6] ) && isdefined( var_0.markedPlayers[var_6]["icon"] ) && isdefined( var_0.markedPlayers[var_6]["icon"].shader ) && var_0.markedPlayers[var_6]["icon"].shader != "veh_hud_target_marked" ) |  | ||||||
| 			{ |  | ||||||
| 				var_0.markedPlayers[var_6]["icon"].shader = "veh_hud_target_marked"; |  | ||||||
| 				var_0.markedPlayers[var_6]["icon"] setshader( "veh_hud_target_marked", 10, 10 ); |  | ||||||
| 				var_0.markedPlayers[var_6]["icon"] setwaypoint( 0, 0, 0, 0 ); |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			continue; |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		if ( isplayer( var_5 ) ) |  | ||||||
| 		{ |  | ||||||
| 			var_9 = isdefined( var_5.spawnTime ) && ( gettime() - var_5.spawnTime ) / 1000 <= 5; |  | ||||||
| 			var_10 = var_5 maps\mp\_utility::_hasPerk( "specialty_blindeye" ); |  | ||||||
| 			var_11 = 0; |  | ||||||
| 			var_12 = 0; |  | ||||||
| 		} |  | ||||||
| 		else |  | ||||||
| 		{ |  | ||||||
| 			var_9 = 0; |  | ||||||
| 			var_10 = 0; |  | ||||||
| 			var_11 = isdefined( var_5.carriedBy ); |  | ||||||
| 			var_12 = isdefined( var_5.isLeaving ) && var_5.isLeaving == 1; |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		if ( !isdefined( var_0.markedPlayers[var_6] ) && !var_9 && !var_10 && !var_11 && !var_12 ) |  | ||||||
| 		{ |  | ||||||
| 			var_0.markedPlayers[var_6] = []; |  | ||||||
| 			var_0.markedPlayers[var_6]["player"] = var_5; |  | ||||||
| 			var_0.markedPlayers[var_6]["icon"] = var_5 maps\mp\_entityheadicons::setHeadIcon( self, var_8, var_7, 10, 10, 0, 0.05, 0, 0, 0, 0 ); |  | ||||||
| 			var_0.markedPlayers[var_6]["icon"].shader = var_8; |  | ||||||
|  |  | ||||||
| 			if ( !isdefined( var_5.sentryType ) || !isdefined( var_5.turretType ) ) |  | ||||||
| 				var_0.markedPlayers[var_6]["icon"] settargetent( var_5 ); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		if ( ( !isdefined( var_3 ) || var_3 != var_5 ) && ( isdefined( var_0.trace["entity"] ) && var_0.trace["entity"] == var_5 && !var_11 && !var_12 ) || distance( var_5.origin, var_2 ) < 200 * var_0.trace["fraction"] && !var_9 && !var_11 && !var_12 || !var_12 && maps\mp\killstreaks\_remoteuav::remoteUAV_canTargetUAV( var_0, var_5 ) ) |  | ||||||
| 		{ |  | ||||||
| 			var_13 = bullettrace( var_0.origin, var_5.origin + ( 0, 0, 32 ), 1, var_0 ); |  | ||||||
|  |  | ||||||
| 			if ( isdefined( var_13["entity"] ) && var_13["entity"] == var_5 || var_13["fraction"] == 1 ) |  | ||||||
| 			{ |  | ||||||
| 				self playlocalsound( "recondrone_lockon" ); |  | ||||||
| 				var_3 = var_5; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return var_3; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| remoteUAV_unmarkRemovedPlayer( var_0 ) |  | ||||||
| { |  | ||||||
| 	level endon( "game_ended" ); |  | ||||||
| 	var_1 = common_scripts\utility::waittill_any_return( "death", "disconnect", "carried", "leaving" ); |  | ||||||
|  |  | ||||||
| 	if ( var_1 == "leaving" || !isdefined( self.uavType ) ) |  | ||||||
| 		self.UAVRemoteMarkedBy = undefined; |  | ||||||
|  |  | ||||||
| 	if ( isdefined( var_0 ) ) |  | ||||||
| 	{ |  | ||||||
| 		if ( isplayer( self ) ) |  | ||||||
| 			var_2 = self.guid + ""; |  | ||||||
| 		else if ( isdefined( self.birthtime ) ) |  | ||||||
| 			var_2 = self.birthtime + ""; |  | ||||||
| 		else |  | ||||||
| 			var_2 = self.birth_time + ""; |  | ||||||
|  |  | ||||||
| 		if ( var_1 == "carried" || var_1 == "leaving" ) |  | ||||||
| 		{ |  | ||||||
| 			var_0.markedPlayers[var_2]["icon"] destroy(); |  | ||||||
| 			var_0.markedPlayers[var_2]["icon"] = undefined; |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		if ( isdefined( var_2 ) && isdefined( var_0.markedPlayers[var_2] ) ) |  | ||||||
| 		{ |  | ||||||
| 			var_0.markedPlayers[var_2] = undefined; |  | ||||||
| 			var_0.markedPlayers = common_scripts\utility::array_removeUndefined( var_0.markedPlayers ); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if ( isplayer( self ) ) |  | ||||||
| 		self unsetperk( "specialty_radarblip", 1 ); |  | ||||||
| 	else |  | ||||||
| 	{ |  | ||||||
| 		if ( isdefined( self.remoteUAVMarkedObjID01 ) ) |  | ||||||
| 			maps\mp\_utility::_objective_delete( self.remoteUAVMarkedObjID01 ); |  | ||||||
|  |  | ||||||
| 		if ( isdefined( self.remoteUAVMarkedObjID02 ) ) |  | ||||||
| 			maps\mp\_utility::_objective_delete( self.remoteUAVMarkedObjID02 ); |  | ||||||
|  |  | ||||||
| 		if ( isdefined( self.remoteUAVMarkedObjID03 ) ) |  | ||||||
| 			maps\mp\_utility::_objective_delete( self.remoteUAVMarkedObjID03 ); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| onPlayerConnect() |  | ||||||
| { |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		level waittill( "connected", player ); |  | ||||||
|  |  | ||||||
| 		player thread onChangeKit(); |  | ||||||
|  |  | ||||||
| 		print( "Player connected: " + player.name + " guid " + player getGuid() ); |  | ||||||
| 		player thread onPlayerDisconnect(); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| onPlayerDisconnect() |  | ||||||
| { |  | ||||||
| 	name = self.name; |  | ||||||
| 	guid = self getGuid(); |  | ||||||
|  |  | ||||||
| 	self waittill( "disconnect" ); |  | ||||||
|  |  | ||||||
| 	print( "Player disconnected: " + name + " guid " + guid ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| watchNuke() |  | ||||||
| { |  | ||||||
| 	if ( !isDefined( level.nuked ) ) |  | ||||||
| 		level.nuked = 0; |  | ||||||
|  |  | ||||||
| 	setDvar( "scr_spawnpointfavorweight", "" ); |  | ||||||
|  |  | ||||||
| 	while ( true ) |  | ||||||
| 	{ |  | ||||||
| 		level waittill( "nuke_death" ); |  | ||||||
| 		level.nuked++; |  | ||||||
|  |  | ||||||
| 		if ( !isDefined( level.nuked ) || level.nuked < 3 ) |  | ||||||
| 			continue; |  | ||||||
|  |  | ||||||
| 		setDvar( "scr_spawnpointfavorweight", "499999" ); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| onChangeKit() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
|  |  | ||||||
| 	self.printDamage = true; |  | ||||||
|  |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		self waittill( "changed_kit" ); |  | ||||||
|  |  | ||||||
| 		if ( level.killstreakPrint ) |  | ||||||
| 			self thread watchNotifyKSMessage(); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| watchNotifyKSMessage() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
| 	self endon( "changed_kit" ); |  | ||||||
|  |  | ||||||
| 	for ( lastKs = self.pers["cur_kill_streak_for_nuke"];; ) |  | ||||||
| 	{ |  | ||||||
| 		wait 0.05; |  | ||||||
|  |  | ||||||
| 		for ( curStreak = lastKs + 1; curStreak <= self.pers["cur_kill_streak_for_nuke"]; curStreak++ ) |  | ||||||
| 		{ |  | ||||||
| 			//if (curStreak == 5) |  | ||||||
| 			//	continue; |  | ||||||
|  |  | ||||||
| 			if ( curStreak % 5 != 0 ) |  | ||||||
| 				continue; |  | ||||||
|  |  | ||||||
| 			self thread streakNotify( curStreak ); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		lastKs = self.pers["cur_kill_streak_for_nuke"]; |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| streakNotify( streakVal ) |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
|  |  | ||||||
| 	notifyData = spawnStruct(); |  | ||||||
|  |  | ||||||
| 	if ( level.killstreakPrint > 1 ) |  | ||||||
| 	{ |  | ||||||
| 		xpReward = streakVal * 100; |  | ||||||
|  |  | ||||||
| 		self thread maps\mp\gametypes\_rank::giveRankXP( "killstreak_bonus", xpReward ); |  | ||||||
|  |  | ||||||
| 		notifyData.notifyText = "+" + xpReward; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	wait .05; |  | ||||||
|  |  | ||||||
| 	notifyData.titleLabel = &"MP_KILLSTREAK_N"; |  | ||||||
| 	notifyData.titleText = streakVal; |  | ||||||
|  |  | ||||||
| 	self maps\mp\gametypes\_hud_message::notifyMessage( notifyData ); |  | ||||||
|  |  | ||||||
| 	iprintln( &"RANK_KILL_STREAK_N", self, streakVal ); |  | ||||||
| } |  | ||||||
| @@ -1,72 +0,0 @@ | |||||||
| #include common_scripts\utility; |  | ||||||
| #include maps\mp\_utility; |  | ||||||
| #include maps\mp\gametypes\_hud_util; |  | ||||||
|  |  | ||||||
| init() |  | ||||||
| { |  | ||||||
| 	setDvarIfUninitialized( "scr_showHP", false ); |  | ||||||
| 	level.showHP = getDvarInt( "scr_showHP" ); |  | ||||||
|  |  | ||||||
| 	level thread onPlayerConnect(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| onPlayerConnect() |  | ||||||
| { |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		level waittill( "connected", player ); |  | ||||||
| 		player thread onPlayerSpawned(); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| onPlayerSpawned() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
|  |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		self waittill( "spawned_player" ); |  | ||||||
|  |  | ||||||
| 		if ( level.showHP ) |  | ||||||
| 			self thread drawHP(); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| destoryHPdraw() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
| 	self waittill( "death" ); |  | ||||||
|  |  | ||||||
| 	if ( isDefined( self.drawHP ) ) |  | ||||||
| 		self.drawHP destroy(); |  | ||||||
|  |  | ||||||
| 	if ( isDefined( self.drawSpeed ) ) |  | ||||||
| 		self.drawSpeed destroy(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| initHPdraw() |  | ||||||
| { |  | ||||||
| 	self.drawHP = self createFontString( "default", 1.2 ); |  | ||||||
| 	self.drawHP setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -150, -20 ); |  | ||||||
|  |  | ||||||
| 	self.drawSpeed = self createFontString( "default", 1.2 ); |  | ||||||
| 	self.drawSpeed setPoint( "BOTTOMRIGHT", "BOTTOMRIGHT", -150, -10 ); |  | ||||||
| 	self thread destoryHPdraw(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| drawHP() |  | ||||||
| { |  | ||||||
| 	self endon( "disconnect" ); |  | ||||||
| 	self endon( "death" ); |  | ||||||
| 	self initHPdraw(); |  | ||||||
|  |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		//self.drawHP setText("HP: "+self.health+"  KS: "+self.pers["cur_kill_streak"]); |  | ||||||
| 		self.drawHP setValue( self.health ); |  | ||||||
|  |  | ||||||
| 		vel = self getVelocity(); |  | ||||||
| 		self.drawSpeed setValue( int( length( ( vel[0], vel[1], 0 ) ) ) ); |  | ||||||
| 		wait 0.05; |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -1,85 +0,0 @@ | |||||||
| init() |  | ||||||
| { |  | ||||||
| 	if ( getDvarInt( "spawnpoints_test" ) ) |  | ||||||
| 		level thread doSpawnPointTest(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| drawNoSight(sp) |  | ||||||
| { |  | ||||||
| 	newdeathicon = newHudElem(); |  | ||||||
| 	newdeathicon.x = sp.origin[0]; |  | ||||||
| 	newdeathicon.y = sp.origin[1]; |  | ||||||
| 	newdeathicon.z = sp.origin[2] + 32; |  | ||||||
| 	newdeathicon.alpha = .61; |  | ||||||
| 	newdeathicon.archived = true; |  | ||||||
| 	newdeathicon setShader( "headicon_dead", 5, 5 ); |  | ||||||
| 	newdeathicon setwaypoint( true, false ); |  | ||||||
|  |  | ||||||
| 	if (isDefined(sp.wp)) |  | ||||||
| 		sp.wp destroy(); |  | ||||||
| 	 |  | ||||||
| 	sp.wp = newdeathicon; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| drawSight(sp) |  | ||||||
| { |  | ||||||
| 	newdeathicon = newHudElem(); |  | ||||||
| 	newdeathicon.x = sp.origin[0]; |  | ||||||
| 	newdeathicon.y = sp.origin[1]; |  | ||||||
| 	newdeathicon.z = sp.origin[2] + 32; |  | ||||||
| 	newdeathicon.alpha = .61; |  | ||||||
| 	newdeathicon.archived = true; |  | ||||||
| 	newdeathicon setShader( "rank_prestige1", 5, 5 ); |  | ||||||
| 	newdeathicon setwaypoint( true, false ); |  | ||||||
|  |  | ||||||
| 	if (isDefined(sp.wp)) |  | ||||||
| 		sp.wp destroy(); |  | ||||||
| 	 |  | ||||||
| 	sp.wp = newdeathicon; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| doSpawnPointTest() |  | ||||||
| { |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		wait 0.05; |  | ||||||
|  |  | ||||||
| 		if ( !isdefined( level.spawnpoints ) ) |  | ||||||
| 			return; |  | ||||||
|  |  | ||||||
| 		closest = undefined; |  | ||||||
| 		h = -1; |  | ||||||
| 		for (i = 0; i < level.spawnpoints.size; i++) |  | ||||||
| 		{ |  | ||||||
| 			spawnpoint = level.spawnpoints[i]; |  | ||||||
|  |  | ||||||
| 			sight = false; |  | ||||||
|  |  | ||||||
| 			if (level.teamBased) |  | ||||||
| 			{ |  | ||||||
| 				sight = (spawnpoint.sights["axis"] > 0); |  | ||||||
| 				if (!sight) |  | ||||||
| 					sight = (spawnpoint.sights["allies"] > 0); |  | ||||||
| 			} |  | ||||||
| 			else |  | ||||||
| 				sight = (spawnpoint.sights > 0); |  | ||||||
|  |  | ||||||
| 			if (!sight) |  | ||||||
| 				drawNoSight(spawnpoint); |  | ||||||
| 			else |  | ||||||
| 				drawSight(spawnpoint); |  | ||||||
|  |  | ||||||
| 			if (isDefined(level.players[0])) |  | ||||||
| 			{ |  | ||||||
| 				if (!isDefined(closest) || distanceSquared(closest.origin, level.players[0].origin) > distanceSquared(spawnpoint.origin, level.players[0].origin)) |  | ||||||
| 				{ |  | ||||||
| 					closest = spawnpoint; |  | ||||||
| 					h = i; |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		if (isDefined(closest)) |  | ||||||
| 			level.players[0] sayall(h + " " + distance(closest.origin, level.players[0].origin)); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -1,43 +0,0 @@ | |||||||
| #include common_scripts\utility; |  | ||||||
| #include maps\mp\_utility; |  | ||||||
| #include maps\mp\gametypes\_hud_util; |  | ||||||
|  |  | ||||||
| init() |  | ||||||
| { |  | ||||||
| 	setDvarIfUninitialized( "g_inactivitySpectator", 0.0 ); |  | ||||||
| 	level.inactivitySpectator = getDvarFloat("g_inactivitySpectator") * 1000; |  | ||||||
|  |  | ||||||
| 	if (level.inactivitySpectator <= 0) |  | ||||||
| 		return; |  | ||||||
|  |  | ||||||
| 	thread watchPlayers(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| watchPlayers() |  | ||||||
| { |  | ||||||
| 	for(;;) |  | ||||||
| 	{ |  | ||||||
| 		wait 1.5; |  | ||||||
|  |  | ||||||
| 		theTime = getTime(); |  | ||||||
|  |  | ||||||
| 		for (i = 0; i < level.players.size; i++) |  | ||||||
| 		{ |  | ||||||
| 			player = level.players[i]; |  | ||||||
|  |  | ||||||
| 			if (player.hasSpawned) |  | ||||||
| 				continue; |  | ||||||
|  |  | ||||||
| 			if (!isDefined(player.specTime)) |  | ||||||
| 			{ |  | ||||||
| 				player.specTime = theTime; |  | ||||||
| 				continue; |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			if ((theTime - player.specTime) < level.inactivitySpectator) |  | ||||||
| 				continue; |  | ||||||
|  |  | ||||||
| 			kick( player getEntityNumber(), "EXE_PLAYERKICKED_INACTIVE" ); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -1,70 +0,0 @@ | |||||||
| #include common_scripts\utility; |  | ||||||
| #include maps\mp\_utility; |  | ||||||
| #include maps\mp\gametypes\_hud_util; |  | ||||||
|  |  | ||||||
| init() |  | ||||||
| { |  | ||||||
| 	setDvarIfUninitialized( "dom_lastFlagUseTimeMulti", 1.0 ); |  | ||||||
|  |  | ||||||
| 	thread watchFlags(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| watchFlags() |  | ||||||
| { |  | ||||||
| 	if ( getDvar( "g_gametype" ) != "dom" ) |  | ||||||
| 		return; |  | ||||||
|  |  | ||||||
| 	while ( !isDefined( level.domFlags ) ) |  | ||||||
| 		wait 0.05; |  | ||||||
|  |  | ||||||
| 	for ( ;; ) |  | ||||||
| 	{ |  | ||||||
| 		wait 1; |  | ||||||
|  |  | ||||||
| 		for ( i = 0; i < level.domFlags.size; i++ ) |  | ||||||
| 		{ |  | ||||||
| 			flag = level.domFlags[i]; |  | ||||||
|  |  | ||||||
| 			if ( isDefined( flag.originalUseTime ) ) |  | ||||||
| 			{ |  | ||||||
| 				flag.useTime = flag.originalUseTime; |  | ||||||
| 				flag.originalUseTime = undefined; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		team = "none"; |  | ||||||
|  |  | ||||||
| 		axisFlags = maps\mp\gametypes\dom::getTeamFlagCount( "axis" ); |  | ||||||
| 		alliesFlags = maps\mp\gametypes\dom::getTeamFlagCount( "allies" ); |  | ||||||
|  |  | ||||||
| 		if ( alliesFlags == 2 || axisFlags == 2 ) |  | ||||||
| 		{ |  | ||||||
| 			if ( alliesFlags == 2 ) |  | ||||||
| 				team = "allies"; |  | ||||||
| 			else |  | ||||||
| 				team = "axis"; |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		if ( game["teamScores"]["axis"] < game["teamScores"]["allies"] && team == "axis" ) |  | ||||||
| 			continue; |  | ||||||
|  |  | ||||||
| 		if ( game["teamScores"]["allies"] < game["teamScores"]["axis"] && team == "allies" ) |  | ||||||
| 			continue; |  | ||||||
|  |  | ||||||
| 		if ( team != "none" ) |  | ||||||
| 		{ |  | ||||||
| 			for ( i = 0; i < level.domFlags.size; i++ ) |  | ||||||
| 			{ |  | ||||||
| 				flag = level.domFlags[i]; |  | ||||||
|  |  | ||||||
| 				flagTeam = flag maps\mp\gametypes\_gameobjects::getOwnerTeam(); |  | ||||||
|  |  | ||||||
| 				if ( flagTeam != team && ( flagTeam == "axis" || flagTeam == "allies" ) ) |  | ||||||
| 				{ |  | ||||||
| 					flag.originalUseTime = flag.useTime; |  | ||||||
| 					flag.useTime *= getDvarFloat( "dom_lastFlagUseTimeMulti" ); |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										0
									
								
								scriptdata/waypoints/.gitkeep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										65
									
								
								scripts/mp/bots_adapter_piw5.gsc
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,65 @@ | |||||||
|  | init() | ||||||
|  | { | ||||||
|  | 	level.bot_builtins["printconsole"] = ::do_printconsole; | ||||||
|  | 	level.bot_builtins["filewrite"] = ::do_filewrite; | ||||||
|  | 	level.bot_builtins["fileread"] = ::do_fileread; | ||||||
|  | 	level.bot_builtins["fileexists"] = ::do_fileexists; | ||||||
|  | 	level.bot_builtins["botaction"] = ::do_botaction; | ||||||
|  | 	level.bot_builtins["botstop"] = ::do_botstop; | ||||||
|  | 	level.bot_builtins["botmovement"] = ::do_botmovement; | ||||||
|  | 	level.bot_builtins["botmeleeparams"] = ::do_botmeleeparams; | ||||||
|  | 	level.bot_builtins[ "botremoteangles" ] = ::do_botremoteangles; | ||||||
|  | 	level.bot_builtins[ "botangles" ] = ::do_botangles; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | do_printconsole( s ) | ||||||
|  | { | ||||||
|  | 	println( s ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | do_filewrite( file, contents, mode ) | ||||||
|  | { | ||||||
|  | 	file = "scriptdata/" + file; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | do_fileread( file ) | ||||||
|  | { | ||||||
|  | 	file = "scriptdata/" + file; | ||||||
|  | 	return undefined; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | do_fileexists( file ) | ||||||
|  | { | ||||||
|  | 	file = "scriptdata/" + file; | ||||||
|  | 	return false; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | do_botaction( action ) | ||||||
|  | { | ||||||
|  | 	self botaction( action ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | do_botstop() | ||||||
|  | { | ||||||
|  | 	self botstop(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | do_botmovement( forward, right ) | ||||||
|  | { | ||||||
|  | 	self botmovement( forward, right ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | do_botmeleeparams( entNum, dist ) | ||||||
|  | { | ||||||
|  | 	self botmeleeparams( entNum, dist ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | do_botremoteangles( pitch, yaw ) | ||||||
|  | { | ||||||
|  | 	self botremoteangles( pitch, yaw ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | do_botangles( angles ) | ||||||
|  | { | ||||||
|  | 	self botangles( angles[ 0 ], angles[ 1 ], angles[ 2 ] ); | ||||||
|  | } | ||||||