85 Commits

Author SHA1 Message Date
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
abfa41e24d smaall changes 2022-05-08 18:01:17 -06:00
3339ff2656 Link 2022-05-08 17:51:57 -06:00
a64a0cc810 Version 2.1.0 2022-05-08 17:46:25 -06:00
9c20cf621b bot chatter system 2022-05-08 14:43:51 -06:00
f667c96717 Added bot notifications 2022-05-06 19:06:20 -06:00
c2f86e7120 fixed bombs 2022-05-02 15:25:08 -06:00
d3f2f192f0 frontline waypoints 2022-04-25 16:30:20 -06:00
762257ca8a pick up gun 2022-04-25 11:11:01 -06:00
e773996274 Prep work for bot chatter 2022-04-20 12:57:19 -06:00
7eb6c7d246 Better stuck detection for up and down 2022-04-08 23:43:53 -06:00
15143dbb85 change some values for detecting stuckness 2022-04-08 22:56:23 -06:00
0f95ebacb8 Fix bots getting stuck a bit 2022-04-08 22:43:49 -06:00
2a20a834ec Bot do random action at obj 2022-04-08 20:35:17 -06:00
99dbe2cd87 github supports gsc 2022-03-23 11:49:12 -06:00
090fc5f7a8 better 2021-12-21 21:52:37 -06:00
3258183b1c better code completion 2021-12-21 21:43:42 -06:00
5021547734 table 2021-09-09 12:55:11 -06:00
a4e3fbb42b gitattrs and editorconfig 2021-09-09 11:23:12 -06:00
7c041900ff oops lol 2021-09-05 14:50:56 -06:00
6ee4d2e2fd max clients are needed on the cmd 2021-09-05 00:38:36 -06:00
988d471fdb configs 2021-09-05 00:32:25 -06:00
3711a8e8ad update 2021-09-04 23:59:36 -06:00
c3d3dc8323 cleanup 2021-09-04 23:59:27 -06:00
b5fb8c7760 clean up 2021-09-04 23:59:17 -06:00
c366c041fb Add vscode settings 2021-09-03 10:58:56 -06:00
79592e6056 Added bot_aim dvar 2021-08-26 10:18:53 -06:00
ca9dad8b79 fixed script link error 2021-08-25 13:01:09 -06:00
5fe8aee7e2 Fixed bots classes 2021-08-25 12:56:03 -06:00
fab64bc3ed Merge pull request #9 from Kianda/patch-1
not OP disable RPG on Perks
2021-08-10 12:07:55 -06:00
feb573d43b not OP disable RPG on Perks
Integration for commit d788ce7cb3
2021-08-07 17:22:48 +02:00
d788ce7cb3 no tube weapons if no op allowed 2021-08-06 19:13:43 -06:00
cae032eb9a minor improvement to sprint 2021-07-29 13:38:53 -06:00
d9a8ac04c4 Small fix 2021-07-25 21:56:09 -06:00
e606af216c Needs 4 params 2021-07-13 19:18:48 -06:00
2972d4e497 bots target through glass 2021-07-13 19:02:45 -06:00
ca0b0032eb Format scripts 2021-06-18 14:33:09 -06:00
6d9dbb262a Added deploy and astylerc 2021-06-18 14:17:58 -06:00
a568042934 Abstract class choice 2021-06-14 13:22:12 -06:00
e3a65e892c More sprint 2021-06-13 19:10:29 -06:00
30a9888067 improved bot sight 2021-06-13 14:19:43 -06:00
4dcea05c2a Reduce more script usage 2021-06-04 14:07:11 -06:00
168a2e621c some weap changes 2021-06-02 10:28:59 -06:00
c9f5b6cf33 prevent stuck 2021-05-27 14:17:45 -06:00
3b7669dbd0 Greatly reduce var usage 2021-05-26 10:47:29 -06:00
589fe63bc8 Update wps 2021-05-25 21:06:50 -06:00
712f2c3a37 Added use button 2021-05-25 16:56:48 -06:00
ab612e8ff6 Reduced var usage 2021-05-25 16:53:10 -06:00
a5b3ecc81b Fix runtime error when loading wps 2021-05-23 13:33:38 -06:00
9c1f4552c2 Added low mem mode 2021-05-19 20:09:50 -06:00
91044ff842 Improved bots mantling 2021-05-19 15:40:14 -06:00
e1326342d2 Fix possible runtime error 2021-05-18 14:59:50 -06:00
a6d663b67c formatting 2021-05-15 22:54:01 -06:00
e7bf74894d Link the editor 2021-05-15 22:52:07 -06:00
01dc7ea667 Finally add wp editor md 2021-05-15 22:50:57 -06:00
b1808c66ea Update ss 2021-05-15 00:34:18 -06:00
466 changed files with 128752 additions and 89316 deletions

27
.astylerc Normal file
View File

@ -0,0 +1,27 @@
# try to mimic the original gsc provided
# mode=ghc
mode=c
style=allman
indent=force-tab=2
lineend=windows
pad-oper
pad-paren-in
pad-header
# pad-brackets-in
fill-empty-lines
squeeze-lines=2
squeeze-ws
break-one-line-headers
add-braces
remove-comment-prefix
break-blocks
indent-switches
indent-cases
indent-after-parens
indent-col1-comments
remove-comment-prefix

11
.editorconfig Normal file
View File

@ -0,0 +1,11 @@
root = true
[*]
indent_style = tab
indent_size = 2
charset = latin1
trim_trailing_whitespace = false
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
*.gsx linguist-language=GSC

19
.github/workflows/main.yml vendored Normal file
View File

@ -0,0 +1,19 @@
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
- name: Compile test script
run: |
gsc-tool.exe parse iw5 pc .

37
.gitignore vendored
View File

