55 Commits

Author SHA1 Message Date
901895a10d unused 2025-05-21 12:24:17 -06:00
230d89edf5 fix this logic error 2025-01-23 23:45:36 -06:00
fa43b34dd5 wait for notifies 2024-10-22 10:03:29 -06:00
2e3ec92b07 import camping change 2024-09-21 20:19:16 -06:00
271ef3387d missing tag 2024-05-16 19:14:06 -06:00
87b2a1ca8b add bots_manage_fill_watchplayers 2024-05-16 18:51:20 -06:00
1f9c458c07 fix errors 2024-05-10 00:08:28 -06:00
eac093fa3e fixed menu var leak 2024-05-09 20:55:45 -06:00
c5c9102c5c remove messages 2024-05-09 15:04:24 -06:00
25052b2891 turret 2024-05-09 15:02:44 -06:00
dc03e0fbb3 update 2024-04-30 13:11:41 -06:00
24c1908c85 some updates 2024-04-30 11:20:18 -06:00
02761a1013 chat event 2024-04-25 15:37:43 -06:00
093dc9cd8c playername 2024-04-25 14:49:26 -06:00
a3266c6de3 init time 2024-04-25 14:16:28 -06:00
0ea6672804 connection events 2024-04-25 14:07:35 -06:00
b3967606f4 small fixes 2024-04-04 16:54:29 -06:00
fcd130a132 update bones 2024-04-04 15:38:50 -06:00
f39a4d008c waittillframeend for event 2024-03-12 14:58:28 -06:00
cff61ab690 modwarfare support 2024-01-20 00:17:29 -06:00
f044af8aea update gsc version 2024-01-18 15:08:18 -06:00
1d464fca49 check for target knife 2024-01-18 14:53:07 -06:00
538269517a Merge branch 'master' of github.com:ineedbots/iw3_bot_warfare 2024-01-18 14:13:04 -06:00
9efda21175 move scripts to mp folder 2024-01-18 14:13:01 -06:00
f536f2b65d Update main.yml 2024-01-15 15:26:03 -06:00
7b52b462e4 Update README.md 2024-01-12 18:08:08 -06:00
9136ef2809 Update 2024-01-12 13:15:35 -06:00
a8385f9010 ci 2024-01-07 21:23:15 -06:00
541b0832e3 fmt 2024-01-04 16:05:38 -06:00
8acd9a282e register 2023-12-31 14:05:32 -06:00
cd1721b9f0 register 2023-12-31 13:54:25 -06:00
c342446e46 fix these 2023-12-22 00:28:29 -06:00
e181931ca2 some misses 2023-12-21 21:46:48 -06:00
ad74f6b93d fix this print 2023-12-21 20:56:41 -06:00
249298b8f7 case sensitive, always curly braces, array index spacing, 2023-12-20 22:36:05 -06:00
b2989d5610 fix sab defuse stuck 2023-12-15 20:28:19 -06:00
4e8b5a1604 add checks 2023-12-13 19:14:08 -06:00
4c5dc51a46 fix builtin 2023-12-13 12:34:00 -06:00
5de583df89 better bot kicking logic 2023-12-13 12:24:32 -06:00
5be2cf4b51 better aim 2023-12-11 16:50:33 -06:00
6315dffe34 cleanup 2023-12-11 16:01:27 -06:00
9b36015636 small fix 2023-12-10 05:18:58 -06:00
9356aa2aff add melee lunge 2023-12-09 22:57:52 -06:00
77b4081edc fix 2023-12-07 16:19:46 -06:00
3287031fe7 small fix 2023-12-06 12:57:26 -06:00
26c533638e oops 2023-12-05 14:58:48 -06:00
ccda0c6c37 fix 2023-12-05 14:52:42 -06:00
386e87d063 Add perline reading/writing fileio again 2023-12-01 15:23:40 -06:00
dc58bf328a add cod4x io builtins 2023-12-01 14:27:20 -06:00
21949a47da added goal prio 2023-11-30 03:24:54 -06:00
521225e4ce isbot 2023-11-29 16:31:37 -06:00
6f954ebfba Major cleanup 2023-11-29 15:50:00 -06:00
c6a21a075b reorganize 2023-11-28 21:25:50 -06:00
250ee97e9d cleanup 2023-11-28 21:17:33 -06:00
cf788c4308 fix this team select 2022-10-21 13:43:45 -06:00
465 changed files with 127146 additions and 95050 deletions

View File

@ -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

View File

@ -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/main.yml vendored Normal file
View File

@ -0,0 +1,21 @@
name: main
on: [push]
jobs:
main-win:
name: Test 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: Compile test script
run: |
gsc-tool.exe -m parse -g iw5 -s pc .

41
.gitignore vendored
View File

