mirror of
https://github.com/ineedbots/t5_bot_warfare.git
synced 2025-04-24 22:59:14 +00:00
Compare commits
73 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
2e7cf4fb9c | ||
|
9604ea1df3 | ||
|
80865977ad | ||
|
80de21a3a5 | ||
|
2d18695341 | ||
|
ee26e6b33f | ||
|
d95a6491ee | ||
|
82c0c1152d | ||
|
c4481626a5 | ||
|
65435391bc | ||
|
fc24a8c6b6 | ||
|
86d3b27efc | ||
|
1b7b9242ae | ||
|
e75ebddafa | ||
|
e5c63845ce | ||
|
b041d900c8 | ||
|
84d34cda2a | ||
|
c72a125f9c | ||
|
ae741c0fee | ||
|
502cc49a20 | ||
|
0a0c271197 | ||
|
ddc7e5fcc4 | ||
|
7105b397c3 | ||
|
bbc83ce54e | ||
|
aae66eed8d | ||
|
4db437222c | ||
|
8ea9121e33 | ||
|
a4ba59972d | ||
|
81a7ae0ff8 | ||
|
871faa4954 | ||
|
11f8f5e622 | ||
|
674c5dce80 | ||
|
0380768ed7 | ||
|
47acce3f7e | ||
|
29e4840450 | ||
|
36c205e943 | ||
|
7d3bef6309 | ||
|
5df8f4fcc6 | ||
|
9d4517f67f | ||
|
584277d760 | ||
|
ba83829a48 | ||
|
d35eb1e3ee | ||
|
5063850e66 | ||
|
aa140d7417 | ||
|
551e7f55db | ||
|
f651d1f706 | ||
|
8927a1ed20 | ||
|
5b407bb4f1 | ||
|
b4bb7b1740 | ||
|
bc3c4a58a0 | ||
|
3806c3d2d9 | ||
|
5ccde9fa8e | ||
|
fdad31980d | ||
|
6a125b222d | ||
|
812bc5d811 | ||
|
79c0dcf7ac | ||
|
34dc5c9786 | ||
|
0b423d2b3c | ||
|
349893abd3 | ||
|
857bc78947 | ||
|
4c88eacf87 | ||
|
00a45947bf | ||
|
d93386bf9e | ||
|
7bb3b35887 | ||
|
a0380ed024 | ||
|
9713ac71b7 | ||
|
3eca845f07 | ||
|
748d869951 | ||
|
546b43e70a | ||
|
bb84f84abc | ||
|
9cf2770ef5 | ||
|
556dac9171 | ||
|
32d08b75b8 |
27
.astylerc
Normal file
27
.astylerc
Normal 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
11
.editorconfig
Normal 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
|
21
.github/workflows/main.yml
vendored
Normal file
21
.github/workflows/main.yml
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
name: main
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
main-win:
|
||||
name: Test on Windows
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- name: Check out files
|
||||
uses: actions/checkout@main
|
||||
|
||||
- name: Setup gsc-tool
|
||||
uses: xensik/setup-gsc-tool@v1
|
||||
with:
|
||||
version: '1.4.0'
|
||||
|
||||
- name: Compile test script
|
||||
run: |
|
||||
gsc-tool.exe -m comp -g t6 -s pc .
|
37
.gitignore
vendored
37
.gitignore
vendored
@ -1,35 +1,6 @@
|
||||
# Ignore everything in repository root
|
||||
/*
|
||||
|
||||
# Files to not ignore
|
||||
!/.gitignore
|
||||
!/z_devserver.bat
|
||||
!/z_dev.bat
|
||||
!/z_serverdev.bat
|
||||
!/z_client.bat
|
||||
!/z_bots.bat
|
||||
!/z_server.bat
|
||||
|
||||
!/main/
|
||||
/main/*
|
||||
!/main/server.cfg
|
||||
!/main_shared/
|
||||
|
||||
!README.md
|
||||
|
||||
# Folder to not ignore
|
||||
!/mods/
|
||||
/mods/*
|
||||
!/mods/mp_bots/
|
||||
!/mods/patch_mp/
|
||||
!/mods/patch_ui_mp/
|
||||
|
||||
*.zip
|
||||
*.log
|
||||
*.stat
|
||||
logs/
|
||||
demos/
|
||||
missingasset.csv
|
||||
*.ff
|
||||
*.files
|
||||
*.iwd
|
||||
!/out/
|
||||
!/out/**/*.ff
|
||||
!/out/**/*.iwd
|
||||
*.zip
|
15
.vscode/settings.json
vendored
Normal file
15
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"astyle.astylerc": "${workspaceRoot}/.astylerc",
|
||||
"astyle.additional_languages": [
|
||||
"gsc"
|
||||
],
|
||||
"[gsc]": {
|
||||
"editor.defaultFormatter": "chiehyu.vscode-astyle",
|
||||
},
|
||||
"editor.quickSuggestions": {
|
||||
"other": true,
|
||||
"comments": true,
|
||||
"strings": true
|
||||
},
|
||||
"vscode-codscript.use_builtin_completionItems": false
|
||||
}
|
118
README.md
118
README.md
@ -1,11 +1,11 @@
|
||||

|
||||

|
||||
|
||||
# BO1 Bot Warfare
|
||||
Bot Warfare is a GSC mod for [Black Ops 1](https://store.steampowered.com/app/42700/Call_of_Duty_Black_Ops/) (or [this](https://getrektby.us/)).
|
||||
# T5 Bot Warfare
|
||||
Bot Warfare is a GSC mod for [PlutoniumT5](https://plutonium.pw/).
|
||||
|
||||
It aims to extend the existing AI in the multiplayer games of Black Ops 1.
|
||||
|
||||
You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfare/downloads/bo1-bot-warfare-latest).
|
||||
You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfare/downloads/t5-bot-warfare-latest).
|
||||
|
||||
## Contents
|
||||
- [Features](#Features)
|
||||
@ -41,9 +41,12 @@ This mod extends the functionality and features of Combat Training in Black Ops
|
||||
- Bots have a slight delay after spawning, scales inversely with difficulty.
|
||||
- Bots can reroll carepackages.
|
||||
- Bots can use the valkyrie rocket carepackage streak.
|
||||
- Bots can melee lunge.
|
||||
- Bots can jumpshot and dropshot.
|
||||
- Bots can use altmode weapons (gl, ft, mk)
|
||||
|
||||
## Installation
|
||||
0. Download the [latest release](https://github.com/ineedbots/bo1_bot_warfare/releases) of Bot Warfare.
|
||||
0. Download the [latest release](https://github.com/ineedbots/t5_bot_warfare/releases) of Bot Warfare.
|
||||
1. Locate the root folder which your game is installed in.
|
||||
2. Move the files/folders found in 'Move to root of Black Ops folder' from the Bot Warfare release archive you downloaded to the root of your Black Ops folder.
|
||||
- The folder/file structure should follow as '.Black Ops folder\mods\mp_bots\mp_bots.iwd'.
|
||||
@ -53,67 +56,50 @@ This mod extends the functionality and features of Combat Training in Black Ops
|
||||
## Documentation
|
||||
|
||||
### 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.
|
||||
|
||||
- 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_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_loadout_prestige - an integer number, bots will be this prestige, -1 is the same as player, -2 is all random
|
||||
|
||||
- bots_loadout_codpoints - an integer number, bots will be given this amount of codpoints, -1 is the around player, 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_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_take_carepackages - a boolean value (0 or 1), whether or not if the bots will take care packages
|
||||
|
||||
---
|
||||
|
||||
- bots_main - a boolean value (0 or 1), enables or disables the mod
|
||||
|
||||
- bots_main_waitForHostTime - a float value, how long in seconds to wait for the host player to connect before adding in bots
|
||||
| Dvar | Description | Default Value |
|
||||
|----------------------------------|---------------------------------------------------------------------------------------------|--------------:|
|
||||
| bots_main | Enable this mod. | 1 |
|
||||
| bots_main_waitForHostTime | How many seconds to wait for the host player to connect before adding bots to the match. | 10 |
|
||||
| bots_main_debug | Enable bot event prints. <ul><li>`0` - disable</li><li>`1` - for just debug events</li><li>`2` - for every event</li><ul> | 0 |
|
||||
| bots_main_kickBotsAtEnd | Kick the bots at the end of a match. | 0 |
|
||||
| bots_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><li>`2` - exactly `0` but auto adjusts `bots_manage_fill` to map.</li><li>`3` - exactly `1` but auto adjusts `bots_manage_fill` to map.</li><li>`4` - bots are used for balancing teams.</li><li>`5` - exactly `4` but auto adjusts `bots_manage_fill` to map.</li></ul> | 0 |
|
||||
| bots_manage_fill_watchplayers | Bots will not be added until one player is in the game | 0 |
|
||||
| bots_manage_fill_kick | If the amount of players/bots in the match exceeds `bots_manage_fill`, kick bots until no longer exceeds. | 0 |
|
||||
| bots_manage_fill_spec | If when counting players for `bots_manage_fill` should include spectators. | 1 |
|
||||
| bots_team | One of `autoassign`, `allies`, `axis`, `spectator`, or `custom`. What team the bots should be on. | autoassign |
|
||||
| bots_team_amount | When `bots_team` is set to `custom`. The amount of bots to be placed on the axis team. The remainder will be placed on the allies team. | 0 |
|
||||
| bots_team_force | If the server should force bots' teams according to the `bots_team` value. When `bots_team` is `autoassign`, unbalanced teams will be balanced. This dvar is ignored when `bots_team` is `custom`. | 0 |
|
||||
| bots_team_mode | When `bots_team_force` is `1` and `bots_team` is `autoassign`, players/bots counting method. <ul><li>`0` - counts both players and bots.</li><li>`1` - only counts bots</li></ul> | 0 |
|
||||
| bots_loadout_reasonable | If the bots should filter bad performing create-a-class selections. | 0 |
|
||||
| bots_loadout_allow_op | If the bots should be able to use overpowered and annoying create-a-class selections. | 1 |
|
||||
| bots_loadout_rank | What rank to set the bots.<ul><li>`-1` - Average of all players in the match.</li><li>`0` - All random.</li><li>`1` or higher - Sets the bots' rank to this.</li></ul> | -1 |
|
||||
| bots_loadout_prestige | What prestige to set the bots.<ul><li>`-1` - Same as host player in the match.</li><li>`-2` - All random.</li><li>`0` or higher - Sets the bots' prestige to this.</li></ul> | -1 |
|
||||
| bots_loadout_codpoints | Bots will be given this amount of codpoints to spend.<ul><li>`-1` - Average of all players in the match.</li><li>`0` - All random.</li><li>`1` or higher - Sets the bots' codpoints 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_take_carepackages | If the bots can take carepackages. | 1 |
|
||||
| bots_play_obj | If the bots can play the objective. | 1 |
|
||||
| bots_play_camp | If the bots can camp. | 1 |
|
||||
| bots_play_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_aim | If the bots can aim. | 1 |
|
||||
|
||||
## Changelog
|
||||
- v1.2.0 (not released yet)
|
||||
- Bots can now melee lunge
|
||||
- Bots can now jumpshot and dropshot
|
||||
- Fixed bots_manage_fill_spec players being counted with bots_manage_fill_mode 1 (bot only)
|
||||
- Added bots_manage_fill_watchplayers dvar
|
||||
- Fix some script runtime errors
|
||||
- Improved bots using altmode weapons
|
||||
- Improved bots taking spyplanes down
|
||||
- Reduced variable usage
|
||||
- Major cleanup
|
||||
|
||||
- v1.1.1
|
||||
- Fixed some script runtime errors
|
||||
- Improved domination
|
||||
@ -146,8 +132,8 @@ This mod extends the functionality and features of Combat Training in Black Ops
|
||||
- Initial release.
|
||||
|
||||
## Credits
|
||||
- INeedGames(me) - http://www.moddb.com/mods/bot-warfare
|
||||
- apdonato - http://rsebots.blogspot.ca/
|
||||
- INeedGames - http://www.moddb.com/mods/bot-warfare
|
||||
- apdonato - https://web.archive.org/web/20240516065610/http://rsebots.blogspot.com/
|
||||
|
||||
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
|
||||
|
Before Width: | Height: | Size: 756 KiB After Width: | Height: | Size: 756 KiB |
320
main/server.cfg
320
main/server.cfg
@ -1,320 +0,0 @@
|
||||
//////////////////////////////////////////////////
|
||||
// SERVER NAME & COLORS //
|
||||
//////////////////////////////////////////////////
|
||||
// //
|
||||
// ^1 Red //
|
||||
// ^2 Green //
|
||||
// ^3 Orange //
|
||||
// ^4 Dark Blue //
|
||||
// ^5 Light Blue //
|
||||
// ^6 Pink //
|
||||
// ^7 White //
|
||||
// ^8 Grey //
|
||||
// ^9 Brown //
|
||||
// ^0 Black //
|
||||
// //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set sv_hostname "^1Bot ^3War^5fare ^4Bots ^724/7" // Please put a server host name here
|
||||
|
||||
set scr_xpscale "10"
|
||||
//////////////////////////////////////////////////
|
||||
// GENERAL SETTINGS //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set rcon_password "1qaz1qaz" // Access to your server to change stuff remotely.
|
||||
set scr_player_forcerespawn "1" // Players respawn automatically after being fragged.
|
||||
set scr_game_spectatetype "1" // Enable or Disables Spec mode, putting "1" allows spectators to spectate match.
|
||||
set scr_hardcore "0" // Enable or Disable Hardcore Mode.
|
||||
set scr_player_healthregentime "5" // Time it takes you to recover damage.
|
||||
set scr_team_kickteamkillers "0" // Anyone who team kills, gets kicked automatically if you enable this feature.
|
||||
set scr_team_teamkillspawndelay "20" // Team Killer gets a respawn penalty of specified seconds (20).
|
||||
set scr_player_maxhealth "100" // Percent of Health players will have on Respawn.
|
||||
set scr_player_sprinttime "12" // Sprint run time.
|
||||
set scr_player_suicidespawndelay "0" // Wait before you respawn if you committed suicide.
|
||||
set scr_teambalance "0" // Enable or Disable auto balance.
|
||||
set party_minplayers "1" // Pre-Match Lobby
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// CLIENT SETTINGS //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set g_password "" // Password Protected Game. Leave blank if you want players to join.
|
||||
set sv_disableClientConsole "0" // Enable or Disable players ability to access server commands.
|
||||
set sv_reconnectlimit "5" // How many times you can try to reconnect.
|
||||
set sv_timeout "240" // Timeout time period. You will timeout after (240) seconds when attempting to connect or if you are getting connection interruptions.
|
||||
set sv_zombietime "10" // Your idle time period before getting kicked.
|
||||
set g_inactivity "0" // Enable or Disable auto kick feature for idle/AFK players.
|
||||
set g_allowvote "1" // Allow Vote.
|
||||
set sv_floodProtect "4" // Chat Spam Protection.
|
||||
set sv_maxPing "0" // Max Ping allowed.
|
||||
set sv_maxRate "25000" // Max rate on server.
|
||||
set sv_minPing "0" // Minimum Ping allowed.
|
||||
set sv_privateClients "0" // Private reserved slots on server.
|
||||
set sv_pure "0" // verifying cilent files
|
||||
set sv_kickBanTime "300" // Kick Ban Duration. Time before player can re-join the server after getting kicked.
|
||||
set sv_vac "0" // Enable/Disable VAC steam Anti-Cheat.. No use...
|
||||
set logfile "1"
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// SERVER SETTINGS //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set scr_game_hardpoints "1" // Hardcore Scoring System.
|
||||
set scr_game_killstreaks "1" // Enable/Disable Killstreak rewards.
|
||||
set scr_hardpoint_allowdogs "1" // Enable/Disable Attack Dogs Killstreak.
|
||||
set scr_hardpoint_allowhelicopter_comlink "1" // Helicopter Com Link
|
||||
set scr_hardpoint_allowradardirection "1" // Radar Direction
|
||||
set scr_hardpoint_allowsupply "1" // Care Package
|
||||
set scr_hardpoint_allowhelicopter_gunner "1" // Helicopter Gunner
|
||||
set scr_hardpoint_allowcounteruav "1" // Counter Spy Plane
|
||||
set scr_hardpoint_allowhelicopter_player "1" // Helicopter
|
||||
set scr_hardpoint_allowmortar "1" // Mortar Team
|
||||
set scr_hardpoint_allownapalm "1" // Napalm Airstrike
|
||||
set scr_hardpoint_allowrcbomb "1" // RC-XD Bomb
|
||||
set scr_hardpoint_allowairstrike "1" // Air Strike
|
||||
set scr_hardpoint_allowauto_turret "1" // Auto Turret
|
||||
set scr_hardpoint_allowradar "1" // Allow Radar
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// SERVER TWEAKS //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set g_deadChat "1" // Enable or Disable the ability to read dead chat chat of people who have been fragged.
|
||||
set scr_game_allowfinalkillcam "1" // Enable/Disable Game Winning Kill Killcam.
|
||||
set scr_team_allowHardpointStreakAfterDeath "0" // Enable/Disable Killstreak after Death. Player resumes the killstreak even after being fragged.
|
||||
set scr_game_allowkillcam "1" // Allow Killcam.
|
||||
set g_allow_teamchange "1" // Allow players to change teams.
|
||||
set scr_player_allowrevive "1" // Allow players to revive each other.
|
||||
set scr_team_artilleryTeamKillPenalty "0.25" // If you kill your team member with artillery strike, this amount of percent of your artillery time gets deducted. Logical ?
|
||||
set scr_game_deathpointloss "0" // Points Loss on death Cod Points.
|
||||
set scr_team_fftype "0" // Enable or Disable Friendly Fire.
|
||||
set scr_game_onlyheadshots "0" // Enable/Disable Only Headshots mode. You can only kill players by taking headshots.
|
||||
set scr_team_mortarTeaTeamKillPenalty "0.25" // Mortar Air Strike Team Kill Penalty, time deducted.
|
||||
set scr_game_prematchperiod "15" // Time before match starts. Strat time?
|
||||
set g_speed "190" // Player speed, speed at which player can move.
|
||||
set scr_game_suicidepointloss "0" // Suicide penalty in cod points.
|
||||
set scr_team_teamkillpointloss "1" // Cod Points Penalty for Team Kill.
|
||||
set scr_team_teamkillerplaylistbanpenalty "0" // Add the team killer to the ban list.
|
||||
set scr_team_teamkillerplaylistbanquantum "0"
|
||||
set scr_game_perks "1" // Allow players to have perks
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// VOIP SETTINGS //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set voice_deadChat "1" // Enable/Disable voice over IP chat when a player is dead.
|
||||
set voice_global "1" // Enable/Disable the use of in-game voice over IP.
|
||||
set sv_voicequality "1" // Voice Quality, 3 for high, 1 for low. More bandwidth better quality.
|
||||
set g_voiceChatTalkingDuration "500" // Duration you can chat.
|
||||
set sv_voice "1" // Allow Voice Chat
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//CAPTURE THE FLAG GAMETYPE SETTINGS //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set scr_ctf_globalbattlechatterprobability "0"
|
||||
set scr_ctf_enemycarriervisible "0" // Where is the flag carrier, spot visible on radar.
|
||||
set scr_ctf_flagrespawntime "0" // Time before a captured flag respawns.
|
||||
set scr_ctf_idleflagreturntime "30" // Time before a dropped flag returns to its default location if not picked.
|
||||
set scr_ctf_numlives "0" // Number of lives per player 0 for unlimited.
|
||||
set scr_ctf_playerrespawndelay "0" // Respawn wait in seconds.
|
||||
set scr_ctf_roundlimit "3" // How many rounds match would last.
|
||||
set scr_ctf_roundswitch "1" // Rounds before the teams switch sides.
|
||||
set scr_ctf_scorelimit "3" // Target score before the round ends.
|
||||
set scr_ctf_timelimit "5" // Round length.
|
||||
set scr_ctf_touchreturn "1" // Ability to return the flag by touching it.
|
||||
set scr_ctf_waverespawndelay "15"
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// DEMOLITION GAMETYPE SETTINGS //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set scr_dem_globalbattlechatterprobability "0"
|
||||
set scr_dem_bombtimer "45" // Time the bomb takes to detonate.
|
||||
set scr_dem_defusetime "5" // Time taken to defuse the bomb.
|
||||
set scr_dem_extratime "3"
|
||||
set scr_dem_numlives "0" // Lives per player 0 for unlimited.
|
||||
set scr_dem_planttime "5" // Time it takes to plant a bomb in seconds.
|
||||
set scr_dem_roundlimit "0" // Rounds the game is limited to, if there are no winners.
|
||||
set scr_dem_roundswitch "1" // Rounds before the teams switch the sides.
|
||||
set scr_dem_scorelimit "2" // Score limit needed to win.
|
||||
set scr_dem_timelimit "2.5" // Round time limit.
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// DOMINATION GAMETYPE SETTINGS //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set scr_dom_globalbattlechatterprobability "0"
|
||||
set scr_dom_flagcapturetime "10" // Time in seconds to capture a flag.
|
||||
set scr_dom_numlives "0" // Lives per player 0 for unlimited.
|
||||
set scr_dom_playerrespawndelay "0" // Duration of time you wait to respawn.
|
||||
set scr_dom_roundlimit "1" // Rounds played per game.
|
||||
set scr_dom_scorelimit "300" // Score limit per game.
|
||||
set scr_dom_timelimit "60" // Duration in minutes per round.
|
||||
set scr_dom_waverespawndelay "0" // Spawn delay at start.
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// FREE FOR ALL GAMETYPE SETTINGS //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set scr_dm_globalbattlechatterprobability "100"
|
||||
set scr_dm_bonus_leader "0"
|
||||
set scr_dm_numlives "0" // Lives per player 0 for unlimited.
|
||||
set scr_dm_playerrespawndelay "0" // Time in seconds wait to respawn.
|
||||
set scr_dm_roundlimit "1" // Round limit.
|
||||
set scr_dm_score_assist "100" // Points allotted for an assist.
|
||||
set scr_dm_score_death "0" // Points allotted for dying.
|
||||
set scr_dm_score_headshot "0" // Points for headshot.
|
||||
set scr_dm_score_kill "50" // Points for a kill.
|
||||
set scr_dm_scorelimit "1500" // Points needed to win the game.
|
||||
set scr_dm_score_suicide "0" // Points allotted for suicide.
|
||||
set scr_dm_timelimit "15" // Duration the game lasts in minutes when the score limit isn't reached.
|
||||
set scr_dm_waverespawndelay "0" // Delay before the first respawn in the first round.
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// HEADQUARTERS GAMETYPE SETTINGS //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set scr_koth_globalbattlechatterprobability "0"
|
||||
set scr_koth_numlives "0" // Number of lives per game 0 for unlimited.
|
||||
set scr_koth_playerrespawndelay "0" // Players respawn wait.
|
||||
set scr_koth_roundlimit "1" // Rounds to be played.
|
||||
set scr_koth_roundswitch "1" // Rounds to be played before teams switch sides.
|
||||
set scr_koth_scorelimit "250" // Score limit to win the game.
|
||||
set scr_koth_timelimit "15" // Duration in minutes the game will continue if the score isn't reached.
|
||||
set scr_koth_waverespawndelay "0" // First respawn delay for each round.
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// SABOTAGE GAMETYPE SETTINGS //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set scr_sab_globalbattlechatterprobability "0"
|
||||
set scr_sab_bombtimer "30" // Duration in seconds the bomb takes to detonate.
|
||||
set scr_sab_defusetime "5" // Time taken to defuse the bomb.
|
||||
set scr_sab_hotpotato "0" // One bomb that the teams must fight over. One defending and one have to plant at the site.
|
||||
set scr_sab_numlives "0" // Number of lives players get.
|
||||
set scr_sab_planttime "2.5" // Time taken to plant the bomb.
|
||||
set scr_sab_playerrespawndelay "7.5" // Time before respawn.
|
||||
set scr_sab_roundlimit "1" // Rounds per game.
|
||||
set scr_sab_roundswitch "1" // Rounds needed to be played before the teams switch sides.
|
||||
set scr_sab_scorelimit "1" // Score limit to win the match.
|
||||
set scr_sab_timelimit "10" // Duration in minutes the game lasts if the score limit isn't reached.
|
||||
set scr_sab_waverespawndelay "0" // Time delay for first respawn before the game.
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// SEARCH AND DESTROY GAMETYPE SETTINGS //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set scr_sd_globalbattlechatterprobability "0"
|
||||
set scr_sd_bombtimer "45" // Time taken for the bomb to detonate.
|
||||
set scr_sd_defusetime "5" // Time taken to defuse the bomb.
|
||||
set scr_sd_game_spectatetype "3" // Allow team spectate.
|
||||
set scr_sd_multibomb "0" // Allow more than one bomb.
|
||||
set scr_sd_numlives "1" // Number of lives per player per game.
|
||||
set scr_sd_planttime "5" // Time taken to plant the bomb.
|
||||
set scr_sd_playerrespawndelay "0" // Respawn wait.
|
||||
set scr_sd_roundlimit "0" // Rounds the game is limited to 0 for unlimited.
|
||||
set scr_sd_roundswitch "3" // Rounds to be played before the teams switch sides.
|
||||
set scr_sd_scorelimit "4" // Score limit required to win the game.
|
||||
set scr_sd_timelimit "2.5" // Time limit if the score limit isn't reached.
|
||||
set scr_sd_waverespawndelay "0" // Delay for first respawn.
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// TEAM DEATHMATCH GAMETYPE SETTINGS //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set scr_tdm_globalbattlechatterprobability "0"
|
||||
set scr_tdm_bonus_leader "0" // Top Player on the leaderboard gets this much bonus.
|
||||
set scr_tdm_numlives "0" // Number of lives per player 0 for unlimited.
|
||||
set scr_tdm_playerrespawndelay "0" // Respawn wait.
|
||||
set scr_tdm_roundlimit "1" // Rounds per game.
|
||||
set scr_tdm_score_assist "50" // Points awarded for an assist.
|
||||
set scr_tdm_score_death "0" // Points awarded for death.
|
||||
set scr_tdm_score_headshot "0" // Headshot reward.
|
||||
set scr_tdm_score_kill "100" // Points awarded for a kill.
|
||||
set scr_tdm_scorelimit "7500" // Score limit to win the game.
|
||||
set scr_tdm_score_suicide "0" // Score awarded for suicide.
|
||||
set scr_tdm_timelimit "15" // Duration in minutes for the game to end if the score limit isn't reached.
|
||||
set scr_tdm_waverespawndelay "0" // Duration is seconds before the first respawn in each round.
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// GAMETYPE & WAGER TIPS //
|
||||
//////////////////////////////////////////////////
|
||||
// //
|
||||
// tdm - Team deathmatch //
|
||||
// dm - Free-for-all //
|
||||
// sab - Sabotage //
|
||||
// dem - Demolition //
|
||||
// ctf - Capture the flag //
|
||||
// sd - Search and destroy //
|
||||
// dom - Domination //
|
||||
// koth - Headquarters //
|
||||
// //
|
||||
//// Wager Matchs ////////////////////////////////
|
||||
// //
|
||||
// IMPORTMENT //
|
||||
// Wager Matchs MUST require xblive_wagermatch 1//
|
||||
// //
|
||||
// hlnd - Stick and Stones* //
|
||||
// gun - Gun mode* //
|
||||
// shrp - Sharpshooter* //
|
||||
// oic - One in the Chamber* //
|
||||
// //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set g_gametype "dom" // Select gametype from the list above
|
||||
set xblive_wagermatch "0" // Set to 1 if you plan on using a wager match. This is a MUST! Failure to do so caused problems
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// MAP ROTATION TIPS //
|
||||
//////////////////////////////////////////////////
|
||||
// //
|
||||
// mp_array - Array //
|
||||
// mp_cracked - Cracked //
|
||||
// mp_crisis - Crysis //
|
||||
// mp_firingrange - Firingrange //
|
||||
// mp_duga - Grid //
|
||||
// mp_hanoi - Hanoi //
|
||||
// mp_cairo - Havana //
|
||||
// mp_havoc - Jungle //
|
||||
// mp_cosmodrome - Launch //
|
||||
// mp_nuked - Nuketown //
|
||||
// mp_radiation - Radiation //
|
||||
// mp_mountain - Summit //
|
||||
// mp_villla - Villa //
|
||||
// mp_russianbase - WMD //
|
||||
// //
|
||||
//// DLC1 FIRSTSTRIKE ////////////////////////////
|
||||
// //
|
||||
// mp_berlinwall2 - Berlin Wall //
|
||||
// mp_discovery - Discovery //
|
||||
// mp_kowloon - Kowloon //
|
||||
// mp_stadium - Stadium //
|
||||
// //
|
||||
//// DLC2 ESCALATION /////////////////////////////
|
||||
// //
|
||||
// mp_gridlock - Convoy //
|
||||
// mp_hotel - Hotel //
|
||||
// mp_outskirts - Stockpile //
|
||||
// mp_zoo - Zoo //
|
||||
// //
|
||||
//// DLC3 ANNIHILATION ///////////////////////////
|
||||
// //
|
||||
// mp_drivein - Drive-In //
|
||||
// mp_area51 - Hanger 18 //
|
||||
// mp_golfcourse - Hazard //
|
||||
// mp_silo - Silo //
|
||||
// //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set sv_maprotation "gametype dom map mp_nuked"
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
// PLAYLIST DVARS //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
set playlist_enabled "0" // Reserved slots for players in playlist.
|
||||
set playlist_excludeMap "mapname" // Exclude this map from the server rotation. Type in the map name shortname.
|
||||
set playlist_excludeGametype "" // Exclude this gametype, type in the gametype shortname.
|
||||
set playlist_excludeGametypeMap "" // Exclude this gametype map, type in the map shortname.
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,539 +0,0 @@
|
||||
/*
|
||||
_bot_utility
|
||||
Author: INeedGames
|
||||
Date: 12/20/2020
|
||||
The shared functions for bots
|
||||
*/
|
||||
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_utility;
|
||||
#include maps\mp\gametypes\_hud_util;
|
||||
|
||||
/*
|
||||
Returns an array of all the bots in the game.
|
||||
*/
|
||||
getBotArray()
|
||||
{
|
||||
result = [];
|
||||
playercount = level.players.size;
|
||||
for(i = 0; i < playercount; i++)
|
||||
{
|
||||
player = level.players[i];
|
||||
|
||||
if(!player is_bot())
|
||||
continue;
|
||||
|
||||
result[result.size] = player;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
Returns a good amount of players.
|
||||
*/
|
||||
getGoodMapAmount()
|
||||
{
|
||||
switch(getdvar("mapname"))
|
||||
{
|
||||
default:
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Rounds to the nearest whole number.
|
||||
*/
|
||||
Round(x)
|
||||
{
|
||||
y = int(x);
|
||||
|
||||
if(abs(x) - abs(y) > 0.5)
|
||||
{
|
||||
if(x < 0)
|
||||
return y - 1;
|
||||
else
|
||||
return y + 1;
|
||||
}
|
||||
else
|
||||
return y;
|
||||
}
|
||||
|
||||
/*
|
||||
Picks a random thing
|
||||
*/
|
||||
PickRandom(arr)
|
||||
{
|
||||
if (!arr.size)
|
||||
return undefined;
|
||||
|
||||
return arr[randomInt(arr.size)];
|
||||
}
|
||||
|
||||
/*
|
||||
If is defusing
|
||||
*/
|
||||
isDefusing()
|
||||
{
|
||||
return (isDefined(self.isDefusing) && self.isDefusing);
|
||||
}
|
||||
|
||||
/*
|
||||
If is defusing
|
||||
*/
|
||||
isPlanting()
|
||||
{
|
||||
return (isDefined(self.isPlanting) && self.isPlanting);
|
||||
}
|
||||
|
||||
/*
|
||||
If is defusing
|
||||
*/
|
||||
inLastStand()
|
||||
{
|
||||
return (isDefined(self.laststand) && self.laststand);
|
||||
}
|
||||
|
||||
/*
|
||||
Is they the flag carrier men?
|
||||
*/
|
||||
isFlagCarrier()
|
||||
{
|
||||
return (isDefined(self.isFlagCarrier) && self.isFlagCarrier);
|
||||
}
|
||||
|
||||
/*
|
||||
If the site is in use
|
||||
*/
|
||||
isInUse()
|
||||
{
|
||||
return (isDefined(self.inUse) && self.inUse);
|
||||
}
|
||||
|
||||
/*
|
||||
If the player is carrying a bomb
|
||||
*/
|
||||
isBombCarrier()
|
||||
{
|
||||
return (isDefined(self.isBombCarrier) && self.isBombCarrier);
|
||||
}
|
||||
|
||||
/*
|
||||
Gets the bot's difficulty number
|
||||
*/
|
||||
GetBotDiffNum()
|
||||
{
|
||||
num = 0;
|
||||
|
||||
switch (getDvar("bot_difficulty"))
|
||||
{
|
||||
case "fu":
|
||||
num = 3;
|
||||
break;
|
||||
case "hard":
|
||||
num = 2;
|
||||
break;
|
||||
case "normal":
|
||||
num = 1;
|
||||
break;
|
||||
case "easy":
|
||||
default:
|
||||
num = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
/*
|
||||
is the weapon alt mode?
|
||||
*/
|
||||
isWeaponAltmode(weap)
|
||||
{
|
||||
if (isStrStart(weap, "gl_") || isStrStart(weap, "ft_") || isStrStart(weap, "mk_"))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
Returns a valid grenade launcher weapon
|
||||
*/
|
||||
getValidTube()
|
||||
{
|
||||
weaps = self getweaponslist();
|
||||
|
||||
for (i = 0; i < weaps.size; i++)
|
||||
{
|
||||
weap = weaps[i];
|
||||
|
||||
if(!self getAmmoCount(weap))
|
||||
continue;
|
||||
|
||||
if ((isSubStr(weap, "gl_") && !isSubStr(weap, "_gl_")) || weap == "china_lake_mp")
|
||||
return weap;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
/*
|
||||
Taken from iw4 script
|
||||
*/
|
||||
waittill_any_timeout( timeOut, string1, string2, string3, string4, string5 )
|
||||
{
|
||||
if ( ( !isdefined( string1 ) || string1 != "death" ) &&
|
||||
( !isdefined( string2 ) || string2 != "death" ) &&
|
||||
( !isdefined( string3 ) || string3 != "death" ) &&
|
||||
( !isdefined( string4 ) || string4 != "death" ) &&
|
||||
( !isdefined( string5 ) || string5 != "death" ) )
|
||||
self endon( "death" );
|
||||
|
||||
ent = spawnstruct();
|
||||
|
||||
if ( isdefined( string1 ) )
|
||||
self thread waittill_string( string1, ent );
|
||||
|
||||
if ( isdefined( string2 ) )
|
||||
self thread waittill_string( string2, ent );
|
||||
|
||||
if ( isdefined( string3 ) )
|
||||
self thread waittill_string( string3, ent );
|
||||
|
||||
if ( isdefined( string4 ) )
|
||||
self thread waittill_string( string4, ent );
|
||||
|
||||
if ( isdefined( string5 ) )
|
||||
self thread waittill_string( string5, ent );
|
||||
|
||||
ent thread _timeout( timeOut );
|
||||
|
||||
ent waittill( "returned", msg );
|
||||
ent notify( "die" );
|
||||
return msg;
|
||||
}
|
||||
|
||||
/*
|
||||
Used for waittill_any_timeout
|
||||
*/
|
||||
_timeout( delay )
|
||||
{
|
||||
self endon( "die" );
|
||||
|
||||
wait( delay );
|
||||
self notify( "returned", "timeout" );
|
||||
}
|
||||
|
||||
/*
|
||||
Waits for a host player
|
||||
*/
|
||||
bot_wait_for_host()
|
||||
{
|
||||
host = undefined;
|
||||
|
||||
while (!isDefined(level) || !isDefined(level.players))
|
||||
wait 0.05;
|
||||
|
||||
for(i = getDvarFloat("bots_main_waitForHostTime"); i > 0; i -= 0.05)
|
||||
{
|
||||
host = GetHostPlayer();
|
||||
|
||||
if(isDefined(host))
|
||||
break;
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
if(!isDefined(host))
|
||||
return;
|
||||
|
||||
for(i = getDvarFloat("bots_main_waitForHostTime"); i > 0; i -= 0.05)
|
||||
{
|
||||
if(IsDefined( host.pers[ "team" ] ))
|
||||
break;
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
if(!IsDefined( host.pers[ "team" ] ))
|
||||
return;
|
||||
|
||||
for(i = getDvarFloat("bots_main_waitForHostTime"); i > 0; i -= 0.05)
|
||||
{
|
||||
if(host.pers[ "team" ] == "allies" || host.pers[ "team" ] == "axis")
|
||||
break;
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Wrapper for setgoal
|
||||
*/
|
||||
SetBotGoal(where, dist)
|
||||
{
|
||||
self SetScriptGoal(where, dist);
|
||||
waittillframeend;
|
||||
self notify("new_goal");
|
||||
}
|
||||
|
||||
/*
|
||||
Weapper for cleargoal
|
||||
*/
|
||||
ClearBotGoal()
|
||||
{
|
||||
self ClearScriptGoal();
|
||||
waittillframeend;
|
||||
self notify("new_goal");
|
||||
}
|
||||
|
||||
/*
|
||||
Freezes bot in place
|
||||
*/
|
||||
botStopMove(what)
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("death");
|
||||
level endon("game_ended");
|
||||
|
||||
self notify("botStopMove");
|
||||
self endon("botStopMove");
|
||||
|
||||
if (!what)
|
||||
return;
|
||||
|
||||
og = self.origin;
|
||||
for (;;)
|
||||
{
|
||||
self setVelocity((0,0,0));
|
||||
self setOrigin(og);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Matches a num to a char
|
||||
*/
|
||||
keyCodeToString(a)
|
||||
{
|
||||
b="";
|
||||
switch(a)
|
||||
{
|
||||
case 0: b= "a"; break;
|
||||
case 1: b= "b"; break;
|
||||
case 2: b= "c"; break;
|
||||
case 3: b= "d"; break;
|
||||
case 4: b= "e"; break;
|
||||
case 5: b= "f"; break;
|
||||
case 6: b= "g"; break;
|
||||
case 7: b= "h"; break;
|
||||
case 8: b= "i"; break;
|
||||
case 9: b= "j"; break;
|
||||
case 10: b= "k"; break;
|
||||
case 11: b= "l"; break;
|
||||
case 12: b= "m"; break;
|
||||
case 13: b= "n"; break;
|
||||
case 14: b= "o"; break;
|
||||
case 15: b= "p"; break;
|
||||
case 16: b= "q"; break;
|
||||
case 17: b= "r"; break;
|
||||
case 18: b= "s"; break;
|
||||
case 19: b= "t"; break;
|
||||
case 20: b= "u"; break;
|
||||
case 21: b= "v"; break;
|
||||
case 22: b= "w"; break;
|
||||
case 23: b= "x"; break;
|
||||
case 24: b= "y"; break;
|
||||
case 25: b= "z"; break;
|
||||
case 26: b= "."; break;
|
||||
case 27: b= " "; break;
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
/*
|
||||
Does the extra check when adding bots
|
||||
*/
|
||||
doExtraCheck()
|
||||
{
|
||||
maps\mp\bots\_bot_script::checkTheBots();
|
||||
}
|
||||
|
||||
/*
|
||||
Returns the cone dot (like fov, or distance from the center of our screen).
|
||||
*/
|
||||
getConeDot(to, from, dir)
|
||||
{
|
||||
dirToTarget = VectorNormalize(to-from);
|
||||
forward = AnglesToForward(dir);
|
||||
return vectordot(dirToTarget, forward);
|
||||
}
|
||||
|
||||
/*
|
||||
Fixes sd bomb planting
|
||||
*/
|
||||
bot_onUsePlantObjectFix( player )
|
||||
{
|
||||
// planted the bomb
|
||||
if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) )
|
||||
{
|
||||
level thread bot_bombPlanted( self, player );
|
||||
player logString( "bomb planted: " + self.label );
|
||||
|
||||
// disable all bomb zones except this one
|
||||
for ( index = 0; index < level.bombZones.size; index++ )
|
||||
{
|
||||
if ( level.bombZones[index] == self )
|
||||
continue;
|
||||
|
||||
level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject();
|
||||
}
|
||||
thread playSoundOnPlayers( "mus_sd_planted"+"_"+level.teamPostfix[player.pers["team"]] );
|
||||
// removed plant audio until finalization of assest TODO : new plant sounds when assests are online
|
||||
// player playSound( "mpl_sd_bomb_plant" );
|
||||
player notify ( "bomb_planted" );
|
||||
|
||||
level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_PLANTED_BY", player );
|
||||
|
||||
if( isdefined(player.pers["plants"]) )
|
||||
{
|
||||
player.pers["plants"]++;
|
||||
player.plants = player.pers["plants"];
|
||||
}
|
||||
|
||||
player maps\mp\_medals::saboteur();
|
||||
player maps\mp\gametypes\_persistence::statAddWithGameType( "PLANTS", 1 );
|
||||
|
||||
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_planted" );
|
||||
|
||||
maps\mp\gametypes\_globallogic_score::givePlayerScore( "plant", player );
|
||||
//player thread [[level.onXPEvent]]( "plant" );
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Fixes sd bomb planting
|
||||
*/
|
||||
bot_bombPlanted( destroyedObj, player )
|
||||
{
|
||||
maps\mp\gametypes\_globallogic_utils::pauseTimer();
|
||||
level.bombPlanted = true;
|
||||
|
||||
destroyedObj.visuals[0] thread maps\mp\gametypes\_globallogic_utils::playTickingSound( "mpl_sab_ui_suitcasebomb_timer" );
|
||||
//Play suspense music
|
||||
level thread maps\mp\gametypes\sd::bombPlantedMusicDelay();
|
||||
|
||||
//thread maps\mp\gametypes\_globallogic_audio::actionMusicSet();
|
||||
|
||||
level.tickingObject = destroyedObj.visuals[0];
|
||||
|
||||
level.timeLimitOverride = true;
|
||||
setGameEndTime( int( gettime() + (level.bombTimer * 1000) ) );
|
||||
setMatchFlag( "bomb_timer", 1 );
|
||||
|
||||
if ( !level.multiBomb )
|
||||
{
|
||||
level.sdBomb maps\mp\gametypes\_gameobjects::allowCarry( "none" );
|
||||
level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
|
||||
level.sdBomb maps\mp\gametypes\_gameobjects::setDropped();
|
||||
level.sdBombModel = level.sdBomb.visuals[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
for ( index = 0; index < level.players.size; index++ )
|
||||
{
|
||||
if ( isDefined( level.players[index].carryIcon ) )
|
||||
level.players[index].carryIcon destroyElem();
|
||||
}
|
||||
|
||||
trace = bulletTrace( player.origin + (0,0,20), player.origin - (0,0,2000), false, player );
|
||||
|
||||
tempAngle = randomfloat( 360 );
|
||||
forward = (cos( tempAngle ), sin( tempAngle ), 0);
|
||||
forward = vectornormalize( forward - vector_scale( trace["normal"], vectordot( forward, trace["normal"] ) ) );
|
||||
dropAngles = vectortoangles( forward );
|
||||
|
||||
level.sdBombModel = spawn( "script_model", trace["position"] );
|
||||
level.sdBombModel.angles = dropAngles;
|
||||
level.sdBombModel setModel( "prop_suitcase_bomb" );
|
||||
}
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::allowUse( "none" );
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
|
||||
/*
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", undefined );
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", undefined );
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", undefined );
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", undefined );
|
||||
*/
|
||||
label = destroyedObj maps\mp\gametypes\_gameobjects::getLabel();
|
||||
|
||||
// create a new object to defuse with.
|
||||
trigger = destroyedObj.bombDefuseTrig;
|
||||
trigger.origin = level.sdBombModel.origin;
|
||||
visuals = [];
|
||||
defuseObject = maps\mp\gametypes\_gameobjects::createUseObject( game["defenders"], trigger, visuals, (0,0,32) );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::allowUse( "friendly" );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::setUseTime( level.defuseTime );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defuse" + label );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_defend" + label );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defuse" + label );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_defend" + label );
|
||||
defuseObject.label = label;
|
||||
defuseObject.onBeginUse = maps\mp\gametypes\sd::onBeginUse;
|
||||
defuseObject.onEndUse = maps\mp\gametypes\sd::onEndUse;
|
||||
defuseObject.onUse = maps\mp\gametypes\sd::onUseDefuseObject;
|
||||
defuseObject.useWeapon = "briefcase_bomb_defuse_mp";
|
||||
|
||||
level.defuseObject = defuseObject;//every cod...
|
||||
|
||||
player.isBombCarrier = false;
|
||||
|
||||
maps\mp\gametypes\sd::BombTimerWait();
|
||||
setMatchFlag( "bomb_timer", 0 );
|
||||
|
||||
destroyedObj.visuals[0] maps\mp\gametypes\_globallogic_utils::stopTickingSound();
|
||||
|
||||
if ( level.gameEnded || level.bombDefused )
|
||||
return;
|
||||
|
||||
level.bombExploded = true;
|
||||
|
||||
|
||||
|
||||
explosionOrigin = level.sdBombModel.origin+(0,0,12);
|
||||
level.sdBombModel hide();
|
||||
|
||||
if ( isdefined( player ) )
|
||||
{
|
||||
destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, player, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
|
||||
level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_BLOWUP_BY", player );
|
||||
player maps\mp\_medals::bomber();
|
||||
player maps\mp\gametypes\_persistence::statAddWithGameType( "DESTRUCTIONS", 1 );
|
||||
}
|
||||
else
|
||||
destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, undefined, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
|
||||
|
||||
rot = randomfloat(360);
|
||||
explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + (0,0,50), (0,0,1), (cos(rot),sin(rot),0) );
|
||||
triggerFx( explosionEffect );
|
||||
|
||||
thread playSoundinSpace( "mpl_sd_exp_suitcase_bomb_main", explosionOrigin );
|
||||
//thread maps\mp\gametypes\_globallogic_audio::set_music_on_team( "SILENT", "both" );
|
||||
|
||||
if ( isDefined( destroyedObj.exploderIndex ) )
|
||||
exploder( destroyedObj.exploderIndex );
|
||||
|
||||
for ( index = 0; index < level.bombZones.size; index++ )
|
||||
level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject();
|
||||
defuseObject maps\mp\gametypes\_gameobjects::disableObject();
|
||||
|
||||
setGameEndTime( 0 );
|
||||
|
||||
wait 3;
|
||||
|
||||
maps\mp\gametypes\sd::sd_endGame( game["attackers"], game["strings"]["target_destroyed"] );
|
||||
}
|
@ -1,924 +0,0 @@
|
||||
/*
|
||||
_bot
|
||||
Author: INeedGames
|
||||
Date: 12/20/2020
|
||||
The entry point and manager of the bots.
|
||||
*/
|
||||
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_utility;
|
||||
#include maps\mp\gametypes\_hud_util;
|
||||
#include maps\mp\bots\_bot_utility;
|
||||
|
||||
/*
|
||||
Entry point to the bots
|
||||
*/
|
||||
init()
|
||||
{
|
||||
level.bw_VERSION = "1.1.1";
|
||||
|
||||
level.bot_offline = false;
|
||||
|
||||
if(getDvar("bots_main") == "")
|
||||
setDvar("bots_main", true);
|
||||
|
||||
if (!getDvarInt("bots_main"))
|
||||
return;
|
||||
|
||||
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_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_codpoints") == "")// how much cod points a bot should have, -1 is around the players, 0 is all random
|
||||
setDvar("bots_loadout_codpoints", -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_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_nade") == "")//bots grenade
|
||||
setDvar("bots_play_nade", 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_move") == "")//bots move
|
||||
setDvar("bots_play_move", true);
|
||||
if(getDvar("bots_play_take_carepackages") == "")//bots take carepackages
|
||||
setDvar("bots_play_take_carepackages", 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);
|
||||
|
||||
level.bots = [];
|
||||
level.bot_decoys = [];
|
||||
level.bot_planes = [];
|
||||
|
||||
if(!isDefined(game["botWarfare"]))
|
||||
game["botWarfare"] = true;
|
||||
|
||||
thread fixGamemodes();
|
||||
thread onPlayerConnect();
|
||||
thread bot_watch_planes();
|
||||
|
||||
thread handleBots();
|
||||
|
||||
thread doNonDediBots();
|
||||
}
|
||||
|
||||
/*
|
||||
Thread when any player connects. Starts the threads needed.
|
||||
*/
|
||||
onPlayerConnect()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
level waittill("connected", player);
|
||||
|
||||
player thread watch_shoot();
|
||||
player thread watch_grenade();
|
||||
player thread connected();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Starts the threads for bots.
|
||||
*/
|
||||
handleBots()
|
||||
{
|
||||
thread diffBots();
|
||||
thread teamBots();
|
||||
addBots();
|
||||
|
||||
while(!level.intermission)
|
||||
wait 0.05;
|
||||
|
||||
setDvar("bots_manage_add", getBotArray().size);
|
||||
}
|
||||
|
||||
/*
|
||||
When a bot disconnects.
|
||||
*/
|
||||
onDisconnect()
|
||||
{
|
||||
self waittill("disconnect");
|
||||
|
||||
level.bots = array_remove(level.bots, self);
|
||||
}
|
||||
|
||||
/*
|
||||
Whena player connects
|
||||
*/
|
||||
connected()
|
||||
{
|
||||
self endon("disconnect");
|
||||
|
||||
if (!self is_bot())
|
||||
return;
|
||||
|
||||
self thread maps\mp\bots\_bot_script::connected();
|
||||
|
||||
level.bots[level.bots.size] = self;
|
||||
self thread onDisconnect();
|
||||
|
||||
level notify("bot_connected", self);
|
||||
}
|
||||
|
||||
/*
|
||||
Handles the diff of the bots
|
||||
*/
|
||||
diffBots()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
wait 1.5;
|
||||
|
||||
bot_set_difficulty(GetDvar( #"bot_difficulty" ));
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Setup bot dvars for non dedicated clients
|
||||
*/
|
||||
doNonDediBots()
|
||||
{
|
||||
if (!GetDvarInt( #"xblive_basictraining" ))
|
||||
return;
|
||||
|
||||
if (isDefined(game[ "bots_spawned" ]))
|
||||
return;
|
||||
|
||||
game[ "bots_spawned" ] = true;
|
||||
|
||||
if(getDvar("bot_enemies_extra") == "")
|
||||
setDvar("bot_enemies_extra", 0);
|
||||
if(getDvar("bot_friends_extra") == "")
|
||||
setDvar("bot_friends_extra", 0);
|
||||
|
||||
bot_friends = GetDvarInt( #"bot_friends" );
|
||||
bot_enemies = GetDvarInt( #"bot_enemies" );
|
||||
|
||||
bot_enemies += GetDvarInt("bot_enemies_extra");
|
||||
bot_friends += GetDvarInt("bot_friends_extra");
|
||||
|
||||
bot_wait_for_host();
|
||||
host = GetHostPlayer();
|
||||
|
||||
team = "allies";
|
||||
if(isDefined(host) && isDefined(host.pers[ "team" ]) && (host.pers[ "team" ] == "allies" || host.pers[ "team" ] == "axis"))
|
||||
team = host.pers[ "team" ];
|
||||
|
||||
setDvar("bots_manage_add", bot_enemies + bot_friends - 1);
|
||||
setDvar("bots_manage_fill", bot_enemies + bot_friends);
|
||||
setDvar("bots_manage_fill_mode", 0);
|
||||
setDvar("bots_manage_fill_kick", true);
|
||||
setDvar("bots_manage_fill_spec", false);
|
||||
|
||||
setDvar("bots_team", "custom");
|
||||
|
||||
if (team == "axis")
|
||||
setDvar("bots_team_amount", bot_friends);
|
||||
else
|
||||
setDvar("bots_team_amount", bot_enemies);
|
||||
|
||||
setDvar("bots_team_force", true);
|
||||
setDvar("bots_team_mode", 0);
|
||||
}
|
||||
|
||||
/*
|
||||
Sets the difficulty of the bots
|
||||
*/
|
||||
bot_set_difficulty( difficulty )
|
||||
{
|
||||
if ( difficulty == "fu" )
|
||||
{
|
||||
SetDvar( "sv_botMinDeathTime", "250" );
|
||||
SetDvar( "sv_botMaxDeathTime", "500" );
|
||||
SetDvar( "sv_botMinFireTime", "100" );
|
||||
SetDvar( "sv_botMaxFireTime", "300" );
|
||||
SetDvar( "sv_botYawSpeed", "14" );
|
||||
SetDvar( "sv_botYawSpeedAds", "14" );
|
||||
SetDvar( "sv_botPitchUp", "-5" );
|
||||
SetDvar( "sv_botPitchDown", "10" );
|
||||
SetDvar( "sv_botFov", "160" );
|
||||
SetDvar( "sv_botMinAdsTime", "3000" );
|
||||
SetDvar( "sv_botMaxAdsTime", "5000" );
|
||||
SetDvar( "sv_botMinCrouchTime", "100" );
|
||||
SetDvar( "sv_botMaxCrouchTime", "400" );
|
||||
SetDvar( "sv_botTargetLeadBias", "2" );
|
||||
SetDvar( "sv_botMinReactionTime", "30" );
|
||||
SetDvar( "sv_botMaxReactionTime", "100" );
|
||||
SetDvar( "sv_botStrafeChance", "1" );
|
||||
SetDvar( "sv_botMinStrafeTime", "3000" );
|
||||
SetDvar( "sv_botMaxStrafeTime", "6000" );
|
||||
SetDvar( "scr_help_dist", "512" );
|
||||
SetDvar( "sv_botAllowGrenades", "1" );
|
||||
SetDvar( "sv_botMinGrenadeTime", "1500" );
|
||||
SetDvar( "sv_botMaxGrenadeTime", "4000" );
|
||||
SetDvar( "sv_botSprintDistance", "512" );
|
||||
SetDvar( "sv_botMeleeDist", "80" );
|
||||
}
|
||||
else if ( difficulty == "hard" )
|
||||
{
|
||||
SetDvar( "sv_botMinDeathTime", "250" );
|
||||
SetDvar( "sv_botMaxDeathTime", "500" );
|
||||
SetDvar( "sv_botMinFireTime", "400" );
|
||||
SetDvar( "sv_botMaxFireTime", "600" );
|
||||
SetDvar( "sv_botYawSpeed", "8" );
|
||||
SetDvar( "sv_botYawSpeedAds", "10" );
|
||||
SetDvar( "sv_botPitchUp", "-5" );
|
||||
SetDvar( "sv_botPitchDown", "10" );
|
||||
SetDvar( "sv_botFov", "100" );
|
||||
SetDvar( "sv_botMinAdsTime", "3000" );
|
||||
SetDvar( "sv_botMaxAdsTime", "5000" );
|
||||
SetDvar( "sv_botMinCrouchTime", "100" );
|
||||
SetDvar( "sv_botMaxCrouchTime", "400" );
|
||||
SetDvar( "sv_botTargetLeadBias", "2" );
|
||||
SetDvar( "sv_botMinReactionTime", "400" );
|
||||
SetDvar( "sv_botMaxReactionTime", "700" );
|
||||
SetDvar( "sv_botStrafeChance", "0.9" );
|
||||
SetDvar( "sv_botMinStrafeTime", "3000" );
|
||||
SetDvar( "sv_botMaxStrafeTime", "6000" );
|
||||
SetDvar( "scr_help_dist", "384" );
|
||||
SetDvar( "sv_botAllowGrenades", "1" );
|
||||
SetDvar( "sv_botMinGrenadeTime", "1500" );
|
||||
SetDvar( "sv_botMaxGrenadeTime", "4000" );
|
||||
SetDvar( "sv_botSprintDistance", "512" );
|
||||
SetDvar( "sv_botMeleeDist", "80" );
|
||||
}
|
||||
else if ( difficulty == "easy" )
|
||||
{
|
||||
SetDvar( "sv_botMinDeathTime", "1000" );
|
||||
SetDvar( "sv_botMaxDeathTime", "2000" );
|
||||
SetDvar( "sv_botMinFireTime", "900" );
|
||||
SetDvar( "sv_botMaxFireTime", "1000" );
|
||||
SetDvar( "sv_botYawSpeed", "2" );
|
||||
SetDvar( "sv_botYawSpeedAds", "2.5" );
|
||||
SetDvar( "sv_botPitchUp", "-20" );
|
||||
SetDvar( "sv_botPitchDown", "40" );
|
||||
SetDvar( "sv_botFov", "50" );
|
||||
SetDvar( "sv_botMinAdsTime", "3000" );
|
||||
SetDvar( "sv_botMaxAdsTime", "5000" );
|
||||
SetDvar( "sv_botMinCrouchTime", "4000" );
|
||||
SetDvar( "sv_botMaxCrouchTime", "6000" );
|
||||
SetDvar( "sv_botTargetLeadBias", "8" );
|
||||
SetDvar( "sv_botMinReactionTime", "1200" );
|
||||
SetDvar( "sv_botMaxReactionTime", "1600" );
|
||||
SetDvar( "sv_botStrafeChance", "0.1" );
|
||||
SetDvar( "sv_botMinStrafeTime", "3000" );
|
||||
SetDvar( "sv_botMaxStrafeTime", "6000" );
|
||||
SetDvar( "scr_help_dist", "256" );
|
||||
SetDvar( "sv_botAllowGrenades", "0" );
|
||||
SetDvar( "sv_botSprintDistance", "1024" );
|
||||
SetDvar( "sv_botMeleeDist", "40" );
|
||||
}
|
||||
else // 'normal' difficulty
|
||||
{
|
||||
SetDvar( "sv_botMinDeathTime", "500" );
|
||||
SetDvar( "sv_botMaxDeathTime", "1000" );
|
||||
SetDvar( "sv_botMinFireTime", "600" );
|
||||
SetDvar( "sv_botMaxFireTime", "800" );
|
||||
SetDvar( "sv_botYawSpeed", "4" );
|
||||
SetDvar( "sv_botYawSpeedAds", "5" );
|
||||
SetDvar( "sv_botPitchUp", "-10" );
|
||||
SetDvar( "sv_botPitchDown", "20" );
|
||||
SetDvar( "sv_botFov", "70" );
|
||||
SetDvar( "sv_botMinAdsTime", "3000" );
|
||||
SetDvar( "sv_botMaxAdsTime", "5000" );
|
||||
SetDvar( "sv_botMinCrouchTime", "2000" );
|
||||
SetDvar( "sv_botMaxCrouchTime", "4000" );
|
||||
SetDvar( "sv_botTargetLeadBias", "4" );
|
||||
SetDvar( "sv_botMinReactionTime", "800" );
|
||||
SetDvar( "sv_botMaxReactionTime", "1200" );
|
||||
SetDvar( "sv_botStrafeChance", "0.6" );
|
||||
SetDvar( "sv_botMinStrafeTime", "3000" );
|
||||
SetDvar( "sv_botMaxStrafeTime", "6000" );
|
||||
SetDvar( "scr_help_dist", "256" );
|
||||
SetDvar( "sv_botAllowGrenades", "1" );
|
||||
SetDvar( "sv_botMinGrenadeTime", "1500" );
|
||||
SetDvar( "sv_botMaxGrenadeTime", "4000" );
|
||||
SetDvar( "sv_botSprintDistance", "512" );
|
||||
SetDvar( "sv_botMeleeDist", "80" );
|
||||
difficulty = "normal";
|
||||
}
|
||||
|
||||
if ( level.gameType == "oic" && difficulty == "fu" )
|
||||
{
|
||||
SetDvar( "sv_botMinReactionTime", "400" );
|
||||
SetDvar( "sv_botMaxReactionTime", "500" );
|
||||
SetDvar( "sv_botMinAdsTime", "1000" );
|
||||
SetDvar( "sv_botMaxAdsTime", "2000" );
|
||||
}
|
||||
|
||||
if ( level.gameType == "oic" && ( difficulty == "hard" || difficulty == "fu" ) )
|
||||
{
|
||||
SetDvar( "sv_botSprintDistance", "256" );
|
||||
}
|
||||
|
||||
if (!getDvarInt("bots_play_nade"))
|
||||
SetDvar( "sv_botAllowGrenades", "0" );
|
||||
|
||||
SetDvar( "bot_difficulty", difficulty );
|
||||
SetDvar( "scr_bot_difficulty", difficulty );
|
||||
SetDvar( "splitscreen_botDifficulty", difficulty );
|
||||
}
|
||||
|
||||
/*
|
||||
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.
|
||||
|
||||
Dedis only spawn bots when developer is not 0
|
||||
This makes the dedi unstable and can crash
|
||||
|
||||
Patch the executable to skip the pregame and make it so bots can spawn
|
||||
|
||||
pregame:
|
||||
in the ShouldDoPregame sub:
|
||||
B8 01 00 00 00: mov eax, 1
|
||||
change to: B8 00 00 00 00: mov eax, 0
|
||||
0x4F6C77 in rektmp
|
||||
0x4598A7 in bg
|
||||
|
||||
|
||||
spawnbots:
|
||||
in the SV_AddTestClient sub:
|
||||
0F 85 A4 00 00 00: jnz
|
||||
change to: 0F 84 A4 00 00 00: jz
|
||||
0x6B6180 in rektmp
|
||||
0x4682F0 in bg
|
||||
|
||||
|
||||
allow changing g_antilag dvar:
|
||||
set the byte from 0x40 to 0x00
|
||||
|
||||
0x53B1B2 in rekt
|
||||
0x59B6F2 in bg
|
||||
*/
|
||||
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 isdemoclient())
|
||||
continue;
|
||||
|
||||
if(player is_bot())
|
||||
bots++;
|
||||
else if(!isDefined(player.pers["team"]) || (player.pers["team"] != "axis" && player.pers["team"] != "allies"))
|
||||
spec++;
|
||||
else
|
||||
players++;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
if (!randomInt(999))
|
||||
{
|
||||
setDvar("testclients_doreload", true);
|
||||
wait 0.1;
|
||||
setDvar("testclients_doreload", false);
|
||||
doExtraCheck();
|
||||
}
|
||||
|
||||
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"))
|
||||
{
|
||||
tempBot = PickRandom(getBotArray());
|
||||
if (isDefined(tempBot))
|
||||
kick( tempBot getEntityNumber(), "EXE_PLAYERKICKED" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Adds a bot to the game.
|
||||
*/
|
||||
add_bot()
|
||||
{
|
||||
bot = addtestclient();
|
||||
|
||||
if (isdefined(bot))
|
||||
{
|
||||
bot.pers["isBot"] = true;
|
||||
bot.equipment_enabled = true;
|
||||
bot.pers[ "bot_perk" ] = true;
|
||||
bot.pers["isBotWarfare"] = true;
|
||||
bot thread maps\mp\bots\_bot_script::added();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Gives the bot loadout
|
||||
*/
|
||||
bot_give_loadout()
|
||||
{
|
||||
self maps\mp\bots\_bot_loadout::bot_give_loadout();
|
||||
}
|
||||
|
||||
/*
|
||||
Fired when the bot is damaged
|
||||
*/
|
||||
bot_damage_callback( eAttacker, iDamage, sMeansOfDeath, sWeapon, eInflictor, sHitLoc )
|
||||
{
|
||||
self maps\mp\bots\_bot_script::bot_damage_callback( eAttacker, iDamage, sMeansOfDeath, sWeapon, eInflictor, sHitLoc );
|
||||
}
|
||||
|
||||
/*
|
||||
Bot is idle
|
||||
*/
|
||||
bot_is_idle()
|
||||
{
|
||||
if ( !IsDefined( self ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( !IsAlive( self ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( !self is_bot() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( self inLastStand() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( self HasScriptGoal() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( IsDefined( self GetThreat() ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( self IsRemoteControlling() || self.bot_lock_goal )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if(self UseButtonPressed())
|
||||
return false;
|
||||
|
||||
if(self isPlanting())
|
||||
return false;
|
||||
|
||||
if(self isDefusing())
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
Watch all players grenades
|
||||
*/
|
||||
watch_grenade()
|
||||
{
|
||||
self endon("disconnect");
|
||||
|
||||
self.bot_scrambled = false;
|
||||
for(;;)
|
||||
{
|
||||
self waittill("grenade_fire", g, name);
|
||||
if(name == "scrambler_mp")
|
||||
{
|
||||
g thread watch_scrambler();
|
||||
}
|
||||
else if(name == "nightingale_mp")
|
||||
{
|
||||
self thread watch_decoy(g);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Watch the decoy grenade
|
||||
*/
|
||||
watch_decoy(g)
|
||||
{
|
||||
g.team = self.team;
|
||||
|
||||
level.bot_decoys[level.bot_decoys.size] = g;
|
||||
|
||||
g waittill("death");
|
||||
|
||||
for ( entry = 0; entry < level.bot_decoys.size; entry++ )
|
||||
{
|
||||
if ( level.bot_decoys[entry] == g )
|
||||
{
|
||||
while ( entry < level.bot_decoys.size-1 )
|
||||
{
|
||||
level.bot_decoys[entry] = level.bot_decoys[entry+1];
|
||||
entry++;
|
||||
}
|
||||
level.bot_decoys[entry] = undefined;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Attach a trigger to the scrambler
|
||||
*/
|
||||
watch_scrambler()
|
||||
{
|
||||
trig = spawn( "trigger_radius", self.origin + (0, 0, -1000), 0, 1000, 2000 );
|
||||
|
||||
self scramble_nearby(trig);
|
||||
|
||||
trig delete();
|
||||
}
|
||||
|
||||
/*
|
||||
Watch when players enter the scrambler trigger
|
||||
*/
|
||||
scramble_nearby(trig)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("hacked");
|
||||
|
||||
while(!isDefined(self.owner) || !isDefined(self.owner.team))
|
||||
wait 0.05;
|
||||
|
||||
self.team = self.owner.team;
|
||||
for(;;)
|
||||
{
|
||||
trig waittill("trigger", player);
|
||||
|
||||
if (!isDefined(player) || !isDefined(player.team))
|
||||
continue;
|
||||
|
||||
if(self maps\mp\gametypes\_weaponobjects::isStunned())
|
||||
continue;
|
||||
|
||||
if(isDefined(self.owner) && player == self.owner)
|
||||
continue;
|
||||
|
||||
if(level.teamBased && self.team == player.team)
|
||||
continue;
|
||||
|
||||
player thread scramble_player();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Scramble this player
|
||||
*/
|
||||
scramble_player()
|
||||
{
|
||||
self notify("scramble_nearby");
|
||||
self endon("scramble_nearby");
|
||||
|
||||
self.bot_scrambled = true;
|
||||
wait 0.1;
|
||||
|
||||
if(isDefined(self))
|
||||
self.bot_scrambled = false;
|
||||
}
|
||||
|
||||
/*
|
||||
Watch when a player shoots
|
||||
*/
|
||||
watch_shoot()
|
||||
{
|
||||
self endon("disconnect");
|
||||
|
||||
self.bot_firing = false;
|
||||
for(;;)
|
||||
{
|
||||
self waittill( "weapon_fired" );
|
||||
self thread doFiringThread();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
When a player fires
|
||||
*/
|
||||
doFiringThread()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("weapon_fired");
|
||||
|
||||
self.bot_firing = true;
|
||||
wait 1;
|
||||
self.bot_firing = false;
|
||||
}
|
||||
|
||||
/*
|
||||
Watches the planes
|
||||
*/
|
||||
bot_watch_planes()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
level waittill("uav_update");
|
||||
|
||||
ents = GetEntArray("script_model", "classname");
|
||||
for(i = 0; i < ents.size; i++)
|
||||
{
|
||||
ent = ents[i];
|
||||
|
||||
if(isDefined(ent.bot_plane))
|
||||
continue;
|
||||
|
||||
if(ent.model != level.spyplanemodel)
|
||||
continue;
|
||||
|
||||
thread watch_plane(ent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Watches the plane
|
||||
*/
|
||||
watch_plane(ent)
|
||||
{
|
||||
ent.bot_plane = true;
|
||||
|
||||
level.bot_planes[level.bot_planes.size] = ent;
|
||||
|
||||
ent waittill_any("death", "delete", "leaving");
|
||||
|
||||
for ( entry = 0; entry < level.bot_planes.size; entry++ )
|
||||
{
|
||||
if ( level.bot_planes[entry] == ent )
|
||||
{
|
||||
while ( entry < level.bot_planes.size-1 )
|
||||
{
|
||||
level.bot_planes[entry] = level.bot_planes[entry+1];
|
||||
entry++;
|
||||
}
|
||||
level.bot_planes[entry] = undefined;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Fix xp in sd
|
||||
*/
|
||||
bot_killBoost()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
Fixes sd
|
||||
*/
|
||||
fixGamemodes()
|
||||
{
|
||||
for(i=0;i<19;i++)
|
||||
{
|
||||
if(isDefined(level.bombZones) && level.gametype == "sd")
|
||||
{
|
||||
level.isKillBoosting = ::bot_killBoost;
|
||||
for(i = 0; i < level.bombZones.size; i++)
|
||||
level.bombZones[i].onUse = ::bot_onUsePlantObjectFix;
|
||||
break;
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
1505
maps/mp/bots/_bot_loadout.gsc
Normal file
1505
maps/mp/bots/_bot_loadout.gsc
Normal file
File diff suppressed because it is too large
Load Diff
6559
maps/mp/bots/_bot_script.gsc
Normal file
6559
maps/mp/bots/_bot_script.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1135
maps/mp/bots/_bot_utility.gsc
Normal file
1135
maps/mp/bots/_bot_utility.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1280
maps/mp/gametypes/_bot.gsc
Normal file
1280
maps/mp/gametypes/_bot.gsc
Normal file
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
@ -1,539 +0,0 @@
|
||||
/*
|
||||
_bot_utility
|
||||
Author: INeedGames
|
||||
Date: 12/20/2020
|
||||
The shared functions for bots
|
||||
*/
|
||||
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_utility;
|
||||
#include maps\mp\gametypes\_hud_util;
|
||||
|
||||
/*
|
||||
Returns an array of all the bots in the game.
|
||||
*/
|
||||
getBotArray()
|
||||
{
|
||||
result = [];
|
||||
playercount = level.players.size;
|
||||
for(i = 0; i < playercount; i++)
|
||||
{
|
||||
player = level.players[i];
|
||||
|
||||
if(!player is_bot())
|
||||
continue;
|
||||
|
||||
result[result.size] = player;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
Returns a good amount of players.
|
||||
*/
|
||||
getGoodMapAmount()
|
||||
{
|
||||
switch(getdvar("mapname"))
|
||||
{
|
||||
default:
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Rounds to the nearest whole number.
|
||||
*/
|
||||
Round(x)
|
||||
{
|
||||
y = int(x);
|
||||
|
||||
if(abs(x) - abs(y) > 0.5)
|
||||
{
|
||||
if(x < 0)
|
||||
return y - 1;
|
||||
else
|
||||
return y + 1;
|
||||
}
|
||||
else
|
||||
return y;
|
||||
}
|
||||
|
||||
/*
|
||||
Picks a random thing
|
||||
*/
|
||||
PickRandom(arr)
|
||||
{
|
||||
if (!arr.size)
|
||||
return undefined;
|
||||
|
||||
return arr[randomInt(arr.size)];
|
||||
}
|
||||
|
||||
/*
|
||||
If is defusing
|
||||
*/
|
||||
isDefusing()
|
||||
{
|
||||
return (isDefined(self.isDefusing) && self.isDefusing);
|
||||
}
|
||||
|
||||
/*
|
||||
If is defusing
|
||||
*/
|
||||
isPlanting()
|
||||
{
|
||||
return (isDefined(self.isPlanting) && self.isPlanting);
|
||||
}
|
||||
|
||||
/*
|
||||
If is defusing
|
||||
*/
|
||||
inLastStand()
|
||||
{
|
||||
return (isDefined(self.laststand) && self.laststand);
|
||||
}
|
||||
|
||||
/*
|
||||
Is they the flag carrier men?
|
||||
*/
|
||||
isFlagCarrier()
|
||||
{
|
||||
return (isDefined(self.isFlagCarrier) && self.isFlagCarrier);
|
||||
}
|
||||
|
||||
/*
|
||||
If the site is in use
|
||||
*/
|
||||
isInUse()
|
||||
{
|
||||
return (isDefined(self.inUse) && self.inUse);
|
||||
}
|
||||
|
||||
/*
|
||||
If the player is carrying a bomb
|
||||
*/
|
||||
isBombCarrier()
|
||||
{
|
||||
return (isDefined(self.isBombCarrier) && self.isBombCarrier);
|
||||
}
|
||||
|
||||
/*
|
||||
Gets the bot's difficulty number
|
||||
*/
|
||||
GetBotDiffNum()
|
||||
{
|
||||
num = 0;
|
||||
|
||||
switch (getDvar("bot_difficulty"))
|
||||
{
|
||||
case "fu":
|
||||
num = 3;
|
||||
break;
|
||||
case "hard":
|
||||
num = 2;
|
||||
break;
|
||||
case "normal":
|
||||
num = 1;
|
||||
break;
|
||||
case "easy":
|
||||
default:
|
||||
num = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
/*
|
||||
is the weapon alt mode?
|
||||
*/
|
||||
isWeaponAltmode(weap)
|
||||
{
|
||||
if (isStrStart(weap, "gl_") || isStrStart(weap, "ft_") || isStrStart(weap, "mk_"))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
Returns a valid grenade launcher weapon
|
||||
*/
|
||||
getValidTube()
|
||||
{
|
||||
weaps = self getweaponslist();
|
||||
|
||||
for (i = 0; i < weaps.size; i++)
|
||||
{
|
||||
weap = weaps[i];
|
||||
|
||||
if(!self getAmmoCount(weap))
|
||||
continue;
|
||||
|
||||
if ((isSubStr(weap, "gl_") && !isSubStr(weap, "_gl_")) || weap == "china_lake_mp")
|
||||
return weap;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
/*
|
||||
Taken from iw4 script
|
||||
*/
|
||||
waittill_any_timeout( timeOut, string1, string2, string3, string4, string5 )
|
||||
{
|
||||
if ( ( !isdefined( string1 ) || string1 != "death" ) &&
|
||||
( !isdefined( string2 ) || string2 != "death" ) &&
|
||||
( !isdefined( string3 ) || string3 != "death" ) &&
|
||||
( !isdefined( string4 ) || string4 != "death" ) &&
|
||||
( !isdefined( string5 ) || string5 != "death" ) )
|
||||
self endon( "death" );
|
||||
|
||||
ent = spawnstruct();
|
||||
|
||||
if ( isdefined( string1 ) )
|
||||
self thread waittill_string( string1, ent );
|
||||
|
||||
if ( isdefined( string2 ) )
|
||||
self thread waittill_string( string2, ent );
|
||||
|
||||
if ( isdefined( string3 ) )
|
||||
self thread waittill_string( string3, ent );
|
||||
|
||||
if ( isdefined( string4 ) )
|
||||
self thread waittill_string( string4, ent );
|
||||
|
||||
if ( isdefined( string5 ) )
|
||||
self thread waittill_string( string5, ent );
|
||||
|
||||
ent thread _timeout( timeOut );
|
||||
|
||||
ent waittill( "returned", msg );
|
||||
ent notify( "die" );
|
||||
return msg;
|
||||
}
|
||||
|
||||
/*
|
||||
Used for waittill_any_timeout
|
||||
*/
|
||||
_timeout( delay )
|
||||
{
|
||||
self endon( "die" );
|
||||
|
||||
wait( delay );
|
||||
self notify( "returned", "timeout" );
|
||||
}
|
||||
|
||||
/*
|
||||
Waits for a host player
|
||||
*/
|
||||
bot_wait_for_host()
|
||||
{
|
||||
host = undefined;
|
||||
|
||||
while (!isDefined(level) || !isDefined(level.players))
|
||||
wait 0.05;
|
||||
|
||||
for(i = getDvarFloat("bots_main_waitForHostTime"); i > 0; i -= 0.05)
|
||||
{
|
||||
host = GetHostPlayer();
|
||||
|
||||
if(isDefined(host))
|
||||
break;
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
if(!isDefined(host))
|
||||
return;
|
||||
|
||||
for(i = getDvarFloat("bots_main_waitForHostTime"); i > 0; i -= 0.05)
|
||||
{
|
||||
if(IsDefined( host.pers[ "team" ] ))
|
||||
break;
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
if(!IsDefined( host.pers[ "team" ] ))
|
||||
return;
|
||||
|
||||
for(i = getDvarFloat("bots_main_waitForHostTime"); i > 0; i -= 0.05)
|
||||
{
|
||||
if(host.pers[ "team" ] == "allies" || host.pers[ "team" ] == "axis")
|
||||
break;
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Wrapper for setgoal
|
||||
*/
|
||||
SetBotGoal(where, dist)
|
||||
{
|
||||
self SetScriptGoal(where, dist);
|
||||
waittillframeend;
|
||||
self notify("new_goal");
|
||||
}
|
||||
|
||||
/*
|
||||
Weapper for cleargoal
|
||||
*/
|
||||
ClearBotGoal()
|
||||
{
|
||||
self ClearScriptGoal();
|
||||
waittillframeend;
|
||||
self notify("new_goal");
|
||||
}
|
||||
|
||||
/*
|
||||
Freezes bot in place
|
||||
*/
|
||||
botStopMove(what)
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("death");
|
||||
level endon("game_ended");
|
||||
|
||||
self notify("botStopMove");
|
||||
self endon("botStopMove");
|
||||
|
||||
if (!what)
|
||||
return;
|
||||
|
||||
og = self.origin;
|
||||
for (;;)
|
||||
{
|
||||
self setVelocity((0,0,0));
|
||||
self setOrigin(og);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Matches a num to a char
|
||||
*/
|
||||
keyCodeToString(a)
|
||||
{
|
||||
b="";
|
||||
switch(a)
|
||||
{
|
||||
case 0: b= "a"; break;
|
||||
case 1: b= "b"; break;
|
||||
case 2: b= "c"; break;
|
||||
case 3: b= "d"; break;
|
||||
case 4: b= "e"; break;
|
||||
case 5: b= "f"; break;
|
||||
case 6: b= "g"; break;
|
||||
case 7: b= "h"; break;
|
||||
case 8: b= "i"; break;
|
||||
case 9: b= "j"; break;
|
||||
case 10: b= "k"; break;
|
||||
case 11: b= "l"; break;
|
||||
case 12: b= "m"; break;
|
||||
case 13: b= "n"; break;
|
||||
case 14: b= "o"; break;
|
||||
case 15: b= "p"; break;
|
||||
case 16: b= "q"; break;
|
||||
case 17: b= "r"; break;
|
||||
case 18: b= "s"; break;
|
||||
case 19: b= "t"; break;
|
||||
case 20: b= "u"; break;
|
||||
case 21: b= "v"; break;
|
||||
case 22: b= "w"; break;
|
||||
case 23: b= "x"; break;
|
||||
case 24: b= "y"; break;
|
||||
case 25: b= "z"; break;
|
||||
case 26: b= "."; break;
|
||||
case 27: b= " "; break;
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
/*
|
||||
Does the extra check when adding bots
|
||||
*/
|
||||
doExtraCheck()
|
||||
{
|
||||
maps\mp\bots\_bot_script::checkTheBots();
|
||||
}
|
||||
|
||||
/*
|
||||
Returns the cone dot (like fov, or distance from the center of our screen).
|
||||
*/
|
||||
getConeDot(to, from, dir)
|
||||
{
|
||||
dirToTarget = VectorNormalize(to-from);
|
||||
forward = AnglesToForward(dir);
|
||||
return vectordot(dirToTarget, forward);
|
||||
}
|
||||
|
||||
/*
|
||||
Fixes sd bomb planting
|
||||
*/
|
||||
bot_onUsePlantObjectFix( player )
|
||||
{
|
||||
// planted the bomb
|
||||
if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) )
|
||||
{
|
||||
level thread bot_bombPlanted( self, player );
|
||||
player logString( "bomb planted: " + self.label );
|
||||
|
||||
// disable all bomb zones except this one
|
||||
for ( index = 0; index < level.bombZones.size; index++ )
|
||||
{
|
||||
if ( level.bombZones[index] == self )
|
||||
continue;
|
||||
|
||||
level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject();
|
||||
}
|
||||
thread playSoundOnPlayers( "mus_sd_planted"+"_"+level.teamPostfix[player.pers["team"]] );
|
||||
// removed plant audio until finalization of assest TODO : new plant sounds when assests are online
|
||||
// player playSound( "mpl_sd_bomb_plant" );
|
||||
player notify ( "bomb_planted" );
|
||||
|
||||
level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_PLANTED_BY", player );
|
||||
|
||||
if( isdefined(player.pers["plants"]) )
|
||||
{
|
||||
player.pers["plants"]++;
|
||||
player.plants = player.pers["plants"];
|
||||
}
|
||||
|
||||
player maps\mp\_medals::saboteur();
|
||||
player maps\mp\gametypes\_persistence::statAddWithGameType( "PLANTS", 1 );
|
||||
|
||||
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_planted" );
|
||||
|
||||
maps\mp\gametypes\_globallogic_score::givePlayerScore( "plant", player );
|
||||
//player thread [[level.onXPEvent]]( "plant" );
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Fixes sd bomb planting
|
||||
*/
|
||||
bot_bombPlanted( destroyedObj, player )
|
||||
{
|
||||
maps\mp\gametypes\_globallogic_utils::pauseTimer();
|
||||
level.bombPlanted = true;
|
||||
|
||||
destroyedObj.visuals[0] thread maps\mp\gametypes\_globallogic_utils::playTickingSound( "mpl_sab_ui_suitcasebomb_timer" );
|
||||
//Play suspense music
|
||||
level thread maps\mp\gametypes\sd::bombPlantedMusicDelay();
|
||||
|
||||
//thread maps\mp\gametypes\_globallogic_audio::actionMusicSet();
|
||||
|
||||
level.tickingObject = destroyedObj.visuals[0];
|
||||
|
||||
level.timeLimitOverride = true;
|
||||
setGameEndTime( int( gettime() + (level.bombTimer * 1000) ) );
|
||||
setMatchFlag( "bomb_timer", 1 );
|
||||
|
||||
if ( !level.multiBomb )
|
||||
{
|
||||
level.sdBomb maps\mp\gametypes\_gameobjects::allowCarry( "none" );
|
||||
level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
|
||||
level.sdBomb maps\mp\gametypes\_gameobjects::setDropped();
|
||||
level.sdBombModel = level.sdBomb.visuals[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
for ( index = 0; index < level.players.size; index++ )
|
||||
{
|
||||
if ( isDefined( level.players[index].carryIcon ) )
|
||||
level.players[index].carryIcon destroyElem();
|
||||
}
|
||||
|
||||
trace = bulletTrace( player.origin + (0,0,20), player.origin - (0,0,2000), false, player );
|
||||
|
||||
tempAngle = randomfloat( 360 );
|
||||
forward = (cos( tempAngle ), sin( tempAngle ), 0);
|
||||
forward = vectornormalize( forward - vector_scale( trace["normal"], vectordot( forward, trace["normal"] ) ) );
|
||||
dropAngles = vectortoangles( forward );
|
||||
|
||||
level.sdBombModel = spawn( "script_model", trace["position"] );
|
||||
level.sdBombModel.angles = dropAngles;
|
||||
level.sdBombModel setModel( "prop_suitcase_bomb" );
|
||||
}
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::allowUse( "none" );
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
|
||||
/*
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", undefined );
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", undefined );
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", undefined );
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", undefined );
|
||||
*/
|
||||
label = destroyedObj maps\mp\gametypes\_gameobjects::getLabel();
|
||||
|
||||
// create a new object to defuse with.
|
||||
trigger = destroyedObj.bombDefuseTrig;
|
||||
trigger.origin = level.sdBombModel.origin;
|
||||
visuals = [];
|
||||
defuseObject = maps\mp\gametypes\_gameobjects::createUseObject( game["defenders"], trigger, visuals, (0,0,32) );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::allowUse( "friendly" );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::setUseTime( level.defuseTime );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defuse" + label );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_defend" + label );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defuse" + label );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_defend" + label );
|
||||
defuseObject.label = label;
|
||||
defuseObject.onBeginUse = maps\mp\gametypes\sd::onBeginUse;
|
||||
defuseObject.onEndUse = maps\mp\gametypes\sd::onEndUse;
|
||||
defuseObject.onUse = maps\mp\gametypes\sd::onUseDefuseObject;
|
||||
defuseObject.useWeapon = "briefcase_bomb_defuse_mp";
|
||||
|
||||
level.defuseObject = defuseObject;//every cod...
|
||||
|
||||
player.isBombCarrier = false;
|
||||
|
||||
maps\mp\gametypes\sd::BombTimerWait();
|
||||
setMatchFlag( "bomb_timer", 0 );
|
||||
|
||||
destroyedObj.visuals[0] maps\mp\gametypes\_globallogic_utils::stopTickingSound();
|
||||
|
||||
if ( level.gameEnded || level.bombDefused )
|
||||
return;
|
||||
|
||||
level.bombExploded = true;
|
||||
|
||||
|
||||
|
||||
explosionOrigin = level.sdBombModel.origin+(0,0,12);
|
||||
level.sdBombModel hide();
|
||||
|
||||
if ( isdefined( player ) )
|
||||
{
|
||||
destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, player, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
|
||||
level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_BLOWUP_BY", player );
|
||||
player maps\mp\_medals::bomber();
|
||||
player maps\mp\gametypes\_persistence::statAddWithGameType( "DESTRUCTIONS", 1 );
|
||||
}
|
||||
else
|
||||
destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, undefined, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
|
||||
|
||||
rot = randomfloat(360);
|
||||
explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + (0,0,50), (0,0,1), (cos(rot),sin(rot),0) );
|
||||
triggerFx( explosionEffect );
|
||||
|
||||
thread playSoundinSpace( "mpl_sd_exp_suitcase_bomb_main", explosionOrigin );
|
||||
//thread maps\mp\gametypes\_globallogic_audio::set_music_on_team( "SILENT", "both" );
|
||||
|
||||
if ( isDefined( destroyedObj.exploderIndex ) )
|
||||
exploder( destroyedObj.exploderIndex );
|
||||
|
||||
for ( index = 0; index < level.bombZones.size; index++ )
|
||||
level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject();
|
||||
defuseObject maps\mp\gametypes\_gameobjects::disableObject();
|
||||
|
||||
setGameEndTime( 0 );
|
||||
|
||||
wait 3;
|
||||
|
||||
maps\mp\gametypes\sd::sd_endGame( game["attackers"], game["strings"]["target_destroyed"] );
|
||||
}
|
@ -1,924 +0,0 @@
|
||||
/*
|
||||
_bot
|
||||
Author: INeedGames
|
||||
Date: 12/20/2020
|
||||
The entry point and manager of the bots.
|
||||
*/
|
||||
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_utility;
|
||||
#include maps\mp\gametypes\_hud_util;
|
||||
#include maps\mp\bots\_bot_utility;
|
||||
|
||||
/*
|
||||
Entry point to the bots
|
||||
*/
|
||||
init()
|
||||
{
|
||||
level.bw_VERSION = "1.1.1";
|
||||
|
||||
level.bot_offline = false;
|
||||
|
||||
if(getDvar("bots_main") == "")
|
||||
setDvar("bots_main", true);
|
||||
|
||||
if (!getDvarInt("bots_main"))
|
||||
return;
|
||||
|
||||
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_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_codpoints") == "")// how much cod points a bot should have, -1 is around the players, 0 is all random
|
||||
setDvar("bots_loadout_codpoints", -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_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_nade") == "")//bots grenade
|
||||
setDvar("bots_play_nade", 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_move") == "")//bots move
|
||||
setDvar("bots_play_move", true);
|
||||
if(getDvar("bots_play_take_carepackages") == "")//bots take carepackages
|
||||
setDvar("bots_play_take_carepackages", 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);
|
||||
|
||||
level.bots = [];
|
||||
level.bot_decoys = [];
|
||||
level.bot_planes = [];
|
||||
|
||||
if(!isDefined(game["botWarfare"]))
|
||||
game["botWarfare"] = true;
|
||||
|
||||
thread fixGamemodes();
|
||||
thread onPlayerConnect();
|
||||
thread bot_watch_planes();
|
||||
|
||||
thread handleBots();
|
||||
|
||||
thread doNonDediBots();
|
||||
}
|
||||
|
||||
/*
|
||||
Thread when any player connects. Starts the threads needed.
|
||||
*/
|
||||
onPlayerConnect()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
level waittill("connected", player);
|
||||
|
||||
player thread watch_shoot();
|
||||
player thread watch_grenade();
|
||||
player thread connected();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Starts the threads for bots.
|
||||
*/
|
||||
handleBots()
|
||||
{
|
||||
thread diffBots();
|
||||
thread teamBots();
|
||||
addBots();
|
||||
|
||||
while(!level.intermission)
|
||||
wait 0.05;
|
||||
|
||||
setDvar("bots_manage_add", getBotArray().size);
|
||||
}
|
||||
|
||||
/*
|
||||
When a bot disconnects.
|
||||
*/
|
||||
onDisconnect()
|
||||
{
|
||||
self waittill("disconnect");
|
||||
|
||||
level.bots = array_remove(level.bots, self);
|
||||
}
|
||||
|
||||
/*
|
||||
Whena player connects
|
||||
*/
|
||||
connected()
|
||||
{
|
||||
self endon("disconnect");
|
||||
|
||||
if (!self is_bot())
|
||||
return;
|
||||
|
||||
self thread maps\mp\bots\_bot_script::connected();
|
||||
|
||||
level.bots[level.bots.size] = self;
|
||||
self thread onDisconnect();
|
||||
|
||||
level notify("bot_connected", self);
|
||||
}
|
||||
|
||||
/*
|
||||
Handles the diff of the bots
|
||||
*/
|
||||
diffBots()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
wait 1.5;
|
||||
|
||||
bot_set_difficulty(GetDvar( #"bot_difficulty" ));
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Setup bot dvars for non dedicated clients
|
||||
*/
|
||||
doNonDediBots()
|
||||
{
|
||||
if (!GetDvarInt( #"xblive_basictraining" ))
|
||||
return;
|
||||
|
||||
if (isDefined(game[ "bots_spawned" ]))
|
||||
return;
|
||||
|
||||
game[ "bots_spawned" ] = true;
|
||||
|
||||
if(getDvar("bot_enemies_extra") == "")
|
||||
setDvar("bot_enemies_extra", 0);
|
||||
if(getDvar("bot_friends_extra") == "")
|
||||
setDvar("bot_friends_extra", 0);
|
||||
|
||||
bot_friends = GetDvarInt( #"bot_friends" );
|
||||
bot_enemies = GetDvarInt( #"bot_enemies" );
|
||||
|
||||
bot_enemies += GetDvarInt("bot_enemies_extra");
|
||||
bot_friends += GetDvarInt("bot_friends_extra");
|
||||
|
||||
bot_wait_for_host();
|
||||
host = GetHostPlayer();
|
||||
|
||||
team = "allies";
|
||||
if(isDefined(host) && isDefined(host.pers[ "team" ]) && (host.pers[ "team" ] == "allies" || host.pers[ "team" ] == "axis"))
|
||||
team = host.pers[ "team" ];
|
||||
|
||||
setDvar("bots_manage_add", bot_enemies + bot_friends - 1);
|
||||
setDvar("bots_manage_fill", bot_enemies + bot_friends);
|
||||
setDvar("bots_manage_fill_mode", 0);
|
||||
setDvar("bots_manage_fill_kick", true);
|
||||
setDvar("bots_manage_fill_spec", false);
|
||||
|
||||
setDvar("bots_team", "custom");
|
||||
|
||||
if (team == "axis")
|
||||
setDvar("bots_team_amount", bot_friends);
|
||||
else
|
||||
setDvar("bots_team_amount", bot_enemies);
|
||||
|
||||
setDvar("bots_team_force", true);
|
||||
setDvar("bots_team_mode", 0);
|
||||
}
|
||||
|
||||
/*
|
||||
Sets the difficulty of the bots
|
||||
*/
|
||||
bot_set_difficulty( difficulty )
|
||||
{
|
||||
if ( difficulty == "fu" )
|
||||
{
|
||||
SetDvar( "sv_botMinDeathTime", "250" );
|
||||
SetDvar( "sv_botMaxDeathTime", "500" );
|
||||
SetDvar( "sv_botMinFireTime", "100" );
|
||||
SetDvar( "sv_botMaxFireTime", "300" );
|
||||
SetDvar( "sv_botYawSpeed", "14" );
|
||||
SetDvar( "sv_botYawSpeedAds", "14" );
|
||||
SetDvar( "sv_botPitchUp", "-5" );
|
||||
SetDvar( "sv_botPitchDown", "10" );
|
||||
SetDvar( "sv_botFov", "160" );
|
||||
SetDvar( "sv_botMinAdsTime", "3000" );
|
||||
SetDvar( "sv_botMaxAdsTime", "5000" );
|
||||
SetDvar( "sv_botMinCrouchTime", "100" );
|
||||
SetDvar( "sv_botMaxCrouchTime", "400" );
|
||||
SetDvar( "sv_botTargetLeadBias", "2" );
|
||||
SetDvar( "sv_botMinReactionTime", "30" );
|
||||
SetDvar( "sv_botMaxReactionTime", "100" );
|
||||
SetDvar( "sv_botStrafeChance", "1" );
|
||||
SetDvar( "sv_botMinStrafeTime", "3000" );
|
||||
SetDvar( "sv_botMaxStrafeTime", "6000" );
|
||||
SetDvar( "scr_help_dist", "512" );
|
||||
SetDvar( "sv_botAllowGrenades", "1" );
|
||||
SetDvar( "sv_botMinGrenadeTime", "1500" );
|
||||
SetDvar( "sv_botMaxGrenadeTime", "4000" );
|
||||
SetDvar( "sv_botSprintDistance", "512" );
|
||||
SetDvar( "sv_botMeleeDist", "80" );
|
||||
}
|
||||
else if ( difficulty == "hard" )
|
||||
{
|
||||
SetDvar( "sv_botMinDeathTime", "250" );
|
||||
SetDvar( "sv_botMaxDeathTime", "500" );
|
||||
SetDvar( "sv_botMinFireTime", "400" );
|
||||
SetDvar( "sv_botMaxFireTime", "600" );
|
||||
SetDvar( "sv_botYawSpeed", "8" );
|
||||
SetDvar( "sv_botYawSpeedAds", "10" );
|
||||
SetDvar( "sv_botPitchUp", "-5" );
|
||||
SetDvar( "sv_botPitchDown", "10" );
|
||||
SetDvar( "sv_botFov", "100" );
|
||||
SetDvar( "sv_botMinAdsTime", "3000" );
|
||||
SetDvar( "sv_botMaxAdsTime", "5000" );
|
||||
SetDvar( "sv_botMinCrouchTime", "100" );
|
||||
SetDvar( "sv_botMaxCrouchTime", "400" );
|
||||
SetDvar( "sv_botTargetLeadBias", "2" );
|
||||
SetDvar( "sv_botMinReactionTime", "400" );
|
||||
SetDvar( "sv_botMaxReactionTime", "700" );
|
||||
SetDvar( "sv_botStrafeChance", "0.9" );
|
||||
SetDvar( "sv_botMinStrafeTime", "3000" );
|
||||
SetDvar( "sv_botMaxStrafeTime", "6000" );
|
||||
SetDvar( "scr_help_dist", "384" );
|
||||
SetDvar( "sv_botAllowGrenades", "1" );
|
||||
SetDvar( "sv_botMinGrenadeTime", "1500" );
|
||||
SetDvar( "sv_botMaxGrenadeTime", "4000" );
|
||||
SetDvar( "sv_botSprintDistance", "512" );
|
||||
SetDvar( "sv_botMeleeDist", "80" );
|
||||
}
|
||||
else if ( difficulty == "easy" )
|
||||
{
|
||||
SetDvar( "sv_botMinDeathTime", "1000" );
|
||||
SetDvar( "sv_botMaxDeathTime", "2000" );
|
||||
SetDvar( "sv_botMinFireTime", "900" );
|
||||
SetDvar( "sv_botMaxFireTime", "1000" );
|
||||
SetDvar( "sv_botYawSpeed", "2" );
|
||||
SetDvar( "sv_botYawSpeedAds", "2.5" );
|
||||
SetDvar( "sv_botPitchUp", "-20" );
|
||||
SetDvar( "sv_botPitchDown", "40" );
|
||||
SetDvar( "sv_botFov", "50" );
|
||||
SetDvar( "sv_botMinAdsTime", "3000" );
|
||||
SetDvar( "sv_botMaxAdsTime", "5000" );
|
||||
SetDvar( "sv_botMinCrouchTime", "4000" );
|
||||
SetDvar( "sv_botMaxCrouchTime", "6000" );
|
||||
SetDvar( "sv_botTargetLeadBias", "8" );
|
||||
SetDvar( "sv_botMinReactionTime", "1200" );
|
||||
SetDvar( "sv_botMaxReactionTime", "1600" );
|
||||
SetDvar( "sv_botStrafeChance", "0.1" );
|
||||
SetDvar( "sv_botMinStrafeTime", "3000" );
|
||||
SetDvar( "sv_botMaxStrafeTime", "6000" );
|
||||
SetDvar( "scr_help_dist", "256" );
|
||||
SetDvar( "sv_botAllowGrenades", "0" );
|
||||
SetDvar( "sv_botSprintDistance", "1024" );
|
||||
SetDvar( "sv_botMeleeDist", "40" );
|
||||
}
|
||||
else // 'normal' difficulty
|
||||
{
|
||||
SetDvar( "sv_botMinDeathTime", "500" );
|
||||
SetDvar( "sv_botMaxDeathTime", "1000" );
|
||||
SetDvar( "sv_botMinFireTime", "600" );
|
||||
SetDvar( "sv_botMaxFireTime", "800" );
|
||||
SetDvar( "sv_botYawSpeed", "4" );
|
||||
SetDvar( "sv_botYawSpeedAds", "5" );
|
||||
SetDvar( "sv_botPitchUp", "-10" );
|
||||
SetDvar( "sv_botPitchDown", "20" );
|
||||
SetDvar( "sv_botFov", "70" );
|
||||
SetDvar( "sv_botMinAdsTime", "3000" );
|
||||
SetDvar( "sv_botMaxAdsTime", "5000" );
|
||||
SetDvar( "sv_botMinCrouchTime", "2000" );
|
||||
SetDvar( "sv_botMaxCrouchTime", "4000" );
|
||||
SetDvar( "sv_botTargetLeadBias", "4" );
|
||||
SetDvar( "sv_botMinReactionTime", "800" );
|
||||
SetDvar( "sv_botMaxReactionTime", "1200" );
|
||||
SetDvar( "sv_botStrafeChance", "0.6" );
|
||||
SetDvar( "sv_botMinStrafeTime", "3000" );
|
||||
SetDvar( "sv_botMaxStrafeTime", "6000" );
|
||||
SetDvar( "scr_help_dist", "256" );
|
||||
SetDvar( "sv_botAllowGrenades", "1" );
|
||||
SetDvar( "sv_botMinGrenadeTime", "1500" );
|
||||
SetDvar( "sv_botMaxGrenadeTime", "4000" );
|
||||
SetDvar( "sv_botSprintDistance", "512" );
|
||||
SetDvar( "sv_botMeleeDist", "80" );
|
||||
difficulty = "normal";
|
||||
}
|
||||
|
||||
if ( level.gameType == "oic" && difficulty == "fu" )
|
||||
{
|
||||
SetDvar( "sv_botMinReactionTime", "400" );
|
||||
SetDvar( "sv_botMaxReactionTime", "500" );
|
||||
SetDvar( "sv_botMinAdsTime", "1000" );
|
||||
SetDvar( "sv_botMaxAdsTime", "2000" );
|
||||
}
|
||||
|
||||
if ( level.gameType == "oic" && ( difficulty == "hard" || difficulty == "fu" ) )
|
||||
{
|
||||
SetDvar( "sv_botSprintDistance", "256" );
|
||||
}
|
||||
|
||||
if (!getDvarInt("bots_play_nade"))
|
||||
SetDvar( "sv_botAllowGrenades", "0" );
|
||||
|
||||
SetDvar( "bot_difficulty", difficulty );
|
||||
SetDvar( "scr_bot_difficulty", difficulty );
|
||||
SetDvar( "splitscreen_botDifficulty", difficulty );
|
||||
}
|
||||
|
||||
/*
|
||||
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.
|
||||
|
||||
Dedis only spawn bots when developer is not 0
|
||||
This makes the dedi unstable and can crash
|
||||
|
||||
Patch the executable to skip the pregame and make it so bots can spawn
|
||||
|
||||
pregame:
|
||||
in the ShouldDoPregame sub:
|
||||
B8 01 00 00 00: mov eax, 1
|
||||
change to: B8 00 00 00 00: mov eax, 0
|
||||
0x4F6C77 in rektmp
|
||||
0x4598A7 in bg
|
||||
|
||||
|
||||
spawnbots:
|
||||
in the SV_AddTestClient sub:
|
||||
0F 85 A4 00 00 00: jnz
|
||||
change to: 0F 84 A4 00 00 00: jz
|
||||
0x6B6180 in rektmp
|
||||
0x4682F0 in bg
|
||||
|
||||
|
||||
allow changing g_antilag dvar:
|
||||
set the byte from 0x40 to 0x00
|
||||
|
||||
0x53B1B2 in rekt
|
||||
0x59B6F2 in bg
|
||||
*/
|
||||
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 isdemoclient())
|
||||
continue;
|
||||
|
||||
if(player is_bot())
|
||||
bots++;
|
||||
else if(!isDefined(player.pers["team"]) || (player.pers["team"] != "axis" && player.pers["team"] != "allies"))
|
||||
spec++;
|
||||
else
|
||||
players++;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
if (!randomInt(999))
|
||||
{
|
||||
setDvar("testclients_doreload", true);
|
||||
wait 0.1;
|
||||
setDvar("testclients_doreload", false);
|
||||
doExtraCheck();
|
||||
}
|
||||
|
||||
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"))
|
||||
{
|
||||
tempBot = PickRandom(getBotArray());
|
||||
if (isDefined(tempBot))
|
||||
kick( tempBot getEntityNumber(), "EXE_PLAYERKICKED" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Adds a bot to the game.
|
||||
*/
|
||||
add_bot()
|
||||
{
|
||||
bot = addtestclient();
|
||||
|
||||
if (isdefined(bot))
|
||||
{
|
||||
bot.pers["isBot"] = true;
|
||||
bot.equipment_enabled = true;
|
||||
bot.pers[ "bot_perk" ] = true;
|
||||
bot.pers["isBotWarfare"] = true;
|
||||
bot thread maps\mp\bots\_bot_script::added();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Gives the bot loadout
|
||||
*/
|
||||
bot_give_loadout()
|
||||
{
|
||||
self maps\mp\bots\_bot_loadout::bot_give_loadout();
|
||||
}
|
||||
|
||||
/*
|
||||
Fired when the bot is damaged
|
||||
*/
|
||||
bot_damage_callback( eAttacker, iDamage, sMeansOfDeath, sWeapon, eInflictor, sHitLoc )
|
||||
{
|
||||
self maps\mp\bots\_bot_script::bot_damage_callback( eAttacker, iDamage, sMeansOfDeath, sWeapon, eInflictor, sHitLoc );
|
||||
}
|
||||
|
||||
/*
|
||||
Bot is idle
|
||||
*/
|
||||
bot_is_idle()
|
||||
{
|
||||
if ( !IsDefined( self ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( !IsAlive( self ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( !self is_bot() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( self inLastStand() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( self HasScriptGoal() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( IsDefined( self GetThreat() ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( self IsRemoteControlling() || self.bot_lock_goal )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if(self UseButtonPressed())
|
||||
return false;
|
||||
|
||||
if(self isPlanting())
|
||||
return false;
|
||||
|
||||
if(self isDefusing())
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
Watch all players grenades
|
||||
*/
|
||||
watch_grenade()
|
||||
{
|
||||
self endon("disconnect");
|
||||
|
||||
self.bot_scrambled = false;
|
||||
for(;;)
|
||||
{
|
||||
self waittill("grenade_fire", g, name);
|
||||
if(name == "scrambler_mp")
|
||||
{
|
||||
g thread watch_scrambler();
|
||||
}
|
||||
else if(name == "nightingale_mp")
|
||||
{
|
||||
self thread watch_decoy(g);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Watch the decoy grenade
|
||||
*/
|
||||
watch_decoy(g)
|
||||
{
|
||||
g.team = self.team;
|
||||
|
||||
level.bot_decoys[level.bot_decoys.size] = g;
|
||||
|
||||
g waittill("death");
|
||||
|
||||
for ( entry = 0; entry < level.bot_decoys.size; entry++ )
|
||||
{
|
||||
if ( level.bot_decoys[entry] == g )
|
||||
{
|
||||
while ( entry < level.bot_decoys.size-1 )
|
||||
{
|
||||
level.bot_decoys[entry] = level.bot_decoys[entry+1];
|
||||
entry++;
|
||||
}
|
||||
level.bot_decoys[entry] = undefined;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Attach a trigger to the scrambler
|
||||
*/
|
||||
watch_scrambler()
|
||||
{
|
||||
trig = spawn( "trigger_radius", self.origin + (0, 0, -1000), 0, 1000, 2000 );
|
||||
|
||||
self scramble_nearby(trig);
|
||||
|
||||
trig delete();
|
||||
}
|
||||
|
||||
/*
|
||||
Watch when players enter the scrambler trigger
|
||||
*/
|
||||
scramble_nearby(trig)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("hacked");
|
||||
|
||||
while(!isDefined(self.owner) || !isDefined(self.owner.team))
|
||||
wait 0.05;
|
||||
|
||||
self.team = self.owner.team;
|
||||
for(;;)
|
||||
{
|
||||
trig waittill("trigger", player);
|
||||
|
||||
if (!isDefined(player) || !isDefined(player.team))
|
||||
continue;
|
||||
|
||||
if(self maps\mp\gametypes\_weaponobjects::isStunned())
|
||||
continue;
|
||||
|
||||
if(isDefined(self.owner) && player == self.owner)
|
||||
continue;
|
||||
|
||||
if(level.teamBased && self.team == player.team)
|
||||
continue;
|
||||
|
||||
player thread scramble_player();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Scramble this player
|
||||
*/
|
||||
scramble_player()
|
||||
{
|
||||
self notify("scramble_nearby");
|
||||
self endon("scramble_nearby");
|
||||
|
||||
self.bot_scrambled = true;
|
||||
wait 0.1;
|
||||
|
||||
if(isDefined(self))
|
||||
self.bot_scrambled = false;
|
||||
}
|
||||
|
||||
/*
|
||||
Watch when a player shoots
|
||||
*/
|
||||
watch_shoot()
|
||||
{
|
||||
self endon("disconnect");
|
||||
|
||||
self.bot_firing = false;
|
||||
for(;;)
|
||||
{
|
||||
self waittill( "weapon_fired" );
|
||||
self thread doFiringThread();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
When a player fires
|
||||
*/
|
||||
doFiringThread()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("weapon_fired");
|
||||
|
||||
self.bot_firing = true;
|
||||
wait 1;
|
||||
self.bot_firing = false;
|
||||
}
|
||||
|
||||
/*
|
||||
Watches the planes
|
||||
*/
|
||||
bot_watch_planes()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
level waittill("uav_update");
|
||||
|
||||
ents = GetEntArray("script_model", "classname");
|
||||
for(i = 0; i < ents.size; i++)
|
||||
{
|
||||
ent = ents[i];
|
||||
|
||||
if(isDefined(ent.bot_plane))
|
||||
continue;
|
||||
|
||||
if(ent.model != level.spyplanemodel)
|
||||
continue;
|
||||
|
||||
thread watch_plane(ent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Watches the plane
|
||||
*/
|
||||
watch_plane(ent)
|
||||
{
|
||||
ent.bot_plane = true;
|
||||
|
||||
level.bot_planes[level.bot_planes.size] = ent;
|
||||
|
||||
ent waittill_any("death", "delete", "leaving");
|
||||
|
||||
for ( entry = 0; entry < level.bot_planes.size; entry++ )
|
||||
{
|
||||
if ( level.bot_planes[entry] == ent )
|
||||
{
|
||||
while ( entry < level.bot_planes.size-1 )
|
||||
{
|
||||
level.bot_planes[entry] = level.bot_planes[entry+1];
|
||||
entry++;
|
||||
}
|
||||
level.bot_planes[entry] = undefined;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Fix xp in sd
|
||||
*/
|
||||
bot_killBoost()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
Fixes sd
|
||||
*/
|
||||
fixGamemodes()
|
||||
{
|
||||
for(i=0;i<19;i++)
|
||||
{
|
||||
if(isDefined(level.bombZones) && level.gametype == "sd")
|
||||
{
|
||||
level.isKillBoosting = ::bot_killBoost;
|
||||
for(i = 0; i < level.bombZones.size; i++)
|
||||
level.bombZones[i].onUse = ::bot_onUsePlantObjectFix;
|
||||
break;
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
#include clientscripts\mp\_utility;
|
||||
#include clientscripts\mp\_rewindobjects;
|
||||
|
||||
init( localClientNum )
|
||||
{
|
||||
level._effect["fx_claymore_laser"] = loadfx( "weapon/claymore/fx_claymore_laser" );
|
||||
}
|
||||
|
||||
spawned( localClientNum )
|
||||
{
|
||||
self endon( "entityshutdown" );
|
||||
|
||||
self waittill_dobj(localClientNum);
|
||||
|
||||
while( true )
|
||||
{
|
||||
if( IsDefined( self.stunned ) && self.stunned )
|
||||
{
|
||||
wait( 0.1 );
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
self.claymoreLaserFXId = PlayFXOnTag( localClientNum, level._effect["fx_claymore_laser"], self, "tag_fx" );
|
||||
|
||||
self waittill( "stunned" );
|
||||
stopfx(localClientNum, self.claymoreLaserFXId);
|
||||
|
||||
}
|
||||
}
|
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
@ -1,539 +0,0 @@
|
||||
/*
|
||||
_bot_utility
|
||||
Author: INeedGames
|
||||
Date: 12/20/2020
|
||||
The shared functions for bots
|
||||
*/
|
||||
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_utility;
|
||||
#include maps\mp\gametypes\_hud_util;
|
||||
|
||||
/*
|
||||
Returns an array of all the bots in the game.
|
||||
*/
|
||||
getBotArray()
|
||||
{
|
||||
result = [];
|
||||
playercount = level.players.size;
|
||||
for(i = 0; i < playercount; i++)
|
||||
{
|
||||
player = level.players[i];
|
||||
|
||||
if(!player is_bot())
|
||||
continue;
|
||||
|
||||
result[result.size] = player;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
Returns a good amount of players.
|
||||
*/
|
||||
getGoodMapAmount()
|
||||
{
|
||||
switch(getdvar("mapname"))
|
||||
{
|
||||
default:
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Rounds to the nearest whole number.
|
||||
*/
|
||||
Round(x)
|
||||
{
|
||||
y = int(x);
|
||||
|
||||
if(abs(x) - abs(y) > 0.5)
|
||||
{
|
||||
if(x < 0)
|
||||
return y - 1;
|
||||
else
|
||||
return y + 1;
|
||||
}
|
||||
else
|
||||
return y;
|
||||
}
|
||||
|
||||
/*
|
||||
Picks a random thing
|
||||
*/
|
||||
PickRandom(arr)
|
||||
{
|
||||
if (!arr.size)
|
||||
return undefined;
|
||||
|
||||
return arr[randomInt(arr.size)];
|
||||
}
|
||||
|
||||
/*
|
||||
If is defusing
|
||||
*/
|
||||
isDefusing()
|
||||
{
|
||||
return (isDefined(self.isDefusing) && self.isDefusing);
|
||||
}
|
||||
|
||||
/*
|
||||
If is defusing
|
||||
*/
|
||||
isPlanting()
|
||||
{
|
||||
return (isDefined(self.isPlanting) && self.isPlanting);
|
||||
}
|
||||
|
||||
/*
|
||||
If is defusing
|
||||
*/
|
||||
inLastStand()
|
||||
{
|
||||
return (isDefined(self.laststand) && self.laststand);
|
||||
}
|
||||
|
||||
/*
|
||||
Is they the flag carrier men?
|
||||
*/
|
||||
isFlagCarrier()
|
||||
{
|
||||
return (isDefined(self.isFlagCarrier) && self.isFlagCarrier);
|
||||
}
|
||||
|
||||
/*
|
||||
If the site is in use
|
||||
*/
|
||||
isInUse()
|
||||
{
|
||||
return (isDefined(self.inUse) && self.inUse);
|
||||
}
|
||||
|
||||
/*
|
||||
If the player is carrying a bomb
|
||||
*/
|
||||
isBombCarrier()
|
||||
{
|
||||
return (isDefined(self.isBombCarrier) && self.isBombCarrier);
|
||||
}
|
||||
|
||||
/*
|
||||
Gets the bot's difficulty number
|
||||
*/
|
||||
GetBotDiffNum()
|
||||
{
|
||||
num = 0;
|
||||
|
||||
switch (getDvar("bot_difficulty"))
|
||||
{
|
||||
case "fu":
|
||||
num = 3;
|
||||
break;
|
||||
case "hard":
|
||||
num = 2;
|
||||
break;
|
||||
case "normal":
|
||||
num = 1;
|
||||
break;
|
||||
case "easy":
|
||||
default:
|
||||
num = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
/*
|
||||
is the weapon alt mode?
|
||||
*/
|
||||
isWeaponAltmode(weap)
|
||||
{
|
||||
if (isStrStart(weap, "gl_") || isStrStart(weap, "ft_") || isStrStart(weap, "mk_"))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
Returns a valid grenade launcher weapon
|
||||
*/
|
||||
getValidTube()
|
||||
{
|
||||
weaps = self getweaponslist();
|
||||
|
||||
for (i = 0; i < weaps.size; i++)
|
||||
{
|
||||
weap = weaps[i];
|
||||
|
||||
if(!self getAmmoCount(weap))
|
||||
continue;
|
||||
|
||||
if ((isSubStr(weap, "gl_") && !isSubStr(weap, "_gl_")) || weap == "china_lake_mp")
|
||||
return weap;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
/*
|
||||
Taken from iw4 script
|
||||
*/
|
||||
waittill_any_timeout( timeOut, string1, string2, string3, string4, string5 )
|
||||
{
|
||||
if ( ( !isdefined( string1 ) || string1 != "death" ) &&
|
||||
( !isdefined( string2 ) || string2 != "death" ) &&
|
||||
( !isdefined( string3 ) || string3 != "death" ) &&
|
||||
( !isdefined( string4 ) || string4 != "death" ) &&
|
||||
( !isdefined( string5 ) || string5 != "death" ) )
|
||||
self endon( "death" );
|
||||
|
||||
ent = spawnstruct();
|
||||
|
||||
if ( isdefined( string1 ) )
|
||||
self thread waittill_string( string1, ent );
|
||||
|
||||
if ( isdefined( string2 ) )
|
||||
self thread waittill_string( string2, ent );
|
||||
|
||||
if ( isdefined( string3 ) )
|
||||
self thread waittill_string( string3, ent );
|
||||
|
||||
if ( isdefined( string4 ) )
|
||||
self thread waittill_string( string4, ent );
|
||||
|
||||
if ( isdefined( string5 ) )
|
||||
self thread waittill_string( string5, ent );
|
||||
|
||||
ent thread _timeout( timeOut );
|
||||
|
||||
ent waittill( "returned", msg );
|
||||
ent notify( "die" );
|
||||
return msg;
|
||||
}
|
||||
|
||||
/*
|
||||
Used for waittill_any_timeout
|
||||
*/
|
||||
_timeout( delay )
|
||||
{
|
||||
self endon( "die" );
|
||||
|
||||
wait( delay );
|
||||
self notify( "returned", "timeout" );
|
||||
}
|
||||
|
||||
/*
|
||||
Waits for a host player
|
||||
*/
|
||||
bot_wait_for_host()
|
||||
{
|
||||
host = undefined;
|
||||
|
||||
while (!isDefined(level) || !isDefined(level.players))
|
||||
wait 0.05;
|
||||
|
||||
for(i = getDvarFloat("bots_main_waitForHostTime"); i > 0; i -= 0.05)
|
||||
{
|
||||
host = GetHostPlayer();
|
||||
|
||||
if(isDefined(host))
|
||||
break;
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
if(!isDefined(host))
|
||||
return;
|
||||
|
||||
for(i = getDvarFloat("bots_main_waitForHostTime"); i > 0; i -= 0.05)
|
||||
{
|
||||
if(IsDefined( host.pers[ "team" ] ))
|
||||
break;
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
if(!IsDefined( host.pers[ "team" ] ))
|
||||
return;
|
||||
|
||||
for(i = getDvarFloat("bots_main_waitForHostTime"); i > 0; i -= 0.05)
|
||||
{
|
||||
if(host.pers[ "team" ] == "allies" || host.pers[ "team" ] == "axis")
|
||||
break;
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Wrapper for setgoal
|
||||
*/
|
||||
SetBotGoal(where, dist)
|
||||
{
|
||||
self SetScriptGoal(where, dist);
|
||||
waittillframeend;
|
||||
self notify("new_goal");
|
||||
}
|
||||
|
||||
/*
|
||||
Weapper for cleargoal
|
||||
*/
|
||||
ClearBotGoal()
|
||||
{
|
||||
self ClearScriptGoal();
|
||||
waittillframeend;
|
||||
self notify("new_goal");
|
||||
}
|
||||
|
||||
/*
|
||||
Freezes bot in place
|
||||
*/
|
||||
botStopMove(what)
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("death");
|
||||
level endon("game_ended");
|
||||
|
||||
self notify("botStopMove");
|
||||
self endon("botStopMove");
|
||||
|
||||
if (!what)
|
||||
return;
|
||||
|
||||
og = self.origin;
|
||||
for (;;)
|
||||
{
|
||||
self setVelocity((0,0,0));
|
||||
self setOrigin(og);
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Matches a num to a char
|
||||
*/
|
||||
keyCodeToString(a)
|
||||
{
|
||||
b="";
|
||||
switch(a)
|
||||
{
|
||||
case 0: b= "a"; break;
|
||||
case 1: b= "b"; break;
|
||||
case 2: b= "c"; break;
|
||||
case 3: b= "d"; break;
|
||||
case 4: b= "e"; break;
|
||||
case 5: b= "f"; break;
|
||||
case 6: b= "g"; break;
|
||||
case 7: b= "h"; break;
|
||||
case 8: b= "i"; break;
|
||||
case 9: b= "j"; break;
|
||||
case 10: b= "k"; break;
|
||||
case 11: b= "l"; break;
|
||||
case 12: b= "m"; break;
|
||||
case 13: b= "n"; break;
|
||||
case 14: b= "o"; break;
|
||||
case 15: b= "p"; break;
|
||||
case 16: b= "q"; break;
|
||||
case 17: b= "r"; break;
|
||||
case 18: b= "s"; break;
|
||||
case 19: b= "t"; break;
|
||||
case 20: b= "u"; break;
|
||||
case 21: b= "v"; break;
|
||||
case 22: b= "w"; break;
|
||||
case 23: b= "x"; break;
|
||||
case 24: b= "y"; break;
|
||||
case 25: b= "z"; break;
|
||||
case 26: b= "."; break;
|
||||
case 27: b= " "; break;
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
/*
|
||||
Does the extra check when adding bots
|
||||
*/
|
||||
doExtraCheck()
|
||||
{
|
||||
maps\mp\bots\_bot_script::checkTheBots();
|
||||
}
|
||||
|
||||
/*
|
||||
Returns the cone dot (like fov, or distance from the center of our screen).
|
||||
*/
|
||||
getConeDot(to, from, dir)
|
||||
{
|
||||
dirToTarget = VectorNormalize(to-from);
|
||||
forward = AnglesToForward(dir);
|
||||
return vectordot(dirToTarget, forward);
|
||||
}
|
||||
|
||||
/*
|
||||
Fixes sd bomb planting
|
||||
*/
|
||||
bot_onUsePlantObjectFix( player )
|
||||
{
|
||||
// planted the bomb
|
||||
if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) )
|
||||
{
|
||||
level thread bot_bombPlanted( self, player );
|
||||
player logString( "bomb planted: " + self.label );
|
||||
|
||||
// disable all bomb zones except this one
|
||||
for ( index = 0; index < level.bombZones.size; index++ )
|
||||
{
|
||||
if ( level.bombZones[index] == self )
|
||||
continue;
|
||||
|
||||
level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject();
|
||||
}
|
||||
thread playSoundOnPlayers( "mus_sd_planted"+"_"+level.teamPostfix[player.pers["team"]] );
|
||||
// removed plant audio until finalization of assest TODO : new plant sounds when assests are online
|
||||
// player playSound( "mpl_sd_bomb_plant" );
|
||||
player notify ( "bomb_planted" );
|
||||
|
||||
level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_PLANTED_BY", player );
|
||||
|
||||
if( isdefined(player.pers["plants"]) )
|
||||
{
|
||||
player.pers["plants"]++;
|
||||
player.plants = player.pers["plants"];
|
||||
}
|
||||
|
||||
player maps\mp\_medals::saboteur();
|
||||
player maps\mp\gametypes\_persistence::statAddWithGameType( "PLANTS", 1 );
|
||||
|
||||
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_planted" );
|
||||
|
||||
maps\mp\gametypes\_globallogic_score::givePlayerScore( "plant", player );
|
||||
//player thread [[level.onXPEvent]]( "plant" );
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Fixes sd bomb planting
|
||||
*/
|
||||
bot_bombPlanted( destroyedObj, player )
|
||||
{
|
||||
maps\mp\gametypes\_globallogic_utils::pauseTimer();
|
||||
level.bombPlanted = true;
|
||||
|
||||
destroyedObj.visuals[0] thread maps\mp\gametypes\_globallogic_utils::playTickingSound( "mpl_sab_ui_suitcasebomb_timer" );
|
||||
//Play suspense music
|
||||
level thread maps\mp\gametypes\sd::bombPlantedMusicDelay();
|
||||
|
||||
//thread maps\mp\gametypes\_globallogic_audio::actionMusicSet();
|
||||
|
||||
level.tickingObject = destroyedObj.visuals[0];
|
||||
|
||||
level.timeLimitOverride = true;
|
||||
setGameEndTime( int( gettime() + (level.bombTimer * 1000) ) );
|
||||
setMatchFlag( "bomb_timer", 1 );
|
||||
|
||||
if ( !level.multiBomb )
|
||||
{
|
||||
level.sdBomb maps\mp\gametypes\_gameobjects::allowCarry( "none" );
|
||||
level.sdBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
|
||||
level.sdBomb maps\mp\gametypes\_gameobjects::setDropped();
|
||||
level.sdBombModel = level.sdBomb.visuals[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
for ( index = 0; index < level.players.size; index++ )
|
||||
{
|
||||
if ( isDefined( level.players[index].carryIcon ) )
|
||||
level.players[index].carryIcon destroyElem();
|
||||
}
|
||||
|
||||
trace = bulletTrace( player.origin + (0,0,20), player.origin - (0,0,2000), false, player );
|
||||
|
||||
tempAngle = randomfloat( 360 );
|
||||
forward = (cos( tempAngle ), sin( tempAngle ), 0);
|
||||
forward = vectornormalize( forward - vector_scale( trace["normal"], vectordot( forward, trace["normal"] ) ) );
|
||||
dropAngles = vectortoangles( forward );
|
||||
|
||||
level.sdBombModel = spawn( "script_model", trace["position"] );
|
||||
level.sdBombModel.angles = dropAngles;
|
||||
level.sdBombModel setModel( "prop_suitcase_bomb" );
|
||||
}
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::allowUse( "none" );
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
|
||||
/*
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", undefined );
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", undefined );
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", undefined );
|
||||
destroyedObj maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", undefined );
|
||||
*/
|
||||
label = destroyedObj maps\mp\gametypes\_gameobjects::getLabel();
|
||||
|
||||
// create a new object to defuse with.
|
||||
trigger = destroyedObj.bombDefuseTrig;
|
||||
trigger.origin = level.sdBombModel.origin;
|
||||
visuals = [];
|
||||
defuseObject = maps\mp\gametypes\_gameobjects::createUseObject( game["defenders"], trigger, visuals, (0,0,32) );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::allowUse( "friendly" );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::setUseTime( level.defuseTime );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defuse" + label );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_defend" + label );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defuse" + label );
|
||||
defuseObject maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_defend" + label );
|
||||
defuseObject.label = label;
|
||||
defuseObject.onBeginUse = maps\mp\gametypes\sd::onBeginUse;
|
||||
defuseObject.onEndUse = maps\mp\gametypes\sd::onEndUse;
|
||||
defuseObject.onUse = maps\mp\gametypes\sd::onUseDefuseObject;
|
||||
defuseObject.useWeapon = "briefcase_bomb_defuse_mp";
|
||||
|
||||
level.defuseObject = defuseObject;//every cod...
|
||||
|
||||
player.isBombCarrier = false;
|
||||
|
||||
maps\mp\gametypes\sd::BombTimerWait();
|
||||
setMatchFlag( "bomb_timer", 0 );
|
||||
|
||||
destroyedObj.visuals[0] maps\mp\gametypes\_globallogic_utils::stopTickingSound();
|
||||
|
||||
if ( level.gameEnded || level.bombDefused )
|
||||
return;
|
||||
|
||||
level.bombExploded = true;
|
||||
|
||||
|
||||
|
||||
explosionOrigin = level.sdBombModel.origin+(0,0,12);
|
||||
level.sdBombModel hide();
|
||||
|
||||
if ( isdefined( player ) )
|
||||
{
|
||||
destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, player, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
|
||||
level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_BLOWUP_BY", player );
|
||||
player maps\mp\_medals::bomber();
|
||||
player maps\mp\gametypes\_persistence::statAddWithGameType( "DESTRUCTIONS", 1 );
|
||||
}
|
||||
else
|
||||
destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, undefined, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
|
||||
|
||||
rot = randomfloat(360);
|
||||
explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + (0,0,50), (0,0,1), (cos(rot),sin(rot),0) );
|
||||
triggerFx( explosionEffect );
|
||||
|
||||
thread playSoundinSpace( "mpl_sd_exp_suitcase_bomb_main", explosionOrigin );
|
||||
//thread maps\mp\gametypes\_globallogic_audio::set_music_on_team( "SILENT", "both" );
|
||||
|
||||
if ( isDefined( destroyedObj.exploderIndex ) )
|
||||
exploder( destroyedObj.exploderIndex );
|
||||
|
||||
for ( index = 0; index < level.bombZones.size; index++ )
|
||||
level.bombZones[index] maps\mp\gametypes\_gameobjects::disableObject();
|
||||
defuseObject maps\mp\gametypes\_gameobjects::disableObject();
|
||||
|
||||
setGameEndTime( 0 );
|
||||
|
||||
wait 3;
|
||||
|
||||
maps\mp\gametypes\sd::sd_endGame( game["attackers"], game["strings"]["target_destroyed"] );
|
||||
}
|
@ -1,924 +0,0 @@
|
||||
/*
|
||||
_bot
|
||||
Author: INeedGames
|
||||
Date: 12/20/2020
|
||||
The entry point and manager of the bots.
|
||||
*/
|
||||
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_utility;
|
||||
#include maps\mp\gametypes\_hud_util;
|
||||
#include maps\mp\bots\_bot_utility;
|
||||
|
||||
/*
|
||||
Entry point to the bots
|
||||
*/
|
||||
init()
|
||||
{
|
||||
level.bw_VERSION = "1.1.1";
|
||||
|
||||
level.bot_offline = false;
|
||||
|
||||
if(getDvar("bots_main") == "")
|
||||
setDvar("bots_main", true);
|
||||
|
||||
if (!getDvarInt("bots_main"))
|
||||
return;
|
||||
|
||||
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_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_codpoints") == "")// how much cod points a bot should have, -1 is around the players, 0 is all random
|
||||
setDvar("bots_loadout_codpoints", -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_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_nade") == "")//bots grenade
|
||||
setDvar("bots_play_nade", 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_move") == "")//bots move
|
||||
setDvar("bots_play_move", true);
|
||||
if(getDvar("bots_play_take_carepackages") == "")//bots take carepackages
|
||||
setDvar("bots_play_take_carepackages", 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);
|
||||
|
||||
level.bots = [];
|
||||
level.bot_decoys = [];
|
||||
level.bot_planes = [];
|
||||
|
||||
if(!isDefined(game["botWarfare"]))
|
||||
game["botWarfare"] = true;
|
||||
|
||||
thread fixGamemodes();
|
||||
thread onPlayerConnect();
|
||||
thread bot_watch_planes();
|
||||
|
||||
thread handleBots();
|
||||
|
||||
thread doNonDediBots();
|
||||
}
|
||||
|
||||
/*
|
||||
Thread when any player connects. Starts the threads needed.
|
||||
*/
|
||||
onPlayerConnect()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
level waittill("connected", player);
|
||||
|
||||
player thread watch_shoot();
|
||||
player thread watch_grenade();
|
||||
player thread connected();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Starts the threads for bots.
|
||||
*/
|
||||
handleBots()
|
||||
{
|
||||
thread diffBots();
|
||||
thread teamBots();
|
||||
addBots();
|
||||
|
||||
while(!level.intermission)
|
||||
wait 0.05;
|
||||
|
||||
setDvar("bots_manage_add", getBotArray().size);
|
||||
}
|
||||
|
||||
/*
|
||||
When a bot disconnects.
|
||||
*/
|
||||
onDisconnect()
|
||||
{
|
||||
self waittill("disconnect");
|
||||
|
||||
level.bots = array_remove(level.bots, self);
|
||||
}
|
||||
|
||||
/*
|
||||
Whena player connects
|
||||
*/
|
||||
connected()
|
||||
{
|
||||
self endon("disconnect");
|
||||
|
||||
if (!self is_bot())
|
||||
return;
|
||||
|
||||
self thread maps\mp\bots\_bot_script::connected();
|
||||
|
||||
level.bots[level.bots.size] = self;
|
||||
self thread onDisconnect();
|
||||
|
||||
level notify("bot_connected", self);
|
||||
}
|
||||
|
||||
/*
|
||||
Handles the diff of the bots
|
||||
*/
|
||||
diffBots()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
wait 1.5;
|
||||
|
||||
bot_set_difficulty(GetDvar( #"bot_difficulty" ));
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Setup bot dvars for non dedicated clients
|
||||
*/
|
||||
doNonDediBots()
|
||||
{
|
||||
if (!GetDvarInt( #"xblive_basictraining" ))
|
||||
return;
|
||||
|
||||
if (isDefined(game[ "bots_spawned" ]))
|
||||
return;
|
||||
|
||||
game[ "bots_spawned" ] = true;
|
||||
|
||||
if(getDvar("bot_enemies_extra") == "")
|
||||
setDvar("bot_enemies_extra", 0);
|
||||
if(getDvar("bot_friends_extra") == "")
|
||||
setDvar("bot_friends_extra", 0);
|
||||
|
||||
bot_friends = GetDvarInt( #"bot_friends" );
|
||||
bot_enemies = GetDvarInt( #"bot_enemies" );
|
||||
|
||||
bot_enemies += GetDvarInt("bot_enemies_extra");
|
||||
bot_friends += GetDvarInt("bot_friends_extra");
|
||||
|
||||
bot_wait_for_host();
|
||||
host = GetHostPlayer();
|
||||
|
||||
team = "allies";
|
||||
if(isDefined(host) && isDefined(host.pers[ "team" ]) && (host.pers[ "team" ] == "allies" || host.pers[ "team" ] == "axis"))
|
||||
team = host.pers[ "team" ];
|
||||
|
||||
setDvar("bots_manage_add", bot_enemies + bot_friends - 1);
|
||||
setDvar("bots_manage_fill", bot_enemies + bot_friends);
|
||||
setDvar("bots_manage_fill_mode", 0);
|
||||
setDvar("bots_manage_fill_kick", true);
|
||||
setDvar("bots_manage_fill_spec", false);
|
||||
|
||||
setDvar("bots_team", "custom");
|
||||
|
||||
if (team == "axis")
|
||||
setDvar("bots_team_amount", bot_friends);
|
||||
else
|
||||
setDvar("bots_team_amount", bot_enemies);
|
||||
|
||||
setDvar("bots_team_force", true);
|
||||
setDvar("bots_team_mode", 0);
|
||||
}
|
||||
|
||||
/*
|
||||
Sets the difficulty of the bots
|
||||
*/
|
||||
bot_set_difficulty( difficulty )
|
||||
{
|
||||
if ( difficulty == "fu" )
|
||||
{
|
||||
SetDvar( "sv_botMinDeathTime", "250" );
|
||||
SetDvar( "sv_botMaxDeathTime", "500" );
|
||||
SetDvar( "sv_botMinFireTime", "100" );
|
||||
SetDvar( "sv_botMaxFireTime", "300" );
|
||||
SetDvar( "sv_botYawSpeed", "14" );
|
||||
SetDvar( "sv_botYawSpeedAds", "14" );
|
||||
SetDvar( "sv_botPitchUp", "-5" );
|
||||
SetDvar( "sv_botPitchDown", "10" );
|
||||
SetDvar( "sv_botFov", "160" );
|
||||
SetDvar( "sv_botMinAdsTime", "3000" );
|
||||
SetDvar( "sv_botMaxAdsTime", "5000" );
|
||||
SetDvar( "sv_botMinCrouchTime", "100" );
|
||||
SetDvar( "sv_botMaxCrouchTime", "400" );
|
||||
SetDvar( "sv_botTargetLeadBias", "2" );
|
||||
SetDvar( "sv_botMinReactionTime", "30" );
|
||||
SetDvar( "sv_botMaxReactionTime", "100" );
|
||||
SetDvar( "sv_botStrafeChance", "1" );
|
||||
SetDvar( "sv_botMinStrafeTime", "3000" );
|
||||
SetDvar( "sv_botMaxStrafeTime", "6000" );
|
||||
SetDvar( "scr_help_dist", "512" );
|
||||
SetDvar( "sv_botAllowGrenades", "1" );
|
||||
SetDvar( "sv_botMinGrenadeTime", "1500" );
|
||||
SetDvar( "sv_botMaxGrenadeTime", "4000" );
|
||||
SetDvar( "sv_botSprintDistance", "512" );
|
||||
SetDvar( "sv_botMeleeDist", "80" );
|
||||
}
|
||||
else if ( difficulty == "hard" )
|
||||
{
|
||||
SetDvar( "sv_botMinDeathTime", "250" );
|
||||
SetDvar( "sv_botMaxDeathTime", "500" );
|
||||
SetDvar( "sv_botMinFireTime", "400" );
|
||||
SetDvar( "sv_botMaxFireTime", "600" );
|
||||
SetDvar( "sv_botYawSpeed", "8" );
|
||||
SetDvar( "sv_botYawSpeedAds", "10" );
|
||||
SetDvar( "sv_botPitchUp", "-5" );
|
||||
SetDvar( "sv_botPitchDown", "10" );
|
||||
SetDvar( "sv_botFov", "100" );
|
||||
SetDvar( "sv_botMinAdsTime", "3000" );
|
||||
SetDvar( "sv_botMaxAdsTime", "5000" );
|
||||
SetDvar( "sv_botMinCrouchTime", "100" );
|
||||
SetDvar( "sv_botMaxCrouchTime", "400" );
|
||||
SetDvar( "sv_botTargetLeadBias", "2" );
|
||||
SetDvar( "sv_botMinReactionTime", "400" );
|
||||
SetDvar( "sv_botMaxReactionTime", "700" );
|
||||
SetDvar( "sv_botStrafeChance", "0.9" );
|
||||
SetDvar( "sv_botMinStrafeTime", "3000" );
|
||||
SetDvar( "sv_botMaxStrafeTime", "6000" );
|
||||
SetDvar( "scr_help_dist", "384" );
|
||||
SetDvar( "sv_botAllowGrenades", "1" );
|
||||
SetDvar( "sv_botMinGrenadeTime", "1500" );
|
||||
SetDvar( "sv_botMaxGrenadeTime", "4000" );
|
||||
SetDvar( "sv_botSprintDistance", "512" );
|
||||
SetDvar( "sv_botMeleeDist", "80" );
|
||||
}
|
||||
else if ( difficulty == "easy" )
|
||||
{
|
||||
SetDvar( "sv_botMinDeathTime", "1000" );
|
||||
SetDvar( "sv_botMaxDeathTime", "2000" );
|
||||
SetDvar( "sv_botMinFireTime", "900" );
|
||||
SetDvar( "sv_botMaxFireTime", "1000" );
|
||||
SetDvar( "sv_botYawSpeed", "2" );
|
||||
SetDvar( "sv_botYawSpeedAds", "2.5" );
|
||||
SetDvar( "sv_botPitchUp", "-20" );
|
||||
SetDvar( "sv_botPitchDown", "40" );
|
||||
SetDvar( "sv_botFov", "50" );
|
||||
SetDvar( "sv_botMinAdsTime", "3000" );
|
||||
SetDvar( "sv_botMaxAdsTime", "5000" );
|
||||
SetDvar( "sv_botMinCrouchTime", "4000" );
|
||||
SetDvar( "sv_botMaxCrouchTime", "6000" );
|
||||
SetDvar( "sv_botTargetLeadBias", "8" );
|
||||
SetDvar( "sv_botMinReactionTime", "1200" );
|
||||
SetDvar( "sv_botMaxReactionTime", "1600" );
|
||||
SetDvar( "sv_botStrafeChance", "0.1" );
|
||||
SetDvar( "sv_botMinStrafeTime", "3000" );
|
||||
SetDvar( "sv_botMaxStrafeTime", "6000" );
|
||||
SetDvar( "scr_help_dist", "256" );
|
||||
SetDvar( "sv_botAllowGrenades", "0" );
|
||||
SetDvar( "sv_botSprintDistance", "1024" );
|
||||
SetDvar( "sv_botMeleeDist", "40" );
|
||||
}
|
||||
else // 'normal' difficulty
|
||||
{
|
||||
SetDvar( "sv_botMinDeathTime", "500" );
|
||||
SetDvar( "sv_botMaxDeathTime", "1000" );
|
||||
SetDvar( "sv_botMinFireTime", "600" );
|
||||
SetDvar( "sv_botMaxFireTime", "800" );
|
||||
SetDvar( "sv_botYawSpeed", "4" );
|
||||
SetDvar( "sv_botYawSpeedAds", "5" );
|
||||
SetDvar( "sv_botPitchUp", "-10" );
|
||||
SetDvar( "sv_botPitchDown", "20" );
|
||||
SetDvar( "sv_botFov", "70" );
|
||||
SetDvar( "sv_botMinAdsTime", "3000" );
|
||||
SetDvar( "sv_botMaxAdsTime", "5000" );
|
||||
SetDvar( "sv_botMinCrouchTime", "2000" );
|
||||
SetDvar( "sv_botMaxCrouchTime", "4000" );
|
||||
SetDvar( "sv_botTargetLeadBias", "4" );
|
||||
SetDvar( "sv_botMinReactionTime", "800" );
|
||||
SetDvar( "sv_botMaxReactionTime", "1200" );
|
||||
SetDvar( "sv_botStrafeChance", "0.6" );
|
||||
SetDvar( "sv_botMinStrafeTime", "3000" );
|
||||
SetDvar( "sv_botMaxStrafeTime", "6000" );
|
||||
SetDvar( "scr_help_dist", "256" );
|
||||
SetDvar( "sv_botAllowGrenades", "1" );
|
||||
SetDvar( "sv_botMinGrenadeTime", "1500" );
|
||||
SetDvar( "sv_botMaxGrenadeTime", "4000" );
|
||||
SetDvar( "sv_botSprintDistance", "512" );
|
||||
SetDvar( "sv_botMeleeDist", "80" );
|
||||
difficulty = "normal";
|
||||
}
|
||||
|
||||
if ( level.gameType == "oic" && difficulty == "fu" )
|
||||
{
|
||||
SetDvar( "sv_botMinReactionTime", "400" );
|
||||
SetDvar( "sv_botMaxReactionTime", "500" );
|
||||
SetDvar( "sv_botMinAdsTime", "1000" );
|
||||
SetDvar( "sv_botMaxAdsTime", "2000" );
|
||||
}
|
||||
|
||||
if ( level.gameType == "oic" && ( difficulty == "hard" || difficulty == "fu" ) )
|
||||
{
|
||||
SetDvar( "sv_botSprintDistance", "256" );
|
||||
}
|
||||
|
||||
if (!getDvarInt("bots_play_nade"))
|
||||
SetDvar( "sv_botAllowGrenades", "0" );
|
||||
|
||||
SetDvar( "bot_difficulty", difficulty );
|
||||
SetDvar( "scr_bot_difficulty", difficulty );
|
||||
SetDvar( "splitscreen_botDifficulty", difficulty );
|
||||
}
|
||||
|
||||
/*
|
||||
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.
|
||||
|
||||
Dedis only spawn bots when developer is not 0
|
||||
This makes the dedi unstable and can crash
|
||||
|
||||
Patch the executable to skip the pregame and make it so bots can spawn
|
||||
|
||||
pregame:
|
||||
in the ShouldDoPregame sub:
|
||||
B8 01 00 00 00: mov eax, 1
|
||||
change to: B8 00 00 00 00: mov eax, 0
|
||||
0x4F6C77 in rektmp
|
||||
0x4598A7 in bg
|
||||
|
||||
|
||||
spawnbots:
|
||||
in the SV_AddTestClient sub:
|
||||
0F 85 A4 00 00 00: jnz
|
||||
change to: 0F 84 A4 00 00 00: jz
|
||||
0x6B6180 in rektmp
|
||||
0x4682F0 in bg
|
||||
|
||||
|
||||
allow changing g_antilag dvar:
|
||||
set the byte from 0x40 to 0x00
|
||||
|
||||
0x53B1B2 in rekt
|
||||
0x59B6F2 in bg
|
||||
*/
|
||||
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 isdemoclient())
|
||||
continue;
|
||||
|
||||
if(player is_bot())
|
||||
bots++;
|
||||
else if(!isDefined(player.pers["team"]) || (player.pers["team"] != "axis" && player.pers["team"] != "allies"))
|
||||
spec++;
|
||||
else
|
||||
players++;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
if (!randomInt(999))
|
||||
{
|
||||
setDvar("testclients_doreload", true);
|
||||
wait 0.1;
|
||||
setDvar("testclients_doreload", false);
|
||||
doExtraCheck();
|
||||
}
|
||||
|
||||
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"))
|
||||
{
|
||||
tempBot = PickRandom(getBotArray());
|
||||
if (isDefined(tempBot))
|
||||
kick( tempBot getEntityNumber(), "EXE_PLAYERKICKED" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Adds a bot to the game.
|
||||
*/
|
||||
add_bot()
|
||||
{
|
||||
bot = addtestclient();
|
||||
|
||||
if (isdefined(bot))
|
||||
{
|
||||
bot.pers["isBot"] = true;
|
||||
bot.equipment_enabled = true;
|
||||
bot.pers[ "bot_perk" ] = true;
|
||||
bot.pers["isBotWarfare"] = true;
|
||||
bot thread maps\mp\bots\_bot_script::added();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Gives the bot loadout
|
||||
*/
|
||||
bot_give_loadout()
|
||||
{
|
||||
self maps\mp\bots\_bot_loadout::bot_give_loadout();
|
||||
}
|
||||
|
||||
/*
|
||||
Fired when the bot is damaged
|
||||
*/
|
||||
bot_damage_callback( eAttacker, iDamage, sMeansOfDeath, sWeapon, eInflictor, sHitLoc )
|
||||
{
|
||||
self maps\mp\bots\_bot_script::bot_damage_callback( eAttacker, iDamage, sMeansOfDeath, sWeapon, eInflictor, sHitLoc );
|
||||
}
|
||||
|
||||
/*
|
||||
Bot is idle
|
||||
*/
|
||||
bot_is_idle()
|
||||
{
|
||||
if ( !IsDefined( self ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( !IsAlive( self ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( !self is_bot() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( self inLastStand() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( self HasScriptGoal() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( IsDefined( self GetThreat() ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( self IsRemoteControlling() || self.bot_lock_goal )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if(self UseButtonPressed())
|
||||
return false;
|
||||
|
||||
if(self isPlanting())
|
||||
return false;
|
||||
|
||||
if(self isDefusing())
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
Watch all players grenades
|
||||
*/
|
||||
watch_grenade()
|
||||
{
|
||||
self endon("disconnect");
|
||||
|
||||
self.bot_scrambled = false;
|
||||
for(;;)
|
||||
{
|
||||
self waittill("grenade_fire", g, name);
|
||||
if(name == "scrambler_mp")
|
||||
{
|
||||
g thread watch_scrambler();
|
||||
}
|
||||
else if(name == "nightingale_mp")
|
||||
{
|
||||
self thread watch_decoy(g);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Watch the decoy grenade
|
||||
*/
|
||||
watch_decoy(g)
|
||||
{
|
||||
g.team = self.team;
|
||||
|
||||
level.bot_decoys[level.bot_decoys.size] = g;
|
||||
|
||||
g waittill("death");
|
||||
|
||||
for ( entry = 0; entry < level.bot_decoys.size; entry++ )
|
||||
{
|
||||
if ( level.bot_decoys[entry] == g )
|
||||
{
|
||||
while ( entry < level.bot_decoys.size-1 )
|
||||
{
|
||||
level.bot_decoys[entry] = level.bot_decoys[entry+1];
|
||||
entry++;
|
||||
}
|
||||
level.bot_decoys[entry] = undefined;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Attach a trigger to the scrambler
|
||||
*/
|
||||
watch_scrambler()
|
||||
{
|
||||
trig = spawn( "trigger_radius", self.origin + (0, 0, -1000), 0, 1000, 2000 );
|
||||
|
||||
self scramble_nearby(trig);
|
||||
|
||||
trig delete();
|
||||
}
|
||||
|
||||
/*
|
||||
Watch when players enter the scrambler trigger
|
||||
*/
|
||||
scramble_nearby(trig)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("hacked");
|
||||
|
||||
while(!isDefined(self.owner) || !isDefined(self.owner.team))
|
||||
wait 0.05;
|
||||
|
||||
self.team = self.owner.team;
|
||||
for(;;)
|
||||
{
|
||||
trig waittill("trigger", player);
|
||||
|
||||
if (!isDefined(player) || !isDefined(player.team))
|
||||
continue;
|
||||
|
||||
if(self maps\mp\gametypes\_weaponobjects::isStunned())
|
||||
continue;
|
||||
|
||||
if(isDefined(self.owner) && player == self.owner)
|
||||
continue;
|
||||
|
||||
if(level.teamBased && self.team == player.team)
|
||||
continue;
|
||||
|
||||
player thread scramble_player();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Scramble this player
|
||||
*/
|
||||
scramble_player()
|
||||
{
|
||||
self notify("scramble_nearby");
|
||||
self endon("scramble_nearby");
|
||||
|
||||
self.bot_scrambled = true;
|
||||
wait 0.1;
|
||||
|
||||
if(isDefined(self))
|
||||
self.bot_scrambled = false;
|
||||
}
|
||||
|
||||
/*
|
||||
Watch when a player shoots
|
||||
*/
|
||||
watch_shoot()
|
||||
{
|
||||
self endon("disconnect");
|
||||
|
||||
self.bot_firing = false;
|
||||
for(;;)
|
||||
{
|
||||
self waittill( "weapon_fired" );
|
||||
self thread doFiringThread();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
When a player fires
|
||||
*/
|
||||
doFiringThread()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("weapon_fired");
|
||||
|
||||
self.bot_firing = true;
|
||||
wait 1;
|
||||
self.bot_firing = false;
|
||||
}
|
||||
|
||||
/*
|
||||
Watches the planes
|
||||
*/
|
||||
bot_watch_planes()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
level waittill("uav_update");
|
||||
|
||||
ents = GetEntArray("script_model", "classname");
|
||||
for(i = 0; i < ents.size; i++)
|
||||
{
|
||||
ent = ents[i];
|
||||
|
||||
if(isDefined(ent.bot_plane))
|
||||
continue;
|
||||
|
||||
if(ent.model != level.spyplanemodel)
|
||||
continue;
|
||||
|
||||
thread watch_plane(ent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Watches the plane
|
||||
*/
|
||||
watch_plane(ent)
|
||||
{
|
||||
ent.bot_plane = true;
|
||||
|
||||
level.bot_planes[level.bot_planes.size] = ent;
|
||||
|
||||
ent waittill_any("death", "delete", "leaving");
|
||||
|
||||
for ( entry = 0; entry < level.bot_planes.size; entry++ )
|
||||
{
|
||||
if ( level.bot_planes[entry] == ent )
|
||||
{
|
||||
while ( entry < level.bot_planes.size-1 )
|
||||
{
|
||||
level.bot_planes[entry] = level.bot_planes[entry+1];
|
||||
entry++;
|
||||
}
|
||||
level.bot_planes[entry] = undefined;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Fix xp in sd
|
||||
*/
|
||||
bot_killBoost()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
Fixes sd
|
||||
*/
|
||||
fixGamemodes()
|
||||
{
|
||||
for(i=0;i<19;i++)
|
||||
{
|
||||
if(isDefined(level.bombZones) && level.gametype == "sd")
|
||||
{
|
||||
level.isKillBoosting = ::bot_killBoost;
|
||||
for(i = 0; i < level.bombZones.size; i++)
|
||||
level.bombZones[i].onUse = ::bot_onUsePlantObjectFix;
|
||||
break;
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
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
@ -1,958 +0,0 @@
|
||||
#include maps\mp\_utility;
|
||||
#include maps\mp\gametypes\_hud_util;
|
||||
/*
|
||||
Sabotage
|
||||
|
||||
// ...etc...
|
||||
*/
|
||||
|
||||
/*QUAKED mp_sab_spawn_axis (0.75 0.0 0.5) (-16 -16 0) (16 16 72)
|
||||
Axis players spawn away from enemies and near their team at one of these positions.*/
|
||||
|
||||
/*QUAKED mp_sab_spawn_allies (0.0 0.75 0.5) (-16 -16 0) (16 16 72)
|
||||
Allied players spawn away from enemies and near their team at one of these positions.*/
|
||||
|
||||
/*QUAKED mp_sab_spawn_axis_start (1.0 0.0 0.5) (-16 -16 0) (16 16 72)
|
||||
Axis players spawn away from enemies and near their team at one of these positions at the start of a round.*/
|
||||
|
||||
/*QUAKED mp_sab_spawn_allies_start (0.0 1.0 0.5) (-16 -16 0) (16 16 72)
|
||||
Allied players spawn away from enemies and near their team at one of these positions at the start of a round.*/
|
||||
|
||||
main()
|
||||
{
|
||||
if ( GetDvar( #"mapname") == "mp_background" )
|
||||
return;
|
||||
|
||||
maps\mp\gametypes\_globallogic::init();
|
||||
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
|
||||
maps\mp\gametypes\_globallogic::SetupCallbacks();
|
||||
|
||||
level.teamBased = true;
|
||||
level.overrideTeamScore = true;
|
||||
|
||||
maps\mp\gametypes\_globallogic_utils::registerRoundSwitchDvar( level.gameType, 0, 0, 9 );
|
||||
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( level.gameType, 10, 0, 1440 );
|
||||
maps\mp\gametypes\_globallogic_utils::registerScoreLimitDvar( level.gameType, 0, 0, 500 );
|
||||
maps\mp\gametypes\_globallogic_utils::registerRoundLimitDvar( level.gameType, 1, 0, 10 );
|
||||
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( level.gameType, 0, 0, 10 );
|
||||
maps\mp\gametypes\_globallogic_utils::registerRoundWinLimitDvar( level.gameType, 0, 0, 10 );
|
||||
|
||||
maps\mp\gametypes\_weapons::registerGrenadeLauncherDudDvar( level.gameType, 10, 0, 1440 );
|
||||
maps\mp\gametypes\_weapons::registerThrownGrenadeDudDvar( level.gameType, 0, 0, 1440 );
|
||||
maps\mp\gametypes\_weapons::registerKillstreakDelay( level.gameType, 0, 0, 1440 );
|
||||
|
||||
maps\mp\gametypes\_globallogic::registerFriendlyFireDelay( level.gameType, 15, 0, 1440 );
|
||||
|
||||
level.onStartGameType = ::onStartGameType;
|
||||
level.onSpawnPlayer = ::onSpawnPlayer;
|
||||
level.onSpawnPlayerUnified = ::onSpawnPlayerUnified;
|
||||
level.gamemodeSpawnDvars = ::sab_gamemodeSpawnDvars;
|
||||
level.onRoundEndGame = ::onRoundEndGame;
|
||||
|
||||
if ( !game["tiebreaker"] )
|
||||
{
|
||||
level.onPrecacheGameType = ::onPrecacheGameType;
|
||||
level.onTimeLimit = ::onTimeLimit;
|
||||
level.onDeadEvent = ::onDeadEvent;
|
||||
level.onRoundSwitch = ::onRoundSwitch;
|
||||
level.onPlayerKilled = ::onPlayerKilled;
|
||||
|
||||
level.endGameOnScoreLimit = false;
|
||||
|
||||
game["dialog"]["gametype"] = "sab_start";
|
||||
game["dialog"]["gametype_hardcore"] = "hcsab_start";
|
||||
game["dialog"]["offense_obj"] = "destroy_start";
|
||||
game["dialog"]["defense_obj"] = "destroy_start";
|
||||
game["dialog"]["sudden_death"] = "suddendeath";
|
||||
game["dialog"]["sudden_death_boost"] = "generic_boost";
|
||||
}
|
||||
else
|
||||
{
|
||||
level.onEndGame = ::onEndGame;
|
||||
|
||||
level.endGameOnScoreLimit = false;
|
||||
|
||||
game["dialog"]["gametype"] = "sab_start";
|
||||
game["dialog"]["gametype_hardcore"] = "hcsab_start";
|
||||
game["dialog"]["offense_obj"] = "generic_boost";
|
||||
game["dialog"]["defense_obj"] = "generic_boost";
|
||||
game["dialog"]["sudden_death"] = "suddendeath";
|
||||
game["dialog"]["sudden_death_boost"] = "generic_boost";
|
||||
|
||||
maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( "tb", 1, 1, 1 );
|
||||
maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( "tb", 0, 0, 0 );
|
||||
}
|
||||
|
||||
badtrig = getent( "sab_bomb_defuse_allies", "targetname" );
|
||||
if ( isdefined( badtrig ) )
|
||||
badtrig delete();
|
||||
|
||||
badtrig = getent( "sab_bomb_defuse_axis", "targetname" );
|
||||
if ( isdefined( badtrig ) )
|
||||
badtrig delete();
|
||||
|
||||
level.lastDialogTime = 0;
|
||||
|
||||
// Sets the scoreboard columns and determines with data is sent across the network
|
||||
setscoreboardcolumns( "kills", "deaths", "plants", "defuses" );
|
||||
}
|
||||
|
||||
onPrecacheGameType()
|
||||
{
|
||||
game["bomb_dropped_sound"] = "mp_war_objective_lost";
|
||||
game["bomb_recovered_sound"] = "mp_war_objective_taken";
|
||||
|
||||
precacheShader("waypoint_bomb");
|
||||
precacheShader("waypoint_kill");
|
||||
precacheShader("waypoint_bomb_enemy");
|
||||
precacheShader("waypoint_defend");
|
||||
precacheShader("waypoint_defuse");
|
||||
precacheShader("waypoint_target");
|
||||
precacheShader("compass_waypoint_bomb");
|
||||
precacheShader("compass_waypoint_defend");
|
||||
precacheShader("compass_waypoint_defuse");
|
||||
precacheShader("compass_waypoint_target");
|
||||
precacheShader("hud_suitcase_bomb");
|
||||
|
||||
precacheString(&"MP_EXPLOSIVES_RECOVERED_BY");
|
||||
precacheString(&"MP_EXPLOSIVES_RECOVERED_BY");
|
||||
precacheString(&"MP_EXPLOSIVES_DROPPED_BY");
|
||||
precacheString(&"MP_EXPLOSIVES_PLANTED_BY");
|
||||
precacheString(&"MP_EXPLOSIVES_DEFUSED_BY");
|
||||
precacheString(&"MP_YOU_HAVE_RECOVERED_THE_BOMB");
|
||||
precacheString(&"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES");
|
||||
precacheString(&"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES");
|
||||
precacheString(&"MP_PLANTING_EXPLOSIVE");
|
||||
precacheString(&"MP_DEFUSING_EXPLOSIVE");
|
||||
precacheString(&"MP_TARGET_DESTROYED");
|
||||
precacheString(&"MP_NO_RESPAWN");
|
||||
precacheString(&"MP_TIE_BREAKER");
|
||||
precacheString(&"MP_NO_RESPAWN");
|
||||
precacheString(&"MP_SUDDEN_DEATH");
|
||||
}
|
||||
|
||||
|
||||
onRoundSwitch()
|
||||
{
|
||||
if ( !isdefined( game["switchedsides"] ) )
|
||||
game["switchedsides"] = false;
|
||||
|
||||
if ( game["teamScores"]["allies"] == level.scorelimit - 1 && game["teamScores"]["axis"] == level.scorelimit - 1 )
|
||||
{
|
||||
level.halftimeType = "overtime";
|
||||
level.halftimeSubCaption = &"MP_TIE_BREAKER";
|
||||
game["tiebreaker"] = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
level.halftimeType = "halftime";
|
||||
game["switchedsides"] = !game["switchedsides"];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
onStartGameType()
|
||||
{
|
||||
if ( !isdefined( game["switchedsides"] ) )
|
||||
game["switchedsides"] = false;
|
||||
|
||||
setClientNameMode("auto_change");
|
||||
|
||||
game["strings"]["target_destroyed"] = &"MP_TARGET_DESTROYED";
|
||||
|
||||
if ( !game["tiebreaker"] )
|
||||
{
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_SAB" );
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_SAB" );
|
||||
|
||||
if ( level.splitscreen )
|
||||
{
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_SAB" );
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_SAB" );
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_SAB_SCORE" );
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_SAB_SCORE" );
|
||||
}
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_SAB_HINT" );
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_SAB_HINT" );
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_TDM" );
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_TDM" );
|
||||
|
||||
if ( level.splitscreen )
|
||||
{
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_TDM" );
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_TDM" );
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_TDM_SCORE" );
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_TDM_SCORE" );
|
||||
}
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_TDM_HINT" );
|
||||
maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_TDM_HINT" );
|
||||
}
|
||||
|
||||
level.spawnMins = ( 0, 0, 0 );
|
||||
level.spawnMaxs = ( 0, 0, 0 );
|
||||
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sab_spawn_allies_start" );
|
||||
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_sab_spawn_axis_start" );
|
||||
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_sab_spawn_allies" );
|
||||
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_sab_spawn_axis" );
|
||||
maps\mp\gametypes\_spawning::updateAllSpawnPoints();
|
||||
|
||||
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
|
||||
setMapCenter( level.mapCenter );
|
||||
|
||||
spawnpoint = maps\mp\gametypes\_spawnlogic::getRandomIntermissionPoint();
|
||||
setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
|
||||
|
||||
level.spawn_axis = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_sab_spawn_axis" );
|
||||
level.spawn_allies = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_sab_spawn_allies" );
|
||||
level.spawn_axis_start = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_sab_spawn_axis_start" );
|
||||
level.spawn_allies_start = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_sab_spawn_allies_start" );
|
||||
|
||||
maps\mp\gametypes\_rank::registerScoreInfo( "plant", 500 );
|
||||
maps\mp\gametypes\_rank::registerScoreInfo( "defuse", 500 );
|
||||
|
||||
allowed[0] = "sab";
|
||||
maps\mp\gametypes\_gameobjects::main(allowed);
|
||||
|
||||
// now that the game objects have been deleted place the influencers
|
||||
maps\mp\gametypes\_spawning::create_map_placed_influencers();
|
||||
|
||||
thread updateGametypeDvars();
|
||||
|
||||
thread sabotage();
|
||||
}
|
||||
|
||||
|
||||
onTimeLimit()
|
||||
{
|
||||
if ( level.inOvertime )
|
||||
return;
|
||||
|
||||
thread onOvertime();
|
||||
}
|
||||
|
||||
|
||||
onOvertime()
|
||||
{
|
||||
level endon ( "game_ended" );
|
||||
|
||||
level.timeLimitOverride = true;
|
||||
level.inOvertime = true;
|
||||
maps\mp\gametypes\_globallogic_audio::leaderDialog( "sudden_death" );
|
||||
maps\mp\gametypes\_globallogic_audio::leaderDialog( "sudden_death_boost" );
|
||||
for ( index = 0; index < level.players.size; index++ )
|
||||
{
|
||||
level.players[index] notify("force_spawn");
|
||||
level.players[index] thread maps\mp\gametypes\_hud_message::oldNotifyMessage( &"MP_SUDDEN_DEATH", &"MP_NO_RESPAWN", undefined, (1, 0, 0), "mp_last_stand" );
|
||||
|
||||
level.players[index] setClientUIVisibilityFlag( "g_compassShowEnemies", 1 );
|
||||
}
|
||||
|
||||
SetMatchTalkFlag( "DeadChatWithDead", 1 );
|
||||
SetMatchTalkFlag( "DeadChatWithTeam", 0 );
|
||||
SetMatchTalkFlag( "DeadHearTeamLiving", 0 );
|
||||
SetMatchTalkFlag( "DeadHearAllLiving", 0 );
|
||||
SetMatchTalkFlag( "EveryoneHearsEveryone", 0 );
|
||||
|
||||
waitTime = 0;
|
||||
while ( waitTime < 90 )
|
||||
{
|
||||
if ( !level.bombPlanted )
|
||||
{
|
||||
waitTime += 1;
|
||||
setGameEndTime( getTime() + ((90-waitTime)*1000) );
|
||||
}
|
||||
wait ( 1.0 );
|
||||
}
|
||||
|
||||
thread maps\mp\gametypes\_globallogic::endGame( "tie", game["strings"]["tie"] );
|
||||
}
|
||||
|
||||
|
||||
onDeadEvent( team )
|
||||
{
|
||||
if ( level.bombExploded )
|
||||
return;
|
||||
|
||||
if ( team == "all" )
|
||||
{
|
||||
if ( level.bombPlanted )
|
||||
{
|
||||
[[level._setTeamScore]]( level.bombPlantedBy, [[level._getTeamScore]]( level.bombPlantedBy ) + 1 );
|
||||
thread maps\mp\gametypes\_globallogic::endGame( level.bombPlantedBy, game["strings"][level.bombPlantedBy+"_mission_accomplished"] );
|
||||
}
|
||||
else
|
||||
{
|
||||
thread maps\mp\gametypes\_globallogic::endGame( "tie", game["strings"]["tie"] );
|
||||
}
|
||||
}
|
||||
else if ( level.bombPlanted )
|
||||
{
|
||||
if ( team == level.bombPlantedBy )
|
||||
{
|
||||
level.plantingTeamDead = true;
|
||||
return;
|
||||
}
|
||||
|
||||
[[level._setTeamScore]]( level.bombPlantedBy, [[level._getTeamScore]]( level.bombPlantedBy ) + 1 );
|
||||
thread maps\mp\gametypes\_globallogic::endGame( level.bombPlantedBy, game["strings"][level.otherTeam[level.bombPlantedBy]+"_eliminated"] );
|
||||
}
|
||||
else
|
||||
{
|
||||
[[level._setTeamScore]]( level.otherTeam[team], [[level._getTeamScore]]( level.otherTeam[team] ) + 1 );
|
||||
thread maps\mp\gametypes\_globallogic::endGame( level.otherTeam[team], game["strings"][team+"_eliminated"] );
|
||||
}
|
||||
}
|
||||
|
||||
onSpawnPlayerUnified()
|
||||
{
|
||||
self.isPlanting = false;
|
||||
self.isDefusing = false;
|
||||
self.isBombCarrier = false;
|
||||
|
||||
if ( game["tiebreaker"] )
|
||||
{
|
||||
self thread maps\mp\gametypes\_hud_message::oldNotifyMessage( &"MP_TIE_BREAKER", &"MP_NO_RESPAWN", undefined, (1, 0, 0), "mp_last_stand" );
|
||||
|
||||
hintMessage = maps\mp\gametypes\_globallogic_ui::getObjectiveHintText( self.pers["team"] );
|
||||
if ( isDefined( hintMessage ) )
|
||||
self DisplayGameModeMessage( hintMessage, "uin_alert_slideout" );
|
||||
|
||||
self setClientUIVisibilityFlag( "g_compassShowEnemies", 1 );
|
||||
|
||||
// this is being redundantly set everytime a player spawns
|
||||
// need to move this to a once only for eveyone when tiebreaker round
|
||||
// starts
|
||||
SetMatchTalkFlag( "DeadChatWithDead", 1 );
|
||||
SetMatchTalkFlag( "DeadChatWithTeam", 0 );
|
||||
SetMatchTalkFlag( "DeadHearTeamLiving", 0 );
|
||||
SetMatchTalkFlag( "DeadHearAllLiving", 0 );
|
||||
SetMatchTalkFlag( "EveryoneHearsEveryone", 0 );
|
||||
}
|
||||
|
||||
maps\mp\gametypes\_spawning::onSpawnPlayer_Unified();
|
||||
}
|
||||
|
||||
|
||||
onSpawnPlayer()
|
||||
{
|
||||
self.isPlanting = false;
|
||||
self.isDefusing = false;
|
||||
self.isBombCarrier = false;
|
||||
|
||||
spawnteam = self.pers["team"];
|
||||
if ( game["switchedsides"] )
|
||||
spawnteam = getOtherTeam( spawnteam );
|
||||
|
||||
if ( level.useStartSpawns )
|
||||
{
|
||||
if (spawnteam == "axis")
|
||||
spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(level.spawn_axis_start);
|
||||
else
|
||||
spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random(level.spawn_allies_start);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (spawnteam == "axis")
|
||||
spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam(level.spawn_axis);
|
||||
else
|
||||
spawnpoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam(level.spawn_allies);
|
||||
}
|
||||
|
||||
if ( game["tiebreaker"] )
|
||||
{
|
||||
self thread maps\mp\gametypes\_hud_message::oldNotifyMessage( &"MP_TIE_BREAKER", &"MP_NO_RESPAWN", undefined, (1, 0, 0), "mp_last_stand" );
|
||||
|
||||
hintMessage = maps\mp\gametypes\_globallogic_ui::getObjectiveHintText( self.pers["team"] );
|
||||
if ( isDefined( hintMessage ) )
|
||||
self DisplayGameModeMessage( hintMessage, "uin_alert_slideout" );
|
||||
|
||||
self setClientUIVisibilityFlag( "g_compassShowEnemies", 1 );
|
||||
// this is being redundantly set everytime a player spawns
|
||||
// need to move this to a once only for eveyone when tiebreaker round
|
||||
// starts
|
||||
SetMatchTalkFlag( "DeadChatWithDead", 1 );
|
||||
SetMatchTalkFlag( "DeadChatWithTeam", 0 );
|
||||
SetMatchTalkFlag( "DeadHearTeamLiving", 0 );
|
||||
SetMatchTalkFlag( "DeadHearAllLiving", 0 );
|
||||
SetMatchTalkFlag( "EveryoneHearsEveryone", 0 );
|
||||
}
|
||||
|
||||
assert( isDefined(spawnpoint) );
|
||||
|
||||
self spawn( spawnpoint.origin, spawnpoint.angles, "sab" );
|
||||
}
|
||||
|
||||
|
||||
updateGametypeDvars()
|
||||
{
|
||||
level.plantTime = dvarFloatValue( "planttime", 5, 0, 20 );
|
||||
level.defuseTime = dvarFloatValue( "defusetime", 5, 0, 20 );
|
||||
level.bombTimer = dvarFloatValue( "bombtimer", 45, 1, 300 );
|
||||
level.hotPotato = dvarIntValue( "hotpotato", 1, 0, 1 );
|
||||
}
|
||||
|
||||
|
||||
sabotage()
|
||||
{
|
||||
level.bombPlanted = false;
|
||||
level.bombExploded = false;
|
||||
|
||||
level._effect["bombexplosion"] = loadfx("maps/mp_maps/fx_mp_exp_bomb");
|
||||
|
||||
trigger = getEnt( "sab_bomb_pickup_trig", "targetname" );
|
||||
if ( !isDefined( trigger ) )
|
||||
{
|
||||
error( "No sab_bomb_pickup_trig trigger found in map." );
|
||||
return;
|
||||
}
|
||||
|
||||
visuals[0] = getEnt( "sab_bomb", "targetname" );
|
||||
if ( !isDefined( visuals[0] ) )
|
||||
{
|
||||
error( "No sab_bomb script_model found in map." );
|
||||
return;
|
||||
}
|
||||
|
||||
//precacheModel( "t5_weapon_briefcase_world" );
|
||||
//visuals[0] setModel( "t5_weapon_briefcase_world" );
|
||||
level.sabBomb = maps\mp\gametypes\_gameobjects::createCarryObject( "neutral", trigger, visuals, (0,0,32) );
|
||||
level.sabBomb maps\mp\gametypes\_gameobjects::allowCarry( "any" );
|
||||
level.sabBomb maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_bomb" );
|
||||
level.sabBomb maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_bomb" );
|
||||
level.sabBomb maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_bomb" );
|
||||
level.sabBomb maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" );
|
||||
level.sabBomb maps\mp\gametypes\_gameobjects::setCarryIcon( "hud_suitcase_bomb" );
|
||||
level.sabBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
|
||||
level.sabBomb.objIDPingEnemy = true;
|
||||
level.sabBomb.onPickup = ::onPickup;
|
||||
level.sabBomb.onDrop = ::onDrop;
|
||||
level.sabBomb.allowWeapons = true;
|
||||
level.sabBomb.objPoints["allies"].archived = true;
|
||||
level.sabBomb.objPoints["axis"].archived = true;
|
||||
level.sabBomb.autoResetTime = 60.0;
|
||||
|
||||
if ( !isDefined( getEnt( "sab_bomb_axis", "targetname" ) ) )
|
||||
{
|
||||
error("No sab_bomb_axis trigger found in map.");
|
||||
return;
|
||||
}
|
||||
if ( !isDefined( getEnt( "sab_bomb_allies", "targetname" ) ) )
|
||||
{
|
||||
error("No sab_bomb_allies trigger found in map.");
|
||||
return;
|
||||
}
|
||||
|
||||
if ( game["switchedsides"] )
|
||||
{
|
||||
level.bombZones["allies"] = createBombZone( "allies", getEnt( "sab_bomb_axis", "targetname" ) );
|
||||
level.bombZones["axis"] = createBombZone( "axis", getEnt( "sab_bomb_allies", "targetname" ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
level.bombZones["allies"] = createBombZone( "allies", getEnt( "sab_bomb_allies", "targetname" ) );
|
||||
level.bombZones["axis"] = createBombZone( "axis", getEnt( "sab_bomb_axis", "targetname" ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
createBombZone( team, trigger )
|
||||
{
|
||||
visuals = getEntArray( trigger.target, "targetname" );
|
||||
|
||||
bombZone = maps\mp\gametypes\_gameobjects::createUseObject( team, trigger, visuals, (0,0,64) );
|
||||
bombZone resetBombsite();
|
||||
bombZone.onUse = ::onUse;
|
||||
bombZone.onBeginUse = ::onBeginUse;
|
||||
bombZone.onEndUse = ::onEndUse;
|
||||
bombZone.onCantUse = ::onCantUse;
|
||||
bombZone.useWeapon = "briefcase_bomb_mp";
|
||||
bombZone.visuals[0].killCamEnt = spawn( "script_model", bombZone.visuals[0].origin + (0,0,128) );
|
||||
|
||||
for ( i = 0; i < visuals.size; i++ )
|
||||
{
|
||||
if ( isDefined( visuals[i].script_exploder ) )
|
||||
{
|
||||
bombZone.exploderIndex = visuals[i].script_exploder;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return bombZone;
|
||||
}
|
||||
|
||||
|
||||
onBeginUse( player )
|
||||
{
|
||||
// planted the bomb
|
||||
if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) )
|
||||
{
|
||||
player.isPlanting = true;
|
||||
player thread maps\mp\gametypes\_battlechatter_mp::gametypeSpecificBattleChatter( "sd_friendlyplant", player.pers["team"] );
|
||||
}
|
||||
else
|
||||
{
|
||||
player.isDefusing = true;
|
||||
player thread maps\mp\gametypes\_battlechatter_mp::gametypeSpecificBattleChatter( "sd_enemyplant", player.pers["team"] );
|
||||
}
|
||||
|
||||
player playSound( "fly_bomb_raise_plr" );
|
||||
}
|
||||
|
||||
onEndUse( team, player, result )
|
||||
{
|
||||
if ( !isAlive( player ) )
|
||||
return;
|
||||
|
||||
player.isPlanting = false;
|
||||
player.isDefusing = false;
|
||||
player notify( "event_ended" );
|
||||
}
|
||||
|
||||
|
||||
onPickup( player )
|
||||
{
|
||||
level notify ( "bomb_picked_up" );
|
||||
|
||||
self.autoResetTime = 60.0;
|
||||
|
||||
level.useStartSpawns = false;
|
||||
|
||||
team = player.pers["team"];
|
||||
|
||||
if ( team == "allies" )
|
||||
otherTeam = "axis";
|
||||
else
|
||||
otherTeam = "allies";
|
||||
|
||||
//player iPrintLnBold( &"MP_YOU_HAVE_RECOVERED_THE_BOMB" );
|
||||
player playLocalSound( "mp_suitcase_pickup" );
|
||||
player logString( "bomb taken" );
|
||||
|
||||
excludeList[0] = player;
|
||||
|
||||
if( getTime() - level.lastDialogTime > 10000 )
|
||||
{
|
||||
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_acquired", team );
|
||||
player maps\mp\gametypes\_globallogic_audio::leaderDialogOnPlayer( "obj_destroy", "bomb" );
|
||||
|
||||
|
||||
if ( !level.splitscreen )
|
||||
{
|
||||
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_taken", otherTeam );
|
||||
maps\mp\gametypes\_globallogic_audio::leaderDialog( "obj_defend", otherTeam );
|
||||
}
|
||||
|
||||
level.lastDialogTime = getTime();
|
||||
}
|
||||
player.isBombCarrier = true;
|
||||
|
||||
player maps\mp\gametypes\_persistence::statAddWithGameType( "PICKUPS", 1 );
|
||||
|
||||
|
||||
// recovered the bomb before abandonment timer elapsed
|
||||
if ( team == self maps\mp\gametypes\_gameobjects::getOwnerTeam() )
|
||||
{
|
||||
printOnTeamArg( &"MP_EXPLOSIVES_RECOVERED_BY", team, player );
|
||||
playSoundOnPlayers( game["bomb_recovered_sound"], team );
|
||||
}
|
||||
else
|
||||
{
|
||||
printOnTeamArg( &"MP_EXPLOSIVES_RECOVERED_BY", team, player );
|
||||
// printOnTeamArg( &"MP_EXPLOSIVES_RECOVERED_BY", otherTeam, &"MP_THE_ENEMY" );
|
||||
playSoundOnPlayers( game["bomb_recovered_sound"] );
|
||||
}
|
||||
|
||||
self maps\mp\gametypes\_gameobjects::setOwnerTeam( team );
|
||||
self maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
|
||||
self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_target" );
|
||||
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_kill" );
|
||||
self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" );
|
||||
self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" );
|
||||
|
||||
level.bombZones[team] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
|
||||
level.bombZones[otherTeam] maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
|
||||
|
||||
level.bombZones[otherTeam].trigger SetInvisibleToAll();
|
||||
level.bombZones[otherTeam].trigger SetVisibleToPlayer( player );
|
||||
}
|
||||
|
||||
|
||||
onDrop( player )
|
||||
{
|
||||
if ( level.bombPlanted )
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( isDefined( player ) )
|
||||
printOnTeamArg( &"MP_EXPLOSIVES_DROPPED_BY", self maps\mp\gametypes\_gameobjects::getOwnerTeam(), player );
|
||||
// else
|
||||
// printOnTeamArg( &"MP_EXPLOSIVES_DROPPED_BY", self maps\mp\gametypes\_gameobjects::getOwnerTeam(), &"MP_YOUR_TEAM" );
|
||||
|
||||
playSoundOnPlayers( game["bomb_dropped_sound"], self maps\mp\gametypes\_gameobjects::getOwnerTeam() );
|
||||
if ( isDefined( player ) )
|
||||
player logString( "bomb dropped" );
|
||||
else
|
||||
logString( "bomb dropped" );
|
||||
|
||||
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_lost", self maps\mp\gametypes\_gameobjects::getOwnerTeam() );
|
||||
|
||||
player notify( "event_ended" );
|
||||
|
||||
level.bombZones["axis"].trigger SetInvisibleToAll();
|
||||
level.bombZones["allies"].trigger SetInvisibleToAll();
|
||||
|
||||
thread abandonmentThink( 0.0 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
abandonmentThink( delay )
|
||||
{
|
||||
level endon ( "bomb_picked_up" );
|
||||
|
||||
wait ( delay );
|
||||
|
||||
if ( isDefined( self.carrier ) )
|
||||
return;
|
||||
|
||||
if ( self maps\mp\gametypes\_gameobjects::getOwnerTeam() == "allies" )
|
||||
otherTeam = "axis";
|
||||
else
|
||||
otherTeam = "allies";
|
||||
|
||||
// printOnTeamArg( &"MP_EXPLOSIVES_DROPPED_BY", otherTeam, &"MP_THE_ENEMY" );
|
||||
playSoundOnPlayers( game["bomb_dropped_sound"], otherTeam );
|
||||
|
||||
self maps\mp\gametypes\_gameobjects::setOwnerTeam( "neutral" );
|
||||
self maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
|
||||
self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_bomb" );
|
||||
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_bomb" );
|
||||
self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_bomb" );
|
||||
self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_bomb" );
|
||||
|
||||
level.bombZones["allies"] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
|
||||
level.bombZones["axis"] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
|
||||
}
|
||||
|
||||
|
||||
onUse( player )
|
||||
{
|
||||
team = player.pers["team"];
|
||||
otherTeam = level.otherTeam[team];
|
||||
// planted the bomb
|
||||
if ( !self maps\mp\gametypes\_gameobjects::isFriendlyTeam( player.pers["team"] ) )
|
||||
{
|
||||
player notify ( "bomb_planted" );
|
||||
// removed old playsound entry CDC 2/18/10
|
||||
// player playSound( "mpl_sab_bomb_plant" );
|
||||
player logString( "bomb planted" );
|
||||
|
||||
if( isdefined(player.pers["plants"]) )
|
||||
{
|
||||
player.pers["plants"]++;
|
||||
player.plants = player.pers["plants"];
|
||||
}
|
||||
|
||||
player maps\mp\_medals::saboteur();
|
||||
|
||||
player maps\mp\gametypes\_persistence::statAddWithGameType( "PLANTS", 1 );
|
||||
|
||||
level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_PLANTED_BY", player );
|
||||
|
||||
//thread playSoundOnPlayers( "mus_sab_planted"+"_"+level.teamPostfix[team] );
|
||||
// Play Action music
|
||||
//maps\mp\_music::setmusicstate( "ACTION" );
|
||||
|
||||
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_planted", team );
|
||||
|
||||
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_planted", otherTeam );
|
||||
|
||||
maps\mp\gametypes\_globallogic_score::givePlayerScore( "plant", player );
|
||||
//player thread [[level.onXPEvent]]( "plant" );
|
||||
|
||||
level thread bombPlanted( self, player.pers["team"] );
|
||||
|
||||
level.bombOwner = player;
|
||||
|
||||
player.isBombCarrier = false;
|
||||
|
||||
// self.keyObject maps\mp\gametypes\_gameobjects::disableObject();
|
||||
level.sabBomb.autoResetTime = undefined;
|
||||
level.sabBomb maps\mp\gametypes\_gameobjects::allowCarry( "none" );
|
||||
level.sabBomb maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
|
||||
level.sabBomb maps\mp\gametypes\_gameobjects::setDropped();
|
||||
self.useWeapon = "briefcase_bomb_defuse_mp";
|
||||
|
||||
self setUpForDefusing();
|
||||
}
|
||||
else // defused the bomb
|
||||
{
|
||||
player notify ( "bomb_defused" );
|
||||
player logString( "bomb defused" );
|
||||
|
||||
if( isdefined(player.pers["defuses"]) )
|
||||
{
|
||||
player.pers["defuses"]++;
|
||||
player.defuses = player.pers["defuses"];
|
||||
}
|
||||
|
||||
player maps\mp\_medals::hero();
|
||||
|
||||
player maps\mp\gametypes\_persistence::statAddWithGameType( "DEFUSES", 1 );
|
||||
|
||||
level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_DEFUSED_BY", player );
|
||||
//thread playSoundOnPlayers( "mus_sab_defused"+"_"+level.teamPostfix[team] );
|
||||
maps\mp\gametypes\_globallogic_audio::set_music_on_team( "UNDERSCORE", "both", true );
|
||||
|
||||
maps\mp\gametypes\_globallogic_audio::leaderDialog( "bomb_defused" );
|
||||
|
||||
maps\mp\gametypes\_globallogic_score::givePlayerScore( "defuse", player );
|
||||
//player thread [[level.onXPEvent]]( "defuse" );
|
||||
|
||||
level thread bombDefused( self );
|
||||
|
||||
if ( level.inOverTime && isDefined( level.plantingTeamDead ) )
|
||||
{
|
||||
thread maps\mp\gametypes\_globallogic::endGame( player.pers["team"], game["strings"][level.bombPlantedBy+"_eliminated"] );
|
||||
return;
|
||||
}
|
||||
|
||||
self resetBombsite();
|
||||
|
||||
level.sabBomb maps\mp\gametypes\_gameobjects::allowCarry( "any" );
|
||||
level.sabBomb maps\mp\gametypes\_gameobjects::setPickedUp( player );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
onCantUse( player )
|
||||
{
|
||||
player iPrintLnBold( &"MP_CANT_PLANT_WITHOUT_BOMB" );
|
||||
}
|
||||
|
||||
|
||||
bombPlanted( destroyedObj, team )
|
||||
{
|
||||
game["challenge"][team]["plantedBomb"] = true;
|
||||
maps\mp\gametypes\_globallogic_utils::pauseTimer();
|
||||
level.bombPlanted = true;
|
||||
level.bombPlantedBy = team;
|
||||
level.timeLimitOverride = true;
|
||||
setMatchFlag( "bomb_timer", 1 );
|
||||
|
||||
// communicate timer information to menus
|
||||
setGameEndTime( int( getTime() + (level.bombTimer * 1000) ) );
|
||||
|
||||
destroyedObj.visuals[0] thread maps\mp\gametypes\_globallogic_utils::playTickingSound( "mpl_sab_ui_suitcasebomb_timer" );
|
||||
|
||||
starttime = gettime();
|
||||
bombTimerWait();
|
||||
|
||||
setMatchFlag( "bomb_timer", 0 );
|
||||
destroyedObj.visuals[0] maps\mp\gametypes\_globallogic_utils::stopTickingSound();
|
||||
|
||||
if ( !level.bombPlanted )
|
||||
{
|
||||
if ( level.hotPotato )
|
||||
{
|
||||
timePassed = (gettime() - starttime) / 1000;
|
||||
level.bombTimer -= timePassed;
|
||||
}
|
||||
return;
|
||||
}
|
||||
/*
|
||||
for ( index = 0; index < level.players.size; index++ )
|
||||
{
|
||||
player = level.players[index];
|
||||
if ( player.pers["team"] == team )
|
||||
player thread maps\mp\gametypes\_hud_message::oldNotifyMessage( "Your team scored!", undefined, undefined, (0, 1, 0) );
|
||||
else if ( player.pers["team"] == level.otherTeam[team] )
|
||||
player thread maps\mp\gametypes\_hud_message::oldNotifyMessage( "Enemy team scored!", undefined, undefined, (1, 0, 0) );
|
||||
}
|
||||
*/
|
||||
explosionOrigin = level.sabBomb.visuals[0].origin+(0,0,12);
|
||||
level.bombExploded = true;
|
||||
|
||||
|
||||
if ( isdefined( level.bombowner ) )
|
||||
{
|
||||
destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, level.bombowner, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
|
||||
level thread maps\mp\_popups::DisplayTeamMessageToAll( &"MP_EXPLOSIVES_BLOWUP_BY", level.bombowner );
|
||||
level.bombowner maps\mp\_medals::bomber();
|
||||
|
||||
level.bombowner maps\mp\gametypes\_persistence::statAddWithGameType( "DESTRUCTIONS", 1 );
|
||||
|
||||
}
|
||||
else
|
||||
destroyedObj.visuals[0] radiusDamage( explosionOrigin, 512, 200, 20, undefined, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
|
||||
|
||||
rot = randomfloat(360);
|
||||
explosionEffect = spawnFx( level._effect["bombexplosion"], explosionOrigin + (0,0,50), (0,0,1), (cos(rot),sin(rot),0) );
|
||||
triggerFx( explosionEffect );
|
||||
|
||||
thread playSoundinSpace( "mpl_sab_exp_suitcase_bomb_main", explosionOrigin );
|
||||
|
||||
if ( isDefined( destroyedObj.exploderIndex ) )
|
||||
exploder( destroyedObj.exploderIndex );
|
||||
|
||||
[[level._setTeamScore]]( team, [[level._getTeamScore]]( team ) + 1 );
|
||||
|
||||
setGameEndTime( 0 );
|
||||
|
||||
level.bombZones["allies"] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
|
||||
level.bombZones["axis"] maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
|
||||
wait 3;
|
||||
|
||||
// end the round without resetting the timer
|
||||
thread maps\mp\gametypes\_globallogic::endGame( team, game["strings"]["target_destroyed"] );
|
||||
}
|
||||
|
||||
bombTimerWait()
|
||||
{
|
||||
level endon("bomb_defused");
|
||||
maps\mp\gametypes\_hostmigration::waitLongDurationWithGameEndTimeUpdate( level.bombTimer );
|
||||
}
|
||||
|
||||
|
||||
resetBombsite()
|
||||
{
|
||||
self maps\mp\gametypes\_gameobjects::allowUse( "enemy" );
|
||||
self maps\mp\gametypes\_gameobjects::setUseTime( level.plantTime );
|
||||
self maps\mp\gametypes\_gameobjects::setUseText( &"MP_PLANTING_EXPLOSIVE" );
|
||||
self maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES" );
|
||||
self maps\mp\gametypes\_gameobjects::setKeyObject( level.sabBomb );
|
||||
self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" );
|
||||
self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" );
|
||||
self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_target" );
|
||||
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_target" );
|
||||
self maps\mp\gametypes\_gameobjects::setVisibleTeam( "none" );
|
||||
self.trigger SetInvisibleToAll();
|
||||
self.useWeapon = "briefcase_bomb_mp";
|
||||
}
|
||||
|
||||
setUpForDefusing()
|
||||
{
|
||||
self maps\mp\gametypes\_gameobjects::allowUse( "friendly" );
|
||||
self maps\mp\gametypes\_gameobjects::setUseTime( level.defuseTime );
|
||||
self maps\mp\gametypes\_gameobjects::setUseText( &"MP_DEFUSING_EXPLOSIVE" );
|
||||
self maps\mp\gametypes\_gameobjects::setUseHintText( &"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES" );
|
||||
self maps\mp\gametypes\_gameobjects::setKeyObject( undefined );
|
||||
self maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defuse" );
|
||||
self maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defuse" );
|
||||
self maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_defend" );
|
||||
self maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_defend" );
|
||||
self maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
|
||||
self.trigger SetVisibleToAll();
|
||||
}
|
||||
|
||||
bombDefused( object )
|
||||
{
|
||||
setMatchFlag( "bomb_timer", 0 );
|
||||
maps\mp\gametypes\_globallogic_utils::resumeTimer();
|
||||
level.bombPlanted = false;
|
||||
if ( !level.inOvertime )
|
||||
level.timeLimitOverride = false;
|
||||
|
||||
level notify("bomb_defused");
|
||||
}
|
||||
|
||||
onPlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration)
|
||||
{
|
||||
inBombZone = false;
|
||||
inBombZoneTeam = "none";
|
||||
|
||||
if ( isdefined( sWeapon ) && maps\mp\gametypes\_hardpoints::isKillstreakWeapon( sWeapon ) )
|
||||
return;
|
||||
|
||||
if ( isdefined( level.bombZones["allies"] ) )
|
||||
{
|
||||
dist = Distance2d(self.origin, level.bombZones["allies"].curorigin);
|
||||
if ( dist < level.defaultOffenseRadius )
|
||||
{
|
||||
inBombZoneTeam = "allies";
|
||||
inBombZone = true;
|
||||
}
|
||||
}
|
||||
if ( isdefined( level.bombZones["axis"] ) )
|
||||
{
|
||||
dist = Distance2d(self.origin, level.bombZones["axis"].curorigin);
|
||||
if ( dist < level.defaultOffenseRadius )
|
||||
{
|
||||
inBombZoneTeam = "axis";
|
||||
inBombZone = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ( inBombZone && isPlayer( attacker ) && attacker.pers["team"] != self.pers["team"] )
|
||||
{
|
||||
if ( inBombZoneTeam == self.pers["team"] )
|
||||
{
|
||||
attacker maps\mp\_medals::offense( sWeapon );
|
||||
attacker maps\mp\gametypes\_persistence::statAddWithGameType( "OFFENDS", 1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( isdefined(attacker.pers["defends"]) )
|
||||
{
|
||||
attacker.pers["defends"]++;
|
||||
attacker.defends = attacker.pers["defends"];
|
||||
}
|
||||
|
||||
attacker maps\mp\_medals::defense( sWeapon );
|
||||
attacker maps\mp\gametypes\_persistence::statAddWithGameType( "DEFENDS", 1 );
|
||||
}
|
||||
}
|
||||
|
||||
if ( isPlayer( attacker ) && attacker.pers["team"] != self.pers["team"] && isdefined( self.isBombCarrier ) && self.isBombCarrier == true )
|
||||
attacker maps\mp\_challenges::killedBombCarrier();
|
||||
}
|
||||
|
||||
onEndGame( winningTeam )
|
||||
{
|
||||
if ( isdefined( winningTeam ) && (winningTeam == "allies" || winningTeam == "axis") )
|
||||
[[level._setTeamScore]]( winningTeam, [[level._getTeamScore]]( winningTeam ) + 1 );
|
||||
}
|
||||
|
||||
onRoundEndGame( roundWinner )
|
||||
{
|
||||
if ( game["roundswon"]["allies"] == game["roundswon"]["axis"] )
|
||||
winner = "tie";
|
||||
else if ( game["roundswon"]["axis"] > game["roundswon"]["allies"] )
|
||||
winner = "axis";
|
||||
else
|
||||
winner = "allies";
|
||||
|
||||
return winner;
|
||||
}
|
||||
|
||||
sab_gamemodeSpawnDvars(reset_dvars)
|
||||
{
|
||||
ss = level.spawnsystem;
|
||||
|
||||
// sabotage: influencer around friendly base
|
||||
ss.sab_friendly_base_influencer_score = set_dvar_float_if_unset("scr_spawn_sab_friendly_base_influencer_score", "100", reset_dvars);
|
||||
ss.sab_friendly_base_influencer_score_curve = set_dvar_if_unset("scr_spawn_sab_friendly_base_influencer_score_curve", "constant", reset_dvars);
|
||||
ss.sab_friendly_base_influencer_radius = set_dvar_float_if_unset("scr_spawn_sab_friendly_base_influencer_radius", "" + 15.0*get_player_height(), reset_dvars);
|
||||
|
||||
// sabotage: influencer around enemy base
|
||||
ss.sab_enemy_base_influencer_score = set_dvar_float_if_unset("scr_spawn_sab_enemy_base_influencer_score", "-500", reset_dvars);
|
||||
ss.sab_enemy_base_influencer_score_curve = set_dvar_if_unset("scr_spawn_sab_enemy_base_influencer_score_curve", "constant", reset_dvars);
|
||||
ss.sab_enemy_base_influencer_radius = set_dvar_float_if_unset("scr_spawn_sab_enemy_base_influencer_radius", "" + 15.0*get_player_height(), reset_dvars);
|
||||
|
||||
// sabotage: negative influencer around carrier
|
||||
ss.sab_carrier_influencer_score = set_dvar_float_if_unset("scr_spawn_sab_carrier_influencer_score", "-75", reset_dvars);
|
||||
ss.sab_carrier_influencer_score_curve = set_dvar_if_unset("scr_spawn_sab_carrier_influencer_score_curve", "linear", reset_dvars);
|
||||
ss.sab_carrier_influencer_radius = set_dvar_float_if_unset("scr_spawn_sab_carrier_influencer_radius", "" + 8.0*get_player_height(), reset_dvars);
|
||||
|
||||
}
|
@ -1,152 +0,0 @@
|
||||
#include maps\mp\_utility;
|
||||
#include common_scripts\utility;
|
||||
|
||||
main()
|
||||
{
|
||||
//needs to be first for create fx
|
||||
maps\mp\mp_array_fx::main();
|
||||
|
||||
precachemodel("collision_geo_10x10x512");
|
||||
precachemodel("collision_geo_64x64x64");
|
||||
precachemodel("collision_wall_64x64x10");
|
||||
precachemodel("collision_wall_512x512x10");
|
||||
precachemodel("collision_geo_64x64x256");
|
||||
precachemodel("p_glo_concrete_barrier_damaged");
|
||||
|
||||
maps\mp\_load::main();
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_array_wager");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_array");
|
||||
}
|
||||
|
||||
maps\mp\mp_array_amb::main();
|
||||
|
||||
// If the team nationalites change in this file,
|
||||
// you must update the team nationality in the level's csc file as well!
|
||||
maps\mp\gametypes\_teamset_winterspecops::level_init();
|
||||
|
||||
// Set up the default range of the compass
|
||||
setdvar("compassmaxrange","2100");
|
||||
|
||||
// Set up some generic War Flag Names.
|
||||
// Example from COD5: CALLSIGN_SEELOW_A is the name of the 1st flag in Selow whose string is "Cottage"
|
||||
// The string must have MPUI_CALLSIGN_ and _A. Replace Mapname with the name of your map/bsp and in the
|
||||
// actual string enter a keyword that names the location (Roundhouse, Missle Silo, Launchpad, Guard Tower, etc)
|
||||
|
||||
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A";
|
||||
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B";
|
||||
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C";
|
||||
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D";
|
||||
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E";
|
||||
|
||||
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A";
|
||||
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B";
|
||||
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C";
|
||||
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D";
|
||||
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E";
|
||||
|
||||
|
||||
// collision keeping players from poking their heads into the tree near B3.
|
||||
spawncollision("collision_geo_10x10x512","collider",(1397, 1095, 346), (0, 0, 0));
|
||||
spawncollision("collision_geo_10x10x512","collider",(1387, 1095, 346), (0, 0, 0));
|
||||
|
||||
// collision to prevent players from jumping behind electrical cabinets and getting stuck
|
||||
spawncollision("collision_geo_64x64x64","collider",(-399, 1615, 614), (0, 15, 0));
|
||||
spawncollision("collision_wall_64x64x10","collider",(-445, 1593, 642), (0, 150, 0));
|
||||
|
||||
// collision that will keep player from jumping out of the map and landing in the rocks.
|
||||
spawncollision("collision_wall_512x512x10","collider",(-1682, 1046, 496), (0, 30, 0));
|
||||
|
||||
// collision to stop players from getting stuck behind the steel girders.
|
||||
spawncollision("collision_geo_64x64x64","collider",(-387, 307, 346), (0, 360, 0));
|
||||
|
||||
// spawn collision underneathe the corner of the center building. This is to keep players from calling the RCXD and pushing themselves outside of the map.
|
||||
spawncollision("collision_geo_64x64x256","collider",(-852, 852, 496), (0,15,90));
|
||||
spawncollision("collision_geo_64x64x256","collider",(-788, 652, 492), (0,15,90));
|
||||
|
||||
// spawn a trigger to keep players from planting turrets into the large tanks.
|
||||
addNoTurretTrigger( (-692, 3292, 500), 180, 800 );
|
||||
addNoTurretTrigger( (-1236, 3292, 500), 180, 800 );
|
||||
|
||||
// spawn a couple of K Rails to make sense of the collision spawned under the center building.
|
||||
kRail1 = Spawn("script_model", (-824, 672, 480) );
|
||||
if ( IsDefined(kRail1) )
|
||||
{
|
||||
kRail1.angles = (0, 105, 0);
|
||||
kRail1 SetModel("p_glo_concrete_barrier_damaged");
|
||||
}
|
||||
|
||||
kRail2 = Spawn("script_model", (-804, 600, 468) );
|
||||
if ( IsDefined(kRail2) )
|
||||
{
|
||||
kRail2.angles = (15, 285, 0);
|
||||
kRail2 SetModel("p_glo_concrete_barrier_damaged");
|
||||
}
|
||||
|
||||
// enable new spawning system
|
||||
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
|
||||
|
||||
radar_move_init();
|
||||
}
|
||||
|
||||
radar_move_init()
|
||||
{
|
||||
level endon ("game_ended");
|
||||
|
||||
dish_top = GetEnt( "dish_top", "targetname" );
|
||||
dish_base = GetEnt( "dish_base", "targetname" );
|
||||
dish_inside = GetEnt( "dish_inside", "targetname" );
|
||||
dish_gears = GetEntArray( "dish_gear", "targetname");
|
||||
|
||||
total_time_for_rotation_outside = 240;
|
||||
total_time_for_rotation_inside = 60;
|
||||
|
||||
dish_top LinkTo(dish_base);
|
||||
dish_base thread rotate_dish_top(total_time_for_rotation_outside);
|
||||
dish_inside thread rotate_dish_top(total_time_for_rotation_inside);
|
||||
|
||||
if(dish_gears.size > 0)
|
||||
{
|
||||
array_thread(dish_gears, ::rotate_dish_gears, total_time_for_rotation_inside);
|
||||
}
|
||||
}
|
||||
|
||||
rotate_dish_top( time )
|
||||
{
|
||||
self endon ("game_ended");
|
||||
|
||||
while(1)
|
||||
{
|
||||
self RotateYaw( 360, time );
|
||||
self waittill( "rotatedone" );
|
||||
}
|
||||
}
|
||||
|
||||
rotate_dish_gears( time )
|
||||
{
|
||||
self endon ("game_ended");
|
||||
|
||||
gear_ratio = 5.0 / 60.0;
|
||||
inverse_gear_ratio = 1.0 / gear_ratio;
|
||||
|
||||
while(1)
|
||||
{
|
||||
self RotateYaw( 360 * inverse_gear_ratio, time );
|
||||
self waittill( "rotatedone" );
|
||||
}
|
||||
}
|
||||
|
||||
addNoTurretTrigger( position, radius, height )
|
||||
{
|
||||
while( !IsDefined( level.noTurretPlacementTriggers ) )
|
||||
wait( 0.1 );
|
||||
|
||||
trigger = Spawn( "trigger_radius", position, 0, radius, height );
|
||||
|
||||
level.noTurretPlacementTriggers[level.noTurretPlacementTriggers.size] = trigger;
|
||||
}
|
||||
|
@ -1,40 +0,0 @@
|
||||
#include maps\mp\_utility;
|
||||
main()
|
||||
{
|
||||
//needs to be first for create fx
|
||||
maps\mp\mp_cairo_fx::main();
|
||||
|
||||
precachemodel("collision_geo_10x10x512");
|
||||
precachemodel("collision_wall_128x128x10");
|
||||
|
||||
maps\mp\_load::main();
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_cairo_wager");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_cairo");
|
||||
}
|
||||
|
||||
maps\mp\mp_cairo_amb::main();
|
||||
|
||||
|
||||
// If the team nationalites change in this file,
|
||||
// you must update the team nationality in the level's csc file as well!
|
||||
maps\mp\gametypes\_teamset_cubans::level_init();
|
||||
|
||||
//setdvar("compassmaxrange","2100");
|
||||
|
||||
// spawn collision to prevent players from standing inside telephone poles
|
||||
spawncollision("collision_geo_10x10x512","collider",(2264, -240, -61), (0, 0, 0));
|
||||
spawncollision("collision_geo_10x10x512","collider",(-1437, -529, -61), (0, 0, 0));
|
||||
|
||||
// spawn collision to prevent players from standing on top of a doorway behind the cigar building
|
||||
spawncollision("collision_wall_128x128x10","collider",(716, 1181, 219), (0, 270, 0));
|
||||
|
||||
|
||||
|
||||
// enable new spawning system
|
||||
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
|
||||
}
|
@ -1,716 +0,0 @@
|
||||
#include maps\mp\_utility;
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_events;
|
||||
|
||||
main()
|
||||
{
|
||||
precachemodel("tag_origin");
|
||||
|
||||
level.onSpawnIntermission = ::cosmodrome_intermission;
|
||||
|
||||
/#
|
||||
level thread devgui_cosmodrome();
|
||||
execdevgui( "devgui_mp_cosmodrome" );
|
||||
#/
|
||||
|
||||
//needs to be first for create fx
|
||||
maps\mp\mp_cosmodrome_fx::main();
|
||||
|
||||
precachemodel("collision_wall_128x128x10");
|
||||
precachemodel("collision_geo_128x128x128");
|
||||
precachemodel("collision_wall_512x512x10");
|
||||
precachemodel("collision_geo_mc_8x560x190");
|
||||
precachemodel("collision_geo_mc_4x52x190");
|
||||
precachemodel("collision_geo_mc_4x156x190");
|
||||
|
||||
maps\mp\_load::main();
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_cosmodrome_wager");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_cosmodrome");
|
||||
}
|
||||
maps\mp\mp_cosmodrome_amb::main();
|
||||
|
||||
// If the team nationalites change in this file,
|
||||
// you must update the team nationality in the level's csc file as well!
|
||||
maps\mp\gametypes\_teamset_urbanspecops::level_init();
|
||||
|
||||
level thread rocket_arm_think();
|
||||
level thread rocket_think();
|
||||
level thread radar_dish_think();
|
||||
level thread distant_rockets_think();
|
||||
|
||||
// spawn collision to prevent players from sneaking under a small area by the rocket
|
||||
spawncollision("collision_wall_128x128x10","collider",(1558, -179, -362), (0, 225, 0));
|
||||
|
||||
// spawn collision to prevent players from sneaking inside 2 vents
|
||||
spawncollision("collision_wall_128x128x10","collider",(-699, 1457, -60), (0, 270, 0));
|
||||
spawncollision("collision_wall_128x128x10","collider",(-699, 1329, -60), (0, 270, 0));
|
||||
|
||||
// spawn collision to prevent players from strafe jumping onto pipes.
|
||||
spawncollision("collision_geo_128x128x128","collider",(1408.5, 863, -126.5), (0, 0, 0));
|
||||
spawncollision("collision_geo_128x128x128","collider",(1536.5, 863, -126.5), (0, 0, 0));
|
||||
|
||||
// spawn collision to prevent players from jumping up onto walls by the rocket
|
||||
spawncollision("collision_wall_512x512x10","collider",(1224, -160, 240), (0, 0, 0));
|
||||
spawncollision("collision_wall_512x512x10","collider",(1348, -160, 240), (0, 0, 0));
|
||||
|
||||
// Spawn collision to keep players from walking onto a small ledge of collision on the green girders.
|
||||
spawncollision("collision_wall_128x128x10","collider",(1911, 1018, -82), (0, 270, 0));
|
||||
|
||||
// not sure if this is the best way to determine that the map has been trimmed down
|
||||
if ( isSmallMapVersion() )
|
||||
{
|
||||
//spawning missile clip collision to catch grenades, rockets and crossbow bolts on the wager match boundary
|
||||
spawncollision("collision_geo_mc_8x560x190","collider",(-393, 396.5, -72), (0, 270, 0));
|
||||
spawncollision("collision_geo_mc_4x52x190","collider",(-358, 676.5, -74), (0, 0, 0));
|
||||
spawncollision("collision_geo_mc_4x156x190","collider",(-328.5, 758, -74), (0, 270, 0));
|
||||
}
|
||||
|
||||
// enable new spawning system
|
||||
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
|
||||
|
||||
SetDvar( "scr_spawn_enemy_influencer_radius", 1700 );
|
||||
SetDvar( "scr_spawn_dead_friend_influencer_radius", 1300 );
|
||||
SetDvar( "scr_spawn_dead_friend_influencer_timeout_seconds", 10 );
|
||||
SetDvar( "scr_spawn_dead_friend_influencer_count", 7 );
|
||||
}
|
||||
|
||||
isSmallMapVersion()
|
||||
{
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
gametype = getDvar( #"g_gametype" );
|
||||
if ( gametype == "oic" )
|
||||
return true;
|
||||
|
||||
if ( gametype == "hlnd" )
|
||||
return true;
|
||||
|
||||
if ( gametype == "shrp" )
|
||||
return true;
|
||||
|
||||
if ( gametype == "gun" )
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
cosmodrome_intermission()
|
||||
{
|
||||
maps\mp\gametypes\_globallogic_defaults::default_onSpawnIntermission();
|
||||
|
||||
rocket_base = GetEnt( "cosmodrome_rocket_base", "script_noteworthy" );
|
||||
|
||||
if ( !IsDefined( rocket_base ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( IsDefined( level.rocket_camera ) && level.rocket_camera == true )
|
||||
{
|
||||
lookat = Spawn( "script_model", rocket_base.origin + ( 0, 0, 1024 ) );
|
||||
lookat SetModel( "tag_origin" );
|
||||
lookat LinkTo( rocket_base );
|
||||
|
||||
self CameraSetPosition( self.origin );
|
||||
self CameraSetLookAt( lookat );
|
||||
self CameraActivate( true );
|
||||
}
|
||||
}
|
||||
|
||||
rocket_arm_think()
|
||||
{
|
||||
start_pitch = set_dvar_int_if_unset( "scr_rocket_arm_pitch", "90" );
|
||||
rotate_time = set_dvar_int_if_unset( "scr_rocket_arm_rotate_secs", "30" );
|
||||
wait_time = set_dvar_int_if_unset( "scr_rocket_arm_wait_secs", "5" );
|
||||
|
||||
arm_base = GetEnt( "cosmodrome_rocket_arm_base", "targetname" );
|
||||
AssertEx( IsDefined( arm_base ), "Unable to find entity with targetname: 'cosmodrome_rocket_arm_base'" );
|
||||
|
||||
arm = GetEntArray( "cosmodrome_rocket_arm", "targetname" );
|
||||
AssertEx( IsDefined( arm ), "Unable to find entity with targetname: 'cosmodrome_rocket_arm'" );
|
||||
|
||||
for ( i = 0; i < arm.size; i++ )
|
||||
{
|
||||
arm[i] LinkTo( arm_base );
|
||||
}
|
||||
|
||||
if ( !IsDefined( arm_base.angles_target ) )
|
||||
{
|
||||
arm_base.angles_target = arm_base.angles;
|
||||
}
|
||||
|
||||
arm_base.angles = ( start_pitch, arm_base.angles[1], arm_base.angles[2] );
|
||||
//IPrintLnBold ("rocket is MOVING?");
|
||||
|
||||
wait ( wait_time );
|
||||
|
||||
//IPrintLnBold ("start arm sound");
|
||||
arm_base playloopsound("evt_rocket_lp",.2);
|
||||
arm_base PlaySound ("evt_rocket_start");
|
||||
arm_base RotateTo( arm_base.angles_target, rotate_time );
|
||||
|
||||
|
||||
wait(rotate_time);
|
||||
arm_base stoploopsound(.3);
|
||||
arm_base PlaySound ("evt_rocket_end");
|
||||
// IPrintLnBold (rotate_time);
|
||||
// stop loppsound with fade
|
||||
// play oneshot attach
|
||||
// stop loop sound
|
||||
}
|
||||
|
||||
rocket_prelaunch( rocket_base )
|
||||
{
|
||||
//this will play vo for countdown and delay the launch by 10 seconds
|
||||
snd_countdown ();
|
||||
|
||||
// move the claw arms away from the rocket
|
||||
claw_r = GetEntArray("claw_r", "targetname");
|
||||
claw_l = GetEntArray("claw_l", "targetname");
|
||||
claw_arm_r = GetEntArray("claw_arm_r", "targetname");
|
||||
claw_arm_l = GetEntArray("claw_arm_l", "targetname");
|
||||
mover_r = GetEnt("claw_r_mover", "targetname");
|
||||
mover_l = GetEnt("claw_l_mover", "targetname");
|
||||
move_here_r = GetEnt("claw_r_move_here", "targetname");
|
||||
move_here_l = GetEnt("claw_l_move_here", "targetname");
|
||||
|
||||
for(i = 0 ; i < claw_r.size; i++)
|
||||
{
|
||||
claw_r[i] LinkTo(mover_r);
|
||||
}
|
||||
for(i = 0 ; i < claw_l.size; i++)
|
||||
{
|
||||
claw_l[i] LinkTo(mover_l);
|
||||
}
|
||||
mover_r MoveTo(move_here_r.origin, 3.0);
|
||||
mover_l MoveTo(move_here_l.origin, 3.0);
|
||||
|
||||
// play sound on the arms
|
||||
thread snd_rocket_gantry ( mover_r, mover_l);
|
||||
|
||||
wait(4.0);
|
||||
for(i = 0; i < claw_r.size; i++)
|
||||
{
|
||||
claw_r[i] Unlink();
|
||||
claw_r[i] LinkTo(move_here_r);
|
||||
}
|
||||
for(i = 0; i < claw_l.size; i++)
|
||||
{
|
||||
claw_l[i] Unlink();
|
||||
claw_l[i] LinkTo(move_here_l);
|
||||
}
|
||||
|
||||
for(i = 0; i < claw_arm_r.size; i++)
|
||||
{
|
||||
claw_arm_r[i] LinkTo(move_here_r);
|
||||
}
|
||||
for(i = 0; i < claw_arm_l.size; i++)
|
||||
{
|
||||
claw_arm_l[i] LinkTo(move_here_l);
|
||||
}
|
||||
move_here_r RotateYaw(75, 3.0);
|
||||
move_here_l RotateYaw(-75, 3.0);
|
||||
|
||||
// wait to launch
|
||||
rocket_base playsound ("evt_cosmo_launch");
|
||||
playsoundatposition("evt_cosmo_air_distf",(0,0,0));
|
||||
playsoundatposition("evt_cosmo_air_distr",(0,0,0));
|
||||
|
||||
wait(5);
|
||||
}
|
||||
|
||||
Rocket_Think()
|
||||
{
|
||||
level.const_fx_exploder_rocket_coolant = 2;
|
||||
|
||||
level.rocket_camera = false;
|
||||
flag_init( "rocket_launch_grenade_detonate" );
|
||||
|
||||
rocket = GetEntArray( "cosmodrome_rocket", "targetname" );
|
||||
AssertEx( IsDefined( rocket ), "Unable to find entity with targetname: 'cosmodrome_rocket'" );
|
||||
array_thread( rocket, ::rocket_sticky_grenade_think );
|
||||
|
||||
rocket_base = GetEnt( "cosmodrome_rocket_base", "script_noteworthy" );
|
||||
AssertEx( IsDefined( rocket_base ), "Unable to find entity with script_noteworthy: 'cosmodrome_rocket_base'" );
|
||||
level.rocket_base = rocket_base;
|
||||
|
||||
rocket_damage_triggers = GetEntArray( "cosmodrome_rocket_damage_trigger", "targetname" );
|
||||
rocket_collision = GetEntArray( "rocket_collision", "targetname" );
|
||||
|
||||
killCamEnt = spawn( "script_model", rocket_base.origin );
|
||||
rocket_base.killCamEnt = killCamEnt;
|
||||
killCamEnt.startTime = gettime();
|
||||
killCamEnt linkTo( rocket_base, "tag_origin", (50,0,-1000), ( 0,0,0 ) );
|
||||
|
||||
|
||||
rocket_timer_init();
|
||||
|
||||
wait( 3 );
|
||||
exploder( level.const_fx_exploder_rocket_coolant );
|
||||
|
||||
event = level waittill_any_return( "rocket_launch", "rocket_launch_skip_prelaunch" );
|
||||
|
||||
if ( event == "rocket_launch" )
|
||||
{
|
||||
rocket_prelaunch( rocket_base );
|
||||
}
|
||||
|
||||
level.rocket_camera = true;
|
||||
|
||||
// pre-launch fx
|
||||
earthquake_origin = rocket_base GetTagOrigin( "tag_engine" );
|
||||
earthquake( .25, 4, earthquake_origin, 4096 );
|
||||
|
||||
//play 3d launch aounds on rocket_base, and 2 st 2d sounds
|
||||
|
||||
|
||||
wait( 3.5 );
|
||||
flag_set( "rocket_launch_grenade_detonate" );
|
||||
|
||||
// launch fx
|
||||
earthquake( .35, 15, earthquake_origin, 4096 );
|
||||
array_thread( rocket_damage_triggers, ::rocket_damage_think );
|
||||
array_thread( rocket_damage_triggers, ::destroy_greandes_in_trigger );
|
||||
rocket_base SetClientFlag( level.const_flag_rocket_fx );
|
||||
exploder_stop( level.const_fx_exploder_rocket_coolant );
|
||||
|
||||
// move pieces
|
||||
array_thread( rocket, ::rocket_move );
|
||||
|
||||
// stop damage
|
||||
wait( 6 );
|
||||
level notify( "rocket_damage_stop" );
|
||||
|
||||
wait( 2 );
|
||||
level.rocket_camera = false;
|
||||
|
||||
for ( i = 0; i < rocket_damage_triggers.size; i++ )
|
||||
{
|
||||
rocket_damage_triggers[i] delete();
|
||||
}
|
||||
|
||||
for ( i = 0; i < rocket_collision.size; i++ )
|
||||
{
|
||||
rocket_collision[i] delete();
|
||||
}
|
||||
}
|
||||
|
||||
snd_rocket_gantry ( orignr, originl)
|
||||
{
|
||||
orignr playsound ("evt_gantry_disengage");
|
||||
orignr playsound ("evt_rocket_start");
|
||||
// originl playsound ("evt_rocket_start");
|
||||
}
|
||||
snd_countdown()
|
||||
{
|
||||
//wait 2;
|
||||
countdownl = spawn("script_origin", (480, -1256, 224));
|
||||
countdownr = spawn("script_origin", (152, 1488, 224));
|
||||
|
||||
clientnotify ( "snd_rocket_launch" );
|
||||
|
||||
|
||||
if( IsDefined(countdownl)&& IsDefined(countdownr) )
|
||||
{
|
||||
countdownl playsound( "vox_mp_com_1a_rua1" );
|
||||
wait .112;
|
||||
countdownr playsound( "vox_mp_com_1a_rua1" );
|
||||
wait 16.5;
|
||||
|
||||
thread snd_launch ();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
snd_launch ()
|
||||
{
|
||||
countdownl = spawn("script_origin", (480, -1256, 224));
|
||||
countdownr = spawn("script_origin", (152, 1488, 224));
|
||||
wait 2;
|
||||
countdownl playsound( "vox_mp_com_2a_rua1" );
|
||||
wait .112;
|
||||
countdownr playsound( "vox_mp_com_2a_rua1" );
|
||||
|
||||
}
|
||||
rocket_sticky_grenade_think()
|
||||
{
|
||||
self endon( "death" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
self waittill( "grenade_stuck", grenade_ent );
|
||||
grenade_ent thread sticky_grenade_think();
|
||||
}
|
||||
}
|
||||
|
||||
sticky_grenade_think()
|
||||
{
|
||||
self endon( "death" );
|
||||
level endon( "rocket_damage_stop" );
|
||||
|
||||
flag_wait( "rocket_launch_grenade_detonate" );
|
||||
wait( 0.05 );
|
||||
|
||||
self Detonate();
|
||||
}
|
||||
|
||||
//Self is the trigger. This loops to make sure any grenade or claymore that's touching the damage trigger explodes.
|
||||
destroy_greandes_in_trigger()
|
||||
{
|
||||
self endon( "death" );
|
||||
level endon( "rocket_damage_stop" );
|
||||
|
||||
flag_wait( "rocket_launch_grenade_detonate" );
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
grenades = GetEntArray( "grenade", "classname" );
|
||||
|
||||
for ( i = 0; i < grenades.size; i++ )
|
||||
{
|
||||
if( grenades[i] IsTouching( self ))
|
||||
{
|
||||
grenades[i] Detonate();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
wait 1;
|
||||
}
|
||||
}
|
||||
|
||||
rocket_timer_init()
|
||||
{
|
||||
level waittill( "prematch_over" );
|
||||
|
||||
event = set_dvar_if_unset( "scr_rocket_event", "end" );
|
||||
trigger1 = set_dvar_int_if_unset( "scr_rocket_event_trigger1", "0" );
|
||||
trigger2 = set_dvar_int_if_unset( "scr_rocket_event_trigger2", "0" );
|
||||
|
||||
if ( rocket_launch_abort() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch ( event )
|
||||
{
|
||||
case "end":
|
||||
add_timed_event( 0, "rocket_launch" );
|
||||
add_score_event( level.scorelimit, "rocket_launch" );
|
||||
// AE 11-2-09: putting in the distant rocket timing
|
||||
add_score_event( int(level.scorelimit * 0.5), "distant_rocket_launch" );
|
||||
break;
|
||||
|
||||
case "time":
|
||||
assert( trigger1 >= 0 );
|
||||
add_timed_event( trigger1, "rocket_launch" );
|
||||
// AE 11-2-09: putting in the distant rocket timing
|
||||
add_timed_event( int(trigger1 * 0.5), "distant_rocket_launch" );
|
||||
break;
|
||||
|
||||
case "percent":
|
||||
assert( trigger1 >= 0 );
|
||||
assert( trigger1 <= 100 );
|
||||
|
||||
minutes = ( trigger1 * 0.01 ) * level.timelimit;
|
||||
add_timed_event( minutes * 60, "rocket_launch" );
|
||||
// AE 11-2-09: putting in the distant rocket timing
|
||||
add_timed_event( int(minutes * 60 * 0.5), "distant_rocket_launch" );
|
||||
|
||||
score = ( trigger1 * 0.01 ) * level.scorelimit;
|
||||
add_score_event( score, "rocket_launch" );
|
||||
// AE 11-2-09: putting in the distant rocket timing
|
||||
add_score_event( int(score * 0.5), "distant_rocket_launch" );
|
||||
break;
|
||||
|
||||
case "random_time":
|
||||
assert( trigger1 >= 0 );
|
||||
assert( trigger2 >= 0 );
|
||||
assert( trigger1 < trigger2 );
|
||||
|
||||
time = RandomIntRange( trigger1, trigger2 + 1 );
|
||||
add_timed_event( trigger1, "rocket_launch" );
|
||||
// AE 11-2-09: putting in the distant rocket timing
|
||||
add_timed_event( int(trigger1 * 0.5), "distant_rocket_launch" );
|
||||
break;
|
||||
|
||||
case "random_percent":
|
||||
assert( trigger1 >= 0 );
|
||||
assert( trigger1 <= 100 );
|
||||
assert( trigger2 >= 0 );
|
||||
assert( trigger2 <= 100 );
|
||||
assert( trigger1 < trigger2 );
|
||||
|
||||
percent = RandomIntRange( trigger1, trigger2 + 1 );
|
||||
minutes = ( percent * 0.01 ) * level.timelimit;
|
||||
add_timed_event( minutes * 60, "rocket_launch" );
|
||||
// AE 11-2-09: putting in the distant rocket timing
|
||||
add_timed_event( int(minutes * 60 * 0.5), "distant_rocket_launch" );
|
||||
|
||||
percent = RandomIntRange( trigger1, trigger2 + 1 );
|
||||
score = ( percent * 0.01 ) * level.scorelimit;
|
||||
add_score_event( score, "rocket_launch" );
|
||||
// AE 11-2-09: putting in the distant rocket timing
|
||||
add_score_event( int(score * 0.5), "distant_rocket_launch" );
|
||||
break;
|
||||
|
||||
default:
|
||||
error( "Unknown event type: '" + event + "' used in dvar 'scr_rocket_event'" );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
rocket_launch_abort()
|
||||
{
|
||||
launch_abort = set_dvar_int_if_unset( "scr_rocket_event_off", "0" );
|
||||
assert( launch_abort >= 0 );
|
||||
assert( launch_abort <= 100 );
|
||||
|
||||
if ( RandomInt( 101 ) < launch_abort )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
rocket_move()
|
||||
{
|
||||
self MoveTo( self.origin + ( 0, 0, 50000 ), 50, 45 );
|
||||
|
||||
self waittill( "movedone" );
|
||||
self delete();
|
||||
}
|
||||
|
||||
rocket_damage_think()
|
||||
{
|
||||
level endon( "rocket_damage_stop" );
|
||||
damage_interval_secs = 1;
|
||||
|
||||
assert( self.classname == "trigger_radius" );
|
||||
|
||||
/#
|
||||
if ( set_dvar_int_if_unset( "scr_rocket_debug", "0" ) != 0 )
|
||||
{
|
||||
drawcylinder( self.origin, self.radius, self.height, undefined, "rocket_damage_stop" );
|
||||
}
|
||||
#/
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
self waittill( "trigger", ent );
|
||||
|
||||
if(IsPlayer(ent))
|
||||
{
|
||||
player = ent;
|
||||
|
||||
if ( player.sessionstate != "playing" )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( !IsDefined( player.rocket_damage_time ) )
|
||||
{
|
||||
player.rocket_damage_time = GetTime();
|
||||
}
|
||||
|
||||
if ( player.rocket_damage_time > GetTime() )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
player shellshock( "tabun_gas_mp", damage_interval_secs );
|
||||
player.rocket_damage_time = GetTime() + ( damage_interval_secs * 1000 );
|
||||
player DoDamage( RandomIntRange( 40, 60 ), self.origin, self, level.rocket_base, 0, "MOD_SUICIDE" );
|
||||
}
|
||||
//This kill dogs in the radius trigger
|
||||
else if ( IsAI( ent ))
|
||||
{
|
||||
ent DoDamage( ent.health * 2, ent.origin);
|
||||
}
|
||||
//This kills RC bombs in the radius trigger
|
||||
else if(IsDefined( ent.targetname ) && ent.targetname == "rcbomb" )
|
||||
{
|
||||
//Destroy RC bomb
|
||||
ent maps\mp\_rcbomb::rcbomb_force_explode();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
radar_dish_think()
|
||||
{
|
||||
radar_dish = GetEnt( "cosmodrome_radar_dish", "targetname" );
|
||||
AssertEx( IsDefined( radar_dish ), "Unable to find entity with targetname: 'cosmodrome_radar_dish'" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
rotate_time = set_dvar_int_if_unset( "scr_radar_dish_rotate_secs", "30" );
|
||||
|
||||
if ( rotate_time <= 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
radar_dish RotateYaw( 360, rotate_time );
|
||||
radar_dish waittill( "rotatedone" );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
devgui_cosmodrome( cmd )
|
||||
{
|
||||
for ( ;; )
|
||||
{
|
||||
wait( 0.5 );
|
||||
|
||||
devgui_string = GetDvar( #"devgui_notify" );
|
||||
|
||||
switch( devgui_string )
|
||||
{
|
||||
case "":
|
||||
break;
|
||||
|
||||
case "rocket_arm":
|
||||
SetDvar( "scr_rocket_arm_wait_secs", "0" );
|
||||
level thread rocket_arm_think();
|
||||
break;
|
||||
|
||||
default:
|
||||
level notify( devgui_string );
|
||||
break;
|
||||
}
|
||||
|
||||
SetDvar( "devgui_notify", "" );
|
||||
}
|
||||
}
|
||||
|
||||
distant_rockets_think()
|
||||
{
|
||||
// have the rockets in the distance going off
|
||||
|
||||
distant_rocket = GetEntArray( "distant_rocket", "targetname" );
|
||||
AssertEx( IsDefined( distant_rocket ), "Unable to find entity with targetname: 'distant_rocket'" );
|
||||
|
||||
distant_rocket_gantry1 = GetEntArray("distant_rocket_gantry1", "targetname");
|
||||
AssertEx( IsDefined( distant_rocket_gantry1 ), "Unable to find entity with targetname: 'distant_rocket_gantry1'" );
|
||||
distant_rocket_gantry2 = GetEntArray("distant_rocket_gantry2", "targetname");
|
||||
AssertEx( IsDefined( distant_rocket_gantry2 ), "Unable to find entity with targetname: 'distant_rocket_gantry2'" );
|
||||
|
||||
distant_rocket_arm1 = GetEntArray( "distant_rocket_arm1", "targetname" );
|
||||
AssertEx( IsDefined( distant_rocket_arm1 ), "Unable to find entity with targetname: 'distant_rocket_arm1'" );
|
||||
distant_rocket_arm2 = GetEntArray( "distant_rocket_arm2", "targetname" );
|
||||
AssertEx( IsDefined( distant_rocket_arm2 ), "Unable to find entity with targetname: 'distant_rocket_arm2'" );
|
||||
distant_rocket_arm3 = GetEntArray( "distant_rocket_arm3", "targetname" );
|
||||
AssertEx( IsDefined( distant_rocket_arm3 ), "Unable to find entity with targetname: 'distant_rocket_arm3'" );
|
||||
distant_rocket_arm4 = GetEntArray( "distant_rocket_arm4", "targetname" );
|
||||
AssertEx( IsDefined( distant_rocket_arm4 ), "Unable to find entity with targetname: 'distant_rocket_arm4'" );
|
||||
|
||||
distant_rocket_engine = GetEnt( "distant_rocket_engine", "script_noteworthy" );
|
||||
AssertEx( IsDefined( distant_rocket_engine ), "Unable to find entity with script_noteworthy: 'distant_rocket_engine'" );
|
||||
distant_rocket_engine SetModel("tag_origin");
|
||||
distant_rocket_engine.angles = (-90, 0, 0);
|
||||
|
||||
wait( 3 );
|
||||
|
||||
level waittill( "distant_rocket_launch" );
|
||||
|
||||
// splay sound on the gantry
|
||||
thread snd_distant_gantry (distant_rocket_engine, distant_rocket_engine);
|
||||
// play sound for arms
|
||||
thread snd_distant_rocket_arm (distant_rocket_engine);
|
||||
|
||||
// move the gantry away from the rocket
|
||||
array_thread( distant_rocket_gantry1, ::distant_rocket_gantry1_move );
|
||||
array_thread( distant_rocket_gantry2, ::distant_rocket_gantry2_move );
|
||||
|
||||
wait(10);
|
||||
|
||||
// move the arms away from the rocket
|
||||
array_thread( distant_rocket_arm1, ::distant_rocket_arm1_move );
|
||||
array_thread( distant_rocket_arm2, ::distant_rocket_arm2_move );
|
||||
array_thread( distant_rocket_arm3, ::distant_rocket_arm3_move );
|
||||
array_thread( distant_rocket_arm4, ::distant_rocket_arm4_move );
|
||||
|
||||
|
||||
|
||||
// wait to launch
|
||||
wait(8);
|
||||
|
||||
// pre-launch fx
|
||||
// TODO: small earthquakes??
|
||||
//earthquake_origin = rocket_base GetTagOrigin( "tag_engine" );
|
||||
//earthquake( .25, 4, earthquake_origin, 4096 );
|
||||
|
||||
// play 3d launch aounds on distant_rocket_engine, and 2 st 2d sounds
|
||||
distant_rocket_engine playsound ("evt_dist_cosmo_launch");
|
||||
//playsoundatposition("evt_dist_cosmo_air_distf",(0,0,0));
|
||||
distant_rocket_engine playsound ("evt_dist_cosmo_air_distf");
|
||||
wait( 3.5 );
|
||||
|
||||
// launch fx
|
||||
//earthquake( .35, 15, earthquake_origin, 4096 );
|
||||
|
||||
playfxontag( level._effect["rocket_blast_trail"], distant_rocket_engine, "tag_origin" );
|
||||
|
||||
// move pieces
|
||||
array_thread( distant_rocket, ::rocket_move );
|
||||
|
||||
}
|
||||
|
||||
distant_rocket_gantry1_move() // self == distant_rocket_gantry
|
||||
{
|
||||
self RotatePitch(-45, 10.0);
|
||||
self waittill("rotatedone");
|
||||
}
|
||||
distant_rocket_gantry2_move() // self == distant_rocket_gantry
|
||||
{
|
||||
self RotatePitch(45, 10.0);
|
||||
self waittill("rotatedone");
|
||||
}
|
||||
|
||||
distant_rocket_arm1_move() // self == distant_rocket_arm
|
||||
{
|
||||
self RotatePitch(-45, 6.0);
|
||||
self waittill("rotatedone");
|
||||
}
|
||||
distant_rocket_arm2_move() // self == distant_rocket_arm
|
||||
{
|
||||
self RotateRoll(-45, 6.0);
|
||||
self waittill("rotatedone");
|
||||
}
|
||||
distant_rocket_arm3_move() // self == distant_rocket_arm
|
||||
{
|
||||
self RotatePitch(45, 6.0);
|
||||
self waittill("rotatedone");
|
||||
}
|
||||
distant_rocket_arm4_move() // self == distant_rocket_arm
|
||||
{
|
||||
self RotateRoll(45, 6.0);
|
||||
self waittill("rotatedone");
|
||||
}
|
||||
snd_distant_rocket_arm ( distant_rocket_engine )
|
||||
{
|
||||
|
||||
//IPrintLnBold ("this is in the distant rocket arm section - snd_distant_rocket_arm");
|
||||
distant_rocket_engine playloopsound ("evt_dist_rocket_lp", .5);
|
||||
distant_rocket_engine PlaySound ("evt_dist_rocket_start");
|
||||
//self waittill("rotatedone");
|
||||
wait (16);
|
||||
distant_rocket_engine stoploopsound(.3);
|
||||
distant_rocket_engine PlaySound ("evt_dist_rocket_end");
|
||||
|
||||
}
|
||||
snd_distant_gantry ( orignr, originl)
|
||||
{
|
||||
//IPrintLnBold ("this is playing dist rocket start");
|
||||
orignr playsound ("evt_dist_gantry_disengage");
|
||||
orignr playsound ("evt_dist_rocket_start");
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
#include maps\mp\_utility;
|
||||
main()
|
||||
{
|
||||
//needs to be first for create fx
|
||||
maps\mp\mp_crisis_fx::main();
|
||||
|
||||
precachemodel("collision_geo_128x128x10");
|
||||
|
||||
maps\mp\_load::main();
|
||||
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_crisis_wager");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_crisis");
|
||||
}
|
||||
|
||||
//maps\mp\mp_crisis_amb::main();
|
||||
|
||||
|
||||
// If the team nationalites change in this file,
|
||||
// you must update the team nationality in the level's csc file as well!
|
||||
maps\mp\gametypes\_teamset_cubans::level_init();
|
||||
|
||||
//setdvar("compassmaxrange","2100");
|
||||
|
||||
|
||||
// spawn collision to prevent players from seeing through the LVT
|
||||
spawncollision("collision_geo_128x128x10","collider",(2891, 1282.5, 72.5), (3.6, 36.48, -1.65));
|
||||
|
||||
// enable new spawning system
|
||||
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
|
||||
}
|
@ -1,178 +0,0 @@
|
||||
#include maps\mp\_utility;
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_events;
|
||||
|
||||
main()
|
||||
{
|
||||
///#
|
||||
//execdevgui( "devgui_mp_duga" );
|
||||
//#/
|
||||
|
||||
//needs to be first for create fx
|
||||
maps\mp\mp_duga_fx::main();
|
||||
|
||||
maps\mp\_load::main();
|
||||
|
||||
maps\mp\mp_duga_amb::main();
|
||||
|
||||
// If the team nationalites change in this file,
|
||||
// you must update the team nationality in the level's csc file as well!
|
||||
maps\mp\gametypes\_teamset_winterspecops::level_init();
|
||||
|
||||
precachemodel("collision_geo_mc_8x560x190");
|
||||
precachemodel("collision_geo_mc_4x52x190");
|
||||
|
||||
// enable new spawning system
|
||||
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
|
||||
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_duga_wager");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_duga");
|
||||
}
|
||||
|
||||
//Increase sample size so as to resolve lighting issue
|
||||
SetDvar("sm_sunSampleSizeNear", ".5" );
|
||||
|
||||
//Sets it up so my events go off at times based on the game time and score limit
|
||||
//level thread transformer_timer_init();
|
||||
///#
|
||||
//level thread devgui_duga();
|
||||
//#/
|
||||
|
||||
glasses = GetStructArray( "glass_shatter_on_spawn", "targetname" );
|
||||
|
||||
for ( i = 0; i < glasses.size; i++ )
|
||||
{
|
||||
RadiusDamage( glasses[i].origin, 64, 101, 100 );
|
||||
}
|
||||
|
||||
// weapon collision to keep grenades from falling out of the map through a gap between the terrain and the wall.
|
||||
spawncollision("collision_geo_mc_8x560x190","collider",(462, -3840, -165), (0, 0, 0));
|
||||
spawncollision("collision_geo_mc_4x52x190","collider",(184, -3870, -164), (0, 270, 0));
|
||||
spawncollision("collision_geo_mc_4x52x190","collider",(184, -3922, -164), (0, 270, 0));
|
||||
spawncollision("collision_geo_mc_4x52x190","collider",(188, -3922, -169), (0, 270, 0));
|
||||
}
|
||||
|
||||
//Sets it up so events can happen based on match time and score changes
|
||||
transformer_timer_init()
|
||||
{
|
||||
first_transformer_structs = getstructarray("transformer_struct","targetname");
|
||||
|
||||
level._transformer_array = [];
|
||||
|
||||
for( i=0; i < first_transformer_structs.size; i++)
|
||||
{
|
||||
current_struct = first_transformer_structs[i];
|
||||
level._transformer_array = add_to_array(level._transformer_array, current_struct);
|
||||
|
||||
while(IsDefined(current_struct.target))
|
||||
{
|
||||
current_struct = getstruct(current_struct.target, "targetname");
|
||||
level._transformer_array = add_to_array(level._transformer_array, current_struct);
|
||||
}
|
||||
}
|
||||
|
||||
level waittill( "prematch_over" );
|
||||
|
||||
|
||||
if( (IsDefined(level.timelimit)) && (level.timelimit > 0))
|
||||
{
|
||||
//Electric transformers explode in pairs. The number of pairs is critical to determine how many 'events' we need.
|
||||
transformer_pairs = level._transformer_array.size / 2;
|
||||
total_seconds = level.timelimit * 60;
|
||||
//We want to space out the transformer pair explosion evenly thourought the match
|
||||
interval = total_seconds / transformer_pairs;
|
||||
|
||||
//This creates events based on how many we need. The event sends a notify to duga.csc to set off explosions.
|
||||
for( i = total_seconds; i >= interval; i -= interval )
|
||||
{
|
||||
println( "Seconds: " + i );
|
||||
add_timed_event( int( i ), undefined, "go" );
|
||||
}
|
||||
|
||||
//This event sets off with a tenth of a second left in the game. The duga.csc waits for the notify.
|
||||
add_timed_event( .1, undefined, "fin" );
|
||||
}
|
||||
//add_score_event( Int(level.scorelimit * .99), undefined, "final_boom" );
|
||||
//add_score_event( Int(level.scorelimit * 0.1),undefined, "next_boom" );
|
||||
//add_score_event( Int(level.scorelimit * 0.2),undefined, "next_boom" );
|
||||
}
|
||||
|
||||
devgui_duga( cmd )
|
||||
{
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
wait( 0.5 );
|
||||
|
||||
devgui_string = GetDvar( #"devgui_notify" );
|
||||
|
||||
switch( devgui_string )
|
||||
{
|
||||
case "":
|
||||
break;
|
||||
|
||||
case "transformer_explode1":
|
||||
level ClientNotify ("transformer_explode");
|
||||
break;
|
||||
|
||||
case "transformer_explode2":
|
||||
level ClientNotify ("transformer_explode");
|
||||
break;
|
||||
|
||||
case "transformer_explode3":
|
||||
level ClientNotify ("transformer_explode");
|
||||
break;
|
||||
|
||||
case "transformer_explode4":
|
||||
level ClientNotify ("transformer_explode");
|
||||
break;
|
||||
|
||||
case "transformer_explode5":
|
||||
level ClientNotify ("transformer_explode");
|
||||
break;
|
||||
|
||||
case "transformer_explode6":
|
||||
level ClientNotify ("transformer_explode");
|
||||
break;
|
||||
|
||||
case "transformer_explode7":
|
||||
level ClientNotify ("transformer_explode");
|
||||
break;
|
||||
|
||||
case "transformer_explode8":
|
||||
level ClientNotify ("transformer_explode");
|
||||
break;
|
||||
|
||||
case "transformer_explode9":
|
||||
level ClientNotify ("transformer_explode");
|
||||
break;
|
||||
|
||||
case "transformer_explode10":
|
||||
level ClientNotify ("transformer_explode");
|
||||
break;
|
||||
|
||||
case "transformer_explode11":
|
||||
level ClientNotify ("transformer_explode");
|
||||
break;
|
||||
|
||||
case "transformer_explode12":
|
||||
level ClientNotify ("transformer_explode");
|
||||
break;
|
||||
|
||||
//case "final_explode":
|
||||
//transformer_array[5] notify ("final_explode");
|
||||
//break;
|
||||
|
||||
default:
|
||||
level notify( devgui_string );
|
||||
break;
|
||||
}
|
||||
|
||||
SetDvar( "devgui_notify", "" );
|
||||
}
|
||||
}
|
@ -1,411 +0,0 @@
|
||||
#include maps\mp\_utility;
|
||||
|
||||
|
||||
main()
|
||||
{
|
||||
//needs to be first for create fx
|
||||
maps\mp\mp_firingrange_fx::main();
|
||||
|
||||
precachemodel("collision_geo_10x10x512");
|
||||
|
||||
maps\mp\_load::main();
|
||||
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_firingrange");
|
||||
|
||||
maps\mp\mp_firingrange_amb::main();
|
||||
|
||||
// If the team nationalites change in this file,
|
||||
// you must update the team nationality in the level's csc file as well!
|
||||
maps\mp\gametypes\_teamset_cubans::level_init();
|
||||
|
||||
/****** GET ENTITIES ******/
|
||||
//TRIGGERS
|
||||
alleyTrigger = getent("alleyTrigger","targetname");
|
||||
windowTrigger = getent("triggerwindowTarget","targetname");
|
||||
|
||||
//TARGETS
|
||||
target1 = getent("fieldTarget_BackLeft","targetname");
|
||||
target2 = getent("fieldTarget_FrontLeft","targetname");
|
||||
target3 = getent("fieldTarget_Middle","targetname");
|
||||
target4 = getent("fieldTarget_BackRight","targetname");
|
||||
target5 = getent("fieldTarget_FrontRight","targetname");
|
||||
target6 = getent("trenchTarget_GroundWall","targetname");
|
||||
target7 = getent("trailerTarget_Window","targetname");
|
||||
target8 = getent("alleyTarget_Cover","targetname");
|
||||
target9 = getent("alleyTarget_Path","targetname");
|
||||
target10 = getent("centerTarget_Sandbags","targetname");
|
||||
target11 = getent("towerTarget_Front","targetname");
|
||||
target12 = getent("towerTarget_Back","targetname");
|
||||
target13 = getent("centerTarget_Path","targetname");
|
||||
target14 = getent("centerTarget_PathBunkerL","targetname");
|
||||
target15 = getent("centerTarget_PathBunkerR","targetname");
|
||||
target16 = getent("steelBuildingTarget_Slide1","targetname");
|
||||
target17 = getent("steelBuildingTarget_PopUp","targetname");
|
||||
target18 = getent("target_alleyWindow1","targetname");
|
||||
target19 = getent("target_alleyWindow2","targetname");
|
||||
target20 = getent("target_alleyWindow3","targetname");
|
||||
|
||||
//TARGET LIGHTs
|
||||
|
||||
//Props
|
||||
targetLight1_off = getent("steelBuildingTargetLight1_off", "targetname");
|
||||
targetLight1_on = getent("steelBuildingTargetLight1_on", "targetname");
|
||||
|
||||
targetLight2_off = getent("steelBuildingTargetLight2_off", "targetname");
|
||||
targetLight2_on = getent("steelBuildingTargetLight2_on", "targetname");
|
||||
|
||||
//Lights
|
||||
|
||||
level.const_fx_exploder_red_light_1 = 1001;
|
||||
level.const_fx_exploder_red_light_2 = 1002;
|
||||
|
||||
//LOUDSPEAKERS
|
||||
speaker1 = getent("loudspeaker1", "targetname");
|
||||
speaker2 = getent("loudspeaker2", "targetname");
|
||||
|
||||
//PROPANE TANKS
|
||||
/*propaneTank1 = getent("explodingPropaneTank","targetname");
|
||||
propaneTank2 = getent("explodingPropaneTank2","targetname");
|
||||
propaneTank3 = getent("explodingPropaneTank3","targetname");*/
|
||||
|
||||
/****** HIDE ON TARGET LIGHTS ******/
|
||||
//Keep the on versions of the light model hidden until appropriate target takes damage.
|
||||
targetLight1_on Hide();
|
||||
targetLight2_on Hide();
|
||||
|
||||
/****** DAMAGE OBJECTS ********/
|
||||
|
||||
//TARGETS
|
||||
target1 SetCanDamage(true);
|
||||
target2 SetCanDamage(true);
|
||||
target3 SetCanDamage(true);
|
||||
target4 SetCanDamage(true);
|
||||
target5 SetCanDamage(true);
|
||||
target8 SetCanDamage(true);
|
||||
target9 SetCanDamage(true);
|
||||
target10 SetCanDamage(true);
|
||||
target13 SetCanDamage(true);
|
||||
target14 SetCanDamage(true);
|
||||
target15 SetCanDamage(true);
|
||||
target16 SetCanDamage(true);
|
||||
target17 SetCanDamage(true);
|
||||
target18 SetCanDamage(true);
|
||||
target19 SetCanDamage(true);
|
||||
target20 SetCanDamage(true);
|
||||
|
||||
target1 thread damageTarget(1);
|
||||
target2 thread damageTarget(1);
|
||||
target3 thread damageTarget(1);
|
||||
target4 thread damageTarget(1);
|
||||
target5 thread damageTarget(1);
|
||||
target8 thread damageTarget(2);
|
||||
target9 thread damageTarget(2);
|
||||
target10 thread damageTarget(2);
|
||||
target13 thread damageTarget(2);
|
||||
target14 thread damageTarget(3);
|
||||
target15 thread damageTarget(3);
|
||||
target16 thread damageTargetLights(targetLight1_on, targetLight1_off, speaker1, "amb_target_buzzer", level.const_fx_exploder_red_light_2 );
|
||||
target17 thread damageTargetLights(targetLight2_on, targetLight2_off, speaker2, "amb_target_buzzer", level.const_fx_exploder_red_light_1 );
|
||||
target18 thread damageTarget(4);
|
||||
target19 thread damageTarget(4);
|
||||
target20 thread damageTarget(5);
|
||||
|
||||
//PROPANE TANKS
|
||||
/*propaneTank1 SetCanDamage(true);
|
||||
propaneTank2 SetCanDamage(true);
|
||||
propaneTank3 SetCanDamage(true);
|
||||
|
||||
propaneTank1 thread damagePropaneTank("mpl_kls_artillery_impact");
|
||||
propaneTank2 thread damagePropaneTank("mpl_kls_artillery_impact");
|
||||
propaneTank3 thread damagePropaneTank("mpl_kls_artillery_impact");*/
|
||||
|
||||
|
||||
/****** MOVE TARGETS ******/
|
||||
//Sliding Targets
|
||||
target1 thread moveTarget(4, 220, 10.1);
|
||||
target2 thread moveTarget(4, 220, 5.2);
|
||||
target3 thread moveTarget(4, 220, 10.3);
|
||||
target4 thread moveTarget(3, 290, 8.4);
|
||||
target5 thread moveTarget(3, 285, 3);
|
||||
target6 thread moveTarget(1, 228, 8.1);
|
||||
target7 thread moveTarget(7, (57, 23, 0), 3);
|
||||
target8 thread moveTarget(1, 250, 5.5);
|
||||
target9 thread moveTarget(1, 146, 8.6);
|
||||
target10 thread moveTarget(1, 165, 8.7);
|
||||
target11 thread moveTarget(4, 136, 5.05);
|
||||
target12 thread moveTarget(3, 136, 7.15);
|
||||
target13 thread moveTarget(1, 228, 8.25);
|
||||
target16 thread moveTarget(4, 164, 5.35);
|
||||
target17 thread moveTarget(5, 48, 5.45);
|
||||
target18 thread moveTarget(3, 270, 8.55);
|
||||
target19 thread moveTarget(6, 70, 6.65);
|
||||
target20 thread moveTarget(1, 130, 5.75);
|
||||
|
||||
|
||||
|
||||
//Hinge Targets
|
||||
//targetHinge1 thread rotateTarget(2, 90, 0.5, 3); //-Z direction, 90 degrees, in .5 seconds, wait inbetween for 3 seconds.
|
||||
target11 thread rotateTarget(2, 90, 0.5, 2);
|
||||
target12 thread rotateTarget(1, 90, 0.7, 3);
|
||||
|
||||
//Triggers
|
||||
alleyTrigger thread triggerCheck(target9);
|
||||
windowTrigger thread triggerCheck(target7);
|
||||
|
||||
|
||||
// collision keeping players from capping the HQ point from outside the room.
|
||||
spawncollision("collision_geo_10x10x512","collider",(-415, -429, -128), (0, 0, 0));
|
||||
spawncollision("collision_geo_10x10x512","collider",(-415, -419, -128), (0, 0, 0));
|
||||
|
||||
|
||||
// enable new spawning system
|
||||
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
|
||||
SetDvar( "scr_spawn_enemy_influencer_radius", 1600 );
|
||||
SetDvar( "scr_spawn_dead_friend_influencer_radius", 1300 );
|
||||
SetDvar( "scr_spawn_dead_friend_influencer_timeout_seconds", 13 );
|
||||
SetDvar( "scr_spawn_dead_friend_influencer_count", 7 );
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
triggerCheck(target)
|
||||
{
|
||||
self endon("game_ended");
|
||||
while(1)
|
||||
{
|
||||
self waittill("trigger", player);
|
||||
|
||||
//If the target is close enough to the player to cause a possible issue, tell the target to go back the other direction.
|
||||
distance = Distance(target.origin, self.origin);
|
||||
if(distance <= 90)
|
||||
{
|
||||
target notify( "targetStopMoving" );
|
||||
while( isdefined( player) && player isTouching(self) && distance <= 90)
|
||||
{
|
||||
if ( DistanceSquared( target.origin, target.railPoints[0] ) < DistanceSquared( player.origin, target.railPoints[0] ) )
|
||||
target.preferredNextPos = 0;
|
||||
else
|
||||
target.preferredNextPos = 1;
|
||||
wait( 0.25 );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
damageTarget(dir)
|
||||
{
|
||||
self endon("game_ended");
|
||||
while(1)
|
||||
{
|
||||
self waittill("damage", damage, attacker, direction);
|
||||
|
||||
switch(dir)
|
||||
{
|
||||
case 1:
|
||||
self rotateroll(self.angles[1] + 90, .1);
|
||||
wait(.2);
|
||||
self rotateroll(self.angles[1] - 90, .1);
|
||||
wait(.2);
|
||||
self PlaySound ("amb_target_flip");
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
rotation = 1;
|
||||
if ( isdefined( attacker ) && isPlayer( attacker ) )
|
||||
{
|
||||
yaw = get2DYaw( attacker.origin, self.origin );
|
||||
if ( attacker.angles[1] > yaw )
|
||||
rotation = -1;
|
||||
|
||||
}
|
||||
|
||||
self rotateyaw(self.angles[2] + (180 * rotation), .3);
|
||||
self PlaySound ("amb_target_twirl");
|
||||
self waittill("rotatedone");
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
self rotatepitch(self.angles[1] + 90, .1);
|
||||
wait(.2);
|
||||
self rotatepitch(self.angles[1] - 90, .1);
|
||||
wait(.2);
|
||||
self PlaySound ("amb_target_flip");
|
||||
break;
|
||||
case 4:
|
||||
self rotateroll(self.angles[1] - 90, .1);
|
||||
wait(.2);
|
||||
self rotateroll(self.angles[1] + 90, .1);
|
||||
wait(.2);
|
||||
self PlaySound ("amb_target_flip");
|
||||
break;
|
||||
case 5:
|
||||
self rotatepitch(self.angles[1] - 90, .1);
|
||||
wait(.2);
|
||||
self rotatepitch(self.angles[1] + 90, .1);
|
||||
wait(.2);
|
||||
self PlaySound ("amb_target_flip");
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Another damage target function that handles Light style damage responses.
|
||||
damageTargetLights(light_on, light_off, speaker, alias, exploderHandle)
|
||||
{
|
||||
self endon("game_ended");
|
||||
while(1)
|
||||
{
|
||||
self waittill("damage");
|
||||
|
||||
speaker PlaySound(alias);
|
||||
exploder(exploderHandle);
|
||||
light_off Hide();
|
||||
light_on Show();
|
||||
wait(0.5);
|
||||
exploder_stop(exploderHandle);
|
||||
light_off Show();
|
||||
light_on Hide();
|
||||
}
|
||||
}
|
||||
|
||||
/*damagePropaneTank(soundAlias)
|
||||
{
|
||||
self endon("game_ended");
|
||||
|
||||
while(1)
|
||||
{
|
||||
self waittill("damage");
|
||||
|
||||
RadiusDamage(self.origin, 500, 100, 50);
|
||||
PlayFX(level._effect["rcbombexplosion"] , self.origin);
|
||||
self PlaySound(soundAlias);
|
||||
self Delete();
|
||||
}
|
||||
}*/
|
||||
|
||||
//Pass in one of the following to define the start direction of the target: 1 for +y, 2 for -y, 3 for +x, 4 for -x, 5 for +Z, 6 for -Z.
|
||||
//Pass in the distance in units the target is to travel.
|
||||
//Pass in the ammount of time in seconds that it will take the target to travel that distance.
|
||||
moveTarget(dir, dis, speed)
|
||||
{
|
||||
self endon("game_ended");
|
||||
keepMoving = true; //Local var to decide if the target needs to be paused or not.
|
||||
|
||||
//Get the targets starting position or nearPos
|
||||
startPOS = self.origin;
|
||||
//Find out the targets far position.
|
||||
FarPOS = self.origin;
|
||||
|
||||
sound = Spawn ("script_origin", self.origin);
|
||||
sound LinkTo(self);
|
||||
sound PlayLoopSound ("amb_target_chain");
|
||||
|
||||
switch(dir)
|
||||
{
|
||||
case 1://+Y
|
||||
farPOS = self.origin + (0,dis,0);
|
||||
break;
|
||||
case 2://-Y
|
||||
farPOS = self.origin - (0,dis,0);
|
||||
break;
|
||||
case 3://+X
|
||||
farPOS = self.origin + (dis,0,0);
|
||||
break;
|
||||
case 4://-X
|
||||
farPOS = self.origin - (dis,0,0);
|
||||
break;
|
||||
case 5://+Z
|
||||
farPOS = self.origin + (0,0,dis);
|
||||
break;
|
||||
case 6://-Z
|
||||
farPOS = self.origin - (0,0,dis);
|
||||
break;
|
||||
case 7://Custom
|
||||
farPOS = self.origin - dis;
|
||||
break;
|
||||
}
|
||||
|
||||
self.railPoints = [];
|
||||
self.railPoints[0] = startPos;
|
||||
self.railPoints[1] = FarPos;
|
||||
self.preferredNextPos = 1;
|
||||
self.playerTrigger = false;
|
||||
//Move the target
|
||||
while(1)
|
||||
{
|
||||
nextPos = self.railPoints[self.preferredNextPos];
|
||||
if ( self.preferredNextPos == 0 )
|
||||
self.preferredNextPos = 1;
|
||||
else
|
||||
self.preferredNextPos = 0;
|
||||
|
||||
self moveto(nextPos, speed);
|
||||
self waittill_either("movedone","targetStopMoving");
|
||||
self PlaySound ("amb_target_stop");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
rotateTarget(dir, deg, speed, pauseTime)
|
||||
{
|
||||
self endon("game_ended");
|
||||
while(1)
|
||||
{
|
||||
switch(dir)
|
||||
{
|
||||
case 1: //+Z
|
||||
self rotateyaw(self.angles[2] + deg, speed);
|
||||
self PlaySound ("amb_target_rotate");
|
||||
wait(pauseTime);
|
||||
self rotateyaw(self.angles[2] - deg, speed);
|
||||
self PlaySound ("amb_target_rotate");
|
||||
wait(pauseTime);
|
||||
break;
|
||||
case 2: //-Z
|
||||
self rotateyaw(self.angles[2] - deg, speed);
|
||||
self PlaySound ("amb_target_rotate");
|
||||
wait(pauseTime);
|
||||
self rotateyaw(self.angles[2] + deg, speed);
|
||||
self PlaySound ("amb_target_rotate");
|
||||
wait(pauseTime);
|
||||
break;
|
||||
case 3: //+X
|
||||
self rotateroll(self.angles[0] + deg, speed);
|
||||
self PlaySound ("amb_target_rotate");
|
||||
wait(pauseTime);
|
||||
self rotateroll(self.angles[0] - deg, speed);
|
||||
self PlaySound ("amb_target_rotate");
|
||||
wait(pauseTime);
|
||||
break;
|
||||
case 4: //-X
|
||||
self rotateroll(self.angles[0] - deg, speed);
|
||||
self PlaySound ("amb_target_rotate");
|
||||
wait(pauseTime);
|
||||
self rotateroll(self.angles[0] + deg, speed);
|
||||
self PlaySound ("amb_target_rotate");
|
||||
wait(pauseTime);
|
||||
break;
|
||||
case 5: //+Y
|
||||
self rotateroll(self.angles[1] + deg, speed);
|
||||
self PlaySound ("amb_target_rotate");
|
||||
wait(pauseTime);
|
||||
self rotateroll(self.angles[1] - deg, speed);
|
||||
self PlaySound ("amb_target_rotate");
|
||||
wait(pauseTime);
|
||||
break;
|
||||
case 6: //-Y
|
||||
self rotatepitch(self.angles[1] - deg, speed);
|
||||
wait(pauseTime);
|
||||
self rotatepitch(self.angles[1] + deg, speed);
|
||||
wait(pauseTime);
|
||||
break;
|
||||
case 7: //Custom
|
||||
self rotateto( (self.angles[0] + 90, self.angles[1] - 90, self.angles[2] + 45), speed);
|
||||
wait(pauseTime);
|
||||
self rotateto( (self.angles[0] - 90, self.angles[1] + 90, self.angles[2] - 45), speed);
|
||||
wait(pauseTime);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,386 +0,0 @@
|
||||
#include maps\mp\_utility;
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_events;
|
||||
|
||||
main()
|
||||
{
|
||||
//needs to be first for create fx
|
||||
maps\mp\mp_golfcourse_fx::main();
|
||||
|
||||
precachemodel("collision_geo_64x64x256");
|
||||
precachemodel("collision_wall_256x256x10");
|
||||
|
||||
maps\mp\_load::main();
|
||||
// maps\mp\_compass::setupMiniMap("compass_map_mp_golfcourse");
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_golfcourse_wager");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_golfcourse");
|
||||
}
|
||||
|
||||
maps\mp\mp_golfcourse_amb::main();
|
||||
|
||||
// If the team nationalites change in this file, you must also update the level's csc file,
|
||||
// the level's csv file, and the share/raw/mp/mapsTable.csv
|
||||
maps\mp\gametypes\_teamset_cubans::level_init();
|
||||
|
||||
// Set up the default range of the compass
|
||||
setdvar("compassmaxrange","2100");
|
||||
|
||||
// Set up some generic War Flag Names.
|
||||
// Example from COD5: CALLSIGN_SEELOW_A is the name of the 1st flag in Selow whose string is "Cottage"
|
||||
// The string must have MPUI_CALLSIGN_ and _A. Replace Mapname with the name of your map/bsp and in the
|
||||
// actual string enter a keyword that names the location (Roundhouse, Missle Silo, Launchpad, Guard Tower, etc)
|
||||
|
||||
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A";
|
||||
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B";
|
||||
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C";
|
||||
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D";
|
||||
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E";
|
||||
|
||||
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A";
|
||||
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B";
|
||||
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C";
|
||||
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D";
|
||||
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E";
|
||||
|
||||
// enable new spawning system
|
||||
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
|
||||
|
||||
level thread sprinklers_init();
|
||||
level thread gopher_init();
|
||||
|
||||
//spawning collision in wager match so players can't hide in the spawned in columns
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 || isPregame() )
|
||||
{
|
||||
spawncollision("collision_geo_64x64x256","collider",(-1075, -797, -105), (0, 340.8, 0));
|
||||
spawncollision("collision_geo_64x64x256","collider",(-551, -965, -105), (0, 340.8, 0));
|
||||
}
|
||||
|
||||
//spawning collision wall to stop players from getting out of the map by the pond
|
||||
spawncollision("collision_wall_256x256x10","collider",(416, 592, -172), (0, 45, -7));
|
||||
|
||||
//spawn p_gc_signpost_short model to cover hole in geo under scoreboard
|
||||
|
||||
scoreboard1 = Spawn("script_model", (-2046, 839, -215) );
|
||||
if ( IsDefined(scoreboard1) )
|
||||
{
|
||||
scoreboard1.angles = (0, 180, 0);
|
||||
scoreboard1 SetModel("p_gc_signpost_short");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sprinklers_init()
|
||||
{
|
||||
wait( 3 );
|
||||
|
||||
exploders = [];
|
||||
exploders[ exploders.size ] = 1001; //sprinkler by sand trap
|
||||
exploders[ exploders.size ] = 1002; //sprinkler in middle of map
|
||||
exploders[ exploders.size ] = 1003; //sprinkler by bridge
|
||||
exploders[ exploders.size ] = 1004;
|
||||
exploders[ exploders.size ] = 1005;
|
||||
exploders[ exploders.size ] = 1006;
|
||||
exploders[ exploders.size ] = 1007;
|
||||
exploders[ exploders.size ] = 3001;
|
||||
exploders[ exploders.size ] = 3002;
|
||||
exploders[ exploders.size ] = 3003;
|
||||
exploders[ exploders.size ] = 3004;
|
||||
exploders[ exploders.size ] = 3005;
|
||||
exploders[ exploders.size ] = 3006;
|
||||
exploders[ exploders.size ] = 3007;
|
||||
exploders[ exploders.size ] = 3008;
|
||||
exploders[ exploders.size ] = 3009;
|
||||
exploders[ exploders.size ] = 3010;
|
||||
exploders[ exploders.size ] = 3011;
|
||||
exploders[ exploders.size ] = 3012;
|
||||
|
||||
for ( i = 0; i < exploders.size; i++ )
|
||||
{
|
||||
sprinkler_init( exploders[ i ] );
|
||||
}
|
||||
}
|
||||
|
||||
sprinkler_init( exploder_num )
|
||||
{
|
||||
create_fx_ent = exploder_find( exploder_num );
|
||||
assertex( IsDefined( create_fx_ent ), "unknown sprinkler exploder: " + exploder_num );
|
||||
|
||||
create_fx_ent.fake_health = 40;
|
||||
|
||||
radius = 10;
|
||||
height = 10;
|
||||
|
||||
create_fx_ent.damage_trigger = Spawn( "trigger_damage", create_fx_ent.v[ "origin" ] - ( 0, 0, 5 ), 0, radius, height );
|
||||
|
||||
/#
|
||||
//create_fx_ent.damage_trigger thread trigger_debug( radius, height );
|
||||
//create_fx_ent.damage_trigger thread sprinkler_debug( create_fx_ent );
|
||||
#/
|
||||
|
||||
create_fx_ent.destroyed_exploder = exploder_num + 1000;
|
||||
|
||||
if ( exploder_num == 1001 || exploder_num == 1002 || exploder_num == 1003 )
|
||||
{
|
||||
radius = 125;
|
||||
height = 150;
|
||||
|
||||
start = create_fx_ent.v[ "origin" ] + vector_scale( create_fx_ent.v[ "forward" ], 384 );
|
||||
|
||||
end = start + ( 0, 0, -8000 );
|
||||
trace = BulletTrace( start, end, false, undefined, false, false );
|
||||
origin = trace[ "position" ];
|
||||
|
||||
create_fx_ent thread sprinkler_water_think( origin, radius, height );
|
||||
create_fx_ent.soundent = spawn ( "script_origin", create_fx_ent.v[ "origin" ] );
|
||||
create_fx_ent.soundent playloopsound ("amb_sprinkler");
|
||||
}
|
||||
|
||||
// spawn sound ents
|
||||
|
||||
create_fx_ent thread sprinkler_think(exploder_num);
|
||||
exploder( exploder_num );
|
||||
}
|
||||
|
||||
sprinkler_think(exploder_num)
|
||||
{
|
||||
for ( ;; )
|
||||
{
|
||||
self.damage_trigger waittill( "damage", amount, attacker, direction, point, type );
|
||||
|
||||
if ( IsDefined( type ) )
|
||||
{
|
||||
if ( type == "MOD_MELEE" || type == "MOD_EXPLOSIVE" || type == "MOD_IMPACT" )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
self.fake_health -= amount;
|
||||
|
||||
if ( self.fake_health <= 0 )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (isdefined (self.soundent))
|
||||
{
|
||||
self.soundent stoploopsound();
|
||||
clientnotify("so_"+exploder_num);
|
||||
}
|
||||
playsoundatposition ("amb_sprinkler_geyser", self.v[ "origin" ] );
|
||||
|
||||
self.damage_trigger delete();
|
||||
|
||||
// delete sound ents
|
||||
|
||||
// stop exploder
|
||||
exploder( self.destroyed_exploder );
|
||||
self exploder_fade();
|
||||
|
||||
if ( IsDefined( self.water_trigger ) )
|
||||
{
|
||||
self.water_trigger delete();
|
||||
}
|
||||
|
||||
wait( 0.25 );
|
||||
|
||||
self thread sprinkler_water_think( self.v[ "origin" ], 50, 100 );
|
||||
|
||||
wait( 1 );
|
||||
|
||||
exploder_stop( self.v[ "exploder" ] );
|
||||
|
||||
wait( 5 );
|
||||
self.water_trigger delete();
|
||||
}
|
||||
|
||||
sprinkler_water_think( origin, radius, height )
|
||||
{
|
||||
self.water_trigger = Spawn( "trigger_radius", origin, 0, radius, height );
|
||||
/#
|
||||
//self.water_trigger thread trigger_debug( radius, height );
|
||||
#/
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
self.water_trigger waittill( "trigger", entity );
|
||||
|
||||
if ( !IsDefined( entity ) || !IsPlayer( entity ) || !IsAlive( entity ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
player = entity;
|
||||
|
||||
if ( player.sessionstate != "playing" )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( !IsDefined( player.golfcourse_water_drops ) )
|
||||
{
|
||||
player.golfcourse_water_drops = false;
|
||||
}
|
||||
|
||||
if ( player.golfcourse_water_drops )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
player thread sprinkler_water_drops( self.water_trigger );
|
||||
}
|
||||
}
|
||||
|
||||
sprinkler_water_drops( trigger )
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "disconnect" );
|
||||
trigger endon( "death" );
|
||||
|
||||
self thread water_drop_end_think();
|
||||
trigger thread water_drop_death_think( self );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
if ( !self IsTouching( trigger ) )
|
||||
{
|
||||
self notify( "water_drop_end" );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !self.golfcourse_water_drops )
|
||||
{
|
||||
self.golfcourse_water_drops = true;
|
||||
self SetWaterDrops( 50 );
|
||||
}
|
||||
|
||||
wait( RandomIntRange( 1, 3 ) );
|
||||
}
|
||||
}
|
||||
|
||||
water_drop_end_think()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
|
||||
self waittill_any( "death", "water_drop_end" );
|
||||
self.golfcourse_water_drops = false;
|
||||
self SetWaterDrops( 0 );
|
||||
}
|
||||
|
||||
water_drop_death_think( player )
|
||||
{
|
||||
player endon( "death" );
|
||||
player endon( "disconnect" );
|
||||
player endon( "water_drop_end" );
|
||||
|
||||
self waittill( "death" );
|
||||
player notify( "water_drop_end" );
|
||||
}
|
||||
|
||||
exploder_find( num )
|
||||
{
|
||||
num = int( num );
|
||||
|
||||
for( i = 0; i < level.createFXent.size; i++ )
|
||||
{
|
||||
ent = level.createFXent[ i ];
|
||||
|
||||
if( !isdefined( ent ) )
|
||||
continue;
|
||||
|
||||
if( ent.v[ "type" ] != "exploder" )
|
||||
continue;
|
||||
|
||||
if( !isdefined( ent.v[ "exploder" ] ) )
|
||||
continue;
|
||||
|
||||
if( ent.v[ "exploder" ] != num )
|
||||
continue;
|
||||
|
||||
return ent;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
exploder_fade()
|
||||
{
|
||||
assert( IsDefined( self.looper ) );
|
||||
TriggerFx( self.looper, GetTime()/1000 + 100 );
|
||||
}
|
||||
|
||||
gopher_init()
|
||||
{
|
||||
level waittill( "prematch_over" );
|
||||
|
||||
if ( !IsDefined( game[ "gopher_fx" ] ) )
|
||||
{
|
||||
game[ "gopher_fx" ] = false;
|
||||
}
|
||||
|
||||
if ( isRoundBased() && getRoundsPlayed() >= 3 && getRoundsPlayed() % 3 == 0 )
|
||||
{
|
||||
game[ "gopher_fx" ] = false;
|
||||
}
|
||||
|
||||
if ( game[ "gopher_fx" ] )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( cointoss() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
exploders = [];
|
||||
exploders[ exploders.size ] = 5001;
|
||||
exploders[ exploders.size ] = 5002;
|
||||
exploders[ exploders.size ] = 5003;
|
||||
exploders[ exploders.size ] = 5004;
|
||||
|
||||
percent = RandomIntRange( 20, 90 );
|
||||
minutes = ( percent * 0.01 ) * level.timelimit;
|
||||
add_timed_event( minutes * 60, "gopher_fx" );
|
||||
|
||||
percent = RandomIntRange( 20, 90 );
|
||||
score = ( percent * 0.01 ) * level.scorelimit;
|
||||
add_score_event( score, "gopher_fx" );
|
||||
|
||||
level waittill( "gopher_fx" );
|
||||
game[ "gopher_fx" ] = true;
|
||||
|
||||
exploder( random( exploders ) );
|
||||
}
|
||||
|
||||
/#
|
||||
sprinkler_debug( create_fx_ent )
|
||||
{
|
||||
self endon( "death" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
print3d( self.origin, create_fx_ent.fake_health );
|
||||
wait( 0.05 );
|
||||
}
|
||||
}
|
||||
|
||||
trigger_debug( radius, height )
|
||||
{
|
||||
self endon( "death" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
drawcylinder( self.origin, radius, height, 1 );
|
||||
wait( 1 );
|
||||
}
|
||||
|
||||
}
|
||||
#/
|
||||
|
@ -1,234 +0,0 @@
|
||||
#include maps\mp\_utility;
|
||||
#include common_scripts\utility;
|
||||
|
||||
main()
|
||||
{
|
||||
/#
|
||||
level thread devgui_mountain();
|
||||
execdevgui( "devgui_mp_mountain" );
|
||||
#/
|
||||
|
||||
//needs to be first for create fx
|
||||
maps\mp\mp_mountain_fx::main();
|
||||
|
||||
precachemodel("collision_vehicle_64x64x64");
|
||||
precachemodel("collision_wall_512x512x10");
|
||||
precachemodel("collision_geo_128x128x128");
|
||||
|
||||
maps\mp\_load::main();
|
||||
|
||||
maps\mp\mp_mountain_amb::main();
|
||||
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_mountain_wager");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_mountain");
|
||||
}
|
||||
|
||||
//setExpFog(2048, 6000, 1, 0.5, 0.5, 0);
|
||||
|
||||
|
||||
// If the team nationalites change in this file,
|
||||
// you must update the team nationality in the level's csc file as well!
|
||||
maps\mp\gametypes\_teamset_winterspecops::level_init();
|
||||
|
||||
// Set up the default range of the compass
|
||||
//setdvar("compassmaxrange","2100");
|
||||
|
||||
// Set up some generic War Flag Names.
|
||||
// Example from COD5: CALLSIGN_SEELOW_A is the name of the 1st flag in Selow whose string is "Cottage"
|
||||
// The string must have MPUI_CALLSIGN_ and _A. Replace Mapname with the name of your map/bsp and in the
|
||||
// actual string enter a keyword that names the location (Roundhouse, Missle Silo, Launchpad, Guard Tower, etc)
|
||||
|
||||
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A";
|
||||
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B";
|
||||
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C";
|
||||
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D";
|
||||
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E";
|
||||
|
||||
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A";
|
||||
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B";
|
||||
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C";
|
||||
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D";
|
||||
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E";
|
||||
|
||||
// spawn vehicle collision to prevent rc car from entering a large rock
|
||||
spawncollision("collision_vehicle_64x64x64","collider",(1740, -1585, 240), (0, 36.8, 0));
|
||||
spawncollision("collision_vehicle_64x64x64","collider",(1715, -1580, 240), (0, 26.4, 0));
|
||||
|
||||
// spawn collision to prevent players from leaping to a rock in the vista
|
||||
spawncollision("collision_wall_512x512x10","collider",(3931, -2522, 288), (0, 45, 0));
|
||||
spawncollision("collision_wall_512x512x10","collider",(3931, -2522, 800), (0, 45, 0));
|
||||
|
||||
// spawn collision to prevent players from leaping to a rock in the vista over top of the killbrush.
|
||||
spawncollision("collision_wall_512x512x10","collider",(3709, -2538, 560), (0, 180, 0));
|
||||
|
||||
// spawn collision to prevent players from sitting in a rock by the ice bridge
|
||||
spawncollision("collision_geo_128x128x128","collider",(2242.2, 128.3, 260), (0, 310.2, 0));
|
||||
|
||||
|
||||
|
||||
// enable new spawning system
|
||||
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
|
||||
|
||||
SetDvar( "scr_spawn_enemy_influencer_radius", 1620 );
|
||||
|
||||
level thread gondola_sway();
|
||||
level thread glass_exploder_init();
|
||||
|
||||
glasses = GetStructArray( "glass_shatter_on_spawn", "targetname" );
|
||||
|
||||
for ( i = 0; i < glasses.size; i++ )
|
||||
{
|
||||
RadiusDamage( glasses[i].origin, 64, 101, 100 );
|
||||
}
|
||||
}
|
||||
|
||||
devgui_mountain( cmd )
|
||||
{
|
||||
for ( ;; )
|
||||
{
|
||||
wait( 0.5 );
|
||||
|
||||
devgui_string = GetDvar( #"devgui_notify" );
|
||||
|
||||
switch( devgui_string )
|
||||
{
|
||||
case "":
|
||||
break;
|
||||
|
||||
default:
|
||||
level notify( devgui_string );
|
||||
break;
|
||||
}
|
||||
|
||||
SetDvar( "devgui_notify", "" );
|
||||
}
|
||||
}
|
||||
|
||||
//Picks randomly from 2 sway strengths
|
||||
gondola_sway()
|
||||
{
|
||||
level endon ("gondola_triggered");
|
||||
|
||||
gondola_cab = GetEnt( "gondola_cab", "targetname" );
|
||||
|
||||
while( 1 )
|
||||
{
|
||||
randomSwingAngle = RandomFloatRange( 2, 5 );
|
||||
randomSwingTime = RandomFloatRange( 2, 3 );
|
||||
|
||||
gondola_cab RotateTo( (randomSwingAngle*0.5,(randomSwingAngle*0.6)+90,randomSwingAngle*.8), randomSwingTime, randomSwingTime*0.3, randomSwingTime*0.3 );
|
||||
gondola_cab playsound ("amb_gondola_swing");
|
||||
wait( randomSwingTime );
|
||||
gondola_cab RotateTo( ((randomSwingAngle*0.5)*-1,(randomSwingAngle*-1*0.6)+90,randomSwingAngle*.8*-1), randomSwingTime, randomSwingTime*0.3, randomSwingTime*0.3 );
|
||||
gondola_cab playsound ("amb_gondola_swing_back");
|
||||
wait( randomSwingTime );
|
||||
}
|
||||
}
|
||||
|
||||
glass_exploder_init()
|
||||
{
|
||||
single_exploders = [];
|
||||
|
||||
for ( i = 0; i < level.createFXent.size; i++ )
|
||||
{
|
||||
ent = level.createFXent[ i ];
|
||||
|
||||
if ( !IsDefined( ent ) )
|
||||
continue;
|
||||
|
||||
if ( ent.v[ "type" ] != "exploder" )
|
||||
continue;
|
||||
|
||||
if ( ent.v[ "exploder" ] == 201 || ent.v[ "exploder" ] == 202 )
|
||||
{
|
||||
ent thread glass_group_exploder_think();
|
||||
}
|
||||
else if ( ent.v[ "exploder" ] >= 101 && ent.v[ "exploder" ] <= 106 )
|
||||
{
|
||||
single_exploders[ single_exploders.size ] = ent;
|
||||
}
|
||||
else if ( ent.v[ "exploder" ] == 301 || ent.v[ "exploder" ] == 302 )
|
||||
{
|
||||
single_exploders[ single_exploders.size ] = ent;
|
||||
}
|
||||
}
|
||||
|
||||
level thread glass_exploder_think( single_exploders );
|
||||
}
|
||||
|
||||
glass_group_exploder_think()
|
||||
{
|
||||
thresholdSq = 160 * 160;
|
||||
count = 0;
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
level waittill( "glass_smash", origin );
|
||||
|
||||
if ( DistanceSquared( self.v[ "origin" ], origin ) < thresholdSq )
|
||||
{
|
||||
count++;
|
||||
}
|
||||
|
||||
if ( count >= 3 )
|
||||
{
|
||||
exploder( self.v[ "exploder" ] );
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
glass_exploder_think( exploders )
|
||||
{
|
||||
thresholdSq = 160 * 160;
|
||||
|
||||
if ( exploders.size <= 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
closest = 999 * 999;
|
||||
closest_exploder = undefined;
|
||||
|
||||
level waittill( "glass_smash", origin );
|
||||
|
||||
for ( i = 0; i < exploders.size; i++ )
|
||||
{
|
||||
if ( !IsDefined( exploders[i] ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( IsDefined( exploders[i].glass_broken ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
distSq = DistanceSquared( exploders[i].v[ "origin" ], origin );
|
||||
|
||||
if ( distSq > thresholdSq )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( distSq < closest )
|
||||
{
|
||||
closest_exploder = exploders[i];
|
||||
closest = distSq;
|
||||
}
|
||||
}
|
||||
|
||||
if ( IsDefined( closest_exploder ) )
|
||||
{
|
||||
closest_exploder.glass_broken = true;
|
||||
exploder( closest_exploder.v[ "exploder" ] );
|
||||
}
|
||||
}
|
||||
}
|
@ -1,405 +0,0 @@
|
||||
#include maps\mp\_utility;
|
||||
#include common_scripts\utility;
|
||||
|
||||
main()
|
||||
{
|
||||
//needs to be first for create fx
|
||||
maps\mp\mp_nuked_fx::main();
|
||||
|
||||
precachemodel("collision_wall_128x128x10");
|
||||
|
||||
// move a dom spawn that is sharing space with one of the mannequins
|
||||
move_spawn_point( "mp_dom_spawn", (791, 449, -20), ( 779, 445, -20 ) );
|
||||
|
||||
maps\mp\_load::main();
|
||||
|
||||
maps\mp\mp_nuked_amb::main();
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_nuked");
|
||||
|
||||
level.onSpawnIntermission = ::nuked_intermission;
|
||||
|
||||
/#
|
||||
level thread devgui_nuked();
|
||||
execdevgui( "devgui_mp_nuked" );
|
||||
#/
|
||||
|
||||
// If the team nationalites change in this file,
|
||||
// you must update the team nationality in the level's csc file as well!
|
||||
maps\mp\gametypes\_teamset_urbanspecops::level_init();
|
||||
|
||||
// Set up the default range of the compass
|
||||
setdvar("compassmaxrange","2100");
|
||||
|
||||
// Set up some generic War Flag Names.
|
||||
// Example from COD5: CALLSIGN_SEELOW_A is the name of the 1st flag in Selow whose string is "Cottage"
|
||||
// The string must have MPUI_CALLSIGN_ and _A. Replace Mapname with the name of your map/bsp and in the
|
||||
// actual string enter a keyword that names the location (Roundhouse, Missle Silo, Launchpad, Guard Tower, etc)
|
||||
|
||||
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A";
|
||||
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B";
|
||||
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C";
|
||||
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D";
|
||||
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E";
|
||||
|
||||
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A";
|
||||
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B";
|
||||
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C";
|
||||
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D";
|
||||
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E";
|
||||
|
||||
// enable new spawning system
|
||||
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
|
||||
SetDvar( "scr_spawn_enemy_influencer_radius", 1600 );
|
||||
SetDvar( "scr_spawn_dead_friend_influencer_radius", 1300 );
|
||||
SetDvar( "scr_spawn_dead_friend_influencer_timeout_seconds", 8 );
|
||||
SetDvar( "scr_spawn_dead_friend_influencer_count", 7 );
|
||||
|
||||
//spawn collision in yellow house to prevent players from jump-crouching into a door.
|
||||
spawncollision("collision_wall_128x128x10","collider",(769.2, 329.3, 143), (0, 290.6, 0));
|
||||
spawncollision("collision_wall_128x128x10","collider",(769.2, 329.3, 271), (0, 290.6, 0));
|
||||
|
||||
level.const_fx_exploder_end_game_glass_shatter = 5001;
|
||||
level.disableOutroVisionSet = true;
|
||||
|
||||
level thread nuked_mannequin_init();
|
||||
nuked_doomsday_clock_init();
|
||||
level thread maps\mp\mp_nuked_platform::main();
|
||||
|
||||
level thread nuked_population_sign_think();
|
||||
level thread nuked_bomb_drop_think();
|
||||
|
||||
/#
|
||||
level thread nuked_bomb_drop_dev();
|
||||
#/
|
||||
|
||||
}
|
||||
|
||||
move_spawn_point( targetname, start_point, new_point )
|
||||
{
|
||||
spawn_points = getentarray( targetname, "classname" );
|
||||
|
||||
for ( i = 0; i < spawn_points.size; i++ )
|
||||
{
|
||||
if ( distancesquared( spawn_points[i].origin, start_point ) < 1 )
|
||||
{
|
||||
spawn_points[i].origin = new_point;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nuked_mannequin_init()
|
||||
{
|
||||
keep_count = 28;
|
||||
level.mannequin_count = 0;
|
||||
|
||||
destructibles = GetEntArray( "destructible", "targetname" );
|
||||
mannequins = nuked_mannequin_filter( destructibles );
|
||||
|
||||
if ( mannequins.size <= 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
remove_count = mannequins.size - keep_count;
|
||||
remove_count = clamp( remove_count, 0, remove_count );
|
||||
|
||||
mannequins = array_randomize( mannequins );
|
||||
|
||||
for ( i = 0; i < remove_count; i++ )
|
||||
{
|
||||
assert( IsDefined( mannequins[i].target ) );
|
||||
|
||||
collision = GetEnt( mannequins[i].target, "targetname" );
|
||||
assert( IsDefined( collision ) );
|
||||
|
||||
collision delete();
|
||||
mannequins[i] delete();
|
||||
level.mannequin_count--;
|
||||
}
|
||||
|
||||
level waittill( "prematch_over" );
|
||||
level.mannequin_time = GetTime();
|
||||
}
|
||||
|
||||
nuked_mannequin_filter( destructibles )
|
||||
{
|
||||
mannequins = [];
|
||||
|
||||
for ( i = 0; i < destructibles.size; i++ )
|
||||
{
|
||||
destructible = destructibles[i];
|
||||
|
||||
if ( IsSubStr( destructible.destructibledef, "male" ) )
|
||||
{
|
||||
mannequins[ mannequins.size ] = destructible;
|
||||
level.mannequin_count++;
|
||||
}
|
||||
}
|
||||
|
||||
return mannequins;
|
||||
}
|
||||
|
||||
nuked_intermission()
|
||||
{
|
||||
maps\mp\gametypes\_globallogic_defaults::default_onSpawnIntermission();
|
||||
|
||||
if ( wasLastRound() )
|
||||
{
|
||||
level notify( "bomb_drop" );
|
||||
}
|
||||
}
|
||||
|
||||
nuked_bomb_drop_think()
|
||||
{
|
||||
cameraStart = GetStruct( "endgame_camera_start", "targetname" );
|
||||
cameraEnd = GetStruct( cameraStart.target, "targetname" );
|
||||
|
||||
bomb = GetEnt( "nuked_bomb", "targetname" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
camera = Spawn( "script_model", cameraStart.origin );
|
||||
camera.angles = cameraStart.angles;
|
||||
camera SetModel( "tag_origin" );
|
||||
|
||||
level waittill( "bomb_drop" );
|
||||
|
||||
if( level.finalkillcam && IsDefined(level.lastKillCam ) )
|
||||
{
|
||||
wait( 0.1 );
|
||||
while( level.inFinalKillcam )
|
||||
{
|
||||
wait( 0.1 );
|
||||
}
|
||||
}
|
||||
|
||||
for ( i = 0; i < get_players().size; i++ )
|
||||
{
|
||||
player = get_players()[i];
|
||||
player CameraSetPosition( camera );
|
||||
player CameraSetLookAt();
|
||||
player CameraActivate( true );
|
||||
}
|
||||
|
||||
cam_move_time = set_dvar_float_if_unset( "scr_cam_move_time", "2.5" );
|
||||
bomb_explode_delay = set_dvar_float_if_unset( "scr_bomb_explode_delay", "1.5" );
|
||||
glass_break_delay = set_dvar_float_if_unset( "scr_glass_break_delay", "0.5" );
|
||||
//white_out_delay = set_dvar_float_if_unset( "scr_white_out_delay", "1.0" );
|
||||
|
||||
camera MoveTo( cameraEnd.origin, cam_move_time, 0, 0 );
|
||||
camera RotateTo( cameraEnd.angles, cam_move_time, 0, 0 );
|
||||
|
||||
bomb playSound ("amb_end_nuke");
|
||||
|
||||
dest = ( bomb.origin[0], bomb.origin[1], bomb.origin[2] - 3700 );
|
||||
|
||||
time = set_dvar_float_if_unset( "scr_bomb_time", "1.5" );
|
||||
accel_time = set_dvar_float_if_unset( "scr_bomb_accel_time", ".75" );
|
||||
|
||||
bomb MoveTo( dest, time, accel_time, 0 );
|
||||
|
||||
wait( bomb_explode_delay );
|
||||
playfx ( level._effect["fx_mp_nuked_nuclear_explosion"], bomb.origin);
|
||||
wait( glass_break_delay );
|
||||
level thread waitForGlassBreak();
|
||||
cameraForward = anglestoforward( cameraEnd.angles );
|
||||
explodePoint = cameraEnd.origin + 20*cameraForward;
|
||||
//black = ( 0.2, 0.2, 0.2 );
|
||||
//debugstar(explodePoint, 2 * 1000, black);
|
||||
physicsExplosionSphere( explodePoint, 128, 128, 1 );
|
||||
RadiusDamage( explodePoint, 128, 128, 128 );
|
||||
//wait( white_out_delay );
|
||||
|
||||
camera thread vibrate();
|
||||
|
||||
//PrintLn( "SND NUKE play" );
|
||||
//VisionSetNaked( "flash_grenade", .4 );
|
||||
|
||||
/#
|
||||
//bomb waittill( "movedone" );
|
||||
|
||||
wait( 3.5 - glass_break_delay );
|
||||
level notify( "bomb_reset" );
|
||||
camera delete();
|
||||
#/
|
||||
}
|
||||
}
|
||||
|
||||
vibrate()
|
||||
{
|
||||
self endon( "death" );
|
||||
|
||||
pitchVibrateAmplitude = 1;
|
||||
|
||||
vibrateAmplitude = 2;
|
||||
vibrateTime = 0.05;
|
||||
|
||||
originalAngles = self.angles;
|
||||
|
||||
angles0 = ( originalAngles[0], originalAngles[1], originalAngles[2] - vibrateAmplitude );
|
||||
angles1 = ( originalAngles[0], originalAngles[1], originalAngles[2] + vibrateAmplitude );
|
||||
|
||||
for(;;)
|
||||
{
|
||||
angles0 = ( originalAngles[0] - pitchVibrateAmplitude , originalAngles[1], originalAngles[2] - vibrateAmplitude );
|
||||
angles1 = ( originalAngles[0] + pitchVibrateAmplitude, originalAngles[1], originalAngles[2] + vibrateAmplitude );
|
||||
|
||||
self RotateTo(angles0, vibrateTime );
|
||||
self waittill( "rotatedone" );
|
||||
self RotateTo(angles1, vibrateTime );
|
||||
self waittill( "rotatedone" );
|
||||
|
||||
if ( vibrateAmplitude > 0 )
|
||||
vibrateAmplitude -= 0.25;
|
||||
pitchVibrateAmplitude = 0 - pitchVibrateAmplitude;
|
||||
pitchVibrateAmplitude *= 0.66;
|
||||
}
|
||||
}
|
||||
|
||||
waitForGlassBreak()
|
||||
{
|
||||
level endon( "bomb_reset" );
|
||||
level waittill( "glass_smash", origin );
|
||||
|
||||
exploder( level.const_fx_exploder_end_game_glass_shatter );
|
||||
}
|
||||
|
||||
nuked_population_sign_think()
|
||||
{
|
||||
tens_model = GetEnt( "counter_tens", "targetname" );
|
||||
ones_model = GetEnt( "counter_ones", "targetname" );
|
||||
|
||||
step = ( 360 / 10 ); // 10 digits (0-9) on the dial
|
||||
|
||||
// put the dials at 0
|
||||
ones = 0;
|
||||
tens = 0;
|
||||
|
||||
tens_model RotateRoll( step, 0.05 );
|
||||
ones_model RotateRoll( step, 0.05 );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
wait( 1 );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
num_players = get_players().size;
|
||||
|
||||
dial = ones + ( tens * 10 );
|
||||
|
||||
if ( num_players < dial )
|
||||
{
|
||||
ones--;
|
||||
time = set_dvar_float_if_unset( "scr_dial_rotate_time", "0.5" );
|
||||
|
||||
if ( ones < 0 )
|
||||
{
|
||||
ones = 9;
|
||||
tens_model RotateRoll( 0 - step, time );
|
||||
tens--;
|
||||
}
|
||||
|
||||
ones_model RotateRoll( 0 - step, time );
|
||||
ones_model waittill( "rotatedone" );
|
||||
}
|
||||
else if ( num_players > dial )
|
||||
{
|
||||
ones++;
|
||||
time = set_dvar_float_if_unset( "scr_dial_rotate_time", "0.5" );
|
||||
|
||||
if ( ones > 9 )
|
||||
{
|
||||
ones = 0;
|
||||
tens_model RotateRoll( step, time );
|
||||
tens++;
|
||||
}
|
||||
|
||||
ones_model RotateRoll( step, time );
|
||||
ones_model waittill( "rotatedone" );
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nuked_doomsday_clock_init()
|
||||
{
|
||||
min_hand_model = GetEnt( "clock_min_hand", "targetname" );
|
||||
sec_hand_model = GetEnt( "clock_sec_hand", "targetname" );
|
||||
|
||||
start_angle = 318;
|
||||
|
||||
min_hand_model RotatePitch( start_angle, 0.05 );
|
||||
min_hand_model waittill( "rotatedone" );
|
||||
|
||||
if ( level.timelimit > 0 )
|
||||
{
|
||||
min_hand_model RotatePitch( 360 - start_angle, level.timelimit * 60 );
|
||||
sec_hand_model RotatePitch( 360 * level.timelimit, level.timelimit * 60 );
|
||||
}
|
||||
else
|
||||
{
|
||||
sec_hand_model thread nuked_doomsday_clock_seconds_think();
|
||||
}
|
||||
}
|
||||
|
||||
nuked_doomsday_clock_seconds_think()
|
||||
{
|
||||
for ( ;; )
|
||||
{
|
||||
self RotatePitch( 360, 60 );
|
||||
self waittill( "rotatedone" );
|
||||
}
|
||||
}
|
||||
|
||||
/#
|
||||
nuked_bomb_drop_dev()
|
||||
{
|
||||
bomb = GetEnt( "nuked_bomb", "targetname" );
|
||||
bomb_origin = bomb.origin;
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
level waittill( "bomb_reset" );
|
||||
bomb.origin = bomb_origin;
|
||||
|
||||
player = getHostPlayer();
|
||||
player CameraActivate( false );
|
||||
VisionSetNaked( "mp_nuked", 0 );
|
||||
}
|
||||
}
|
||||
|
||||
devgui_nuked( cmd )
|
||||
{
|
||||
for ( ;; )
|
||||
{
|
||||
wait( 0.5 );
|
||||
|
||||
devgui_string = GetDvar( #"devgui_notify" );
|
||||
|
||||
switch( devgui_string )
|
||||
{
|
||||
case "":
|
||||
break;
|
||||
|
||||
case "warp_to_bomb":
|
||||
player = getHostPlayer();
|
||||
AddDebugCommand( "noclip" );
|
||||
player SetOrigin( ( 3969, 8094, 1052 ) );
|
||||
player SetPlayerAngles( ( -19, 94, 0 ) );
|
||||
break;
|
||||
|
||||
default:
|
||||
level notify( devgui_string );
|
||||
break;
|
||||
}
|
||||
|
||||
SetDvar( "devgui_notify", "" );
|
||||
}
|
||||
}
|
||||
#/
|
@ -1,852 +0,0 @@
|
||||
#include maps\mp\_utility;
|
||||
#include common_scripts\utility;
|
||||
|
||||
|
||||
main()
|
||||
{
|
||||
precachemodel("tag_origin");
|
||||
|
||||
/#
|
||||
level thread devgui_radiation();
|
||||
execdevgui("devgui_mp_radiation");
|
||||
#/
|
||||
|
||||
//needs to be first for create fx
|
||||
maps\mp\mp_radiation_fx::main();
|
||||
|
||||
precachemodel("collision_geo_64x64x256");
|
||||
precachemodel("collision_wall_128x128x10");
|
||||
precachemodel("collision_geo_256x256x10");
|
||||
|
||||
|
||||
maps\mp\_load::main();
|
||||
|
||||
maps\mp\mp_radiation_amb::main();
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_radiation_wager");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_radiation");
|
||||
}
|
||||
|
||||
|
||||
//Increase sample size so as to resolve lighting issue
|
||||
SetDvar("sm_sunSampleSizeNear", ".5" );
|
||||
|
||||
// If the team nationalites change in this file,
|
||||
// you must update the team nationality in the level's csc file as well!
|
||||
maps\mp\gametypes\_teamset_urbanspecops::level_init();
|
||||
|
||||
// Set up the default range of the compass
|
||||
setdvar("compassmaxrange","2100");
|
||||
|
||||
// COLLISION - to prevent players from placing turrets inside a large cylinder brush in the tank room
|
||||
spawncollision("collision_geo_64x64x256","collider",(1221, 41, 236), (0, 0, 0));
|
||||
|
||||
// COLLISION - to prevent players from jumping onto a little ledge of collision
|
||||
spawncollision("collision_wall_128x128x10","collider",(1042, -309, 309), (0, 0, 0));
|
||||
spawncollision("collision_wall_128x128x10","collider",(1080, -309, 309), (0, 0, 0));
|
||||
|
||||
// COLLISION - to prevent players from dropping turrets in the large grey tanks by the warehouse
|
||||
spawncollision("collision_geo_64x64x256","collider",(568, 219, 264), (0, 0, 0));
|
||||
spawncollision("collision_geo_64x64x256","collider",(567, -105, 264), (0, 0, 0));
|
||||
|
||||
// COLLISION - to prevent players dropping off the catwalk onto ledge in warehouse
|
||||
spawncollision("collision_wall_128x128x10","collider",(1157, -345, 186), (0, 270, 0));
|
||||
spawncollision("collision_wall_128x128x10","collider",(1157, -345, 314), (0, 270, 0));
|
||||
spawncollision("collision_wall_128x128x10","collider",(1157, -345, 442), (0, 270, 0));
|
||||
|
||||
//NOTURRET - spawns radius triggers to stop players from placing turrets in the large cylinders in the NE corner of the map
|
||||
addNoTurretTrigger((1440, -1116, 145), 230, 256);
|
||||
addNoTurretTrigger((1446, -1659, 145), 230, 256);
|
||||
|
||||
|
||||
|
||||
// enable new spawning system
|
||||
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
|
||||
|
||||
flag_init_func();
|
||||
|
||||
level_objects_init();
|
||||
|
||||
}
|
||||
|
||||
flag_init_func()
|
||||
{
|
||||
flag_init("kill_stuck_players");
|
||||
}
|
||||
|
||||
level_objects_init()
|
||||
{
|
||||
level._digger_fx = LoadFX( "maps/mp_maps/fx_mp_sand_digger_radiation" );
|
||||
waittillframeend;
|
||||
level._door_switch_trig1 = getent_and_assert("switch_trigger1");
|
||||
level._door_switch_trig2 = getent_and_assert("switch_trigger2");
|
||||
|
||||
level._door1 = getent_and_assert("big_door1_clip");
|
||||
level._door2 = getent_and_assert("big_door2_clip");
|
||||
|
||||
level.const_fx_exploder_switch_green_light = 2001;
|
||||
level.const_fx_exploder_switch_red_light = 2002;
|
||||
|
||||
//Gets some diggers digging
|
||||
level thread digger_dig_init();
|
||||
|
||||
//Gets diggers in the background moving
|
||||
moving_diggers_init();
|
||||
|
||||
//Sets up the switchs players can flip to open the double doors
|
||||
level thread door_switch_func();
|
||||
|
||||
if( !level.wagerMatch && !isPregame() )
|
||||
{
|
||||
//get my doors opening at the start of the match
|
||||
level thread double_doors_open_at_start();
|
||||
}
|
||||
|
||||
//Get conveyer belt working
|
||||
level thread conveyer_belt_init();
|
||||
}
|
||||
|
||||
turnSwitchPanelRed()
|
||||
{
|
||||
exploder_stop( level.const_fx_exploder_switch_green_light );
|
||||
exploder( level.const_fx_exploder_switch_red_light );
|
||||
}
|
||||
|
||||
turnSwitchPanelGreen()
|
||||
{
|
||||
exploder_stop( level.const_fx_exploder_switch_red_light );
|
||||
exploder( level.const_fx_exploder_switch_green_light );
|
||||
}
|
||||
|
||||
//Sets it up so a player can flip a switch and open large double doors
|
||||
door_switch_func()
|
||||
{
|
||||
//Set up the use trigger switches that activate my double doors
|
||||
level._door_switch_trig1 thread door_switch_setup();
|
||||
level._door_switch_trig2 thread door_switch_setup();
|
||||
|
||||
//Cooldown switches inform the player that the door switch is on cooldown if they try to interact with it
|
||||
cooldown_switches = GetEntArray("off_trigger","targetname");
|
||||
AssertEx( cooldown_switches.size > 0, "Missing off_triggers");
|
||||
|
||||
for( i = 0; i < cooldown_switches.size; i++)
|
||||
{
|
||||
cooldown_switches[i] UseTriggerRequireLookAt();
|
||||
cooldown_switches[i] SetCursorHint( "HINT_NOICON" );
|
||||
cooldown_switches[i] SetHintString( &"MP_HOLD_DOOR_SWITCH_UNAVAILABLE");
|
||||
cooldown_switches[i] trigger_off();
|
||||
}
|
||||
|
||||
turnSwitchPanelRed();
|
||||
|
||||
kill_trig1 = getent_and_assert("edge_death_trig1");
|
||||
kill_trig2 = getent_and_assert("edge_death_trig2");
|
||||
center_death_trig = getent_and_assert("center_death_trig");
|
||||
|
||||
//Set up DVARS for tweaking door opening sequence
|
||||
d1_new_angle = set_dvar_int_if_unset("scr_d1_new_angle", "123");
|
||||
d2_new_angle = set_dvar_int_if_unset("scr_d2_new_angle", "-123");
|
||||
|
||||
door_model1 = getent_and_assert("big_door1");
|
||||
door_model2 = getent_and_assert("big_door2");
|
||||
|
||||
door_model1 LinkTo(level._door1);
|
||||
door_model2 LinkTo(level._door2);
|
||||
|
||||
door_monster_clip = GetEnt("door_monster_clip","targetname");
|
||||
|
||||
//door_monster_clip thread dog_kill();
|
||||
|
||||
//snd_door_status tracks if the door is open or closed
|
||||
snd_door_status = 0;
|
||||
|
||||
light_structs = getstructarray("switch_struct","targetname");
|
||||
AssertEx( light_structs.size > 0, "Missing light structs");
|
||||
|
||||
for( i = 0; i < light_structs.size; i++)
|
||||
{
|
||||
light_structs[i] thread switch_lights(i);
|
||||
}
|
||||
|
||||
tunnel_structs = getstructarray("tunnel_light_spot","targetname");
|
||||
AssertEx(tunnel_structs.size > 0, "Missing light structs");
|
||||
|
||||
for( i = 0; i < light_structs.size; i++)
|
||||
{
|
||||
tunnel_structs[i] thread tunnel_lights(i);
|
||||
}
|
||||
|
||||
while(!level.wagermatch)
|
||||
{
|
||||
//This is a switch in the level on the catwalk
|
||||
waittill_any_ents(level._door_switch_trig1,"trigger",level._door_switch_trig2,"trigger");
|
||||
|
||||
//Disables the switch temporarily
|
||||
level._door_switch_trig1 trigger_off();
|
||||
level._door_switch_trig2 trigger_off();
|
||||
|
||||
for( i = 0; i < cooldown_switches.size; i++)
|
||||
{
|
||||
cooldown_switches[i] trigger_on();
|
||||
}
|
||||
|
||||
//Set up DVARS for tweaking door opening sequence. Acceleration and decelation variation added for realistic offset.
|
||||
door_time = set_dvar_int_if_unset("scr_d1_time", "8");
|
||||
|
||||
//The doors have specific accelleration and deceleration values so as give an organic-looking timing offset.
|
||||
//When the doors are opening, we want Door 2 to accelerate slightly faster so as to avoid clipping.
|
||||
if(snd_door_status == 0)
|
||||
{
|
||||
d1_accel = door_time * .6;
|
||||
d2_accel = door_time * .7;
|
||||
|
||||
d1_decel = door_time * .4;
|
||||
d2_decel = door_time * .3;
|
||||
|
||||
//Monster clip is placed and path nodes are severed to keep dogs from running on the doors
|
||||
door_monster_clip trigger_on();
|
||||
door_monster_clip DisconnectPaths();
|
||||
}
|
||||
//When the doors are closing, we want Door 1 to accelerate slightly faster so as to avoid clipping.
|
||||
else
|
||||
{
|
||||
d1_accel = door_time * .7;
|
||||
d2_accel = door_time * .6;
|
||||
|
||||
d1_decel = door_time * .3;
|
||||
d2_decel = door_time * .4;
|
||||
}
|
||||
|
||||
door_cooldown = set_dvar_int_if_unset("scr_door_cooldown", "20");
|
||||
|
||||
level._door1 RotateRoll(d1_new_angle, door_time, d1_accel, d1_decel);
|
||||
level._door2 RotateRoll(d2_new_angle, door_time, d2_accel, d2_decel);
|
||||
|
||||
thread dropEverythingOnDoorsToGround();
|
||||
level thread destroyEquipment();
|
||||
|
||||
// Play door opening sound
|
||||
level._door1 playloopsound ("evt_hydraulic_loop", .5);
|
||||
level._door1 playsound ("evt_hydraulic_start");
|
||||
level._door1 thread door_snd_alarm ( 5 );
|
||||
|
||||
//This sets it so my doors move in reverse next time they're activated
|
||||
d1_new_angle = d1_new_angle * -1;
|
||||
d2_new_angle = d1_new_angle * -1;
|
||||
|
||||
//Flag marks the period of time i'm checking for any player caught in moving collision
|
||||
flag_set("kill_stuck_players");
|
||||
|
||||
//Give time for doors to move a moderate amount before starts kill trigger
|
||||
wait 4;
|
||||
|
||||
//Only want to kill players if doors are closing
|
||||
if(snd_door_status == 1)
|
||||
{
|
||||
//These are three seperate trigger brushes I want to check for stuck players
|
||||
kill_trig1 thread kill_edge_players_func();
|
||||
kill_trig2 thread kill_edge_players_func();
|
||||
center_death_trig thread kill_edge_players_func();
|
||||
}
|
||||
level._door1 waittill("rotatedone");
|
||||
|
||||
//snd_door_status tracks if the door is currently open or closed for seprate open and close audio
|
||||
if (snd_door_status == 0)
|
||||
{
|
||||
//stops the move loop, plays endind sound, and set current door status
|
||||
level._door1 stoploopsound (1);
|
||||
center_death_trig playsound ("evt_hydraulic_open");
|
||||
snd_door_status = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
//stops the move loop, plays endind sound, and set current door status
|
||||
level._door1 stoploopsound (1);
|
||||
center_death_trig playsound ("evt_hydraulic_close");
|
||||
|
||||
//Clip is removed so dogs can path
|
||||
door_monster_clip ConnectPaths();
|
||||
door_monster_clip trigger_off();
|
||||
snd_door_status = 0;
|
||||
}
|
||||
|
||||
flag_clear("kill_stuck_players");
|
||||
|
||||
//Special notify to end my check for players caught on collision
|
||||
level notify ("edge_check");
|
||||
|
||||
wait (door_cooldown);
|
||||
level notify ("no_cooldown");
|
||||
|
||||
for( i = 0; i < cooldown_switches.size; i++)
|
||||
{
|
||||
cooldown_switches[i] trigger_off();
|
||||
}
|
||||
|
||||
level._door_switch_trig1 trigger_on();
|
||||
level._door_switch_trig2 trigger_on();
|
||||
}
|
||||
}
|
||||
door_snd_alarm ( alarmTimes )
|
||||
{
|
||||
|
||||
for (i=0; i < alarmTimes; i++)
|
||||
{
|
||||
wait (.5);
|
||||
|
||||
playsoundatposition("amb_alarm_buzz",(-664,110,436));
|
||||
|
||||
playsoundatposition("amb_alarm_buzz",(-664,-72,436));
|
||||
|
||||
playsoundatposition("amb_alarm_buzz",(-666,-602,436));
|
||||
|
||||
playsoundatposition("amb_alarm_buzz",(-666,660,444));
|
||||
|
||||
wait (1.5);
|
||||
}
|
||||
}
|
||||
//Self is the use triggers that activate the double doors
|
||||
door_switch_setup()
|
||||
{
|
||||
self usetriggerrequirelookat();
|
||||
if ( level.wagerMatch )
|
||||
{
|
||||
self SetHintString(&"MP_HOLD_DOOR_SWITCH_UNAVAILABLE");
|
||||
turnSwitchPanelRed();
|
||||
}
|
||||
else
|
||||
{
|
||||
self SetHintString(&"MP_HOLD_TO_OPERATE_DOORS");
|
||||
turnSwitchPanelGreen();
|
||||
}
|
||||
|
||||
while ( !level.wagerMatch )
|
||||
{
|
||||
// self is the switch. who is the player that triggered switch
|
||||
self waittill("trigger", who);
|
||||
|
||||
//Added "if" check for when the doors are triggered without a player -Leif
|
||||
if(IsDefined( who ))
|
||||
{
|
||||
who playsound ("evt_hydraulic_switch");
|
||||
}
|
||||
|
||||
wait (1);
|
||||
}
|
||||
}
|
||||
|
||||
//Self is a trigger. The triggers are placed in places i'm afraid of players getting caught
|
||||
kill_edge_players_func()
|
||||
{
|
||||
level endon ("edge_check");
|
||||
|
||||
//This only loops while the doors are moving
|
||||
while(1)
|
||||
{
|
||||
self waittill("trigger", player);
|
||||
|
||||
if((player IsTouching(level._door1)) || (player IsTouching(level._door2)))
|
||||
{
|
||||
player DoDamage(player.health * 2, self.origin, player, player, 0, "MOD_SUICIDE" );
|
||||
// TODO: add crushing audio. CDC
|
||||
}
|
||||
else
|
||||
{
|
||||
wait .05;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//TO DO: Review this function for multiplayer API improvements.
|
||||
//'Self' is the struct within the panel that operates the double doors
|
||||
switch_lights( element_number )
|
||||
{
|
||||
if ( level.PrematchPeriod > 0 && level.inPrematchPeriod == true )
|
||||
{
|
||||
level waittill("prematch_over");
|
||||
}
|
||||
|
||||
while(1)
|
||||
{
|
||||
effect_ent = Spawn("script_model", self.origin);
|
||||
effect_ent SetModel("tag_origin");
|
||||
|
||||
//This wait is necesary to get the effect to work on the newly created script model.
|
||||
wait .1;
|
||||
|
||||
//Green light signals the switch is not on cooldown
|
||||
turnSwitchPanelGreen();
|
||||
//PlayFXOnTag(level._effect["green_light"], effect_ent,"tag_origin" );
|
||||
|
||||
waittill_any_ents(level._door_switch_trig1,"trigger",level._door_switch_trig2,"trigger");
|
||||
|
||||
//This function is array threaded, so we must prevent FX from playing in the same frame using this loop
|
||||
for (i = 0; i < element_number; i++)
|
||||
{
|
||||
wait .1;
|
||||
}
|
||||
|
||||
effect_ent Delete();
|
||||
|
||||
blinky_effect_ent = Spawn("script_model", self.origin);
|
||||
blinky_effect_ent SetModel("tag_origin");
|
||||
|
||||
//This wait is necesary to get the effect to work on the newly created script model.
|
||||
wait .1;
|
||||
|
||||
//Blink red light signals the double doors are moving
|
||||
turnSwitchPanelRed();
|
||||
//PlayFXOnTag(level._effect["blink_light"], blinky_effect_ent,"tag_origin" );
|
||||
|
||||
//This notify signals that the doors have stopped moving
|
||||
level waittill ("edge_check");
|
||||
|
||||
for (i = 0; i < element_number; i++)
|
||||
{
|
||||
wait .1;
|
||||
}
|
||||
|
||||
blinky_effect_ent Delete();
|
||||
|
||||
final_effect_ent = Spawn("script_model", self.origin);
|
||||
final_effect_ent SetModel("tag_origin");
|
||||
|
||||
//This wait is necesary to get the effect to work on the newly created script model.
|
||||
wait .1;
|
||||
|
||||
//Red light signals the switch cannot be used
|
||||
//PlayFXOnTag(level._effect["red_light"], final_effect_ent,"tag_origin" );
|
||||
|
||||
//This notify signals that the doors have stopped moving
|
||||
level waittill ("no_cooldown");
|
||||
|
||||
for (i = 0; i < element_number; i++)
|
||||
{
|
||||
wait .1;
|
||||
}
|
||||
|
||||
final_effect_ent Delete();
|
||||
}
|
||||
}
|
||||
|
||||
//'Self' is the struct within the light bulbs in the Radiation tunnel. This function manages FX in the tunnel
|
||||
//'Element number' is equal to self's index number in the array that got array threaded.
|
||||
tunnel_lights(element_number)
|
||||
{
|
||||
door_closed = true;
|
||||
|
||||
while(1)
|
||||
{
|
||||
//Must define may variable to avoid SRE
|
||||
effect_ent = undefined;
|
||||
|
||||
//When door is closed, play "solid" tunnel light effect
|
||||
if(door_closed)
|
||||
{
|
||||
effect_ent = Spawn("script_model", self.origin);
|
||||
effect_ent SetModel("tag_origin");
|
||||
|
||||
//Must wait a moment for the script model to finish spawning
|
||||
wait .1;
|
||||
|
||||
PlayFXOnTag(level._effect["green_light"], effect_ent,"tag_origin" );
|
||||
}
|
||||
|
||||
//Wait until a tunnel double door switch is hit
|
||||
waittill_any_ents(level._door_switch_trig1,"trigger",level._door_switch_trig2,"trigger");
|
||||
|
||||
//This loop makes sure effects do not happen in the same frame, as this function has been array threaded to multiple ents.
|
||||
for (i = 0; i < element_number; i++)
|
||||
{
|
||||
wait .1;
|
||||
}
|
||||
|
||||
//'New effect' is the blinking lights that occur while the double doors are moving
|
||||
new_effect_ent = Spawn("script_model", self.origin);
|
||||
new_effect_ent SetModel("tag_origin");
|
||||
|
||||
if(IsDefined(effect_ent))
|
||||
{
|
||||
effect_ent Delete();
|
||||
}
|
||||
|
||||
//Must wait a moment for the script model to finish spawning
|
||||
wait .1;
|
||||
|
||||
PlayFXOnTag(level._effect["blink_light"], new_effect_ent,"tag_origin" );
|
||||
|
||||
level waittill ("edge_check");
|
||||
|
||||
for (i = 0; i < element_number; i++)
|
||||
{
|
||||
wait .1;
|
||||
}
|
||||
|
||||
new_effect_ent Delete();
|
||||
|
||||
if(!door_closed)
|
||||
{
|
||||
door_closed = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
door_closed = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Open doors at start
|
||||
double_doors_open_at_start()
|
||||
{
|
||||
//Set up the double doors to open at the start of the match
|
||||
if ( level.PrematchPeriod > 0 && level.inPrematchPeriod == true )
|
||||
{
|
||||
level waittill("prematch_over");
|
||||
}
|
||||
|
||||
|
||||
//Slow down my door for other functions to hit waittil's
|
||||
wait .3;
|
||||
|
||||
//Note I didn't use the "useby player[0]" convention due to a hesitance to grab specific players in MP.
|
||||
level._door_switch_trig1 notify ("trigger");
|
||||
}
|
||||
|
||||
//Set up the devgui to have the ability to operate the doors, adjust door cooldown, rotate times, digger behavior, etc.
|
||||
devgui_radiation(cmd)
|
||||
{
|
||||
while(1)
|
||||
{
|
||||
wait(0.5);
|
||||
|
||||
devgui_string = GetDvar( #"devgui_notify");
|
||||
|
||||
switch(devgui_string)
|
||||
{
|
||||
case "":
|
||||
break;
|
||||
|
||||
case "operate_doors":
|
||||
level._door_switch_trig1 notify ("trigger");
|
||||
break;
|
||||
|
||||
default:
|
||||
level notify(devgui_string);
|
||||
break;
|
||||
}
|
||||
|
||||
SetDvar("devgui_notify", "");
|
||||
}
|
||||
}
|
||||
|
||||
//*****TO DO: MOVE DIGGER FUNCTIONALITY CLIENT SIDE.*********
|
||||
|
||||
//Sets it up so I can handle multiple diggers doing a digging action
|
||||
digger_dig_init()
|
||||
{
|
||||
diggers = GetEntArray("digger_body","targetname");
|
||||
AssertEx( diggers.size > 0, "Unable to find entity with targetname 'digger_body'" );
|
||||
array_thread(diggers,::digger_dig_think);
|
||||
}
|
||||
|
||||
//Self is the digger's body entity. Function creates a series of movements for the diggers to create a digging behavior
|
||||
digger_dig_think()
|
||||
{
|
||||
body = self;
|
||||
arm = GetEnt(self.target, "targetname");
|
||||
AssertEx(IsDefined(arm), "Unable to find arm entity for a digger at " + self.origin );
|
||||
blade_center = GetEnt(arm.target, "targetname");
|
||||
AssertEx(IsDefined(blade_center), "Unable to find blade entity for a digger at " + self.origin );
|
||||
|
||||
blade_pieces = GetEntArray("digger_blade","targetname");
|
||||
|
||||
for( i = 0; i < blade_pieces.size; i++)
|
||||
{
|
||||
blade_pieces[i] LinkTo(blade_center);
|
||||
}
|
||||
|
||||
blade_center LinkTo( arm );
|
||||
arm LinkTo( body );
|
||||
|
||||
//play idle sound on body
|
||||
body playloopsound ("evt_excavator_idle", .5);
|
||||
|
||||
if(IsDefined(self.script_float))
|
||||
{
|
||||
set_dvar_int_if_unset("scr_dig_delay", self.script_float );
|
||||
}
|
||||
else
|
||||
{
|
||||
//'20' is the default value for the cooldown on the digger's dig action
|
||||
set_dvar_int_if_unset("scr_dig_delay", 20 );
|
||||
}
|
||||
|
||||
while(1)
|
||||
{
|
||||
arm_move_speed = set_dvar_int_if_unset("scr_arm_move_speed", 11);
|
||||
blade_spin_speed = set_dvar_int_if_unset("scr_blade_spin_speed", 80);
|
||||
blade_spin_up_time = set_dvar_int_if_unset("scr_blade_spin_up_time", 3);
|
||||
|
||||
body_turn = RandomIntRange(-15,15);
|
||||
//Must grab the absolute value of the turn value to get proper time fraction, which is the "positive_value_func"
|
||||
body_turn_speed = (positive_value_func(body_turn)) * .3;
|
||||
|
||||
body RotateYaw(body_turn, body_turn_speed, body_turn_speed/4, body_turn_speed/4 );
|
||||
|
||||
// play move loop on arm, and rev one shot on body
|
||||
arm playloopsound ("evt_excavator_move", .5);
|
||||
body playsound ("evt_excavator_rev");
|
||||
|
||||
body waittill ("rotatedone");
|
||||
|
||||
arm Unlink(body);
|
||||
arm RotatePitch(-45, arm_move_speed, arm_move_speed/4, arm_move_speed/4);
|
||||
arm waittill ("rotatedone");
|
||||
|
||||
blade_center UnLink(arm);
|
||||
blade_center RotatePitch(1800, blade_spin_speed, blade_spin_up_time, blade_spin_up_time);
|
||||
smokeAngles = ( 0, arm.angles[1]+180, arm.angles[2] );
|
||||
|
||||
forward = anglesToForward( smokeAngles );
|
||||
|
||||
//playfx ( level.chopper_fx["explode"]["death"], self.origin, forward );
|
||||
PlayFX( level._digger_fx, ( blade_center.origin[0], blade_center.origin[1], blade_center.origin[2]-560), forward );
|
||||
//stop loop on arm
|
||||
//iprintlnbold ("this is the stop I suspect"); //had to comment this out for playtest. -Leif
|
||||
arm stoploopsound (1);
|
||||
|
||||
// play digging loop on blade
|
||||
blade_center playloopsound ("evt_excavator_blade", .5);
|
||||
|
||||
blade_center waittill ("rotatedone");
|
||||
|
||||
// stop diggin loop blade
|
||||
blade_center stoploopsound (.5);
|
||||
|
||||
blade_center LinkTo(arm);
|
||||
|
||||
arm RotatePitch(45, arm_move_speed, arm_move_speed/4, arm_move_speed/4 );
|
||||
|
||||
// play move loop on arm, and rev one shot on body
|
||||
arm playloopsound ("evt_excavator_move", .5);
|
||||
body playsound ("evt_excavator_rev");
|
||||
|
||||
arm waittill ("rotatedone");
|
||||
arm LinkTo( body );
|
||||
|
||||
body RotateYaw((body_turn * -1), body_turn_speed, body_turn_speed/4, body_turn_speed/4);
|
||||
|
||||
body waittill ("rotatedone");
|
||||
arm stoploopsound (.5);
|
||||
|
||||
wait (GetDvarFloat( #"scr_dig_delay" ));
|
||||
}
|
||||
}
|
||||
|
||||
//Sets it up so the script can easily handle multiple moving diggers
|
||||
moving_diggers_init()
|
||||
{
|
||||
diggers = GetEntArray("moving_digger","targetname");
|
||||
//AssertEx( diggers.size > 0, "Unable to find entity with targetname 'moving_digger'" );
|
||||
array_thread(diggers, ::moving_diggers_think);
|
||||
}
|
||||
|
||||
//Sets up diggers that follow structs. Note the script_int K/V pair sets up the move time.
|
||||
moving_diggers_think()
|
||||
{
|
||||
digger_struct = getstruct_and_assert(self.target);
|
||||
|
||||
while(1)
|
||||
{
|
||||
//Each struct has a script_int key value pair that determines the length of time it takes to complete the move
|
||||
self MoveTo(digger_struct.origin, digger_struct.script_int);
|
||||
AssertEx(IsDefined(digger_struct.script_int), "Unable to find digger struct's 'script_int' key value pair for moving digger" );
|
||||
|
||||
self waittill("movedone");
|
||||
|
||||
//Structs target other structs to determine the digger's path.
|
||||
if(IsDefined(digger_struct.target))
|
||||
{
|
||||
digger_struct = GetStruct(digger_struct.target,"targetname");
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function needed to get the absolute value of an integer and be sure its a positive number
|
||||
positive_value_func(num)
|
||||
{
|
||||
return(max(1, abs(num)));
|
||||
}
|
||||
|
||||
//Starts a thread to alter player's velocity as long as they're in the trigger
|
||||
conveyer_belt_init()
|
||||
{
|
||||
//Need to set dvar to determine force of momentum in trigger
|
||||
set_dvar_int_if_unset( "scr_coveyer_speed", 45 );
|
||||
|
||||
conveyer_trigger = getent_and_assert("coveyer_trig");
|
||||
|
||||
//The trigger targets a script struct. The struct contains angles to determine the force direction.
|
||||
trigger_struct = getstruct_and_assert(conveyer_trigger.target);
|
||||
|
||||
//Find direction that my trigger is pointed toward
|
||||
trigger_angles = AnglesToForward(trigger_struct.angles);
|
||||
|
||||
//Create intensity of conveyer force equal to my script DVar. Store it on my trigger for a seperate function to use.
|
||||
conveyer_trigger._conveyer_vector = vector_scale(trigger_angles,GetDvarInt( #"scr_coveyer_speed"));
|
||||
|
||||
while(1)
|
||||
{
|
||||
conveyer_trigger waittill("trigger", player);
|
||||
if(IsPlayer(player))
|
||||
{
|
||||
conveyer_trigger thread trigger_thread(player, ::player_on_conveyer);
|
||||
}
|
||||
|
||||
wait .05;
|
||||
}
|
||||
}
|
||||
|
||||
//Self is trigger. Function is ran when player jumps into the trigger.
|
||||
player_on_conveyer(player, endon_string)
|
||||
{
|
||||
player endon ("death");
|
||||
player endon ("disconnect");
|
||||
player endon(endon_string);
|
||||
|
||||
while(1)
|
||||
{
|
||||
player_velocity = player GetVelocity();
|
||||
|
||||
//Don't want jumping player to be pulled by conveyer
|
||||
if (player IsOnGround())
|
||||
{
|
||||
//Gives player momentum in the direction of the conveyer equal to a dvar I created earlier along with their own momentum
|
||||
player SetVelocity(player_velocity + self._conveyer_vector);
|
||||
}
|
||||
|
||||
wait .05;
|
||||
}
|
||||
}
|
||||
|
||||
getent_and_assert(ent_name)
|
||||
{
|
||||
thing = GetEnt( ent_name, "targetname");
|
||||
AssertEx(IsDefined(thing), "Unable to find targetname " + ent_name);
|
||||
|
||||
return thing;
|
||||
}
|
||||
|
||||
getstruct_and_assert(struct_name)
|
||||
{
|
||||
thing = getstruct( struct_name, "targetname");
|
||||
AssertEx(IsDefined(thing), "Unable to find struct at " +struct_name);
|
||||
|
||||
return thing;
|
||||
}
|
||||
|
||||
dropEverythingOnDoorsToGround()
|
||||
{
|
||||
level endon("edge_check");
|
||||
|
||||
// keep dropping all to ground to keep the items in physics
|
||||
// if you only do it once or twice they come back to rest to fast
|
||||
// if there is a problem with this solution then we are going to need
|
||||
// to do something for keeping the crates in physics while in contact
|
||||
// with the doors.
|
||||
while(1)
|
||||
{
|
||||
wait(0.1);
|
||||
dropAllToGround( (0,0,128), 181, 100 );
|
||||
}
|
||||
}
|
||||
|
||||
destroyEquipment()
|
||||
{
|
||||
level endon ( "edge_check" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
wait( 2 );
|
||||
|
||||
grenades = GetEntArray( "grenade", "classname" );
|
||||
|
||||
for ( i = 0; i < grenades.size; i++ )
|
||||
{
|
||||
item = grenades[i];
|
||||
|
||||
if ( !IsDefined( item.name ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( !IsDefined( item.owner ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( !IsWeaponEquipment( item.name ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( !item IsTouching( level._door1 ) && !item IsTouching( level._door2 ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
watcher = item.owner getWatcherForWeapon( item.name );
|
||||
|
||||
if ( !IsDefined( watcher ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
watcher thread maps\mp\gametypes\_weaponobjects::waitAndDetonate( item, 0.0, undefined );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getWatcherForWeapon( weapname )
|
||||
{
|
||||
if ( !IsDefined( self ) )
|
||||
{
|
||||
return undefined;
|
||||
}
|
||||
|
||||
if ( !IsPlayer( self ) )
|
||||
{
|
||||
return undefined;
|
||||
}
|
||||
|
||||
for ( i = 0; i < self.weaponObjectWatcherArray.size; i++ )
|
||||
{
|
||||
if ( self.weaponObjectWatcherArray[i].weapon != weapname )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
return ( self.weaponObjectWatcherArray[i] );
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
//spawns triggers to stop players from placing turrets
|
||||
addNoTurretTrigger( position, radius, height )
|
||||
{
|
||||
while( !IsDefined( level.noTurretPlacementTriggers ) )
|
||||
wait( 0.1 );
|
||||
|
||||
trigger = Spawn( "trigger_radius", position, 0, radius, height );
|
||||
|
||||
level.noTurretPlacementTriggers[level.noTurretPlacementTriggers.size] = trigger;
|
||||
}
|
@ -1,139 +0,0 @@
|
||||
#include maps\mp\_utility;
|
||||
main()
|
||||
{
|
||||
//needs to be first for create fx
|
||||
maps\mp\mp_russianbase_fx::main();
|
||||
|
||||
precachemodel("collision_geo_32x32x128");
|
||||
precachemodel("collision_wall_256x256x10");
|
||||
|
||||
maps\mp\_load::main();
|
||||
|
||||
maps\mp\mp_russianbase_amb::main();
|
||||
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_russianbase_wager");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_russianbase");
|
||||
}
|
||||
|
||||
// If the team nationalites change in this file,
|
||||
// you must update the team nationality in the level's csc file as well!
|
||||
maps\mp\gametypes\_teamset_winterspecops::level_init();
|
||||
|
||||
// Set up the default range of the compass
|
||||
setdvar("compassmaxrange","2100");
|
||||
|
||||
// enable new spawning system
|
||||
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
|
||||
|
||||
//fog
|
||||
//setExpFog(200, 6000, 0.7, 0.7, 0.73, 0);
|
||||
|
||||
/#
|
||||
level thread devgui_russianbase();
|
||||
execdevgui( "devgui_mp_russianbase" );
|
||||
#/
|
||||
|
||||
|
||||
// spawn collision for hole in wall between E2 and E3
|
||||
spawncollision("collision_wall_256x256x10","collider",(-1731, 960, 288), (0, 270, 0));
|
||||
|
||||
|
||||
// spawn collision for the new telephone pole
|
||||
spawncollision("collision_geo_32x32x128","collider",(-120, 1828, 63), (0, 0, 0));
|
||||
|
||||
//spawn a new set of windows in front of the missing ones for PS3
|
||||
|
||||
window1 = Spawn("script_model", (-2116, 0, 504) );
|
||||
if ( IsDefined(window1) )
|
||||
{
|
||||
window1.angles = (0,0,0);
|
||||
window1 SetModel("p_rus_window_dark01");
|
||||
}
|
||||
|
||||
window2 = Spawn("script_model", (-1878, 0, 504) );
|
||||
if ( IsDefined(window2) )
|
||||
{
|
||||
window2.angles = (0,0,0);
|
||||
window2 SetModel("p_rus_window_dark01");
|
||||
}
|
||||
|
||||
//spawn a new telephone pole
|
||||
|
||||
pole1 = Spawn("script_model", (-114.081, 1821.35, -10) );
|
||||
if ( IsDefined(pole1) )
|
||||
{
|
||||
pole1.angles = (0, 15.2, 0);
|
||||
pole1 SetModel("p_rus_electricpole");
|
||||
}
|
||||
|
||||
|
||||
|
||||
level thread runTrain();
|
||||
}
|
||||
|
||||
runTrain()
|
||||
{
|
||||
level endon( "game_ended" );
|
||||
precacheModel("t5_veh_train_boxcar");
|
||||
precacheModel("t5_veh_train_fuelcar");
|
||||
precacheModel("t5_veh_train_engine");
|
||||
|
||||
// if you change moveTime of numOfCarts you need to change it in client script also
|
||||
moveTime = 20;
|
||||
numOfCarts = 40;
|
||||
originalRation = ( moveTime / 80 );
|
||||
maxWaitBetweenTrains = getDvarIntDefault( #"scr_maxWaitBetweenTrains", 200 );
|
||||
trainTime = ( moveTime + ( numOfCarts * 4 * originalRation ) );
|
||||
|
||||
|
||||
/#
|
||||
russian_base_train_dev();
|
||||
#/
|
||||
for(;;)
|
||||
{
|
||||
waitBetweenTrains = randomint( maxWaitBetweenTrains );
|
||||
if ( waitBetweenTrains > 0 )
|
||||
wait( waitBetweenTrains );
|
||||
level clientNotify("play_train");
|
||||
wait( trainTime );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/#
|
||||
russian_base_train_dev()
|
||||
{
|
||||
for ( ;; )
|
||||
{
|
||||
level waittill( "run_train" );
|
||||
level clientNotify("play_train");
|
||||
}
|
||||
}
|
||||
|
||||
devgui_russianbase( cmd )
|
||||
{
|
||||
for ( ;; )
|
||||
{
|
||||
wait( 0.5 );
|
||||
|
||||
devgui_string = GetDvar( #"devgui_notify" );
|
||||
|
||||
switch( devgui_string )
|
||||
{
|
||||
case "":
|
||||
break;
|
||||
default:
|
||||
level notify( devgui_string );
|
||||
break;
|
||||
}
|
||||
|
||||
SetDvar( "devgui_notify", "" );
|
||||
}
|
||||
}
|
||||
#/
|
@ -1,107 +0,0 @@
|
||||
#include maps\mp\_utility;
|
||||
#include common_scripts\utility;
|
||||
|
||||
|
||||
//========================================================
|
||||
// main
|
||||
//========================================================
|
||||
main()
|
||||
{
|
||||
//needs to be first for create fx
|
||||
maps\mp\mp_silo_fx::main();
|
||||
maps\mp\createart\mp_silo_art::main();
|
||||
|
||||
precachemodel("collision_wall_256x256x10");
|
||||
|
||||
maps\mp\_load::main();
|
||||
|
||||
// maps\mp\_compass::setupMiniMap("compass_map_mp_silo");
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_silo_wager");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_silo");
|
||||
}
|
||||
|
||||
/#
|
||||
execdevgui( "devgui_mp_silo" );
|
||||
#/
|
||||
|
||||
maps\mp\mp_silo_amb::main();
|
||||
|
||||
// If the team nationalites change in this file, you must also update the level's csc file,
|
||||
// the level's csv file, and the share/raw/mp/mapsTable.csv
|
||||
maps\mp\gametypes\_teamset_urbanspecops::level_init();
|
||||
|
||||
// Set up the default range of the compass
|
||||
setdvar( "compassmaxrange","2100" );
|
||||
|
||||
// Set up some generic War Flag Names.
|
||||
// Example from COD5: CALLSIGN_SEELOW_A is the name of the 1st flag in Selow whose string is "Cottage"
|
||||
// The string must have MPUI_CALLSIGN_ and _A. Replace Mapname with the name of your map/bsp and in the
|
||||
// actual string enter a keyword that names the location (Roundhouse, Missle Silo, Launchpad, Guard Tower, etc)
|
||||
|
||||
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A";
|
||||
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B";
|
||||
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C";
|
||||
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D";
|
||||
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E";
|
||||
|
||||
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A";
|
||||
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B";
|
||||
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C";
|
||||
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D";
|
||||
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E";
|
||||
|
||||
// enable new spawning system
|
||||
maps\mp\gametypes\_spawning::level_use_unified_spawning( true );
|
||||
|
||||
level thread crane_container();
|
||||
|
||||
//spawning collision in wager match so players can't hide in the spawned plates
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 || isPregame() )
|
||||
{
|
||||
spawncollision("collision_wall_256x256x10","collider",(1527, 71, 16), (0, 337, 0));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//========================================================
|
||||
// cargo_container
|
||||
//========================================================
|
||||
crane_container()
|
||||
{
|
||||
crane_container = GetEnt( "crane_container", "targetname" );
|
||||
|
||||
if( !IsDefined( crane_container ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
crane_container thread rotate_crane_container();
|
||||
}
|
||||
|
||||
|
||||
//========================================================
|
||||
// rotate_crane_container
|
||||
//========================================================
|
||||
rotate_crane_container()
|
||||
{
|
||||
rotate_time = 8;
|
||||
rotate_angle = 30;
|
||||
|
||||
self RotateYaw( rotate_angle / 2, rotate_time / 2 );
|
||||
self waittill( "rotatedone" );
|
||||
|
||||
while( true )
|
||||
{
|
||||
rotate_angle = rotate_angle * -1;
|
||||
|
||||
self RotateYaw( rotate_angle, rotate_time, rotate_time / 2, rotate_time / 2 );
|
||||
self waittill( "rotatedone" );
|
||||
}
|
||||
|
||||
}
|
@ -1,105 +0,0 @@
|
||||
#include maps\mp\_utility;
|
||||
main()
|
||||
{
|
||||
//needs to be first for create fx
|
||||
maps\mp\mp_villa_fx::main();
|
||||
|
||||
precachemodel("collision_geo_64x64x256");
|
||||
precachemodel("collision_geo_32x32x128");
|
||||
precachemodel("collision_geo_32x32x32");
|
||||
|
||||
maps\mp\_load::main();
|
||||
|
||||
maps\mp\mp_villa_amb::main();
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_villa_wager");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_villa");
|
||||
}
|
||||
|
||||
// If the team nationalites change in this file,
|
||||
// you must update the team nationality in the level's csc file as well!
|
||||
maps\mp\gametypes\_teamset_cubans::level_init();
|
||||
|
||||
// Set up the default range of the compass
|
||||
setdvar("compassmaxrange","2100");
|
||||
|
||||
// Set up some generic War Flag Names.
|
||||
// Example from COD5: CALLSIGN_SEELOW_A is the name of the 1st flag in Selow whose string is "Cottage"
|
||||
// The string must have MPUI_CALLSIGN_ and _A. Replace Mapname with the name of your map/bsp and in the
|
||||
// actual string enter a keyword that names the location (Roundhouse, Missle Silo, Launchpad, Guard Tower, etc)
|
||||
|
||||
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A";
|
||||
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B";
|
||||
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C";
|
||||
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D";
|
||||
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E";
|
||||
|
||||
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A";
|
||||
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B";
|
||||
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C";
|
||||
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D";
|
||||
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E";
|
||||
|
||||
// collision keeping players from poking their heads into rock
|
||||
spawncollision("collision_geo_64x64x256","collider",(4790, 1863, 388), (0, 30.8, 0));
|
||||
|
||||
// collision keeping players from poking their heads into another rock near the allies spawn
|
||||
spawncollision("collision_geo_32x32x128","collider",(4329, 3735, 144), (0, 0, 0));
|
||||
|
||||
// collision keeping players from poking their heads into another rock near D2.
|
||||
spawncollision("collision_geo_32x32x32","collider",(2512, 3818, 113), (0, 45, 0));
|
||||
|
||||
|
||||
// enable new spawning system
|
||||
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
|
||||
|
||||
level thread startLightning();
|
||||
}
|
||||
|
||||
|
||||
|
||||
startLightning()
|
||||
{
|
||||
while(1)
|
||||
{
|
||||
self thread trigger_lightning_exploder();
|
||||
wait( 30 + randomfloat(40) );
|
||||
//wait (4);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
trigger_lightning_exploder()
|
||||
{
|
||||
randomExploder = randomint( 4 );
|
||||
//randomExploder = 3;
|
||||
switch( randomExploder )
|
||||
{
|
||||
case 0:
|
||||
exploder(1001);
|
||||
playsoundatposition("amb_thunder_clap",( 259.2, -801, 1197 ));
|
||||
//println ("sound exploder 1");
|
||||
break;
|
||||
case 1:
|
||||
exploder(1002);
|
||||
playsoundatposition("amb_thunder_clap",( 2523, -17012, 1174 ));
|
||||
//println ("sound exploder 2");
|
||||
break;
|
||||
case 2:
|
||||
exploder(1003);
|
||||
playsoundatposition("amb_thunder_clap",(6457, -611, 1145));
|
||||
//println ("sound exploder 3");
|
||||
break;
|
||||
case 3:
|
||||
exploder(1004);
|
||||
playsoundatposition("amb_thunder_clap",(4981, 1335, 890));
|
||||
//println ("sound exploder 4");
|
||||
break;
|
||||
}
|
||||
}
|
@ -1,88 +0,0 @@
|
||||
#include maps\mp\_utility;
|
||||
main()
|
||||
{
|
||||
//needs to be first for create fx
|
||||
maps\mp\mp_zoo_fx::main();
|
||||
|
||||
precachemodel("collision_wall_256x256x10");
|
||||
precachemodel("collision_geo_32x32x128");
|
||||
precachemodel("collision_geo_128x128x10");
|
||||
precachemodel("collision_geo_64x64x64");
|
||||
|
||||
maps\mp\_load::main();
|
||||
|
||||
maps\mp\mp_zoo_amb::main();
|
||||
|
||||
// maps\mp\_compass::setupMiniMap("compass_map_mp_zoo");
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_zoo_wager");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_zoo");
|
||||
}
|
||||
|
||||
|
||||
// If the team nationalites change in this file, you must also update the level's csc file,
|
||||
// the level's csv file, and the share/raw/mp/mapsTable.csv
|
||||
maps\mp\gametypes\_teamset_urbanspecops::level_init();
|
||||
|
||||
// Set up the default range of the compass
|
||||
setdvar("compassmaxrange","2100");
|
||||
|
||||
// Set up some generic War Flag Names.
|
||||
// Example from COD5: CALLSIGN_SEELOW_A is the name of the 1st flag in Selow whose string is "Cottage"
|
||||
// The string must have MPUI_CALLSIGN_ and _A. Replace Mapname with the name of your map/bsp and in the
|
||||
// actual string enter a keyword that names the location (Roundhouse, Missle Silo, Launchpad, Guard Tower, etc)
|
||||
|
||||
game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A";
|
||||
game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B";
|
||||
game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C";
|
||||
game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D";
|
||||
game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E";
|
||||
|
||||
game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A";
|
||||
game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B";
|
||||
game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C";
|
||||
game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D";
|
||||
game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E";
|
||||
|
||||
// enable new spawning system
|
||||
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
|
||||
|
||||
//spawn gates to explain rogue physics collision brush
|
||||
|
||||
gate1 = Spawn("script_model", (1040, 1495, 56) );
|
||||
if ( IsDefined(gate1) )
|
||||
{
|
||||
gate1.angles = (0, 270, 0);
|
||||
gate1 SetModel("p_zoo_bend_gate_mid");
|
||||
}
|
||||
gate2 = Spawn("script_model", (1104, 1495, 56) );
|
||||
if ( IsDefined(gate2) )
|
||||
{
|
||||
gate2.angles = (0, 270, 0);
|
||||
gate2 SetModel("p_zoo_bend_gate_mid");
|
||||
}
|
||||
|
||||
// spawn collision for bit of collision above a light in B3
|
||||
spawncollision("collision_wall_256x256x10","collider",(876, 2034, 169), (0, 90, 0));
|
||||
|
||||
// spawn collision to stop players from hiding inside the may-pole.
|
||||
spawncollision("collision_geo_32x32x128","collider",(49, 832, 66), (0, 0, 0));
|
||||
spawncollision("collision_geo_32x32x128","collider",(49, 832, 194), (0, 0, 0));
|
||||
|
||||
// spawn collision to stop players from hiding inside the may-pole base.
|
||||
spawncollision("collision_geo_64x64x64","collider",(47, 833, -16), (0, 0, 0));
|
||||
spawncollision("collision_geo_64x64x64","collider",(47, 833, -16), (0, 315, 0));
|
||||
|
||||
// spawn collision to stop players from standing on collision in aviary.
|
||||
spawncollision("collision_geo_128x128x10","collider",(934, 205, 74), (28.2, 340.6, -38.4));
|
||||
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 || isPregame() )
|
||||
{
|
||||
spawncollision("collision_wall_256x256x10","collider",(-5, 821, 72), (0, 297, 0));
|
||||
}
|
||||
|
||||
}
|
@ -1,80 +0,0 @@
|
||||
rawfile,maps/mp/_dogs.gsc
|
||||
rawfile,maps/mp/_utility.gsc
|
||||
rawfile,maps/mp/gametypes/_globallogic_player.gsc
|
||||
rawfile,maps/mp/gametypes/_globallogic_score.gsc
|
||||
rawfile,maps/mp/gametypes/_spawning.gsc
|
||||
rawfile,maps/mp/gametypes/ctf.gsc
|
||||
rawfile,maps/mp/gametypes/dem.gsc
|
||||
rawfile,maps/mp/gametypes/dom.gsc
|
||||
rawfile,maps/mp/gametypes/koth.gsc
|
||||
rawfile,maps/mp/gametypes/sab.gsc
|
||||
rawfile,maps/mp/mp_array.gsc
|
||||
rawfile,maps/mp/mp_cairo.gsc
|
||||
rawfile,maps/mp/mp_cosmodrome.gsc
|
||||
rawfile,maps/mp/mp_crisis.gsc
|
||||
rawfile,maps/mp/mp_duga.gsc
|
||||
rawfile,maps/mp/mp_firingrange.gsc
|
||||
rawfile,maps/mp/mp_mountain.gsc
|
||||
rawfile,maps/mp/mp_nuked.gsc
|
||||
rawfile,maps/mp/mp_radiation.gsc
|
||||
rawfile,maps/mp/mp_russianbase.gsc
|
||||
rawfile,maps/mp/mp_villa.gsc
|
||||
rawfile,maps/mp/mp_zoo.gsc
|
||||
rawfile,maps/mp/mp_golfcourse.gsc
|
||||
rawfile,maps/mp/mp_silo.gsc
|
||||
|
||||
rawfile,clientscripts/mp/_claymore.csc
|
||||
|
||||
menufile,ui_mp/patch.txt
|
||||
menufile,ui_mp/custom_settings_general.menu
|
||||
menufile,ui_mp/fileshare_playercard.menu
|
||||
menufile,ui_mp/after_action_report.menu
|
||||
menufile,ui_mp/options_multi.menu
|
||||
menufile,ui_mp/scriptmenus/callvote.menu
|
||||
menufile,ui_mp/scriptmenus/changeclass.menu
|
||||
menufile,ui_mp/scriptmenus/class.menu
|
||||
menufile,ui_mp/hud_hardcore.menu
|
||||
menufile,ui_mp/players.menu
|
||||
menufile,ui_mp/hud_team.menu
|
||||
menufile,ui_mp/hud_ffa.menu
|
||||
menufile,ui_mp/playercards_clantag.menu
|
||||
menufile,ui_mp/mods.menu
|
||||
menufile,ui_mp/cac_custom.menu
|
||||
menufile,ui_mp/cac_popups.menu
|
||||
menufile,ui_mp/cac_weapon.menu
|
||||
menufile,ui_mp/combat_record.menu
|
||||
menufile,ui_mp/game_mode.menu
|
||||
menufile,ui_mp/main.menu
|
||||
menufile,ui_mp/pc_serversettings.menu
|
||||
menufile,ui_mp/serverbrowser.menu
|
||||
menufile,ui_mp/custom_game_create.menu
|
||||
menufile,ui_mp/pc_basictraining.menu
|
||||
|
||||
rawfile,rumble/shotgun_fire_h.rmb
|
||||
rawfile,rumble/shotgun_fire_l.rmb
|
||||
rawfile,rumble/silencer_fire_h.rmb
|
||||
rawfile,rumble/silencer_fire_l.rmb
|
||||
rawfile,rumble/heavygun_fire_h.rmb
|
||||
rawfile,rumble/heavygun_fire_l.rmb
|
||||
rawfile,rumble/smg_fire_h.rmb
|
||||
rawfile,rumble/smg_fire_l.rmb
|
||||
rawfile,rumble/assault_fire_h.rmb
|
||||
rawfile,rumble/assault_fire_l.rmb
|
||||
rawfile,rumble/flamethrower_h.rmb
|
||||
rawfile,rumble/flamethrower_l.rmb
|
||||
rawfile,rumble/damage_heavy_h.rmb
|
||||
rawfile,rumble/damage_heavy_l.rmb
|
||||
|
||||
menufile,ui/options_graphics_pc.menu
|
||||
menufile,ui/error.menu
|
||||
|
||||
stringtable,mp/gametypesTable.csv
|
||||
stringtable,mp/mapsTable.csv
|
||||
stringtable,mp/attachmentTable.csv
|
||||
|
||||
rawfile,maps/mp/gametypes/_bot.gsc
|
||||
rawfile,maps/mp/bots/_bot_loadout.gsc
|
||||
rawfile,maps/mp/bots/_bot_script.gsc
|
||||
rawfile,maps/mp/bots/_bot_utility.gsc
|
||||
|
||||
menufile,ui_mp/playercards.menu
|
|
@ -1,104 +0,0 @@
|
||||
a0,b1,c2,d3,e4,f5,g6,h7,i8,j9,k10,l11,m12,n13,o14
|
||||
"# Weapon Attachment Data [ DO NOT CHANGE FORMAT, NAME/REFERENCE ARE TO BE UNIQUE IN THE WHOLE TABLE ]",,,,,,,,,,,,,,
|
||||
# index,# attach point,# group,# name,# reference,# count,# image,# description,# data - string,# data - int ,# data - int2 (binary mask),# data - string - compatible attachments - separated by a space ,# cost of this attachment,#unlock lvl,#unlock plevel
|
||||
0,none,attachment,MPUI_NO_ATTACHMENT,none,,weapon_missing_image,MPUI_NO_ATTACHMENT_DESC,,0,,,,,
|
||||
1,top,attachment,MPUI_REFLEX,reflex,,menu_mp_weapons_attach_aimpoint,MPUI_REFLEX_DESC,REFLEX,1,,dualclip extclip grip rf silencer,1000,,
|
||||
2,top,attachment,MPUI_ELBIT,elbit,,menu_mp_weapons_attach_elbit,MPUI_ELBIT_DESC,ELBIT,2,,dualclip extclip grip rf silencer,1000,,
|
||||
3,top,attachment,MPUI_ACOG,acog,,menu_mp_weapons_attach_acog,MPUI_ACOG_DESC,ACOG,3,,dualclip extclip grip rf silencer,1000,,
|
||||
4,top,attachment,MPUI_LPS,lps,,menu_mp_weapons_attach_lps,MPUI_LPS_DESC,LPS,4,,,2000,,
|
||||
5,top,attachment,MPUI_VZOOM,vzoom,,menu_mp_weapons_attach_vzoom,MPUI_VZOOM_DESC,VZOOM,5,,extclip silencer,2000,,
|
||||
6,top,attachment,MPUI_IR,ir,,menu_mp_weapons_attach_ir,MPUI_IR_DESC,IR,6,,dualclip extclip grip silencer,2000,,
|
||||
7,bottom,attachment,MPUI_GL,gl,,menu_mp_weapons_attach_grenade_launcher,MPUI_GL_DESC,GL,7,,,3000,,
|
||||
8,bottom,attachment,MPUI_MK,mk,,menu_mp_weapons_attach_masterkey,MPUI_MK_DESC,MK,8,,,1000,,
|
||||
9,muzzle,attachment,MPUI_SILENCER,silencer,,menu_mp_weapons_attach_silencer,MPUI_SILENCER_DESC,SILENCER,9,,acog dualclip elbit extclip grip ir reflex rf upgradesight vzoom,2000,,
|
||||
10,bottom,attachment,MPUI_GRIP,grip,,menu_mp_weapons_attach_grip,MPUI_GRIP_DESC,GRIP,10,,acog dualclip elbit extclip ir reflex rf silencer,1000,,
|
||||
11,trigger,attachment,MPUI_EXTCLIP,extclip,,menu_mp_weapons_attach_extend_clip,MPUI_EXTCLIP_DESC,EXTCLIP,11,,acog elbit grip ir reflex rf silencer upgradesight vzoom,1000,,
|
||||
12,trigger,attachment,MPUI_DUALCLIP,dualclip,,menu_mp_weapons_attach_dual_clip,MPUI_DUALCLIP_DESC,DUALCLIP,12,,acog elbit grip ir reflex rf silencer,1000,,
|
||||
13,trigger,attachment,MPUI_SADDLE,saddle,,weapon_missing_image,MPUI_SADDLE_DESC,SADDLE,13,,,,,
|
||||
14,trigger,attachment,MPUI_FMJ,fmj,,weapon_missing_image,MPUI_FMJ_DESC,FMJ,14,,,,,
|
||||
15,trigger,attachment,MPUI_HP,hp,,weapon_missing_image,MPUI_HP_DESC,HP,15,,,,,
|
||||
16,trigger,attachment,MPUI_RF,rf,,menu_mp_weapons_attach_rof,MPUI_RF_DESC,RF,16,,acog dualclip elbit extclip grip reflex silencer,3000,,
|
||||
17,bottom,attachment,MPUI_FT,ft,,menu_mp_weapons_attach_flamethrower,MPUI_FT_DESC,FT,17,,,1000,,
|
||||
18,bottom,attachment,MPUI_BAYONET,bayonet,,weapon_missing_image,MPUI_BAYONET_DESC,BAYONET,18,,,,,
|
||||
19,trigger,attachment,MPUI_AUTO,auto,,menu_mp_weapons_attach_auto,MPUI_AUTO_DESC,auto,19,,,2000,,
|
||||
20,trigger,attachment,MPUI_SPEED,speed,,menu_mp_weapons_attach_reload,MPUI_SPEED_DESC,speed,20,,,1000,,
|
||||
21,top,attachment,MPUI_UPGRADESIGHT,upgradesight,,menu_mp_weapons_attach_upgradesight,MPUI_UPGRADESIGHT_DESC,upgradesight,21,,,250,,
|
||||
22,muzzle,attachment,MPUI_SNUB,snub,,menu_mp_weapons_attach_snub,MPUI_SNUB_DESC,snub,22,,,500,,
|
||||
23,bottom,attachment,MPUI_DW,dw,,weapon_missing_image,MPUI_DW_DESC,dw,23,,,1000,,
|
||||
0,camo,weaponoption,MPUI_NONE,camo_none,,weapon_missing_image,MPUI_NONE,,,,,,,
|
||||
1,camo,weaponoption,MPUI_CAMO_DUSTY,camo_dusty,,menu_mp_weapons_camo_dusty,MPUI_CAMO_DUSTY,,,,,250,,
|
||||
2,camo,weaponoption,MPUI_CAMO_ICE,camo_ice,,menu_mp_weapons_camo_icy,MPUI_CAMO_ICE,,,,,250,,
|
||||
3,camo,weaponoption,MPUI_CAMO_RED,cammo_red,,menu_mp_weapons_camo_mass,MPUI_CAMO_RED,,,,,250,,
|
||||
4,camo,weaponoption,MPUI_CAMO_OLIVE,camo_od,,menu_mp_weapons_camo_olive,MPUI_CAMO_OLIVE,,,,,250,,
|
||||
5,camo,weaponoption,MPUI_CAMO_NEVADA,camo_desert_nevada,,menu_mp_weapons_camo_nevada,MPUI_CAMO_NEVADA,,,,,250,,
|
||||
6,camo,weaponoption,MPUI_CAMO_SAHARA,camo_desert_sahara,,menu_mp_weapons_camo_sahara,MPUI_CAMO_SAHARA,,,,,250,,
|
||||
7,camo,weaponoption,MPUI_CAMO_ERDL,camo_jungle_erdl,,menu_mp_weapons_camo_erdl,MPUI_CAMO_ERDL,,,,,250,,
|
||||
8,camo,weaponoption,MPUI_CAMO_TIGER,camo_jungle_tiger,,menu_mp_weapons_camo_tiger,MPUI_CAMO_TIGER,,,,,250,,
|
||||
9,camo,weaponoption,MPUI_CAMO_BERLIN,camo_urban_german,,menu_mp_weapons_camo_berlin,MPUI_CAMO_BERLIN,,,,,250,,
|
||||
10,camo,weaponoption,MPUI_CAMO_WARSAW,camo_urban_warsaw,,menu_mp_weapons_camo_warsaw,MPUI_CAMO_WARSAW,,,,,250,,
|
||||
11,camo,weaponoption,MPUI_CAMO_SIBERIA,camo_winter_siberia,,menu_mp_weapons_camo_siberia,MPUI_CAMO_SIBERIA,,,,,250,,
|
||||
12,camo,weaponoption,MPUI_CAMO_YUKON,camo_winter_yukon,,menu_mp_weapons_camo_yukon,MPUI_CAMO_YUKON,,,,,250,,
|
||||
13,camo,weaponoption,MPUI_CAMO_WOODLAND,camo_woodland,,menu_mp_weapons_camo_wood,MPUI_CAMO_WOODLAND,,,,,250,,
|
||||
14,camo,weaponoption,MPUI_CAMO_FLORA,camo_woodland_flora,,menu_mp_weapons_camo_flora,MPUI_CAMO_FLORA,,,,,250,,
|
||||
15,camo,weaponoption,MPUI_CAMO_GOLD,camo_gold,,menu_mp_weapons_camo_gold,MPUI_CAMO_GOLD,,,,,50000,,14
|
||||
16,lens,weaponoption,MPUI_LENS_DEFAULT,,,,,,,,,,,
|
||||
17,lens,weaponoption,MPUI_LENS_RED,,,,,,,,,500,,
|
||||
18,lens,weaponoption,MPUI_LENS_BLUE,,,,,,,,,500,,
|
||||
19,lens,weaponoption,MPUI_LENS_GREEN,,,,,,,,,500,,
|
||||
20,lens,weaponoption,MPUI_LENS_ORANGE,,,,,,,,,500,,
|
||||
21,lens,weaponoption,MPUI_LENS_YELLOW,,,,,,,,,500,,
|
||||
22,reticle,weaponoption,MPUI_RETICLE_DEFAULT,,,menu_mp_reticle_red_dot_main,,,,,,,,
|
||||
23,reticle,weaponoption,MPUI_RETICLE_1,,,menu_mp_reticle_circle_split01,,,,,,500,,
|
||||
24,reticle,weaponoption,MPUI_RETICLE_2,,,menu_mp_reticle_lines_dots01,,,,,,500,,
|
||||
25,reticle,weaponoption,MPUI_RETICLE_3,,,menu_mp_reticle_circles05,,,,,,500,,
|
||||
26,reticle,weaponoption,MPUI_RETICLE_4,,,menu_mp_reticle_happyface01,,,,,,500,,
|
||||
27,reticle,weaponoption,MPUI_RETICLE_ARROWS02,,,menu_mp_reticle_arrows02,,,,,,500,,
|
||||
28,reticle,weaponoption,MPUI_RETICLE_ARROWS01,,,menu_mp_reticle_arrows01,,,,,,500,,
|
||||
29,reticle,weaponoption,MPUI_RETICLE_ARROWS03,,,menu_mp_reticle_arrows03,,,,,,500,,
|
||||
30,reticle,weaponoption,MPUI_RETICLE_BONES,,,menu_mp_reticle_bones,,,,,,500,,
|
||||
31,reticle,weaponoption,MPUI_RETICLE_BURST01,,,menu_mp_reticle_burst01,,,,,,500,,
|
||||
32,reticle,weaponoption,MPUI_RETICLE_CIRCLES01,,,menu_mp_reticle_circles01,,,,,,500,,
|
||||
33,reticle,weaponoption,MPUI_RETICLE_CIRCLES02,,,menu_mp_reticle_circles02,,,,,,500,,
|
||||
34,reticle,weaponoption,MPUI_RETICLE_CIRCLES03,,,menu_mp_reticle_circles03,,,,,,500,,
|
||||
35,reticle,weaponoption,MPUI_RETICLE_CIRCLES04,,,menu_mp_reticle_circles04,,,,,,500,,
|
||||
36,reticle,weaponoption,MPUI_RETICLE_CIRCLES_LINES01,,,menu_mp_reticle_circles_lines01,,,,,,500,,
|
||||
37,reticle,weaponoption,MPUI_RETICLE_CIRCLES_LINES02,,,menu_mp_reticle_circles_lines02,,,,,,500,,
|
||||
38,reticle,weaponoption,MPUI_RETICLE_CIRCLES_LINES03,,,menu_mp_reticle_circles_lines03,,,,,,500,,
|
||||
39,reticle,weaponoption,MPUI_RETICLE_CIRCLES_TRIANGLES01,,,menu_mp_reticle_circles_triangles01,,,,,,500,,
|
||||
40,reticle,weaponoption,MPUI_RETICLE_CIRCLES_TRIANGLES02,,,menu_mp_reticle_circles_triangles02,,,,,,500,,
|
||||
41,reticle,weaponoption,MPUI_RETICLE_CROSS01,,,menu_mp_reticle_cross01,,,,,,500,,
|
||||
42,reticle,weaponoption,MPUI_RETICLE_CROSS02,,,menu_mp_reticle_cross02,,,,,,500,,
|
||||
43,reticle,weaponoption,MPUI_RETICLE_CROSS03,,,menu_mp_reticle_cross03,,,,,,500,,
|
||||
44,reticle,weaponoption,MPUI_RETICLE_CROSS04,,,menu_mp_reticle_cross04,,,,,,500,,
|
||||
45,reticle,weaponoption,MPUI_RETICLE_CROSS05,,,menu_mp_reticle_cross05,,,,,,500,,
|
||||
46,reticle,weaponoption,MPUI_RETICLE_DIAMOND01,,,menu_mp_reticle_diamond01,,,,,,500,,
|
||||
47,reticle,weaponoption,MPUI_RETICLE_DIAMOND02,,,menu_mp_reticle_diamond02,,,,,,500,,
|
||||
48,reticle,weaponoption,MPUI_RETICLE_HEART,,,menu_mp_reticle_heart,,,,,,500,,
|
||||
49,reticle,weaponoption,MPUI_RETICLE_RADIATION,,,menu_mp_reticle_radiation,,,,,,500,,
|
||||
50,reticle,weaponoption,MPUI_RETICLE_SKULL01,,,menu_mp_reticle_skull01,,,,,,500,,
|
||||
51,reticle,weaponoption,MPUI_RETICLE_SQUARE01,,,menu_mp_reticle_square01,,,,,,500,,
|
||||
52,reticle,weaponoption,MPUI_RETICLE_SQUARE02,,,menu_mp_reticle_square02,,,,,,500,,
|
||||
53,reticle,weaponoption,MPUI_RETICLE_SQUARES_CROSS,,,menu_mp_reticle_squares_cross01,,,,,,500,,
|
||||
54,reticle,weaponoption,MPUI_RETICLE_STAR01,,,menu_mp_reticle_star01,,,,,,500,,
|
||||
55,reticle,weaponoption,MPUI_RETICLE_THREEDOTS01,,,menu_mp_reticle_three_dots,,,,,,500,,
|
||||
56,reticle,weaponoption,MPUI_RETICLE_TREYARCH,,,menu_mp_reticle_treyarch,,,,,,500,,
|
||||
57,reticle,weaponoption,MPUI_RETICLE_TRIANGLE01,,,menu_mp_reticle_triangle01,,,,,,500,,
|
||||
58,reticle,weaponoption,MPUI_RETICLE_TRIANGLE02,,,menu_mp_reticle_triangle02,,,,,,500,,
|
||||
59,reticle,weaponoption,MPUI_RETICLE_X01,,,menu_mp_reticle_x01,,,,,,500,,
|
||||
60,reticle,weaponoption,MPUI_RETICLE_X02,,,menu_mp_reticle_x02,,,,,,500,,
|
||||
61,reticle,weaponoption,MPUI_RETICLE_YINGYANG,,,menu_mp_reticle_yinyang,,,,,,500,,
|
||||
62,tag,weaponoption,FEATURE_GUN_TAG,tag,,,,,,,,1000,,
|
||||
63,emblem,weaponoption,FEATURE_GUN_EMBLEM,emblem,,,,,,,,1000,,
|
||||
64,tag,weaponoption,FEATURE_SECOND_ATTACHMENT,2ndattach,,,,,,,,3000,,
|
||||
65,reticle_color,weaponoption,MPUI_RETICLE_COLOR_1,,,,,,,,,,,
|
||||
66,reticle_color,weaponoption,MPUI_RETICLE_COLOR_2,,,,,,,,,250,,
|
||||
67,reticle_color,weaponoption,MPUI_RETICLE_COLOR_3,,,,,,,,,250,,
|
||||
68,reticle_color,weaponoption,MPUI_RETICLE_COLOR_4,,,,,,,,,250,,
|
||||
69,reticle_color,weaponoption,MPUI_RETICLE_COLOR_5,,,,,,,,,250,,
|
||||
70,reticle_color,weaponoption,MPUI_RETICLE_COLOR_6,,,,,,,,,250,,
|
||||
71,reticle_color,weaponoption,MPUI_RETICLE_COLOR_7,,,,,,,,,250,,
|
||||
0,none,point,MPUI_NONE,none,,weapon_missing_image,MPUI_NO_ATTACHMENT_DESC,,,,,,,
|
||||
1,none,point,MENU_ATTACH_POINT_TOP,top,,,MENU_ATTACH_POINT_TOP_DESC,,,,,,,
|
||||
2,none,point,MENU_ATTACH_POINT_BOTTOM,bottom,,,MENU_ATTACH_POINT_BOTTOM_DESC,,,,,,,
|
||||
3,none,point,MENU_ATTACH_POINT_TRIGGER,trigger,,,MENU_ATTACH_POINT_TRIGGER_DESC,,,,,,,
|
||||
4,none,point,MENU_ATTACH_POINT_MUZZLE,muzzle,,,MENU_ATTACH_POINT_MUZZLE_DESC,,,,,,,
|
|
@ -1,63 +0,0 @@
|
||||
#Gametypes Table,,,,,,
|
||||
a0,b1,c2,d3,e4,f5,g6
|
||||
maxnum_gametype,12,,,,,
|
||||
total_filesharegametype,12,,,,,
|
||||
#gametype reference,#gametype names,#gametype description,#image,#index,#splitscreen,#gametime names lowercase
|
||||
tdm,MPUI_TEAM_DEATHMATCH_CAPS,MENU_KILL_PLAYERS_ON_THE_OPPOSING,playlist_tdm,0,YES,MPUI_TEAM_DEATHMATCH
|
||||
dm,MPUI_DEATHMATCH_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,1,YES,MPUI_DEATHMATCH
|
||||
sd,MPUI_SEARCH_AND_DESTROY_CAPS,MENU_TEAMS_TAKE_TURNS_DEFENDING_NO_SPAWN,playlist_search_destroy,2,YES,MPUI_SEARCH_AND_DESTROY_CLASSIC
|
||||
dom,MPUI_DOMINATION_CAPS,MENU_CAPTURE_AND_HOLD_THE,playlist_domination,3,YES,MPUI_DOMINATION
|
||||
koth,MPUI_HEADQUARTERS_CAPS,MENU_CAPTURE_THE_HEADQUARTERS,playlist_headquarters,4,YES,MPUI_HEADQUARTERS
|
||||
dem,MPUI_DEMOLITION_CAPS,MENU_TEAMS_TAKE_TURNS_DEFENDING,playlist_demolition,5,YES,MPUI_DEMOLITION
|
||||
ctf,MPUI_CAPTURE_THE_FLAG_CAPS,MENU_CTF_DESC,playlist_ctf,6,YES,MPUI_CAPTURE_THE_FLAG
|
||||
sab,MPUI_SABOTAGE_CAPS,MENU_1_BOMB_IN_THE_CENTER,playlist_sabotage,7,YES,MPUI_SABOTAGE
|
||||
hlnd,MPUI_HLND_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,8,YES,MPUI_HLND
|
||||
oic,MPUI_OIC_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,9,YES,MPUI_OIC
|
||||
gun,MPUI_GUN_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_gungame,10,YES,MPUI_GUN
|
||||
shrp,MPUI_SHRP_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_sharpshooter,11,YES,MPUI_SHRP
|
||||
,,,,,,
|
||||
maxnum_basictraining_gametype,14,,,,,
|
||||
#gametype reference,#gametype names,#gametype description,#image,#index,#splitscreen,#gametime names lowercase
|
||||
tdm,MPUI_TEAM_DEATHMATCH_CAPS,MENU_KILL_PLAYERS_ON_THE_OPPOSING,playlist_tdm,bt0,YES,MPUI_TEAM_DEATHMATCH
|
||||
hc_tdm,MPUI_TDM_HARDCORE_CAPS,MENU_HC_KILL_PLAYERS_ON_THE_OPPOSING,playlist_tdm,bt1,YES,MPUI_TEAM_DEATHMATCH
|
||||
dm,MPUI_DEATHMATCH_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,bt2,YES,MPUI_DEATHMATCH
|
||||
hc_dm,MPUI_DM_HARDCORE_CAPS,MENU_HC_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,bt3,YES,MPUI_DEATHMATCH
|
||||
sd,MPUI_SEARCH_AND_DESTROY_CAPS,MENU_TEAMS_TAKE_TURNS_DEFENDING_NO_SPAWN,playlist_search_destroy,bt4,YES,MPUI_SEARCH_AND_DESTROY_CLASSIC
|
||||
dom,MPUI_DOMINATION_CAPS,MENU_CAPTURE_AND_HOLD_THE,playlist_domination,bt5,YES,MPUI_DOMINATION
|
||||
koth,MPUI_HEADQUARTERS_CAPS,MENU_CAPTURE_THE_HEADQUARTERS,playlist_headquarters,bt6,YES,MPUI_HEADQUARTERS
|
||||
dem,MPUI_DEMOLITION_CAPS,MENU_TEAMS_TAKE_TURNS_DEFENDING,playlist_demolition,bt7,YES,MPUI_DEMOLITION
|
||||
ctf,MPUI_CAPTURE_THE_FLAG_CAPS,MENU_CTF_DESC,playlist_ctf,bt8,YES,MPUI_CAPTURE_THE_FLAG
|
||||
sab,MPUI_SABOTAGE_CAPS,MENU_1_BOMB_IN_THE_CENTER,playlist_sabotage,bt9,YES,MPUI_SABOTAGE
|
||||
hlnd,MPUI_HLND_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,bt10,YES,MPUI_HLND
|
||||
oic,MPUI_OIC_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,bt11,YES,MPUI_OIC
|
||||
gun,MPUI_GUN_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_gungame,bt12,YES,MPUI_GUN
|
||||
shrp,MPUI_SHRP_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_sharpshooter,bt13,YES,MPUI_SHRP
|
||||
,,,,,,
|
||||
maxnum_lbtype,11,,,,,
|
||||
#Leaderboard string names,,,,,,
|
||||
#num,#lb_type ref,#lb gametype names,#gametype names,,#lb index,
|
||||
0,tdm,MPUI_LB_TEAM_DEATHMATCH_CAPS,MPUI_TEAM_DEATHMATCH_CAPS,,0,
|
||||
1,dm,MPUI_LB_FFA_CAPS,MPUI_DEATHMATCH_CAPS,,1,
|
||||
2,sd,MPUI_LB_SEARCH_AND_DESTROY_CAPS,MPUI_SEARCH_AND_DESTROY_CAPS,,5,
|
||||
3,dom,MPUI_LB_DOMINATION_CAPS,MPUI_DOMINATION_CAPS,,3,
|
||||
4,koth,MPUI_LB_HEADQUARTERS_CAPS,MPUI_HEADQUARTERS_CAPS,,6,
|
||||
5,dem,MPUI_LB_DEMOLITION_CAPS,MPUI_DEMOLITION_CAPS,,7,
|
||||
6,ctf,MPUI_LB_CAPTURE_THE_FLAG_CAPS,MPUI_CAPTURE_THE_FLAG_CAPS,,2,
|
||||
7,sab,MPUI_LB_SABOTAGE_CAPS,MPUI_SABOTAGE_CAPS,,4,
|
||||
8,hctdm,MPUI_LB_TEAM_DEATHMATCH_HC_CAPS,MPUI_HCTDM_CAPS,,8,
|
||||
9,hcdm,MPUI_LB_FFA_HC_CAPS,MPUI_HCDM_CAPS,,9,
|
||||
10,hcsd,MPUI_LB_SEARCH_AND_DESTROY_HC_CAPS,MPUI_HCSD_CAPS,,13,
|
||||
,,,,,,
|
||||
,,,,,,
|
||||
#Leaderboard reset period names,,,,,,
|
||||
#lb_typeByResetPeriod ref,#resetperiod names,#index,,,,
|
||||
all_time,MPUI_LB_ALL_TIME_CAPS,0,,,,
|
||||
monthly,MPUI_LB_MONTHLY_CAPS,1,,,,
|
||||
weekly,MPUI_LB_WEEKLY_CAPS,2,,,,
|
||||
,,,,,,
|
||||
,,,,,,
|
||||
#Leaderboard filter names,,,,,,
|
||||
#lb_filter ref,#filter names,#index,,,,
|
||||
none,MPUI_LB_EVERYONE_CAPS,0,,,,
|
||||
friends,MPUI_LB_FRIENDS_ONLY_CAPS,1,,,,
|
||||
lobbymembers,MPUI_LB_PLAYERS_IN_LOBBY_CAPS,2,,,,
|
|
@ -1,31 +0,0 @@
|
||||
# Map Data Table,,,,,,,,,,,,,,,
|
||||
a0,b1,c2,d3,e4,f5,g6,h7,i8,j9,k10,,,,,
|
||||
maxnum_map,26,,,,,,,,,,,,,,
|
||||
#mapname,#allies characters,#axis characters,#mapname,#mapimage,#index,#description,#mapoverlay,#map size description,#vehicles,#splitscreen,#dlc map,,,,
|
||||
,,,,,,,,,,,,,,,
|
||||
mp_array,winterspecops,winterspecops,MPUI_array,menu_mp_array_map_select_final,0,MPUI_DESC_MAP_array,compass_overlay_map_array,LARGE,NO,YES,0,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_cracked,junglemarines,junglemarines,MPUI_CRACKED,menu_mp_cracked_map_select_final,1,MPUI_DESC_MAP_CRACKED,compass_overlay_map_cracked,LARGE,NO,YES,0,MPUI_MARINE_SHORT,MPUI_NVA_SHORT,sog,nva
|
||||
mp_crisis,cubans,cubans,MPUI_CRISIS,menu_mp_crisis_map_select_final,2,MPUI_DESC_MAP_CRISIS,compass_overlay_map_crisis,MEDIUM,NO,YES,0,MPUI_REBELS_SHORT,MPUI_TROPAS_SHORT,op40,tropas
|
||||
mp_firingrange,cubans,cubans,MPUI_firingrange,menu_mp_firingrange_map_select_final,3,MPUI_DESC_MAP_firingrange,compass_overlay_map_firingrange,SMALL,NO,YES,0,MPUI_REBELS_SHORT,MPUI_TROPAS_SHORT,op40,tropas
|
||||
mp_duga,winterspecops,winterspecops,MPUI_DUGA,menu_mp_duga_map_select_final,4,MPUI_DESC_MAP_DUGA,compass_overlay_map_duga,MEDIUM,NO,YES,0,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_hanoi,junglemarines,junglemarines,MPUI_HANOI,menu_mp_hanoi_map_select_final,5,MPUI_DESC_MAP_HANOI,compass_overlay_map_hanoi,MEDIUM,NO,YES,0,MPUI_MARINE_SHORT,MPUI_NVA_SHORT,sog,nva
|
||||
mp_cairo,cubans,cubans,MPUI_CAIRO,menu_mp_cairo_map_select_final,6,MPUI_DESC_MAP_CAIRO,compass_overlay_map_cairo,MEDIUM,NO,YES,0,MPUI_REBELS_SHORT,MPUI_TROPAS_SHORT,op40,tropas
|
||||
mp_havoc,junglemarines,junglemarines,MPUI_HAVOC,menu_mp_havoc_map_select_final,7,MPUI_DESC_MAP_HAVOC,compass_overlay_map_havoc,LARGE,NO,YES,0,MPUI_MARINE_SHORT,MPUI_NVA_SHORT,sog,nva
|
||||
mp_cosmodrome,urbanspecops,urbanspecops,MPUI_COSMODROME,menu_mp_cosmodrome_map_select_final,8,MPUI_DESC_MAP_COSMODROME,compass_overlay_map_cosmodrome,MEDIUM,NO,YES,0,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_nuked,urbanspecops,urbanspecops,MPUI_NUKED,menu_mp_nuked_map_select_final,9,MPUI_DESC_MAP_NUKED,compass_overlay_map_nuked,SMALL,NO,YES,0,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_radiation,urbanspecops,urbanspecops,MPUI_RADIATION,menu_mp_radiation_map_select_final,10,MPUI_DESC_MAP_RADIATION,compass_overlay_map_radiation,MEDIUM,NO,YES,0,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_mountain,winterspecops,winterspecops,MPUI_MOUNTAIN,menu_mp_mountain_map_select_final,11,MPUI_DESC_MAP_MOUNTAIN,compass_overlay_map_mountain,MEDIUM,NO,YES,0,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_villa,cubans,cubans,MPUI_villa,menu_mp_villa_map_select_final,12,MPUI_DESC_MAP_villa,compass_overlay_map_villa,MEDIUM,NO,YES,0,MPUI_REBELS_SHORT,MPUI_TROPAS_SHORT,op40,tropas
|
||||
mp_russianbase,winterspecops,winterspecops,MPUI_russianbase,menu_mp_russianbase_map_select_final,13,MPUI_DESC_MAP_russianbase,compass_overlay_map_russianbase,LARGE,NO,YES,0,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_berlinwall2,urbanspecops,urbanspecops,MPUI_BERLINWALL2,menu_mp_berlinwall2_map_select_final,14,MPUI_DESC_MAP_BERLINWALL2,compass_overlay_map_berlinwall2,MEDIUM,NO,YES,2,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_discovery,winterspecops,winterspecops,MPUI_DISCOVERY,menu_mp_discovery_map_select_final,15,MPUI_DESC_MAP_DISCOVERY,compass_overlay_map_discovery2,MEDIUM,NO,YES,2,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_kowloon,urbanspecops,urbanspecops,MPUI_KOWLOON,menu_mp_kowloon_map_select_final,16,MPUI_DESC_MAP_KOWLOON,compass_overlay_map_kowloon,MEDIUM,NO,YES,2,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_stadium,urbanspecops,urbanspecops,MPUI_STADIUM,menu_mp_stadium_map_select_final,17,MPUI_DESC_MAP_STADIUM,compass_overlay_map_stadium,MEDIUM,NO,YES,2,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_gridlock,urbanspecops,urbanspecops,MPUI_GRIDLOCK,menu_mp_gridlock_map_select_final,18,MPUI_DESC_MAP_GRIDLOCK,compass_overlay_map_convoy,MEDIUM,NO,YES,3,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_hotel,cubans,cubans,MPUI_HOTEL,menu_mp_hotel_map_select_final,19,MPUI_DESC_MAP_HOTEL,compass_overlay_map_hotel2,MEDIUM,NO,YES,3,MPUI_REBELS_SHORT,MPUI_TROPAS_SHORT,op40,tropas
|
||||
mp_outskirts,winterspecops,winterspecops,MPUI_OUTSKIRTS,menu_mp_outskirts_map_select_final,20,MPUI_DESC_MAP_OUTSKIRTS,compass_overlay_map_stockpile,MEDIUM,NO,YES,3,MPUI_MARINE_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_zoo,urbanspecops,urbanspecops,MPUI_ZOO,menu_mp_zoo_map_select_final,21,MPUI_DESC_MAP_ZOO,compass_overlay_map_zoo,MEDIUM,NO,YES,3,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_silo,urbanspecops,urbanspecops,MPUI_SILO,menu_mp_silo_map_select_final,22,MPUI_DESC_MAP_SILO,compass_overlay_map_silo,MEDIUM,NO,YES,4,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_golfcourse,cubans,cubans,MPUI_GOLFCOURSE,menu_mp_golfcourse_map_select_final,23,MPUI_DESC_MAP_GOLFCOURSE,compass_overlay_map_golfcourse,MEDIUM,NO,YES,4,MPUI_REBELS_SHORT,MPUI_TROPAS_SHORT,op40,tropas
|
||||
mp_drivein,urbanspecops,urbanspecops,MPUI_DRIVEIN,menu_mp_drivein_map_select_final,24,MPUI_DESC_MAP_DRIVEIN,compass_overlay_map_drivein,MEDIUM,NO,YES,4,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
||||
mp_area51,urbanspecops,urbanspecops,MPUI_AREA51,menu_mp_area51_map_select_final,25,MPUI_DESC_MAP_AREA51,compass_overlay_map_area51,MEDIUM,NO,YES,4,MPUI_SPECOPS_SHORT,MPUI_RUSSIAN_SHORT,ops,spets
|
|
@ -1,10 +0,0 @@
|
||||
RUMBLEGRAPHFILE
|
||||
|
||||
7
|
||||
0.0000 0.5259
|
||||
0.1303 0.4762
|
||||
0.2821 0.3148
|
||||
0.4742 0.1540
|
||||
0.6613 0.0590
|
||||
0.8340 0.0150
|
||||
1.0000 0.0000
|
@ -1,7 +0,0 @@
|
||||
RUMBLEGRAPHFILE
|
||||
|
||||
4
|
||||
0.0000 1.0000
|
||||
0.3991 1.0000
|
||||
0.4041 0.0000
|
||||
1.0000 0.0000
|
@ -1,6 +0,0 @@
|
||||
RUMBLEGRAPHFILE
|
||||
|
||||
3
|
||||
0.0000 0.5000
|
||||
0.1050 0.3000
|
||||
1.0000 0.0000
|
@ -1,7 +0,0 @@
|
||||
RUMBLEGRAPHFILE
|
||||
|
||||
4
|
||||
0.0000 1.0000
|
||||
0.1250 1.0000
|
||||
0.4300 0.0000
|
||||
1.0000 0.0000
|
@ -1,5 +0,0 @@
|
||||
RUMBLEGRAPHFILE
|
||||
|
||||
2
|
||||
0.0000 0.2399
|
||||
1.0000 0.2397
|
@ -1,5 +0,0 @@
|
||||
RUMBLEGRAPHFILE
|
||||
|
||||
2
|
||||
0.0000 0.0000
|
||||
1.0000 0.0000
|
@ -1,10 +0,0 @@
|
||||
RUMBLEGRAPHFILE
|
||||
|
||||
7
|
||||
0.0000 0.4109
|
||||
0.1192 0.3717
|
||||
0.2806 0.2431
|
||||
0.4579 0.1533
|
||||
0.6595 0.0449
|
||||
0.8328 0.0152
|
||||
1.0000 0.0000
|
@ -1,7 +0,0 @@
|
||||
RUMBLEGRAPHFILE
|
||||
|
||||
4
|
||||
0.0000 1.0000
|
||||
0.3200 1.0000
|
||||
0.3250 0.0000
|
||||
1.0000 0.0000
|
@ -1,7 +0,0 @@
|
||||
RUMBLEGRAPHFILE
|
||||
|
||||
4
|
||||
0.0000 0.1641
|
||||
0.2265 0.1314
|
||||
0.6077 0.0270
|
||||
1.0000 0.0000
|
@ -1,7 +0,0 @@
|
||||
RUMBLEGRAPHFILE
|
||||
|
||||
4
|
||||
0.0000 1.0000
|
||||
0.3851 1.0000
|
||||
0.5701 0.1200
|
||||
1.0000 0.0000
|
@ -1,8 +0,0 @@
|
||||
RUMBLEGRAPHFILE
|
||||
|
||||
5
|
||||
0.0000 0.5405
|
||||
0.2518 0.4860
|
||||
0.4920 0.1496
|
||||
0.7479 0.0328
|
||||
1.0000 0.0000
|
@ -1,7 +0,0 @@
|
||||
RUMBLEGRAPHFILE
|
||||
|
||||
4
|
||||
0.0000 0.4000
|
||||
0.1196 0.3470
|
||||
0.1565 0.0058
|
||||
1.0000 0.0000
|
@ -1,8 +0,0 @@
|
||||
RUMBLEGRAPHFILE
|
||||
|
||||
5
|
||||
0.0000 0.4800
|
||||
0.2300 0.3600
|
||||
0.5460 0.0999
|
||||
0.8061 0.0064
|
||||
1.0000 0.0000
|
@ -1,7 +0,0 @@
|
||||
RUMBLEGRAPHFILE
|
||||
|
||||
4
|
||||
0.0000 0.4830
|
||||
0.1365 0.4703
|
||||
0.1447 0.0000
|
||||
1.0000 0.0000
|
@ -1,907 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
|
||||
#define CHOICE_X_START 0
|
||||
#define CHOICE_Y_START 34
|
||||
|
||||
#define CHOICE_GROUP "errors"
|
||||
|
||||
#include "ui_mp/menustyle.inc"
|
||||
#include "ui/choices_setup_common.menu"
|
||||
|
||||
#include "ui_mp/popupstyle.inc"
|
||||
#include "ui/choices_setup_popmenu.menu"
|
||||
|
||||
#undef CHOICE_FOCUS_SOUND
|
||||
#define CHOICE_FOCUS_SOUND "uin_navigation_over"
|
||||
|
||||
#define OPEN_WAGER_FAIL_IF_NEEDED \
|
||||
if ( getDStat( "AfterActionReportStats", "wagerMatchFailed" ) == 1 ) \
|
||||
{ \
|
||||
open error_wagerfail; \
|
||||
}
|
||||
|
||||
#define ERROR_ONESC \
|
||||
uiScript clearError; \
|
||||
close self; \
|
||||
OPEN_WAGER_FAIL_IF_NEEDED \
|
||||
execNow if( !menuisopen( main ) ) openmenu main;
|
||||
|
||||
#define ERROR_ACTION \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
uiScript clearError; \
|
||||
ERROR_ONESC
|
||||
|
||||
#define ERROR_CONTINUE \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
uiScript clearError; \
|
||||
close self; \
|
||||
uiScript loadSaveGameMap;
|
||||
|
||||
|
||||
{
|
||||
menuDef
|
||||
{
|
||||
name fullscreen_error
|
||||
fullscreen 1
|
||||
rect 0 0 640 480 // Size and position of the menu
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( error_popmenu, setfocus error_popmenu_2, ERROR_ONESC, 1 )
|
||||
|
||||
onOpen
|
||||
{
|
||||
if( IN_MP_FRONTEND )
|
||||
{
|
||||
activateBlur;
|
||||
}
|
||||
|
||||
if( dvarString("com_errorMessage") != "" )
|
||||
{
|
||||
execnow setLocalVarString error_popmenuTitle (dvarString("com_errorTitle"));
|
||||
execnow setLocalVarString error_popmenuMessage (dvarString("com_errorMessage"));
|
||||
}
|
||||
|
||||
if( IN_MP_FRONTEND )
|
||||
{
|
||||
uiScript clearError;
|
||||
}
|
||||
}
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( localVarString( error_popmenuTitle ), 1 )
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( localVarString( error_popmenuMessage ), 1 )
|
||||
|
||||
//FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_CONTINUE", ERROR_CONTINUE, ( dvarString( "error_menu_info" ) == "MENU_SCRIPTS_OUT_OF_DATE" ), ; )
|
||||
//FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_EXIT", ERROR_ACTION, 1, name error_popmenu_2 )
|
||||
|
||||
SIMPLE_CHOICE_BUTTON_SOUND_VIS_EX( 0 (SYSTEM_POPUP_HEIGHT+4) 70 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
;,
|
||||
"@MENU_CONTINUE", ITEM_ALIGN_MIDDLE_CENTER, ERROR_CONTINUE, when( dvarString( "error_menu_info" ) == "MENU_SCRIPTS_OUT_OF_DATE" ), ; )
|
||||
SIMPLE_CHOICE_BUTTON_SOUND_VIS_EX( 0 (SYSTEM_POPUP_HEIGHT+4) 70 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
exp rect X( SYSTEM_POPUP_WIDTH - getTextWidth( locString( "@MENU_EXIT" ), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) - 8 ),
|
||||
"@MENU_EXIT", ITEM_ALIGN_MIDDLE_CENTER, ERROR_ACTION, 1, name error_popmenu_2; )
|
||||
}
|
||||
|
||||
#define SYSTEM_ERROR_POPUP( popupname ) \
|
||||
menuDef \
|
||||
{ \
|
||||
SYSTEM_POPUP_SETUP_VIS( popupname, ;, focusFirst; uiScript clearError; close self;, 1 ) \
|
||||
onOpen \
|
||||
{ \
|
||||
if( IN_MP_FRONTEND ) \
|
||||
{ \
|
||||
activateBlur; \
|
||||
} \
|
||||
execnow setLocalVarString (popupname + "Title") (dvarString("com_errorTitle")); \
|
||||
execnow setLocalVarString (popupname + "Message") (dvarString("com_errorMessage")); \
|
||||
} \
|
||||
\
|
||||
SYSTEM_POPUP_TITLE_VIS( localVarString( (popupname + "Title") ), 1 ) \
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( localVarString( (popupname + "Message") ), 1 ) \
|
||||
\
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", uiScript clearError; close self; OPEN_WAGER_FAIL_IF_NEEDED, 1, ; ) \
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
#define WAGERFAIL_ONFOCUS \
|
||||
execnow statwriteddl AfterActionReportStats wagerMatchFailed 0;
|
||||
|
||||
#define WAGERFAIL_ONESC \
|
||||
close self;
|
||||
|
||||
#define WAGERFAIL_ACTION \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
WAGERFAIL_ONESC
|
||||
|
||||
SYSTEM_POPUP_SETUP_VIS( error_wagerfail, WAGERFAIL_ONFOCUS, WAGERFAIL_ONESC, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_WAGER_FAIL_TITLE", 1 )
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_WAGER_FAIL_DESC", 1 )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_EXIT", WAGERFAIL_ACTION, 1, ; )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( autojoinfriend_popmenu, setfocus autojoinfriend_popmenu_2, ;, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( dvarString( "com_errorMessage" ), 1 )
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_AUTOJOIN_FRIEND", 1 )
|
||||
|
||||
#define FRIEND_AUTO_JOIN_ON \
|
||||
exec "party_autojoindevfriend 1"; \
|
||||
close autojoinfriend_popmenu; \
|
||||
setdvar com_errorMessage ""; \
|
||||
setdvar com_errorTitle "";
|
||||
|
||||
#define FRIEND_AUTO_JOIN_OFF \
|
||||
exec "party_autojoindevfriend 0"; \
|
||||
close autojoinfriend_popmenu; \
|
||||
setdvar com_errorMessage ""; \
|
||||
setdvar com_errorTitle "";
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_YES_CAPS", FRIEND_AUTO_JOIN_ON, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_NO_CAPS", FRIEND_AUTO_JOIN_OFF, 1, name autojoinfriend_popmenu_2 )
|
||||
}
|
||||
|
||||
#undef POPUP_BUTTON_COUNT
|
||||
#define POPUP_BUTTON_COUNT 1
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( consolestatsalert_popmenu, ;, ;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( "@EXE_CONSOLE_STATS_CHECK_ALERT_TITLE", 1 )
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( "@EXE_CONSOLE_STATS_CHECK_ALERT_MESSAGE", 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_OK", close consolestatsalert_popmenu;, 1, ; )
|
||||
}
|
||||
|
||||
#ifdef PS3
|
||||
// PS3 controller removed warning
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( controllerremoved_popmenu, ;, ;, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( locString("@PLATFORM_CONTROLLER_DISCONNECTED") + (dvarString( "disconnected_ctrls" )), 1 )
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_BUTTON_NO_TEXT
|
||||
rect 0 0 0 0 0 0
|
||||
visible 1
|
||||
}
|
||||
}
|
||||
// I know, not an error, handy here
|
||||
// profile lookup dialog
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( profile_lookup_popmenu, ;, ;, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( "@PLATFORM_PROFILE_LOOKUP", 1 )
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_BUTTON_NO_TEXT
|
||||
rect 0 0 0 0 0 0
|
||||
visible 1
|
||||
}
|
||||
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
#endif
|
||||
|
||||
// save game data corrupted warning
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_connectingtodw, ;, ;, 1 )
|
||||
|
||||
onESC
|
||||
{
|
||||
if( IN_MP_FRONTEND )
|
||||
{
|
||||
deactivateBlur;
|
||||
}
|
||||
CENTER_POPUP_ON_CLOSE
|
||||
execNow ui_animate popup_connectingtodwhandler notification default 0;
|
||||
close popup_connectingtodwhandler;
|
||||
close self;
|
||||
}
|
||||
onClose
|
||||
{
|
||||
if( IN_MP_FRONTEND )
|
||||
{
|
||||
deactivateBlur;
|
||||
}
|
||||
execNow ui_animate popup_connectingtodwhandler notification default 0;
|
||||
close popup_connectingtodwhandler;
|
||||
}
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_CONNECTING_TO_DW" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
name popup_connectingtodwhandler
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
visible 1
|
||||
backcolor 0 0 0 0
|
||||
style WINDOW_STYLE_FILLED
|
||||
|
||||
onOpen
|
||||
{
|
||||
exec "initiateDemonWareConnect";
|
||||
if( dvarBool( live_banned ) )
|
||||
{
|
||||
execNow ui_animate popup_connectingtodwhandler notification show 2000;
|
||||
}
|
||||
else
|
||||
{
|
||||
execNow ui_animate popup_connectingtodwhandler notification show 30000;
|
||||
}
|
||||
open popup_connectingtodw;
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name "notification"
|
||||
visible 0
|
||||
|
||||
state
|
||||
{
|
||||
name "show"
|
||||
onEnter
|
||||
{
|
||||
if( dvarBool( live_banned ) )
|
||||
{
|
||||
setdvar com_errorTitle "@MENU_NOTICE_CAPS";
|
||||
setdvar com_errorMessage "@PLATFORM_BANNED";
|
||||
open error_popmenu;
|
||||
}
|
||||
elseif( isDemonwareFetchingDone() == 0 )
|
||||
{
|
||||
setdvar com_errorTitle "@MENU_NOTICE_CAPS";
|
||||
setdvar com_errorMessage "@EXE_DEMONWARE_DISCONNECT";
|
||||
open error_popmenu;
|
||||
}
|
||||
close popup_connectingtodw;
|
||||
close popup_inliveconnectingtodw;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Shown while connecting to DemonWare & getting all needed items for playing on
|
||||
// LIVE while in the online (dvar) sections of the game, happens when another user
|
||||
// signs in on another controller
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_inliveconnectingtodw, ;, ;, 1 )
|
||||
|
||||
onESC
|
||||
{
|
||||
if( IN_MP_FRONTEND )
|
||||
{
|
||||
deactivateBlur;
|
||||
}
|
||||
CENTER_POPUP_ON_CLOSE
|
||||
close self;
|
||||
}
|
||||
onClose
|
||||
{
|
||||
if( IN_MP_FRONTEND )
|
||||
{
|
||||
deactivateBlur;
|
||||
}
|
||||
}
|
||||
execKeyInt BUTTON_BACK {}
|
||||
execKeyInt BUTTON_B {}
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_CONNECTING_TO_DW" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_gettingdata, ;, ;, 1 )
|
||||
onESC
|
||||
{
|
||||
if( IN_MP_FRONTEND )
|
||||
{
|
||||
deactivateBlur;
|
||||
}
|
||||
close menu_xboxlive;
|
||||
close findgame_category;
|
||||
close popup_gettingdata;
|
||||
close live_cac_popup;
|
||||
close popup_gamesetup_private;
|
||||
close private_cac_popup;
|
||||
exec "onlinegame 0";
|
||||
exec "xstopprivateparty";
|
||||
exec "xstopparty";
|
||||
}
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_DOWNLOADING_GAME_SETTINGS_CAPS" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_downloadingfile, ;, execnow fileShareAbortOperation;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_DOWNLOAD_FILE" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_downloadinginfo, ;, ;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_DOWNLOADING" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_downloadingCompressedStats, ;, ;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_DOWNLOAD_OTHER_PLAYER_STATS" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_fetchstats, ;, ;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_FETCH_STATS" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_uploadingfile, ;, ;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_UPLOAD_FILE" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_gettingPlayercardInfo, ;, ;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_GETTING_PLAYERCARD" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_getlclaninfofromxuid, ;, ;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_GETTING_CLAN_INFO" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_gettingoffers, ;, ;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_GETTING_STORE_DATA" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_connectingtolobby, ;, focusFirst;, 1 )
|
||||
onESC
|
||||
{
|
||||
if( IN_MP_FRONTEND )
|
||||
{
|
||||
deactivateBlur;
|
||||
}
|
||||
close menu_xboxlive;
|
||||
close popup_gettingdata;
|
||||
close live_cac_popup;
|
||||
close popup_gamesetup_private;
|
||||
close private_cac_popup;
|
||||
exec "onlinegame 0";
|
||||
exec "xstopprivateparty";
|
||||
exec "xstopparty";
|
||||
}
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_CONNECTING_TO_LOBBY" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_connecting_dw, ;, focusFirst;, 1 )
|
||||
onESC
|
||||
{
|
||||
if( IN_MP_FRONTEND )
|
||||
{
|
||||
deactivateBlur;
|
||||
}
|
||||
close menu_xboxlive;
|
||||
close popup_gettingdata;
|
||||
close live_cac_popup;
|
||||
close popup_gamesetup_private;
|
||||
close private_cac_popup;
|
||||
close main_online
|
||||
exec "onlinegame 0";
|
||||
close self;
|
||||
}
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_CONNECTING_DW" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_creating_account, ;, focusFirst;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_CREATING_PROFILE" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_deleting_account, ;, focusFirst;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_DELETING_PROFILE" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_error_deleting_account, ;, focusFirst;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_ERROR_DELETING_PROFILE", 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self;, 1, ; )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_error_creating_account, ;, focusFirst;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_ERROR_CREATING_PROFILE", 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self;, 1, ; )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_account_not_available, ;, focusFirst;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_ACCOUNT_NOT_AVAILABLE", 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self;, 1, ; )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_reconnectingtoparty, ;, close menu_xboxlive; close popup_gettingdata;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( locString( "@MENU_RECONNECTING_TO_SQUAD" ), 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_error_contentserver_down, ;, focusFirst; uiScript clearError; close self;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MPUI_ERROR_CAPS", 1 )
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_CONTENT_SERVER_DOWN", 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", uiScript clearError; close self;, 1, ; )
|
||||
}
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( stats_notfound_error_popup, ;, ;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_STATERROR_TITLE", 1 )
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_STATS_ERROR", 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self;, 1, ; )
|
||||
}
|
||||
|
||||
SYSTEM_ERROR_POPUP( "error_dw_fetch_file" )
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( save_corrupted, ;, close self; close blackout_3d_tv, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_SAVE_CORRUPTED", 1 )
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_SAVEDATA_CORRUPTED", 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self; close blackout_3d_tv, 1, ; )
|
||||
}
|
||||
|
||||
SYSTEM_ERROR_POPUP( "error_popmenu_party" )
|
||||
|
||||
SYSTEM_ERROR_POPUP( "error_popmenu_lobby" )
|
||||
|
||||
SYSTEM_ERROR_POPUP( "error_popmenu_keyboard" )
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( startmatch_popup, ;, ;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MPUI_ERROR_CAPS", 1 )
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( "@PLATFORM_MIN_ONE_REMOTE", 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", close self, 1, ; )
|
||||
}
|
||||
|
||||
#undef POPUP_BUTTON_COUNT
|
||||
#define POPUP_BUTTON_COUNT 2
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( acceptinvite_warning, setFocus acceptinvite_warning_2, close self;, 1 )
|
||||
onOpen
|
||||
{
|
||||
close menu_joinsession;
|
||||
}
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_ACCEPTINVITETITLE", 1 )
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_LEAVEMPGAMEWARNINGSQUADHOST", when( privatepartyhost() && !aloneinparty() ); )
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_LEAVESQUADWARNING", when( !privatepartyhost() && !inlobby() ); )
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_LEAVEMPGAMEWARNING", when( !privatepartyhost() && inlobby() ); )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_RESUMEGAME", close menu_joinsession; close self;, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_ACCEPTINVITE", close self; exec "acceptInvite";, 1, name acceptinvite_warning_2 )
|
||||
}
|
||||
|
||||
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X 180
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START 230
|
||||
|
||||
#define TOAST_POPUP_Y_OFFSET -55
|
||||
#define TOAST_POPUP_HEIGHT 36
|
||||
#define TOAST_POPUP_ICON_HEIGHT 26
|
||||
#define TOAST_POPUP_ICON_WIDTH 26
|
||||
#define TOAST_BIG_DESC_WIDTH ( GetTextWidth( getToastPopupDescription(), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) )
|
||||
#define TOAST_SIDE_PAD_SIZE 10
|
||||
#define TOAST_MIDDLE_PAD_SIZE 5
|
||||
|
||||
#define TOAST_POPUP_BG_WIDTH( textWidth ) ( TOAST_SIDE_PAD_SIZE + TOAST_POPUP_ICON_WIDTH + TOAST_MIDDLE_PAD_SIZE + textWidth + TOAST_SIDE_PAD_SIZE )
|
||||
#define TOAST_POPUP_BG_X_START( textWidth ) ( -1 * ( TOAST_POPUP_BG_WIDTH( textWidth ) / 2 ) )
|
||||
#define TOAST_POPUP_ICON_X_START( textWidth ) ( TOAST_POPUP_BG_X_START( textWidth ) + TOAST_SIDE_PAD_SIZE )
|
||||
#define TOAST_POPUP_TEXT_X_START( textWidth ) ( TOAST_POPUP_ICON_X_START( textWidth ) + TOAST_POPUP_ICON_WIDTH + TOAST_MIDDLE_PAD_SIZE )
|
||||
|
||||
#define SHOW_NORMAL_TOAST_POPUP ( getToastPopupTitle() != "" )
|
||||
|
||||
menuDef
|
||||
{
|
||||
name menu_toast_popup
|
||||
rect 0 0 640 480
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_FILLED
|
||||
priority MENU_PRI_POPUP
|
||||
openSlideSpeed 150
|
||||
closeSlideSpeed 700
|
||||
openSlideDirection MENU_SLIDE_DIRECTION_BOTTOM_TO_TOP
|
||||
closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
|
||||
// Title and description version
|
||||
itemDef
|
||||
{
|
||||
rect 0 TOAST_POPUP_Y_OFFSET 0 TOAST_POPUP_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM
|
||||
exp rect X( TOAST_POPUP_BG_X_START( getToastPopupWidth() ) )
|
||||
exp rect W( TOAST_POPUP_BG_WIDTH( getToastPopupWidth() ) )
|
||||
style WINDOW_STYLE_SHADER_FRAMED
|
||||
frame 16 0.5 FRAME_SIDE_ALL
|
||||
background "menu_mp_lobby_frame_circle"
|
||||
forecolor 0 0 0 0.5
|
||||
visible when( SHOW_NORMAL_TOAST_POPUP );
|
||||
decoration
|
||||
}
|
||||
|
||||
PREPROC_SHADER_DRAW_ADV_VIS_EX( TOAST_POPUP_ICON_X_START( getToastPopupWidth() ),
|
||||
(TOAST_POPUP_Y_OFFSET+5),
|
||||
TOAST_POPUP_ICON_WIDTH,
|
||||
TOAST_POPUP_ICON_HEIGHT,
|
||||
HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM,
|
||||
getToastPopupIcon(), 1 1 1 0.8,
|
||||
when( SHOW_NORMAL_TOAST_POPUP );, ; )
|
||||
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( TOAST_POPUP_TEXT_X_START( getToastPopupWidth() ),
|
||||
(TOAST_POPUP_Y_OFFSET+2),
|
||||
( getToastPopupWidth() ),
|
||||
15,
|
||||
HORIZONTAL_ALIGN_CENTER,
|
||||
VERTICAL_ALIGN_BOTTOM,
|
||||
getToastPopupTitle(),
|
||||
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, 1 1 1 1,
|
||||
when( SHOW_NORMAL_TOAST_POPUP );, ; )
|
||||
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( TOAST_POPUP_TEXT_X_START( getToastPopupWidth() ),
|
||||
(TOAST_POPUP_Y_OFFSET+18),
|
||||
( getToastPopupWidth() ),
|
||||
15,
|
||||
HORIZONTAL_ALIGN_CENTER,
|
||||
VERTICAL_ALIGN_BOTTOM,
|
||||
getToastPopupDescription(),
|
||||
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, 1 1 1 1,
|
||||
when( SHOW_NORMAL_TOAST_POPUP );, ; )
|
||||
|
||||
// Description only version
|
||||
itemDef
|
||||
{
|
||||
rect 0 TOAST_POPUP_Y_OFFSET 0 TOAST_POPUP_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM
|
||||
exp rect X( TOAST_POPUP_BG_X_START( TOAST_BIG_DESC_WIDTH ) )
|
||||
exp rect W( TOAST_POPUP_BG_WIDTH( TOAST_BIG_DESC_WIDTH ) )
|
||||
style WINDOW_STYLE_SHADER_FRAMED
|
||||
frame 16 0.5 FRAME_SIDE_ALL
|
||||
background "menu_mp_lobby_frame_circle"
|
||||
forecolor 0 0 0 0.5
|
||||
visible when( !SHOW_NORMAL_TOAST_POPUP );
|
||||
decoration
|
||||
}
|
||||
|
||||
|
||||
PREPROC_SHADER_DRAW_ADV_VIS_EX( TOAST_POPUP_ICON_X_START( TOAST_BIG_DESC_WIDTH ),
|
||||
(TOAST_POPUP_Y_OFFSET+5),
|
||||
TOAST_POPUP_ICON_WIDTH,
|
||||
TOAST_POPUP_ICON_HEIGHT,
|
||||
HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM,
|
||||
getToastPopupIcon(), 1 1 1 0.8,
|
||||
when( !SHOW_NORMAL_TOAST_POPUP );, ; )
|
||||
|
||||
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( TOAST_POPUP_TEXT_X_START( TOAST_BIG_DESC_WIDTH ),
|
||||
(TOAST_POPUP_Y_OFFSET+5),
|
||||
TOAST_BIG_DESC_WIDTH,
|
||||
TOAST_POPUP_ICON_HEIGHT,
|
||||
HORIZONTAL_ALIGN_CENTER,
|
||||
VERTICAL_ALIGN_BOTTOM,
|
||||
getToastPopupDescription(),
|
||||
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, 1 1 1 1,
|
||||
when( !SHOW_NORMAL_TOAST_POPUP );, ; )
|
||||
}
|
||||
|
||||
#define VIS_PRESS_START 1
|
||||
|
||||
menuDef
|
||||
{
|
||||
name "pregame_loaderror"
|
||||
rect 0 0 640 480
|
||||
fullScreen 1
|
||||
focusColor COLOR_FOCUSED
|
||||
backcolor 1 1 1 0
|
||||
style WINDOW_STYLE_FILLED
|
||||
onClose
|
||||
{
|
||||
uiScript clearError
|
||||
}
|
||||
onOpen
|
||||
{
|
||||
setdvar ui_SaveLoadVisible "0";
|
||||
}
|
||||
onEsc
|
||||
{
|
||||
uiScript playerstart
|
||||
}
|
||||
|
||||
// background
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_FILLED
|
||||
type ITEM_TYPE_OWNERDRAW
|
||||
rect FULLSCREEN_WIDE
|
||||
backcolor 1 1 1 1
|
||||
visible 1
|
||||
background cinematic
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name "profile"
|
||||
type ITEM_TYPE_OWNERDRAW
|
||||
visible 1
|
||||
rect 40 40 560 400
|
||||
ownerdraw UI_LOADPROFILING
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name errorinfo
|
||||
type ITEM_TYPE_TEXT
|
||||
rect 120 142 400 255
|
||||
style WINDOW_STYLE_FILLED
|
||||
textalign ITEM_ALIGN_TOP_CENTER
|
||||
autowrapped
|
||||
dvar "com_errorMessage"
|
||||
textscale .8
|
||||
forecolor 1 .2 .2 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
|
||||
#ifdef PS3
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
text "@PLATFORM_UI_PRESS_BUTTONSELECTCHOICE"
|
||||
style WINDOW_STYLE_FILLED
|
||||
textscale TEXTSIZE_SMALL
|
||||
border 0
|
||||
bordercolor 1 1 1 1
|
||||
rect 0 388 640 45
|
||||
textalign ITEM_ALIGN_TOP_CENTER
|
||||
textaligny 4
|
||||
forecolor 1 1 1 0.4
|
||||
backcolor 0 0 0 0
|
||||
visible when ( !dvarbool( ui_isSaving ) && VIS_PRESS_START );
|
||||
decoration
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef XENON
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
text "@MENU_PRESS_START_TO_SKIP"
|
||||
style WINDOW_STYLE_FILLED
|
||||
textscale TEXTSIZE_SMALL
|
||||
border 0
|
||||
bordercolor 1 1 1 1
|
||||
rect 0 388 640 45
|
||||
textalign ITEM_ALIGN_TOP_CENTER
|
||||
textaligny 4
|
||||
forecolor 1 1 1 0.4
|
||||
backcolor 0 0 0 0
|
||||
visible when ( !dvarbool( ui_isSaving ) && VIS_PRESS_START );
|
||||
decoration
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef PC
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
text "@MENU_CLICK_TO_START_THE_MISSION"
|
||||
style WINDOW_STYLE_FILLED
|
||||
textscale TEXTSIZE_SMALL
|
||||
border 0
|
||||
bordercolor 1 1 1 1
|
||||
rect 0 388 640 45
|
||||
textalign ITEM_ALIGN_TOP_CENTER
|
||||
textaligny 4
|
||||
forecolor 1 1 1 0.4
|
||||
backcolor 0 0 0 0
|
||||
visible when ( !dvarbool( ui_isSaving ) && VIS_PRESS_START );
|
||||
decoration
|
||||
}
|
||||
#endif // #ifdef PC
|
||||
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_BUTTON
|
||||
rect -128 0 896 480
|
||||
style WINDOW_STYLE_EMPTY
|
||||
visible 1
|
||||
forecolor 0 0 0 0
|
||||
backcolor 0 0 0 0
|
||||
action
|
||||
{
|
||||
uiScript playerstart
|
||||
}
|
||||
}
|
||||
|
||||
#include "ui/safearea.menu"
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
name "pregame_loaderror_mp"
|
||||
rect 0 0 640 480
|
||||
fullScreen 1
|
||||
focusColor COLOR_FOCUSED
|
||||
backcolor 1 1 1 0
|
||||
style WINDOW_STYLE_FILLED
|
||||
blurWorld 6.0
|
||||
onClose
|
||||
{
|
||||
uiScript clearError
|
||||
}
|
||||
onOpen
|
||||
{
|
||||
setdvar ui_SaveLoadVisible "0";
|
||||
}
|
||||
|
||||
// background
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_FILLED
|
||||
rect FULLSCREEN_WIDE
|
||||
backcolor 0.2 0.2 0.2 .5
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
|
||||
|
||||
|
||||
itemDef
|
||||
{
|
||||
name "profile"
|
||||
type ITEM_TYPE_OWNERDRAW
|
||||
visible 1
|
||||
rect 40 40 560 400
|
||||
ownerdraw UI_LOADPROFILING
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name errorinfo
|
||||
type ITEM_TYPE_TEXT
|
||||
rect 120 142 400 255
|
||||
style WINDOW_STYLE_FILLED
|
||||
textalign ITEM_ALIGN_TOP_CENTER
|
||||
autowrapped
|
||||
dvar "com_errorMessage"
|
||||
textscale .8
|
||||
forecolor 1 .2 .2 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
|
||||
// the button
|
||||
// Text message saying you should click to continue
|
||||
#ifdef CONSOLE
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
text "@MENU_PRESS_START"
|
||||
style WINDOW_STYLE_FILLED
|
||||
textscale TEXTSIZE_TITLE
|
||||
rect 0 388 640 45
|
||||
textalign ITEM_ALIGN_TOP_CENTER
|
||||
textaligny 4
|
||||
forecolor 1 1 1 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
#endif // #ifdef CONSOLE
|
||||
|
||||
#ifdef PC
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
text "@MENU_CLICK_TO_START_THE_MISSION"
|
||||
style WINDOW_STYLE_FILLED
|
||||
textscale TEXTSIZE_TITLE
|
||||
rect 0 388 640 45
|
||||
textalign ITEM_ALIGN_TOP_CENTER
|
||||
textaligny 4
|
||||
forecolor 1 1 1 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
#endif // #ifdef PC
|
||||
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_BUTTON
|
||||
rect -128 0 896 480
|
||||
style WINDOW_STYLE_EMPTY
|
||||
visible 1
|
||||
forecolor 0 0 0 0
|
||||
backcolor 0 0 0 0
|
||||
action
|
||||
{
|
||||
uiScript clearLoadErrorsSummary
|
||||
}
|
||||
}
|
||||
|
||||
#include "ui/safearea.menu"
|
||||
}
|
||||
|
||||
}
|
@ -1,447 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
#define OPTIONS_STYLE 1
|
||||
#define CHOICE_SEP_1 27
|
||||
#define CHOICE_SEP_2 30
|
||||
#include "ui_mp/menustyle.inc"
|
||||
#include "ui/choices_setup_common.menu"
|
||||
#include "ui/framestyle.inc"
|
||||
#include "ui/frame.inc"
|
||||
|
||||
#undef CHOICE_ACTION_SOUND
|
||||
#define CHOICE_ACTION_SOUND "uin_mouse_click_t"
|
||||
|
||||
#undef CHOICE_BUTTON_NAME
|
||||
#define CHOICE_BUTTON_NAME "options_graphics_"
|
||||
#undef MENUDEF_NAME
|
||||
#define MENUDEF_NAME options_graphics
|
||||
|
||||
#undef OPTIONS_GRAPHICS_HEIGHT
|
||||
#undef OPTIONS_GRAPHICS_WIDTH
|
||||
#define OPTIONS_GRAPHICS_HEIGHT 332
|
||||
#define OPTIONS_GRAPHICS_WIDTH OPTIONS_GRAPHICS_HEIGHT * FRAME_ASPECT_RATIO
|
||||
|
||||
{
|
||||
menuDef
|
||||
{
|
||||
name options_graphics
|
||||
fullScreen 0
|
||||
rect 0 0 640 480
|
||||
focusColor COLOR_FOCUSED
|
||||
soundloop ""
|
||||
|
||||
onOpen
|
||||
{
|
||||
LOCAL_CLOSE_ALL_BUT( options_graphics )
|
||||
|
||||
setLocalVarBool ui_showApply 0;
|
||||
setLocalVarBool ui_hideBack 1;
|
||||
|
||||
// setfromdvar dst src
|
||||
exec "exec ui/options_graphics.cfg";
|
||||
|
||||
if ( dvarInt( r_picmip_manual ) == 0 )
|
||||
{
|
||||
exec "set ui_r_picmip -1";
|
||||
exec "set ui_r_picmip_bump -1";
|
||||
exec "set ui_r_picmip_spec -1";
|
||||
exec "set ui_r_picmip_manual 0";
|
||||
}
|
||||
|
||||
setdvar g_reloading "0";
|
||||
|
||||
// round ai_corpsecount down to valid values.
|
||||
if ( dvarInt( ai_corpsecount ) >= 32 )
|
||||
{
|
||||
// KTouevsky: Bump this number when the RAGDOLL_MAX_SIMULATING in ragdoll.h is bumped to 32 too
|
||||
// setDvar ai_corpseCount 32;
|
||||
setDvar ai_corpseCount 16;
|
||||
}
|
||||
elseif ( dvarInt( ai_corpsecount ) >= 16 )
|
||||
{
|
||||
setDvar ai_corpseCount 16;
|
||||
}
|
||||
elseif ( dvarInt( ai_corpsecount ) >= 10 )
|
||||
{
|
||||
setDvar ai_corpseCount 10;
|
||||
}
|
||||
elseif ( dvarInt( ai_corpsecount ) >= 5 )
|
||||
{
|
||||
setDvar ai_corpseCount 5;
|
||||
}
|
||||
elseif ( dvarInt( ai_corpsecount ) >= 3 )
|
||||
{
|
||||
setDvar ai_corpseCount 3;
|
||||
}
|
||||
|
||||
// 2008-Aug-1 KTouevsky: loosk like COD4 have "Soften Smoke Edges" to be "Yes/No" only and linked to r_zfeather directly
|
||||
//execOnDvarFloatValue r_zfeather 0 "set ui_zfeather 0"; // off
|
||||
//execOnDvarFloatValue r_zfeather 1 "set ui_zfeather 1"; // world
|
||||
//execOnDvarFloatValue r_depthPrepassModels 1 "set ui_zfeather 2"; // everything
|
||||
|
||||
if (IsInGame())
|
||||
{
|
||||
showMenu "pausedbkgnd";
|
||||
}
|
||||
else
|
||||
{
|
||||
activateBlur;
|
||||
}
|
||||
}
|
||||
onClose
|
||||
{
|
||||
setLocalVarBool ui_hideBack 0;
|
||||
//execOnDvarIntValue ui_zfeather 0 "set r_zfeather 0;set r_depthPrepassModels 0"; // off
|
||||
//execOnDvarIntValue ui_zfeather 1 "set r_zfeather 1;set r_depthPrepassModels 0"; // world
|
||||
//execOnDvarIntValue ui_zfeather 2 "set r_zfeather 1;set r_depthPrepassModels 1"; // everything
|
||||
|
||||
if (IsInGame())
|
||||
{
|
||||
hideMenu "pausedbkgnd";
|
||||
}
|
||||
else
|
||||
{
|
||||
deactivateBlur;
|
||||
}
|
||||
|
||||
// be sure brightness (r_gamma) is stored in the profile
|
||||
exec updategamerprofile;
|
||||
}
|
||||
onESC
|
||||
{
|
||||
close self;
|
||||
open options_new_pc;
|
||||
}
|
||||
PC_TAB_SWITCH_ACTIONS( options_new_pc, options_controls_new_pc, options_controls_new_pc )
|
||||
|
||||
#include "ui_mp/leftside_options.inc"
|
||||
|
||||
#undef CHOICE_X_START
|
||||
#undef CHOICE_Y_START
|
||||
#undef CHOICE_HORIZONTAL_ALIGN
|
||||
#undef CHOICE_VERTICAL_ALIGN
|
||||
#undef CHOICE_DVAR_EXTRA_WIDTH
|
||||
#undef CHOICE_TEXT_OFFSET_X
|
||||
|
||||
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
|
||||
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
|
||||
#define CHOICE_X_START ((-OPTIONS_GRAPHICS_WIDTH/2) - 75)
|
||||
#define CHOICE_Y_START ((-OPTIONS_GRAPHICS_HEIGHT/2) + 32)
|
||||
#define CHOICE_DVAR_EXTRA_WIDTH 120
|
||||
#define CHOICE_TEXT_OFFSET_X -10
|
||||
|
||||
#undef CHOICE_TEXTSTYLE
|
||||
#undef CHOICE_TEXTSIZE
|
||||
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
|
||||
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
|
||||
|
||||
#undef CHOICE_TEXT_COLOR_NO_HL
|
||||
#undef CHOICE_TEXT_COLOR_HL
|
||||
#undef CHOICE_CAPTION_TEXT_COLOR_NO_HL
|
||||
#undef CHOICE_CAPTION_TEXT_COLOR_HL
|
||||
|
||||
#define CHOICE_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
|
||||
#define CHOICE_TEXT_COLOR_HL 1 1 1 1
|
||||
#define CHOICE_CAPTION_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
|
||||
#define CHOICE_CAPTION_TEXT_COLOR_HL 0 0 0 1
|
||||
|
||||
#define TEXTURE_QUALITY_ACTION \
|
||||
setLocalVarBool ui_showApply 1; \
|
||||
setDvar ui_r_picmip_bump dvarInt( ui_r_picmip ); \
|
||||
setDvar ui_r_picmip_spec dvarInt( ui_r_picmip ); \
|
||||
if ( dvarInt( ui_r_picmip ) == -1 ) \
|
||||
{ \
|
||||
setDvar ui_r_picmip_manual 0; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
setDVar ui_r_picmip_manual 1; \
|
||||
}
|
||||
|
||||
#define MP_ZOMBIE_INGAME ( IsInGame() && ( dvarBool( ui_multiplayer ) || dvarBool( zombiemode ) ) )
|
||||
|
||||
FRAME_CHOICE_SECTION_TITLE( 21, "@MENU_GRAPHICS_CAPS" )
|
||||
|
||||
FRAME_CHOICE_DVARENUMLIST_VIS( 22, "@MENU_VIDEO_MODE_CAPS", ui_r_mode, r_mode, setLocalVarBool ui_showApply 1, !MP_ZOMBIE_INGAME )
|
||||
FRAME_CHOICE_DVARYESNO_VIS( 23, "@MENU_FULLSCREEN_CAPS", ui_r_fullscreen, setLocalVarBool ui_showApply 1, !MP_ZOMBIE_INGAME )
|
||||
FRAME_CHOICE_DVARFLOATLIST_VIS( 24, "@MENU_ANTIALIASING_CAPS", ui_r_aasamples, { "@MENU_OFF_CAPS" 1 "@MENU_2X_CAPS" 2 "@MENU_4X_CAPS" 4 "@MENU_8X_CAPS" 8 }, setLocalVarBool ui_showApply 1;, !MP_ZOMBIE_INGAME && !dvarbool(r_supports16xAA) )
|
||||
FRAME_CHOICE_DVARFLOATLIST_VIS( 24, "@MENU_ANTIALIASING_CAPS", ui_r_aasamples, { "@MENU_OFF_CAPS" 1 "@MENU_2X_CAPS" 2 "@MENU_4X_CAPS" 4 "@MENU_8X_CAPS" 8 "@MENU_16X_CAPS" 16 }, setLocalVarBool ui_showApply 1;, !MP_ZOMBIE_INGAME && dvarbool(r_supports16xAA) )
|
||||
FRAME_CHOICE_DVARSTRINGLIST_VIS( 25, "@MENU_ASPECT_RATIO_CAPS", ui_r_aspectratio, { "@MENU_AUTO_CAPS"; "auto"; "@MENU_STANDARD_4_3_CAPS"; "standard"; "@MENU_WIDE_16_10_CAPS"; "wide 16:10"; "@MENU_WIDE_16_9_CAPS"; "wide 16:9" }, setLocalVarBool ui_showApply 1, !MP_ZOMBIE_INGAME )
|
||||
FRAME_CHOICE_DVARENUMLIST_VIS( 26, "@MENU_SCREEN_REFRESH_RATE_CAPS", ui_r_displayRefresh, r_displayRefresh, setLocalVarBool ui_showApply 1;, !MP_ZOMBIE_INGAME )
|
||||
FRAME_CHOICE_DVARYESNO_VIS( 27, "@MENU_SYNC_EVERY_FRAME_CAPS", ui_r_vsync, setLocalVarBool ui_showApply 1, !MP_ZOMBIE_INGAME )
|
||||
|
||||
FRAME_CHOICE_DVARSTRINGLIST( 28, "@MENU_TEXTURE_MIPMAPS_CAPS", r_texFilterMipMode, { "@MENU_AUTOMATIC_CAPS"; "Unchanged"; "@MENU_BILINEAR_CAPS"; "Force Bilinear"; "@MENU_TRILINEAR_CAPS"; "Force Trilinear" }, ; )
|
||||
FRAME_DVARSLIDER( 29, "@MENU_TEXTURE_ANISOTROPY_CAPS", r_texFilterAnisoMin, 1, 1, 16, ; )
|
||||
FRAME_CHOICE_DVARFLOATLIST_VIS( 30, "@MENU_TEXTURE_QUALITY_CAPS", ui_r_picmip, { "@MENU_AUTOMATIC_CAPS" -1 "@PLATFORM_LOW_CAPS" 3 "@MENU_NORMAL_CAPS" 2 "@PLATFORM_HIGH_CAPS" 1 "@MENU_EXTRA_CAPS" 0 }, TEXTURE_QUALITY_ACTION, !MP_ZOMBIE_INGAME )
|
||||
|
||||
|
||||
FRAME_CHOICE_DVARYESNO_VIS( 31, "@PATCH_MENU_OPTION_SHADERWARMING_CAPS", r_shaderWarming, ;, 1 )
|
||||
FRAME_CHOICE_DVARYESNO_VIS( 32, "@MENU_SHADOWS_CAPS", sm_enable, ;, dvarbool( ui_showShadowOptions ) )
|
||||
FRAME_CHOICE_DVARYESNO_VIS( 33, "@MENU_OPTION_BULLET_IMPACTS_CAPS", fx_marks, ;, 1 )
|
||||
// KTouevsky: Add back insane when the RAGDOLL_MAX_SIMULATING in ragdoll.h is bumped to 32 too
|
||||
// FRAME_CHOICE_DVARFLOATLIST_VIS( 34, "@MENU_NUMBER_OF_CORPSES_CAPS", ai_corpsecount, { "@MENU_TINY_CAPS" 3 "@MENU_SMALL_CAPS" 5 "@MENU_MEDIUM_CAPS" 10 "@MENU_LARGE_CAPS" 16 "@MENU_INSANE_CAPS" 32 }, ;, !dvarBool( ui_multiplayer ) )
|
||||
FRAME_CHOICE_DVARFLOATLIST_VIS( 34, "@MENU_NUMBER_OF_CORPSES_CAPS", ai_corpsecount, { "@MENU_TINY_CAPS" 3 "@MENU_SMALL_CAPS" 5 "@MENU_MEDIUM_CAPS" 10 "@MENU_LARGE_CAPS" 16 }, ;, !dvarBool( ui_multiplayer ) )
|
||||
FRAME_DVARSLIDER( 35, "@MENU_BRIGHTNESS_CAPS", r_gamma, 1, 0.5, 3, ; )
|
||||
FRAME_DVARSLIDER_VIS( 36, "@PLATFORM_FOV_CAPS", cg_fov_default, 1, 65, 80, ;, ( dvarint( ui_multiplayer ) ) )
|
||||
|
||||
#undef CHOICE_TEXTCOLOR
|
||||
#define CHOICE_TEXTCOLOR 0.2 0.2 0.2 1
|
||||
// darker disabled color in-game
|
||||
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 22, "@MENU_VIDEO_MODE_CAPS", ;, ;, MP_ZOMBIE_INGAME, ; )
|
||||
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 23, "@MENU_FULLSCREEN_CAPS", ;, ;, MP_ZOMBIE_INGAME, ; )
|
||||
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 24, "@MENU_ANTIALIASING_CAPS", ;, ;, MP_ZOMBIE_INGAME, ; )
|
||||
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 25, "@MENU_ASPECT_RATIO_CAPS", ;, ;, MP_ZOMBIE_INGAME, ; )
|
||||
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 26, "@MENU_SCREEN_REFRESH_RATE_CAPS", ;, ;, MP_ZOMBIE_INGAME, ; )
|
||||
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 27, "@MENU_SYNC_EVERY_FRAME_CAPS", ;, ;, MP_ZOMBIE_INGAME, ; )
|
||||
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 30, "@MENU_TEXTURE_QUALITY_CAPS", ;, ;, MP_ZOMBIE_INGAME, ; )
|
||||
|
||||
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 32, "@MENU_SHADOWS_CAPS", ;, ;, !dvarbool( ui_showShadowOptions ) && MP_ZOMBIE_INGAME, ; )
|
||||
|
||||
#undef CHOICE_TEXTCOLOR
|
||||
#define CHOICE_TEXTCOLOR 0.4 0.4 0.4 1
|
||||
// lighter disabled color in the shell
|
||||
FRAME_CHOICE_DBUTTON_DARK_FOCUS_VIS_EX( 32, "@MENU_SHADOWS_CAPS", ;, ;, !dvarbool( ui_showShadowOptions ), ; )
|
||||
|
||||
#undef CHOICE_TEXT_COLOR_NO_HL
|
||||
#undef CHOICE_TEXT_COLOR_HL
|
||||
#undef CHOICE_CAPTION_TEXT_COLOR_NO_HL
|
||||
#undef CHOICE_CAPTION_TEXT_COLOR_HL
|
||||
|
||||
#define CHOICE_TEXT_COLOR_NO_HL 1 1 1 1
|
||||
#define CHOICE_TEXT_COLOR_HL 0 0 0 1
|
||||
#define CHOICE_CAPTION_TEXT_COLOR_NO_HL 1 1 1 1
|
||||
#define CHOICE_CAPTION_TEXT_COLOR_HL 0 0 0 1
|
||||
|
||||
FRAME_BUTTON_PC_RIGHT_OFFSET( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT, 0,
|
||||
"@MENU_APPLY",
|
||||
open vid_restart_popmenu;,
|
||||
when( ( localVarBool( ui_showApply ) && !dvarint( sv_running ) ) || dvarInt(ui_allow_graphic_change) ); )
|
||||
|
||||
FRAME_BUTTON_PC_RIGHT_OFFSET( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT, 0,
|
||||
"@MENU_APPLY",
|
||||
uiScript openMenuOnDvar g_reloading 0 vid_restart_popmenu_listen;
|
||||
uiScript openMenuOnDvarNot g_reloading 0 vid_restart_popmenu_dead;,
|
||||
when( localVarBool( ui_showApply ) && dvarint( sv_running ) && dvarInt( ui_allow_graphic_change ) == 0 ); )
|
||||
|
||||
//CHOICE_APPLY_VIS( "@MENU_APPLY", open vid_restart_popmenu, when( ( localVarBool( ui_showApply ) && !dvarint( sv_running ) ) || dvarInt(ui_allow_graphic_change) ); )
|
||||
//CHOICE_APPLY_VIS( "@MENU_APPLY", uiScript openMenuOnDvar g_reloading 0 vid_restart_popmenu_listen; uiScript openMenuOnDvarNot g_reloading 0 vid_restart_popmenu_dead;, when( localVarBool( ui_showApply ) && dvarint( sv_running ) && dvarInt( ui_allow_graphic_change ) == 0 ); )
|
||||
//CHOICE_BACK( "@MENU_BACK", close self )
|
||||
|
||||
|
||||
// These are last so I don't have to redefine everything.
|
||||
#undef CHOICE_TEXTALIGN
|
||||
#define CHOICE_TEXTALIGN ITEM_ALIGN_MIDDLE_LEFT
|
||||
#undef CHOICE_TEXT_OFFSET_X
|
||||
#define CHOICE_TEXT_OFFSET_X -5010
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START ((-OPTIONS_GRAPHICS_WIDTH/2) - 125 + 5000)
|
||||
|
||||
#undef CHOICE_TEXTCOLOR
|
||||
#define CHOICE_TEXTCOLOR 0.2 0.2 0.2 1
|
||||
// darker disabled color in-game
|
||||
FRAME_CHOICE_DBUTTON_DARK_VIS_EX( 41, dvarString( ui_r_mode ), ;, ;, MP_ZOMBIE_INGAME, ; )
|
||||
FRAME_CHOICE_DBUTTON_DARK_LIST_VIS_EX( 42, ui_r_fullscreen, ITEM_TYPE_MULTI, dvarFloatList { "@MENU_NO_CAPS" 0 "@MENU_YES_CAPS" 1 }, ;, MP_ZOMBIE_INGAME, ; )
|
||||
FRAME_CHOICE_DBUTTON_DARK_LIST_VIS_EX( 43, ui_r_aasamples, ITEM_TYPE_MULTI, dvarFloatList { "@MENU_OFF_CAPS" 1 "@MENU_2X_CAPS" 2 "@MENU_4X_CAPS" 4 "@MENU_8X_CAPS" 8 "@MENU_16X_CAPS" 16 }, ;, MP_ZOMBIE_INGAME, ; )
|
||||
FRAME_CHOICE_DBUTTON_DARK_LIST_VIS_EX( 44, ui_r_aspectratio, ITEM_TYPE_MULTI, dvarStrList { "@MENU_AUTO_CAPS"; "auto"; "@MENU_STANDARD_4_3_CAPS"; "standard"; "@MENU_WIDE_16_10_CAPS"; "wide 16:10"; "@MENU_WIDE_16_9_CAPS"; "wide 16:9" }, ;, MP_ZOMBIE_INGAME, ; )
|
||||
FRAME_CHOICE_DBUTTON_DARK_VIS_EX( 45, dvarString( ui_r_displayRefresh ), ;, ;, MP_ZOMBIE_INGAME, ; )
|
||||
FRAME_CHOICE_DBUTTON_DARK_LIST_VIS_EX( 46, ui_r_vsync, ITEM_TYPE_MULTI, dvarFloatList { "@MENU_NO_CAPS" 0 "@MENU_YES_CAPS" 1 }, ;, MP_ZOMBIE_INGAME, ; )
|
||||
|
||||
#undef CHOICE_Y_OFFSET
|
||||
#define CHOICE_Y_OFFSET (CHOICE_SIZE_Y / 2)
|
||||
FRAME_CHOICE_DBUTTON_DARK_LIST_VIS_EX( 49, ui_r_picmip, ITEM_TYPE_MULTI, dvarFloatList { "@MENU_AUTOMATIC_CAPS" -1 "@PLATFORM_LOW_CAPS" 3 "@MENU_NORMAL_CAPS" 2 "@PLATFORM_HIGH_CAPS" 1 "@MENU_EXTRA_CAPS" 0 }, ;, MP_ZOMBIE_INGAME, ; )
|
||||
#undef CHOICE_Y_OFFSET
|
||||
#define CHOICE_Y_OFFSET 0
|
||||
|
||||
FRAME_CHOICE_DBUTTON_DARK_LIST_VIS_EX( 52, sm_enable, ITEM_TYPE_MULTI, dvarFloatList { "@MENU_NO_CAPS" 0 "@MENU_YES_CAPS" 1 }, ;, !dvarbool( ui_showShadowOptions ) && MP_ZOMBIE_INGAME, ; )
|
||||
|
||||
#undef CHOICE_TEXTCOLOR
|
||||
#define CHOICE_TEXTCOLOR 0.4 0.4 0.4 1
|
||||
// lighter disabled color in the shell
|
||||
FRAME_CHOICE_DBUTTON_DARK_LIST_VIS_EX( 52, sm_enable, ITEM_TYPE_MULTI, dvarFloatList { "@MENU_NO_CAPS" 0 "@MENU_YES_CAPS" 1 }, ;, !dvarbool( ui_showShadowOptions ), ; )
|
||||
|
||||
/*
|
||||
itemDef
|
||||
{
|
||||
name graphic_warning
|
||||
type ITEM_TYPE_BUTTON
|
||||
text "@MENU_GRAPHICS_WARNING"
|
||||
style WINDOW_STYLE_FILLED
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
rect 20 -116 240 240 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM
|
||||
textfont UI_FONT_NORMAL
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textscale TEXTSIZE_SMALL
|
||||
visible 1
|
||||
mouseEnter { play CHOICE_FOCUS_SOUND; }
|
||||
decoration
|
||||
autowrapped
|
||||
}
|
||||
*/
|
||||
//CHOICE_FOOTNOTE( "@MENU_GRAPHICS_WARNING", 340, 340 )
|
||||
}
|
||||
|
||||
// restoring button properties
|
||||
|
||||
// ---
|
||||
#undef TEXTSIZE_BUTTON_PC
|
||||
#define TEXTSIZE_BUTTON_PC 0.4
|
||||
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X 224
|
||||
|
||||
#undef SECTION_X_OFFSET
|
||||
#define SECTION_X_OFFSET 0
|
||||
// ---
|
||||
|
||||
#undef CHOICE_BUTTON_NAME
|
||||
#define CHOICE_BUTTON_NAME "options_graphics_texture_"
|
||||
#undef MENUDEF_NAME
|
||||
#define MENUDEF_NAME options_graphics_texture
|
||||
|
||||
menuDef
|
||||
{
|
||||
name options_graphics_texture
|
||||
fullScreen 0
|
||||
rect 0 0 640 480
|
||||
focusColor COLOR_FOCUSED
|
||||
soundloop ""
|
||||
|
||||
onOpen
|
||||
{
|
||||
LOCAL_CLOSE_ALL_BUT( options_graphics_texture )
|
||||
|
||||
setLocalVarBool ui_hideBack 1;
|
||||
setLocalVarBool ui_showApply 0;
|
||||
|
||||
exec "setfromdvar ui_r_picmip r_picmip";
|
||||
exec "setfromdvar ui_r_picmip_bump r_picmip_bump";
|
||||
exec "setfromdvar ui_r_picmip_spec r_picmip_spec";
|
||||
exec "setfromdvar ui_r_picmip_manual r_picmip_manual";
|
||||
|
||||
if (IsInGame())
|
||||
{
|
||||
showMenu "pausedbkgnd";
|
||||
}
|
||||
else
|
||||
{
|
||||
activateBlur;
|
||||
}
|
||||
}
|
||||
onClose
|
||||
{
|
||||
setLocalVarBool ui_hideBack 0;
|
||||
|
||||
if (IsInGame())
|
||||
{
|
||||
hideMenu "pausedbkgnd";
|
||||
}
|
||||
else
|
||||
{
|
||||
deactivateBlur;
|
||||
}
|
||||
}
|
||||
|
||||
onESC
|
||||
{
|
||||
close self;
|
||||
open options_new_pc;
|
||||
}
|
||||
PC_TAB_SWITCH_ACTIONS( options_new_pc, options_controls_new_pc, options_controls_new_pc )
|
||||
|
||||
#include "ui_mp/leftside_options.inc"
|
||||
|
||||
#undef CHOICE_X_START
|
||||
#undef CHOICE_Y_START
|
||||
#undef CHOICE_HORIZONTAL_ALIGN
|
||||
#undef CHOICE_VERTICAL_ALIGN
|
||||
#undef CHOICE_DVAR_EXTRA_WIDTH
|
||||
#undef CHOICE_TEXT_OFFSET_X
|
||||
|
||||
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
|
||||
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
|
||||
#define CHOICE_X_START ((-OPTIONS_GRAPHICS_WIDTH/2) - 75)
|
||||
#define CHOICE_Y_START ((-OPTIONS_GRAPHICS_HEIGHT/2) + 32)
|
||||
#define CHOICE_DVAR_EXTRA_WIDTH 120
|
||||
#define CHOICE_TEXT_OFFSET_X -10
|
||||
|
||||
#undef CHOICE_TEXTSTYLE
|
||||
#undef CHOICE_TEXTSIZE
|
||||
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
|
||||
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
|
||||
|
||||
#undef CHOICE_TEXT_COLOR_NO_HL
|
||||
#undef CHOICE_TEXT_COLOR_HL
|
||||
#undef CHOICE_CAPTION_TEXT_COLOR_NO_HL
|
||||
#undef CHOICE_CAPTION_TEXT_COLOR_HL
|
||||
|
||||
#define CHOICE_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
|
||||
#define CHOICE_TEXT_COLOR_HL 1 1 1 1
|
||||
#define CHOICE_CAPTION_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
|
||||
#define CHOICE_CAPTION_TEXT_COLOR_HL 0 0 0 1
|
||||
|
||||
FRAME_CHOICE_SECTION_TITLE( 21, "@MENU_TEXTURE_SETTINGS_CAPS" )
|
||||
|
||||
FRAME_CHOICE_DVARSTRINGLIST( 22, "@MENU_TEXTURE_MIPMAPS_CAPS", r_texFilterMipMode, { "@MENU_AUTOMATIC_CAPS"; "Unchanged"; "@MENU_BILINEAR_CAPS"; "Force Bilinear"; "@MENU_TRILINEAR_CAPS"; "Force Trilinear" }, setLocalVarBool ui_showApply 1 )
|
||||
FRAME_DVARSLIDER( 23, "@MENU_TEXTURE_ANISOTROPY_CAPS", r_texFilterAnisoMin, 1, 1, 16, setLocalVarBool ui_showApply 1 )
|
||||
FRAME_CHOICE_DVARFLOATLIST_VIS( 24, "@MENU_TEXTURE_QUALITY_CAPS", ui_r_picmip_manual, { "@MENU_AUTOMATIC_CAPS" 0 "@MENU_MANUAL_CAPS" 1 }, setLocalVarBool ui_showApply 1, 1 )
|
||||
FRAME_CHOICE_DVARFLOATLIST_VIS( 25, "@MENU_TEXTURE_RESOLUTION_CAPS", ui_r_picmip, { "@PLATFORM_LOW_CAPS" 3 "@MENU_NORMAL_CAPS" 2 "@PLATFORM_HIGH_CAPS" 1 "@MENU_EXTRA_CAPS" 0 }, setLocalVarBool ui_showApply 1, ( dvarint( ui_r_picmip_manual ) ) )
|
||||
FRAME_CHOICE_DVARFLOATLIST_VIS( 26, "@MENU_NORMAL_MAP_RESOLUTION_CAPS", ui_r_picmip_bump, { "@PLATFORM_LOW_CAPS" 3 "@MENU_NORMAL_CAPS" 2 "@PLATFORM_HIGH_CAPS" 1 "@MENU_EXTRA_CAPS" 0 }, setLocalVarBool ui_showApply 1, ( dvarint( ui_r_picmip_manual ) ) )
|
||||
FRAME_CHOICE_DVARFLOATLIST_VIS( 27, "@MENU_SPECULAR_MAP_RESOLUTION_CAPS", ui_r_picmip_spec, { "@PLATFORM_LOW_CAPS" 3 "@MENU_NORMAL_CAPS" 2 "@PLATFORM_HIGH_CAPS" 1 "@MENU_EXTRA_CAPS" 0 }, setLocalVarBool ui_showApply 1, ( dvarint( ui_r_picmip_manual ) ) )
|
||||
|
||||
FRAME_BUTTON_PC_RIGHT_OFFSET( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT, 0,
|
||||
"@MENU_APPLY",
|
||||
close self;
|
||||
open apply_picmip_popmenu;,
|
||||
when( localVarBool( ui_showApply ) ); )
|
||||
|
||||
//CHOICE_APPLY_VIS( "@MENU_APPLY", close self; open apply_picmip_popmenu, when( localVarBool( ui_showApply ) ) )
|
||||
|
||||
//CHOICE_BACK( "@MENU_BACK", close self; open options_graphics )
|
||||
|
||||
/*
|
||||
itemDef
|
||||
{
|
||||
name graphic_warning
|
||||
type ITEM_TYPE_BUTTON
|
||||
text "@MENU_GRAPHICS_WARNING"
|
||||
style WINDOW_STYLE_FILLED
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
rect 20 -116 240 240 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_BOTTOM
|
||||
textfont UI_FONT_NORMAL
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textscale TEXTSIZE_SMALL
|
||||
visible 1
|
||||
mouseEnter { play CHOICE_FOCUS_SOUND; }
|
||||
decoration
|
||||
autowrapped
|
||||
}
|
||||
*/
|
||||
//CHOICE_FOOTNOTE( "@MENU_GRAPHICS_WARNING", 340, 340 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
name apply_picmip_popmenu
|
||||
fullScreen 0
|
||||
rect 0 0 640 480
|
||||
focusColor COLOR_FOCUSED
|
||||
soundloop ""
|
||||
onOpen
|
||||
{
|
||||
setLocalVarBool ui_showApply 0;
|
||||
|
||||
execnow "setfromdvar r_picmip ui_r_picmip";
|
||||
execnow "setfromdvar r_picmip_bump ui_r_picmip_bump";
|
||||
execnow "setfromdvar r_picmip_spec ui_r_picmip_spec";
|
||||
execnow "setfromdvar r_picmip_manual ui_r_picmip_manual";
|
||||
exec "wait; wait; r_applyPicmip";
|
||||
close apply_picmip_popmenu;
|
||||
open options_graphics_texture;
|
||||
}
|
||||
|
||||
// background black frame
|
||||
PREPROC_SHADER_DRAW( 320 0 600 480, "white", 0.1 0.1 0.12 1 )
|
||||
|
||||
CHOICE_SECTION_TITLE( 1, "@MENU_APPLYING_CHANGES" )
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,32 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
|
||||
// ----------------- allocate stat for custom class settings -------------------
|
||||
|
||||
// custom class stats stat numbers
|
||||
#include "ui_mp/cac_stats.inc"
|
||||
|
||||
#define CAC_DEFAULT_PRIMARY_GRENADE GetDefaultClassSlot( dvarstring( ui_class ), "primarygrenade" )
|
||||
#define CAC_DEFAULT_PRIMARY GetDefaultClassSlot( dvarstring( ui_class ), "primary" )
|
||||
// no default primary attachments for now
|
||||
#define CAC_DEFAULT_PRIMARY_ATTACHMENT 0
|
||||
#define CAC_DEFAULT_SECONDARY GetDefaultClassSlot( dvarstring( ui_class ), "secondary" )
|
||||
// no default secondary attachments for now
|
||||
#define CAC_DEFAULT_SECONDARY_ATTACHMENT 0
|
||||
#define CAC_DEFAULT_SPECIALTY1 GetDefaultClassSlot( dvarstring( ui_class ), "specialty1" )
|
||||
#define CAC_DEFAULT_SPECIALTY2 GetDefaultClassSlot( dvarstring( ui_class ), "specialty2" )
|
||||
#define CAC_DEFAULT_SPECIAL_GRENADE GetDefaultClassSlot( dvarstring( ui_class ), "specialgrenade" )
|
||||
// no default camo for now
|
||||
#define CAC_DEFAULT_CAMO 0
|
||||
#define CAC_DEFAULT_DEATHSTREAK GetDefaultClassSlot( dvarstring( ui_class ), "deathstreak" )
|
||||
#define CAC_DEFAULT_KILLSTREAK_TIER1 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak1" )
|
||||
#define CAC_DEFAULT_KILLSTREAK_TIER2 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak2" )
|
||||
#define CAC_DEFAULT_KILLSTREAK_TIER3 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak3" )
|
||||
|
||||
// custom class name
|
||||
#define CAC_MENU_NAME "menu_cac_custom"
|
||||
|
||||
#include "ui_mp/common_macro.inc"
|
||||
|
||||
{
|
||||
#include "ui_mp/cac.inc"
|
||||
}
|
@ -1,813 +0,0 @@
|
||||
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
#include "ui_mp/popup_player_info.inc"
|
||||
|
||||
#include "ui/framestyle.inc"
|
||||
#include "ui_mp/menustyle.inc"
|
||||
#include "ui/choices_setup_common.menu"
|
||||
#include "ui_mp/popupstyle.inc"
|
||||
#include "ui_mp/cac_stats.inc"
|
||||
#include "ui/choices_setup_popmenu.menu"
|
||||
|
||||
#define IS_ONLINE_GAME ( dvarInt( splitscreen ) == 0 && dvarInt( systemlink ) == 0 )
|
||||
#define IS_BASICTRAINING_GAME ( dvarInt( xblive_basictraining ) > 0 )
|
||||
|
||||
// saving popup for CAC ONLY - for a lack of better place
|
||||
#define LOCAL_SAVING \
|
||||
"wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait; wait;"
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( saving_popup, exec LOCAL_SAVING" "LOCAL_SAVING" closemenu saving_popup";, ;, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_SAVING", 1 )
|
||||
SYSTEM_POPUP_SPINNER( 1 )
|
||||
}
|
||||
|
||||
|
||||
#define LOCAL_ACCEPT_ACTION( pclass, pclass_s ) \
|
||||
if ( IS_ONLINE_GAME && !IS_BASICTRAINING_GAME ) \
|
||||
{ \
|
||||
setDvarFromLocString( dvarString( ui_custom_name ), pclass ); \
|
||||
} \
|
||||
execNow "equipDefaultClass ( dvarString( ui_custom_name ) ) class_custom"pclass_s; \
|
||||
execNow "updategamerprofile"; \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
close "popup_cac_defaultclasswarning"pclass_s; \
|
||||
close "popup_cac_template";
|
||||
|
||||
#define LOCAL_CANCEL_ACTION( pclass_s ) \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
close "popup_cac_defaultclasswarning"pclass_s;
|
||||
|
||||
|
||||
// reset to default class confirmation popup menu
|
||||
#define RESET_WARNING_POPUP( pclass, pclass_s ) \
|
||||
menuDef \
|
||||
{ \
|
||||
SYSTEM_POPUP_SETUP_VIS( "popup_cac_defaultclasswarning"pclass_s, setfocus "popup_cac_defaultclasswarning"pclass_s"_2", ;, 1 ) \
|
||||
\
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_RESET_TO_DEFAULT", 1 ) \
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_CUSTOM_CLASS_RESET_WARNING", 1 ) \
|
||||
\
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_YES", LOCAL_ACCEPT_ACTION( pclass, pclass_s ), 1, ; ) \
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_NO", LOCAL_CANCEL_ACTION( pclass_s ), 1, name "popup_cac_defaultclasswarning"pclass_s"_2" ) \
|
||||
}
|
||||
|
||||
RESET_WARNING_POPUP( "@CLASS_CLASS1", "_smg" )
|
||||
RESET_WARNING_POPUP( "@CLASS_CLASS2", "_cqb" )
|
||||
RESET_WARNING_POPUP( "@CLASS_CLASS3", "_assault" )
|
||||
RESET_WARNING_POPUP( "@CLASS_CLASS4", "_lmg" )
|
||||
RESET_WARNING_POPUP( "@CLASS_CLASS5", "_sniper" )
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( copyClassConfirmation, setfocus copyClassConfirmation_2;, ;, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( getCopyClassConfirmationText( dvarInt("ui_custom_class_highlighted"), dvarInt("ui_classToReplace") ), 1 )
|
||||
|
||||
#define COPY_CLASS_ACTION \
|
||||
execNow copyClass (dvarInt("ui_custom_class_highlighted")) (dvarInt("ui_classToReplace")); \
|
||||
close self;
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_YES", COPY_CLASS_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL", close self;, 1, name copyClassConfirmation_2 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( copyCustomGametypeClassConfirmation, setfocus copyCustomGametypeClassConfirmation_2;, ;, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( getCopyCustomGametypeClassConfirmationText( dvarInt("ui_custom_gametype_class_highlighted"), dvarInt("ui_customGametypeClassToReplace") ), 1 )
|
||||
|
||||
#define COPY_CUSTOM_CLASS_ACTION \
|
||||
execNow copyCustomGametypeClass (dvarInt("ui_custom_gametype_class_highlighted")) (dvarInt("ui_customGametypeClassToReplace")); \
|
||||
close self;
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_YES", COPY_CUSTOM_CLASS_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL", close self;, 1, name copyCustomGametypeClassConfirmation_2 )
|
||||
}
|
||||
|
||||
#ifdef XENON
|
||||
#define SELECT_ICON "ui_button_xenon_3d_a_32x32"
|
||||
#endif
|
||||
#ifdef PS3
|
||||
#define SELECT_ICON "ui_button_ps3_x_32x32"
|
||||
#endif
|
||||
|
||||
#undef POPUP_BUTTON_COUNT
|
||||
#define POPUP_BUTTON_COUNT 5
|
||||
// Copy Class Popup
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( copyClassPopup, ;, ;, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( GetCopyClassDialogTitle( dvarInt("ui_custom_class_highlighted") ), 1 )
|
||||
|
||||
itemDef
|
||||
{
|
||||
name custom_class_list
|
||||
type ITEM_TYPE_LISTBOX
|
||||
feeder FEEDER_CUSTOM_CLASSES
|
||||
rect CHOICE_X_START CHOICE_Y_START CHOICE_SIZE_X (CHOICE_SIZE_Y*6) CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN
|
||||
elementwidth CHOICE_SIZE_X
|
||||
elementheight CHOICE_SIZE_Y
|
||||
elementtype LISTBOX_TEXT
|
||||
textstyle ITEM_TEXTSTYLE_NORMAL
|
||||
textfont UI_FONT_NORMAL
|
||||
textscale TEXTSIZE_DEFAULT
|
||||
textalignx CHOICE_SIZE_Y
|
||||
textaligny 0
|
||||
forecolor 1 1 1 1
|
||||
focusColor 1 1 1 1
|
||||
disableColor 1 1 1 1
|
||||
selectBorder 0.8 0.95 1 0
|
||||
outlinecolor 1 1 1 1
|
||||
elementBackgroundColor NEW_FRAME_BUTTON_BG_COLOR
|
||||
selectIcon SELECT_ICON
|
||||
elementHighlightColor NEW_FRAME_BUTTON_TEXT_HIGHLIGHT_COLOR
|
||||
#ifdef PC
|
||||
modal
|
||||
usepaging
|
||||
#else //#ifdef PC
|
||||
noscrollbars
|
||||
#endif //#ifdef PC
|
||||
noBlinkingHighlight
|
||||
visible 1
|
||||
onfocus
|
||||
{
|
||||
play CHOICE_FOCUS_SOUND;
|
||||
}
|
||||
onListboxSelectionChange
|
||||
{
|
||||
play CHOICE_FOCUS_SOUND;
|
||||
}
|
||||
doubleclick
|
||||
{
|
||||
execNow set ui_classToReplace (getFeederData("selection"));
|
||||
open copyClassConfirmation;
|
||||
close self;
|
||||
}
|
||||
}
|
||||
|
||||
SYSTEM_POPUP_BACK_BUTTON
|
||||
}
|
||||
|
||||
|
||||
#undef POPUP_BUTTON_COUNT
|
||||
#define POPUP_BUTTON_COUNT 5
|
||||
// Copy Custom Gametype Class Popup
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( copyCustomGametypeClassPopup, ;, ;, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( GetCopyCustomGametypeClassDialogTitle( dvarInt("ui_custom_gametype_class_highlighted") ), 1 )
|
||||
|
||||
itemDef
|
||||
{
|
||||
name custom_class_list
|
||||
type ITEM_TYPE_LISTBOX
|
||||
feeder FEEDER_CUSTOM_GAMETYPE_CLASSES
|
||||
rect CHOICE_X_START CHOICE_Y_START CHOICE_SIZE_X (CHOICE_SIZE_Y*6) CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN
|
||||
elementwidth CHOICE_SIZE_X
|
||||
elementheight CHOICE_SIZE_Y
|
||||
elementtype LISTBOX_TEXT
|
||||
textstyle ITEM_TEXTSTYLE_NORMAL
|
||||
textfont UI_FONT_NORMAL
|
||||
textscale TEXTSIZE_DEFAULT
|
||||
textalignx CHOICE_SIZE_Y
|
||||
textaligny 0
|
||||
forecolor 1 1 1 1
|
||||
focusColor 1 1 1 1
|
||||
disableColor 1 1 1 1
|
||||
selectBorder 0.8 0.95 1 0
|
||||
outlinecolor 1 1 1 1
|
||||
elementBackgroundColor NEW_FRAME_BUTTON_BG_COLOR
|
||||
selectIcon SELECT_ICON
|
||||
elementHighlightColor NEW_FRAME_BUTTON_TEXT_HIGHLIGHT_COLOR
|
||||
#ifdef PC
|
||||
modal
|
||||
usepaging
|
||||
#else //#ifdef PC
|
||||
noscrollbars
|
||||
#endif //#ifdef PC
|
||||
noBlinkingHighlight
|
||||
visible 1
|
||||
onfocus
|
||||
{
|
||||
play CHOICE_FOCUS_SOUND;
|
||||
}
|
||||
onListboxSelectionChange
|
||||
{
|
||||
play CHOICE_FOCUS_SOUND;
|
||||
}
|
||||
doubleclick
|
||||
{
|
||||
execNow set ui_customGametypeClassToReplace (getFeederData("selection"));
|
||||
open copyCustomGametypeClassConfirmation;
|
||||
close self;
|
||||
}
|
||||
}
|
||||
|
||||
SYSTEM_POPUP_BACK_BUTTON
|
||||
}
|
||||
|
||||
|
||||
#ifdef PC
|
||||
#undef CHOICE_FOCUS_SOUND
|
||||
#define CHOICE_FOCUS_SOUND "uin_navigation_over"
|
||||
|
||||
#undef POPUP_BUTTON_COUNT
|
||||
#define POPUP_BUTTON_COUNT 3
|
||||
|
||||
#define RENAME_ACTION \
|
||||
exec "setNewCustomName"; close self;
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( "pc_rename", exec "getOldCustomName"; setFocus nameEntry;, ;, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MPUI_RENAME_CLASS", 1 )
|
||||
|
||||
itemDef
|
||||
{
|
||||
name nameEntry
|
||||
TYPE ITEM_TYPE_UPREDITFIELD
|
||||
text "@MENU_NAME1"
|
||||
dvar "ui_custom_newname"
|
||||
rect CHOICE_RECT( 1 )
|
||||
textaligny 2
|
||||
maxchars 15
|
||||
maxpaintchars 15
|
||||
textalign ITEM_ALIGN_MIDDLE_LEFT
|
||||
textfont UI_FONT_NORMAL
|
||||
textscale TEXTSIZE_DEFAULT
|
||||
forecolor .9 .9 .9 1
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 .3
|
||||
visible 1
|
||||
mouseenter { show keyBindStatus; play CHOICE_FOCUS_SOUND; }
|
||||
mouseexit { hide keyBindStatus; setfocus ok_button; }
|
||||
accept { if ( dvarString( ui_custom_newname ) != "" ) { RENAME_ACTION } }
|
||||
}
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_OK", RENAME_ACTION, ( dvarString( ui_custom_newname ) != "" ), ; )
|
||||
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 2, "@MENU_OK", ;, ;, ( dvarString( ui_custom_newname ) == "" ), ; )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MENU_CANCEL", close self; setDvar ui_custom_newname "";, 1, ; )
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#undef POPUP_BUTTON_COUNT
|
||||
#define POPUP_BUTTON_COUNT 2
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( clearAttachmentNotification, focusFirst;, ;, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MPUI_CAC_ATTACHMENTS_CLEARED", 1 )
|
||||
|
||||
#define CLEAR_ATTACHMENTS_ACTION \
|
||||
execNow clearAllAttachmentsForItem (dvarString( ui_custom_name )) (STAT_CAC_PRIMARY); \
|
||||
if ( !dvarBool("buyingAndEquippingProItem") ) \
|
||||
{ \
|
||||
execnow equipclasscurrentitem (dvarString( ui_custom_name )); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
execnow equipclassitem (dvarString( ui_custom_name )) (GetCurrentItemIndex() + 1); \
|
||||
execnow buildItemListForSlotName (dvarString( selected_loadout_slot )); \
|
||||
} \
|
||||
setDvar buyingAndEquippingProItem "0";
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", CLEAR_ATTACHMENTS_ACTION; close self; execnow ui_animate menu_cac_custom * CloseDropDownList 0;, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_CANCEL", close self;, 1, ; )
|
||||
}
|
||||
|
||||
// Redefinitions for MEDIUM_POPUP_SETUP popups
|
||||
#undef POPUP_WIDTH
|
||||
#define POPUP_WIDTH MEDIUM_POPUP_WIDTH
|
||||
#undef POPUP_HEIGHT
|
||||
#define POPUP_HEIGHT MEDIUM_POPUP_HEIGHT
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X CONFIRM_PURCHASE_SIZE_X
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START POPUP_Y_START_TOP
|
||||
#undef PLAYER_INFO_ALIGN
|
||||
#define PLAYER_INFO_ALIGN // Purposely set to nothing. The popup setup macro sets the alignment. If items within it set their own aligment, they end up offset incorrectly.
|
||||
#undef PLAYER_INFO_X_START
|
||||
#define PLAYER_INFO_X_START( frameWidth ) ( frameWidth - PLAYER_INFO_WIDTH - PLAYER_INFO_PAD )
|
||||
#undef PLAYER_INFO_Y_START
|
||||
#define PLAYER_INFO_Y_START( frameHeight ) ( PLAYER_INFO_PAD * 2 )
|
||||
#undef BG_BACKCOLOR
|
||||
#define BG_BACKCOLOR POPUP_BACKCOLOR
|
||||
// Redefinitions for MEDIUM_POPUP_SETUP popups
|
||||
|
||||
|
||||
#define PURCHASE_CONFIRMATION_RIGHT_X ( MEDIUM_POPUP_WIDTH / 2 )
|
||||
#define PURCHASE_INFO_WIDTH ( ( MEDIUM_POPUP_WIDTH / 2 ) - POPUP_SIDE_PAD )
|
||||
|
||||
#define CONFIRMATION_ITEM_INFO_VIS( itemName, itemCost, itemDesc, balanceHeader, balanceAfter, visArg ) \
|
||||
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 1 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, locString( "@MENU_POINTS", itemCost ), TEXTSIZE_LARGE, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, NEW_FRAME_GREEN_RGB 1, visArg, ; ) \ /* Cost */
|
||||
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 2 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, "@" + itemName, TEXTSIZE_LARGE, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, NEW_FRAME_GREEN_RGB 1, visArg, ; ) \ /* Name */
|
||||
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 4 ) PURCHASE_INFO_WIDTH 200, 0 0, "@" + itemDesc, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, MEDIUM_POPUP_GRAY, visArg, autowrapped; ) \ /* Description */
|
||||
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 7 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, "@MPUI_YOUR_BANK", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, MEDIUM_POPUP_GRAY, visArg, ; ) \ /* Currency Available Header */
|
||||
PREPROC_TEXT_DRAW_VIS_EX( (MEDIUM_POPUP_WIDTH-75) CHOICE_Y( 7 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, locString( "@MENU_POINTS", GetStatByName( "CODPOINTS" ) ), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, visArg, ; ) \ /* Currency Available */
|
||||
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 8 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, balanceHeader, TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, MEDIUM_POPUP_GRAY, visArg, ; ) \ /* Balance After Purchase Header */
|
||||
PREPROC_TEXT_DRAW_VIS_EX( (MEDIUM_POPUP_WIDTH-75) CHOICE_Y( 8 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, balanceAfter, TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, visArg, ; ) /* Balance After Purchase */
|
||||
|
||||
#define PURCHASE_CONFIRMATION_ITEM_INFO( itemName, itemCost, itemDesc ) \
|
||||
CONFIRMATION_ITEM_INFO_VIS( itemName, itemCost, itemDesc, "@MPUI_BALANCE_AFTER_PURCHASE", locString( "@MENU_POINTS", GetStatByName( "CODPOINTS" ) - itemCost ), 1 )
|
||||
|
||||
#define PURCHASE_CONFIRMATION_ITEM_INFO_VIS( itemName, itemCost, itemDesc, visArg ) \
|
||||
CONFIRMATION_ITEM_INFO_VIS( itemName, itemCost, itemDesc, "@MPUI_BALANCE_AFTER_PURCHASE", locString( "@MENU_POINTS", GetStatByName( "CODPOINTS" ) - itemCost ), visArg )
|
||||
|
||||
#define IS_TWO_ATTACHMENT_PERK_EQUIPPED \
|
||||
( ( STAT_CAC_SPECIALTY2 == getItemIndex( "PERKS_PROFESSIONAL" ) ) || ( STAT_CAC_SPECIALTY2 == getItemIndex( "PERKS_PROFESSIONAL_PRO" ) ) )
|
||||
|
||||
#define TWO_ATTACHMENTS_EQUIPPED \
|
||||
( GetItemNumAttachmentsEquipped( dvarString( ui_custom_name ), STAT_CAC_PRIMARY ) > 1 || GetItemNumAttachmentsEquipped( dvarString( ui_custom_name ), STAT_CAC_SECONDARY ) > 1 )
|
||||
|
||||
#define TWO_ATTACHMENT_PERK_NOT_HIGHLIGHTED \
|
||||
( GetCurrentItemIndex() != getItemIndex( "PERKS_PROFESSIONAL" ) && GetCurrentItemIndex() != getItemIndex( "PERKS_PROFESSIONAL_PRO" ) )
|
||||
|
||||
#define PERK_2_EQUIP_ACTION \
|
||||
if( TWO_ATTACHMENTS_EQUIPPED && IS_TWO_ATTACHMENT_PERK_EQUIPPED && TWO_ATTACHMENT_PERK_NOT_HIGHLIGHTED ) \
|
||||
{ \
|
||||
setDvar buyingAndEquippingProItem "0"; \
|
||||
execNow openMenu clearAttachmentNotification; \
|
||||
execnow set ui_closeAfterPurchase 0; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
execnow equipclasscurrentitem (dvarString( ui_custom_name )); \
|
||||
execnow set ui_closeAfterPurchase 1; \
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "PurchaseConfirmation", setfocus "PurchaseConfirmation_3";, ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO( GetCurrentItemName(), GetCurrentItemCost(), GetItemDesc( GetCurrentItemIndex() ) )
|
||||
|
||||
#define BUY_ACTION \
|
||||
execnow purchasecurrentitem; \
|
||||
if ( dvarString( ui_inside_popup ) == "select_weapon" ) \
|
||||
{ \
|
||||
execnow buildItemListForSlotNameAndGroup (dvarString(selected_loadout_slot)) (dvarString(selected_group)); \
|
||||
} \
|
||||
elseif ( dvarString( ui_inside_popup ) == "equipment_head" ) \
|
||||
{ \
|
||||
execnow buildItemListForSlotName (dvarString( selected_loadout_slot )); \
|
||||
} \
|
||||
close self;
|
||||
|
||||
#define BUY_AND_EQUIP_ACTION \
|
||||
execnow purchasecurrentitem; \
|
||||
if ( dvarString( ui_inside_popup ) == "specialties_2" ) \
|
||||
{ \
|
||||
PERK_2_EQUIP_ACTION \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
execnow equipclasscurrentitem (dvarString( ui_custom_name )); \
|
||||
execnow set ui_closeAfterPurchase 1; \
|
||||
} \
|
||||
if ( dvarString( ui_inside_popup ) == "select_weapon" ) \
|
||||
{ \
|
||||
execnow buildItemListForSlotNameAndGroup (dvarString(selected_loadout_slot)) (dvarString(selected_group)); \
|
||||
execnow set ui_closeAfterPurchase 1; \
|
||||
} \
|
||||
elseif ( dvarString( ui_inside_popup ) == "equipment_head" ) \
|
||||
{ \
|
||||
execnow buildItemListForSlotName (dvarString( selected_loadout_slot )); \
|
||||
} \
|
||||
close self;
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_AND_EQUIP_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self, 1, name PurchaseConfirmation_3 )
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "PurchaseKillstreakConfirmation", setfocus "PurchaseKillstreakConfirmation_3";, ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO( GetCurrentItemName(), GetCurrentItemCost(), GetItemDesc( GetCurrentItemIndex() ) )
|
||||
|
||||
#define BUY_KILLSTREAK_ACTION \
|
||||
execnow purchasecurrentitem; \
|
||||
close self;
|
||||
|
||||
#define BUY_AND_EQUIP_KILLSTREAK_ACTION \
|
||||
execnow purchasecurrentitem; \
|
||||
execnow equipGlobalItemInSlotSorted 3 killstreak 1; \
|
||||
execnow set ui_closeAfterPurchase 1; \
|
||||
close self;
|
||||
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_KILLSTREAK_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_AND_EQUIP_KILLSTREAK_ACTION, ( GetNumSortedItemsEquipped() < 3 ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL_PURCHASE_CAPS", close self, ( GetNumSortedItemsEquipped() == 3 ), name PurchaseKillstreakConfirmation_3 )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self, ( GetNumSortedItemsEquipped() < 3 ), name PurchaseKillstreakConfirmation_3 )
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "PurchaseProConfirmation", setfocus "PurchaseProConfirmation_3", ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO( GetItemName( GetCurrentItemIndex() + 1 ), GetItemCost( GetCurrentItemIndex() + 1 ), GetItemDesc( GetCurrentItemIndex() + 1 ) )
|
||||
|
||||
#define BUY_PRO_ACTION \
|
||||
execnow purchasecurrentproitem; \
|
||||
execnow buildItemListForSlotName (dvarString( selected_loadout_slot )); \
|
||||
close self;
|
||||
|
||||
#define BUY_AND_EQUIP_PRO_ACTION \
|
||||
execnow purchasecurrentproitem; \
|
||||
if ( dvarString( ui_inside_popup ) == "specialties_2" && TWO_ATTACHMENTS_EQUIPPED && IS_TWO_ATTACHMENT_PERK_EQUIPPED && TWO_ATTACHMENT_PERK_NOT_HIGHLIGHTED ) \
|
||||
{ \
|
||||
setDvar buyingAndEquippingProItem "1"; \
|
||||
execNow openMenu clearAttachmentNotification; \
|
||||
execnow set ui_closeAfterPurchase 0; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
execnow equipclassitem (dvarString( ui_custom_name )) (GetCurrentItemIndex() + 1); \
|
||||
execnow set ui_closeAfterPurchase 1; \
|
||||
execnow buildItemListForSlotName (dvarString( selected_loadout_slot )); \
|
||||
} \
|
||||
close self;
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_PRO_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_AND_EQUIP_PRO_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self, 1, name PurchaseProConfirmation_3 )
|
||||
}
|
||||
|
||||
|
||||
#define GET_SLOT_STAT \
|
||||
( Select( dvarString( selected_loadout_slot ) == "primary", STAT_CAC_PRIMARY, STAT_CAC_SECONDARY ) )
|
||||
|
||||
#define SELECTING_PRIMARY \
|
||||
( dvarString( selected_loadout_slot ) == "primary" )
|
||||
|
||||
#define CAN_EQUIP_TWO_ATTACHMENTS \
|
||||
( ( SELECTING_PRIMARY ) && ( isItemEquipped( getitemindex("PERKS_PROFESSIONAL"), dvarString( ui_custom_name ) ) || isItemEquipped( getitemindex("PERKS_PROFESSIONAL_PRO"), dvarString( ui_custom_name ) ) ) )
|
||||
|
||||
#define NUM_EQUIPPED_ATTACHMENTS \
|
||||
GetItemNumAttachmentsEquipped( dvarString( ui_custom_name ), GET_SLOT_STAT )
|
||||
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "PurchaseAttachmentConfirmation", setfocus "PurchaseAttachmentConfirmation_3", ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO( GetCurrentItemAttachmentName(), GetCurrentItemAttachmentCost(), GetAttachmentDesc( GetItemAttachment( GetCurrentItemIndex(), GetCurrentItemAttachmentNum() ) ) )
|
||||
|
||||
#define BUY_ATTACHMENT_ACTION \
|
||||
execnow purchasecurrentitemattachment; \
|
||||
close self;
|
||||
|
||||
#define BUY_ATTACHMENT_AND_EQUIP_ACTION \
|
||||
execnow purchasecurrentitemattachment; \
|
||||
if( ( NUM_EQUIPPED_ATTACHMENTS < 1 ) || ( NUM_EQUIPPED_ATTACHMENTS == 1 && CAN_EQUIP_TWO_ATTACHMENTS ) ) \
|
||||
{ \
|
||||
execnow equipclasscurrentattachment ( dvarString( ui_custom_name ) ); \
|
||||
} \
|
||||
close self;
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_ATTACHMENT_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_ATTACHMENT_AND_EQUIP_ACTION, ( ( NUM_EQUIPPED_ATTACHMENTS == 0 ) || ( NUM_EQUIPPED_ATTACHMENTS == 1 && CAN_EQUIP_TWO_ATTACHMENTS ) ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL_PURCHASE_CAPS", close self, ( NUM_EQUIPPED_ATTACHMENTS == 2 || ( ( NUM_EQUIPPED_ATTACHMENTS == 1 ) && !CAN_EQUIP_TWO_ATTACHMENTS ) ), name PurchaseAttachmentConfirmation_3 )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self, ( ( NUM_EQUIPPED_ATTACHMENTS == 0 ) || ( NUM_EQUIPPED_ATTACHMENTS == 1 && CAN_EQUIP_TWO_ATTACHMENTS ) ), name PurchaseAttachmentConfirmation_3 )
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "PurchaseOptionConfirmation", setfocus "PurchaseOptionConfirmation_3", ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO( GetWeaponOptionName( GetCurrentItemOption() ), GetWeaponOptionCost( GetCurrentItemOption() ), GetWeaponOptionName( GetCurrentItemOption() ) )
|
||||
|
||||
#define BUY_OPTION_ACTION \
|
||||
execnow purchasecurrentitemoption; \
|
||||
close self;
|
||||
|
||||
#define BUY_OPTION_AND_EQUIP_ACTION \
|
||||
execnow purchasecurrentitemoption; \
|
||||
execnow equipclasscurrentoption ( dvarString( ui_custom_name ) ) ( dvarString( ui_option_name ) ); \
|
||||
execnow set ui_closeAfterPurchase 1; \
|
||||
close self;
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_OPTION_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_OPTION_AND_EQUIP_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseOptionConfirmation_3 )
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "PurchaseContractConfirmation", setfocus "PurchaseContractConfirmation_2", ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO( GetContractName( GetCurrentContractIndex() ), GetContractCost( GetCurrentContractIndex() ), GetContractDesc( GetCurrentContractIndex() ) )
|
||||
|
||||
#define BUY_CONTRACT_ACTION \
|
||||
execnow activatecontract ( GetCurrentContractIndex() ) ( dvarint( ui_activeContract ) ); \
|
||||
close self; \
|
||||
execnow ui_animate menu_xboxlive_contracts anim_controller CloseDropDownList 0;
|
||||
|
||||
#define DEACTIVATE_AND_BUY_CONTRACT_ACTION \
|
||||
execnow activatecontract ( GetCurrentContractIndex() ) ( dvarint( ui_activeContract ) ); \
|
||||
close self; \
|
||||
execnow ui_animate menu_xboxlive_contracts anim_controller CloseDropDownList 0;
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_CONTRACT_ACTION, ( !IsContractInProgress( GetIndexForActiveContract( dvarInt( ui_activeContract ) ) ) ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_DEACTIVATE_AND_BUY_CAPS", DEACTIVATE_AND_BUY_CONTRACT_ACTION, ( IsContractInProgress( GetIndexForActiveContract( dvarInt( ui_activeContract ) ) ) ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseContractConfirmation_2 )
|
||||
PREPROC_TEXT_DRAW_VIS_EX( CHOICE_X( 3 ) CHOICE_Y( 3 ) CHOICE_SIZE_X CHOICE_SIZE_Y, 0 0, "@MPUI_REPLACE_CONTRACT_WARNING", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, NEW_FRAME_ORANGE_RGB 1, when( IsContractInProgress( GetIndexForActiveContract( dvarInt( ui_activeContract ) ) ) );, autowrapped )
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "PurchaseWeaponOptionConfirmation", setfocus "PurchaseWeaponOptionConfirmation_2", ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO_VIS( GetItemName( dvarInt( weaponOptionIndex ) ), GetWeaponOptionCost( GetItemOptionByName( dvarString( weaponOptionRef ) ) ), GetItemDesc( dvarInt( weaponOptionIndex ) ), 1 )
|
||||
|
||||
#define BUY_WEAPON_OPTION_ACTION( optionRef ) \
|
||||
execnow PurchaseWeaponOption optionRef; \
|
||||
close self;
|
||||
|
||||
#define BUY_AND_EQUIP_WEAPON_OPTION_ACTION( optionRef ) \
|
||||
execnow PurchaseWeaponOption optionRef; \
|
||||
close self; \
|
||||
execnow toggleWeaponOption (dvarString( ui_custom_name )) optionRef;
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_WEAPON_OPTION_ACTION( ( dvarString( weaponOptionRef ) ) ), 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_AND_EQUIP_WEAPON_OPTION_ACTION( ( dvarString( weaponOptionRef ) ) ), 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self, 1, name PurchaseWeaponOptionConfirmation_2 )
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "PurchaseEmblemLayerConfirmation", setfocus "PurchaseEmblemLayerConfirmation_2", ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO( ( locString( "MENU_EMBLEM_LAYER_CAPS", emblemSelectedLayer() + 1 ) ) , emblemLayerCost( emblemSelectedLayer() ), "" )
|
||||
|
||||
#define BUY_EMBLEM_LAYER_ACTION \
|
||||
execnow emblempurchaselayer; \
|
||||
close self;
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_EMBLEM_LAYER_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseEmblemLayerConfirmation_2 )
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "PurchaseClanTagFeatureConfirmation", setfocus "PurchaseClanTagFeatureConfirmation_2", ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO( "MPUI_CLANTAG_" + GetClanTagFeatureName( GetCurrentClanTagFeature() ), GetClanTagFeatureCost( GetCurrentClanTagFeature() ), "MPUI_CLANTAG_" + GetClanTagFeatureName( GetCurrentClanTagFeature() ) + "_DESC" )
|
||||
|
||||
#define BUY_CLAN_TAG_FEATURE_ACTION \
|
||||
execnow PurchaseClanTagFeature ( GetCurrentClanTagFeature() ); \
|
||||
close self;
|
||||
|
||||
#define BUY_AND_EQUIP_CLAN_TAG_FEATURE_ACTION \
|
||||
execnow PurchaseClanTagFeature ( GetCurrentClanTagFeature() ); \
|
||||
execNow statwriteddl clanTagStats selectedFeature ( GetCurrentClanTagFeature() ); \
|
||||
close self;
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_CLAN_TAG_FEATURE_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_AND_EQUIP_CLAN_TAG_FEATURE_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseClanTagFeatureConfirmation_2 )
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "PurchaseCurrentWeaponOptionConfirmation", setfocus "PurchaseCurrentWeaponOptionConfirmation_2", ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO( GetWeaponOptionName( GetCurrentItemOption() ), GetWeaponOptionCost( GetCurrentItemOption() ), GetWeaponOptionName( GetCurrentItemOption() ) )
|
||||
|
||||
#define BUY_CURRENT_WEAPON_OPTION_ACTION \
|
||||
execnow purchasecurrentitemoption; \
|
||||
close self;
|
||||
|
||||
#define BUY_AND_EQUIP_CURRENT_WEAPON_OPTION_ACTION \
|
||||
execnow purchasecurrentitemoption; \
|
||||
execnow "equipclasscurrentoption ( dvarString( ui_custom_name ) ) ( dvarString( ui_optiongroup_name ) )"; \
|
||||
execnow set ui_closeAfterPurchase 1; \
|
||||
close self;
|
||||
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_CURRENT_WEAPON_OPTION_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_EQUIP_CAPS", BUY_AND_EQUIP_CURRENT_WEAPON_OPTION_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseCurrentWeaponOptionConfirmation_2 )
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "PurchaseEmblemIconConfirmation", setfocus "PurchaseEmblemIconConfirmation_3", ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO( emblemIconName( localvarint( emblem_selected_icon_id ) ), emblemIconCost( localvarint( emblem_selected_icon_id ) ), "" )
|
||||
|
||||
#define BUY_EMBLEM_ICON_ACTION \
|
||||
execnow emblempurchaseicon ( localvarint( emblem_selected_icon_id ) ); \
|
||||
close self;
|
||||
|
||||
#define BUY_SELECT_EMBLEM_ICON_ACTION \
|
||||
execnow emblempurchaseicon ( localvarint( emblem_selected_icon_id ) ); \
|
||||
close self; \
|
||||
execNow emblemClear; \
|
||||
execNow emblemIcon ( localvarint( emblem_selected_icon_id ) ); \
|
||||
close emblem_icon_select; \
|
||||
openimmediate emblem_edit;
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_EMBLEM_ICON_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_SELECT_CAPS", BUY_SELECT_EMBLEM_ICON_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseEmblemIconConfirmation_3 )
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "PurchaseEmblemBackgroundConfirmation", setfocus "PurchaseEmblemBackgroundConfirmation_3", ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO( emblemBackgroundName( localvarint( bg_hi_index ) ), emblemBackgroundCost( localvarint( bg_hi_index ) ), "" )
|
||||
PREPROC_SHADER_DRAW( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 4 ) 185 40, emblemBackgroundMaterial( localvarint( bg_hi_index ) ), 1 1 1 1 )
|
||||
|
||||
#define BUY_EMBLEM_BACKGROUND_ACTION \
|
||||
execnow emblempurchasebackgroundbyindex ( localvarint( bg_hi_index ) ); \
|
||||
close self;
|
||||
|
||||
#define BUY_SELECT_EMBLEM_BACKGROUND_ACTION \
|
||||
execnow emblempurchasebackgroundbyindex ( localvarint( bg_hi_index ) ); \
|
||||
execnow emblemselectbackground ( localvarint( bg_hi_index ) ); \
|
||||
close self; \
|
||||
close emblem_bg_select; \
|
||||
openimmediate emblem_edit;
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_EMBLEM_BACKGROUND_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_BUY_AND_SELECT_CAPS", BUY_SELECT_EMBLEM_BACKGROUND_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseEmblemBackgroundConfirmation_3 )
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "PurchaseAttachmentPointConfirmation", setfocus "PurchaseAttachmentPointConfirmation_2", ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
|
||||
#define SELECTED_ATTACHMENT_POINT_NAME \
|
||||
tablelookup( "mp/attachmentTable.csv", 4, dvarString( "selected_attachment_point" ), 3 )
|
||||
|
||||
#define SELECTED_ATTACHMENT_POINT_COST \
|
||||
tablelookup( "mp/attachmentTable.csv", 4, dvarString( "selected_attachment_point" ), 12 )
|
||||
|
||||
#define SELECTED_ATTACHMENT_POINT_DESC \
|
||||
tablelookup( "mp/attachmentTable.csv", 4, dvarString( "selected_attachment_point" ), 7 )
|
||||
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO( SELECTED_ATTACHMENT_POINT_NAME, SELECTED_ATTACHMENT_POINT_COST, SELECTED_ATTACHMENT_POINT_DESC )
|
||||
|
||||
#define IS_PRIMARY ( dvarString( "selected_loadout_slot" ) == "primary" )
|
||||
|
||||
#define PURCHASE_ATTACH_POINT_ACTION \
|
||||
execnow "purchaseitemattachmentpoint" (Select( IS_PRIMARY, STAT_CAC_PRIMARY, STAT_CAC_SECONDARY )) (dvarString( "selected_attachment_point" )); \
|
||||
close self;
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", PURCHASE_ATTACH_POINT_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL_PURCHASE_CAPS", close self;, 1, name PurchaseAttachmentPointConfirmation_2 )
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "PrestigeLBPurchaseConfirmation", setfocus "PrestigeLBPurchaseConfirmation_2", ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@MENU_CONFIRM_PURCHASE_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO( "MPUI_PRESTIGE_LEADERBOARDS_CAPS", GetItemCost(GetItemIndex("FEATURE_PRESTIGE_LB")), "" )
|
||||
|
||||
#define BUY_PRESTIGE_LB_ACTION \
|
||||
execNow purchaseItem (getItemIndex("FEATURE_PRESTIGE_LB")); \
|
||||
execnow "uploadstats"; \
|
||||
close self; \
|
||||
openImmediate menu_playercards_lb_prestige
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_BUY_CAPS", BUY_PRESTIGE_LB_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CANCEL_PURCHASE_CAPS", close self, 1, name PrestigeLBPurchaseConfirmation_2 )
|
||||
}
|
||||
|
||||
|
||||
// Redefinitions for LARGE_POPUP_SETUP popups
|
||||
#undef POPUP_WIDTH
|
||||
#define POPUP_WIDTH LARGE_POPUP_WIDTH
|
||||
#undef POPUP_HEIGHT
|
||||
#define POPUP_HEIGHT LARGE_POPUP_HEIGHT
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X (LARGE_POPUP_WIDTH / 3)
|
||||
// Redefinitions for LARGE_POPUP_SETUP popups
|
||||
|
||||
|
||||
// ====================================================================================================
|
||||
// reset to default class selection ===================================================================
|
||||
// ====================================================================================================
|
||||
#define RESET_DEFAULT_ACTION( ptype ) \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
open "popup_cac_defaultclasswarning"ptype;
|
||||
|
||||
#undef CHOICE_GROUP
|
||||
#define CHOICE_GROUP "reset_class"
|
||||
|
||||
// hackaround to work for PC's floating mouse unfocusing
|
||||
#undef UI_FOCUSFIRST
|
||||
#ifdef PC
|
||||
#define UI_FOCUSFIRST "ui_class"
|
||||
#else
|
||||
#define UI_FOCUSFIRST "ui_fake_focus"
|
||||
#endif
|
||||
menuDef
|
||||
{
|
||||
#define IS_CUSTOM_CLASS_MODE dvarInt( ui_useCustomClassInfo ) == 1
|
||||
|
||||
LARGE_POPUP_SETUP_VIS( "popup_cac_template", execnow "set "UI_FOCUSFIRST" class_smg";, ;, POPUP_GLOW_WHITE, 0, 1 )
|
||||
|
||||
LARGE_POPUP_TITLE_VIS( dvarString( dvarString( ui_custom_name ) ), when( !IS_CUSTOM_CLASS_MODE && IS_ONLINE_GAME && !IS_BASICTRAINING_GAME ) )
|
||||
LARGE_POPUP_TITLE_VIS( dvarString( dvarString( offline_custom_name ) ), when( !IS_CUSTOM_CLASS_MODE && ( !IS_ONLINE_GAME || IS_BASICTRAINING_GAME ) ) )
|
||||
LARGE_POPUP_TITLE_VIS( dvarString( custom_class_name ), when( IS_CUSTOM_CLASS_MODE ) )
|
||||
|
||||
LARGE_POPUP_SUBTITLE_VIS( toUpper( dvarstring(ui_menu_selection_title) ), 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 1, "@CLASS_CLASS1", RESET_DEFAULT_ACTION( "_smg" ), setdvar ui_class class_custom_smg; setDvarFromLocString( ui_default_name, "@CLASS_CLASS1" );, ;, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 2, "@CLASS_CLASS2", RESET_DEFAULT_ACTION( "_cqb" ), setdvar ui_class class_custom_cqb; setDvarFromLocString( ui_default_name, "@CLASS_CLASS2" );, ;, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 3, "@CLASS_CLASS3", RESET_DEFAULT_ACTION( "_assault" ), setdvar ui_class class_custom_assault; setDvarFromLocString( ui_default_name, "@CLASS_CLASS3" );, ;, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 4, "@CLASS_CLASS4", RESET_DEFAULT_ACTION( "_lmg" ), setdvar ui_class class_custom_lmg; setDvarFromLocString( ui_default_name, "@CLASS_CLASS4" );, ;, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 5, "@CLASS_CLASS5", RESET_DEFAULT_ACTION( "_sniper" ), setdvar ui_class class_custom_sniper; setDvarFromLocString( ui_default_name, "@CLASS_CLASS5" );, ;, 1, ; )
|
||||
|
||||
#undef CAC_WIDTH
|
||||
#define CAC_WIDTH LARGE_POPUP_WIDTH
|
||||
#undef CAC_HEIGHT
|
||||
#define CAC_HEIGHT LARGE_POPUP_HEIGHT
|
||||
|
||||
#define COMMON_ITEM_INFO_WIDTH 200
|
||||
#define COMMON_ITEM_INFO_X (CAC_WIDTH - COMMON_ITEM_INFO_WIDTH - POPUP_SIDE_PAD )
|
||||
#define COMMON_ITEM_INFO_Y (POPUP_SIDE_PAD*1.5)
|
||||
|
||||
// Default class stats
|
||||
#undef STAT_CAC_PRIMARY_GRENADE
|
||||
#define STAT_CAC_PRIMARY_GRENADE GetDefaultClassSlot( dvarstring( ui_class ), "primarygrenade" )
|
||||
#undef STAT_CAC_PRIMARY
|
||||
#define STAT_CAC_PRIMARY GetDefaultClassSlot( dvarstring( ui_class ), "primary" )
|
||||
// no default attachments or camo for now
|
||||
#undef STAT_CAC_PRIMARY_ATTACHMENT
|
||||
#define STAT_CAC_PRIMARY_ATTACHMENT 0
|
||||
#undef STAT_CAC_PRIMARY_CAMO
|
||||
#define STAT_CAC_PRIMARY_CAMO 0
|
||||
#undef STAT_CAC_SECONDARY
|
||||
#define STAT_CAC_SECONDARY GetDefaultClassSlot( dvarstring( ui_class ), "secondary" )
|
||||
// no default attachments or camo for now
|
||||
#undef STAT_CAC_SECONDARY_ATTACHMENT
|
||||
#define STAT_CAC_SECONDARY_ATTACHMENT 0
|
||||
#undef STAT_CAC_SECONDARY_CAMO
|
||||
#define STAT_CAC_SECONDARY_CAMO 0
|
||||
#undef STAT_CAC_SPECIALTY1
|
||||
#define STAT_CAC_SPECIALTY1 GetDefaultClassSlot( dvarstring( ui_class ), "specialty1" )
|
||||
#undef STAT_CAC_SPECIALTY2
|
||||
#define STAT_CAC_SPECIALTY2 GetDefaultClassSlot( dvarstring( ui_class ), "specialty2" )
|
||||
#undef STAT_CAC_SPECIALTY3
|
||||
#define STAT_CAC_SPECIALTY3 GetDefaultClassSlot( dvarstring( ui_class ), "specialty3" )
|
||||
#undef STAT_CAC_EQUIPMENT
|
||||
#define STAT_CAC_EQUIPMENT GetDefaultClassSlot( dvarstring( ui_class ), "equipment" )
|
||||
#undef STAT_CAC_SPECIAL_GRENADE
|
||||
#define STAT_CAC_SPECIAL_GRENADE GetDefaultClassSlot( dvarstring( ui_class ), "specialgrenade" )
|
||||
#undef STAT_CAC_BODY
|
||||
#define STAT_CAC_BODY GetDefaultClassSlot( dvarstring( ui_class ), "body" )
|
||||
#undef STAT_CAC_DEATHSTREAK
|
||||
#define STAT_CAC_DEATHSTREAK GetDefaultClassSlot( dvarstring( ui_class ), "deathstreak" )
|
||||
#undef STAT_CAC_KILLSTREAK_TIER1
|
||||
#define STAT_CAC_KILLSTREAK_TIER1 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak1" )
|
||||
#undef STAT_CAC_KILLSTREAK_TIER2
|
||||
#define STAT_CAC_KILLSTREAK_TIER2 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak2" )
|
||||
#undef STAT_CAC_KILLSTREAK_TIER3
|
||||
#define STAT_CAC_KILLSTREAK_TIER3 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak3" )
|
||||
#undef FIRST_ATTACHMENT_PRIMARY_WEAPON
|
||||
#define FIRST_ATTACHMENT_PRIMARY_WEAPON -1
|
||||
#undef SECOND_ATTACHMENT_PRIMARY_WEAPON
|
||||
#define SECOND_ATTACHMENT_PRIMARY_WEAPON -1
|
||||
|
||||
|
||||
#include "ui_mp/newframe.inc"
|
||||
#include "ui_mp/cac_item_info.inc"
|
||||
|
||||
LARGE_POPUP_BACK_BUTTON
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,903 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
#include "ui_mp/custom_mode.inc"
|
||||
|
||||
#define CHOICE_SEP_1 2
|
||||
#define CHOICE_SEP_2 4
|
||||
#define CHOICE_SEP_3 13
|
||||
|
||||
#include "ui/framestyle.inc"
|
||||
#include "ui_mp/newframe.inc"
|
||||
#include "ui_mp/common_game_options.inc"
|
||||
#include "ui/choices_setup_common.menu"
|
||||
#include "ui/choices_setup_popmenu.menu"
|
||||
|
||||
#include "ui_mp/custom_mode_layout.inc"
|
||||
|
||||
#undef NEW_FRAME_BUTTON_NAME
|
||||
#define NEW_FRAME_BUTTON_NAME "custom_game_create_"
|
||||
|
||||
#undef CHOICE_BUTTON_NAME
|
||||
#define CHOICE_BUTTON_NAME NEW_FRAME_BUTTON_NAME
|
||||
|
||||
#undef MENUDEF_NAME
|
||||
#define MENUDEF_NAME custom_game_create
|
||||
|
||||
#undef CHOICE_GROUP
|
||||
#define CHOICE_GROUP "custom_game"
|
||||
|
||||
#ifdef PC
|
||||
#undef CHOICE_TEXTSIZE
|
||||
#define CHOICE_TEXTSIZE TEXTSIZE_SMALL
|
||||
#endif //PC
|
||||
|
||||
#define CHOICE1_TEXT "@MPUI_RULES_TIME_LIMIT_CAPS"
|
||||
#define CHOICE1_DESC "@CUSTOM_GAME_TIME_LIMIT_DESC"
|
||||
#define CHOICE1_DVAR "custom_timelimit"
|
||||
#define CHOICE1_DVARTEXT CHOICE1_DVAR"_text"
|
||||
#define CHOICE1_SHOW 1
|
||||
#define CHOICE1_STR1 "@MPUI_RULES_UNLIMITED_CAPS"
|
||||
#define CHOICE1_STR2 "@MPUI_RULES_2_5MINUTES_CAPS"
|
||||
#define CHOICE1_STR3 "@MPUI_RULES_3MINUTES_CAPS"
|
||||
#define CHOICE1_STR4 "@MPUI_RULES_5MINUTES_CAPS"
|
||||
#define CHOICE1_STR5 "@MPUI_RULES_8MINUTES_CAPS"
|
||||
#define CHOICE1_STR6 "@MPUI_RULES_10MINUTES_CAPS"
|
||||
#define CHOICE1_STR7 "@MPUI_RULES_15MINUTES_CAPS"
|
||||
#define CHOICE1_STR8 "@MPUI_RULES_20MINUTES_CAPS"
|
||||
#define CHOICE1_STR9 "@MPUI_RULES_30MINUTES_CAPS"
|
||||
#define CHOICE1_STR10 ""
|
||||
#define CHOICE1_STR11 ""
|
||||
#define CHOICE1_STR12 ""
|
||||
#define CHOICE1_VAL1 0
|
||||
#define CHOICE1_VAL2 2.5
|
||||
#define CHOICE1_VAL3 3
|
||||
#define CHOICE1_VAL4 5
|
||||
#define CHOICE1_VAL5 8
|
||||
#define CHOICE1_VAL6 10
|
||||
#define CHOICE1_VAL7 15
|
||||
#define CHOICE1_VAL8 20
|
||||
#define CHOICE1_VAL9 30
|
||||
#define CHOICE1_VAL10 0
|
||||
#define CHOICE1_VAL11 0
|
||||
#define CHOICE1_VAL12 0
|
||||
#define CHOICE1_EXEC ;
|
||||
#define CHOICE1_STRLIST { CHOICE1_STR1 CHOICE1_VAL1 CHOICE1_STR2 CHOICE1_VAL2 CHOICE1_STR3 CHOICE1_VAL3 CHOICE1_STR4 CHOICE1_VAL4 CHOICE1_STR5 CHOICE1_VAL5 CHOICE1_STR6 CHOICE1_VAL6 CHOICE1_STR7 CHOICE1_VAL7 CHOICE1_STR8 CHOICE1_VAL8 CHOICE1_STR9 CHOICE1_VAL9 CHOICE1_STR10 CHOICE1_VAL10 CHOICE1_STR11 CHOICE1_VAL11 CHOICE1_STR12 CHOICE1_VAL12 }
|
||||
#define CHOICE1_NUMVALS 9
|
||||
#define CHOICE1_POPUP 1
|
||||
|
||||
#define CHOICE2_TEXT "@MPUI_RULES_SCORE_LIMIT_CAPS"
|
||||
#define CHOICE2_DESC "@CUSTOM_GAME_SCORE_LIMIT_DESC"
|
||||
#define CHOICE2_DVAR "custom_scorelimit"
|
||||
#define CHOICE2_DVARTEXT CHOICE2_DVAR"_text"
|
||||
#define CHOICE2_STR1 "@MPUI_RULES_UNLIMITED_CAPS"
|
||||
#define CHOICE2_STR2 "@MPUI_RULES_30POINTS_CAPS"
|
||||
#define CHOICE2_STR3 "@MPUI_RULES_50POINTS_CAPS"
|
||||
#define CHOICE2_STR4 "@MPUI_RULES_70POINTS_CAPS"
|
||||
#define CHOICE2_STR5 "@MPUI_RULES_100POINTS_CAPS"
|
||||
#define CHOICE2_STR6 "@MPUI_RULES_200POINTS_CAPS"
|
||||
#define CHOICE2_STR7 "@MPUI_RULES_250POINTS_CAPS"
|
||||
#define CHOICE2_STR8 "@MPUI_RULES_300POINTS_CAPS"
|
||||
#define CHOICE2_STR9 "@MPUI_RULES_500POINTS_CAPS"
|
||||
#define CHOICE2_STR10 "@MPUI_RULES_700POINTS_CAPS"
|
||||
#define CHOICE2_STR11 "@MPUI_RULES_750POINTS_CAPS"
|
||||
#define CHOICE2_STR12 "@MPUI_RULES_1000POINTS_CAPS"
|
||||
#define CHOICE2_VAL1 0
|
||||
#define CHOICE2_VAL2 30
|
||||
#define CHOICE2_VAL3 50
|
||||
#define CHOICE2_VAL4 70
|
||||
#define CHOICE2_VAL5 100
|
||||
#define CHOICE2_VAL6 200
|
||||
#define CHOICE2_VAL7 250
|
||||
#define CHOICE2_VAL8 300
|
||||
#define CHOICE2_VAL9 500
|
||||
#define CHOICE2_VAL10 700
|
||||
#define CHOICE2_VAL11 750
|
||||
#define CHOICE2_VAL12 1000
|
||||
#define CHOICE2_EXEC ;
|
||||
#define CHOICE2_STRLIST { CHOICE2_STR1 CHOICE2_VAL1 CHOICE2_STR2 CHOICE2_VAL2 CHOICE2_STR3 CHOICE2_VAL3 CHOICE2_STR4 CHOICE2_VAL4 CHOICE2_STR5 CHOICE2_VAL5 CHOICE2_STR6 CHOICE2_VAL6 CHOICE2_STR7 CHOICE2_VAL7 CHOICE2_STR8 CHOICE2_VAL8 CHOICE2_STR9 CHOICE2_VAL9 CHOICE2_STR10 CHOICE2_VAL10 CHOICE2_STR11 CHOICE2_VAL11 CHOICE2_STR12 CHOICE2_VAL12 }
|
||||
#define CHOICE2_NUMVALS 12
|
||||
#define CHOICE2_POPUP 1
|
||||
#define CHOICE2_VIS ( dvarString( ui_gametype ) == "dom" || dvarString( ui_gametype ) == "koth" )
|
||||
|
||||
#define CHOICE2_ALT_TEXT "@MPUI_RULES_SCORE_LIMIT_CAPS"
|
||||
#define CHOICE2_ALT_DVAR "custom_scorelimit"
|
||||
#define CHOICE2_ALT_DVARTEXT CHOICE2_ALT_DVAR"_text"
|
||||
#define CHOICE2_ALT_STR1 "@MPUI_RULES_UNLIMITED_CAPS"
|
||||
#define CHOICE2_ALT_STR2 "@MPUI_RULES_750POINTS_CAPS"
|
||||
#define CHOICE2_ALT_STR3 "@MPUI_RULES_1000POINTS_CAPS"
|
||||
#define CHOICE2_ALT_STR4 "@MPUI_RULES_1500POINTS_CAPS"
|
||||
#define CHOICE2_ALT_STR5 "@MPUI_RULES_2500POINTS_CAPS"
|
||||
#define CHOICE2_ALT_STR6 "@MPUI_RULES_3000POINTS_CAPS"
|
||||
#define CHOICE2_ALT_STR7 "@MPUI_RULES_5000POINTS_CAPS"
|
||||
#define CHOICE2_ALT_STR8 "@MPUI_RULES_7000POINTS_CAPS"
|
||||
#define CHOICE2_ALT_STR9 "@MPUI_RULES_7500POINTS_CAPS"
|
||||
#define CHOICE2_ALT_STR10 "@MPUI_RULES_10000POINTS_CAPS"
|
||||
#define CHOICE2_ALT_STR11 "@MPUI_RULES_15000POINTS_CAPS"
|
||||
#define CHOICE2_ALT_STR12 "@MPUI_RULES_30000POINTS_CAPS"
|
||||
#define CHOICE2_ALT_VAL1 0
|
||||
#define CHOICE2_ALT_VAL2 750
|
||||
#define CHOICE2_ALT_VAL3 1000
|
||||
#define CHOICE2_ALT_VAL4 1500
|
||||
#define CHOICE2_ALT_VAL5 2500
|
||||
#define CHOICE2_ALT_VAL6 3000
|
||||
#define CHOICE2_ALT_VAL7 5000
|
||||
#define CHOICE2_ALT_VAL8 7000
|
||||
#define CHOICE2_ALT_VAL9 7500
|
||||
#define CHOICE2_ALT_VAL10 10000
|
||||
#define CHOICE2_ALT_VAL11 15000
|
||||
#define CHOICE2_ALT_VAL12 30000
|
||||
#define CHOICE2_ALT_EXEC ;
|
||||
#define CHOICE2_ALT_STRLIST { CHOICE2_ALT_STR1 CHOICE2_ALT_VAL1 CHOICE2_ALT_STR2 CHOICE2_ALT_VAL2 CHOICE2_ALT_STR3 CHOICE2_ALT_VAL3 CHOICE2_ALT_STR4 CHOICE2_ALT_VAL4 CHOICE2_ALT_STR5 CHOICE2_ALT_VAL5 CHOICE2_ALT_STR6 CHOICE2_ALT_VAL6 CHOICE2_ALT_STR7 CHOICE2_ALT_VAL7 CHOICE2_ALT_STR8 CHOICE2_ALT_VAL8 CHOICE2_ALT_STR9 CHOICE2_ALT_VAL9 CHOICE2_ALT_STR10 CHOICE2_ALT_VAL10 CHOICE2_ALT_STR11 CHOICE2_ALT_VAL11 CHOICE2_ALT_STR12 CHOICE2_ALT_VAL12 }
|
||||
#define CHOICE2_ALT_NUMVALS 12
|
||||
#define CHOICE2_ALT_POPUP 1
|
||||
#define CHOICE2_ALT_VIS ( dvarString( ui_gametype ) == "hc_tdm" || dvarString( ui_gametype ) == "tdm" )
|
||||
|
||||
#define IS_CHOICE2_VIS ( CHOICE2_VIS || CHOICE2_ALT_VIS )
|
||||
|
||||
#undef ON_ESC
|
||||
#define ON_ESC \
|
||||
execNow checkIfCustomGametypeChanged; \
|
||||
close self;
|
||||
|
||||
{
|
||||
menuDef
|
||||
{
|
||||
name custom_game_create
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_FILLED
|
||||
soundloop MENU_MUSIC
|
||||
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
|
||||
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED
|
||||
openSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
visible when( MenuHasFocus() || dvarBool( ui_custom_save_to_file_share ) )
|
||||
onOpen
|
||||
{
|
||||
execnow ui_animate custom_game_create * highlightOff 0;
|
||||
activateBlur;
|
||||
focusFirst;
|
||||
execNow beginCustomGametypeChanges;
|
||||
|
||||
if( IS_CHOICE2_VIS )
|
||||
{
|
||||
setLocalVarInt custom_shift_options_up 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
setLocalVarInt custom_shift_options_up 1;
|
||||
}
|
||||
}
|
||||
onFocus
|
||||
{
|
||||
execNow checkIfCustomGametypeChanged;
|
||||
}
|
||||
onEsc
|
||||
{
|
||||
ON_ESC
|
||||
}
|
||||
onClose
|
||||
{
|
||||
deactivateBlur;
|
||||
|
||||
execNow endCustomGametypeChanges;
|
||||
if( dvarBool( "ui_custom_haschanged" ) )
|
||||
{
|
||||
setdvar customGameMode 1;
|
||||
execNow "xupdatepartystate";
|
||||
}
|
||||
setLocalVarBool ui_choice_hideaccept 0;
|
||||
}
|
||||
|
||||
NEW_FRAME( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT )
|
||||
NEW_FRAME_TITLE( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT, "@CUSTOM_GAME_CREATE_CAPS", 1 )
|
||||
NEW_FRAME_SUBTITLE( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT, CUSTOM_GAMETYPE_NAME, 1 )
|
||||
|
||||
CUSTOM_MODE_BACKGROUND_WATERMARK
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 1, CHOICE1_TEXT, CHOICE1_DVAR, CHOICE1_STRLIST, exec checkIfCustomGametypeChanged; CHOICE1_EXEC, SET_CHOICE_DESC( "", CHOICE1_DESC, "" ) setLocalVarBool ui_choice_hideaccept 1;, CLEAR_CHOICE_DESC setLocalVarBool ui_choice_hideaccept 0;, 1 )
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 2, CHOICE2_TEXT, CHOICE2_DVAR, CHOICE2_STRLIST, exec checkIfCustomGametypeChanged; CHOICE2_EXEC, SET_CHOICE_DESC( "", CHOICE2_DESC, "" ) setLocalVarBool ui_choice_hideaccept 1;, CLEAR_CHOICE_DESC setLocalVarBool ui_choice_hideaccept 0;, CHOICE2_VIS )
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 2, CHOICE2_ALT_TEXT, CHOICE2_ALT_DVAR, CHOICE2_ALT_STRLIST, exec checkIfCustomGametypeChanged; CHOICE2_ALT_EXEC, SET_CHOICE_DESC( "", CHOICE2_DESC, "" ) setLocalVarBool ui_choice_hideaccept 1;, CLEAR_CHOICE_DESC setLocalVarBool ui_choice_hideaccept 0;, CHOICE2_ALT_VIS )
|
||||
|
||||
#define SHOULD_SHIFT_CHOICES_UP ( localVarInt( custom_shift_options_up ) > 0 )
|
||||
|
||||
#define GAME_MODE_RULES_ACTION \
|
||||
exec openMenu ( "custom_settings_" + dvarString( "ui_gametype" ) );
|
||||
|
||||
#define BUTTON_3( itemIndex, visArg ) \
|
||||
CUSTOM_BUTTON( itemIndex, "@CUSTOM_GAME_MODE_OPTIONS_CAPS", GAME_MODE_RULES_ACTION, "@CUSTOM_GAME_MODE_OPTIONS_DESC", "", visArg )
|
||||
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#define CHOICE_SEP_1 1
|
||||
#define CHOICE_SEP_2 3
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_3( 2, SHOULD_SHIFT_CHOICES_UP )
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#define CHOICE_SEP_1 2
|
||||
#define CHOICE_SEP_2 4
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_3( 3, !SHOULD_SHIFT_CHOICES_UP )
|
||||
|
||||
#define BUTTON_4( itemIndex, visArg ) \
|
||||
CUSTOM_BUTTON( itemIndex, "@CUSTOM_GENERAL_OPTIONS_CAPS", open "custom_settings_general", "@CUSTOM_GENERAL_OPTIONS_DESC", "", visArg )
|
||||
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#define CHOICE_SEP_1 1
|
||||
#define CHOICE_SEP_2 3
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_4( 3, SHOULD_SHIFT_CHOICES_UP )
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#define CHOICE_SEP_1 2
|
||||
#define CHOICE_SEP_2 4
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_4( 4, !SHOULD_SHIFT_CHOICES_UP )
|
||||
|
||||
#define CUSTOM_OPTION_HIDEACCEPT( dvarName, dvarValue ) \
|
||||
if( dvarInt( dvarName ) == dvarValue ) \
|
||||
{ \
|
||||
setLocalVarBool ui_choice_hideaccept 0; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
setLocalVarBool ui_choice_hideaccept 1; \
|
||||
}
|
||||
|
||||
#define CUSTOM_OPTION_SHOW_DISABLED_TOOLTIP( dvarName, enabledValue, disabledString, enabledString ) \
|
||||
if( dvarInt( dvarName ) != enabledValue ) \
|
||||
{ \
|
||||
execnow set ui_choice_desc ( disabledString ); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
execnow set ui_choice_desc ( enabledString ); \
|
||||
}
|
||||
|
||||
#define CUSTOM_OPTION_LEAVE_FOCUS \
|
||||
CLEAR_CHOICE_DESC \
|
||||
setLocalVarBool ui_choice_hideaccept 0;
|
||||
|
||||
#define CUSTOM_OPTION_EXTRA( dvarName, dvarValue, menuName ) \
|
||||
execKeyInt BUTTON_A \
|
||||
{ \
|
||||
if( dvarInt( dvarName ) == dvarValue ) \
|
||||
{ \
|
||||
open menuName; \
|
||||
} \
|
||||
}
|
||||
|
||||
#define CUSTOM_CLASS_ON_FOCUS \
|
||||
SET_CHOICE_DESC( "", "@CUSTOM_CLASS_EDITOR_DESC", "" ) \
|
||||
CUSTOM_OPTION_HIDEACCEPT( custom_class_mode, 1 ) \
|
||||
CUSTOM_OPTION_SHOW_DISABLED_TOOLTIP( custom_class_mode, 1, "@CUSTOM_CLASS_EDITOR_DISABLED_DESC", "@CUSTOM_CLASS_EDITOR_DESC" )
|
||||
|
||||
#define CUSTOM_CLASS_ACTION \
|
||||
CUSTOM_OPTION_SHOW_DISABLED_TOOLTIP( custom_class_mode, 1, "@CUSTOM_CLASS_EDITOR_DISABLED_DESC", "@CUSTOM_CLASS_EDITOR_DESC" ) \
|
||||
CUSTOM_OPTION_HIDEACCEPT( custom_class_mode, 1 ) \
|
||||
if( dvarInt( custom_class_mode ) == 1 ) \
|
||||
{ \
|
||||
execNow reset scr_player_healthregentime; \
|
||||
} \
|
||||
exec checkIfCustomGametypeChanged;
|
||||
|
||||
#define BUTTON_5( itemIndex, visArg ) \
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS_EX(itemIndex, "@CUSTOM_CLASS_EDITOR_CAPS", custom_class_mode, \
|
||||
{ "@CUSTOM_ALLOW_PLAYER_CLASSES_CAPS" 0 "@CUSTOM_CUSTOM_CLASSES_CAPS" 1 }, \
|
||||
CUSTOM_CLASS_ACTION, \
|
||||
CUSTOM_CLASS_ON_FOCUS, CUSTOM_OPTION_LEAVE_FOCUS, visArg, ;, \
|
||||
CUSTOM_OPTION_EXTRA( custom_class_mode, 1, "custom_classes" ); )
|
||||
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#define CHOICE_SEP_1 1
|
||||
#define CHOICE_SEP_2 3
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_5( 4, SHOULD_SHIFT_CHOICES_UP )
|
||||
#ifdef PC
|
||||
SIMPLE_CHOICE_RECT_OFFSET_BUTTON_SOUND( 4, 6, "@PLATFORM_EDIT", ITEM_ALIGN_MIDDLE_CENTER, open "custom_classes", when(dvarInt(custom_class_mode) == 1 && SHOULD_SHIFT_CHOICES_UP ), 20, CHOICE_SIZE_Y )
|
||||
#endif //PC
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#define CHOICE_SEP_1 2
|
||||
#define CHOICE_SEP_2 4
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_5( 5, !SHOULD_SHIFT_CHOICES_UP )
|
||||
#ifdef PC
|
||||
SIMPLE_CHOICE_RECT_OFFSET_BUTTON_SOUND( 5, 6, "@PLATFORM_EDIT", ITEM_ALIGN_MIDDLE_CENTER, open "custom_classes", when(dvarInt(custom_class_mode) == 1 && !SHOULD_SHIFT_CHOICES_UP ), 20, CHOICE_SIZE_Y )
|
||||
#endif //PC
|
||||
|
||||
#define CUSTOM_KILLSTREAK_ON_FOCUS \
|
||||
SET_CHOICE_DESC( "", "@CUSTOM_KILLSTREAK_EDITOR_DESC", "" ) \
|
||||
CUSTOM_OPTION_HIDEACCEPT( custom_killstreak_mode, 2 ) \
|
||||
CUSTOM_OPTION_SHOW_DISABLED_TOOLTIP( custom_killstreak_mode, 2, "@CUSTOM_KILLSTREAK_EDITOR_DISABLED_DESC", "@CUSTOM_KILLSTREAK_EDITOR_DESC" )
|
||||
|
||||
#define CUSTOM_KILLSTREAK_ACTION \
|
||||
CUSTOM_OPTION_SHOW_DISABLED_TOOLTIP( custom_killstreak_mode, 2, "@CUSTOM_KILLSTREAK_EDITOR_DISABLED_DESC", "@CUSTOM_KILLSTREAK_EDITOR_DESC" ) \
|
||||
CUSTOM_OPTION_HIDEACCEPT( custom_killstreak_mode, 2 ) \
|
||||
exec checkIfCustomGametypeChanged;
|
||||
|
||||
#define BUTTON_6( itemIndex, visArg ) \
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS_EX(itemIndex, "@CUSTOM_KILLSTREAK_EDITOR", custom_killstreak_mode, \
|
||||
{ "@MPUI_ALLOW_PLAYER_KILLSTREAKS_CAPS" 0 "@MPUI_NO_KILLSTREAKS_CAPS" 1 "@MPUI_CUSTOM_KILLSTREAKS_CAPS" 2 }, \
|
||||
CUSTOM_KILLSTREAK_ACTION, \
|
||||
CUSTOM_KILLSTREAK_ON_FOCUS, CUSTOM_OPTION_LEAVE_FOCUS, visArg, ;, \
|
||||
CUSTOM_OPTION_EXTRA( custom_killstreak_mode, 2, "custom_killstreaks" ); )
|
||||
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#define CHOICE_SEP_1 1
|
||||
#define CHOICE_SEP_2 3
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_6( 5, SHOULD_SHIFT_CHOICES_UP )
|
||||
#ifdef PC
|
||||
SIMPLE_CHOICE_RECT_OFFSET_BUTTON_SOUND( 5, 6, "@PLATFORM_EDIT", ITEM_ALIGN_MIDDLE_CENTER, open "custom_killstreaks", when(dvarInt(custom_killstreak_mode) == 2 && SHOULD_SHIFT_CHOICES_UP ), 20, CHOICE_SIZE_Y )
|
||||
#endif //PC
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#define CHOICE_SEP_1 2
|
||||
#define CHOICE_SEP_2 4
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_6( 6, !SHOULD_SHIFT_CHOICES_UP )
|
||||
#ifdef PC
|
||||
SIMPLE_CHOICE_RECT_OFFSET_BUTTON_SOUND( 6, 6, "@PLATFORM_EDIT", ITEM_ALIGN_MIDDLE_CENTER, open "custom_killstreaks", when(dvarInt(custom_killstreak_mode) == 2 && !SHOULD_SHIFT_CHOICES_UP ), 20, CHOICE_SIZE_Y )
|
||||
#endif //PC
|
||||
|
||||
#define CUSTOM_PERK_ON_FOCUS \
|
||||
SET_CHOICE_DESC( "", "@CUSTOM_PERK_EDITOR_DESC", "" ) \
|
||||
CUSTOM_OPTION_HIDEACCEPT( scr_game_perks, 1 ) \
|
||||
CUSTOM_OPTION_SHOW_DISABLED_TOOLTIP( scr_game_perks, 1, "@CUSTOM_PERK_EDITOR_DISABLED_DESC", "@CUSTOM_PERK_EDITOR_DESC" )
|
||||
|
||||
#define CUSTOM_PERK_ACTION \
|
||||
CUSTOM_OPTION_SHOW_DISABLED_TOOLTIP( scr_game_perks, 1, "@CUSTOM_PERK_EDITOR_DISABLED_DESC", "@CUSTOM_PERK_EDITOR_DESC" ) \
|
||||
CUSTOM_OPTION_HIDEACCEPT( scr_game_perks, 1 ) \
|
||||
exec checkIfCustomGametypeChanged;
|
||||
|
||||
#define BUTTON_7( itemIndex, visArg ) \
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS_EX(itemIndex, "@CUSTOM_PERK_EDITOR_CAPS", scr_game_perks, \
|
||||
{ "@CUSTOM_DISABLE_PERKS_CAPS" 0 "@CUSTOM_ENABLE_PERKS_CAPS" 1 }, \
|
||||
CUSTOM_PERK_ACTION, \
|
||||
CUSTOM_PERK_ON_FOCUS, CUSTOM_OPTION_LEAVE_FOCUS, visArg, ;, \
|
||||
CUSTOM_OPTION_EXTRA( scr_game_perks, 1, "custom_specialty_editor" ); )
|
||||
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#define CHOICE_SEP_1 1
|
||||
#define CHOICE_SEP_2 3
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_7( 6, SHOULD_SHIFT_CHOICES_UP )
|
||||
#ifdef PC
|
||||
SIMPLE_CHOICE_RECT_OFFSET_BUTTON_SOUND( 6, 6, "@PLATFORM_EDIT", ITEM_ALIGN_MIDDLE_CENTER, open "custom_specialty_editor", when(dvarInt(scr_game_perks) == 1 && SHOULD_SHIFT_CHOICES_UP ), 20, CHOICE_SIZE_Y )
|
||||
#endif //PC
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#define CHOICE_SEP_1 2
|
||||
#define CHOICE_SEP_2 4
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_7( 7, !SHOULD_SHIFT_CHOICES_UP )
|
||||
#ifdef PC
|
||||
SIMPLE_CHOICE_RECT_OFFSET_BUTTON_SOUND( 7, 6, "@PLATFORM_EDIT", ITEM_ALIGN_MIDDLE_CENTER, open "custom_specialty_editor", when(dvarInt(scr_game_perks) == 1 && !SHOULD_SHIFT_CHOICES_UP ), 20, CHOICE_SIZE_Y )
|
||||
#endif //PC
|
||||
|
||||
// Game Recording Option (on/off)
|
||||
#define BUTTON_8( itemIndex, visArg ) \
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( itemIndex, "@CUSTOM_GAME_RECORDING_CAPS", demo_recordPrivateMatch, \
|
||||
{ "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1 }, \
|
||||
play CHOICE_FOCUS_SOUND;, \
|
||||
SET_CHOICE_DESC( "", "@CUSTOM_GAME_RECORDING_DESC", "" ), \
|
||||
CLEAR_CHOICE_DESC, \
|
||||
visArg && ( dvarInt( xblive_privatematch ) ) )
|
||||
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#undef CHOICE_SEP_3
|
||||
#define CHOICE_SEP_1 1
|
||||
#define CHOICE_SEP_2 3
|
||||
#define CHOICE_SEP_3 6
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_8( 7, SHOULD_SHIFT_CHOICES_UP )
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#undef CHOICE_SEP_3
|
||||
#define CHOICE_SEP_1 2
|
||||
#define CHOICE_SEP_2 4
|
||||
#define CHOICE_SEP_3 7
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_8( 8, !SHOULD_SHIFT_CHOICES_UP )
|
||||
|
||||
PREPROC_TEXT_DRAW_VIS_EX( NEW_FRAME_CHOICE_X_START (NEW_FRAME_CHOICE_Y_START + 230) CHOICE_SIZE_X 60 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0,
|
||||
"@CUSTOM_WARN_DEMO_SIZE",
|
||||
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_ORANGE_RGB 1,
|
||||
when( dvarInt( xblive_privatematch ) && dvarBool( demo_recordPrivateMatch ) ), autowrapped );
|
||||
|
||||
#ifdef PC
|
||||
// Pregame Enabled (yes/no)
|
||||
#define BUTTON_9( itemIndex, visArg ) \
|
||||
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( itemIndex, "@PATCH_PREGAME_ENABLED_CAPS", g_pregame_enabled, \
|
||||
play CHOICE_FOCUS_SOUND;, \
|
||||
SET_CHOICE_DESC( "", "@PLATFORM_PREGAME_ENABLED_DESC", "" );, \
|
||||
CLEAR_CHOICE_DESC, \
|
||||
visArg, ; )
|
||||
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#undef CHOICE_SEP_3
|
||||
#undef CHOICE_SEP_4
|
||||
#define CHOICE_SEP_1 1
|
||||
#define CHOICE_SEP_2 3
|
||||
#define CHOICE_SEP_3 6
|
||||
#define CHOICE_SEP_4 7
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_9( 8, SHOULD_SHIFT_CHOICES_UP )
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#undef CHOICE_SEP_3
|
||||
#undef CHOICE_SEP_4
|
||||
#define CHOICE_SEP_1 2
|
||||
#define CHOICE_SEP_2 4
|
||||
#define CHOICE_SEP_3 7
|
||||
#define CHOICE_SEP_4 8
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_9( 9, !SHOULD_SHIFT_CHOICES_UP )
|
||||
|
||||
// Pregame Minplayers (edit)
|
||||
#define BUTTON_10( itemIndex, visArg ) \
|
||||
FRAME_CHOICE_DVAREDIT_NUMERIC_FOCUS_VIS_EX( itemIndex, "@PATCH_PREGAME_MINPLAYERS_CAPS", party_minplayers, 3, \
|
||||
;, \
|
||||
SET_CHOICE_DESC( "", "@PLATFORM_PREGAME_MINPLAYERS_DESC", "" );, \
|
||||
CLEAR_CHOICE_DESC, \
|
||||
visArg, ; )
|
||||
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#undef CHOICE_SEP_3
|
||||
#undef CHOICE_SEP_4
|
||||
#define CHOICE_SEP_1 1
|
||||
#define CHOICE_SEP_2 3
|
||||
#define CHOICE_SEP_3 6
|
||||
#define CHOICE_SEP_4 7
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_10( 9, SHOULD_SHIFT_CHOICES_UP )
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#undef CHOICE_SEP_3
|
||||
#undef CHOICE_SEP_4
|
||||
#define CHOICE_SEP_1 2
|
||||
#define CHOICE_SEP_2 4
|
||||
#define CHOICE_SEP_3 7
|
||||
#define CHOICE_SEP_4 8
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
BUTTON_10( 10, !SHOULD_SHIFT_CHOICES_UP )
|
||||
|
||||
CUSTOM_BUTTON( 14, "@CUSTOM_REVERT_CHANGES_CAPS", open popup_custom_confirm_revert;, "@CUSTOM_REVERT_CHANGES_DESC", "", 1 )
|
||||
#endif //#ifdef PC
|
||||
|
||||
CUSTOM_FRAME_HINT( ui_choice_desc )
|
||||
|
||||
|
||||
#ifdef PC
|
||||
NEW_FRAME_BACK_BUTTON_ACTION( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT, ON_ESC )
|
||||
SAVE_TO_FILESHARE_BUTTON_NEW_FRAME_ACTION( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT )
|
||||
#else //#ifdef PC
|
||||
NEW_FRAME_BACK_BUTTON( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT )
|
||||
SAVE_TO_FILESHARE_BUTTON_NEW_FRAME( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT )
|
||||
#endif //#ifdef PC
|
||||
|
||||
#ifndef PC
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_BUTTON
|
||||
rect ( 180 ) ( CUSTOM_MODE_FRAME_HEIGHT / 2 + 18 ) 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
origin 0 0
|
||||
text "@CUSTOM_BUTTON_REVERT_CHANGES"
|
||||
textfont CHOICE_TEXTFONT
|
||||
textscale TEXTSIZE_DEFAULT
|
||||
textalign ITEM_ALIGN_BOTTOM_LEFT
|
||||
execkeyint BUTTON_Y
|
||||
{
|
||||
open popup_custom_confirm_revert;
|
||||
}
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
|
||||
CUSTOM_MODE_RESET_TO_DEFAULT_BUTTON( CUSTOM_MODE_FRAME_WIDTH, CUSTOM_MODE_FRAME_HEIGHT, -76, open popup_custom_confirm_revert;, dvarBool( ui_custom_haschanged ) || dvarBool( customGameMode ) )
|
||||
|
||||
execKeyInt BUTTON_X
|
||||
{
|
||||
close self;
|
||||
UPLOAD_TO_FILESHARE
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef PC
|
||||
#define SAVE_ORIGINAL_SETTINGS_PC \
|
||||
exec set orig_host_name ( dvarString( sv_hostname ) ); \
|
||||
exec set orig_min_ping ( dvarInt( sv_minping ) ); \
|
||||
exec set orig_max_ping ( dvarInt( sv_maxping ) ); \
|
||||
exec set orig_password ( dvarString( g_password ) ); \
|
||||
exec set orig_voice ( dvarInt( sv_voice ) ); \
|
||||
exec set orig_allow_vote ( dvarInt( g_allowVote ) ); \
|
||||
exec set orig_sv_vac ( dvarInt( sv_vac ) );
|
||||
#else
|
||||
#define SAVE_ORIGINAL_SETTINGS_PC
|
||||
#endif
|
||||
|
||||
#define SAVE_ORIGINAL_SETTINGS \
|
||||
exec set orig_time ( dvarFloat( ( "scr_" + dvarString( ui_gametype ) + "_timelimit" ) ) ); \
|
||||
exec set orig_score ( dvarInt( ( "scr_" + dvarString( ui_gametype ) + "_scorelimit" ) ) ); \
|
||||
exec set temp_time ( dvarFloat( ( "scr_" + dvarString( ui_gametype ) + "_timelimit" ) ) ); \
|
||||
exec set temp_score ( dvarInt( ( "scr_" + dvarString( ui_gametype ) + "_scorelimit" ) ) ); \
|
||||
exec set orig_num_bots_friendly ( dvarInt( bot_friends ) ); \
|
||||
exec set orig_num_bots_enemy ( dvarInt( bot_enemies ) ); \
|
||||
exec set orig_bot_difficulty ( dvarString( bot_difficulty ) ); \
|
||||
exec set orig_bot_show_tips ( dvarInt( bot_tips ) ); \
|
||||
exec set orig_botUseFriendNames ( dvarInt( sv_botUseFriendNames ) ); \
|
||||
SAVE_ORIGINAL_SETTINGS_PC
|
||||
|
||||
#define SAVE_TIME_AND_SCORE \
|
||||
exec set ( "scr_" + dvarString( ui_gametype ) + "_timelimit" ) ( dvarFloat( temp_time ) ); \
|
||||
exec set ( "scr_" + dvarString( ui_gametype ) + "_scorelimit" ) ( dvarInt( temp_score ) );
|
||||
|
||||
#ifdef PC
|
||||
#define RESET_TO_ORIGINAL_SETTINGS_PC \
|
||||
exec set sv_hostname ( dvarString( orig_host_name ) ); \
|
||||
exec set sv_minping ( dvarInt( orig_min_ping ) ); \
|
||||
exec set sv_maxping ( dvarInt( orig_max_ping ) ); \
|
||||
exec set g_password ( dvarString( orig_password ) ); \
|
||||
exec set sv_voice ( dvarInt( orig_voice ) ); \
|
||||
exec set g_allowVote ( dvarInt( orig_allow_vote ) ); \
|
||||
exec set sv_vac ( dvarInt( orig_sv_vac ) );
|
||||
#else
|
||||
#define RESET_TO_ORIGINAL_SETTINGS_PC
|
||||
#endif
|
||||
|
||||
#define RESET_TO_ORIGINAL_SETTINGS \
|
||||
exec set ( "scr_" + dvarString( ui_gametype ) + "_scorelimit" ) ( dvarInt( orig_score ) ); \
|
||||
exec set ( "scr_" + dvarString( ui_gametype ) + "_timelimit" ) ( dvarFloat( orig_time ) ); \
|
||||
exec set ( "scr_" + dvarString( ui_gametype ) + "_scorelimit" ) ( dvarInt( orig_score ) ); \
|
||||
exec set temp_time ( dvarFloat( orig_time ) ); \
|
||||
exec set temp_score ( dvarInt( orig_score ) ); \
|
||||
exec set bot_friends ( dvarInt( orig_num_bots_friendly ) ); \
|
||||
exec set bot_enemies ( dvarInt( orig_num_bots_enemy ) ); \
|
||||
exec set bot_difficulty ( dvarString( orig_bot_difficulty ) ); \
|
||||
exec set bot_tips ( dvarInt( orig_bot_show_tips ) ); \
|
||||
exec set sv_botUseFriendNames ( dvarInt( orig_botUseFriendNames ) ); \
|
||||
RESET_TO_ORIGINAL_SETTINGS_PC
|
||||
|
||||
#undef CHOICE_SEP_1
|
||||
#undef CHOICE_SEP_2
|
||||
#include "ui/choices_sep_spacing.inc"
|
||||
|
||||
#ifdef PC
|
||||
#define BUTTON_SPACING 20
|
||||
#define REVERT_CHANGES_OFFSET ( getTextWidth( locString( "@PLATFORM_BACK" ), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) + 8 + BUTTON_SPACING )
|
||||
|
||||
#define BASIC_TRAINING_REVERT_CHANGES_BUTTON( FRAME_WIDTH, FRAME_HEIGHT, xArg, actionArg, visArg ) \
|
||||
NEW_FRAME_BUTTON_PC_LEFT_OFFSET( FRAME_WIDTH, FRAME_HEIGHT, REVERT_CHANGES_OFFSET, "@PLATFORM_REVERT_CHANGES", actionArg, visArg )
|
||||
#else // #ifdef PC
|
||||
#define BASIC_TRAINING_REVERT_CHANGES_BUTTON( FRAME_WIDTH, FRAME_HEIGHT, xArg, actionArg, visArg ) \
|
||||
itemDef \
|
||||
{ \
|
||||
type ITEM_TYPE_BUTTON \
|
||||
rect ( xArg ) ( FRAME_HEIGHT / 2 + 18 ) 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \
|
||||
origin 0 0 \
|
||||
text "@PLATFORM_REVERT_CHANGES" \
|
||||
textfont CHOICE_TEXTFONT \
|
||||
textscale TEXTSIZE_DEFAULT \
|
||||
textalign ITEM_ALIGN_BOTTOM_LEFT \
|
||||
execkeyint BUTTON_BACK \
|
||||
{ \
|
||||
actionArg \
|
||||
} \
|
||||
visible when( visArg ) \
|
||||
decoration \
|
||||
}
|
||||
#endif // #else // #ifdef PC
|
||||
|
||||
#undef NEW_FRAME_BUTTON_NAME
|
||||
#define NEW_FRAME_BUTTON_NAME "basictraining_settings_"
|
||||
#undef CHOICE_BUTTON_NAME
|
||||
#define CHOICE_BUTTON_NAME "basictraining_settings_"
|
||||
|
||||
#ifdef PC
|
||||
#undef CHOICE_TEXTSIZE
|
||||
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
|
||||
#endif //PC
|
||||
|
||||
#undef MENUDEF_NAME
|
||||
#define MENUDEF_NAME basictraining_settings
|
||||
menuDef
|
||||
{
|
||||
name basictraining_settings
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_FILLED
|
||||
soundloop MENU_MUSIC
|
||||
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
|
||||
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED
|
||||
openSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
|
||||
onOpen
|
||||
{
|
||||
execnow ui_animate basictraining_settings * highlightOff 0;
|
||||
activateBlur;
|
||||
focusFirst;
|
||||
execnow "Updatedvarsfromprofile";
|
||||
SAVE_ORIGINAL_SETTINGS
|
||||
|
||||
exec "set com_maxclients 30";
|
||||
exec "set sv_maxclients 30";
|
||||
exec "set party_maxplayers 30";
|
||||
exec "set sv_minping 0";
|
||||
exec "set sv_vac 0";
|
||||
exec "set bot_tips 0";
|
||||
}
|
||||
onEsc
|
||||
{
|
||||
close self;
|
||||
}
|
||||
onClose
|
||||
{
|
||||
SAVE_TIME_AND_SCORE
|
||||
exec "updategamerprofile";
|
||||
deactivateBlur;
|
||||
}
|
||||
|
||||
NEW_FRAME( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT )
|
||||
NEW_FRAME_TITLE( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT, "@MPUI_BASICTRAINING_SETTINGS_CAPS", 1 )
|
||||
|
||||
|
||||
#undef A_BUTTON_OFFSET_X
|
||||
#define A_BUTTON_OFFSET_X 100000
|
||||
|
||||
#define IS_WAGER_GAME \
|
||||
( dvarString( "ui_gametype" ) == "hlnd" || dvarString( "ui_gametype" ) == "oic" || dvarString( "ui_gametype" ) == "gun" || dvarString( "ui_gametype" ) == "shrp" )
|
||||
|
||||
#define IS_TEAM_GAME \
|
||||
( dvarString( "ui_gametype" ) == "tdm" || dvarString( "ui_gametype" ) == "hc_tdm" || dvarString( "ui_gametype" ) == "sd" || dvarString( "ui_gametype" ) == "dom" || dvarString( "ui_gametype" ) == "koth" || dvarString( "ui_gametype" ) == "dem" || dvarString( "ui_gametype" ) == "ctf" || dvarString( "ui_gametype" ) == "sab" )
|
||||
|
||||
#define IS_FFA_GAME \
|
||||
( dvarString( "ui_gametype" ) == "dm" || dvarString( "ui_gametype" ) == "hc_dm" )
|
||||
|
||||
#define BALANCE_TEAMS_FRIENDLY \
|
||||
if( dvarInt( bot_friends ) + dvarInt( bot_enemies ) > dvarInt( party_maxplayers ) ) \
|
||||
{ \
|
||||
exec set bot_enemies ( dvarInt( party_maxplayers ) - dvarInt( bot_friends ) ); \
|
||||
} \
|
||||
|
||||
#define BALANCE_TEAMS_ENEMY \
|
||||
if( dvarInt( bot_enemies ) + dvarInt( bot_friends ) > dvarInt( party_maxplayers ) ) \
|
||||
{ \
|
||||
exec set bot_friends ( dvarInt( party_maxplayers ) - dvarInt( bot_enemies ) ); \
|
||||
} \
|
||||
|
||||
// tdm & hardcore tdm
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 1, CHOICE1_TEXT, temp_time, CHOICE1_STRLIST, ;, SET_CHOICE_DESC( "", CHOICE1_DESC, "" ), CLEAR_CHOICE_DESC, IS_TEAM_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 2, CHOICE2_TEXT, temp_score, CHOICE2_STRLIST, exec checkIfCustomGametypeChanged; CHOICE2_EXEC, SET_CHOICE_DESC( "", CHOICE2_DESC, "" ) setLocalVarBool ui_choice_hideaccept 1;, CLEAR_CHOICE_DESC setLocalVarBool ui_choice_hideaccept 0;, CHOICE2_VIS && IS_TEAM_GAME )
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 2, CHOICE2_ALT_TEXT, temp_score, CHOICE2_ALT_STRLIST, exec checkIfCustomGametypeChanged; CHOICE2_ALT_EXEC, SET_CHOICE_DESC( "", CHOICE2_DESC, "" ) setLocalVarBool ui_choice_hideaccept 1;, CLEAR_CHOICE_DESC setLocalVarBool ui_choice_hideaccept 0;, CHOICE2_ALT_VIS && IS_TEAM_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 3, "@MPUI_FRIENDLY_PRACTICE_DUMMIES_CAPS",
|
||||
bot_friends,
|
||||
{ "@MPUI_1_BOTS" 1 "@MPUI_2_BOTS" 2 "@MPUI_3_BOTS" 3 "@MPUI_4_BOTS" 4 "@MPUI_5_BOTS" 5 "@MPUI_6_BOTS" 6 "@MPUI_7_BOTS" 7 "@MPUI_8_BOTS" 8 "@MPUI_9_BOTS" 9 "@MPUI_10_BOTS" 10 "@MPUI_11_BOTS" 11 },
|
||||
BALANCE_TEAMS_FRIENDLY;,
|
||||
SET_CHOICE_DESC( "", "@MPUI_FRIENDLY_PRACTICE_DUMMIES_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_TEAM_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 4, "@MPUI_FRIENDLY_PRACTICE_DUMMIES_CAPS",
|
||||
bot_friends_extra,
|
||||
{ "0" 0 "1" 1 "2" 2 "3" 3 "4" 4 "5" 5 "6" 6 "7" 7 "8" 8 "9" 9 "10" 10 "11" 11 "12" 12 "13" 13 "14" 14 "15" 15 "16" 16 "17" 17 "18" 18 "19" 19 },
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@MPUI_FRIENDLY_PRACTICE_DUMMIES_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_TEAM_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 5, "@MPUI_ENEMY_PRACTICE_DUMMIES_CAPS",
|
||||
bot_enemies,
|
||||
{ "@MPUI_1_BOTS" 1 "@MPUI_2_BOTS" 2 "@MPUI_3_BOTS" 3 "@MPUI_4_BOTS" 4 "@MPUI_5_BOTS" 5 "@MPUI_6_BOTS" 6 "@MPUI_7_BOTS" 7 "@MPUI_8_BOTS" 8 "@MPUI_9_BOTS" 9 "@MPUI_10_BOTS" 10 "@MPUI_11_BOTS" 11 },
|
||||
BALANCE_TEAMS_ENEMY;,
|
||||
SET_CHOICE_DESC( "", "@MPUI_ENEMY_PRACTICE_DUMMIES_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_TEAM_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 6, "@MPUI_ENEMY_PRACTICE_DUMMIES_CAPS",
|
||||
bot_enemies_extra,
|
||||
{ "-1" -1 "0" 0 "1" 1 "2" 2 "3" 3 "4" 4 "5" 5 "6" 6 "7" 7 "8" 8 "9" 9 "10" 10 "11" 11 "12" 12 "13" 13 "14" 14 "15" 15 "16" 16 "17" 17 "18" 18 },
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@MPUI_ENEMY_PRACTICE_DUMMIES_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_TEAM_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARSTRINGLIST_FOCUS_VIS( 7, "@MENU_BASICTRAINING_DIFFICULTY_CAPS",
|
||||
bot_difficulty,
|
||||
{ "@MENU_BASICTRAINING_EASY_CAPS" easy "@MENU_BASICTRAINING_NORMAL_CAPS" normal "@MENU_BASICTRAINING_HARD_CAPS" hard "@MENU_BASICTRAINING_FU_CAPS" fu },
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@MPUI_BASICTRAINING_DIFFICULTY_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_TEAM_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 8, "@PLATFORM_BASICTRAINING_FRIEND_NAMES_CAPS",
|
||||
sv_botUseFriendNames,
|
||||
{ "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1 },
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@MPUI_BASICTRAINING_FRIEND_NAMES_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_TEAM_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 9, "REASONABLE SETUPS",
|
||||
bot_reasonable,
|
||||
{ "DISABLED" 0 "ENABLED" 1 },
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "Bots will only use weapons, perks and killstreaks that are 'good' and/or 'overpowered' for themselves.", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_TEAM_GAME )
|
||||
|
||||
// ffa & hardcore ffa
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 1, CHOICE1_TEXT, temp_time, CHOICE1_STRLIST, ;, SET_CHOICE_DESC( "", CHOICE1_DESC, "" ), CLEAR_CHOICE_DESC, IS_FFA_GAME )
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 2, CHOICE2_ALT_TEXT, temp_score, CHOICE2_ALT_STRLIST, ;, SET_CHOICE_DESC( "", CHOICE2_DESC, "" ), CLEAR_CHOICE_DESC, IS_FFA_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 3, "@MPUI_ENEMY_PRACTICE_DUMMIES_CAPS",
|
||||
bot_enemies,
|
||||
{ "@MPUI_1_BOTS" 1 "@MPUI_2_BOTS" 2 "@MPUI_3_BOTS" 3 "@MPUI_4_BOTS" 4 "@MPUI_5_BOTS" 5 "@MPUI_6_BOTS" 6 "@MPUI_7_BOTS" 7 "@MPUI_8_BOTS" 8 "@MPUI_9_BOTS" 9 "@MPUI_10_BOTS" 10 "@MPUI_11_BOTS" 11 },
|
||||
BALANCE_TEAMS_ENEMY;,
|
||||
SET_CHOICE_DESC( "", "@MPUI_ENEMY_PRACTICE_DUMMIES_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_FFA_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 4, "@MPUI_ENEMY_PRACTICE_DUMMIES_CAPS",
|
||||
bot_enemies_extra,
|
||||
{ "-1" -1 "0" 0 "1" 1 "2" 2 "3" 3 "4" 4 "5" 5 "6" 6 "7" 7 "8" 8 "9" 9 "10" 10 "11" 11 "12" 12 "13" 13 "14" 14 "15" 15 "16" 16 "17" 17 "18" 18 },
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@MPUI_ENEMY_PRACTICE_DUMMIES_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_FFA_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARSTRINGLIST_FOCUS_VIS( 5, "@MENU_BASICTRAINING_DIFFICULTY_CAPS",
|
||||
bot_difficulty,
|
||||
{ "@MENU_BASICTRAINING_EASY_CAPS" easy "@MENU_BASICTRAINING_NORMAL_CAPS" normal "@MENU_BASICTRAINING_HARD_CAPS" hard "@MENU_BASICTRAINING_FU_CAPS" fu },
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@MPUI_BASICTRAINING_DIFFICULTY_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_FFA_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 6, "@PLATFORM_BASICTRAINING_FRIEND_NAMES_CAPS",
|
||||
sv_botUseFriendNames,
|
||||
{ "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1 },
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@MPUI_BASICTRAINING_FRIEND_NAMES_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_FFA_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 7, "REASONABLE SETUPS",
|
||||
bot_reasonable,
|
||||
{ "DISABLED" 0 "ENABLED" 1 },
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "Bots will only use weapons, perks and killstreaks that are 'good' and/or 'overpowered' for themselves.", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_FFA_GAME )
|
||||
|
||||
// wager matches
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 1, "@MPUI_ENEMY_PRACTICE_DUMMIES_CAPS",
|
||||
bot_enemies,
|
||||
{ "@MPUI_1_BOTS" 1 "@MPUI_2_BOTS" 2 "@MPUI_3_BOTS" 3 "@MPUI_4_BOTS" 4 "@MPUI_5_BOTS" 5 "@MPUI_6_BOTS" 6 "@MPUI_7_BOTS" 7 "@MPUI_8_BOTS" 8 "@MPUI_9_BOTS" 9 "@MPUI_10_BOTS" 10 "@MPUI_11_BOTS" 11 },
|
||||
BALANCE_TEAMS_ENEMY;,
|
||||
SET_CHOICE_DESC( "", "@MPUI_ENEMY_PRACTICE_DUMMIES_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_WAGER_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 2, "@MPUI_ENEMY_PRACTICE_DUMMIES_CAPS",
|
||||
bot_enemies_extra,
|
||||
{ "-1" -1 "0" 0 "1" 1 "2" 2 "3" 3 "4" 4 "5" 5 "6" 6 "7" 7 "8" 8 "9" 9 "10" 10 "11" 11 "12" 12 "13" 13 "14" 14 "15" 15 "16" 16 "17" 17 "18" 18 },
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@MPUI_ENEMY_PRACTICE_DUMMIES_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_WAGER_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARSTRINGLIST_FOCUS_VIS( 3, "@MENU_BASICTRAINING_DIFFICULTY_CAPS",
|
||||
bot_difficulty,
|
||||
{ "@MENU_BASICTRAINING_EASY_CAPS" easy "@MENU_BASICTRAINING_NORMAL_CAPS" normal "@MENU_BASICTRAINING_HARD_CAPS" hard "@MENU_BASICTRAINING_FU_CAPS" fu },
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@MPUI_BASICTRAINING_DIFFICULTY_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_WAGER_GAME )
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_FOCUS_VIS( 4, "@PLATFORM_BASICTRAINING_FRIEND_NAMES_CAPS",
|
||||
sv_botUseFriendNames,
|
||||
{ "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1 },
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@MPUI_BASICTRAINING_FRIEND_NAMES_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, IS_WAGER_GAME )
|
||||
|
||||
#undef CHOICE_DVAR_WIDTH_OFFSET
|
||||
#define CHOICE_DVAR_WIDTH_OFFSET 60
|
||||
FRAME_CHOICE_DVAREDIT_FOCUS_VIS_EX( 10, "@PLATFORM_SERVER_NAME_CAPS",
|
||||
"sv_hostname", 20, 20,
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_SERVER_NAME_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
FRAME_CHOICE_DVAREDIT_NUMERIC_FOCUS_VIS_EX( 11, "@PLATFORM_MAXIMUM_PING_CAPS",
|
||||
"sv_maxping", 4,
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_MAXIMUM_PING_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
FRAME_CHOICE_DVAREDIT_FOCUS_VIS_EX( 12, "@PLATFORM_PASSWORD1_CAPS",
|
||||
"g_password", 12, 12,
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_PASSWORD_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 13, "@PLATFORM_VOICECHAT_CAPS",
|
||||
"sv_voice",
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_VOICECHAT_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
#undef CHOICE_TEXT_COLOR
|
||||
#define CHOICE_TEXT_COLOR 1 1 1 1
|
||||
|
||||
#undef A_BUTTON_OFFSET_X
|
||||
#define A_BUTTON_OFFSET_X 0
|
||||
|
||||
CUSTOM_FRAME_HINT( ui_choice_desc )
|
||||
|
||||
BASIC_TRAINING_REVERT_CHANGES_BUTTON( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT, -76, open popup_basictraining_confirm_revert;, 1 )
|
||||
#ifdef PC
|
||||
NEW_FRAME_BACK_BUTTON_ACTION( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT, close self; )
|
||||
#else //#ifdef PC
|
||||
NEW_FRAME_BACK_BUTTON( NEW_FRAME_DEFAULT_WIDTH, NEW_FRAME_DEFAULT_HEIGHT )
|
||||
#endif //#ifdef PC
|
||||
}
|
||||
|
||||
#include "ui_mp/popupstyle.inc"
|
||||
|
||||
// mekberg: No idea why the above include is not setting this. I've wasted a half hour trying to figure why. Instead I'm just going to hack this here.
|
||||
#ifdef PC
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X (POPUP_WIDTH-(POPUP_SIDE_PAD*2))
|
||||
#endif // PC
|
||||
|
||||
menuDef
|
||||
{
|
||||
#define CUSTOM_ERROR_ONESC \
|
||||
uiScript clearError; \
|
||||
close self;
|
||||
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_custom_game_error, ;, CUSTOM_ERROR_ONESC, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( dvarString( "com_errorTitle" ), 1 )
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( dvarString( "com_errorMessage" ), 1 )
|
||||
|
||||
#define CUSTOM_ERROR_ACTION \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
uiScript clearError; \
|
||||
close self;
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 1, "@MENU_EXIT", CUSTOM_ERROR_ACTION, play CHOICE_FOCUS_SOUND, ;, 1, ; )
|
||||
|
||||
#ifndef PC
|
||||
SYSTEM_POPUP_BACK_BUTTON
|
||||
#endif //#ifndef PC
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( "popup_custom_confirm_revert", setfocus popup_custom_confirm_revert_2, ;, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( "@CUSTOM_REVERT_CHANGES_CONFIRM_TITLE", 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_YES_CAPS", execNow "revertCustomGametypeChanges"; exec "xupdatepartystate"; close self, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_NO_CAPS", close self, 1, name popup_custom_confirm_revert_2 )
|
||||
|
||||
#ifndef PC
|
||||
SYSTEM_POPUP_BACK_BUTTON
|
||||
#endif //#ifndef PC
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( "popup_basictraining_confirm_revert", setfocus popup_basictraining_confirm_revert_2, ;, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MPUI_REVERT_BASICTRAINING_CONFIRM_TITLE", 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_YES", RESET_TO_ORIGINAL_SETTINGS close self, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_NO", close self, 1, name popup_basictraining_confirm_revert_2 )
|
||||
|
||||
#ifndef PC
|
||||
SYSTEM_POPUP_BACK_BUTTON
|
||||
#endif //#ifndef PC
|
||||
}
|
||||
}
|
@ -1,423 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
#include "ui_mp/custom_mode.inc"
|
||||
|
||||
#define IS_TEAM_MODE \
|
||||
( dvarString( "ui_gametype" ) != "dm" )
|
||||
|
||||
#define GAME_OPTIONS_MENU_NAME "custom_settings_general"
|
||||
#define MENUDEF_NAME custom_settings_general
|
||||
#define CUSTOM_GAME_OPTIONS_TITLE "@CUSTOM_GENERAL_OPTIONS_CAPS"
|
||||
|
||||
#define CHOICE1_TEXT "@CUSTOM_OPT_HARDCORE"
|
||||
#define CHOICE1_DESC "@CUSTOM_OPT_HARDCORE_DESC"
|
||||
#define CHOICE1_DVAR "scr_hardcore"
|
||||
#define CHOICE1_DVARTEXT CHOICE1_DVAR"_text"
|
||||
#define CHOICE1_SHOW 1
|
||||
#define CHOICE1_EXEC1 execNowOnDvarIntValue scr_hardcore 0 "exec hardcore_disable.cfg";
|
||||
#define CHOICE1_EXEC2 execNowOnDvarIntValue scr_hardcore 1 "exec hardcore_settings.cfg";
|
||||
#define CHOICE1_STRLIST { "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1}
|
||||
#define CHOICE1_EXEC play CHOICE_FOCUS_SOUND; CHOICE1_EXEC1 CHOICE1_EXEC2
|
||||
#define CHOICE1_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
|
||||
#define CHOICE1_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
|
||||
|
||||
#define CHOICE2_TEXT "@CUSTOM_OPT_KILLCAM"
|
||||
#define CHOICE2_DESC "@CUSTOM_OPT_KILLCAM_DESC"
|
||||
#define CHOICE2_DVAR "scr_game_allowkillcam"
|
||||
#define CHOICE2_DVARTEXT CHOICE2_DVAR"_text"
|
||||
#define CHOICE2_SHOW 1
|
||||
#define CHOICE2_STRLIST { "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1}
|
||||
#define CHOICE2_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
|
||||
#define CHOICE2_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
|
||||
|
||||
#define CHOICE3_TEXT "@CUSTOM_OPT_HEADSHOTS_ONLY"
|
||||
#define CHOICE3_DESC "@CUSTOM_OPT_HEADSHOT_ONLY_DESC"
|
||||
#define CHOICE3_DVAR "scr_game_onlyheadshots"
|
||||
#define CHOICE3_DVARTEXT CHOICE3_DVAR"_text"
|
||||
#define CHOICE3_SHOW 1
|
||||
#define CHOICE3_STRLIST { "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1}
|
||||
#define CHOICE3_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
|
||||
#define CHOICE3_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
|
||||
|
||||
#define CHOICE4_TEXT "@CUSTOM_OPT_ALLOW_SPRINT"
|
||||
#define CHOICE4_DESC "@CUSTOM_OPT_ALLOW_SPRINT_DESC"
|
||||
#define CHOICE4_DVAR "scr_player_sprintTime"
|
||||
#define CHOICE4_DVARTEXT CHOICE4_DVAR"_text"
|
||||
#define CHOICE4_SHOW 1
|
||||
#define CHOICE4_STRLIST { "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 4}
|
||||
#define CHOICE4_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
|
||||
#define CHOICE4_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
|
||||
|
||||
#define CHOICE_SEP_1 4
|
||||
|
||||
#define CHOICE_EXTRA \
|
||||
CUSTOM_BUTTON( 5, "@CUSTOM_RESPAWN_OPTIONS", execNow openMenu "popup_respawn_settings";, "@CUSTOM_RESPAWN_OPTIONS_DESC", "", 1 ) \
|
||||
CUSTOM_BUTTON( 6, "@CUSTOM_LIVES_AND_HEALTH_OPTIONS", execNow openMenu "popup_lives_and_health_settings";, "@CUSTOM_LIVES_AND_HEALTH_OPTIONS_DESC", "", 1 ) \
|
||||
CUSTOM_BUTTON( 7, "@CUSTOM_TEAM_OPTIONS", execNow openMenu "popup_team_settings";, "@CUSTOM_TEAM_OPTIONS_DESC", "", IS_TEAM_MODE ) \
|
||||
CUSTOM_BUTTON( 7, "@CUSTOM_FFA_SPECTATE_OPTIONS", execNow openMenu "popup_ffa_spectate_settings";, "@CUSTOM_FFA_SPECTATE_OPTIONS_DESC", "", !IS_TEAM_MODE ) \
|
||||
|
||||
{
|
||||
#include "ui_mp/custom_game_options.inc"
|
||||
}
|
||||
|
||||
#define CUSTOM_OPTION_POPUP_WIDTH 320
|
||||
#define CUSTOM_OPTION_POPUP_HEIGHT 195
|
||||
|
||||
#define CUSTOM_OPTION_POPUP_HINT_Y_OFFSET 70
|
||||
|
||||
#define CUSTOM_OPTION_POPUP_DVAR_OFFSET_X 110
|
||||
|
||||
//***********************************************************************************
|
||||
// Respawn Settings
|
||||
//***********************************************************************************
|
||||
#undef MENUDEF_NAME
|
||||
#define CUSTOM_OPTIONS_POPUP_MENU_NAME "popup_respawn_settings"
|
||||
#define MENUDEF_NAME popup_respawn_settings
|
||||
#define CUSTOM_OPTIONS_POPUP_TITLE "@CUSTOM_RESPAWN_OPTIONS"
|
||||
#define CUSTOM_OPTIONS_POPUP_NUM_ITEMS 3
|
||||
|
||||
#define CHOICE1_TEXT "@CUSTOM_RESPAWN_DELAY"
|
||||
#define CHOICE1_DESC "@CUSTOM_RESPAWN_DELAY_DESC"
|
||||
#define CHOICE1_DVAR "custom_playerrespawndelay"
|
||||
#define CHOICE1_DVARTEXT CHOICE1_DVAR"_text"
|
||||
#define CHOICE1_SHOW 1
|
||||
#define CHOICE1_STR1 "@MPUI_RULES_NONE_CAPS"
|
||||
#define CHOICE1_STR2 "@MPUI_RULES_2_5SECONDS_CAPS"
|
||||
#define CHOICE1_STR3 "@MPUI_RULES_5SECONDS_CAPS"
|
||||
#define CHOICE1_STR4 "@MPUI_RULES_7_5SECONDS_CAPS"
|
||||
#define CHOICE1_STR5 "@MPUI_RULES_10SECONDS_CAPS"
|
||||
#define CHOICE1_STR6 "@MPUI_RULES_15SECONDS_CAPS"
|
||||
#define CHOICE1_STR7 "@MPUI_RULES_20SECONDS_CAPS"
|
||||
#define CHOICE1_STR8 "@MPUI_RULES_30SECONDS_CAPS"
|
||||
#define CHOICE1_STR9 "@MPUI_RULES_40SECONDS_CAPS"
|
||||
#define CHOICE1_STR10 "@MPUI_RULES_50SECONDS_CAPS"
|
||||
#define CHOICE1_STR11 "@MPUI_RULES_1MINUTE_CAPS"
|
||||
#define CHOICE1_STR12 "@MPUI_RULES_1_5MINUTES_CAPS"
|
||||
#define CHOICE1_VAL1 0
|
||||
#define CHOICE1_VAL2 2.5
|
||||
#define CHOICE1_VAL3 5
|
||||
#define CHOICE1_VAL4 7.5
|
||||
#define CHOICE1_VAL5 10
|
||||
#define CHOICE1_VAL6 15
|
||||
#define CHOICE1_VAL7 20
|
||||
#define CHOICE1_VAL8 30
|
||||
#define CHOICE1_VAL9 40
|
||||
#define CHOICE1_VAL10 50
|
||||
#define CHOICE1_VAL11 60
|
||||
#define CHOICE1_VAL12 90
|
||||
#define CHOICE1_EXEC ;
|
||||
#define CHOICE1_STRLIST { CHOICE1_STR1 CHOICE1_VAL1 CHOICE1_STR2 CHOICE1_VAL2 CHOICE1_STR3 CHOICE1_VAL3 CHOICE1_STR4 CHOICE1_VAL4 CHOICE1_STR5 CHOICE1_VAL5 CHOICE1_STR6 CHOICE1_VAL6 CHOICE1_STR7 CHOICE1_VAL7 CHOICE1_STR8 CHOICE1_VAL8 CHOICE1_STR9 CHOICE1_VAL9 CHOICE1_STR10 CHOICE1_VAL10 CHOICE1_STR11 CHOICE1_VAL11 CHOICE1_STR12 CHOICE1_VAL12 }
|
||||
#define CHOICE1_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
|
||||
#define CHOICE1_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
|
||||
#define CHOICE1_NUMVALS 12
|
||||
|
||||
#define CHOICE2_TEXT "@CUSTOM_RULES_FORCE_RESPAWN"
|
||||
#define CHOICE2_DESC "@CUSTOM_FORCE_RESPAWN_DESC"
|
||||
#define CHOICE2_DVAR "scr_player_forcerespawn"
|
||||
#define CHOICE2_DVARTEXT CHOICE2_DVAR"_text"
|
||||
#define CHOICE2_SHOW 1
|
||||
#define CHOICE2_STRLIST { "@MENU_DISABLED_CAPS" 0 "@MENU_ENABLED_CAPS" 1}
|
||||
#define CHOICE2_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
|
||||
#define CHOICE2_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
|
||||
#define CHOICE2_VIS dvarFloat( custom_waverespawndelay ) == 0
|
||||
#define CHOICE2_DISABLED_DESC "@CUSTOM_FORCE_RESPAWN_DISABLED_DESC"
|
||||
#define CHOICE2_DISABLE_ON_INVIS 1
|
||||
|
||||
#define CHOICE3_TEXT "@CUSTOM_WAVE_RESPAWN_DELAY"
|
||||
#define CHOICE3_DESC "@CUSTOM_WAVE_RESPAWN_DELAY_DESC"
|
||||
#define CHOICE3_DVAR custom_waverespawndelay
|
||||
#define CHOICE3_DVARTEXT CHOICE3_DVAR"_text"
|
||||
#define CHOICE3_SHOW 1
|
||||
#define CHOICE3_STR1 "@MPUI_RULES_NONE_CAPS"
|
||||
#define CHOICE3_STR2 "@MPUI_RULES_5SECONDS_CAPS"
|
||||
#define CHOICE3_STR3 "@MPUI_RULES_10SECONDS_CAPS"
|
||||
#define CHOICE3_STR4 "@MPUI_RULES_15SECONDS_CAPS"
|
||||
#define CHOICE3_STR5 "@MPUI_RULES_30SECONDS_CAPS"
|
||||
#define CHOICE3_STR6 ""
|
||||
#define CHOICE3_STR7 ""
|
||||
#define CHOICE3_STR8 ""
|
||||
#define CHOICE3_STR9 ""
|
||||
#define CHOICE3_STR10 ""
|
||||
#define CHOICE3_STR11 ""
|
||||
#define CHOICE3_STR12 ""
|
||||
#define CHOICE3_VAL1 0
|
||||
#define CHOICE3_VAL2 5
|
||||
#define CHOICE3_VAL3 10
|
||||
#define CHOICE3_VAL4 15
|
||||
#define CHOICE3_VAL5 30
|
||||
#define CHOICE3_VAL6 0
|
||||
#define CHOICE3_VAL7 0
|
||||
#define CHOICE3_VAL8 0
|
||||
#define CHOICE3_VAL9 0
|
||||
#define CHOICE3_VAL10 0
|
||||
#define CHOICE3_VAL11 0
|
||||
#define CHOICE3_VAL12 0
|
||||
#define CHOICE3_EXEC ;
|
||||
#define CHOICE3_STRLIST { CHOICE3_STR1 CHOICE3_VAL1 CHOICE3_STR2 CHOICE3_VAL2 CHOICE3_STR3 CHOICE3_VAL3 CHOICE3_STR4 CHOICE3_VAL4 CHOICE3_STR5 CHOICE3_VAL5 CHOICE3_STR6 CHOICE3_VAL6 CHOICE3_STR7 CHOICE3_VAL7 CHOICE3_STR8 CHOICE3_VAL8 CHOICE3_STR9 CHOICE3_VAL9 CHOICE3_STR10 CHOICE3_VAL10 CHOICE3_STR11 CHOICE3_VAL11 CHOICE3_STR12 CHOICE3_VAL12 }
|
||||
#define CHOICE3_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
|
||||
#define CHOICE3_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
|
||||
#define CHOICE3_NUMVALS 5
|
||||
|
||||
#define CUSTOM_RESET_TO_DEFAULT resetdvar CHOICE1_DVAR; resetdvar CHOICE2_DVAR; resetdvar CHOICE3_DVAR;
|
||||
|
||||
{
|
||||
#include "ui_mp/custom_options_popup.inc"
|
||||
}
|
||||
|
||||
//***********************************************************************************
|
||||
// Lives & Health
|
||||
//***********************************************************************************
|
||||
#define CUSTOM_OPTIONS_POPUP_MENU_NAME "popup_lives_and_health_settings"
|
||||
#define MENUDEF_NAME popup_lives_and_health_settings
|
||||
#define CUSTOM_OPTIONS_POPUP_TITLE "@CUSTOM_LIVES_AND_HEALTH_OPTIONS_CAPS"
|
||||
#define CUSTOM_OPTIONS_POPUP_NUM_ITEMS 3
|
||||
|
||||
#define CHOICE1_TEXT "@CUSTOM_NUMBER_OF_LIVES"
|
||||
#define CHOICE1_DESC "@CUSTOM_NUMBER_OF_LIVES_DESC"
|
||||
#define CHOICE1_DVAR "custom_numlives"
|
||||
#define CHOICE1_DVARTEXT CHOICE1_DVAR"_text"
|
||||
#define CHOICE1_SHOW 1
|
||||
#define CHOICE1_STR1 "@MPUI_RULES_UNLIMITED_CAPS"
|
||||
#define CHOICE1_STR2 "@MPUI_RULES_ITEM_LIFE_CAPS"
|
||||
#define CHOICE1_STR3 "@MPUI_RULES_ITEM_2LIVES_CAPS"
|
||||
#define CHOICE1_STR4 "@MPUI_RULES_ITEM_3LIVES_CAPS"
|
||||
#define CHOICE1_STR5 "@MPUI_RULES_ITEM_5LIVES_CAPS"
|
||||
#define CHOICE1_STR6 "@MPUI_RULES_ITEM_9LIVES_CAPS"
|
||||
#define CHOICE1_STR7 ""
|
||||
#define CHOICE1_STR8 ""
|
||||
#define CHOICE1_STR9 ""
|
||||
#define CHOICE1_STR10 ""
|
||||
#define CHOICE1_STR11 ""
|
||||
#define CHOICE1_STR12 ""
|
||||
#define CHOICE1_VAL1 0
|
||||
#define CHOICE1_VAL2 1
|
||||
#define CHOICE1_VAL3 2
|
||||
#define CHOICE1_VAL4 3
|
||||
#define CHOICE1_VAL5 5
|
||||
#define CHOICE1_VAL6 9
|
||||
#define CHOICE1_VAL7 0
|
||||
#define CHOICE1_VAL8 0
|
||||
#define CHOICE1_VAL9 0
|
||||
#define CHOICE1_VAL10 0
|
||||
#define CHOICE1_VAL11 0
|
||||
#define CHOICE1_VAL12 0
|
||||
#define CHOICE1_EXEC ;
|
||||
#define CHOICE1_STRLIST { CHOICE1_STR1 CHOICE1_VAL1 CHOICE1_STR2 CHOICE1_VAL2 CHOICE1_STR3 CHOICE1_VAL3 CHOICE1_STR4 CHOICE1_VAL4 CHOICE1_STR5 CHOICE1_VAL5 CHOICE1_STR6 CHOICE1_VAL6 CHOICE1_STR7 CHOICE1_VAL7 CHOICE1_STR8 CHOICE1_VAL8 CHOICE1_STR9 CHOICE1_VAL9 CHOICE1_STR10 CHOICE1_VAL10 CHOICE1_STR11 CHOICE1_VAL11 CHOICE1_STR12 CHOICE1_VAL12 }
|
||||
#define CHOICE1_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
|
||||
#define CHOICE1_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
|
||||
#define CHOICE1_NUMVALS 6
|
||||
|
||||
#define CHOICE2_TEXT "@CUSTOM_MAX_HEALTH"
|
||||
#define CHOICE2_DESC "@CUSTOM_MAX_HEALTH_DESC"
|
||||
#define CHOICE2_DVAR "scr_player_maxhealth"
|
||||
#define CHOICE2_DVARTEXT CHOICE2_DVAR"_text"
|
||||
#define CHOICE2_SHOW 1
|
||||
#define CHOICE2_STR1 "@MPUI_RULES_MINISCULE_CAPS"
|
||||
#define CHOICE2_STR2 "@MPUI_RULES_HALF_CAPS"
|
||||
#define CHOICE2_STR3 "@MPUI_RULES_NORMAL_CAPS"
|
||||
#define CHOICE2_STR4 "@MPUI_RULES_DOUBLE_CAPS"
|
||||
#define CHOICE2_STR5 ""
|
||||
#define CHOICE2_STR6 ""
|
||||
#define CHOICE2_STR7 ""
|
||||
#define CHOICE2_STR8 ""
|
||||
#define CHOICE2_STR9 ""
|
||||
#define CHOICE2_STR10 ""
|
||||
#define CHOICE2_STR11 ""
|
||||
#define CHOICE2_STR12 ""
|
||||
#define CHOICE2_VAL1 30
|
||||
#define CHOICE2_VAL2 50
|
||||
#define CHOICE2_VAL3 100
|
||||
#define CHOICE2_VAL4 200
|
||||
#define CHOICE2_VAL5 0
|
||||
#define CHOICE2_VAL6 0
|
||||
#define CHOICE2_VAL7 0
|
||||
#define CHOICE2_VAL8 0
|
||||
#define CHOICE2_VAL9 0
|
||||
#define CHOICE2_VAL10 0
|
||||
#define CHOICE2_VAL11 0
|
||||
#define CHOICE2_VAL12 0
|
||||
#define CHOICE2_EXEC ;
|
||||
#define CHOICE2_STRLIST { CHOICE2_STR1 CHOICE2_VAL1 CHOICE2_STR2 CHOICE2_VAL2 CHOICE2_STR3 CHOICE2_VAL3 CHOICE2_STR4 CHOICE2_VAL4 CHOICE2_STR5 CHOICE2_VAL5 CHOICE2_STR6 CHOICE2_VAL6 CHOICE2_STR7 CHOICE2_VAL7 CHOICE2_STR8 CHOICE2_VAL8 CHOICE2_STR9 CHOICE2_VAL9 CHOICE2_STR10 CHOICE2_VAL10 CHOICE2_STR11 CHOICE2_VAL11 CHOICE2_STR12 CHOICE2_VAL12 }
|
||||
#define CHOICE2_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
|
||||
#define CHOICE2_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
|
||||
#define CHOICE2_NUMVALS 4
|
||||
#define CHOICE2_VIS dvarInt( "custom_class_mode" ) != 1
|
||||
#define CHOICE2_DISABLED_DESC "@CUSTOM_MAX_HEALTH_DISABLED_DESC"
|
||||
#define CHOICE2_DISABLE_ON_INVIS 1
|
||||
|
||||
#define CHOICE3_TEXT "@CUSTOM_HEALTH_REGEN"
|
||||
#define CHOICE3_DESC "@CUSTOM_HEALTH_REGEN_DESC"
|
||||
#define CHOICE3_DVAR "scr_player_healthregentime"
|
||||
#define CHOICE3_DVARTEXT CHOICE3_DVAR"_text"
|
||||
#define CHOICE3_SHOW 1
|
||||
#define CHOICE3_STR1 "@MPUI_RULES_NONE_CAPS"
|
||||
#define CHOICE3_STR2 "@MPUI_RULES_FAST_CAPS"
|
||||
#define CHOICE3_STR3 "@MPUI_RULES_NORMAL_CAPS"
|
||||
#define CHOICE3_STR4 "@MPUI_RULES_SLOW_CAPS"
|
||||
#define CHOICE3_STR5 ""
|
||||
#define CHOICE3_STR6 ""
|
||||
#define CHOICE3_STR7 ""
|
||||
#define CHOICE3_STR8 ""
|
||||
#define CHOICE3_STR9 ""
|
||||
#define CHOICE3_STR10 ""
|
||||
#define CHOICE3_STR11 ""
|
||||
#define CHOICE3_STR12 ""
|
||||
#define CHOICE3_VAL1 0
|
||||
#define CHOICE3_VAL2 2
|
||||
#define CHOICE3_VAL3 5
|
||||
#define CHOICE3_VAL4 10
|
||||
#define CHOICE3_VAL5 0
|
||||
#define CHOICE3_VAL6 0
|
||||
#define CHOICE3_VAL7 0
|
||||
#define CHOICE3_VAL8 0
|
||||
#define CHOICE3_VAL9 0
|
||||
#define CHOICE3_VAL10 0
|
||||
#define CHOICE3_VAL11 0
|
||||
#define CHOICE3_VAL12 0
|
||||
#define CHOICE3_EXEC ;
|
||||
#define CHOICE3_STRLIST { CHOICE3_STR1 CHOICE3_VAL1 CHOICE3_STR2 CHOICE3_VAL2 CHOICE3_STR3 CHOICE3_VAL3 CHOICE3_STR4 CHOICE3_VAL4 CHOICE3_STR5 CHOICE3_VAL5 CHOICE3_STR6 CHOICE3_VAL6 CHOICE3_STR7 CHOICE3_VAL7 CHOICE3_STR8 CHOICE3_VAL8 CHOICE3_STR9 CHOICE3_VAL9 CHOICE3_STR10 CHOICE3_VAL10 CHOICE3_STR11 CHOICE3_VAL11 CHOICE3_STR12 CHOICE3_VAL12 }
|
||||
#define CHOICE3_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
|
||||
#define CHOICE3_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
|
||||
#define CHOICE3_NUMVALS 4
|
||||
#define CHOICE3_VIS dvarInt( "custom_class_mode" ) != 1
|
||||
#define CHOICE3_DISABLED_DESC "@CUSTOM_HEALTH_REGEN_DISABLED_DESC"
|
||||
#define CHOICE3_DISABLE_ON_INVIS 1
|
||||
|
||||
#define CUSTOM_RESET_TO_DEFAULT resetdvar CHOICE1_DVAR; resetdvar CHOICE2_DVAR; resetdvar CHOICE3_DVAR;
|
||||
|
||||
{
|
||||
#include "ui_mp/custom_options_popup.inc"
|
||||
}
|
||||
|
||||
//***********************************************************************************
|
||||
// Team Settings
|
||||
//***********************************************************************************
|
||||
#define CUSTOM_OPTIONS_POPUP_MENU_NAME "popup_team_settings"
|
||||
#define MENUDEF_NAME popup_team_settings
|
||||
#define CUSTOM_OPTIONS_POPUP_TITLE "@CUSTOM_TEAM_OPTIONS"
|
||||
#define CUSTOM_OPTIONS_POPUP_NUM_ITEMS 2
|
||||
|
||||
#define CHOICE1_TEXT "@CUSTOM_OPT_SPECTATE"
|
||||
#define CHOICE1_DESC "@CUSTOM_OPT_SPECTATE_DESC"
|
||||
#define CHOICE1_DVAR scr_game_spectatetype
|
||||
#define CHOICE1_DVARTEXT CHOICE1_DVAR"_text"
|
||||
#define CHOICE1_SHOW 1
|
||||
#define CHOICE1_STR1 "@MENU_DISABLED_CAPS"
|
||||
#define CHOICE1_STR2 "@MPUI_RULES_TEAM_ONLY_CAPS"
|
||||
#define CHOICE1_STR3 "@MPUI_RULES_FREE_CAPS"
|
||||
#define CHOICE1_STR4 ""
|
||||
#define CHOICE1_STR5 ""
|
||||
#define CHOICE1_STR6 ""
|
||||
#define CHOICE1_STR7 ""
|
||||
#define CHOICE1_STR8 ""
|
||||
#define CHOICE1_STR9 ""
|
||||
#define CHOICE1_STR10 ""
|
||||
#define CHOICE1_STR11 ""
|
||||
#define CHOICE1_STR12 ""
|
||||
#define CHOICE1_VAL1 0
|
||||
#define CHOICE1_VAL2 1
|
||||
#define CHOICE1_VAL3 2
|
||||
#define CHOICE1_VAL4 0
|
||||
#define CHOICE1_VAL5 0
|
||||
#define CHOICE1_VAL6 0
|
||||
#define CHOICE1_VAL7 0
|
||||
#define CHOICE1_VAL8 0
|
||||
#define CHOICE1_VAL9 0
|
||||
#define CHOICE1_VAL10 0
|
||||
#define CHOICE1_VAL11 0
|
||||
#define CHOICE1_VAL12 0
|
||||
#define CHOICE1_EXEC ;
|
||||
#define CHOICE1_STRLIST { CHOICE1_STR1 CHOICE1_VAL1 CHOICE1_STR2 CHOICE1_VAL2 CHOICE1_STR3 CHOICE1_VAL3 CHOICE1_STR4 CHOICE1_VAL4 CHOICE1_STR5 CHOICE1_VAL5 CHOICE1_STR6 CHOICE1_VAL6 CHOICE1_STR7 CHOICE1_VAL7 CHOICE1_STR8 CHOICE1_VAL8 CHOICE1_STR9 CHOICE1_VAL9 CHOICE1_STR10 CHOICE1_VAL10 CHOICE1_STR11 CHOICE1_VAL11 CHOICE1_STR12 CHOICE1_VAL12 }
|
||||
#define CHOICE1_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
|
||||
#define CHOICE1_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
|
||||
#define CHOICE1_NUMVALS 3
|
||||
|
||||
#define CHOICE2_TEXT "@CUSTOM_FRIENDLY_FIRE"
|
||||
#define CHOICE2_DESC "@CUSTOM_FRIENDLY_FIRE_DESC"
|
||||
#define CHOICE2_DVAR scr_team_fftype
|
||||
#define CHOICE2_DVARTEXT CHOICE2_DVAR"_text"
|
||||
#define CHOICE2_SHOW 1
|
||||
#define CHOICE2_STR1 "@MENU_DISABLED_CAPS"
|
||||
#define CHOICE2_STR2 "@MENU_ENABLED_CAPS"
|
||||
#define CHOICE2_STR3 "@MPUI_RULES_REFLECT_CAPS"
|
||||
#define CHOICE2_STR4 "@MPUI_RULES_SHARED_CAPS"
|
||||
#define CHOICE2_STR5 ""
|
||||
#define CHOICE2_STR6 ""
|
||||
#define CHOICE2_STR7 ""
|
||||
#define CHOICE2_STR8 ""
|
||||
#define CHOICE2_STR9 ""
|
||||
#define CHOICE2_STR10 ""
|
||||
#define CHOICE2_STR11 ""
|
||||
#define CHOICE2_STR12 ""
|
||||
#define CHOICE2_VAL1 0
|
||||
#define CHOICE2_VAL2 1
|
||||
#define CHOICE2_VAL3 2
|
||||
#define CHOICE2_VAL4 3
|
||||
#define CHOICE2_VAL5 0
|
||||
#define CHOICE2_VAL6 0
|
||||
#define CHOICE2_VAL7 0
|
||||
#define CHOICE2_VAL8 0
|
||||
#define CHOICE2_VAL9 0
|
||||
#define CHOICE2_VAL10 0
|
||||
#define CHOICE2_VAL11 0
|
||||
#define CHOICE2_VAL12 0
|
||||
#define CHOICE2_EXEC ;
|
||||
#define CHOICE2_STRLIST { CHOICE2_STR1 CHOICE2_VAL1 CHOICE2_STR2 CHOICE2_VAL2 CHOICE2_STR3 CHOICE2_VAL3 CHOICE2_STR4 CHOICE2_VAL4 CHOICE2_STR5 CHOICE2_VAL5 CHOICE2_STR6 CHOICE2_VAL6 CHOICE2_STR7 CHOICE2_VAL7 CHOICE2_STR8 CHOICE2_VAL8 CHOICE2_STR9 CHOICE2_VAL9 CHOICE2_STR10 CHOICE2_VAL10 CHOICE2_STR11 CHOICE2_VAL11 CHOICE2_STR12 CHOICE2_VAL12 }
|
||||
#define CHOICE2_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
|
||||
#define CHOICE2_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
|
||||
#define CHOICE2_NUMVALS 4
|
||||
|
||||
#define CUSTOM_RESET_TO_DEFAULT resetdvar CHOICE1_DVAR; resetdvar CHOICE2_DVAR;
|
||||
|
||||
{
|
||||
#include "ui_mp/custom_options_popup.inc"
|
||||
}
|
||||
|
||||
//***********************************************************************************
|
||||
// Free for All specate settings
|
||||
//***********************************************************************************
|
||||
#define CUSTOM_OPTIONS_POPUP_MENU_NAME "popup_ffa_spectate_settings"
|
||||
#define MENUDEF_NAME popup_ffa_spectate_settings
|
||||
#define CUSTOM_OPTIONS_POPUP_TITLE "@CUSTOM_FFA_SPECTATE_OPTIONS"
|
||||
#define CUSTOM_OPTIONS_POPUP_NUM_ITEMS 1
|
||||
|
||||
#define CHOICE1_TEXT "@CUSTOM_OPT_SPECTATE"
|
||||
#define CHOICE1_DESC "@CUSTOM_OPT_SPECTATE_DESC"
|
||||
#define CHOICE1_DVAR scr_game_spectatetype
|
||||
#define CHOICE1_DVARTEXT CHOICE1_DVAR"_text"
|
||||
#define CHOICE1_SHOW 1
|
||||
#define CHOICE1_STR1 "@MENU_DISABLED_CAPS"
|
||||
#define CHOICE1_STR2 "@MPUI_RULES_PLAYERS_ONLY_CAPS"
|
||||
#define CHOICE1_STR3 "@MPUI_RULES_FREE_CAPS"
|
||||
#define CHOICE1_STR4 ""
|
||||
#define CHOICE1_STR5 ""
|
||||
#define CHOICE1_STR6 ""
|
||||
#define CHOICE1_STR7 ""
|
||||
#define CHOICE1_STR8 ""
|
||||
#define CHOICE1_STR9 ""
|
||||
#define CHOICE1_STR10 ""
|
||||
#define CHOICE1_STR11 ""
|
||||
#define CHOICE1_STR12 ""
|
||||
#define CHOICE1_VAL1 0
|
||||
#define CHOICE1_VAL2 1
|
||||
#define CHOICE1_VAL3 2
|
||||
#define CHOICE1_VAL4 0
|
||||
#define CHOICE1_VAL5 0
|
||||
#define CHOICE1_VAL6 0
|
||||
#define CHOICE1_VAL7 0
|
||||
#define CHOICE1_VAL8 0
|
||||
#define CHOICE1_VAL9 0
|
||||
#define CHOICE1_VAL10 0
|
||||
#define CHOICE1_VAL11 0
|
||||
#define CHOICE1_VAL12 0
|
||||
#define CHOICE1_EXEC open GAME_OPTIONS_MENU_NAME"_"CHOICE1_TEXT; play CHOICE_FOCUS_SOUND;
|
||||
#define CHOICE1_STRLIST { CHOICE1_STR1 CHOICE1_VAL1 CHOICE1_STR2 CHOICE1_VAL2 CHOICE1_STR3 CHOICE1_VAL3 CHOICE1_STR4 CHOICE1_VAL4 CHOICE1_STR5 CHOICE1_VAL5 CHOICE1_STR6 CHOICE1_VAL6 CHOICE1_STR7 CHOICE1_VAL7 CHOICE1_STR8 CHOICE1_VAL8 CHOICE1_STR9 CHOICE1_VAL9 CHOICE1_STR10 CHOICE1_VAL10 CHOICE1_STR11 CHOICE1_VAL11 CHOICE1_STR12 CHOICE1_VAL12 }
|
||||
#define CHOICE1_NUMVALS 3
|
||||
#define CHOICE1_ONFOCUS setLocalVarBool ui_choice_hideaccept 1;
|
||||
#define CHOICE1_LEAVEFOCUS setLocalVarBool ui_choice_hideaccept 0;
|
||||
|
||||
#define CUSTOM_RESET_TO_DEFAULT resetdvar CHOICE1_DVAR;
|
||||
|
||||
{
|
||||
#include "ui_mp/custom_options_popup.inc"
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,887 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
#include "ui_mp/custom_mode.inc"
|
||||
|
||||
#define CHOICE_SEP_OFFSET_Y -2
|
||||
#define CHOICE_SIDEITEM_SPACING -310
|
||||
|
||||
#include "ui_mp/menustyle.inc"
|
||||
#include "ui/choices_setup_common.menu"
|
||||
#include "ui/choices_setup_popmenu.menu"
|
||||
#include "ui_mp/stats_info.inc"
|
||||
#include "ui_mp/overlaybg.inc"
|
||||
#include "ui_mp/fileshare.inc"
|
||||
#include "ui/framestyle.inc"
|
||||
#include "ui_mp/newframe.inc"
|
||||
#include "ui/frame.inc"
|
||||
|
||||
#include "ui_mp/popup_player_info.inc"
|
||||
|
||||
#undef CHOICE_TEXTSTYLE
|
||||
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
|
||||
|
||||
#undef CHOICE_GROUP
|
||||
#define CHOICE_GROUP "menu_game_mode_upload"
|
||||
|
||||
#define HINT_TEXT_WIDTH ( FRAME_DEFAULT_WIDTH - ( FRAME_TITLE_X_OFFSET * 2 ) )
|
||||
|
||||
menuDef
|
||||
{
|
||||
name menu_game_mode_upload
|
||||
rect 0 0 640 480
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_FILLED
|
||||
priority MENU_PRI_ONTOP
|
||||
control MENU_CONTROL_OPENER
|
||||
soundloop MENU_MUSIC
|
||||
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
|
||||
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED
|
||||
openSlideDirection MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT
|
||||
closeSlideDirection MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT
|
||||
onOpen
|
||||
{
|
||||
READ_FILE_SHARE;
|
||||
setdvar ui_custom_save_to_file_share 1;
|
||||
setDvar fsUnoccupiedHighlightGreen 1;
|
||||
setLocalVarString ui_choicegroup CHOICE_GROUP;
|
||||
}
|
||||
onFocus
|
||||
{
|
||||
play CHOICE_FOCUS_SOUND;
|
||||
activateBlur;
|
||||
}
|
||||
onClose
|
||||
{
|
||||
setdvar ui_custom_save_to_file_share 0;
|
||||
deactivateblur;
|
||||
}
|
||||
onESC
|
||||
{
|
||||
close self;
|
||||
}
|
||||
execKeyInt APAD_LEFT { play CHOICE_FOCUS_SOUND; }
|
||||
execKeyInt DPAD_LEFT { play CHOICE_FOCUS_SOUND; }
|
||||
execKeyInt APAD_RIGHT { play CHOICE_FOCUS_SOUND; }
|
||||
execKeyInt DPAD_RIGHT { play CHOICE_FOCUS_SOUND; }
|
||||
execKeyInt APAD_UP { execnow set fshSelectLastSlotRow 1; setfocus fileShareSlots; }
|
||||
execKeyInt DPAD_UP { execnow set fshSelectLastSlotRow 1; setfocus fileShareSlots; }
|
||||
execKeyInt APAD_DOWN { execnow set fshSelectFirstSlotRow 1; setfocus fileShareSlots; }
|
||||
execKeyInt DPAD_DOWN { execnow set fshSelectFirstSlotRow 1; setfocus fileShareSlots; }
|
||||
|
||||
FRAME_DEFAULT
|
||||
FRAME_TITLE_DEFAULT( "@MENU_FILESHARE_MYSHARE_CAPS", 1 )
|
||||
|
||||
PLAYER_INFO_VIS( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, 1 )
|
||||
|
||||
itemDef
|
||||
{
|
||||
name fileShareSlots
|
||||
type ITEM_TYPE_LISTBOX
|
||||
feeder FEEDER_FILESHARE_MYSLOTS
|
||||
FILESHARE_COMMON_OPTIONS
|
||||
elementwidth 70
|
||||
elementheight 70
|
||||
elementtype LISTBOX_TEXT
|
||||
textalign HORIZONTAL_ALIGN_LEFT
|
||||
textfont UI_FONT_NORMAL
|
||||
forecolor CHOICE_TEXTCOLOR
|
||||
modal
|
||||
doubleclick
|
||||
{
|
||||
if ( getFeederData( "slot" ) <= 6 )
|
||||
{
|
||||
if ( !( FILESHARE_TASKSINPROGRESS ) )
|
||||
{
|
||||
play CHOICE_FOCUS_SOUND;
|
||||
if ( getFeederData( "slotOccupied" ) != 1 )
|
||||
{
|
||||
open menu_game_mode_upload_save;
|
||||
}
|
||||
else
|
||||
{
|
||||
open menu_game_mode_upload_confirm;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
onListboxSelectionChange { play CHOICE_FOCUS_SOUND; }
|
||||
visible 1
|
||||
FILESHARE_SLOTS_USERAREAS
|
||||
}
|
||||
FILESHARE_BOTTOM( fileShareSlots, 1 )
|
||||
FILESHARE_DETAILS( 35, (FRAME_CHOICE_Y_START-1), HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER,
|
||||
"menu_game_mode_upload", "fileShareSlots",
|
||||
getFeederData( "fileShareSlots", "slotOccupied" ) && getFeederData( "fileShareSlots", "count" ) > 0.0 )
|
||||
#ifdef CONSOLE
|
||||
PREPROC_TEXT_DRAW_VIS( -144 158 30 15 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
|
||||
( int( getFeederData( "fileShareSlots", "slot" ) ) + " " + locString( "@MENU_FILESHARE_OF18") ),
|
||||
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, 1 1 1 1, when( IsPremiumSubscriber() ) )
|
||||
|
||||
PREPROC_SHADER_DRAW_VIS_EX( -114 160 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
|
||||
"ui_arrow_left", COLOR_BODY_TEXT,
|
||||
when( IsPremiumSubscriber() && getFeederData( "fileShareSlots", "slot" ) > 6 ),
|
||||
rotation 90; )
|
||||
PREPROC_SHADER_DRAW_VIS_EX( -107 160 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
|
||||
"ui_arrow_right", COLOR_BODY_TEXT,
|
||||
when( IsPremiumSubscriber() && getFeederData( "fileShareSlots", "slot" ) > 6 && getFeederData( "fileShareSlots", "slot" ) < 13 ),
|
||||
rotation 90; )
|
||||
PREPROC_SHADER_DRAW_VIS_EX( -114 160 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
|
||||
"ui_arrow_right", COLOR_BODY_TEXT,
|
||||
when( IsPremiumSubscriber() && getFeederData( "fileShareSlots", "slot" ) <= 6 ),
|
||||
rotation 90; )
|
||||
#endif //#ifdef CONSOLE
|
||||
|
||||
HINT_TEXT_ALL( 15, CHOICE_X_START, -8, CHOICE_SIZE_X, "@MENU_FILESHARE_CHOOSESLOT", 1 1 1 1, 1, ; )
|
||||
|
||||
#ifdef PC
|
||||
NEW_FRAME_BACK_BUTTON_ACTION( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT, close self; )
|
||||
#else //#ifdef PC
|
||||
NEW_FRAME_BACK_BUTTON( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT )
|
||||
|
||||
PREPROC_TEXT_DRAW_VIS( -160 (FRAME_DEFAULT_HEIGHT/2) 50 17 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
|
||||
"@PLATFORM_SELECT",
|
||||
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_BOTTOM_LEFT, 1 1 1 1,
|
||||
when( getFeederData( menu_game_mode_upload, fileShareSlots, "slot" ) <= 6 ); )
|
||||
#endif // #else // #ifdef PC
|
||||
}
|
||||
#undef ON_ESC
|
||||
#define ON_ESC \
|
||||
close self;
|
||||
|
||||
menuDef
|
||||
{
|
||||
name custom_select_from_fileshare
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_FILLED
|
||||
priority MENU_PRI_ONTOP
|
||||
control MENU_CONTROL_OPENER
|
||||
soundloop MENU_MUSIC
|
||||
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
|
||||
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED
|
||||
openSlideDirection MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT
|
||||
closeSlideDirection MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT
|
||||
|
||||
onOpen
|
||||
{
|
||||
#ifdef PC
|
||||
exec readfileshare
|
||||
#endif
|
||||
setDvar fsUnoccupiedHighlightGreen 2;
|
||||
setLocalVarString ui_choicegroup CHOICE_GROUP;
|
||||
}
|
||||
onFocus
|
||||
{
|
||||
activateBlur;
|
||||
}
|
||||
onClose
|
||||
{
|
||||
deactivateBlur;
|
||||
}
|
||||
onESC
|
||||
{
|
||||
ON_ESC
|
||||
}
|
||||
execKeyInt APAD_LEFT { play CHOICE_FOCUS_SOUND; }
|
||||
execKeyInt DPAD_LEFT { play CHOICE_FOCUS_SOUND; }
|
||||
execKeyInt APAD_RIGHT { play CHOICE_FOCUS_SOUND; }
|
||||
execKeyInt DPAD_RIGHT { play CHOICE_FOCUS_SOUND; }
|
||||
execKeyInt APAD_UP { execnow set fshSelectLastSlotRow 1; setfocus fileShareSlots; }
|
||||
execKeyInt DPAD_UP { execnow set fshSelectLastSlotRow 1; setfocus fileShareSlots; }
|
||||
execKeyInt APAD_DOWN { execnow set fshSelectFirstSlotRow 1; setfocus fileShareSlots; }
|
||||
execKeyInt DPAD_DOWN { execnow set fshSelectFirstSlotRow 1; setfocus fileShareSlots; }
|
||||
|
||||
FRAME_DEFAULT
|
||||
|
||||
FRAME_TITLE_DEFAULT( "@CUSTOM_FILESHARE_SELECT_MODE_TITLE", 1 )
|
||||
FRAME_SUBTITLE_DEFAULT( "@CUSTOM_FILESHARE_SELECT_MODE_DESC", 1 )
|
||||
|
||||
PLAYER_INFO_VIS( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, 1 )
|
||||
|
||||
itemDef
|
||||
{
|
||||
name fileShareSlots
|
||||
type ITEM_TYPE_LISTBOX
|
||||
feeder FEEDER_FILESHARE_MYSLOTS
|
||||
FILESHARE_COMMON_OPTIONS
|
||||
origin 0 0
|
||||
elementwidth 70
|
||||
elementheight 67
|
||||
elementtype LISTBOX_TEXT
|
||||
textalign ITEM_ALIGN_MIDDLE_CENTER
|
||||
textfont UI_FONT_NORMAL
|
||||
textscale TEXTSIZE_SUBTITLE
|
||||
forecolor CHOICE_TEXTCOLOR
|
||||
modal
|
||||
doubleclick
|
||||
{
|
||||
play CHOICE_FOCUS_SOUND;
|
||||
if ( getFeederData( "slotOccupied" ) && !( FILESHARE_TASKSINPROGRESS ) )
|
||||
{
|
||||
if( getFeederData( "fileType" ) == "customgamemode" )
|
||||
{
|
||||
execNow downloadCustomGametype (getFeederData( "fileID" )) (getFeederData( "fileSize" ));
|
||||
closeimmediate custom_select_from_fileshare;
|
||||
closeimmediate select_game_mode;
|
||||
}
|
||||
}
|
||||
}
|
||||
onListboxSelectionChange { play CHOICE_FOCUS_SOUND; }
|
||||
visible 1
|
||||
|
||||
FILESHARE_SLOTS_USERAREAS
|
||||
}
|
||||
FILESHARE_BOTTOM( fileShareSlots, 1 )
|
||||
|
||||
/* SLOT OCCUPIED */
|
||||
#define SLOT_OCCUPIED_CONDITION \
|
||||
( getFeederData( "fileShareSlots", "slotOccupied" ) && getFeederData( "fileShareSlots", "count" ) > 0.0 )
|
||||
|
||||
#define SLOT_HAS_GAME_MODE \
|
||||
( getFeederData( "fileShareSlots", "fileType" ) == "customgamemode" )
|
||||
|
||||
#undef FILESHARE_SELECTOR_TOOLTIP_Y
|
||||
#ifdef PC
|
||||
#define FILESHARE_SELECTOR_TOOLTIP_Y FILESHARE_TOOLTIP_PC_Y
|
||||
#else //#ifdef PC
|
||||
#define FILESHARE_SELECTOR_TOOLTIP_Y 95
|
||||
#endif //#ifdef PC
|
||||
|
||||
// Tooltip - Occupied Slot with custom game mode
|
||||
PREPROC_SHADER_DRAW_VIS_EX( (FRAME_CHOICE_X_START-2) FILESHARE_SELECTOR_TOOLTIP_Y 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
|
||||
"ui_arrow_right", COLOR_BODY_TEXT,
|
||||
when( SLOT_OCCUPIED_CONDITION && SLOT_HAS_GAME_MODE ), ; )
|
||||
PREPROC_TEXT_DRAW_VIS_EX( (FRAME_CHOICE_X_START+8) FILESHARE_SELECTOR_TOOLTIP_Y 280 36 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
|
||||
locString( "CUSTOM_FILESHARE_CGM_HIGHLIGHTED" ),
|
||||
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1,
|
||||
when( SLOT_OCCUPIED_CONDITION && SLOT_HAS_GAME_MODE ), autowrapped; )
|
||||
|
||||
// Tooltip - Occupied Slot that is not a custom game mode
|
||||
PREPROC_SHADER_DRAW_VIS_EX( (FRAME_CHOICE_X_START-2) FILESHARE_SELECTOR_TOOLTIP_Y 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
|
||||
"ui_arrow_right", COLOR_BODY_TEXT,
|
||||
when( SLOT_OCCUPIED_CONDITION && !SLOT_HAS_GAME_MODE ), ; )
|
||||
PREPROC_TEXT_DRAW_VIS_EX( (FRAME_CHOICE_X_START+8) FILESHARE_SELECTOR_TOOLTIP_Y 280 36 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
|
||||
locString( "CUSTOM_FILESHARE_CANT_SELECT" ),
|
||||
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1,
|
||||
when( SLOT_OCCUPIED_CONDITION && !SLOT_HAS_GAME_MODE ), autowrapped; )
|
||||
|
||||
FILESHARE_SPINNER( 145, -45, when( FILESHARE_TASKSINPROGRESS ), 350 )
|
||||
|
||||
execKeyInt APAD_UP
|
||||
{
|
||||
execnow set fshSelectLastSlotRow 1;
|
||||
setfocus fileShareSlots;
|
||||
}
|
||||
|
||||
execKeyInt DPAD_UP
|
||||
{
|
||||
execnow set fshSelectLastSlotRow 1;
|
||||
setfocus fileShareSlots;
|
||||
}
|
||||
|
||||
execKeyInt APAD_DOWN
|
||||
{
|
||||
execnow set fshSelectFirstSlotRow 1;
|
||||
setfocus fileShareSlots;
|
||||
}
|
||||
|
||||
execKeyInt DPAD_DOWN
|
||||
{
|
||||
execnow set fshSelectFirstSlotRow 1;
|
||||
setfocus fileShareSlots;
|
||||
}
|
||||
|
||||
#ifdef CONSOLE
|
||||
PREPROC_TEXT_DRAW_VIS( -146 80 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
|
||||
( int( getFeederData( "fileShareSlots", "slot" ) ) ),
|
||||
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, 1 1 1 1,
|
||||
1 )
|
||||
PREPROC_TEXT_DRAW_VIS( -142 80 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
|
||||
"@MENU_FILESHARE_OF6",
|
||||
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, 1 1 1 1,
|
||||
when ( !IsPremiumSubscriber() ) )
|
||||
|
||||
// Top Arrow
|
||||
PREPROC_SHADER_DRAW_VIS_EX( -114 75 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
|
||||
"ui_arrow_left", COLOR_BODY_TEXT,
|
||||
when( IsPremiumSubscriber() && getFeederData( "fileShareSlots", "slot" ) > 6 ), rotation 90; )
|
||||
|
||||
// Bottom Arrow 1
|
||||
PREPROC_SHADER_DRAW_VIS_EX( -107 75 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
|
||||
"ui_arrow_right", COLOR_BODY_TEXT,
|
||||
when( IsPremiumSubscriber() && getFeederData( "fileShareSlots", "slot" ) > 6 && getFeederData( "fileShareSlots", "slot" ) < 13 ), rotation 90; )
|
||||
|
||||
// Bottom Arrow 2
|
||||
PREPROC_SHADER_DRAW_VIS_EX( -114 75 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER,
|
||||
"ui_arrow_right", COLOR_BODY_TEXT,
|
||||
when( IsPremiumSubscriber() && getFeederData( "fileShareSlots", "slot" ) <= 6 ), rotation 90; )
|
||||
#endif //#ifdef CONSOLE
|
||||
// File details
|
||||
FILESHARE_DETAILS( 35, (FRAME_CHOICE_Y_START-1), HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER,
|
||||
"custom_select_from_fileshare", "fileShareSlots",
|
||||
SLOT_OCCUPIED_CONDITION )
|
||||
|
||||
FILESHARE_SPINNER( 145, -45, when( FILESHARE_TASKSINPROGRESS ), 350 )
|
||||
|
||||
// Button prompts
|
||||
|
||||
#ifdef PC
|
||||
FRAME_BACK_BUTTON_DEFAULT_ACTION( ON_ESC )
|
||||
#else //#ifdef PC
|
||||
FRAME_BACK_BUTTON_DEFAULT
|
||||
|
||||
PREPROC_TEXT_DRAW_VIS( -160 (FILESHARE_FRAME_HEIGHT/2) 50 17 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
|
||||
"@PLATFORM_SELECT",
|
||||
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_BOTTOM_LEFT, 1 1 1 1,
|
||||
when( SLOT_OCCUPIED_CONDITION && SLOT_HAS_GAME_MODE ); )
|
||||
#endif //#ifdef PC
|
||||
|
||||
#include "ui/safearea.menu"
|
||||
}
|
||||
|
||||
#define GAMEMODE_NAME_X 40
|
||||
#define GAMEMODE_NAME_Y ( FRAME_CHOICE_Y_START - 7 )
|
||||
#define GAMEMODE_NAME_HEIGHT 30
|
||||
#define GAMEMODE_NAME_SIZE GAMEMODE_IMAGE_WIDTH GAMEMODE_NAME_HEIGHT
|
||||
|
||||
#define GAMEMODE_IMAGE_X GAMEMODE_NAME_X
|
||||
#define GAMEMODE_IMAGE_Y (GAMEMODE_NAME_Y + GAMEMODE_NAME_HEIGHT + 15)
|
||||
#define GAMEMODE_IMAGE_ASPECT_RATIO 1.0
|
||||
#define GAMEMODE_IMAGE_WIDTH 180
|
||||
#define GAMEMODE_IMAGE_HEIGHT (GAMEMODE_IMAGE_WIDTH * GAMEMODE_IMAGE_ASPECT_RATIO)
|
||||
#define GAMEMODE_IMAGE_SIZE GAMEMODE_IMAGE_WIDTH GAMEMODE_IMAGE_HEIGHT
|
||||
|
||||
#define GAMEMODE_DESC_X GAMEMODE_NAME_X
|
||||
#define GAMEMODE_DESC_Y (GAMEMODE_IMAGE_Y + GAMEMODE_IMAGE_HEIGHT + 15)
|
||||
#define GAMEMODE_DESC_SIZE GAMEMODE_IMAGE_WIDTH 60
|
||||
|
||||
#undef DEFAULT_SLIDE_IN_SPEED
|
||||
#define DEFAULT_SLIDE_IN_SPEED 180
|
||||
|
||||
#undef DEFAULT_SLIDE_OUT_SPEED
|
||||
#define DEFAULT_SLIDE_OUT_SPEED 180
|
||||
|
||||
#undef ON_ESC
|
||||
#define ON_ESC \
|
||||
deactivateBlur; \
|
||||
play uin_navigation_menu_lg_close; \
|
||||
close self;
|
||||
|
||||
menuDef
|
||||
{
|
||||
name select_game_mode
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_FILLED
|
||||
soundloop MENU_MUSIC
|
||||
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
|
||||
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED
|
||||
openSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
|
||||
onOpen
|
||||
{
|
||||
activateBlur;
|
||||
play uin_navigation_menu_lg_open;
|
||||
setdvar invite_visible "0";
|
||||
setDvar ui_preview dvarString( ui_gametype );
|
||||
setFocus gamemode_selection;
|
||||
execNow refreshFeederSelection gamemode_selection;
|
||||
execNow movefeeder ( GetGamemodeIndexByName( gamemode_selection, tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_gametype ), 1 ) ) ) gamemode_selection;
|
||||
}
|
||||
onFocus { }
|
||||
onClose
|
||||
{
|
||||
setdvar invite_visible "1";
|
||||
}
|
||||
onESC
|
||||
{
|
||||
ON_ESC
|
||||
}
|
||||
|
||||
FRAME_DEFAULT
|
||||
|
||||
FRAME_TITLE_DEFAULT( "@MPUI_CHANGE_GAME_MODE_CAPS", 1 )
|
||||
|
||||
#define GAME_HC_TDM_HACK ( dvarInt( "xblive_basictraining" ) && dvarString( ui_preview ) == "hc_tdm" )
|
||||
#define GAME_DESC_VIS_ARG ( dvarInt( "xblive_basictraining" ) || dvarBool( splitscreen ) || dvarBool( systemlink ) || getFeederData( "gamemode_selection", "selection" ) != 0 )
|
||||
#define GAMETYPE_IMAGE tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_preview ), 3 )
|
||||
#define GAMEMODE tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_preview ), 1 )
|
||||
#define GAMEMODE_DESC tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_preview ), 2 )
|
||||
|
||||
#define GAMEMODE_DESC_DISPLAY( titleText, imageMat, descText, visArg ) \
|
||||
PREPROC_TEXT_DRAW_ALL( GAMEMODE_NAME_X GAMEMODE_NAME_Y GAMEMODE_NAME_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
|
||||
titleText, \
|
||||
TEXTSIZE_TITLE, 0, 0, ITEM_ALIGN_TOP_CENTER, 1 1 1 1, UI_FONT_EXTRABIG, ITEM_TEXTSTYLE_NORMAL, \
|
||||
when( visArg );, ; ) \
|
||||
PREPROC_SHADER_DRAW_VIS_EX( GAMEMODE_IMAGE_X GAMEMODE_IMAGE_Y GAMEMODE_IMAGE_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, \
|
||||
imageMat, 1 1 1 1, \
|
||||
when( visArg );, \
|
||||
; ) \
|
||||
PREPROC_TEXT_DRAW_VIS_EX( GAMEMODE_DESC_X GAMEMODE_DESC_Y GAMEMODE_DESC_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
|
||||
descText, \
|
||||
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_CENTER, 1 1 1 1, \
|
||||
when( visArg );, autowrapped )
|
||||
|
||||
GAMEMODE_DESC_DISPLAY( "@" + GAMEMODE, GAMETYPE_IMAGE, "@" + GAMEMODE_DESC, GAME_DESC_VIS_ARG && !GAME_HC_TDM_HACK )
|
||||
GAMEMODE_DESC_DISPLAY( "@MPUI_BASIC_TRAINING_HC_TDM", GAMETYPE_IMAGE, "@" + GAMEMODE_DESC, GAME_HC_TDM_HACK )
|
||||
GAMEMODE_DESC_DISPLAY( "@CUSTOM_CUSTOM_GAME_MODE_CAPS", "playlist_custom", "@CUSTOM_SELECT_FROM_FILESHARE_DESC", !GAME_DESC_VIS_ARG && !GAME_HC_TDM_HACK )
|
||||
|
||||
#define RESET_CUSTOM_GAMEMODE_IF_CHANGED \
|
||||
if( dvarString( "ui_preview" ) != dvarString( "ui_gametype" ) ) \
|
||||
{ \
|
||||
execNow "resetCustomGametype"; \
|
||||
}
|
||||
|
||||
// gametype selection ===========================================
|
||||
itemDef
|
||||
{
|
||||
name gamemode_selection
|
||||
type ITEM_TYPE_LISTBOX
|
||||
feeder FEEDER_GAMETYPES_BASE
|
||||
rect (FRAME_CHOICE_X_START-1) ( FRAME_CHOICE_Y_START - 3 ) FRAME_BUTTON_WIDTH 308 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
elementwidth 30
|
||||
elementheight 19
|
||||
noscrollbars
|
||||
noBlinkingHighlight
|
||||
textfont CHOICE_TEXTFONT
|
||||
textscale CHOICE_TEXTSIZE
|
||||
forecolor CHOICE_TEXTCOLOR
|
||||
focusColor COLOR_TITLE
|
||||
disablecolor FRAME_GREY_RGB 1
|
||||
textstyle ITEM_TEXTSTYLE_NORMAL
|
||||
modal
|
||||
visible 1
|
||||
// x y w h len horzAlign vertAlign
|
||||
userarea 4 0 0 (FRAME_BUTTON_WIDTH+1) 19 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* BACKGROUND */
|
||||
17 0 FRAME_BUTTON_WIDTH 19 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* NAME */
|
||||
0 1 17 18 16 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* A_BUTTON */
|
||||
(FRAME_BUTTON_WIDTH-18) 2 14 14 0 ITEM_ALIGN_CENTER ITEM_ALIGN_MIDDLE /* CUSTOMIZED ICON */
|
||||
onfocus
|
||||
{
|
||||
play CHOICE_FOCUS_SOUND;
|
||||
}
|
||||
doubleclick
|
||||
{
|
||||
if( !GAME_DESC_VIS_ARG )
|
||||
{
|
||||
open "custom_select_from_fileshare";
|
||||
}
|
||||
else
|
||||
{
|
||||
RESET_CUSTOM_GAMEMODE_IF_CHANGED
|
||||
setDvar ui_gametype dvarString( ui_preview );
|
||||
play CHOICE_ACTION_SOUND;
|
||||
execNow "xupdatepartystate";
|
||||
deactivateBlur;
|
||||
close self;
|
||||
}
|
||||
}
|
||||
onListboxSelectionChange { play CHOICE_FOCUS_SOUND; }
|
||||
}
|
||||
|
||||
CUSTOM_MODE_CUSTOMIZED_STAR( FRAME_CHOICE_X_START, ( FRAME_DEFAULT_HEIGHT/2 ) - 70, dvarInt( customGameMode ) )
|
||||
|
||||
#ifdef PC
|
||||
#define BUTTON_SPACING 20
|
||||
#define RESET_BUTTON_OFFSET ( getTextWidth( locString( "@PLATFORM_BACK" ), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) + 8 + BUTTON_SPACING )
|
||||
|
||||
FRAME_BACK_BUTTON_DEFAULT_ACTION( ON_ESC )
|
||||
FRAME_BUTTON_PC_LEFT_OFFSET( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, RESET_BUTTON_OFFSET, "@PLATFORM_RESET_TO_DEFAULT",
|
||||
open popup_custom_confirm_revert;, when( dvarBool( customGameMode ) ) )
|
||||
#else //PC
|
||||
FRAME_BACK_BUTTON_DEFAULT
|
||||
CUSTOM_MODE_RESET_TO_DEFAULT_BUTTON( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, -76, open popup_custom_confirm_revert;, dvarBool( customGameMode ) )
|
||||
#endif //PC
|
||||
|
||||
#include "ui/safearea.menu"
|
||||
}
|
||||
|
||||
#define MAPSELECT_NAME_X 20
|
||||
#define MAPSELECT_NAME_Y (FRAME_CHOICE_Y_START-7)
|
||||
#define MAPSELECT_NAME_HEIGHT 30
|
||||
#define MAPSELECT_NAME_SIZE MAPSELECT_IMAGE_WIDTH MAPSELECT_NAME_HEIGHT
|
||||
|
||||
#define MAPSELECT_IMAGE_X MAPSELECT_NAME_X
|
||||
#define MAPSELECT_IMAGE_Y (MAPSELECT_NAME_Y + MAPSELECT_NAME_HEIGHT + 5)
|
||||
#define MAPSELECT_IMAGE_ASPECT_RATIO 0.675
|
||||
#define MAPSELECT_IMAGE_WIDTH 224
|
||||
#define MAPSELECT_IMAGE_HEIGHT (MAPSELECT_IMAGE_WIDTH * MAPSELECT_IMAGE_ASPECT_RATIO)
|
||||
#define MAPSELECT_IMAGE_SIZE MAPSELECT_IMAGE_WIDTH MAPSELECT_IMAGE_HEIGHT
|
||||
|
||||
#define MAPSELECT_DESC_TITLE_HEIGHT 15
|
||||
#define MAPSELECT_DESC_TITLE_SIZE MAPSELECT_IMAGE_WIDTH MAPSELECT_DESC_TITLE_HEIGHT
|
||||
#define MAPSELECT_DESC_X MAPSELECT_NAME_X
|
||||
#define MAPSELECT_DESC_Y (MAPSELECT_IMAGE_Y + MAPSELECT_IMAGE_HEIGHT + 10 )
|
||||
#define MAPSELECT_DESC_HEIGHT 50
|
||||
#define MAPSELECT_DESC_SIZE MAPSELECT_IMAGE_WIDTH MAPSELECT_DESC_HEIGHT
|
||||
|
||||
#define MAPSELECT_SIZE_X MAPSELECT_NAME_X
|
||||
#define MAPSELECT_SIZE_Y (MAPSELECT_DESC_Y+MAPSELECT_DESC_TITLE_HEIGHT+MAPSELECT_DESC_HEIGHT)
|
||||
#define MAPSELECT_SIZE_SIZE MAPSELECT_IMAGE_WIDTH MAPSELECT_DESC_HEIGHT
|
||||
|
||||
#define SWITCH_MAP_LIST_ACTION \
|
||||
if( dvarBool( "dlc2" ) || dvarBool( "dlc3" ) || dvarBool( "dlc4" ) ) \
|
||||
{ \
|
||||
if( dvarBool( ui_showDLCMaps ) ) \
|
||||
{ \
|
||||
setDvar ui_showDLCMaps 0; \
|
||||
execNow movefeeder 0 map_selection; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
setDvar ui_showDLCMaps 1; \
|
||||
execNow movefeeder 0 map_selection; \
|
||||
} \
|
||||
}
|
||||
|
||||
#define SWITCH_TO_MAPS_ACTION \
|
||||
setDvar ui_showDLCMaps 0; \
|
||||
execNow movefeeder 0 map_selection;
|
||||
|
||||
#define SWITCH_TO_DLC_ACTION \
|
||||
setDvar ui_showDLCMaps 1; \
|
||||
execNow movefeeder 0 map_selection;
|
||||
|
||||
#undef ON_ESC
|
||||
#define ON_ESC \
|
||||
deactivateBlur; \
|
||||
play uin_navigation_menu_lg_close; \
|
||||
close self; \
|
||||
setDvar settings_map_selected 0;
|
||||
|
||||
#define CHOICE_TAB_TEXTSIZE TEXTSIZE_SMALL
|
||||
#define TAB_1_TEXT (locString( "@MPUI_MAPS_CAPS" ))
|
||||
#define TAB_2_TEXT (locString( "@MPUI_DLC_MAPS_CAPS" ))
|
||||
|
||||
#define TAB_BG_PAD 5
|
||||
#define TAB_1_WIDTH ( getTextWidth( TAB_1_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
|
||||
#define TAB_2_WIDTH ( getTextWidth( TAB_2_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
|
||||
#define TAB_HEIGHT 15
|
||||
|
||||
#define MAP_TAB_1_X NEW_FRAME_CHOICE_X_START
|
||||
#define MAP_TAB_2_X ( MAP_TAB_1_X + TAB_1_WIDTH )
|
||||
|
||||
#define MAP_TAB_Y ( ( -NEW_FRAME_DEFAULT_HEIGHT / 2 ) + NEW_FRAME_HEADER_HEIGHT - TAB_HEIGHT )
|
||||
|
||||
#define MAP_TAB_HEADER( visArg ) \
|
||||
/* highlighted header */ \
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_TAB_1_X, \
|
||||
MAP_TAB_Y, \
|
||||
TAB_1_WIDTH, \
|
||||
TAB_HEIGHT, \
|
||||
HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, \
|
||||
TAB_1_TEXT, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
|
||||
NEW_FRAME_ORANGE_RGB 1, when( visArg && dvarBool( ui_showDLCMaps ) == 0 ), ; ) \
|
||||
/* non highlighted header */ \
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_TAB_1_X, \
|
||||
MAP_TAB_Y, \
|
||||
TAB_1_WIDTH, \
|
||||
TAB_HEIGHT, \
|
||||
HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, \
|
||||
TAB_1_TEXT, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
|
||||
NEW_FRAME_GRAY_TEXT_COLOR, when( visArg && dvarBool( ui_showDLCMaps ) == 1 ), TAB_MOUSEOVER_HIGHLIGHT; )
|
||||
|
||||
#define DLC_TAB_HEADER( visArg ) \
|
||||
/* highlighted header */ \
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_TAB_2_X, \
|
||||
MAP_TAB_Y, \
|
||||
TAB_2_WIDTH, \
|
||||
TAB_HEIGHT, \
|
||||
HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, \
|
||||
TAB_2_TEXT, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
|
||||
NEW_FRAME_ORANGE_RGB 1, when( visArg && dvarBool( ui_showDLCMaps ) == 1 ), ; ) \
|
||||
/* non highlighted header */ \
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_TAB_2_X, \
|
||||
MAP_TAB_Y, \
|
||||
TAB_2_WIDTH, \
|
||||
TAB_HEIGHT, \
|
||||
HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, \
|
||||
TAB_2_TEXT, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
|
||||
NEW_FRAME_GRAY_TEXT_COLOR, when( visArg && dvarBool( ui_showDLCMaps ) == 0 ), TAB_MOUSEOVER_HIGHLIGHT; )
|
||||
|
||||
#define MAP_TAB_BG( px, pw, visArg ) \
|
||||
itemDef \
|
||||
{ \
|
||||
style WINDOW_STYLE_SHADER_FRAMED \
|
||||
frame 16 0.2 FRAME_OPEN_BOTTOM \
|
||||
rect 0 MAP_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \
|
||||
exp rect X( px ) \
|
||||
exp rect W( pw ) \
|
||||
background "menu_mp_tab_frame_inner" \
|
||||
forecolor 1 1 1 1 \
|
||||
visible when( visArg ) \
|
||||
decoration \
|
||||
}
|
||||
|
||||
#define MAP_TAB_BUTTON( px, pw, actionArg, visArg ) \
|
||||
itemDef \
|
||||
{ \
|
||||
type ITEM_TYPE_BUTTON_NO_TEXT \
|
||||
rect 0 MAP_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \
|
||||
exp rect X( px ) \
|
||||
exp rect W( pw ) \
|
||||
visible when( visArg ) \
|
||||
mouseenter { play CHOICE_FOCUS_SOUND; } \
|
||||
onFocus \
|
||||
{ \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
} \
|
||||
action \
|
||||
{ \
|
||||
play CHOICE_ACTION_SOUND; \
|
||||
actionArg; \
|
||||
} \
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
name select_map
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_FILLED
|
||||
soundloop MENU_MUSIC
|
||||
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
|
||||
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED
|
||||
openSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
|
||||
onOpen
|
||||
{
|
||||
activateBlur;
|
||||
play uin_navigation_menu_lg_open;
|
||||
setdvar invite_visible "0";
|
||||
setDvar ui_preview dvarString( ui_mapname );
|
||||
setDvar settings_map_selected 1;
|
||||
setFocus map_selection;
|
||||
setDvar ui_showDLCMaps 0;
|
||||
execNow movefeeder ( GetMapIndexByName( map_selection, tableLookup( "mp/mapsTable.csv", 0, dvarString( ui_mapname ) , 3 ) ) ) map_selection;
|
||||
}
|
||||
onFocus { }
|
||||
onClose
|
||||
{
|
||||
deactivateBlur;
|
||||
setdvar invite_visible "1";
|
||||
}
|
||||
onESC
|
||||
{
|
||||
ON_ESC
|
||||
}
|
||||
execKeyInt K_LEFTARROW
|
||||
{
|
||||
SWITCH_MAP_LIST_ACTION
|
||||
}
|
||||
execKeyInt K_RIGHTARROW
|
||||
{
|
||||
SWITCH_MAP_LIST_ACTION
|
||||
}
|
||||
|
||||
FRAME_DEFAULT
|
||||
|
||||
FRAME_TITLE_DEFAULT( "@MPUI_CHANGE_MAP_CAPS", 1 )
|
||||
|
||||
#define MAPS_TAB_VISIBLE ( 1 )
|
||||
#define DLC_TAB_VISIBLE ( dvarBool( "dlc2" ) || dvarBool( "dlc3" ) || dvarBool( "dlc4" ) )
|
||||
|
||||
MAP_TAB_BG( MAP_TAB_1_X, TAB_1_WIDTH, MAPS_TAB_VISIBLE )
|
||||
MAP_TAB_HEADER( MAPS_TAB_VISIBLE )
|
||||
MAP_TAB_BUTTON( MAP_TAB_1_X, TAB_1_WIDTH, SWITCH_TO_MAPS_ACTION, MAPS_TAB_VISIBLE )
|
||||
|
||||
MAP_TAB_BG( MAP_TAB_2_X, TAB_2_WIDTH, DLC_TAB_VISIBLE )
|
||||
DLC_TAB_HEADER( DLC_TAB_VISIBLE )
|
||||
MAP_TAB_BUTTON( MAP_TAB_2_X, TAB_2_WIDTH, SWITCH_TO_DLC_ACTION, DLC_TAB_VISIBLE )
|
||||
|
||||
#define MAP_IMAGE tableLookup( "mp/mapsTable.csv", 0, dvarString( ui_preview ) , 0 )
|
||||
#define MAP_NAME tableLookup( "mp/mapsTable.csv", 0, dvarString( ui_preview ) , 3 )
|
||||
#define MAP_SIZE tableLookup( "mp/mapsTable.csv", 0, dvarString( ui_preview ) , 8 )
|
||||
#define MAP_DESC tableLookup( "mp/mapsTable.csv", 0, dvarString( ui_preview ) , 6 )
|
||||
|
||||
#define MAP_SELECT_DISPLAY( mapName, mapImage, mapSize, mapDesc, visArg ) \
|
||||
PREPROC_TEXT_DRAW_ALL( MAPSELECT_NAME_X MAPSELECT_NAME_Y MAPSELECT_NAME_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
|
||||
mapName, \
|
||||
TEXTSIZE_TITLE, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, UI_FONT_EXTRABIG, ITEM_TEXTSTYLE_NORMAL, \
|
||||
when( visArg );, ; ) \
|
||||
itemDef \
|
||||
{ \
|
||||
style WINDOW_STYLE_SHADER_STREAMED \
|
||||
type ITEM_TYPE_IMAGE \
|
||||
rect MAPSELECT_IMAGE_X MAPSELECT_IMAGE_Y MAPSELECT_IMAGE_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \
|
||||
forecolor 1 1 1 1 \
|
||||
exp material( mapImage ) \
|
||||
visible when( visArg ) \
|
||||
decoration \
|
||||
} \
|
||||
PREPROC_TEXT_DRAW_VIS( MAPSELECT_DESC_X MAPSELECT_DESC_Y MAPSELECT_DESC_TITLE_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
|
||||
"@MPUI_DESCRIPTION_CAPS", \
|
||||
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 0 0 0 0.8, \
|
||||
when( visArg ); ) \
|
||||
PREPROC_TEXT_DRAW_VIS_EX( MAPSELECT_DESC_X (MAPSELECT_DESC_Y+15) MAPSELECT_DESC_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
|
||||
mapDesc, \
|
||||
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, \
|
||||
when( visArg );, autowrapped ) \
|
||||
PREPROC_TEXT_DRAW_VIS( MAPSELECT_SIZE_X MAPSELECT_SIZE_Y MAPSELECT_DESC_TITLE_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
|
||||
"@MPUI_MAP_SIZE_CAPS", \
|
||||
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 0 0 0 0.8, \
|
||||
when( visArg ); ) \
|
||||
PREPROC_TEXT_DRAW_VIS( MAPSELECT_SIZE_X (MAPSELECT_SIZE_Y+15) MAPSELECT_SIZE_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
|
||||
mapSize, \
|
||||
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, \
|
||||
when( visArg ); )
|
||||
|
||||
MAP_SELECT_DISPLAY( "@" + MAP_NAME + "_CAPS", "menu_" + dvarString( ui_preview ) + "_map_select_final", "@MPUI_MAPSIZE_" + MAP_SIZE, "@" + MAP_DESC, 1 )
|
||||
|
||||
// map selection ===========================================
|
||||
itemDef
|
||||
{
|
||||
name map_selection
|
||||
type ITEM_TYPE_LISTBOX
|
||||
feeder FEEDER_MAPS
|
||||
rect (FRAME_CHOICE_X_START-1) (FRAME_CHOICE_Y_START-3) FRAME_BUTTON_WIDTH 308 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
elementwidth 30
|
||||
elementheight 19
|
||||
noscrollbars
|
||||
noBlinkingHighlight
|
||||
textfont CHOICE_TEXTFONT
|
||||
textscale CHOICE_TEXTSIZE
|
||||
forecolor CHOICE_TEXTCOLOR
|
||||
focusColor COLOR_TITLE
|
||||
disablecolor FRAME_GREY_RGB 1
|
||||
textstyle ITEM_TEXTSTYLE_NORMAL
|
||||
modal
|
||||
visible when( dvarBool( settings_map_selected ) )
|
||||
/* x y w h len horzAlign vertAlign */
|
||||
userarea 3 0 0 (FRAME_BUTTON_WIDTH+1) 19 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* FEEDER_MAPSELECTION_COLUMN_BACKGROUND */
|
||||
17 0 FRAME_BUTTON_WIDTH 19 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* FEEDER_MAPSELECTION_COLUMN_NAME */
|
||||
0 1 17 18 16 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* FEEDER_MAPSELECTION_COLUMN_A_BUTTON */
|
||||
onfocus { play CHOICE_FOCUS_SOUND; }
|
||||
onListboxSelectionChange { play CHOICE_FOCUS_SOUND; }
|
||||
doubleclick
|
||||
{
|
||||
setDvar ui_mapname dvarString( ui_preview );
|
||||
play CHOICE_ACTION_SOUND;
|
||||
execNow "xupdatepartystate";
|
||||
deactivateBlur;
|
||||
close self;
|
||||
}
|
||||
execKeyInt DPAD_LEFT
|
||||
{
|
||||
SWITCH_MAP_LIST_ACTION
|
||||
}
|
||||
execKeyInt DPAD_RIGHT
|
||||
{
|
||||
SWITCH_MAP_LIST_ACTION
|
||||
}
|
||||
execKeyInt APAD_LEFT
|
||||
{
|
||||
SWITCH_MAP_LIST_ACTION
|
||||
}
|
||||
execKeyInt APAD_RIGHT
|
||||
{
|
||||
SWITCH_MAP_LIST_ACTION
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef PC
|
||||
FRAME_BACK_BUTTON_DEFAULT_ACTION( ON_ESC )
|
||||
#else //#ifdef PC
|
||||
FRAME_BACK_BUTTON_DEFAULT
|
||||
#endif //#ifdef PC
|
||||
|
||||
#include "ui/safearea.menu"
|
||||
}
|
||||
|
||||
#include "ui_mp/popupstyle.inc"
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( menu_game_mode_upload_confirm, activateblur; execNow raiseFeederEvent Populate;, deactivateblur; close self;, 1 )
|
||||
onClose
|
||||
{
|
||||
deactivateblur;
|
||||
play CHOICE_FOCUS_SOUND;
|
||||
execNow raiseFeederEvent Clear;
|
||||
}
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_FILESHARE_REPLACECONFIRM", 1 )
|
||||
|
||||
itemDef
|
||||
{
|
||||
DYNAMIC_MENU_COMMON_FIELDS
|
||||
backgroundItemListbox "white"
|
||||
rect CHOICE_X_START CHOICE_Y_START CHOICE_SIZE_X 400
|
||||
menuItemsDef
|
||||
{
|
||||
maxRows 4
|
||||
DYNAMIC_MENU_COMMON_COLUMNS
|
||||
menuColDef
|
||||
{
|
||||
type MENU_ITEM_TYPE_LOC_TEXT
|
||||
rect 0 0 50 CHOICE_SIZE_Y ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE
|
||||
maxChars 50
|
||||
}
|
||||
}
|
||||
onEvent Yes
|
||||
{
|
||||
open menu_game_mode_upload_save;
|
||||
close self;
|
||||
}
|
||||
onEvent No { close self; }
|
||||
onEvent Clear { execNow clearFeeder; }
|
||||
onEvent Populate {
|
||||
execNow addToFeeder Yes MENU_YES;
|
||||
execNow addToFeeder No MENU_CANCEL;
|
||||
}
|
||||
onfocus { play CHOICE_FOCUS_SOUND; }
|
||||
onListboxSelectionChange { play CHOICE_FOCUS_SOUND; }
|
||||
doubleclick { play CHOICE_FOCUS_SOUND;
|
||||
execNow raiseFeederEvent; }
|
||||
}
|
||||
}
|
||||
|
||||
// Redefinitions for MEDIUM_POPUP_SETUP popups
|
||||
#undef POPUP_WIDTH
|
||||
#define POPUP_WIDTH MEDIUM_POPUP_WIDTH
|
||||
#undef POPUP_HEIGHT
|
||||
#define POPUP_HEIGHT MEDIUM_POPUP_HEIGHT
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X (POPUP_WIDTH-(POPUP_SIDE_PAD*2))
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START POPUP_Y_START_TOP
|
||||
#undef PLAYER_INFO_ALIGN
|
||||
#define PLAYER_INFO_ALIGN // Purposely set to nothing. The popup setup macro sets the alignment. If items within it set their own aligment, they end up offset incorrectly.
|
||||
#undef PLAYER_INFO_X_START
|
||||
#define PLAYER_INFO_X_START( frameWidth ) ( frameWidth - PLAYER_INFO_WIDTH - PLAYER_INFO_PAD )
|
||||
#undef PLAYER_INFO_Y_START
|
||||
#define PLAYER_INFO_Y_START( frameHeight ) ( PLAYER_INFO_PAD * 2 )
|
||||
#undef BG_BACKCOLOR
|
||||
#define BG_BACKCOLOR POPUP_BACKCOLOR
|
||||
// Redefinitions for MEDIUM_POPUP_SETUP popups
|
||||
|
||||
#define GAME_MODE_FILESHARE_UPLOAD_ACTION \
|
||||
execNow uploadCustomGametype ( getFeederData( "menu_game_mode_upload", "fileShareSlots", "slot" ) ); \
|
||||
setdvar customGameMode 1; \
|
||||
execNow "xupdatepartystate";
|
||||
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( menu_game_mode_upload_save, activateblur;, deactivateblur; close self;, POPUP_GLOW_WHITE, 0, 1 )
|
||||
onClose
|
||||
{
|
||||
deactivateblur;
|
||||
play CHOICE_FOCUS_SOUND;
|
||||
}
|
||||
MEDIUM_POPUP_TITLE_VIS( "@MENU_SAVE_INFORMATION_CAPS", 1 )
|
||||
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_ORIGIN( 1 ) CHOICE_SIZE_X CHOICE_SIZE_Y HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
|
||||
locString( "@MPUI_TITLE" )+" :",
|
||||
TEXTSIZE_SMALL, 0, 0, CHOICE_TEXTALIGN, 1 1 1 1,
|
||||
1 )
|
||||
FRAME_CHOICE_BUTTON( 2, dvarString(fsSelectedFileName), execNow demo_keyboard fileshareFileName; )
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_ORIGIN( 3 ) CHOICE_SIZE_X CHOICE_SIZE_Y HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
|
||||
locString( "@MPUI_DESCRIPTION" )+" :",
|
||||
TEXTSIZE_SMALL, 0, 0, CHOICE_TEXTALIGN, 1 1 1 1,
|
||||
1 )
|
||||
FRAME_CHOICE_BUTTON( 4, dvarString(fsSelectedFileDescription), execNow demo_keyboard fileshareFileDescription; )
|
||||
FRAME_CHOICE_BUTTON( 6, "@MENU_CONTINUE", GAME_MODE_FILESHARE_UPLOAD_ACTION; close self; close menu_game_mode_upload; )
|
||||
MEDIUM_POPUP_BACK_BUTTON
|
||||
}
|
@ -1,208 +0,0 @@
|
||||
// CONSOLE HUD - MP
|
||||
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/hud_gametypes.inc"
|
||||
#include "ui_mp/choices_setup_teams.menu"
|
||||
|
||||
#define BAR_START_X 42
|
||||
#define BAR_START_Y -42
|
||||
#define BAR_HEIGHT 39
|
||||
#define BAR_WIDTH 143
|
||||
#define BAR_HEIGHT_TOP 20
|
||||
#define BAR_HEIGHT_BOTTOM 16
|
||||
|
||||
#define BAR_PERCENT_PLAYER ( max( player( score ), 0 ) / dvarInt( "ui_scorelimit" ) )
|
||||
#define BAR_PRECENT_BEST_OTHER_PLAYER ( Select( player( score ) == scoreatrank( 1 ), (max( scoreatrank( 2 ), 0 ) / dvarInt( "ui_scorelimit" )), (max( scoreatrank( 1 ), 0 ) / dvarInt( "ui_scorelimit" )) ) )
|
||||
|
||||
#define BEST_OTHER_PLAYER_SCORE ( Select( player( score ) == scoreatrank( 1 ), scoreatrank( 2 ), scoreatrank( 1 ) ) )
|
||||
|
||||
#define FSM_VISIBILITY ( isVisibilityBitSet( BIT_SELECTING_LOCATION ) && !isVisibilityBitSet( BIT_SPECTATING_CLIENT ) && !isVisibilityBitSet( BIT_SCOREBOARD_OPEN ) )
|
||||
|
||||
{
|
||||
menuDef
|
||||
{
|
||||
name "scorebars_ffa_background"
|
||||
rect BOTTOM_RECT_X BOTTOM_RECT_Y 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
exp rect Y( BOTTOM_RECT_Y - (ONLINEGAME * ONLINEGAME_OFFSET) );
|
||||
fullScreen 0
|
||||
visible when( !FSM_VISIBILITY )
|
||||
visibilityBits bits( BIT_HUD_VISIBLE HUD_VISIBILITY !BIT_IN_KILLCAM SHOULD_DISPLAY_SCOREBAR !BIT_UI_ACTIVE !BIT_IN_GUIDED_MISSILE !BIT_IN_GUIDED_MISSILE_STATIC )
|
||||
|
||||
|
||||
#define BG_OFFSET_X (-15)
|
||||
#define BG_OFFSET_Y (-5)
|
||||
#define BG_START_X (BAR_START_X+BG_OFFSET_X)
|
||||
#define BG_START_Y (BAR_START_Y+BG_OFFSET_Y)
|
||||
|
||||
// score background
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect BG_START_X BG_START_Y 187 46 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp material( "hud_frame_faction_fade" );
|
||||
forecolor 1 1 1 0.5
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect (BAR_START_X-69) (BG_START_Y-14) 240 59 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp material( "hud_frame_faction_lines" );
|
||||
forecolor 1 1 1 0.4
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
|
||||
#define PROGRESS_OFFSET_X 47
|
||||
|
||||
// Player progress bar
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect BAR_START_X -42 70 BAR_HEIGHT_TOP HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp rect W( PROGRESS_OFFSET_X + (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PERCENT_PLAYER );
|
||||
exp material( "hud_score_progress" );
|
||||
forecolor 0.42 0.68 0.46 0.8
|
||||
visible when( dvarInt( "ui_scorelimit" ) != 0 && player( score ) > 0 )
|
||||
decoration
|
||||
}
|
||||
|
||||
// Other player progress bar
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect BAR_START_X -20 70 BAR_HEIGHT_BOTTOM HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp rect W( PROGRESS_OFFSET_X + (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PRECENT_BEST_OTHER_PLAYER );
|
||||
exp material( "hud_score_progress" );
|
||||
forecolor 0.73 0.29 0.19 0.8
|
||||
visible when( dvarInt( "ui_scorelimit" ) != 0 && BEST_OTHER_PLAYER_SCORE > 0 )
|
||||
decoration
|
||||
}
|
||||
|
||||
// FACTION ICONS
|
||||
#define FACTION_ICON_WIDTH 64
|
||||
#define FACTION_ICON_HEIGHT FACTION_ICON_WIDTH
|
||||
#define FACTION_BG_WIDTH 92
|
||||
#define FACTION_BG_HEIGHT FACTION_BG_WIDTH
|
||||
#define FACTION_BG_X_START (BAR_START_X-(FACTION_BG_WIDTH/2))
|
||||
#define FACTION_BG_Y_START (BAR_START_Y-(FACTION_BG_HEIGHT/2))
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect FACTION_BG_X_START FACTION_BG_Y_START FACTION_BG_WIDTH FACTION_BG_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp material( "hud_faction_back_light" );
|
||||
forecolor 1 1 1 0.25
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect FACTION_BG_X_START FACTION_BG_Y_START FACTION_BG_WIDTH FACTION_BG_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp material( "hud_faction_backing" );
|
||||
forecolor 1 1 1 0.2
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect (FACTION_BG_X_START+9) (FACTION_BG_Y_START+20) FACTION_ICON_WIDTH FACTION_ICON_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
origin 5 -5
|
||||
exp material( dvarString( "g_TeamIcon_Allies" ) );
|
||||
visible when( TEAM_IS_MARINES );
|
||||
forecolor 1 1 1 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect (FACTION_BG_X_START+9) (FACTION_BG_Y_START+20) FACTION_ICON_WIDTH FACTION_ICON_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
origin 5 -5
|
||||
exp material( dvarString( "g_TeamIcon_Axis" ) );
|
||||
visible when( TEAM_IS_OPFOR );
|
||||
forecolor 1 1 1 1
|
||||
decoration
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#define SCORE_OFFSET_X (PROGRESS_OFFSET_X-12)
|
||||
#define SCORE_START_X (BAR_START_X+SCORE_OFFSET_X)
|
||||
#define SCORE_COLOR 1 1 1
|
||||
menuDef
|
||||
{
|
||||
name "scorebars_ffa_scores"
|
||||
rect BOTTOM_RECT_X BOTTOM_RECT_Y 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
exp rect Y( BOTTOM_RECT_Y - (ONLINEGAME * ONLINEGAME_OFFSET) );
|
||||
fullScreen 0
|
||||
visible when( !FSM_VISIBILITY )
|
||||
visibilityBits bits( BIT_HUD_VISIBLE SHOULD_DISPLAY_SCOREBAR !BIT_IN_KILLCAM !BIT_UI_ACTIVE !BIT_IN_GUIDED_MISSILE !BIT_IN_GUIDED_MISSILE_STATIC BIT_TEAM_FREE !BIT_IN_VEHICLE )
|
||||
|
||||
// draws Player score
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
rect SCORE_START_X -23 24 24 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp rect X( SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PERCENT_PLAYER ) );
|
||||
exp text( player( score ) );
|
||||
textfont UI_FONT_EXTRABIG
|
||||
textscale TEXTSIZE_LARGE
|
||||
textalign ITEM_ALIGN_CENTER
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
|
||||
forecolor SCORE_COLOR 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
// Top Arrow
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect SCORE_START_X -53 24 24 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp rect X( SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PERCENT_PLAYER ) );
|
||||
exp material( "hud_frame_arrow" );
|
||||
forecolor 1 1 1 0.8
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
#define OT_SCORE_START_X (SCORE_START_X+2)
|
||||
// OTHER Player score
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
rect (OT_SCORE_START_X-1) -7 20 20 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp rect X( OT_SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PRECENT_BEST_OTHER_PLAYER ) );
|
||||
exp text( BEST_OTHER_PLAYER_SCORE );
|
||||
textfont UI_FONT_EXTRABIG
|
||||
textscale TEXTSIZE_DEFAULT
|
||||
textalign ITEM_ALIGN_CENTER
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
|
||||
forecolor SCORE_COLOR 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
// Bottom Arrow
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect OT_SCORE_START_X -16 20 (-20) HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp rect X( OT_SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PRECENT_BEST_OTHER_PLAYER ) );
|
||||
exp material( "hud_frame_arrow" );
|
||||
forecolor 1 1 1 0.8
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,315 +0,0 @@
|
||||
// CONSOLE HUD - MP
|
||||
|
||||
#include "ui/menudef.h"
|
||||
#include "ui/framestyle.inc"
|
||||
#include "ui_mp/hud_gametypes.inc"
|
||||
|
||||
#define BAR_START_X 42
|
||||
#define BAR_START_Y -42
|
||||
#define BAR_HEIGHT 39
|
||||
#define BAR_WIDTH 143
|
||||
#define BAR_HEIGHT_TOP 20
|
||||
#define BAR_HEIGHT_BOTTOM 16
|
||||
|
||||
#define BAR_PERCENT_TEAM ( max( team( score ), 0 ) / dvarInt( "ui_scorelimit" ) )
|
||||
#define BAR_PRECENT_OTHERTEAM ( max( otherteam( score ), 0 ) / dvarInt( "ui_scorelimit" ) )
|
||||
|
||||
#define FSM_VISIBILITY ( isVisibilityBitSet( BIT_SELECTING_LOCATION ) && !isVisibilityBitSet( BIT_SPECTATING_CLIENT ) && !isVisibilityBitSet( BIT_SCOREBOARD_OPEN ) )
|
||||
|
||||
{
|
||||
menuDef
|
||||
{
|
||||
name "scorebars_team_background"
|
||||
rect BOTTOM_RECT_X BOTTOM_RECT_Y 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
exp rect Y( BOTTOM_RECT_Y - (ONLINEGAME * ONLINEGAME_OFFSET) );
|
||||
fullScreen 0
|
||||
visible when( !FSM_VISIBILITY )
|
||||
visibilityBits bits( BIT_HUD_VISIBLE !BIT_IN_KILLCAM !BIT_UI_ACTIVE HUD_VISIBILITY !BIT_IN_GUIDED_MISSILE !BIT_IN_GUIDED_MISSILE_STATIC SHOULD_DISPLAY_SCOREBAR )
|
||||
|
||||
#define BG_OFFSET_X (-15)
|
||||
#define BG_OFFSET_Y (-5)
|
||||
#define BG_START_X (BAR_START_X+BG_OFFSET_X)
|
||||
#define BG_START_Y (BAR_START_Y+BG_OFFSET_Y)
|
||||
|
||||
// score background
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect BG_START_X BG_START_Y 187 46 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp material( "hud_frame_faction_fade" );
|
||||
forecolor 1 1 1 0.5
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect (BAR_START_X-69) (BG_START_Y-14) 240 59 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp material( "hud_frame_faction_lines" );
|
||||
forecolor 1 1 1 0.4
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
|
||||
#define PROGRESS_OFFSET_X 47
|
||||
|
||||
// Player team progress bar
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect BAR_START_X -42 70 BAR_HEIGHT_TOP HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp rect W( PROGRESS_OFFSET_X + (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PERCENT_TEAM );
|
||||
exp material( "hud_score_progress" );
|
||||
forecolor 0.42 0.68 0.46 0.8
|
||||
visible when( dvarInt( "ui_scorelimit" ) != 0 && team( score ) > 0 )
|
||||
decoration
|
||||
}
|
||||
|
||||
// Other team progress bar
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect BAR_START_X -20 70 BAR_HEIGHT_BOTTOM HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp rect W( PROGRESS_OFFSET_X + (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PRECENT_OTHERTEAM );
|
||||
exp material( "hud_score_progress" );
|
||||
forecolor 0.73 0.29 0.19 0.8
|
||||
visible when( dvarInt( "ui_scorelimit" ) != 0 && otherteam( score ) > 0 )
|
||||
decoration
|
||||
}
|
||||
|
||||
// FACTION ICONS
|
||||
#define FACTION_ICON_WIDTH 64
|
||||
#define FACTION_ICON_HEIGHT FACTION_ICON_WIDTH
|
||||
#define FACTION_BG_WIDTH 92
|
||||
#define FACTION_BG_HEIGHT FACTION_BG_WIDTH
|
||||
#define FACTION_BG_X_START (BAR_START_X-(FACTION_BG_WIDTH/2))
|
||||
#define FACTION_BG_Y_START (BAR_START_Y-(FACTION_BG_HEIGHT/2))
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect FACTION_BG_X_START FACTION_BG_Y_START FACTION_BG_WIDTH FACTION_BG_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp material( "hud_faction_back_light" );
|
||||
forecolor 1 1 1 0.25
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect FACTION_BG_X_START FACTION_BG_Y_START FACTION_BG_WIDTH FACTION_BG_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp material( "hud_faction_backing" );
|
||||
forecolor 1 1 1 0.2
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect (FACTION_BG_X_START+9) (FACTION_BG_Y_START+20) FACTION_ICON_WIDTH FACTION_ICON_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
origin 5 -5
|
||||
exp material( dvarString( "g_TeamIcon_Allies" ) );
|
||||
visible when( team( name ) == "TEAM_ALLIES" );
|
||||
forecolor 1 1 1 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect (FACTION_BG_X_START+9) (FACTION_BG_Y_START+20) FACTION_ICON_WIDTH FACTION_ICON_HEIGHT HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
origin 5 -5
|
||||
exp material( dvarString( "g_TeamIcon_Axis" ) );
|
||||
visible when( team( name ) == "TEAM_AXIS" );
|
||||
forecolor 1 1 1 1
|
||||
decoration
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#define SCORE_OFFSET_X (PROGRESS_OFFSET_X-12)
|
||||
#define SCORE_START_X (BAR_START_X+SCORE_OFFSET_X)
|
||||
#define SCORE_COLOR 1 1 1
|
||||
menuDef
|
||||
{
|
||||
name "scorebars_team_scores"
|
||||
rect BOTTOM_RECT_X BOTTOM_RECT_Y 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
exp rect Y( BOTTOM_RECT_Y - (ONLINEGAME * ONLINEGAME_OFFSET) );
|
||||
fullScreen 0
|
||||
visible when( !FSM_VISIBILITY && ( isVisibilityBitSet( BIT_TEAM_ALLIES ) || isVisibilityBitSet( BIT_TEAM_AXIS ) ) );
|
||||
visibilityBits bits( BIT_HUD_VISIBLE !BIT_IN_KILLCAM !BIT_UI_ACTIVE HUD_VISIBILITY !BIT_IN_GUIDED_MISSILE !BIT_IN_GUIDED_MISSILE_STATIC SHOULD_DISPLAY_SCOREBAR )
|
||||
|
||||
// draws TEAM score
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
rect (SCORE_START_X-2) -23 24 24 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp rect X( SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PERCENT_TEAM ) );
|
||||
exp text( team( score ) );
|
||||
textfont UI_FONT_EXTRABIG
|
||||
textscale TEXTSIZE_LARGE
|
||||
textalign ITEM_ALIGN_CENTER
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
|
||||
forecolor SCORE_COLOR 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
// Top Arrow
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect SCORE_START_X -53 24 24 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp rect X( SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PERCENT_TEAM ) );
|
||||
exp material( "hud_frame_arrow" );
|
||||
forecolor 1 1 1 0.8
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
#define OT_SCORE_START_X (SCORE_START_X+2)
|
||||
// OTHER TEAM score
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
rect (OT_SCORE_START_X-2) -7 20 20 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp rect X( OT_SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PRECENT_OTHERTEAM ) );
|
||||
exp text( otherteam( score ) );
|
||||
textfont UI_FONT_EXTRABIG
|
||||
textscale TEXTSIZE_DEFAULT
|
||||
textalign ITEM_ALIGN_CENTER
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
|
||||
forecolor SCORE_COLOR 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
// Bottom Arrow
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect OT_SCORE_START_X -16 20 (-20) HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp rect X( OT_SCORE_START_X + ( (BAR_WIDTH-PROGRESS_OFFSET_X) * BAR_PRECENT_OTHERTEAM ) );
|
||||
exp material( "hud_frame_arrow" );
|
||||
forecolor 1 1 1 0.8
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
}
|
||||
|
||||
#define STATUS_TIME 5
|
||||
#define STATUS_TIME_MOD 30
|
||||
#define STATUS_FONT UI_FONT_EXTRABIG
|
||||
#define STATUS_TEXT_SCALE TEXTSIZE_DEFAULT
|
||||
#define STATUS_START_X (BAR_START_X+(FACTION_BG_WIDTH/2)-4)
|
||||
#define STATUS_START_Y (BAR_START_Y-2)
|
||||
// Score Bar
|
||||
menuDef
|
||||
{
|
||||
name "scorebar_game_status"
|
||||
rect BOTTOM_RECT_X BOTTOM_RECT_Y 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
exp rect Y( BOTTOM_RECT_Y - (ONLINEGAME * ONLINEGAME_OFFSET) );
|
||||
fullScreen 0
|
||||
visible when ( !FSM_VISIBILITY && ( (team( name ) == "TEAM_ALLIES" || team( name ) == "TEAM_AXIS") ) );
|
||||
visibilityBits bits( BIT_HUD_VISIBLE !BIT_UI_ACTIVE !BIT_BOMB_TIMER !BIT_BOMB_TIMER_A !BIT_BOMB_TIMER_B !BIT_DEMO_CAMERA_MODE_MOVIECAM !BIT_DEMO_ALL_GAME_HUD_HIDDEN !BIT_IN_KILLCAM HUD_VISIBILITY !BIT_IN_GUIDED_MISSILE !BIT_IN_GUIDED_MISSILE_STATIC !BIT_SCOREBOARD_OPEN )
|
||||
|
||||
#define IS_WINNING ( team( score ) > otherteam( score ) && ((timeLeft() / 1000) % STATUS_TIME_MOD > STATUS_TIME) )
|
||||
// winning highlight
|
||||
//itemDef
|
||||
//{
|
||||
// style WINDOW_STYLE_SHADER
|
||||
// type ITEM_TYPE_IMAGE
|
||||
// rect (STATUS_START_X-5) (BAR_START_Y-15) 16 16 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
// exp material( "hud_score_back" );
|
||||
// exp rect W( getTextWidth( locString( "@MENU_WINNING_CAPS" ), STATUS_FONT, STATUS_TEXT_SCALE )+10 );
|
||||
// forecolor 0.3 1 0.3 0.2
|
||||
// visible when( IS_WINNING );
|
||||
// decoration
|
||||
//}
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
rect STATUS_START_X STATUS_START_Y 1 1 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
text "@MENU_WINNING_CAPS"
|
||||
textfont STATUS_FONT
|
||||
textscale STATUS_TEXT_SCALE
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
|
||||
forecolor NEW_FRAME_GREEN_RGB 1
|
||||
visible when( IS_WINNING );
|
||||
decoration
|
||||
}
|
||||
#define IS_LOSING ( team( score ) < otherteam( score ) && ((timeLeft() / 1000) % STATUS_TIME_MOD > STATUS_TIME) )
|
||||
// losing highlight
|
||||
//itemDef
|
||||
//{
|
||||
// style WINDOW_STYLE_SHADER
|
||||
// type ITEM_TYPE_IMAGE
|
||||
// rect (STATUS_START_X-5) (BAR_START_Y-15) 16 16 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
// exp material( "hud_score_back" );
|
||||
// exp rect W( getTextWidth( locString( "@MENU_LOSING_CAPS" ), STATUS_FONT, STATUS_TEXT_SCALE )+10 );
|
||||
// forecolor 1 0.3 0.3 0.2
|
||||
// visible when( IS_LOSING );
|
||||
// decoration
|
||||
//}
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
rect STATUS_START_X STATUS_START_Y 1 1 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
text "@MENU_LOSING_CAPS"
|
||||
textfont STATUS_FONT
|
||||
textscale STATUS_TEXT_SCALE
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
|
||||
forecolor NEW_FRAME_RED_RGB 1
|
||||
visible when( IS_LOSING )
|
||||
decoration
|
||||
}
|
||||
#define IS_TIED ( team( score ) == otherteam( score ) && ((timeLeft() / 1000) % STATUS_TIME_MOD > STATUS_TIME) )
|
||||
// tied highlight
|
||||
//itemDef
|
||||
//{
|
||||
// style WINDOW_STYLE_SHADER
|
||||
// type ITEM_TYPE_IMAGE
|
||||
// rect (STATUS_START_X-3) (BAR_START_Y-15) 16 16 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
// exp material( "hud_score_back" );
|
||||
// exp rect W( getTextWidth( locString( "@MENU_TIED_CAPS" ), STATUS_FONT, STATUS_TEXT_SCALE )+8 );
|
||||
// forecolor 1 1 0.3 0.2
|
||||
// visible when( IS_TIED );
|
||||
// decoration
|
||||
//}
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
rect STATUS_START_X STATUS_START_Y 1 1 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
text "@MENU_TIED_CAPS"
|
||||
textfont STATUS_FONT
|
||||
textscale STATUS_TEXT_SCALE
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
|
||||
forecolor NEW_FRAME_YELLOW_RGB 1
|
||||
visible when( IS_TIED )
|
||||
decoration
|
||||
}
|
||||
#define SHOW_GAMETYPE ( ((timeLeft() / 1000) % STATUS_TIME_MOD <= STATUS_TIME ) )
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
rect STATUS_START_X STATUS_START_Y 1 1 HORIZONTAL_ALIGN_USER_LEFT VERTICAL_ALIGN_USER_BOTTOM
|
||||
exp text( toUpper( gameTypeName() ) );
|
||||
textfont STATUS_FONT
|
||||
textscale STATUS_TEXT_SCALE
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
|
||||
forecolor SCORE_COLOR 1
|
||||
visible when( SHOW_GAMETYPE )
|
||||
decoration
|
||||
}
|
||||
}
|
||||
}
|
@ -1,830 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
|
||||
#define BUTTON_BG_WIDTH 180
|
||||
#define BUTTON_BG_Y_START 5
|
||||
|
||||
#define CHOICE_X_START -258
|
||||
#define CHOICE_Y_START BUTTON_BG_Y_START + 35
|
||||
|
||||
#define CHOICE_GROUP "main"
|
||||
|
||||
#define FLYOUT_NONE 0
|
||||
#define FLYOUT_LIVE 1
|
||||
#define FLYOUT_OPERATIONS 2
|
||||
#define FLYOUT_THEATER 3
|
||||
|
||||
#include "ui_mp/menustyle.inc"
|
||||
#include "ui/choices_setup_common.menu"
|
||||
#include "ui_mp/friendslist.inc"
|
||||
#include "ui_mp/stats_info.inc"
|
||||
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X BUTTON_BG_WIDTH
|
||||
#undef CHOICE_TEXTSTYLE
|
||||
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
|
||||
#undef CHOICE_Y_SPACING
|
||||
#define CHOICE_Y_SPACING CHOICE_SIZE_Y
|
||||
|
||||
#undef CHOICE_HORIZONTAL_ALIGN
|
||||
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
|
||||
|
||||
#define FLYOUT_BG_COLOR 0 0 0 0.3
|
||||
|
||||
{
|
||||
assetGlobalDef
|
||||
{
|
||||
fadeClamp 1.0 // sets the fadeup alpha
|
||||
fadeCycle 1 // how often fade happens in milliseconds
|
||||
fadeAmount 0.1 // amount to adjust alpha per cycle
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
name "main"
|
||||
fullScreen 1
|
||||
rect 0 0 640 480
|
||||
focusColor COLOR_FOCUSED
|
||||
soundloop MENU_MUSIC
|
||||
style WINDOW_STYLE_EMPTY
|
||||
onOpen
|
||||
{
|
||||
uiScript stopRefresh;
|
||||
open main_text;
|
||||
}
|
||||
onClose
|
||||
{
|
||||
}
|
||||
onESC
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
#define RESET_GAMEMODE_DVARS \
|
||||
setdvar xblive_basictraining 0; \
|
||||
setdvar xblive_privatematch 0; \
|
||||
setdvar xblive_wagermatch 0; \
|
||||
setdvar xblive_theater 0; \
|
||||
setdvar xblive_rankedmatch 0;
|
||||
|
||||
menuDef
|
||||
{
|
||||
name "main_text"
|
||||
fullScreen 1
|
||||
rect 0 0 640 480
|
||||
focusColor COLOR_FOCUSED
|
||||
soundloop MENU_MUSIC
|
||||
style WINDOW_STYLE_EMPTY
|
||||
onOpen
|
||||
{
|
||||
setdvar ui_version_show "0";
|
||||
setLocalVarBool ui_centerPopup 0;
|
||||
setdvar ui_bg_image "";
|
||||
RESET_GAMEMODE_DVARS
|
||||
}
|
||||
onFocus
|
||||
{
|
||||
setDvar ui_flyoutHasFocus FLYOUT_NONE;
|
||||
}
|
||||
|
||||
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
rect FULLSCREEN_WIDE
|
||||
background "menu_mp_background_main2"
|
||||
forecolor 1 1 1 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
|
||||
// lower corner glows
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN;
|
||||
background "menu_mp_background_glow"
|
||||
forecolor 0.384 0.725 0.725 0
|
||||
exp forecolor a ( ((sin(milliseconds()/1500) + 1) * 0.25) + 0.25 )
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN;
|
||||
background "menu_mp_background_glow"
|
||||
forecolor 0.384 0.725 0.725 0
|
||||
exp forecolor a ( ((sin(milliseconds()/480) + 1) * 0.25) + 0.25 )
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
|
||||
#undef THINFOG_SCROLL_TIME
|
||||
#define THINFOG_SCROLL_TIME 50000
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER
|
||||
rect -107 0 1708 480
|
||||
exp rect X((-961) + ((float(milliseconds() % THINFOG_SCROLL_TIME) / THINFOG_SCROLL_TIME) * (854)))
|
||||
background "animbg_fogscrollthin"
|
||||
forecolor 1 1 1 0.5
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
#include "ui/bg.inc"
|
||||
|
||||
|
||||
// cod:bo logo
|
||||
#define LOGO_X_OFFSET 45
|
||||
#define LOGO_Y_OFFSET 70
|
||||
|
||||
#define LOGO_WIDTH 228
|
||||
#define LOGO_HEIGHT 107
|
||||
itemDef
|
||||
{
|
||||
visible 1
|
||||
rect (-LOGO_WIDTH - LOGO_X_OFFSET) (-LOGO_HEIGHT - LOGO_Y_OFFSET) LOGO_WIDTH LOGO_HEIGHT HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM
|
||||
forecolor 1 1 1 1
|
||||
style WINDOW_STYLE_SHADER
|
||||
background "menu_mp_background_logo"
|
||||
decoration
|
||||
}
|
||||
|
||||
#define RESET_GAME_MODES \
|
||||
setdvar systemlink "0"; \
|
||||
setdvar splitscreen "0"; \
|
||||
setdvar onlinegame "1"; \
|
||||
setdvar xblive_privatematch "0"; \
|
||||
setdvar xblive_rankedmatch "0"; \
|
||||
setdvar xblive_wagermatch "0"; \
|
||||
setdvar xblive_clanmatch "0"; \
|
||||
setdvar xblive_theater "0"; \
|
||||
setdvar xblive_basictraining "0";
|
||||
|
||||
#define SIGN_IN_CMD exec "xsigninlive";
|
||||
|
||||
#define SETUP_SIGNIN \
|
||||
if( IsSignedInToLive() == 0 ) \
|
||||
{ \
|
||||
SIGN_IN_CMD \
|
||||
open error_netconnect_popmenu; \
|
||||
} \
|
||||
elseif( isDemonwareFetchingDone() == 1 ) \
|
||||
{ \
|
||||
execnow "setclientbeingused"; \
|
||||
if( !getDStat( "CacLoadouts", "resetWarningDislayed" ) ) \
|
||||
{ \
|
||||
open customclassesreset; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
open live_flyout; \
|
||||
execnow readFileShare; \
|
||||
} \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
open popup_connectingtodwhandler; \
|
||||
}
|
||||
|
||||
|
||||
// ----------------- BEGIN Scroller --------------------------
|
||||
#include "ui/scroller.inc"
|
||||
// ----------------- END Scroller ----------------------------
|
||||
|
||||
CHOICE_MENU_TITLE_CENTER_ALIGN_VIS( "@MENU_MULTIPLAYER_CAPS", ITEM_ALIGN_TOP_RIGHT, dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
|
||||
CHOICE_MENU_TITLE_CENTER_ALIGN_VIS( "@MENU_PLAY_CAPS", ITEM_ALIGN_TOP_RIGHT, dvarInt( ui_flyoutHasFocus ) == FLYOUT_LIVE )
|
||||
CHOICE_MENU_TITLE_CENTER_ALIGN_VIS( "@MENU_OPERATIONS_CAPS", ITEM_ALIGN_TOP_RIGHT, dvarInt( ui_flyoutHasFocus ) == FLYOUT_OPERATIONS )
|
||||
CHOICE_MENU_TITLE_CENTER_ALIGN_VIS( "@MPUI_THEATER_LOBBY_CAPS", ITEM_ALIGN_TOP_RIGHT, dvarInt( ui_flyoutHasFocus ) == FLYOUT_THEATER )
|
||||
|
||||
// ----------------- BEGIN Message of the day ------------------------
|
||||
// size version 1: 248 126
|
||||
|
||||
//#define INFO_TEXT dvarString( "motd" )
|
||||
//#define INFO_TITLE "@MPUI_MOTD"
|
||||
|
||||
//#define MP_MOTD 1
|
||||
|
||||
//#include "ui_mp/info_box.inc"
|
||||
// ----------------- END Message of the day --------------------------
|
||||
|
||||
// Menu items -------------------------------------------
|
||||
|
||||
// highlight when flyout is open
|
||||
PREPROC_SHADER_DRAW_VIS_EX( CHOICE_ORIGIN( 1 ) (CHOICE_SIZE_X + 1) CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, "white", FLYOUT_BG_COLOR, when( dvarInt( ui_flyoutHasFocus ) == FLYOUT_LIVE );, ; )
|
||||
TEMP_CHOICE_BUTTON_VIS( 1, "@MENU_PLAY_CAPS",
|
||||
SETUP_SIGNIN,
|
||||
IsSignedInToLive() && ( dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE || dvarInt( ui_flyoutHasFocus ) == FLYOUT_LIVE ) )
|
||||
TEMP_CHOICE_BUTTON_VIS_DISABLED( 1, "@MENU_PLAY_CAPS",
|
||||
SETUP_SIGNIN,
|
||||
!IsSignedInToLive() && ( dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE || dvarInt( ui_flyoutHasFocus ) == FLYOUT_LIVE ) )
|
||||
// Gray text when flyout is open
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 1 ), 0 0, "@MENU_PLAY_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE && dvarInt( ui_flyoutHasFocus ) != FLYOUT_LIVE ); )
|
||||
|
||||
|
||||
#define SETUP_OPERATIONS_FLYOUT \
|
||||
if( IsSignedInToLive() == 0 ) \
|
||||
{ \
|
||||
SIGN_IN_CMD \
|
||||
open error_netconnect_popmenu; \
|
||||
} \
|
||||
elseif( isDemonwareFetchingDone() == 1 ) \
|
||||
{ \
|
||||
execnow "setclientbeingused"; \
|
||||
open operations_flyout; \
|
||||
execnow readFileShare; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
open popup_connectingtodwhandler; \
|
||||
}
|
||||
|
||||
// highlight when flyout is open
|
||||
PREPROC_SHADER_DRAW_VIS_EX( CHOICE_ORIGIN( 2 ) CHOICE_SIZE_X CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, "white", FLYOUT_BG_COLOR, when( dvarInt( ui_flyoutHasFocus ) == FLYOUT_OPERATIONS );, ; )
|
||||
TEMP_CHOICE_BUTTON_VIS( 2, "@MENU_OPERATIONS_CAPS",
|
||||
SETUP_OPERATIONS_FLYOUT,
|
||||
( dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE || dvarInt( ui_flyoutHasFocus ) == FLYOUT_OPERATIONS ) )
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 2 ), 0 0, "@MENU_OPERATIONS_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE && dvarInt( ui_flyoutHasFocus ) != FLYOUT_OPERATIONS ); )
|
||||
|
||||
#define SETUP_THEATER_FLYOUT \
|
||||
if( IsSignedInToLive() == 0 ) \
|
||||
{ \
|
||||
SIGN_IN_CMD \
|
||||
open error_netconnect_popmenu; \
|
||||
} \
|
||||
elseif( isDemonwareFetchingDone() == 1 ) \
|
||||
{ \
|
||||
execnow "setclientbeingused"; \
|
||||
open theater_flyout; \
|
||||
execnow readFileShare; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
open popup_connectingtodwhandler; \
|
||||
}
|
||||
|
||||
// highlight when flyout is open
|
||||
PREPROC_SHADER_DRAW_VIS_EX( CHOICE_ORIGIN( 3 ) CHOICE_SIZE_X CHOICE_SIZE_Y CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, "white", FLYOUT_BG_COLOR, when( dvarInt( ui_flyoutHasFocus ) == FLYOUT_THEATER );, ; )
|
||||
TEMP_CHOICE_BUTTON_VIS( 3, "@MPUI_THEATER_LOBBY_CAPS",
|
||||
SETUP_THEATER_FLYOUT,
|
||||
( dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE || dvarInt( ui_flyoutHasFocus ) == FLYOUT_THEATER ) )
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 3 ), 0 0, "@MPUI_THEATER_LOBBY_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE && dvarInt( ui_flyoutHasFocus ) != FLYOUT_THEATER ); )
|
||||
|
||||
TEMP_CHOICE_BUTTON_VIS( 4, "@MENU_SETTINGS_CAPS",
|
||||
open options_new_pc,
|
||||
dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 4 ), 0 0, "@MENU_SETTINGS_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
|
||||
|
||||
/*TEMP_CHOICE_BUTTON_VIS( 5, "@MENU_STORE_CAPS",
|
||||
uiscript openurl "www.callofduty.com/game",
|
||||
dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 5 ), 0 0, "@MENU_STORE_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )*/
|
||||
|
||||
TEMP_CHOICE_BUTTON_VIS( 5, "@MENU_MODS_CAPS",
|
||||
open select_mod,
|
||||
dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 5 ), 0 0, "@MENU_MODS_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
|
||||
|
||||
TEMP_CHOICE_BUTTON_VIS( 6, "@MENU_MAIN_MENU_CAPS",
|
||||
open single_popmenu,
|
||||
dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 6 ), 0 0, "@MENU_MAIN_MENU_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
|
||||
|
||||
TEMP_CHOICE_BUTTON_VIS( 7, "@MENU_QUIT_CAPS",
|
||||
open quit_popmenu,
|
||||
dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 7 ), 0 0, "@MENU_QUIT_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, NO_BG_DISABLED_COLOR, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
|
||||
|
||||
FRIENDS_BUTTON
|
||||
}
|
||||
|
||||
#define FADE_STATE( isLast, colorArg, menuName, nextName ) \
|
||||
state \
|
||||
{ \
|
||||
name "FadeIn" \
|
||||
forecolor colorArg \
|
||||
\
|
||||
onEnter \
|
||||
{ \
|
||||
execNow if( isLast != 1 ) ui_animate menuName nextName FadeIn (FLYOUT_TIME/FLYOUT_BUTTON_COUNT); \
|
||||
execNow if( isLast == 1 ) set ui_flownOut 1; \
|
||||
} \
|
||||
}
|
||||
|
||||
#define FLYOUT_ARGS( isLast, menuName, colorArg, myName, nextName ) \
|
||||
name myName \
|
||||
FADE_STATE( isLast, colorArg, menuName, nextName )
|
||||
|
||||
#undef CHOICE_HORIZONTAL_ALIGN
|
||||
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
|
||||
#undef CHOICE_VERTICAL_ALIGN
|
||||
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_TOP
|
||||
|
||||
#undef CHOICE_TEXTALIGN
|
||||
#define CHOICE_TEXTALIGN ITEM_ALIGN_MIDDLE_LEFT
|
||||
|
||||
#undef CHOICE_GROUP
|
||||
#define CHOICE_GROUP "flyout"
|
||||
|
||||
#define FLYOUT_TIME 200
|
||||
#define FLYOUT_BG_X_START ( -258 + BUTTON_BG_WIDTH + 1 )
|
||||
#define FLYOUT_BG_WIDTH 180
|
||||
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START FLYOUT_BG_X_START
|
||||
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X FLYOUT_BG_WIDTH
|
||||
|
||||
#undef CHOICE_FOCUS_SOUND
|
||||
#define CHOICE_FOCUS_SOUND "uin_navigation_submenu_over"
|
||||
|
||||
#undef FLYOUT_BUTTON_COUNT
|
||||
#define FLYOUT_BUTTON_COUNT 5
|
||||
#undef FLYOUT_FIRST_CHOICE_Y
|
||||
#define FLYOUT_FIRST_CHOICE_Y 1
|
||||
|
||||
#define SETUP_ACTION_LOBBY \
|
||||
execNow "exec "XBOXLIVE_MP_CFG;
|
||||
|
||||
menuDef
|
||||
{
|
||||
name live_flyout
|
||||
rect 0 0 640 480
|
||||
focusColor COLOR_FOCUSED
|
||||
soundloop MENU_MUSIC
|
||||
control MENU_CONTROL_NO_GUESTS
|
||||
|
||||
onOpen
|
||||
{
|
||||
execNow ui_animate live_flyout ButtonBackground Fly FLYOUT_TIME;
|
||||
execNow ui_animate live_flyout FirstFlyout FadeIn (FLYOUT_TIME/FLYOUT_BUTTON_COUNT);
|
||||
execNow set ui_flownOut 0;
|
||||
setDvar ui_flyoutHasFocus FLYOUT_LIVE;
|
||||
}
|
||||
onESC { close self; }
|
||||
onClose
|
||||
{
|
||||
execNow ui_animate live_flyout ButtonBackground Default 0;
|
||||
execNow ui_animate live_flyout FirstFlyout Default 0;
|
||||
execNow ui_animate live_flyout SecondFlyout Default 0;
|
||||
execNow ui_animate live_flyout ThirdFlyout Default 0;
|
||||
execNow ui_animate live_flyout FourthFlyout Default 0;
|
||||
execNow ui_animate live_flyout FifthFlyout Default 0;
|
||||
execNow set ui_flownOut 0;
|
||||
setDvar ui_flyoutHasFocus FLYOUT_NONE;
|
||||
}
|
||||
|
||||
/* exit flyout button */
|
||||
itemDef
|
||||
{
|
||||
name "ExitFlyoutButton"
|
||||
type ITEM_TYPE_BUTTON
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
visible 1
|
||||
action { close self; }
|
||||
}
|
||||
|
||||
/* button background */
|
||||
itemDef
|
||||
{
|
||||
name "ButtonBackground"
|
||||
style WINDOW_STYLE_SHADER
|
||||
rect FLYOUT_BG_X_START CHOICE_Y( FLYOUT_FIRST_CHOICE_Y ) FLYOUT_BG_WIDTH CHOICE_Y_SPACING CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_TOP
|
||||
forecolor FLYOUT_BG_COLOR
|
||||
background "white"
|
||||
visible 1
|
||||
decoration
|
||||
|
||||
state
|
||||
{
|
||||
name "Fly"
|
||||
rect FLYOUT_BG_X_START CHOICE_Y( FLYOUT_FIRST_CHOICE_Y ) FLYOUT_BG_WIDTH ( CHOICE_Y_SPACING * FLYOUT_BUTTON_COUNT ) CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_TOP
|
||||
}
|
||||
}
|
||||
|
||||
HINT_TEXT_ALL( (FLYOUT_BUTTON_COUNT + 1), (FLYOUT_BG_X_START + 10), 5, (FLYOUT_BG_WIDTH - 20), (dvarString( ui_lobby_desc )), 1 1 1 1, ( dvarInt( ui_flownOut ) == 1 ), ; )
|
||||
|
||||
#define SETUP_ACTION_SERVER_BROWSER \
|
||||
RESET_GAME_MODES \
|
||||
SETUP_ACTION_LOBBY \
|
||||
close self; \
|
||||
open server_browser_main;
|
||||
|
||||
|
||||
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( FLYOUT_FIRST_CHOICE_Y, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
|
||||
TEMP_CHOICE_BUTTON_ALL( FLYOUT_FIRST_CHOICE_Y, "@MENU_SERVER_BROWSER_CAPS",
|
||||
SETUP_ACTION_SERVER_BROWSER,
|
||||
setDvar ui_lobby_desc "@MENU_SERVER_BROWSER_DESC";,
|
||||
CLEARUIHINT,
|
||||
1 1 1 0,
|
||||
dvarBool(ui_ethernetLinkActive),
|
||||
FLYOUT_ARGS( 0, live_flyout, TEXT_COLOR_NO_HL, FirstFlyout, SecondFlyout ) )
|
||||
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( FLYOUT_FIRST_CHOICE_Y, "@MENU_SERVER_BROWSER_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
|
||||
|
||||
#define SETUP_ACTION_RANKEDMATCH \
|
||||
RESET_GAME_MODES \
|
||||
SETUP_ACTION_LOBBY \
|
||||
close self; \
|
||||
exec "quickmatch";
|
||||
|
||||
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 2, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
|
||||
TEMP_CHOICE_BUTTON_ALL( 2, "@MENU_RANKED_MATCH_CAPS",
|
||||
SETUP_ACTION_RANKEDMATCH,
|
||||
setDvar ui_lobby_desc "@MENU_RANKED_MATCH_DESC";,
|
||||
CLEARUIHINT,
|
||||
1 1 1 0,
|
||||
dvarBool(ui_ethernetLinkActive),
|
||||
FLYOUT_ARGS( 0, live_flyout, TEXT_COLOR_NO_HL, SecondFlyout, ThirdFlyout ) )
|
||||
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 2, "@MENU_RANKED_MATCH_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
|
||||
|
||||
|
||||
#define SETUP_ACTION_WAGERMATCH \
|
||||
RESET_GAME_MODES \
|
||||
setDvar xblive_wagermatch "1"; \
|
||||
SETUP_ACTION_LOBBY \
|
||||
close self; \
|
||||
exec "wagermatch";
|
||||
|
||||
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 3, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
|
||||
TEMP_CHOICE_BUTTON_ALL( 3, "@MPUI_WAGER_MATCH_CAPS",
|
||||
SETUP_ACTION_WAGERMATCH,
|
||||
setDvar ui_lobby_desc "@MPUI_WAGER_MATCH_DESC";,
|
||||
CLEARUIHINT,
|
||||
1 1 1 0,
|
||||
dvarBool(ui_ethernetLinkActive) && dvarBool(ui_mpWagerMatchEnabled),
|
||||
FLYOUT_ARGS( 0, live_flyout, TEXT_COLOR_NO_HL, ThirdFlyout, FourthFlyout ) )
|
||||
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 3, "@MPUI_WAGER_MATCH_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 && dvarBool(ui_mpWagerMatchEnabled) )
|
||||
|
||||
|
||||
#define SETUP_ACTION_BASIC_TRAINING \
|
||||
RESET_GAME_MODES \
|
||||
setDvar onlinegame "1"; \
|
||||
setDvar xblive_basictraining "1"; \
|
||||
SETUP_ACTION_LOBBY \
|
||||
execNow "exec dvar_defaults.cfg"; \
|
||||
setDvar ui_mapname "mp_mountain"; \
|
||||
setDvar ui_gametype "tdm"; \
|
||||
close self; \
|
||||
open menu_xboxlive_basictraining;
|
||||
|
||||
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 4, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
|
||||
TEMP_CHOICE_BUTTON_ALL( 4, "@MPUI_BASICTRAINING_CAPS",
|
||||
SETUP_ACTION_BASIC_TRAINING,
|
||||
setDvar ui_lobby_desc "@MPUI_BASICTRAINING_DESC";,
|
||||
CLEARUIHINT,
|
||||
1 1 1 0,
|
||||
dvarBool(ui_ethernetLinkActive),
|
||||
FLYOUT_ARGS( 0, live_flyout, TEXT_COLOR_NO_HL, FourthFlyout, FifthFlyout ) )
|
||||
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 4, "@MPUI_BASICTRAINING_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
|
||||
|
||||
#define SETUP_ACTION_PRIVATEMATCH \
|
||||
RESET_GAME_MODES \
|
||||
setDvar onlinegame "1"; \
|
||||
setDvar xblive_privatematch "1"; \
|
||||
SETUP_ACTION_LOBBY \
|
||||
setDvar ui_mapname "mp_mountain"; \
|
||||
setDvar ui_gametype "tdm"; \
|
||||
close self; \
|
||||
open menu_xboxlive_privatelobby;
|
||||
|
||||
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 5, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
|
||||
TEMP_CHOICE_BUTTON_ALL( 5, "@MPUI_CUSTOM_MATCH_CAPS",
|
||||
SETUP_ACTION_PRIVATEMATCH,
|
||||
setDvar ui_lobby_desc "@MPUI_CUSTOM_MATCH_DESC";,
|
||||
CLEARUIHINT,
|
||||
1 1 1 0,
|
||||
dvarBool(ui_ethernetLinkActive),
|
||||
FLYOUT_ARGS( 1, live_flyout, TEXT_COLOR_NO_HL, FifthFlyout, NoFlyout ) )
|
||||
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 5, "@MPUI_CUSTOM_MATCH_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
|
||||
|
||||
} // live_flyout
|
||||
|
||||
#undef FLYOUT_BUTTON_COUNT
|
||||
#define FLYOUT_BUTTON_COUNT 4
|
||||
|
||||
#undef FLYOUT_FIRST_CHOICE_Y
|
||||
#define FLYOUT_FIRST_CHOICE_Y 2
|
||||
menuDef
|
||||
{
|
||||
name operations_flyout
|
||||
rect 0 0 640 480
|
||||
focusColor COLOR_FOCUSED
|
||||
soundloop MENU_MUSIC
|
||||
control MENU_CONTROL_NO_GUESTS
|
||||
|
||||
onOpen
|
||||
{
|
||||
execNow ui_animate operations_flyout ButtonBackground Fly FLYOUT_TIME;
|
||||
execNow ui_animate operations_flyout FirstFlyout FadeIn (FLYOUT_TIME/FLYOUT_BUTTON_COUNT);
|
||||
execNow set ui_flownOut 0;
|
||||
setDvar ui_flyoutHasFocus FLYOUT_OPERATIONS;
|
||||
}
|
||||
onESC { close self; }
|
||||
onClose
|
||||
{
|
||||
execNow ui_animate operations_flyout ButtonBackground Default 0;
|
||||
execNow ui_animate operations_flyout FirstFlyout Default 0;
|
||||
execNow ui_animate operations_flyout SecondFlyout Default 0;
|
||||
execNow ui_animate operations_flyout ThirdFlyout Default 0;
|
||||
execNow ui_animate operations_flyout FourthFlyout Default 0;
|
||||
execNow set ui_flownOut 0;
|
||||
setDvar ui_flyoutHasFocus FLYOUT_NONE;
|
||||
}
|
||||
|
||||
/* exit flyout button */
|
||||
itemDef
|
||||
{
|
||||
name "ExitFlyoutButton"
|
||||
type ITEM_TYPE_BUTTON
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
visible 1
|
||||
action { close self; }
|
||||
}
|
||||
|
||||
/* button background */
|
||||
itemDef
|
||||
{
|
||||
name "ButtonBackground"
|
||||
style WINDOW_STYLE_SHADER
|
||||
rect FLYOUT_BG_X_START CHOICE_Y( FLYOUT_FIRST_CHOICE_Y ) FLYOUT_BG_WIDTH CHOICE_Y_SPACING CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_TOP
|
||||
forecolor FLYOUT_BG_COLOR
|
||||
background "white"
|
||||
visible 1
|
||||
decoration
|
||||
|
||||
state
|
||||
{
|
||||
name "Fly"
|
||||
rect FLYOUT_BG_X_START CHOICE_Y( FLYOUT_FIRST_CHOICE_Y ) FLYOUT_BG_WIDTH ( CHOICE_Y_SPACING * FLYOUT_BUTTON_COUNT ) CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_TOP
|
||||
}
|
||||
}
|
||||
|
||||
HINT_TEXT_ALL( (FLYOUT_BUTTON_COUNT + FLYOUT_FIRST_CHOICE_Y), (FLYOUT_BG_X_START + 10), 5, (FLYOUT_BG_WIDTH - 20), (dvarString( ui_lobby_desc )), 1 1 1 1, ( dvarInt( ui_flownOut ) == 1 ), ; )
|
||||
|
||||
#define SETUP_ACTION_CREATEACLASS \
|
||||
close self; \
|
||||
if ( IsSignedInToLive() && areStatsFetched() && !IsGuest() ) \
|
||||
{ \
|
||||
exec "set ui_cac_ingame 0"; \
|
||||
setdvar invite_visible "0"; \
|
||||
open cac_main; \
|
||||
}
|
||||
|
||||
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( FLYOUT_FIRST_CHOICE_Y, BG_HL_COLOR, FLYOUT_BG_WIDTH, ( dvarInt( ui_flownOut ) == 1 && !IS_ITEM_LOCKED( "FEATURE_CREATE_A_CLASS" ) ) )
|
||||
TEMP_CHOICE_BUTTON_ALL( FLYOUT_FIRST_CHOICE_Y, "@MPUI_CREATE_A_CLASS_CAPS",
|
||||
SETUP_ACTION_CREATEACLASS,
|
||||
setDvar ui_lobby_desc "@MPUI_CAC_DESC";,
|
||||
CLEARUIHINT,
|
||||
1 1 1 0,
|
||||
!IS_ITEM_LOCKED( "FEATURE_CREATE_A_CLASS" ),
|
||||
FLYOUT_ARGS( 0, operations_flyout, TEXT_COLOR_NO_HL, FirstFlyout, SecondFlyout ) )
|
||||
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( FLYOUT_FIRST_CHOICE_Y, "@MPUI_CREATE_A_CLASS_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 && !IS_ITEM_LOCKED( "FEATURE_CREATE_A_CLASS" ) )
|
||||
TEMP_CHOICE_BUTTON_ALL( FLYOUT_FIRST_CHOICE_Y, "@MPUI_CREATE_A_CLASS_CAPS",
|
||||
/*NO-OP*/;,
|
||||
exec set ui_lobby_desc GET_UNLOCK_LEVEL_STRING( FEATURE_CREATE_A_CLASS );,
|
||||
CLEARUIHINT,
|
||||
1 1 1 0,
|
||||
IS_ITEM_LOCKED( "FEATURE_CREATE_A_CLASS" ),
|
||||
FLYOUT_ARGS( 0, operations_flyout, NO_BG_DISABLED_COLOR, FirstFlyout, SecondFlyout ) )
|
||||
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( FLYOUT_FIRST_CHOICE_Y, "@MPUI_CREATE_A_CLASS_CAPS", NO_BG_DISABLED_COLOR, dvarInt( ui_flownOut ) == 1 && IS_ITEM_LOCKED( "FEATURE_CREATE_A_CLASS" ) )
|
||||
CHOICE_LOCKEDICON_VIS( FLYOUT_FIRST_CHOICE_Y, "menu_mp_lobby_locked", when( dvarInt( ui_flownOut ) == 1 && IS_ITEM_LOCKED( "FEATURE_CREATE_A_CLASS" ) ) )
|
||||
|
||||
#define SETUP_ACTION_CONTRACTS \
|
||||
close self; \
|
||||
if ( IsSignedInToLive() && areStatsFetched() && !IsGuest() ) \
|
||||
{ \
|
||||
open menu_xboxlive_contracts; \
|
||||
}
|
||||
|
||||
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 3, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 && !IS_ITEM_LOCKED( FEATURE_CONTRACTS ) )
|
||||
TEMP_CHOICE_BUTTON_ALL( 3, "@MENU_CONTRACTS_CAPS",
|
||||
SETUP_ACTION_CONTRACTS,
|
||||
exec set ui_lobby_desc "@MPUI_CONTRACTS_DESC";,
|
||||
CLEARUIHINT,
|
||||
1 1 1 0,
|
||||
!IS_ITEM_LOCKED( FEATURE_CONTRACTS ),
|
||||
FLYOUT_ARGS( 0, operations_flyout, TEXT_COLOR_NO_HL, SecondFlyout, ThirdFlyout ) )
|
||||
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 3, "@MENU_CONTRACTS_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 && !IS_ITEM_LOCKED( FEATURE_CONTRACTS ) )
|
||||
TEMP_CHOICE_BUTTON_ALL( 3, "@MENU_CONTRACTS_CAPS",
|
||||
/*NO-OP*/;,
|
||||
exec set ui_lobby_desc GET_UNLOCK_LEVEL_STRING( FEATURE_CONTRACTS );,
|
||||
CLEARUIHINT,
|
||||
1 1 1 0,
|
||||
IS_ITEM_LOCKED( FEATURE_CONTRACTS ),
|
||||
FLYOUT_ARGS( 1, operations_flyout, NO_BG_DISABLED_COLOR, SecondFlyout, ThirdFlyout ) )
|
||||
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 3, "@MENU_CONTRACTS_CAPS", NO_BG_DISABLED_COLOR, dvarInt( ui_flownOut ) == 1 && IS_ITEM_LOCKED( FEATURE_CONTRACTS ) )
|
||||
CHOICE_LOCKEDICON_VIS( 3, "menu_mp_lobby_locked", when( dvarInt( ui_flownOut ) == 1 && IS_ITEM_LOCKED( FEATURE_CONTRACTS ) ) )
|
||||
|
||||
#define SETUP_ACTION_KILLSTREAKS \
|
||||
close self; \
|
||||
if ( IsSignedInToLive() && areStatsFetched() && !IsGuest() ) \
|
||||
{ \
|
||||
open menu_xboxlive_killstreaks; \
|
||||
}
|
||||
|
||||
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 4, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 && !IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ) )
|
||||
TEMP_CHOICE_BUTTON_ALL( 4, "@MENU_KILLSTREAKS_CAPS",
|
||||
SETUP_ACTION_KILLSTREAKS,
|
||||
exec set ui_lobby_desc "@MPUI_KILLSTREAKS_DESC";,
|
||||
CLEARUIHINT,
|
||||
1 1 1 0,
|
||||
!IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ),
|
||||
FLYOUT_ARGS( 0, operations_flyout, TEXT_COLOR_NO_HL, ThirdFlyout, FourthFlyout ) )
|
||||
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 4, "@MENU_KILLSTREAKS_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 && !IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ) )
|
||||
TEMP_CHOICE_BUTTON_ALL( 4, "@MENU_KILLSTREAKS_CAPS",
|
||||
/*NO-OP*/;,
|
||||
exec set ui_lobby_desc GET_UNLOCK_LEVEL_STRING( FEATURE_KILLSTREAKS );,
|
||||
CLEARUIHINT,
|
||||
1 1 1 0,
|
||||
IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ),
|
||||
FLYOUT_ARGS( 1, operations_flyout, NO_BG_DISABLED_COLOR, ThirdFlyout, FourthFlyout ) )
|
||||
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 4, "@MENU_KILLSTREAKS_CAPS", NO_BG_DISABLED_COLOR, dvarInt( ui_flownOut ) == 1 && IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ) )
|
||||
CHOICE_LOCKEDICON_VIS( 4, "menu_mp_lobby_locked", when( dvarInt( ui_flownOut ) == 1 && IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ) ) )
|
||||
|
||||
// #define SETUP_ACTION_PLAYERCARD \ defined in ui_mp\friendslist.inc
|
||||
|
||||
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 5, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
|
||||
TEMP_CHOICE_BUTTON_ALL( 5, "@MENU_PLAYERCARD_CAPS",
|
||||
close self; SETUP_ACTION_PLAYERCARD,
|
||||
exec set ui_lobby_desc "@MPUI_PLAYERCARD_DESC";,
|
||||
CLEARUIHINT,
|
||||
1 1 1 0,
|
||||
1,
|
||||
FLYOUT_ARGS( 0, operations_flyout, TEXT_COLOR_NO_HL, FourthFlyout, NoFlyout ) )
|
||||
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 5, "@MENU_PLAYERCARD_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
|
||||
|
||||
} // operations_flyout
|
||||
|
||||
#undef FLYOUT_BUTTON_COUNT
|
||||
#define FLYOUT_BUTTON_COUNT 3
|
||||
|
||||
#undef FLYOUT_FIRST_CHOICE_Y
|
||||
#define FLYOUT_FIRST_CHOICE_Y 3
|
||||
menuDef
|
||||
{
|
||||
name theater_flyout
|
||||
rect 0 0 640 480
|
||||
focusColor COLOR_FOCUSED
|
||||
soundloop MENU_MUSIC
|
||||
control MENU_CONTROL_NO_GUESTS
|
||||
|
||||
onOpen
|
||||
{
|
||||
execNow ui_animate theater_flyout ButtonBackground Fly FLYOUT_TIME;
|
||||
execNow ui_animate theater_flyout FirstFlyout FadeIn (FLYOUT_TIME/FLYOUT_BUTTON_COUNT);
|
||||
execNow set ui_flownOut 0;
|
||||
setDvar ui_flyoutHasFocus FLYOUT_THEATER;
|
||||
}
|
||||
onESC { close self; }
|
||||
onClose
|
||||
{
|
||||
execNow ui_animate theater_flyout ButtonBackground Default 0;
|
||||
execNow ui_animate theater_flyout FirstFlyout Default 0;
|
||||
execNow ui_animate theater_flyout SecondFlyout Default 0;
|
||||
execNow ui_animate theater_flyout ThirdFlyout Default 0;
|
||||
execNow set ui_flownOut 0;
|
||||
setDvar ui_flyoutHasFocus FLYOUT_NONE;
|
||||
}
|
||||
|
||||
/* exit flyout button */
|
||||
itemDef
|
||||
{
|
||||
name "ExitFlyoutButton"
|
||||
type ITEM_TYPE_BUTTON
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
visible 1
|
||||
action { close self; }
|
||||
}
|
||||
|
||||
/* button background */
|
||||
itemDef
|
||||
{
|
||||
name "ButtonBackground"
|
||||
style WINDOW_STYLE_SHADER
|
||||
rect FLYOUT_BG_X_START CHOICE_Y( FLYOUT_FIRST_CHOICE_Y ) FLYOUT_BG_WIDTH CHOICE_Y_SPACING CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_TOP
|
||||
forecolor FLYOUT_BG_COLOR
|
||||
background "white"
|
||||
visible 1
|
||||
decoration
|
||||
|
||||
state
|
||||
{
|
||||
name "Fly"
|
||||
rect FLYOUT_BG_X_START CHOICE_Y( FLYOUT_FIRST_CHOICE_Y ) FLYOUT_BG_WIDTH ( CHOICE_Y_SPACING * FLYOUT_BUTTON_COUNT ) CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_TOP
|
||||
}
|
||||
}
|
||||
|
||||
HINT_TEXT_ALL( (FLYOUT_BUTTON_COUNT + FLYOUT_FIRST_CHOICE_Y), (FLYOUT_BG_X_START + 10), 5, (FLYOUT_BG_WIDTH - 20), (dvarString( ui_lobby_desc )), 1 1 1 1, ( dvarInt( ui_flownOut ) == 1 ), ; )
|
||||
|
||||
#define SETUP_ACTION_FILESHARE \
|
||||
setdvar ui_theater_shortcut_pc 1; \
|
||||
close self; \
|
||||
open menu_fileshare_myshare;
|
||||
|
||||
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( FLYOUT_FIRST_CHOICE_Y, BG_HL_COLOR, FLYOUT_BG_WIDTH, ( dvarInt( ui_flownOut ) == 1 ) )
|
||||
TEMP_CHOICE_BUTTON_ALL( FLYOUT_FIRST_CHOICE_Y, "@MENU_FILESHARE_MYSHARE_CAPS",
|
||||
SETUP_ACTION_FILESHARE,
|
||||
setDvar ui_lobby_desc "@MPUI_FILE_SHARE_DESC";,
|
||||
CLEARUIHINT,
|
||||
1 1 1 0,
|
||||
1,
|
||||
FLYOUT_ARGS( 0, theater_flyout, TEXT_COLOR_NO_HL, FirstFlyout, SecondFlyout ) )
|
||||
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( FLYOUT_FIRST_CHOICE_Y, "@MENU_FILESHARE_MYSHARE_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
|
||||
|
||||
|
||||
#define SETUP_ACTION_RECENTGAMES \
|
||||
setdvar ui_theater_shortcut_pc 1; \
|
||||
close self; \
|
||||
open menu_fileshare_myrecentgames;
|
||||
|
||||
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 4, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
|
||||
TEMP_CHOICE_BUTTON_ALL( 4, "@MENU_FILESHARE_MYRECENTGAMES_CAPS",
|
||||
SETUP_ACTION_RECENTGAMES,
|
||||
exec set ui_lobby_desc "@MPUI_MY_RECENT_GAMES_DESC";,
|
||||
CLEARUIHINT,
|
||||
1 1 1 0,
|
||||
1,
|
||||
FLYOUT_ARGS( 0, theater_flyout, TEXT_COLOR_NO_HL, SecondFlyout, ThirdFlyout ) )
|
||||
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 4, "@MENU_FILESHARE_MYRECENTGAMES_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
|
||||
|
||||
#define SETUP_ACTION_COMMUNITY \
|
||||
if ( canShowContentFromUser( 0 ) ) \
|
||||
{ \
|
||||
setdvar ui_theater_shortcut_pc 1; \
|
||||
close self; \
|
||||
open menu_fileshare_community; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
open menu_community_viewwarning; \
|
||||
}
|
||||
|
||||
TEMP_CHOICE_HIGHLIGHT_SOLID_WIDTH( 5, BG_HL_COLOR, FLYOUT_BG_WIDTH, dvarInt( ui_flownOut ) == 1 )
|
||||
TEMP_CHOICE_BUTTON_ALL( 5, "@MENU_FILESHARE_COMMUNITY_CAPS",
|
||||
SETUP_ACTION_COMMUNITY,
|
||||
exec set ui_lobby_desc "@MPUI_COMMUNITY_DESC";,
|
||||
CLEARUIHINT,
|
||||
1 1 1 0,
|
||||
1,
|
||||
FLYOUT_ARGS( 1, theater_flyout, TEXT_COLOR_NO_HL, ThirdFlyout, NoFlyout ) )
|
||||
TEMP_CHOICE_BUTTON_HIGHLIGHT_TEXT( 5, "@MENU_FILESHARE_COMMUNITY_CAPS", TEXT_COLOR_HL, dvarInt( ui_flownOut ) == 1 )
|
||||
|
||||
} // theater_flyout
|
||||
|
||||
#include "ui_mp/popupstyle.inc"
|
||||
#include "ui/choices_setup_popmenu.menu"
|
||||
|
||||
#undef POPUP_BUTTON_COUNT
|
||||
#define POPUP_BUTTON_COUNT 1
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( customclassesreset, ;, ;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_NOTICE", 1 )
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( "@MENU_RESETCUSTOMCLASSES", 1 )
|
||||
|
||||
#define LOCAL_ACCEPT_RESET_CAC \
|
||||
execnow statWriteDDL cacloadouts resetWarningDislayed 1; \
|
||||
execnow uploadstats; \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
close customclassesreset; \
|
||||
open live_flyout;
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_OK", LOCAL_ACCEPT_RESET_CAC, 1, ; )
|
||||
}
|
||||
|
||||
// ====================== single player confirmation =========================
|
||||
#undef POPUP_BUTTON_COUNT
|
||||
#define POPUP_BUTTON_COUNT 1
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( error_netconnect_popmenu, ;, ;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_NOTICE", 1 )
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( "@XBOXLIVE_NETCONNECTION", 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_EXIT", close self;, 1, ; )
|
||||
}
|
||||
|
||||
#define SETUP_SINGLE_PLAYER \
|
||||
execnow "set ui_skipMainLockout 0"; \
|
||||
setdvar ui_changed_exe 1; \
|
||||
exec "wait;wait;wait"; \
|
||||
uiScript startSingleplayer;
|
||||
|
||||
|
||||
#undef POPUP_BUTTON_COUNT
|
||||
#define POPUP_BUTTON_COUNT 2
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( single_popmenu, setFocus single_popmenu_2, ;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_SWITCH_TO_SOLO_COOP_MENU", 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_YES", SETUP_SINGLE_PLAYER, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_NO", close self, 1, name single_popmenu_2 )
|
||||
}
|
||||
}
|
@ -1,162 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
|
||||
#define CHOICE_GROUP "mods"
|
||||
|
||||
#include "ui_mp/menustyle.inc"
|
||||
#include "ui/choices_setup_common.menu"
|
||||
#include "ui/framestyle.inc"
|
||||
#include "ui/frame.inc"
|
||||
|
||||
#define MOD_NAME_X 40
|
||||
#define MOD_NAME_Y ( FRAME_CHOICE_Y_START - 7 )
|
||||
#define MOD_NAME_HEIGHT 30
|
||||
#define MOD_NAME_SIZE MOD_IMAGE_WIDTH MOD_NAME_HEIGHT
|
||||
|
||||
#define MOD_IMAGE_X MOD_NAME_X
|
||||
#define MOD_IMAGE_Y (MOD_NAME_Y + MOD_NAME_HEIGHT + 15)
|
||||
#define MOD_IMAGE_ASPECT_RATIO 1.0
|
||||
#define MOD_IMAGE_WIDTH 180
|
||||
#define MOD_IMAGE_HEIGHT (MOD_IMAGE_WIDTH * MOD_IMAGE_ASPECT_RATIO)
|
||||
#define MOD_IMAGE_SIZE MOD_IMAGE_WIDTH MOD_IMAGE_HEIGHT
|
||||
|
||||
#define MOD_DESC_X MOD_NAME_X
|
||||
#define MOD_DESC_Y (MOD_IMAGE_Y + MOD_IMAGE_HEIGHT + 15)
|
||||
#define MOD_DESC_SIZE MOD_IMAGE_WIDTH 60
|
||||
|
||||
#undef DEFAULT_SLIDE_IN_SPEED
|
||||
#define DEFAULT_SLIDE_IN_SPEED 180
|
||||
|
||||
#undef DEFAULT_SLIDE_OUT_SPEED
|
||||
#define DEFAULT_SLIDE_OUT_SPEED 180
|
||||
|
||||
#undef ON_ESC
|
||||
#define ON_ESC \
|
||||
deactivateBlur; \
|
||||
play uin_navigation_menu_lg_close; \
|
||||
close self;
|
||||
|
||||
#define MOD_DESC_DISPLAY( titleText, imageMat, descText, visArg ) \
|
||||
PREPROC_TEXT_DRAW_ALL( MOD_NAME_X MOD_NAME_Y MOD_NAME_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
|
||||
titleText, \
|
||||
TEXTSIZE_TITLE, 0, 0, ITEM_ALIGN_TOP_CENTER, 1 1 1 1, UI_FONT_EXTRABIG, ITEM_TEXTSTYLE_NORMAL, \
|
||||
when( visArg );, ; ) \
|
||||
PREPROC_SHADER_DRAW_VIS_EX( MOD_IMAGE_X MOD_IMAGE_Y MOD_IMAGE_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, \
|
||||
imageMat, 1 1 1 1, \
|
||||
when( visArg );, \
|
||||
; ) \
|
||||
PREPROC_TEXT_DRAW_VIS_EX( MOD_DESC_X MOD_DESC_Y MOD_DESC_SIZE HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, \
|
||||
descText, \
|
||||
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_CENTER, 1 1 1 1, \
|
||||
when( visArg );, autowrapped )
|
||||
|
||||
menuDef
|
||||
{
|
||||
name select_mod
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_FILLED
|
||||
soundloop MENU_MUSIC
|
||||
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
|
||||
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED
|
||||
openSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
|
||||
onOpen
|
||||
{
|
||||
activateBlur;
|
||||
play uin_navigation_menu_lg_open;
|
||||
setdvar invite_visible "0";
|
||||
setFocus mod_selection;
|
||||
}
|
||||
onFocus { }
|
||||
onClose
|
||||
{
|
||||
deactivateBlur;
|
||||
setdvar invite_visible "1";
|
||||
}
|
||||
onESC
|
||||
{
|
||||
ON_ESC
|
||||
}
|
||||
|
||||
FRAME_DEFAULT
|
||||
|
||||
FRAME_TITLE_DEFAULT( "@MENU_MODS_CAPS", 1 )
|
||||
FRAME_SUBTITLE_DEFAULT( "^3" + (locString( "@MENU_MODS_LOADED_CAPS" ) + dvarString( fs_game ) ) + "^7", when(dvarString( fs_game ) != "") )
|
||||
|
||||
#define MOD_IMAGE "playlist_custom"
|
||||
#define MOD_NAME dvarString( ui_mod_name )
|
||||
#define MOD_DESC dvarString( ui_mod_desc )
|
||||
|
||||
MOD_DESC_DISPLAY( MOD_NAME, MOD_IMAGE, MOD_DESC, 1 )
|
||||
|
||||
// gametype selection ===========================================
|
||||
itemDef
|
||||
{
|
||||
name mod_selection
|
||||
type ITEM_TYPE_LISTBOX
|
||||
feeder FEEDER_MODS
|
||||
rect (FRAME_CHOICE_X_START-1) ( FRAME_CHOICE_Y_START - 3 ) (FRAME_BUTTON_WIDTH+18) 308 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
elementwidth 30
|
||||
elementheight 19
|
||||
noBlinkingHighlight
|
||||
textfont CHOICE_TEXTFONT
|
||||
textscale CHOICE_TEXTSIZE
|
||||
forecolor CHOICE_TEXTCOLOR
|
||||
focusColor COLOR_TITLE
|
||||
disablecolor FRAME_GREY_RGB 1
|
||||
textstyle ITEM_TEXTSTYLE_NORMAL
|
||||
modal
|
||||
usePaging
|
||||
visible 1
|
||||
// x y w h len horzAlign vertAlign
|
||||
userarea 2 0 0 (FRAME_BUTTON_WIDTH+1) 19 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* BACKGROUND */
|
||||
17 0 FRAME_BUTTON_WIDTH 19 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* NAME */
|
||||
|
||||
onfocus { play CHOICE_FOCUS_SOUND; }
|
||||
onListboxSelectionChange
|
||||
{
|
||||
play CHOICE_FOCUS_SOUND;
|
||||
execnow set ui_mod_name ( getmodinfo( "modName" ) );
|
||||
execnow set ui_mod_desc ( getmodinfo( "modDescr" ) );
|
||||
}
|
||||
doubleclick
|
||||
{
|
||||
play CHOICE_ACTION_SOUND;
|
||||
open load_mod_confirm_popmenu
|
||||
}
|
||||
}
|
||||
|
||||
#undef BUTTON_SPACING
|
||||
#define BUTTON_SPACING 20
|
||||
#define RESET_BUTTON_OFFSET ( getTextWidth( locString( "@PLATFORM_BACK" ), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) + 8 + BUTTON_SPACING )
|
||||
|
||||
#ifdef PC
|
||||
FRAME_BACK_BUTTON_DEFAULT_ACTION( ON_ESC )
|
||||
#else //#ifdef PC
|
||||
FRAME_BACK_BUTTON_DEFAULT
|
||||
#endif //#ifdef PC
|
||||
|
||||
#include "ui/safearea.menu"
|
||||
}
|
||||
|
||||
// POPUPS
|
||||
#include "ui_mp/popupstyle.inc"
|
||||
#include "ui/choices_setup_popmenu.menu"
|
||||
|
||||
#undef POPUP_BUTTON_COUNT
|
||||
#define POPUP_BUTTON_COUNT 2
|
||||
|
||||
{
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( load_mod_confirm_popmenu, setFocus loadmod_confirm_popmenu2, ;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_MOD_CONFIRM", 1 )
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( dvarString( "ui_mod_name" ), 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_YES", close self; uiScript RunMod;, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_NO", close self, 1, name loadmod_confirm_popmenu_2 )
|
||||
}
|
||||
}
|
@ -1,701 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
#define OPTIONS_STYLE 1
|
||||
#include "ui_mp/menustyle.inc"
|
||||
#include "ui/choices_setup_common.menu"
|
||||
#include "ui/framestyle.inc"
|
||||
#include "ui/frame.inc"
|
||||
|
||||
#undef CHOICE_BUTTON_NAME
|
||||
#define CHOICE_BUTTON_NAME "options_multi_"
|
||||
#undef MENUDEF_NAME
|
||||
#define MENUDEF_NAME options_multi
|
||||
|
||||
#undef OPTIONS_MULTI_HEIGHT
|
||||
#undef OPTIONS_MULTI_WIDTH
|
||||
#define OPTIONS_MULTI_HEIGHT 332
|
||||
#define OPTIONS_MULTI_WIDTH OPTIONS_MULTI_HEIGHT * FRAME_ASPECT_RATIO
|
||||
|
||||
{
|
||||
menuDef
|
||||
{
|
||||
name "options_multi"
|
||||
fullScreen 0
|
||||
rect 0 0 640 480
|
||||
focusColor COLOR_FOCUSED
|
||||
soundloop ""
|
||||
|
||||
onOpen
|
||||
{
|
||||
exec "setfromdvar ui_name name";
|
||||
|
||||
LOCAL_CLOSE_ALL_BUT( options_multi )
|
||||
|
||||
setLocalVarBool ui_hideBack 1;
|
||||
|
||||
if (IsInGame())
|
||||
{
|
||||
showMenu "pausedbkgnd";
|
||||
}
|
||||
else
|
||||
{
|
||||
activateBlur;
|
||||
}
|
||||
}
|
||||
onClose
|
||||
{
|
||||
if (IsInGame())
|
||||
{
|
||||
hideMenu "pausedbkgnd";
|
||||
}
|
||||
else
|
||||
{
|
||||
deactivateBlur;
|
||||
}
|
||||
|
||||
setLocalVarBool ui_hideBack 0;
|
||||
exec "setfromdvar name ui_name";
|
||||
uiScript "updateClanInProfile"
|
||||
}
|
||||
|
||||
onESC
|
||||
{
|
||||
close self;
|
||||
open options_new_pc;
|
||||
}
|
||||
PC_TAB_SWITCH_ACTIONS( options_new_pc, options_controls_new_pc, options_controls_new_pc )
|
||||
|
||||
#include "ui_mp/leftside_options.inc"
|
||||
|
||||
#undef CHOICE_X_START
|
||||
#undef CHOICE_Y_START
|
||||
#undef CHOICE_HORIZONTAL_ALIGN
|
||||
#undef CHOICE_VERTICAL_ALIGN
|
||||
#undef CHOICE_DVAR_EXTRA_WIDTH
|
||||
#undef CHOICE_TEXT_OFFSET_X
|
||||
|
||||
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
|
||||
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
|
||||
#define CHOICE_X_START ((-OPTIONS_MULTI_WIDTH/2) - 75)
|
||||
#define CHOICE_Y_START ((-OPTIONS_MULTI_HEIGHT/2) + 32)
|
||||
#define CHOICE_DVAR_EXTRA_WIDTH 120
|
||||
#define CHOICE_TEXT_OFFSET_X -10
|
||||
|
||||
#undef CHOICE_TEXTSTYLE
|
||||
#undef CHOICE_TEXTSIZE
|
||||
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
|
||||
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
|
||||
|
||||
#undef CHOICE_TEXT_COLOR_NO_HL
|
||||
#undef CHOICE_TEXT_COLOR_HL
|
||||
#undef CHOICE_CAPTION_TEXT_COLOR_NO_HL
|
||||
#undef CHOICE_CAPTION_TEXT_COLOR_HL
|
||||
|
||||
#define CHOICE_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
|
||||
#define CHOICE_TEXT_COLOR_HL 1 1 1 1
|
||||
#define CHOICE_CAPTION_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
|
||||
#define CHOICE_CAPTION_TEXT_COLOR_HL 0 0 0 1
|
||||
|
||||
FRAME_CHOICE_SECTION_TITLE_VIS( 21, "@MENU_MULTIPLAYER_CAPS", ( dvarint( ui_multiplayer ) ) )
|
||||
FRAME_CHOICE_SECTION_TITLE_VIS( 21, "@MENU_COOPERATIVE_OPTIONS_CAPS", ( !dvarint( ui_multiplayer ) ) )
|
||||
|
||||
FRAME_CHOICE_DVARFLOATLIST_VIS( 22, "@MENU_TEAM_INDICATOR_CAPS", team_indicator, { "@MENU_INDICATOR_FULL_CAPS" 0 "@MENU_INDICATOR_ABBREVIATED_CAPS" 1 "@MENU_INDICATOR_ICON_CAPS" 2 "@MENU_INDICATOR_ALTERNATE_CAPS" 3 }, ;, 1 )
|
||||
FRAME_CHOICE_DVARYESNO_VIS( 23, "@MENU_ALLOW_DOWNLOAD_CAPS", cl_allowdownload, ;,( dvarint( ui_multiplayer ) ) )
|
||||
FRAME_CHOICE_DVARYESNO_VIS( 24, "@PATCH_OPTIONS_COLOR_FRIENDS_CAPS", cg_drawFriendInColor, ;,( dvarint( ui_multiplayer ) ) )
|
||||
FRAME_CHOICE_DVARYESNO_VIS( 25, "@PLATFORM_OPTIONS_RESTRICT_EMBLEMS_CAPS", live_restrictEmblems, ;,( dvarint( ui_multiplayer ) ) )
|
||||
|
||||
//FRAME_CHOICE_SEPARATOR( CHOICE_SEP_1 )
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
{
|
||||
menuDef
|
||||
{
|
||||
name options_multi
|
||||
fullScreen 0
|
||||
rect 0 0 370 480 // Size and position of the menu
|
||||
focusColor COLOR_FOCUSED // Menu focus color for text and items
|
||||
soundloop ""
|
||||
onOpen
|
||||
{
|
||||
exec "setfromdvar ui_name name"
|
||||
setdvar ui_background_gradient_show "1";
|
||||
}
|
||||
onClose
|
||||
{
|
||||
exec "setfromdvar name ui_name"
|
||||
}
|
||||
onESC
|
||||
{
|
||||
close options_multi;
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
origin ORIGIN_TITLE
|
||||
forecolor 1 1 1 1
|
||||
text "@MENU_MULTIPLAYER"
|
||||
textfont UI_FONT_NORMAL
|
||||
textscale TEXTSIZE_TITLE
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BUTTON
|
||||
text "@MENU_VOICE_CHAT_BUTTON"
|
||||
rect 0 0 1 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BUTTON
|
||||
text "@MENU_VOTE_YES"
|
||||
rect 0 15 1 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BUTTON
|
||||
text "@MENU_VOTE_NO"
|
||||
rect 0 30 1 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BUTTON
|
||||
text "@MENU_CHAT"
|
||||
rect 0 45 1 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BUTTON
|
||||
text "@MENU_TEAM_CHAT"
|
||||
rect 0 60 1 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BUTTON
|
||||
text "@MENU_QUICK_CHAT"
|
||||
rect 0 75 1 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BUTTON
|
||||
text "@MENU_ALLOW_DOWNLOAD"
|
||||
rect 0 90 1 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BUTTON
|
||||
text "@MENU_DRAW_HUD"
|
||||
rect 0 105 1 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BUTTON
|
||||
text "@MENU_CONNECTION"
|
||||
rect 0 120 1 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BUTTON
|
||||
text "@MENU_WEAPON_MENU"
|
||||
rect 0 135 1 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name player_name
|
||||
type ITEM_TYPE_BUTTON
|
||||
text "@MENU_PLAYER_NAME"
|
||||
rect 0 150 1 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
decoration
|
||||
|
||||
}
|
||||
|
||||
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BUTTON
|
||||
text "@MPUI_PUNKBUSTER"
|
||||
rect 0 165 1 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
decoration
|
||||
|
||||
}
|
||||
|
||||
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BIND
|
||||
text " "
|
||||
dvar "+talk"
|
||||
rect 0 0 320 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textalignx 170
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
mouseEnter
|
||||
{
|
||||
play "mouse_over";
|
||||
show keyBindStatus
|
||||
}
|
||||
mouseexit { hide keyBindStatus }
|
||||
action { play CHOICE_ACTION_SOUND; }
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BIND
|
||||
text " "
|
||||
dvar "vote yes"
|
||||
rect 0 15 320 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textalignx 170
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
mouseEnter
|
||||
{
|
||||
play "mouse_over";
|
||||
show keyBindStatus
|
||||
}
|
||||
mouseexit { hide keyBindStatus }
|
||||
action { play CHOICE_ACTION_SOUND; }
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BIND
|
||||
text " "
|
||||
dvar "vote no"
|
||||
rect 0 30 320 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textalignx 170
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
mouseEnter
|
||||
{
|
||||
play "mouse_over";
|
||||
show keyBindStatus
|
||||
}
|
||||
mouseexit { hide keyBindStatus }
|
||||
action { play CHOICE_ACTION_SOUND; }
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BIND
|
||||
text " "
|
||||
dvar "chatmodepublic"
|
||||
rect 0 45 320 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textalignx 170
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
mouseEnter
|
||||
{
|
||||
play "mouse_over";
|
||||
show keyBindStatus
|
||||
}
|
||||
mouseexit { hide keyBindStatus }
|
||||
action { play CHOICE_ACTION_SOUND; }
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BIND
|
||||
text " "
|
||||
dvar "chatmodeteam"
|
||||
rect 0 60 320 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textalignx 170
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
mouseEnter
|
||||
{
|
||||
play "mouse_over";
|
||||
show keyBindStatus
|
||||
}
|
||||
mouseexit { hide keyBindStatus }
|
||||
action { play CHOICE_ACTION_SOUND; }
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BIND
|
||||
text " "
|
||||
dvar "mp_QuickMessage"
|
||||
rect 0 75 320 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textalignx 170
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
mouseEnter
|
||||
{
|
||||
play "mouse_over";
|
||||
show keyBindStatus
|
||||
}
|
||||
mouseexit { hide keyBindStatus }
|
||||
action { play CHOICE_ACTION_SOUND; }
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_YESNO
|
||||
text " "
|
||||
dvar "cl_allowdownload"
|
||||
rect 0 90 320 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textalignx 170
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
action { play CHOICE_ACTION_SOUND; }
|
||||
mouseEnter
|
||||
{
|
||||
play "mouse_over";
|
||||
}
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_YESNO
|
||||
text " "
|
||||
dvar "hud_enable"
|
||||
rect 0 105 320 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textalignx 170
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
action { play CHOICE_ACTION_SOUND; }
|
||||
mouseEnter
|
||||
{
|
||||
play "mouse_over";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_MULTI
|
||||
text " "
|
||||
dvar "rate"
|
||||
dvarFloatList { "@MENU_ISDN" 5000 "@MENU_LAN_CABLE_XDSL" 25000 }
|
||||
rect 0 120 320 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textalignx 170
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
action { play CHOICE_ACTION_SOUND; }
|
||||
mouseEnter
|
||||
{
|
||||
play "mouse_over";
|
||||
}
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_BIND
|
||||
text " "
|
||||
dvar "openscriptmenu ingame changeweapon"
|
||||
rect 0 135 320 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textalignx 170
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
action { play CHOICE_ACTION_SOUND; }
|
||||
mouseEnter
|
||||
{
|
||||
play "mouse_over";
|
||||
}
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
name player_name
|
||||
type ITEM_TYPE_EDITFIELD
|
||||
text " "
|
||||
dvar "ui_name"
|
||||
rect 0 150 320 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textalignx 170
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
maxChars 31
|
||||
maxpaintchars 18
|
||||
mouseEnter
|
||||
{
|
||||
play "mouse_over";
|
||||
}
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name misc
|
||||
type ITEM_TYPE_YESNO
|
||||
text " "
|
||||
dvar "cl_punkbuster"
|
||||
rect 0 165 320 13
|
||||
origin 50 120
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textalignx 170
|
||||
textaligny 11
|
||||
textscale 0.25
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
visible 1
|
||||
action { play CHOICE_ACTION_SOUND; }
|
||||
mouseEnter
|
||||
{
|
||||
play "mouse_over";
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
itemDef
|
||||
{
|
||||
name cdkeybt
|
||||
text "@MENU_ENTER_KEY_CODE"
|
||||
type ITEM_TYPE_BUTTON
|
||||
style WINDOW_STYLE_FILLED
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
rect 102 330 150 20
|
||||
textalign ITEM_ALIGN_CENTER
|
||||
textscale .3
|
||||
textaligny 14
|
||||
forecolor .9 .9 .95 1
|
||||
visible 1
|
||||
textfont UI_FONT_NORMAL
|
||||
mouseEnter
|
||||
{
|
||||
play "mouse_over";
|
||||
}
|
||||
action
|
||||
{
|
||||
play CHOICE_ACTION_SOUND;
|
||||
open cdkey_menu;
|
||||
}
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name keyBindStatus
|
||||
rect 0 350 360 15
|
||||
ownerdraw UI_KEYBINDSTATUS
|
||||
text " "
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 0
|
||||
forecolor .9 .9 .9 1
|
||||
textscale .20
|
||||
textalignx -12
|
||||
textalign ITEM_ALIGN_CENTER
|
||||
textaligny 12
|
||||
visible 0
|
||||
decoration
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}//
|
||||
*/
|
@ -1,7 +0,0 @@
|
||||
// MP patch menu defs
|
||||
//
|
||||
{
|
||||
// loadMenu { "ui/patch.menu" }
|
||||
// loadMenu { "ui/patch_popups.menu" }
|
||||
loadMenu { "ui_mp/mods.menu" }
|
||||
}
|
@ -1,538 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/newframe.inc"
|
||||
|
||||
#define CHOICE_X_START -258
|
||||
#define CHOICE_Y_START 35
|
||||
#define BUTTON_BG_WIDTH 180
|
||||
|
||||
#define CHOICE_SEP_OFFSET_X 20
|
||||
#define CHOICE_SEP_OFFSET_Y -2
|
||||
#define CHOICE_SEP_1 1
|
||||
#define CHOICE_SEP_2 4
|
||||
#define CHOICE_GROUP "xboxlive_basictraining"
|
||||
|
||||
#define FLYOUT_NONE 0
|
||||
#define FLYOUT_TRAINING 3
|
||||
|
||||
#include "ui_mp/menustyle.inc"
|
||||
#include "ui/choices_setup_common.menu"
|
||||
#include "ui_mp/stats_info.inc"
|
||||
#include "ui_mp/friendslist.inc"
|
||||
|
||||
#define MENU_FONT_SIZE TEXTSIZE_DEFAULT
|
||||
#define HIGHLIGHT_SIZE 142 22
|
||||
#define MENU_FONT_COLOR 1 1 1 0.5
|
||||
#define MENU_FONT_COLOR2 1 1 1 0.5
|
||||
#define MENU_LOCKED_COLOR 0.25 0.25 0.25 1
|
||||
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X BUTTON_BG_WIDTH
|
||||
#undef CHOICE_TEXTSTYLE
|
||||
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
|
||||
|
||||
#undef CHOICE_HORIZONTAL_ALIGN
|
||||
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
|
||||
#undef CHOICE_Y_SPACING
|
||||
#define CHOICE_Y_SPACING CHOICE_SIZE_Y
|
||||
|
||||
#define FLYOUT_BG_COLOR 0 0 0 0.3
|
||||
|
||||
#define SELECTION_IMAGE_BIG( materialArg ) ( "menu_" + materialArg + "_map_select_big" )
|
||||
|
||||
#define BOT_DVAR_CHECK \
|
||||
execNow if ( dvarInt( bot_friends ) > 11 ) set bot_friends 11; exec "updategamerprofile"; \
|
||||
execNow if ( dvarInt( bot_enemies ) > 11 ) set bot_enemies 11; exec "updategamerprofile";
|
||||
#include "ui_mp/common_macro.inc"
|
||||
|
||||
#undef ON_ESC
|
||||
#define ON_ESC \
|
||||
setdvar xblive_basictraining "0"; \
|
||||
setDvar xblive_privatematch "0" \
|
||||
setDvar leaveImmediately "0"; \
|
||||
close self; \
|
||||
open main_text;
|
||||
|
||||
{
|
||||
menuDef
|
||||
{
|
||||
name menu_xboxlive_basictraining
|
||||
fullscreen 1
|
||||
rect 0 0 640 480
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_FILLED
|
||||
border 0
|
||||
soundloop MENU_MUSIC
|
||||
control MENU_CONTROL_USED
|
||||
allowSignIn
|
||||
|
||||
onOpen
|
||||
{
|
||||
execnow "validatePrivateMatchGametype";
|
||||
exec "exec dvar_defaults.cfg";
|
||||
setDvar onlinegame "1";
|
||||
setdvar xblive_rankedmatch "0";
|
||||
setdvar xblive_basictraining "1";
|
||||
setdvar ui_inviteonly "0";
|
||||
setdvar invite_visible "1";
|
||||
setdvar ui_selectlobby "0";
|
||||
setdvar popup_open "0";
|
||||
|
||||
execNow set scr_hc_tdm_scorelimit ( dvarString( scr_tdm_scorelimit ) );
|
||||
execNow set scr_hc_dm_scorelimit ( dvarString( scr_dm_scorelimit ) );
|
||||
execNow set scr_hc_tdm_timelimit ( dvarString( scr_tdm_timelimit ) );
|
||||
execNow set scr_hc_dm_timelimit ( dvarString( scr_dm_timelimit ) );
|
||||
|
||||
execNow if ( !dvarbool( "xblive_basictraining_popup" ) ) openmenu "basictraining_msg";
|
||||
|
||||
exec set ui_bg_image SELECTION_IMAGE_BIG( dvarString( ui_mapname ) );
|
||||
|
||||
exec set show_list_player_info 0;
|
||||
CLEARUIHINT
|
||||
if ( dvarInt( scr_hardcore ) == 1 )
|
||||
{
|
||||
if ( dvarString( ui_gametype ) == "dm" )
|
||||
{
|
||||
execNow set ui_gametype( "hc_dm" );
|
||||
}
|
||||
|
||||
if ( dvarString( ui_gametype ) == "tdm" )
|
||||
{
|
||||
execNow set ui_gametype( "hc_tdm" );
|
||||
}
|
||||
}
|
||||
}
|
||||
onFocus
|
||||
{
|
||||
if ( dvarString( ui_gametype ) != dm && dvarString( ui_gametype ) != hc_dm )
|
||||
{
|
||||
//BOT_DVAR_CHECK;
|
||||
}
|
||||
|
||||
setDvar ui_flyoutHasFocus FLYOUT_NONE;
|
||||
exec set ui_bg_image SELECTION_IMAGE_BIG( dvarString( ui_mapname ) );
|
||||
}
|
||||
onClose
|
||||
{
|
||||
play "uin_navigation_backout";
|
||||
setdvar popup_open "1";
|
||||
setfocus popup_hide;
|
||||
hide selection_right;
|
||||
setdvar ui_bg_image "";
|
||||
}
|
||||
onEsc
|
||||
{
|
||||
ON_ESC
|
||||
}
|
||||
|
||||
// ------------------ statics ------------------------
|
||||
#include "ui_mp/blurredbg.inc"
|
||||
|
||||
// ----------------- Scroller --------------------------
|
||||
#include "ui/scroller.inc"
|
||||
|
||||
// ----------------- title --------------------------
|
||||
CHOICE_MENU_TITLE_CENTER_ALIGN_VIS( "@MPUI_BASICTRAINING_LOBBY_CAPS", ITEM_ALIGN_TOP_RIGHT, 1 )
|
||||
|
||||
// ---------------------------- map ------------------------------------
|
||||
#define GAMEINFO_ORIENTATION 1
|
||||
#define GAMEINFO_X CHOICE_X_START
|
||||
#define GAMEINFO_Y 235
|
||||
#define GAMEINFO_ORIGIN GAMEINFO_X GAMEINFO_Y
|
||||
#define GAMEINFO_WIDTH BUTTON_BG_WIDTH
|
||||
#define GAMEINFO_WIDTH2 GAMEINFO_WIDTH
|
||||
#define GAMEINFO_HEIGHT 80
|
||||
|
||||
#include "ui_mp/game_info.inc"
|
||||
#define MAPIMAGE SELECTION_IMAGE_FINAL( dvarString( ui_mapname ) )
|
||||
#define MAPNAME locString( tableLookup( "mp/mapstable.csv", 0, dvarString( ui_mapname ), 3 ) )
|
||||
#define GAMETYPENAME locString( tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_gametype ), 1 ) )
|
||||
|
||||
#define VOTE_BG_SIZE 20
|
||||
|
||||
#define SELECTION_IMAGE_FINAL( materialArg ) \
|
||||
( "menu_" + materialArg + "_map_select_final" )
|
||||
|
||||
#define MAP_SELECTION_INFO( xPos, yPos, widthArg, heightArg, mapName, gametypeName, visArg ) \
|
||||
PREPROC_TEXT_DRAW_ALL( (xPos+widthArg-96-8) (yPos+heightArg-VOTE_BG_SIZE+1-18) 96 24 CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_BOTTOM, \
|
||||
0 0, toUpper( mapName ), TEXTSIZE_LARGE, 0, 0, ITEM_ALIGN_TOP_RIGHT, 1 1 1 1, UI_FONT_EXTRABIG, ITEM_TEXTSTYLE_NORMAL, \
|
||||
visArg, ; ) \
|
||||
PREPROC_TEXT_DRAW_VIS( (xPos+widthArg-96-8) (yPos+heightArg-VOTE_BG_SIZE+1) 96 20 CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_BOTTOM, \
|
||||
0 0, gametypeName, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_RIGHT, 1 1 1 1, \
|
||||
visArg )
|
||||
|
||||
#define MAP_X_START (-MAP_WIDTH-112)
|
||||
#define MAP_Y_START (-MAP_HEIGHT-25)
|
||||
#define MAP_WIDTH 183
|
||||
#define MAP_ASPECT_RATIO (203/275)
|
||||
#define MAP_HEIGHT (MAP_WIDTH*MAP_ASPECT_RATIO)
|
||||
|
||||
PREPROC_SHADER_DRAW_VIS_EX( MAP_X_START MAP_Y_START MAP_WIDTH MAP_HEIGHT CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_BOTTOM,
|
||||
MAPIMAGE, 1 1 1 1,
|
||||
1, ; )
|
||||
|
||||
MAP_SELECTION_INFO( MAP_X_START, MAP_Y_START, MAP_WIDTH, MAP_HEIGHT, MAPNAME, GAMETYPENAME, 1 )
|
||||
|
||||
// ---------------------- locked hint -------------------------
|
||||
#define HINT_X_START ( CHOICE_X_START - 13 )
|
||||
HINT_TEXT_ALL( 9, HINT_X_START, 7, CHOICE_SIZE_X, dvarString( ui_hint_text ), 1 1 1 1, dvarBool( ui_show_arrow ), ; )
|
||||
|
||||
|
||||
// ---------------------- party status description -------------------------
|
||||
#define STATUS_START_X 145
|
||||
#define STATUS_START_Y -48
|
||||
#define STATUS_RECT STATUS_START_X STATUS_START_Y 150 25 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_BOTTOM
|
||||
|
||||
PREPROC_TEXT_DRAW_VIS( STATUS_RECT, 0 0, "@MENU_STATUS_OPEN_DESC_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_RIGHT, MEDIUM_GRAY, when( dvarint( "party_privacyStatus" ) == 0 && !dvarbool( "xblive_basictraining" ) ) )
|
||||
PREPROC_TEXT_DRAW_VIS( STATUS_RECT, 0 0, "@MENU_STATUS_OPEN_FRIENDS_DESC_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_RIGHT, MEDIUM_GRAY, when( dvarint( "party_privacyStatus" ) == 1 && !dvarbool( "xblive_basictraining" ) ) )
|
||||
PREPROC_TEXT_DRAW_VIS( STATUS_RECT, 0 0, "@MENU_STATUS_INVITE_ONLY_DESC_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_RIGHT, MEDIUM_GRAY, when( dvarint( "party_privacyStatus" ) == 2 && !dvarbool( "xblive_basictraining" ) ) )
|
||||
PREPROC_TEXT_DRAW_VIS( STATUS_RECT, 0 0, "@MENU_STATUS_CLOSE_DESC_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_RIGHT, MEDIUM_GRAY, when( dvarint( "party_privacyStatus" ) == 3 && !dvarbool( "xblive_basictraining" ) ) )
|
||||
|
||||
|
||||
//=========================================================
|
||||
//================= MENU SELECTION ACTIONS ================
|
||||
//=========================================================
|
||||
#define SETUP_GAME_MODE \
|
||||
resetdvar scr_hardcore; \
|
||||
resetdvar scr_team_fftype; \
|
||||
resetdvar scr_player_healthregentime; \
|
||||
resetdvar scr_player_maxhealth; \
|
||||
resetdvar scr_tdm_waverespawndelay; \
|
||||
resetdvar scr_game_allowkillcam; \
|
||||
resetdvar scr_allowbattlechatter; \
|
||||
resetdvar scr_team_kickteamkillers; \
|
||||
resetdvar scr_game_suicidepointloss; \
|
||||
resetdvar scr_team_teamkillpointloss; \
|
||||
resetdvar scr_dog_health; \
|
||||
resetdvar scr_dm_playerrespawndelay; \
|
||||
resetdvar scr_disable_tacinsert; \
|
||||
if ( dvarString( ui_gametype ) == "hc_tdm" )\
|
||||
{ \
|
||||
execNow set scr_tdm_scorelimit ( dvarFloat( scr_hc_tdm_scorelimit ) ); \
|
||||
execNow set scr_tdm_timelimit ( dvarFloat( scr_hc_tdm_timelimit ) ); \
|
||||
execNow set g_gametype "tdm"; \
|
||||
execNow set ui_gametype "tdm"; \
|
||||
execNow set scr_hardcore 1; \
|
||||
execNow set scr_team_fftype 1; \
|
||||
execNow set scr_player_healthregentime 0; \
|
||||
execNow set scr_player_maxhealth 30; \
|
||||
execNow set scr_tdm_waverespawndelay 15; \
|
||||
execNow set scr_game_allowkillcam 0; \
|
||||
execNow set scr_allowbattlechatter 0; \
|
||||
execNow set scr_team_kickteamkillers 1; \
|
||||
execNow set scr_game_suicidepointloss -100; \
|
||||
execNow set scr_team_teamkillpointloss -100; \
|
||||
execNow set scr_dog_health 30; \
|
||||
} \
|
||||
if ( dvarString( ui_gametype ) == "hc_dm" )\
|
||||
{ \
|
||||
execNow set scr_dm_scorelimit ( dvarFloat( scr_hc_dm_scorelimit ) ); \
|
||||
execNow set scr_dm_timelimit ( dvarFloat( scr_hc_dm_timelimit ) ); \
|
||||
execNow set g_gametype "dm"; \
|
||||
execNow set ui_gametype "dm"; \
|
||||
execNow set scr_hardcore 1; \
|
||||
execNow set scr_player_healthregentime 0; \
|
||||
execNow set scr_player_maxhealth 30; \
|
||||
execNow set scr_game_allowkillcam 0; \
|
||||
execNow set scr_allowbattlechatter 0; \
|
||||
execNow set scr_dm_playerrespawndelay 7; \
|
||||
execNow set scr_game_suicidepointloss -50; \
|
||||
execNow set scr_dog_health 30; \
|
||||
execNow set scr_disable_tacinsert 1; \
|
||||
} \
|
||||
if ( dvarString( ui_gametype ) == "shrp" || dvarString( ui_gametype ) == "gun" || dvarString( ui_gametype ) == "oic" || dvarString( ui_gametype ) == "hlnd" ) \
|
||||
{ \
|
||||
execNow set bot_wager "1"; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
execNow set bot_wager "0"; \
|
||||
} \
|
||||
execNow set scr_hlnd_timelimit ""; \
|
||||
execNow set scr_hlnd_scorelimit ""; \
|
||||
execNow set scr_oic_timelimit ""; \
|
||||
execNow set scr_oic_scorelimit ""; \
|
||||
execNow set scr_gun_timelimit ""; \
|
||||
execNow set scr_gun_scorelimit ""; \
|
||||
execNow set scr_shrp_timelimit ""; \
|
||||
execNow set scr_shrp_scorelimit "";
|
||||
|
||||
|
||||
#define SETUP_ACTION_STARTMATCH \
|
||||
SETUP_GAME_MODE \
|
||||
exec "selectStringTableEntryInDvar mp/didyouknow.csv 0 didyouknow"; \
|
||||
uiscript StartListenServer;
|
||||
|
||||
#define SETUP_ACTION_GAMESETUP \
|
||||
open basictraining_settings;
|
||||
|
||||
#define SETUP_ACTION_CREATEACLASS \
|
||||
execnow "set ui_cac_ingame 0"; \
|
||||
setdvar invite_visible "0"; \
|
||||
/*exec "uploadstats";*/ \
|
||||
open cac_main;
|
||||
|
||||
#define SETUP_ACTION_CONTRACTS \
|
||||
exec "endsplitscreensignin"; \
|
||||
open menu_xboxlive_contracts;
|
||||
|
||||
#define SETUP_ACTION_KILLSTREAKS \
|
||||
exec "endsplitscreensignin"; \
|
||||
open menu_xboxlive_killstreaks;
|
||||
|
||||
|
||||
//=========================================================
|
||||
//===================== MENU SELECTION ====================
|
||||
//=========================================================
|
||||
#define ANY_NEW_TRAINING_PLAYERCARD_FEATURE \
|
||||
( ANY_NEW_CHALLENGES || IS_ITEM_NEW( FEATURE_COMBAT_RECORD ) )
|
||||
|
||||
#define IS_LOBBY_HOST 1
|
||||
#define IS_NOT_LOBBY_HOST 0
|
||||
|
||||
// HOST BUTTONS
|
||||
TEMP_CHOICE_BUTTON_FOCUS_VIS( 1, "@MPUI_START_MATCH_CAPS",
|
||||
SETUP_ACTION_STARTMATCH,
|
||||
SET_HINT_TEXT( "@MPUI_START_MATCH_DESC" ),
|
||||
CLEARUIHINT,
|
||||
dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 1 ), 0 0, "@MPUI_START_MATCH_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, MEDIUM_GRAY, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
|
||||
|
||||
|
||||
TEMP_CHOICE_BUTTON_FOCUS_VIS( 2, "@MPUI_CHANGE_MAP_CAPS",
|
||||
open select_map,
|
||||
SET_HINT_TEXT( "@MPUI_CHANGE_MAP_DESC" ),
|
||||
CLEARUIHINT,
|
||||
dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 2 ), 0 0, "@MPUI_CHANGE_MAP_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, MEDIUM_GRAY, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
|
||||
|
||||
|
||||
TEMP_CHOICE_BUTTON_FOCUS_VIS( 3, "@MPUI_CHANGE_GAME_MODE_CAPS",
|
||||
open select_game_mode,
|
||||
SET_HINT_TEXT( "@MPUI_CHANGE_GAME_MODE_DESC" ),
|
||||
CLEARUIHINT,
|
||||
dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 3 ), 0 0, "@MPUI_CHANGE_GAME_MODE_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, MEDIUM_GRAY, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
|
||||
|
||||
TEMP_CHOICE_BUTTON_FOCUS_VIS( 4, "@MPUI_EDIT_GAME_OPTIONS_CAPS",
|
||||
SETUP_ACTION_GAMESETUP,
|
||||
SET_HINT_TEXT( "@MPUI_EDIT_GAME_OPTIONS_DESC" ),
|
||||
CLEARUIHINT,
|
||||
dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 4 ), 0 0, "@MPUI_EDIT_GAME_OPTIONS_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, MEDIUM_GRAY, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
|
||||
|
||||
TEMP_CHOICE_BUTTON_FOCUS_VIS( 5, "@MPUI_CREATE_A_CLASS_CAPS",
|
||||
SETUP_ACTION_CREATEACLASS,
|
||||
SET_HINT_TEXT( "@MPUI_CAC_DESC" ) CLEAR_ITEM_NEW( FEATURE_CREATE_A_CLASS ),
|
||||
CLEARUIHINT,
|
||||
!IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
|
||||
TEMP_CHOICE_DBUTTON_FOCUS_VIS_EX( 5, "@MPUI_CREATE_A_CLASS_CAPS",
|
||||
SET_HINT_TEXT( GET_UNLOCK_LEVEL_STRING( FEATURE_CREATE_A_CLASS ) ),
|
||||
CLEARUIHINT,
|
||||
IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE, ; )
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 5 ), 0 0, "@MPUI_CREATE_A_CLASS_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, MEDIUM_GRAY, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
|
||||
CHOICE_NEWICON_VIS( 5, "menu_mp_lobby_new", when( ANY_NEW_CAC && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE ) )
|
||||
CHOICE_LOCKEDICON_VIS( 5, "menu_mp_lobby_locked", when( IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE ) )
|
||||
|
||||
|
||||
TEMP_CHOICE_BUTTON_FOCUS_VIS( 6, "@MENU_KILLSTREAKS_CAPS",
|
||||
SETUP_ACTION_KILLSTREAKS,
|
||||
SET_HINT_TEXT( "@MPUI_KILLSTREAKS_DESC" ) CLEAR_ITEM_NEW( FEATURE_KILLSTREAKS ),
|
||||
CLEARUIHINT,
|
||||
!IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ) && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
|
||||
TEMP_CHOICE_DBUTTON_FOCUS_VIS_EX( 6, "@MENU_KILLSTREAKS_CAPS",
|
||||
SET_HINT_TEXT( GET_UNLOCK_LEVEL_STRING( FEATURE_KILLSTREAKS ) ),
|
||||
CLEARUIHINT,
|
||||
IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ) && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE, ; )
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 6 ), 0 0, "@MENU_KILLSTREAKS_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, MEDIUM_GRAY, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
|
||||
CHOICE_NEWICON_VIS( 6, "menu_mp_lobby_new", when( IS_ITEM_NEW( FEATURE_KILLSTREAKS ) && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE ) )
|
||||
CHOICE_LOCKEDICON_VIS( 6, "menu_mp_lobby_locked", when( IS_ITEM_LOCKED( FEATURE_KILLSTREAKS ) && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE ) )
|
||||
|
||||
|
||||
TEMP_CHOICE_BUTTON_FOCUS_VIS( 8, "@MENU_PLAYERCARD_CAPS",
|
||||
SETUP_ACTION_PLAYERCARD,
|
||||
SET_HINT_TEXT( "@MPUI_PLAYERCARD_DESC" ),
|
||||
CLEARUIHINT,
|
||||
dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE )
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_RECT( 8 ), 0 0, "@MENU_PLAYERCARD_CAPS", CHOICE_TEXTSIZE, CHOICE_TEXT_OFFSET_X, 0, CHOICE_TEXTALIGN, MEDIUM_GRAY, when( dvarInt( ui_flyoutHasFocus ) != FLYOUT_NONE ); )
|
||||
CHOICE_NEWICON_VIS( 8, "menu_mp_lobby_new", when( ANY_NEW_TRAINING_PLAYERCARD_FEATURE && IS_LOBBY_HOST && dvarInt( ui_flyoutHasFocus ) == FLYOUT_NONE ) )
|
||||
|
||||
#undef CHOICE_TEXTSIZE
|
||||
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
|
||||
|
||||
#undef CHOICE_TEXTFONT
|
||||
#define CHOICE_TEXTFONT UI_FONT_NORMAL
|
||||
|
||||
// Friends button
|
||||
FRIENDS_BUTTON
|
||||
|
||||
// back button
|
||||
NEW_FRAME_BACK_BUTTON_ACTION_PC( ON_ESC )
|
||||
|
||||
#include "ui/safearea.menu"
|
||||
}
|
||||
|
||||
|
||||
#include "ui/framestyle.inc"
|
||||
#include "ui/frame.inc"
|
||||
|
||||
#undef CHOICE_GROUP
|
||||
#define CHOICE_GROUP "basictraining_difficulty"
|
||||
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START (-FRAME_DEFAULT_WIDTH/2+15)
|
||||
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START ( -FRAME_DEFAULT_HEIGHT / 2 + 15 + NEW_FRAME_BG_Y_OFFSET( FRAME_DEFAULT_HEIGHT ) )
|
||||
|
||||
#define DIFFICULTY_NAME_X 0
|
||||
#define DIFFICULTY_NAME_Y CHOICE_Y_START
|
||||
|
||||
#define ITEM_IMAGE_X DIFFICULTY_NAME_X
|
||||
#define ITEM_IMAGE_Y (CHOICE_Y_START-5)
|
||||
#define ITEM_IMAGE_ASPECT_RATIO 1
|
||||
#define ITEM_IMAGE_WIDTH (ITEM_IMAGE_HEIGHT * ITEM_IMAGE_ASPECT_RATIO)
|
||||
#define ITEM_IMAGE_HEIGHT 240
|
||||
#define ITEM_IMAGE_SIZE ITEM_IMAGE_WIDTH ITEM_IMAGE_HEIGHT
|
||||
|
||||
#define DIFFICULTY_NAME_SIZE ITEM_IMAGE_WIDTH 30
|
||||
|
||||
#define DIFFICULTY_DESC_X (ITEM_IMAGE_X + 20)
|
||||
#define DIFFICULTY_DESC_Y (ITEM_IMAGE_Y + ITEM_IMAGE_HEIGHT - 20)
|
||||
#define DIFFICULTY_DESC_SIZE 200 75
|
||||
|
||||
#define DIFFICULTY_INFO \
|
||||
/* Name */ \
|
||||
PREPROC_TEXT_DRAW( DIFFICULTY_NAME_X DIFFICULTY_NAME_Y DIFFICULTY_NAME_SIZE CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, \
|
||||
localVarString( ui_info_name ), \
|
||||
TEXTSIZE_LARGE, 0, 0, ITEM_ALIGN_TOP_CENTER, 1 1 1 1 ) \
|
||||
/* Image */ \
|
||||
PREPROC_SHADER_DRAW( ITEM_IMAGE_X ITEM_IMAGE_Y ITEM_IMAGE_SIZE CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, \
|
||||
localVarString( ui_diff_pic ), 1 1 1 0.9 ) \
|
||||
/* Description */ \
|
||||
PREPROC_TEXT_DRAW_VIS_EX( DIFFICULTY_DESC_X DIFFICULTY_DESC_Y DIFFICULTY_DESC_SIZE CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0, \
|
||||
localVarString( ui_info ), \
|
||||
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_CENTER, FRAME_LT_GREY_RGB 1, \
|
||||
1, autowrapped )
|
||||
|
||||
#define DIFFICULTY_ONFOCUS( descArg, nameArg, imageArg )\
|
||||
setLocalVarString ui_info descArg; \
|
||||
setLocalVarString ui_info_name nameArg; \
|
||||
setLocalVarString ui_diff_pic imageArg
|
||||
|
||||
#define SET_DIFFICULTY( difficulty ) \
|
||||
exec set bot_difficulty difficulty; \
|
||||
close self;
|
||||
|
||||
#undef CHOICE_SEP_SPACING
|
||||
#define CHOICE_SEP_SPACING 0
|
||||
|
||||
menuDef
|
||||
{
|
||||
name basictraining_difficulty
|
||||
rect 0 0 640 480
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_FILLED
|
||||
soundloop MENU_MUSIC
|
||||
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
|
||||
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED
|
||||
openSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
|
||||
onOpen
|
||||
{
|
||||
activateBlur;
|
||||
focusFirst;
|
||||
play uin_navigation_menu_lg_open;
|
||||
}
|
||||
onFocus { }
|
||||
onClose
|
||||
{
|
||||
deactivateBlur;
|
||||
execNow "updategamerprofile";
|
||||
}
|
||||
onESC
|
||||
{
|
||||
close self;
|
||||
}
|
||||
execKeyInt BUTTON_B { }
|
||||
|
||||
FRAME_DEFAULT
|
||||
FRAME_TITLE_DEFAULT( "@MENU_SELECT_DIFFICULTY_CAPS", 1 )
|
||||
|
||||
//FRAME_SUBTITLE_DEFAULT( "@MENU_SELECT_DIFF_DESC", 1 ) This was commented out in the main basictraining/difficulty menus on all platforms in cl#702108, so there doesn't seem to be a good reason to have it here any longer
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 1, "@MENU_RECRUIT_CAPS",
|
||||
SET_DIFFICULTY( "easy" ),
|
||||
DIFFICULTY_ONFOCUS( "@MENU_DIFF_RECRUIT_DESC", "@MENU_RECRUIT_CAPS", "playlist_sp_recr" ),
|
||||
;, 1, ; )
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 2, "@MENU_REGULAR_CAPS",
|
||||
SET_DIFFICULTY( "normal" ),
|
||||
DIFFICULTY_ONFOCUS( "@MENU_DIFF_REGULAR_DESC", "@MENU_REGULAR_CAPS", "playlist_sp_reg" ),
|
||||
;, 1, ; )
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 3, "@MENU_HARDENED_CAPS",
|
||||
SET_DIFFICULTY( "hard" ),
|
||||
DIFFICULTY_ONFOCUS( "@MENU_DIFF_HARDENED_DESC", "@MENU_HARDENED_CAPS", "playlist_sp_hard" ),
|
||||
;, 1, ; )
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 4, "@MENU_VETERAN_CAPS",
|
||||
SET_DIFFICULTY( "fu" ),
|
||||
DIFFICULTY_ONFOCUS( "@MENU_DIFF_VETERAN_DESC", "@MENU_VETERAN_CAPS", "playlist_sp_vet" ),
|
||||
;, 1, ; )
|
||||
|
||||
DIFFICULTY_INFO
|
||||
}
|
||||
|
||||
|
||||
#undef CHOICE_FOCUS_SOUND
|
||||
#define CHOICE_FOCUS_SOUND "uin_navigation_over"
|
||||
|
||||
#undef CHOICE_Y_SPACING
|
||||
#define CHOICE_Y_SPACING (CHOICE_SIZE_Y + 2)
|
||||
|
||||
#include "ui_mp/popupstyle.inc"
|
||||
#include "ui/choices_setup_popmenu.menu"
|
||||
|
||||
#undef POPUP_WIDTH
|
||||
#define POPUP_WIDTH MEDIUM_POPUP_WIDTH
|
||||
#undef POPUP_HEIGHT
|
||||
#define POPUP_HEIGHT MEDIUM_POPUP_HEIGHT
|
||||
#undef MEDIUM_POPUP_TITLE_X_START
|
||||
#define MEDIUM_POPUP_TITLE_X_START POPUP_SIDE_PAD
|
||||
#undef MEDIUM_POPUP_TITLE_Y_START
|
||||
#define MEDIUM_POPUP_TITLE_Y_START POPUP_SIDE_PAD
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X ( (MEDIUM_POPUP_WIDTH - (POPUP_SIDE_PAD * 2) ) / 2 )
|
||||
|
||||
#undef POPUP_BUTTON_COUNT
|
||||
#define POPUP_BUTTON_COUNT 1
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START POPUP_Y_START_BOTTOM
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( basictraining_msg, ;, close self;, POPUP_GLOW_WHITE, 0, 1 )
|
||||
onClose
|
||||
{
|
||||
setDvar xblive_basictraining_popup "1";
|
||||
open basictraining_difficulty;
|
||||
}
|
||||
execkeyint BUTTON_START {}
|
||||
execKeyInt APAD_UP {}
|
||||
execKeyInt DPAD_UP {}
|
||||
execKeyInt APAD_DOWN {}
|
||||
execKeyInt DPAD_DOWN {}
|
||||
execKeyInt APAD_LEFT {}
|
||||
execKeyInt DPAD_LEFT {}
|
||||
execKeyInt APAD_RIGHT {}
|
||||
execKeyInt DPAD_RIGHT {}
|
||||
|
||||
PREPROC_TEXT_DRAW_VIS_EX( MEDIUM_POPUP_TITLE_X_START MEDIUM_POPUP_TITLE_Y_START (MEDIUM_POPUP_WIDTH-30) MEDIUM_POPUP_TITLE_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
|
||||
"@MPUI_BASICTRAINING_LOBBY_CAPS", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, 1, autowrapped )
|
||||
|
||||
PREPROC_TEXT_DRAW_VIS_EX( MEDIUM_POPUP_TITLE_X_START (MEDIUM_POPUP_TITLE_Y_START+MEDIUM_POPUP_TITLE_HEIGHT+10) (MEDIUM_POPUP_WIDTH-30) 100 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0,
|
||||
"@MPUI_BASICTRAINING_POPUP_DESC", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, 1, autowrapped )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_CONTINUE", close self;, 1, ; )
|
||||
}
|
||||
}
|
@ -1,190 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
#include "ui/framestyle.inc"
|
||||
#include "ui_mp/newframe.inc"
|
||||
#include "ui/choices_setup_common.menu"
|
||||
#include "ui_mp/custom_mode_layout.inc"
|
||||
#include "ui_mp/custom_mode.inc"
|
||||
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START -150
|
||||
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START -200
|
||||
|
||||
#ifdef PC
|
||||
#undef CHOICE_TEXTSIZE
|
||||
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
|
||||
#endif //#ifdef PC
|
||||
|
||||
#define SERVERSETTINGS_NAME_X 40
|
||||
#define SERVERSETTINGS_NAME_Y (80)
|
||||
#define SERVERSETTINGS_NAME_SIZE SERVERSETTINGS_IMAGE_WIDTH 30
|
||||
|
||||
#define SERVERSETTINGS_IMAGE_X SERVERSETTINGS_NAME_X
|
||||
#define SERVERSETTINGS_IMAGE_Y (CHOICE_Y_START - 170)
|
||||
#define SERVERSETTINGS_IMAGE_ASPECT_RATIO 1.0
|
||||
#define SERVERSETTINGS_IMAGE_WIDTH 180
|
||||
#define SERVERSETTINGS_IMAGE_HEIGHT (SERVERSETTINGS_IMAGE_WIDTH * SERVERSETTINGS_IMAGE_ASPECT_RATIO)
|
||||
#define SERVERSETTINGS_IMAGE_SIZE SERVERSETTINGS_IMAGE_WIDTH SERVERSETTINGS_IMAGE_HEIGHT
|
||||
|
||||
#define SERVERSETTINGS_DESC_X 0
|
||||
#define SERVERSETTINGS_DESC_Y (CHOICE_Y_START + 20)
|
||||
#define SERVERSETTINGS_DESC_SIZE 244 60
|
||||
|
||||
#undef DEFAULT_SLIDE_IN_SPEED
|
||||
#define DEFAULT_SLIDE_IN_SPEED 180
|
||||
|
||||
#undef DEFAULT_SLIDE_OUT_SPEED
|
||||
#define DEFAULT_SLIDE_OUT_SPEED 180
|
||||
|
||||
#define CHOICE_BUTTON_NAME "SERVERSETTINGS_"
|
||||
#define MENUDEF_NAME server_settings
|
||||
|
||||
#define SERVERSETTINGS_FRAME_WIDTH NEW_FRAME_DEFAULT_WIDTH
|
||||
#define SERVERSETTINGS_FRAME_HEIGHT NEW_FRAME_DEFAULT_HEIGHT
|
||||
|
||||
#undef ON_ESC
|
||||
#define ON_ESC \
|
||||
play uin_navigation_menu_lg_close; \
|
||||
close self;
|
||||
|
||||
menuDef
|
||||
{
|
||||
name MENUDEF_NAME
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_FILLED
|
||||
soundloop MENU_MUSIC
|
||||
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
|
||||
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED
|
||||
openSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
|
||||
onOpen
|
||||
{
|
||||
activateBlur;
|
||||
play uin_navigation_menu_lg_open;
|
||||
setdvar invite_visible "0";
|
||||
}
|
||||
onFocus { }
|
||||
onClose
|
||||
{
|
||||
deactivateBlur;
|
||||
setdvar invite_visible "1";
|
||||
}
|
||||
onESC
|
||||
{
|
||||
ON_ESC
|
||||
}
|
||||
|
||||
NEW_FRAME( SERVERSETTINGS_FRAME_WIDTH, SERVERSETTINGS_FRAME_HEIGHT )
|
||||
NEW_FRAME_TITLE( SERVERSETTINGS_FRAME_WIDTH, SERVERSETTINGS_FRAME_HEIGHT, "@MENU_SERVER_SETTINGS_CAPS", 1 )
|
||||
|
||||
// Server Name
|
||||
FRAME_CHOICE_DVAREDIT_FOCUS_VIS_EX( 2, "@PATCH_SERVER_NAME_CAPS",
|
||||
"sv_hostname", 20, 20,
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_SERVER_NAME_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
// Minimum Ping
|
||||
FRAME_CHOICE_DVAREDIT_NUMERIC_FOCUS_VIS_EX( 4, "@PATCH_MINIMUM_PING_CAPS",
|
||||
"sv_minping", 4,
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_MINIMUM_PING_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
// Maximum Ping
|
||||
FRAME_CHOICE_DVAREDIT_NUMERIC_FOCUS_VIS_EX( 5, "@PATCH_MAXIMUM_PING_CAPS",
|
||||
"sv_maxping", 4,
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_MAXIMUM_PING_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
// Password
|
||||
FRAME_CHOICE_DVAREDIT_FOCUS_VIS_EX( 6, "@PATCH_PASSWORD1_CAPS",
|
||||
"g_password", 12, 12,
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_PASSWORD_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
// Voice Chat Enabled
|
||||
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 7, "@MENU_VOICECHAT_CAPS",
|
||||
"sv_voice",
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_VOICECHAT_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
// Team Change Enabled
|
||||
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 8, "@PATCH_MP_TEAMCHANGE_ALLOW_CAPS",
|
||||
"g_allow_teamchange",
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_MP_TEAMCHANGE_ALLOW_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
|
||||
// Team Change Keep Balanced
|
||||
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 9, "@PATCH_MP_TEAMCHANGE_KEEPBALANCED_CAPS",
|
||||
"g_teamchange_keepbalanced",
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_MP_TEAMCHANGE_KEEPBALANCED_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
// Team Change Grace Period
|
||||
FRAME_CHOICE_DVAREDIT_NUMERIC_FOCUS_VIS_EX( 10, "@PATCH_MP_TEAMCHANGE_GRACEPERIOD_CAPS",
|
||||
"g_teamchange_graceperiod", 4,
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_MP_TEAMCHANGE_GRACEPERIOD_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
// Auto-Balance Enabled
|
||||
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 11, "@PATCH_AUTOBALANCE_TEAMS_CAPS",
|
||||
"scr_teambalance",
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_AUTO_BALANCE_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
|
||||
// Voting Enabled
|
||||
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 12, "@PATCH_ALLOW_VOTING_CAPS",
|
||||
"g_allowvote",
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_ALLOW_VOTING_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
// Pre-game enabled
|
||||
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 13, "@PATCH_PREGAME_ENABLED_CAPS",
|
||||
"g_pregame_enabled",
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_PRE_MATCH_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
// Pre-game min players
|
||||
FRAME_CHOICE_DVAREDIT_NUMERIC_FOCUS_VIS_EX( 14, "@PATCH_PREGAME_MINPLAYERS_CAPS",
|
||||
"party_minplayers", 3,
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_MINIMUM_PLAYERS_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
// Maximum Players
|
||||
FRAME_CHOICE_DVAREDIT_NUMERIC_FOCUS_VIS_EX( 15, "@PATCH_MAXIMUM_PLAYERS_CAPS",
|
||||
"sv_maxclients", 3,
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_MAXIMUM_PLAYERS_DESC", "" ),
|
||||
CLEAR_CHOICE_DESC, 1, ; )
|
||||
|
||||
// VAC
|
||||
FRAME_CHOICE_DVARYESNO_FOCUS_VIS_EX( 16, "@PLATFORM_VAC_CAPS",
|
||||
"sv_vac",
|
||||
;,
|
||||
SET_CHOICE_DESC( "", "@PATCH_VALVE_ANTI_CHEAT_DESC", "" ),
|
||||
CLEAR_CHIOCE_DESC, 1, ; )
|
||||
|
||||
HINT_TEXT_ALL_RECT( CHOICE_X_START, ( (SERVERSETTINGS_FRAME_HEIGHT / 2) - 30 ), ( CHOICE_SIZE_X ), dvarString( ui_choice_desc ), 1 1 1 1, ( MenuHasFocus() && dvarString( ui_choice_desc ) != "" ), ; )
|
||||
|
||||
NEW_FRAME_BACK_BUTTON_ACTION( SERVERSETTINGS_FRAME_WIDTH, SERVERSETTINGS_FRAME_HEIGHT, ON_ESC )
|
||||
|
||||
#include "ui/safearea.menu"
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,355 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
#include "ui/framestyle.inc"
|
||||
#include "ui_mp/newframe.inc"
|
||||
#include "ui/frame.inc"
|
||||
#include "ui_mp/menustyle.inc"
|
||||
#include "ui_mp/overlaybg.inc"
|
||||
#include "ui/choices_setup_common.menu"
|
||||
#include "ui_mp/popup_player_info.inc"
|
||||
#include "ui_mp/stats_info.inc"
|
||||
|
||||
#ifdef PC
|
||||
#include "ui_mp/popupstyle.inc"
|
||||
#include "ui/choices_setup_popmenu.menu"
|
||||
|
||||
#undef POPUP_BUTTON_COUNT
|
||||
#define POPUP_BUTTON_COUNT 3
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( "pc_editclantag", setdvar ui_clantag_new dvarString( clanName ); setFocus nameEntry;, ;, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MPUI_EDIT_CLAN_TAG_CAPS", 1 )
|
||||
|
||||
itemDef
|
||||
{
|
||||
name nameEntry
|
||||
TYPE ITEM_TYPE_ALPHANUMERICFIELD
|
||||
text "@MENU_NAME1"
|
||||
dvar "ui_clantag_new"
|
||||
rect CHOICE_RECT( 1 )
|
||||
textaligny 2
|
||||
maxchars 4
|
||||
maxpaintchars 4
|
||||
textalign ITEM_ALIGN_MIDDLE_LEFT
|
||||
textfont UI_FONT_NORMAL
|
||||
textscale TEXTSIZE_DEFAULT
|
||||
forecolor .9 .9 .9 1
|
||||
style WINDOW_STYLE_FILLED
|
||||
backcolor 0 0 0 .3
|
||||
visible 1
|
||||
mouseenter { show keyBindStatus; play CHOICE_FOCUS_SOUND; }
|
||||
mouseexit { hide keyBindStatus; setfocus ok_button; }
|
||||
accept { }
|
||||
}
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_OK", execnow setclanname; close self;, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MENU_CANCEL", close self;, 1, ; )
|
||||
}
|
||||
#endif
|
||||
|
||||
#define PLAYER_CARD_CLAN_TAG_MENU_HEIGHT NEW_FRAME_DEFAULT_HEIGHT
|
||||
#define PLAYER_CARD_CLAN_TAG_MENU_WIDTH ( PLAYER_CARD_CLAN_TAG_MENU_HEIGHT * FRAME_ASPECT_RATIO )
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START ( -PLAYER_CARD_CLAN_TAG_MENU_WIDTH / 2 + 15 )
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START ( -PLAYER_CARD_CLAN_TAG_MENU_HEIGHT / 2 + 15 + NEW_FRAME_BG_Y_OFFSET( PLAYER_CARD_CLAN_TAG_MENU_HEIGHT ) )
|
||||
|
||||
#undef CHOICE_GROUP
|
||||
#define CHOICE_GROUP "playercard"
|
||||
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X NEW_FRAME_BUTTON_WIDTH
|
||||
#undef CHOICE_TEXTSTYLE
|
||||
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
|
||||
#undef CHOICE_TEXTCOLOR
|
||||
#define CHOICE_TEXTCOLOR NEW_FRAME_COMMON_TEXT_COLOR
|
||||
|
||||
#undef CHOICE_HORIZONTAL_ALIGN
|
||||
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
|
||||
|
||||
#undef CHOICE_VERTICAL_ALIGN
|
||||
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
|
||||
|
||||
#ifdef XENON
|
||||
#define SELECT_ICON "ui_button_xenon_3d_a_32x32"
|
||||
#endif
|
||||
#ifdef PS3
|
||||
#define SELECT_ICON "ui_button_ps3_x_32x32"
|
||||
#endif
|
||||
|
||||
#define SET_CLANTAG_HINT \
|
||||
if ( isclantagfeaturelocked( GetCurrentClanTagFeature() ) ) \
|
||||
{ \
|
||||
SET_HINT_TEXT( (locString( CLASS_PRESTIGE_UNLOCK_DESC, GetClanTagFeaturePlevel( GetCurrentClanTagFeature() ) )) ) \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
CLEARUIHINT \
|
||||
}
|
||||
#ifdef PC
|
||||
#define PLAYER_CARD_LISTBOX_RECT_EDIT (CHOICE_X_START-3) (CHOICE_Y_START+NEW_FRAME_BUTTON_HEIGHT+2) (CHOICE_SIZE_X+3) 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
#define PLAYER_CARD_LISTBOX_RECT (CHOICE_X_START-3) (CHOICE_Y_START+NEW_FRAME_BUTTON_HEIGHT*4+2) (CHOICE_SIZE_X+3) 150 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
#else //#ifdef PC
|
||||
#define PLAYER_CARD_LISTBOX_RECT_EDIT (CHOICE_X_START-3) (CHOICE_Y_START+NEW_FRAME_BUTTON_HEIGHT+2) (CHOICE_SIZE_X+3) 250 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
#define PLAYER_CARD_LISTBOX_RECT (CHOICE_X_START-3) (CHOICE_Y_START+NEW_FRAME_BUTTON_HEIGHT*4+2) (CHOICE_SIZE_X+3) 250 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
#endif //#ifdef PC
|
||||
|
||||
#undef LIST_X_START
|
||||
#define LIST_X_START ( -PLAYER_CARD_CLAN_TAG_MENU_WIDTH / 2 + 15 )
|
||||
#undef LIST_Y_START
|
||||
#define LIST_Y_START ( -PLAYER_CARD_CLAN_TAG_MENU_HEIGHT / 2 + 15 + NEW_FRAME_BG_Y_OFFSET( PLAYER_CARD_CLAN_TAG_MENU_HEIGHT ) )
|
||||
#undef LIST_HEIGHT
|
||||
#define LIST_HEIGHT (PLAYER_CARD_CLAN_TAG_MENU_HEIGHT-120)
|
||||
#undef LIST_WIDTH
|
||||
#define LIST_WIDTH (PLAYER_CARD_CLAN_TAG_MENU_WIDTH/2-40)
|
||||
|
||||
#define PLAYER_EMBLEM_BG_SIZE (190)
|
||||
#define PLAYER_EMBLEM_SIZE (PLAYER_EMBLEM_BG_SIZE - 20)
|
||||
#define PLAYER_EMBLEM_X_START 70
|
||||
#define PLAYER_EMBLEM_Y_START (CHOICE_Y_START+20)
|
||||
|
||||
#define PLAYER_CARD_COMMON_ITEMS \ \
|
||||
/* PLAYER NAME */ \
|
||||
PLAYER_CLAN_TAG_AND_NAME( PLAYER_EMBLEM_X_START, (PLAYER_EMBLEM_Y_START-18), 1 ) \
|
||||
/* BACKGROUND FOR EMBLEM */ \
|
||||
itemDef \
|
||||
{ \
|
||||
rect PLAYER_EMBLEM_X_START PLAYER_EMBLEM_Y_START PLAYER_EMBLEM_BG_SIZE PLAYER_EMBLEM_BG_SIZE CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN \
|
||||
style WINDOW_STYLE_SHADER_FRAMED \
|
||||
frame 16 0.5 FRAME_SIDE_ALL \
|
||||
background "menu_mp_lobby_frame_circle" \
|
||||
forecolor 0 0 0 0.4 \
|
||||
visible 1 \
|
||||
decoration \
|
||||
} \
|
||||
/* PLAYER EMBLEM */ \
|
||||
PLAYER_EMBLEM_ALL( (PLAYER_EMBLEM_X_START+10), (PLAYER_EMBLEM_Y_START+10), PLAYER_EMBLEM_SIZE, PLAYER_EMBLEM_SIZE, 1 )
|
||||
|
||||
#ifdef CONSOLE
|
||||
#define CLAN_TAG_SPECIAL_ESC( actionArg ) \
|
||||
execKeyInt KEY_ESCAPE \
|
||||
{ \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
actionArg; \
|
||||
}
|
||||
#else // #ifdef CONSOLE
|
||||
#define CLAN_TAG_SPECIAL_ESC( actionArg )
|
||||
#endif //#ifdef CONSOLE
|
||||
|
||||
#ifdef PC
|
||||
#define CLAN_TAG_LIST_PC_ACTIONS \
|
||||
mouseenter \
|
||||
{ \
|
||||
setfocus "clan_tag_list" \
|
||||
}
|
||||
#else //#ifdef PC
|
||||
#define CLAN_TAG_LIST_PC_ACTIONS
|
||||
#endif //#ifdef PC
|
||||
|
||||
#define CLAN_TAG_LIST( feederType, rectArg, execCommand, onActionArg, selectionChangeArgs, visArg, extraArgs ) \
|
||||
itemDef\
|
||||
{ \
|
||||
name "clan_tag_list" \
|
||||
type ITEM_TYPE_LISTBOX \
|
||||
feeder feederType \
|
||||
rect rectArg \
|
||||
origin 0 0 \
|
||||
elementwidth 30 \
|
||||
elementheight 19 \
|
||||
elementtype LISTBOX_TEXT \
|
||||
textstyle ITEM_TEXTSTYLE_NORMAL \
|
||||
textfont UI_FONT_NORMAL \
|
||||
textscale TEXTSIZE_DEFAULT \
|
||||
textalignx 12 \ \
|
||||
textaligny 0 \
|
||||
forecolor CHOICE_TEXTCOLOR \
|
||||
focusColor CHOICE_TEXTCOLOR \
|
||||
disableColor CHOICE_TEXTCOLOR \
|
||||
noscrollbars \
|
||||
selectIcon SELECT_ICON \
|
||||
outlineColor 1 1 1 1 \
|
||||
elementHighlightColor 0 0 0 1 \
|
||||
elementBackgroundColor NEW_FRAME_TRANSPARENCY \
|
||||
modal \
|
||||
noBlinkingHighlight \
|
||||
visible visArg \
|
||||
userarea 4 0 0 CHOICE_SIZE_X 17 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* Name */ \
|
||||
20 1 15 15 16 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* Image */ \
|
||||
(CHOICE_SIZE_X-60) 0 50 17 24 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* Cost */ \
|
||||
(CHOICE_SIZE_X+2) (17/2-LOCK_SIZE/2) LOCK_SIZE LOCK_SIZE 24 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* Lock */ \
|
||||
onfocus \
|
||||
{ \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
SET_CLANTAG_HINT \
|
||||
} \
|
||||
onListboxSelectionChange \
|
||||
{ \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
selectionChangeArgs \
|
||||
SET_CLANTAG_HINT \
|
||||
} \
|
||||
doubleclick \
|
||||
{ \
|
||||
if( IsClanTagFeaturePurchased( GetCurrentClanTagFeature() ) ) \
|
||||
{ \
|
||||
execNow setClanTag ( GetCurrentClanTagFeature() ); \
|
||||
} \
|
||||
elseif( !IsClanTagFeatureLocked( GetCurrentClanTagFeature() ) && ( GetClanTagFeatureCost( GetCurrentClanTagFeature() ) <= GetStatByName( "CODPOINTS" ) ) ) \
|
||||
{ \
|
||||
open PurchaseClanTagFeatureConfirmation; \
|
||||
} \
|
||||
} \
|
||||
execKeyInt BUTTON_X \
|
||||
{ \
|
||||
} \
|
||||
CLAN_TAG_SPECIAL_ESC( onActionArg ) \
|
||||
CLAN_TAG_LIST_PC_ACTIONS \
|
||||
extraArgs \
|
||||
}
|
||||
|
||||
#ifdef PC
|
||||
#define EDIT_CLAN_TAG_ACTION \
|
||||
doubleclick \
|
||||
{ \
|
||||
open pc_editclantag; \
|
||||
}
|
||||
#else //#ifdef PC
|
||||
#define EDIT_CLAN_TAG_ACTION \
|
||||
doubleclick \
|
||||
{ \
|
||||
execNow editclanname; \
|
||||
}
|
||||
#endif //#ifdef PC
|
||||
|
||||
#ifdef PC
|
||||
#define CLAN_TAG_LIST_EDIT_PC_ACTIONS \
|
||||
mouseenter \
|
||||
{ \
|
||||
setfocus "clan_tag_list_edit" \
|
||||
}
|
||||
#else //#ifdef PC
|
||||
#define CLAN_TAG_LIST_EDIT_PC_ACTIONS
|
||||
#endif //#ifdef PC
|
||||
|
||||
#define CLAN_TAG_LIST_EDIT( feederType, rectArg, execCommand, onActionArg, selectionChangeArgs, visArg, extraArgs ) \
|
||||
itemDef\
|
||||
{ \
|
||||
name "clan_tag_list_edit" \
|
||||
type ITEM_TYPE_LISTBOX \
|
||||
feeder feederType \
|
||||
rect rectArg \
|
||||
origin 0 0 \
|
||||
elementwidth 30 \
|
||||
elementheight 19 \
|
||||
elementtype LISTBOX_TEXT \
|
||||
textstyle ITEM_TEXTSTYLE_NORMAL \
|
||||
textfont UI_FONT_NORMAL \
|
||||
textscale TEXTSIZE_DEFAULT \
|
||||
textalignx 22 \
|
||||
textaligny 0 \
|
||||
forecolor CHOICE_TEXTCOLOR \
|
||||
focusColor CHOICE_TEXTCOLOR \
|
||||
disableColor CHOICE_TEXTCOLOR \
|
||||
noscrollbars \
|
||||
selectIcon SELECT_ICON \
|
||||
outlineColor 1 1 1 1 \
|
||||
elementHighlightColor 0 0 0 1 \
|
||||
elementBackgroundColor NEW_FRAME_TRANSPARENCY \
|
||||
modal \
|
||||
noBlinkingHighlight \
|
||||
visible visArg \
|
||||
onfocus \
|
||||
{ \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
setdvar ui_show_arrow "0"; \
|
||||
} \
|
||||
onListboxSelectionChange \
|
||||
{ \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
selectionChangeArgs \
|
||||
setdvar ui_show_arrow "0"; \
|
||||
} \
|
||||
EDIT_CLAN_TAG_ACTION \
|
||||
execKeyInt BUTTON_X \
|
||||
{ \
|
||||
} \
|
||||
CLAN_TAG_SPECIAL_ESC( onActionArg ) \
|
||||
CLAN_TAG_LIST_EDIT_PC_ACTIONS \
|
||||
extraArgs \
|
||||
}
|
||||
|
||||
#undef ON_ESC
|
||||
#define ON_ESC \
|
||||
execnow "uploadstats"; \
|
||||
execnow changemenucloseslidedirection menu_playercards_clantag MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT; \
|
||||
close self; \
|
||||
open menu_playercard_self;
|
||||
|
||||
menuDef
|
||||
{
|
||||
name menu_playercards_clantag
|
||||
rect 0 0 640 480 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_FILLED
|
||||
control MENU_CONTROL_OPENER
|
||||
priority MENU_PRI_ONTOP
|
||||
soundloop MENU_MUSIC
|
||||
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
|
||||
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED
|
||||
openSlideDirection MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT
|
||||
closeSlideDirection MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT
|
||||
popup
|
||||
onOpen
|
||||
{
|
||||
setLocalVarString ui_choicegroup CHOICE_GROUP;
|
||||
focusFirst;
|
||||
}
|
||||
onEsc
|
||||
{
|
||||
ON_ESC
|
||||
}
|
||||
onFocus
|
||||
{
|
||||
setLocalVarString ui_choicegroup CHOICE_GROUP;
|
||||
activateBlur;
|
||||
}
|
||||
onClose
|
||||
{
|
||||
deactivateBlur;
|
||||
}
|
||||
|
||||
NEW_FRAME( PLAYER_CARD_CLAN_TAG_MENU_WIDTH, PLAYER_CARD_CLAN_TAG_MENU_HEIGHT )
|
||||
|
||||
// Title
|
||||
NEW_FRAME_TITLE( PLAYER_CARD_CLAN_TAG_MENU_WIDTH, PLAYER_CARD_CLAN_TAG_MENU_HEIGHT, "@MPUI_CLAN_TAG_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( PLAYER_CARD_CLAN_TAG_MENU_WIDTH, PLAYER_CARD_CLAN_TAG_MENU_HEIGHT, 1 )
|
||||
|
||||
/* Label for "Edit clan tag" */
|
||||
PREPROC_TEXT_DRAW( CHOICE_X_START (CHOICE_Y_START+2) 100 10 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0,
|
||||
"@MPUI_EDIT_CLAN_TAG_CAPS",
|
||||
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_LT_GREY_RGB 1 )
|
||||
|
||||
// CLAN TAG BUTTON
|
||||
CLAN_TAG_LIST_EDIT( FEEDER_CLANTAG_FEATURES_EDIT, PLAYER_CARD_LISTBOX_RECT_EDIT, ( dvarString( ui_execString ) );, ;, ;, 1, ; )
|
||||
|
||||
/* Label for "Clan Tag color" */
|
||||
PREPROC_TEXT_DRAW( CHOICE_X_START (CHOICE_Y_START+NEW_FRAME_BUTTON_HEIGHT*3+2) 100 10 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN, 0 0,
|
||||
"@MPUI_CLAN_TAG_COLOR_CAPS",
|
||||
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, NEW_FRAME_LT_GREY_RGB 1 )
|
||||
|
||||
// CLAN TAG LIST
|
||||
CLAN_TAG_LIST( FEEDER_CLANTAG_FEATURES, PLAYER_CARD_LISTBOX_RECT, ( dvarString( ui_execString ) );, ;, ;, 1, ; )
|
||||
|
||||
PLAYER_CARD_COMMON_ITEMS
|
||||
|
||||
HINT_TEXT( 13, CHOICE_X_START, dvarString( ui_hint_text ), dvarBool( ui_show_arrow ) )
|
||||
|
||||
#ifdef PC
|
||||
NEW_FRAME_BACK_BUTTON_ACTION( FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, ON_ESC; )
|
||||
#else //#ifdef PC
|
||||
NEW_FRAME_BACK_BUTTON( PLAYER_CARD_CLAN_TAG_MENU_WIDTH, PLAYER_CARD_CLAN_TAG_MENU_HEIGHT )
|
||||
#endif //#ifdef PC
|
||||
|
||||
#include "ui/safearea.menu"
|
||||
}
|
@ -1,166 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
|
||||
#include "ui/framestyle.inc"
|
||||
#include "ui_mp/newframe.inc"
|
||||
|
||||
#define LIST_ELEM_HEIGHT 18
|
||||
#define MAX_PLAYERS 32
|
||||
|
||||
#define PLAYERLIST_HEIGHT ((MAX_PLAYERS/2)*LIST_ELEM_HEIGHT)
|
||||
#define PLAYERLIST_WIDTH 235
|
||||
#define PLAYERLIST_SPACING 56
|
||||
|
||||
#define PLAYERLIST_A_X_START (-PLAYERLIST_WIDTH-(PLAYERLIST_SPACING/2))
|
||||
#define PLAYERLIST_B_X_START (PLAYERLIST_SPACING/2)
|
||||
#define PLAYERLIST_Y_START (-PLAYERLIST_HEIGHT/2)
|
||||
|
||||
#define PLAYERLIST_A_RECT PLAYERLIST_A_X_START PLAYERLIST_Y_START PLAYERLIST_WIDTH PLAYERLIST_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
#define PLAYERLIST_B_RECT PLAYERLIST_B_X_START PLAYERLIST_Y_START PLAYERLIST_WIDTH PLAYERLIST_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
|
||||
#define RANK_BG_WIDTH 33
|
||||
#define COLUMN_SCORE_WIDTH 34
|
||||
#define MUTE_ICON_WIDTH LIST_ELEM_HEIGHT
|
||||
#define FRIEND_ICON_WIDTH LIST_ELEM_HEIGHT
|
||||
#define FRIEND_ICON_START_X ( PLAYERLIST_WIDTH - FRIEND_ICON_WIDTH - 4 )
|
||||
#define MUTE_ICON_START_X ( FRIEND_ICON_START_X - MUTE_ICON_WIDTH - 4 )
|
||||
#define COLUMN_NAME_START_X 34
|
||||
#define COLUMN_NAME_WIDTH ( FRIEND_ICON_START_X - COLUMN_NAME_START_X )
|
||||
|
||||
#define IN_PREGAME ( dvarbool( ui_pregame ) )
|
||||
|
||||
#include "ui_mp/menustyle.inc"
|
||||
#include "ui_mp/choices_setup_teams.menu"
|
||||
|
||||
#undef ON_ESC
|
||||
#define ON_ESC \
|
||||
close self; \
|
||||
open class;
|
||||
|
||||
#define AAR_HEIGHT NEW_FRAME_DEFAULT_HEIGHT
|
||||
#define AAR_WIDTH ( AAR_HEIGHT * FRAME_ASPECT_RATIO )
|
||||
|
||||
#define AAR_AWARD_IMAGE_COLOR 0.8 0.68 0.47 0.6
|
||||
#define AAR_AWARD_IMAGE_COLOR_GREY 1 1 1 0.3
|
||||
|
||||
#define AAR_BODY_X_START ( -AAR_WIDTH / 2 + 15 )
|
||||
#define AAR_BODY_Y_START ( -AAR_HEIGHT / 2 + 15 + NEW_FRAME_BG_Y_OFFSET( AAR_HEIGHT ) )
|
||||
|
||||
#define AAR_SCOREBOARD_COLUMN_SPACING 70
|
||||
#define AAR_SCOREBOARD_COLUMN_4_X 420
|
||||
#define AAR_SCOREBOARD_COLUMN_3_X ( AAR_SCOREBOARD_COLUMN_4_X - AAR_SCOREBOARD_COLUMN_SPACING )
|
||||
#define AAR_SCOREBOARD_COLUMN_2_X ( AAR_SCOREBOARD_COLUMN_3_X - AAR_SCOREBOARD_COLUMN_SPACING )
|
||||
#define AAR_SCOREBOARD_COLUMN_1_X ( AAR_SCOREBOARD_COLUMN_2_X - 50 )
|
||||
#define AAR_SCOREBOARD_COLUMN_SCORE_X ( AAR_SCOREBOARD_COLUMN_1_X - 50 )
|
||||
|
||||
#define AAR_DBLCLICK_ACTION( menuName ) \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
execnow set selectedPlayerXuid ( getfeederdata( "xuid" ) ); \
|
||||
execnow set selectedFriendName ( getfeederdata( "name" ) ); \
|
||||
if( (getfeederdata( "xuid" ) != getXuid()) && (getfeederdata( "xuid" ) != 0) ) \
|
||||
{ \
|
||||
hideMenu self; \
|
||||
if (IsInGame()) \
|
||||
{ \
|
||||
showMenu "pausedbkgnd"; \
|
||||
} \
|
||||
execnow changemenuopenslidedirection menu_playercard MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT; \
|
||||
execNow openMenu menu_playercard; \
|
||||
}
|
||||
|
||||
|
||||
#define AAR_SCOREBOARD_LISTBOX( scoreboard_name, feederId, x, y, w, h, visArg, extraArgs, menuName ) \
|
||||
itemDef \
|
||||
{ \
|
||||
name scoreboard_name \
|
||||
type ITEM_TYPE_LISTBOX \
|
||||
feeder feederId \
|
||||
rect x y w h HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \
|
||||
origin 0 0 \
|
||||
elementwidth 30 \
|
||||
elementheight 17 \
|
||||
elementtype LISTBOX_TEXT \
|
||||
textstyle ITEM_TEXTSTYLE_NORMAL \
|
||||
textfont UI_FONT_NORMAL \
|
||||
textscale TEXTSIZE_SMALL \
|
||||
forecolor 1 1 1 1 \
|
||||
focusColor 1 1 1 1 \
|
||||
disableColor 1 1 1 1 \
|
||||
elementHighlightColor 0 0 0 1 \
|
||||
noBlinkingHighlight \
|
||||
visible visArg \
|
||||
userarea 10 -1 0 (w-16) 19 24 ITEM_ALIGN_LEFT ITEM_ALIGN_TOP /* SCOREBOARD_COLUMN_NEMESIS_BG */ \
|
||||
-1 0 40 19 10 ITEM_ALIGN_LEFT ITEM_ALIGN_TOP /* SCOREBOARD_COLUMN_RANK_BG */ \
|
||||
3 0 50 16 10 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* SCOREBOARD_COLUMN_RANK */ \
|
||||
16 1 16 16 32 ITEM_ALIGN_RIGHT ITEM_ALIGN_TOP /* SCOREBOARD_COLUMN_RANK_ICON */ \
|
||||
50 0 100 16 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* SCOREBOARD_COLUMN_NAME */ \
|
||||
AAR_SCOREBOARD_COLUMN_SCORE_X 0 100 16 10 ITEM_ALIGN_RIGHT ITEM_ALIGN_MIDDLE /* SCOREBOARD_COLUMN_SCORE */ \
|
||||
AAR_SCOREBOARD_COLUMN_1_X 0 100 16 10 ITEM_ALIGN_RIGHT ITEM_ALIGN_MIDDLE /* SCOREBOARD_COLUMN_1 */ \
|
||||
AAR_SCOREBOARD_COLUMN_2_X 0 100 16 10 ITEM_ALIGN_RIGHT ITEM_ALIGN_MIDDLE /* SCOREBOARD_COLUMN_2 */ \
|
||||
(AAR_SCOREBOARD_COLUMN_3_X+85) 0 16 16 10 ITEM_ALIGN_RIGHT ITEM_ALIGN_MIDDLE /* SCOREBOARD_COLUMN_3 */ \
|
||||
(AAR_SCOREBOARD_COLUMN_4_X+70) 0 16 16 10 ITEM_ALIGN_RIGHT ITEM_ALIGN_MIDDLE /* SCOREBOARD_COLUMN_4 */ \
|
||||
\
|
||||
doubleclick \
|
||||
{ \
|
||||
AAR_DBLCLICK_ACTION( menuName ) \
|
||||
} \
|
||||
\
|
||||
extraArgs \
|
||||
}
|
||||
|
||||
{
|
||||
menuDef
|
||||
{
|
||||
name "players"
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_EMPTY
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
|
||||
onEsc
|
||||
{
|
||||
ON_ESC
|
||||
}
|
||||
onOpen
|
||||
{
|
||||
if (IsInGame())
|
||||
{
|
||||
showMenu "pausedbkgnd";
|
||||
}
|
||||
setdvar ui_friendsListOpen "0";
|
||||
setdvar ui_ingamePlayersOpen "1";
|
||||
|
||||
// TODO: Set Focus to something?
|
||||
}
|
||||
onClose
|
||||
{
|
||||
if (IsInGame())
|
||||
{
|
||||
hideMenu "pausedbkgnd";
|
||||
}
|
||||
setdvar ui_ingamePlayersOpen "0";
|
||||
}
|
||||
|
||||
// ------------------ TREE TITLE ------------------
|
||||
CHOICE_MENU_TITLE_ALIGN_VIS( "@MENU_PLAYERS_CAPS", HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP, ITEM_ALIGN_MIDDLE_LEFT, 1 )
|
||||
|
||||
/* LABEL FOR COLUMN "SCORE" */
|
||||
PREPROC_TEXT_DRAW( (AAR_BODY_X_START+12+AAR_SCOREBOARD_COLUMN_SCORE_X) (AAR_BODY_Y_START-15) 100 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, "@MPUI_SCORE_CAPS", TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, CHOICE_TEXTCOLOR )
|
||||
/* LABEL FOR COLUMN 1 */
|
||||
PREPROC_TEXT_DRAW( (AAR_BODY_X_START+12+AAR_SCOREBOARD_COLUMN_1_X) (AAR_BODY_Y_START-15) 100 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, locString( "@"+getScoreboardColumnHeader( 0 )+"_CAPS" ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, CHOICE_TEXTCOLOR )
|
||||
/* LABEL FOR COLUMN 2 */
|
||||
PREPROC_TEXT_DRAW( (AAR_BODY_X_START+12+AAR_SCOREBOARD_COLUMN_2_X) (AAR_BODY_Y_START-15) 100 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, locString( "@"+getScoreboardColumnHeader( 1 )+"_CAPS" ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, CHOICE_TEXTCOLOR )
|
||||
/* LABEL FOR COLUMN 3 */
|
||||
PREPROC_TEXT_DRAW( (AAR_BODY_X_START+12+AAR_SCOREBOARD_COLUMN_3_X) (AAR_BODY_Y_START-15) 100 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, locString( "MENU_FRIEND" ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, CHOICE_TEXTCOLOR )
|
||||
/* LABEL FOR COLUMN 4 */
|
||||
PREPROC_TEXT_DRAW( (AAR_BODY_X_START+12+AAR_SCOREBOARD_COLUMN_4_X-16) (AAR_BODY_Y_START-15) 100 20 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, locString( "MP_MUTED" ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_RIGHT, CHOICE_TEXTCOLOR )
|
||||
|
||||
/* SCOREBOARD */
|
||||
AAR_SCOREBOARD_LISTBOX( scoreboard_listbox, FEEDER_AAR_SCOREBOARD, (AAR_BODY_X_START+10), (AAR_BODY_Y_START+5), (AAR_WIDTH-40), (AAR_HEIGHT-65), 1, ;, menu_aar_scoreboard )
|
||||
|
||||
|
||||
// Back button
|
||||
#ifdef PC
|
||||
NEW_FRAME_BACK_BUTTON_ACTION_PC_VIS( ON_ESC, when( MenuHasFocus() ); )
|
||||
#endif
|
||||
}
|
||||
}
|
@ -1,844 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/newframe.inc"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
#include "ui_mp/menustyle.inc"
|
||||
#include "ui_mp/choices_setup_teams.menu"
|
||||
|
||||
#define PC_INGAME 1
|
||||
#include "ui_mp/overlaybg.inc"
|
||||
|
||||
#define GAME_DESC_VIS_ARG ( dvarInt( "xblive_basictraining" ) || dvarBool( splitscreen ) || dvarBool( systemlink ) || (dvarString("ui_gametype_idx") != "0") )
|
||||
|
||||
menuDef
|
||||
{
|
||||
name "pausedbkgnd_callvote"
|
||||
fullScreen 0
|
||||
rect 0 0 640 480
|
||||
focusColor COLOR_FOCUSED
|
||||
blurWorld 4.8
|
||||
visible 1
|
||||
|
||||
#define SINGLE_PLAYER 1
|
||||
#include "ui_mp/ingamebg.inc"
|
||||
}
|
||||
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X 170
|
||||
|
||||
#define BACKGROUND_COLOR_GRAY_RGB 0.62 0.70 0.70
|
||||
|
||||
#ifdef PC
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START 30
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START -120
|
||||
#define CHOICE_SEP_1 5
|
||||
#else
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START 30
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START -30
|
||||
#define CHOICE_SEP_1 3
|
||||
#endif
|
||||
|
||||
#undef CHOICE_GROUP
|
||||
#define CHOICE_GROUP "callvote"
|
||||
|
||||
#undef CHOICE_HORIZONTAL_ALIGN
|
||||
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_LEFT
|
||||
|
||||
#undef CHOICE_VERTICAL_ALIGN
|
||||
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
|
||||
|
||||
#undef BUTTON_BG_X_START
|
||||
#define BUTTON_BG_X_START 30
|
||||
#undef BUTTON_BG_Y_START
|
||||
#define BUTTON_BG_Y_START 42
|
||||
|
||||
#undef CHOICE_TEXTSTYLE
|
||||
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
|
||||
|
||||
#undef CHOICE_TEXTSIZE
|
||||
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
|
||||
|
||||
{
|
||||
menuDef
|
||||
{
|
||||
name callvote
|
||||
fullScreen 0
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN // Size and position of the menu
|
||||
focusColor COLOR_FOCUSED // Menu focus color for text and items
|
||||
#ifdef CONSOLE
|
||||
blurWorld 7.0
|
||||
#endif
|
||||
onOpen
|
||||
{
|
||||
showMenu "pausedbkgnd_callvote";
|
||||
}
|
||||
|
||||
onClose
|
||||
{
|
||||
hideMenu "pausedbkgnd_callvote";
|
||||
}
|
||||
|
||||
onEsc
|
||||
{
|
||||
close self;
|
||||
open "class";
|
||||
}
|
||||
|
||||
#define CALLVOTE_SUBTITLE ""
|
||||
#include "ui_mp/scriptmenus/callvote_buttons.inc"
|
||||
|
||||
NEW_FRAME_BACK_BUTTON_ACTION_PC_VIS( close self;, 1 )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
name changegametype
|
||||
fullScreen 0
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN // Size and position of the menu
|
||||
focusColor COLOR_FOCUSED // Menu focus color for text and items
|
||||
#ifdef CONSOLE
|
||||
blurWorld 7.0
|
||||
#endif
|
||||
onEsc
|
||||
{
|
||||
showMenu callvote;
|
||||
close self;
|
||||
}
|
||||
|
||||
onOpen
|
||||
{
|
||||
setdvar invite_visible "0";
|
||||
|
||||
setDvar ui_mapname "mp_array";
|
||||
setDvar ui_gametype "tdm";
|
||||
setdvar ui_gametype_idx "1";
|
||||
|
||||
setDvar ui_preview dvarString( "ui_mapname" );
|
||||
setdvar ui_preview_gt dvarString( "ui_gametype" );
|
||||
setdvar ui_preview_gt_idx dvarString( "ui_gametype_idx" );
|
||||
setDvar settings_map_selected 1;
|
||||
execNow movefeeder top gamemode_selection;
|
||||
execNow movefeeder top maplist;
|
||||
}
|
||||
|
||||
onClose
|
||||
{
|
||||
}
|
||||
|
||||
#undef CALLVOTE_SUBTITLE
|
||||
#define CALLVOTE_SUBTITLE "@MPUI_CHANGE_GAME_TYPEMAP"
|
||||
#include "ui_mp/scriptmenus/callvote_buttons.inc"
|
||||
|
||||
#define GAMEMODE_X 210
|
||||
#define MAPSELECT_X 430
|
||||
#define MAPSELECT_Y 255
|
||||
#define GAMEMODE_Y 255
|
||||
#define THUMBNAIL_Y 18
|
||||
|
||||
itemDef
|
||||
{
|
||||
name gamemode_image
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect GAMEMODE_X THUMBNAIL_Y 170 135 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
border 0
|
||||
bordercolor .5 .5 .5 .5
|
||||
origin 0 0
|
||||
exp material( tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_gametype ), 3 ) ); // ui_preview_gt
|
||||
visible when(GAME_DESC_VIS_ARG);
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name gamemode_custom_image
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect GAMEMODE_X THUMBNAIL_Y 170 135 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
border 0
|
||||
bordercolor .5 .5 .5 .5
|
||||
origin 0 0
|
||||
exp material( "playlist_infantry" );
|
||||
visible when(!GAME_DESC_VIS_ARG);
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name gamemode_name
|
||||
type ITEM_TYPE_TEXT
|
||||
rect GAMEMODE_X 175 170 20 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textfont UI_FONT_NORMAL
|
||||
textscale 0.4
|
||||
forecolor 1 1 1 1
|
||||
exp text "@" + tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_gametype ), 1 ); // ui_preview_gt
|
||||
visible when(GAME_DESC_VIS_ARG)
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name gamemode_custom_name
|
||||
type ITEM_TYPE_TEXT
|
||||
rect GAMEMODE_X 175 170 20 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textfont UI_FONT_NORMAL
|
||||
textscale 0.4
|
||||
forecolor 1 1 1 1
|
||||
text "@CUSTOM_CUSTOM_GAME_MODE_CAPS"
|
||||
visible when(!GAME_DESC_VIS_ARG)
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name gamemode_desc
|
||||
type ITEM_TYPE_TEXT
|
||||
rect GAMEMODE_X 195 170 35 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textfont UI_FONT_SMALL
|
||||
textscale 0.3
|
||||
forecolor 1 1 1 1
|
||||
exp text "@" + tableLookup( "mp/gametypesTable.csv", 0, dvarString( ui_gametype ), 2 ); // ui_preview_gt
|
||||
visible when(GAME_DESC_VIS_ARG);
|
||||
autowrapped
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name gamemode_custom_desc
|
||||
type ITEM_TYPE_TEXT
|
||||
rect GAMEMODE_X 195 170 35 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textfont UI_FONT_SMALL
|
||||
textscale 0.3
|
||||
forecolor 1 1 1 1
|
||||
text "@CUSTOM_SELECT_FROM_FILESHARE_DESC"
|
||||
visible when(!GAME_DESC_VIS_ARG);
|
||||
autowrapped
|
||||
decoration
|
||||
}
|
||||
|
||||
#ifdef PC
|
||||
#define LIST_PARAMS( listName ) \
|
||||
usePaging \
|
||||
mouseEnter \
|
||||
{ \
|
||||
setFocus listName; \
|
||||
}
|
||||
#else // #ifdef PC
|
||||
#define LIST_PARAMS( listName )
|
||||
#endif // #else // #ifdef PC
|
||||
|
||||
itemDef
|
||||
{
|
||||
name gamemode_selection
|
||||
type ITEM_TYPE_LISTBOX
|
||||
noBlinkingHighlight
|
||||
rect GAMEMODE_X GAMEMODE_Y 170 170 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
style WINDOW_STYLE_FILLED
|
||||
textscale CHOICE_TEXTSIZE
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textfont UI_FONT_NORMAL
|
||||
elementtype LISTBOX_TEXT
|
||||
elementwidth 120
|
||||
elementheight 18
|
||||
textalignx 6
|
||||
textaligny 0
|
||||
backcolor 0 0 0 0.2
|
||||
border 1
|
||||
bordersize 1
|
||||
bordercolor 1 1 1 0.15
|
||||
outlinecolor 1 1 1 0
|
||||
forecolor CHOICE_TEXTCOLOR
|
||||
focusColor 1 1 1 1
|
||||
disableColor 1 1 1 1
|
||||
feeder FEEDER_GAMETYPES_INGAME
|
||||
LIST_PARAMS( gamemode_selection )
|
||||
visible 1
|
||||
userarea 2 -1 0 155 20 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE
|
||||
6 0 155 20 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE
|
||||
doubleclick
|
||||
{
|
||||
setDvar ui_gametype_idx dvarString( "ui_preview_gt_idx" );
|
||||
if( !GAME_DESC_VIS_ARG )
|
||||
{
|
||||
open "custom_select_from_fileshare_1";
|
||||
}
|
||||
else
|
||||
{
|
||||
if( dvarString( "ui_preview_gt" ) != dvarString( "ui_gametype" ) )
|
||||
{
|
||||
execNow "resetCustomGametype";
|
||||
}
|
||||
|
||||
play CHOICE_ACTION_SOUND;
|
||||
}
|
||||
setDvar ui_gametype dvarString( ui_preview_gt );
|
||||
}
|
||||
action
|
||||
{
|
||||
setDvar ui_gametype_idx dvarString( "ui_preview_gt_idx" );
|
||||
if( !GAME_DESC_VIS_ARG )
|
||||
{
|
||||
open "custom_select_from_fileshare_1";
|
||||
}
|
||||
else
|
||||
{
|
||||
if( dvarString( "ui_preview_gt" ) != dvarString( "ui_gametype" ) )
|
||||
{
|
||||
execNow "resetCustomGametype";
|
||||
}
|
||||
|
||||
play CHOICE_ACTION_SOUND;
|
||||
}
|
||||
setDvar ui_gametype dvarString( ui_preview_gt );
|
||||
}
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name mappreview
|
||||
style WINDOW_STYLE_SHADER
|
||||
type ITEM_TYPE_IMAGE
|
||||
rect MAPSELECT_X THUMBNAIL_Y 170 135 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
border 0
|
||||
bordercolor .5 .5 .5 .5
|
||||
origin 0 0
|
||||
exp material( tablelookup("mp/mapsTable.csv",0,dvarString(ui_mapname),4) ); // ui_preview
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name map_name
|
||||
type ITEM_TYPE_TEXT
|
||||
rect MAPSELECT_X 175 170 20 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textfont UI_FONT_NORMAL
|
||||
textscale 0.4
|
||||
forecolor 1 1 1 1
|
||||
exp text "@" + tableLookup( "mp/mapsTable.csv", 0, dvarString( ui_mapname ) , 3 ); // ui_preview
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name map_desc
|
||||
type ITEM_TYPE_TEXT
|
||||
rect MAPSELECT_X 195 170 35 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textalign ITEM_ALIGN_LEFT
|
||||
textfont UI_FONT_SMALL
|
||||
textscale 0.3
|
||||
forecolor 1 1 1 1
|
||||
exp text "@" + tableLookup( "mp/mapsTable.csv", 0, dvarString( ui_mapname ) , 6 ); // ui_preview
|
||||
visible 1
|
||||
autowrapped
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name maplist
|
||||
rect MAPSELECT_X MAPSELECT_Y 170 170 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
type ITEM_TYPE_LISTBOX
|
||||
noBlinkingHighlight
|
||||
style WINDOW_STYLE_FILLED
|
||||
textscale CHOICE_TEXTSIZE
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textfont UI_FONT_NORMAL
|
||||
elementtype LISTBOX_TEXT
|
||||
elementwidth 120
|
||||
elementheight 18
|
||||
textalignx 6
|
||||
textaligny 0
|
||||
backcolor 0 0 0 0.2
|
||||
border 1
|
||||
bordersize 1
|
||||
bordercolor 1 1 1 0.15
|
||||
outlinecolor 1 1 1 0
|
||||
forecolor CHOICE_TEXTCOLOR
|
||||
focusColor 1 1 1 1
|
||||
disableColor 1 1 1 1
|
||||
feeder FEEDER_MAPS
|
||||
LIST_PARAMS( maplist )
|
||||
visible 1
|
||||
userarea 2 -1 0 155 20 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* FEEDER_MAPSELECTION_COLUMN_BACKGROUND */
|
||||
6 0 155 20 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE /* FEEDER_MAPSELECTION_COLUMN_NAME */
|
||||
|
||||
doubleclick { setDvar ui_mapname dvarString( ui_preview ); }
|
||||
action { setDvar ui_mapname dvarString( ui_preview ); }
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name vote
|
||||
type ITEM_TYPE_BUTTON
|
||||
rect MAPSELECT_X (MAPSELECT_Y+170+4) 40 20 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
exp rect W( getTextWidth(locString("@MPUI_VOTE"),UI_FONT_NORMAL,TEXTSIZE_DEFAULT)+8 )
|
||||
text "@MPUI_VOTE"
|
||||
textfont UI_FONT_NORMAL
|
||||
textscale TEXTSIZE_DEFAULT
|
||||
textalign ITEM_ALIGN_MIDDLE_CENTER
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
style WINDOW_STYLE_FILLED
|
||||
visible 1
|
||||
forecolor 1 1 1 1
|
||||
backcolor 1 1 1 0
|
||||
border 1
|
||||
bordersize 1
|
||||
bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA
|
||||
mouseEnter { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_SELECTED_RGBA; play CHOICE_FOCUS_SOUND; }
|
||||
mouseexit { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA; }
|
||||
action
|
||||
{
|
||||
play CHOICE_FOCUS_SOUND;
|
||||
#ifdef CONSOLE
|
||||
setDvar ui_gametype dvarString( ui_preview_gt );
|
||||
setDvar ui_mapname dvarString( ui_preview );
|
||||
uiScript voteTypeMapDVar ui_preview_gt ui_preview;
|
||||
#else //#ifdef CONSOLE
|
||||
uiScript voteTypeMapDVar ui_gametype ui_mapname;
|
||||
#endif //#ifdef CONSOLE
|
||||
close self;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#define TAB_1_TEXT (locString( "@MPUI_MAPS_CAPS" ))
|
||||
#define TAB_2_TEXT (locString( "@MPUI_DLC_MAPS_CAPS" ))
|
||||
|
||||
#define TAB_BG_PAD 5
|
||||
#define TAB_1_WIDTH ( getTextWidth( TAB_1_TEXT, UI_FONT_NORMAL, TEXTSIZE_DEFAULT ) + (TAB_BG_PAD*2) )
|
||||
#define TAB_2_WIDTH ( getTextWidth( TAB_2_TEXT, UI_FONT_NORMAL, TEXTSIZE_DEFAULT ) + (TAB_BG_PAD*2) )
|
||||
#define TAB_HEIGHT 15
|
||||
|
||||
#define MAP_TAB_1_X MAPSELECT_X
|
||||
#define MAP_TAB_2_X ( MAP_TAB_1_X + TAB_1_WIDTH )
|
||||
|
||||
#define MAP_TAB_Y ( MAPSELECT_Y - TAB_HEIGHT )
|
||||
#define MAPS_TAB_VISIBLE ( 1 )
|
||||
#define DLC_TAB_VISIBLE ( dvarBool( "dlc2" ) || dvarBool( "dlc3" ) || dvarBool( "dlc4" ) )
|
||||
|
||||
itemDef
|
||||
{
|
||||
name switch_to_original_maps
|
||||
type ITEM_TYPE_BUTTON
|
||||
rect MAP_TAB_1_X MAP_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
exp rect W( TAB_1_WIDTH )
|
||||
text "@MPUI_MAPS_CAPS"
|
||||
textfont UI_FONT_NORMAL
|
||||
textscale TEXTSIZE_DEFAULT
|
||||
textalign ITEM_ALIGN_MIDDLE_CENTER
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
style WINDOW_STYLE_FILLED
|
||||
visible when( DLC_TAB_VISIBLE )
|
||||
forecolor 1 1 1 1
|
||||
backcolor 1 1 1 0
|
||||
border 1
|
||||
bordersize 1
|
||||
bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA
|
||||
mouseEnter { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_SELECTED_RGBA; play CHOICE_FOCUS_SOUND; }
|
||||
mouseexit { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA; }
|
||||
action
|
||||
{
|
||||
setDvar ui_showDLCMaps 0;
|
||||
}
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name switch_to_dlc_maps
|
||||
type ITEM_TYPE_BUTTON
|
||||
rect 0 MAP_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
exp rect W( TAB_2_WIDTH )
|
||||
exp rect X( MAP_TAB_2_X )
|
||||
text "@MPUI_DLC_MAPS_CAPS"
|
||||
textfont UI_FONT_NORMAL
|
||||
textscale TEXTSIZE_DEFAULT
|
||||
textalign ITEM_ALIGN_MIDDLE_CENTER
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
style WINDOW_STYLE_FILLED
|
||||
visible when( DLC_TAB_VISIBLE )
|
||||
forecolor 1 1 1 1
|
||||
backcolor 1 1 1 0
|
||||
border 1
|
||||
bordersize 1
|
||||
bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA
|
||||
mouseEnter { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_SELECTED_RGBA; play CHOICE_FOCUS_SOUND; }
|
||||
mouseexit { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA; }
|
||||
action
|
||||
{
|
||||
setDvar ui_showDLCMaps 1;
|
||||
}
|
||||
}
|
||||
|
||||
NEW_FRAME_BACK_BUTTON_ACTION_PC_VIS( exec "wait"; close self;, 1 )
|
||||
}
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
name kickplayer
|
||||
fullScreen 0
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN // Size and position of the menu
|
||||
focusColor COLOR_FOCUSED // Menu focus color for text and items
|
||||
#ifdef CONSOLE
|
||||
blurWorld 7.0
|
||||
#endif
|
||||
onEsc
|
||||
{
|
||||
showMenu callvote;
|
||||
close self;
|
||||
}
|
||||
|
||||
onClose
|
||||
{
|
||||
}
|
||||
|
||||
#undef CALLVOTE_SUBTITLE
|
||||
#define CALLVOTE_SUBTITLE "@MPUI_KICK_PLAYER"
|
||||
#include "ui_mp/scriptmenus/callvote_buttons.inc"
|
||||
|
||||
itemDef
|
||||
{
|
||||
name playerlist
|
||||
type ITEM_TYPE_LISTBOX
|
||||
noBlinkingHighlight
|
||||
visible 1
|
||||
rect GAMEMODE_X 90 260 330 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
style WINDOW_STYLE_FILLED
|
||||
textscale CHOICE_TEXTSIZE
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
textfont UI_FONT_NORMAL
|
||||
elementtype LISTBOX_TEXT
|
||||
elementwidth 120
|
||||
elementheight 18
|
||||
textalignx 6
|
||||
textaligny 0
|
||||
backcolor 0 0 0 0.2
|
||||
border 1
|
||||
bordersize 1
|
||||
bordercolor 1 1 1 0.15
|
||||
outlinecolor 1 1 1 0
|
||||
forecolor CHOICE_TEXTCOLOR
|
||||
focusColor 1 1 1 1
|
||||
disableColor 1 1 1 1
|
||||
feeder FEEDER_PLAYER_LIST
|
||||
LIST_PARAMS( playerlist )
|
||||
userarea 2 -1 0 244 20 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE
|
||||
6 0 244 20 32 ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
name vote
|
||||
type ITEM_TYPE_BUTTON
|
||||
rect GAMEMODE_X (90+330+4) 40 20 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP
|
||||
exp rect W( getTextWidth(locString("@MPUI_VOTE"),UI_FONT_NORMAL,TEXTSIZE_DEFAULT)+8 )
|
||||
text "@MPUI_VOTE"
|
||||
textfont UI_FONT_NORMAL
|
||||
textscale TEXTSIZE_DEFAULT
|
||||
textalign ITEM_ALIGN_MIDDLE_CENTER
|
||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||
style WINDOW_STYLE_FILLED
|
||||
visible 1
|
||||
forecolor 1 1 1 1
|
||||
backcolor 1 1 1 0
|
||||
border 1
|
||||
bordersize 1
|
||||
bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA
|
||||
mouseEnter { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_SELECTED_RGBA; play CHOICE_FOCUS_SOUND; }
|
||||
mouseexit { setcolor bordercolor CHOICE_BUTTON_BORDER_COLOR_UNSELECTED_RGBA; }
|
||||
action
|
||||
{
|
||||
play CHOICE_FOCUS_SOUND;
|
||||
uiScript voteTempBan;
|
||||
close self;
|
||||
}
|
||||
}
|
||||
|
||||
NEW_FRAME_BACK_BUTTON_ACTION_PC_VIS( close self;, 1 )
|
||||
}
|
||||
}
|
||||
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X 150
|
||||
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START 0
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START 65
|
||||
|
||||
#undef CHOICE_SEP_OFFSET_Y
|
||||
#define CHOICE_SEP_OFFSET_Y -2
|
||||
#undef CHOICE_SIDEITEM_SPACING
|
||||
#define CHOICE_SIDEITEM_SPACING -310
|
||||
|
||||
#undef CHOICE_DVAR_OFFSET_X
|
||||
#define CHOICE_DVAR_OFFSET_X (CHOICE_SIZE_X+20)
|
||||
#undef CHOICE_DVAR_TEXTALIGN
|
||||
#define CHOICE_DVAR_TEXTALIGN ITEM_ALIGN_MIDDLE_LEFT
|
||||
|
||||
#include "ui_mp/menustyle.inc"
|
||||
#include "ui/choices_setup_popmenu.menu"
|
||||
#include "ui_mp/stats_info.inc"
|
||||
#include "ui_mp/fileshare.inc"
|
||||
#include "ui/framestyle.inc"
|
||||
#include "ui_mp/newframe.inc"
|
||||
|
||||
#include "ui_mp/popup_player_info.inc"
|
||||
|
||||
|
||||
#define GAME_MODE_FILESHARE_UPLOAD_ACTION \
|
||||
execNow uploadCustomGametype ( getFeederData( "menu_game_mode_upload_1", "fileShareSlots", "slot" ) ); \
|
||||
execNow "set customGameMode 1"; \
|
||||
execNow "xupdatepartystate"; \
|
||||
if( dvarInt( ui_custom_gobackonupload ) ) \
|
||||
{ \
|
||||
closeimmediate custom_game_create; \
|
||||
closeimmediate select_game_mode; \
|
||||
}
|
||||
|
||||
#include "ui_mp/popupstyle.inc"
|
||||
|
||||
FILESHARE_SLOT_SELECTOR_EX ( menu_game_mode_upload_1, GAME_MODE_FILESHARE_UPLOAD_ACTION, ;, open custom_game_create;, ; )
|
||||
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X 260
|
||||
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START 0
|
||||
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START 85
|
||||
#undef CHOICE_TEXTSTYLE
|
||||
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
|
||||
|
||||
#undef ON_ESC
|
||||
#define ON_ESC \
|
||||
close self;
|
||||
|
||||
menuDef
|
||||
{
|
||||
name custom_select_from_fileshare_1
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_FILLED
|
||||
priority MENU_PRI_ONTOP
|
||||
control MENU_CONTROL_OPENER
|
||||
soundloop MENU_MUSIC
|
||||
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
|
||||
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED
|
||||
openSlideDirection MENU_SLIDE_DIRECTION_RIGHT_TO_LEFT
|
||||
closeSlideDirection MENU_SLIDE_DIRECTION_LEFT_TO_RIGHT
|
||||
|
||||
onOpen
|
||||
{
|
||||
#ifdef PC
|
||||
// exec readfileshare
|
||||
#endif
|
||||
}
|
||||
onFocus
|
||||
{
|
||||
activateBlur;
|
||||
}
|
||||
onClose
|
||||
{
|
||||
deactivateBlur;
|
||||
}
|
||||
onESC
|
||||
{
|
||||
ON_ESC
|
||||
}
|
||||
|
||||
NEW_FRAME( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT )
|
||||
|
||||
NEW_FRAME_TITLE( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT, "@CUSTOM_FILESHARE_SELECT_MODE_TITLE", 1 )
|
||||
NEW_FRAME_SUBTITLE( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT, "@CUSTOM_FILESHARE_SELECT_MODE_DESC", 1 )
|
||||
|
||||
PLAYER_INFO_VIS( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT, 1 )
|
||||
|
||||
itemDef
|
||||
{
|
||||
name fileShareSlots
|
||||
type ITEM_TYPE_LISTBOX
|
||||
feeder FEEDER_FILESHARE_MYSLOTS
|
||||
FILESHARE_COMMON_OPTIONS
|
||||
origin 0 0
|
||||
elementwidth 70
|
||||
elementheight 67
|
||||
elementtype LISTBOX_TEXT
|
||||
textalign ITEM_ALIGN_MIDDLE_CENTER
|
||||
textfont UI_FONT_NORMAL
|
||||
textscale TEXTSIZE_SUBTITLE
|
||||
forecolor CHOICE_TEXTCOLOR
|
||||
modal
|
||||
doubleclick
|
||||
{
|
||||
if ( getFeederData( "slotOccupied" ) && !( FILESHARE_TASKSINPROGRESS ) )
|
||||
{
|
||||
if( getFeederData( "fileType" ) == "customgamemode" )
|
||||
{
|
||||
execNow downloadCustomGametype (getFeederData( "fileID" )) (getFeederData( "fileSize" ));
|
||||
closeimmediate custom_select_from_fileshare_1;
|
||||
closeimmediate select_game_mode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
visible 1
|
||||
|
||||
FILESHARE_SLOTS_USERAREAS
|
||||
}
|
||||
FILESHARE_BOTTOM( fileShareSlots, 1 )
|
||||
|
||||
/* SLOT OCCUPIED */
|
||||
#define SLOT_OCCUPIED_CONDITION \
|
||||
( getFeederData( "fileShareSlots", "slotOccupied" ) && getFeederData( "fileShareSlots", "count" ) > 0.0 )
|
||||
|
||||
#define SLOT_HAS_GAME_MODE \
|
||||
( getFeederData( "fileShareSlots", "fileType" ) == "customgamemode" )
|
||||
|
||||
#undef FILESHARE_SELECTOR_TOOLTIP_Y
|
||||
#ifdef PC
|
||||
#define FILESHARE_SELECTOR_TOOLTIP_Y FILESHARE_TOOLTIP_PC_Y
|
||||
#else //#ifdef PC
|
||||
#define FILESHARE_SELECTOR_TOOLTIP_Y 95
|
||||
#endif //#ifdef PC
|
||||
|
||||
|
||||
// Tooltip - Occupied Slot with custom game mode
|
||||
PREPROC_TEXT_DRAW_VIS_EX( -255 FILESHARE_SELECTOR_TOOLTIP_Y 280 36 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, locString( "CUSTOM_FILESHARE_CGM_HIGHLIGHTED" ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, when( SLOT_OCCUPIED_CONDITION && SLOT_HAS_GAME_MODE ), autowrapped; )
|
||||
PREPROC_SHADER_DRAW_VIS_EX( -265 FILESHARE_SELECTOR_TOOLTIP_Y 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "ui_arrow_right", COLOR_BODY_TEXT, when( SLOT_OCCUPIED_CONDITION && SLOT_HAS_GAME_MODE ), ; )
|
||||
|
||||
// Tooltip - Occupied Slot that is not a custom game mode
|
||||
PREPROC_TEXT_DRAW_VIS_EX( -255 FILESHARE_SELECTOR_TOOLTIP_Y 280 36 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, locString( "CUSTOM_FILESHARE_CANT_SELECT" ), TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, when( SLOT_OCCUPIED_CONDITION && !SLOT_HAS_GAME_MODE ), autowrapped; )
|
||||
PREPROC_SHADER_DRAW_VIS_EX( -265 FILESHARE_SELECTOR_TOOLTIP_Y 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "ui_arrow_right", COLOR_BODY_TEXT, when( SLOT_OCCUPIED_CONDITION && !SLOT_HAS_GAME_MODE ), ; )
|
||||
|
||||
FILESHARE_SPINNER( 145, -45, when( FILESHARE_TASKSINPROGRESS ), 350 )
|
||||
|
||||
execKeyInt APAD_UP
|
||||
{
|
||||
execnow set fshSelectLastSlotRow 1;
|
||||
setfocus fileShareSlots;
|
||||
}
|
||||
|
||||
execKeyInt DPAD_UP
|
||||
{
|
||||
execnow set fshSelectLastSlotRow 1;
|
||||
setfocus fileShareSlots;
|
||||
}
|
||||
|
||||
execKeyInt APAD_DOWN
|
||||
{
|
||||
execnow set fshSelectFirstSlotRow 1;
|
||||
setfocus fileShareSlots;
|
||||
}
|
||||
|
||||
execKeyInt DPAD_DOWN
|
||||
{
|
||||
execnow set fshSelectFirstSlotRow 1;
|
||||
setfocus fileShareSlots;
|
||||
}
|
||||
/*
|
||||
execKeyInt BUTTON_X
|
||||
{
|
||||
open fileshare_mymovie;
|
||||
}
|
||||
|
||||
#ifdef CONSOLE
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
rect -210 206 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
text "@PLATFORM_FILESHARE_MYMOVIE"
|
||||
textfont CHOICE_TEXTFONT
|
||||
|
||||
textscale TEXTSIZE_DEFAULT
|
||||
textalign ITEM_ALIGN_BOTTOM_LEFT
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
#endif
|
||||
*/
|
||||
|
||||
#ifndef PC
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
rect -210 206 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
text "@PLATFORM_SELECT"
|
||||
textfont CHOICE_TEXTFONT
|
||||
|
||||
textscale TEXTSIZE_DEFAULT
|
||||
textalign ITEM_ALIGN_BOTTOM_LEFT
|
||||
visible when( getFeederData( "fileShareSlots", "slotOccupied" ) == 1 )
|
||||
decoration
|
||||
}
|
||||
#endif
|
||||
|
||||
NEW_FRAME_BUTTON_NOICON( 1, 28 0 0 18 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "", execnow "updatemarketplace";, ;, ;, 1, ;, ; )
|
||||
//FILESHARE_LIVEBLURB( -271, 50, 290, 100, HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, !IsPremiumSubscriber(), ( localVarInt( ui_highlight ) == 1 ) )
|
||||
|
||||
#ifdef CONSOLE
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
rect -146 80 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
exp text( int( getFeederData( "fileShareSlots", "slot" ) ) )
|
||||
textfont CHOICE_TEXTFONT
|
||||
textscale TEXTSIZE_SMALL
|
||||
textalign ITEM_ALIGN_MIDDLE_RIGHT
|
||||
forecolor 1 1 1 1
|
||||
visible 1
|
||||
decoration
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
type ITEM_TYPE_TEXT
|
||||
rect -142 80 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
text "@MENU_FILESHARE_OF18"
|
||||
textfont CHOICE_TEXTFONT
|
||||
textscale TEXTSIZE_SMALL
|
||||
textalign ITEM_ALIGN_MIDDLE_LEFT
|
||||
forecolor 1 1 1 1
|
||||
visible 1
|
||||
}
|
||||
// Top Arrow
|
||||
PREPROC_SHADER_DRAW_VIS_EX( -114 75 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "ui_arrow_left", COLOR_BODY_TEXT, when( getFeederData( "fileShareSlots", "slot" ) > 6 ), rotation 90; )
|
||||
|
||||
// Bottom Arrow 1
|
||||
PREPROC_SHADER_DRAW_VIS_EX( -107 75 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "ui_arrow_right", COLOR_BODY_TEXT, when( getFeederData( "fileShareSlots", "slot" ) > 6 && getFeederData( "fileShareSlots", "slot" ) < 13 ), rotation 90; )
|
||||
|
||||
// Bottom Arrow 2
|
||||
PREPROC_SHADER_DRAW_VIS_EX( -114 75 11 11 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, "ui_arrow_right", COLOR_BODY_TEXT, when( getFeederData( "fileShareSlots", "slot" ) <= 6 ), rotation 90; )
|
||||
#endif //#ifdef CONSOLE
|
||||
// File details
|
||||
FILESHARE_DETAILS( 35, (NEW_FRAME_CHOICE_Y_START-1), HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, "custom_select_from_fileshare_1", "fileShareSlots", SLOT_OCCUPIED_CONDITION )
|
||||
|
||||
FILESHARE_SPINNER( 145, -45, when( FILESHARE_TASKSINPROGRESS ), 350 )
|
||||
|
||||
|
||||
#ifdef PC
|
||||
NEW_FRAME_BACK_BUTTON_ACTION( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT, ON_ESC )
|
||||
#else //#ifdef PC
|
||||
NEW_FRAME_BACK_BUTTON( FILESHARE_FRAME_WIDTH, FILESHARE_FRAME_HEIGHT )
|
||||
#endif //#ifdef PC
|
||||
|
||||
#include "ui/safearea.menu"
|
||||
}
|
@ -1,365 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
#include "ui_mp/stats_info.inc"
|
||||
#include "ui/framestyle.inc"
|
||||
#include "ui_mp/newframe.inc"
|
||||
|
||||
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START 30
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START -105
|
||||
|
||||
#ifdef PC
|
||||
#define PC_INGAME //for background in overlaybg.inc
|
||||
#endif
|
||||
|
||||
#define CHOICE_SEP_OFFSET_Y -2
|
||||
#define CHOICE_SEP_1 5
|
||||
|
||||
#include "ui_mp/menustyle.inc"
|
||||
#include "ui/choices_setup_common.menu"
|
||||
#include "ui_mp/overlaybg.inc"
|
||||
|
||||
#define HIGH_BOUND "1000"
|
||||
|
||||
#undef BUTTON_BG_X_START
|
||||
#define BUTTON_BG_X_START 30
|
||||
#undef BUTTON_BG_Y_START
|
||||
#define BUTTON_BG_Y_START 42
|
||||
|
||||
#undef CHOICE_TEXTSTYLE
|
||||
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
|
||||
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X 200
|
||||
|
||||
#undef CHOICE_HORIZONTAL_ALIGN
|
||||
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_LEFT
|
||||
|
||||
#undef CHOICE_VERTICAL_ALIGN
|
||||
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
|
||||
|
||||
// ------
|
||||
|
||||
#undef ON_ESC
|
||||
#define ON_ESC scriptMenuResponse "back";
|
||||
|
||||
{
|
||||
menuDef
|
||||
{
|
||||
name "changeclass"
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_EMPTY
|
||||
#ifdef CONSOLE
|
||||
blurWorld 7.0
|
||||
#endif
|
||||
onOpen
|
||||
{
|
||||
if ( IsSplitscreen() )
|
||||
{
|
||||
close self;
|
||||
if ( IsViewportLarge() )
|
||||
{
|
||||
open "changeclass_splitscreen";
|
||||
}
|
||||
else
|
||||
{
|
||||
open "changeclass_splitscreen_small";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// update player's XP
|
||||
execNow "statGetByNameInDvar RANKXP ui_stat_rankxp";
|
||||
|
||||
if ( dvarString( ui_custom_name ) == "" )
|
||||
{
|
||||
execnow set ui_custom_name customclass1;
|
||||
}
|
||||
|
||||
if( dvarString( ui_class ) == "" )
|
||||
{
|
||||
execnow set ui_class class_smg;
|
||||
}
|
||||
/*set ui_multi_s "HIGH_BOUND"; set ui_multi_dt 0";*/
|
||||
|
||||
setfocusbydvar "ui_customclass_selected";
|
||||
//focusFirst
|
||||
}
|
||||
if (IsInGame())
|
||||
{
|
||||
showMenu "pausedbkgnd";
|
||||
}
|
||||
|
||||
#ifdef PC
|
||||
setLocalVarBool ui_hide_cac_item_info_highlights 1;
|
||||
#endif // #ifdef PC
|
||||
}
|
||||
onClose
|
||||
{
|
||||
if (IsInGame())
|
||||
{
|
||||
hideMenu "pausedbkgnd";
|
||||
}
|
||||
|
||||
#ifdef PC
|
||||
setLocalVarBool ui_hide_cac_item_info_highlights 0;
|
||||
#endif // #ifdef PC
|
||||
}
|
||||
onEsc
|
||||
{
|
||||
ON_ESC
|
||||
}
|
||||
|
||||
execkeyint BUTTON_START
|
||||
{
|
||||
close self;
|
||||
}
|
||||
|
||||
|
||||
#ifndef PC // background overlay
|
||||
#include "ui_mp/ingamebg.inc"
|
||||
#endif // background overlay
|
||||
|
||||
// ------------------ TREE TITLE ------------------
|
||||
|
||||
CHOICE_MENU_TITLE_ALIGN_VIS( "@MPUI_CHOOSE_CLASS_CAPS", HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP, ITEM_ALIGN_MIDDLE_LEFT, 1 )
|
||||
|
||||
//=========================================================================
|
||||
//================ MENU SELECTION FOR ONLINE/OFFLINE GAME =================
|
||||
//=========================================================================
|
||||
|
||||
#define IS_ONLINE_GAME ( dvarInt( splitscreen ) == 0 && dvarInt( systemlink ) == 0 )
|
||||
#define IS_BASICTRAINING_GAME ( dvarInt( xblive_basictraining ) > 0 )
|
||||
|
||||
#define FOCUS_CHECK( pnum ) \
|
||||
dvartest "ui_customclass_selected" focusdvar { pnum }
|
||||
|
||||
#define ACTION_COMMON( pnum ) \
|
||||
setDvar ui_customclass_selected pnum;
|
||||
|
||||
#define SHOW_ONLINE_CLASS_NAME ( IS_ONLINE_GAME && !IS_BASICTRAINING_GAME )
|
||||
#define CUSTOM_CLASS_TEXT( online, offline ) \
|
||||
Select( SHOW_ONLINE_CLASS_NAME, dvarString( online ), dvarString( offline ) )
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 1, CUSTOM_CLASS_TEXT( customclass1, offline_customclass1 ),
|
||||
scriptMenuResponse "custom1,0"; ACTION_COMMON( 6 ),
|
||||
exec "set ui_custom_name customclass1; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
|
||||
;,
|
||||
!IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), FOCUS_CHECK( 6 ) )
|
||||
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 1, CUSTOM_CLASS_TEXT( customclass1, offline_customclass1 ),
|
||||
;,
|
||||
;,
|
||||
IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), decoration )
|
||||
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 2, CUSTOM_CLASS_TEXT( customclass2, offline_customclass2 ),
|
||||
scriptMenuResponse "custom2,0"; ACTION_COMMON( 7 ),
|
||||
exec "set ui_custom_name customclass2; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
|
||||
;,
|
||||
!IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), FOCUS_CHECK( 7 ) )
|
||||
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 2, CUSTOM_CLASS_TEXT( customclass2, offline_customclass2 ),
|
||||
;,
|
||||
;,
|
||||
IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), decoration )
|
||||
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 3, CUSTOM_CLASS_TEXT( customclass3, offline_customclass3 ),
|
||||
scriptMenuResponse "custom3,0"; ACTION_COMMON( 8 ),
|
||||
exec "set ui_custom_name customclass3; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
|
||||
;,
|
||||
!IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), FOCUS_CHECK( 8 ) )
|
||||
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 3, CUSTOM_CLASS_TEXT( customclass3, offline_customclass3 ),
|
||||
;,
|
||||
;,
|
||||
IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), decoration )
|
||||
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 4, CUSTOM_CLASS_TEXT( customclass4, offline_customclass4 ),
|
||||
scriptMenuResponse "custom4,0"; ACTION_COMMON( 9 ),
|
||||
exec "set ui_custom_name customclass4; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
|
||||
;,
|
||||
!IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), FOCUS_CHECK( 9 ) )
|
||||
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 4, CUSTOM_CLASS_TEXT( customclass4, offline_customclass4 ),
|
||||
;,
|
||||
;,
|
||||
IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), decoration )
|
||||
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 5, CUSTOM_CLASS_TEXT( customclass5, offline_customclass5 ),
|
||||
scriptMenuResponse "custom5,0"; ACTION_COMMON( 10 ),
|
||||
exec "set ui_custom_name customclass5; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
|
||||
;,
|
||||
!IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), FOCUS_CHECK( 10 ) )
|
||||
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 5, CUSTOM_CLASS_TEXT( customclass5, offline_customclass5 ),
|
||||
;,
|
||||
;,
|
||||
IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ), decoration )
|
||||
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 6, "@CLASS_CLASS1",
|
||||
scriptMenuResponse "smg_mp,0"; ACTION_COMMON( 1 ),
|
||||
exec "set ui_class class_smg; set ui_multi_s "HIGH_BOUND"; set ui_multi_dt 0";,
|
||||
;,
|
||||
( IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) || IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_1 ) || !IS_ONLINE_GAME ), FOCUS_CHECK( 1 ) )
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 6, dvarString( prestigeclass1 ),
|
||||
scriptMenuResponse "prestige1,0"; ACTION_COMMON( 11 ),
|
||||
exec "set ui_custom_name prestigeclass1; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
|
||||
;,
|
||||
( !IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_1 ) && ( !IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) ) && IS_ONLINE_GAME ), FOCUS_CHECK( 1 ) )
|
||||
|
||||
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 7, "@CLASS_CLASS2",
|
||||
scriptMenuResponse "cqb_mp,0"; ACTION_COMMON( 2 ),
|
||||
exec" set ui_class class_cqb; set ui_multi_s "HIGH_BOUND"; set ui_multi_dt 0";,
|
||||
;,
|
||||
( IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) || IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_2 ) || !IS_ONLINE_GAME ), FOCUS_CHECK( 2 ) )
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 7, dvarString( prestigeclass2 ),
|
||||
scriptMenuResponse "prestige2,0"; ACTION_COMMON( 12 ),
|
||||
exec "set ui_custom_name prestigeclass2; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
|
||||
;,
|
||||
( !IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_2 ) && ( !IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) ) && IS_ONLINE_GAME ), FOCUS_CHECK( 2 ) )
|
||||
|
||||
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 8, "@CLASS_CLASS3",
|
||||
scriptMenuResponse "assault_mp,0"; ACTION_COMMON( 3 ),
|
||||
exec "set ui_class class_assault; set ui_multi_s "HIGH_BOUND"; set ui_multi_dt 0";,
|
||||
;,
|
||||
( IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) || IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_3 ) || !IS_ONLINE_GAME ), FOCUS_CHECK( 3 ) )
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 8, dvarString( prestigeclass3 ),
|
||||
scriptMenuResponse "prestige3,0"; ACTION_COMMON( 13 ),
|
||||
exec "set ui_custom_name prestigeclass3; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND;,
|
||||
;,
|
||||
( !IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_3 ) && ( !IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) ) && IS_ONLINE_GAME ), FOCUS_CHECK( 3 ) )
|
||||
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 9, "@CLASS_CLASS4",
|
||||
scriptMenuResponse "lmg_mp,0"; ACTION_COMMON( 4 ),
|
||||
exec "set ui_class class_lmg; set ui_multi_s "HIGH_BOUND"; set ui_multi_dt 0"; CLEAR_ITEM_NEW( FEATURE_CLOSEASSAULT ),
|
||||
;,
|
||||
( ( !IS_ITEM_LOCKED( FEATURE_CLOSEASSAULT ) && ( IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_4 ) || ( IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) && !IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_4 ) ) ) ) || !IS_ONLINE_GAME ), FOCUS_CHECK( 4 ) )
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 9, dvarString( prestigeclass4 ),
|
||||
scriptMenuResponse "prestige4,0";ACTION_COMMON( 14 ),
|
||||
exec "set ui_custom_name prestigeclass4; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND; CLEAR_ITEM_NEW( FEATURE_CLOSEASSAULT ),
|
||||
;,
|
||||
( !IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) && !IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_4 ) && IS_ONLINE_GAME ), FOCUS_CHECK( 4 ) )
|
||||
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 9, "@CLASS_CLASS4",
|
||||
;,
|
||||
;,
|
||||
( IS_ITEM_LOCKED( FEATURE_CLOSEASSAULT ) && IS_ONLINE_GAME ), decoration FOCUS_CHECK( 4 ) )
|
||||
CHOICE_NEWICON_VIS( 9, "menu_mp_lobby_new", when( ( IS_ITEM_NEW( FEATURE_CLOSEASSAULT ) ) && IS_ONLINE_GAME ) )
|
||||
|
||||
|
||||
|
||||
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 10, "@CLASS_CLASS5",
|
||||
scriptMenuResponse "sniper_mp,0"; ACTION_COMMON( 5 ),
|
||||
exec" set ui_class class_sniper; set ui_multi_s "HIGH_BOUND"; set ui_multi_dt 0"; CLEAR_ITEM_NEW( FEATURE_SNIPER ),
|
||||
;,
|
||||
( ( !IS_ITEM_LOCKED( FEATURE_SNIPER ) && ( IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_5 ) || ( IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) && !IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_5 ) ) ) ) || !IS_ONLINE_GAME ), FOCUS_CHECK( 5 ) )
|
||||
FRAME_CHOICE_BUTTON_FOCUS_VIS_EX( 10, dvarString( prestigeclass5 ),
|
||||
scriptMenuResponse "prestige5,0"; ACTION_COMMON( 15 ),
|
||||
exec "set ui_custom_name prestigeclass5; set ui_multi_s 0; set ui_multi_dt "HIGH_BOUND; CLEAR_ITEM_NEW( FEATURE_SNIPER ),
|
||||
;,
|
||||
( !IS_ITEM_LOCKED( FEATURE_CREATE_A_CLASS ) && !IS_ITEM_LOCKED( FEATURE_PRESTIGE_CLASS_5 ) && IS_ONLINE_GAME ), FOCUS_CHECK( 5 ) )
|
||||
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 10, "@CLASS_CLASS5",
|
||||
;,
|
||||
;,
|
||||
( IS_ITEM_LOCKED( FEATURE_SNIPER ) && IS_ONLINE_GAME ), decoration FOCUS_CHECK( 5 ) )
|
||||
CHOICE_NEWICON_VIS( 10, "menu_mp_lobby_new", when( ( IS_ITEM_NEW( FEATURE_SNIPER ) ) && IS_ONLINE_GAME ) )
|
||||
|
||||
|
||||
#define DATA_TABLE_PRIMARY_GRENADE GetDefaultClassSlot( dvarstring( ui_class ), "primarygrenade" )
|
||||
#define DATA_TABLE_PRIMARY GetDefaultClassSlot( dvarstring( ui_class ), "primary" )
|
||||
// no default attachments or camo for now
|
||||
#define DATA_TABLE_PRIMARY_ATTACHMENT 0
|
||||
#define DATA_TABLE_PRIMARY_CAMO 0
|
||||
#define DATA_TABLE_SECONDARY GetDefaultClassSlot( dvarstring( ui_class ), "secondary" )
|
||||
// no default attachments or camo for now
|
||||
#define DATA_TABLE_SECONDARY_ATTACHMENT 0
|
||||
#define DATA_TABLE_SECONDARY_CAMO 0
|
||||
#define DATA_TABLE_SPECIALTY1 GetDefaultClassSlot( dvarstring( ui_class ), "specialty1" )
|
||||
#define DATA_TABLE_SPECIALTY2 GetDefaultClassSlot( dvarstring( ui_class ), "specialty2" )
|
||||
#define DATA_TABLE_SPECIALTY3 GetDefaultClassSlot( dvarstring( ui_class ), "specialty3" )
|
||||
#define DATA_TABLE_EQUIPMENT GetDefaultClassSlot( dvarstring( ui_class ), "equipment" )
|
||||
#define DATA_TABLE_SPECIAL_GRENADE GetDefaultClassSlot( dvarstring( ui_class ), "specialgrenade" )
|
||||
#define DATA_TABLE_BODY GetDefaultClassSlot( dvarstring( ui_class ), "body" )
|
||||
#define DATA_TABLE_DEATHSTREAK GetDefaultClassSlot( dvarstring( ui_class ), "deathstreak" )
|
||||
#define DATA_TABLE_KILLSTREAK_TIER1 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak1" )
|
||||
#define DATA_TABLE_KILLSTREAK_TIER2 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak2" )
|
||||
#define DATA_TABLE_KILLSTREAK_TIER3 GetDefaultClassSlot( dvarstring( ui_class ), "killstreak3" )
|
||||
|
||||
/* ==================================== custom classes ============================================= */
|
||||
|
||||
#define STATS_PRIMARY getCACItemIndex( ( dvarString( ui_custom_name ) ), "primary" )
|
||||
#define STATS_PRIMARY_ATTACHMENT getCACItemIndex( ( dvarString( ui_custom_name ) ), "primaryattachment" )
|
||||
#define STATS_PRIMARY_CAMO getCACItemIndex( ( dvarString( ui_custom_name ) ), "primarycamo" )
|
||||
#define STATS_SECONDARY getCACItemIndex( ( dvarString( ui_custom_name ) ), "secondary" )
|
||||
#define STATS_SECONDARY_ATTACHMENT getCACItemIndex( ( dvarString( ui_custom_name ) ), "secondaryattachment" )
|
||||
#define STATS_SECONDARY_CAMO getCACItemIndex( ( dvarString( ui_custom_name ) ), "secondarycamo" )
|
||||
#define STATS_PRIMARY_GRENADE getCACItemIndex( ( dvarString( ui_custom_name ) ), "primarygrenade" )
|
||||
#define STATS_SPECIALTY1 getCACItemIndex( ( dvarString( ui_custom_name ) ), "specialty1" )
|
||||
#define STATS_SPECIALTY2 getCACItemIndex( ( dvarString( ui_custom_name ) ), "specialty2" )
|
||||
#define STATS_SPECIALTY3 getCACItemIndex( ( dvarString( ui_custom_name ) ), "specialty3" )
|
||||
#define STATS_EQUIPMENT getCACItemIndex( ( dvarString( ui_custom_name ) ), "equipment" )
|
||||
#define STATS_SPECIAL_GRENADE getCACItemIndex( ( dvarString( ui_custom_name ) ), "specialgrenade" )
|
||||
#define STATS_BODY getCACItemIndex( ( dvarString( ui_custom_name ) ), "body" )
|
||||
#define STATS_DEATHSTREAK getCACItemIndex( "cacLoadouts", "deathstreak" )
|
||||
#define STATS_KILLSTREAK_TIER1 getCACItemIndex( "cacLoadouts", "killstreak1" )
|
||||
#define STATS_KILLSTREAK_TIER2 getCACItemIndex( "cacLoadouts", "killstreak2" )
|
||||
#define STATS_KILLSTREAK_TIER3 getCACItemIndex( "cacLoadouts", "killstreak3" )
|
||||
|
||||
#include "ui/safearea.menu"
|
||||
|
||||
/* ================================================================================= */
|
||||
/* ================================ LOADOUT DISPLAY ================================ */
|
||||
/* ================================================================================= */
|
||||
|
||||
|
||||
#define STAT_CAC_PRIMARY_GRENADE int(min( STATS_PRIMARY_GRENADE + dvarInt(ui_multi_s), DATA_TABLE_PRIMARY_GRENADE + dvarInt(ui_multi_dt) ))
|
||||
#define STAT_CAC_PRIMARY int(min( STATS_PRIMARY + dvarInt(ui_multi_s), DATA_TABLE_PRIMARY + dvarInt(ui_multi_dt) ))
|
||||
#define STAT_CAC_PRIMARY_ATTACHMENT int(min( STATS_PRIMARY_ATTACHMENT + dvarInt(ui_multi_s), DATA_TABLE_PRIMARY_ATTACHMENT + dvarInt(ui_multi_dt) ))
|
||||
#define STAT_CAC_PRIMARY_CAMO int(min( STATS_PRIMARY_CAMO + dvarInt(ui_multi_s), DATA_TABLE_PRIMARY_CAMO + dvarInt(ui_multi_dt) ))
|
||||
#define STAT_CAC_SECONDARY int(min( STATS_SECONDARY + dvarInt(ui_multi_s), DATA_TABLE_SECONDARY + dvarInt(ui_multi_dt) ))
|
||||
#define STAT_CAC_SECONDARY_ATTACHMENT int(min( STATS_SECONDARY_ATTACHMENT + dvarInt(ui_multi_s), DATA_TABLE_SECONDARY_ATTACHMENT + dvarInt(ui_multi_dt) ))
|
||||
#define STAT_CAC_SECONDARY_CAMO int(min( STATS_SECONDARY_CAMO + dvarInt(ui_multi_s), DATA_TABLE_SECONDARY_CAMO + dvarInt(ui_multi_dt) ))
|
||||
#define STAT_CAC_SPECIALTY1 int(min( STATS_SPECIALTY1 + dvarInt(ui_multi_s), DATA_TABLE_SPECIALTY1 + dvarInt(ui_multi_dt) ))
|
||||
#define STAT_CAC_SPECIALTY2 int(min( STATS_SPECIALTY2 + dvarInt(ui_multi_s), DATA_TABLE_SPECIALTY2 + dvarInt(ui_multi_dt) ))
|
||||
#define STAT_CAC_SPECIALTY3 int(min( STATS_SPECIALTY3 + dvarInt(ui_multi_s), DATA_TABLE_SPECIALTY3 + dvarInt(ui_multi_dt) ))
|
||||
#define STAT_CAC_EQUIPMENT int(min( STATS_EQUIPMENT + dvarInt(ui_multi_s), DATA_TABLE_EQUIPMENT + dvarInt(ui_multi_dt) ))
|
||||
#define STAT_CAC_SPECIAL_GRENADE int(min( STATS_SPECIAL_GRENADE + dvarInt(ui_multi_s), DATA_TABLE_SPECIAL_GRENADE + dvarInt(ui_multi_dt) ))
|
||||
#define STAT_CAC_BODY int(min( STATS_BODY + dvarInt(ui_multi_s), DATA_TABLE_BODY + dvarInt(ui_multi_dt) ))
|
||||
#define STAT_CAC_DEATHSTREAK int(min( STATS_DEATHSTREAK + dvarInt(ui_multi_s), DATA_TABLE_DEATHSTREAK + dvarInt(ui_multi_dt) ))
|
||||
#define STAT_CAC_KILLSTREAK_TIER1 STATS_KILLSTREAK_TIER1
|
||||
#define STAT_CAC_KILLSTREAK_TIER2 STATS_KILLSTREAK_TIER2
|
||||
#define STAT_CAC_KILLSTREAK_TIER3 STATS_KILLSTREAK_TIER3
|
||||
#define FIRST_ATTACHMENT_PRIMARY_WEAPON \
|
||||
Select( dvarInt( ui_multi_s ) == 0, GetItemEquippedAttachment( dvarString( ui_custom_name ), STAT_CAC_PRIMARY, 0 ), -1 )
|
||||
#define SECOND_ATTACHMENT_PRIMARY_WEAPON \
|
||||
Select( dvarInt( ui_multi_s ) == 0, GetItemEquippedAttachment( dvarString( ui_custom_name ), STAT_CAC_PRIMARY, 1 ), -1 )
|
||||
#define FIRST_ATTACHMENT_SECONDARY_WEAPON \
|
||||
Select( dvarInt( ui_multi_s ) == 0, GetItemEquippedAttachment( dvarString( ui_custom_name ), STAT_CAC_SECONDARY, 0 ), -1 )
|
||||
#define SECOND_ATTACHMENT_SECONDARY_WEAPON \
|
||||
Select( dvarInt( ui_multi_s ) == 0, GetItemEquippedAttachment( dvarString( ui_custom_name ), STAT_CAC_SECONDARY, 1 ), -1 )
|
||||
|
||||
// Frame setup
|
||||
#define CAC_HEIGHT NEW_FRAME_DEFAULT_HEIGHT
|
||||
#define CAC_WIDTH ( CAC_HEIGHT * FRAME_ASPECT_RATIO )
|
||||
#define COMMON_ITEM_INFO_X ( -(NEW_FRAME_BUTTON_WIDTH+20) - 30 )
|
||||
#define COMMON_ITEM_INFO_Y ( -CAC_HEIGHT/2 + NEW_FRAME_BG_Y_OFFSET( CAC_HEIGHT ) )
|
||||
#define COMMON_ITEM_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_RIGHT
|
||||
|
||||
#include "ui_mp/cac_item_info.inc"
|
||||
|
||||
// Back button
|
||||
#ifdef PC
|
||||
NEW_FRAME_BACK_BUTTON_ACTION( 640, 480, ON_ESC )
|
||||
#else //#ifdef PC
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_X_START -17 50 17 CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_BOTTOM, 0 0, "@PLATFORM_BACK", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_BOTTOM_LEFT, 1 1 1 1, 1 )
|
||||
#endif //#ifdef PC
|
||||
}
|
||||
}
|
@ -1,620 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui/framestyle.inc"
|
||||
#include "ui_mp/newframe.inc"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
#include "ui_mp/friendslist.inc"
|
||||
|
||||
// Pause menu background... separate menu so that it can draw behind the objective menu
|
||||
menuDef
|
||||
{
|
||||
name "pausedbkgnd"
|
||||
fullScreen 0
|
||||
rect 0 0 640 480
|
||||
focusColor COLOR_FOCUSED
|
||||
blurWorld 4.8
|
||||
visible 1
|
||||
|
||||
#define SINGLE_PLAYER 1
|
||||
#include "ui_mp/ingamebg.inc"
|
||||
}
|
||||
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X 200
|
||||
|
||||
#define BACKGROUND_COLOR_GRAY_RGB 0.62 0.70 0.70
|
||||
|
||||
#ifdef PC
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START 30
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START -60
|
||||
#define CHOICE_SEP_1 5
|
||||
#else
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START 30
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START -30
|
||||
#define CHOICE_SEP_1 3
|
||||
#endif
|
||||
|
||||
#ifdef CONSOLE
|
||||
#define CUSTOM_MATCH ( dvarbool( systemlink ) || dvarbool( xblive_privatematch ) )
|
||||
#define NOT_CUSTOM_MATCH ( !dvarbool( systemlink ) && !dvarbool( xblive_privatematch ) )
|
||||
#define RANKEDGAME (dvarBool( onlinegame ) && !dvarBool( xblive_privatematch ))
|
||||
#define ISHOST (dvarBool( sv_running ))
|
||||
#define TEAMGAME ( team( name ) != "TEAM_FREE")
|
||||
#define NOTTEAMGAME ( team( name ) == "TEAM_FREE" )
|
||||
#define ALLOW_VOTE ( !dvarbool( xblive_basictraining ) && !dvarbool( xblive_wagermatch ) && dvarbool( ui_allowvote ) )
|
||||
#define IN_PREGAME ( dvarbool( ui_pregame ) )
|
||||
#else
|
||||
#define CUSTOM_MATCH ( dvarbool( systemlink ) || dvarbool( xblive_privatematch ) )
|
||||
#define NOT_CUSTOM_MATCH ( !dvarbool( systemlink ) && !dvarbool( xblive_privatematch ) )
|
||||
#define RANKEDGAME ( dvarbool( ui_ranked ) )
|
||||
#define ISHOST ( dvarBool( sv_running ) )
|
||||
#define TEAMGAME ( team( name ) != "TEAM_FREE")
|
||||
#define NOTTEAMGAME ( team( name ) == "TEAM_FREE" )
|
||||
#define ALLOW_VOTE ( !dvarbool( xblive_basictraining ) && !dvarbool( xblive_wagermatch ) && dvarbool( ui_allowvote ) )
|
||||
#define IN_PREGAME ( dvarbool( ui_pregame ) )
|
||||
#endif
|
||||
|
||||
// ------------------ preprocessing function definitions ------------------
|
||||
#define PAD_LEFT \
|
||||
execKeyInt DPAD_LEFT \
|
||||
{ \
|
||||
focusFirst; \
|
||||
show selection_left; \
|
||||
hide selection_right; \
|
||||
} \
|
||||
execKeyInt APAD_LEFT \
|
||||
{ \
|
||||
focusFirst; \
|
||||
show selection_left; \
|
||||
hide selection_right; \
|
||||
}
|
||||
|
||||
#include "ui_mp/menustyle.inc"
|
||||
#include "ui_mp/choices_setup_teams.menu"
|
||||
|
||||
#undef CHOICE_FOCUS_SOUND
|
||||
#define CHOICE_FOCUS_SOUND "uin_navigation_over"
|
||||
|
||||
#undef CHOICE_GROUP
|
||||
#define CHOICE_GROUP "class"
|
||||
|
||||
#undef CHOICE_HORIZONTAL_ALIGN
|
||||
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_LEFT
|
||||
|
||||
#undef CHOICE_VERTICAL_ALIGN
|
||||
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
|
||||
|
||||
#undef BUTTON_BG_X_START
|
||||
#define BUTTON_BG_X_START 30
|
||||
#undef BUTTON_BG_Y_START
|
||||
#define BUTTON_BG_Y_START 42
|
||||
|
||||
#undef CHOICE_TEXTSTYLE
|
||||
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
|
||||
|
||||
#define MAP_BACKGROUND_WIDTH 229
|
||||
#define MAP_BACKGROUND_HEIGHT 228
|
||||
|
||||
#ifdef CONSOLE
|
||||
#define MAP_BG_Y_START -110
|
||||
#else // #ifdef CONSOLE
|
||||
#define MAP_BG_Y_START -120
|
||||
#endif // #else #ifdef CONSOLE
|
||||
|
||||
#define MAP_BG_X_START (-MAP_BACKGROUND_WIDTH - 30)
|
||||
|
||||
|
||||
/* Grey color box which serve as the background for the map image and the contracts menu */
|
||||
#define MAP_BACKGROUND \
|
||||
PREPROC_SHADER_DRAW( MAP_BG_X_START MAP_BG_Y_START MAP_BACKGROUND_WIDTH MAP_BACKGROUND_HEIGHT HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_CENTER, "white", BG_BACKCOLOR )
|
||||
|
||||
#define CHOICE_TAB_TEXTSIZE TEXTSIZE_DEFAULT
|
||||
#define TAB_1_TEXT (locString( "@MENU_TAB_MAP_CAPS" ))
|
||||
#define TAB_2_TEXT (locString( "@MENU_TAB_CONTRACTS_CAPS" ))
|
||||
|
||||
#define TAB_BG_PAD 5
|
||||
#define TAB_1_WIDTH ( getTextWidth( TAB_1_TEXT, CHOICE_TEXTFONT, CHOICE_TAB_TEXTSIZE ) + (TAB_BG_PAD*2) )
|
||||
#define TAB_2_WIDTH ( getTextWidth( TAB_2_TEXT, CHOICE_TEXTFONT, CHOICE_TAB_TEXTSIZE ) + (TAB_BG_PAD*2) )
|
||||
#define TAB_HEIGHT 18
|
||||
|
||||
#define MAP_LIST_TAB_1_X ( MAP_BG_X_START + TAB_BG_PAD )
|
||||
#define MAP_LIST_TAB_2_X ( MAP_LIST_TAB_1_X + TAB_1_WIDTH )
|
||||
|
||||
#define MAP_LIST_TAB_Y ( MAP_BG_Y_START - TAB_HEIGHT )
|
||||
|
||||
#define MAP_HEADERSTEXT \
|
||||
/* highlighted header */ \
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_LIST_TAB_1_X, \
|
||||
MAP_LIST_TAB_Y, \
|
||||
TAB_1_WIDTH, \
|
||||
TAB_HEIGHT, \
|
||||
HORIZONTAL_ALIGN_RIGHT, VERTICAL_ALIGN_CENTER, \
|
||||
TAB_1_TEXT, CHOICE_TAB_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
|
||||
1 1 1 1, \
|
||||
when( dvarInt( showMap ) == 1 );, ; ) \
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_LIST_TAB_1_X, \
|
||||
MAP_LIST_TAB_Y, \
|
||||
TAB_1_WIDTH, \
|
||||
TAB_HEIGHT, \
|
||||
HORIZONTAL_ALIGN_RIGHT, VERTICAL_ALIGN_CENTER, \
|
||||
TAB_1_TEXT, CHOICE_TAB_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
|
||||
BACKGROUND_COLOR_GRAY_RGB .25, \
|
||||
when( dvarInt( showMap ) == 0 );, ; ) \
|
||||
/* non highlighted header */ \
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_LIST_TAB_2_X, \
|
||||
MAP_LIST_TAB_Y, \
|
||||
TAB_2_WIDTH, \
|
||||
TAB_HEIGHT, \
|
||||
HORIZONTAL_ALIGN_RIGHT, VERTICAL_ALIGN_CENTER, \
|
||||
TAB_2_TEXT, CHOICE_TAB_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
|
||||
1 1 1 1, \
|
||||
when( dvarInt( showMap ) == 0 && RANKEDGAME );, ; ) \
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( MAP_LIST_TAB_2_X, \
|
||||
MAP_LIST_TAB_Y, \
|
||||
TAB_2_WIDTH, \
|
||||
TAB_HEIGHT, \
|
||||
HORIZONTAL_ALIGN_RIGHT, VERTICAL_ALIGN_CENTER, \
|
||||
TAB_2_TEXT, CHOICE_TAB_TEXTSIZE, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
|
||||
BACKGROUND_COLOR_GRAY_RGB .25, \
|
||||
when( dvarInt( showMap ) == 1 && RANKEDGAME );, ; )
|
||||
|
||||
#define MAP_LIST_TAB_1_ACTION \
|
||||
if( RANKEDGAME ) \
|
||||
{ \
|
||||
setDvar showMap 1; \
|
||||
}
|
||||
|
||||
#define MAP_LIST_TAB_2_ACTION \
|
||||
if( RANKEDGAME ) \
|
||||
{ \
|
||||
setDvar showMap 0; \
|
||||
}
|
||||
|
||||
#define MAP_HEADERSBUTTONS \
|
||||
TAB_ACTION_BUTTON_ADV( MAP_LIST_TAB_1_X, \
|
||||
MAP_LIST_TAB_Y, \
|
||||
TAB_1_WIDTH, \
|
||||
TAB_HEIGHT, \
|
||||
HORIZONTAL_ALIGN_RIGHT, VERTICAL_ALIGN_CENTER, \
|
||||
MAP_LIST_TAB_1_ACTION, when( dvarInt( showMap ) == 0 && RANKEDGAME );, ; ) \
|
||||
TAB_ACTION_BUTTON_ADV( MAP_LIST_TAB_2_X, \
|
||||
MAP_LIST_TAB_Y, \
|
||||
TAB_2_WIDTH, \
|
||||
TAB_HEIGHT, \
|
||||
HORIZONTAL_ALIGN_RIGHT, VERTICAL_ALIGN_CENTER, \
|
||||
MAP_LIST_TAB_2_ACTION, when( dvarInt( showMap ) == 1 && RANKEDGAME );, ; ) \
|
||||
|
||||
/* Tab for Map */
|
||||
#define MAP_TAB_1_BG \
|
||||
itemDef \
|
||||
{ \
|
||||
style WINDOW_STYLE_SHADER_FRAMED \
|
||||
frame 5 0.5 FRAME_OPEN_BOTTOM \
|
||||
rect 0 MAP_LIST_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_CENTER \
|
||||
exp rect X( MAP_LIST_TAB_1_X ) \
|
||||
exp rect W( TAB_1_WIDTH ) \
|
||||
background "menu_mp_lobby_frame_circle" \
|
||||
forecolor BG_BACKCOLOR \
|
||||
visible when( dvarInt(showMap) == 1 ); \
|
||||
decoration \
|
||||
}
|
||||
|
||||
/* Tab for contracts */
|
||||
#define MAP_TAB_2_BG \
|
||||
itemDef \
|
||||
{ \
|
||||
style WINDOW_STYLE_SHADER_FRAMED \
|
||||
frame 5 0.5 FRAME_OPEN_BOTTOM \
|
||||
rect 0 MAP_LIST_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_CENTER \
|
||||
exp rect X( MAP_LIST_TAB_2_X ) \
|
||||
exp rect W( TAB_2_WIDTH ) \
|
||||
background "menu_mp_lobby_frame_circle" \
|
||||
forecolor BG_BACKCOLOR \
|
||||
visible when( dvarInt(showMap) == 0 && RANKEDGAME ); \
|
||||
decoration \
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
name "class"
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_EMPTY
|
||||
#ifdef CONSOLE
|
||||
rect 0 0 640 480
|
||||
blurWorld 7.0
|
||||
#else
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
#endif
|
||||
|
||||
|
||||
#define ON_ESC scriptMenuResponse "back";
|
||||
onOpen
|
||||
{
|
||||
if ( IsSplitscreen() )
|
||||
{
|
||||
close self;
|
||||
open "class_splitscreen";
|
||||
}
|
||||
else
|
||||
{
|
||||
focusFirst;
|
||||
hide selection_right;
|
||||
setDvar showMap 1;
|
||||
}
|
||||
showMenu "pausedbkgnd"
|
||||
}
|
||||
onClose
|
||||
{
|
||||
hideMenu "pausedbkgnd"
|
||||
}
|
||||
onFocus
|
||||
{
|
||||
focusFirst;
|
||||
}
|
||||
onEsc
|
||||
{
|
||||
ON_ESC
|
||||
}
|
||||
|
||||
#ifndef PC
|
||||
execkeyint BUTTON_START
|
||||
{
|
||||
ON_ESC
|
||||
}
|
||||
#endif
|
||||
|
||||
execkeyint BUTTON_X
|
||||
{
|
||||
if( RANKEDGAME )
|
||||
{
|
||||
if( dvarInt(showMap) == 0 )
|
||||
{
|
||||
setDvar showMap 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
setDvar showMap 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PAD_LEFT
|
||||
MAP_BACKGROUND
|
||||
MAP_TAB_1_BG
|
||||
MAP_TAB_2_BG
|
||||
|
||||
#ifdef CONSOLE
|
||||
#include "ui_mp/ingamebg.inc"
|
||||
#endif
|
||||
|
||||
// -------- GAME TYPE NAME AND DESCRIPTION --------
|
||||
#define MAPNAME tableLookup( "mp/mapstable.csv", 0, dvarString( mapname ), 3 )
|
||||
|
||||
CHOICE_MENU_TITLE_ALIGN_VIS( ( "@" + MAPNAME + "_CAPS" ), HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP, ITEM_ALIGN_MIDDLE_LEFT, 1 )
|
||||
|
||||
#undef BUTTON_BG_Y_START
|
||||
#define BUTTON_BG_Y_START 70
|
||||
|
||||
CHOICE_MENU_TITLE_ALIGN_VIS( toUpper( gametypename() ), HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP, ITEM_ALIGN_MIDDLE_LEFT, 1 )
|
||||
|
||||
PREPROC_TEXT_DRAW_VIS_EX( BUTTON_BG_X_START (BUTTON_BG_Y_START+35) 230 60 HORIZONTAL_ALIGN_LEFT VERTICAL_ALIGN_TOP, 0 0,
|
||||
( gametypedescription() ),
|
||||
TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1,
|
||||
1, autowrapped )
|
||||
// Team icon
|
||||
#define ICON_SIZE 92
|
||||
#define ICON_X_START ( MAP_BG_X_START + MAP_BACKGROUND_WIDTH - ICON_SIZE )
|
||||
#define ICON_RECT ICON_X_START 20 ICON_SIZE ICON_SIZE HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_TOP
|
||||
PREPROC_SHADER_DRAW_VIS_EX( ICON_RECT, ( dvarString( "g_TeamIcon_Allies" ) ), 1 1 1 1, when( TEAM_IS_MARINES );, ; )
|
||||
PREPROC_SHADER_DRAW_VIS_EX( ICON_RECT, ( dvarString( "g_TeamIcon_Axis" ) ), 1 1 1 1, when( TEAM_IS_OPFOR );, ; )
|
||||
|
||||
//=========================================================
|
||||
//===================== MENU SELECTION ====================
|
||||
//=========================================================
|
||||
|
||||
#define IS_WAGER_MODE ( dvarInt( "xblive_wagermatch" ) == 1 )
|
||||
#define IS_CUSTOM_MODE ( dvarInt( "custom_class_mode" ) == 1 )
|
||||
#define IS_BAREBONES_MODE ( dvarInt( "barebones_class_mode" ) == 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_CHOOSE_CLASS_BUTTON_CAPS", scriptMenuResponse "changeclass_barebones", ( IS_BAREBONES_MODE ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_CHOOSE_CLASS_BUTTON_CAPS", scriptMenuResponse "changeclass_custom", ( IS_CUSTOM_MODE ), ; )
|
||||
|
||||
#ifdef CONSOLE
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_CHOOSE_CLASS_BUTTON_CAPS", scriptMenuResponse "changeclass_wager", ( IS_WAGER_MODE && MAY_CHOOSE_CLASS && !IS_CUSTOM_MODE ), ; )
|
||||
#endif // CONSOLE
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_CHOOSE_CLASS_BUTTON_CAPS", scriptMenuResponse "changeclass_marines", ( TEAM_IS_MARINES && MAY_CHOOSE_CLASS && !IS_WAGER_MODE && !IS_CUSTOM_MODE && !IS_BAREBONES_MODE ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_CHOOSE_CLASS_BUTTON_CAPS", scriptMenuResponse "changeclass_opfor", ( TEAM_IS_OPFOR && MAY_CHOOSE_CLASS && !IS_WAGER_MODE && !IS_CUSTOM_MODE && !IS_BAREBONES_MODE ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MPUI_CHOOSE_CLASS_BUTTON_CAPS", scriptMenuResponse "changeclass_opfor", ( dvarInt( scr_oldschool ) == 1 && !IS_WAGER_MODE && !IS_CUSTOM_MODE && !IS_BAREBONES_MODE ), ; )
|
||||
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 1, "@MPUI_CHOOSE_CLASS_BUTTON_CAPS", ;, ;, ( dvarInt( scr_oldschool ) == 1 ), ; )
|
||||
|
||||
#ifdef CONSOLE
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CHANGE_TEAM_BUTTON_CAPS", scriptMenuResponse "changeteam", ( MAY_CHOOSE_TEAM ), ; )
|
||||
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 2, "@MPUI_CHANGE_TEAM_BUTTON_CAPS", ;, ;, ( MAY_NOT_CHOOSE_TEAM ), ; )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MENU_OPTIONS_CAPS", close self; open ingameoptions, 1, ; )
|
||||
|
||||
#define CAN_LEAVE_GAME ( !isVisibilityBitSet( BIT_ROUND_END_KILLCAM ) && !isVisibilityBitSet( BIT_FINAL_KILLCAM ) )
|
||||
|
||||
#ifdef PUBLIC_BETA
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_END_GAME_CAPS", open popup_endgame, ( RANKEDGAME == 0 && ISHOST && CAN_LEAVE_GAME ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_LEAVE_GAME_CAPS", open popup_leavegameandparty, ( RANKEDGAME == 0 && (ISHOST == 0) && (InPrivateParty() && !PrivatePartyHost() && PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_LEAVE_GAME_CAPS", open popup_leavegame, ( RANKEDGAME == 0 && (ISHOST == 0) && (!InPrivateParty() || PrivatePartyHost() || !PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_LEAVE_GAME_CAPS", open popup_endgame_ranked, ( RANKEDGAME && ISHOST && CAN_LEAVE_GAME && ( !HostMigrationWaitingForPlayers() ) ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_LEAVE_GAME_CAPS", open popup_leavegameandparty_ranked, ( RANKEDGAME && ISHOST == 0 && (InPrivateParty() && !PrivatePartyHost() && PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_LEAVE_GAME_CAPS", open popup_leavegame_ranked, ( RANKEDGAME && ISHOST == 0 && (!InPrivateParty() || PrivatePartyHost() || !PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
|
||||
#else // #ifdef PUBLIC_BETA
|
||||
//..............................................
|
||||
// Dev only. Remove me prior to shipping
|
||||
//FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_BADSPAWN_CAPS", open popup_badspawn, 1, ; )
|
||||
//..............................................
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 5, "@MENU_END_GAME_CAPS", open popup_endgame, ( RANKEDGAME == 0 && ISHOST && CAN_LEAVE_GAME ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 5, "@MENU_LEAVE_GAME_CAPS", open popup_leavegameandparty, ( RANKEDGAME == 0 && (ISHOST == 0) && (InPrivateParty() && !PrivatePartyHost() && PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 5, "@MENU_LEAVE_GAME_CAPS", open popup_leavegame, ( RANKEDGAME == 0 && (ISHOST == 0) && (!InPrivateParty() || PrivatePartyHost() || !PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 5, "@MENU_LEAVE_GAME_CAPS", open popup_endgame_ranked, ( RANKEDGAME && ISHOST && CAN_LEAVE_GAME && ( !HostMigrationWaitingForPlayers() ) ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 5, "@MENU_LEAVE_GAME_CAPS", open popup_leavegameandparty_ranked, ( RANKEDGAME && ISHOST == 0 && (InPrivateParty() && !PrivatePartyHost() && PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 5, "@MENU_LEAVE_GAME_CAPS", open popup_leavegame_ranked, ( RANKEDGAME && ISHOST == 0 && (!InPrivateParty() || PrivatePartyHost() || !PrivatePartyHostInLobby()) && CAN_LEAVE_GAME ), ; )
|
||||
#endif // #else #ifdef PUBLIC_BETA
|
||||
|
||||
#endif // #ifdef CONSOLE
|
||||
#ifdef PC
|
||||
#define SQUAD_CAP 12
|
||||
#define INVITE_MEMBER 1
|
||||
#define KICK_MEMBER 2
|
||||
#define SQUAD_BUTTON_START_X -439
|
||||
#define SQUAD_BUTTON_START_Y -65
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MPUI_CHANGE_TEAM_CAPS", scriptMenuResponse "changeteam", (dvarBool( ui_allow_teamchange )), ; )
|
||||
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 2, "@MPUI_CHANGE_TEAM_BUTTON_CAPS", ;, ;, ( !dvarBool( ui_allow_teamchange ) ), ; )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 3, "@MPUI_CALL_VOTE_CAPS", open callvote; close self;, ( ALLOW_VOTE ), ; )
|
||||
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 3, "@MPUI_CALL_VOTE_CAPS", ;, ;, ( !ALLOW_VOTE ), ; )
|
||||
|
||||
// FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MPUI_MUTE_PLAYERS_CAPS", open muteplayer_menu; close self;, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 4, "@MENU_PLAYERS_CAPS", close self; open players;, 1, ; )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 5, "@MENU_FRIENDS_CAPS", SETUP_ACTION_INVITE, 1, ; )
|
||||
CHOICE_NEWICON_VIS( 5, "menu_mp_lobby_new", when( hasinvites() || haspendingfriends() ); )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 6, "@MENU_SETTINGS_CAPS", close self; open options_new_pc; execnow "set ui_allow_graphic_change 0";, 1, ; )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 7, "@MENU_ADD_TO_FAVORITES_CAPS", uiscript createFavoriteIngame; open fav_message_popmenu;, ( ISHOST == 0 ), ; )
|
||||
FRAME_CHOICE_DBUTTON_FOCUS_VIS_EX( 7, "@MENU_ADD_TO_FAVORITES_CAPS", ;, ;, ( ISHOST ), ; )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 8, "@MENU_LEAVE_GAME_CAPS", open popup_endgame, ( ( !RANKEDGAME || IN_PREGAME ) && ISHOST && CAN_LEAVE_GAME ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 8, "@MENU_LEAVE_GAME_CAPS", open popup_leavegame, ( ( !RANKEDGAME || IN_PREGAME ) && !ISHOST ), ; )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 8, "@MENU_LEAVE_GAME_CAPS", open popup_endgame_ranked, ( RANKEDGAME && !IN_PREGAME && ISHOST && CAN_LEAVE_GAME ), ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 8, "@MENU_LEAVE_GAME_CAPS", open popup_leavegame_ranked, ( RANKEDGAME && !IN_PREGAME && !ISHOST && CAN_LEAVE_GAME ), ; )
|
||||
|
||||
#endif // #ifdef PC
|
||||
|
||||
//Showing the ingame Xp bar.
|
||||
#include "ui_mp/popup_player_info.inc"
|
||||
|
||||
#define SHOW_XP_BAR ( RANKEDGAME || dvarInt( xblive_basictraining ) )
|
||||
#define XP_BAR_WIDTH ( Select( dvarInt( widescreen ), 592, 407 ) )
|
||||
#define XP_TEXT_WIDTH 65
|
||||
#define X_START (-XP_BAR_WIDTH - XP_TEXT_WIDTH - 100)
|
||||
#define XP_BAR_Y_START 115
|
||||
|
||||
#define REQUIRED_XP int(getDStat( "PlayerStatsList", "RANKXP" )-int(tablelookup( "mp/ranktable.csv", 0, string(getDStat( "PlayerStatsList", "RANK" )), 2)))
|
||||
#define REQUIRED_XP_STRING (int(tablelookup( "mp/ranktable.csv", 0, string(getDStat( "PlayerStatsList", "RANK" )), 3 ))-REQUIRED_XP)
|
||||
#define NEXT_LEVEL ( tablelookup( "mp/ranktable.csv", 0, getDStat( "PlayerStatsList", "RANK" ) + 1, 14 ) )
|
||||
#define BAR_FILLED XP_BAR_WIDTH*((getDStat( "PlayerStatsList", "RANKXP" )-int(tablelookup( "mp/ranktable.csv", 0, string(getDStat( "PlayerStatsList", "RANK" )), 2)))/int(tablelookup("mp/ranktable.csv",0,getDStat( "PlayerStatsList", "RANK" ),3)))
|
||||
|
||||
/* BACKGROUND FOR XP BAR */
|
||||
PREPROC_SHADER_DRAW_ADV_VIS_EX( (X_START+XP_TEXT_WIDTH),
|
||||
XP_BAR_Y_START,
|
||||
XP_BAR_WIDTH,
|
||||
20,
|
||||
HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN,
|
||||
"white", BG_BACKCOLOR,
|
||||
when( CAN_RANK_UP && SHOW_XP_BAR ), ; )
|
||||
PREPROC_SHADER_DRAW_ADV_VIS_EX( (X_START+XP_TEXT_WIDTH),
|
||||
XP_BAR_Y_START,
|
||||
XP_BAR_WIDTH,
|
||||
20,
|
||||
HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN,
|
||||
"menu_mp_bar_shadow", 1 1 1 0.2,
|
||||
when( CAN_RANK_UP && SHOW_XP_BAR ), ; )
|
||||
/* XP BAR */
|
||||
PREPROC_SHADER_DRAW_ADV_VIS_EX( (X_START+XP_TEXT_WIDTH),
|
||||
XP_BAR_Y_START,
|
||||
(BAR_FILLED),
|
||||
20,
|
||||
HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN,
|
||||
"menu_mp_combatrecord_bar", BAR_COLOR,
|
||||
when( CAN_RANK_UP && SHOW_XP_BAR ),
|
||||
; )
|
||||
/* Tiny arrow at xp bar end */
|
||||
PREPROC_SHADER_DRAW_ADV_VIS_EX( ( -5 + (X_START+XP_TEXT_WIDTH) + BAR_FILLED),
|
||||
(XP_BAR_Y_START+18),
|
||||
10,
|
||||
10,
|
||||
HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN,
|
||||
"ui_arrow_right", BAR_COLOR,
|
||||
when( CAN_RANK_UP && SHOW_XP_BAR );,
|
||||
rotation -90; )
|
||||
/* Label for "NEXT LEVEL" */
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( X_START,
|
||||
XP_BAR_Y_START,
|
||||
XP_BAR_WIDTH,
|
||||
20,
|
||||
HORIZONTAL_ALIGN_RIGHT, CHOICE_VERTICAL_ALIGN,
|
||||
"@MPUI_NEXT_LEVEL_CAPS",
|
||||
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR,
|
||||
when( SHOW_XP_BAR ), ; )
|
||||
/* value for XP NEEDED to next level */
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( (X_START+XP_TEXT_WIDTH),
|
||||
XP_BAR_Y_START,
|
||||
XP_BAR_WIDTH,
|
||||
20,
|
||||
HORIZONTAL_ALIGN_RIGHT, CHOICE_VERTICAL_ALIGN,
|
||||
locString( "MPUI_AAR_XP_NEEDED_CAPS", REQUIRED_XP_STRING ),
|
||||
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR,
|
||||
when( CAN_RANK_UP && SHOW_XP_BAR ), ; )
|
||||
/* next level */
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( (X_START+XP_BAR_WIDTH+XP_TEXT_WIDTH+3),
|
||||
(XP_BAR_Y_START+2),
|
||||
15,
|
||||
15,
|
||||
HORIZONTAL_ALIGN_RIGHT, CHOICE_VERTICAL_ALIGN,
|
||||
int( NEXT_LEVEL ),
|
||||
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR,
|
||||
when( CAN_RANK_UP && PRESTIGE_NEXT==0 && SHOW_XP_BAR ), ; )
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( (X_START+XP_BAR_WIDTH+XP_TEXT_WIDTH+3),
|
||||
(XP_BAR_Y_START+2),
|
||||
15,
|
||||
15,
|
||||
HORIZONTAL_ALIGN_RIGHT, CHOICE_VERTICAL_ALIGN,
|
||||
"1",
|
||||
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, CHOICE_TEXTCOLOR,
|
||||
when( CAN_RANK_UP && PRESTIGE_NEXT && SHOW_XP_BAR ), ; )
|
||||
/* next level rank icon */
|
||||
RANK_ICON_ADV( ( X_START+XP_BAR_WIDTH+XP_TEXT_WIDTH+6+getTextWidth( NEXT_LEVEL, CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) ), (XP_BAR_Y_START+2), HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_CENTER,
|
||||
tablelookup( "mp/rankIconTable.csv", 0, getDStat( "PlayerStatsList", "RANK" )+1, getDStat( "PlayerStatsList", "PLEVEL" )+1 ),
|
||||
when( CAN_RANK_UP && PRESTIGE_NEXT==0 && SHOW_XP_BAR ) )
|
||||
RANK_ICON_ADV( ( X_START+XP_BAR_WIDTH+XP_TEXT_WIDTH+6+getTextWidth( "1", CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) ), (XP_BAR_Y_START+2), HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_CENTER,
|
||||
tablelookup( "mp/rankIconTable.csv", 0, 0, getDStat( "PlayerStatsList", "PLEVEL" )+2 ),
|
||||
when( CAN_RANK_UP && PRESTIGE_NEXT && SHOW_XP_BAR) )
|
||||
|
||||
//************************************Contracts********************************
|
||||
//*****************************************************************************
|
||||
//Green background
|
||||
#define BACKGROUND_COLOR_COMPLETED_RGB .34 .9 .34
|
||||
//Gray background
|
||||
#define BACKGROUND_COLOR_PROGRESS_RGB BACKGROUND_COLOR_GRAY_RGB
|
||||
//Red background
|
||||
#define BACKGROUND_COLOR_EXPIRED_RGB .9 .16 .24
|
||||
// Yellow Background
|
||||
#define BACKGROUND_COLOR_PROGRESS_STATUS 0.97 0.85 0.03
|
||||
|
||||
#define CONTRACTS_Y_START ( MAP_BG_Y_START + 5 )
|
||||
#define CONTRACTS_X_START ( MAP_BG_X_START + TAB_BG_PAD )
|
||||
#define CONTRACTS_WIDTH ( MAP_BACKGROUND_WIDTH - (TAB_BG_PAD*2) )
|
||||
#define CONTRACTS_HEIGHT ( MAP_BACKGROUND_HEIGHT - TAB_BG_PAD )
|
||||
|
||||
#define CONTRACT_INFO( index, visArg ) \
|
||||
/* BACKGROUND FOR CONTRACT INFO if completed*/ \
|
||||
PREPROC_SHADER_DRAW_VIS_EX( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index ) CONTRACTS_WIDTH (CONTRACTS_HEIGHT/3 - 5 ) HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, \
|
||||
"white", BACKGROUND_COLOR_COMPLETED_RGB .1, \
|
||||
when( visArg && dvarInt(showMap) == 0 && IsContractComplete( GetIndexForActiveContract( index ) ) ), \
|
||||
; ) \
|
||||
/* BACKGROUND FOR CONTRACT INFO if in progress*/ \
|
||||
PREPROC_SHADER_DRAW_VIS_EX( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index ) CONTRACTS_WIDTH (CONTRACTS_HEIGHT/3 - 5 ) HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, \
|
||||
"white", BACKGROUND_COLOR_PROGRESS_RGB .1, \
|
||||
when( visArg && dvarInt(showMap) == 0 && IsContractInProgress( GetIndexForActiveContract( index ) ) ), \
|
||||
; ) \
|
||||
/* BACKGROUND FOR CONTRACT INFO if expired*/ \
|
||||
PREPROC_SHADER_DRAW_VIS_EX( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index ) CONTRACTS_WIDTH (CONTRACTS_HEIGHT/3 - 5 ) HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, \
|
||||
"white", BACKGROUND_COLOR_EXPIRED_RGB .1, \
|
||||
when( visArg && dvarInt(showMap) == 0 && IsContractExpired( GetIndexForActiveContract( index ) ) ), \
|
||||
; ) \
|
||||
/* CONTRACT NAME */ \
|
||||
PREPROC_TEXT_DRAW_VIS( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index ) CONTRACTS_WIDTH 20 HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, 0 0, GetContractName( GetIndexForActiveContract( index ) ), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, CHOICE_TEXTCOLOR, when( visArg ); autowrapped ) \
|
||||
/* CONTRACT DESC */ \
|
||||
PREPROC_TEXT_DRAW_VIS( ( CONTRACTS_X_START+2 ) ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index + 12 ) ( CONTRACTS_WIDTH-2 ) 20 HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, 0 0, GetContractDesc( GetIndexForActiveContract( index ) ),0.24, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, BACKGROUND_COLOR_PROGRESS_RGB .25, when( visArg ); autowrapped ) \
|
||||
/* CONTRACT STATUS WHEN COMPLETED */ \
|
||||
PREPROC_TEXT_DRAW_VIS( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index + 65 ) CONTRACTS_WIDTH 20 HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, 0 0, "@MPUI_COMPLETE_CAPS", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_CENTER, NEW_FRAME_GREEN_RGB 1, when( IsContractComplete( GetIndexForActiveContract( index ) ) > 0 && visArg ) ) \
|
||||
/* CONTRACT PROGRESS TEXT ( YELLOW WHEN CONTRACT IS IN PROGRESS ) */ \
|
||||
PREPROC_TEXT_DRAW_VIS( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index + 65 ) CONTRACTS_WIDTH 20 HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, 0 0, locString("MPUI_CONTRACT_PROGRESS_WITHBRACES", GetContractProgress( GetIndexForActiveContract( index ) ), GetContractRequiredCount( GetIndexForActiveContract( index ) ) ), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_CENTER, NEW_FRAME_ORANGE_RGB 1, when( IsContractInProgress( GetIndexForActiveContract( index ) ) > 0 && GetContractRequiredCount( GetIndexForActiveContract( index ) ) > 1 && visArg ) ) \
|
||||
PREPROC_TEXT_DRAW_VIS( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index + 65 ) CONTRACTS_WIDTH 20 HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, 0 0, locString("MPUI_CONTRACT_NOT_COMPLETE"), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_CENTER, NEW_FRAME_ORANGE_RGB 1, when( IsContractInProgress( GetIndexForActiveContract( index ) ) > 0 && GetContractRequiredCount( GetIndexForActiveContract( index ) ) == 1 && visArg ) ) \
|
||||
/* CONTRACT STATUS WHEN EXPIRED */ \
|
||||
PREPROC_TEXT_DRAW_VIS( CONTRACTS_X_START ( CONTRACTS_Y_START+(CONTRACTS_HEIGHT/3)*index + 65 ) CONTRACTS_WIDTH 20 HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, 0 0, "@MPUI_CONTRACT_EXPIRED_CAPS", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_CENTER, NEW_FRAME_RED_RGB 1, when( IsContractExpired( GetIndexForActiveContract( index ) ) > 0 && visArg ) ) \
|
||||
|
||||
CONTRACT_INFO( 0, ( GetIndexForActiveContract(0) != -1 && RANKEDGAME && dvarInt(showMap) == 0 ) )
|
||||
CONTRACT_INFO( 1, ( GetIndexForActiveContract(1) != -1 && RANKEDGAME && dvarInt(showMap) == 0 ) )
|
||||
CONTRACT_INFO( 2, ( GetIndexForActiveContract(2) != -1 && RANKEDGAME && dvarInt(showMap) == 0 ) )
|
||||
|
||||
#define NO_ACTIVE_CONTRACTS \
|
||||
(GetIndexForActiveContract(0) == -1 && GetIndexForActiveContract(1) == -1 && GetIndexForActiveContract(2) == -1)
|
||||
|
||||
PREPROC_TEXT_DRAW_VIS_EX( ( CONTRACTS_X_START+20 ) CONTRACTS_Y_START ( CONTRACTS_WIDTH - 40 ) 40 HORIZONTAL_ALIGN_RIGHT CHOICE_VERTICAL_ALIGN, 0 0,
|
||||
"@MPUI_AAR_NO_NEW_CONTRACTS",
|
||||
TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, CHOICE_TEXTCOLOR,
|
||||
when( NO_ACTIVE_CONTRACTS && RANKEDGAME && dvarInt(showMap) == 0 );,
|
||||
autowrapped )
|
||||
|
||||
// Tactical Map
|
||||
#define SHOULD_SHOW_MAP dvarInt(showMap)
|
||||
#undef RIGHTITEM_ALIGN
|
||||
#define RIGHTITEM_ALIGN HORIZONTAL_ALIGN_RIGHT
|
||||
#define MAP_X ( MAP_BG_X_START + 5 )
|
||||
#define MAP_Y ( 101 )
|
||||
#include "ui_mp/tactical_map.inc"
|
||||
|
||||
|
||||
// ----------------- BEGIN Scroller --------------------------
|
||||
#include "ui/scroller.inc"
|
||||
// ----------------- END Scroller --------------------------
|
||||
|
||||
#define SETUP_ACTION_OPENFRIENDLIST \
|
||||
open menu_friends;
|
||||
// ------------------ buttons ---------------------
|
||||
|
||||
#ifdef PC
|
||||
NEW_FRAME_BACK_BUTTON_ACTION_PC_VIS( ON_ESC , when( !dvarInt( ui_show_friends_list_bg ) ) )
|
||||
#else
|
||||
// Back button
|
||||
PREPROC_TEXT_DRAW_VIS( CHOICE_X_START -17 50 17 CHOICE_HORIZONTAL_ALIGN VERTICAL_ALIGN_BOTTOM, 0 0, "@PLATFORM_BACK", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_BOTTOM_LEFT, 1 1 1 1, when( !dvarInt( ui_show_friends_list_bg ) ) )
|
||||
#endif // PC
|
||||
|
||||
// Contracts / Map button
|
||||
#ifndef PC
|
||||
PREPROC_TEXT_DRAW_VIS( (MAP_BG_X_START-1) -17 50 17 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM, 0 0, "@PLATFORM_SHOW_CONTRACTS", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_BOTTOM_LEFT, 1 1 1 1, when( dvarInt( showMap ) == 1 && RANKEDGAME && !dvarInt( ui_show_friends_list_bg ) ) )
|
||||
PREPROC_TEXT_DRAW_VIS( (MAP_BG_X_START-1) -17 50 17 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM, 0 0, "@PLATFORM_SHOW_MAP", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_BOTTOM_LEFT, 1 1 1 1, when( dvarInt( showMap ) == 0 && RANKEDGAME && !dvarInt( ui_show_friends_list_bg ) ) )
|
||||
// Friends list button
|
||||
#ifdef PS3
|
||||
GAMEPAD_BUTTON( -55 -17 70 17 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM, "@PLATFORM_FRIENDLIST", BUTTON_Y { SETUP_ACTION_OPENFRIENDLIST; }, when( !dvarInt( ui_show_friends_list_bg ) && !IS_WAGER_MODE && anySignedInToLiveAndStatsFetched() && canShowContentFromUser( 0 ) ) )
|
||||
#else // #ifdef PS3
|
||||
GAMEPAD_BUTTON( -55 -17 70 17 HORIZONTAL_ALIGN_RIGHT VERTICAL_ALIGN_BOTTOM, "@PLATFORM_FRIENDLIST", BUTTON_Y { SETUP_ACTION_OPENFRIENDLIST; }, when( !dvarInt( ui_show_friends_list_bg ) && !IS_WAGER_MODE && anySignedInToLiveAndStatsFetched() ) )
|
||||
#endif // #ifdef PS3
|
||||
#endif
|
||||
|
||||
MAP_HEADERSTEXT
|
||||
MAP_HEADERSBUTTONS
|
||||
|
||||
|
||||
itemDef
|
||||
{
|
||||
name friends_list_bg
|
||||
style WINDOW_STYLE_FILLED
|
||||
rect -400 -200 10000 10000
|
||||
backcolor 0 0 0 0
|
||||
visible when( IsInGame() );
|
||||
decoration
|
||||
|
||||
state
|
||||
{
|
||||
name on
|
||||
backcolor 0 0 0 0.7
|
||||
}
|
||||
}
|
||||
|
||||
#include "ui/safearea.menu"
|
||||
}
|
||||
|
||||
#undef CHOICE_GROUP
|
||||
#define CHOICE_GROUP "popmenu"
|
||||
|
||||
#include "ui_mp/popupstyle.inc"
|
||||
#include "ui/choices_setup_popmenu.menu"
|
||||
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( popup_badspawn, setfocus popup_badspawn_2, ;, 1 )
|
||||
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MPUI_REPORT_BADSPAWN", 1 )
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_YES", scriptMenuResponse "badspawn"; close self, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_NO", close self, 1, name popup_badspawn_2 )
|
||||
}
|
@ -1,576 +0,0 @@
|
||||
#include "ui/menudef.h"
|
||||
#include "ui_mp/common_macro.inc"
|
||||
#include "ui/framestyle.inc"
|
||||
#include "ui_mp/newframe.inc"
|
||||
#include "ui_mp/serverbrowser.inc";
|
||||
#include "ui_mp/menustyle.inc"
|
||||
#include "ui/choices_setup_common.menu"
|
||||
#include "ui_mp/item_animate.inc"
|
||||
|
||||
#define SERVER_BROWSER_HEIGHT 420
|
||||
#define SERVER_BROWSER_WIDTH TABLE_WIDTH
|
||||
|
||||
#define SERVER_BROWSER_BODY_X_START ( -SERVER_BROWSER_WIDTH / 2 + 15 )
|
||||
#define SERVER_BROWSER_BODY_Y_START ( -SERVER_BROWSER_HEIGHT / 2 + 15 + NEW_FRAME_HEADER_HEIGHT )
|
||||
|
||||
|
||||
#undef CHOICE_HORIZONTAL_ALIGN
|
||||
#define CHOICE_HORIZONTAL_ALIGN HORIZONTAL_ALIGN_CENTER
|
||||
|
||||
#undef CHOICE_VERTICAL_ALIGN
|
||||
#define CHOICE_VERTICAL_ALIGN VERTICAL_ALIGN_CENTER
|
||||
|
||||
#define FLYOUT_NONE 0
|
||||
#define FLYOUT_BROWSER 3
|
||||
|
||||
#undef CHOICE_TEXTSTYLE
|
||||
#define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL
|
||||
|
||||
#define TAB_OPEN( menuName ) \
|
||||
execNow closemenuImmediate (dvarstring("ui_serverBrowserMenu")); \
|
||||
execNow openMenuImmediate (menuName); \
|
||||
|
||||
#undef ORIGIN_TITLE
|
||||
#define ORIGIN_TITLE 10 0
|
||||
|
||||
#define CHOICE_TAB_TEXTSIZE TEXTSIZE_DEFAULT
|
||||
#define TAB_1_TEXT ( locString( "@MENU_JOIN_SERVER_RANKED_CAPS" ) )
|
||||
#define TAB_2_TEXT ( locString( "@MENU_JOIN_SERVER_UNRANKED_CAPS" ) )
|
||||
#define TAB_3_TEXT ( locString( "@MENU_JOIN_SERVER_WAGER_CAPS" ) )
|
||||
#define TAB_4_TEXT ( locString( "@MENU_JOIN_SERVER_FRIENDS_CAPS" ) )
|
||||
#define TAB_5_TEXT ( locString( "@MENU_JOIN_SERVER_FAVORITES_CAPS" ) )
|
||||
#define TAB_6_TEXT ( locString( "@MENU_JOIN_SERVER_HISTORY_CAPS" ) )
|
||||
|
||||
#define TAB_BG_PAD 5
|
||||
#define TAB_1_WIDTH ( getTextWidth( TAB_1_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
|
||||
#define TAB_2_WIDTH ( getTextWidth( TAB_2_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
|
||||
#define TAB_3_WIDTH ( getTextWidth( TAB_3_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
|
||||
#define TAB_4_WIDTH ( getTextWidth( TAB_4_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
|
||||
#define TAB_5_WIDTH ( getTextWidth( TAB_5_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
|
||||
#define TAB_6_WIDTH ( getTextWidth( TAB_6_TEXT, CHOICE_TEXTFONT, TEXTSIZE_SMALL ) + (TAB_BG_PAD*2) )
|
||||
#define TAB_HEIGHT 15
|
||||
|
||||
#define SERVER_BROWSER_TAB_1_X 9
|
||||
#define SERVER_BROWSER_TAB_2_X ( SERVER_BROWSER_TAB_1_X + TAB_1_WIDTH )
|
||||
#define SERVER_BROWSER_TAB_3_X ( SERVER_BROWSER_TAB_2_X + TAB_2_WIDTH )
|
||||
#define SERVER_BROWSER_TAB_4_X ( SERVER_BROWSER_TAB_3_X + TAB_3_WIDTH )
|
||||
#define SERVER_BROWSER_TAB_5_X ( SERVER_BROWSER_TAB_4_X + TAB_4_WIDTH )
|
||||
#define SERVER_BROWSER_TAB_6_X ( SERVER_BROWSER_TAB_5_X + TAB_5_WIDTH )
|
||||
|
||||
#define SERVER_BROWSER_TAB_Y ( ( -SERVER_BROWSER_HEIGHT / 2 ) + NEW_FRAME_HEADER_HEIGHT - TAB_HEIGHT + 1 )
|
||||
|
||||
|
||||
#define TAB( x, tabWidth, textArg, menuName, selected ) \
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( ( -SERVER_BROWSER_WIDTH / 2 + x ), \
|
||||
SERVER_BROWSER_TAB_Y, \
|
||||
tabWidth, \
|
||||
TAB_HEIGHT, \
|
||||
HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, \
|
||||
textArg, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
|
||||
NEW_FRAME_GRAY_TEXT_COLOR, when( !selected ), TAB_MOUSEOVER_HIGHLIGHT; ) \
|
||||
PREPROC_TEXT_DRAW_ADV_VIS_EX( ( -SERVER_BROWSER_WIDTH / 2 + x ), \
|
||||
SERVER_BROWSER_TAB_Y, \
|
||||
tabWidth, \
|
||||
TAB_HEIGHT, \
|
||||
HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, \
|
||||
textArg, TEXTSIZE_SMALL, 0, 0, ITEM_ALIGN_MIDDLE_CENTER, \
|
||||
NEW_FRAME_ORANGE_RGB 1, when( selected ), ; ) \
|
||||
TAB_ACTION_BUTTON_ADV( ( -SERVER_BROWSER_WIDTH / 2 + x ), \
|
||||
( -SERVER_BROWSER_HEIGHT / 2 + NEW_FRAME_HEADER_HEIGHT - TAB_HEIGHT ), \
|
||||
tabWidth, \
|
||||
TAB_HEIGHT, \
|
||||
HORIZONTAL_ALIGN_CENTER, VERTICAL_ALIGN_CENTER, \
|
||||
TAB_OPEN( menuName ), 1, ; ) \
|
||||
|
||||
|
||||
#define SERVER_BROWSER_TAB_BG( px, tabWidth, selected ) \
|
||||
itemDef \
|
||||
{ \
|
||||
style WINDOW_STYLE_SHADER \
|
||||
frame 16 0.2 FRAME_OPEN_BOTTOM \
|
||||
rect 0 SERVER_BROWSER_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \
|
||||
exp rect X( ( -SERVER_BROWSER_WIDTH / 2 + px ) ) \
|
||||
exp rect W( tabWidth ) \
|
||||
background "menu_mp_tab_frame_inner" \
|
||||
forecolor 0.5 0.5 0.5 0.5 \
|
||||
visible when( selected ) \
|
||||
decoration \
|
||||
} \
|
||||
itemDef \
|
||||
{ \
|
||||
style WINDOW_STYLE_SHADER \
|
||||
frame 16 0.2 FRAME_OPEN_BOTTOM \
|
||||
rect 0 SERVER_BROWSER_TAB_Y 0 TAB_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \
|
||||
exp rect X( ( -SERVER_BROWSER_WIDTH / 2 + px ) ) \
|
||||
exp rect W( tabWidth ) \
|
||||
background "menu_mp_tab_frame_inner" \
|
||||
forecolor 1 1 1 1 \
|
||||
visible when( !selected ) \
|
||||
decoration \
|
||||
}
|
||||
|
||||
#define ON_ESC \
|
||||
if( menuisopen( filter_window ) ) \
|
||||
{ \
|
||||
close filter_window; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
close self; \
|
||||
}
|
||||
|
||||
#define SERVER_BROWSER_MENU_TEMPLATE( menuName, onOpenArg, onCloseArg ) \
|
||||
name menuName \
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN \
|
||||
focuscolor COLOR_FOCUSED \
|
||||
style WINDOW_STYLE_FILLED \
|
||||
priority MENU_PRI_DEFAULT \
|
||||
soundloop MENU_MUSIC \
|
||||
openSlideSpeed DEFAULT_SLIDE_IN_SPEED \
|
||||
closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED \
|
||||
openSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM \
|
||||
closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM \
|
||||
onFocus { \
|
||||
setDvar ui_flyoutHasFocus FLYOUT_BROWSER; \
|
||||
} \
|
||||
onOpen { \
|
||||
activateBlur; \
|
||||
play uin_navigation_menu_lg_open; \
|
||||
setdvar ui_serverBrowserMenu menuName; \
|
||||
onOpenArg; \
|
||||
uiScript PopulateServers; \
|
||||
} \
|
||||
onClose { \
|
||||
execNow ui_animate menuName Browser "Maximized" DEFAULT_SLIDE_OUT_SPEED; \
|
||||
deactivateBlur; \
|
||||
onCloseArg; \
|
||||
setDvar ui_flyoutHasFocus FLYOUT_NONE; \
|
||||
execNow closemenuImmediate (filter_window); \
|
||||
} \
|
||||
onEsc { \
|
||||
ON_ESC \
|
||||
} \
|
||||
execKeyInt 171 { \
|
||||
uiScript RefreshServers; \
|
||||
} \
|
||||
|
||||
|
||||
#define GLOBAL_SERVER_COUNT \
|
||||
PREPROC_TEXT_DRAW( (SERVER_BROWSER_WIDTH/2-7) (-SERVER_BROWSER_HEIGHT/2+2) 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, ( locString( "@PLATFORM_PLAYERS_ONLINE", GetPlayersRegisteredOnline() ) ), TEXTSIZE_DEFAULT, 0, 1, ITEM_ALIGN_TOP_RIGHT, 1 1 1 1 ) \
|
||||
PREPROC_TEXT_DRAW( (SERVER_BROWSER_WIDTH/2-7) (-SERVER_BROWSER_HEIGHT/2+20) 1 1 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, ( locString( "@PLATFORM_ALL_SERVERS", GetDedicatedServersRegisteredOnline() ) ), TEXTSIZE_DEFAULT, 0, 1, ITEM_ALIGN_TOP_RIGHT, 1 1 1 1 )
|
||||
|
||||
// Don't let keys fall through to the main menu.
|
||||
#define MASSIVE_HACK_KEYCATCHER \
|
||||
itemDef \
|
||||
{ \
|
||||
style WINDOW_STYLE_EMPTY \
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN \
|
||||
forecolor 1 1 1 0 \
|
||||
visible 1 \
|
||||
}
|
||||
|
||||
#define SERVER_BROWSER_TAB_COMMON_ITEMS( selectedTabIndex ) \
|
||||
MASSIVE_HACK_KEYCATCHER \
|
||||
NEW_FRAME( SERVER_BROWSER_WIDTH, SERVER_BROWSER_HEIGHT ) \
|
||||
NEW_FRAME_TITLE( SERVER_BROWSER_WIDTH, SERVER_BROWSER_HEIGHT, "@MENU_SERVER_BROWSER_CAPS", 1 ) \
|
||||
SERVER_BROWSER_TAB_BG( SERVER_BROWSER_TAB_1_X, TAB_1_WIDTH, ( selectedTabIndex == 1 ) ) \
|
||||
SERVER_BROWSER_TAB_BG( SERVER_BROWSER_TAB_2_X, TAB_2_WIDTH, ( selectedTabIndex == 2 ) ) \
|
||||
SERVER_BROWSER_TAB_BG( SERVER_BROWSER_TAB_3_X, TAB_3_WIDTH, ( selectedTabIndex == 3 ) ) \
|
||||
SERVER_BROWSER_TAB_BG( SERVER_BROWSER_TAB_4_X, TAB_4_WIDTH, ( selectedTabIndex == 4 ) ) \
|
||||
SERVER_BROWSER_TAB_BG( SERVER_BROWSER_TAB_5_X, TAB_5_WIDTH, ( selectedTabIndex == 5 ) ) \
|
||||
SERVER_BROWSER_TAB_BG( SERVER_BROWSER_TAB_6_X, TAB_6_WIDTH, ( selectedTabIndex == 6 ) ) \
|
||||
TAB( SERVER_BROWSER_TAB_1_X, TAB_1_WIDTH, TAB_1_TEXT, server_browser_ranked, ( selectedTabIndex == 1 ) ) \
|
||||
TAB( SERVER_BROWSER_TAB_2_X, TAB_2_WIDTH, TAB_2_TEXT, server_browser_unranked, ( selectedTabIndex == 2 ) ) \
|
||||
TAB( SERVER_BROWSER_TAB_3_X, TAB_3_WIDTH, TAB_3_TEXT, server_browser_wager, ( selectedTabIndex == 3 ) ) \
|
||||
TAB( SERVER_BROWSER_TAB_4_X, TAB_4_WIDTH, TAB_4_TEXT, server_browser_friends, ( selectedTabIndex == 4 ) ) \
|
||||
TAB( SERVER_BROWSER_TAB_5_X, TAB_5_WIDTH, TAB_5_TEXT, server_browser_favorites, ( selectedTabIndex == 5 ) ) \
|
||||
TAB( SERVER_BROWSER_TAB_6_X, TAB_6_WIDTH, TAB_6_TEXT, server_browser_history, ( selectedTabIndex == 6 ) ) \
|
||||
GLOBAL_SERVER_COUNT
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// server_browser_main acts as a gateway to open the correct sub menu based upon dvar settings
|
||||
menuDef
|
||||
{
|
||||
name server_browser_main
|
||||
fullScreen 0
|
||||
style WINDOW_STYLE_EMPTY
|
||||
rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN
|
||||
|
||||
onFocus
|
||||
{
|
||||
close self;
|
||||
exec openmenu (dvarString( "ui_serverBrowserMenu" ));
|
||||
}
|
||||
}
|
||||
|
||||
#define FILTER_ACTION \
|
||||
if( menuisopen( filter_window ) ) \
|
||||
{ \
|
||||
close filter_window; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
open filter_window; \
|
||||
}
|
||||
|
||||
#define BUTTON_SPACING 20
|
||||
#define FILTER_BUTTON_OFFSET ( getTextWidth( locString( "@PLATFORM_BACK" ), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) + 8 + BUTTON_SPACING )
|
||||
#define SERVER_INFO_BUTTON_OFFSET ( FILTER_BUTTON_OFFSET + getTextWidth( locString( "@MENU_FILTER_SERVERS" ), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) + 8 + BUTTON_SPACING )
|
||||
#define JOIN_BUTTON_OFFSET ( 0 )
|
||||
#define REFRESH_BUTTON_OFFSET ( -JOIN_BUTTON_OFFSET - getTextWidth( locString( "@MENU_JOIN_SERVER" ), CHOICE_TEXTFONT, TEXTSIZE_DEFAULT ) - 8 - BUTTON_SPACING )
|
||||
|
||||
#define SERVER_BROWSER_BOTTOM_BUTTONS \
|
||||
NEW_FRAME_BUTTON_PC_LEFT_OFFSET( SERVER_BROWSER_WIDTH, SERVER_BROWSER_HEIGHT, FILTER_BUTTON_OFFSET, "@MENU_FILTER_SERVERS", FILTER_ACTION, 1 ) \
|
||||
NEW_FRAME_BUTTON_PC_LEFT_OFFSET( SERVER_BROWSER_WIDTH, SERVER_BROWSER_HEIGHT, SERVER_INFO_BUTTON_OFFSET, "@MENU_SERVER_INFO", open newframeserverinfo;, 1 ) \
|
||||
NEW_FRAME_BUTTON_PC_RIGHT_OFFSET( SERVER_BROWSER_WIDTH, SERVER_BROWSER_HEIGHT, REFRESH_BUTTON_OFFSET, "@MENU_REFRESH_LIST", uiScript RefreshServers;, 1 ) \
|
||||
NEW_FRAME_BUTTON_PC_RIGHT_OFFSET( SERVER_BROWSER_WIDTH, SERVER_BROWSER_HEIGHT, JOIN_BUTTON_OFFSET, "@MENU_JOIN_SERVER", JOIN_SERVER_ACTION;, 1 ) \
|
||||
NEW_FRAME_BACK_BUTTON_ACTION( SERVER_BROWSER_WIDTH, SERVER_BROWSER_HEIGHT, ON_ESC )
|
||||
|
||||
menuDef
|
||||
{
|
||||
SERVER_BROWSER_MENU_TEMPLATE( server_browser_ranked, uiscript UpdateNetSource AS_RANKED;, ; )
|
||||
PC_TAB_SWITCH_ACTIONS( server_browser_ranked, server_browser_history, server_browser_unranked )
|
||||
SERVER_BROWSER_TAB_COMMON_ITEMS( 1 );
|
||||
|
||||
// buttons
|
||||
SERVER_BROWSER_BOTTOM_BUTTONS
|
||||
|
||||
// browser
|
||||
SERVER_BROWSER( browser, FEEDER_SERVERS, 1)
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SERVER_BROWSER_MENU_TEMPLATE( server_browser_unranked, uiscript UpdateNetSource AS_UNRANKED;, ; )
|
||||
PC_TAB_SWITCH_ACTIONS( server_browser_unranked, server_browser_ranked, server_browser_wager )
|
||||
SERVER_BROWSER_TAB_COMMON_ITEMS( 2 )
|
||||
|
||||
// buttons
|
||||
SERVER_BROWSER_BOTTOM_BUTTONS
|
||||
|
||||
// browser listbox with background
|
||||
SERVER_BROWSER( browser, FEEDER_SERVERS, 1)
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SERVER_BROWSER_MENU_TEMPLATE( server_browser_wager, uiscript UpdateNetSource AS_WAGER;, ; )
|
||||
PC_TAB_SWITCH_ACTIONS( server_browser_wager, server_browser_unranked, server_browser_friends )
|
||||
SERVER_BROWSER_TAB_COMMON_ITEMS( 3 )
|
||||
|
||||
// buttons
|
||||
SERVER_BROWSER_BOTTOM_BUTTONS
|
||||
|
||||
// browser listbox with background
|
||||
SERVER_BROWSER( browser, FEEDER_SERVERS, 1)
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SERVER_BROWSER_MENU_TEMPLATE( server_browser_friends, uiscript UpdateNetSource AS_FRIENDS;, ; )
|
||||
PC_TAB_SWITCH_ACTIONS( server_browser_friends, server_browser_wager, server_browser_favorites )
|
||||
SERVER_BROWSER_TAB_COMMON_ITEMS( 4 )
|
||||
|
||||
// buttons
|
||||
SERVER_BROWSER_BOTTOM_BUTTONS
|
||||
|
||||
// browser listbox with background
|
||||
SERVER_BROWSER( browser, FEEDER_SERVERS, 1)
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SERVER_BROWSER_MENU_TEMPLATE( server_browser_favorites, uiscript UpdateNetSource AS_FAVORITES;, ; )
|
||||
PC_TAB_SWITCH_ACTIONS( server_browser_favorites, server_browser_friends, server_browser_history )
|
||||
SERVER_BROWSER_TAB_COMMON_ITEMS( 5 )
|
||||
|
||||
// buttons
|
||||
SERVER_BROWSER_BOTTOM_BUTTONS
|
||||
|
||||
// browser listbox with background
|
||||
SERVER_BROWSER( browser, FEEDER_SERVERS, 1)
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SERVER_BROWSER_MENU_TEMPLATE( server_browser_history, uiscript UpdateNetSource AS_HISTORY;, ; )
|
||||
PC_TAB_SWITCH_ACTIONS( server_browser_history, server_browser_favorites, server_browser_ranked )
|
||||
SERVER_BROWSER_TAB_COMMON_ITEMS( 6 )
|
||||
|
||||
// buttons
|
||||
SERVER_BROWSER_BOTTOM_BUTTONS
|
||||
|
||||
// browser listbox with background
|
||||
SERVER_BROWSER( browser, FEEDER_SERVERS, 1)
|
||||
}
|
||||
|
||||
#undef MENUDEF_NAME
|
||||
#define MENUDEF_NAME filter_window
|
||||
|
||||
#undef CHOICE_BUTTON_NAME
|
||||
#define CHOICE_BUTTON_NAME "filter_"
|
||||
|
||||
#define FILTER_WIDTH TABLE_WIDTH
|
||||
#define FILTER_HEIGHT FILTER_MENU_HEIGHT
|
||||
#define FILTER_X (TABLE_X - 10)
|
||||
#define FILTER_Y ( TABLE_Y + (TABLE_HEIGHT - FILTER_HEIGHT) - 2 )
|
||||
|
||||
#undef CHOICE_TEXT_COLOR_NO_HL
|
||||
#undef CHOICE_TEXT_COLOR_HL
|
||||
#undef CHOICE_CAPTION_TEXT_COLOR_NO_HL
|
||||
#undef CHOICE_CAPTION_TEXT_COLOR_HL
|
||||
|
||||
#define CHOICE_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
|
||||
#define CHOICE_TEXT_COLOR_HL 1 1 1 1
|
||||
#define CHOICE_CAPTION_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
|
||||
#define CHOICE_CAPTION_TEXT_COLOR_HL 0 0 0 1
|
||||
|
||||
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X 120
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START 0
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START 0
|
||||
|
||||
#undef CHOICE_TEXTSIZE
|
||||
#define CHOICE_TEXTSIZE TEXTSIZE_SMALL
|
||||
|
||||
#undef CHOICE_DVAR_EXTRA_WIDTH
|
||||
#define CHOICE_DVAR_EXTRA_WIDTH 60
|
||||
|
||||
menuDef
|
||||
{
|
||||
name filter_window
|
||||
rect FILTER_X FILTER_Y FILTER_WIDTH FILTER_HEIGHT CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN
|
||||
focuscolor COLOR_FOCUSED
|
||||
style WINDOW_STYLE_FILLED
|
||||
priority MENU_PRI_ONTOP
|
||||
openSlideSpeed DEFAULT_SLIDE_IN_SPEED
|
||||
closeSlideSpeed (DEFAULT_SLIDE_OUT_SPEED*2)
|
||||
openSlideDirection MENU_SLIDE_DIRECTION_BOTTOM_TO_TOP
|
||||
closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM
|
||||
visible 1
|
||||
|
||||
onOpen
|
||||
{
|
||||
play uin_navigation_menu_lg_open;
|
||||
execNow ui_animate (dvarString( "ui_serverBrowserMenu" )) Browser "Reduced" DEFAULT_SLIDE_IN_SPEED;
|
||||
}
|
||||
onClose
|
||||
{
|
||||
execNow ui_animate (dvarString( "ui_serverBrowserMenu" )) Browser "Maximized" DEFAULT_SLIDE_OUT_SPEED;
|
||||
}
|
||||
onEsc
|
||||
{
|
||||
close self;
|
||||
}
|
||||
leaveFocus
|
||||
{
|
||||
close self;
|
||||
}
|
||||
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER_FRAMED
|
||||
rect -10 -10 ( FILTER_WIDTH + 20 ) ( FILTER_HEIGHT + 20 ) HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
background "menu_mp_lobby_frame_outer"
|
||||
forecolor 1 1 1 1
|
||||
visible when( 1 );
|
||||
decoration
|
||||
frame 26 0.1 FRAME_SIDE_ALL
|
||||
}
|
||||
itemDef
|
||||
{
|
||||
style WINDOW_STYLE_SHADER_FRAMED
|
||||
rect 0 0 FILTER_WIDTH FILTER_HEIGHT HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER
|
||||
background "menu_mp_lobby_frame_inner"
|
||||
forecolor 1 1 1 1
|
||||
visible when( 1 );
|
||||
decoration
|
||||
frame 26 0.1 FRAME_OPEN_TOP
|
||||
}
|
||||
|
||||
// View empty.
|
||||
FRAME_CHOICE_DVARFLOATLIST( 1, "@MENU_VIEW_EMPTY", ui_browserShowEmpty, { "@MENU_NO" 0 "@MENU_YES" 1 }, uiScript RefreshFilter; )
|
||||
|
||||
// View full.
|
||||
FRAME_CHOICE_DVARFLOATLIST( 2, "@MENU_VIEW_FULL", ui_browserShowFull, { "@MENU_NO" 0 "@MENU_YES" 1 }, uiScript RefreshFilter; )
|
||||
|
||||
// With password.
|
||||
FRAME_CHOICE_DVARFLOATLIST( 3, "@MENU_VIEW_PASSWORD", ui_browserShowPassword, { "@MENU_ALL" -1 "@MENU_NO" 0 "@MENU_YES" 1 }, uiScript RefreshFilter; )
|
||||
|
||||
// mods
|
||||
FRAME_CHOICE_DVARLIST_VIS( 4, "@MENU_MODS", "", ITEM_TYPE_OD_TEXT_BUTTON, ownerdraw UI_JOINMOD, uiScript RefreshFilter;, 1 )
|
||||
|
||||
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START 180
|
||||
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START -76
|
||||
|
||||
// Voice chat.
|
||||
FRAME_CHOICE_DVARFLOATLIST( 5, "@MENU_VOICECHAT", ui_browserVoiceChat, { "@MENU_ALL" -1 "@MENU_NO" 0 "@MENU_YES" 1 }, uiScript RefreshFilter; )
|
||||
|
||||
// Hardcore.
|
||||
FRAME_CHOICE_DVARFLOATLIST( 6, "@MPUI_HARDCORE_PRE", ui_browserHardcore, { "@MENU_ALL" -1 "@MENU_NO" 0 "@MENU_YES" 1 }, uiScript RefreshFilter; )
|
||||
|
||||
// Friendly fire.
|
||||
FRAME_CHOICE_DVARFLOATLIST( 7, "@MENU_VIEW_FRIENDLY_FIRE", ui_browserFriendlyfire, { "@MENU_ALL" -1 "@MENU_OFF" 0 "@MENU_ON" 1 "@MENU_REFLECT" 2 "@MENU_SHARED" 3 }, uiScript RefreshFilter; )
|
||||
|
||||
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START 360
|
||||
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START -152
|
||||
|
||||
// Map
|
||||
FRAME_CHOICE_DVARENUMLIST_VIS( 9, "@MPUI_CHANGE_MAP_LOWER", ui_browserMap, ui_browserMap, uiScript RefreshFilter;, 1 )
|
||||
|
||||
// Game Mode
|
||||
#define MODE_LIST { "@MENU_ALL"; 0; "@MPUI_TDM_SHORT_CAPS"; "tdm"; "@MPUI_DM_SHORT_CAPS"; "dm"; "@MPUI_SD_SHORT_CAPS"; "sd"; "@MPUI_DOM_SHORT_CAPS"; "dom"; "@MPUI_KOTH_SHORT_CAPS"; "koth"; "@MPUI_DEM_SHORT_CAPS"; "dem"; "@MPUI_CTF_SHORT_CAPS"; "ctf"; "@MPUI_SAB_SHORT_CAPS"; "sab"; }
|
||||
FRAME_CHOICE_DVARSTRINGLIST( 10, "@MENU_GAME_MODE_PRE", ui_browserGameMode, MODE_LIST;, uiScript RefreshFilter;)
|
||||
|
||||
// Hide Dlc.
|
||||
FRAME_CHOICE_DVARFLOATLIST( 11, "@MPUI_DLC_CONTENT", ui_browserHideDlc, { "@MENU_ALL" 0 "@MPUI_PURCHASED" 1 }, uiScript RefreshFilter; )
|
||||
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X 98
|
||||
|
||||
#undef CHOICE_X_START
|
||||
#define CHOICE_X_START 480
|
||||
|
||||
#undef CHOICE_TEXT_COLOR_NO_HL
|
||||
#undef CHOICE_TEXT_COLOR_HL
|
||||
#undef CHOICE_CAPTION_TEXT_COLOR_NO_HL
|
||||
#undef CHOICE_CAPTION_TEXT_COLOR_HL
|
||||
|
||||
#define CHOICE_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
|
||||
#define CHOICE_TEXT_COLOR_HL 0 0 0 1
|
||||
#define CHOICE_CAPTION_TEXT_COLOR_NO_HL CHOICE_TEXTCOLOR
|
||||
#define CHOICE_CAPTION_TEXT_COLOR_HL 0 0 0 1
|
||||
|
||||
// Reset
|
||||
FRAME_CHOICE_BUTTON( 12, "@MENU_RESET", exec "exec default_filter.cfg"; )
|
||||
|
||||
// Apply
|
||||
//FRAME_CHOICE_BUTTON( 14, "@MENU_APPLY", uiScript RefreshFilter; )
|
||||
}
|
||||
}
|
||||
|
||||
#undef CHOICE_TEXTSIZE
|
||||
#define CHOICE_TEXTSIZE TEXTSIZE_DEFAULT
|
||||
|
||||
#include "ui_mp/popupstyle.inc"
|
||||
#include "ui/choices_setup_popmenu.menu"
|
||||
#include "ui_mp/popup_player_info.inc"
|
||||
|
||||
#undef CHOICE_FOCUS_SOUND
|
||||
#define CHOICE_FOCUS_SOUND "uin_navigation_over"
|
||||
|
||||
// Redefinitions for MEDIUM_POPUP_SETUP popups
|
||||
#undef POPUP_WIDTH
|
||||
#define POPUP_WIDTH MEDIUM_POPUP_WIDTH
|
||||
#undef POPUP_HEIGHT
|
||||
#define POPUP_HEIGHT MEDIUM_POPUP_HEIGHT
|
||||
#undef CHOICE_SIZE_X
|
||||
#define CHOICE_SIZE_X CONFIRM_PURCHASE_SIZE_X
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START POPUP_Y_START_TOP
|
||||
#undef PLAYER_INFO_ALIGN
|
||||
#define PLAYER_INFO_ALIGN // Purposely set to nothing. The popup setup macro sets the alignment. If items within it set their own aligment, they end up offset incorrectly.
|
||||
#undef PLAYER_INFO_X_START
|
||||
#define PLAYER_INFO_X_START( frameWidth ) ( frameWidth - PLAYER_INFO_WIDTH - PLAYER_INFO_PAD )
|
||||
#undef PLAYER_INFO_Y_START
|
||||
#define PLAYER_INFO_Y_START( frameHeight ) ( PLAYER_INFO_PAD * 2 )
|
||||
#undef BG_BACKCOLOR
|
||||
#define BG_BACKCOLOR POPUP_BACKCOLOR
|
||||
|
||||
#define PURCHASE_CONFIRMATION_RIGHT_X ( MEDIUM_POPUP_WIDTH / 2 )
|
||||
#define PURCHASE_INFO_WIDTH ( ( MEDIUM_POPUP_WIDTH / 2 ) - POPUP_SIDE_PAD )
|
||||
|
||||
#define PURCHASE_CONFIRMATION_ITEM_INFO( itemName, itemCost ) \
|
||||
CONFIRMATION_ITEM_INFO_VIS( itemName, itemCost, "@MPUI_BALANCE_AFTER_PURCHASE", locString( "@MENU_POINTS", GetStatByName( "CODPOINTS" ) - itemCost ), 1 )
|
||||
|
||||
#define CONFIRMATION_ITEM_INFO_VIS( itemName, itemCost, balanceHeader, balanceAfter, visArg ) \
|
||||
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 1 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, locString( itemName, itemCost ), TEXTSIZE_LARGE, 0, 0, ITEM_ALIGN_MIDDLE_LEFT, NEW_FRAME_GREEN_RGB 1, visArg, ; ) \ /* Name */
|
||||
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 7 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, "@MPUI_YOUR_BANK", TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, MEDIUM_POPUP_GRAY, visArg, ; ) \ /* Currency Available Header */
|
||||
PREPROC_TEXT_DRAW_VIS_EX( (MEDIUM_POPUP_WIDTH-75) CHOICE_Y( 7 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, locString( "@MENU_POINTS", GetStatByName( "CODPOINTS" ) ), TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, visArg, ; ) \ /* Currency Available */
|
||||
PREPROC_TEXT_DRAW_VIS_EX( (PURCHASE_CONFIRMATION_RIGHT_X) CHOICE_Y( 8 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, balanceHeader, TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, MEDIUM_POPUP_GRAY, visArg, ; ) \ /* Balance After Purchase Header */
|
||||
PREPROC_TEXT_DRAW_VIS_EX( (MEDIUM_POPUP_WIDTH-75) CHOICE_Y( 8 ) PURCHASE_INFO_WIDTH CHOICE_SIZE_Y, 0 0, balanceAfter, TEXTSIZE_DEFAULT, 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, visArg, ; ) /* Balance After Purchase */
|
||||
|
||||
#define WAGER_ONFOCUS \
|
||||
;
|
||||
|
||||
#define WAGER_ONESC \
|
||||
setDvar ui_joiningwagerfrominvite "0"; \
|
||||
close self;
|
||||
|
||||
#define WAGER_ACTION \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
uiScript JoinServer; \
|
||||
WAGER_ONESC
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "WagerConfirmation", setfocus "WagerConfirmation_2";, ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@PLATFORM_CONFIRM_WAGER_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO( "@PLATFORM_WAGER_BET", dvarInt("ui_wagerbet") )
|
||||
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_JOIN_GAME_CAPS", WAGER_ACTION, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_CANCEL_CAPS", WAGER_ONESC, 1, name WagerConfirmation_2 )
|
||||
}
|
||||
|
||||
#define WAGER_ACTION2 \
|
||||
play CHOICE_FOCUS_SOUND; \
|
||||
execNow quickmatchconnect; \
|
||||
WAGER_ONESC
|
||||
menuDef
|
||||
{
|
||||
MEDIUM_POPUP_SETUP_VIS( "QuickWagerConfirmation", setfocus "QuickWagerConfirmation_2";, ;, POPUP_GLOW_GREEN, 1, 1 )
|
||||
MEDIUM_POPUP_TITLE_VIS( "@PLATFORM_CONFIRM_WAGER_CAPS", 1 )
|
||||
PLAYER_INFO_VIS( MEDIUM_POPUP_WIDTH, MEDIUM_POPUP_HEIGHT, 1 )
|
||||
PURCHASE_CONFIRMATION_ITEM_INFO( "@PLATFORM_WAGER_BET", dvarInt("ui_wagerbet") )
|
||||
|
||||
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_JOIN_GAME_CAPS", WAGER_ACTION2, 1, ; )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 2, "@MENU_CANCEL_CAPS", close self, 1, name QuickWagerConfirmation_2 )
|
||||
}
|
||||
|
||||
#undef CHOICE_Y_START
|
||||
#define CHOICE_Y_START POPUP_Y_START_CENTER
|
||||
|
||||
#undef POPUP_BUTTON_COUNT
|
||||
#define POPUP_BUTTON_COUNT 1
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( WagerDeadBeat, WAGER_ONFOCUS, WAGER_ONESC, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( "@PLATFORM_WAGER_DEADBEAT_TITLE", 1 )
|
||||
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( locString( "@PLATFORM_WAGER_DEADBEAT_DESC", dvarInt( "ui_wagerbet" ) ), 1 )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", WAGER_ONESC, 1, ; )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( WagerPlaylistIsOld, WAGER_ONFOCUS, WAGER_ONESC, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_ERROR_CAPS", 1 )
|
||||
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( locString( "@PATCH_PLAYLISTISOLD" ), 1 )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", WAGER_ONESC, 1, ; )
|
||||
}
|
||||
|
||||
menuDef
|
||||
{
|
||||
SYSTEM_POPUP_SETUP_VIS( WagerPlaylistIsNew, WAGER_ONFOCUS, WAGER_ONESC, 1 )
|
||||
SYSTEM_POPUP_TITLE_VIS( "@MENU_ERROR_CAPS", 1 )
|
||||
|
||||
SYSTEM_POPUP_SUBTITLE_VIS( locString( "@PATCH_PLAYLISTISNEW" ), 1 )
|
||||
FRAME_CHOICE_BUTTON_VIS_EX( 1, "@MENU_OK", WAGER_ONESC, 1, ; )
|
||||
}
|
||||
|
@ -11,15 +11,15 @@ koth,MPUI_HEADQUARTERS_CAPS,MENU_CAPTURE_THE_HEADQUARTERS,playlist_headquarters,
|
||||
dem,MPUI_DEMOLITION_CAPS,MENU_TEAMS_TAKE_TURNS_DEFENDING,playlist_demolition,5,YES,MPUI_DEMOLITION
|
||||
ctf,MPUI_CAPTURE_THE_FLAG_CAPS,MENU_CTF_DESC,playlist_ctf,6,YES,MPUI_CAPTURE_THE_FLAG
|
||||
sab,MPUI_SABOTAGE_CAPS,MENU_1_BOMB_IN_THE_CENTER,playlist_sabotage,7,YES,MPUI_SABOTAGE
|
||||
hlnd,MPUI_HLND_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,8,YES,MPUI_HLND
|
||||
oic,MPUI_OIC_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,9,YES,MPUI_OIC
|
||||
gun,MPUI_GUN_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_gungame,10,YES,MPUI_GUN
|
||||
shrp,MPUI_SHRP_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_sharpshooter,11,YES,MPUI_SHRP
|
||||
oic,MPUI_OIC_CAPS,MENU_OIC_DESC,playlist_one_chamber,8,YES,MPUI_OIC
|
||||
hlnd,MPUI_HLND_CAPS,MENU_HLND_DESC,playlist_sticks_and_stones,9,YES,MPUI_HLND
|
||||
gun,MPUI_GUN_CAPS,MENU_GUN_DESC,playlist_gungame,10,YES,MPUI_GUN
|
||||
shrp,MPUI_SHRP_CAPS,MENU_SHRP_DESC,playlist_sharpshooter,11,YES,MPUI_SHRP
|
||||
,,,,,,
|
||||
maxnum_basictraining_gametype,14,,,,,
|
||||
#gametype reference,#gametype names,#gametype description,#image,#index,#splitscreen,#gametime names lowercase
|
||||
tdm,MPUI_TEAM_DEATHMATCH_CAPS,MENU_KILL_PLAYERS_ON_THE_OPPOSING,playlist_tdm,bt0,YES,MPUI_TEAM_DEATHMATCH
|
||||
hc_tdm,MPUI_TDM_HARDCORE_CAPS,MENU_HC_KILL_PLAYERS_ON_THE_OPPOSING,playlist_tdm,bt1,YES,MPUI_TEAM_DEATHMATCH
|
||||
hc_tdm,MPUI_BASIC_TRAINING_HC_TDM,MENU_HC_KILL_PLAYERS_ON_THE_OPPOSING,playlist_tdm,bt1,YES,MPUI_TEAM_DEATHMATCH
|
||||
dm,MPUI_DEATHMATCH_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,bt2,YES,MPUI_DEATHMATCH
|
||||
hc_dm,MPUI_DM_HARDCORE_CAPS,MENU_HC_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,bt3,YES,MPUI_DEATHMATCH
|
||||
sd,MPUI_SEARCH_AND_DESTROY_CAPS,MENU_TEAMS_TAKE_TURNS_DEFENDING_NO_SPAWN,playlist_search_destroy,bt4,YES,MPUI_SEARCH_AND_DESTROY_CLASSIC
|
||||
@ -28,10 +28,10 @@ koth,MPUI_HEADQUARTERS_CAPS,MENU_CAPTURE_THE_HEADQUARTERS,playlist_headquarters,
|
||||
dem,MPUI_DEMOLITION_CAPS,MENU_TEAMS_TAKE_TURNS_DEFENDING,playlist_demolition,bt7,YES,MPUI_DEMOLITION
|
||||
ctf,MPUI_CAPTURE_THE_FLAG_CAPS,MENU_CTF_DESC,playlist_ctf,bt8,YES,MPUI_CAPTURE_THE_FLAG
|
||||
sab,MPUI_SABOTAGE_CAPS,MENU_1_BOMB_IN_THE_CENTER,playlist_sabotage,bt9,YES,MPUI_SABOTAGE
|
||||
hlnd,MPUI_HLND_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,bt10,YES,MPUI_HLND
|
||||
oic,MPUI_OIC_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_ffa,bt11,YES,MPUI_OIC
|
||||
gun,MPUI_GUN_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_gungame,bt12,YES,MPUI_GUN
|
||||
shrp,MPUI_SHRP_CAPS,MENU_KILL_EVERYONE_FIRST_PLAYER,playlist_sharpshooter,bt13,YES,MPUI_SHRP
|
||||
oic,MPUI_OIC_CAPS,MENU_OIC_DESC,playlist_one_chamber,bt10,YES,MPUI_OIC
|
||||
hlnd,MPUI_HLND_CAPS,MENU_HLND_DESC,playlist_sticks_and_stones,bt11,YES,MPUI_HLND
|
||||
gun,MPUI_GUN_CAPS,MENU_GUN_DESC,playlist_gungame,bt12,YES,MPUI_GUN
|
||||
shrp,MPUI_SHRP_CAPS,MENU_SHRP_DESC,playlist_sharpshooter,bt13,YES,MPUI_SHRP
|
||||
,,,,,,
|
||||
maxnum_lbtype,11,,,,,
|
||||
#Leaderboard string names,,,,,,
|
|
5
mp_bots.files
Normal file
5
mp_bots.files
Normal file
@ -0,0 +1,5 @@
|
||||
maps\mp\bots\_bot_loadout.gsc
|
||||
maps\mp\bots\_bot_script.gsc
|
||||
maps\mp\bots\_bot_utility.gsc
|
||||
maps\mp\gametypes\_bot.gsc
|
||||
scripts\mp\bots_adapter_pt5.gsc
|
@ -1 +0,0 @@
|
||||
Extends functionality of Combat Training.
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user