@ -1,31 +1,8 @@
# Ignore everything in repository root
/*
# Files to not ignore
!/.gitignore
!/botnames.txt
!/z_devserver.bat
!/z_serverdev.bat
!/z_server.bat
!/z_client.bat
!/z_dev.bat
# Folder to not ignore
!/main_shared/
*.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
!/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

19
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,19 @@
{
"astyle.astylerc": "${workspaceRoot}/.astylerc",
"astyle.additional_languages": [
"gsc",
"gsx"
],
"[gsc]": {
"editor.defaultFormatter": "chiehyu.vscode-astyle",
},
"editor.quickSuggestions": {
"other": true,
"comments": true,
"strings": true
},
"vscode-codscript.use_builtin_completionItems": false,
"files.associations": {
"*.gsx": "gsc"
}
}

166
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.me post [here](https://cod4x.me/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]().
- 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.
@ -57,17 +57,15 @@ Make sure to disable this DVAR by adding ```set bots_main_firstIsHost 0``` in yo
- ... 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.me/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).
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]().
0. Make sure that [CoD4x server + client](https://cod4x.me/) is installed, updated and working properly.
- Download the [latest release](https://github.com/ineedbots/cod4x_bot_warfare/releases) of Bot Warfare.
0. Make sure that [CoD4x server + client](https://cod4x.ovh/) is installed, updated and working properly.
- 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
@ -79,88 +77,66 @@ You can easily setup a local LAN dedicated server for you to join and play on. H
- Pressing the menu button again closes menus.
### DVARs
- bots_manage_add - an integer amount of bots to add to the game, resets to 0 once the bots have been added.
- for example: 'bots_manage_add 10' will add 10 bots to the game.
| Dvar | Description | Default Value |
|----------------------------------|---------------------------------------------------------------------------------------------|--------------:|
| 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. | 1 |
| bots_main_debug | Enable the in-game waypoint editor. | 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. | 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`. | 0 |
| bots_team_mode | When `bots_team_force` is `true` and `bots_team` is `autoassign`, players/bots counting method. <ul><li>`0` - counts both players and bots.</li><li>`1` - only counts bots</li></ul> | 0 |
| bots_skill | Bots' difficulty.<ul><li>`0` - Random difficulty for each bot.</li><li>`1` - Easiest difficulty for all bots.</li><li>`2` to `6` - Between easy and hard difficulty for all bots.</li><li>`7` - The hardest difficulty for all bots.</li><li>`8` - custom (look at the `bots_skill_<team>_<difficulty>` dvars)</li></ul> | 0 |
| bots_skill_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. | 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. | 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 |
- bots_manage_fill - an integer amount of players/bots (depends on bots_manage_fill_mode) to retain on the server, it will automatically add bots to fill player space.
- for example: 'bots_manage_fill 10' will have the server retain 10 players in the server, if there are less than 10, it will add bots until that value is reached.
- bots_manage_fill_mode - a value to indicate if the server should consider only bots or players and bots when filling player space.
- 0 will consider both players and bots.
- 1 will only consider bots.
- bots_manage_fill_kick - a boolean value (0 or 1), whether or not if the server should kick bots if the amount of players/bots (depends on bots_manage_fill_mode) exceeds the value of bots_manage_fill.
- bots_manage_fill_spec - a boolean value (0 or 1), whether or not if the server should consider players who are on the spectator team when filling player space.
---
- bots_team - a string, the value indicates what team the bots should join:
- 'autoassign' will have bots balance the teams
- 'allies' will have the bots join the allies team
- 'axis' will have the bots join the axis team
- 'custom' will have bots_team_amount bots on the axis team, the rest will be on the allies team
- bots_team_amount - an integer amount of bots to have on the axis team if bots_team is set to 'custom', the rest of the bots will be placed on the allies team.
- for example: there are 5 bots on the server and 'bots_team_amount 3', then 3 bots will be placed on the axis team, the other 2 will be placed on the allies team.
- bots_team_force - a boolean value (0 or 1), whether or not if the server should enforce periodically the bot's team instead of just a single team when the bot is added to the game.
- for example: 'bots_team_force 1' and 'bots_team autoassign' and the teams become to far unbalanced, then the server will change a bot's team to make it balanced again.
- bots_team_mode - a value to indicate if the server should consider only bots or players and bots when counting players on the teams.
- 0 will consider both players and bots.
- 1 will only consider bots.
---
- bots_skill - value to indicate how difficult the bots should be.
- 0 will be mixed difficultly
- 1 will be the most easy
- 2-6 will be in between most easy and most hard
- 7 will be the most hard.
- 8 will be custom.
- bots_skill_axis_hard - an integer amount of hard bots on the axis team.
- bots_skill_axis_med - an integer amount of medium bots on the axis team.
- bots_skill_allies_hard - an integer amount of hard bots on the allies team.
- bots_skill_allies_med - an integer amount of medium bots on the allies team
- if bots_skill is 8 (custom). The remaining bots on the team will become easy bots
- for example: having 5 bots on the allies team, 'bots_skill_allies_hard 2' and 'bots_skill_allies_med 2' will have 2 hard bots, 2 medium bots, and 1 easy bot on the allies team.
---
- bots_loadout_reasonable - a boolean value (0 or 1), whether or not if the bots should filter out bad create a class selections
- bots_loadout_allow_op - a boolean value (0 or 1), whether or not if the bots are allowed to use jug, marty, etc.
- bots_loadout_rank - an integer number, bots will be around this rank, -1 is average of all players in game, 0 is all random
- bots_play_move - a boolean value (0 or 1), whether or not if the bots will move
- bots_play_knife - a boolean value (0 or 1), whether or not if the bots will use the knife
- bots_play_fire - a boolean value (0 or 1), whether or not if the bots will fire their weapons
- bots_play_nade - a boolean value (0 or 1), whether or not if the bots will grenade
- bots_play_obj - a boolean value (0 or 1), whether or not if the bots will play the objective
- bots_play_camp - a boolean value (0 or 1), whether or not if the bots will camp
- bots_play_jumpdrop - a boolean value (0 or 1), whether or not if the bots will jump shot or drop shot
- bots_play_target_other - a boolean value (0 or 1), whether or not if the bots will target claymores, killstreaks, etc.
- bots_play_killstreak - a boolean value (0 or 1), whether or not if the bots will use killstreaks
- bots_play_ads - a boolean value (0 or 1), whether or not if the bots will ads
---
- bots_main - a boolean value (0 or 1), enables or disables the mod
- bots_main_firstIsHost - a boolean value (0 or 1), the first player to connect is considered a host
- bots_main_GUIDs - a list of GUIDs (comma seperated) of players who will be considered a host
- bots_main_waitForHostTime - a float value, how long in seconds to wait for the host player to connect before adding in bots
- bots_main_menu - a boolean value (0 or 1), enables or disables the menu
- bots_main_debug - a boolean value (0 or 1), enables or disables the waypoint editor
## Changelog
- 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
- v2.0.1
- Reduced bots crouching
- Increased bots sprinting
@ -182,7 +158,7 @@ You can easily setup a local LAN dedicated server for you to join and play on. H
## Credits
- CoD4x Team - https://github.com/callofduty4x/CoD4x_Server
- INeedGames(me) - http://www.moddb.com/mods/bot-warfare
- INeedGames - http://www.moddb.com/mods/bot-warfare
- PeZBot team - http://www.moddb.com/mods/pezbot
- Ability
- Salvation

View File

Before

Width:  |  Height:  |  Size: 655 KiB

After

Width:  |  Height:  |  Size: 655 KiB

BIN
bw-assets/console-map.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
bw-assets/console.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
bw-assets/editor-addwp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
bw-assets/editor-addwp2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
bw-assets/editor-link.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
bw-assets/editor.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
bw-assets/saved.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

94
bw-assets/wpedit.md Normal file
View File

@ -0,0 +1,94 @@
# 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 CoD4 maps, this is the read for you.
## Contents
- [Setting up the Waypoint Editor](#Setting-up-the-Waypoint-Editor)
- [The Editor](#The-Editor)
## Setting up the Waypoint Editor
The Bot Warfare mod comes with the Waypoint Editor out of the box, so its just a matter of telling the mod you want to use it. Its a matter of setting the `bots_main_debug` DVAR to `1`.
Start your server with the Bot Warfare mod.
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](/bw-assets/console-map.png)
It should be noted that waypoints load from the 'waypoints' folder (<fs_game>\scriptdata\waypoints) for a csv file.
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](/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.
- The green list of numbers are the waypoints linked to that waypoint.
- The pink lines show the links between the waypoints, a link defines that a bot can walk from A to B.
- The white lines show the 'angles' that a waypoint has, these are used for grenade, claymore and tube waypoints. It's used to tell the bot where to look at when grenading/claymoring, etc.
---
Pressing any of these buttons will initiate a command to the Waypoint Editor.
Each button has a secondary modifier button, and can be pressed shortly after pressing the primary button.
- SecondaryOffhand (stun) - Add Waypoint
- Press nothing - Make a waypoint of your stance
- ADS - Make a climb waypoint
- Attack + Use - Make a tube waypoint
- Attack - Make a grenade waypoint
- Use - Make a claymore waypoint
- Melee - Link Waypoint
- Press nothing - Link
- ADS - Unlink
- FragButton (grenade) - Delete Waypoint
- Press nothing - Delete Waypoint
- Attack - Delete all waypoints
- ADS - (Re)Load Waypoints
- UseButton + Attack - Save Waypoints
- Press nothing - Save waypoints
- ADS - Toggle autolink waypoints (links waypoints as you create them)
---
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](/bw-assets/editor-addwp.png)
And I added a second waypoint.<br>
![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:
- any stance ('stand', 'crouch', 'prone') - bots will have this stance upon reaching this waypoint
- grenade - bots will look at the angles you were looking at when you made the waypoint and throw a grenade from the waypoint
- tube - bots will look at the angles you were looking at when you made the waypoint and switch to a launcher and fire
- claymore - bots will look at the angles you were looking at when you made the waypoint and place a claymore or c4
- camp ('crouch' waypoint with only one linked waypoint) - bots will look at the angles you were looking at when you made the waypoint and camp
- 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](/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.
Now go and waypoint the whole map out. This may take awhile and can be pretty tedious.
Once you feel like you are done, press the Save buttons. This will generate a [CSV](https://en.wikipedia.org/wiki/Comma-separated_values) output to your waypoints folder!
That is it! The waypoints should load next time you start your game!
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)

Binary file not shown.

View File

@ -1,202 +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 ///
/// ///
////////////////////////////////////////////////////////////
// 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 dedicated "2" // 0 = Listen, 1 = LAN, 2 = Internet ( you probably want 2 )
set rcon_password "qazqaz" // password for remote access, leave empty to deactivate, min 8 characters
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
set sv_authtoken "12312321"
// 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 net_ip "0.0.0.0" // not necessary to be set
// set net_port 28960 // network port
// 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 "1" //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 "0" //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 "1" //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 "0"
set scr_dom_numlives "0"
set scr_dom_playerrespawndelay "3"
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"

Submodule main/waypoints deleted from 55d419cdb2

View File

@ -1,878 +0,0 @@
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
#include maps\mp\bots\_bot_utility;
/*
Initiates the whole bot scripts.
*/
init()
{
level.bw_VERSION = "2.0.1";
if(getDvar("bots_main") == "")
setDvar("bots_main", true);
if (!getDvarInt("bots_main"))
return;
thread load_waypoints();
cac_init_patch();
thread hook_callbacks();
if(getDvar("bots_main_GUIDs") == "")
setDvar("bots_main_GUIDs", "");//guids of players who will be given host powers, comma seperated
if(getDvar("bots_main_firstIsHost") == "")
setDvar("bots_main_firstIsHost", true);//first player to connect is a host
if(getDvar("bots_main_waitForHostTime") == "")
setDvar("bots_main_waitForHostTime", 10.0);//how long to wait to wait for the host player
if(getDvar("bots_manage_add") == "")
setDvar("bots_manage_add", 0);//amount of bots to add to the game
if(getDvar("bots_manage_fill") == "")
setDvar("bots_manage_fill", 0);//amount of bots to maintain
if(getDvar("bots_manage_fill_spec") == "")
setDvar("bots_manage_fill_spec", true);//to count for fill if player is on spec team
if(getDvar("bots_manage_fill_mode") == "")
setDvar("bots_manage_fill_mode", 0);//fill mode, 0 adds everyone, 1 just bots, 2 maintains at maps, 3 is 2 with 1
if(getDvar("bots_manage_fill_kick") == "")
setDvar("bots_manage_fill_kick", false);//kick bots if too many
if(getDvar("bots_team") == "")
setDvar("bots_team", "autoassign");//which team for bots to join
if(getDvar("bots_team_amount") == "")
setDvar("bots_team_amount", 0);//amount of bots on axis team
if(getDvar("bots_team_force") == "")
setDvar("bots_team_force", false);//force bots on team
if(getDvar("bots_team_mode") == "")
setDvar("bots_team_mode", 0);//counts just bots when 1
if(getDvar("bots_skill") == "")
setDvar("bots_skill", 0);//0 is random, 1 is easy 7 is hard, 8 is custom, 9 is completely random
if(getDvar("bots_skill_axis_hard") == "")
setDvar("bots_skill_axis_hard", 0);//amount of hard bots on axis team
if(getDvar("bots_skill_axis_med") == "")
setDvar("bots_skill_axis_med", 0);
if(getDvar("bots_skill_allies_hard") == "")
setDvar("bots_skill_allies_hard", 0);
if(getDvar("bots_skill_allies_med") == "")
setDvar("bots_skill_allies_med", 0);
if(getDvar("bots_loadout_reasonable") == "")//filter out the bad 'guns' and perks
setDvar("bots_loadout_reasonable", false);
if(getDvar("bots_loadout_allow_op") == "")//allows jug, marty and laststand
setDvar("bots_loadout_allow_op", true);
if(getDvar("bots_loadout_rank") == "")// what rank the bots should be around, -1 is around the players, 0 is all random
setDvar("bots_loadout_rank", -1);
if(getDvar("bots_loadout_prestige") == "")// what pretige the bots will be, -1 is the players, -2 is random
setDvar("bots_loadout_prestige", -1);
if(getDvar("bots_play_move") == "")//bots move
setDvar("bots_play_move", true);
if(getDvar("bots_play_knife") == "")//bots knife
setDvar("bots_play_knife", true);
if(getDvar("bots_play_fire") == "")//bots fire
setDvar("bots_play_fire", true);
if(getDvar("bots_play_nade") == "")//bots grenade
setDvar("bots_play_nade", true);
if(getDvar("bots_play_obj") == "")//bots play the obj
setDvar("bots_play_obj", true);
if(getDvar("bots_play_camp") == "")//bots camp and follow
setDvar("bots_play_camp", true);
if(getDvar("bots_play_jumpdrop") == "")//bots jump and dropshot
setDvar("bots_play_jumpdrop", true);
if(getDvar("bots_play_target_other") == "")//bot target non play ents (vehicles)
setDvar("bots_play_target_other", true);
if(getDvar("bots_play_killstreak") == "")//bot use killstreaks
setDvar("bots_play_killstreak", true);
if(getDvar("bots_play_ads") == "")//bot ads
setDvar("bots_play_ads", true);
if(!isDefined(game["botWarfare"]))
game["botWarfare"] = true;
level.defuseObject = undefined;
level.bots_smokeList = List();
level.tbl_PerkData[0]["reference_full"] = true;
for(h = 1; h < 6; h++)
for(i = 0; i < 3; i++)
level.default_perk["CLASS_CUSTOM"+h][i] = "specialty_null";
level.bots_minSprintDistance = 315;
level.bots_minSprintDistance *= level.bots_minSprintDistance;
level.bots_minGrenadeDistance = 256;
level.bots_minGrenadeDistance *= level.bots_minGrenadeDistance;
level.bots_maxGrenadeDistance = 1024;
level.bots_maxGrenadeDistance *= level.bots_maxGrenadeDistance;
level.bots_maxKnifeDistance = 80;
level.bots_maxKnifeDistance *= level.bots_maxKnifeDistance;
level.bots_goalDistance = 27.5;
level.bots_goalDistance *= level.bots_goalDistance;
level.bots_noADSDistance = 200;
level.bots_noADSDistance *= level.bots_noADSDistance;
level.bots_maxShotgunDistance = 500;
level.bots_maxShotgunDistance *= level.bots_maxShotgunDistance;
level.bots_listenDist = 100;
level.smokeRadius = 255;
level.bots = [];
level.bots_fullautoguns = [];
level.bots_fullautoguns["rpd"] = true;
level.bots_fullautoguns["m60e4"] = true;
level.bots_fullautoguns["saw"] = true;
level.bots_fullautoguns["ak74u"] = true;
level.bots_fullautoguns["mp5"] = true;
level.bots_fullautoguns["p90"] = true;
level.bots_fullautoguns["skorpion"] = true;
level.bots_fullautoguns["uzi"] = true;
level.bots_fullautoguns["g36c"] = true;
level.bots_fullautoguns["m4"] = true;
level.bots_fullautoguns["ak47"] = true;
level.bots_fullautoguns["mp44"] = true;
level thread fixGamemodes();
level thread onUAVAlliesUpdate();
level thread onUAVAxisUpdate();
level thread chopperWatch();
level thread onPlayerConnect();
level thread handleBots();
level thread maps\mp\bots\_bot_http::doVersionCheck();
}
/*
Starts the threads for bots.
*/
handleBots()
{
level thread teamBots();
level thread diffBots();
level addBots();
while(!level.intermission)
wait 0.05;
setDvar("bots_manage_add", getBotArray().size);
}
/*
The hook callback for when any player becomes damaged.
*/
onPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset)
{
if(self is_bot())
{
self maps\mp\bots\_bot_internal::onDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset);
self maps\mp\bots\_bot_script::onDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset);
}
self [[level.prevCallbackPlayerDamage]](eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset);
}
/*
The hook callback when any player gets killed.
*/
onPlayerKilled(eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration)
{
if(self is_bot())
{
self maps\mp\bots\_bot_internal::onKilled(eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration);
self maps\mp\bots\_bot_script::onKilled(eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration);
}
self [[level.prevCallbackPlayerKilled]](eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration);
}
/*
Starts the callbacks.
*/
hook_callbacks()
{
wait 0.05;
level.prevCallbackPlayerDamage = level.callbackPlayerDamage;
level.callbackPlayerDamage = ::onPlayerDamage;
level.prevCallbackPlayerKilled = level.callbackPlayerKilled;
level.callbackPlayerKilled = ::onPlayerKilled;
}
/*
Adds the level.radio object for koth. Cause the iw3 script doesn't have it.
*/
fixKoth()
{
level.radio = undefined;
for(;;)
{
wait 0.05;
if(!isDefined(level.radioObject))
{
continue;
}
for(i = level.radios.size - 1; i >= 0; i--)
{
if(level.radioObject != level.radios[i].gameobject)
continue;
level.radio = level.radios[i];
break;
}
while(isDefined(level.radioObject) && level.radio.gameobject == level.radioObject)
wait 0.05;
}
}
/*
Fixes gamemodes when level starts.
*/
fixGamemodes()
{
for(i=0;i<19;i++)
{
if(isDefined(level.bombZones) && level.gametype == "sd")
{
for(i = 0; i < level.bombZones.size; i++)
level.bombZones[i].onUse = ::onUsePlantObjectFix;
break;
}
if(isDefined(level.radios) && level.gametype == "koth")
{
level thread fixKoth();
break;
}
wait 0.05;
}
}
/*
Thread when any player connects. Starts the threads needed.
*/
onPlayerConnect()
{
for(;;)
{
level waittill("connected", player);
player thread onGrenadeFire();
player thread onWeaponFired();
player thread doPlayerModelFix();
player thread connected();
}
}
/*
Fixes bots perks showing up in killcams and prevents bots from being kicked from old iw3 gsc script.
*/
fixPerksAndScriptKick()
{
self endon("disconnect");
self waittill("spawned");
self.pers["isBot"] = undefined;
if(!level.gameEnded)
level waittill ( "game_ended" );
self.pers["isBot"] = true;
}
/*
When a bot disconnects.
*/
onDisconnect()
{
self waittill("disconnect");
level.bots = array_remove(level.bots, self);
}
/*
Called when a player connects.
*/
connected()
{
self endon("disconnect");
if (!isDefined(self.pers["bot_host"]))
self thread doHostCheck();
if(!self is_bot())
return;
if (!isDefined(self.pers["isBot"]))
{
// fast restart...
self.pers["isBot"] = true;
}
if (!isDefined(self.pers["isBotWarfare"]))
{
self.pers["isBotWarfare"] = true;
self thread added();
}
self thread fixPerksAndScriptKick();
self thread maps\mp\bots\_bot_internal::connected();
self thread maps\mp\bots\_bot_script::connected();
level.bots[level.bots.size] = self;
self thread onDisconnect();
level notify("bot_connected", self);
}
/*
When a bot gets added into the game.
*/
added()
{
self endon("disconnect");
self thread maps\mp\bots\_bot_internal::added();
self thread maps\mp\bots\_bot_script::added();
}
/*
Adds a bot to the game.
*/
add_bot()
{
name = getABotName();
bot = undefined;
if (isDefined(name) && name.size >= 3)
bot = addtestclient(name);
else
bot = addtestclient();
if (isdefined(bot))
{
bot.pers["isBot"] = true;
bot.pers["isBotWarfare"] = true;
bot thread added();
}
}
/*
A server thread for monitoring all bot's difficulty levels for custom server settings.
*/
diffBots()
{
for(;;)
{
wait 1.5;
var_allies_hard = getDVarInt("bots_skill_allies_hard");
var_allies_med = getDVarInt("bots_skill_allies_med");
var_axis_hard = getDVarInt("bots_skill_axis_hard");
var_axis_med = getDVarInt("bots_skill_axis_med");
var_skill = getDvarInt("bots_skill");
allies_hard = 0;
allies_med = 0;
axis_hard = 0;
axis_med = 0;
if(var_skill == 8)
{
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.pers["team"]))
continue;
if(!player is_bot())
continue;
if(player.pers["team"] == "axis")
{
if(axis_hard < var_axis_hard)
{
axis_hard++;
player.pers["bots"]["skill"]["base"] = 7;
}
else if(axis_med < var_axis_med)
{
axis_med++;
player.pers["bots"]["skill"]["base"] = 4;
}
else
player.pers["bots"]["skill"]["base"] = 1;
}
else if(player.pers["team"] == "allies")
{
if(allies_hard < var_allies_hard)
{
allies_hard++;
player.pers["bots"]["skill"]["base"] = 7;
}
else if(allies_med < var_allies_med)
{
allies_med++;
player.pers["bots"]["skill"]["base"] = 4;
}
else
player.pers["bots"]["skill"]["base"] = 1;
}
}
}
else if (var_skill != 0 && var_skill != 9)
{
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!player is_bot())
continue;
player.pers["bots"]["skill"]["base"] = var_skill;
}
}
}
}
/*
A server thread for monitoring all bot's teams for custom server settings.
*/
teamBots()
{
for(;;)
{
wait 1.5;
teamAmount = getDvarInt("bots_team_amount");
toTeam = getDvar("bots_team");
alliesbots = 0;
alliesplayers = 0;
axisbots = 0;
axisplayers = 0;
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.pers["team"]))
continue;
if(player is_bot())
{
if(player.pers["team"] == "allies")
alliesbots++;
else if(player.pers["team"] == "axis")
axisbots++;
}
else
{
if(player.pers["team"] == "allies")
alliesplayers++;
else if(player.pers["team"] == "axis")
axisplayers++;
}
}
allies = alliesbots;
axis = axisbots;
if(!getDvarInt("bots_team_mode"))
{
allies += alliesplayers;
axis += axisplayers;
}
if(toTeam != "custom")
{
if(getDvarInt("bots_team_force"))
{
if(toTeam == "autoassign")
{
if(abs(axis - allies) > 1)
{
toTeam = "axis";
if(axis > allies)
toTeam = "allies";
}
}
if(toTeam != "autoassign")
{
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.pers["team"]))
continue;
if(!player is_bot())
continue;
if(player.pers["team"] == toTeam)
continue;
if (toTeam == "allies")
player thread [[level.allies]]();
else if (toTeam == "axis")
player thread [[level.axis]]();
else
player thread [[level.spectator]]();
break;
}
}
}
}
else
{
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.pers["team"]))
continue;
if(!player is_bot())
continue;
if(player.pers["team"] == "axis")
{
if(axis > teamAmount)
{
player thread [[level.allies]]();
break;
}
}
else
{
if(axis < teamAmount)
{
player thread [[level.axis]]();
break;
}
else if(player.pers["team"] != "allies")
{
player thread [[level.allies]]();
break;
}
}
}
}
}
}
/*
A server thread for monitoring all bot's in game. Will add and kick bots according to server settings.
*/
addBots()
{
level endon("game_ended");
bot_wait_for_host();
for(;;)
{
wait 1.5;
botsToAdd = GetDvarInt("bots_manage_add");
if(botsToAdd > 0)
{
SetDvar("bots_manage_add", 0);
if(botsToAdd > 64)
botsToAdd = 64;
for(; botsToAdd > 0; botsToAdd--)
{
level add_bot();
wait 0.25;
}
}
fillMode = getDVarInt("bots_manage_fill_mode");
if(fillMode == 2 || fillMode == 3)
setDvar("bots_manage_fill", getGoodMapAmount());
fillAmount = getDvarInt("bots_manage_fill");
players = 0;
bots = 0;
spec = 0;
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(player is_bot())
bots++;
else if(!isDefined(player.pers["team"]) || (player.pers["team"] != "axis" && player.pers["team"] != "allies"))
spec++;
else
players++;
}
if (!randomInt(999))
{
setDvar("testclients_doreload", true);
wait 0.1;
setDvar("testclients_doreload", false);
doExtraCheck();
}
if(fillMode == 4)
{
axisplayers = 0;
alliesplayers = 0;
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(player is_bot())
continue;
if(!isDefined(player.pers["team"]))
continue;
if(player.pers["team"] == "axis")
axisplayers++;
else if(player.pers["team"] == "allies")
alliesplayers++;
}
result = fillAmount - abs(axisplayers - alliesplayers) + bots;
if (players == 0)
{
if(bots < fillAmount)
result = fillAmount-1;
else if (bots > fillAmount)
result = fillAmount+1;
else
result = fillAmount;
}
bots = result;
}
amount = bots;
if(fillMode == 0 || fillMode == 2)
amount += players;
if(getDVarInt("bots_manage_fill_spec"))
amount += spec;
if(amount < fillAmount)
setDvar("bots_manage_add", 1);
else if(amount > fillAmount && getDvarInt("bots_manage_fill_kick"))
{
RemoveTestClient(); //cod4x
}
}
}
/*
A thread for ALL players, will monitor and grenades thrown.
*/
onGrenadeFire()
{
self endon("disconnect");
for(;;)
{
self waittill ( "grenade_fire", grenade, weaponName );
grenade.name = weaponName;
if(weaponName == "smoke_grenade_mp")
grenade thread AddToSmokeList();
}
}
/*
Adds a smoke grenade to the list of smokes in the game. Used to prevent bots from seeing through smoke.
*/
AddToSmokeList()
{
grenade = spawnstruct();
grenade.origin = self getOrigin();
grenade.state = "moving";
grenade.grenade = self;
grenade thread thinkSmoke();
level.bots_smokeList ListAdd(grenade);
}
/*
The smoke grenade logic.
*/
thinkSmoke()
{
while(isDefined(self.grenade))
{
self.origin = self.grenade getOrigin();
self.state = "moving";
wait 0.05;
}
self.state = "smoking";
wait 11.5;
level.bots_smokeList ListRemove(self);
}
/*
Watches for chopper. This is used to fix bots from targeting leaving or crashing helis because script is iw3 old and buggy.
*/
chopperWatch()
{
for(;;)
{
while(!isDefined(level.chopper))
wait 0.05;
chopper = level.chopper;
if (level.teamBased && getDvarInt("doubleHeli"))
{
chopper = level.chopper["allies"];
if (!isDefined(chopper))
chopper = level.chopper["axis"];
}
level.bot_chopper = true;
chopper watchChopper();
level.bot_chopper = false;
while(isDefined(level.chopper))
wait 0.05;
}
}
/*
Waits until the chopper is deleted, leaving or crashing.
*/
watchChopper()
{
self endon("death");
self endon("leaving");
self endon("crashing");
level waittill("helicopter gone");
}
/*
Waits when the axis uav is called in.
*/
onUAVAxisUpdate()
{
for(;;)
{
level waittill( "radar_timer_kill_axis" );
level thread doUAVUpdate("axis");
}
}
/*
Waits when the allies uav is called in.
*/
onUAVAlliesUpdate()
{
for(;;)
{
level waittill( "radar_timer_kill_allies" );
level thread doUAVUpdate("allies");
}
}
/*
Updates the player's radar so bots can know when they have a uav up, because iw3 script is old.
*/
doUAVUpdate(team)
{
level endon("radar_timer_kill_" + team);
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.team))
continue;
if(player.team == team)
{
player.bot_radar = true;
}
}
wait level.radarViewTime;
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.team))
continue;
if(player.team == team)
{
player.bot_radar = false;
}
}
}
/*
Fixes a weird iw3 bug when for a frame the player doesn't have any bones when they first spawn in.
*/
doPlayerModelFix()
{
self endon("disconnect");
self waittill("spawned_player");
wait 0.05;
self.bot_model_fix = true;
}
/*
A thread for ALL players when they fire.
*/
onWeaponFired()
{
self endon("disconnect");
self.bots_firing = false;
for(;;)
{
self waittill( "weapon_fired" );
self thread doFiringThread();
}
}
/*
Lets bot's know that the player is firing.
*/
doFiringThread()
{
self endon("disconnect");
self endon("weapon_fired");
self.bots_firing = true;
wait 1;
self.bots_firing = false;
}