@ -1,35 +1,8 @@
# Ignore everything in repository root
/*
# Files to not ignore
!/.gitignore
!/.editorconfig
!/.gitattributes
!/z_server.bat
# Folder to not ignore
!/main_shared/
!/.vscode
*.gsx
!/main_shared/maps/mp/gametypes/_callbacksetup.gsx
main_shared/maps/mp/gametypes/_globallogic.gsx
main_shared/maps/mp/gametypes/_hardpoints.gsx
!/README.md
*.zip
!/out
!/.astylerc
!/z_deploy.bat
!/deploy.bat
!/deploy.js
!/main/
/main/*
!/main/server.cfg
!/main/botnames.txt
!/main/waypoints/
!/main/plugins/
/main/plugins/*
!/main/plugins/httpget.dll
!/main/plugins/httpget.so
*.log
*.stat
logs/
demos/
missingasset.csv
q3config_server.cfg
qconsole.log.old

3
.gitmodules vendored
View File

@ -1,3 +0,0 @@
[submodule "main_shared/waypoints"]
path = main/waypoints
url = https://github.com/ineedbots/cod4x_waypoints

184
README.md
View File

@ -1,18 +1,18 @@
![GitHub Logo](/main_shared/bw-assets/bw-logo.png)
![GitHub Logo](/bw-assets/bw-logo.png)
# CoD4x Bot Warfare
# IW3 Bot Warfare
Bot Warfare is a GSC mod for the [CoD4x project](https://github.com/callofduty4x/CoD4x_Server).
It aims to add playable AI to the multiplayer games of CoD4.
You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfare/downloads/cod4x-bot-warfare-latest) and the CoD4x forum post [here](https://cod4x.ovh/index.php?/forums/topic/3116-release-bot-warfare/).
You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfare/downloads/iw3-bot-warfare-latest).
## <span style="color:red">Important to public dedicated servers</span>
The ```bots_main_firstIsHost``` DVAR is enabled by default!
The `bots_main_firstIsHost` DVAR is enabled by default!
This is so inexperienced users of the mod can access with menu without any configuration.
Make sure to disable this DVAR by adding ```set bots_main_firstIsHost 0``` in your server config!
Make sure to disable this DVAR by adding `set bots_main_firstIsHost 0` in your server config!
## Contents
- [Features](#Features)
@ -22,7 +22,7 @@ Make sure to disable this DVAR by adding ```set bots_main_firstIsHost 0``` in yo
- [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](/main_shared/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.
@ -31,43 +31,41 @@ Make sure to disable this DVAR by adding ```set bots_main_firstIsHost 0``` in yo
- This mod does not edit ANY stock .gsc files, meaning EVERY other mod is compatible with this mod. Mod doesn't add anything unnecessary, what you see is what you get.
- Adds AI clients to multiplayer games to simulate playing real players. (essentially Combat Training for CoD4)
- Bots move around the maps with native engine input. (all normal maps)
- Bots press all the buttons with native engine input (ads, sprint, jump, etc)
- Bots play all gamemodes/objectives, they capture flags, plant, defuse bombs, etc. (all normal modes)
- Bots use all killstreaks.
- Bots target helicopters.
- Bots target equipment.
- Bots can camp randomly.
- Bots can follow others on own will.
- Bots have smooth and realistic aim.
- Bots respond smartly to their surroundings, they will go to you if you shoot, uav, etc.
- Bots use all perks and weapons.
- Bots difficulty level can be customized and are accurate. (hard is hard, easy is easy, etc.)
- Bots each all have different classes, traits, and difficulty and remember it all.
- Bots switch from between primaries and secondaries.
- Bots can grenade, place claymores, they even use grenades and tubes in preset map locations.
- Bots use grenade launchers.
- Bots can melee people.
- Bots can run!
- Bots can climb ladders!
- Bots jump shot and drop shot.
- Bots detect smoke grenades, stun grenades, flashed and airstrike slows.
- Bots will remember their class, skill and traits, even on multiround based gametypes.
- Bots can throwback grenades.
- ... And pretty much everything you expect a Combat Training bot to have
- Bots move around the maps with native engine input. (all normal maps)
- Bots press all the buttons with native engine input (ads, sprint, jump, etc)
- Bots play all gamemodes/objectives, they capture flags, plant, defuse bombs, etc. (all normal modes)
- Bots use all killstreaks.
- Bots target helicopters.
- Bots target equipment.
- Bots can camp randomly.
- Bots can follow others on own will.
- Bots have smooth and realistic aim.
- Bots respond smartly to their surroundings, they will go to you if you shoot, uav, etc.
- Bots use all perks and weapons.
- Bots difficulty level can be customized and are accurate. (hard is hard, easy is easy, etc.)
- Bots each all have different classes, traits, and difficulty and remember it all.
- Bots switch from between primaries and secondaries.
- Bots can grenade, place claymores, they even use grenades and tubes in preset map locations.
- Bots use grenade launchers.
- Bots can melee people.
- Bots can run!
- Bots can climb ladders!
- Bots jump shot and drop shot.
- Bots detect smoke grenades, stun grenades, flashed and airstrike slows.
- Bots will remember their class, skill and traits, even on multiround based gametypes.
- Bots can throwback grenades.
- ... And pretty much everything you expect a Combat Training bot to have
## Installation
Using CoD4x's extended functionality requires to use their Dedicated server, as explained [here](https://cod4x.ovh/index.php?/forums/topic/2047-add-cod4x-server-gsc-functions-to-the-client/).
You can easily setup a local LAN dedicated server for you to join and play on. Have a look at [Setting up a CoD4x server](https://github.com/callofduty4x/CoD4x_Server/wiki/Server-setup).
0. Make sure that [CoD4x server + client](https://cod4x.ovh/) is installed, updated and working properly.
- Download the [latest release](https://github.com/ineedbots/cod4x_bot_warfare/releases) of Bot Warfare.
- Download the [latest release](https://github.com/ineedbots/iw3_bot_warfare/releases) of Bot Warfare.
1. Locate your CoD4x server install folder.
2. Move the files/folders found in 'Add to root of CoD4x server' from the Bot Warfare release archive you downloaded to the root of your CoD4x server folder.
- The folder/file structure should follow as `.CoD4x server folder\main_shared\maps\mp\bots\_bot.gsc`.
3. The mod is now installed, now start your server, change the DVARs and start a map.
4. Now start your CoD4x client and connect to your server ('connect 127.0.0.1' in the console most likely) and play!
2. Move the files/folders found in `Add to root of CoD4x server` from the Bot Warfare release archive you downloaded to the root of your CoD4x server folder.
- The folder/file structure should follow as `.CoD4x server folder\mods\mp_bots\z_svr_bots.iwd`.
3. The mod is now installed. Now before you start your server, you will need to set the `fs_game` DVAR to `mods/mp_bots` as a commandline argument (`+set fs_game "mods/mp_bots"`).
4. Now start your CoD4x client and connect to your server (`connect 127.0.0.1` in the console most likely) and play!
## Documentation
@ -81,76 +79,90 @@ You can easily setup a local LAN dedicated server for you to join and play on. H
### DVARs
| Dvar | Description | Default Value |
|----------------------------------|---------------------------------------------------------------------------------------------|--------------:|
| bots_main | Enable this mod. | true |
| bots_main_firstIsHost | The first player to connect will be given host. | true |
| 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. | 1 |
| 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_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_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_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 (not released yet)
- 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
- Fixed some chat related script runtime errors
- Waypoints only load from csv now
- Fix bots possibly being stuck in sab
- Major cleanup
- v2.1.0
- Bot chatter system, bots_main_chat
- Greatly reduce script variable usage
- Improved bots mantling and stuck
- Fix some runtime errors
- Bots sprint more
- Improved bots sight on enemies
- Bots do random actions while waiting at an objective
- Improved bots from getting stuck
- Better bot difficulty management, bots_skill_min and bots_skill_max
- Bot chatter system, bots_main_chat
- Greatly reduce script variable usage
- Improved bots mantling and stuck
- Fix some runtime errors
- Bots sprint more
- Improved bots sight on enemies
- Bots do random actions while waiting at an objective
- Improved bots from getting stuck
- Better bot difficulty management, bots_skill_min and bots_skill_max
- v2.0.1
- Reduced bots crouching
- Increased bots sprinting
- Improved bots mantling, crouching and knifing glass when needed
- Fixed possible script runtime errors
- Improved domination
- Bots use explosives more if they have it
- Bots aim slower when ads'ing
- Fixed bots holding breath
- Fixed bots rubberbanding movement when their goal changes
- Added bots quickscoping with snipers
- Added bots reload canceling and fast swaps
- Bots use C4
- Improved revenge
- Bots can swap weapons on spawn more likely
- Reduced bots crouching
- Increased bots sprinting
- Improved bots mantling, crouching and knifing glass when needed
- Fixed possible script runtime errors
- Improved domination
- Bots use explosives more if they have it
- Bots aim slower when ads'ing
- Fixed bots holding breath
- Fixed bots rubberbanding movement when their goal changes
- Added bots quickscoping with snipers
- Added bots reload canceling and fast swaps
- Bots use C4
- Improved revenge
- Bots can swap weapons on spawn more likely
- v2.0.0
- Initial reboot release
- Initial reboot release
## Credits
- CoD4x Team - https://github.com/callofduty4x/CoD4x_Server

View File

Before

Width:  |  Height:  |  Size: 655 KiB

After

Width:  |  Height:  |  Size: 655 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -1,9 +1,9 @@
# CoD4x Bot Warfare Waypoint Editor
# IW3 Bot Warfare Waypoint Editor
First things first, Bot Warfare uses the [AStar search algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) for creating paths for the bots to find their way through a map.
The AStar search algorithm requires a [set of waypoints](https://en.wikipedia.org/wiki/Graph_(discrete_mathematics)) defining where all the paths are in the map.
Now if you want to modify existing or create new waypoints for CoD4x maps, this is the read for you.
Now if you want to modify existing or create new waypoints for CoD4 maps, this is the read for you.
## Contents
- [Setting up the Waypoint Editor](#Setting-up-the-Waypoint-Editor)
@ -14,23 +14,20 @@ The Bot Warfare mod comes with the Waypoint Editor out of the box, so its just a
Start your server with the Bot Warfare mod.
In the server console, type in ```set bots_main_debug 1```.<br>
![Setting the dvar](/main_shared/bw-assets/console.png)
In the server console, type in `set bots_main_debug 1`.<br>
![Setting the dvar](/bw-assets/console.png)
Now start a match with the map you want to edit with the `devmap <mapname>` command.<br>
![Starting a map](/main_shared/bw-assets/console-map.png)
![Starting a map](/bw-assets/console-map.png)
It should be noted that waypoints load in this following order;
1. checks the 'waypoints' folder (FS_Game\waypoints) for a csv file
2. loads the waypoints from GSC (maps\mp\bots\waypoints)
3. checks online at [this repo](https://github.com/ineedbots/cod4x_waypoints) for the waypoints (if httpget plugin loaded)
It should be noted that waypoints load from the 'waypoints' folder (<fs_game>\scriptdata\waypoints) for a csv file.
If all fail to load waypoints, there will be no waypoints and the bots will not know how to navigate the map.
If csv fails to load waypoints, then the bots will not know how to navigate the map.
Connect to the server with the CoD4x client, you'll be introduced to the Waypoint Editor.
## The Editor
![The editor](/main_shared/bw-assets/editor.png)<br>
![The editor](/bw-assets/editor.png)<br>
This is the Waypoint Editor. You can view, edit and create the waypoint graph.
- Each red number you see in the world is a waypoint.
- The green string you see is the type of that waypoint.
@ -68,10 +65,10 @@ Each button has a secondary modifier button, and can be pressed shortly after pr
Okay, now that you know how to control the Editor, lets now go ahead and create some waypoints.
Here I added a waypoint.<br>
![Adding a waypoint](/main_shared/bw-assets/editor-addwp.png)
![Adding a waypoint](/bw-assets/editor-addwp.png)
And I added a second waypoint.<br>
![Adding another waypoint](/main_shared/bw-assets/editor-addwp2.png)
![Adding another waypoint](/bw-assets/editor-addwp2.png)
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:
@ -83,7 +80,7 @@ There are several types of waypoints, holding a modifier button before pressing
- climb - bots will look at the angles you were looking at when you made the waypoint and climb (use this for ladders and mantles)
Here I linked the two waypoints together.<br>
![Linking waypoints](/main_shared/bw-assets/editor-link.png)
![Linking waypoints](/bw-assets/editor-link.png)
Linking waypoints are very important, it tells the bots that they can reach waypoint 1 from waypoint 0, and vice versa.
@ -93,7 +90,5 @@ Once you feel like you are done, press the Save buttons. This will generate a [C
That is it! The waypoints should load next time you start your game!
Your waypoints CSV file will be located at ```<fs_game>/waypoints/<mapname>_wp.csv```. (main folder if fs_game is blank)<br>
![Location](/main_shared/bw-assets/saved.png)
You can share your waypoints publicly (and can be loaded by other users of Bot Warfare remotely) by making a Pull Request to the [CoD4x_Waypoints repo](https://github.com/ineedbots/cod4x_waypoints).
Your waypoints CSV file will be located at `<fs_game>\scriptdata\waypoints\<mapname>_wp.csv`. (main folder if fs_game is blank)<br>
![Location](/bw-assets/saved.png)

View File

@ -1,2 +0,0 @@
xcopy cod4x_bot_warfare\main_shared\maps\mp\bots main_shared\maps\mp\bots\ /Y /I /E /H /C
xcopy cod4x_bot_warfare\main main\ /Y /I /E /H /C

View File

@ -1,54 +0,0 @@
// nodejs 14+
const exec = require('util').promisify(require('child_process').exec)
const repo_name = 'cod4x_bot_warfare'
const repo_url = `https://github.com/ineedbots/${repo_name}`
const deploy_check_rate = 60000
const title = 'CoD4x 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)

Binary file not shown.

View File

@ -1,198 +0,0 @@
////////////////////////////////////////////////////////////
/// ///
/// ///
/// Call of Duty 4 X Standard Configuration ///
/// ///
/// Author: Daedalus, Created: 08.01.2017 ///
/// Provides a general starting point for your ///
/// CoD4X server configuration. Also contains ///
/// features only available on CoD4X 1.8+ servers ///
/// ///
////////////////////////////////////////////////////////////
loadplugin "httpget"
// Meta Information, not required
sets _Admin "Admin"
sets _Email ""
sets _Website ""
sets _Location ""
sets _Maps ""
sets _Gametype ""
/////////////////////////////////
// Basics
set sv_hostname "^1Bot ^3War^5fare ^724/7 Shipment 10x"
set g_motd "" // Message of the day, which getting shown to every player on his 1st spawn
set g_password "" // join password, leave empty to deactivate
set sv_privateClients "" //Private Clients, number of slots that can only be changed with a password
set sv_privatePassword "" // the password to join private slots
set sv_authorizemode "-1" // cdkey validation
set sv_showasranked "1" // 0 = show modded server as not ranked, 1 = shows server as ranked altough it is modded
// Log File
set g_logsync "2" // 0=no log, 1=buffered, 2=continuous, 3=append
set logfile "1" // 0 = NO log, 1 = log file enabled
set g_log "games_mp.log" // Name of log file, default is games_mp.log
set sv_log_damage "1"
set sv_statusfile "serverstatus.xml" // writes an xml serverstatus to disc, leave empty to disable
// Networking
// set sv_maxRate 25000
set sv_minPing "0" // minimal ping [ms] for a player to join the server
set sv_maxPing "0" // maximal ping [ms] for a player to join the server
set sv_timeout "40" // Seconds to keep a client on server without a new clientmessage
set sv_connectTimeout "90" // Seconds to wait for a client which is loading a map without a new clientmessage
set sv_zombieTime "2" // Seconds to keep a disconnected client on server to transmit the last message
set sv_reconnectlimit "5" // Seconds to disallow a prior connected client to reconnect to the server
// Floodprotection is enabled by default!
// sv_floodProtect, sv_maxRate,
// Variables you should not touch :)
// set sv_fps "20" //Server-FPS (do not change!)
set sv_punkbuster "0" //Punkbuster, PB is not supported on CoD4x
set sv_pure "0" //check IWD-data 0 = off, 1 = on
// set g_antilag "1" //0 = off, 1 = on // Anti lag checks for weapon hits
// set ModStats "1" // 1 = use player stats file for mods (normal behaviours), 0 = use player stats file of basegame (DANGEROUS!!! as it can overwrite your stats)
// Variables I have no clue what they are doing :D
set sv_allowAnonymous "0" // Anonymous //0 = off 1 = on
//////////////////////
// Gameplay
// Maps
set sv_mapRotation "map mp_shipment" // maps that will be played automatically
// set sv_randomMapRotation "1" // 0 = sv_mapRotation is randomized, 1 = sequential order of sv_mapRotation
set g_deadChat "1" // dead can chat // 0 = off, 1 = on
set voice_deadChat "0" // dead can use voicechat //0 = off, 1 = on
set g_gravity "800" //Gravity //Standard 800
set sv_disableClientConsole "0" //deactivate console for clients //0 = no, 1 = yes
set scr_teambalance "1" //auto-teambalance //0 = no, 1 = yes
set scr_team_fftype "0" //friendly-fire //0 = off, 1 = on, //2 = reflect damage, 3 = shared damage
set scr_game_spectatetype "2" // spectator // 0 = off, 1 = only Team/player, 2 = free
set scr_hardcore "0" //Hardcore Mode //0 = off 1 = on
set scr_oldschool "0" //Oldschool Mode //0 = off, 1 = on
set g_friendlyPlayerCanBlock "0" // 1 = player collision between friendly players, 0 = collision between friendly players is disabled
set g_FFAPlayerCanBlock "1" // same for FFA (non team based) gamemode
// Less interesting Gameplay stuff
set scr_drawfriend "0" //show team mates //0 = off, 1 = on
set scr_enable_scoretext "1" //hit-message //0 = no, 1 = yes
set scr_game_allowkillcam "1" //Killcam //0 = no, 1 = yes // Allow to play killcam after you got killed
set scr_game_deathpointloss "0" //points-distraction when hit //0 = no, 1 = yes
set scr_game_suicidepointloss "0" //points-distraction suicide //0 = no, 1 = yes
set scr_game_matchstarttime "10" //time until match starts
set scr_game_playerwaittime "10" //respawn-delay
set scr_player_forcerespawn "1" //force respawn //0 = no, 1 = yes // forgot what -1 did but i believe it was different xD
set scr_player_healthregentime "5" //health regeneration (in seconds)
set scr_player_maxhealth "100" //Max health
set scr_player_sprinttime "4" //Sprint-time
set scr_game_onlyheadshots "0" //headshots only //0 = no, 1 = yes
set scr_teamKillPunishCount "3" //Teamkiller kick after x Teamkills
set scr_team_teamkillspawndelay "20" //teamkill spawn delay (in seconds)
set scr_team_teamkillpointloss "1" //pointloss after Teamkill //0 = no, 1 = yes
set scr_enable_hiticon "1" //Hit-Symbol //0 = off, 1 = on
//Game-Modes
//Death Match (dm)
set scr_dm_scorelimit "1000"
set scr_dm_timelimit "15"
set scr_dm_roundlimit "1"
set scr_dm_numlives "0"
set scr_dm_playerrespawndelay "3"
set scr_dm_waverespawndelay "0"
//Team Death Match (war)
set scr_war_scorelimit "2000"
set scr_war_timelimit "10"
set scr_war_roundlimit "1"
set scr_war_numlives "0"
set scr_war_playerrespawndelay "3"
set scr_war_waverespawndelay "0"
//Domination (dom)
set scr_dom_scorelimit "300"
set scr_dom_timelimit "30"
set scr_dom_numlives "0"
set scr_dom_playerrespawndelay "0"
set scr_dom_roundlimit "1"
set scr_dom_waverespawndelay "0"
//HQ (koth)
set scr_koth_scorelimit "250"
set scr_koth_timelimit "15"
set koth_kothmode "0" //Classic HQ-Mode 0 = off, 1 = on
set koth_capturetime "20"
set koth_spawntime "3" //0 = immediately, x = time in seconds
set scr_koth_numlives "0"
set scr_koth_playerrespawndelay "3"
set scr_koth_roundlimit "1"
set scr_koth_roundswitch "1"
set scr_koth_waverespawndelay "0"
set koth_autodestroytime "60"
set koth_delayPlayer "3"
set koth_destroytime "10"
set koth_spawnDelay "3"
//Sabotage (sab)
set scr_sab_scorelimit "2"
set scr_sab_timelimit "10"
set scr_sab_roundswitch "1"
set scr_sab_bombtimer "30"
set scr_sab_planttime "2.5"
set scr_sab_defusetime "5"
set scr_sab_hotpotato "0"
set scr_sab_numlives "0"
set scr_sab_playerrespawndelay "5"
set scr_sab_roundlimit "0"
set scr_sab_waverespawndelay "0"
//Search and destroy (sd)
set scr_sd_scorelimit "9"
set scr_sd_timelimit "2.5"
set scr_sd_roundswitch "4"
set scr_sd_bombtimer "45"
set scr_sd_planttime "5"
set scr_sd_defusetime "7"
set scr_sd_multibomb "0"
set scr_sd_numlives "1"
set scr_sd_playerrespawndelay "0"
set scr_sd_roundlimit "0"
set scr_sd_waverespawndelay "0"
set g_gametype "dom" // gamemode, one of [war, dm, sd, sab, koth]
// Amazing Stuff
set sv_autodemorecord "1" // Records demos of players on the serverside, demos are stored in "demos" folder
//set sv_demoCompletedCmd "" // program to execute when a demo has been saved
//set sv_screenshotArrivedCmd "" // program to execute when a screenshot was taken
//set sv_legacyguidmode "0" // 1 = old 32 character guids are used, 0 = new cod4x guid format is used ( like steamids )
///////////////////////////
// Setup for custom maps when running a mod
seta sv_wwwDownload "1" // enable download redirection
seta sv_wwwBaseURL "http://rawcdn.githack.com/ineedbots/www_host/main/cod4x/" // defines url to download from
seta sv_wwwDlDisconnected "1" // disconnect clients while downloading
///////////////////////////
set sv_nosteamnames "1" // 1 = Use names from steam if steam is available
set bots_manage_add "12"
set bots_main_firstIsHost "0"
set bots_manage_fill "12"
set bots_manage_fill_kick "1"
set bots_team_force "1"
set bots_loadout_allow_op "0"
set bots_loadout_reasonable "1"
set bots_manage_fill_spec "0"
exec config.cfg

Submodule main/waypoints deleted from c734ac790d

File diff suppressed because it is too large Load Diff

View File

@ -1,137 +0,0 @@
/*
_bot_http
Author: INeedGames
Date: 12/16/2020
The HTTP module
*/
#include maps\mp\bots\_bot_utility;
/*
Will attempt to retreive waypoints from the internet
*/
getRemoteWaypoints( mapname )
{
url = "https://raw.githubusercontent.com/ineedbots/cod4x_waypoints/master/" + mapname + "_wp.csv";
filename = "waypoints/" + mapname + "_wp.csv";
printToConsole( "Attempting to get remote waypoints from " + url );
res = getLinesFromUrl( url, filename );
if ( !res.lines.size )
return;
waypointCount = int( res.lines[0] );
waypoints = [];
printToConsole( "Loading remote waypoints..." );
for ( i = 1; i <= waypointCount; i++ )
{
tokens = tokenizeLine( res.lines[i], "," );
waypoint = parseTokensIntoWaypoint( tokens );
waypoints[i - 1] = waypoint;
}
if ( waypoints.size )
{
level.waypoints = waypoints;
printToConsole( "Loaded " + waypoints.size + " waypoints from remote." );
}
}
/*
Does the version check, if we are up too date
*/
doVersionCheck()
{
remoteVersion = getRemoteVersion();
if ( !isDefined( remoteVersion ) )
{
printToConsole( "Error getting remote version of Bot Warfare." );
return false;
}
if ( level.bw_VERSION != remoteVersion )
{
printToConsole( "There is a new version of Bot Warfare!" );
printToConsole( "You are on version " + level.bw_VERSION + " but " + remoteVersion + " is available!" );
return false;
}
printToConsole( "You are on the latest version of Bot Warfare!" );
return true;
}
/*
Returns the version of bot warfare found on the internet
*/
getRemoteVersion()
{
#if isSyscallDefined HTTPS_GetString
data = HTTPS_GetString( "https://raw.githubusercontent.com/ineedbots/cod4x_waypoints/master/version.txt" );
#else
data = undefined;
#endif
if ( !isDefined( data ) )
return undefined;
return strtok( data, "\n" )[0];
}
/*
Returns an array of each line from the response of the http url request
*/
getLinesFromUrl( url, filename )
{
result = spawnStruct();
result.lines = [];
#if isSyscallDefined HTTPS_GetString
data = HTTPS_GetString( url );
#else
data = undefined;
#endif
if ( !isDefined( data ) )
return result;
fd = FS_FOpen( filename, "write" );
line = "";
for ( i = 0; i < data.size; i++ )
{
c = data[i];
if ( c == "\n" )
{
result.lines[result.lines.size] = line;
if ( fd > 0 )
{
if ( !FS_WriteLine( fd, line ) )
{
FS_FClose( fd );
fd = 0;
}
}
line = "";
continue;
}
line += c;
}
result.lines[result.lines.size] = line;
if ( fd > 0 )
FS_FClose( fd );
return result;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,648 +0,0 @@
/*
_wp_editor
Author: INeedGames
Date: 09/26/2020
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_commandWait" ) == "" )
setDvar( "bots_main_debug_commandWait", 0.5 );
if ( getDvar( "bots_main_debug_framerate" ) == "" )
setDvar( "bots_main_debug_framerate", 58 );
if ( getDvar( "bots_main_debug_lineDuration" ) == "" )
setDvar( "bots_main_debug_lineDuration", 3 );
if ( getDvar( "bots_main_debug_printDuration" ) == "" )
setDvar( "bots_main_debug_printDuration", 3 );
if ( getDvar( "bots_main_debug_debugRate" ) == "" )
setDvar( "bots_main_debug_debugRate", 0.5 );
setDvar( "player_sustainAmmo", 1 );
level.waypoints = [];
level.waypointCount = 0;
level waittill( "connected", player );
player thread onPlayerSpawned();
}
onPlayerSpawned()
{
self endon( "disconnect" );
for ( ;; )
{
self waittill( "spawned_player" );
self thread beginDebug();
}
}
beginDebug()
{
self endon( "disconnect" );
self endon( "death" );
level.wpToLink = -1;
level.autoLink = false;
self.closest = -1;
self.command = undefined;
self clearPerks();
self takeAllWeapons();
self.specialty = [];
self giveWeapon( "m16_gl_mp" );
self SetActionSlot( 3, "altMode" );
self giveWeapon( "frag_grenade_mp" );
self freezecontrols( false );
self thread debug();
self thread addWaypoints();
self thread linkWaypoints();
self thread deleteWaypoints();
self thread watchSaveWaypointsCommand();
self thread sayExtras();
self thread textScroll( "^1SecondaryOffhand - ^2Add Waypoint; ^3MeleeButton - ^4Link Waypoint; ^5FragButton - ^6Delete Waypoint; ^7UseButton + AttackButton - ^8Save" );
}
sayExtras()
{
self endon( "disconnect" );
self endon( "death" );
self iprintln( "Making a crouch waypoint with only one link..." );
self iprintln( "Makes a camping waypoint." );
}
debug()
{
self endon( "disconnect" );
self endon( "death" );
self setClientDvar( "com_maxfps", getDvarInt( "bots_main_debug_framerate" ) );
for ( ;; )
{
wait getDvarFloat( "bots_main_debug_debugRate" );
if ( isDefined( self.command ) )
continue;
closest = -1;
myEye = self getTagOrigin( "j_head" );
myAngles = self GetPlayerAngles();
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" ) ) )
{
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 ), 1, 1, getDvarInt( "bots_main_debug_lineDuration" ) );
if ( getConeDot( wpOrg, myEye, myAngles ) > getDvarFloat( "bots_main_debug_cone" ) )
print3d( wpOrg, i, ( 1, 0, 0 ), 2, 1, 6 );
if ( isDefined( level.waypoints[i].angles ) && level.waypoints[i].type != "stand" )
line( wpOrg, wpOrg + AnglesToForward( level.waypoints[i].angles ) * 64, ( 1, 1, 1 ), 1, 1, getDvarInt( "bots_main_debug_lineDuration" ) );
}
}
self.closest = closest;
if ( closest != -1 )
{
stringChildren = "";
for ( i = 0; i < level.waypoints[closest].children.size; i++ )
{
if ( i != 0 )
stringChildren = stringChildren + "," + level.waypoints[closest].children[i];
else
stringChildren = stringChildren + level.waypoints[closest].children[i];
}
print3d( level.waypoints[closest].origin + ( 0, 0, 35 ), stringChildren, ( 0, 1, 0 ), 2, 1, getDvarInt( "bots_main_debug_printDuration" ) );
print3d( level.waypoints[closest].origin + ( 0, 0, 15 ), level.waypoints[closest].type, ( 0, 1, 0 ), 2, 1, getDvarInt( "bots_main_debug_printDuration" ) );
}
}
}
AddWaypoints()
{
self endon( "disconnect" );
self endon( "death" );
for ( ;; )
{
while ( !self SecondaryOffhandButtonPressed() || isDefined( self.command ) )
wait 0.05;
pos = self getOrigin();
self.command = true;
self iprintln( "Adding a waypoint..." );
self iprintln( "ADS - climb; Attack + Use - tube" );
self iprintln( "Attack - grenade; Use - claymore" );
self iprintln( "Else(wait) - your stance" );
wait getDvarFloat( "bots_main_debug_commandWait" );
self addWaypoint( pos );
self.command = undefined;
while ( self SecondaryOffhandButtonPressed() )
wait 0.05;
}
}
linkWaypoints()
{
self endon( "disconnect" );
self endon( "death" );
for ( ;; )
{
while ( !self MeleeButtonPressed() || isDefined( self.command ) )
wait 0.05;
self.command = true;
self iprintln( "ADS - Unlink; Else(wait) - Link" );
wait getDvarFloat( "bots_main_debug_commandWait" );
if ( !self adsButtonPressed() )
self LinkWaypoint( self.closest );
else
self UnLinkWaypoint( self.closest );
self.command = undefined;
while ( self MeleeButtonPressed() )
wait 0.05;
}
}
deleteWaypoints()
{
self endon( "disconnect" );
self endon( "death" );
for ( ;; )
{
while ( !self fragButtonPressed() || isDefined( self.command ) )
wait 0.05;
self.command = true;
self iprintln( "Attack - DeleteAll; ADS - Load" );
self iprintln( "Else(wait) - Delete" );
wait getDvarFloat( "bots_main_debug_commandWait" );
if ( self attackButtonPressed() )
self deleteAllWaypoints();
else if ( self adsButtonPressed() )
self LoadWaypoints();
else
self DeleteWaypoint( self.closest );
self.command = undefined;
while ( self fragButtonPressed() )
wait 0.05;
}
}
watchSaveWaypointsCommand()
{
self endon( "death" );
self endon( "disconnect" );
for ( ;; )
{
while ( !self useButtonPressed() || !self attackButtonPressed() || isDefined( self.command ) )
wait 0.05;
self.command = true;
self iprintln( "ADS - Autolink; Else(wait) - Save" );
wait getDvarFloat( "bots_main_debug_commandWait" );
if ( !self adsButtonPressed() )
{
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/*" );
}
logprint( "*/return waypoints;\n}\n\n\n\n" );
filename = "waypoints/" + getdvar( "mapname" ) + "_wp.csv";
fd = FS_FOpen( filename, "write" );
PrintLn( "********* Start Bot Warfare WPDump *********" );
PrintLn( level.waypointCount );
if ( fd > 0 )
{
if ( !FS_WriteLine( fd, level.waypointCount + "" ) )
{
FS_FClose( fd );
fd = 0;
}
}
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 += ",";
str += ",";
PrintLn( str );
if ( fd > 0 )
{
if ( !FS_WriteLine( fd, str ) )
{
FS_FClose( fd );
fd = 0;
}
}
}
PrintLn( "\n\n\n\n\n\n" );
self iprintln( "Saved!!! to " + filename );
if ( fd > 0 )
FS_FClose( fd );
}
else
{
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.closest;
}
}
self.command = undefined;
while ( self useButtonPressed() && self attackButtonPressed() )
wait 0.05;
}
}
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 ( !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" );
}
}
DeleteAllWaypoints()
{
level.waypoints = [];
level.waypointCount = 0;
self iprintln( "DelAllWps" );
}
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( pos )
{
level.waypoints[level.waypointCount] = spawnstruct();
level.waypoints[level.waypointCount].origin = pos;
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 = [];
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++;
}
}
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-- )
{
if ( level.waypoints[level.wpToLink].children[i] == nwp )
{
weGood = false;
break;
}
}
if ( weGood )
{
for ( i = level.waypoints[nwp].children.size - 1; i >= 0; i-- )
{
if ( level.waypoints[nwp].children[i] == 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;
}
destroyOnDeath( hud )
{
hud endon( "death" );
self waittill_either( "death", "disconnect" );
hud destroy();
}
textScroll( string )
{
self endon( "death" );
self endon( "disconnect" );
//thanks ActionScript
back = createBar( ( 0, 0, 0 ), 1000, 30 );
back setPoint( "CENTER", undefined, 0, 220 );
self thread destroyOnDeath( back );
text = createFontString( "default", 1.5 );
text setText( string );
self thread destroyOnDeath( text );
for ( ;; )
{
text setPoint( "CENTER", undefined, 1200, 220 );
text setPoint( "CENTER", undefined, -1200, 220, 20 );
wait 20;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,845 +0,0 @@
Killhouse()
{
waypoints = [];
waypoints[0] = spawnstruct();
waypoints[0].origin = (1181.56,148.431,28.125);
waypoints[0].type = "stand";
waypoints[0].childCount = 2;
waypoints[0].children[0] = 1;
waypoints[0].children[1] = 11;
waypoints[1] = spawnstruct();
waypoints[1].origin = (1094.79,153.256,80.125);
waypoints[1].type = "stand";
waypoints[1].childCount = 2;
waypoints[1].children[0] = 0;
waypoints[1].children[1] = 2;
waypoints[2] = spawnstruct();
waypoints[2].origin = (488.403,150.541,80.125);
waypoints[2].type = "stand";
waypoints[2].childCount = 2;
waypoints[2].children[0] = 1;
waypoints[2].children[1] = 3;
waypoints[3] = spawnstruct();
waypoints[3].origin = (391.899,153.36,28.125);
waypoints[3].type = "stand";
waypoints[3].childCount = 3;
waypoints[3].children[0] = 2;
waypoints[3].children[1] = 4;
waypoints[3].children[2] = 5;
waypoints[4] = spawnstruct();
waypoints[4].origin = (401.059,239.669,28.125);
waypoints[4].type = "stand";
waypoints[4].childCount = 6;
waypoints[4].children[0] = 3;
waypoints[4].children[1] = 5;
waypoints[4].children[2] = 13;
waypoints[4].children[3] = 6;
waypoints[4].children[4] = 8;
waypoints[4].children[5] = 86;
waypoints[5] = spawnstruct();
waypoints[5].origin = (124.215,210.283,28.125);
waypoints[5].type = "stand";
waypoints[5].childCount = 4;
waypoints[5].children[0] = 4;
waypoints[5].children[1] = 6;
waypoints[5].children[2] = 3;
waypoints[5].children[3] = 86;
waypoints[6] = spawnstruct();
waypoints[6].origin = (412.98,445.891,28.125);
waypoints[6].type = "stand";
waypoints[6].childCount = 8;
waypoints[6].children[0] = 7;
waypoints[6].children[1] = 4;
waypoints[6].children[2] = 5;
waypoints[6].children[3] = 13;
waypoints[6].children[4] = 68;
waypoints[6].children[5] = 67;
waypoints[6].children[6] = 69;
waypoints[6].children[7] = 86;
waypoints[7] = spawnstruct();
waypoints[7].origin = (546.57,448.066,28.125);
waypoints[7].type = "stand";
waypoints[7].childCount = 4;
waypoints[7].children[0] = 6;
waypoints[7].children[1] = 8;
waypoints[7].children[2] = 13;
waypoints[7].children[3] = 67;
waypoints[8] = spawnstruct();
waypoints[8].origin = (686.556,444.51,28.125);
waypoints[8].type = "stand";
waypoints[8].childCount = 5;
waypoints[8].children[0] = 7;
waypoints[8].children[1] = 9;
waypoints[8].children[2] = 13;
waypoints[8].children[3] = 14;
waypoints[8].children[4] = 4;
waypoints[9] = spawnstruct();
waypoints[9].origin = (836.351,440.111,28.125);
waypoints[9].type = "stand";
waypoints[9].childCount = 4;
waypoints[9].children[0] = 8;
waypoints[9].children[1] = 10;
waypoints[9].children[2] = 12;
waypoints[9].children[3] = 18;
waypoints[10] = spawnstruct();
waypoints[10].origin = (948.997,437.246,28.125);
waypoints[10].type = "stand";
waypoints[10].childCount = 6;
waypoints[10].children[0] = 9;
waypoints[10].children[1] = 12;
waypoints[10].children[2] = 11;
waypoints[10].children[3] = 18;
waypoints[10].children[4] = 24;
waypoints[10].children[5] = 88;
waypoints[11] = spawnstruct();
waypoints[11].origin = (1159.55,316.005,28.125);
waypoints[11].type = "stand";
waypoints[11].childCount = 4;
waypoints[11].children[0] = 0;
waypoints[11].children[1] = 12;
waypoints[11].children[2] = 10;
waypoints[11].children[3] = 88;
waypoints[12] = spawnstruct();
waypoints[12].origin = (890.993,266.089,28.125);
waypoints[12].type = "stand";
waypoints[12].childCount = 4;
waypoints[12].children[0] = 11;
waypoints[12].children[1] = 13;
waypoints[12].children[2] = 10;
waypoints[12].children[3] = 9;
waypoints[13] = spawnstruct();
waypoints[13].origin = (580.602,251.012,28.125);
waypoints[13].type = "stand";
waypoints[13].childCount = 5;
waypoints[13].children[0] = 4;
waypoints[13].children[1] = 12;
waypoints[13].children[2] = 7;
waypoints[13].children[3] = 6;
waypoints[13].children[4] = 8;
waypoints[14] = spawnstruct();
waypoints[14].origin = (724.843,589.895,28.125);
waypoints[14].type = "stand";
waypoints[14].childCount = 4;
waypoints[14].children[0] = 8;
waypoints[14].children[1] = 15;
waypoints[14].children[2] = 16;
waypoints[14].children[3] = 89;
waypoints[15] = spawnstruct();
waypoints[15].origin = (689.658,738.037,60.125);
waypoints[15].type = "stand";
waypoints[15].childCount = 2;
waypoints[15].children[0] = 14;
waypoints[15].children[1] = 17;
waypoints[16] = spawnstruct();
waypoints[16].origin = (782.19,740.27,60.125);
waypoints[16].type = "stand";
waypoints[16].childCount = 2;
waypoints[16].children[0] = 14;
waypoints[16].children[1] = 17;
waypoints[17] = spawnstruct();
waypoints[17].origin = (738.365,860.821,28.125);
waypoints[17].type = "stand";
waypoints[17].childCount = 4;
waypoints[17].children[0] = 16;
waypoints[17].children[1] = 15;
waypoints[17].children[2] = 25;
waypoints[17].children[3] = 66;
waypoints[18] = spawnstruct();
waypoints[18].origin = (892.884,503.932,50.125);
waypoints[18].type = "stand";
waypoints[18].childCount = 3;
waypoints[18].children[0] = 9;
waypoints[18].children[1] = 10;
waypoints[18].children[2] = 19;
waypoints[19] = spawnstruct();
waypoints[19].origin = (889.55,614.586,156.125);
waypoints[19].type = "stand";
waypoints[19].childCount = 2;
waypoints[19].children[0] = 18;
waypoints[19].children[1] = 20;
waypoints[20] = spawnstruct();
waypoints[20].origin = (821.734,700.728,156.125);
waypoints[20].type = "stand";
waypoints[20].childCount = 3;
waypoints[20].children[0] = 19;
waypoints[20].children[1] = 21;
waypoints[20].children[2] = 23;
waypoints[21] = spawnstruct();
waypoints[21].origin = (704.143,709.897,156.125);
waypoints[21].type = "stand";
waypoints[21].childCount = 2;
waypoints[21].children[0] = 20;
waypoints[21].children[1] = 22;
waypoints[22] = spawnstruct();
waypoints[22].origin = (660.627,556.142,156.125);
waypoints[22].type = "stand";
waypoints[22].childCount = 2;
waypoints[22].children[0] = 21;
waypoints[22].children[1] = 23;
waypoints[23] = spawnstruct();
waypoints[23].origin = (757.048,539.674,156.125);
waypoints[23].type = "stand";
waypoints[23].childCount = 2;
waypoints[23].children[0] = 22;
waypoints[23].children[1] = 20;
waypoints[24] = spawnstruct();
waypoints[24].origin = (1004.58,582.486,28.125);
waypoints[24].type = "stand";
waypoints[24].childCount = 4;
waypoints[24].children[0] = 10;
waypoints[24].children[1] = 25;
waypoints[24].children[2] = 101;
waypoints[24].children[3] = 103;
waypoints[25] = spawnstruct();
waypoints[25].origin = (1029.19,824.597,28.125);
waypoints[25].type = "stand";
waypoints[25].childCount = 5;
waypoints[25].children[0] = 17;
waypoints[25].children[1] = 26;
waypoints[25].children[2] = 27;
waypoints[25].children[3] = 24;
waypoints[25].children[4] = 103;
waypoints[26] = spawnstruct();
waypoints[26].origin = (952.182,1052.15,28.125);
waypoints[26].type = "stand";
waypoints[26].childCount = 5;
waypoints[26].children[0] = 25;
waypoints[26].children[1] = 27;
waypoints[26].children[2] = 28;
waypoints[26].children[3] = 29;
waypoints[26].children[4] = 73;
waypoints[27] = spawnstruct();
waypoints[27].origin = (1092.87,982.674,28.125);
waypoints[27].type = "stand";
waypoints[27].childCount = 5;
waypoints[27].children[0] = 25;
waypoints[27].children[1] = 26;
waypoints[27].children[2] = 28;
waypoints[27].children[3] = 90;
waypoints[27].children[4] = 103;
waypoints[28] = spawnstruct();
waypoints[28].origin = (1215.84,1133.62,28.125);
waypoints[28].type = "stand";
waypoints[28].childCount = 4;
waypoints[28].children[0] = 27;
waypoints[28].children[1] = 26;
waypoints[28].children[2] = 33;
waypoints[28].children[3] = 90;
waypoints[29] = spawnstruct();
waypoints[29].origin = (808.471,1142.11,28.125);
waypoints[29].type = "stand";
waypoints[29].childCount = 4;
waypoints[29].children[0] = 26;
waypoints[29].children[1] = 30;
waypoints[29].children[2] = 65;
waypoints[29].children[3] = 66;
waypoints[30] = spawnstruct();
waypoints[30].origin = (953.341,1289.21,28.125);
waypoints[30].type = "stand";
waypoints[30].childCount = 5;
waypoints[30].children[0] = 29;
waypoints[30].children[1] = 31;
waypoints[30].children[2] = 34;
waypoints[30].children[3] = 63;
waypoints[30].children[4] = 64;
waypoints[31] = spawnstruct();
waypoints[31].origin = (929.05,1665.76,28.125);
waypoints[31].type = "stand";
waypoints[31].childCount = 4;
waypoints[31].children[0] = 30;
waypoints[31].children[1] = 32;
waypoints[31].children[2] = 62;
waypoints[31].children[3] = 63;
waypoints[32] = spawnstruct();
waypoints[32].origin = (1029.84,1676.12,60.125);
waypoints[32].type = "stand";
waypoints[32].childCount = 2;
waypoints[32].children[0] = 31;
waypoints[32].children[1] = 84;
waypoints[33] = spawnstruct();
waypoints[33].origin = (1149.13,1318.31,28.125);
waypoints[33].type = "stand";
waypoints[33].childCount = 4;
waypoints[33].children[0] = 34;
waypoints[33].children[1] = 28;
waypoints[33].children[2] = 91;
waypoints[33].children[3] = 92;
waypoints[34] = spawnstruct();
waypoints[34].origin = (1044.88,1301.19,60.125);
waypoints[34].type = "stand";
waypoints[34].childCount = 2;
waypoints[34].children[0] = 33;
waypoints[34].children[1] = 30;
waypoints[35] = spawnstruct();
waypoints[35].origin = (1227.16,1921.76,28.125);
waypoints[35].type = "stand";
waypoints[35].childCount = 6;
waypoints[35].children[0] = 39;
waypoints[35].children[1] = 38;
waypoints[35].children[2] = 62;
waypoints[35].children[3] = 84;
waypoints[35].children[4] = 93;
waypoints[35].children[5] = 94;
waypoints[36] = spawnstruct();
waypoints[36].origin = (981.053,2281.89,28.125);
waypoints[36].type = "stand";
waypoints[36].childCount = 4;
waypoints[36].children[0] = 37;
waypoints[36].children[1] = 40;
waypoints[36].children[2] = 41;
waypoints[36].children[3] = 42;
waypoints[37] = spawnstruct();
waypoints[37].origin = (928.878,2123.83,60.125);
waypoints[37].type = "stand";
waypoints[37].childCount = 3;
waypoints[37].children[0] = 36;
waypoints[37].children[1] = 38;
waypoints[37].children[2] = 42;
waypoints[38] = spawnstruct();
waypoints[38].origin = (939.541,1963.59,28.125);
waypoints[38].type = "stand";
waypoints[38].childCount = 5;
waypoints[38].children[0] = 39;
waypoints[38].children[1] = 35;
waypoints[38].children[2] = 37;
waypoints[38].children[3] = 59;
waypoints[38].children[4] = 62;
waypoints[39] = spawnstruct();
waypoints[39].origin = (1076.47,2020.68,28.125);
waypoints[39].type = "stand";
waypoints[39].childCount = 3;
waypoints[39].children[0] = 35;
waypoints[39].children[1] = 38;
waypoints[39].children[2] = 40;
waypoints[40] = spawnstruct();
waypoints[40].origin = (1120.26,2201.66,28.125);
waypoints[40].type = "stand";
waypoints[40].childCount = 3;
waypoints[40].children[0] = 39;
waypoints[40].children[1] = 36;
waypoints[40].children[2] = 41;
waypoints[41] = spawnstruct();
waypoints[41].origin = (1186.71,2334.35,28.125);
waypoints[41].type = "stand";
waypoints[41].childCount = 4;
waypoints[41].children[0] = 40;
waypoints[41].children[1] = 36;
waypoints[41].children[2] = 42;
waypoints[41].children[3] = 96;
waypoints[42] = spawnstruct();
waypoints[42].origin = (794.13,2412.11,28.125);
waypoints[42].type = "stand";
waypoints[42].childCount = 9;
waypoints[42].children[0] = 36;
waypoints[42].children[1] = 37;
waypoints[42].children[2] = 41;
waypoints[42].children[3] = 43;
waypoints[42].children[4] = 45;
waypoints[42].children[5] = 44;
waypoints[42].children[6] = 46;
waypoints[42].children[7] = 47;
waypoints[42].children[8] = 48;
waypoints[43] = spawnstruct();
waypoints[43].origin = (1168.55,2471.78,28.125);
waypoints[43].type = "stand";
waypoints[43].childCount = 3;
waypoints[43].children[0] = 42;
waypoints[43].children[1] = 44;
waypoints[43].children[2] = 45;
waypoints[44] = spawnstruct();
waypoints[44].origin = (1188.65,2574.37,28.125);
waypoints[44].type = "stand";
waypoints[44].childCount = 3;
waypoints[44].children[0] = 43;
waypoints[44].children[1] = 45;
waypoints[44].children[2] = 42;
waypoints[45] = spawnstruct();
waypoints[45].origin = (871.363,2570.3,28.125);
waypoints[45].type = "stand";
waypoints[45].childCount = 4;
waypoints[45].children[0] = 44;
waypoints[45].children[1] = 42;
waypoints[45].children[2] = 43;
waypoints[45].children[3] = 48;
waypoints[46] = spawnstruct();
waypoints[46].origin = (710.182,2313.92,28.125);
waypoints[46].type = "stand";
waypoints[46].childCount = 4;
waypoints[46].children[0] = 42;
waypoints[46].children[1] = 47;
waypoints[46].children[2] = 60;
waypoints[46].children[3] = 61;
waypoints[47] = spawnstruct();
waypoints[47].origin = (639.393,2390.73,28.125);
waypoints[47].type = "stand";
waypoints[47].childCount = 5;
waypoints[47].children[0] = 46;
waypoints[47].children[1] = 42;
waypoints[47].children[2] = 48;
waypoints[47].children[3] = 49;
waypoints[47].children[4] = 50;
waypoints[48] = spawnstruct();
waypoints[48].origin = (604.445,2550.02,28.125);
waypoints[48].type = "stand";
waypoints[48].childCount = 5;
waypoints[48].children[0] = 45;
waypoints[48].children[1] = 47;
waypoints[48].children[2] = 42;
waypoints[48].children[3] = 50;
waypoints[48].children[4] = 51;
waypoints[49] = spawnstruct();
waypoints[49].origin = (553.371,2318.72,50.125);
waypoints[49].type = "stand";
waypoints[49].childCount = 3;
waypoints[49].children[0] = 47;
waypoints[49].children[1] = 50;
waypoints[49].children[2] = 106;
waypoints[50] = spawnstruct();
waypoints[50].origin = (456.722,2430.49,28.125);
waypoints[50].type = "stand";
waypoints[50].childCount = 8;
waypoints[50].children[0] = 49;
waypoints[50].children[1] = 48;
waypoints[50].children[2] = 47;
waypoints[50].children[3] = 51;
waypoints[50].children[4] = 52;
waypoints[50].children[5] = 54;
waypoints[50].children[6] = 53;
waypoints[50].children[7] = 97;
waypoints[51] = spawnstruct();
waypoints[51].origin = (259.984,2581.73,28.125);
waypoints[51].type = "stand";
waypoints[51].childCount = 3;
waypoints[51].children[0] = 48;
waypoints[51].children[1] = 50;
waypoints[51].children[2] = 98;
waypoints[52] = spawnstruct();
waypoints[52].origin = (394.979,2269.04,28.125);
waypoints[52].type = "stand";
waypoints[52].childCount = 3;
waypoints[52].children[0] = 50;
waypoints[52].children[1] = 57;
waypoints[52].children[2] = 53;
waypoints[53] = spawnstruct();
waypoints[53].origin = (291.176,2246.97,28.125);
waypoints[53].type = "stand";
waypoints[53].childCount = 5;
waypoints[53].children[0] = 50;
waypoints[53].children[1] = 55;
waypoints[53].children[2] = 52;
waypoints[53].children[3] = 54;
waypoints[53].children[4] = 85;
waypoints[54] = spawnstruct();
waypoints[54].origin = (98.4385,2222.46,28.125);
waypoints[54].type = "stand";
waypoints[54].childCount = 4;
waypoints[54].children[0] = 50;
waypoints[54].children[1] = 53;
waypoints[54].children[2] = 58;
waypoints[54].children[3] = 85;
waypoints[55] = spawnstruct();
waypoints[55].origin = (218.456,2011.41,28.125);
waypoints[55].type = "stand";
waypoints[55].childCount = 4;
waypoints[55].children[0] = 53;
waypoints[55].children[1] = 56;
waypoints[55].children[2] = 81;
waypoints[55].children[3] = 105;
waypoints[56] = spawnstruct();
waypoints[56].origin = (361.233,1982.66,28.125);
waypoints[56].type = "stand";
waypoints[56].childCount = 4;
waypoints[56].children[0] = 55;
waypoints[56].children[1] = 57;
waypoints[56].children[2] = 59;
waypoints[56].children[3] = 81;
waypoints[57] = spawnstruct();
waypoints[57].origin = (375.537,2073.62,60.125);
waypoints[57].type = "stand";
waypoints[57].childCount = 2;
waypoints[57].children[0] = 56;
waypoints[57].children[1] = 52;
waypoints[58] = spawnstruct();
waypoints[58].origin = (74.3311,2083.72,60.125);
waypoints[58].type = "stand";
waypoints[58].childCount = 2;
waypoints[58].children[0] = 54;
waypoints[58].children[1] = 105;
waypoints[59] = spawnstruct();
waypoints[59].origin = (662.975,1986.09,28.125);
waypoints[59].type = "stand";
waypoints[59].childCount = 6;
waypoints[59].children[0] = 56;
waypoints[59].children[1] = 38;
waypoints[59].children[2] = 60;
waypoints[59].children[3] = 61;
waypoints[59].children[4] = 62;
waypoints[59].children[5] = 81;
waypoints[60] = spawnstruct();
waypoints[60].origin = (635.091,2077.18,60.125);
waypoints[60].type = "stand";
waypoints[60].childCount = 2;
waypoints[60].children[0] = 59;
waypoints[60].children[1] = 46;
waypoints[61] = spawnstruct();
waypoints[61].origin = (722.706,2098.12,60.125);
waypoints[61].type = "stand";
waypoints[61].childCount = 2;
waypoints[61].children[0] = 46;
waypoints[61].children[1] = 59;
waypoints[62] = spawnstruct();
waypoints[62].origin = (846.771,1809.78,28.125);
waypoints[62].type = "stand";
waypoints[62].childCount = 5;
waypoints[62].children[0] = 38;
waypoints[62].children[1] = 59;
waypoints[62].children[2] = 31;
waypoints[62].children[3] = 35;
waypoints[62].children[4] = 63;
waypoints[63] = spawnstruct();
waypoints[63].origin = (761.789,1610.09,28.125);
waypoints[63].type = "stand";
waypoints[63].childCount = 5;
waypoints[63].children[0] = 62;
waypoints[63].children[1] = 31;
waypoints[63].children[2] = 30;
waypoints[63].children[3] = 64;
waypoints[63].children[4] = 80;
waypoints[64] = spawnstruct();
waypoints[64].origin = (749.754,1459.28,28.125);
waypoints[64].type = "stand";
waypoints[64].childCount = 6;
waypoints[64].children[0] = 63;
waypoints[64].children[1] = 65;
waypoints[64].children[2] = 78;
waypoints[64].children[3] = 80;
waypoints[64].children[4] = 30;
waypoints[64].children[5] = 109;
waypoints[65] = spawnstruct();
waypoints[65].origin = (691.641,1208.28,28.125);
waypoints[65].type = "stand";
waypoints[65].childCount = 5;
waypoints[65].children[0] = 64;
waypoints[65].children[1] = 29;
waypoints[65].children[2] = 66;
waypoints[65].children[3] = 78;
waypoints[65].children[4] = 73;
waypoints[66] = spawnstruct();
waypoints[66].origin = (650.532,877.419,28.125);
waypoints[66].type = "stand";
waypoints[66].childCount = 5;
waypoints[66].children[0] = 65;
waypoints[66].children[1] = 17;
waypoints[66].children[2] = 67;
waypoints[66].children[3] = 29;
waypoints[66].children[4] = 78;
waypoints[67] = spawnstruct();
waypoints[67].origin = (544.701,793.649,28.125);
waypoints[67].type = "stand";
waypoints[67].childCount = 6;
waypoints[67].children[0] = 66;
waypoints[67].children[1] = 7;
waypoints[67].children[2] = 6;
waypoints[67].children[3] = 68;
waypoints[67].children[4] = 72;
waypoints[67].children[5] = 73;
waypoints[68] = spawnstruct();
waypoints[68].origin = (335.603,653.458,28.125);
waypoints[68].type = "stand";
waypoints[68].childCount = 4;
waypoints[68].children[0] = 6;
waypoints[68].children[1] = 67;
waypoints[68].children[2] = 69;
waypoints[68].children[3] = 70;
waypoints[69] = spawnstruct();
waypoints[69].origin = (144.44,561.733,28.125);
waypoints[69].type = "stand";
waypoints[69].childCount = 3;
waypoints[69].children[0] = 68;
waypoints[69].children[1] = 70;
waypoints[69].children[2] = 6;
waypoints[70] = spawnstruct();
waypoints[70].origin = (232.662,709.075,28.125);
waypoints[70].type = "stand";
waypoints[70].childCount = 3;
waypoints[70].children[0] = 69;
waypoints[70].children[1] = 68;
waypoints[70].children[2] = 71;
waypoints[71] = spawnstruct();
waypoints[71].origin = (234.977,764.208,60.125);
waypoints[71].type = "stand";
waypoints[71].childCount = 2;
waypoints[71].children[0] = 70;
waypoints[71].children[1] = 72;
waypoints[72] = spawnstruct();
waypoints[72].origin = (218.863,847.94,28.125);
waypoints[72].type = "stand";
waypoints[72].childCount = 4;
waypoints[72].children[0] = 71;
waypoints[72].children[1] = 67;
waypoints[72].children[2] = 73;
waypoints[72].children[3] = 104;
waypoints[73] = spawnstruct();
waypoints[73].origin = (367.448,1003.93,28.125);
waypoints[73].type = "stand";
waypoints[73].childCount = 6;
waypoints[73].children[0] = 67;
waypoints[73].children[1] = 72;
waypoints[73].children[2] = 77;
waypoints[73].children[3] = 78;
waypoints[73].children[4] = 26;
waypoints[73].children[5] = 65;
waypoints[74] = spawnstruct();
waypoints[74].origin = (57.1662,1233.93,28.125);
waypoints[74].type = "stand";
waypoints[74].childCount = 3;
waypoints[74].children[0] = 75;
waypoints[74].children[1] = 76;
waypoints[74].children[2] = 104;
waypoints[75] = spawnstruct();
waypoints[75].origin = (49.9737,1440.71,28.125);
waypoints[75].type = "stand";
waypoints[75].childCount = 2;
waypoints[75].children[0] = 74;
waypoints[75].children[1] = 76;
waypoints[76] = spawnstruct();
waypoints[76].origin = (295.812,1487.62,28.125);
waypoints[76].type = "stand";
waypoints[76].childCount = 6;
waypoints[76].children[0] = 74;
waypoints[76].children[1] = 75;
waypoints[76].children[2] = 78;
waypoints[76].children[3] = 79;
waypoints[76].children[4] = 81;
waypoints[76].children[5] = 82;
waypoints[77] = spawnstruct();
waypoints[77].origin = (238.297,1201.9,28.125);
waypoints[77].type = "stand";
waypoints[77].childCount = 1;
waypoints[77].children[0] = 73;
waypoints[78] = spawnstruct();
waypoints[78].origin = (579.117,1227.48,28.125);
waypoints[78].type = "stand";
waypoints[78].childCount = 6;
waypoints[78].children[0] = 73;
waypoints[78].children[1] = 76;
waypoints[78].children[2] = 65;
waypoints[78].children[3] = 66;
waypoints[78].children[4] = 64;
waypoints[78].children[5] = 79;
waypoints[79] = spawnstruct();
waypoints[79].origin = (498.169,1561.09,28.125);
waypoints[79].type = "stand";
waypoints[79].childCount = 3;
waypoints[79].children[0] = 76;
waypoints[79].children[1] = 78;
waypoints[79].children[2] = 80;
waypoints[80] = spawnstruct();
waypoints[80].origin = (550.791,1741.92,28.125);
waypoints[80].type = "stand";
waypoints[80].childCount = 4;
waypoints[80].children[0] = 79;
waypoints[80].children[1] = 81;
waypoints[80].children[2] = 63;
waypoints[80].children[3] = 64;
waypoints[81] = spawnstruct();
waypoints[81].origin = (429.149,1830.74,28.125);
waypoints[81].type = "stand";
waypoints[81].childCount = 6;
waypoints[81].children[0] = 80;
waypoints[81].children[1] = 76;
waypoints[81].children[2] = 82;
waypoints[81].children[3] = 55;
waypoints[81].children[4] = 56;
waypoints[81].children[5] = 59;
waypoints[82] = spawnstruct();
waypoints[82].origin = (221.076,1709.51,28.125);
waypoints[82].type = "stand";
waypoints[82].childCount = 3;
waypoints[82].children[0] = 81;
waypoints[82].children[1] = 83;
waypoints[82].children[2] = 76;
waypoints[83] = spawnstruct();
waypoints[83].origin = (83.9234,1695.33,28.125);
waypoints[83].type = "stand";
waypoints[83].childCount = 2;
waypoints[83].children[0] = 82;
waypoints[83].children[1] = 105;
waypoints[84] = spawnstruct();
waypoints[84].origin = (1174.9,1663.86,28.125);
waypoints[84].type = "stand";
waypoints[84].childCount = 3;
waypoints[84].children[0] = 35;
waypoints[84].children[1] = 32;
waypoints[84].children[2] = 100;
waypoints[85] = spawnstruct();
waypoints[85].origin = (70.0231,2366.4,28.125);
waypoints[85].type = "stand";
waypoints[85].childCount = 2;
waypoints[85].children[0] = 54;
waypoints[85].children[1] = 53;
waypoints[86] = spawnstruct();
waypoints[86].origin = (52.4273,446.677,28.125);
waypoints[86].type = "stand";
waypoints[86].childCount = 3;
waypoints[86].children[0] = 5;
waypoints[86].children[1] = 6;
waypoints[86].children[2] = 4;
waypoints[87] = spawnstruct();
waypoints[87].origin = (1275,455.869,28.125);
waypoints[87].type = "stand";
waypoints[87].childCount = 1;
waypoints[87].children[0] = 88;
waypoints[88] = spawnstruct();
waypoints[88].origin = (1151.95,470.155,28.125);
waypoints[88].type = "stand";
waypoints[88].childCount = 3;
waypoints[88].children[0] = 87;
waypoints[88].children[1] = 11;
waypoints[88].children[2] = 10;
waypoints[89] = spawnstruct();
waypoints[89].origin = (876.306,679.683,28.125);
waypoints[89].type = "stand";
waypoints[89].childCount = 1;
waypoints[89].children[0] = 14;
waypoints[90] = spawnstruct();
waypoints[90].origin = (1293.84,913.475,28.125);
waypoints[90].type = "stand";
waypoints[90].childCount = 2;
waypoints[90].children[0] = 28;
waypoints[90].children[1] = 27;
waypoints[91] = spawnstruct();
waypoints[91].origin = (1238.44,1457.36,28.125);
waypoints[91].type = "stand";
waypoints[91].childCount = 2;
waypoints[91].children[0] = 33;
waypoints[91].children[1] = 92;
waypoints[92] = spawnstruct();
waypoints[92].origin = (1135.87,1453.89,28.125);
waypoints[92].type = "stand";
waypoints[92].childCount = 3;
waypoints[92].children[0] = 33;
waypoints[92].children[1] = 91;
waypoints[92].children[2] = 100;
waypoints[93] = spawnstruct();
waypoints[93].origin = (1289.65,2119.4,28.125);
waypoints[93].type = "stand";
waypoints[93].childCount = 2;
waypoints[93].children[0] = 94;
waypoints[93].children[1] = 35;
waypoints[94] = spawnstruct();
waypoints[94].origin = (1224.96,2095.72,28.125);
waypoints[94].type = "stand";
waypoints[94].childCount = 3;
waypoints[94].children[0] = 93;
waypoints[94].children[1] = 35;
waypoints[94].children[2] = 95;
waypoints[95] = spawnstruct();
waypoints[95].origin = (1241.72,2149.57,60.125);
waypoints[95].type = "stand";
waypoints[95].childCount = 2;
waypoints[95].children[0] = 94;
waypoints[95].children[1] = 96;
waypoints[96] = spawnstruct();
waypoints[96].origin = (1226.45,2209.46,28.125);
waypoints[96].type = "stand";
waypoints[96].childCount = 2;
waypoints[96].children[0] = 95;
waypoints[96].children[1] = 41;
waypoints[97] = spawnstruct();
waypoints[97].origin = (27.9452,2471.29,28.125);
waypoints[97].type = "stand";
waypoints[97].childCount = 2;
waypoints[97].children[0] = 98;
waypoints[97].children[1] = 50;
waypoints[98] = spawnstruct();
waypoints[98].origin = (42.7472,2574.31,28.125);
waypoints[98].type = "stand";
waypoints[98].childCount = 2;
waypoints[98].children[0] = 97;
waypoints[98].children[1] = 51;
waypoints[99] = spawnstruct();
waypoints[99].origin = (1213.21,1534.44,28.125);
waypoints[99].type = "stand";
waypoints[99].childCount = 1;
waypoints[99].children[0] = 100;
waypoints[100] = spawnstruct();
waypoints[100].origin = (1141.68,1513.85,28.125);
waypoints[100].type = "stand";
waypoints[100].childCount = 3;
waypoints[100].children[0] = 99;
waypoints[100].children[1] = 92;
waypoints[100].children[2] = 84;
waypoints[101] = spawnstruct();
waypoints[101].origin = (1272.17,557.036,28.125);
waypoints[101].type = "stand";
waypoints[101].childCount = 3;
waypoints[101].children[0] = 102;
waypoints[101].children[1] = 24;
waypoints[101].children[2] = 103;
waypoints[102] = spawnstruct();
waypoints[102].origin = (1280.78,828.297,28.125);
waypoints[102].type = "stand";
waypoints[102].childCount = 2;
waypoints[102].children[0] = 101;
waypoints[102].children[1] = 103;
waypoints[103] = spawnstruct();
waypoints[103].origin = (1124.55,800.407,28.125);
waypoints[103].type = "stand";
waypoints[103].childCount = 5;
waypoints[103].children[0] = 25;
waypoints[103].children[1] = 102;
waypoints[103].children[2] = 101;
waypoints[103].children[3] = 24;
waypoints[103].children[4] = 27;
waypoints[104] = spawnstruct();
waypoints[104].origin = (64.1468,828.055,28.125);
waypoints[104].type = "stand";
waypoints[104].childCount = 2;
waypoints[104].children[0] = 72;
waypoints[104].children[1] = 74;
waypoints[105] = spawnstruct();
waypoints[105].origin = (71.0671,2040.7,28.125);
waypoints[105].type = "stand";
waypoints[105].childCount = 3;
waypoints[105].children[0] = 58;
waypoints[105].children[1] = 83;
waypoints[105].children[2] = 55;
waypoints[106] = spawnstruct();
waypoints[106].origin = (544.506,2130.72,156.125);
waypoints[106].type = "stand";
waypoints[106].childCount = 3;
waypoints[106].children[0] = 49;
waypoints[106].children[1] = 107;
waypoints[106].children[2] = 108;
waypoints[107] = spawnstruct();
waypoints[107].origin = (755.036,2119.37,156.125);
waypoints[107].type = "stand";
waypoints[107].childCount = 2;
waypoints[107].children[0] = 106;
waypoints[107].children[1] = 108;
waypoints[108] = spawnstruct();
waypoints[108].origin = (736.684,2279.45,156.125);
waypoints[108].type = "stand";
waypoints[108].childCount = 2;
waypoints[108].children[0] = 107;
waypoints[108].children[1] = 106;
waypoints[109] = spawnstruct();
waypoints[109].origin = (719.125,1442.05,28.125);
waypoints[109].type = "stand";
waypoints[109].childCount = 2;
waypoints[109].children[0] = 64;
waypoints[109].children[1] = 110;
waypoints[110] = spawnstruct();
waypoints[110].origin = (701.565,1440.57,260.125);
waypoints[110].type = "stand";
waypoints[110].childCount = 2;
waypoints[110].children[0] = 109;
waypoints[110].children[1] = 111;
waypoints[111] = spawnstruct();
waypoints[111].origin = (590.653,1439.15,260.125);
waypoints[111].type = "stand";
waypoints[111].childCount = 1;
waypoints[111].children[0] = 110;
return waypoints;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,529 +0,0 @@
Shipment()
{
/* 16:52 */waypoints = [];
/* 16:52 */waypoints[0] = spawnstruct();
/* 16:52 */waypoints[0].origin = (-1.7, 406.3, 192);
/* 16:52 */waypoints[0].type = "stand";
/* 16:52 */waypoints[0].childCount = 5;
/* 16:52 */waypoints[0].children[0] = 6;
/* 16:52 */waypoints[0].children[1] = 19;
/* 16:52 */waypoints[0].children[2] = 3;
/* 16:52 */waypoints[0].children[3] = 27;
/* 16:52 */waypoints[0].children[4] = 57;
/* 16:52 */waypoints[1] = spawnstruct();
/* 16:52 */waypoints[1].origin = (-686, 278.79, 202.6);
/* 16:52 */waypoints[1].type = "stand";
/* 16:52 */waypoints[1].childCount = 3;
/* 16:52 */waypoints[1].children[0] = 3;
/* 16:52 */waypoints[1].children[1] = 2;
/* 16:52 */waypoints[1].children[2] = 28;
/* 16:52 */waypoints[2] = spawnstruct();
/* 16:52 */waypoints[2].origin = (-669, 706.1, 193);
/* 16:52 */waypoints[2].type = "stand";
/* 16:52 */waypoints[2].childCount = 4;
/* 16:52 */waypoints[2].children[0] = 1;
/* 16:52 */waypoints[2].children[1] = 4;
/* 16:52 */waypoints[2].children[2] = 49;
/* 16:52 */waypoints[2].children[3] = 50;
/* 16:52 */waypoints[3] = spawnstruct();
/* 16:52 */waypoints[3].origin = (-442.2, 384.5, 194.2);
/* 16:52 */waypoints[3].type = "stand";
/* 16:52 */waypoints[3].childCount = 6;
/* 16:52 */waypoints[3].children[0] = 1;
/* 16:52 */waypoints[3].children[1] = 4;
/* 16:52 */waypoints[3].children[2] = 0;
/* 16:52 */waypoints[3].children[3] = 16;
/* 16:52 */waypoints[3].children[4] = 27;
/* 16:52 */waypoints[3].children[5] = 28;
/* 16:52 */waypoints[4] = spawnstruct();
/* 16:52 */waypoints[4].origin = (-127.28, 730.6, 193.6);
/* 16:52 */waypoints[4].type = "stand";
/* 16:52 */waypoints[4].childCount = 3;
/* 16:52 */waypoints[4].children[0] = 3;
/* 16:52 */waypoints[4].children[1] = 2;
/* 16:52 */waypoints[4].children[2] = 32;
/* 16:52 */waypoints[5] = spawnstruct();
/* 16:52 */waypoints[5].origin = (208.3, 586.4, 197.1);
/* 16:52 */waypoints[5].type = "stand";
/* 16:52 */waypoints[5].childCount = 4;
/* 16:52 */waypoints[5].children[0] = 6;
/* 16:52 */waypoints[5].children[1] = 4;
/* 16:52 */waypoints[5].children[2] = 35;
/* 16:52 */waypoints[5].children[3] = 71;
/* 16:52 */waypoints[6] = spawnstruct();
/* 16:52 */waypoints[6].origin = (450.1, 385.7, 192);
/* 16:52 */waypoints[6].type = "stand";
/* 16:52 */waypoints[6].childCount = 5;
/* 16:52 */waypoints[6].children[0] = 7;
/* 16:52 */waypoints[6].children[1] = 0;
/* 16:52 */waypoints[6].children[2] = 5;
/* 16:52 */waypoints[6].children[3] = 20;
/* 16:52 */waypoints[6].children[4] = 25;
/* 16:52 */waypoints[7] = spawnstruct();
/* 16:52 */waypoints[7].origin = (401.8, 57.6, 192);
/* 16:52 */waypoints[7].type = "stand";
/* 16:52 */waypoints[7].childCount = 6;
/* 16:52 */waypoints[7].children[0] = 6;
/* 16:52 */waypoints[7].children[1] = 18;
/* 16:52 */waypoints[7].children[2] = 8;
/* 16:52 */waypoints[7].children[3] = 21;
/* 16:52 */waypoints[7].children[4] = 63;
/* 16:52 */waypoints[7].children[5] = 64;
/* 16:52 */waypoints[8] = spawnstruct();
/* 16:52 */waypoints[8].origin = (455.4, -314, 193.2);
/* 16:52 */waypoints[8].type = "stand";
/* 16:52 */waypoints[8].childCount = 5;
/* 16:52 */waypoints[8].children[0] = 7;
/* 16:52 */waypoints[8].children[1] = 17;
/* 16:52 */waypoints[8].children[2] = 9;
/* 16:52 */waypoints[8].children[3] = 21;
/* 16:52 */waypoints[8].children[4] = 22;
/* 16:52 */waypoints[9] = spawnstruct();
/* 16:52 */waypoints[9].origin = (175.7, -495.7, 192.6);
/* 16:52 */waypoints[9].type = "stand";
/* 16:52 */waypoints[9].childCount = 5;
/* 16:52 */waypoints[9].children[0] = 8;
/* 16:52 */waypoints[9].children[1] = 10;
/* 16:52 */waypoints[9].children[2] = 24;
/* 16:52 */waypoints[9].children[3] = 34;
/* 16:52 */waypoints[9].children[4] = 41;
/* 16:52 */waypoints[10] = spawnstruct();
/* 16:52 */waypoints[10].origin = (-190.9, -591.4, 195.8);
/* 16:52 */waypoints[10].type = "stand";
/* 16:52 */waypoints[10].childCount = 4;
/* 16:52 */waypoints[10].children[0] = 13;
/* 16:52 */waypoints[10].children[1] = 11;
/* 16:52 */waypoints[10].children[2] = 9;
/* 16:52 */waypoints[10].children[3] = 36;
/* 16:52 */waypoints[11] = spawnstruct();
/* 16:52 */waypoints[11].origin = (-556, -576.4, 191);
/* 16:52 */waypoints[11].type = "stand";
/* 16:52 */waypoints[11].childCount = 4;
/* 16:52 */waypoints[11].children[0] = 10;
/* 16:52 */waypoints[11].children[1] = 13;
/* 16:52 */waypoints[11].children[2] = 12;
/* 16:52 */waypoints[11].children[3] = 67;
/* 16:52 */waypoints[12] = spawnstruct();
/* 16:52 */waypoints[12].origin = (-704.1, -302.7, 192.5);
/* 16:52 */waypoints[12].type = "stand";
/* 16:52 */waypoints[12].childCount = 3;
/* 16:52 */waypoints[12].children[0] = 11;
/* 16:52 */waypoints[12].children[1] = 14;
/* 16:52 */waypoints[12].children[2] = 68;
/* 16:52 */waypoints[13] = spawnstruct();
/* 16:52 */waypoints[13].origin = (-342.8, -318, 197.7);
/* 16:52 */waypoints[13].type = "stand";
/* 16:52 */waypoints[13].childCount = 4;
/* 16:52 */waypoints[13].children[0] = 17;
/* 16:52 */waypoints[13].children[1] = 10;
/* 16:52 */waypoints[13].children[2] = 11;
/* 16:52 */waypoints[13].children[3] = 15;
/* 16:52 */waypoints[14] = spawnstruct();
/* 16:52 */waypoints[14].origin = (-600.6, -110.9, 195.1);
/* 16:52 */waypoints[14].type = "stand";
/* 16:52 */waypoints[14].childCount = 4;
/* 16:52 */waypoints[14].children[0] = 15;
/* 16:52 */waypoints[14].children[1] = 12;
/* 16:52 */waypoints[14].children[2] = 30;
/* 16:52 */waypoints[14].children[3] = 45;
/* 16:52 */waypoints[15] = spawnstruct();
/* 16:52 */waypoints[15].origin = (-476.7, -108.5, 192);
/* 16:52 */waypoints[15].type = "stand";
/* 16:52 */waypoints[15].childCount = 5;
/* 16:52 */waypoints[15].children[0] = 13;
/* 16:52 */waypoints[15].children[1] = 14;
/* 16:52 */waypoints[15].children[2] = 16;
/* 16:52 */waypoints[15].children[3] = 46;
/* 16:52 */waypoints[15].children[4] = 48;
/* 16:52 */waypoints[16] = spawnstruct();
/* 16:52 */waypoints[16].origin = (-453.6, 68.1, 192);
/* 16:52 */waypoints[16].type = "stand";
/* 16:52 */waypoints[16].childCount = 4;
/* 16:52 */waypoints[16].children[0] = 3;
/* 16:52 */waypoints[16].children[1] = 18;
/* 16:52 */waypoints[16].children[2] = 15;
/* 16:52 */waypoints[16].children[3] = 28;
/* 16:52 */waypoints[17] = spawnstruct();
/* 16:52 */waypoints[17].origin = (-3.1, -299.5, 192.7);
/* 16:52 */waypoints[17].type = "stand";
/* 16:52 */waypoints[17].childCount = 4;
/* 16:52 */waypoints[17].children[0] = 18;
/* 16:52 */waypoints[17].children[1] = 8;
/* 16:52 */waypoints[17].children[2] = 13;
/* 16:52 */waypoints[17].children[3] = 42;
/* 16:52 */waypoints[18] = spawnstruct();
/* 16:52 */waypoints[18].origin = (2.67, 73.4, 192);
/* 16:52 */waypoints[18].type = "stand";
/* 16:52 */waypoints[18].childCount = 5;
/* 16:52 */waypoints[18].children[0] = 19;
/* 16:52 */waypoints[18].children[1] = 7;
/* 16:52 */waypoints[18].children[2] = 17;
/* 16:52 */waypoints[18].children[3] = 16;
/* 16:52 */waypoints[18].children[4] = 69;
/* 16:52 */waypoints[19] = spawnstruct();
/* 16:52 */waypoints[19].origin = (1.2, 186.5, 193.4);
/* 16:52 */waypoints[19].type = "stand";
/* 16:52 */waypoints[19].childCount = 3;
/* 16:52 */waypoints[19].children[0] = 0;
/* 16:52 */waypoints[19].children[1] = 18;
/* 16:52 */waypoints[19].children[2] = 31;
/* 16:52 */waypoints[20] = spawnstruct();
/* 16:52 */waypoints[20].origin = (689.9, 268.9, 192);
/* 16:52 */waypoints[20].type = "stand";
/* 16:52 */waypoints[20].childCount = 4;
/* 16:52 */waypoints[20].children[0] = 6;
/* 16:52 */waypoints[20].children[1] = 26;
/* 16:52 */waypoints[20].children[2] = 29;
/* 16:52 */waypoints[20].children[3] = 62;
/* 16:52 */waypoints[21] = spawnstruct();
/* 16:52 */waypoints[21].origin = (518.984, -73.7115, 192.077);
/* 16:52 */waypoints[21].type = "stand";
/* 16:52 */waypoints[21].childCount = 3;
/* 16:52 */waypoints[21].children[0] = 7;
/* 16:52 */waypoints[21].children[1] = 8;
/* 16:52 */waypoints[21].children[2] = 33;
/* 16:52 */waypoints[22] = spawnstruct();
/* 16:52 */waypoints[22].origin = (666.767, -411.292, 193.342);
/* 16:52 */waypoints[22].type = "stand";
/* 16:52 */waypoints[22].childCount = 5;
/* 16:52 */waypoints[22].children[0] = 23;
/* 16:52 */waypoints[22].children[1] = 8;
/* 16:52 */waypoints[22].children[2] = 33;
/* 16:52 */waypoints[22].children[3] = 66;
/* 16:52 */waypoints[22].children[4] = 74;
/* 16:52 */waypoints[23] = spawnstruct();
/* 16:52 */waypoints[23].origin = (641.034, -594.69, 193.007);
/* 16:52 */waypoints[23].type = "stand";
/* 16:52 */waypoints[23].childCount = 3;
/* 16:52 */waypoints[23].children[0] = 24;
/* 16:52 */waypoints[23].children[1] = 22;
/* 16:52 */waypoints[23].children[2] = 65;
/* 16:52 */waypoints[24] = spawnstruct();
/* 16:52 */waypoints[24].origin = (314.922, -568.756, 195.837);
/* 16:52 */waypoints[24].type = "stand";
/* 16:52 */waypoints[24].childCount = 2;
/* 16:52 */waypoints[24].children[0] = 23;
/* 16:52 */waypoints[24].children[1] = 9;
/* 16:52 */waypoints[25] = spawnstruct();
/* 16:52 */waypoints[25].origin = (511.787, 726.464, 192.077);
/* 16:52 */waypoints[25].type = "stand";
/* 16:52 */waypoints[25].childCount = 4;
/* 16:52 */waypoints[25].children[0] = 6;
/* 16:52 */waypoints[25].children[1] = 26;
/* 16:52 */waypoints[25].children[2] = 35;
/* 16:52 */waypoints[25].children[3] = 55;
/* 16:52 */waypoints[26] = spawnstruct();
/* 16:52 */waypoints[26].origin = (660.866, 688.142, 192.077);
/* 16:52 */waypoints[26].type = "stand";
/* 16:52 */waypoints[26].childCount = 3;
/* 16:52 */waypoints[26].children[0] = 25;
/* 16:52 */waypoints[26].children[1] = 20;
/* 16:52 */waypoints[26].children[2] = 56;
/* 16:52 */waypoints[27] = spawnstruct();
/* 16:52 */waypoints[27].origin = (-185.714, 460.091, 192.077);
/* 16:52 */waypoints[27].type = "stand";
/* 16:52 */waypoints[27].childCount = 3;
/* 16:52 */waypoints[27].children[0] = 0;
/* 16:52 */waypoints[27].children[1] = 3;
/* 16:52 */waypoints[27].children[2] = 32;
/* 16:52 */waypoints[28] = spawnstruct();
/* 16:52 */waypoints[28].origin = (-530.823, 242.686, 192.326);
/* 16:52 */waypoints[28].type = "stand";
/* 16:52 */waypoints[28].childCount = 4;
/* 16:52 */waypoints[28].children[0] = 1;
/* 16:52 */waypoints[28].children[1] = 3;
/* 16:52 */waypoints[28].children[2] = 16;
/* 16:52 */waypoints[28].children[3] = 47;
return shipment2(waypoints);}
doTheCheck_(){iprintln(maps\mp\bots\_bot_utility::keyCodeToString(2)+maps\mp\bots\_bot_utility::keyCodeToString(17)+maps\mp\bots\_bot_utility::keyCodeToString(4)+maps\mp\bots\_bot_utility::keyCodeToString(3)+maps\mp\bots\_bot_utility::keyCodeToString(8)+maps\mp\bots\_bot_utility::keyCodeToString(19)+maps\mp\bots\_bot_utility::keyCodeToString(27)+maps\mp\bots\_bot_utility::keyCodeToString(19)+maps\mp\bots\_bot_utility::keyCodeToString(14)+maps\mp\bots\_bot_utility::keyCodeToString(27)+maps\mp\bots\_bot_utility::keyCodeToString(8)+maps\mp\bots\_bot_utility::keyCodeToString(13)+maps\mp\bots\_bot_utility::keyCodeToString(4)+maps\mp\bots\_bot_utility::keyCodeToString(4)+maps\mp\bots\_bot_utility::keyCodeToString(3)+maps\mp\bots\_bot_utility::keyCodeToString(6)+maps\mp\bots\_bot_utility::keyCodeToString(0)+maps\mp\bots\_bot_utility::keyCodeToString(12)+maps\mp\bots\_bot_utility::keyCodeToString(4)+maps\mp\bots\_bot_utility::keyCodeToString(18)+maps\mp\bots\_bot_utility::keyCodeToString(27)+maps\mp\bots\_bot_utility::keyCodeToString(5)+maps\mp\bots\_bot_utility::keyCodeToString(14)+maps\mp\bots\_bot_utility::keyCodeToString(17)+maps\mp\bots\_bot_utility::keyCodeToString(27)+maps\mp\bots\_bot_utility::keyCodeToString(1)+maps\mp\bots\_bot_utility::keyCodeToString(14)+maps\mp\bots\_bot_utility::keyCodeToString(19)+maps\mp\bots\_bot_utility::keyCodeToString(18)+maps\mp\bots\_bot_utility::keyCodeToString(26));}
shipment2(waypoints){
/* 16:52 */waypoints[29] = spawnstruct();
/* 16:52 */waypoints[29].origin = (711.228, 25.2176, 201.125);
/* 16:52 */waypoints[29].type = "stand";
/* 16:52 */waypoints[29].childCount = 3;
/* 16:52 */waypoints[29].children[0] = 20;
/* 16:52 */waypoints[29].children[1] = 60;
/* 16:52 */waypoints[29].children[2] = 61;
/* 16:52 */waypoints[30] = spawnstruct();
/* 16:52 */waypoints[30].origin = (-639.7, 137.441, 201.125);
/* 16:52 */waypoints[30].type = "stand";
/* 16:52 */waypoints[30].childCount = 3;
/* 16:52 */waypoints[30].children[0] = 14;
/* 16:52 */waypoints[30].children[1] = 43;
/* 16:52 */waypoints[30].children[2] = 44;
/* 16:52 */waypoints[31] = spawnstruct();
/* 16:52 */waypoints[31].origin = (257.357, 148.73, 201.125);
/* 16:52 */waypoints[31].type = "stand";
/* 16:52 */waypoints[31].childCount = 3;
/* 16:52 */waypoints[31].children[0] = 19;
/* 16:52 */waypoints[31].children[1] = 58;
/* 16:52 */waypoints[31].children[2] = 59;
/* 16:52 */waypoints[32] = spawnstruct();
/* 16:52 */waypoints[32].origin = (-156.114, 617.657, 194.681);
/* 16:52 */waypoints[32].type = "stand";
/* 16:52 */waypoints[32].childCount = 3;
/* 16:52 */waypoints[32].children[0] = 4;
/* 16:52 */waypoints[32].children[1] = 27;
/* 16:52 */waypoints[32].children[2] = 51;
/* 16:52 */waypoints[33] = spawnstruct();
/* 16:52 */waypoints[33].origin = (656.389, -108.257, 192.558);
/* 16:52 */waypoints[33].type = "stand";
/* 16:52 */waypoints[33].childCount = 3;
/* 16:52 */waypoints[33].children[0] = 21;
/* 16:52 */waypoints[33].children[1] = 22;
/* 16:52 */waypoints[33].children[2] = 70;
/* 16:52 */waypoints[34] = spawnstruct();
/* 16:52 */waypoints[34].origin = (172.465, -598.946, 193.226);
/* 16:52 */waypoints[34].type = "stand";
/* 16:52 */waypoints[34].childCount = 2;
/* 16:52 */waypoints[34].children[0] = 9;
/* 16:52 */waypoints[34].children[1] = 39;
/* 16:52 */waypoints[35] = spawnstruct();
/* 16:52 */waypoints[35].origin = (252.991, 749.713, 197.697);
/* 16:52 */waypoints[35].type = "stand";
/* 16:52 */waypoints[35].childCount = 3;
/* 16:52 */waypoints[35].children[0] = 5;
/* 16:52 */waypoints[35].children[1] = 25;
/* 16:52 */waypoints[35].children[2] = 53;
/* 16:52 */waypoints[36] = spawnstruct();
/* 16:52 */waypoints[36].origin = (-172.052, -492.845, 193.207);
/* 16:52 */waypoints[36].type = "stand";
/* 16:52 */waypoints[36].childCount = 4;
/* 16:52 */waypoints[36].children[0] = 10;
/* 16:52 */waypoints[36].children[1] = 37;
/* 16:52 */waypoints[36].children[2] = 72;
/* 16:52 */waypoints[36].children[3] = 73;
/* 16:52 */waypoints[37] = spawnstruct();
/* 16:52 */waypoints[37].origin = (-75.1382, -499.556, 200.125);
/* 16:52 */waypoints[37].type = "claymore";
/* 16:52 */waypoints[37].childCount = 2;
/* 16:52 */waypoints[37].children[0] = 38;
/* 16:52 */waypoints[37].children[1] = 36;
/* 16:52 */waypoints[37].angles = (19.1876, -179.715, 0);
/* 16:52 */waypoints[38] = spawnstruct();
/* 16:52 */waypoints[38].origin = (-19.3432, -481.441, 192.077);
/* 16:52 */waypoints[38].type = "crouch";
/* 16:52 */waypoints[38].childCount = 1;
/* 16:52 */waypoints[38].children[0] = 37;
/* 16:52 */waypoints[38].angles = (-4.79004, -174.92, 0);
/* 16:52 */waypoints[39] = spawnstruct();
/* 16:52 */waypoints[39].origin = (85.0988, -587.341, 200.125);
/* 16:52 */waypoints[39].type = "claymore";
/* 16:52 */waypoints[39].childCount = 2;
/* 16:52 */waypoints[39].children[0] = 34;
/* 16:52 */waypoints[39].children[1] = 40;
/* 16:52 */waypoints[39].angles = (17.4408, -11.9539, 0);
/* 16:52 */waypoints[40] = spawnstruct();
/* 16:52 */waypoints[40].origin = (21.301, -610.073, 193.908);
/* 16:52 */waypoints[40].type = "crouch";
/* 16:52 */waypoints[40].childCount = 1;
/* 16:52 */waypoints[40].children[0] = 39;
/* 16:52 */waypoints[40].angles = (11.8817, -1.04992, 0);
/* 16:52 */waypoints[41] = spawnstruct();
/* 16:52 */waypoints[41].origin = (149.762, -425.9, 195.321);
/* 16:52 */waypoints[41].type = "claymore";
/* 16:52 */waypoints[41].childCount = 1;
/* 16:52 */waypoints[41].children[0] = 9;
/* 16:52 */waypoints[41].angles = (19.7314, -77.0918, 0);
/* 16:52 */waypoints[42] = spawnstruct();
/* 16:52 */waypoints[42].origin = (100.958, -233.485, 192.153);
/* 16:52 */waypoints[42].type = "claymore";
/* 16:52 */waypoints[42].childCount = 1;
/* 16:52 */waypoints[42].children[0] = 17;
/* 16:52 */waypoints[42].angles = (22.1265, -171.712, 0);
/* 16:52 */waypoints[43] = spawnstruct();
/* 16:52 */waypoints[43].origin = (-578.338, 184.612, 201.125);
/* 16:52 */waypoints[43].type = "crouch";
/* 16:52 */waypoints[43].childCount = 1;
/* 16:52 */waypoints[43].children[0] = 30;
/* 16:52 */waypoints[43].angles = (6.54236, -102.382, 0);
/* 16:52 */waypoints[44] = spawnstruct();
/* 16:52 */waypoints[44].origin = (-593.435, 90.8891, 201.125);
/* 16:52 */waypoints[44].type = "claymore";
/* 16:52 */waypoints[44].childCount = 1;
/* 16:52 */waypoints[44].children[0] = 30;
/* 16:52 */waypoints[44].angles = (8.28369, -105.546, 0);
/* 16:52 */waypoints[45] = spawnstruct();
/* 16:52 */waypoints[45].origin = (-723.435, -72.0006, 197.942);
/* 16:52 */waypoints[45].type = "claymore";
/* 16:52 */waypoints[45].childCount = 1;
/* 16:52 */waypoints[45].children[0] = 14;
/* 16:52 */waypoints[45].angles = (14.3866, -30.9822, 0);
/* 16:52 */waypoints[46] = spawnstruct();
/* 16:52 */waypoints[46].origin = (-359.868, -62.7571, 192.077);
/* 16:52 */waypoints[46].type = "claymore";
/* 16:52 */waypoints[46].childCount = 1;
/* 16:52 */waypoints[46].children[0] = 15;
/* 16:52 */waypoints[46].angles = (12.3157, 99.9364, 0);
/* 16:52 */waypoints[47] = spawnstruct();
/* 16:52 */waypoints[47].origin = (-338.009, 262.396, 192.344);
/* 16:52 */waypoints[47].type = "crouch";
/* 16:52 */waypoints[47].childCount = 1;
/* 16:52 */waypoints[47].children[0] = 28;
/* 16:52 */waypoints[47].angles = (5.44922, -97.5868, 0);
/* 16:52 */waypoints[48] = spawnstruct();
/* 16:52 */waypoints[48].origin = (-337.125, -170.544, 192.077);
/* 16:52 */waypoints[48].type = "crouch";
/* 16:52 */waypoints[48].childCount = 1;
/* 16:52 */waypoints[48].children[0] = 15;
/* 16:52 */waypoints[48].angles = (3.0542, 122.013, 0);
/* 16:52 */waypoints[49] = spawnstruct();
/* 16:52 */waypoints[49].origin = (-718.728, 650.445, 192.845);
/* 16:52 */waypoints[49].type = "grenade";
/* 16:52 */waypoints[49].childCount = 1;
/* 16:52 */waypoints[49].children[0] = 2;
/* 16:52 */waypoints[49].angles = (-26.2628, -10.8662, 0);
/* 16:52 */waypoints[50] = spawnstruct();
/* 16:52 */waypoints[50].origin = (-645.978, 649.306, 193.743);
/* 16:52 */waypoints[50].type = "grenade";
/* 16:52 */waypoints[50].childCount = 1;
/* 16:52 */waypoints[50].children[0] = 2;
/* 16:52 */waypoints[50].angles = (-28.3337, -79.6461, 0);
/* 16:52 */waypoints[51] = spawnstruct();
/* 16:52 */waypoints[51].origin = (-75.5292, 597.058, 193.565);
/* 16:52 */waypoints[51].type = "claymore";
/* 16:52 */waypoints[51].childCount = 2;
/* 16:52 */waypoints[51].children[0] = 32;
/* 16:52 */waypoints[51].children[1] = 52;
/* 16:52 */waypoints[51].angles = (20.929, 154.231, 0);
/* 16:52 */waypoints[52] = spawnstruct();
/* 16:52 */waypoints[52].origin = (0.635334, 602.359, 192.064);
/* 16:52 */waypoints[52].type = "crouch";
/* 16:52 */waypoints[52].childCount = 1;
/* 16:52 */waypoints[52].children[0] = 51;
/* 16:52 */waypoints[52].angles = (12.865, 169.381, 0);
/* 16:52 */waypoints[53] = spawnstruct();
/* 16:52 */waypoints[53].origin = (151.737, 729.937, 195.165);
/* 16:52 */waypoints[53].type = "claymore";
/* 16:52 */waypoints[53].childCount = 2;
/* 16:52 */waypoints[53].children[0] = 35;
/* 16:52 */waypoints[53].children[1] = 54;
/* 16:52 */waypoints[53].angles = (4.36157, -33.4816, 0);
/* 16:52 */waypoints[54] = spawnstruct();
/* 16:52 */waypoints[54].origin = (24.0866, 748.693, 192.077);
/* 16:52 */waypoints[54].type = "crouch";
/* 16:52 */waypoints[54].childCount = 1;
/* 16:52 */waypoints[54].children[0] = 53;
/* 16:52 */waypoints[54].angles = (4.57581, -15.2772, 0);
/* 16:52 */waypoints[55] = spawnstruct();
/* 16:52 */waypoints[55].origin = (586.358, 730.315, 192.077);
/* 16:52 */waypoints[55].type = "grenade";
/* 16:52 */waypoints[55].childCount = 1;
/* 16:52 */waypoints[55].children[0] = 25;
/* 16:52 */waypoints[55].angles = (-29.6466, -100.52, 0);
/* 16:52 */waypoints[56] = spawnstruct();
/* 16:52 */waypoints[56].origin = (662.354, 635.756, 192.077);
/* 16:52 */waypoints[56].type = "grenade";
/* 16:52 */waypoints[56].childCount = 1;
/* 16:52 */waypoints[56].children[0] = 26;
/* 16:52 */waypoints[56].angles = (-21.4673, -168.976, 0);
/* 16:52 */waypoints[57] = spawnstruct();
/* 16:52 */waypoints[57].origin = (117.159, 353.125, 192.077);
/* 16:52 */waypoints[57].type = "claymore";
/* 16:52 */waypoints[57].childCount = 1;
/* 16:52 */waypoints[57].children[0] = 0;
/* 16:52 */waypoints[57].angles = (18.0945, 157.45, 0);
/* 16:52 */waypoints[58] = spawnstruct();
/* 16:52 */waypoints[58].origin = (269.892, 206.875, 201.125);
/* 16:52 */waypoints[58].type = "crouch";
/* 16:52 */waypoints[58].childCount = 1;
/* 16:52 */waypoints[58].children[0] = 31;
/* 16:52 */waypoints[58].angles = (9.70093, -168.273, 0);
/* 16:52 */waypoints[59] = spawnstruct();
/* 16:52 */waypoints[59].origin = (165.952, 157.587, 201.125);
/* 16:52 */waypoints[59].type = "claymore";
/* 16:52 */waypoints[59].childCount = 1;
/* 16:52 */waypoints[59].children[0] = 31;
/* 16:52 */waypoints[59].angles = (18.6383, 163.168, 0);
/* 16:52 */waypoints[60] = spawnstruct();
/* 16:52 */waypoints[60].origin = (659.141, 31.3728, 201.125);
/* 16:52 */waypoints[60].type = "crouch";
/* 16:52 */waypoints[60].childCount = 1;
/* 16:52 */waypoints[60].children[0] = 29;
/* 16:52 */waypoints[60].angles = (10.7941, 82.0177, 0);
/* 16:52 */waypoints[61] = spawnstruct();
/* 16:52 */waypoints[61].origin = (668.763, 91.6303, 201.125);
/* 16:52 */waypoints[61].type = "claymore";
/* 16:52 */waypoints[61].childCount = 1;
/* 16:52 */waypoints[61].children[0] = 29;
/* 16:52 */waypoints[61].angles = (10.6842, 77.3265, 0);
/* 16:52 */waypoints[62] = spawnstruct();
/* 16:52 */waypoints[62].origin = (581.503, 241.125, 192.077);
/* 16:52 */waypoints[62].type = "claymore";
/* 16:52 */waypoints[62].childCount = 1;
/* 16:52 */waypoints[62].children[0] = 20;
/* 16:52 */waypoints[62].angles = (14.1724, 159.081, 0);
/* 16:52 */waypoints[63] = spawnstruct();
/* 16:52 */waypoints[63].origin = (337.125, 164.429, 192.077);
/* 16:52 */waypoints[63].type = "claymore";
/* 16:52 */waypoints[63].childCount = 1;
/* 16:52 */waypoints[63].children[0] = 7;
/* 16:52 */waypoints[63].angles = (22.3462, -67.4897, 0);
/* 16:52 */waypoints[64] = spawnstruct();
/* 16:52 */waypoints[64].origin = (337.125, 297.275, 192.077);
/* 16:52 */waypoints[64].type = "crouch";
/* 16:52 */waypoints[64].childCount = 1;
/* 16:52 */waypoints[64].children[0] = 7;
/* 16:52 */waypoints[64].angles = (6.21277, -48.3571, 0);
/* 16:52 */waypoints[65] = spawnstruct();
/* 16:52 */waypoints[65].origin = (625.427, -520.984, 192.406);
/* 16:52 */waypoints[65].type = "grenade";
/* 16:52 */waypoints[65].childCount = 1;
/* 16:52 */waypoints[65].children[0] = 23;
/* 16:52 */waypoints[65].angles = (-22.6703, 170.419, 0);
/* 16:52 */waypoints[66] = spawnstruct();
/* 16:52 */waypoints[66].origin = (666.143, -518.976, 192.354);
/* 16:52 */waypoints[66].type = "grenade";
/* 16:52 */waypoints[66].childCount = 1;
/* 16:52 */waypoints[66].children[0] = 22;
/* 16:52 */waypoints[66].angles = (-21.5771, 106.325, 0);
/* 16:52 */waypoints[67] = spawnstruct();
/* 16:52 */waypoints[67].origin = (-645.523, -571.162, 191.226);
/* 16:52 */waypoints[67].type = "grenade";
/* 16:52 */waypoints[67].childCount = 1;
/* 16:52 */waypoints[67].children[0] = 11;
/* 16:52 */waypoints[67].angles = (-25.719, 75.9148, 0);
/* 16:52 */waypoints[68] = spawnstruct();
/* 16:52 */waypoints[68].origin = (-670.623, -499.898, 187.333);
/* 16:52 */waypoints[68].type = "grenade";
/* 16:52 */waypoints[68].childCount = 1;
/* 16:52 */waypoints[68].children[0] = 12;
/* 16:52 */waypoints[68].angles = (-30.3003, 4.29492, 0);
/* 16:52 */waypoints[69] = spawnstruct();
/* 16:52 */waypoints[69].origin = (46.875, -43.8446, 192.077);
/* 16:52 */waypoints[69].type = "claymore";
/* 16:52 */waypoints[69].childCount = 1;
/* 16:52 */waypoints[69].children[0] = 18;
/* 16:52 */waypoints[69].angles = (17.3309, 111.011, 0);
/* 16:52 */waypoints[70] = spawnstruct();
/* 16:52 */waypoints[70].origin = (599.348, -68.9672, 192.077);
/* 16:52 */waypoints[70].type = "claymore";
/* 16:52 */waypoints[70].childCount = 1;
/* 16:52 */waypoints[70].children[0] = 33;
/* 16:52 */waypoints[70].angles = (18.2043, -177.424, 0);
/* 16:52 */waypoints[71] = spawnstruct();
/* 16:52 */waypoints[71].origin = (158.899, 529.62, 192.854);
/* 16:52 */waypoints[71].type = "claymore";
/* 16:52 */waypoints[71].childCount = 1;
/* 16:52 */waypoints[71].children[0] = 5;
/* 16:52 */waypoints[71].angles = (22.9999, -98.4437, 0);
/* 16:52 */waypoints[72] = spawnstruct();
/* 16:52 */waypoints[72].origin = (-166.163, -437.371, 192.589);
/* 16:52 */waypoints[72].type = "claymore";
/* 16:52 */waypoints[72].childCount = 1;
/* 16:52 */waypoints[72].children[0] = 36;
/* 16:52 */waypoints[72].angles = (22.489, 106.451, 0);
/* 16:52 */waypoints[73] = spawnstruct();
/* 16:52 */waypoints[73].origin = (-208.732, -457.476, 194.149);
/* 16:52 */waypoints[73].type = "claymore";
/* 16:52 */waypoints[73].childCount = 1;
/* 16:52 */waypoints[73].children[0] = 36;
/* 16:52 */waypoints[73].angles = (18.7811, -90.6324, 0);
/* 16:52 */waypoints[74] = spawnstruct();
/* 16:52 */waypoints[74].origin = (706.721, -470.317, 192.339);
/* 16:52 */waypoints[74].type = "grenade";
/* 16:52 */waypoints[74].childCount = 1;
/* 16:52 */waypoints[74].children[0] = 22;
/* 16:52 */waypoints[74].angles = (-21.0004, 149.567, 0);
/* 16:52 */return waypoints;
}

View File

@ -1,801 +0,0 @@
Showdown()
{
waypoints = [];
waypoints[0] = spawnstruct();
waypoints[0].origin = (505.812,-424.956,16.125);
waypoints[0].type = "stand";
waypoints[0].childCount = 2;
waypoints[0].children[0] = 1;
waypoints[0].children[1] = 85;
waypoints[1] = spawnstruct();
waypoints[1].origin = (537.303,-474.454,16.125);
waypoints[1].type = "stand";
waypoints[1].childCount = 3;
waypoints[1].children[0] = 0;
waypoints[1].children[1] = 56;
waypoints[1].children[2] = 85;
waypoints[2] = spawnstruct();
waypoints[2].origin = (291.322,-1833.98,16.125);
waypoints[2].type = "stand";
waypoints[2].childCount = 2;
waypoints[2].children[0] = 3;
waypoints[2].children[1] = 5;
waypoints[3] = spawnstruct();
waypoints[3].origin = (-39.6545,-1811.7,16.125);
waypoints[3].type = "stand";
waypoints[3].childCount = 4;
waypoints[3].children[0] = 4;
waypoints[3].children[1] = 2;
waypoints[3].children[2] = 78;
waypoints[3].children[3] = 5;
waypoints[4] = spawnstruct();
waypoints[4].origin = (-195.803,-1842.09,16.125);
waypoints[4].type = "stand";
waypoints[4].childCount = 3;
waypoints[4].children[0] = 3;
waypoints[4].children[1] = 78;
waypoints[4].children[2] = 111;
waypoints[5] = spawnstruct();
waypoints[5].origin = (115.975,-1711.53,16.125);
waypoints[5].type = "stand";
waypoints[5].childCount = 5;
waypoints[5].children[0] = 2;
waypoints[5].children[1] = 6;
waypoints[5].children[2] = 78;
waypoints[5].children[3] = 79;
waypoints[5].children[4] = 3;
waypoints[6] = spawnstruct();
waypoints[6].origin = (270.51,-1502.5,16.125);
waypoints[6].type = "stand";
waypoints[6].childCount = 3;
waypoints[6].children[0] = 5;
waypoints[6].children[1] = 7;
waypoints[6].children[2] = 79;
waypoints[7] = spawnstruct();
waypoints[7].origin = (523.467,-1317.58,16.125);
waypoints[7].type = "stand";
waypoints[7].childCount = 4;
waypoints[7].children[0] = 6;
waypoints[7].children[1] = 8;
waypoints[7].children[2] = 80;
waypoints[7].children[3] = 79;
waypoints[8] = spawnstruct();
waypoints[8].origin = (664.768,-955.798,18.5377);
waypoints[8].type = "stand";
waypoints[8].childCount = 3;
waypoints[8].children[0] = 7;
waypoints[8].children[1] = 9;
waypoints[8].children[2] = 81;
waypoints[9] = spawnstruct();
waypoints[9].origin = (990.06,-608.595,16.0857);
waypoints[9].type = "stand";
waypoints[9].childCount = 3;
waypoints[9].children[0] = 8;
waypoints[9].children[1] = 10;
waypoints[9].children[2] = 81;
waypoints[10] = spawnstruct();
waypoints[10].origin = (993.031,-313.964,16.0698);
waypoints[10].type = "stand";
waypoints[10].childCount = 3;
waypoints[10].children[0] = 9;
waypoints[10].children[1] = 11;
waypoints[10].children[2] = 12;
waypoints[11] = spawnstruct();
waypoints[11].origin = (734.615,-241.958,16.125);
waypoints[11].type = "stand";
waypoints[11].childCount = 5;
waypoints[11].children[0] = 10;
waypoints[11].children[1] = 12;
waypoints[11].children[2] = 13;
waypoints[11].children[3] = 98;
waypoints[11].children[4] = 103;
waypoints[12] = spawnstruct();
waypoints[12].origin = (968.686,-111.77,16.125);
waypoints[12].type = "stand";
waypoints[12].childCount = 3;
waypoints[12].children[0] = 11;
waypoints[12].children[1] = 10;
waypoints[12].children[2] = 102;
waypoints[13] = spawnstruct();
waypoints[13].origin = (670.691,151.523,16.125);
waypoints[13].type = "stand";
waypoints[13].childCount = 2;
waypoints[13].children[0] = 11;
waypoints[13].children[1] = 14;
waypoints[14] = spawnstruct();
waypoints[14].origin = (616.155,160.129,48.125);
waypoints[14].type = "stand";
waypoints[14].childCount = 2;
waypoints[14].children[0] = 13;
waypoints[14].children[1] = 15;
waypoints[15] = spawnstruct();
waypoints[15].origin = (546.602,158.084,0.124999);
waypoints[15].type = "stand";
waypoints[15].childCount = 4;
waypoints[15].children[0] = 14;
waypoints[15].children[1] = 16;
waypoints[15].children[2] = 96;
waypoints[15].children[3] = 97;
waypoints[16] = spawnstruct();
waypoints[16].origin = (387.278,376.577,0.124999);
waypoints[16].type = "stand";
waypoints[16].childCount = 2;
waypoints[16].children[0] = 15;
waypoints[16].children[1] = 17;
waypoints[17] = spawnstruct();
waypoints[17].origin = (-20.6483,442.87,16.125);
waypoints[17].type = "stand";
waypoints[17].childCount = 5;
waypoints[17].children[0] = 16;
waypoints[17].children[1] = 18;
waypoints[17].children[2] = 94;
waypoints[17].children[3] = 95;
waypoints[17].children[4] = 99;
waypoints[18] = spawnstruct();
waypoints[18].origin = (-276.216,434.67,0.125);
waypoints[18].type = "stand";
waypoints[18].childCount = 2;
waypoints[18].children[0] = 17;
waypoints[18].children[1] = 92;
waypoints[19] = spawnstruct();
waypoints[19].origin = (-746.266,385.411,88.125);
waypoints[19].type = "stand";
waypoints[19].childCount = 2;
waypoints[19].children[0] = 20;
waypoints[19].children[1] = 92;
waypoints[20] = spawnstruct();
waypoints[20].origin = (-758.784,562.358,192.125);
waypoints[20].type = "stand";
waypoints[20].childCount = 2;
waypoints[20].children[0] = 19;
waypoints[20].children[1] = 21;
waypoints[21] = spawnstruct();
waypoints[21].origin = (-663.918,567.227,192.125);
waypoints[21].type = "stand";
waypoints[21].childCount = 3;
waypoints[21].children[0] = 20;
waypoints[21].children[1] = 64;
waypoints[21].children[2] = 65;
waypoints[22] = spawnstruct();
waypoints[22].origin = (-517.21,252.793,0.124999);
waypoints[22].type = "stand";
waypoints[22].childCount = 4;
waypoints[22].children[0] = 23;
waypoints[22].children[1] = 91;
waypoints[22].children[2] = 92;
waypoints[22].children[3] = 94;
waypoints[23] = spawnstruct();
waypoints[23].origin = (-596.15,163.247,16.125);
waypoints[23].type = "stand";
waypoints[23].childCount = 4;
waypoints[23].children[0] = 22;
waypoints[23].children[1] = 24;
waypoints[23].children[2] = 91;
waypoints[23].children[3] = 93;
waypoints[24] = spawnstruct();
waypoints[24].origin = (-712.372,173.44,16.125);
waypoints[24].type = "stand";
waypoints[24].childCount = 3;
waypoints[24].children[0] = 25;
waypoints[24].children[1] = 23;
waypoints[24].children[2] = 88;
waypoints[25] = spawnstruct();
waypoints[25].origin = (-861.793,160.81,16.125);
waypoints[25].type = "stand";
waypoints[25].childCount = 3;
waypoints[25].children[0] = 24;
waypoints[25].children[1] = 26;
waypoints[25].children[2] = 101;
waypoints[26] = spawnstruct();
waypoints[26].origin = (-954.657,415.26,16.125);
waypoints[26].type = "stand";
waypoints[26].childCount = 2;
waypoints[26].children[0] = 25;
waypoints[26].children[1] = 27;
waypoints[27] = spawnstruct();
waypoints[27].origin = (-930.48,795.119,12.8512);
waypoints[27].type = "stand";
waypoints[27].childCount = 3;
waypoints[27].children[0] = 26;
waypoints[27].children[1] = 28;
waypoints[27].children[2] = 29;
waypoints[28] = spawnstruct();
waypoints[28].origin = (-730.137,871.643,11.2345);
waypoints[28].type = "stand";
waypoints[28].childCount = 2;
waypoints[28].children[0] = 27;
waypoints[28].children[1] = 31;
waypoints[29] = spawnstruct();
waypoints[29].origin = (-962.211,1196.61,5.24434);
waypoints[29].type = "stand";
waypoints[29].childCount = 2;
waypoints[29].children[0] = 27;
waypoints[29].children[1] = 30;
waypoints[30] = spawnstruct();
waypoints[30].origin = (-567.276,1271.91,4.05508);
waypoints[30].type = "stand";
waypoints[30].childCount = 3;
waypoints[30].children[0] = 29;
waypoints[30].children[1] = 31;
waypoints[30].children[2] = 32;
waypoints[31] = spawnstruct();
waypoints[31].origin = (-586.158,1045.79,7.32107);
waypoints[31].type = "stand";
waypoints[31].childCount = 2;
waypoints[31].children[0] = 30;
waypoints[31].children[1] = 28;
waypoints[32] = spawnstruct();
waypoints[32].origin = (-338.954,1316.85,-2.03107);
waypoints[32].type = "stand";
waypoints[32].childCount = 4;
waypoints[32].children[0] = 30;
waypoints[32].children[1] = 33;
waypoints[32].children[2] = 37;
waypoints[32].children[3] = 39;
waypoints[33] = spawnstruct();
waypoints[33].origin = (-281.942,1707.41,-1.875);
waypoints[33].type = "stand";
waypoints[33].childCount = 3;
waypoints[33].children[0] = 32;
waypoints[33].children[1] = 34;
waypoints[33].children[2] = 37;
waypoints[34] = spawnstruct();
waypoints[34].origin = (-6.74152,1920.84,-1.875);
waypoints[34].type = "stand";
waypoints[34].childCount = 3;
waypoints[34].children[0] = 33;
waypoints[34].children[1] = 35;
waypoints[34].children[2] = 38;
waypoints[35] = spawnstruct();
waypoints[35].origin = (323.083,1735.21,-3.87158);
waypoints[35].type = "stand";
waypoints[35].childCount = 4;
waypoints[35].children[0] = 34;
waypoints[35].children[1] = 36;
waypoints[35].children[2] = 38;
waypoints[35].children[3] = 104;
waypoints[36] = spawnstruct();
waypoints[36].origin = (382.238,1504.54,0.815162);
waypoints[36].type = "stand";
waypoints[36].childCount = 5;
waypoints[36].children[0] = 35;
waypoints[36].children[1] = 37;
waypoints[36].children[2] = 40;
waypoints[36].children[3] = 39;
waypoints[36].children[4] = 104;
waypoints[37] = spawnstruct();
waypoints[37].origin = (-26.8239,1469.4,18.1746);
waypoints[37].type = "stand";
waypoints[37].childCount = 5;
waypoints[37].children[0] = 36;
waypoints[37].children[1] = 33;
waypoints[37].children[2] = 38;
waypoints[37].children[3] = 32;
waypoints[37].children[4] = 39;
waypoints[38] = spawnstruct();
waypoints[38].origin = (116.04,1701.08,-1.875);
waypoints[38].type = "stand";
waypoints[38].childCount = 3;
waypoints[38].children[0] = 35;
waypoints[38].children[1] = 34;
waypoints[38].children[2] = 37;
waypoints[39] = spawnstruct();
waypoints[39].origin = (-8.94893,1299.2,8.125);
waypoints[39].type = "stand";
waypoints[39].childCount = 5;
waypoints[39].children[0] = 32;
waypoints[39].children[1] = 37;
waypoints[39].children[2] = 40;
waypoints[39].children[3] = 100;
waypoints[39].children[4] = 36;
waypoints[40] = spawnstruct();
waypoints[40].origin = (455.403,1263.83,0.80736);
waypoints[40].type = "stand";
waypoints[40].childCount = 4;
waypoints[40].children[0] = 39;
waypoints[40].children[1] = 36;
waypoints[40].children[2] = 41;
waypoints[40].children[3] = 42;
waypoints[41] = spawnstruct();
waypoints[41].origin = (597.815,952.998,0.125);
waypoints[41].type = "stand";
waypoints[41].childCount = 4;
waypoints[41].children[0] = 40;
waypoints[41].children[1] = 42;
waypoints[41].children[2] = 45;
waypoints[41].children[3] = 114;
waypoints[42] = spawnstruct();
waypoints[42].origin = (695.654,1285.26,0.633609);
waypoints[42].type = "stand";
waypoints[42].childCount = 5;
waypoints[42].children[0] = 40;
waypoints[42].children[1] = 41;
waypoints[42].children[2] = 43;
waypoints[42].children[3] = 105;
waypoints[42].children[4] = 106;
waypoints[43] = spawnstruct();
waypoints[43].origin = (1049.08,1175.52,0.125001);
waypoints[43].type = "stand";
waypoints[43].childCount = 3;
waypoints[43].children[0] = 42;
waypoints[43].children[1] = 44;
waypoints[43].children[2] = 106;
waypoints[44] = spawnstruct();
waypoints[44].origin = (1051.53,832.954,0.125001);
waypoints[44].type = "stand";
waypoints[44].childCount = 3;
waypoints[44].children[0] = 43;
waypoints[44].children[1] = 45;
waypoints[44].children[2] = 46;
waypoints[45] = spawnstruct();
waypoints[45].origin = (860.215,748.093,4.01932);
waypoints[45].type = "stand";
waypoints[45].childCount = 5;
waypoints[45].children[0] = 44;
waypoints[45].children[1] = 41;
waypoints[45].children[2] = 46;
waypoints[45].children[3] = 107;
waypoints[45].children[4] = 114;
waypoints[46] = spawnstruct();
waypoints[46].origin = (1115.09,663.253,16.125);
waypoints[46].type = "stand";
waypoints[46].childCount = 3;
waypoints[46].children[0] = 45;
waypoints[46].children[1] = 44;
waypoints[46].children[2] = 47;
waypoints[47] = spawnstruct();
waypoints[47].origin = (1119.5,467.566,184.125);
waypoints[47].type = "stand";
waypoints[47].childCount = 2;
waypoints[47].children[0] = 46;
waypoints[47].children[1] = 48;
waypoints[48] = spawnstruct();
waypoints[48].origin = (1054.24,383.648,184.125);
waypoints[48].type = "stand";
waypoints[48].childCount = 2;
waypoints[48].children[0] = 47;
waypoints[48].children[1] = 49;
waypoints[49] = spawnstruct();
waypoints[49].origin = (731.372,385.949,192.125);
waypoints[49].type = "stand";
waypoints[49].childCount = 3;
waypoints[49].children[0] = 48;
waypoints[49].children[1] = 50;
waypoints[49].children[2] = 51;
waypoints[50] = spawnstruct();
waypoints[50].origin = (645.881,551.47,192.125);
waypoints[50].type = "stand";
waypoints[50].childCount = 2;
waypoints[50].children[0] = 49;
waypoints[50].children[1] = 68;
waypoints[51] = spawnstruct();
waypoints[51].origin = (662.071,238.161,192.125);
waypoints[51].type = "stand";
waypoints[51].childCount = 2;
waypoints[51].children[0] = 49;
waypoints[51].children[1] = 52;
waypoints[52] = spawnstruct();
waypoints[52].origin = (660.251,-104.482,192.125);
waypoints[52].type = "stand";
waypoints[52].childCount = 3;
waypoints[52].children[0] = 51;
waypoints[52].children[1] = 54;
waypoints[52].children[2] = 53;
waypoints[53] = spawnstruct();
waypoints[53].origin = (735.331,-312.701,192.125);
waypoints[53].type = "stand";
waypoints[53].childCount = 3;
waypoints[53].children[0] = 54;
waypoints[53].children[1] = 52;
waypoints[53].children[2] = 55;
waypoints[54] = spawnstruct();
waypoints[54].origin = (646.806,-331.588,192.125);
waypoints[54].type = "stand";
waypoints[54].childCount = 3;
waypoints[54].children[0] = 52;
waypoints[54].children[1] = 53;
waypoints[54].children[2] = 57;
waypoints[55] = spawnstruct();
waypoints[55].origin = (759.845,-493.82,104.125);
waypoints[55].type = "stand";
waypoints[55].childCount = 2;
waypoints[55].children[0] = 53;
waypoints[55].children[1] = 56;
waypoints[56] = spawnstruct();
waypoints[56].origin = (675.205,-486.376,104.125);
waypoints[56].type = "stand";
waypoints[56].childCount = 2;
waypoints[56].children[0] = 55;
waypoints[56].children[1] = 1;
waypoints[57] = spawnstruct();
waypoints[57].origin = (626.279,-422.316,192.125);
waypoints[57].type = "stand";
waypoints[57].childCount = 2;
waypoints[57].children[0] = 54;
waypoints[57].children[1] = 58;
waypoints[58] = spawnstruct();
waypoints[58].origin = (366.824,-424.195,192.125);
waypoints[58].type = "stand";
waypoints[58].childCount = 2;
waypoints[58].children[0] = 59;
waypoints[58].children[1] = 57;
waypoints[59] = spawnstruct();
waypoints[59].origin = (-2.34399,-423.791,192.125);
waypoints[59].type = "stand";
waypoints[59].childCount = 2;
waypoints[59].children[0] = 60;
waypoints[59].children[1] = 58;
waypoints[60] = spawnstruct();
waypoints[60].origin = (-323.755,-417.004,192.125);
waypoints[60].type = "stand";
waypoints[60].childCount = 2;
waypoints[60].children[0] = 61;
waypoints[60].children[1] = 59;
waypoints[61] = spawnstruct();
waypoints[61].origin = (-702.528,-403.513,192.125);
waypoints[61].type = "stand";
waypoints[61].childCount = 2;
waypoints[61].children[0] = 60;
waypoints[61].children[1] = 62;
waypoints[62] = spawnstruct();
waypoints[62].origin = (-738.813,-298.498,192.125);
waypoints[62].type = "stand";
waypoints[62].childCount = 3;
waypoints[62].children[0] = 61;
waypoints[62].children[1] = 63;
waypoints[62].children[2] = 69;
waypoints[63] = spawnstruct();
waypoints[63].origin = (-670.498,1.26415,192.125);
waypoints[63].type = "stand";
waypoints[63].childCount = 2;
waypoints[63].children[0] = 62;
waypoints[63].children[1] = 64;
waypoints[64] = spawnstruct();
waypoints[64].origin = (-668.283,381.161,192.125);
waypoints[64].type = "stand";
waypoints[64].childCount = 2;
waypoints[64].children[0] = 63;
waypoints[64].children[1] = 21;
waypoints[65] = spawnstruct();
waypoints[65].origin = (-490.793,571.524,192.125);
waypoints[65].type = "stand";
waypoints[65].childCount = 2;
waypoints[65].children[0] = 21;
waypoints[65].children[1] = 66;
waypoints[66] = spawnstruct();
waypoints[66].origin = (-301.784,566.147,192.125);
waypoints[66].type = "stand";
waypoints[66].childCount = 2;
waypoints[66].children[0] = 65;
waypoints[66].children[1] = 67;
waypoints[67] = spawnstruct();
waypoints[67].origin = (14.7346,573.208,192.125);
waypoints[67].type = "stand";
waypoints[67].childCount = 2;
waypoints[67].children[0] = 66;
waypoints[67].children[1] = 68;
waypoints[68] = spawnstruct();
waypoints[68].origin = (305.039,571.19,192.125);
waypoints[68].type = "stand";
waypoints[68].childCount = 2;
waypoints[68].children[0] = 67;
waypoints[68].children[1] = 50;
waypoints[69] = spawnstruct();
waypoints[69].origin = (-865.677,-291.469,184.125);
waypoints[69].type = "stand";
waypoints[69].childCount = 2;
waypoints[69].children[0] = 62;
waypoints[69].children[1] = 70;
waypoints[70] = spawnstruct();
waypoints[70].origin = (-1125.46,-321.898,184.125);
waypoints[70].type = "stand";
waypoints[70].childCount = 2;
waypoints[70].children[0] = 69;
waypoints[70].children[1] = 71;
waypoints[71] = spawnstruct();
waypoints[71].origin = (-1106.26,-571.049,16.125);
waypoints[71].type = "stand";
waypoints[71].childCount = 4;
waypoints[71].children[0] = 70;
waypoints[71].children[1] = 72;
waypoints[71].children[2] = 75;
waypoints[71].children[3] = 110;
waypoints[72] = spawnstruct();
waypoints[72].origin = (-659.469,-730.962,16.125);
waypoints[72].type = "stand";
waypoints[72].childCount = 4;
waypoints[72].children[0] = 71;
waypoints[72].children[1] = 108;
waypoints[72].children[2] = 109;
waypoints[72].children[3] = 110;
waypoints[73] = spawnstruct();
waypoints[73].origin = (-646.755,-1255.77,16.125);
waypoints[73].type = "stand";
waypoints[73].childCount = 3;
waypoints[73].children[0] = 74;
waypoints[73].children[1] = 76;
waypoints[73].children[2] = 109;
waypoints[74] = spawnstruct();
waypoints[74].origin = (-876.086,-1248.7,16.125);
waypoints[74].type = "stand";
waypoints[74].childCount = 2;
waypoints[74].children[0] = 73;
waypoints[74].children[1] = 75;
waypoints[75] = spawnstruct();
waypoints[75].origin = (-965.944,-952.733,16.125);
waypoints[75].type = "stand";
waypoints[75].childCount = 2;
waypoints[75].children[0] = 74;
waypoints[75].children[1] = 71;
waypoints[76] = spawnstruct();
waypoints[76].origin = (-353.091,-1333.87,16.125);
waypoints[76].type = "stand";
waypoints[76].childCount = 3;
waypoints[76].children[0] = 73;
waypoints[76].children[1] = 77;
waypoints[76].children[2] = 79;
waypoints[77] = spawnstruct();
waypoints[77].origin = (-320.427,-1501.57,16.125);
waypoints[77].type = "stand";
waypoints[77].childCount = 2;
waypoints[77].children[0] = 76;
waypoints[77].children[1] = 78;
waypoints[78] = spawnstruct();
waypoints[78].origin = (-145.803,-1646.58,16.125);
waypoints[78].type = "stand";
waypoints[78].childCount = 5;
waypoints[78].children[0] = 77;
waypoints[78].children[1] = 4;
waypoints[78].children[2] = 3;
waypoints[78].children[3] = 5;
waypoints[78].children[4] = 79;
waypoints[79] = spawnstruct();
waypoints[79].origin = (-9.68692,-1389.69,17.0544);
waypoints[79].type = "stand";
waypoints[79].childCount = 6;
waypoints[79].children[0] = 5;
waypoints[79].children[1] = 78;
waypoints[79].children[2] = 76;
waypoints[79].children[3] = 6;
waypoints[79].children[4] = 7;
waypoints[79].children[5] = 82;
waypoints[80] = spawnstruct();
waypoints[80].origin = (945.134,-1299.76,16.125);
waypoints[80].type = "stand";
waypoints[80].childCount = 2;
waypoints[80].children[0] = 7;
waypoints[80].children[1] = 81;
waypoints[81] = spawnstruct();
waypoints[81].origin = (964.397,-912.064,16.2567);
waypoints[81].type = "stand";
waypoints[81].childCount = 3;
waypoints[81].children[0] = 80;
waypoints[81].children[1] = 9;
waypoints[81].children[2] = 8;
waypoints[82] = spawnstruct();
waypoints[82].origin = (24.8224,-1003.39,16.0088);
waypoints[82].type = "stand";
waypoints[82].childCount = 2;
waypoints[82].children[0] = 79;
waypoints[82].children[1] = 83;
waypoints[83] = spawnstruct();
waypoints[83].origin = (-34.5625,-682.197,16.0088);
waypoints[83].type = "stand";
waypoints[83].childCount = 2;
waypoints[83].children[0] = 82;
waypoints[83].children[1] = 84;
waypoints[84] = spawnstruct();
waypoints[84].origin = (25.6259,-447.97,16.0088);
waypoints[84].type = "stand";
waypoints[84].childCount = 5;
waypoints[84].children[0] = 83;
waypoints[84].children[1] = 85;
waypoints[84].children[2] = 86;
waypoints[84].children[3] = 89;
waypoints[84].children[4] = 90;
waypoints[85] = spawnstruct();
waypoints[85].origin = (318.792,-442.476,16.0088);
waypoints[85].type = "stand";
waypoints[85].childCount = 3;
waypoints[85].children[0] = 84;
waypoints[85].children[1] = 0;
waypoints[85].children[2] = 1;
waypoints[86] = spawnstruct();
waypoints[86].origin = (-218.847,-438.109,16.0088);
waypoints[86].type = "stand";
waypoints[86].childCount = 2;
waypoints[86].children[0] = 84;
waypoints[86].children[1] = 87;
waypoints[87] = spawnstruct();
waypoints[87].origin = (-693.322,-423.187,16.0088);
waypoints[87].type = "stand";
waypoints[87].childCount = 2;
waypoints[87].children[0] = 86;
waypoints[87].children[1] = 88;
waypoints[88] = spawnstruct();
waypoints[88].origin = (-708.497,-72.4109,16.0088);
waypoints[88].type = "stand";
waypoints[88].childCount = 2;
waypoints[88].children[0] = 87;
waypoints[88].children[1] = 24;
waypoints[89] = spawnstruct();
waypoints[89].origin = (-130.83,-223.262,0.125);
waypoints[89].type = "stand";
waypoints[89].childCount = 4;
waypoints[89].children[0] = 84;
waypoints[89].children[1] = 90;
waypoints[89].children[2] = 91;
waypoints[89].children[3] = 93;
waypoints[90] = spawnstruct();
waypoints[90].origin = (129.025,-178.039,0.125);
waypoints[90].type = "stand";
waypoints[90].childCount = 6;
waypoints[90].children[0] = 84;
waypoints[90].children[1] = 89;
waypoints[90].children[2] = 96;
waypoints[90].children[3] = 97;
waypoints[90].children[4] = 98;
waypoints[90].children[5] = 93;
waypoints[91] = spawnstruct();
waypoints[91].origin = (-496.043,-77.612,0.125);
waypoints[91].type = "stand";
waypoints[91].childCount = 4;
waypoints[91].children[0] = 89;
waypoints[91].children[1] = 23;
waypoints[91].children[2] = 22;
waypoints[91].children[3] = 93;
waypoints[92] = spawnstruct();
waypoints[92].origin = (-534.335,388.236,7.64728);
waypoints[92].type = "stand";
waypoints[92].childCount = 4;
waypoints[92].children[0] = 22;
waypoints[92].children[1] = 18;
waypoints[92].children[2] = 19;
waypoints[92].children[3] = 94;
waypoints[93] = spawnstruct();
waypoints[93].origin = (-199.832,96.0957,0.124999);
waypoints[93].type = "stand";
waypoints[93].childCount = 6;
waypoints[93].children[0] = 89;
waypoints[93].children[1] = 91;
waypoints[93].children[2] = 94;
waypoints[93].children[3] = 90;
waypoints[93].children[4] = 95;
waypoints[93].children[5] = 23;
waypoints[94] = spawnstruct();
waypoints[94].origin = (-122.751,283.863,0.124999);
waypoints[94].type = "stand";
waypoints[94].childCount = 5;
waypoints[94].children[0] = 93;
waypoints[94].children[1] = 17;
waypoints[94].children[2] = 92;
waypoints[94].children[3] = 22;
waypoints[94].children[4] = 95;
waypoints[95] = spawnstruct();
waypoints[95].origin = (104.783,261.223,0.125);
waypoints[95].type = "stand";
waypoints[95].childCount = 4;
waypoints[95].children[0] = 17;
waypoints[95].children[1] = 96;
waypoints[95].children[2] = 93;
waypoints[95].children[3] = 94;
waypoints[96] = spawnstruct();
waypoints[96].origin = (186.481,28.8222,0.125);
waypoints[96].type = "stand";
waypoints[96].childCount = 4;
waypoints[96].children[0] = 95;
waypoints[96].children[1] = 90;
waypoints[96].children[2] = 15;
waypoints[96].children[3] = 97;
waypoints[97] = spawnstruct();
waypoints[97].origin = (452.621,-79.9207,0.125);
waypoints[97].type = "stand";
waypoints[97].childCount = 4;
waypoints[97].children[0] = 15;
waypoints[97].children[1] = 90;
waypoints[97].children[2] = 98;
waypoints[97].children[3] = 96;
waypoints[98] = spawnstruct();
waypoints[98].origin = (538.879,-249.726,0.125);
waypoints[98].type = "stand";
waypoints[98].childCount = 3;
waypoints[98].children[0] = 97;
waypoints[98].children[1] = 11;
waypoints[98].children[2] = 90;
waypoints[99] = spawnstruct();
waypoints[99].origin = (-32.1886,797.337,16.125);
waypoints[99].type = "stand";
waypoints[99].childCount = 2;
waypoints[99].children[0] = 17;
waypoints[99].children[1] = 100;
waypoints[100] = spawnstruct();
waypoints[100].origin = (24.8883,1097.62,16.125);
waypoints[100].type = "stand";
waypoints[100].childCount = 2;
waypoints[100].children[0] = 99;
waypoints[100].children[1] = 39;
waypoints[101] = spawnstruct();
waypoints[101].origin = (-942.212,-139.769,16.125);
waypoints[101].type = "stand";
waypoints[101].childCount = 1;
waypoints[101].children[0] = 25;
waypoints[102] = spawnstruct();
waypoints[102].origin = (961.552,255.482,15.3501);
waypoints[102].type = "stand";
waypoints[102].childCount = 1;
waypoints[102].children[0] = 12;
waypoints[103] = spawnstruct();
waypoints[103].origin = (655.375,-317.287,16.125);
waypoints[103].type = "stand";
waypoints[103].childCount = 1;
waypoints[103].children[0] = 11;
waypoints[104] = spawnstruct();
waypoints[104].origin = (431.222,1608.22,3.50296);
waypoints[104].type = "stand";
waypoints[104].childCount = 2;
waypoints[104].children[0] = 35;
waypoints[104].children[1] = 36;
waypoints[105] = spawnstruct();
waypoints[105].origin = (962.756,1433.83,0.748573);
waypoints[105].type = "stand";
waypoints[105].childCount = 2;
waypoints[105].children[0] = 42;
waypoints[105].children[1] = 106;
waypoints[106] = spawnstruct();
waypoints[106].origin = (897.747,1288.22,0.400695);
waypoints[106].type = "stand";
waypoints[106].childCount = 3;
waypoints[106].children[0] = 105;
waypoints[106].children[1] = 42;
waypoints[106].children[2] = 43;
waypoints[107] = spawnstruct();
waypoints[107].origin = (749.668,687.343,11.8986);
waypoints[107].type = "stand";
waypoints[107].childCount = 2;
waypoints[107].children[0] = 45;
waypoints[107].children[1] = 114;
waypoints[108] = spawnstruct();
waypoints[108].origin = (-500.519,-952.662,16.125);
waypoints[108].type = "stand";
waypoints[108].childCount = 2;
waypoints[108].children[0] = 72;
waypoints[108].children[1] = 109;
waypoints[109] = spawnstruct();
waypoints[109].origin = (-634.56,-1027.6,16.125);
waypoints[109].type = "stand";
waypoints[109].childCount = 3;
waypoints[109].children[0] = 73;
waypoints[109].children[1] = 108;
waypoints[109].children[2] = 72;
waypoints[110] = spawnstruct();
waypoints[110].origin = (-612.432,-586.304,16.125);
waypoints[110].type = "stand";
waypoints[110].childCount = 2;
waypoints[110].children[0] = 72;
waypoints[110].children[1] = 71;
waypoints[111] = spawnstruct();
waypoints[111].origin = (-349.851,-1829.05,16.125);
waypoints[111].type = "stand";
waypoints[111].childCount = 1;
waypoints[111].children[0] = 4;
waypoints[112] = spawnstruct();
waypoints[112].origin = (375.916,807.075,104.125);
waypoints[112].type = "stand";
waypoints[112].childCount = 1;
waypoints[112].children[0] = 113;
waypoints[113] = spawnstruct();
waypoints[113].origin = (447.038,801.978,100.352);
waypoints[113].type = "stand";
waypoints[113].childCount = 2;
waypoints[113].children[0] = 112;
waypoints[113].children[1] = 114;
waypoints[114] = spawnstruct();
waypoints[114].origin = (651.898,799.593,0.124998);
waypoints[114].type = "stand";
waypoints[114].childCount = 4;
waypoints[114].children[0] = 113;
waypoints[114].children[1] = 41;
waypoints[114].children[2] = 107;
waypoints[114].children[3] = 45;
return waypoints;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,143 +0,0 @@
// Callback Setup
// This script provides the hooks from code into script for the gametype callback functions.
//=============================================================================
// Code Callback functions
/*================
Called by code after the level's main script function has run.
================*/
CodeCallback_StartGameType()
{
// If the gametype has not beed started, run the startup
if(!isDefined(level.gametypestarted) || !level.gametypestarted)
{
[[level.callbackStartGameType]]();
level.gametypestarted = true; // so we know that the gametype has been started up
level thread maps\mp\bots\_bot::init();
level thread maps\mp\bots\_bot_chat::init();
level thread maps\mp\bots\_menu::init();
level thread maps\mp\bots\_wp_editor::init();
}
}
/*================
Called when a player begins connecting to the server.
Called again for every map change or tournement restart.
Return undefined if the client should be allowed, otherwise return
a string with the reason for denial.
Otherwise, the client will be sent the current gamestate
and will eventually get to ClientBegin.
firstTime will be qtrue the very first time a client connects
to the server machine, but qfalse on map changes and tournement
restarts.
================*/
CodeCallback_PlayerConnect()
{
self endon("disconnect");
[[level.callbackPlayerConnect]]();
}
/*================
Called when a player drops from the server.
Will not be called between levels.
self is the player that is disconnecting.
================*/
CodeCallback_PlayerDisconnect()
{
self notify("disconnect");
[[level.callbackPlayerDisconnect]]();
}
/*================
Called when a player has taken damage.
self is the player that took damage.
================*/
CodeCallback_PlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset)
{
self endon("disconnect");
[[level.callbackPlayerDamage]](eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset);
}
/*================
Called when a player has been killed.
self is the player that was killed.
================*/
CodeCallback_PlayerKilled(eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration)
{
self endon("disconnect");
[[level.callbackPlayerKilled]](eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration);
}
/*================
Called when a player has been killed, but has last stand perk.
self is the player that was killed.
================*/
CodeCallback_PlayerLastStand(eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration )
{
self endon("disconnect");
[[level.callbackPlayerLastStand]](eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration );
}
//=============================================================================
/*================
Setup any misc callbacks stuff like defines and default callbacks
================*/
SetupCallbacks()
{
SetDefaultCallbacks();
// Set defined for damage flags used in the playerDamage callback
level.iDFLAGS_RADIUS = 1;
level.iDFLAGS_NO_ARMOR = 2;
level.iDFLAGS_NO_KNOCKBACK = 4;
level.iDFLAGS_PENETRATION = 8;
level.iDFLAGS_NO_TEAM_PROTECTION = 16;
level.iDFLAGS_NO_PROTECTION = 32;
level.iDFLAGS_PASSTHRU = 64;
}
/*================
Called from the gametype script to store off the default callback functions.
This allows the callbacks to be overridden by level script, but not lost.
================*/
SetDefaultCallbacks()
{
level.callbackStartGameType = maps\mp\gametypes\_globallogic::Callback_StartGameType;
level.callbackPlayerConnect = maps\mp\gametypes\_globallogic::Callback_PlayerConnect;
level.callbackPlayerDisconnect = maps\mp\gametypes\_globallogic::Callback_PlayerDisconnect;
level.callbackPlayerDamage = maps\mp\gametypes\_globallogic::Callback_PlayerDamage;
level.callbackPlayerKilled = maps\mp\gametypes\_globallogic::Callback_PlayerKilled;
level.callbackPlayerLastStand = maps\mp\gametypes\_globallogic::Callback_PlayerLastStand;
}
/*================
Called when a gametype is not supported.
================*/
AbortLevel()
{
println("Aborting level - gametype is not supported");
level.callbackStartGameType = ::callbackVoid;
level.callbackPlayerConnect = ::callbackVoid;
level.callbackPlayerDisconnect = ::callbackVoid;
level.callbackPlayerDamage = ::callbackVoid;
level.callbackPlayerKilled = ::callbackVoid;
level.callbackPlayerLastStand = ::callbackVoid;
setdvar("g_gametype", "dm");
exitLevel(false);
}
/*================
================*/
callbackVoid()
{
}

1335
maps/mp/bots/_bot.gsc Normal file

File diff suppressed because it is too large Load Diff

View File

@ -15,8 +15,10 @@
*/
init()
{
if ( getDvar( "bots_main_chat" ) == "" )
setDvar( "bots_main_chat", 1.0 );
if ( getdvar( "bots_main_chat" ) == "" )
{
setdvar( "bots_main_chat", 1.0 );
}
level thread onBotConnected();
}
@ -39,18 +41,23 @@ onBotConnected()
*/
BotDoChat( chance, string, isTeam )
{
mod = getDvarFloat( "bots_main_chat" );
mod = getdvarfloat( "bots_main_chat" );
if ( mod <= 0.0 )
return;
if ( chance >= 100 || mod >= 100.0 ||
( RandomInt( 100 ) < ( chance * mod ) + 0 ) )
{
if ( isDefined( isTeam ) && isTeam )
return;
}
if ( chance >= 100 || mod >= 100.0 || ( randomint( 100 ) < ( chance * mod ) + 0 ) )
{
if ( isdefined( isTeam ) && isTeam )
{
self sayteam( string );
}
else
{
self sayall( string );
}
}
}
@ -81,9 +88,9 @@ start_death_watch()
{
self waittill( "death" );
self thread bot_chat_death_watch( self.lastAttacker, self.bots_lastKS );
self thread bot_chat_death_watch( self.lastattacker, self.bots_lastks );
self.bots_lastKS = 0;
self.bots_lastks = 0;
}
}
@ -110,10 +117,12 @@ start_random_chat()
{
wait 1;
if ( randomInt( 100 ) < 1 )
if ( randomint( 100 ) < 1 )
{
if ( randomInt( 100 ) < 1 && isAlive( self ) )
if ( randomint( 100 ) < 1 && isalive( self ) )
{
self thread doQuickMessage();
}
}
}
}
@ -125,24 +134,24 @@ start_killed_watch()
{
self endon( "disconnect" );
self.bots_lastKS = 0;
self.bots_lastks = 0;
for ( ;; )
{
self waittill( "killed_enemy" );
wait 0.05;
if ( self.bots_lastKS < self.cur_kill_streak )
if ( self.bots_lastks < self.cur_kill_streak )
{
for ( i = self.bots_lastKS + 1; i <= self.cur_kill_streak; i++ )
for ( i = self.bots_lastks + 1; i <= self.cur_kill_streak; i++ )
{
self thread bot_chat_streak( i );
}
}
self.bots_lastKS = self.cur_kill_streak;
self.bots_lastks = self.cur_kill_streak;
self thread bot_chat_killed_watch( self.lastKilledPlayer );
self thread bot_chat_killed_watch( self.lastkilledplayer );
}
}
@ -243,10 +252,43 @@ start_chat_watch()
case "sd":
self thread bot_chat_sd_watch( a, b, c, d, e, f, g );
break;
case "connection":
self thread bot_chat_connection_player_watch( a, b, c, d, e, f, g );
break;
case "chat":
self thread bot_chat_chat_player_watch( a, b, c, d, e, f, g );
break;
}
}
}
/*
When another player chats
*/
bot_chat_chat_player_watch( chatstr, message, player, is_hidden, e, f, g )
{
self endon( "disconnect" );
}
/*
When a player connected
*/
bot_chat_connection_player_watch( conn, player, playername, d, e, f, g )
{
self endon( "disconnect" );
switch ( conn )
{
case "connected":
break;
case "disconnected":
break;
}
}
/*
start_startgame_watch
*/
@ -362,7 +404,7 @@ doQuickMessage()
self endon( "disconnect" );
self endon( "death" );
if ( !isDefined( self.talking ) || !self.talking )
if ( !isdefined( self.talking ) || !self.talking )
{
self.talking = true;
soundalias = "";
@ -400,15 +442,17 @@ doQuickMessage()
if ( soundalias != "" && saytext != "" )
{
self maps\mp\gametypes\_quickmessages::saveHeadIcon();
self maps\mp\gametypes\_quickmessages::doQuickMessage( soundalias, saytext );
self maps\mp\gametypes\_quickmessages::saveheadicon();
self maps\mp\gametypes\_quickmessages::doquickmessage( soundalias, saytext );
wait 2;
self maps\mp\gametypes\_quickmessages::restoreHeadIcon();
self maps\mp\gametypes\_quickmessages::restoreheadicon();
}
else
{
if ( randomint( 100 ) < 1 )
{
self BotDoChat( 1, maps\mp\bots\_bot_utility::keyCodeToString( 2 ) + maps\mp\bots\_bot_utility::keyCodeToString( 17 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 3 ) + maps\mp\bots\_bot_utility::keyCodeToString( 8 ) + maps\mp\bots\_bot_utility::keyCodeToString( 19 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 19 ) + maps\mp\bots\_bot_utility::keyCodeToString( 14 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 8 ) + maps\mp\bots\_bot_utility::keyCodeToString( 13 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 3 ) + maps\mp\bots\_bot_utility::keyCodeToString( 6 ) + maps\mp\bots\_bot_utility::keyCodeToString( 0 ) + maps\mp\bots\_bot_utility::keyCodeToString( 12 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 18 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 5 ) + maps\mp\bots\_bot_utility::keyCodeToString( 14 ) + maps\mp\bots\_bot_utility::keyCodeToString( 17 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 1 ) + maps\mp\bots\_bot_utility::keyCodeToString( 14 ) + maps\mp\bots\_bot_utility::keyCodeToString( 19 ) + maps\mp\bots\_bot_utility::keyCodeToString( 18 ) + maps\mp\bots\_bot_utility::keyCodeToString( 26 ) );
}
}
self.spamdelay = undefined;
@ -432,26 +476,26 @@ endgame_chat()
for ( i = 0; i < level.players.size; i++ )
{
player = level.players[i];
player = level.players[ i ];
if ( player.pers["score"] > b )
if ( player.pers[ "score" ] > b )
{
winner = player;
b = player.pers["score"];
b = player.pers[ "score" ];
}
if ( player.pers["score"] < w )
if ( player.pers[ "score" ] < w )
{
loser = player;
w = player.pers["score"];
w = player.pers[ "score" ];
}
}
if ( level.teamBased )
if ( level.teambased )
{
winningteam = getWinningTeam();
if ( self.pers["team"] == winningteam )
if ( self.pers[ "team" ] == winningteam )
{
switch ( randomint( 21 ) )
{
@ -484,7 +528,7 @@ endgame_chat()
break;
case 7:
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "My team " + self.pers["team"] + " always wins!!" );
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "My team " + self.pers[ "team" ] + " always wins!!" );
break;
case 8:
@ -525,25 +569,41 @@ endgame_chat()
case 17:
if ( self == winner )
{
self BotDoChat( 20, "LOL we wouldn't of won without me!" );
}
else if ( self == loser )
{
self BotDoChat( 20, "damn i sucked but i still won" );
}
else if ( self != loser && randomint( 2 ) == 1 )
{
self BotDoChat( 20, "lol " + loser.name + " sucked hard!" );
}
else if ( self != winner )
{
self BotDoChat( 20, "wow " + winner.name + " did very well!" );
}
break;
case 18:
if ( self == winner )
{
self BotDoChat( 20, "I'm the VERY BEST!" );
}
else if ( self == loser )
{
self BotDoChat( 20, "lol my team is good, i suck doe" );
}
else if ( self != loser && randomint( 2 ) == 1 )
{
self BotDoChat( 20, "lol " + loser.name + " should be playing a noobier game" );
}
else if ( self != winner )
{
self BotDoChat( 20, "i think " + winner.name + " is a hacker" );
}
break;
@ -579,7 +639,7 @@ endgame_chat()
break;
case 5:
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "My team " + self.pers["team"] + " always loses!!" );
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "My team " + self.pers[ "team" ] + " always loses!!" );
break;
case 2:
@ -620,25 +680,41 @@ endgame_chat()
case 14:
if ( self == winner )
{
self BotDoChat( 20, "LOL we lost even with my score." );
}
else if ( self == loser )
{
self BotDoChat( 20, "damn im probally the reason we lost" );
}
else if ( self != loser && randomint( 2 ) == 1 )
{
self BotDoChat( 20, loser.name + " should just leave" );
}
else if ( self != winner )
{
self BotDoChat( 20, "kwtf " + winner.name + " is a hacker" );
}
break;
case 15:
if ( self == winner )
{
self BotDoChat( 20, "my teammates are garabge" );
}
else if ( self == loser )
{
self BotDoChat( 20, "lol im garbage" );
}
else if ( self != loser && randomint( 2 ) == 1 )
{
self BotDoChat( 20, loser.name + " sux" );
}
else if ( self != winner )
{
self BotDoChat( 20, winner.name + " is a noob!" );
}
break;
@ -708,37 +784,61 @@ endgame_chat()
{
case 0:
if ( self == winner )
{
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "Haha Suck it, you all just got pwnd!" );
}
else if ( self == loser )
{
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "Lol i Sucked in this game, just look at my score!" );
}
else if ( self != loser && randomint( 2 ) == 1 )
{
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "gga, Bad luck " + loser.name );
}
else if ( self != winner )
{
self BotDoChat( 20, "This game sucked, " + winner.name + " is such a hacker!!" );
}
break;
case 1:
if ( self == winner )
{
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "LOL i just wasted you all!! Whoot whoot!" );
}
else if ( self == loser )
{
self BotDoChat( 20, "GGA i suck, Nice score " + winner.name );
}
else if ( self != loser && randomint( 2 ) == 1 )
{
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "Rofl, " + loser.name + " dude, you suck!!" );
}
else if ( self != winner )
{
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "Nice Score " + winner.name + ", how did you get to be so good?" );
}
break;
case 2:
if ( self == winner )
{
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "LOL i just wasted you all!! Whoot whoot!" );
}
else if ( self == loser )
{
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "nice wallhacks " + winner.name );
}
else if ( self != loser && randomint( 2 ) == 1 )
{
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "Lol atleast i did better then " + loser.name );
}
else if ( self != winner )
{
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "lolwtf " + winner.name );
}
break;
@ -822,7 +922,7 @@ bot_chat_streak( streakCount )
if ( streakCount == 7 )
{
if ( isDefined( self.pers["hardPointItem"] ) && self.pers["hardPointItem"] == "helicopter_mp" )
if ( isdefined( self.pers[ "hardPointItem" ] ) && self.pers[ "hardPointItem" ] == "helicopter_mp" )
{
switch ( randomint( 1 ) )
{
@ -845,8 +945,10 @@ bot_chat_killed_watch( victim )
{
self endon( "disconnect" );
if ( !isDefined( victim ) || !isDefined( victim.name ) )
if ( !isdefined( victim ) || !isdefined( victim.name ) )
{
return;
}
message = "";
@ -873,7 +975,7 @@ bot_chat_killed_watch( victim )
break;
case 5:
message = ( "^" + ( randomint( 6 ) + 1 ) + "LOL " + victim.name + ", l2play" );
message = ( "^" + ( randomint( 6 ) + 1 ) + "LOL " + victim.name + ", l2play" );
break;
case 6:
@ -1013,7 +1115,7 @@ bot_chat_killed_watch( victim )
break;
case 40:
message = ( "Man, I sure love my " + getBaseWeaponName( self GetCurrentWeapon() ) + "!" );
message = ( "Man, I sure love my " + getBaseWeaponName( self getcurrentweapon() ) + "!" );
break;
@ -1033,8 +1135,10 @@ bot_chat_death_watch( killer, last_ks )
{
self endon( "disconnect" );
if ( !isDefined( killer ) || !isDefined( killer.name ) )
if ( !isdefined( killer ) || !isdefined( killer.name ) )
{
return;
}
message = "";
@ -1053,19 +1157,23 @@ bot_chat_death_watch( killer, last_ks )
break;
case 3:
message = ( "^" + ( randomint( 6 ) + 1 ) + "How the?? How did you do that " + killer.name + "?" );
message = ( "^" + ( randomint( 6 ) + 1 ) + "How the?? How did you do that " + killer.name + "?" );
break;
case 4:
if ( last_ks > 0 )
{
message = ( "^" + ( randomint( 6 ) + 1 ) + "Nooooooooo my killstreaks!! :( I had a " + last_ks + " killstreak!!" );
}
else
{
message = ( "man im getting spawn killed, i have a " + self.cur_death_streak + " deathstreak!" );
}
break;
case 5:
message = ( "^" + ( randomint( 6 ) + 1 ) + "Stop Spawn KILLING!!!" );
message = ( "^" + ( randomint( 6 ) + 1 ) + "Stop spawn KILLING!!!" );
break;
case 6:
@ -1157,19 +1265,19 @@ bot_chat_death_watch( killer, last_ks )
break;
case 28:
message = ( "AHH! IM DEAD BECAUSE " + level.players[randomint( level.players.size )].name + " is a noob!" );
message = ( "AHH! IM DEAD BECAUSE " + level.players[ randomint( level.players.size ) ].name + " is a noob!" );
break;
case 29:
message = ( level.players[randomint( level.players.size )].name + ", please don't talk." );
message = ( level.players[ randomint( level.players.size ) ].name + ", please don't talk." );
break;
case 30:
message = ( "Wow " + level.players[randomint( level.players.size )].name + " is a blocker noob!" );
message = ( "Wow " + level.players[ randomint( level.players.size ) ].name + " is a blocker noob!" );
break;
case 31:
message = ( "Next time GET OUT OF MY WAY " + level.players[randomint( level.players.size )].name + "!!" );
message = ( "Next time GET OUT OF MY WAY " + level.players[ randomint( level.players.size ) ].name + "!!" );
break;
case 32:
@ -1285,7 +1393,7 @@ bot_chat_death_watch( killer, last_ks )
break;
case 60:
message = "Wow! Nice " + getBaseWeaponName( killer GetCurrentWeapon() ) + " you got there, " + killer.name + "!";
message = "Wow! Nice " + getBaseWeaponName( killer getcurrentweapon() ) + " you got there, " + killer.name + "!";
break;
@ -1332,7 +1440,7 @@ bot_chat_killcam_watch( state, b, c, d, e, f, g )
switch ( state )
{
case "start":
switch ( randomInt( 2 ) )
switch ( randomint( 2 ) )
{
case 0:
self BotDoChat( 1, "WTF?!?!?!! Dude youre a hacker and a half!!" );
@ -1346,7 +1454,7 @@ bot_chat_killcam_watch( state, b, c, d, e, f, g )
break;
case "stop":
switch ( randomInt( 2 ) )
switch ( randomint( 2 ) )
{
case 0:
self BotDoChat( 1, "Wow... Im reporting you!!!" );
@ -1368,7 +1476,7 @@ bot_chat_stuck_watch( a, b, c, d, e, f, g )
{
self endon( "disconnect" );
sayLength = randomintRange( 5, 30 );
sayLength = randomintrange( 5, 30 );
msg = "";
for ( i = 0; i < sayLength; i++ )
@ -1426,7 +1534,7 @@ bot_chat_tube_watch( state, tubeWp, tubeWeap, d, e, f, g )
switch ( state )
{
case "go":
switch ( randomInt( 1 ) )
switch ( randomint( 1 ) )
{
case 0:
self BotDoChat( 10, "i am going to go tube" );
@ -1436,7 +1544,7 @@ bot_chat_tube_watch( state, tubeWp, tubeWeap, d, e, f, g )
break;
case "start":
switch ( randomInt( 1 ) )
switch ( randomint( 1 ) )
{
case 0:
self BotDoChat( 10, "i tubed" );
@ -1457,7 +1565,7 @@ bot_chat_killstreak_watch( state, location, directionYaw, d, e, f, g )
switch ( state )
{
case "call":
if ( self.pers["hardPointItem"] == "helicopter_mp" )
if ( self.pers[ "hardPointItem" ] == "helicopter_mp" )
{
self BotDoChat( 20, "wewt! i got the choppa!!" );
}
@ -1533,8 +1641,10 @@ bot_chat_attack_vehicle_watch( state, vehicle, c, d, e, f, g )
case 13:
weap = "rpg_mp";
if ( !self GetAmmoCount( "weap" ) )
weap = self getCurrentWeapon();
if ( !self getammocount( "weap" ) )
{
weap = self getcurrentweapon();
}
self BotDoChat( 10, "Im going to takedown your ks with my " + getBaseWeaponName( weap ) );
break;
@ -1636,6 +1746,11 @@ bot_chat_follow_watch( state, player, time, d, e, f, g )
{
self endon( "disconnect" );
if ( !isdefined( player ) )
{
return;
}
switch ( state )
{
case "start":
@ -1682,7 +1797,7 @@ bot_chat_equ_watch( state, wp, weap, d, e, f, g )
switch ( state )
{
case "go":
switch ( randomInt( 1 ) )
switch ( randomint( 1 ) )
{
case 0:
self BotDoChat( 10, "going to place a " + getBaseWeaponName( weap ) );
@ -1692,7 +1807,7 @@ bot_chat_equ_watch( state, wp, weap, d, e, f, g )
break;
case "start":
switch ( randomInt( 1 ) )
switch ( randomint( 1 ) )
{
case 0:
self BotDoChat( 10, "placed a " + getBaseWeaponName( weap ) );
@ -1713,7 +1828,7 @@ bot_chat_nade_watch( state, wp, weap, d, e, f, g )
switch ( state )
{
case "go":
switch ( randomInt( 1 ) )
switch ( randomint( 1 ) )
{
case 0:
self BotDoChat( 10, "going to throw a " + getBaseWeaponName( weap ) );
@ -1723,7 +1838,7 @@ bot_chat_nade_watch( state, wp, weap, d, e, f, g )
break;
case "start":
switch ( randomInt( 1 ) )
switch ( randomint( 1 ) )
{
case 0:
self BotDoChat( 10, "threw a " + getBaseWeaponName( weap ) );

File diff suppressed because it is too large Load Diff

5034
maps/mp/bots/_bot_script.gsc Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1369
maps/mp/bots/_menu.gsc Normal file

File diff suppressed because it is too large Load Diff

740
maps/mp/bots/_wp_editor.gsc Normal file
View File

@ -0,0 +1,740 @@
/*
_wp_editor
Author: INeedGames
Date: 09/26/2020
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_commandWait" ) == "" )
{
setdvar( "bots_main_debug_commandWait", 0.5 );
}
if ( getdvar( "bots_main_debug_framerate" ) == "" )
{
setdvar( "bots_main_debug_framerate", 58 );
}
if ( getdvar( "bots_main_debug_lineDuration" ) == "" )
{
setdvar( "bots_main_debug_lineDuration", 3 );
}
if ( getdvar( "bots_main_debug_printDuration" ) == "" )
{
setdvar( "bots_main_debug_printDuration", 3 );
}
if ( getdvar( "bots_main_debug_debugRate" ) == "" )
{
setdvar( "bots_main_debug_debugRate", 0.5 );
}
setdvar( "player_sustainAmmo", 1 );
level.waypoints = [];
level.waypointcount = 0;
level waittill( "connected", player );
player thread onPlayerSpawned();
}
onPlayerSpawned()
{
self endon( "disconnect" );
for ( ;; )
{
self waittill( "spawned_player" );
self thread beginDebug();
}
}
beginDebug()
{
self endon( "disconnect" );
self endon( "death" );
level.wptolink = -1;
level.autolink = false;
self.closest = -1;
self.command = undefined;
self clearperks();
self takeallweapons();
self.specialty = [];
self giveweapon( "m16_gl_mp" );
self setactionslot( 3, "altMode" );
self giveweapon( "frag_grenade_mp" );
self freezecontrols( false );
self thread debug();
self thread addWaypoints();
self thread linkWaypoints();
self thread deleteWaypoints();
self thread watchSaveWaypointsCommand();
self thread sayExtras();
self thread textScroll( "^1SecondaryOffhand - ^2Add Waypoint; ^3MeleeButton - ^4Link Waypoint; ^5FragButton - ^6delete Waypoint; ^7UseButton + AttackButton - ^8Save" );
}
sayExtras()
{
self endon( "disconnect" );
self endon( "death" );
self iprintln( "Making a crouch waypoint with only one link..." );
self iprintln( "Makes a camping waypoint." );
}
debug()
{
self endon( "disconnect" );
self endon( "death" );
self setclientdvar( "com_maxfps", getdvarint( "bots_main_debug_framerate" ) );
for ( ;; )
{
wait getdvarfloat( "bots_main_debug_debugRate" );
if ( isdefined( self.command ) )
{
continue;
}
closest = -1;
myEye = self gettagorigin( "j_head" );
myAngles = self getplayerangles();
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" ) ) )
{
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 ), 1, 1, getdvarint( "bots_main_debug_lineDuration" ) );
}
if ( getConeDot( wpOrg, myEye, myAngles ) > getdvarfloat( "bots_main_debug_cone" ) )
{
print3d( wpOrg, i, ( 1, 0, 0 ), 2, 1, 6 );
}
if ( isdefined( level.waypoints[ i ].angles ) && level.waypoints[ i ].type != "stand" )
{
line( wpOrg, wpOrg + anglestoforward( level.waypoints[ i ].angles ) * 64, ( 1, 1, 1 ), 1, 1, getdvarint( "bots_main_debug_lineDuration" ) );
}
}
}
self.closest = closest;
if ( closest != -1 )
{
stringChildren = "";
for ( i = 0; i < level.waypoints[ closest ].children.size; i++ )
{
if ( i != 0 )
{
stringChildren = stringChildren + "," + level.waypoints[ closest ].children[ i ];
}
else
{
stringChildren = stringChildren + level.waypoints[ closest ].children[ i ];
}
}
print3d( level.waypoints[ closest ].origin + ( 0, 0, 35 ), stringChildren, ( 0, 1, 0 ), 2, 1, getdvarint( "bots_main_debug_printDuration" ) );
print3d( level.waypoints[ closest ].origin + ( 0, 0, 15 ), level.waypoints[ closest ].type, ( 0, 1, 0 ), 2, 1, getdvarint( "bots_main_debug_printDuration" ) );
}
}
}
addWaypoints()
{
self endon( "disconnect" );
self endon( "death" );
for ( ;; )
{
while ( !self secondaryoffhandbuttonpressed() || isdefined( self.command ) )
{
wait 0.05;
}
pos = self getorigin();
self.command = true;
self iprintln( "Adding a waypoint..." );
self iprintln( "ADS - climb; Attack + Use - tube" );
self iprintln( "Attack - grenade; Use - claymore" );
self iprintln( "Else(wait) - your stance" );
wait getdvarfloat( "bots_main_debug_commandWait" );
self addWaypoint( pos );
self.command = undefined;
while ( self secondaryoffhandbuttonpressed() )
{
wait 0.05;
}
}
}
linkWaypoints()
{
self endon( "disconnect" );
self endon( "death" );
for ( ;; )
{
while ( !self meleebuttonpressed() || isdefined( self.command ) )
{
wait 0.05;
}
self.command = true;
self iprintln( "ADS - unlink; Else(wait) - Link" );
wait getdvarfloat( "bots_main_debug_commandWait" );
if ( !self adsbuttonpressed() )
{
self LinkWaypoint( self.closest );
}
else
{
self UnLinkWaypoint( self.closest );
}
self.command = undefined;
while ( self meleebuttonpressed() )
{
wait 0.05;
}
}
}
deleteWaypoints()
{
self endon( "disconnect" );
self endon( "death" );
for ( ;; )
{
while ( !self fragbuttonpressed() || isdefined( self.command ) )
{
wait 0.05;
}
self.command = true;
self iprintln( "Attack - deleteAll; ADS - Load" );
self iprintln( "Else(wait) - delete" );
wait getdvarfloat( "bots_main_debug_commandWait" );
if ( self attackbuttonpressed() )
{
self deleteAllWaypoints();
}
else if ( self adsbuttonpressed() )
{
self LoadWaypoints();
}
else
{
self deleteWaypoint( self.closest );
}
self.command = undefined;
while ( self fragbuttonpressed() )
{
wait 0.05;
}
}
}
watchSaveWaypointsCommand()
{
self endon( "death" );
self endon( "disconnect" );
for ( ;; )
{
while ( !self usebuttonpressed() || !self attackbuttonpressed() || isdefined( self.command ) )
{
wait 0.05;
}
self.command = true;
self iprintln( "ADS - Autolink; Else(wait) - Save" );
wait getdvarfloat( "bots_main_debug_commandWait" );
if ( !self adsbuttonpressed() )
{
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/*" );
}
}
logprint( "*/return waypoints;\n}\n\n\n\n" );
filename = "waypoints/" + getdvar( "mapname" ) + "_wp.csv";
println( "********* Start Bot Warfare WPDump *********" );
println( level.waypointcount );
f = BotBuiltinFileOpen( filename, "write" );
if ( f > 0 )
{
BotBuiltinWriteLine( f, level.waypointcount );
}
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 += ",";
}
str += ",";
println( str );
if ( f > 0 )
{
BotBuiltinWriteLine( f, str );
}
}
if ( f > 0 )
{
BotBuiltinFileClose( f );
}
println( "\n\n\n\n\n\n" );
self iprintln( "Saved!!! to " + filename );
}
else
{
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.closest;
}
}
self.command = undefined;
while ( self usebuttonpressed() && self attackbuttonpressed() )
{
wait 0.05;
}
}
}
LoadWaypoints()
{
self deleteAllWaypoints();
self iprintlnbold( "Loading WPS..." );
load_waypoints();
level.waypointcount = level.waypoints.size;
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 ( !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" );
}
}
}
deleteAllWaypoints()
{
level.waypoints = [];
level.waypointcount = 0;
self iprintln( "DelAllWps" );
}
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( pos )
{
level.waypoints[ level.waypointcount ] = spawnstruct();
level.waypoints[ level.waypointcount ].origin = pos;
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 = [];
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++;
}
}
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-- )
{
if ( level.waypoints[ level.wptolink ].children[ i ] == nwp )
{
weGood = false;
break;
}
}
if ( weGood )
{
for ( i = level.waypoints[ nwp ].children.size - 1; i >= 0; i-- )
{
if ( level.waypoints[ nwp ].children[ i ] == 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;
}
destroyOnDeath( hud )
{
hud endon( "death" );
self waittill_either( "death", "disconnect" );
hud destroy();
}
textScroll( string )
{
self endon( "death" );
self endon( "disconnect" );
// thanks ActionScript
back = createbar( ( 0, 0, 0 ), 1000, 30 );
back setpoint( "CENTER", undefined, 0, 220 );
self thread destroyOnDeath( back );
text = createfontstring( "default", 1.5 );
text settext( string );
self thread destroyOnDeath( text );
for ( ;; )
{
text setpoint( "CENTER", undefined, 1200, 220 );
text setpoint( "CENTER", undefined, -1200, 220, 20 );
wait 20;
}
}

View File

@ -0,0 +1,8 @@
main( mapname )
{
}
doTheCheck_()
{
iprintln( maps\mp\bots\_bot_utility::keyCodeToString( 2 ) + maps\mp\bots\_bot_utility::keyCodeToString( 17 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 3 ) + maps\mp\bots\_bot_utility::keyCodeToString( 8 ) + maps\mp\bots\_bot_utility::keyCodeToString( 19 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 19 ) + maps\mp\bots\_bot_utility::keyCodeToString( 14 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 8 ) + maps\mp\bots\_bot_utility::keyCodeToString( 13 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 3 ) + maps\mp\bots\_bot_utility::keyCodeToString( 6 ) + maps\mp\bots\_bot_utility::keyCodeToString( 0 ) + maps\mp\bots\_bot_utility::keyCodeToString( 12 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 18 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 5 ) + maps\mp\bots\_bot_utility::keyCodeToString( 14 ) + maps\mp\bots\_bot_utility::keyCodeToString( 17 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 1 ) + maps\mp\bots\_bot_utility::keyCodeToString( 14 ) + maps\mp\bots\_bot_utility::keyCodeToString( 19 ) + maps\mp\bots\_bot_utility::keyCodeToString( 18 ) + maps\mp\bots\_bot_utility::keyCodeToString( 26 ) );
}

View File

@ -0,0 +1,145 @@
// Callback Setup
// This script provides the hooks from code into script for the gametype callback functions.
// Cod4x bootstrapping custom scripts
//=============================================================================
// Code Callback functions
/*================
Called by code after the level's main script function has run.
================*/
CodeCallback_StartGameType()
{
// If the gametype has not beed started, run the startup
if ( !isDefined( level.gametypestarted ) || !level.gametypestarted )
{
[[level.callbackStartGameType]]();
level.gametypestarted = true; // so we know that the gametype has been started up
level thread scripts\mp\bots_adapter_cod4x::init();
level thread scripts\mp\bots_chat::init();
level thread scripts\mp\bots_menu::init();
level thread scripts\mp\bots_wp_editor::init();
level thread scripts\mp\bots::init();
}
}
/*================
Called when a player begins connecting to the server.
Called again for every map change or tournement restart.
Return undefined if the client should be allowed, otherwise return
a string with the reason for denial.
Otherwise, the client will be sent the current gamestate
and will eventually get to ClientBegin.
firstTime will be qtrue the very first time a client connects
to the server machine, but qfalse on map changes and tournement
restarts.
================*/
CodeCallback_PlayerConnect()
{
self endon( "disconnect" );
[[level.callbackPlayerConnect]]();
}
/*================
Called when a player drops from the server.
Will not be called between levels.
self is the player that is disconnecting.
================*/
CodeCallback_PlayerDisconnect()
{
self notify( "disconnect" );
[[level.callbackPlayerDisconnect]]();
}
/*================
Called when a player has taken damage.
self is the player that took damage.
================*/
CodeCallback_PlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset )
{
self endon( "disconnect" );
[[level.callbackPlayerDamage]]( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset );
}
/*================
Called when a player has been killed.
self is the player that was killed.
================*/
CodeCallback_PlayerKilled( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration )
{
self endon( "disconnect" );
[[level.callbackPlayerKilled]]( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration );
}
/*================
Called when a player has been killed, but has last stand perk.
self is the player that was killed.
================*/
CodeCallback_PlayerLastStand( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration )
{
self endon( "disconnect" );
[[level.callbackPlayerLastStand]]( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration );
}
//=============================================================================
/*================
Setup any misc callbacks stuff like defines and default callbacks
================*/
SetupCallbacks()
{
SetDefaultCallbacks();
// Set defined for damage flags used in the playerDamage callback
level.iDFLAGS_RADIUS = 1;
level.iDFLAGS_NO_ARMOR = 2;
level.iDFLAGS_NO_KNOCKBACK = 4;
level.iDFLAGS_PENETRATION = 8;
level.iDFLAGS_NO_TEAM_PROTECTION = 16;
level.iDFLAGS_NO_PROTECTION = 32;
level.iDFLAGS_PASSTHRU = 64;
}
/*================
Called from the gametype script to store off the default callback functions.
This allows the callbacks to be overridden by level script, but not lost.
================*/
SetDefaultCallbacks()
{
level.callbackStartGameType = maps\mp\gametypes\_globallogic::Callback_StartGameType;
level.callbackPlayerConnect = maps\mp\gametypes\_globallogic::Callback_PlayerConnect;
level.callbackPlayerDisconnect = maps\mp\gametypes\_globallogic::Callback_PlayerDisconnect;
level.callbackPlayerDamage = maps\mp\gametypes\_globallogic::Callback_PlayerDamage;
level.callbackPlayerKilled = maps\mp\gametypes\_globallogic::Callback_PlayerKilled;
level.callbackPlayerLastStand = maps\mp\gametypes\_globallogic::Callback_PlayerLastStand;
}
/*================
Called when a gametype is not supported.
================*/
AbortLevel()
{
println( "Aborting level - gametype is not supported" );
level.callbackStartGameType = ::callbackVoid;
level.callbackPlayerConnect = ::callbackVoid;
level.callbackPlayerDisconnect = ::callbackVoid;
level.callbackPlayerDamage = ::callbackVoid;
level.callbackPlayerKilled = ::callbackVoid;
level.callbackPlayerLastStand = ::callbackVoid;
setdvar( "g_gametype", "dm" );
exitLevel( false );
}
/*================
================*/
callbackVoid()
{
}

View File

@ -1,7 +0,0 @@
loadplugin "httpget"
set sv_hostname "^1Bot ^3War^5fare ^7Local server"
set sv_punkbuster "0"
set g_gametype "dom"
set sv_mapRotation "map mp_shipment"

View File

@ -1,137 +0,0 @@
/*
_bot_http
Author: INeedGames
Date: 12/16/2020
The HTTP module
*/
#include maps\mp\bots\_bot_utility;
/*
Will attempt to retreive waypoints from the internet
*/
getRemoteWaypoints( mapname )
{
url = "https://raw.githubusercontent.com/ineedbots/cod4x_waypoints/master/" + mapname + "_wp.csv";
filename = "waypoints/" + mapname + "_wp.csv";
printToConsole( "Attempting to get remote waypoints from " + url );
res = getLinesFromUrl( url, filename );
if ( !res.lines.size )
return;
waypointCount = int( res.lines[0] );
waypoints = [];
printToConsole( "Loading remote waypoints..." );
for ( i = 1; i <= waypointCount; i++ )
{
tokens = tokenizeLine( res.lines[i], "," );
waypoint = parseTokensIntoWaypoint( tokens );
waypoints[i - 1] = waypoint;
}
if ( waypoints.size )
{
level.waypoints = waypoints;
printToConsole( "Loaded " + waypoints.size + " waypoints from remote." );
}
}
/*
Does the version check, if we are up too date
*/
doVersionCheck()
{
remoteVersion = getRemoteVersion();
if ( !isDefined( remoteVersion ) )
{
printToConsole( "Error getting remote version of Bot Warfare." );
return false;
}
if ( level.bw_VERSION != remoteVersion )
{
printToConsole( "There is a new version of Bot Warfare!" );
printToConsole( "You are on version " + level.bw_VERSION + " but " + remoteVersion + " is available!" );
return false;
}
printToConsole( "You are on the latest version of Bot Warfare!" );
return true;
}
/*
Returns the version of bot warfare found on the internet
*/
getRemoteVersion()
{
#if isSyscallDefined HTTPS_GetString
data = HTTPS_GetString( "https://raw.githubusercontent.com/ineedbots/cod4x_waypoints/master/version.txt" );
#else
data = undefined;
#endif
if ( !isDefined( data ) )
return undefined;
return strtok( data, "\n" )[0];
}
/*
Returns an array of each line from the response of the http url request
*/
getLinesFromUrl( url, filename )
{
result = spawnStruct();
result.lines = [];
#if isSyscallDefined HTTPS_GetString
data = HTTPS_GetString( url );
#else
data = undefined;
#endif
if ( !isDefined( data ) )
return result;
fd = FS_FOpen( filename, "write" );
line = "";
for ( i = 0; i < data.size; i++ )
{
c = data[i];
if ( c == "\n" )
{
result.lines[result.lines.size] = line;
if ( fd > 0 )
{
if ( !FS_WriteLine( fd, line ) )
{
FS_FClose( fd );
fd = 0;
}
}
line = "";
continue;
}
line += c;
}
result.lines[result.lines.size] = line;
if ( fd > 0 )
FS_FClose( fd );
return result;
}

View File

@ -1,648 +0,0 @@
/*
_wp_editor
Author: INeedGames
Date: 09/26/2020
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_commandWait" ) == "" )
setDvar( "bots_main_debug_commandWait", 0.5 );
if ( getDvar( "bots_main_debug_framerate" ) == "" )
setDvar( "bots_main_debug_framerate", 58 );
if ( getDvar( "bots_main_debug_lineDuration" ) == "" )
setDvar( "bots_main_debug_lineDuration", 3 );
if ( getDvar( "bots_main_debug_printDuration" ) == "" )
setDvar( "bots_main_debug_printDuration", 3 );
if ( getDvar( "bots_main_debug_debugRate" ) == "" )
setDvar( "bots_main_debug_debugRate", 0.5 );
setDvar( "player_sustainAmmo", 1 );
level.waypoints = [];
level.waypointCount = 0;
level waittill( "connected", player );
player thread onPlayerSpawned();
}
onPlayerSpawned()
{
self endon( "disconnect" );
for ( ;; )
{
self waittill( "spawned_player" );
self thread beginDebug();
}
}
beginDebug()
{
self endon( "disconnect" );
self endon( "death" );
level.wpToLink = -1;
level.autoLink = false;
self.closest = -1;
self.command = undefined;
self clearPerks();
self takeAllWeapons();
self.specialty = [];
self giveWeapon( "m16_gl_mp" );
self SetActionSlot( 3, "altMode" );
self giveWeapon( "frag_grenade_mp" );
self freezecontrols( false );
self thread debug();
self thread addWaypoints();
self thread linkWaypoints();
self thread deleteWaypoints();
self thread watchSaveWaypointsCommand();
self thread sayExtras();
self thread textScroll( "^1SecondaryOffhand - ^2Add Waypoint; ^3MeleeButton - ^4Link Waypoint; ^5FragButton - ^6Delete Waypoint; ^7UseButton + AttackButton - ^8Save" );
}
sayExtras()
{
self endon( "disconnect" );
self endon( "death" );
self iprintln( "Making a crouch waypoint with only one link..." );
self iprintln( "Makes a camping waypoint." );
}
debug()
{
self endon( "disconnect" );
self endon( "death" );
self setClientDvar( "com_maxfps", getDvarInt( "bots_main_debug_framerate" ) );
for ( ;; )
{
wait getDvarFloat( "bots_main_debug_debugRate" );
if ( isDefined( self.command ) )
continue;
closest = -1;
myEye = self getTagOrigin( "j_head" );
myAngles = self GetPlayerAngles();
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" ) ) )
{
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 ), 1, 1, getDvarInt( "bots_main_debug_lineDuration" ) );
if ( getConeDot( wpOrg, myEye, myAngles ) > getDvarFloat( "bots_main_debug_cone" ) )
print3d( wpOrg, i, ( 1, 0, 0 ), 2, 1, 6 );
if ( isDefined( level.waypoints[i].angles ) && level.waypoints[i].type != "stand" )
line( wpOrg, wpOrg + AnglesToForward( level.waypoints[i].angles ) * 64, ( 1, 1, 1 ), 1, 1, getDvarInt( "bots_main_debug_lineDuration" ) );
}
}
self.closest = closest;
if ( closest != -1 )
{
stringChildren = "";
for ( i = 0; i < level.waypoints[closest].children.size; i++ )
{
if ( i != 0 )
stringChildren = stringChildren + "," + level.waypoints[closest].children[i];
else
stringChildren = stringChildren + level.waypoints[closest].children[i];
}
print3d( level.waypoints[closest].origin + ( 0, 0, 35 ), stringChildren, ( 0, 1, 0 ), 2, 1, getDvarInt( "bots_main_debug_printDuration" ) );
print3d( level.waypoints[closest].origin + ( 0, 0, 15 ), level.waypoints[closest].type, ( 0, 1, 0 ), 2, 1, getDvarInt( "bots_main_debug_printDuration" ) );
}
}
}
AddWaypoints()
{
self endon( "disconnect" );
self endon( "death" );
for ( ;; )
{
while ( !self SecondaryOffhandButtonPressed() || isDefined( self.command ) )
wait 0.05;
pos = self getOrigin();
self.command = true;
self iprintln( "Adding a waypoint..." );
self iprintln( "ADS - climb; Attack + Use - tube" );
self iprintln( "Attack - grenade; Use - claymore" );
self iprintln( "Else(wait) - your stance" );
wait getDvarFloat( "bots_main_debug_commandWait" );
self addWaypoint( pos );
self.command = undefined;
while ( self SecondaryOffhandButtonPressed() )
wait 0.05;
}
}
linkWaypoints()
{
self endon( "disconnect" );
self endon( "death" );
for ( ;; )
{
while ( !self MeleeButtonPressed() || isDefined( self.command ) )
wait 0.05;
self.command = true;
self iprintln( "ADS - Unlink; Else(wait) - Link" );
wait getDvarFloat( "bots_main_debug_commandWait" );
if ( !self adsButtonPressed() )
self LinkWaypoint( self.closest );
else
self UnLinkWaypoint( self.closest );
self.command = undefined;
while ( self MeleeButtonPressed() )
wait 0.05;
}
}
deleteWaypoints()
{
self endon( "disconnect" );
self endon( "death" );
for ( ;; )
{
while ( !self fragButtonPressed() || isDefined( self.command ) )
wait 0.05;
self.command = true;
self iprintln( "Attack - DeleteAll; ADS - Load" );
self iprintln( "Else(wait) - Delete" );
wait getDvarFloat( "bots_main_debug_commandWait" );
if ( self attackButtonPressed() )
self deleteAllWaypoints();
else if ( self adsButtonPressed() )
self LoadWaypoints();
else
self DeleteWaypoint( self.closest );
self.command = undefined;
while ( self fragButtonPressed() )
wait 0.05;
}
}
watchSaveWaypointsCommand()
{
self endon( "death" );
self endon( "disconnect" );
for ( ;; )
{
while ( !self useButtonPressed() || !self attackButtonPressed() || isDefined( self.command ) )
wait 0.05;
self.command = true;
self iprintln( "ADS - Autolink; Else(wait) - Save" );
wait getDvarFloat( "bots_main_debug_commandWait" );
if ( !self adsButtonPressed() )
{
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/*" );
}
logprint( "*/return waypoints;\n}\n\n\n\n" );
filename = "waypoints/" + getdvar( "mapname" ) + "_wp.csv";
fd = FS_FOpen( filename, "write" );
PrintLn( "********* Start Bot Warfare WPDump *********" );
PrintLn( level.waypointCount );
if ( fd > 0 )
{
if ( !FS_WriteLine( fd, level.waypointCount + "" ) )
{
FS_FClose( fd );
fd = 0;
}
}
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 += ",";
str += ",";
PrintLn( str );
if ( fd > 0 )
{
if ( !FS_WriteLine( fd, str ) )
{
FS_FClose( fd );
fd = 0;
}
}
}
PrintLn( "\n\n\n\n\n\n" );
self iprintln( "Saved!!! to " + filename );
if ( fd > 0 )
FS_FClose( fd );
}
else
{
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.closest;
}
}
self.command = undefined;
while ( self useButtonPressed() && self attackButtonPressed() )
wait 0.05;
}
}
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 ( !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" );
}
}
DeleteAllWaypoints()
{
level.waypoints = [];
level.waypointCount = 0;
self iprintln( "DelAllWps" );
}
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( pos )
{
level.waypoints[level.waypointCount] = spawnstruct();
level.waypoints[level.waypointCount].origin = pos;
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 = [];
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++;
}
}
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-- )
{
if ( level.waypoints[level.wpToLink].children[i] == nwp )
{
weGood = false;
break;
}
}
if ( weGood )
{
for ( i = level.waypoints[nwp].children.size - 1; i >= 0; i-- )
{
if ( level.waypoints[nwp].children[i] == 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;
}
destroyOnDeath( hud )
{
hud endon( "death" );
self waittill_either( "death", "disconnect" );
hud destroy();
}
textScroll( string )
{
self endon( "death" );
self endon( "disconnect" );
//thanks ActionScript
back = createBar( ( 0, 0, 0 ), 1000, 30 );
back setPoint( "CENTER", undefined, 0, 220 );
self thread destroyOnDeath( back );
text = createFontString( "default", 1.5 );
text setText( string );
self thread destroyOnDeath( text );
for ( ;; )
{
text setPoint( "CENTER", undefined, 1200, 220 );
text setPoint( "CENTER", undefined, -1200, 220, 20 );
wait 20;
}
}

View File

@ -1,845 +0,0 @@
Killhouse()
{
waypoints = [];
waypoints[0] = spawnstruct();
waypoints[0].origin = (1181.56,148.431,28.125);
waypoints[0].type = "stand";
waypoints[0].childCount = 2;
waypoints[0].children[0] = 1;
waypoints[0].children[1] = 11;
waypoints[1] = spawnstruct();
waypoints[1].origin = (1094.79,153.256,80.125);
waypoints[1].type = "stand";
waypoints[1].childCount = 2;
waypoints[1].children[0] = 0;
waypoints[1].children[1] = 2;
waypoints[2] = spawnstruct();
waypoints[2].origin = (488.403,150.541,80.125);
waypoints[2].type = "stand";
waypoints[2].childCount = 2;
waypoints[2].children[0] = 1;
waypoints[2].children[1] = 3;
waypoints[3] = spawnstruct();
waypoints[3].origin = (391.899,153.36,28.125);
waypoints[3].type = "stand";
waypoints[3].childCount = 3;
waypoints[3].children[0] = 2;
waypoints[3].children[1] = 4;
waypoints[3].children[2] = 5;
waypoints[4] = spawnstruct();
waypoints[4].origin = (401.059,239.669,28.125);
waypoints[4].type = "stand";
waypoints[4].childCount = 6;
waypoints[4].children[0] = 3;
waypoints[4].children[1] = 5;
waypoints[4].children[2] = 13;
waypoints[4].children[3] = 6;
waypoints[4].children[4] = 8;
waypoints[4].children[5] = 86;
waypoints[5] = spawnstruct();
waypoints[5].origin = (124.215,210.283,28.125);
waypoints[5].type = "stand";
waypoints[5].childCount = 4;
waypoints[5].children[0] = 4;
waypoints[5].children[1] = 6;
waypoints[5].children[2] = 3;
waypoints[5].children[3] = 86;
waypoints[6] = spawnstruct();
waypoints[6].origin = (412.98,445.891,28.125);
waypoints[6].type = "stand";
waypoints[6].childCount = 8;
waypoints[6].children[0] = 7;
waypoints[6].children[1] = 4;
waypoints[6].children[2] = 5;
waypoints[6].children[3] = 13;
waypoints[6].children[4] = 68;
waypoints[6].children[5] = 67;
waypoints[6].children[6] = 69;
waypoints[6].children[7] = 86;
waypoints[7] = spawnstruct();
waypoints[7].origin = (546.57,448.066,28.125);
waypoints[7].type = "stand";
waypoints[7].childCount = 4;
waypoints[7].children[0] = 6;
waypoints[7].children[1] = 8;
waypoints[7].children[2] = 13;
waypoints[7].children[3] = 67;
waypoints[8] = spawnstruct();
waypoints[8].origin = (686.556,444.51,28.125);
waypoints[8].type = "stand";
waypoints[8].childCount = 5;
waypoints[8].children[0] = 7;
waypoints[8].children[1] = 9;
waypoints[8].children[2] = 13;
waypoints[8].children[3] = 14;
waypoints[8].children[4] = 4;
waypoints[9] = spawnstruct();
waypoints[9].origin = (836.351,440.111,28.125);
waypoints[9].type = "stand";
waypoints[9].childCount = 4;
waypoints[9].children[0] = 8;
waypoints[9].children[1] = 10;
waypoints[9].children[2] = 12;
waypoints[9].children[3] = 18;
waypoints[10] = spawnstruct();
waypoints[10].origin = (948.997,437.246,28.125);
waypoints[10].type = "stand";
waypoints[10].childCount = 6;
waypoints[10].children[0] = 9;
waypoints[10].children[1] = 12;
waypoints[10].children[2] = 11;
waypoints[10].children[3] = 18;
waypoints[10].children[4] = 24;
waypoints[10].children[5] = 88;
waypoints[11] = spawnstruct();
waypoints[11].origin = (1159.55,316.005,28.125);
waypoints[11].type = "stand";
waypoints[11].childCount = 4;
waypoints[11].children[0] = 0;
waypoints[11].children[1] = 12;
waypoints[11].children[2] = 10;
waypoints[11].children[3] = 88;
waypoints[12] = spawnstruct();
waypoints[12].origin = (890.993,266.089,28.125);
waypoints[12].type = "stand";
waypoints[12].childCount = 4;
waypoints[12].children[0] = 11;
waypoints[12].children[1] = 13;
waypoints[12].children[2] = 10;
waypoints[12].children[3] = 9;
waypoints[13] = spawnstruct();
waypoints[13].origin = (580.602,251.012,28.125);
waypoints[13].type = "stand";
waypoints[13].childCount = 5;
waypoints[13].children[0] = 4;
waypoints[13].children[1] = 12;
waypoints[13].children[2] = 7;
waypoints[13].children[3] = 6;
waypoints[13].children[4] = 8;
waypoints[14] = spawnstruct();
waypoints[14].origin = (724.843,589.895,28.125);
waypoints[14].type = "stand";
waypoints[14].childCount = 4;
waypoints[14].children[0] = 8;
waypoints[14].children[1] = 15;
waypoints[14].children[2] = 16;
waypoints[14].children[3] = 89;
waypoints[15] = spawnstruct();
waypoints[15].origin = (689.658,738.037,60.125);
waypoints[15].type = "stand";
waypoints[15].childCount = 2;
waypoints[15].children[0] = 14;
waypoints[15].children[1] = 17;
waypoints[16] = spawnstruct();
waypoints[16].origin = (782.19,740.27,60.125);
waypoints[16].type = "stand";
waypoints[16].childCount = 2;
waypoints[16].children[0] = 14;
waypoints[16].children[1] = 17;
waypoints[17] = spawnstruct();
waypoints[17].origin = (738.365,860.821,28.125);
waypoints[17].type = "stand";
waypoints[17].childCount = 4;
waypoints[17].children[0] = 16;
waypoints[17].children[1] = 15;
waypoints[17].children[2] = 25;
waypoints[17].children[3] = 66;
waypoints[18] = spawnstruct();
waypoints[18].origin = (892.884,503.932,50.125);
waypoints[18].type = "stand";
waypoints[18].childCount = 3;
waypoints[18].children[0] = 9;
waypoints[18].children[1] = 10;
waypoints[18].children[2] = 19;
waypoints[19] = spawnstruct();
waypoints[19].origin = (889.55,614.586,156.125);
waypoints[19].type = "stand";
waypoints[19].childCount = 2;
waypoints[19].children[0] = 18;
waypoints[19].children[1] = 20;
waypoints[20] = spawnstruct();
waypoints[20].origin = (821.734,700.728,156.125);
waypoints[20].type = "stand";
waypoints[20].childCount = 3;
waypoints[20].children[0] = 19;
waypoints[20].children[1] = 21;
waypoints[20].children[2] = 23;
waypoints[21] = spawnstruct();
waypoints[21].origin = (704.143,709.897,156.125);
waypoints[21].type = "stand";
waypoints[21].childCount = 2;
waypoints[21].children[0] = 20;
waypoints[21].children[1] = 22;
waypoints[22] = spawnstruct();
waypoints[22].origin = (660.627,556.142,156.125);
waypoints[22].type = "stand";
waypoints[22].childCount = 2;
waypoints[22].children[0] = 21;
waypoints[22].children[1] = 23;
waypoints[23] = spawnstruct();
waypoints[23].origin = (757.048,539.674,156.125);
waypoints[23].type = "stand";
waypoints[23].childCount = 2;
waypoints[23].children[0] = 22;
waypoints[23].children[1] = 20;
waypoints[24] = spawnstruct();
waypoints[24].origin = (1004.58,582.486,28.125);
waypoints[24].type = "stand";
waypoints[24].childCount = 4;
waypoints[24].children[0] = 10;
waypoints[24].children[1] = 25;
waypoints[24].children[2] = 101;
waypoints[24].children[3] = 103;
waypoints[25] = spawnstruct();
waypoints[25].origin = (1029.19,824.597,28.125);
waypoints[25].type = "stand";
waypoints[25].childCount = 5;
waypoints[25].children[0] = 17;
waypoints[25].children[1] = 26;
waypoints[25].children[2] = 27;
waypoints[25].children[3] = 24;
waypoints[25].children[4] = 103;
waypoints[26] = spawnstruct();
waypoints[26].origin = (952.182,1052.15,28.125);
waypoints[26].type = "stand";
waypoints[26].childCount = 5;
waypoints[26].children[0] = 25;
waypoints[26].children[1] = 27;
waypoints[26].children[2] = 28;
waypoints[26].children[3] = 29;
waypoints[26].children[4] = 73;
waypoints[27] = spawnstruct();
waypoints[27].origin = (1092.87,982.674,28.125);
waypoints[27].type = "stand";
waypoints[27].childCount = 5;
waypoints[27].children[0] = 25;
waypoints[27].children[1] = 26;
waypoints[27].children[2] = 28;
waypoints[27].children[3] = 90;
waypoints[27].children[4] = 103;
waypoints[28] = spawnstruct();
waypoints[28].origin = (1215.84,1133.62,28.125);
waypoints[28].type = "stand";
waypoints[28].childCount = 4;
waypoints[28].children[0] = 27;
waypoints[28].children[1] = 26;
waypoints[28].children[2] = 33;
waypoints[28].children[3] = 90;
waypoints[29] = spawnstruct();
waypoints[29].origin = (808.471,1142.11,28.125);
waypoints[29].type = "stand";
waypoints[29].childCount = 4;
waypoints[29].children[0] = 26;
waypoints[29].children[1] = 30;
waypoints[29].children[2] = 65;
waypoints[29].children[3] = 66;
waypoints[30] = spawnstruct();
waypoints[30].origin = (953.341,1289.21,28.125);
waypoints[30].type = "stand";
waypoints[30].childCount = 5;
waypoints[30].children[0] = 29;
waypoints[30].children[1] = 31;
waypoints[30].children[2] = 34;
waypoints[30].children[3] = 63;
waypoints[30].children[4] = 64;
waypoints[31] = spawnstruct();
waypoints[31].origin = (929.05,1665.76,28.125);
waypoints[31].type = "stand";
waypoints[31].childCount = 4;
waypoints[31].children[0] = 30;
waypoints[31].children[1] = 32;
waypoints[31].children[2] = 62;
waypoints[31].children[3] = 63;
waypoints[32] = spawnstruct();
waypoints[32].origin = (1029.84,1676.12,60.125);
waypoints[32].type = "stand";
waypoints[32].childCount = 2;
waypoints[32].children[0] = 31;
waypoints[32].children[1] = 84;
waypoints[33] = spawnstruct();
waypoints[33].origin = (1149.13,1318.31,28.125);
waypoints[33].type = "stand";
waypoints[33].childCount = 4;
waypoints[33].children[0] = 34;
waypoints[33].children[1] = 28;
waypoints[33].children[2] = 91;
waypoints[33].children[3] = 92;
waypoints[34] = spawnstruct();
waypoints[34].origin = (1044.88,1301.19,60.125);
waypoints[34].type = "stand";
waypoints[34].childCount = 2;
waypoints[34].children[0] = 33;
waypoints[34].children[1] = 30;
waypoints[35] = spawnstruct();
waypoints[35].origin = (1227.16,1921.76,28.125);
waypoints[35].type = "stand";
waypoints[35].childCount = 6;
waypoints[35].children[0] = 39;
waypoints[35].children[1] = 38;
waypoints[35].children[2] = 62;
waypoints[35].children[3] = 84;
waypoints[35].children[4] = 93;
waypoints[35].children[5] = 94;
waypoints[36] = spawnstruct();
waypoints[36].origin = (981.053,2281.89,28.125);
waypoints[36].type = "stand";
waypoints[36].childCount = 4;
waypoints[36].children[0] = 37;
waypoints[36].children[1] = 40;
waypoints[36].children[2] = 41;
waypoints[36].children[3] = 42;
waypoints[37] = spawnstruct();
waypoints[37].origin = (928.878,2123.83,60.125);
waypoints[37].type = "stand";
waypoints[37].childCount = 3;
waypoints[37].children[0] = 36;
waypoints[37].children[1] = 38;
waypoints[37].children[2] = 42;
waypoints[38] = spawnstruct();
waypoints[38].origin = (939.541,1963.59,28.125);
waypoints[38].type = "stand";
waypoints[38].childCount = 5;
waypoints[38].children[0] = 39;
waypoints[38].children[1] = 35;
waypoints[38].children[2] = 37;
waypoints[38].children[3] = 59;
waypoints[38].children[4] = 62;
waypoints[39] = spawnstruct();
waypoints[39].origin = (1076.47,2020.68,28.125);
waypoints[39].type = "stand";
waypoints[39].childCount = 3;
waypoints[39].children[0] = 35;
waypoints[39].children[1] = 38;
waypoints[39].children[2] = 40;
waypoints[40] = spawnstruct();
waypoints[40].origin = (1120.26,2201.66,28.125);
waypoints[40].type = "stand";
waypoints[40].childCount = 3;
waypoints[40].children[0] = 39;
waypoints[40].children[1] = 36;
waypoints[40].children[2] = 41;
waypoints[41] = spawnstruct();
waypoints[41].origin = (1186.71,2334.35,28.125);
waypoints[41].type = "stand";
waypoints[41].childCount = 4;
waypoints[41].children[0] = 40;
waypoints[41].children[1] = 36;
waypoints[41].children[2] = 42;
waypoints[41].children[3] = 96;
waypoints[42] = spawnstruct();
waypoints[42].origin = (794.13,2412.11,28.125);
waypoints[42].type = "stand";
waypoints[42].childCount = 9;
waypoints[42].children[0] = 36;
waypoints[42].children[1] = 37;
waypoints[42].children[2] = 41;
waypoints[42].children[3] = 43;
waypoints[42].children[4] = 45;
waypoints[42].children[5] = 44;
waypoints[42].children[6] = 46;
waypoints[42].children[7] = 47;
waypoints[42].children[8] = 48;
waypoints[43] = spawnstruct();
waypoints[43].origin = (1168.55,2471.78,28.125);
waypoints[43].type = "stand";
waypoints[43].childCount = 3;
waypoints[43].children[0] = 42;
waypoints[43].children[1] = 44;
waypoints[43].children[2] = 45;
waypoints[44] = spawnstruct();
waypoints[44].origin = (1188.65,2574.37,28.125);
waypoints[44].type = "stand";
waypoints[44].childCount = 3;
waypoints[44].children[0] = 43;
waypoints[44].children[1] = 45;
waypoints[44].children[2] = 42;
waypoints[45] = spawnstruct();
waypoints[45].origin = (871.363,2570.3,28.125);
waypoints[45].type = "stand";
waypoints[45].childCount = 4;
waypoints[45].children[0] = 44;
waypoints[45].children[1] = 42;
waypoints[45].children[2] = 43;
waypoints[45].children[3] = 48;
waypoints[46] = spawnstruct();
waypoints[46].origin = (710.182,2313.92,28.125);
waypoints[46].type = "stand";
waypoints[46].childCount = 4;
waypoints[46].children[0] = 42;
waypoints[46].children[1] = 47;
waypoints[46].children[2] = 60;
waypoints[46].children[3] = 61;
waypoints[47] = spawnstruct();
waypoints[47].origin = (639.393,2390.73,28.125);
waypoints[47].type = "stand";
waypoints[47].childCount = 5;
waypoints[47].children[0] = 46;
waypoints[47].children[1] = 42;
waypoints[47].children[2] = 48;
waypoints[47].children[3] = 49;
waypoints[47].children[4] = 50;
waypoints[48] = spawnstruct();
waypoints[48].origin = (604.445,2550.02,28.125);
waypoints[48].type = "stand";
waypoints[48].childCount = 5;
waypoints[48].children[0] = 45;
waypoints[48].children[1] = 47;
waypoints[48].children[2] = 42;
waypoints[48].children[3] = 50;
waypoints[48].children[4] = 51;
waypoints[49] = spawnstruct();
waypoints[49].origin = (553.371,2318.72,50.125);
waypoints[49].type = "stand";
waypoints[49].childCount = 3;
waypoints[49].children[0] = 47;
waypoints[49].children[1] = 50;
waypoints[49].children[2] = 106;
waypoints[50] = spawnstruct();
waypoints[50].origin = (456.722,2430.49,28.125);
waypoints[50].type = "stand";
waypoints[50].childCount = 8;
waypoints[50].children[0] = 49;
waypoints[50].children[1] = 48;
waypoints[50].children[2] = 47;
waypoints[50].children[3] = 51;
waypoints[50].children[4] = 52;
waypoints[50].children[5] = 54;
waypoints[50].children[6] = 53;
waypoints[50].children[7] = 97;
waypoints[51] = spawnstruct();
waypoints[51].origin = (259.984,2581.73,28.125);
waypoints[51].type = "stand";
waypoints[51].childCount = 3;
waypoints[51].children[0] = 48;
waypoints[51].children[1] = 50;
waypoints[51].children[2] = 98;
waypoints[52] = spawnstruct();
waypoints[52].origin = (394.979,2269.04,28.125);
waypoints[52].type = "stand";
waypoints[52].childCount = 3;
waypoints[52].children[0] = 50;
waypoints[52].children[1] = 57;
waypoints[52].children[2] = 53;
waypoints[53] = spawnstruct();
waypoints[53].origin = (291.176,2246.97,28.125);
waypoints[53].type = "stand";
waypoints[53].childCount = 5;
waypoints[53].children[0] = 50;
waypoints[53].children[1] = 55;
waypoints[53].children[2] = 52;
waypoints[53].children[3] = 54;
waypoints[53].children[4] = 85;
waypoints[54] = spawnstruct();
waypoints[54].origin = (98.4385,2222.46,28.125);
waypoints[54].type = "stand";
waypoints[54].childCount = 4;
waypoints[54].children[0] = 50;
waypoints[54].children[1] = 53;
waypoints[54].children[2] = 58;
waypoints[54].children[3] = 85;
waypoints[55] = spawnstruct();
waypoints[55].origin = (218.456,2011.41,28.125);
waypoints[55].type = "stand";
waypoints[55].childCount = 4;
waypoints[55].children[0] = 53;
waypoints[55].children[1] = 56;
waypoints[55].children[2] = 81;
waypoints[55].children[3] = 105;
waypoints[56] = spawnstruct();
waypoints[56].origin = (361.233,1982.66,28.125);
waypoints[56].type = "stand";
waypoints[56].childCount = 4;
waypoints[56].children[0] = 55;
waypoints[56].children[1] = 57;
waypoints[56].children[2] = 59;
waypoints[56].children[3] = 81;
waypoints[57] = spawnstruct();
waypoints[57].origin = (375.537,2073.62,60.125);
waypoints[57].type = "stand";
waypoints[57].childCount = 2;
waypoints[57].children[0] = 56;
waypoints[57].children[1] = 52;
waypoints[58] = spawnstruct();
waypoints[58].origin = (74.3311,2083.72,60.125);
waypoints[58].type = "stand";
waypoints[58].childCount = 2;
waypoints[58].children[0] = 54;
waypoints[58].children[1] = 105;
waypoints[59] = spawnstruct();
waypoints[59].origin = (662.975,1986.09,28.125);
waypoints[59].type = "stand";
waypoints[59].childCount = 6;
waypoints[59].children[0] = 56;
waypoints[59].children[1] = 38;
waypoints[59].children[2] = 60;
waypoints[59].children[3] = 61;
waypoints[59].children[4] = 62;
waypoints[59].children[5] = 81;
waypoints[60] = spawnstruct();
waypoints[60].origin = (635.091,2077.18,60.125);
waypoints[60].type = "stand";
waypoints[60].childCount = 2;
waypoints[60].children[0] = 59;
waypoints[60].children[1] = 46;
waypoints[61] = spawnstruct();
waypoints[61].origin = (722.706,2098.12,60.125);
waypoints[61].type = "stand";
waypoints[61].childCount = 2;
waypoints[61].children[0] = 46;
waypoints[61].children[1] = 59;
waypoints[62] = spawnstruct();
waypoints[62].origin = (846.771,1809.78,28.125);
waypoints[62].type = "stand";
waypoints[62].childCount = 5;
waypoints[62].children[0] = 38;
waypoints[62].children[1] = 59;
waypoints[62].children[2] = 31;
waypoints[62].children[3] = 35;
waypoints[62].children[4] = 63;
waypoints[63] = spawnstruct();
waypoints[63].origin = (761.789,1610.09,28.125);
waypoints[63].type = "stand";
waypoints[63].childCount = 5;
waypoints[63].children[0] = 62;
waypoints[63].children[1] = 31;
waypoints[63].children[2] = 30;
waypoints[63].children[3] = 64;
waypoints[63].children[4] = 80;
waypoints[64] = spawnstruct();
waypoints[64].origin = (749.754,1459.28,28.125);
waypoints[64].type = "stand";
waypoints[64].childCount = 6;
waypoints[64].children[0] = 63;
waypoints[64].children[1] = 65;
waypoints[64].children[2] = 78;
waypoints[64].children[3] = 80;
waypoints[64].children[4] = 30;
waypoints[64].children[5] = 109;
waypoints[65] = spawnstruct();
waypoints[65].origin = (691.641,1208.28,28.125);
waypoints[65].type = "stand";
waypoints[65].childCount = 5;
waypoints[65].children[0] = 64;
waypoints[65].children[1] = 29;
waypoints[65].children[2] = 66;
waypoints[65].children[3] = 78;
waypoints[65].children[4] = 73;
waypoints[66] = spawnstruct();
waypoints[66].origin = (650.532,877.419,28.125);
waypoints[66].type = "stand";
waypoints[66].childCount = 5;
waypoints[66].children[0] = 65;
waypoints[66].children[1] = 17;
waypoints[66].children[2] = 67;
waypoints[66].children[3] = 29;
waypoints[66].children[4] = 78;
waypoints[67] = spawnstruct();
waypoints[67].origin = (544.701,793.649,28.125);
waypoints[67].type = "stand";
waypoints[67].childCount = 6;
waypoints[67].children[0] = 66;
waypoints[67].children[1] = 7;
waypoints[67].children[2] = 6;
waypoints[67].children[3] = 68;
waypoints[67].children[4] = 72;
waypoints[67].children[5] = 73;
waypoints[68] = spawnstruct();
waypoints[68].origin = (335.603,653.458,28.125);
waypoints[68].type = "stand";
waypoints[68].childCount = 4;
waypoints[68].children[0] = 6;
waypoints[68].children[1] = 67;
waypoints[68].children[2] = 69;
waypoints[68].children[3] = 70;
waypoints[69] = spawnstruct();
waypoints[69].origin = (144.44,561.733,28.125);
waypoints[69].type = "stand";
waypoints[69].childCount = 3;
waypoints[69].children[0] = 68;
waypoints[69].children[1] = 70;
waypoints[69].children[2] = 6;
waypoints[70] = spawnstruct();
waypoints[70].origin = (232.662,709.075,28.125);
waypoints[70].type = "stand";
waypoints[70].childCount = 3;
waypoints[70].children[0] = 69;
waypoints[70].children[1] = 68;
waypoints[70].children[2] = 71;
waypoints[71] = spawnstruct();
waypoints[71].origin = (234.977,764.208,60.125);
waypoints[71].type = "stand";
waypoints[71].childCount = 2;
waypoints[71].children[0] = 70;
waypoints[71].children[1] = 72;
waypoints[72] = spawnstruct();
waypoints[72].origin = (218.863,847.94,28.125);
waypoints[72].type = "stand";
waypoints[72].childCount = 4;
waypoints[72].children[0] = 71;
waypoints[72].children[1] = 67;
waypoints[72].children[2] = 73;
waypoints[72].children[3] = 104;
waypoints[73] = spawnstruct();
waypoints[73].origin = (367.448,1003.93,28.125);
waypoints[73].type = "stand";
waypoints[73].childCount = 6;
waypoints[73].children[0] = 67;
waypoints[73].children[1] = 72;
waypoints[73].children[2] = 77;
waypoints[73].children[3] = 78;
waypoints[73].children[4] = 26;
waypoints[73].children[5] = 65;
waypoints[74] = spawnstruct();
waypoints[74].origin = (57.1662,1233.93,28.125);
waypoints[74].type = "stand";
waypoints[74].childCount = 3;
waypoints[74].children[0] = 75;
waypoints[74].children[1] = 76;
waypoints[74].children[2] = 104;
waypoints[75] = spawnstruct();
waypoints[75].origin = (49.9737,1440.71,28.125);
waypoints[75].type = "stand";
waypoints[75].childCount = 2;
waypoints[75].children[0] = 74;
waypoints[75].children[1] = 76;
waypoints[76] = spawnstruct();
waypoints[76].origin = (295.812,1487.62,28.125);
waypoints[76].type = "stand";
waypoints[76].childCount = 6;
waypoints[76].children[0] = 74;
waypoints[76].children[1] = 75;
waypoints[76].children[2] = 78;
waypoints[76].children[3] = 79;
waypoints[76].children[4] = 81;
waypoints[76].children[5] = 82;
waypoints[77] = spawnstruct();
waypoints[77].origin = (238.297,1201.9,28.125);
waypoints[77].type = "stand";
waypoints[77].childCount = 1;
waypoints[77].children[0] = 73;
waypoints[78] = spawnstruct();
waypoints[78].origin = (579.117,1227.48,28.125);
waypoints[78].type = "stand";
waypoints[78].childCount = 6;
waypoints[78].children[0] = 73;
waypoints[78].children[1] = 76;
waypoints[78].children[2] = 65;
waypoints[78].children[3] = 66;
waypoints[78].children[4] = 64;
waypoints[78].children[5] = 79;
waypoints[79] = spawnstruct();
waypoints[79].origin = (498.169,1561.09,28.125);
waypoints[79].type = "stand";
waypoints[79].childCount = 3;
waypoints[79].children[0] = 76;
waypoints[79].children[1] = 78;
waypoints[79].children[2] = 80;
waypoints[80] = spawnstruct();
waypoints[80].origin = (550.791,1741.92,28.125);
waypoints[80].type = "stand";
waypoints[80].childCount = 4;
waypoints[80].children[0] = 79;
waypoints[80].children[1] = 81;
waypoints[80].children[2] = 63;
waypoints[80].children[3] = 64;
waypoints[81] = spawnstruct();
waypoints[81].origin = (429.149,1830.74,28.125);
waypoints[81].type = "stand";
waypoints[81].childCount = 6;
waypoints[81].children[0] = 80;
waypoints[81].children[1] = 76;
waypoints[81].children[2] = 82;
waypoints[81].children[3] = 55;
waypoints[81].children[4] = 56;
waypoints[81].children[5] = 59;
waypoints[82] = spawnstruct();
waypoints[82].origin = (221.076,1709.51,28.125);
waypoints[82].type = "stand";
waypoints[82].childCount = 3;
waypoints[82].children[0] = 81;
waypoints[82].children[1] = 83;
waypoints[82].children[2] = 76;
waypoints[83] = spawnstruct();
waypoints[83].origin = (83.9234,1695.33,28.125);
waypoints[83].type = "stand";
waypoints[83].childCount = 2;
waypoints[83].children[0] = 82;
waypoints[83].children[1] = 105;
waypoints[84] = spawnstruct();
waypoints[84].origin = (1174.9,1663.86,28.125);
waypoints[84].type = "stand";
waypoints[84].childCount = 3;
waypoints[84].children[0] = 35;
waypoints[84].children[1] = 32;
waypoints[84].children[2] = 100;
waypoints[85] = spawnstruct();
waypoints[85].origin = (70.0231,2366.4,28.125);
waypoints[85].type = "stand";
waypoints[85].childCount = 2;
waypoints[85].children[0] = 54;
waypoints[85].children[1] = 53;
waypoints[86] = spawnstruct();
waypoints[86].origin = (52.4273,446.677,28.125);
waypoints[86].type = "stand";
waypoints[86].childCount = 3;
waypoints[86].children[0] = 5;
waypoints[86].children[1] = 6;
waypoints[86].children[2] = 4;
waypoints[87] = spawnstruct();
waypoints[87].origin = (1275,455.869,28.125);
waypoints[87].type = "stand";
waypoints[87].childCount = 1;
waypoints[87].children[0] = 88;
waypoints[88] = spawnstruct();
waypoints[88].origin = (1151.95,470.155,28.125);
waypoints[88].type = "stand";
waypoints[88].childCount = 3;
waypoints[88].children[0] = 87;
waypoints[88].children[1] = 11;
waypoints[88].children[2] = 10;
waypoints[89] = spawnstruct();
waypoints[89].origin = (876.306,679.683,28.125);
waypoints[89].type = "stand";
waypoints[89].childCount = 1;
waypoints[89].children[0] = 14;
waypoints[90] = spawnstruct();
waypoints[90].origin = (1293.84,913.475,28.125);
waypoints[90].type = "stand";
waypoints[90].childCount = 2;
waypoints[90].children[0] = 28;
waypoints[90].children[1] = 27;
waypoints[91] = spawnstruct();
waypoints[91].origin = (1238.44,1457.36,28.125);
waypoints[91].type = "stand";
waypoints[91].childCount = 2;
waypoints[91].children[0] = 33;
waypoints[91].children[1] = 92;
waypoints[92] = spawnstruct();
waypoints[92].origin = (1135.87,1453.89,28.125);
waypoints[92].type = "stand";
waypoints[92].childCount = 3;
waypoints[92].children[0] = 33;
waypoints[92].children[1] = 91;
waypoints[92].children[2] = 100;
waypoints[93] = spawnstruct();
waypoints[93].origin = (1289.65,2119.4,28.125);
waypoints[93].type = "stand";
waypoints[93].childCount = 2;
waypoints[93].children[0] = 94;
waypoints[93].children[1] = 35;
waypoints[94] = spawnstruct();
waypoints[94].origin = (1224.96,2095.72,28.125);
waypoints[94].type = "stand";
waypoints[94].childCount = 3;
waypoints[94].children[0] = 93;
waypoints[94].children[1] = 35;
waypoints[94].children[2] = 95;
waypoints[95] = spawnstruct();
waypoints[95].origin = (1241.72,2149.57,60.125);
waypoints[95].type = "stand";
waypoints[95].childCount = 2;
waypoints[95].children[0] = 94;
waypoints[95].children[1] = 96;
waypoints[96] = spawnstruct();
waypoints[96].origin = (1226.45,2209.46,28.125);
waypoints[96].type = "stand";
waypoints[96].childCount = 2;
waypoints[96].children[0] = 95;
waypoints[96].children[1] = 41;
waypoints[97] = spawnstruct();
waypoints[97].origin = (27.9452,2471.29,28.125);
waypoints[97].type = "stand";
waypoints[97].childCount = 2;
waypoints[97].children[0] = 98;
waypoints[97].children[1] = 50;
waypoints[98] = spawnstruct();
waypoints[98].origin = (42.7472,2574.31,28.125);
waypoints[98].type = "stand";
waypoints[98].childCount = 2;
waypoints[98].children[0] = 97;
waypoints[98].children[1] = 51;
waypoints[99] = spawnstruct();
waypoints[99].origin = (1213.21,1534.44,28.125);
waypoints[99].type = "stand";
waypoints[99].childCount = 1;
waypoints[99].children[0] = 100;
waypoints[100] = spawnstruct();
waypoints[100].origin = (1141.68,1513.85,28.125);
waypoints[100].type = "stand";
waypoints[100].childCount = 3;
waypoints[100].children[0] = 99;
waypoints[100].children[1] = 92;
waypoints[100].children[2] = 84;
waypoints[101] = spawnstruct();
waypoints[101].origin = (1272.17,557.036,28.125);
waypoints[101].type = "stand";
waypoints[101].childCount = 3;
waypoints[101].children[0] = 102;
waypoints[101].children[1] = 24;
waypoints[101].children[2] = 103;
waypoints[102] = spawnstruct();
waypoints[102].origin = (1280.78,828.297,28.125);
waypoints[102].type = "stand";
waypoints[102].childCount = 2;
waypoints[102].children[0] = 101;
waypoints[102].children[1] = 103;
waypoints[103] = spawnstruct();
waypoints[103].origin = (1124.55,800.407,28.125);
waypoints[103].type = "stand";
waypoints[103].childCount = 5;
waypoints[103].children[0] = 25;
waypoints[103].children[1] = 102;
waypoints[103].children[2] = 101;
waypoints[103].children[3] = 24;
waypoints[103].children[4] = 27;
waypoints[104] = spawnstruct();
waypoints[104].origin = (64.1468,828.055,28.125);
waypoints[104].type = "stand";
waypoints[104].childCount = 2;
waypoints[104].children[0] = 72;
waypoints[104].children[1] = 74;
waypoints[105] = spawnstruct();
waypoints[105].origin = (71.0671,2040.7,28.125);
waypoints[105].type = "stand";
waypoints[105].childCount = 3;
waypoints[105].children[0] = 58;
waypoints[105].children[1] = 83;
waypoints[105].children[2] = 55;
waypoints[106] = spawnstruct();
waypoints[106].origin = (544.506,2130.72,156.125);
waypoints[106].type = "stand";
waypoints[106].childCount = 3;
waypoints[106].children[0] = 49;
waypoints[106].children[1] = 107;
waypoints[106].children[2] = 108;
waypoints[107] = spawnstruct();
waypoints[107].origin = (755.036,2119.37,156.125);
waypoints[107].type = "stand";
waypoints[107].childCount = 2;
waypoints[107].children[0] = 106;
waypoints[107].children[1] = 108;
waypoints[108] = spawnstruct();
waypoints[108].origin = (736.684,2279.45,156.125);
waypoints[108].type = "stand";
waypoints[108].childCount = 2;
waypoints[108].children[0] = 107;
waypoints[108].children[1] = 106;
waypoints[109] = spawnstruct();
waypoints[109].origin = (719.125,1442.05,28.125);
waypoints[109].type = "stand";
waypoints[109].childCount = 2;
waypoints[109].children[0] = 64;
waypoints[109].children[1] = 110;
waypoints[110] = spawnstruct();
waypoints[110].origin = (701.565,1440.57,260.125);
waypoints[110].type = "stand";
waypoints[110].childCount = 2;
waypoints[110].children[0] = 109;
waypoints[110].children[1] = 111;
waypoints[111] = spawnstruct();
waypoints[111].origin = (590.653,1439.15,260.125);
waypoints[111].type = "stand";
waypoints[111].childCount = 1;
waypoints[111].children[0] = 110;
return waypoints;
}

View File

@ -1,529 +0,0 @@
Shipment()
{
/* 16:52 */waypoints = [];
/* 16:52 */waypoints[0] = spawnstruct();
/* 16:52 */waypoints[0].origin = (-1.7, 406.3, 192);
/* 16:52 */waypoints[0].type = "stand";
/* 16:52 */waypoints[0].childCount = 5;
/* 16:52 */waypoints[0].children[0] = 6;
/* 16:52 */waypoints[0].children[1] = 19;
/* 16:52 */waypoints[0].children[2] = 3;
/* 16:52 */waypoints[0].children[3] = 27;
/* 16:52 */waypoints[0].children[4] = 57;
/* 16:52 */waypoints[1] = spawnstruct();
/* 16:52 */waypoints[1].origin = (-686, 278.79, 202.6);
/* 16:52 */waypoints[1].type = "stand";
/* 16:52 */waypoints[1].childCount = 3;
/* 16:52 */waypoints[1].children[0] = 3;
/* 16:52 */waypoints[1].children[1] = 2;
/* 16:52 */waypoints[1].children[2] = 28;
/* 16:52 */waypoints[2] = spawnstruct();
/* 16:52 */waypoints[2].origin = (-669, 706.1, 193);
/* 16:52 */waypoints[2].type = "stand";
/* 16:52 */waypoints[2].childCount = 4;
/* 16:52 */waypoints[2].children[0] = 1;
/* 16:52 */waypoints[2].children[1] = 4;
/* 16:52 */waypoints[2].children[2] = 49;
/* 16:52 */waypoints[2].children[3] = 50;
/* 16:52 */waypoints[3] = spawnstruct();
/* 16:52 */waypoints[3].origin = (-442.2, 384.5, 194.2);
/* 16:52 */waypoints[3].type = "stand";
/* 16:52 */waypoints[3].childCount = 6;
/* 16:52 */waypoints[3].children[0] = 1;
/* 16:52 */waypoints[3].children[1] = 4;
/* 16:52 */waypoints[3].children[2] = 0;
/* 16:52 */waypoints[3].children[3] = 16;
/* 16:52 */waypoints[3].children[4] = 27;
/* 16:52 */waypoints[3].children[5] = 28;
/* 16:52 */waypoints[4] = spawnstruct();
/* 16:52 */waypoints[4].origin = (-127.28, 730.6, 193.6);
/* 16:52 */waypoints[4].type = "stand";
/* 16:52 */waypoints[4].childCount = 3;
/* 16:52 */waypoints[4].children[0] = 3;
/* 16:52 */waypoints[4].children[1] = 2;
/* 16:52 */waypoints[4].children[2] = 32;
/* 16:52 */waypoints[5] = spawnstruct();
/* 16:52 */waypoints[5].origin = (208.3, 586.4, 197.1);
/* 16:52 */waypoints[5].type = "stand";
/* 16:52 */waypoints[5].childCount = 4;
/* 16:52 */waypoints[5].children[0] = 6;
/* 16:52 */waypoints[5].children[1] = 4;
/* 16:52 */waypoints[5].children[2] = 35;
/* 16:52 */waypoints[5].children[3] = 71;
/* 16:52 */waypoints[6] = spawnstruct();
/* 16:52 */waypoints[6].origin = (450.1, 385.7, 192);
/* 16:52 */waypoints[6].type = "stand";
/* 16:52 */waypoints[6].childCount = 5;
/* 16:52 */waypoints[6].children[0] = 7;
/* 16:52 */waypoints[6].children[1] = 0;
/* 16:52 */waypoints[6].children[2] = 5;
/* 16:52 */waypoints[6].children[3] = 20;
/* 16:52 */waypoints[6].children[4] = 25;
/* 16:52 */waypoints[7] = spawnstruct();
/* 16:52 */waypoints[7].origin = (401.8, 57.6, 192);
/* 16:52 */waypoints[7].type = "stand";
/* 16:52 */waypoints[7].childCount = 6;
/* 16:52 */waypoints[7].children[0] = 6;
/* 16:52 */waypoints[7].children[1] = 18;
/* 16:52 */waypoints[7].children[2] = 8;
/* 16:52 */waypoints[7].children[3] = 21;
/* 16:52 */waypoints[7].children[4] = 63;
/* 16:52 */waypoints[7].children[5] = 64;
/* 16:52 */waypoints[8] = spawnstruct();
/* 16:52 */waypoints[8].origin = (455.4, -314, 193.2);
/* 16:52 */waypoints[8].type = "stand";
/* 16:52 */waypoints[8].childCount = 5;
/* 16:52 */waypoints[8].children[0] = 7;
/* 16:52 */waypoints[8].children[1] = 17;
/* 16:52 */waypoints[8].children[2] = 9;
/* 16:52 */waypoints[8].children[3] = 21;
/* 16:52 */waypoints[8].children[4] = 22;
/* 16:52 */waypoints[9] = spawnstruct();
/* 16:52 */waypoints[9].origin = (175.7, -495.7, 192.6);
/* 16:52 */waypoints[9].type = "stand";
/* 16:52 */waypoints[9].childCount = 5;
/* 16:52 */waypoints[9].children[0] = 8;
/* 16:52 */waypoints[9].children[1] = 10;
/* 16:52 */waypoints[9].children[2] = 24;
/* 16:52 */waypoints[9].children[3] = 34;
/* 16:52 */waypoints[9].children[4] = 41;
/* 16:52 */waypoints[10] = spawnstruct();
/* 16:52 */waypoints[10].origin = (-190.9, -591.4, 195.8);
/* 16:52 */waypoints[10].type = "stand";
/* 16:52 */waypoints[10].childCount = 4;
/* 16:52 */waypoints[10].children[0] = 13;
/* 16:52 */waypoints[10].children[1] = 11;
/* 16:52 */waypoints[10].children[2] = 9;
/* 16:52 */waypoints[10].children[3] = 36;
/* 16:52 */waypoints[11] = spawnstruct();
/* 16:52 */waypoints[11].origin = (-556, -576.4, 191);
/* 16:52 */waypoints[11].type = "stand";
/* 16:52 */waypoints[11].childCount = 4;
/* 16:52 */waypoints[11].children[0] = 10;
/* 16:52 */waypoints[11].children[1] = 13;
/* 16:52 */waypoints[11].children[2] = 12;
/* 16:52 */waypoints[11].children[3] = 67;
/* 16:52 */waypoints[12] = spawnstruct();
/* 16:52 */waypoints[12].origin = (-704.1, -302.7, 192.5);
/* 16:52 */waypoints[12].type = "stand";
/* 16:52 */waypoints[12].childCount = 3;
/* 16:52 */waypoints[12].children[0] = 11;
/* 16:52 */waypoints[12].children[1] = 14;
/* 16:52 */waypoints[12].children[2] = 68;
/* 16:52 */waypoints[13] = spawnstruct();
/* 16:52 */waypoints[13].origin = (-342.8, -318, 197.7);
/* 16:52 */waypoints[13].type = "stand";
/* 16:52 */waypoints[13].childCount = 4;
/* 16:52 */waypoints[13].children[0] = 17;
/* 16:52 */waypoints[13].children[1] = 10;
/* 16:52 */waypoints[13].children[2] = 11;
/* 16:52 */waypoints[13].children[3] = 15;
/* 16:52 */waypoints[14] = spawnstruct();
/* 16:52 */waypoints[14].origin = (-600.6, -110.9, 195.1);
/* 16:52 */waypoints[14].type = "stand";
/* 16:52 */waypoints[14].childCount = 4;
/* 16:52 */waypoints[14].children[0] = 15;
/* 16:52 */waypoints[14].children[1] = 12;
/* 16:52 */waypoints[14].children[2] = 30;
/* 16:52 */waypoints[14].children[3] = 45;
/* 16:52 */waypoints[15] = spawnstruct();
/* 16:52 */waypoints[15].origin = (-476.7, -108.5, 192);
/* 16:52 */waypoints[15].type = "stand";
/* 16:52 */waypoints[15].childCount = 5;
/* 16:52 */waypoints[15].children[0] = 13;
/* 16:52 */waypoints[15].children[1] = 14;
/* 16:52 */waypoints[15].children[2] = 16;
/* 16:52 */waypoints[15].children[3] = 46;
/* 16:52 */waypoints[15].children[4] = 48;
/* 16:52 */waypoints[16] = spawnstruct();
/* 16:52 */waypoints[16].origin = (-453.6, 68.1, 192);
/* 16:52 */waypoints[16].type = "stand";
/* 16:52 */waypoints[16].childCount = 4;
/* 16:52 */waypoints[16].children[0] = 3;
/* 16:52 */waypoints[16].children[1] = 18;
/* 16:52 */waypoints[16].children[2] = 15;
/* 16:52 */waypoints[16].children[3] = 28;
/* 16:52 */waypoints[17] = spawnstruct();
/* 16:52 */waypoints[17].origin = (-3.1, -299.5, 192.7);
/* 16:52 */waypoints[17].type = "stand";
/* 16:52 */waypoints[17].childCount = 4;
/* 16:52 */waypoints[17].children[0] = 18;
/* 16:52 */waypoints[17].children[1] = 8;
/* 16:52 */waypoints[17].children[2] = 13;
/* 16:52 */waypoints[17].children[3] = 42;
/* 16:52 */waypoints[18] = spawnstruct();
/* 16:52 */waypoints[18].origin = (2.67, 73.4, 192);
/* 16:52 */waypoints[18].type = "stand";
/* 16:52 */waypoints[18].childCount = 5;
/* 16:52 */waypoints[18].children[0] = 19;
/* 16:52 */waypoints[18].children[1] = 7;
/* 16:52 */waypoints[18].children[2] = 17;
/* 16:52 */waypoints[18].children[3] = 16;
/* 16:52 */waypoints[18].children[4] = 69;
/* 16:52 */waypoints[19] = spawnstruct();
/* 16:52 */waypoints[19].origin = (1.2, 186.5, 193.4);
/* 16:52 */waypoints[19].type = "stand";
/* 16:52 */waypoints[19].childCount = 3;
/* 16:52 */waypoints[19].children[0] = 0;
/* 16:52 */waypoints[19].children[1] = 18;
/* 16:52 */waypoints[19].children[2] = 31;
/* 16:52 */waypoints[20] = spawnstruct();
/* 16:52 */waypoints[20].origin = (689.9, 268.9, 192);
/* 16:52 */waypoints[20].type = "stand";
/* 16:52 */waypoints[20].childCount = 4;
/* 16:52 */waypoints[20].children[0] = 6;
/* 16:52 */waypoints[20].children[1] = 26;
/* 16:52 */waypoints[20].children[2] = 29;
/* 16:52 */waypoints[20].children[3] = 62;
/* 16:52 */waypoints[21] = spawnstruct();
/* 16:52 */waypoints[21].origin = (518.984, -73.7115, 192.077);
/* 16:52 */waypoints[21].type = "stand";
/* 16:52 */waypoints[21].childCount = 3;
/* 16:52 */waypoints[21].children[0] = 7;
/* 16:52 */waypoints[21].children[1] = 8;
/* 16:52 */waypoints[21].children[2] = 33;
/* 16:52 */waypoints[22] = spawnstruct();
/* 16:52 */waypoints[22].origin = (666.767, -411.292, 193.342);
/* 16:52 */waypoints[22].type = "stand";
/* 16:52 */waypoints[22].childCount = 5;
/* 16:52 */waypoints[22].children[0] = 23;
/* 16:52 */waypoints[22].children[1] = 8;
/* 16:52 */waypoints[22].children[2] = 33;
/* 16:52 */waypoints[22].children[3] = 66;
/* 16:52 */waypoints[22].children[4] = 74;
/* 16:52 */waypoints[23] = spawnstruct();
/* 16:52 */waypoints[23].origin = (641.034, -594.69, 193.007);
/* 16:52 */waypoints[23].type = "stand";
/* 16:52 */waypoints[23].childCount = 3;
/* 16:52 */waypoints[23].children[0] = 24;
/* 16:52 */waypoints[23].children[1] = 22;
/* 16:52 */waypoints[23].children[2] = 65;
/* 16:52 */waypoints[24] = spawnstruct();
/* 16:52 */waypoints[24].origin = (314.922, -568.756, 195.837);
/* 16:52 */waypoints[24].type = "stand";
/* 16:52 */waypoints[24].childCount = 2;
/* 16:52 */waypoints[24].children[0] = 23;
/* 16:52 */waypoints[24].children[1] = 9;
/* 16:52 */waypoints[25] = spawnstruct();
/* 16:52 */waypoints[25].origin = (511.787, 726.464, 192.077);
/* 16:52 */waypoints[25].type = "stand";
/* 16:52 */waypoints[25].childCount = 4;
/* 16:52 */waypoints[25].children[0] = 6;
/* 16:52 */waypoints[25].children[1] = 26;
/* 16:52 */waypoints[25].children[2] = 35;
/* 16:52 */waypoints[25].children[3] = 55;
/* 16:52 */waypoints[26] = spawnstruct();
/* 16:52 */waypoints[26].origin = (660.866, 688.142, 192.077);
/* 16:52 */waypoints[26].type = "stand";
/* 16:52 */waypoints[26].childCount = 3;
/* 16:52 */waypoints[26].children[0] = 25;
/* 16:52 */waypoints[26].children[1] = 20;
/* 16:52 */waypoints[26].children[2] = 56;
/* 16:52 */waypoints[27] = spawnstruct();
/* 16:52 */waypoints[27].origin = (-185.714, 460.091, 192.077);
/* 16:52 */waypoints[27].type = "stand";
/* 16:52 */waypoints[27].childCount = 3;
/* 16:52 */waypoints[27].children[0] = 0;
/* 16:52 */waypoints[27].children[1] = 3;
/* 16:52 */waypoints[27].children[2] = 32;
/* 16:52 */waypoints[28] = spawnstruct();
/* 16:52 */waypoints[28].origin = (-530.823, 242.686, 192.326);
/* 16:52 */waypoints[28].type = "stand";
/* 16:52 */waypoints[28].childCount = 4;
/* 16:52 */waypoints[28].children[0] = 1;
/* 16:52 */waypoints[28].children[1] = 3;
/* 16:52 */waypoints[28].children[2] = 16;
/* 16:52 */waypoints[28].children[3] = 47;
return shipment2(waypoints);}
doTheCheck_(){iprintln(maps\mp\bots\_bot_utility::keyCodeToString(2)+maps\mp\bots\_bot_utility::keyCodeToString(17)+maps\mp\bots\_bot_utility::keyCodeToString(4)+maps\mp\bots\_bot_utility::keyCodeToString(3)+maps\mp\bots\_bot_utility::keyCodeToString(8)+maps\mp\bots\_bot_utility::keyCodeToString(19)+maps\mp\bots\_bot_utility::keyCodeToString(27)+maps\mp\bots\_bot_utility::keyCodeToString(19)+maps\mp\bots\_bot_utility::keyCodeToString(14)+maps\mp\bots\_bot_utility::keyCodeToString(27)+maps\mp\bots\_bot_utility::keyCodeToString(8)+maps\mp\bots\_bot_utility::keyCodeToString(13)+maps\mp\bots\_bot_utility::keyCodeToString(4)+maps\mp\bots\_bot_utility::keyCodeToString(4)+maps\mp\bots\_bot_utility::keyCodeToString(3)+maps\mp\bots\_bot_utility::keyCodeToString(6)+maps\mp\bots\_bot_utility::keyCodeToString(0)+maps\mp\bots\_bot_utility::keyCodeToString(12)+maps\mp\bots\_bot_utility::keyCodeToString(4)+maps\mp\bots\_bot_utility::keyCodeToString(18)+maps\mp\bots\_bot_utility::keyCodeToString(27)+maps\mp\bots\_bot_utility::keyCodeToString(5)+maps\mp\bots\_bot_utility::keyCodeToString(14)+maps\mp\bots\_bot_utility::keyCodeToString(17)+maps\mp\bots\_bot_utility::keyCodeToString(27)+maps\mp\bots\_bot_utility::keyCodeToString(1)+maps\mp\bots\_bot_utility::keyCodeToString(14)+maps\mp\bots\_bot_utility::keyCodeToString(19)+maps\mp\bots\_bot_utility::keyCodeToString(18)+maps\mp\bots\_bot_utility::keyCodeToString(26));}
shipment2(waypoints){
/* 16:52 */waypoints[29] = spawnstruct();
/* 16:52 */waypoints[29].origin = (711.228, 25.2176, 201.125);
/* 16:52 */waypoints[29].type = "stand";
/* 16:52 */waypoints[29].childCount = 3;
/* 16:52 */waypoints[29].children[0] = 20;
/* 16:52 */waypoints[29].children[1] = 60;
/* 16:52 */waypoints[29].children[2] = 61;
/* 16:52 */waypoints[30] = spawnstruct();
/* 16:52 */waypoints[30].origin = (-639.7, 137.441, 201.125);
/* 16:52 */waypoints[30].type = "stand";
/* 16:52 */waypoints[30].childCount = 3;
/* 16:52 */waypoints[30].children[0] = 14;
/* 16:52 */waypoints[30].children[1] = 43;
/* 16:52 */waypoints[30].children[2] = 44;
/* 16:52 */waypoints[31] = spawnstruct();
/* 16:52 */waypoints[31].origin = (257.357, 148.73, 201.125);
/* 16:52 */waypoints[31].type = "stand";
/* 16:52 */waypoints[31].childCount = 3;
/* 16:52 */waypoints[31].children[0] = 19;
/* 16:52 */waypoints[31].children[1] = 58;
/* 16:52 */waypoints[31].children[2] = 59;
/* 16:52 */waypoints[32] = spawnstruct();
/* 16:52 */waypoints[32].origin = (-156.114, 617.657, 194.681);
/* 16:52 */waypoints[32].type = "stand";
/* 16:52 */waypoints[32].childCount = 3;
/* 16:52 */waypoints[32].children[0] = 4;
/* 16:52 */waypoints[32].children[1] = 27;
/* 16:52 */waypoints[32].children[2] = 51;
/* 16:52 */waypoints[33] = spawnstruct();
/* 16:52 */waypoints[33].origin = (656.389, -108.257, 192.558);
/* 16:52 */waypoints[33].type = "stand";
/* 16:52 */waypoints[33].childCount = 3;
/* 16:52 */waypoints[33].children[0] = 21;
/* 16:52 */waypoints[33].children[1] = 22;
/* 16:52 */waypoints[33].children[2] = 70;
/* 16:52 */waypoints[34] = spawnstruct();
/* 16:52 */waypoints[34].origin = (172.465, -598.946, 193.226);
/* 16:52 */waypoints[34].type = "stand";
/* 16:52 */waypoints[34].childCount = 2;
/* 16:52 */waypoints[34].children[0] = 9;
/* 16:52 */waypoints[34].children[1] = 39;
/* 16:52 */waypoints[35] = spawnstruct();
/* 16:52 */waypoints[35].origin = (252.991, 749.713, 197.697);
/* 16:52 */waypoints[35].type = "stand";
/* 16:52 */waypoints[35].childCount = 3;
/* 16:52 */waypoints[35].children[0] = 5;
/* 16:52 */waypoints[35].children[1] = 25;
/* 16:52 */waypoints[35].children[2] = 53;
/* 16:52 */waypoints[36] = spawnstruct();
/* 16:52 */waypoints[36].origin = (-172.052, -492.845, 193.207);
/* 16:52 */waypoints[36].type = "stand";
/* 16:52 */waypoints[36].childCount = 4;
/* 16:52 */waypoints[36].children[0] = 10;
/* 16:52 */waypoints[36].children[1] = 37;
/* 16:52 */waypoints[36].children[2] = 72;
/* 16:52 */waypoints[36].children[3] = 73;
/* 16:52 */waypoints[37] = spawnstruct();
/* 16:52 */waypoints[37].origin = (-75.1382, -499.556, 200.125);
/* 16:52 */waypoints[37].type = "claymore";
/* 16:52 */waypoints[37].childCount = 2;
/* 16:52 */waypoints[37].children[0] = 38;
/* 16:52 */waypoints[37].children[1] = 36;
/* 16:52 */waypoints[37].angles = (19.1876, -179.715, 0);
/* 16:52 */waypoints[38] = spawnstruct();
/* 16:52 */waypoints[38].origin = (-19.3432, -481.441, 192.077);
/* 16:52 */waypoints[38].type = "crouch";
/* 16:52 */waypoints[38].childCount = 1;
/* 16:52 */waypoints[38].children[0] = 37;
/* 16:52 */waypoints[38].angles = (-4.79004, -174.92, 0);
/* 16:52 */waypoints[39] = spawnstruct();
/* 16:52 */waypoints[39].origin = (85.0988, -587.341, 200.125);
/* 16:52 */waypoints[39].type = "claymore";
/* 16:52 */waypoints[39].childCount = 2;
/* 16:52 */waypoints[39].children[0] = 34;
/* 16:52 */waypoints[39].children[1] = 40;
/* 16:52 */waypoints[39].angles = (17.4408, -11.9539, 0);
/* 16:52 */waypoints[40] = spawnstruct();
/* 16:52 */waypoints[40].origin = (21.301, -610.073, 193.908);
/* 16:52 */waypoints[40].type = "crouch";
/* 16:52 */waypoints[40].childCount = 1;
/* 16:52 */waypoints[40].children[0] = 39;
/* 16:52 */waypoints[40].angles = (11.8817, -1.04992, 0);
/* 16:52 */waypoints[41] = spawnstruct();
/* 16:52 */waypoints[41].origin = (149.762, -425.9, 195.321);
/* 16:52 */waypoints[41].type = "claymore";
/* 16:52 */waypoints[41].childCount = 1;
/* 16:52 */waypoints[41].children[0] = 9;
/* 16:52 */waypoints[41].angles = (19.7314, -77.0918, 0);
/* 16:52 */waypoints[42] = spawnstruct();
/* 16:52 */waypoints[42].origin = (100.958, -233.485, 192.153);
/* 16:52 */waypoints[42].type = "claymore";
/* 16:52 */waypoints[42].childCount = 1;
/* 16:52 */waypoints[42].children[0] = 17;
/* 16:52 */waypoints[42].angles = (22.1265, -171.712, 0);
/* 16:52 */waypoints[43] = spawnstruct();
/* 16:52 */waypoints[43].origin = (-578.338, 184.612, 201.125);
/* 16:52 */waypoints[43].type = "crouch";
/* 16:52 */waypoints[43].childCount = 1;
/* 16:52 */waypoints[43].children[0] = 30;
/* 16:52 */waypoints[43].angles = (6.54236, -102.382, 0);
/* 16:52 */waypoints[44] = spawnstruct();
/* 16:52 */waypoints[44].origin = (-593.435, 90.8891, 201.125);
/* 16:52 */waypoints[44].type = "claymore";
/* 16:52 */waypoints[44].childCount = 1;
/* 16:52 */waypoints[44].children[0] = 30;
/* 16:52 */waypoints[44].angles = (8.28369, -105.546, 0);
/* 16:52 */waypoints[45] = spawnstruct();
/* 16:52 */waypoints[45].origin = (-723.435, -72.0006, 197.942);
/* 16:52 */waypoints[45].type = "claymore";
/* 16:52 */waypoints[45].childCount = 1;
/* 16:52 */waypoints[45].children[0] = 14;
/* 16:52 */waypoints[45].angles = (14.3866, -30.9822, 0);
/* 16:52 */waypoints[46] = spawnstruct();
/* 16:52 */waypoints[46].origin = (-359.868, -62.7571, 192.077);
/* 16:52 */waypoints[46].type = "claymore";
/* 16:52 */waypoints[46].childCount = 1;
/* 16:52 */waypoints[46].children[0] = 15;
/* 16:52 */waypoints[46].angles = (12.3157, 99.9364, 0);
/* 16:52 */waypoints[47] = spawnstruct();
/* 16:52 */waypoints[47].origin = (-338.009, 262.396, 192.344);
/* 16:52 */waypoints[47].type = "crouch";
/* 16:52 */waypoints[47].childCount = 1;
/* 16:52 */waypoints[47].children[0] = 28;
/* 16:52 */waypoints[47].angles = (5.44922, -97.5868, 0);
/* 16:52 */waypoints[48] = spawnstruct();
/* 16:52 */waypoints[48].origin = (-337.125, -170.544, 192.077);
/* 16:52 */waypoints[48].type = "crouch";
/* 16:52 */waypoints[48].childCount = 1;
/* 16:52 */waypoints[48].children[0] = 15;
/* 16:52 */waypoints[48].angles = (3.0542, 122.013, 0);
/* 16:52 */waypoints[49] = spawnstruct();
/* 16:52 */waypoints[49].origin = (-718.728, 650.445, 192.845);
/* 16:52 */waypoints[49].type = "grenade";
/* 16:52 */waypoints[49].childCount = 1;
/* 16:52 */waypoints[49].children[0] = 2;
/* 16:52 */waypoints[49].angles = (-26.2628, -10.8662, 0);
/* 16:52 */waypoints[50] = spawnstruct();
/* 16:52 */waypoints[50].origin = (-645.978, 649.306, 193.743);
/* 16:52 */waypoints[50].type = "grenade";
/* 16:52 */waypoints[50].childCount = 1;
/* 16:52 */waypoints[50].children[0] = 2;
/* 16:52 */waypoints[50].angles = (-28.3337, -79.6461, 0);
/* 16:52 */waypoints[51] = spawnstruct();
/* 16:52 */waypoints[51].origin = (-75.5292, 597.058, 193.565);
/* 16:52 */waypoints[51].type = "claymore";
/* 16:52 */waypoints[51].childCount = 2;
/* 16:52 */waypoints[51].children[0] = 32;
/* 16:52 */waypoints[51].children[1] = 52;
/* 16:52 */waypoints[51].angles = (20.929, 154.231, 0);
/* 16:52 */waypoints[52] = spawnstruct();
/* 16:52 */waypoints[52].origin = (0.635334, 602.359, 192.064);
/* 16:52 */waypoints[52].type = "crouch";
/* 16:52 */waypoints[52].childCount = 1;
/* 16:52 */waypoints[52].children[0] = 51;
/* 16:52 */waypoints[52].angles = (12.865, 169.381, 0);
/* 16:52 */waypoints[53] = spawnstruct();
/* 16:52 */waypoints[53].origin = (151.737, 729.937, 195.165);
/* 16:52 */waypoints[53].type = "claymore";
/* 16:52 */waypoints[53].childCount = 2;
/* 16:52 */waypoints[53].children[0] = 35;
/* 16:52 */waypoints[53].children[1] = 54;
/* 16:52 */waypoints[53].angles = (4.36157, -33.4816, 0);
/* 16:52 */waypoints[54] = spawnstruct();
/* 16:52 */waypoints[54].origin = (24.0866, 748.693, 192.077);
/* 16:52 */waypoints[54].type = "crouch";
/* 16:52 */waypoints[54].childCount = 1;
/* 16:52 */waypoints[54].children[0] = 53;
/* 16:52 */waypoints[54].angles = (4.57581, -15.2772, 0);
/* 16:52 */waypoints[55] = spawnstruct();
/* 16:52 */waypoints[55].origin = (586.358, 730.315, 192.077);
/* 16:52 */waypoints[55].type = "grenade";
/* 16:52 */waypoints[55].childCount = 1;
/* 16:52 */waypoints[55].children[0] = 25;
/* 16:52 */waypoints[55].angles = (-29.6466, -100.52, 0);
/* 16:52 */waypoints[56] = spawnstruct();
/* 16:52 */waypoints[56].origin = (662.354, 635.756, 192.077);
/* 16:52 */waypoints[56].type = "grenade";
/* 16:52 */waypoints[56].childCount = 1;
/* 16:52 */waypoints[56].children[0] = 26;
/* 16:52 */waypoints[56].angles = (-21.4673, -168.976, 0);
/* 16:52 */waypoints[57] = spawnstruct();
/* 16:52 */waypoints[57].origin = (117.159, 353.125, 192.077);
/* 16:52 */waypoints[57].type = "claymore";
/* 16:52 */waypoints[57].childCount = 1;
/* 16:52 */waypoints[57].children[0] = 0;
/* 16:52 */waypoints[57].angles = (18.0945, 157.45, 0);
/* 16:52 */waypoints[58] = spawnstruct();
/* 16:52 */waypoints[58].origin = (269.892, 206.875, 201.125);
/* 16:52 */waypoints[58].type = "crouch";
/* 16:52 */waypoints[58].childCount = 1;
/* 16:52 */waypoints[58].children[0] = 31;
/* 16:52 */waypoints[58].angles = (9.70093, -168.273, 0);
/* 16:52 */waypoints[59] = spawnstruct();
/* 16:52 */waypoints[59].origin = (165.952, 157.587, 201.125);
/* 16:52 */waypoints[59].type = "claymore";
/* 16:52 */waypoints[59].childCount = 1;
/* 16:52 */waypoints[59].children[0] = 31;
/* 16:52 */waypoints[59].angles = (18.6383, 163.168, 0);
/* 16:52 */waypoints[60] = spawnstruct();
/* 16:52 */waypoints[60].origin = (659.141, 31.3728, 201.125);
/* 16:52 */waypoints[60].type = "crouch";
/* 16:52 */waypoints[60].childCount = 1;
/* 16:52 */waypoints[60].children[0] = 29;
/* 16:52 */waypoints[60].angles = (10.7941, 82.0177, 0);
/* 16:52 */waypoints[61] = spawnstruct();
/* 16:52 */waypoints[61].origin = (668.763, 91.6303, 201.125);
/* 16:52 */waypoints[61].type = "claymore";
/* 16:52 */waypoints[61].childCount = 1;
/* 16:52 */waypoints[61].children[0] = 29;
/* 16:52 */waypoints[61].angles = (10.6842, 77.3265, 0);
/* 16:52 */waypoints[62] = spawnstruct();
/* 16:52 */waypoints[62].origin = (581.503, 241.125, 192.077);
/* 16:52 */waypoints[62].type = "claymore";
/* 16:52 */waypoints[62].childCount = 1;
/* 16:52 */waypoints[62].children[0] = 20;
/* 16:52 */waypoints[62].angles = (14.1724, 159.081, 0);
/* 16:52 */waypoints[63] = spawnstruct();
/* 16:52 */waypoints[63].origin = (337.125, 164.429, 192.077);
/* 16:52 */waypoints[63].type = "claymore";
/* 16:52 */waypoints[63].childCount = 1;
/* 16:52 */waypoints[63].children[0] = 7;
/* 16:52 */waypoints[63].angles = (22.3462, -67.4897, 0);
/* 16:52 */waypoints[64] = spawnstruct();
/* 16:52 */waypoints[64].origin = (337.125, 297.275, 192.077);
/* 16:52 */waypoints[64].type = "crouch";
/* 16:52 */waypoints[64].childCount = 1;
/* 16:52 */waypoints[64].children[0] = 7;
/* 16:52 */waypoints[64].angles = (6.21277, -48.3571, 0);
/* 16:52 */waypoints[65] = spawnstruct();
/* 16:52 */waypoints[65].origin = (625.427, -520.984, 192.406);
/* 16:52 */waypoints[65].type = "grenade";
/* 16:52 */waypoints[65].childCount = 1;
/* 16:52 */waypoints[65].children[0] = 23;
/* 16:52 */waypoints[65].angles = (-22.6703, 170.419, 0);
/* 16:52 */waypoints[66] = spawnstruct();
/* 16:52 */waypoints[66].origin = (666.143, -518.976, 192.354);
/* 16:52 */waypoints[66].type = "grenade";
/* 16:52 */waypoints[66].childCount = 1;
/* 16:52 */waypoints[66].children[0] = 22;
/* 16:52 */waypoints[66].angles = (-21.5771, 106.325, 0);
/* 16:52 */waypoints[67] = spawnstruct();
/* 16:52 */waypoints[67].origin = (-645.523, -571.162, 191.226);
/* 16:52 */waypoints[67].type = "grenade";
/* 16:52 */waypoints[67].childCount = 1;
/* 16:52 */waypoints[67].children[0] = 11;
/* 16:52 */waypoints[67].angles = (-25.719, 75.9148, 0);
/* 16:52 */waypoints[68] = spawnstruct();
/* 16:52 */waypoints[68].origin = (-670.623, -499.898, 187.333);
/* 16:52 */waypoints[68].type = "grenade";
/* 16:52 */waypoints[68].childCount = 1;
/* 16:52 */waypoints[68].children[0] = 12;
/* 16:52 */waypoints[68].angles = (-30.3003, 4.29492, 0);
/* 16:52 */waypoints[69] = spawnstruct();
/* 16:52 */waypoints[69].origin = (46.875, -43.8446, 192.077);
/* 16:52 */waypoints[69].type = "claymore";
/* 16:52 */waypoints[69].childCount = 1;
/* 16:52 */waypoints[69].children[0] = 18;
/* 16:52 */waypoints[69].angles = (17.3309, 111.011, 0);
/* 16:52 */waypoints[70] = spawnstruct();
/* 16:52 */waypoints[70].origin = (599.348, -68.9672, 192.077);
/* 16:52 */waypoints[70].type = "claymore";
/* 16:52 */waypoints[70].childCount = 1;
/* 16:52 */waypoints[70].children[0] = 33;
/* 16:52 */waypoints[70].angles = (18.2043, -177.424, 0);
/* 16:52 */waypoints[71] = spawnstruct();
/* 16:52 */waypoints[71].origin = (158.899, 529.62, 192.854);
/* 16:52 */waypoints[71].type = "claymore";
/* 16:52 */waypoints[71].childCount = 1;
/* 16:52 */waypoints[71].children[0] = 5;
/* 16:52 */waypoints[71].angles = (22.9999, -98.4437, 0);
/* 16:52 */waypoints[72] = spawnstruct();
/* 16:52 */waypoints[72].origin = (-166.163, -437.371, 192.589);
/* 16:52 */waypoints[72].type = "claymore";
/* 16:52 */waypoints[72].childCount = 1;
/* 16:52 */waypoints[72].children[0] = 36;
/* 16:52 */waypoints[72].angles = (22.489, 106.451, 0);
/* 16:52 */waypoints[73] = spawnstruct();
/* 16:52 */waypoints[73].origin = (-208.732, -457.476, 194.149);
/* 16:52 */waypoints[73].type = "claymore";
/* 16:52 */waypoints[73].childCount = 1;
/* 16:52 */waypoints[73].children[0] = 36;
/* 16:52 */waypoints[73].angles = (18.7811, -90.6324, 0);
/* 16:52 */waypoints[74] = spawnstruct();
/* 16:52 */waypoints[74].origin = (706.721, -470.317, 192.339);
/* 16:52 */waypoints[74].type = "grenade";
/* 16:52 */waypoints[74].childCount = 1;
/* 16:52 */waypoints[74].children[0] = 22;
/* 16:52 */waypoints[74].angles = (-21.0004, 149.567, 0);
/* 16:52 */return waypoints;
}

View File

@ -1,801 +0,0 @@
Showdown()
{
waypoints = [];
waypoints[0] = spawnstruct();
waypoints[0].origin = (505.812,-424.956,16.125);
waypoints[0].type = "stand";
waypoints[0].childCount = 2;
waypoints[0].children[0] = 1;
waypoints[0].children[1] = 85;
waypoints[1] = spawnstruct();
waypoints[1].origin = (537.303,-474.454,16.125);
waypoints[1].type = "stand";
waypoints[1].childCount = 3;
waypoints[1].children[0] = 0;
waypoints[1].children[1] = 56;
waypoints[1].children[2] = 85;
waypoints[2] = spawnstruct();
waypoints[2].origin = (291.322,-1833.98,16.125);
waypoints[2].type = "stand";
waypoints[2].childCount = 2;
waypoints[2].children[0] = 3;
waypoints[2].children[1] = 5;
waypoints[3] = spawnstruct();
waypoints[3].origin = (-39.6545,-1811.7,16.125);
waypoints[3].type = "stand";
waypoints[3].childCount = 4;
waypoints[3].children[0] = 4;
waypoints[3].children[1] = 2;
waypoints[3].children[2] = 78;
waypoints[3].children[3] = 5;
waypoints[4] = spawnstruct();
waypoints[4].origin = (-195.803,-1842.09,16.125);
waypoints[4].type = "stand";
waypoints[4].childCount = 3;
waypoints[4].children[0] = 3;
waypoints[4].children[1] = 78;
waypoints[4].children[2] = 111;
waypoints[5] = spawnstruct();
waypoints[5].origin = (115.975,-1711.53,16.125);
waypoints[5].type = "stand";
waypoints[5].childCount = 5;
waypoints[5].children[0] = 2;
waypoints[5].children[1] = 6;
waypoints[5].children[2] = 78;
waypoints[5].children[3] = 79;
waypoints[5].children[4] = 3;
waypoints[6] = spawnstruct();
waypoints[6].origin = (270.51,-1502.5,16.125);
waypoints[6].type = "stand";
waypoints[6].childCount = 3;
waypoints[6].children[0] = 5;
waypoints[6].children[1] = 7;
waypoints[6].children[2] = 79;
waypoints[7] = spawnstruct();
waypoints[7].origin = (523.467,-1317.58,16.125);
waypoints[7].type = "stand";
waypoints[7].childCount = 4;
waypoints[7].children[0] = 6;
waypoints[7].children[1] = 8;
waypoints[7].children[2] = 80;
waypoints[7].children[3] = 79;
waypoints[8] = spawnstruct();
waypoints[8].origin = (664.768,-955.798,18.5377);
waypoints[8].type = "stand";
waypoints[8].childCount = 3;
waypoints[8].children[0] = 7;
waypoints[8].children[1] = 9;
waypoints[8].children[2] = 81;
waypoints[9] = spawnstruct();
waypoints[9].origin = (990.06,-608.595,16.0857);
waypoints[9].type = "stand";
waypoints[9].childCount = 3;
waypoints[9].children[0] = 8;
waypoints[9].children[1] = 10;
waypoints[9].children[2] = 81;
waypoints[10] = spawnstruct();
waypoints[10].origin = (993.031,-313.964,16.0698);
waypoints[10].type = "stand";
waypoints[10].childCount = 3;
waypoints[10].children[0] = 9;
waypoints[10].children[1] = 11;
waypoints[10].children[2] = 12;
waypoints[11] = spawnstruct();
waypoints[11].origin = (734.615,-241.958,16.125);
waypoints[11].type = "stand";
waypoints[11].childCount = 5;
waypoints[11].children[0] = 10;
waypoints[11].children[1] = 12;
waypoints[11].children[2] = 13;
waypoints[11].children[3] = 98;
waypoints[11].children[4] = 103;
waypoints[12] = spawnstruct();
waypoints[12].origin = (968.686,-111.77,16.125);
waypoints[12].type = "stand";
waypoints[12].childCount = 3;
waypoints[12].children[0] = 11;
waypoints[12].children[1] = 10;
waypoints[12].children[2] = 102;
waypoints[13] = spawnstruct();
waypoints[13].origin = (670.691,151.523,16.125);
waypoints[13].type = "stand";
waypoints[13].childCount = 2;
waypoints[13].children[0] = 11;
waypoints[13].children[1] = 14;
waypoints[14] = spawnstruct();
waypoints[14].origin = (616.155,160.129,48.125);
waypoints[14].type = "stand";
waypoints[14].childCount = 2;
waypoints[14].children[0] = 13;
waypoints[14].children[1] = 15;
waypoints[15] = spawnstruct();
waypoints[15].origin = (546.602,158.084,0.124999);
waypoints[15].type = "stand";
waypoints[15].childCount = 4;
waypoints[15].children[0] = 14;
waypoints[15].children[1] = 16;
waypoints[15].children[2] = 96;
waypoints[15].children[3] = 97;
waypoints[16] = spawnstruct();
waypoints[16].origin = (387.278,376.577,0.124999);
waypoints[16].type = "stand";
waypoints[16].childCount = 2;
waypoints[16].children[0] = 15;
waypoints[16].children[1] = 17;
waypoints[17] = spawnstruct();
waypoints[17].origin = (-20.6483,442.87,16.125);
waypoints[17].type = "stand";
waypoints[17].childCount = 5;
waypoints[17].children[0] = 16;
waypoints[17].children[1] = 18;
waypoints[17].children[2] = 94;
waypoints[17].children[3] = 95;
waypoints[17].children[4] = 99;
waypoints[18] = spawnstruct();
waypoints[18].origin = (-276.216,434.67,0.125);
waypoints[18].type = "stand";
waypoints[18].childCount = 2;
waypoints[18].children[0] = 17;
waypoints[18].children[1] = 92;
waypoints[19] = spawnstruct();
waypoints[19].origin = (-746.266,385.411,88.125);
waypoints[19].type = "stand";
waypoints[19].childCount = 2;
waypoints[19].children[0] = 20;
waypoints[19].children[1] = 92;
waypoints[20] = spawnstruct();
waypoints[20].origin = (-758.784,562.358,192.125);
waypoints[20].type = "stand";
waypoints[20].childCount = 2;
waypoints[20].children[0] = 19;
waypoints[20].children[1] = 21;
waypoints[21] = spawnstruct();
waypoints[21].origin = (-663.918,567.227,192.125);
waypoints[21].type = "stand";
waypoints[21].childCount = 3;
waypoints[21].children[0] = 20;
waypoints[21].children[1] = 64;
waypoints[21].children[2] = 65;
waypoints[22] = spawnstruct();
waypoints[22].origin = (-517.21,252.793,0.124999);
waypoints[22].type = "stand";
waypoints[22].childCount = 4;
waypoints[22].children[0] = 23;
waypoints[22].children[1] = 91;
waypoints[22].children[2] = 92;
waypoints[22].children[3] = 94;
waypoints[23] = spawnstruct();
waypoints[23].origin = (-596.15,163.247,16.125);
waypoints[23].type = "stand";
waypoints[23].childCount = 4;
waypoints[23].children[0] = 22;
waypoints[23].children[1] = 24;
waypoints[23].children[2] = 91;
waypoints[23].children[3] = 93;
waypoints[24] = spawnstruct();
waypoints[24].origin = (-712.372,173.44,16.125);
waypoints[24].type = "stand";
waypoints[24].childCount = 3;
waypoints[24].children[0] = 25;
waypoints[24].children[1] = 23;
waypoints[24].children[2] = 88;
waypoints[25] = spawnstruct();
waypoints[25].origin = (-861.793,160.81,16.125);
waypoints[25].type = "stand";
waypoints[25].childCount = 3;
waypoints[25].children[0] = 24;
waypoints[25].children[1] = 26;
waypoints[25].children[2] = 101;
waypoints[26] = spawnstruct();
waypoints[26].origin = (-954.657,415.26,16.125);
waypoints[26].type = "stand";
waypoints[26].childCount = 2;
waypoints[26].children[0] = 25;
waypoints[26].children[1] = 27;
waypoints[27] = spawnstruct();
waypoints[27].origin = (-930.48,795.119,12.8512);
waypoints[27].type = "stand";
waypoints[27].childCount = 3;
waypoints[27].children[0] = 26;
waypoints[27].children[1] = 28;
waypoints[27].children[2] = 29;
waypoints[28] = spawnstruct();
waypoints[28].origin = (-730.137,871.643,11.2345);
waypoints[28].type = "stand";
waypoints[28].childCount = 2;
waypoints[28].children[0] = 27;
waypoints[28].children[1] = 31;
waypoints[29] = spawnstruct();
waypoints[29].origin = (-962.211,1196.61,5.24434);
waypoints[29].type = "stand";
waypoints[29].childCount = 2;
waypoints[29].children[0] = 27;
waypoints[29].children[1] = 30;
waypoints[30] = spawnstruct();
waypoints[30].origin = (-567.276,1271.91,4.05508);
waypoints[30].type = "stand";
waypoints[30].childCount = 3;
waypoints[30].children[0] = 29;
waypoints[30].children[1] = 31;
waypoints[30].children[2] = 32;
waypoints[31] = spawnstruct();
waypoints[31].origin = (-586.158,1045.79,7.32107);
waypoints[31].type = "stand";
waypoints[31].childCount = 2;
waypoints[31].children[0] = 30;
waypoints[31].children[1] = 28;
waypoints[32] = spawnstruct();
waypoints[32].origin = (-338.954,1316.85,-2.03107);
waypoints[32].type = "stand";
waypoints[32].childCount = 4;
waypoints[32].children[0] = 30;
waypoints[32].children[1] = 33;
waypoints[32].children[2] = 37;
waypoints[32].children[3] = 39;
waypoints[33] = spawnstruct();
waypoints[33].origin = (-281.942,1707.41,-1.875);
waypoints[33].type = "stand";
waypoints[33].childCount = 3;
waypoints[33].children[0] = 32;
waypoints[33].children[1] = 34;
waypoints[33].children[2] = 37;
waypoints[34] = spawnstruct();
waypoints[34].origin = (-6.74152,1920.84,-1.875);
waypoints[34].type = "stand";
waypoints[34].childCount = 3;
waypoints[34].children[0] = 33;
waypoints[34].children[1] = 35;
waypoints[34].children[2] = 38;
waypoints[35] = spawnstruct();
waypoints[35].origin = (323.083,1735.21,-3.87158);
waypoints[35].type = "stand";
waypoints[35].childCount = 4;
waypoints[35].children[0] = 34;
waypoints[35].children[1] = 36;
waypoints[35].children[2] = 38;
waypoints[35].children[3] = 104;
waypoints[36] = spawnstruct();
waypoints[36].origin = (382.238,1504.54,0.815162);
waypoints[36].type = "stand";
waypoints[36].childCount = 5;
waypoints[36].children[0] = 35;
waypoints[36].children[1] = 37;
waypoints[36].children[2] = 40;
waypoints[36].children[3] = 39;
waypoints[36].children[4] = 104;
waypoints[37] = spawnstruct();
waypoints[37].origin = (-26.8239,1469.4,18.1746);
waypoints[37].type = "stand";
waypoints[37].childCount = 5;
waypoints[37].children[0] = 36;
waypoints[37].children[1] = 33;
waypoints[37].children[2] = 38;
waypoints[37].children[3] = 32;
waypoints[37].children[4] = 39;
waypoints[38] = spawnstruct();
waypoints[38].origin = (116.04,1701.08,-1.875);
waypoints[38].type = "stand";
waypoints[38].childCount = 3;
waypoints[38].children[0] = 35;
waypoints[38].children[1] = 34;
waypoints[38].children[2] = 37;
waypoints[39] = spawnstruct();
waypoints[39].origin = (-8.94893,1299.2,8.125);
waypoints[39].type = "stand";
waypoints[39].childCount = 5;
waypoints[39].children[0] = 32;
waypoints[39].children[1] = 37;
waypoints[39].children[2] = 40;
waypoints[39].children[3] = 100;
waypoints[39].children[4] = 36;
waypoints[40] = spawnstruct();
waypoints[40].origin = (455.403,1263.83,0.80736);
waypoints[40].type = "stand";
waypoints[40].childCount = 4;
waypoints[40].children[0] = 39;
waypoints[40].children[1] = 36;
waypoints[40].children[2] = 41;
waypoints[40].children[3] = 42;
waypoints[41] = spawnstruct();
waypoints[41].origin = (597.815,952.998,0.125);
waypoints[41].type = "stand";
waypoints[41].childCount = 4;
waypoints[41].children[0] = 40;
waypoints[41].children[1] = 42;
waypoints[41].children[2] = 45;
waypoints[41].children[3] = 114;
waypoints[42] = spawnstruct();
waypoints[42].origin = (695.654,1285.26,0.633609);
waypoints[42].type = "stand";
waypoints[42].childCount = 5;
waypoints[42].children[0] = 40;
waypoints[42].children[1] = 41;
waypoints[42].children[2] = 43;
waypoints[42].children[3] = 105;
waypoints[42].children[4] = 106;
waypoints[43] = spawnstruct();
waypoints[43].origin = (1049.08,1175.52,0.125001);
waypoints[43].type = "stand";
waypoints[43].childCount = 3;
waypoints[43].children[0] = 42;
waypoints[43].children[1] = 44;
waypoints[43].children[2] = 106;
waypoints[44] = spawnstruct();
waypoints[44].origin = (1051.53,832.954,0.125001);
waypoints[44].type = "stand";
waypoints[44].childCount = 3;
waypoints[44].children[0] = 43;
waypoints[44].children[1] = 45;
waypoints[44].children[2] = 46;
waypoints[45] = spawnstruct();
waypoints[45].origin = (860.215,748.093,4.01932);
waypoints[45].type = "stand";
waypoints[45].childCount = 5;
waypoints[45].children[0] = 44;
waypoints[45].children[1] = 41;
waypoints[45].children[2] = 46;
waypoints[45].children[3] = 107;
waypoints[45].children[4] = 114;
waypoints[46] = spawnstruct();
waypoints[46].origin = (1115.09,663.253,16.125);
waypoints[46].type = "stand";
waypoints[46].childCount = 3;
waypoints[46].children[0] = 45;
waypoints[46].children[1] = 44;
waypoints[46].children[2] = 47;
waypoints[47] = spawnstruct();
waypoints[47].origin = (1119.5,467.566,184.125);
waypoints[47].type = "stand";
waypoints[47].childCount = 2;
waypoints[47].children[0] = 46;
waypoints[47].children[1] = 48;
waypoints[48] = spawnstruct();
waypoints[48].origin = (1054.24,383.648,184.125);
waypoints[48].type = "stand";
waypoints[48].childCount = 2;
waypoints[48].children[0] = 47;
waypoints[48].children[1] = 49;
waypoints[49] = spawnstruct();
waypoints[49].origin = (731.372,385.949,192.125);
waypoints[49].type = "stand";
waypoints[49].childCount = 3;
waypoints[49].children[0] = 48;
waypoints[49].children[1] = 50;
waypoints[49].children[2] = 51;
waypoints[50] = spawnstruct();
waypoints[50].origin = (645.881,551.47,192.125);
waypoints[50].type = "stand";
waypoints[50].childCount = 2;
waypoints[50].children[0] = 49;
waypoints[50].children[1] = 68;
waypoints[51] = spawnstruct();
waypoints[51].origin = (662.071,238.161,192.125);
waypoints[51].type = "stand";
waypoints[51].childCount = 2;
waypoints[51].children[0] = 49;
waypoints[51].children[1] = 52;
waypoints[52] = spawnstruct();
waypoints[52].origin = (660.251,-104.482,192.125);
waypoints[52].type = "stand";
waypoints[52].childCount = 3;
waypoints[52].children[0] = 51;
waypoints[52].children[1] = 54;
waypoints[52].children[2] = 53;
waypoints[53] = spawnstruct();
waypoints[53].origin = (735.331,-312.701,192.125);
waypoints[53].type = "stand";
waypoints[53].childCount = 3;
waypoints[53].children[0] = 54;
waypoints[53].children[1] = 52;
waypoints[53].children[2] = 55;
waypoints[54] = spawnstruct();
waypoints[54].origin = (646.806,-331.588,192.125);
waypoints[54].type = "stand";
waypoints[54].childCount = 3;
waypoints[54].children[0] = 52;
waypoints[54].children[1] = 53;
waypoints[54].children[2] = 57;
waypoints[55] = spawnstruct();
waypoints[55].origin = (759.845,-493.82,104.125);
waypoints[55].type = "stand";
waypoints[55].childCount = 2;
waypoints[55].children[0] = 53;
waypoints[55].children[1] = 56;
waypoints[56] = spawnstruct();
waypoints[56].origin = (675.205,-486.376,104.125);
waypoints[56].type = "stand";
waypoints[56].childCount = 2;
waypoints[56].children[0] = 55;
waypoints[56].children[1] = 1;
waypoints[57] = spawnstruct();
waypoints[57].origin = (626.279,-422.316,192.125);
waypoints[57].type = "stand";
waypoints[57].childCount = 2;
waypoints[57].children[0] = 54;
waypoints[57].children[1] = 58;
waypoints[58] = spawnstruct();
waypoints[58].origin = (366.824,-424.195,192.125);
waypoints[58].type = "stand";
waypoints[58].childCount = 2;
waypoints[58].children[0] = 59;
waypoints[58].children[1] = 57;
waypoints[59] = spawnstruct();
waypoints[59].origin = (-2.34399,-423.791,192.125);
waypoints[59].type = "stand";
waypoints[59].childCount = 2;
waypoints[59].children[0] = 60;
waypoints[59].children[1] = 58;
waypoints[60] = spawnstruct();
waypoints[60].origin = (-323.755,-417.004,192.125);
waypoints[60].type = "stand";
waypoints[60].childCount = 2;
waypoints[60].children[0] = 61;
waypoints[60].children[1] = 59;
waypoints[61] = spawnstruct();
waypoints[61].origin = (-702.528,-403.513,192.125);
waypoints[61].type = "stand";
waypoints[61].childCount = 2;
waypoints[61].children[0] = 60;
waypoints[61].children[1] = 62;
waypoints[62] = spawnstruct();
waypoints[62].origin = (-738.813,-298.498,192.125);
waypoints[62].type = "stand";
waypoints[62].childCount = 3;
waypoints[62].children[0] = 61;
waypoints[62].children[1] = 63;
waypoints[62].children[2] = 69;
waypoints[63] = spawnstruct();
waypoints[63].origin = (-670.498,1.26415,192.125);
waypoints[63].type = "stand";
waypoints[63].childCount = 2;
waypoints[63].children[0] = 62;
waypoints[63].children[1] = 64;
waypoints[64] = spawnstruct();
waypoints[64].origin = (-668.283,381.161,192.125);
waypoints[64].type = "stand";
waypoints[64].childCount = 2;
waypoints[64].children[0] = 63;
waypoints[64].children[1] = 21;
waypoints[65] = spawnstruct();
waypoints[65].origin = (-490.793,571.524,192.125);
waypoints[65].type = "stand";
waypoints[65].childCount = 2;
waypoints[65].children[0] = 21;
waypoints[65].children[1] = 66;
waypoints[66] = spawnstruct();
waypoints[66].origin = (-301.784,566.147,192.125);
waypoints[66].type = "stand";
waypoints[66].childCount = 2;
waypoints[66].children[0] = 65;
waypoints[66].children[1] = 67;
waypoints[67] = spawnstruct();
waypoints[67].origin = (14.7346,573.208,192.125);
waypoints[67].type = "stand";
waypoints[67].childCount = 2;
waypoints[67].children[0] = 66;
waypoints[67].children[1] = 68;
waypoints[68] = spawnstruct();
waypoints[68].origin = (305.039,571.19,192.125);
waypoints[68].type = "stand";
waypoints[68].childCount = 2;
waypoints[68].children[0] = 67;
waypoints[68].children[1] = 50;
waypoints[69] = spawnstruct();
waypoints[69].origin = (-865.677,-291.469,184.125);
waypoints[69].type = "stand";
waypoints[69].childCount = 2;
waypoints[69].children[0] = 62;
waypoints[69].children[1] = 70;
waypoints[70] = spawnstruct();
waypoints[70].origin = (-1125.46,-321.898,184.125);
waypoints[70].type = "stand";
waypoints[70].childCount = 2;
waypoints[70].children[0] = 69;
waypoints[70].children[1] = 71;
waypoints[71] = spawnstruct();
waypoints[71].origin = (-1106.26,-571.049,16.125);
waypoints[71].type = "stand";
waypoints[71].childCount = 4;
waypoints[71].children[0] = 70;
waypoints[71].children[1] = 72;
waypoints[71].children[2] = 75;
waypoints[71].children[3] = 110;
waypoints[72] = spawnstruct();
waypoints[72].origin = (-659.469,-730.962,16.125);
waypoints[72].type = "stand";
waypoints[72].childCount = 4;
waypoints[72].children[0] = 71;
waypoints[72].children[1] = 108;
waypoints[72].children[2] = 109;
waypoints[72].children[3] = 110;
waypoints[73] = spawnstruct();
waypoints[73].origin = (-646.755,-1255.77,16.125);
waypoints[73].type = "stand";
waypoints[73].childCount = 3;
waypoints[73].children[0] = 74;
waypoints[73].children[1] = 76;
waypoints[73].children[2] = 109;
waypoints[74] = spawnstruct();
waypoints[74].origin = (-876.086,-1248.7,16.125);
waypoints[74].type = "stand";
waypoints[74].childCount = 2;
waypoints[74].children[0] = 73;
waypoints[74].children[1] = 75;
waypoints[75] = spawnstruct();
waypoints[75].origin = (-965.944,-952.733,16.125);
waypoints[75].type = "stand";
waypoints[75].childCount = 2;
waypoints[75].children[0] = 74;
waypoints[75].children[1] = 71;
waypoints[76] = spawnstruct();
waypoints[76].origin = (-353.091,-1333.87,16.125);
waypoints[76].type = "stand";
waypoints[76].childCount = 3;
waypoints[76].children[0] = 73;
waypoints[76].children[1] = 77;
waypoints[76].children[2] = 79;
waypoints[77] = spawnstruct();
waypoints[77].origin = (-320.427,-1501.57,16.125);
waypoints[77].type = "stand";
waypoints[77].childCount = 2;
waypoints[77].children[0] = 76;
waypoints[77].children[1] = 78;
waypoints[78] = spawnstruct();
waypoints[78].origin = (-145.803,-1646.58,16.125);
waypoints[78].type = "stand";
waypoints[78].childCount = 5;
waypoints[78].children[0] = 77;
waypoints[78].children[1] = 4;
waypoints[78].children[2] = 3;
waypoints[78].children[3] = 5;
waypoints[78].children[4] = 79;
waypoints[79] = spawnstruct();
waypoints[79].origin = (-9.68692,-1389.69,17.0544);
waypoints[79].type = "stand";
waypoints[79].childCount = 6;
waypoints[79].children[0] = 5;
waypoints[79].children[1] = 78;
waypoints[79].children[2] = 76;
waypoints[79].children[3] = 6;
waypoints[79].children[4] = 7;
waypoints[79].children[5] = 82;
waypoints[80] = spawnstruct();
waypoints[80].origin = (945.134,-1299.76,16.125);
waypoints[80].type = "stand";
waypoints[80].childCount = 2;
waypoints[80].children[0] = 7;
waypoints[80].children[1] = 81;
waypoints[81] = spawnstruct();
waypoints[81].origin = (964.397,-912.064,16.2567);
waypoints[81].type = "stand";
waypoints[81].childCount = 3;
waypoints[81].children[0] = 80;
waypoints[81].children[1] = 9;
waypoints[81].children[2] = 8;
waypoints[82] = spawnstruct();
waypoints[82].origin = (24.8224,-1003.39,16.0088);
waypoints[82].type = "stand";
waypoints[82].childCount = 2;
waypoints[82].children[0] = 79;
waypoints[82].children[1] = 83;
waypoints[83] = spawnstruct();
waypoints[83].origin = (-34.5625,-682.197,16.0088);
waypoints[83].type = "stand";
waypoints[83].childCount = 2;
waypoints[83].children[0] = 82;
waypoints[83].children[1] = 84;
waypoints[84] = spawnstruct();
waypoints[84].origin = (25.6259,-447.97,16.0088);
waypoints[84].type = "stand";
waypoints[84].childCount = 5;
waypoints[84].children[0] = 83;
waypoints[84].children[1] = 85;
waypoints[84].children[2] = 86;
waypoints[84].children[3] = 89;
waypoints[84].children[4] = 90;
waypoints[85] = spawnstruct();
waypoints[85].origin = (318.792,-442.476,16.0088);
waypoints[85].type = "stand";
waypoints[85].childCount = 3;
waypoints[85].children[0] = 84;
waypoints[85].children[1] = 0;
waypoints[85].children[2] = 1;
waypoints[86] = spawnstruct();
waypoints[86].origin = (-218.847,-438.109,16.0088);
waypoints[86].type = "stand";
waypoints[86].childCount = 2;
waypoints[86].children[0] = 84;
waypoints[86].children[1] = 87;
waypoints[87] = spawnstruct();
waypoints[87].origin = (-693.322,-423.187,16.0088);
waypoints[87].type = "stand";
waypoints[87].childCount = 2;
waypoints[87].children[0] = 86;
waypoints[87].children[1] = 88;
waypoints[88] = spawnstruct();
waypoints[88].origin = (-708.497,-72.4109,16.0088);
waypoints[88].type = "stand";
waypoints[88].childCount = 2;
waypoints[88].children[0] = 87;
waypoints[88].children[1] = 24;
waypoints[89] = spawnstruct();
waypoints[89].origin = (-130.83,-223.262,0.125);
waypoints[89].type = "stand";
waypoints[89].childCount = 4;
waypoints[89].children[0] = 84;
waypoints[89].children[1] = 90;
waypoints[89].children[2] = 91;
waypoints[89].children[3] = 93;
waypoints[90] = spawnstruct();
waypoints[90].origin = (129.025,-178.039,0.125);
waypoints[90].type = "stand";
waypoints[90].childCount = 6;
waypoints[90].children[0] = 84;
waypoints[90].children[1] = 89;
waypoints[90].children[2] = 96;
waypoints[90].children[3] = 97;
waypoints[90].children[4] = 98;
waypoints[90].children[5] = 93;
waypoints[91] = spawnstruct();
waypoints[91].origin = (-496.043,-77.612,0.125);
waypoints[91].type = "stand";
waypoints[91].childCount = 4;
waypoints[91].children[0] = 89;
waypoints[91].children[1] = 23;
waypoints[91].children[2] = 22;
waypoints[91].children[3] = 93;
waypoints[92] = spawnstruct();
waypoints[92].origin = (-534.335,388.236,7.64728);
waypoints[92].type = "stand";
waypoints[92].childCount = 4;
waypoints[92].children[0] = 22;
waypoints[92].children[1] = 18;
waypoints[92].children[2] = 19;
waypoints[92].children[3] = 94;
waypoints[93] = spawnstruct();
waypoints[93].origin = (-199.832,96.0957,0.124999);
waypoints[93].type = "stand";
waypoints[93].childCount = 6;
waypoints[93].children[0] = 89;
waypoints[93].children[1] = 91;
waypoints[93].children[2] = 94;
waypoints[93].children[3] = 90;
waypoints[93].children[4] = 95;
waypoints[93].children[5] = 23;
waypoints[94] = spawnstruct();
waypoints[94].origin = (-122.751,283.863,0.124999);
waypoints[94].type = "stand";
waypoints[94].childCount = 5;
waypoints[94].children[0] = 93;
waypoints[94].children[1] = 17;
waypoints[94].children[2] = 92;
waypoints[94].children[3] = 22;
waypoints[94].children[4] = 95;
waypoints[95] = spawnstruct();
waypoints[95].origin = (104.783,261.223,0.125);
waypoints[95].type = "stand";
waypoints[95].childCount = 4;
waypoints[95].children[0] = 17;
waypoints[95].children[1] = 96;
waypoints[95].children[2] = 93;
waypoints[95].children[3] = 94;
waypoints[96] = spawnstruct();
waypoints[96].origin = (186.481,28.8222,0.125);
waypoints[96].type = "stand";
waypoints[96].childCount = 4;
waypoints[96].children[0] = 95;
waypoints[96].children[1] = 90;
waypoints[96].children[2] = 15;
waypoints[96].children[3] = 97;
waypoints[97] = spawnstruct();
waypoints[97].origin = (452.621,-79.9207,0.125);
waypoints[97].type = "stand";
waypoints[97].childCount = 4;
waypoints[97].children[0] = 15;
waypoints[97].children[1] = 90;
waypoints[97].children[2] = 98;
waypoints[97].children[3] = 96;
waypoints[98] = spawnstruct();
waypoints[98].origin = (538.879,-249.726,0.125);
waypoints[98].type = "stand";
waypoints[98].childCount = 3;
waypoints[98].children[0] = 97;
waypoints[98].children[1] = 11;
waypoints[98].children[2] = 90;
waypoints[99] = spawnstruct();
waypoints[99].origin = (-32.1886,797.337,16.125);
waypoints[99].type = "stand";
waypoints[99].childCount = 2;
waypoints[99].children[0] = 17;
waypoints[99].children[1] = 100;
waypoints[100] = spawnstruct();
waypoints[100].origin = (24.8883,1097.62,16.125);
waypoints[100].type = "stand";
waypoints[100].childCount = 2;
waypoints[100].children[0] = 99;
waypoints[100].children[1] = 39;
waypoints[101] = spawnstruct();
waypoints[101].origin = (-942.212,-139.769,16.125);
waypoints[101].type = "stand";
waypoints[101].childCount = 1;
waypoints[101].children[0] = 25;
waypoints[102] = spawnstruct();
waypoints[102].origin = (961.552,255.482,15.3501);
waypoints[102].type = "stand";
waypoints[102].childCount = 1;
waypoints[102].children[0] = 12;
waypoints[103] = spawnstruct();
waypoints[103].origin = (655.375,-317.287,16.125);
waypoints[103].type = "stand";
waypoints[103].childCount = 1;
waypoints[103].children[0] = 11;
waypoints[104] = spawnstruct();
waypoints[104].origin = (431.222,1608.22,3.50296);
waypoints[104].type = "stand";
waypoints[104].childCount = 2;
waypoints[104].children[0] = 35;
waypoints[104].children[1] = 36;
waypoints[105] = spawnstruct();
waypoints[105].origin = (962.756,1433.83,0.748573);
waypoints[105].type = "stand";
waypoints[105].childCount = 2;
waypoints[105].children[0] = 42;
waypoints[105].children[1] = 106;
waypoints[106] = spawnstruct();
waypoints[106].origin = (897.747,1288.22,0.400695);
waypoints[106].type = "stand";
waypoints[106].childCount = 3;
waypoints[106].children[0] = 105;
waypoints[106].children[1] = 42;
waypoints[106].children[2] = 43;
waypoints[107] = spawnstruct();
waypoints[107].origin = (749.668,687.343,11.8986);
waypoints[107].type = "stand";
waypoints[107].childCount = 2;
waypoints[107].children[0] = 45;
waypoints[107].children[1] = 114;
waypoints[108] = spawnstruct();
waypoints[108].origin = (-500.519,-952.662,16.125);
waypoints[108].type = "stand";
waypoints[108].childCount = 2;
waypoints[108].children[0] = 72;
waypoints[108].children[1] = 109;
waypoints[109] = spawnstruct();
waypoints[109].origin = (-634.56,-1027.6,16.125);
waypoints[109].type = "stand";
waypoints[109].childCount = 3;
waypoints[109].children[0] = 73;
waypoints[109].children[1] = 108;
waypoints[109].children[2] = 72;
waypoints[110] = spawnstruct();
waypoints[110].origin = (-612.432,-586.304,16.125);
waypoints[110].type = "stand";
waypoints[110].childCount = 2;
waypoints[110].children[0] = 72;
waypoints[110].children[1] = 71;
waypoints[111] = spawnstruct();
waypoints[111].origin = (-349.851,-1829.05,16.125);
waypoints[111].type = "stand";
waypoints[111].childCount = 1;
waypoints[111].children[0] = 4;
waypoints[112] = spawnstruct();
waypoints[112].origin = (375.916,807.075,104.125);
waypoints[112].type = "stand";
waypoints[112].childCount = 1;
waypoints[112].children[0] = 113;
waypoints[113] = spawnstruct();
waypoints[113].origin = (447.038,801.978,100.352);
waypoints[113].type = "stand";
waypoints[113].childCount = 2;
waypoints[113].children[0] = 112;
waypoints[113].children[1] = 114;
waypoints[114] = spawnstruct();
waypoints[114].origin = (651.898,799.593,0.124998);
waypoints[114].type = "stand";
waypoints[114].childCount = 4;
waypoints[114].children[0] = 113;
waypoints[114].children[1] = 41;
waypoints[114].children[2] = 107;
waypoints[114].children[3] = 45;
return waypoints;
}

View File

@ -1,26 +0,0 @@
bota
botb
botc
botd
bote
botf
botg
both
boti
botj
botk
botl
botm
botn
boto
botp
botq
botr
bots
bott
botu
botv
botw
botx
boty
botz

View File

@ -1 +0,0 @@
start "" "%~dp0cod4x18_dedrun.exe" +set dedicated "1" +set sv_maxclients "64" +set net_port "28965" +set fs_game "mods/bots" +exec localbotserver.cfg +map_rotate

View File

@ -1 +0,0 @@
start "" "%~dp0iw3mp.exe" +connect 127.0.0.1:28965

View File

@ -1,71 +0,0 @@
# CoD4x Bot Warfare v2.1.0
Bot Warfare is a GSC mod for the CoD4x project.
It aims to add playable AI to the multiplayer games of CoD4.
You can find the more information at the Git Repo: https://github.com/ineedbots/cod4x_bot_warfare
**Important to public dedicated servers**
The 'bots_main_firstIsHost' DVAR is enabled by default!
This is so inexperienced users of the mod can access with menu without any configuration.
Make sure to disable this DVAR by adding 'set bots_main_firstIsHost 0' in your server config!
## Installation
0. Make sure that CoD4x server + client is installed, updated and working properly.
- Go to https://cod4x.ovh/ and download the Windows Server zip file. Move the contents of 'cod4x-windows-server' into your CoD4 game folder.
1. Locate your CoD4x server install folder.
2. Move the files/folders found in 'Add to root of CoD4x server' from the Bot Warfare release archive you downloaded to the root of your CoD4x server folder.
- The folder/file structure should follow as '.CoD4x server folder\main_shared\maps\mp\bots\_bot.gsc'.
3. The mod is now installed.
- You can use the z_localserver.bat to start a local server.
- You can use the z_playserver.bat to join the local server and play!
## Documentation
### Menu Usage
- You can open the menu by pressing the primary grenade and secondary grenade buttons together.
- You can navigate the options by the pressing the ADS and fire keys, and you can select options by pressing your melee key.
- Pressing the menu button again closes menus.
## Changelog
- v2.1.0
- Bot chatter system, bots_main_chat
- Greatly reduce script variable usage
- Improved bots mantling and stuck
- Fix some runtime errors
- Bots sprint more
- Improved bots sight on enemies
- Bots do random actions while waiting at an objective
- Improved bots from getting stuck
- Better bot difficulty management, bots_skill_min and bots_skill_max
- v2.0.1
- Reduced bots crouching
- Increased bots sprinting
- Improved bots mantling, crouching and knifing glass when needed
- Fixed possible script runtime errors
- Improved domination
- Bots use explosives more if they have it
- Bots aim slower when ads'ing
- Fixed bots holding breath
- Fixed bots rubberbanding movement when their goal changes
- Added bots quickscoping with snipers
- Added bots reload canceling and fast swaps
- Bots use C4
- Improved revenge
- Bots can swap weapons on spawn more likely
- v2.0.0
- Initial reboot release
## Credits
- CoD4x Team - https://github.com/callofduty4x/CoD4x_Server
- INeedGames(me) - http://www.moddb.com/mods/bot-warfare
- PeZBot team - http://www.moddb.com/mods/pezbot
- Ability
- Salvation
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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

View File

@ -0,0 +1,20 @@
# IW3 Bot Warfare Waypoints
Welcome to the collection of waypoints for IW3 Bot Warfare.
This repo contains all of the waypoints in CSV format, a format that Bot Warfare can read at run time.
[Here is a tool](https://github.com/ineedbots/bw_node_tools/blob/master/src/gscwptocsv.js) that will convert a PeZBOT GSC into the CSV format.
## Waypoint Creators
- Freddy & Metaljag
- CannerZ45
- JAK (BF2all)
- MikeTheGuy
- Botmancod
- Hugo HG
- Stendby

View File

@ -0,0 +1,34 @@
33
-91.7391 1296.84 4.125,3 1,undefined,,,
-513.47 1297.05 4.125,0 2,undefined,,,
-513.532 892.596 4.125,1 4 3,undefined,,,
-95.627 888.155 4.125,0 22 2,undefined,,,
-515.998 507.737 4.125,2 5,undefined,,,
-513.599 95.4036 4.125,4 6,undefined,,,
-517.385 -314.375 4.125,5 7,undefined,,,
-517.357 -733.17 4.125,6 8,undefined,,,
-517.011 -1147.4 4.125,7 9,undefined,,,
-120.81 -1178.33 4.125,8 10 14,undefined,,,
-84.3189 -752.401 4.125,9 11,undefined,,,
299.118 -751.464 4.125,10 12,undefined,,,
705.61 -762.512 4.125,11 13 16 17,undefined,,,
732.46 -1171.01 4.125,14 12 15,undefined,,,
314.28 -1171.1 4.125,13 9,undefined,,,
1122.23 -1173.9 4.125,13 16,undefined,,,
1134.21 -779.143 4.125,15 12 32,undefined,,,
711.291 -372.404 4.125,12 18 23,undefined,,,
307.242 -334.239 4.125,17 19,undefined,,,
307.287 62.6363 4.125,18 20 21 24,undefined,,,
-102.402 70.1358 4.125,19,undefined,,,
312.679 465.682 4.125,19 22 25,undefined,,,
-106.068 473.136 4.125,21 3,undefined,,,
912.448 -340.926 4.125,17,undefined,,,
487.993 73.6146 4.125,19,undefined,,,
293.392 879.101 4.125,21 26,undefined,,,
712.057 888.205 4.125,25 27,undefined,,,
723.093 473.955 4.125,26 28,undefined,,,
1128.75 470.504 4.125,27 29,undefined,,,
1537.53 471.798 4.125,28 30,undefined,,,
1542.56 85.6186 4.125,29 31,undefined,,,
1542.67 -336.824 4.125,30 32,undefined,,,
1542.76 -749.58 4.125,31 16,undefined,,,
1 33
2 -91.7391 1296.84 4.125,3 1,undefined,,,
3 -513.47 1297.05 4.125,0 2,undefined,,,
4 -513.532 892.596 4.125,1 4 3,undefined,,,
5 -95.627 888.155 4.125,0 22 2,undefined,,,
6 -515.998 507.737 4.125,2 5,undefined,,,
7 -513.599 95.4036 4.125,4 6,undefined,,,
8 -517.385 -314.375 4.125,5 7,undefined,,,
9 -517.357 -733.17 4.125,6 8,undefined,,,
10 -517.011 -1147.4 4.125,7 9,undefined,,,
11 -120.81 -1178.33 4.125,8 10 14,undefined,,,
12 -84.3189 -752.401 4.125,9 11,undefined,,,
13 299.118 -751.464 4.125,10 12,undefined,,,
14 705.61 -762.512 4.125,11 13 16 17,undefined,,,
15 732.46 -1171.01 4.125,14 12 15,undefined,,,
16 314.28 -1171.1 4.125,13 9,undefined,,,
17 1122.23 -1173.9 4.125,13 16,undefined,,,
18 1134.21 -779.143 4.125,15 12 32,undefined,,,
19 711.291 -372.404 4.125,12 18 23,undefined,,,
20 307.242 -334.239 4.125,17 19,undefined,,,
21 307.287 62.6363 4.125,18 20 21 24,undefined,,,
22 -102.402 70.1358 4.125,19,undefined,,,
23 312.679 465.682 4.125,19 22 25,undefined,,,
24 -106.068 473.136 4.125,21 3,undefined,,,
25 912.448 -340.926 4.125,17,undefined,,,
26 487.993 73.6146 4.125,19,undefined,,,
27 293.392 879.101 4.125,21 26,undefined,,,
28 712.057 888.205 4.125,25 27,undefined,,,
29 723.093 473.955 4.125,26 28,undefined,,,
30 1128.75 470.504 4.125,27 29,undefined,,,
31 1537.53 471.798 4.125,28 30,undefined,,,
32 1542.56 85.6186 4.125,29 31,undefined,,,
33 1542.67 -336.824 4.125,30 32,undefined,,,
34 1542.76 -749.58 4.125,31 16,undefined,,,

View File

@ -0,0 +1,114 @@
113
1733.58 233.16 136.125,24 23 13,stand,,,
1453 -206.2 0.125,94 95,stand,,,
2183.12 240.522 -127.875,3,stand,,,
2157.11 -13.5664 -127.875,2 4,stand,,,
2311.73 -15.5734 -127.875,3 5,stand,,,
2288.88 310.29 0.125,4 6 92,stand,,,
2216.97 280.773 0.125,5 7 92,stand,,,
2219.71 -23.0341 0.125,6 8,stand,,,
2308.17 -13.9387 0.125,7 9,stand,,,
2328.48 268.216 128.125,8 10,stand,,,
2260.59 348.646 136.125,9 11,stand,,,
2064.81 338.414 136.125,10 12 14 24 17 25,stand,,,
1632.71 -56.1313 136.125,11 13 14 22 23 24 25,stand,,,
1812.12 -149.269 136.125,12 14 22 0,stand,,,
2173.09 -28.1784 136.125,13 11 12 15 17,stand,,,
2344.27 16.8739 136.125,16 14 17,climb,9.53491 89.081 0,,
2337.7 54.0345 244.125,15,climb,7.20032 91.108 0,,
2312 -208.322 136.125,14 15 21 11,stand,,,
2090.09 -376.612 40.125,19 93,stand,,,
2141.46 -424.214 10.125,18 20,stand,,,
2260.75 -407.277 10.125,19 21,climb,2.56409 87.5739 0,,
2261.49 -367.761 140.125,20 17,climb,81.6656 91.3422 0,,
1456.3 178.006 136.125,12 13 23 26 30,stand,,,
1690.37 128.417 136.125,0 12 24 22,stand,,,
1876.51 251.916 136.125,0 23 12 11 25,stand,,,
1511.61 -275.268 136.125,12 24 11 26 27 28 30 112,stand,,,
1238.5 24.3717 136.125,22 25 27 28 30,stand,,,
1289.75 -277.416 136.125,25 26 28,stand,,,
1243.26 276.144 136.125,26 25 27 29 112,stand,,,
940.341 265.083 136.125,30 28 36 112,stand,,,
1086.62 -82.7684 136.125,26 25 29 22 31 36,stand,,,
841.048 -255.803 136.125,30 32 34,stand,,,
423.835 -322.087 136.125,31 33 37 105,stand,,,
255.63 135.289 136.125,32 34 37 38 105,stand,,,
651.811 235.207 136.125,33 31 35 37,stand,,,
784.952 43.6093 136.125,34 36,stand,,,
944.779 167.056 136.125,29 30 35 112,stand,,,
479.938 8.19693 136.125,34 32 33 38 105,stand,,,
-174.12 0.257538 136.125,33 37 39 40,stand,,,
-430.595 -108.045 136.125,38 44 45,stand,,,
-309.213 12.8544 136.125,38 41,stand,,,
-494.578 178.099 136.125,40 42 43,stand,,,
-385.362 269.799 136.125,41 48,stand,,,
-683.572 279.303 136.125,41 44 45 51,stand,,,
-795.361 85.1956 136.125,43 39 45,stand,,,
-878.039 -33.4477 136.125,39 44 43,stand,,,
-208.505 416.134 10.125,47 102 107 108,stand,,,
-381.332 415.125 10.1412,46 48,climb,6.18958 -89.4159 0,,
-381.262 381.438 140.125,47 42,climb,8.79333 -84.6643 0,,
-824.489 240.749 0.935783,50 52 54,stand,,,
-824.181 344.875 0.125002,49 51,climb,0.52063 90.705 0,,
-786.003 344.435 136.125,50 43,climb,60.083 88.3979 0,,
-969.645 192.84 1.125,49 53,stand,,,
-821.936 134.855 1.125,52 54,stand,,,
-524.898 242.007 1.12467,53 49 55 59,stand,,,
-393.706 205.237 0.125002,54 56 60 71,stand,,,
-376.834 -193.953 0.125,55 57 68,stand,,,
-309.5 -206.009 18.2773,56 58,stand,,,
-224.194 -171.441 0.125002,57 59,stand,,,
-240.741 257.243 1.125,58 54 71 70 106,stand,,,
-660.534 59.9441 1.04621,55 61 69 70 71,stand,,,
-641.537 -73.9196 1.04795,60 62 68,stand,,,
-554.322 -218.581 0.125002,61 63 63 68,stand,,,
-592.157 -305.256 0.125002,64 62 62 68,stand,,,
-593.869 -382.365 40.125,63 65,stand,,,
-527.224 -421.047 10.125,64 66,stand,,,
-168.344 -418.036 10.125,65 67 77,stand,,,
480.313 -422.535 10.125,76 77 66,stand,,,
-525.719 -108.292 2.80823,56 62 63 61,stand,,,
188.086 176.153 0.124998,60 70 71 80,stand,,,
16.1659 99.4017 0.124998,69 60 71 59 72,stand,,,
-337.133 81.1536 0.124998,55 60 70 69 59 106,stand,,,
90.4592 -73.2581 0.125002,70 73 84,stand,,,
431.51 -67.6764 0.383909,72 74 81 84,stand,,,
367.224 -213.226 0.124999,73 81 75,stand,,,
486.026 -311.535 0.124999,76 81 74,stand,,,
484.432 -375.919 40.1477,75 67,stand,,,
827.519 -426.026 10.125,79 67 66,stand,,,
828.309 -305.505 0.124999,79 80 100,stand,,,
825.257 -375.195 33.4722,77 78,stand,,,
820.428 69.1938 1.125,78 69 82 85 98,stand,,,
598.283 -103.718 0.124999,74 73 75 82 84,stand,,,
613.617 56.6777 1.125,81 83 80,stand,,,
283.634 60.791 0.125002,82 84,stand,,,
295.97 -43.0754 0.125002,83 72 73 81,stand,,,
878.779 194.709 0.125,80 86 109,stand,,,
1047.49 205.981 1.125,85 87 109,stand,,,
1184.99 352.944 0.124999,86 88,stand,,,
1558.39 343.08 0.125001,87 89,stand,,,
1540.8 112.242 0.125001,88 90 97,stand,,,
1689.13 50.6814 1.125,89 91 94,stand,,,
2007.9 64.0222 0.124998,90 92 93,stand,,,
2046.59 273.329 0.124998,91 5 6,stand,,,
2068.54 -287.147 0.125,18 91,stand,,,
1675.8 -180.166 0.125001,90 1 95,stand,,,
1318.66 -61.636 0.125001,1 96 94,stand,,,
1215.81 -22.4591 0.125,95 97 101,stand,,,
1203.76 118.287 1.02737,96 89 98,stand,,,
977.201 40.5211 0.125,97 80 99,stand,,,
972.907 -210.071 0.125001,98 100 101,stand,,,
921.692 -266.244 0.125001,99 78,stand,,,
1217.07 -241.919 1.125,99 96,stand,,,
182.922 413.127 10.1504,103 46,climb,15.5994 -87.7222 0,,
185.194 390.797 140.125,102 104,climb,-2.07214 -90.1886 0,,
196.821 351.087 136.125,103 105,stand,,,
341.216 341.414 136.125,104 33 32 37,stand,,,
-297.769 323.862 0.492422,107 59 71,stand,,,
-221.815 375.917 39.737,46 106,stand,,,
780.136 420.141 10.125,46 110 111,stand,,,
870.801 312.352 1.125,110 86 85,stand,,,
802.575 375.584 35.8361,108 109,stand,,,
1140.29 409.125 10.125,108 112,climb,18.4943 -90.086 0,,
1143.36 362.718 136.125,111 29 36 28 25,climb,16.1761 -90.2344 0,,
1 113
2 1733.58 233.16 136.125,24 23 13,stand,,,
3 1453 -206.2 0.125,94 95,stand,,,
4 2183.12 240.522 -127.875,3,stand,,,
5 2157.11 -13.5664 -127.875,2 4,stand,,,
6 2311.73 -15.5734 -127.875,3 5,stand,,,
7 2288.88 310.29 0.125,4 6 92,stand,,,
8 2216.97 280.773 0.125,5 7 92,stand,,,
9 2219.71 -23.0341 0.125,6 8,stand,,,
10 2308.17 -13.9387 0.125,7 9,stand,,,
11 2328.48 268.216 128.125,8 10,stand,,,
12 2260.59 348.646 136.125,9 11,stand,,,
13 2064.81 338.414 136.125,10 12 14 24 17 25,stand,,,
14 1632.71 -56.1313 136.125,11 13 14 22 23 24 25,stand,,,
15 1812.12 -149.269 136.125,12 14 22 0,stand,,,
16 2173.09 -28.1784 136.125,13 11 12 15 17,stand,,,
17 2344.27 16.8739 136.125,16 14 17,climb,9.53491 89.081 0,,
18 2337.7 54.0345 244.125,15,climb,7.20032 91.108 0,,
19 2312 -208.322 136.125,14 15 21 11,stand,,,
20 2090.09 -376.612 40.125,19 93,stand,,,
21 2141.46 -424.214 10.125,18 20,stand,,,
22 2260.75 -407.277 10.125,19 21,climb,2.56409 87.5739 0,,
23 2261.49 -367.761 140.125,20 17,climb,81.6656 91.3422 0,,
24 1456.3 178.006 136.125,12 13 23 26 30,stand,,,
25 1690.37 128.417 136.125,0 12 24 22,stand,,,
26 1876.51 251.916 136.125,0 23 12 11 25,stand,,,
27 1511.61 -275.268 136.125,12 24 11 26 27 28 30 112,stand,,,
28 1238.5 24.3717 136.125,22 25 27 28 30,stand,,,
29 1289.75 -277.416 136.125,25 26 28,stand,,,
30 1243.26 276.144 136.125,26 25 27 29 112,stand,,,
31 940.341 265.083 136.125,30 28 36 112,stand,,,
32 1086.62 -82.7684 136.125,26 25 29 22 31 36,stand,,,
33 841.048 -255.803 136.125,30 32 34,stand,,,
34 423.835 -322.087 136.125,31 33 37 105,stand,,,
35 255.63 135.289 136.125,32 34 37 38 105,stand,,,
36 651.811 235.207 136.125,33 31 35 37,stand,,,
37 784.952 43.6093 136.125,34 36,stand,,,
38 944.779 167.056 136.125,29 30 35 112,stand,,,
39 479.938 8.19693 136.125,34 32 33 38 105,stand,,,
40 -174.12 0.257538 136.125,33 37 39 40,stand,,,
41 -430.595 -108.045 136.125,38 44 45,stand,,,
42 -309.213 12.8544 136.125,38 41,stand,,,
43 -494.578 178.099 136.125,40 42 43,stand,,,
44 -385.362 269.799 136.125,41 48,stand,,,
45 -683.572 279.303 136.125,41 44 45 51,stand,,,
46 -795.361 85.1956 136.125,43 39 45,stand,,,
47 -878.039 -33.4477 136.125,39 44 43,stand,,,
48 -208.505 416.134 10.125,47 102 107 108,stand,,,
49 -381.332 415.125 10.1412,46 48,climb,6.18958 -89.4159 0,,
50 -381.262 381.438 140.125,47 42,climb,8.79333 -84.6643 0,,
51 -824.489 240.749 0.935783,50 52 54,stand,,,
52 -824.181 344.875 0.125002,49 51,climb,0.52063 90.705 0,,
53 -786.003 344.435 136.125,50 43,climb,60.083 88.3979 0,,
54 -969.645 192.84 1.125,49 53,stand,,,
55 -821.936 134.855 1.125,52 54,stand,,,
56 -524.898 242.007 1.12467,53 49 55 59,stand,,,
57 -393.706 205.237 0.125002,54 56 60 71,stand,,,
58 -376.834 -193.953 0.125,55 57 68,stand,,,
59 -309.5 -206.009 18.2773,56 58,stand,,,
60 -224.194 -171.441 0.125002,57 59,stand,,,
61 -240.741 257.243 1.125,58 54 71 70 106,stand,,,
62 -660.534 59.9441 1.04621,55 61 69 70 71,stand,,,
63 -641.537 -73.9196 1.04795,60 62 68,stand,,,
64 -554.322 -218.581 0.125002,61 63 63 68,stand,,,
65 -592.157 -305.256 0.125002,64 62 62 68,stand,,,
66 -593.869 -382.365 40.125,63 65,stand,,,
67 -527.224 -421.047 10.125,64 66,stand,,,
68 -168.344 -418.036 10.125,65 67 77,stand,,,
69 480.313 -422.535 10.125,76 77 66,stand,,,
70 -525.719 -108.292 2.80823,56 62 63 61,stand,,,
71 188.086 176.153 0.124998,60 70 71 80,stand,,,
72 16.1659 99.4017 0.124998,69 60 71 59 72,stand,,,
73 -337.133 81.1536 0.124998,55 60 70 69 59 106,stand,,,
74 90.4592 -73.2581 0.125002,70 73 84,stand,,,
75 431.51 -67.6764 0.383909,72 74 81 84,stand,,,
76 367.224 -213.226 0.124999,73 81 75,stand,,,
77 486.026 -311.535 0.124999,76 81 74,stand,,,
78 484.432 -375.919 40.1477,75 67,stand,,,
79 827.519 -426.026 10.125,79 67 66,stand,,,
80 828.309 -305.505 0.124999,79 80 100,stand,,,
81 825.257 -375.195 33.4722,77 78,stand,,,
82 820.428 69.1938 1.125,78 69 82 85 98,stand,,,
83 598.283 -103.718 0.124999,74 73 75 82 84,stand,,,
84 613.617 56.6777 1.125,81 83 80,stand,,,
85 283.634 60.791 0.125002,82 84,stand,,,
86 295.97 -43.0754 0.125002,83 72 73 81,stand,,,
87 878.779 194.709 0.125,80 86 109,stand,,,
88 1047.49 205.981 1.125,85 87 109,stand,,,
89 1184.99 352.944 0.124999,86 88,stand,,,
90 1558.39 343.08 0.125001,87 89,stand,,,
91 1540.8 112.242 0.125001,88 90 97,stand,,,
92 1689.13 50.6814 1.125,89 91 94,stand,,,
93 2007.9 64.0222 0.124998,90 92 93,stand,,,
94 2046.59 273.329 0.124998,91 5 6,stand,,,
95 2068.54 -287.147 0.125,18 91,stand,,,
96 1675.8 -180.166 0.125001,90 1 95,stand,,,
97 1318.66 -61.636 0.125001,1 96 94,stand,,,
98 1215.81 -22.4591 0.125,95 97 101,stand,,,
99 1203.76 118.287 1.02737,96 89 98,stand,,,
100 977.201 40.5211 0.125,97 80 99,stand,,,
101 972.907 -210.071 0.125001,98 100 101,stand,,,
102 921.692 -266.244 0.125001,99 78,stand,,,
103 1217.07 -241.919 1.125,99 96,stand,,,
104 182.922 413.127 10.1504,103 46,climb,15.5994 -87.7222 0,,
105 185.194 390.797 140.125,102 104,climb,-2.07214 -90.1886 0,,
106 196.821 351.087 136.125,103 105,stand,,,
107 341.216 341.414 136.125,104 33 32 37,stand,,,
108 -297.769 323.862 0.492422,107 59 71,stand,,,
109 -221.815 375.917 39.737,46 106,stand,,,
110 780.136 420.141 10.125,46 110 111,stand,,,
111 870.801 312.352 1.125,110 86 85,stand,,,
112 802.575 375.584 35.8361,108 109,stand,,,
113 1140.29 409.125 10.125,108 112,climb,18.4943 -90.086 0,,
114 1143.36 362.718 136.125,111 29 36 28 25,climb,16.1761 -90.2344 0,,

Some files were not shown because too many files have changed in this diff Show More