Compare commits
	
		
			78 Commits
		
	
	
		
			v2.1.0
			...
			ab7979f9d1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | ab7979f9d1 | ||
|  | 3325405f08 | ||
|  | b005f90e99 | ||
|  | 41fb775e97 | ||
|  | 3a68ef5ffc | ||
|  | 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 | ||||
| # mode=ghc | ||||
| mode=c | ||||
| style=allman | ||||
|  | ||||
| indent=tab | ||||
| indent=force-tab=2 | ||||
| lineend=windows | ||||
|  | ||||
| pad-oper | ||||
| pad-paren-in | ||||
| pad-header | ||||
|  | ||||
| # delete-empty-lines | ||||
| # pad-brackets-in | ||||
| fill-empty-lines | ||||
| squeeze-lines=2 | ||||
| squeeze-ws | ||||
| break-one-line-headers | ||||
| add-braces | ||||
| remove-comment-prefix | ||||
|  | ||||
| break-blocks | ||||
| # remove-braces | ||||
|  | ||||
| indent-switches | ||||
| indent-cases | ||||
| indent-after-parens | ||||
| indent-col1-comments | ||||
|  | ||||
| remove-comment-prefix | ||||
|   | ||||
| @@ -4,7 +4,7 @@ root = true | ||||
| indent_style = tab | ||||
| indent_size = 2 | ||||
| charset = latin1 | ||||
| trim_trailing_whitespace = true | ||||
| trim_trailing_whitespace = false | ||||
| insert_final_newline = true | ||||
|  | ||||
| [*.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 | ||||
| *.log | ||||
| *.stat | ||||
| *.exe | ||||
| *.gscbin | ||||
| !ci/ | ||||
| out/ | ||||
| logs/ | ||||
| demos/ | ||||
| images/ | ||||
| missingasset.csv | ||||
| compiled/ | ||||
| source/ | ||||
| pregsc/ | ||||
| pregsc.dat | ||||
|   | ||||
							
								
								
									
										81
									
								
								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/). | ||||