View File

@ -1,135 +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,649 +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 = 0; h < level.waypoints[i].childCount; 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].childCount; 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/*");
logprint("*/waypoints["+i+"].childCount = "+level.waypoints[i].childCount+";\n/*");
for(c = 0; c < level.waypoints[i].childCount; 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].childCount == 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.childCount; h++)
{
str += wp.children[h];
if (h < wp.childCount - 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].childCount <= 0)
self iprintln("WARNING: waypoint "+i+" childCount is "+level.waypoints[i].childCount);
else
{
if (!isDefined(level.waypoints[i].children) || !isDefined(level.waypoints[i].children.size))
{
self iprintln("WARNING: waypoint "+i+" children is not defined");
}
else
{
if(level.waypoints[i].childCount != level.waypoints[i].children.size)
self iprintln("WARNING: waypoint "+i+" childCount is not "+level.waypoints[i].children.size);
for (h = 0; h < level.waypoints[i].childCount; 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].childCount == 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;
level.waypointsKDTree = WaypointsToKDTree();
level.waypointsCamp = [];
level.waypointsTube = [];
level.waypointsGren = [];
level.waypointsClay = [];
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 = 0; i < level.waypoints[nwp].childCount; i++)
{
child = level.waypoints[nwp].children[i];
level.waypoints[child].children = array_remove(level.waypoints[child].children, nwp);
level.waypoints[child].childCount = level.waypoints[child].children.size;
}
for(i = 0; i < level.waypointCount; i++)
{
for(h = 0; h < level.waypoints[i].childCount; 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 = [];
level.waypoints[level.waypointCount].childCount = 0;
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);
level.waypoints[nwp].childCount = level.waypoints[nwp].children.size;
level.waypoints[level.wpToLink].childCount = level.waypoints[level.wpToLink].children.size;
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 = 0; i < level.waypoints[level.wpToLink].childCount; i++)
{
if(level.waypoints[level.wpToLink].children[i] == nwp)
{
weGood = false;
break;
}
}
if(weGood)
{
for(i = 0; i < level.waypoints[nwp].childCount; 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].childcount] = nwp;
level.waypoints[level.wpToLink].childcount++;
level.waypoints[nwp].children[level.waypoints[nwp].childcount] = level.wpToLink;
level.waypoints[nwp].childcount++;
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,142 +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\_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()
{
}

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

File diff suppressed because it is too large Load Diff

2268
maps/mp/bots/_bot_chat.gsc Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

5003
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

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

File diff suppressed because it is too large Load Diff

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

@ -0,0 +1,739 @@
/*
_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();
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\bots_adapter_cod4x::init();
level thread scripts\bots_chat::init();
level thread scripts\bots_menu::init();
level thread scripts\bots_wp_editor::init();
level thread scripts\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 +0,0 @@
set sv_hostname "^1Bot ^3War^5fare ^7Local server"

View File

@ -1,878 +0,0 @@
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
#include maps\mp\bots\_bot_utility;
/*
Initiates the whole bot scripts.
*/
init()
{
level.bw_VERSION = "2.0.1";
if(getDvar("bots_main") == "")
setDvar("bots_main", true);
if (!getDvarInt("bots_main"))
return;
thread load_waypoints();
cac_init_patch();
thread hook_callbacks();
if(getDvar("bots_main_GUIDs") == "")
setDvar("bots_main_GUIDs", "");//guids of players who will be given host powers, comma seperated
if(getDvar("bots_main_firstIsHost") == "")
setDvar("bots_main_firstIsHost", true);//first player to connect is a host
if(getDvar("bots_main_waitForHostTime") == "")
setDvar("bots_main_waitForHostTime", 10.0);//how long to wait to wait for the host player
if(getDvar("bots_manage_add") == "")
setDvar("bots_manage_add", 0);//amount of bots to add to the game
if(getDvar("bots_manage_fill") == "")
setDvar("bots_manage_fill", 0);//amount of bots to maintain
if(getDvar("bots_manage_fill_spec") == "")
setDvar("bots_manage_fill_spec", true);//to count for fill if player is on spec team
if(getDvar("bots_manage_fill_mode") == "")
setDvar("bots_manage_fill_mode", 0);//fill mode, 0 adds everyone, 1 just bots, 2 maintains at maps, 3 is 2 with 1
if(getDvar("bots_manage_fill_kick") == "")
setDvar("bots_manage_fill_kick", false);//kick bots if too many
if(getDvar("bots_team") == "")
setDvar("bots_team", "autoassign");//which team for bots to join
if(getDvar("bots_team_amount") == "")
setDvar("bots_team_amount", 0);//amount of bots on axis team
if(getDvar("bots_team_force") == "")
setDvar("bots_team_force", false);//force bots on team
if(getDvar("bots_team_mode") == "")
setDvar("bots_team_mode", 0);//counts just bots when 1
if(getDvar("bots_skill") == "")
setDvar("bots_skill", 0);//0 is random, 1 is easy 7 is hard, 8 is custom, 9 is completely random
if(getDvar("bots_skill_axis_hard") == "")
setDvar("bots_skill_axis_hard", 0);//amount of hard bots on axis team
if(getDvar("bots_skill_axis_med") == "")
setDvar("bots_skill_axis_med", 0);
if(getDvar("bots_skill_allies_hard") == "")
setDvar("bots_skill_allies_hard", 0);
if(getDvar("bots_skill_allies_med") == "")
setDvar("bots_skill_allies_med", 0);
if(getDvar("bots_loadout_reasonable") == "")//filter out the bad 'guns' and perks
setDvar("bots_loadout_reasonable", false);
if(getDvar("bots_loadout_allow_op") == "")//allows jug, marty and laststand
setDvar("bots_loadout_allow_op", true);
if(getDvar("bots_loadout_rank") == "")// what rank the bots should be around, -1 is around the players, 0 is all random
setDvar("bots_loadout_rank", -1);
if(getDvar("bots_loadout_prestige") == "")// what pretige the bots will be, -1 is the players, -2 is random
setDvar("bots_loadout_prestige", -1);
if(getDvar("bots_play_move") == "")//bots move
setDvar("bots_play_move", true);
if(getDvar("bots_play_knife") == "")//bots knife
setDvar("bots_play_knife", true);
if(getDvar("bots_play_fire") == "")//bots fire
setDvar("bots_play_fire", true);
if(getDvar("bots_play_nade") == "")//bots grenade
setDvar("bots_play_nade", true);
if(getDvar("bots_play_obj") == "")//bots play the obj
setDvar("bots_play_obj", true);
if(getDvar("bots_play_camp") == "")//bots camp and follow
setDvar("bots_play_camp", true);
if(getDvar("bots_play_jumpdrop") == "")//bots jump and dropshot
setDvar("bots_play_jumpdrop", true);
if(getDvar("bots_play_target_other") == "")//bot target non play ents (vehicles)
setDvar("bots_play_target_other", true);
if(getDvar("bots_play_killstreak") == "")//bot use killstreaks
setDvar("bots_play_killstreak", true);
if(getDvar("bots_play_ads") == "")//bot ads
setDvar("bots_play_ads", true);
if(!isDefined(game["botWarfare"]))
game["botWarfare"] = true;
level.defuseObject = undefined;
level.bots_smokeList = List();
level.tbl_PerkData[0]["reference_full"] = true;
for(h = 1; h < 6; h++)
for(i = 0; i < 3; i++)
level.default_perk["CLASS_CUSTOM"+h][i] = "specialty_null";
level.bots_minSprintDistance = 315;
level.bots_minSprintDistance *= level.bots_minSprintDistance;
level.bots_minGrenadeDistance = 256;
level.bots_minGrenadeDistance *= level.bots_minGrenadeDistance;
level.bots_maxGrenadeDistance = 1024;
level.bots_maxGrenadeDistance *= level.bots_maxGrenadeDistance;
level.bots_maxKnifeDistance = 80;
level.bots_maxKnifeDistance *= level.bots_maxKnifeDistance;
level.bots_goalDistance = 27.5;
level.bots_goalDistance *= level.bots_goalDistance;
level.bots_noADSDistance = 200;
level.bots_noADSDistance *= level.bots_noADSDistance;
level.bots_maxShotgunDistance = 500;
level.bots_maxShotgunDistance *= level.bots_maxShotgunDistance;
level.bots_listenDist = 100;
level.smokeRadius = 255;
level.bots = [];
level.bots_fullautoguns = [];
level.bots_fullautoguns["rpd"] = true;
level.bots_fullautoguns["m60e4"] = true;
level.bots_fullautoguns["saw"] = true;
level.bots_fullautoguns["ak74u"] = true;
level.bots_fullautoguns["mp5"] = true;
level.bots_fullautoguns["p90"] = true;
level.bots_fullautoguns["skorpion"] = true;
level.bots_fullautoguns["uzi"] = true;
level.bots_fullautoguns["g36c"] = true;
level.bots_fullautoguns["m4"] = true;
level.bots_fullautoguns["ak47"] = true;
level.bots_fullautoguns["mp44"] = true;
level thread fixGamemodes();
level thread onUAVAlliesUpdate();
level thread onUAVAxisUpdate();
level thread chopperWatch();
level thread onPlayerConnect();
level thread handleBots();
level thread maps\mp\bots\_bot_http::doVersionCheck();
}
/*
Starts the threads for bots.
*/
handleBots()
{
level thread teamBots();
level thread diffBots();
level addBots();
while(!level.intermission)
wait 0.05;
setDvar("bots_manage_add", getBotArray().size);
}
/*
The hook callback for when any player becomes damaged.
*/
onPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset)
{
if(self is_bot())
{
self maps\mp\bots\_bot_internal::onDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset);
self maps\mp\bots\_bot_script::onDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset);
}
self [[level.prevCallbackPlayerDamage]](eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset);
}
/*
The hook callback when any player gets killed.
*/
onPlayerKilled(eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration)
{
if(self is_bot())
{
self maps\mp\bots\_bot_internal::onKilled(eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration);
self maps\mp\bots\_bot_script::onKilled(eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration);
}
self [[level.prevCallbackPlayerKilled]](eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration);
}
/*
Starts the callbacks.
*/
hook_callbacks()
{
wait 0.05;
level.prevCallbackPlayerDamage = level.callbackPlayerDamage;
level.callbackPlayerDamage = ::onPlayerDamage;
level.prevCallbackPlayerKilled = level.callbackPlayerKilled;
level.callbackPlayerKilled = ::onPlayerKilled;
}
/*
Adds the level.radio object for koth. Cause the iw3 script doesn't have it.
*/
fixKoth()
{
level.radio = undefined;
for(;;)
{
wait 0.05;
if(!isDefined(level.radioObject))
{
continue;
}
for(i = level.radios.size - 1; i >= 0; i--)
{
if(level.radioObject != level.radios[i].gameobject)
continue;
level.radio = level.radios[i];
break;
}
while(isDefined(level.radioObject) && level.radio.gameobject == level.radioObject)
wait 0.05;
}
}
/*
Fixes gamemodes when level starts.
*/
fixGamemodes()
{
for(i=0;i<19;i++)
{
if(isDefined(level.bombZones) && level.gametype == "sd")
{
for(i = 0; i < level.bombZones.size; i++)
level.bombZones[i].onUse = ::onUsePlantObjectFix;
break;
}
if(isDefined(level.radios) && level.gametype == "koth")
{
level thread fixKoth();
break;
}
wait 0.05;
}
}
/*
Thread when any player connects. Starts the threads needed.
*/
onPlayerConnect()
{
for(;;)
{
level waittill("connected", player);
player thread onGrenadeFire();
player thread onWeaponFired();
player thread doPlayerModelFix();
player thread connected();
}
}
/*
Fixes bots perks showing up in killcams and prevents bots from being kicked from old iw3 gsc script.
*/
fixPerksAndScriptKick()
{
self endon("disconnect");
self waittill("spawned");
self.pers["isBot"] = undefined;
if(!level.gameEnded)
level waittill ( "game_ended" );
self.pers["isBot"] = true;
}
/*
When a bot disconnects.
*/
onDisconnect()
{
self waittill("disconnect");
level.bots = array_remove(level.bots, self);
}
/*
Called when a player connects.
*/
connected()
{
self endon("disconnect");
if (!isDefined(self.pers["bot_host"]))
self thread doHostCheck();
if(!self is_bot())
return;
if (!isDefined(self.pers["isBot"]))
{
// fast restart...
self.pers["isBot"] = true;
}
if (!isDefined(self.pers["isBotWarfare"]))
{
self.pers["isBotWarfare"] = true;
self thread added();
}
self thread fixPerksAndScriptKick();
self thread maps\mp\bots\_bot_internal::connected();
self thread maps\mp\bots\_bot_script::connected();
level.bots[level.bots.size] = self;
self thread onDisconnect();
level notify("bot_connected", self);
}
/*
When a bot gets added into the game.
*/
added()
{
self endon("disconnect");
self thread maps\mp\bots\_bot_internal::added();
self thread maps\mp\bots\_bot_script::added();
}
/*
Adds a bot to the game.
*/
add_bot()
{
name = getABotName();
bot = undefined;
if (isDefined(name) && name.size >= 3)
bot = addtestclient(name);
else
bot = addtestclient();
if (isdefined(bot))
{
bot.pers["isBot"] = true;
bot.pers["isBotWarfare"] = true;
bot thread added();
}
}
/*
A server thread for monitoring all bot's difficulty levels for custom server settings.
*/
diffBots()
{
for(;;)
{
wait 1.5;
var_allies_hard = getDVarInt("bots_skill_allies_hard");
var_allies_med = getDVarInt("bots_skill_allies_med");
var_axis_hard = getDVarInt("bots_skill_axis_hard");
var_axis_med = getDVarInt("bots_skill_axis_med");
var_skill = getDvarInt("bots_skill");
allies_hard = 0;
allies_med = 0;
axis_hard = 0;
axis_med = 0;
if(var_skill == 8)
{
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.pers["team"]))
continue;
if(!player is_bot())
continue;
if(player.pers["team"] == "axis")
{
if(axis_hard < var_axis_hard)
{
axis_hard++;
player.pers["bots"]["skill"]["base"] = 7;
}
else if(axis_med < var_axis_med)
{
axis_med++;
player.pers["bots"]["skill"]["base"] = 4;
}
else
player.pers["bots"]["skill"]["base"] = 1;
}
else if(player.pers["team"] == "allies")
{
if(allies_hard < var_allies_hard)
{
allies_hard++;
player.pers["bots"]["skill"]["base"] = 7;
}
else if(allies_med < var_allies_med)
{
allies_med++;
player.pers["bots"]["skill"]["base"] = 4;
}
else
player.pers["bots"]["skill"]["base"] = 1;
}
}
}
else if (var_skill != 0 && var_skill != 9)
{
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!player is_bot())
continue;
player.pers["bots"]["skill"]["base"] = var_skill;
}
}
}
}
/*
A server thread for monitoring all bot's teams for custom server settings.
*/
teamBots()
{
for(;;)
{
wait 1.5;
teamAmount = getDvarInt("bots_team_amount");
toTeam = getDvar("bots_team");
alliesbots = 0;
alliesplayers = 0;
axisbots = 0;
axisplayers = 0;
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.pers["team"]))
continue;
if(player is_bot())
{
if(player.pers["team"] == "allies")
alliesbots++;
else if(player.pers["team"] == "axis")
axisbots++;
}
else
{
if(player.pers["team"] == "allies")
alliesplayers++;
else if(player.pers["team"] == "axis")
axisplayers++;
}
}
allies = alliesbots;
axis = axisbots;
if(!getDvarInt("bots_team_mode"))
{
allies += alliesplayers;
axis += axisplayers;
}
if(toTeam != "custom")
{
if(getDvarInt("bots_team_force"))
{
if(toTeam == "autoassign")
{
if(abs(axis - allies) > 1)
{
toTeam = "axis";
if(axis > allies)
toTeam = "allies";
}
}
if(toTeam != "autoassign")
{
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.pers["team"]))
continue;
if(!player is_bot())
continue;
if(player.pers["team"] == toTeam)
continue;
if (toTeam == "allies")
player thread [[level.allies]]();
else if (toTeam == "axis")
player thread [[level.axis]]();
else
player thread [[level.spectator]]();
break;
}
}
}
}
else
{
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.pers["team"]))
continue;
if(!player is_bot())
continue;
if(player.pers["team"] == "axis")
{
if(axis > teamAmount)
{
player thread [[level.allies]]();
break;
}
}
else
{
if(axis < teamAmount)
{
player thread [[level.axis]]();
break;
}
else if(player.pers["team"] != "allies")
{
player thread [[level.allies]]();
break;
}
}
}
}
}
}
/*
A server thread for monitoring all bot's in game. Will add and kick bots according to server settings.
*/
addBots()
{
level endon("game_ended");
bot_wait_for_host();
for(;;)
{
wait 1.5;
botsToAdd = GetDvarInt("bots_manage_add");
if(botsToAdd > 0)
{
SetDvar("bots_manage_add", 0);
if(botsToAdd > 64)
botsToAdd = 64;
for(; botsToAdd > 0; botsToAdd--)
{
level add_bot();
wait 0.25;
}
}
fillMode = getDVarInt("bots_manage_fill_mode");
if(fillMode == 2 || fillMode == 3)
setDvar("bots_manage_fill", getGoodMapAmount());
fillAmount = getDvarInt("bots_manage_fill");
players = 0;
bots = 0;
spec = 0;
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(player is_bot())
bots++;
else if(!isDefined(player.pers["team"]) || (player.pers["team"] != "axis" && player.pers["team"] != "allies"))
spec++;
else
players++;
}
if (!randomInt(999))
{
setDvar("testclients_doreload", true);
wait 0.1;
setDvar("testclients_doreload", false);
doExtraCheck();
}
if(fillMode == 4)
{
axisplayers = 0;
alliesplayers = 0;
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(player is_bot())
continue;
if(!isDefined(player.pers["team"]))
continue;
if(player.pers["team"] == "axis")
axisplayers++;
else if(player.pers["team"] == "allies")
alliesplayers++;
}
result = fillAmount - abs(axisplayers - alliesplayers) + bots;
if (players == 0)
{
if(bots < fillAmount)
result = fillAmount-1;
else if (bots > fillAmount)
result = fillAmount+1;
else
result = fillAmount;
}
bots = result;
}
amount = bots;
if(fillMode == 0 || fillMode == 2)
amount += players;
if(getDVarInt("bots_manage_fill_spec"))
amount += spec;
if(amount < fillAmount)
setDvar("bots_manage_add", 1);
else if(amount > fillAmount && getDvarInt("bots_manage_fill_kick"))
{
RemoveTestClient(); //cod4x
}
}
}
/*
A thread for ALL players, will monitor and grenades thrown.
*/
onGrenadeFire()
{
self endon("disconnect");
for(;;)
{
self waittill ( "grenade_fire", grenade, weaponName );
grenade.name = weaponName;
if(weaponName == "smoke_grenade_mp")
grenade thread AddToSmokeList();
}
}
/*
Adds a smoke grenade to the list of smokes in the game. Used to prevent bots from seeing through smoke.
*/
AddToSmokeList()
{
grenade = spawnstruct();
grenade.origin = self getOrigin();
grenade.state = "moving";
grenade.grenade = self;
grenade thread thinkSmoke();
level.bots_smokeList ListAdd(grenade);
}
/*
The smoke grenade logic.
*/
thinkSmoke()
{
while(isDefined(self.grenade))
{
self.origin = self.grenade getOrigin();
self.state = "moving";
wait 0.05;
}
self.state = "smoking";
wait 11.5;
level.bots_smokeList ListRemove(self);
}
/*
Watches for chopper. This is used to fix bots from targeting leaving or crashing helis because script is iw3 old and buggy.
*/
chopperWatch()
{
for(;;)
{
while(!isDefined(level.chopper))
wait 0.05;
chopper = level.chopper;
if (level.teamBased && getDvarInt("doubleHeli"))
{
chopper = level.chopper["allies"];
if (!isDefined(chopper))
chopper = level.chopper["axis"];
}
level.bot_chopper = true;
chopper watchChopper();
level.bot_chopper = false;
while(isDefined(level.chopper))
wait 0.05;
}
}
/*
Waits until the chopper is deleted, leaving or crashing.
*/
watchChopper()
{
self endon("death");
self endon("leaving");
self endon("crashing");
level waittill("helicopter gone");
}
/*
Waits when the axis uav is called in.
*/
onUAVAxisUpdate()
{
for(;;)
{
level waittill( "radar_timer_kill_axis" );
level thread doUAVUpdate("axis");
}
}
/*
Waits when the allies uav is called in.
*/
onUAVAlliesUpdate()
{
for(;;)
{
level waittill( "radar_timer_kill_allies" );
level thread doUAVUpdate("allies");
}
}
/*
Updates the player's radar so bots can know when they have a uav up, because iw3 script is old.
*/
doUAVUpdate(team)
{
level endon("radar_timer_kill_" + team);
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.team))
continue;
if(player.team == team)
{
player.bot_radar = true;
}
}
wait level.radarViewTime;
playercount = level.players.size;
for(i = 0; i < playercount; i++)
{
player = level.players[i];
if(!isDefined(player.team))
continue;
if(player.team == team)
{
player.bot_radar = false;
}
}
}
/*
Fixes a weird iw3 bug when for a frame the player doesn't have any bones when they first spawn in.
*/
doPlayerModelFix()
{
self endon("disconnect");
self waittill("spawned_player");
wait 0.05;
self.bot_model_fix = true;
}
/*
A thread for ALL players when they fire.
*/
onWeaponFired()
{
self endon("disconnect");
self.bots_firing = false;
for(;;)
{
self waittill( "weapon_fired" );
self thread doFiringThread();
}
}
/*
Lets bot's know that the player is firing.
*/
doFiringThread()
{
self endon("disconnect");
self endon("weapon_fired");
self.bots_firing = true;
wait 1;
self.bots_firing = false;
}

View File

@ -1,135 +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,649 +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 = 0; h < level.waypoints[i].childCount; 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].childCount; 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/*");
logprint("*/waypoints["+i+"].childCount = "+level.waypoints[i].childCount+";\n/*");
for(c = 0; c < level.waypoints[i].childCount; 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].childCount == 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.childCount; h++)
{
str += wp.children[h];
if (h < wp.childCount - 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].childCount <= 0)
self iprintln("WARNING: waypoint "+i+" childCount is "+level.waypoints[i].childCount);
else
{
if (!isDefined(level.waypoints[i].children) || !isDefined(level.waypoints[i].children.size))
{
self iprintln("WARNING: waypoint "+i+" children is not defined");
}
else
{
if(level.waypoints[i].childCount != level.waypoints[i].children.size)
self iprintln("WARNING: waypoint "+i+" childCount is not "+level.waypoints[i].children.size);
for (h = 0; h < level.waypoints[i].childCount; 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].childCount == 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;
level.waypointsKDTree = WaypointsToKDTree();
level.waypointsCamp = [];
level.waypointsTube = [];
level.waypointsGren = [];
level.waypointsClay = [];
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 = 0; i < level.waypoints[nwp].childCount; i++)
{
child = level.waypoints[nwp].children[i];
level.waypoints[child].children = array_remove(level.waypoints[child].children, nwp);
level.waypoints[child].childCount = level.waypoints[child].children.size;
}
for(i = 0; i < level.waypointCount; i++)
{
for(h = 0; h < level.waypoints[i].childCount; 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 = [];
level.waypoints[level.waypointCount].childCount = 0;
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);
level.waypoints[nwp].childCount = level.waypoints[nwp].children.size;
level.waypoints[level.wpToLink].childCount = level.waypoints[level.wpToLink].children.size;
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 = 0; i < level.waypoints[level.wpToLink].childCount; i++)
{
if(level.waypoints[level.wpToLink].children[i] == nwp)
{
weGood = false;
break;
}
}
if(weGood)
{
for(i = 0; i < level.waypoints[nwp].childCount; 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].childcount] = nwp;
level.waypoints[level.wpToLink].childcount++;
level.waypoints[nwp].children[level.waypoints[nwp].childcount] = level.wpToLink;
level.waypoints[nwp].childcount++;
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 sv_punkbuster "0" +set net_port "28965" +set fs_game "mods/bots" +exec localbotserver.cfg +loadplugin httpget +map_rotate

View File

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

View File

@ -1,60 +0,0 @@
# CoD4x Bot Warfare
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.me/ 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.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: 3.6 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,,

View File

@ -0,0 +1,144 @@
143
-1259.3 1521.5 8.83176,39,stand,,,
-2523.63 1174.27 12.9425,126,stand,,,
1724.3 -752.1 150.125,108,stand,,,
1688.74 652.6 11.4999,75,stand,,,
1881.7 -1090.4 9.19418,111,stand,,,
1896.6 -834.738 8.36909,110,stand,,,
1309.1 -229.9 8.31324,62 105 78,stand,,,
1896.3 -1265.6 8.46395,84,stand,,,
-1316.1 1168.7 8.83177,39,stand,,,
1303.37 -1616.98 8.12109,84 133,stand,,,
-1744.2 -26.8 9.27197,15 17 99,stand,,,
-2500.8 951.3 12.9426,126,stand,,,
-1931.6 2360.4 -11.4597,45 49,stand,,,
-1457.54 323.829 10.125,14,stand,,,
-1517.99 250.16 11.125,13 15 21 99,stand,,,
-1732.71 217.709 9.27197,14 10 20 40 99,stand,,,
-2085.49 341.317 12.3643,17,stand,,,
-1954.02 203.053 12.9425,10 16 18,stand,,,
-1925.3 459.111 12.9425,17 19 20 40 115,stand,,,
-1983.84 1011.93 12.9425,18 40 41 125,stand,,,
-1678.42 1369.06 9.27171,18 15 38 39 21 38 53 41 45 124 142,stand,,,
-1521.34 858.727 11.125,14 22 20 23 40 140,stand,,,
-1431.46 831.532 10.125,21 23,stand,,,
-1428.8 693.488 10.125,24 22 21,stand,,,
-1422.08 459.612 127.859,23 25,stand,,,
-1307.34 440.501 127.625,24 26,stand,,,
-1176.76 259.14 127.625,25 27 28,stand,,,
-985.833 313.273 127.625,26 28,stand,,,
-605.066 257.565 127.625,27 26 29,stand,,,
-280.386 287.564 127.625,28 30,stand,,,
-253.489 12.2056 127.625,29 31,stand,,,
-53.1065 21.1914 128.591,30 32,stand,,,
-50.4324 -242.792 8.93786,31 33,stand,,,
82.463 -436.886 8.49204,32 34 55 56 60 134 134 135,stand,,,
-545.9 -472.407 8.77093,33 35 97 36 135 134 136,stand,,,
-663.06 75.7119 8.77093,34 36 99 100 137,stand,,,
-654.501 329.688 8.93575,35 37 34,stand,,,
-923.941 336.218 8.93563,36 38 127,stand,,,
-986.444 1340.97 9.11872,37 20 39 20 53 127 41,stand,,,
-1238.49 1321.65 8.83176,0 8 38 20 41,stand,,,
-1947.23 759.343 12.9425,21 18 15 19,stand,,,
-2141.93 1281.33 12.9425,19 42 20 125 39 38 53,stand,,,
-2081.98 1491.97 22.5764,41 43,stand,,,
-2102.06 1655.49 16.739,42 44,stand,,,
-2099.16 1765.12 -11.452,43 45,stand,,,
-1782.85 2029.39 -14.3657,44 12 46 49 20 124,stand,,,
-1338.71 1878.65 -14.3672,45 47 50 67 47 124,stand,,,
-1295.89 2033.93 -14.4779,46 48 50 67 46 124 142,stand,,,
-1445.08 2407.19 -13.375,47 49,stand,,,
-1676.87 2295.44 -14.3657,48 12 45,stand,,,
-833.68 2065.92 -13.8191,47 46 51 67 68,stand,,,
-682.309 1924.19 2.35602,50 52 66,stand,,,
-531.821 1813.45 8.80289,51 53 66,stand,,,
-523.129 1335.35 9.11872,52 20 38 54 41,stand,,,
-200.74 1161.61 9.11872,53 55 128,stand,,,
145.441 597.945 8.49397,54 33 58 59 128,stand,,,
763.004 -376.281 8.49397,33 57 58 61 92 132 134 135,stand,,,
826.817 58.7864 8.49397,56 58 61 62 128,stand,,,
624.452 338.098 8.49397,57 56 55 61 128,stand,,,
-26.0185 250.809 8.49397,55 60,stand,,,
157.276 52.4291 8.77254,33 59 128,stand,,,
566.346 16.2675 8.49034,56 58 57,stand,,,
1441.01 59.4256 8.1211,57 63 75 6 77 105,stand,,,
1402.16 751.268 9.96331,62 64 72 73 75,stand,,,
-6.20524 2077.5 14.4919,63 65 70 71 72 74,stand,,,
-190.187 2141.88 16.5524,64 66 67,stand,,,
-305.421 1958.92 12.1376,65 52 51,stand,,,
-767.931 2207.9 -3.80063,65 50 47 46,stand,,,
-850.97 1868.39 -9.55448,50 69,stand,,,
-997.941 1860.35 -5.875,68,stand,,,
700.908 2142.76 9.96331,64 71 74 72,stand,,,
1455.47 2201.62 9.96331,70 64 72 73 74,stand,,,
677.053 1394.41 9.96331,63 64 71 70,stand,,,
1600.85 1073.57 8.90974,71 63 74,stand,,,
348.79 2212.9 9.96331,73 64 70 71,stand,,,
1571.64 354.552 8.1211,3 62 63 76 105,stand,,,
1819.7 148.668 8.23485,75 77,stand,,,
1579.5 -427.248 8.1211,76 62 78 79 83 105,stand,,,
1874.59 -312.151 8.1211,77 105 106 6,stand,,,
1455.62 -1097.63 8.1211,77 80 83 84 85 111,stand,,,
1190.87 -928.888 9.30819,81 79 133,stand,,,
1039.36 -931.666 24.1597,80 82,stand,,,
907.959 -933.021 9.1816,81 92,stand,,,
1291.68 -619.98 8.10396,77 79 133,stand,,,
1609.52 -1578.71 8.05915,79 7 9 112 114 133,stand,,,
1127.72 -1079.67 7.39142,79 86 92 133,stand,,,
1124.85 -1269.15 8.124,85 87 133,stand,,,
938.466 -1291.04 8.11967,86,stand,,,
657.451 -1309.58 8.1212,89,stand,,,
425.244 -1297.07 8.36798,88 90,stand,,,
225.365 -1261.5 6.13196,91 89 93 94,stand,,,
256.966 -988.443 9.15804,90 92,stand,,,
762.154 -966.285 8.12109,56 82 85 91 93 132,stand,,,
482.941 -1150.64 11.4345,92 90,stand,,,
-68.8762 -1385.3 12.2503,90 95 131,stand,,,
-491.273 -1018.09 8.17231,94 96 129 130,stand,,,
-516.127 -747.495 8.27592,95 97 98,stand,,,
-561.381 -636.627 8.27592,96 34 98,stand,,,
-729.896 -647.408 9.04598,96 103 97,stand,,,
-1405.81 77.4237 26.2123,35 14 15 10 100 101,stand,,,
-1155.12 30.3133 8.77093,35 99 101 138 139,stand,,,
-1123.82 -67.0565 8.77093,100 102 99,stand,,,
-895.646 -70.2334 8.27253,101 103,stand,,,
-914.462 -622.521 8.27253,102 98,stand,,,
1256.35 414.568 128.591,105,stand,,,
1258.92 128.178 8.11854,104 62 6 75 77 78,stand,,,
1869.31 -531.392 8.36909,78 107 109,stand,,,
1905.1 -584.208 8.36909,106 108,stand,,,
1879.2 -841.432 150.125,107 2,stand,,,
1742.43 -583.344 8.36909,106 110,stand,,,
1742.37 -851.378 8.36909,109 5 111,stand,,,
1747.2 -1122.62 8.36909,110 79 4,stand,,,
1897.17 -1716.95 11.4569,84 113 114,stand,,,
1708.91 -1873 9.0382,112,stand,,,
2067.99 -1649.52 8.6786,112 84,stand,,,
-2066.08 461.207 15.2328,18 116 118,stand,,,
-2158.78 870.337 13.2869,117 115 125,stand,,,
-2204.32 775.035 13.2869,116,stand,,,
-2196.83 460.99 13.2869,115 119,stand,,,
-2194.12 659.654 131.568,118 120,stand,,,
-2141.06 802.639 131.571,119 121 123,stand,,,
-2081.17 727.619 131.571,120 122,stand,,,
-2113.46 519.804 131.571,121,stand,,,
-2159.97 935.887 131.568,120,stand,,,
-1573.73 1823.66 -12.2275,20 46 47 45 125 142,stand,,,
-2169.55 1027.58 12.9425,41 116 19 124 126 142,stand,,,
-2440.51 1031.02 12.9425,125 1 11,stand,,,
-871.082 699.725 9.11872,37 38 128,stand,,,
25.5522 760.452 9.05611,55 54 58 57 60 127,stand,,,
-641.742 -1053.82 8.17216,95,stand,,,
-222 -1110.53 8.61306,95,stand,,,
5.91305 -1259.71 12.2503,94,stand,,,
741.479 -657.266 8.125,56 92,stand,,,
1285.16 -1268.54 8.1211,86 85 84 9 80 83,stand,,,
364.509 -450.289 8.49291,33 56 33 135 34,stand,,,
-234.422 -484.752 8.125,34 33 134 56,stand,,,
-465.604 -274.099 8.77093,34,stand,,,
-700.789 -143.111 8.77093,35,stand,,,
-1259.44 119.159 8.77093,100,stand,,,
-1287.32 -82.6304 8.77093,100,stand,,,
-1494.56 1007.26 10.125,21 141,stand,,,
-1364.75 964.77 10.1316,140,stand,,,
-1816.35 1621.3 -6.79547,124 47 20 125,stand,,,
1 143
2 -1259.3 1521.5 8.83176,39,stand,,,
3 -2523.63 1174.27 12.9425,126,stand,,,
4 1724.3 -752.1 150.125,108,stand,,,
5 1688.74 652.6 11.4999,75,stand,,,
6 1881.7 -1090.4 9.19418,111,stand,,,
7 1896.6 -834.738 8.36909,110,stand,,,
8 1309.1 -229.9 8.31324,62 105 78,stand,,,
9 1896.3 -1265.6 8.46395,84,stand,,,
10 -1316.1 1168.7 8.83177,39,stand,,,
11 1303.37 -1616.98 8.12109,84 133,stand,,,
12 -1744.2 -26.8 9.27197,15 17 99,stand,,,
13 -2500.8 951.3 12.9426,126,stand,,,
14 -1931.6 2360.4 -11.4597,45 49,stand,,,
15 -1457.54 323.829 10.125,14,stand,,,
16 -1517.99 250.16 11.125,13 15 21 99,stand,,,
17 -1732.71 217.709 9.27197,14 10 20 40 99,stand,,,
18 -2085.49 341.317 12.3643,17,stand,,,
19 -1954.02 203.053 12.9425,10 16 18,stand,,,
20 -1925.3 459.111 12.9425,17 19 20 40 115,stand,,,
21 -1983.84 1011.93 12.9425,18 40 41 125,stand,,,
22 -1678.42 1369.06 9.27171,18 15 38 39 21 38 53 41 45 124 142,stand,,,
23 -1521.34 858.727 11.125,14 22 20 23 40 140,stand,,,
24 -1431.46 831.532 10.125,21 23,stand,,,
25 -1428.8 693.488 10.125,24 22 21,stand,,,
26 -1422.08 459.612 127.859,23 25,stand,,,
27 -1307.34 440.501 127.625,24 26,stand,,,
28 -1176.76 259.14 127.625,25 27 28,stand,,,
29 -985.833 313.273 127.625,26 28,stand,,,
30 -605.066 257.565 127.625,27 26 29,stand,,,
31 -280.386 287.564 127.625,28 30,stand,,,
32 -253.489 12.2056 127.625,29 31,stand,,,
33 -53.1065 21.1914 128.591,30 32,stand,,,
34 -50.4324 -242.792 8.93786,31 33,stand,,,
35 82.463 -436.886 8.49204,32 34 55 56 60 134 134 135,stand,,,
36 -545.9 -472.407 8.77093,33 35 97 36 135 134 136,stand,,,
37 -663.06 75.7119 8.77093,34 36 99 100 137,stand,,,
38 -654.501 329.688 8.93575,35 37 34,stand,,,
39 -923.941 336.218 8.93563,36 38 127,stand,,,
40 -986.444 1340.97 9.11872,37 20 39 20 53 127 41,stand,,,
41 -1238.49 1321.65 8.83176,0 8 38 20 41,stand,,,
42 -1947.23 759.343 12.9425,21 18 15 19,stand,,,
43 -2141.93 1281.33 12.9425,19 42 20 125 39 38 53,stand,,,
44 -2081.98 1491.97 22.5764,41 43,stand,,,
45 -2102.06 1655.49 16.739,42 44,stand,,,
46 -2099.16 1765.12 -11.452,43 45,stand,,,
47 -1782.85 2029.39 -14.3657,44 12 46 49 20 124,stand,,,
48 -1338.71 1878.65 -14.3672,45 47 50 67 47 124,stand,,,
49 -1295.89 2033.93 -14.4779,46 48 50 67 46 124 142,stand,,,
50 -1445.08 2407.19 -13.375,47 49,stand,,,
51 -1676.87 2295.44 -14.3657,48 12 45,stand,,,
52 -833.68 2065.92 -13.8191,47 46 51 67 68,stand,,,
53 -682.309 1924.19 2.35602,50 52 66,stand,,,
54 -531.821 1813.45 8.80289,51 53 66,stand,,,
55 -523.129 1335.35 9.11872,52 20 38 54 41,stand,,,
56 -200.74 1161.61 9.11872,53 55 128,stand,,,
57 145.441 597.945 8.49397,54 33 58 59 128,stand,,,
58 763.004 -376.281 8.49397,33 57 58 61 92 132 134 135,stand,,,
59 826.817 58.7864 8.49397,56 58 61 62 128,stand,,,
60 624.452 338.098 8.49397,57 56 55 61 128,stand,,,
61 -26.0185 250.809 8.49397,55 60,stand,,,
62 157.276 52.4291 8.77254,33 59 128,stand,,,
63 566.346 16.2675 8.49034,56 58 57,stand,,,
64 1441.01 59.4256 8.1211,57 63 75 6 77 105,stand,,,
65 1402.16 751.268 9.96331,62 64 72 73 75,stand,,,
66 -6.20524 2077.5 14.4919,63 65 70 71 72 74,stand,,,
67 -190.187 2141.88 16.5524,64 66 67,stand,,,
68 -305.421 1958.92 12.1376,65 52 51,stand,,,
69 -767.931 2207.9 -3.80063,65 50 47 46,stand,,,
70 -850.97 1868.39 -9.55448,50 69,stand,,,
71 -997.941 1860.35 -5.875,68,stand,,,
72 700.908 2142.76 9.96331,64 71 74 72,stand,,,
73 1455.47 2201.62 9.96331,70 64 72 73 74,stand,,,
74 677.053 1394.41 9.96331,63 64 71 70,stand,,,
75 1600.85 1073.57 8.90974,71 63 74,stand,,,
76 348.79 2212.9 9.96331,73 64 70 71,stand,,,
77 1571.64 354.552 8.1211,3 62 63 76 105,stand,,,
78 1819.7 148.668 8.23485,75 77,stand,,,
79 1579.5 -427.248 8.1211,76 62 78 79 83 105,stand,,,
80 1874.59 -312.151 8.1211,77 105 106 6,stand,,,
81 1455.62 -1097.63 8.1211,77 80 83 84 85 111,stand,,,
82 1190.87 -928.888 9.30819,81 79 133,stand,,,
83 1039.36 -931.666 24.1597,80 82,stand,,,
84 907.959 -933.021 9.1816,81 92,stand,,,
85 1291.68 -619.98 8.10396,77 79 133,stand,,,
86 1609.52 -1578.71 8.05915,79 7 9 112 114 133,stand,,,
87 1127.72 -1079.67 7.39142,79 86 92 133,stand,,,
88 1124.85 -1269.15 8.124,85 87 133,stand,,,
89 938.466 -1291.04 8.11967,86,stand,,,
90 657.451 -1309.58 8.1212,89,stand,,,
91 425.244 -1297.07 8.36798,88 90,stand,,,
92 225.365 -1261.5 6.13196,91 89 93 94,stand,,,
93 256.966 -988.443 9.15804,90 92,stand,,,
94 762.154 -966.285 8.12109,56 82 85 91 93 132,stand,,,
95 482.941 -1150.64 11.4345,92 90,stand,,,
96 -68.8762 -1385.3 12.2503,90 95 131,stand,,,
97 -491.273 -1018.09 8.17231,94 96 129 130,stand,,,
98 -516.127 -747.495 8.27592,95 97 98,stand,,,
99 -561.381 -636.627 8.27592,96 34 98,stand,,,
100 -729.896 -647.408 9.04598,96 103 97,stand,,,
101 -1405.81 77.4237 26.2123,35 14 15 10 100 101,stand,,,
102 -1155.12 30.3133 8.77093,35 99 101 138 139,stand,,,
103 -1123.82 -67.0565 8.77093,100 102 99,stand,,,
104 -895.646 -70.2334 8.27253,101 103,stand,,,
105 -914.462 -622.521 8.27253,102 98,stand,,,
106 1256.35 414.568 128.591,105,stand,,,
107 1258.92 128.178 8.11854,104 62 6 75 77 78,stand,,,
108 1869.31 -531.392 8.36909,78 107 109,stand,,,
109 1905.1 -584.208 8.36909,106 108,stand,,,
110 1879.2 -841.432 150.125,107 2,stand,,,
111 1742.43 -583.344 8.36909,106 110,stand,,,
112 1742.37 -851.378 8.36909,109 5 111,stand,,,
113 1747.2 -1122.62 8.36909,110 79 4,stand,,,
114 1897.17 -1716.95 11.4569,84 113 114,stand,,,
115 1708.91 -1873 9.0382,112,stand,,,
116 2067.99 -1649.52 8.6786,112 84,stand,,,
117 -2066.08 461.207 15.2328,18 116 118,stand,,,
118 -2158.78 870.337 13.2869,117 115 125,stand,,,
119 -2204.32 775.035 13.2869,116,stand,,,
120 -2196.83 460.99 13.2869,115 119,stand,,,
121 -2194.12 659.654 131.568,118 120,stand,,,
122 -2141.06 802.639 131.571,119 121 123,stand,,,
123 -2081.17 727.619 131.571,120 122,stand,,,
124 -2113.46 519.804 131.571,121,stand,,,
125 -2159.97 935.887 131.568,120,stand,,,
126 -1573.73 1823.66 -12.2275,20 46 47 45 125 142,stand,,,
127 -2169.55 1027.58 12.9425,41 116 19 124 126 142,stand,,,
128 -2440.51 1031.02 12.9425,125 1 11,stand,,,
129 -871.082 699.725 9.11872,37 38 128,stand,,,
130 25.5522 760.452 9.05611,55 54 58 57 60 127,stand,,,
131 -641.742 -1053.82 8.17216,95,stand,,,
132 -222 -1110.53 8.61306,95,stand,,,
133 5.91305 -1259.71 12.2503,94,stand,,,
134 741.479 -657.266 8.125,56 92,stand,,,
135 1285.16 -1268.54 8.1211,86 85 84 9 80 83,stand,,,
136 364.509 -450.289 8.49291,33 56 33 135 34,stand,,,
137 -234.422 -484.752 8.125,34 33 134 56,stand,,,
138 -465.604 -274.099 8.77093,34,stand,,,
139 -700.789 -143.111 8.77093,35,stand,,,
140 -1259.44 119.159 8.77093,100,stand,,,
141 -1287.32 -82.6304 8.77093,100,stand,,,
142 -1494.56 1007.26 10.125,21 141,stand,,,
143 -1364.75 964.77 10.1316,140,stand,,,
144 -1816.35 1621.3 -6.79547,124 47 20 125,stand,,,

View File

@ -0,0 +1,324 @@
323
-124.5 1602 3.91817,10 11 26 322,stand,,,
829.2 1789.4 5.50769,189,stand,,,
1460.8 1046.6 3.91817,303,stand,,,
1406.2 -233.3 3.91817,238 236 251,stand,,,
672.463 -1394.62 3.91817,263,stand,,,
114.914 -1797.84 8.58386,265 266,stand,,,
-622.709 -1415.6 3.91817,113 114 307,stand,,,
-2506.3 -1115.29 3.91817,90 91,stand,,,
-2508.7 675.609 3.91817,73 74 70,stand,,,
-1799.29 1602.7 3.91817,16 72,stand,,,
119.408 1450.55 3.91817,0 25 322,stand,,,
-406.417 1461.61 3.91817,0 12 21 22 321 322,stand,,,
-746.136 1260.05 5.12269,11 13 20 21 321,stand,,,
-1111.43 1251.36 0.0405235,12 14 18 20,stand,,,
-1005.39 887.579 0.0405235,13 15 46 144,stand,,,
-1197.57 935.49 0.0405235,14 55 143,stand,,,
-1635.34 1603.43 3.91817,9 17 19,stand,,,
-1608.94 1319.14 3.91817,16 18 47,stand,,,
-1348.03 1305.11 5.125,17 13 143 19,stand,,,
-1204.34 1596.69 0.0405253,16 20 18,stand,,,
-1044.6 1413.37 0.0405253,19 13 12,stand,,,
-673.861 1512.42 3.91817,11 12,stand,,,
-300.552 1248.36 5.12269,11 23 304 321 322,stand,,,
-104.725 1302.63 5.10688,22 24,stand,,,
34.6356 1331.04 5.10688,23 25,stand,,,
222.283 1327.75 3.91817,24 10 27 28,stand,,,
195.637 1624.78 3.91817,0 27,stand,,,
476.228 1564.85 3.91817,26 25,stand,,,
82.367 1082.32 3.91817,25 29 306,stand,,,
-52.095 917.638 3.91817,28 30,stand,,,
-210.125 754.026 3.91817,29 31 305,stand,,,
-168.719 656.145 3.91817,30 32,stand,,,
-287.682 500.28 12.5772,31 33,stand,,,
-334.388 458.346 3.91817,32 34,stand,,,
-331.242 543.735 31.1432,33 35,stand,,,
-335.354 579.467 31.1432,34 36,stand,,,
-420.947 579.481 31.1607,35 37,stand,,,
-422.036 721.159 31.1607,36 38,stand,,,
-512.602 746.786 31.1607,37 39 42,stand,,,
-569.421 889.545 31.1607,38 40,stand,,,
-645.409 889.662 32.3915,39 41,stand,,,
-740.832 890.587 5.12269,40 46 145,stand,,,
-474.85 850.972 37.025,38 43,stand,,,
-473.637 986.909 92.2945,42 44,stand,,,
-474.38 1094.5 90.9985,43 45,stand,,,
-626.062 1081.09 90.9985,44,stand,,,
-870.338 874.257 5.11242,41 14,stand,,,
-1621.6 1041.31 3.91817,17 48 143,stand,,,
-1919.59 1013.3 3.91817,47 49,stand,,,
-2014.06 953.011 3.91817,48 50 51 69,stand,,,
-1901.97 930.544 7.08065,49 53,stand,,,
-1996.27 848.231 5.38095,49 52,stand,,,
-2077.5 855.179 39.0764,51 68,stand,,,
-1799.09 898.804 7.08065,50 54 57,stand,,,
-1606.34 891.085 7.08065,53 55,stand,,,
-1408.09 905.646 5.60604,54 56 15,stand,,,
-1353.12 644.568 5.125,55 133 134 150,stand,,,
-1799.61 797.877 7.72876,53 58,stand,,,
-1809.31 717.407 7.10259,57 59 135 136,stand,,,
-1799.16 531.339 7.10259,58 60 135,stand,,,
-1811.94 441.607 7.0979,59 61,stand,,,
-1958.58 441.219 7.0979,60 62,stand,,,
-2023.9 486.934 7.72876,61 63,stand,,,
-2154.02 450.333 7.08065,62 64 65,stand,,,
-2153.93 361.123 7.08065,63 76,stand,,,
-2229.11 454.763 7.08065,63 66 67,stand,,,
-2308.57 460.287 3.91817,65 74 75 82,stand,,,
-2228.89 554.513 39.0764,65 68,stand,,,
-2227.82 868.571 39.0764,67 52,stand,,,
-2355.39 997.064 3.91817,49 70 73,stand,,,
-2459.96 1117.13 3.91817,69 71 8 73,stand,,,
-2452.4 1614.69 3.91817,70 72,stand,,,
-2047.07 1609.93 3.91817,71 9,stand,,,
-2425.95 829.692 3.91817,69 8 75 70,stand,,,
-2506.54 420.126 3.91817,8 66 82,stand,,,
-2369.78 645.398 3.91817,66 73,stand,,,
-2160.61 243.772 3.91817,64 77 81 84,stand,,,
-1799.38 250.987 3.90467,76 78 132 152 81,stand,,,
-1812.69 3.89159 0.0405234,77 79 156 81,stand,,,
-1826.26 -249.055 3.91817,78 80 104 155 81,stand,,,
-2077.03 -253.357 3.21439,79 81,stand,,,
-2132.18 9.35658 0.0405239,80 76 84 78 79 77 85,stand,,,
-2487.08 244.977 3.91817,74 83 84 66,stand,,,
-2473.21 24.1492 0.0405245,82 84 86,stand,,,
-2283.38 11.3215 0.0405245,83 81 85 86 76 82,stand,,,
-2290.3 -183.422 0.0405245,84 86 87 81,stand,,,
-2455.85 -175.36 0.0405241,83 85 87 84,stand,,,
-2301.33 -321.898 5.1905,85 88 157 160 86,stand,,,
-2485.35 -465.242 3.91817,87 89,stand,,,
-2485.18 -676.087 3.91817,88 90,stand,,,
-2476.47 -922.788 3.91817,89 7 95 93,stand,,,
-2449.18 -1388.46 3.91817,7 92,stand,,,
-2200.7 -1378.07 3.91817,91 93 105,stand,,,
-2200.17 -1024.81 3.91817,92 94 90 96,stand,,,
-2133.32 -803.997 3.91817,93 95 96 159,stand,,,
-2335.3 -815.06 3.91817,94 90,stand,,,
-2083.82 -938.694 6.95881,93 94 97,stand,,,
-1915.67 -939.112 6.86258,96 98 100,stand,,,
-1935.08 -1072.82 6.86258,97 99,stand,,,
-1916.85 -1190.4 6.86258,98,stand,,,
-1803.36 -944.597 6.86258,97 101,stand,,,
-1672.75 -944.433 6.24565,100 102 107 163,stand,,,
-1551.4 -939.388 4.97269,101 103 108,stand,,,
-1553.26 -657.629 4.96801,102 104 127 302,stand,,,
-1559.8 -284.013 5.125,103 79 128 153 155 164,stand,,,
-1948.71 -1352.07 3.91817,92 106,stand,,,
-1683.73 -1293.63 3.91817,105 107,stand,,,
-1731.85 -1154.54 3.91817,106 101,stand,,,
-1516.04 -1051.23 3.91817,102 109 127,stand,,,
-1264.45 -1065.57 0.0405246,108 110 126 127 320,stand,,,
-1276.89 -1285.35 0.0405246,109 111 320,stand,,,
-1082.44 -1284.43 3.91817,110 112,stand,,,
-895.631 -1280.01 3.91817,111 113 310,stand,,,
-802.899 -1395.67 3.91817,112 6 310,stand,,,
-276.811 -1410.08 3.91817,6 115,stand,,,
-314.78 -1202.71 3.91817,114 116 308,stand,,,
-343.477 -938.959 3.91817,115 117 309,stand,,,
-363.44 -828.294 6.525,116 118,stand,,,
-439.773 -663.056 3.91817,117 119,stand,,,
-449.56 -522.395 3.91817,118 120,stand,,,
-407.312 -466.704 3.91817,119 121,stand,,,
-485.579 -445.662 3.91817,120 122,stand,,,
-677.143 -387.231 3.91817,121 123,stand,,,
-933.017 -422.082 3.91817,122 124,stand,,,
-930.67 -782.421 5.25439,123 125,stand,,,
-999.294 -834.826 3.91817,124 126,stand,,,
-1131.01 -799.426 -0.00510325,125 127 131 109,stand,,,
-1307.49 -676.69 -0.00510325,126 128 130 103 109 108 302,stand,,,
-1311.92 -280.449 0.0405233,127 104 129 164 165 302,stand,,,
-1037.86 -288.963 5.03612,128 130 165 171,stand,,,
-1040.8 -503.05 5.03612,129 131 127,stand,,,
-1048.96 -697.598 5.03612,130 126,stand,,,
-1685.28 341.488 3.91817,77 133,stand,,,
-1471.62 488.359 3.91817,132 56 151,stand,,,
-1550.94 635.433 7.08065,56 135,stand,,,
-1686.23 636.451 7.10259,134 58 59,stand,,,
-1909.37 568.988 7.10259,58 137,stand,,,
-2066.63 572.876 83.125,136 138,stand,,,
-2112.52 576.227 83.125,137 139,stand,,,
-2107.42 701.695 131.125,138 140,stand,,,
-2020.88 735.105 131.125,139 141,stand,,,
-1987.74 655.122 131.125,140 142,stand,,,
-1896.78 652.897 131.125,141,stand,,,
-1421.03 1096.79 3.91817,15 18 47,stand,,,
-1007.81 603.423 0.0405247,14 145 149,stand,,,
-816.631 608.468 5.05299,144 41 146,stand,,,
-810.786 282.289 5.03519,145 147 149 165 170,stand,,,
-534.789 278.104 4.99458,146 148,stand,,,
-302.999 274.017 5.01574,147 180 169 182 200,stand,,,
-1027.31 271.134 0.040524,146 144 150 164 165,stand,,,
-1341.23 284.186 5.03612,149 56 151 154 164,stand,,,
-1512.16 280.639 5.04407,133 150 152,stand,,,
-1628.58 134.032 0.0405253,151 77 153 154,stand,,,
-1497.79 -37.1529 0.0405254,152 154 104 155,stand,,,
-1393.15 137.087 0.0405254,153 150 152 164,stand,,,
-1607.78 -163.943 -0.0456685,153 104 79 156,stand,,,
-1735.78 -124.495 0.0405254,155 78,stand,,,
-2306.73 -494.141 6.95881,87 158,stand,,,
-2301.77 -700.759 6.95881,157 159,stand,,,
-2137.34 -721.69 3.91817,158 94 160,stand,,,
-2137.32 -420.26 3.91817,159 161 87,stand,,,
-1913.89 -418.226 3.91816,160 162,stand,,,
-1668.3 -418.231 3.91816,161 163,stand,,,
-1697.65 -654.331 3.91816,162 101,stand,,,
-1211.64 -4.96498 0.0405239,104 154 150 149 128 165,stand,,,
-941.113 -5.41094 0.0195068,164 129 149 146 166 170 171 128,stand,,,
-715.627 -10.1748 0.0405248,165 167 170 171,stand,,,
-614.991 -145.793 0.0405248,166 168 171 172,stand,,,
-432.732 -57.2031 0.0405248,167 169 172 180 181,stand,,,
-490.954 144.568 0.0405248,168 170 148 180,stand,,,
-701.663 138.915 0.0405248,169 166 146 165,stand,,,
-776.05 -257.948 4.50645,129 167 166 165 172,stand,,,
-473.993 -221.432 4.89061,171 168 167 173,stand,,,
-302.688 -294.783 5.03612,172 174 181 288,stand,,,
37.8793 -309.333 0.0405254,173 175 287 290,stand,,,
323.486 -295.905 5.0405,174 176 287 300,stand,,,
479.621 -178.848 3.61456,175 177 226 300,stand,,,
440.764 -76.5199 4.92217,176 178 224,stand,,,
300.187 114.061 0.0118433,177 179 200 201 301,stand,,,
45.3572 158.172 0.0118433,178 180 200 201,stand,,,
-230.429 97.7926 -0.00752897,179 148 168 181 200 201 169,stand,,,
-306.441 -97.1164 -0.0595601,173 180 168,stand,,,
-138.755 455.558 3.91817,148 183,stand,,,
13.1323 654.76 3.91817,182 184 200,stand,,,
157.774 890.021 5.50916,183 185,stand,,,
425.992 1238.81 5.50916,184 186 193 195,stand,,,
645.831 1119.13 4.925,185 187 192 195 216,stand,,,
833.913 1375.53 3.91817,186 188 191 192 218,stand,,,
736.359 1519.08 3.91817,187 189,stand,,,
893.701 1686.09 8.36096,188 1 190,stand,,,
1137.98 1471.39 6.75513,189 191,stand,,,
1018.25 1331.46 3.88993,190 187 218,stand,,,
809.617 1166.38 4.925,187 186 215,stand,,,
487.215 1032.71 4.925,185 194 195,stand,,,
433.3 966.054 4.925,193 197,stand,,,
609.134 1042.45 4.925,185 196 186 193,stand,,,
738.904 920.891 4.925,195 207 206,stand,,,
468.552 848.524 4.925,194 198,stand,,,
395.075 721.471 4.925,197 199,stand,,,
244.431 556.373 4.925,198 200,stand,,,
90.0948 415.443 4.92217,199 183 179 178 148 180 202,stand,,,
114.411 24.3883 0.0376246,179 180 178,stand,,,
350.534 381.028 3.91817,200 203 223 301,stand,,,
457.541 360.261 4.925,202 204 301,stand,,,
546.576 512.404 4.925,203 205 209,stand,,,
618.518 699.196 5.21638,204 206,stand,,,
724.408 827.421 5.21638,205 207 196,stand,,,
900.681 787.722 4.925,206 208 196,stand,,,
988.889 895.937 4.925,207 216 217 219 220,stand,,,
743.381 500.45 4.925,204 210,stand,,,
898.575 686.64 128.925,209 211,stand,,,
933.321 740.905 128.925,210 212,stand,,,
831.183 829.413 128.925,211 213,stand,,,
935.285 938.26 128.925,212 214,stand,,,
995.074 1015.78 128.925,213 215,stand,,,
962.802 1040.47 128.925,214 192,stand,,,
776.192 1062.07 4.925,186 208,stand,,,
1216.57 1014.59 3.91817,208 218 303 220,stand,,,
1066.2 1187.79 3.91817,217 191 187 219,stand,,,
979.434 1057.12 4.925,218 208,stand,,,
1158.9 753.984 3.91817,208 221 217,stand,,,
943.806 489.28 3.91817,220 222,stand,,,
726.425 252.694 3.91817,221 223 224 228,stand,,,
544.475 199.012 3.91817,222 202 224,stand,,,
598.879 20.9782 4.92217,223 177 225 222,stand,,,
690.41 -109.772 4.92217,224 226,stand,,,
700.813 -189.667 4.8817,225 227 176 300,stand,,,
806.946 -189.728 4.8817,226 248 242,stand,,,
859.426 118.71 3.91817,222 229,stand,,,
965.272 103.358 3.91817,228 230,stand,,,
1046.79 72.2045 3.91817,229 231,stand,,,
1180.13 190.441 3.91817,230 232 235 236,stand,,,
1307.42 449.253 3.91817,231 233 237,stand,,,
1255.23 581.859 3.91817,232 234,stand,,,
1110.17 427.286 3.91817,233 235,stand,,,
1022.96 281.15 3.91817,234 231,stand,,,
1394.73 47.2641 3.91817,231 237 238 3,stand,,,
1366.28 246.906 3.91817,236 232,stand,,,
1253.42 -52.1804 4.85851,236 239 3,stand,,,
1089.78 -63.9488 4.85851,238 240,stand,,,
1095.85 -140.772 4.85851,239 241,stand,,,
1091.3 -311.8 4.85851,240 242,stand,,,
1050.34 -392.446 4.91723,241 243 227 249,stand,,,
853.023 -344.244 4.91723,242 244 248,stand,,,
849.817 -486.313 4.91723,243 245,stand,,,
726.499 -611.842 4.91723,244 246,stand,,,
650.479 -521.909 4.91723,245 247,stand,,,
729.876 -384.654 4.91723,246 248,stand,,,
784.295 -290.371 4.91723,247 243 227,stand,,,
1026.25 -471.722 4.91723,242 250,stand,,,
947.815 -685.284 14.1139,249,stand,,,
1309.58 -440.279 3.91817,3 252,stand,,,
1098.89 -871.981 3.91817,251 253,stand,,,
997.68 -970.393 3.91817,252 254 255,stand,,,
775.74 -1080.13 3.91817,253 255,stand,,,
681.155 -786.906 3.91817,254 253 256,stand,,,
626.164 -693.623 3.91817,255 257,stand,,,
489.481 -645.887 3.91817,256 258 300,stand,,,
472.17 -759.114 3.91817,257 259,stand,,,
559.265 -914.292 3.91817,258 260,stand,,,
524.515 -1138.95 3.91817,259 261,stand,,,
523.274 -1334.45 3.91817,260 262 298,stand,,,
463.55 -1480.02 3.91817,261 263 264,stand,,,
549.086 -1417.1 3.91817,262 4,stand,,,
236.893 -1627.67 3.91817,262 265 268 269,stand,,,
265.486 -1723.68 5.42292,264 5,stand,,,
-50.935 -1826.54 6.43725,5 267,stand,,,
-71.3775 -1753.05 3.88645,266 268 270,stand,,,
-12.8946 -1617.59 3.90963,267 264 269 270,stand,,,
159.231 -1475.48 9.03058,264 268 271 272,stand,,,
-109.213 -1499.71 3.91817,267 268 271 294,stand,,,
35.4362 -1448.1 8.02271,270 269 295,stand,,,
259.952 -1377.18 8.02271,269 273,stand,,,
245.967 -1308.74 8.02271,272 274 298 297,stand,,,
48.2422 -1348.54 133.468,273 275,stand,,,
6.11627 -1326.13 133.468,274 276,stand,,,
43.4555 -1228.91 133.468,275 277,stand,,,
18.2625 -1104.25 133.468,276 278,stand,,,
-66.2788 -1116.22 133.468,277 279,stand,,,
-81.7711 -1032.29 133.468,278 280,stand,,,
-116.137 -833.08 9.20432,279 281,stand,,,
-63.1994 -695.977 9.20432,280 282 289,stand,,,
46.1107 -932.279 9.20432,281 283 296,stand,,,
68.9144 -1087.83 9.20432,282 284 296,stand,,,
210.726 -1063.43 9.20432,283 285,stand,,,
380.18 -991.402 9.17215,284 286 299,stand,,,
269.474 -807.301 9.17215,285 287,stand,,,
276.196 -565.147 5.04051,286 175 174,stand,,,
-149.062 -461.498 4.9686,173 289 291,stand,,,
-91.2136 -568.429 9.1629,288 281 290,stand,,,
1.49435 -439.011 3.91817,289 174,stand,,,
-282.13 -504.416 3.91817,288 292,stand,,,
-270.029 -630.507 3.91817,291 293,stand,,,
-238.773 -1002.43 4.11739,292 294,stand,,,
-141.632 -1272.49 4.1225,293 270 295,stand,,,
-6.00299 -1256.22 8.02271,294 296 297 271,stand,,,
-25.2678 -1130.8 9.20432,295 283 282,stand,,,
204.856 -1217.69 8.02271,295 298 273,stand,,,
434.556 -1241.93 8.02271,297 299 261 273,stand,,,
409.649 -1106.29 8.02271,298 285,stand,,,
493.232 -432.745 3.91817,175 257 226 176,stand,,,
365.203 272.143 4.98074,178 202 203,stand,,,
-1448.76 -496.767 0.0405239,128 103 127,stand,,,
1344.8 1081.68 3.91817,2 217,stand,,,
-247.034 1154.46 3.91817,22 305 306,stand,,,
-221.968 885.661 3.91817,304 30,stand,,,
-188.338 1095.97 3.91817,28 304,stand,,,
-481.76 -1183.61 3.91817,308 6 310,stand,,,
-412.773 -1076.64 3.91817,307 115 309,stand,,,
-360.138 -1038.37 3.91817,308 116,stand,,,
-726.465 -1270.01 3.91817,307 113 112 311,stand,,,
-760.148 -1144.13 3.91817,310 312,stand,,,
-830.167 -958.409 6.525,311 313 316 320,stand,,,
-592.777 -964.309 6.525,312 314,stand,,,
-593.431 -811.123 6.525,313 315,stand,,,
-779.794 -802.318 6.525,314 316 317,stand,,,
-797.762 -864.264 7.525,315 312,stand,,,
-765.892 -593.856 6.525,315 318,stand,,,
-657.683 -563.258 6.525,317 319,stand,,,
-599.609 -510.788 6.525,318,stand,,,
-1030.93 -975.868 5.00774,110 312 109,stand,,,
-474.537 1275.47 5.12269,12 11 22,stand,,,
-240.856 1452.99 3.91817,11 0 22 10,stand,,,
1 323
2 -124.5 1602 3.91817,10 11 26 322,stand,,,
3 829.2 1789.4 5.50769,189,stand,,,
4 1460.8 1046.6 3.91817,303,stand,,,
5 1406.2 -233.3 3.91817,238 236 251,stand,,,
6 672.463 -1394.62 3.91817,263,stand,,,
7 114.914 -1797.84 8.58386,265 266,stand,,,
8 -622.709 -1415.6 3.91817,113 114 307,stand,,,
9 -2506.3 -1115.29 3.91817,90 91,stand,,,
10 -2508.7 675.609 3.91817,73 74 70,stand,,,
11 -1799.29 1602.7 3.91817,16 72,stand,,,
12 119.408 1450.55 3.91817,0 25 322,stand,,,
13 -406.417 1461.61 3.91817,0 12 21 22 321 322,stand,,,
14 -746.136 1260.05 5.12269,11 13 20 21 321,stand,,,
15 -1111.43 1251.36 0.0405235,12 14 18 20,stand,,,
16 -1005.39 887.579 0.0405235,13 15 46 144,stand,,,
17 -1197.57 935.49 0.0405235,14 55 143,stand,,,
18 -1635.34 1603.43 3.91817,9 17 19,stand,,,
19 -1608.94 1319.14 3.91817,16 18 47,stand,,,
20 -1348.03 1305.11 5.125,17 13 143 19,stand,,,
21 -1204.34 1596.69 0.0405253,16 20 18,stand,,,
22 -1044.6 1413.37 0.0405253,19 13 12,stand,,,
23 -673.861 1512.42 3.91817,11 12,stand,,,
24 -300.552 1248.36 5.12269,11 23 304 321 322,stand,,,
25 -104.725 1302.63 5.10688,22 24,stand,,,
26 34.6356 1331.04 5.10688,23 25,stand,,,
27 222.283 1327.75 3.91817,24 10 27 28,stand,,,
28 195.637 1624.78 3.91817,0 27,stand,,,
29 476.228 1564.85 3.91817,26 25,stand,,,
30 82.367 1082.32 3.91817,25 29 306,stand,,,
31 -52.095 917.638 3.91817,28 30,stand,,,
32 -210.125 754.026 3.91817,29 31 305,stand,,,
33 -168.719 656.145 3.91817,30 32,stand,,,
34 -287.682 500.28 12.5772,31 33,stand,,,
35 -334.388 458.346 3.91817,32 34,stand,,,
36 -331.242 543.735 31.1432,33 35,stand,,,
37 -335.354 579.467 31.1432,34 36,stand,,,
38 -420.947 579.481 31.1607,35 37,stand,,,
39 -422.036 721.159 31.1607,36 38,stand,,,
40 -512.602 746.786 31.1607,37 39 42,stand,,,
41 -569.421 889.545 31.1607,38 40,stand,,,
42 -645.409 889.662 32.3915,39 41,stand,,,
43 -740.832 890.587 5.12269,40 46 145,stand,,,
44 -474.85 850.972 37.025,38 43,stand,,,
45 -473.637 986.909 92.2945,42 44,stand,,,
46 -474.38 1094.5 90.9985,43 45,stand,,,
47 -626.062 1081.09 90.9985,44,stand,,,
48 -870.338 874.257 5.11242,41 14,stand,,,
49 -1621.6 1041.31 3.91817,17 48 143,stand,,,
50 -1919.59 1013.3 3.91817,47 49,stand,,,
51 -2014.06 953.011 3.91817,48 50 51 69,stand,,,
52 -1901.97 930.544 7.08065,49 53,stand,,,
53 -1996.27 848.231 5.38095,49 52,stand,,,
54 -2077.5 855.179 39.0764,51 68,stand,,,
55 -1799.09 898.804 7.08065,50 54 57,stand,,,
56 -1606.34 891.085 7.08065,53 55,stand,,,
57 -1408.09 905.646 5.60604,54 56 15,stand,,,
58 -1353.12 644.568 5.125,55 133 134 150,stand,,,
59 -1799.61 797.877 7.72876,53 58,stand,,,
60 -1809.31 717.407 7.10259,57 59 135 136,stand,,,
61 -1799.16 531.339 7.10259,58 60 135,stand,,,
62 -1811.94 441.607 7.0979,59 61,stand,,,
63 -1958.58 441.219 7.0979,60 62,stand,,,
64 -2023.9 486.934 7.72876,61 63,stand,,,
65 -2154.02 450.333 7.08065,62 64 65,stand,,,
66 -2153.93 361.123 7.08065,63 76,stand,,,
67 -2229.11 454.763 7.08065,63 66 67,stand,,,
68 -2308.57 460.287 3.91817,65 74 75 82,stand,,,
69 -2228.89 554.513 39.0764,65 68,stand,,,
70 -2227.82 868.571 39.0764,67 52,stand,,,
71 -2355.39 997.064 3.91817,49 70 73,stand,,,
72 -2459.96 1117.13 3.91817,69 71 8 73,stand,,,
73 -2452.4 1614.69 3.91817,70 72,stand,,,
74 -2047.07 1609.93 3.91817,71 9,stand,,,
75 -2425.95 829.692 3.91817,69 8 75 70,stand,,,
76 -2506.54 420.126 3.91817,8 66 82,stand,,,
77 -2369.78 645.398 3.91817,66 73,stand,,,
78 -2160.61 243.772 3.91817,64 77 81 84,stand,,,
79 -1799.38 250.987 3.90467,76 78 132 152 81,stand,,,
80 -1812.69 3.89159 0.0405234,77 79 156 81,stand,,,
81 -1826.26 -249.055 3.91817,78 80 104 155 81,stand,,,
82 -2077.03 -253.357 3.21439,79 81,stand,,,
83 -2132.18 9.35658 0.0405239,80 76 84 78 79 77 85,stand,,,
84 -2487.08 244.977 3.91817,74 83 84 66,stand,,,
85 -2473.21 24.1492 0.0405245,82 84 86,stand,,,
86 -2283.38 11.3215 0.0405245,83 81 85 86 76 82,stand,,,
87 -2290.3 -183.422 0.0405245,84 86 87 81,stand,,,
88 -2455.85 -175.36 0.0405241,83 85 87 84,stand,,,
89 -2301.33 -321.898 5.1905,85 88 157 160 86,stand,,,
90 -2485.35 -465.242 3.91817,87 89,stand,,,
91 -2485.18 -676.087 3.91817,88 90,stand,,,
92 -2476.47 -922.788 3.91817,89 7 95 93,stand,,,
93 -2449.18 -1388.46 3.91817,7 92,stand,,,
94 -2200.7 -1378.07 3.91817,91 93 105,stand,,,
95 -2200.17 -1024.81 3.91817,92 94 90 96,stand,,,
96 -2133.32 -803.997 3.91817,93 95 96 159,stand,,,
97 -2335.3 -815.06 3.91817,94 90,stand,,,
98 -2083.82 -938.694 6.95881,93 94 97,stand,,,
99 -1915.67 -939.112 6.86258,96 98 100,stand,,,
100 -1935.08 -1072.82 6.86258,97 99,stand,,,
101 -1916.85 -1190.4 6.86258,98,stand,,,
102 -1803.36 -944.597 6.86258,97 101,stand,,,
103 -1672.75 -944.433 6.24565,100 102 107 163,stand,,,
104 -1551.4 -939.388 4.97269,101 103 108,stand,,,
105 -1553.26 -657.629 4.96801,102 104 127 302,stand,,,
106 -1559.8 -284.013 5.125,103 79 128 153 155 164,stand,,,
107 -1948.71 -1352.07 3.91817,92 106,stand,,,
108 -1683.73 -1293.63 3.91817,105 107,stand,,,
109 -1731.85 -1154.54 3.91817,106 101,stand,,,
110 -1516.04 -1051.23 3.91817,102 109 127,stand,,,
111 -1264.45 -1065.57 0.0405246,108 110 126 127 320,stand,,,
112 -1276.89 -1285.35 0.0405246,109 111 320,stand,,,
113 -1082.44 -1284.43 3.91817,110 112,stand,,,
114 -895.631 -1280.01 3.91817,111 113 310,stand,,,
115 -802.899 -1395.67 3.91817,112 6 310,stand,,,
116 -276.811 -1410.08 3.91817,6 115,stand,,,
117 -314.78 -1202.71 3.91817,114 116 308,stand,,,
118 -343.477 -938.959 3.91817,115 117 309,stand,,,
119 -363.44 -828.294 6.525,116 118,stand,,,
120 -439.773 -663.056 3.91817,117 119,stand,,,
121 -449.56 -522.395 3.91817,118 120,stand,,,
122 -407.312 -466.704 3.91817,119 121,stand,,,
123 -485.579 -445.662 3.91817,120 122,stand,,,
124 -677.143 -387.231 3.91817,121 123,stand,,,
125 -933.017 -422.082 3.91817,122 124,stand,,,
126 -930.67 -782.421 5.25439,123 125,stand,,,
127 -999.294 -834.826 3.91817,124 126,stand,,,
128 -1131.01 -799.426 -0.00510325,125 127 131 109,stand,,,
129 -1307.49 -676.69 -0.00510325,126 128 130 103 109 108 302,stand,,,
130 -1311.92 -280.449 0.0405233,127 104 129 164 165 302,stand,,,
131 -1037.86 -288.963 5.03612,128 130 165 171,stand,,,
132 -1040.8 -503.05 5.03612,129 131 127,stand,,,
133 -1048.96 -697.598 5.03612,130 126,stand,,,
134 -1685.28 341.488 3.91817,77 133,stand,,,
135 -1471.62 488.359 3.91817,132 56 151,stand,,,
136 -1550.94 635.433 7.08065,56 135,stand,,,
137 -1686.23 636.451 7.10259,134 58 59,stand,,,
138 -1909.37 568.988 7.10259,58 137,stand,,,
139 -2066.63 572.876 83.125,136 138,stand,,,
140 -2112.52 576.227 83.125,137 139,stand,,,
141 -2107.42 701.695 131.125,138 140,stand,,,
142 -2020.88 735.105 131.125,139 141,stand,,,
143 -1987.74 655.122 131.125,140 142,stand,,,
144 -1896.78 652.897 131.125,141,stand,,,
145 -1421.03 1096.79 3.91817,15 18 47,stand,,,
146 -1007.81 603.423 0.0405247,14 145 149,stand,,,
147 -816.631 608.468 5.05299,144 41 146,stand,,,
148 -810.786 282.289 5.03519,145 147 149 165 170,stand,,,
149 -534.789 278.104 4.99458,146 148,stand,,,
150 -302.999 274.017 5.01574,147 180 169 182 200,stand,,,
151 -1027.31 271.134 0.040524,146 144 150 164 165,stand,,,
152 -1341.23 284.186 5.03612,149 56 151 154 164,stand,,,
153 -1512.16 280.639 5.04407,133 150 152,stand,,,
154 -1628.58 134.032 0.0405253,151 77 153 154,stand,,,
155 -1497.79 -37.1529 0.0405254,152 154 104 155,stand,,,
156 -1393.15 137.087 0.0405254,153 150 152 164,stand,,,
157 -1607.78 -163.943 -0.0456685,153 104 79 156,stand,,,
158 -1735.78 -124.495 0.0405254,155 78,stand,,,
159 -2306.73 -494.141 6.95881,87 158,stand,,,
160 -2301.77 -700.759 6.95881,157 159,stand,,,
161 -2137.34 -721.69 3.91817,158 94 160,stand,,,
162 -2137.32 -420.26 3.91817,159 161 87,stand,,,
163 -1913.89 -418.226 3.91816,160 162,stand,,,
164 -1668.3 -418.231 3.91816,161 163,stand,,,
165 -1697.65 -654.331 3.91816,162 101,stand,,,
166 -1211.64 -4.96498 0.0405239,104 154 150 149 128 165,stand,,,
167 -941.113 -5.41094 0.0195068,164 129 149 146 166 170 171 128,stand,,,
168 -715.627 -10.1748 0.0405248,165 167 170 171,stand,,,
169 -614.991 -145.793 0.0405248,166 168 171 172,stand,,,
170 -432.732 -57.2031 0.0405248,167 169 172 180 181,stand,,,
171 -490.954 144.568 0.0405248,168 170 148 180,stand,,,
172 -701.663 138.915 0.0405248,169 166 146 165,stand,,,
173 -776.05 -257.948 4.50645,129 167 166 165 172,stand,,,
174 -473.993 -221.432 4.89061,171 168 167 173,stand,,,
175 -302.688 -294.783 5.03612,172 174 181 288,stand,,,
176 37.8793 -309.333 0.0405254,173 175 287 290,stand,,,
177 323.486 -295.905 5.0405,174 176 287 300,stand,,,
178 479.621 -178.848 3.61456,175 177 226 300,stand,,,
179 440.764 -76.5199 4.92217,176 178 224,stand,,,
180 300.187 114.061 0.0118433,177 179 200 201 301,stand,,,
181 45.3572 158.172 0.0118433,178 180 200 201,stand,,,
182 -230.429 97.7926 -0.00752897,179 148 168 181 200 201 169,stand,,,
183 -306.441 -97.1164 -0.0595601,173 180 168,stand,,,
184 -138.755 455.558 3.91817,148 183,stand,,,
185 13.1323 654.76 3.91817,182 184 200,stand,,,
186 157.774 890.021 5.50916,183 185,stand,,,
187 425.992 1238.81 5.50916,184 186 193 195,stand,,,
188 645.831 1119.13 4.925,185 187 192 195 216,stand,,,
189 833.913 1375.53 3.91817,186 188 191 192 218,stand,,,
190 736.359 1519.08 3.91817,187 189,stand,,,
191 893.701 1686.09 8.36096,188 1 190,stand,,,
192 1137.98 1471.39 6.75513,189 191,stand,,,
193 1018.25 1331.46 3.88993,190 187 218,stand,,,
194 809.617 1166.38 4.925,187 186 215,stand,,,
195 487.215 1032.71 4.925,185 194 195,stand,,,
196 433.3 966.054 4.925,193 197,stand,,,
197 609.134 1042.45 4.925,185 196 186 193,stand,,,
198 738.904 920.891 4.925,195 207 206,stand,,,
199 468.552 848.524 4.925,194 198,stand,,,
200 395.075 721.471 4.925,197 199,stand,,,
201 244.431 556.373 4.925,198 200,stand,,,
202 90.0948 415.443 4.92217,199 183 179 178 148 180 202,stand,,,
203 114.411 24.3883 0.0376246,179 180 178,stand,,,
204 350.534 381.028 3.91817,200 203 223 301,stand,,,
205 457.541 360.261 4.925,202 204 301,stand,,,
206 546.576 512.404 4.925,203 205 209,stand,,,
207 618.518 699.196 5.21638,204 206,stand,,,
208 724.408 827.421 5.21638,205 207 196,stand,,,
209 900.681 787.722 4.925,206 208 196,stand,,,
210 988.889 895.937 4.925,207 216 217 219 220,stand,,,
211 743.381 500.45 4.925,204 210,stand,,,
212 898.575 686.64 128.925,209 211,stand,,,
213 933.321 740.905 128.925,210 212,stand,,,
214 831.183 829.413 128.925,211 213,stand,,,
215 935.285 938.26 128.925,212 214,stand,,,
216 995.074 1015.78 128.925,213 215,stand,,,
217 962.802 1040.47 128.925,214 192,stand,,,
218 776.192 1062.07 4.925,186 208,stand,,,
219 1216.57 1014.59 3.91817,208 218 303 220,stand,,,
220 1066.2 1187.79 3.91817,217 191 187 219,stand,,,
221 979.434 1057.12 4.925,218 208,stand,,,
222 1158.9 753.984 3.91817,208 221 217,stand,,,
223 943.806 489.28 3.91817,220 222,stand,,,
224 726.425 252.694 3.91817,221 223 224 228,stand,,,
225 544.475 199.012 3.91817,222 202 224,stand,,,
226 598.879 20.9782 4.92217,223 177 225 222,stand,,,
227 690.41 -109.772 4.92217,224 226,stand,,,
228 700.813 -189.667 4.8817,225 227 176 300,stand,,,
229 806.946 -189.728 4.8817,226 248 242,stand,,,
230 859.426 118.71 3.91817,222 229,stand,,,
231 965.272 103.358 3.91817,228 230,stand,,,
232 1046.79 72.2045 3.91817,229 231,stand,,,
233 1180.13 190.441 3.91817,230 232 235 236,stand,,,
234 1307.42 449.253 3.91817,231 233 237,stand,,,
235 1255.23 581.859 3.91817,232 234,stand,,,
236 1110.17 427.286 3.91817,233 235,stand,,,
237 1022.96 281.15 3.91817,234 231,stand,,,
238 1394.73 47.2641 3.91817,231 237 238 3,stand,,,
239 1366.28 246.906 3.91817,236 232,stand,,,
240 1253.42 -52.1804 4.85851,236 239 3,stand,,,
241 1089.78 -63.9488 4.85851,238 240,stand,,,
242 1095.85 -140.772 4.85851,239 241,stand,,,
243 1091.3 -311.8 4.85851,240 242,stand,,,
244 1050.34 -392.446 4.91723,241 243 227 249,stand,,,
245 853.023 -344.244 4.91723,242 244 248,stand,,,
246 849.817 -486.313 4.91723,243 245,stand,,,
247 726.499 -611.842 4.91723,244 246,stand,,,
248 650.479 -521.909 4.91723,245 247,stand,,,
249 729.876 -384.654 4.91723,246 248,stand,,,
250 784.295 -290.371 4.91723,247 243 227,stand,,,
251 1026.25 -471.722 4.91723,242 250,stand,,,
252 947.815 -685.284 14.1139,249,stand,,,
253 1309.58 -440.279 3.91817,3 252,stand,,,
254 1098.89 -871.981 3.91817,251 253,stand,,,
255 997.68 -970.393 3.91817,252 254 255,stand,,,
256 775.74 -1080.13 3.91817,253 255,stand,,,
257 681.155 -786.906 3.91817,254 253 256,stand,,,
258 626.164 -693.623 3.91817,255 257,stand,,,
259 489.481 -645.887 3.91817,256 258 300,stand,,,
260 472.17 -759.114 3.91817,257 259,stand,,,
261 559.265 -914.292 3.91817,258 260,stand,,,
262 524.515 -1138.95 3.91817,259 261,stand,,,
263 523.274 -1334.45 3.91817,260 262 298,stand,,,
264 463.55 -1480.02 3.91817,261 263 264,stand,,,
265 549.086 -1417.1 3.91817,262 4,stand,,,
266 236.893 -1627.67 3.91817,262 265 268 269,stand,,,
267 265.486 -1723.68 5.42292,264 5,stand,,,
268 -50.935 -1826.54 6.43725,5 267,stand,,,
269 -71.3775 -1753.05 3.88645,266 268 270,stand,,,
270 -12.8946 -1617.59 3.90963,267 264 269 270,stand,,,
271 159.231 -1475.48 9.03058,264 268 271 272,stand,,,
272 -109.213 -1499.71 3.91817,267 268 271 294,stand,,,
273 35.4362 -1448.1 8.02271,270 269 295,stand,,,
274 259.952 -1377.18 8.02271,269 273,stand,,,
275 245.967 -1308.74 8.02271,272 274 298 297,stand,,,
276 48.2422 -1348.54 133.468,273 275,stand,,,
277 6.11627 -1326.13 133.468,274 276,stand,,,
278 43.4555 -1228.91 133.468,275 277,stand,,,
279 18.2625 -1104.25 133.468,276 278,stand,,,
280 -66.2788 -1116.22 133.468,277 279,stand,,,
281 -81.7711 -1032.29 133.468,278 280,stand,,,
282 -116.137 -833.08 9.20432,279 281,stand,,,
283 -63.1994 -695.977 9.20432,280 282 289,stand,,,
284 46.1107 -932.279 9.20432,281 283 296,stand,,,
285 68.9144 -1087.83 9.20432,282 284 296,stand,,,
286 210.726 -1063.43 9.20432,283 285,stand,,,
287 380.18 -991.402 9.17215,284 286 299,stand,,,
288 269.474 -807.301 9.17215,285 287,stand,,,
289 276.196 -565.147 5.04051,286 175 174,stand,,,
290 -149.062 -461.498 4.9686,173 289 291,stand,,,
291 -91.2136 -568.429 9.1629,288 281 290,stand,,,
292 1.49435 -439.011 3.91817,289 174,stand,,,
293 -282.13 -504.416 3.91817,288 292,stand,,,
294 -270.029 -630.507 3.91817,291 293,stand,,,
295 -238.773 -1002.43 4.11739,292 294,stand,,,
296 -141.632 -1272.49 4.1225,293 270 295,stand,,,
297 -6.00299 -1256.22 8.02271,294 296 297 271,stand,,,
298 -25.2678 -1130.8 9.20432,295 283 282,stand,,,
299 204.856 -1217.69 8.02271,295 298 273,stand,,,
300 434.556 -1241.93 8.02271,297 299 261 273,stand,,,
301 409.649 -1106.29 8.02271,298 285,stand,,,
302 493.232 -432.745 3.91817,175 257 226 176,stand,,,
303 365.203 272.143 4.98074,178 202 203,stand,,,
304 -1448.76 -496.767 0.0405239,128 103 127,stand,,,
305 1344.8 1081.68 3.91817,2 217,stand,,,
306 -247.034 1154.46 3.91817,22 305 306,stand,,,
307 -221.968 885.661 3.91817,304 30,stand,,,
308 -188.338 1095.97 3.91817,28 304,stand,,,
309 -481.76 -1183.61 3.91817,308 6 310,stand,,,
310 -412.773 -1076.64 3.91817,307 115 309,stand,,,
311 -360.138 -1038.37 3.91817,308 116,stand,,,
312 -726.465 -1270.01 3.91817,307 113 112 311,stand,,,
313 -760.148 -1144.13 3.91817,310 312,stand,,,
314 -830.167 -958.409 6.525,311 313 316 320,stand,,,
315 -592.777 -964.309 6.525,312 314,stand,,,
316 -593.431 -811.123 6.525,313 315,stand,,,
317 -779.794 -802.318 6.525,314 316 317,stand,,,
318 -797.762 -864.264 7.525,315 312,stand,,,
319 -765.892 -593.856 6.525,315 318,stand,,,
320 -657.683 -563.258 6.525,317 319,stand,,,
321 -599.609 -510.788 6.525,318,stand,,,
322 -1030.93 -975.868 5.00774,110 312 109,stand,,,
323 -474.537 1275.47 5.12269,12 11 22,stand,,,
324 -240.856 1452.99 3.91817,11 0 22 10,stand,,,

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