|  | ||||
| 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 | ||||
| - [Features](#Features) | ||||
| @@ -15,7 +15,7 @@ You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfar | ||||
| - [Credits](#Credits) | ||||
|  | ||||
| ## 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. | ||||
|  | ||||
| @@ -52,7 +52,7 @@ You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfar | ||||
|  | ||||
| ## Installation | ||||
| 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. | ||||
| 2. Run the 'install.bat'. This copies the mod to your PlutoniumIW5 storage folder. | ||||
| 3. The mod is now installed, now run your game. | ||||
| @@ -70,48 +70,64 @@ You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfar | ||||
| ### DVARs | ||||
| | Dvar                             | Description                                                                                 | Default Value | | ||||
| |----------------------------------|---------------------------------------------------------------------------------------------|--------------:| | ||||
| | bots_main                        | Enable this mod.                                                                            | true          | | ||||
| | bots_main_firstIsHost            | The first player to connect will be given host.                                             | false         | | ||||
| | bots_main_GUIDs                  | A comma separated list of GUIDs of players who will be given host.                          | ""            | | ||||
| | bots_main                        | Enable this mod.                                                                            | 1             | | ||||
| | 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_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_debug                  | Enable the in-game waypoint editor.                                                         | false         | | ||||
| | bots_main_kickBotsAtEnd          | Kick the bots at the end of a match.                                                        | false         | | ||||
| | bots_main_menu                   | Enable the in-game menu for hosts.                                                          | 1             | | ||||
| | bots_main_debug                  | Enable the in-game waypoint editor at start of the game, or enable bot event prints. <ul><li>`0` - disable</li><li>`1` - for just debug events</li><li>`2` - for every event</li><ul> | 0 | | ||||
| | 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_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_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_spec            | If when counting players for `bots_manage_fill` should include spectators.                  | true          | | ||||
| | 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><li>`2` - exactly `0` but auto adjusts `bots_manage_fill` to map.</li><li>`3` - exactly `1` but auto adjusts `bots_manage_fill` to map.</li><li>`4` - bots are used for balancing teams.</li><li>`5` - exactly `4` but auto adjusts `bots_manage_fill` to map.</li></ul> | 0 | | ||||
| | bots_manage_fill_watchplayers    | Bots will not be added until one player is in the game                                      | 0             | | ||||
| | 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.                  | 1             | | ||||
| | 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_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_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_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 `1` 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><li>`9` - Every difficulty parameter is randomized</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_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_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_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_allow_op            | If the bots should be able to use overpowered and annoying create-a-class selections.          | true       | | ||||
| | 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.          | 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_play_move                   | If the bots can move.                                                                          | true       | | ||||
| | bots_play_knife                  | If the bots can knife.                                                                         | true       | | ||||
| | bots_play_fire                   | If the bots can fire.                                                                          | true       | | ||||
| | bots_play_nade                   | If the bots can grenade.                                                                       | true       | | ||||
| | bots_play_take_carepackages      | If the bots can take carepackages.                                                             | true       | | ||||
| | bots_play_obj                    | If the bots can play the objective.                                                            | true       | | ||||
| | bots_play_camp                   | If the bots can camp.                                                                          | true       | | ||||
| | bots_play_jumpdrop               | If the bots can jump/drop shot.                                                                | true       | | ||||
| | bots_play_target_other           | If the bots can target other entities other than players.                                      | true       | | ||||
| | bots_play_killstreak             | If the bots can call in killstreaks.                                                           | true       | | ||||
| | bots_play_ads                    | If the bots can aim down sights.                                                               | true       | | ||||
| | bots_play_aim                    | If the bots can aim.                                                                           | true       | | ||||
| | bots_play_move                   | If the bots can move.                                                                          | 1          | | ||||
| | bots_play_knife                  | If the bots can knife.                                                                         | 1          | | ||||
| | bots_play_fire                   | If the bots can fire.                                                                          | 1          | | ||||
| | bots_play_nade                   | If the bots can grenade.                                                                       | 1          | | ||||
| | bots_play_take_carepackages      | If the bots can take carepackages.                                                             | 1          | | ||||
| | bots_play_obj                    | If the bots can play the objective.                                                            | 1          | | ||||
| | bots_play_camp                   | If the bots can camp.                                                                          | 1          | | ||||
| | 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.                                      | 1          | | ||||
| | bots_play_killstreak             | If the bots can call in killstreaks.                                                           | 1          | | ||||
| | bots_play_ads                    | If the bots can aim down sights.                                                               | 1          | | ||||
| | bots_play_aim                    | If the bots can aim.                                                                           | 1          | | ||||
|  | ||||
| ## 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) | ||||
|   - Added bots_manage_fill_watchplayers dvar | ||||
|   - Bots hop off turrets if they get stuck on one | ||||
|   - Fixed script variable leak with opening and closing the in-game menu | ||||
|  | ||||
| - 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 | ||||
|   - Initial release (sync'd versions with other Bot Warfares) | ||||
|  | ||||
| @@ -121,9 +137,10 @@ You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfar | ||||
| - 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/ | ||||
| - apdonato - https://web.archive.org/web/20240516065610/http://rsebots.blogspot.com/ | ||||
| - Ability | ||||
| - Salvation | ||||
| - Xensik - https://github.com/xensik/gsc-tool | ||||
|  | ||||
| ### Waypoint Creators | ||||
| - 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'. | ||||
| 
 | ||||
| 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> | ||||
|  | ||||
|  | ||||
| 
 | ||||
| Now start a match with the map you want to edit. | ||||
| 
 | ||||
| ## The Editor | ||||
| <br> | ||||
| <br> | ||||
| This is the Waypoint Editor. You can view, edit and create the waypoint graph. | ||||
| - 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. | ||||
| @@ -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. | ||||
| 
 | ||||
| Here I added a 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. | ||||
| - 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 | ||||
| 
 | ||||
| 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. | ||||
| 
 | ||||
| @@ -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. | ||||
| 
 | ||||
| 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> | ||||
| <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. | ||||
| 
 | ||||
| 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! Create a pull request to have your waypoints included in the mod if you like, any help is greatly appreciated. | ||||
| Now Bot Warfare will use your waypoints you've created!   | ||||
							
								
								
									
										
											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) | ||||
							
								
								
									
										1650
									
								
								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
									
								
							
							
						
						
							
								
								
									
										1398
									
								
								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 ] ); | ||||
| } | ||||