mirror of
https://github.com/mapbase-source/source-sdk-2013.git
synced 2025-03-28 05:19:05 +03:00
Merge remote-tracking branch 'upstream/master'
Reverted .gitattributes xcode_ccache_wrapper change. Fixed line endings for .gitignore and .gitattributes.
This commit is contained in:
commit
4fa56874ba
29
.gitattributes
vendored
29
.gitattributes
vendored
@ -6,9 +6,12 @@ vpc_linux binary
|
||||
vpc_osx binary
|
||||
|
||||
*.sh text
|
||||
*.bat text
|
||||
*.txt text
|
||||
*.c text
|
||||
*.h text
|
||||
*.H text
|
||||
*.cc text
|
||||
*.cpp text
|
||||
*.vpc text
|
||||
*.vgc text
|
||||
@ -17,8 +20,32 @@ vpc_osx binary
|
||||
*.pl text
|
||||
*.py text
|
||||
*.xcconfig text
|
||||
*.vcd text
|
||||
*.vbsp text
|
||||
*.proto text
|
||||
*.inc text
|
||||
*.fxc text
|
||||
*.vsh text
|
||||
*.lst text
|
||||
*.mm text
|
||||
*.cfg text
|
||||
*.res text
|
||||
*.rc text
|
||||
*.def text
|
||||
*.vmt text
|
||||
*.inl text
|
||||
*.asm text
|
||||
|
||||
.gitignore text
|
||||
sourcesdk_def.mak text
|
||||
smdlexp.mak text
|
||||
README text
|
||||
CONTRIBUTING text
|
||||
LICENSE text
|
||||
|
||||
*.exe binary
|
||||
protoc binary
|
||||
ccache binary
|
||||
xcode_ccache_wrapper text
|
||||
|
||||
gtest_output_test_golden_lin.txt binary
|
||||
mod_*_english.txt binary
|
||||
|
124
.gitignore
vendored
124
.gitignore
vendored
@ -1,67 +1,67 @@
|
||||
# Files to ignore when considering what GIT should commit.
|
||||
|
||||
# Visual Studio
|
||||
*.suo
|
||||
*.user
|
||||
*.sln.docstates
|
||||
*.obj
|
||||
*.pch
|
||||
*.tlog
|
||||
*.log
|
||||
*.scc
|
||||
*.exp
|
||||
*.ilk
|
||||
*.lastbuildstate
|
||||
vc100.pdb
|
||||
ipch
|
||||
*.sdf
|
||||
*.opensdf
|
||||
*.idb
|
||||
*.vcxproj
|
||||
*.vcxproj.filters
|
||||
*.sln
|
||||
[Dd]ebug*/
|
||||
[Rr]elease*/
|
||||
|
||||
# OSX/Linux build products
|
||||
# Files to ignore when considering what GIT should commit.
|
||||
|
||||
# Visual Studio
|
||||
*.suo
|
||||
*.user
|
||||
*.sln.docstates
|
||||
*.obj
|
||||
*.pch
|
||||
*.tlog
|
||||
*.log
|
||||
*.scc
|
||||
*.exp
|
||||
*.ilk
|
||||
*.lastbuildstate
|
||||
vc100.pdb
|
||||
ipch
|
||||
*.sdf
|
||||
*.opensdf
|
||||
*.idb
|
||||
*.vcxproj
|
||||
*.vcxproj.filters
|
||||
*.sln
|
||||
[Dd]ebug*/
|
||||
[Rr]elease*/
|
||||
|
||||
# OSX/Linux build products
|
||||
*.DS_Store
|
||||
*.mak
|
||||
*.mak.vpc_crc
|
||||
*.xcodeproj/
|
||||
obj*/
|
||||
!devtools/*.mak
|
||||
!utils/smdlexp/smdlexp.mak
|
||||
*.mak
|
||||
*.mak.vpc_crc
|
||||
*.xcodeproj/
|
||||
obj*/
|
||||
!devtools/*.mak
|
||||
!utils/smdlexp/smdlexp.mak
|
||||
*_osx32*
|
||||
|
||||
# Specific Source build products
|
||||
client.pdb
|
||||
client.dll
|
||||
client.lib
|
||||
server.pdb
|
||||
server.dll
|
||||
server.lib
|
||||
|
||||
client.so
|
||||
client.so.dbg
|
||||
server.so
|
||||
server.so.dbg
|
||||
server_srv.so
|
||||
server_srv.so.dbg
|
||||
|
||||
client.dylib
|
||||
client.dylib.dSYM/
|
||||
server.dylib
|
||||
server.dylib.dSYM/
|
||||
|
||||
|
||||
# Specific Source build products
|
||||
client.pdb
|
||||
client.dll
|
||||
client.lib
|
||||
server.pdb
|
||||
server.dll
|
||||
server.lib
|
||||
|
||||
client.so
|
||||
client.so.dbg
|
||||
server.so
|
||||
server.so.dbg
|
||||
server_srv.so
|
||||
server_srv.so.dbg
|
||||
|
||||
client.dylib
|
||||
client.dylib.dSYM/
|
||||
server.dylib
|
||||
server.dylib.dSYM/
|
||||
|
||||
*.vpc.sentinel
|
||||
*.vpc_crc
|
||||
**/generated_proto/**
|
||||
**/src/utils/sapi51/**
|
||||
**/game/**/bin/**
|
||||
|
||||
# files generated by running a mod
|
||||
config.cfg
|
||||
|
||||
# shader files
|
||||
*.tmp
|
||||
|
||||
**/src/utils/sapi51/**
|
||||
**/game/**/bin/**
|
||||
|
||||
# files generated by running a mod
|
||||
config.cfg
|
||||
|
||||
# shader files
|
||||
*.tmp
|
||||
|
||||
|
78
CONTRIBUTING
78
CONTRIBUTING
@ -1,39 +1,39 @@
|
||||
Thanks for your interest in the Source SDK 2013 project. When you make a
|
||||
contribution to the project (e.g. create an Issue or submit a Pull Request)
|
||||
(a "Contribution"), Valve wants to be able to use your Contribution to improve
|
||||
the SDK and other Valve products.
|
||||
|
||||
As a condition of providing a Contribution, you agree that:
|
||||
- You grant Valve a non-exclusive, irrevocable, royalty-free, worldwide license
|
||||
to make, use, sell, reproduce, modify, distribute (directly and indirectly),
|
||||
and publicly display and perform the Contribution, and any derivative works
|
||||
that Valve may make from the Contribution, under any intellectual property you
|
||||
own or have the right to license.
|
||||
- You warrant and represent that the Contribution is your original creation,
|
||||
that you have the authority to grant this license to Valve, and that this
|
||||
license does not require the permission of any third party. Otherwise, you
|
||||
provide your Contribution "as is" without warranties.
|
||||
|
||||
Should you wish to submit a suggestion or work that is not your original
|
||||
creation, you may submit it to Valve separate from any Contribution,
|
||||
explicitly identifying it as sourced from a third party, stating the details
|
||||
of its origin, and informing Valve of any license or other restriction of
|
||||
which you are personally aware.
|
||||
|
||||
|
||||
Valve is happy to accept pull requests and issues in the source-sdk-2013
|
||||
repository in these cases:
|
||||
* Changes that fix bugs in the SDK deployment process itself. The repository
|
||||
should build out of the box, and anything that prevents that is a pull
|
||||
request we want.
|
||||
* High priority bugs in HL2, the Episodes, or HL2MP that can be fixed in
|
||||
client.dll or server.dll.
|
||||
|
||||
For other changes we suggest that you issue a pull request to one of these
|
||||
fine community-maintained repositories instead:
|
||||
https://developer.valvesoftware.com/wiki/Source-sdk-2013-community-repos
|
||||
|
||||
If you are going to make a pull request, please keep them as granular as
|
||||
possible. Pull requests with 3-4 unrelated changes in them aren't going to
|
||||
be accepted.
|
||||
|
||||
Thanks for your interest in the Source SDK 2013 project. When you make a
|
||||
contribution to the project (e.g. create an Issue or submit a Pull Request)
|
||||
(a "Contribution"), Valve wants to be able to use your Contribution to improve
|
||||
the SDK and other Valve products.
|
||||
|
||||
As a condition of providing a Contribution, you agree that:
|
||||
- You grant Valve a non-exclusive, irrevocable, royalty-free, worldwide license
|
||||
to make, use, sell, reproduce, modify, distribute (directly and indirectly),
|
||||
and publicly display and perform the Contribution, and any derivative works
|
||||
that Valve may make from the Contribution, under any intellectual property you
|
||||
own or have the right to license.
|
||||
- You warrant and represent that the Contribution is your original creation,
|
||||
that you have the authority to grant this license to Valve, and that this
|
||||
license does not require the permission of any third party. Otherwise, you
|
||||
provide your Contribution "as is" without warranties.
|
||||
|
||||
Should you wish to submit a suggestion or work that is not your original
|
||||
creation, you may submit it to Valve separate from any Contribution,
|
||||
explicitly identifying it as sourced from a third party, stating the details
|
||||
of its origin, and informing Valve of any license or other restriction of
|
||||
which you are personally aware.
|
||||
|
||||
|
||||
Valve is happy to accept pull requests and issues in the source-sdk-2013
|
||||
repository in these cases:
|
||||
* Changes that fix bugs in the SDK deployment process itself. The repository
|
||||
should build out of the box, and anything that prevents that is a pull
|
||||
request we want.
|
||||
* High priority bugs in HL2, the Episodes, or HL2MP that can be fixed in
|
||||
client.dll or server.dll.
|
||||
|
||||
For other changes we suggest that you issue a pull request to one of these
|
||||
fine community-maintained repositories instead:
|
||||
https://developer.valvesoftware.com/wiki/Source-sdk-2013-community-repos
|
||||
|
||||
If you are going to make a pull request, please keep them as granular as
|
||||
possible. Pull requests with 3-4 unrelated changes in them aren't going to
|
||||
be accepted.
|
||||
|
||||
|
86
LICENSE
86
LICENSE
@ -1,43 +1,43 @@
|
||||
SOURCE 1 SDK LICENSE
|
||||
|
||||
Source SDK Copyright(c) Valve Corp.
|
||||
|
||||
THIS DOCUMENT DESCRIBES A CONTRACT BETWEEN YOU AND VALVE
|
||||
CORPORATION ("Valve"). PLEASE READ IT BEFORE DOWNLOADING OR USING
|
||||
THE SOURCE ENGINE SDK ("SDK"). BY DOWNLOADING AND/OR USING THE
|
||||
SOURCE ENGINE SDK YOU ACCEPT THIS LICENSE. IF YOU DO NOT AGREE TO
|
||||
THE TERMS OF THIS LICENSE PLEASE DON’T DOWNLOAD OR USE THE SDK.
|
||||
|
||||
You may, free of charge, download and use the SDK to develop a modified Valve game
|
||||
running on the Source engine. You may distribute your modified Valve game in source and
|
||||
object code form, but only for free. Terms of use for Valve games are found in the Steam
|
||||
Subscriber Agreement located here: http://store.steampowered.com/subscriber_agreement/
|
||||
|
||||
You may copy, modify, and distribute the SDK and any modifications you make to the
|
||||
SDK in source and object code form, but only for free. Any distribution of this SDK must
|
||||
include this LICENSE file and thirdpartylegalnotices.txt.
|
||||
|
||||
Any distribution of the SDK or a substantial portion of the SDK must include the above
|
||||
copyright notice and the following:
|
||||
|
||||
DISCLAIMER OF WARRANTIES. THE SOURCE SDK AND ANY
|
||||
OTHER MATERIAL DOWNLOADED BY LICENSEE IS PROVIDED
|
||||
"AS IS". VALVE AND ITS SUPPLIERS DISCLAIM ALL
|
||||
WARRANTIES WITH RESPECT TO THE SDK, EITHER EXPRESS
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT,
|
||||
TITLE AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
LIMITATION OF LIABILITY. IN NO EVENT SHALL VALVE OR
|
||||
ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER
|
||||
(INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
|
||||
BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF
|
||||
BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
|
||||
ARISING OUT OF THE USE OF OR INABILITY TO USE THE
|
||||
ENGINE AND/OR THE SDK, EVEN IF VALVE HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
|
||||
If you would like to use the SDK for a commercial purpose, please contact Valve at
|
||||
sourceengine@valvesoftware.com.
|
||||
SOURCE 1 SDK LICENSE
|
||||
|
||||
Source SDK Copyright(c) Valve Corp.
|
||||
|
||||
THIS DOCUMENT DESCRIBES A CONTRACT BETWEEN YOU AND VALVE
|
||||
CORPORATION ("Valve"). PLEASE READ IT BEFORE DOWNLOADING OR USING
|
||||
THE SOURCE ENGINE SDK ("SDK"). BY DOWNLOADING AND/OR USING THE
|
||||
SOURCE ENGINE SDK YOU ACCEPT THIS LICENSE. IF YOU DO NOT AGREE TO
|
||||
THE TERMS OF THIS LICENSE PLEASE DON’T DOWNLOAD OR USE THE SDK.
|
||||
|
||||
You may, free of charge, download and use the SDK to develop a modified Valve game
|
||||
running on the Source engine. You may distribute your modified Valve game in source and
|
||||
object code form, but only for free. Terms of use for Valve games are found in the Steam
|
||||
Subscriber Agreement located here: http://store.steampowered.com/subscriber_agreement/
|
||||
|
||||
You may copy, modify, and distribute the SDK and any modifications you make to the
|
||||
SDK in source and object code form, but only for free. Any distribution of this SDK must
|
||||
include this LICENSE file and thirdpartylegalnotices.txt.
|
||||
|
||||
Any distribution of the SDK or a substantial portion of the SDK must include the above
|
||||
copyright notice and the following:
|
||||
|
||||
DISCLAIMER OF WARRANTIES. THE SOURCE SDK AND ANY
|
||||
OTHER MATERIAL DOWNLOADED BY LICENSEE IS PROVIDED
|
||||
"AS IS". VALVE AND ITS SUPPLIERS DISCLAIM ALL
|
||||
WARRANTIES WITH RESPECT TO THE SDK, EITHER EXPRESS
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT,
|
||||
TITLE AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
LIMITATION OF LIABILITY. IN NO EVENT SHALL VALVE OR
|
||||
ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER
|
||||
(INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
|
||||
BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF
|
||||
BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
|
||||
ARISING OUT OF THE USE OF OR INABILITY TO USE THE
|
||||
ENGINE AND/OR THE SDK, EVEN IF VALVE HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
|
||||
If you would like to use the SDK for a commercial purpose, please contact Valve at
|
||||
sourceengine@valvesoftware.com.
|
||||
|
86
README
86
README
@ -1,43 +1,43 @@
|
||||
SOURCE 1 SDK LICENSE
|
||||
|
||||
Source SDK Copyright(c) Valve Corp.
|
||||
|
||||
THIS DOCUMENT DESCRIBES A CONTRACT BETWEEN YOU AND VALVE
|
||||
CORPORATION ("Valve"). PLEASE READ IT BEFORE DOWNLOADING OR USING
|
||||
THE SOURCE ENGINE SDK ("SDK"). BY DOWNLOADING AND/OR USING THE
|
||||
SOURCE ENGINE SDK YOU ACCEPT THIS LICENSE. IF YOU DO NOT AGREE TO
|
||||
THE TERMS OF THIS LICENSE PLEASE DON’T DOWNLOAD OR USE THE SDK.
|
||||
|
||||
You may, free of charge, download and use the SDK to develop a modified Valve game
|
||||
running on the Source engine. You may distribute your modified Valve game in source and
|
||||
object code form, but only for free. Terms of use for Valve games are found in the Steam
|
||||
Subscriber Agreement located here: http://store.steampowered.com/subscriber_agreement/
|
||||
|
||||
You may copy, modify, and distribute the SDK and any modifications you make to the
|
||||
SDK in source and object code form, but only for free. Any distribution of this SDK must
|
||||
include this LICENSE file and thirdpartylegalnotices.txt.
|
||||
|
||||
Any distribution of the SDK or a substantial portion of the SDK must include the above
|
||||
copyright notice and the following:
|
||||
|
||||
DISCLAIMER OF WARRANTIES. THE SOURCE SDK AND ANY
|
||||
OTHER MATERIAL DOWNLOADED BY LICENSEE IS PROVIDED
|
||||
"AS IS". VALVE AND ITS SUPPLIERS DISCLAIM ALL
|
||||
WARRANTIES WITH RESPECT TO THE SDK, EITHER EXPRESS
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT,
|
||||
TITLE AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
LIMITATION OF LIABILITY. IN NO EVENT SHALL VALVE OR
|
||||
ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER
|
||||
(INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
|
||||
BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF
|
||||
BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
|
||||
ARISING OUT OF THE USE OF OR INABILITY TO USE THE
|
||||
ENGINE AND/OR THE SDK, EVEN IF VALVE HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
|
||||
If you would like to use the SDK for a commercial purpose, please contact Valve at
|
||||
sourceengine@valvesoftware.com.
|
||||
SOURCE 1 SDK LICENSE
|
||||
|
||||
Source SDK Copyright(c) Valve Corp.
|
||||
|
||||
THIS DOCUMENT DESCRIBES A CONTRACT BETWEEN YOU AND VALVE
|
||||
CORPORATION ("Valve"). PLEASE READ IT BEFORE DOWNLOADING OR USING
|
||||
THE SOURCE ENGINE SDK ("SDK"). BY DOWNLOADING AND/OR USING THE
|
||||
SOURCE ENGINE SDK YOU ACCEPT THIS LICENSE. IF YOU DO NOT AGREE TO
|
||||
THE TERMS OF THIS LICENSE PLEASE DON’T DOWNLOAD OR USE THE SDK.
|
||||
|
||||
You may, free of charge, download and use the SDK to develop a modified Valve game
|
||||
running on the Source engine. You may distribute your modified Valve game in source and
|
||||
object code form, but only for free. Terms of use for Valve games are found in the Steam
|
||||
Subscriber Agreement located here: http://store.steampowered.com/subscriber_agreement/
|
||||
|
||||
You may copy, modify, and distribute the SDK and any modifications you make to the
|
||||
SDK in source and object code form, but only for free. Any distribution of this SDK must
|
||||
include this LICENSE file and thirdpartylegalnotices.txt.
|
||||
|
||||
Any distribution of the SDK or a substantial portion of the SDK must include the above
|
||||
copyright notice and the following:
|
||||
|
||||
DISCLAIMER OF WARRANTIES. THE SOURCE SDK AND ANY
|
||||
OTHER MATERIAL DOWNLOADED BY LICENSEE IS PROVIDED
|
||||
"AS IS". VALVE AND ITS SUPPLIERS DISCLAIM ALL
|
||||
WARRANTIES WITH RESPECT TO THE SDK, EITHER EXPRESS
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT,
|
||||
TITLE AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
LIMITATION OF LIABILITY. IN NO EVENT SHALL VALVE OR
|
||||
ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER
|
||||
(INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
|
||||
BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF
|
||||
BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
|
||||
ARISING OUT OF THE USE OF OR INABILITY TO USE THE
|
||||
ENGINE AND/OR THE SDK, EVEN IF VALVE HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
|
||||
If you would like to use the SDK for a commercial purpose, please contact Valve at
|
||||
sourceengine@valvesoftware.com.
|
||||
|
@ -1,15 +1,15 @@
|
||||
// HEALTH/SUIT CHARGE DISTRIBUTION
|
||||
sk_suitcharger "75"
|
||||
sk_suitcharger_citadel "200"
|
||||
sk_suitcharger_citadel_maxarmor "200"
|
||||
sk_battery "15"
|
||||
sk_healthcharger "50"
|
||||
sk_healthkit "25"
|
||||
sk_healthvial "10"
|
||||
|
||||
// player damage adjusters
|
||||
sk_player_head "3"
|
||||
sk_player_chest "1"
|
||||
sk_player_stomach "1"
|
||||
sk_player_arm "1"
|
||||
// HEALTH/SUIT CHARGE DISTRIBUTION
|
||||
sk_suitcharger "75"
|
||||
sk_suitcharger_citadel "200"
|
||||
sk_suitcharger_citadel_maxarmor "200"
|
||||
sk_battery "15"
|
||||
sk_healthcharger "50"
|
||||
sk_healthkit "25"
|
||||
sk_healthvial "10"
|
||||
|
||||
// player damage adjusters
|
||||
sk_player_head "3"
|
||||
sk_player_chest "1"
|
||||
sk_player_stomach "1"
|
||||
sk_player_arm "1"
|
||||
sk_player_leg "1"
|
@ -1 +1 @@
|
||||
exec skill.cfg
|
||||
exec skill.cfg
|
||||
|
@ -1,84 +1,84 @@
|
||||
"GameInfo"
|
||||
{
|
||||
game "My First HL2MP Mod"
|
||||
title "HALF+LIFE'"
|
||||
title2 "deathmatch mod"
|
||||
type multiplayer_only
|
||||
nomodels 0
|
||||
nohimodel 1
|
||||
nocrosshair 1
|
||||
hidden_maps
|
||||
{
|
||||
"test_speakers" 1
|
||||
"test_hardware" 1
|
||||
}
|
||||
|
||||
|
||||
FileSystem
|
||||
{
|
||||
SteamAppId 243750
|
||||
|
||||
//
|
||||
// The code that loads this file automatically does a few things here:
|
||||
//
|
||||
// 1. For each "Game" search path, it adds a "GameBin" path, in <dir>\bin
|
||||
// 2. For each "Game" search path, it adds another "Game" path in front of it with _<langage> at the end.
|
||||
// For example: c:\hl2\cstrike on a french machine would get a c:\hl2\cstrike_french path added to it.
|
||||
// 3. For the first "Game" search path, it adds a search path called "MOD".
|
||||
// 4. For the first "Game" search path, it adds a search path called "DEFAULT_WRITE_PATH".
|
||||
//
|
||||
|
||||
//
|
||||
// Search paths are relative to the base directory, which is where hl2.exe is found.
|
||||
//
|
||||
// |gameinfo_path| points at the directory where gameinfo.txt is.
|
||||
// We always want to mount that directory relative to gameinfo.txt, so
|
||||
// people can mount stuff in c:\mymod, and the main game resources are in
|
||||
// someplace like c:\program files\valve\steam\steamapps\half-life 2.
|
||||
//
|
||||
SearchPaths
|
||||
{
|
||||
// First, mount all user customizations. This will search for VPKs and subfolders
|
||||
// and mount them in alphabetical order. The easiest way to distribute a mod is to
|
||||
// pack up the custom content into a VPK. To "install" a mod, just drop it in this
|
||||
// folder.
|
||||
//
|
||||
// Note that this folder is scanned only when the game is booted.
|
||||
game+mod hl2mp/custom/*
|
||||
game+mod hl2/custom/*
|
||||
|
||||
// Now search loose files. We'll set the directory containing the gameinfo.txt file
|
||||
// as the first "mod" search path (after any user customizations). This is also the one
|
||||
// that's used when writing to the "mod" path.
|
||||
game+mod+mod_write+default_write_path |gameinfo_path|.
|
||||
gamebin |gameinfo_path|bin
|
||||
|
||||
// We search VPK files before ordinary folders, because most files will be found in
|
||||
// VPK and we can avoid making thousands of file system calls to attempt to open files
|
||||
// in folders where they don't exist. (Searching a VPK is much faster than making an operating
|
||||
// system call.)
|
||||
game_lv hl2/hl2_lv.vpk
|
||||
game+mod hl2mp/hl2mp_english.vpk
|
||||
game+mod hl2mp/hl2mp_pak.vpk
|
||||
game |all_source_engine_paths|hl2/hl2_english.vpk
|
||||
game |all_source_engine_paths|hl2/hl2_pak.vpk
|
||||
game |all_source_engine_paths|hl2/hl2_textures.vpk
|
||||
game |all_source_engine_paths|hl2/hl2_sound_vo_english.vpk
|
||||
game |all_source_engine_paths|hl2/hl2_sound_misc.vpk
|
||||
game |all_source_engine_paths|hl2/hl2_misc.vpk
|
||||
platform |all_source_engine_paths|platform/platform_misc.vpk
|
||||
|
||||
// Add the HL2 directory as a game search path. This is also where where writes
|
||||
// to the "game" path go.
|
||||
game+game_write hl2mp
|
||||
|
||||
// Where the game's binaries are
|
||||
gamebin hl2mp/bin
|
||||
|
||||
// Last, mount in shared HL2 loose files
|
||||
game |all_source_engine_paths|hl2mp
|
||||
game |all_source_engine_paths|hl2
|
||||
platform |all_source_engine_paths|platform
|
||||
}
|
||||
}
|
||||
}
|
||||
"GameInfo"
|
||||
{
|
||||
game "My First HL2MP Mod"
|
||||
title "HALF+LIFE'"
|
||||
title2 "deathmatch mod"
|
||||
type multiplayer_only
|
||||
nomodels 0
|
||||
nohimodel 1
|
||||
nocrosshair 1
|
||||
hidden_maps
|
||||
{
|
||||
"test_speakers" 1
|
||||
"test_hardware" 1
|
||||
}
|
||||
|
||||
|
||||
FileSystem
|
||||
{
|
||||
SteamAppId 243750
|
||||
|
||||
//
|
||||
// The code that loads this file automatically does a few things here:
|
||||
//
|
||||
// 1. For each "Game" search path, it adds a "GameBin" path, in <dir>\bin
|
||||
// 2. For each "Game" search path, it adds another "Game" path in front of it with _<langage> at the end.
|
||||
// For example: c:\hl2\cstrike on a french machine would get a c:\hl2\cstrike_french path added to it.
|
||||
// 3. For the first "Game" search path, it adds a search path called "MOD".
|
||||
// 4. For the first "Game" search path, it adds a search path called "DEFAULT_WRITE_PATH".
|
||||
//
|
||||
|
||||
//
|
||||
// Search paths are relative to the base directory, which is where hl2.exe is found.
|
||||
//
|
||||
// |gameinfo_path| points at the directory where gameinfo.txt is.
|
||||
// We always want to mount that directory relative to gameinfo.txt, so
|
||||
// people can mount stuff in c:\mymod, and the main game resources are in
|
||||
// someplace like c:\program files\valve\steam\steamapps\half-life 2.
|
||||
//
|
||||
SearchPaths
|
||||
{
|
||||
// First, mount all user customizations. This will search for VPKs and subfolders
|
||||
// and mount them in alphabetical order. The easiest way to distribute a mod is to
|
||||
// pack up the custom content into a VPK. To "install" a mod, just drop it in this
|
||||
// folder.
|
||||
//
|
||||
// Note that this folder is scanned only when the game is booted.
|
||||
game+mod hl2mp/custom/*
|
||||
game+mod hl2/custom/*
|
||||
|
||||
// Now search loose files. We'll set the directory containing the gameinfo.txt file
|
||||
// as the first "mod" search path (after any user customizations). This is also the one
|
||||
// that's used when writing to the "mod" path.
|
||||
game+mod+mod_write+default_write_path |gameinfo_path|.
|
||||
gamebin |gameinfo_path|bin
|
||||
|
||||
// We search VPK files before ordinary folders, because most files will be found in
|
||||
// VPK and we can avoid making thousands of file system calls to attempt to open files
|
||||
// in folders where they don't exist. (Searching a VPK is much faster than making an operating
|
||||
// system call.)
|
||||
game_lv hl2/hl2_lv.vpk
|
||||
game+mod hl2mp/hl2mp_english.vpk
|
||||
game+mod hl2mp/hl2mp_pak.vpk
|
||||
game |all_source_engine_paths|hl2/hl2_english.vpk
|
||||
game |all_source_engine_paths|hl2/hl2_pak.vpk
|
||||
game |all_source_engine_paths|hl2/hl2_textures.vpk
|
||||
game |all_source_engine_paths|hl2/hl2_sound_vo_english.vpk
|
||||
game |all_source_engine_paths|hl2/hl2_sound_misc.vpk
|
||||
game |all_source_engine_paths|hl2/hl2_misc.vpk
|
||||
platform |all_source_engine_paths|platform/platform_misc.vpk
|
||||
|
||||
// Add the HL2 directory as a game search path. This is also where where writes
|
||||
// to the "game" path go.
|
||||
game+game_write hl2mp
|
||||
|
||||
// Where the game's binaries are
|
||||
gamebin hl2mp/bin
|
||||
|
||||
// Last, mount in shared HL2 loose files
|
||||
game |all_source_engine_paths|hl2mp
|
||||
game |all_source_engine_paths|hl2
|
||||
platform |all_source_engine_paths|platform
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
"Mod_Example_Model"
|
||||
{
|
||||
"$basetexture" "Models/props_c17/Oil_Drum001g"
|
||||
// "$basetexturetransform" "center 0 0 scale 1 2 rotate 0 translate 0 0"
|
||||
// "$AlphaTestReference" "0.5"
|
||||
"$surfaceprop" "metal"
|
||||
}
|
||||
"Mod_Example_Model"
|
||||
{
|
||||
"$basetexture" "Models/props_c17/Oil_Drum001g"
|
||||
// "$basetexturetransform" "center 0 0 scale 1 2 rotate 0 translate 0 0"
|
||||
// "$AlphaTestReference" "0.5"
|
||||
"$surfaceprop" "metal"
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,48 +1,64 @@
|
||||
"GameMenu"
|
||||
{
|
||||
"1"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_ResumeGame"
|
||||
"command" "ResumeGame"
|
||||
"OnlyInGame" "1"
|
||||
}
|
||||
"2"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_Disconnect"
|
||||
"command" "Disconnect"
|
||||
"OnlyInGame" "1"
|
||||
}
|
||||
"3"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_PlayerList"
|
||||
"command" "OpenPlayerListDialog"
|
||||
"OnlyInGame" "1"
|
||||
}
|
||||
"4"
|
||||
{
|
||||
"label" ""
|
||||
"command" ""
|
||||
"OnlyInGame" "1"
|
||||
}
|
||||
"5"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_FindServers"
|
||||
"command" "OpenServerBrowser"
|
||||
}
|
||||
"6"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_CreateServer"
|
||||
"command" "OpenCreateMultiplayerGameDialog"
|
||||
}
|
||||
"10"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_Options"
|
||||
"command" "OpenOptionsDialog"
|
||||
}
|
||||
"11"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_Quit"
|
||||
"command" "Quit"
|
||||
}
|
||||
}
|
||||
|
||||
"GameMenu"
|
||||
{
|
||||
"1"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_ResumeGame"
|
||||
"command" "ResumeGame"
|
||||
"OnlyInGame" "1"
|
||||
}
|
||||
"2"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_Disconnect"
|
||||
"command" "Disconnect"
|
||||
"OnlyInGame" "1"
|
||||
}
|
||||
"3"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_PlayerList"
|
||||
"command" "OpenPlayerListDialog"
|
||||
"OnlyInGame" "1"
|
||||
}
|
||||
"4"
|
||||
{
|
||||
"label" ""
|
||||
"command" ""
|
||||
"OnlyInGame" "1"
|
||||
}
|
||||
"5"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_FindServers"
|
||||
"command" "OpenServerBrowser"
|
||||
}
|
||||
"6"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_CreateServer"
|
||||
"command" "OpenCreateMultiplayerGameDialog"
|
||||
}
|
||||
"7"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_ActivateVR"
|
||||
"command" "engine vr_activate"
|
||||
"InGameOrder" "40"
|
||||
"OnlyWhenVREnabled" "1"
|
||||
"OnlyWhenVRInactive" "1"
|
||||
}
|
||||
"8"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_DeactivateVR"
|
||||
"command" "engine vr_deactivate"
|
||||
"InGameOrder" "40"
|
||||
"OnlyWhenVREnabled" "1"
|
||||
"OnlyWhenVRActive" "1"
|
||||
}
|
||||
"10"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_Options"
|
||||
"command" "OpenOptionsDialog"
|
||||
}
|
||||
"11"
|
||||
{
|
||||
"label" "#GameUI_GameMenu_Quit"
|
||||
"command" "Quit"
|
||||
}
|
||||
}
|
||||
|
||||
|
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,51 +1,51 @@
|
||||
//=========== (C) Copyright 1999 Valve, L.L.C. All rights reserved. ===========
|
||||
//
|
||||
// The copyright to the contents herein is the property of Valve, L.L.C.
|
||||
// The contents may be used and/or copied only with the written permission of
|
||||
// Valve, L.L.C., or in accordance with the terms and conditions stipulated in
|
||||
// the agreement/contract under which the contents have been supplied.
|
||||
//=============================================================================
|
||||
|
||||
// No spaces in event names, max length 32
|
||||
// All strings are case sensitive
|
||||
//
|
||||
// valid data key types are:
|
||||
// string : a zero terminated string
|
||||
// bool : unsigned int, 1 bit
|
||||
// byte : unsigned int, 8 bit
|
||||
// short : signed int, 16 bit
|
||||
// long : signed int, 32 bit
|
||||
// float : float, 32 bit
|
||||
// local : any data, but not networked to clients
|
||||
//
|
||||
// following key names are reserved:
|
||||
// local : if set to 1, event is not networked to clients
|
||||
// unreliable : networked, but unreliable
|
||||
// suppress : never fire this event
|
||||
// time : firing server time
|
||||
// eventid : holds the event ID
|
||||
|
||||
"modevents"
|
||||
{
|
||||
"player_death" // a game event, name may be 32 charaters long
|
||||
{
|
||||
"userid" "short" // user ID who died
|
||||
"attacker" "short" // user ID who killed
|
||||
"weapon" "string" // weapon name killed used
|
||||
}
|
||||
|
||||
"teamplay_round_start" // round restart
|
||||
{
|
||||
"full_reset" "bool" // is this a full reset of the map
|
||||
}
|
||||
|
||||
"spec_target_updated"
|
||||
{
|
||||
}
|
||||
|
||||
"achievement_earned"
|
||||
{
|
||||
"player" "byte" // entindex of the player
|
||||
"achievement" "short" // achievement ID
|
||||
}
|
||||
}
|
||||
//=========== (C) Copyright 1999 Valve, L.L.C. All rights reserved. ===========
|
||||
//
|
||||
// The copyright to the contents herein is the property of Valve, L.L.C.
|
||||
// The contents may be used and/or copied only with the written permission of
|
||||
// Valve, L.L.C., or in accordance with the terms and conditions stipulated in
|
||||
// the agreement/contract under which the contents have been supplied.
|
||||
//=============================================================================
|
||||
|
||||
// No spaces in event names, max length 32
|
||||
// All strings are case sensitive
|
||||
//
|
||||
// valid data key types are:
|
||||
// string : a zero terminated string
|
||||
// bool : unsigned int, 1 bit
|
||||
// byte : unsigned int, 8 bit
|
||||
// short : signed int, 16 bit
|
||||
// long : signed int, 32 bit
|
||||
// float : float, 32 bit
|
||||
// local : any data, but not networked to clients
|
||||
//
|
||||
// following key names are reserved:
|
||||
// local : if set to 1, event is not networked to clients
|
||||
// unreliable : networked, but unreliable
|
||||
// suppress : never fire this event
|
||||
// time : firing server time
|
||||
// eventid : holds the event ID
|
||||
|
||||
"modevents"
|
||||
{
|
||||
"player_death" // a game event, name may be 32 charaters long
|
||||
{
|
||||
"userid" "short" // user ID who died
|
||||
"attacker" "short" // user ID who killed
|
||||
"weapon" "string" // weapon name killed used
|
||||
}
|
||||
|
||||
"teamplay_round_start" // round restart
|
||||
{
|
||||
"full_reset" "bool" // is this a full reset of the map
|
||||
}
|
||||
|
||||
"spec_target_updated"
|
||||
{
|
||||
}
|
||||
|
||||
"achievement_earned"
|
||||
{
|
||||
"player" "byte" // entindex of the player
|
||||
"achievement" "short" // achievement ID
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
"chapters"
|
||||
{
|
||||
1 "background01"
|
||||
"chapters"
|
||||
{
|
||||
1 "background01"
|
||||
}
|
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,2 +1,2 @@
|
||||
// Game specific definitions
|
||||
"$game" "HL2MP"
|
||||
// Game specific definitions
|
||||
"$game" "HL2MP"
|
||||
|
@ -1,332 +1,332 @@
|
||||
"HL2Player.SprintNoPower"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_60dB"
|
||||
|
||||
"wave" "player/suit_denydevice.wav"
|
||||
}
|
||||
|
||||
"HL2Player.SprintStart"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "0.9"
|
||||
"soundlevel" "SNDLVL_60dB"
|
||||
|
||||
"wave" "player/suit_sprint.wav"
|
||||
}
|
||||
|
||||
"HL2Player.FlashLightOn"
|
||||
{
|
||||
"channel" "CHAN_WEAPON"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
"pitch" "PITCH_NORM"
|
||||
|
||||
"wave" "items/flashlight1.wav"
|
||||
}
|
||||
|
||||
"HL2Player.FlashLightOff"
|
||||
{
|
||||
"channel" "CHAN_WEAPON"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
"pitch" "PITCH_NORM"
|
||||
|
||||
"wave" "items/flashlight1.wav"
|
||||
}
|
||||
|
||||
"HL2Player.PickupWeapon"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "items/ammo_pickup.wav"
|
||||
}
|
||||
|
||||
"HL2Player.TrainUse"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "plats/train_use1.wav"
|
||||
}
|
||||
|
||||
"HL2Player.Use"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.4"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "common/wpn_select.wav"
|
||||
}
|
||||
|
||||
"HL2Player.UseNPC"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.4"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "common/wpn_select.wav"
|
||||
}
|
||||
|
||||
"HL2Player.UseDeny"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.4"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "common/wpn_denyselect.wav"
|
||||
}
|
||||
|
||||
"HL2Player.BurnPain"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "0.5"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/pl_burnpain1.wav"
|
||||
"wave" "player/pl_burnpain2.wav"
|
||||
"wave" "player/pl_burnpain3.wav"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// SHARED player sounds
|
||||
|
||||
"Player.Death"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/pl_pain5.wav"
|
||||
"wave" "player/pl_pain6.wav"
|
||||
"wave" "player/pl_pain7.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Player.PlasmaDamage"
|
||||
{
|
||||
"channel" "CHAN_BODY"
|
||||
"volume" "0.5"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "player/general/flesh_burn.wav"
|
||||
}
|
||||
|
||||
"Player.SonicDamage"
|
||||
{
|
||||
"channel" "CHAN_BODY"
|
||||
"volume" "0.7"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/pl_pain5.wav"
|
||||
"wave" "player/pl_pain6.wav"
|
||||
"wave" "player/pl_pain7.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Player.DrownStart"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "1.0"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
"pitch" "90,110"
|
||||
|
||||
"wave" "player/pl_drown1.wav"
|
||||
}
|
||||
|
||||
"Player.Swim"
|
||||
{
|
||||
"channel" "CHAN_STATIC"
|
||||
"volume" "0.5"
|
||||
"pitch" "PITCH_NORM"
|
||||
"soundlevel" "SNDLVL_NORM"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/footsteps/wade5.wav"
|
||||
"wave" "player/footsteps/wade6.wav"
|
||||
"wave" "player/footsteps/wade7.wav"
|
||||
"wave" "player/footsteps/wade8.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Player.FallDamage"
|
||||
{
|
||||
"channel" "CHAN_AUTO"
|
||||
"volume" "0.75"
|
||||
"pitch" "90,110"
|
||||
"soundlevel" "SNDLVL_NORM"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/pl_fallpain1.wav"
|
||||
"wave" "player/pl_fallpain3.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Player.FallGib"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.75"
|
||||
"pitch" "90,110"
|
||||
"soundlevel" "SNDLVL_NORM"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "physics/body/body_medium_break2.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Player.DrownContinue"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "1.0"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
"pitch" "90,110"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/pl_drown1.wav"
|
||||
"wave" "player/pl_drown2.wav"
|
||||
"wave" "player/pl_drown3.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Player.Wade"
|
||||
{
|
||||
"channel" "CHAN_BODY"
|
||||
"volume" "0.25"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/footsteps/wade5.wav"
|
||||
"wave" "player/footsteps/wade6.wav"
|
||||
"wave" "player/footsteps/wade7.wav"
|
||||
"wave" "player/footsteps/wade8.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Player.AmbientUnderWater"
|
||||
{
|
||||
"channel" "CHAN_STATIC"
|
||||
"volume" "0.22"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "ambient/water/underwater.wav"
|
||||
}
|
||||
|
||||
"Player.UseTrain"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "plats/train_use1.wav"
|
||||
}
|
||||
|
||||
"Player.UseDeny"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.4"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "common/wpn_select.wav"
|
||||
}
|
||||
|
||||
"Player.PickupWeapon"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
"pitch" "95,105"
|
||||
"wave" "items/ammo_pickup.wav"
|
||||
}
|
||||
|
||||
|
||||
"Geiger.BeepLow"
|
||||
{
|
||||
"channel" "CHAN_STATIC"
|
||||
"soundlevel" "SNDLVL_NONE"
|
||||
"pitch" "PITCH_NORM"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/geiger1.wav"
|
||||
"wave" "player/geiger2.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Geiger.BeepHigh"
|
||||
{
|
||||
"channel" "CHAN_STATIC"
|
||||
"soundlevel" "SNDLVL_NONE"
|
||||
"pitch" "PITCH_NORM"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/geiger2.wav"
|
||||
"wave" "player/geiger3.wav"
|
||||
}
|
||||
}
|
||||
|
||||
//HL2MP
|
||||
|
||||
"NPC_MetroPolice.Die"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "0.500"
|
||||
"pitch" "PITCH_NORM"
|
||||
|
||||
"soundlevel" "SNDLVL_80dB"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "npc/metropolice/die1.wav"
|
||||
"wave" "npc/metropolice/die2.wav"
|
||||
"wave" "npc/metropolice/die3.wav"
|
||||
"wave" "npc/metropolice/die4.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"NPC_CombineS.Die"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "0.500"
|
||||
"pitch" "PITCH_NORM"
|
||||
|
||||
"soundlevel" "SNDLVL_80dB"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "npc/combine_soldier/die1.wav"
|
||||
"wave" "npc/combine_soldier/die2.wav"
|
||||
"wave" "npc/combine_soldier/die3.wav"
|
||||
}
|
||||
}
|
||||
"NPC_Citizen.die"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "VOL_NORM"
|
||||
"pitch" "PITCH_NORM"
|
||||
|
||||
"soundlevel" "SNDLVL_NORM"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "*vo/npc/$gender01/pain07.wav"
|
||||
"wave" "*vo/npc/$gender01/pain08.wav"
|
||||
"wave" "*vo/npc/$gender01/pain09.wav"
|
||||
}
|
||||
"HL2Player.SprintNoPower"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_60dB"
|
||||
|
||||
"wave" "player/suit_denydevice.wav"
|
||||
}
|
||||
|
||||
"HL2Player.SprintStart"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "0.9"
|
||||
"soundlevel" "SNDLVL_60dB"
|
||||
|
||||
"wave" "player/suit_sprint.wav"
|
||||
}
|
||||
|
||||
"HL2Player.FlashLightOn"
|
||||
{
|
||||
"channel" "CHAN_WEAPON"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
"pitch" "PITCH_NORM"
|
||||
|
||||
"wave" "items/flashlight1.wav"
|
||||
}
|
||||
|
||||
"HL2Player.FlashLightOff"
|
||||
{
|
||||
"channel" "CHAN_WEAPON"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
"pitch" "PITCH_NORM"
|
||||
|
||||
"wave" "items/flashlight1.wav"
|
||||
}
|
||||
|
||||
"HL2Player.PickupWeapon"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "items/ammo_pickup.wav"
|
||||
}
|
||||
|
||||
"HL2Player.TrainUse"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "plats/train_use1.wav"
|
||||
}
|
||||
|
||||
"HL2Player.Use"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.4"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "common/wpn_select.wav"
|
||||
}
|
||||
|
||||
"HL2Player.UseNPC"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.4"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "common/wpn_select.wav"
|
||||
}
|
||||
|
||||
"HL2Player.UseDeny"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.4"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "common/wpn_denyselect.wav"
|
||||
}
|
||||
|
||||
"HL2Player.BurnPain"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "0.5"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/pl_burnpain1.wav"
|
||||
"wave" "player/pl_burnpain2.wav"
|
||||
"wave" "player/pl_burnpain3.wav"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// SHARED player sounds
|
||||
|
||||
"Player.Death"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/pl_pain5.wav"
|
||||
"wave" "player/pl_pain6.wav"
|
||||
"wave" "player/pl_pain7.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Player.PlasmaDamage"
|
||||
{
|
||||
"channel" "CHAN_BODY"
|
||||
"volume" "0.5"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "player/general/flesh_burn.wav"
|
||||
}
|
||||
|
||||
"Player.SonicDamage"
|
||||
{
|
||||
"channel" "CHAN_BODY"
|
||||
"volume" "0.7"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/pl_pain5.wav"
|
||||
"wave" "player/pl_pain6.wav"
|
||||
"wave" "player/pl_pain7.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Player.DrownStart"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "1.0"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
"pitch" "90,110"
|
||||
|
||||
"wave" "player/pl_drown1.wav"
|
||||
}
|
||||
|
||||
"Player.Swim"
|
||||
{
|
||||
"channel" "CHAN_STATIC"
|
||||
"volume" "0.5"
|
||||
"pitch" "PITCH_NORM"
|
||||
"soundlevel" "SNDLVL_NORM"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/footsteps/wade5.wav"
|
||||
"wave" "player/footsteps/wade6.wav"
|
||||
"wave" "player/footsteps/wade7.wav"
|
||||
"wave" "player/footsteps/wade8.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Player.FallDamage"
|
||||
{
|
||||
"channel" "CHAN_AUTO"
|
||||
"volume" "0.75"
|
||||
"pitch" "90,110"
|
||||
"soundlevel" "SNDLVL_NORM"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/pl_fallpain1.wav"
|
||||
"wave" "player/pl_fallpain3.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Player.FallGib"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.75"
|
||||
"pitch" "90,110"
|
||||
"soundlevel" "SNDLVL_NORM"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "physics/body/body_medium_break2.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Player.DrownContinue"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "1.0"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
"pitch" "90,110"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/pl_drown1.wav"
|
||||
"wave" "player/pl_drown2.wav"
|
||||
"wave" "player/pl_drown3.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Player.Wade"
|
||||
{
|
||||
"channel" "CHAN_BODY"
|
||||
"volume" "0.25"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/footsteps/wade5.wav"
|
||||
"wave" "player/footsteps/wade6.wav"
|
||||
"wave" "player/footsteps/wade7.wav"
|
||||
"wave" "player/footsteps/wade8.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Player.AmbientUnderWater"
|
||||
{
|
||||
"channel" "CHAN_STATIC"
|
||||
"volume" "0.22"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "ambient/water/underwater.wav"
|
||||
}
|
||||
|
||||
"Player.UseTrain"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "plats/train_use1.wav"
|
||||
}
|
||||
|
||||
"Player.UseDeny"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.4"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
|
||||
"wave" "common/wpn_select.wav"
|
||||
}
|
||||
|
||||
"Player.PickupWeapon"
|
||||
{
|
||||
"channel" "CHAN_ITEM"
|
||||
"volume" "0.8"
|
||||
"soundlevel" "SNDLVL_75dB"
|
||||
"pitch" "95,105"
|
||||
"wave" "items/ammo_pickup.wav"
|
||||
}
|
||||
|
||||
|
||||
"Geiger.BeepLow"
|
||||
{
|
||||
"channel" "CHAN_STATIC"
|
||||
"soundlevel" "SNDLVL_NONE"
|
||||
"pitch" "PITCH_NORM"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/geiger1.wav"
|
||||
"wave" "player/geiger2.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"Geiger.BeepHigh"
|
||||
{
|
||||
"channel" "CHAN_STATIC"
|
||||
"soundlevel" "SNDLVL_NONE"
|
||||
"pitch" "PITCH_NORM"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "player/geiger2.wav"
|
||||
"wave" "player/geiger3.wav"
|
||||
}
|
||||
}
|
||||
|
||||
//HL2MP
|
||||
|
||||
"NPC_MetroPolice.Die"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "0.500"
|
||||
"pitch" "PITCH_NORM"
|
||||
|
||||
"soundlevel" "SNDLVL_80dB"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "npc/metropolice/die1.wav"
|
||||
"wave" "npc/metropolice/die2.wav"
|
||||
"wave" "npc/metropolice/die3.wav"
|
||||
"wave" "npc/metropolice/die4.wav"
|
||||
}
|
||||
}
|
||||
|
||||
"NPC_CombineS.Die"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "0.500"
|
||||
"pitch" "PITCH_NORM"
|
||||
|
||||
"soundlevel" "SNDLVL_80dB"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "npc/combine_soldier/die1.wav"
|
||||
"wave" "npc/combine_soldier/die2.wav"
|
||||
"wave" "npc/combine_soldier/die3.wav"
|
||||
}
|
||||
}
|
||||
"NPC_Citizen.die"
|
||||
{
|
||||
"channel" "CHAN_VOICE"
|
||||
"volume" "VOL_NORM"
|
||||
"pitch" "PITCH_NORM"
|
||||
|
||||
"soundlevel" "SNDLVL_NORM"
|
||||
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "*vo/npc/$gender01/pain07.wav"
|
||||
"wave" "*vo/npc/$gender01/pain08.wav"
|
||||
"wave" "*vo/npc/$gender01/pain09.wav"
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,69 +1,69 @@
|
||||
"blank" "=========================="
|
||||
"blank" "#Valve_Movement_Title"
|
||||
"blank" "=========================="
|
||||
"+forward" "#Valve_Move_Forward"
|
||||
"+back" "#Valve_Move_Back"
|
||||
"+moveleft" "#Valve_Move_Left"
|
||||
"+moveright" "#Valve_Move_Right"
|
||||
"+speed" "#Valve_Sprint"
|
||||
"+jump" "#Valve_Jump"
|
||||
"+duck" "#Valve_Duck"
|
||||
"blank" "=========================="
|
||||
"blank" "#Valve_Combat_Title"
|
||||
"blank" "=========================="
|
||||
"+attack" "#Valve_Primary_Attack"
|
||||
"+attack2" "#Valve_Secondary_Attack"
|
||||
"+reload" "#Valve_Reload_Weapon"
|
||||
"+use" "#Valve_Use_Items"
|
||||
"phys_swap" "#Valve_Gravity_Gun"
|
||||
"impulse 100" "#Valve_Flashlight"
|
||||
"+zoom" "#Valve_Suit_Zoom"
|
||||
"slot1" "#Valve_Weapon_Category_1"
|
||||
"slot2" "#Valve_Weapon_Category_2"
|
||||
"slot3" "#Valve_Weapon_Category_3"
|
||||
"slot4" "#Valve_Weapon_Category_4"
|
||||
"slot5" "#Valve_Weapon_Category_5"
|
||||
"slot6" "#Valve_Weapon_Category_6"
|
||||
"invnext" "#Valve_Next_Weapon"
|
||||
"invprev" "#Valve_Previous_Weapon"
|
||||
"lastinv" "#Valve_Last_Weapon_Used"
|
||||
"use weapon_crowbar;use weapon_stunstick" "#HL2_Crowbar_Menu"
|
||||
"use weapon_physcannon" "#HL2_GravityGun_Menu"
|
||||
"use weapon_pistol" "#HL2_Pistol_Menu"
|
||||
"use weapon_357" "#HL2_357Handgun_Menu"
|
||||
"use weapon_smg1" "#HL2_SMG1_Menu"
|
||||
"use weapon_ar2" "#HL2_Pulse_Rifle_Menu"
|
||||
"use weapon_shotgun" "#HL2_Shotgun_Menu"
|
||||
"use weapon_crossbow" "#HL2_Crossbow_Menu"
|
||||
"use weapon_frag" "#HL2_Grenade_Menu"
|
||||
"use weapon_rpg" "#HL2_RPG_Menu"
|
||||
"use weapon_SLAM" "#HL2_SLAM_Menu"
|
||||
"blank" "=========================="
|
||||
"blank" "#Valve_Communication_Title"
|
||||
"blank" "=========================="
|
||||
"+voicerecord" "#Valve_Use_Voice_Communication"
|
||||
"messagemode" "#Valve_Chat_Message"
|
||||
"messagemode2" "#Valve_Team_Message"
|
||||
"blank" "=========================="
|
||||
"blank" "#Valve_Miscellaneous_Title"
|
||||
"blank" "=========================="
|
||||
"jpeg" "#Valve_Take_Screen_Shot"
|
||||
"+showscores" "#Valve_Display_Scores"
|
||||
"impulse 201" "#Valve_Spray_Logo"
|
||||
"pause" "#Valve_Pause_Game"
|
||||
"quit" "#Valve_Quit_Game"
|
||||
"timeleft" "Time Left in Round"
|
||||
"askconnect_accept" "#Valve_Accept_Redirect"
|
||||
"blank" "=========================="
|
||||
"blank" "#Valve_Miscellaneous_Keyboard_Keys_Title"
|
||||
"blank" "=========================="
|
||||
"+walk" "#Valve_Walk"
|
||||
"+left" "#Valve_Turn_Left"
|
||||
"+right" "#Valve_Turn_Right"
|
||||
"+moveup" "#Valve_Swim_Up"
|
||||
"+movedown" "#Valve_Swim_Down"
|
||||
"+lookup" "#Valve_Look_Up"
|
||||
"+lookdown" "#Valve_Look_Down"
|
||||
"+strafe" "#Valve_Strafe_Modifier"
|
||||
"+klook" "#Valve_Keyboard_Look_Modifier"
|
||||
|
||||
"blank" "=========================="
|
||||
"blank" "#Valve_Movement_Title"
|
||||
"blank" "=========================="
|
||||
"+forward" "#Valve_Move_Forward"
|
||||
"+back" "#Valve_Move_Back"
|
||||
"+moveleft" "#Valve_Move_Left"
|
||||
"+moveright" "#Valve_Move_Right"
|
||||
"+speed" "#Valve_Sprint"
|
||||
"+jump" "#Valve_Jump"
|
||||
"+duck" "#Valve_Duck"
|
||||
"blank" "=========================="
|
||||
"blank" "#Valve_Combat_Title"
|
||||
"blank" "=========================="
|
||||
"+attack" "#Valve_Primary_Attack"
|
||||
"+attack2" "#Valve_Secondary_Attack"
|
||||
"+reload" "#Valve_Reload_Weapon"
|
||||
"+use" "#Valve_Use_Items"
|
||||
"phys_swap" "#Valve_Gravity_Gun"
|
||||
"impulse 100" "#Valve_Flashlight"
|
||||
"+zoom" "#Valve_Suit_Zoom"
|
||||
"slot1" "#Valve_Weapon_Category_1"
|
||||
"slot2" "#Valve_Weapon_Category_2"
|
||||
"slot3" "#Valve_Weapon_Category_3"
|
||||
"slot4" "#Valve_Weapon_Category_4"
|
||||
"slot5" "#Valve_Weapon_Category_5"
|
||||
"slot6" "#Valve_Weapon_Category_6"
|
||||
"invnext" "#Valve_Next_Weapon"
|
||||
"invprev" "#Valve_Previous_Weapon"
|
||||
"lastinv" "#Valve_Last_Weapon_Used"
|
||||
"use weapon_crowbar;use weapon_stunstick" "#HL2_Crowbar_Menu"
|
||||
"use weapon_physcannon" "#HL2_GravityGun_Menu"
|
||||
"use weapon_pistol" "#HL2_Pistol_Menu"
|
||||
"use weapon_357" "#HL2_357Handgun_Menu"
|
||||
"use weapon_smg1" "#HL2_SMG1_Menu"
|
||||
"use weapon_ar2" "#HL2_Pulse_Rifle_Menu"
|
||||
"use weapon_shotgun" "#HL2_Shotgun_Menu"
|
||||
"use weapon_crossbow" "#HL2_Crossbow_Menu"
|
||||
"use weapon_frag" "#HL2_Grenade_Menu"
|
||||
"use weapon_rpg" "#HL2_RPG_Menu"
|
||||
"use weapon_SLAM" "#HL2_SLAM_Menu"
|
||||
"blank" "=========================="
|
||||
"blank" "#Valve_Communication_Title"
|
||||
"blank" "=========================="
|
||||
"+voicerecord" "#Valve_Use_Voice_Communication"
|
||||
"messagemode" "#Valve_Chat_Message"
|
||||
"messagemode2" "#Valve_Team_Message"
|
||||
"blank" "=========================="
|
||||
"blank" "#Valve_Miscellaneous_Title"
|
||||
"blank" "=========================="
|
||||
"jpeg" "#Valve_Take_Screen_Shot"
|
||||
"+showscores" "#Valve_Display_Scores"
|
||||
"impulse 201" "#Valve_Spray_Logo"
|
||||
"pause" "#Valve_Pause_Game"
|
||||
"quit" "#Valve_Quit_Game"
|
||||
"timeleft" "Time Left in Round"
|
||||
"askconnect_accept" "#Valve_Accept_Redirect"
|
||||
"blank" "=========================="
|
||||
"blank" "#Valve_Miscellaneous_Keyboard_Keys_Title"
|
||||
"blank" "=========================="
|
||||
"+walk" "#Valve_Walk"
|
||||
"+left" "#Valve_Turn_Left"
|
||||
"+right" "#Valve_Turn_Right"
|
||||
"+moveup" "#Valve_Swim_Up"
|
||||
"+movedown" "#Valve_Swim_Down"
|
||||
"+lookup" "#Valve_Look_Up"
|
||||
"+lookdown" "#Valve_Look_Down"
|
||||
"+strafe" "#Valve_Strafe_Modifier"
|
||||
"+klook" "#Valve_Keyboard_Look_Modifier"
|
||||
|
||||
|
@ -1,59 +1,59 @@
|
||||
"w" "+forward"
|
||||
"UPARROW" "+forward"
|
||||
"s" "+back"
|
||||
"DOWNARROW" "+back"
|
||||
"LEFTARROW" "+left"
|
||||
"RIGHTARROW" "+right"
|
||||
"a" "+moveleft"
|
||||
"," "+moveleft"
|
||||
"d" "+moveright"
|
||||
"." "+moveright"
|
||||
"SPACE" "+jump"
|
||||
"CTRL" "+duck"
|
||||
"TAB" "+showscores"
|
||||
"e" "+use"
|
||||
"v" "+moveup"
|
||||
"'" "+moveup"
|
||||
"c" "impulse 50"
|
||||
"/" "+movedown"
|
||||
"PGUP" "+lookup"
|
||||
"PGDN" "+lookdown"
|
||||
"END" "centerview"
|
||||
"z" "+strafe"
|
||||
"INS" "+klook"
|
||||
";" "+mlook"
|
||||
"r" "+reload"
|
||||
"ALT" "+walk"
|
||||
"SHIFT" "+speed"
|
||||
"MOUSE1" "+attack"
|
||||
"ENTER" "+attack"
|
||||
"MOUSE2" "+attack2"
|
||||
"\\" "+attack2"
|
||||
"f" "impulse 100"
|
||||
"1" "slot1"
|
||||
"2" "slot2"
|
||||
"3" "slot3"
|
||||
"4" "slot4"
|
||||
"5" "slot5"
|
||||
"6" "slot6"
|
||||
"MWHEELUP" "invprev"
|
||||
"[" "invprev"
|
||||
"MWHEELDOWN" "invnext"
|
||||
"]" "invnext"
|
||||
"q" "lastinv"
|
||||
"F5" "jpeg"
|
||||
"F6" "save quick"
|
||||
"F7" "load quick"
|
||||
"F10" "quit prompt"
|
||||
"PAUSE" "pause"
|
||||
"ESCAPE" "escape"
|
||||
"~" "toggleconsole"
|
||||
"`" "toggleconsole"
|
||||
"+" "sizeup"
|
||||
"=" "sizeup"
|
||||
"-" "sizedown"
|
||||
"t" "impulse 201"
|
||||
"y" "messagemode"
|
||||
"u" "messagemode2"
|
||||
"g" "dropprimary"
|
||||
"w" "+forward"
|
||||
"UPARROW" "+forward"
|
||||
"s" "+back"
|
||||
"DOWNARROW" "+back"
|
||||
"LEFTARROW" "+left"
|
||||
"RIGHTARROW" "+right"
|
||||
"a" "+moveleft"
|
||||
"," "+moveleft"
|
||||
"d" "+moveright"
|
||||
"." "+moveright"
|
||||
"SPACE" "+jump"
|
||||
"CTRL" "+duck"
|
||||
"TAB" "+showscores"
|
||||
"e" "+use"
|
||||
"v" "+moveup"
|
||||
"'" "+moveup"
|
||||
"c" "impulse 50"
|
||||
"/" "+movedown"
|
||||
"PGUP" "+lookup"
|
||||
"PGDN" "+lookdown"
|
||||
"END" "centerview"
|
||||
"z" "+strafe"
|
||||
"INS" "+klook"
|
||||
";" "+mlook"
|
||||
"r" "+reload"
|
||||
"ALT" "+walk"
|
||||
"SHIFT" "+speed"
|
||||
"MOUSE1" "+attack"
|
||||
"ENTER" "+attack"
|
||||
"MOUSE2" "+attack2"
|
||||
"\\" "+attack2"
|
||||
"f" "impulse 100"
|
||||
"1" "slot1"
|
||||
"2" "slot2"
|
||||
"3" "slot3"
|
||||
"4" "slot4"
|
||||
"5" "slot5"
|
||||
"6" "slot6"
|
||||
"MWHEELUP" "invprev"
|
||||
"[" "invprev"
|
||||
"MWHEELDOWN" "invnext"
|
||||
"]" "invnext"
|
||||
"q" "lastinv"
|
||||
"F5" "jpeg"
|
||||
"F6" "save quick"
|
||||
"F7" "load quick"
|
||||
"F10" "quit prompt"
|
||||
"PAUSE" "pause"
|
||||
"ESCAPE" "escape"
|
||||
"~" "toggleconsole"
|
||||
"`" "toggleconsole"
|
||||
"+" "sizeup"
|
||||
"=" "sizeup"
|
||||
"-" "sizedown"
|
||||
"t" "impulse 201"
|
||||
"y" "messagemode"
|
||||
"u" "messagemode2"
|
||||
"g" "dropprimary"
|
||||
"z" "+zoom"
|
@ -1,256 +1,256 @@
|
||||
0 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
1 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
2 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
3 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
4 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
5 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
6 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
7 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
8 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
9 "TAB" "TAB" DEFAULTCOLOR
|
||||
10 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
11 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
12 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
13 "ENTER" "ENTER" DEFAULTCOLOR
|
||||
14 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
15 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
16 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
17 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
18 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
19 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
20 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
21 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
22 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
23 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
24 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
25 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
26 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
27 "ESCAPE" "ESCAPE" DEFAULTCOLOR
|
||||
28 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
29 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
30 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
31 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
32 "SPACE" "SPACE" DEFAULTCOLOR
|
||||
33 "!" "!" DEFAULTCOLOR
|
||||
34 """ """ DEFAULTCOLOR
|
||||
35 "#" "#" DEFAULTCOLOR
|
||||
36 "$" "$" DEFAULTCOLOR
|
||||
37 "BACKSPACE" "BACKSPACE" DEFAULTCOLOR
|
||||
38 "&" "&" DEFAULTCOLOR
|
||||
39 "'" "'" DEFAULTCOLOR
|
||||
40 "(" "(" DEFAULTCOLOR
|
||||
41 ")" ")" DEFAULTCOLOR
|
||||
42 "*" "*" DEFAULTCOLOR
|
||||
43 "+" "+" DEFAULTCOLOR
|
||||
44 "," "," DEFAULTCOLOR
|
||||
45 "-" "-" DEFAULTCOLOR
|
||||
46 "." "." DEFAULTCOLOR
|
||||
47 "/" "/" DEFAULTCOLOR
|
||||
48 "0" "0" DEFAULTCOLOR
|
||||
49 "1" "1" DEFAULTCOLOR
|
||||
50 "2" "2" DEFAULTCOLOR
|
||||
51 "3" "3" DEFAULTCOLOR
|
||||
52 "4" "4" DEFAULTCOLOR
|
||||
53 "5" "5" DEFAULTCOLOR
|
||||
54 "6" "6" DEFAULTCOLOR
|
||||
55 "7" "7" DEFAULTCOLOR
|
||||
56 "8" "8" DEFAULTCOLOR
|
||||
57 "9" "9" DEFAULTCOLOR
|
||||
58 ":" ":" DEFAULTCOLOR
|
||||
59 ";" ";" DEFAULTCOLOR
|
||||
60 "<" "<" DEFAULTCOLOR
|
||||
61 "=" "=" DEFAULTCOLOR
|
||||
62 ">" ">" DEFAULTCOLOR
|
||||
63 "?" "?" DEFAULTCOLOR
|
||||
64 "@" "@" DEFAULTCOLOR
|
||||
65 "A" "A" DEFAULTCOLOR
|
||||
66 "B" "B" DEFAULTCOLOR
|
||||
67 "C" "C" DEFAULTCOLOR
|
||||
68 "D" "D" DEFAULTCOLOR
|
||||
69 "E" "E" DEFAULTCOLOR
|
||||
70 "F" "F" DEFAULTCOLOR
|
||||
71 "G" "G" DEFAULTCOLOR
|
||||
72 "H" "H" DEFAULTCOLOR
|
||||
73 "I" "I" DEFAULTCOLOR
|
||||
74 "J" "J" DEFAULTCOLOR
|
||||
75 "K" "K" DEFAULTCOLOR
|
||||
76 "L" "L" DEFAULTCOLOR
|
||||
77 "M" "M" DEFAULTCOLOR
|
||||
78 "N" "N" DEFAULTCOLOR
|
||||
79 "O" "O" DEFAULTCOLOR
|
||||
80 "P" "P" DEFAULTCOLOR
|
||||
81 "Q" "Q" DEFAULTCOLOR
|
||||
82 "R" "R" DEFAULTCOLOR
|
||||
83 "S" "S" DEFAULTCOLOR
|
||||
84 "T" "T" DEFAULTCOLOR
|
||||
85 "U" "U" DEFAULTCOLOR
|
||||
86 "V" "V" DEFAULTCOLOR
|
||||
87 "W" "W" DEFAULTCOLOR
|
||||
88 "X" "X" DEFAULTCOLOR
|
||||
89 "Y" "Y" DEFAULTCOLOR
|
||||
90 "Z" "Z" DEFAULTCOLOR
|
||||
91 "[" "[" DEFAULTCOLOR
|
||||
92 "\" "\" DEFAULTCOLOR
|
||||
93 "]" "]" DEFAULTCOLOR
|
||||
94 "^" "^" DEFAULTCOLOR
|
||||
95 "_" "_" DEFAULTCOLOR
|
||||
96 "`" "`" DEFAULTCOLOR
|
||||
97 "a" "a" DEFAULTCOLOR
|
||||
98 "b" "b" DEFAULTCOLOR
|
||||
99 "c" "c" DEFAULTCOLOR
|
||||
100 "d" "d" DEFAULTCOLOR
|
||||
101 "e" "e" DEFAULTCOLOR
|
||||
102 "f" "f" DEFAULTCOLOR
|
||||
103 "g" "g" DEFAULTCOLOR
|
||||
104 "h" "h" DEFAULTCOLOR
|
||||
105 "i" "i" DEFAULTCOLOR
|
||||
106 "j" "j" DEFAULTCOLOR
|
||||
107 "k" "k" DEFAULTCOLOR
|
||||
108 "l" "l" DEFAULTCOLOR
|
||||
109 "m" "m" DEFAULTCOLOR
|
||||
110 "n" "n" DEFAULTCOLOR
|
||||
111 "o" "o" DEFAULTCOLOR
|
||||
112 "p" "p" DEFAULTCOLOR
|
||||
113 "q" "q" DEFAULTCOLOR
|
||||
114 "r" "r" DEFAULTCOLOR
|
||||
115 "s" "s" DEFAULTCOLOR
|
||||
116 "t" "t" DEFAULTCOLOR
|
||||
117 "u" "u" DEFAULTCOLOR
|
||||
118 "v" "v" DEFAULTCOLOR
|
||||
119 "w" "w" DEFAULTCOLOR
|
||||
120 "x" "x" DEFAULTCOLOR
|
||||
121 "y" "y" DEFAULTCOLOR
|
||||
122 "z" "z" DEFAULTCOLOR
|
||||
123 "{" "{" DEFAULTCOLOR
|
||||
124 "|" "|" DEFAULTCOLOR
|
||||
125 "}" "}" DEFAULTCOLOR
|
||||
126 "~" "~" DEFAULTCOLOR
|
||||
127 "BACKSPACE" "BACKSPACE" DEFAULTCOLOR
|
||||
128 "UPARROW" "UPARROW" DEFAULTCOLOR
|
||||
129 "DOWNARROW" "DOWNARROW" DEFAULTCOLOR
|
||||
130 "LEFTARROW" "LEFTARROW" DEFAULTCOLOR
|
||||
131 "RIGHTARROW" "RIGHTARROW" DEFAULTCOLOR
|
||||
132 "ALT" "ALT" DEFAULTCOLOR
|
||||
133 "CTRL" "CTRL" DEFAULTCOLOR
|
||||
134 "SHIFT" "SHIFT" DEFAULTCOLOR
|
||||
135 "F1" "F1" DEFAULTCOLOR
|
||||
136 "F2" "F2" DEFAULTCOLOR
|
||||
137 "F3" "F3" DEFAULTCOLOR
|
||||
138 "F4" "F4" DEFAULTCOLOR
|
||||
139 "F5" "F5" DEFAULTCOLOR
|
||||
140 "F6" "F6" DEFAULTCOLOR
|
||||
141 "F7" "F7" DEFAULTCOLOR
|
||||
142 "F8" "F8" DEFAULTCOLOR
|
||||
143 "F9" "F9" DEFAULTCOLOR
|
||||
144 "F10" "F10" DEFAULTCOLOR
|
||||
145 "F11" "F11" DEFAULTCOLOR
|
||||
146 "F12" "F12" DEFAULTCOLOR
|
||||
147 "INS" "INS" DEFAULTCOLOR
|
||||
148 "DEL" "DEL" DEFAULTCOLOR
|
||||
149 "PGDN" "PGDN" DEFAULTCOLOR
|
||||
150 "PGUP" "PGUP" DEFAULTCOLOR
|
||||
151 "HOME" "HOME" DEFAULTCOLOR
|
||||
152 "END" "END" DEFAULTCOLOR
|
||||
153 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
154 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
155 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
156 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
157 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
158 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
159 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
160 "KP_HOME" "KP_HOME" DEFAULTCOLOR
|
||||
161 "KP_UPARROW" "KP_UPARROW" DEFAULTCOLOR
|
||||
162 "KP_PGUP" "KP_PGUP" DEFAULTCOLOR
|
||||
163 "KP_LEFTARROW" "KP_LEFTARROW" DEFAULTCOLOR
|
||||
164 "KP_5" "KP_5" DEFAULTCOLOR
|
||||
165 "KP_RIGHTARROW" "KP_RIGHTARROW" DEFAULTCOLOR
|
||||
166 "KP_END" "KP_END" DEFAULTCOLOR
|
||||
167 "KP_DOWNARROW" "KP_DOWNARROW" DEFAULTCOLOR
|
||||
168 "KP_PGDN" "KP_PGDN" DEFAULTCOLOR
|
||||
169 "KP_ENTER" "KP_ENTER" DEFAULTCOLOR
|
||||
170 "KP_INS" "KP_INS" DEFAULTCOLOR
|
||||
171 "KP_DEL" "KP_DEL" DEFAULTCOLOR
|
||||
172 "KP_SLASH" "KP_SLASH" DEFAULTCOLOR
|
||||
173 "KP_MINUS" "KP_MINUS" DEFAULTCOLOR
|
||||
174 "KP_PLUS" "KP_PLUS" DEFAULTCOLOR
|
||||
175 "CAPSLOCK" "CAPSLOCK" DEFAULTCOLOR
|
||||
176 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
177 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
178 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
179 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
180 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
181 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
182 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
183 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
184 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
185 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
186 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
187 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
188 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
189 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
190 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
191 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
192 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
193 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
194 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
195 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
196 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
197 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
198 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
199 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
200 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR1
|
||||
201 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
202 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
203 "JOY1" "JOY1" COLOR 255 0 0
|
||||
204 "JOY2" "JOY2" COLOR 255 0 0
|
||||
205 "JOY3" "JOY3" COLOR 255 0 0
|
||||
206 "JOY4" "JOY4" COLOR 255 0 0
|
||||
207 "AUX1" "AUX1" DEFAULTCOLOR
|
||||
208 "AUX2" "AUX2" DEFAULTCOLOR
|
||||
209 "AUX3" "AUX3" DEFAULTCOLOR
|
||||
210 "AUX4" "AUX4" DEFAULTCOLOR
|
||||
211 "AUX5" "AUX5" DEFAULTCOLOR
|
||||
212 "AUX6" "AUX6" DEFAULTCOLOR
|
||||
213 "AUX7" "AUX7" DEFAULTCOLOR
|
||||
214 "AUX8" "AUX8" DEFAULTCOLOR
|
||||
215 "AUX9" "AUX9" DEFAULTCOLOR
|
||||
216 "AUX10" "AUX10" DEFAULTCOLOR
|
||||
217 "AUX11" "AUX11" DEFAULTCOLOR
|
||||
218 "AUX12" "AUX12" DEFAULTCOLOR
|
||||
219 "AUX13" "AUX13" DEFAULTCOLOR
|
||||
220 "AUX14" "AUX14" DEFAULTCOLOR
|
||||
221 "AUX15" "AUX15" DEFAULTCOLOR
|
||||
222 "AUX16" "AUX16" DEFAULTCOLOR
|
||||
223 "AUX17" "AUX17" DEFAULTCOLOR
|
||||
224 "AUX18" "AUX18" DEFAULTCOLOR
|
||||
225 "AUX19" "AUX19" DEFAULTCOLOR
|
||||
226 "AUX20" "AUX20" DEFAULTCOLOR
|
||||
227 "AUX21" "AUX21" DEFAULTCOLOR
|
||||
228 "AUX22" "AUX22" DEFAULTCOLOR
|
||||
229 "AUX23" "AUX23" DEFAULTCOLOR
|
||||
230 "AUX24" "AUX24" DEFAULTCOLOR
|
||||
231 "AUX25" "AUX25" DEFAULTCOLOR
|
||||
232 "AUX26" "AUX26" DEFAULTCOLOR
|
||||
233 "AUX27" "AUX27" DEFAULTCOLOR
|
||||
234 "AUX28" "AUX28" DEFAULTCOLOR
|
||||
235 "AUX29" "AUX29" DEFAULTCOLOR
|
||||
236 "AUX30" "AUX30" DEFAULTCOLOR
|
||||
237 "AUX31" "AUX31" DEFAULTCOLOR
|
||||
238 "AUX32" "AUX32" DEFAULTCOLOR
|
||||
239 "MWHEELDOWN" "MWHEELDOWN" DEFAULTCOLOR
|
||||
240 "MWHEELUP" "MWHEELUP" DEFAULTCOLOR
|
||||
241 "MOUSE1" "MOUSE1" COLOR 0 255 255
|
||||
242 "MOUSE2" "MOUSE2" COLOR 0 255 255
|
||||
243 "MOUSE3" "MOUSE3" COLOR 0 255 255
|
||||
244 "MOUSE4" "MOUSE4" COLOR 0 255 255
|
||||
245 "MOUSE5" "MOUSE5" COLOR 0 255 255
|
||||
246 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
247 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
248 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
249 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
250 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
251 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
252 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
253 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
254 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
255 "PAUSE" "PAUSE" DEFAULTCOLOR
|
||||
0 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
1 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
2 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
3 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
4 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
5 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
6 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
7 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
8 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
9 "TAB" "TAB" DEFAULTCOLOR
|
||||
10 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
11 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
12 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
13 "ENTER" "ENTER" DEFAULTCOLOR
|
||||
14 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
15 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
16 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
17 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
18 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
19 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
20 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
21 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
22 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
23 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
24 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
25 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
26 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
27 "ESCAPE" "ESCAPE" DEFAULTCOLOR
|
||||
28 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
29 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
30 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
31 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
32 "SPACE" "SPACE" DEFAULTCOLOR
|
||||
33 "!" "!" DEFAULTCOLOR
|
||||
34 """ """ DEFAULTCOLOR
|
||||
35 "#" "#" DEFAULTCOLOR
|
||||
36 "$" "$" DEFAULTCOLOR
|
||||
37 "BACKSPACE" "BACKSPACE" DEFAULTCOLOR
|
||||
38 "&" "&" DEFAULTCOLOR
|
||||
39 "'" "'" DEFAULTCOLOR
|
||||
40 "(" "(" DEFAULTCOLOR
|
||||
41 ")" ")" DEFAULTCOLOR
|
||||
42 "*" "*" DEFAULTCOLOR
|
||||
43 "+" "+" DEFAULTCOLOR
|
||||
44 "," "," DEFAULTCOLOR
|
||||
45 "-" "-" DEFAULTCOLOR
|
||||
46 "." "." DEFAULTCOLOR
|
||||
47 "/" "/" DEFAULTCOLOR
|
||||
48 "0" "0" DEFAULTCOLOR
|
||||
49 "1" "1" DEFAULTCOLOR
|
||||
50 "2" "2" DEFAULTCOLOR
|
||||
51 "3" "3" DEFAULTCOLOR
|
||||
52 "4" "4" DEFAULTCOLOR
|
||||
53 "5" "5" DEFAULTCOLOR
|
||||
54 "6" "6" DEFAULTCOLOR
|
||||
55 "7" "7" DEFAULTCOLOR
|
||||
56 "8" "8" DEFAULTCOLOR
|
||||
57 "9" "9" DEFAULTCOLOR
|
||||
58 ":" ":" DEFAULTCOLOR
|
||||
59 ";" ";" DEFAULTCOLOR
|
||||
60 "<" "<" DEFAULTCOLOR
|
||||
61 "=" "=" DEFAULTCOLOR
|
||||
62 ">" ">" DEFAULTCOLOR
|
||||
63 "?" "?" DEFAULTCOLOR
|
||||
64 "@" "@" DEFAULTCOLOR
|
||||
65 "A" "A" DEFAULTCOLOR
|
||||
66 "B" "B" DEFAULTCOLOR
|
||||
67 "C" "C" DEFAULTCOLOR
|
||||
68 "D" "D" DEFAULTCOLOR
|
||||
69 "E" "E" DEFAULTCOLOR
|
||||
70 "F" "F" DEFAULTCOLOR
|
||||
71 "G" "G" DEFAULTCOLOR
|
||||
72 "H" "H" DEFAULTCOLOR
|
||||
73 "I" "I" DEFAULTCOLOR
|
||||
74 "J" "J" DEFAULTCOLOR
|
||||
75 "K" "K" DEFAULTCOLOR
|
||||
76 "L" "L" DEFAULTCOLOR
|
||||
77 "M" "M" DEFAULTCOLOR
|
||||
78 "N" "N" DEFAULTCOLOR
|
||||
79 "O" "O" DEFAULTCOLOR
|
||||
80 "P" "P" DEFAULTCOLOR
|
||||
81 "Q" "Q" DEFAULTCOLOR
|
||||
82 "R" "R" DEFAULTCOLOR
|
||||
83 "S" "S" DEFAULTCOLOR
|
||||
84 "T" "T" DEFAULTCOLOR
|
||||
85 "U" "U" DEFAULTCOLOR
|
||||
86 "V" "V" DEFAULTCOLOR
|
||||
87 "W" "W" DEFAULTCOLOR
|
||||
88 "X" "X" DEFAULTCOLOR
|
||||
89 "Y" "Y" DEFAULTCOLOR
|
||||
90 "Z" "Z" DEFAULTCOLOR
|
||||
91 "[" "[" DEFAULTCOLOR
|
||||
92 "\" "\" DEFAULTCOLOR
|
||||
93 "]" "]" DEFAULTCOLOR
|
||||
94 "^" "^" DEFAULTCOLOR
|
||||
95 "_" "_" DEFAULTCOLOR
|
||||
96 "`" "`" DEFAULTCOLOR
|
||||
97 "a" "a" DEFAULTCOLOR
|
||||
98 "b" "b" DEFAULTCOLOR
|
||||
99 "c" "c" DEFAULTCOLOR
|
||||
100 "d" "d" DEFAULTCOLOR
|
||||
101 "e" "e" DEFAULTCOLOR
|
||||
102 "f" "f" DEFAULTCOLOR
|
||||
103 "g" "g" DEFAULTCOLOR
|
||||
104 "h" "h" DEFAULTCOLOR
|
||||
105 "i" "i" DEFAULTCOLOR
|
||||
106 "j" "j" DEFAULTCOLOR
|
||||
107 "k" "k" DEFAULTCOLOR
|
||||
108 "l" "l" DEFAULTCOLOR
|
||||
109 "m" "m" DEFAULTCOLOR
|
||||
110 "n" "n" DEFAULTCOLOR
|
||||
111 "o" "o" DEFAULTCOLOR
|
||||
112 "p" "p" DEFAULTCOLOR
|
||||
113 "q" "q" DEFAULTCOLOR
|
||||
114 "r" "r" DEFAULTCOLOR
|
||||
115 "s" "s" DEFAULTCOLOR
|
||||
116 "t" "t" DEFAULTCOLOR
|
||||
117 "u" "u" DEFAULTCOLOR
|
||||
118 "v" "v" DEFAULTCOLOR
|
||||
119 "w" "w" DEFAULTCOLOR
|
||||
120 "x" "x" DEFAULTCOLOR
|
||||
121 "y" "y" DEFAULTCOLOR
|
||||
122 "z" "z" DEFAULTCOLOR
|
||||
123 "{" "{" DEFAULTCOLOR
|
||||
124 "|" "|" DEFAULTCOLOR
|
||||
125 "}" "}" DEFAULTCOLOR
|
||||
126 "~" "~" DEFAULTCOLOR
|
||||
127 "BACKSPACE" "BACKSPACE" DEFAULTCOLOR
|
||||
128 "UPARROW" "UPARROW" DEFAULTCOLOR
|
||||
129 "DOWNARROW" "DOWNARROW" DEFAULTCOLOR
|
||||
130 "LEFTARROW" "LEFTARROW" DEFAULTCOLOR
|
||||
131 "RIGHTARROW" "RIGHTARROW" DEFAULTCOLOR
|
||||
132 "ALT" "ALT" DEFAULTCOLOR
|
||||
133 "CTRL" "CTRL" DEFAULTCOLOR
|
||||
134 "SHIFT" "SHIFT" DEFAULTCOLOR
|
||||
135 "F1" "F1" DEFAULTCOLOR
|
||||
136 "F2" "F2" DEFAULTCOLOR
|
||||
137 "F3" "F3" DEFAULTCOLOR
|
||||
138 "F4" "F4" DEFAULTCOLOR
|
||||
139 "F5" "F5" DEFAULTCOLOR
|
||||
140 "F6" "F6" DEFAULTCOLOR
|
||||
141 "F7" "F7" DEFAULTCOLOR
|
||||
142 "F8" "F8" DEFAULTCOLOR
|
||||
143 "F9" "F9" DEFAULTCOLOR
|
||||
144 "F10" "F10" DEFAULTCOLOR
|
||||
145 "F11" "F11" DEFAULTCOLOR
|
||||
146 "F12" "F12" DEFAULTCOLOR
|
||||
147 "INS" "INS" DEFAULTCOLOR
|
||||
148 "DEL" "DEL" DEFAULTCOLOR
|
||||
149 "PGDN" "PGDN" DEFAULTCOLOR
|
||||
150 "PGUP" "PGUP" DEFAULTCOLOR
|
||||
151 "HOME" "HOME" DEFAULTCOLOR
|
||||
152 "END" "END" DEFAULTCOLOR
|
||||
153 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
154 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
155 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
156 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
157 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
158 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
159 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
160 "KP_HOME" "KP_HOME" DEFAULTCOLOR
|
||||
161 "KP_UPARROW" "KP_UPARROW" DEFAULTCOLOR
|
||||
162 "KP_PGUP" "KP_PGUP" DEFAULTCOLOR
|
||||
163 "KP_LEFTARROW" "KP_LEFTARROW" DEFAULTCOLOR
|
||||
164 "KP_5" "KP_5" DEFAULTCOLOR
|
||||
165 "KP_RIGHTARROW" "KP_RIGHTARROW" DEFAULTCOLOR
|
||||
166 "KP_END" "KP_END" DEFAULTCOLOR
|
||||
167 "KP_DOWNARROW" "KP_DOWNARROW" DEFAULTCOLOR
|
||||
168 "KP_PGDN" "KP_PGDN" DEFAULTCOLOR
|
||||
169 "KP_ENTER" "KP_ENTER" DEFAULTCOLOR
|
||||
170 "KP_INS" "KP_INS" DEFAULTCOLOR
|
||||
171 "KP_DEL" "KP_DEL" DEFAULTCOLOR
|
||||
172 "KP_SLASH" "KP_SLASH" DEFAULTCOLOR
|
||||
173 "KP_MINUS" "KP_MINUS" DEFAULTCOLOR
|
||||
174 "KP_PLUS" "KP_PLUS" DEFAULTCOLOR
|
||||
175 "CAPSLOCK" "CAPSLOCK" DEFAULTCOLOR
|
||||
176 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
177 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
178 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
179 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
180 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
181 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
182 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
183 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
184 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
185 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
186 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
187 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
188 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
189 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
190 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
191 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
192 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
193 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
194 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
195 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
196 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
197 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
198 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
199 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
200 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR1
|
||||
201 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
202 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
203 "JOY1" "JOY1" COLOR 255 0 0
|
||||
204 "JOY2" "JOY2" COLOR 255 0 0
|
||||
205 "JOY3" "JOY3" COLOR 255 0 0
|
||||
206 "JOY4" "JOY4" COLOR 255 0 0
|
||||
207 "AUX1" "AUX1" DEFAULTCOLOR
|
||||
208 "AUX2" "AUX2" DEFAULTCOLOR
|
||||
209 "AUX3" "AUX3" DEFAULTCOLOR
|
||||
210 "AUX4" "AUX4" DEFAULTCOLOR
|
||||
211 "AUX5" "AUX5" DEFAULTCOLOR
|
||||
212 "AUX6" "AUX6" DEFAULTCOLOR
|
||||
213 "AUX7" "AUX7" DEFAULTCOLOR
|
||||
214 "AUX8" "AUX8" DEFAULTCOLOR
|
||||
215 "AUX9" "AUX9" DEFAULTCOLOR
|
||||
216 "AUX10" "AUX10" DEFAULTCOLOR
|
||||
217 "AUX11" "AUX11" DEFAULTCOLOR
|
||||
218 "AUX12" "AUX12" DEFAULTCOLOR
|
||||
219 "AUX13" "AUX13" DEFAULTCOLOR
|
||||
220 "AUX14" "AUX14" DEFAULTCOLOR
|
||||
221 "AUX15" "AUX15" DEFAULTCOLOR
|
||||
222 "AUX16" "AUX16" DEFAULTCOLOR
|
||||
223 "AUX17" "AUX17" DEFAULTCOLOR
|
||||
224 "AUX18" "AUX18" DEFAULTCOLOR
|
||||
225 "AUX19" "AUX19" DEFAULTCOLOR
|
||||
226 "AUX20" "AUX20" DEFAULTCOLOR
|
||||
227 "AUX21" "AUX21" DEFAULTCOLOR
|
||||
228 "AUX22" "AUX22" DEFAULTCOLOR
|
||||
229 "AUX23" "AUX23" DEFAULTCOLOR
|
||||
230 "AUX24" "AUX24" DEFAULTCOLOR
|
||||
231 "AUX25" "AUX25" DEFAULTCOLOR
|
||||
232 "AUX26" "AUX26" DEFAULTCOLOR
|
||||
233 "AUX27" "AUX27" DEFAULTCOLOR
|
||||
234 "AUX28" "AUX28" DEFAULTCOLOR
|
||||
235 "AUX29" "AUX29" DEFAULTCOLOR
|
||||
236 "AUX30" "AUX30" DEFAULTCOLOR
|
||||
237 "AUX31" "AUX31" DEFAULTCOLOR
|
||||
238 "AUX32" "AUX32" DEFAULTCOLOR
|
||||
239 "MWHEELDOWN" "MWHEELDOWN" DEFAULTCOLOR
|
||||
240 "MWHEELUP" "MWHEELUP" DEFAULTCOLOR
|
||||
241 "MOUSE1" "MOUSE1" COLOR 0 255 255
|
||||
242 "MOUSE2" "MOUSE2" COLOR 0 255 255
|
||||
243 "MOUSE3" "MOUSE3" COLOR 0 255 255
|
||||
244 "MOUSE4" "MOUSE4" COLOR 0 255 255
|
||||
245 "MOUSE5" "MOUSE5" COLOR 0 255 255
|
||||
246 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
247 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
248 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
249 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
250 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
251 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
252 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
253 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
254 "<UNKNOWN KEYNUM>" "<UNKNOWN KEYNUM>" DEFAULTCOLOR
|
||||
255 "PAUSE" "PAUSE" DEFAULTCOLOR
|
||||
|
@ -1,76 +1,76 @@
|
||||
// keys with $ are to be substituted in the value strings where they occur
|
||||
// They must occur before any values that reference them since this file is
|
||||
// parsed in order
|
||||
|
||||
// Substitutions $game is swapped with the text string specified
|
||||
#include "scripts/game.txt"
|
||||
|
||||
"loading" "Loading $game..."
|
||||
|
||||
"nummasters" "2"
|
||||
"master0" "half-life.east.won.net:27010"
|
||||
"master1" "half-life.west.won.net:27010"
|
||||
//"master0" "127.0.0.1:27010"
|
||||
//"master1" "127.0.0.1:27010"
|
||||
|
||||
// Actual text labels ( note that all $key strings in the value field will be
|
||||
// substituted as noted above ).
|
||||
"label_console" "Go to $game console"
|
||||
"label_quit" "Quit playing $game"
|
||||
"label_newgame" "Start a new game"
|
||||
"label_loadgame" "Load a saved game"
|
||||
"label_videomode" "Change video mode"
|
||||
"label_configuration" "Configuration"
|
||||
"label_langame" "Connect to games on your LAN"
|
||||
"label_internetgame" "Connect to internet games"
|
||||
"label_multiplayergame" "Multiplayer games"
|
||||
|
||||
"dialog_main_header" "$game"
|
||||
"dialog_videomode_header" "Video Mode"
|
||||
"dialog_newgame_header" "New Game"
|
||||
"dialog_loadgame_header" "Load Game"
|
||||
"dialog_configuration_header" "Configuration"
|
||||
"dialog_controls_header" "Controls"
|
||||
"dialog_lan_header" "Lan"
|
||||
"dialog_internet_header" "Internet Games"
|
||||
"dialog_multiplayer_header" "Multiplayer"
|
||||
|
||||
"button_done" "Done"
|
||||
"button_ok" "OK"
|
||||
"button_cancel" "Cancel"
|
||||
"button_yes" "Yes"
|
||||
"button_no" "No"
|
||||
"button_newgame" "New Game"
|
||||
"button_videomode" "Video Mode"
|
||||
"button_console" "Console"
|
||||
"button_quit" "Quit"
|
||||
"button_loadgame" "Load Game"
|
||||
"button_easy" "Easy"
|
||||
"button_medium" "Medium"
|
||||
"button_hard" "Hard"
|
||||
"button_configuration" "Configuration"
|
||||
"button_controls" "Controls"
|
||||
"button_usedefaults" "Use Defaults"
|
||||
"button_advancedcontrols" "Adv Controls"
|
||||
"button_delete" "Delete"
|
||||
"button_load" "Load"
|
||||
"button_langame" "Lan"
|
||||
"button_internetgame" "Internet Game"
|
||||
"button_connect" "Connect"
|
||||
"button_refresh" "Refresh"
|
||||
"button_multiplayergame" "Multiplayer"
|
||||
"button_update" "Update"
|
||||
|
||||
"keybinding_action" "Action"
|
||||
"keybinding_keybutton" "Key / button"
|
||||
"keybinding_alternate" "Alternate"
|
||||
"keybinding_prompt" "Press a button or key"
|
||||
|
||||
"loadgame_time" "Time"
|
||||
"loadgame_game" "Game"
|
||||
"loadgame_elapsed" "Elapsed Time"
|
||||
|
||||
"langame_address" "Address"
|
||||
"langame_gamedir" "Game"
|
||||
"langame_map" "Map"
|
||||
// keys with $ are to be substituted in the value strings where they occur
|
||||
// They must occur before any values that reference them since this file is
|
||||
// parsed in order
|
||||
|
||||
// Substitutions $game is swapped with the text string specified
|
||||
#include "scripts/game.txt"
|
||||
|
||||
"loading" "Loading $game..."
|
||||
|
||||
"nummasters" "2"
|
||||
"master0" "half-life.east.won.net:27010"
|
||||
"master1" "half-life.west.won.net:27010"
|
||||
//"master0" "127.0.0.1:27010"
|
||||
//"master1" "127.0.0.1:27010"
|
||||
|
||||
// Actual text labels ( note that all $key strings in the value field will be
|
||||
// substituted as noted above ).
|
||||
"label_console" "Go to $game console"
|
||||
"label_quit" "Quit playing $game"
|
||||
"label_newgame" "Start a new game"
|
||||
"label_loadgame" "Load a saved game"
|
||||
"label_videomode" "Change video mode"
|
||||
"label_configuration" "Configuration"
|
||||
"label_langame" "Connect to games on your LAN"
|
||||
"label_internetgame" "Connect to internet games"
|
||||
"label_multiplayergame" "Multiplayer games"
|
||||
|
||||
"dialog_main_header" "$game"
|
||||
"dialog_videomode_header" "Video Mode"
|
||||
"dialog_newgame_header" "New Game"
|
||||
"dialog_loadgame_header" "Load Game"
|
||||
"dialog_configuration_header" "Configuration"
|
||||
"dialog_controls_header" "Controls"
|
||||
"dialog_lan_header" "Lan"
|
||||
"dialog_internet_header" "Internet Games"
|
||||
"dialog_multiplayer_header" "Multiplayer"
|
||||
|
||||
"button_done" "Done"
|
||||
"button_ok" "OK"
|
||||
"button_cancel" "Cancel"
|
||||
"button_yes" "Yes"
|
||||
"button_no" "No"
|
||||
"button_newgame" "New Game"
|
||||
"button_videomode" "Video Mode"
|
||||
"button_console" "Console"
|
||||
"button_quit" "Quit"
|
||||
"button_loadgame" "Load Game"
|
||||
"button_easy" "Easy"
|
||||
"button_medium" "Medium"
|
||||
"button_hard" "Hard"
|
||||
"button_configuration" "Configuration"
|
||||
"button_controls" "Controls"
|
||||
"button_usedefaults" "Use Defaults"
|
||||
"button_advancedcontrols" "Adv Controls"
|
||||
"button_delete" "Delete"
|
||||
"button_load" "Load"
|
||||
"button_langame" "Lan"
|
||||
"button_internetgame" "Internet Game"
|
||||
"button_connect" "Connect"
|
||||
"button_refresh" "Refresh"
|
||||
"button_multiplayergame" "Multiplayer"
|
||||
"button_update" "Update"
|
||||
|
||||
"keybinding_action" "Action"
|
||||
"keybinding_keybutton" "Key / button"
|
||||
"keybinding_alternate" "Alternate"
|
||||
"keybinding_prompt" "Press a button or key"
|
||||
|
||||
"loadgame_time" "Time"
|
||||
"loadgame_game" "Game"
|
||||
"loadgame_elapsed" "Elapsed Time"
|
||||
|
||||
"langame_address" "Address"
|
||||
"langame_gamedir" "Game"
|
||||
"langame_map" "Map"
|
||||
"langame_ping" "Ping"
|
@ -1,228 +1,228 @@
|
||||
"sprites/640_hud"
|
||||
{
|
||||
TextureData
|
||||
{
|
||||
"d_crowbar"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "0"
|
||||
"width" "48"
|
||||
"height" "16"
|
||||
}
|
||||
"d_9mmhandgun"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "16"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_357"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "32"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_9mmAR"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "48"
|
||||
"width" "48"
|
||||
"height" "16"
|
||||
}
|
||||
"d_shotgun"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "64"
|
||||
"width" "48"
|
||||
"height" "16"
|
||||
}
|
||||
"d_bolt"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "80"
|
||||
"width" "48"
|
||||
"height" "16"
|
||||
}
|
||||
"d_crossbow"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "80"
|
||||
"width" "48"
|
||||
"height" "16"
|
||||
}
|
||||
"d_rpg_rocket"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "96"
|
||||
"width" "48"
|
||||
"height" "16"
|
||||
}
|
||||
"d_gauss"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "112"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_egon"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "128"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_hornet"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "144"
|
||||
"width" "48"
|
||||
"height" "16"
|
||||
}
|
||||
"d_grenade"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "160"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_satchel"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "176"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_tripmine"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "192"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_snark"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "208"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_skull"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "224"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_tracktrain"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "240"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"death_357"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "."
|
||||
}
|
||||
"death_ar2"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "2"
|
||||
}
|
||||
"death_crossbow_bolt"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "1"
|
||||
}
|
||||
"death_smg1"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "/"
|
||||
}
|
||||
"death_shotgun"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "0"
|
||||
}
|
||||
"death_rpg_missile"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "3"
|
||||
}
|
||||
"death_grenade_frag"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "4"
|
||||
}
|
||||
"death_pistol"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "-"
|
||||
}
|
||||
"death_physics"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "9"
|
||||
}
|
||||
"death_combine_ball"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "8"
|
||||
}
|
||||
"death_smg1_grenade"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "7"
|
||||
}
|
||||
"death_stunstick"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "!"
|
||||
}
|
||||
"death_slam"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "*"
|
||||
}
|
||||
"death_crowbar"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "6"
|
||||
}
|
||||
"voice_player"
|
||||
{
|
||||
"file" "voice/icntlk_sv"
|
||||
"x" "0"
|
||||
"y" "0"
|
||||
"width" "32"
|
||||
"height" "32"
|
||||
}
|
||||
"voice_self"
|
||||
{
|
||||
"file" "voice/icntlk_local"
|
||||
"x" "0"
|
||||
"y" "0"
|
||||
"width" "32"
|
||||
"height" "32"
|
||||
}
|
||||
}
|
||||
}
|
||||
"sprites/640_hud"
|
||||
{
|
||||
TextureData
|
||||
{
|
||||
"d_crowbar"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "0"
|
||||
"width" "48"
|
||||
"height" "16"
|
||||
}
|
||||
"d_9mmhandgun"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "16"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_357"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "32"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_9mmAR"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "48"
|
||||
"width" "48"
|
||||
"height" "16"
|
||||
}
|
||||
"d_shotgun"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "64"
|
||||
"width" "48"
|
||||
"height" "16"
|
||||
}
|
||||
"d_bolt"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "80"
|
||||
"width" "48"
|
||||
"height" "16"
|
||||
}
|
||||
"d_crossbow"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "80"
|
||||
"width" "48"
|
||||
"height" "16"
|
||||
}
|
||||
"d_rpg_rocket"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "96"
|
||||
"width" "48"
|
||||
"height" "16"
|
||||
}
|
||||
"d_gauss"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "112"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_egon"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "128"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_hornet"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "144"
|
||||
"width" "48"
|
||||
"height" "16"
|
||||
}
|
||||
"d_grenade"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "160"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_satchel"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "176"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_tripmine"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "192"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_snark"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "208"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_skull"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "224"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"d_tracktrain"
|
||||
{
|
||||
"file" "sprites/640hud1"
|
||||
"x" "192"
|
||||
"y" "240"
|
||||
"width" "32"
|
||||
"height" "16"
|
||||
}
|
||||
"death_357"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "."
|
||||
}
|
||||
"death_ar2"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "2"
|
||||
}
|
||||
"death_crossbow_bolt"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "1"
|
||||
}
|
||||
"death_smg1"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "/"
|
||||
}
|
||||
"death_shotgun"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "0"
|
||||
}
|
||||
"death_rpg_missile"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "3"
|
||||
}
|
||||
"death_grenade_frag"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "4"
|
||||
}
|
||||
"death_pistol"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "-"
|
||||
}
|
||||
"death_physics"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "9"
|
||||
}
|
||||
"death_combine_ball"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "8"
|
||||
}
|
||||
"death_smg1_grenade"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "7"
|
||||
}
|
||||
"death_stunstick"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "!"
|
||||
}
|
||||
"death_slam"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "*"
|
||||
}
|
||||
"death_crowbar"
|
||||
{
|
||||
"font" "HL2MPTypeDeath"
|
||||
"character" "6"
|
||||
}
|
||||
"voice_player"
|
||||
{
|
||||
"file" "voice/icntlk_sv"
|
||||
"x" "0"
|
||||
"y" "0"
|
||||
"width" "32"
|
||||
"height" "32"
|
||||
}
|
||||
"voice_self"
|
||||
{
|
||||
"file" "voice/icntlk_local"
|
||||
"x" "0"
|
||||
"y" "0"
|
||||
"width" "32"
|
||||
"height" "32"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,276 +1,276 @@
|
||||
|
||||
|
||||
"labs_mp"
|
||||
{
|
||||
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" ".12"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/machines/lab_loop1.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" ".4"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/machines/combine_shield_loop3.wav"
|
||||
"position" "0"
|
||||
// tele snd
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" ".3"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/atmosphere/noise2.wav"
|
||||
"position" "0"
|
||||
// tele snd
|
||||
}
|
||||
|
||||
"playrandom"
|
||||
{
|
||||
"time" "8, 15"
|
||||
"volume" "0.3,0.5"
|
||||
"pitch" "100"
|
||||
"soundlevel" "SNDLVL_NORM"
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "npc/headcrab/alert1.wav"
|
||||
"wave" "npc/headcrab/idle1.wav"
|
||||
"wave" "npc/headcrab/idle2.wav"
|
||||
"wave" "npc/headcrab/idle3.wav"
|
||||
|
||||
|
||||
}
|
||||
"position" "1"
|
||||
// lamarr
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"under_boiler"
|
||||
{
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.2"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/atmosphere/ambience5.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.07"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/atmosphere/underground.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.06"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/machines/thumper_amb.wav"
|
||||
}
|
||||
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" ".08"
|
||||
"pitch" "85"
|
||||
"wave" "ambient/gas/steam_loop1.wav"
|
||||
"position" "1"
|
||||
// Steam pipe
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"under_tunnels"
|
||||
{
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.1"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/atmosphere/cargo_hold2.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.2"
|
||||
"pitch" "80"
|
||||
"wave" "ambient/wind/wind_tunnel1.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" ".08"
|
||||
"pitch" "85"
|
||||
"wave" "ambient/gas/steam_loop1.wav"
|
||||
"position" "0"
|
||||
// Steam pipe
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
"under_basement1"
|
||||
{
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.07"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/atmosphere/cargo_hold2.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.2"
|
||||
"pitch" "80"
|
||||
"wave" "ambient/wind/wind_tunnel1.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.15"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/wind/wasteland_wind.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.1"
|
||||
"pitch" "90"
|
||||
"wave" "ambient/atmosphere/quiet_cellblock_amb.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" ".08"
|
||||
"pitch" "85"
|
||||
"wave" "ambient/gas/steam_loop1.wav"
|
||||
"position" "0"
|
||||
// Steam pipe
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
"combine_tunnel"
|
||||
{
|
||||
|
||||
"dsp" "1"
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.3"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/levels/citadel/citadel_drone_loop6.wav"
|
||||
}
|
||||
|
||||
|
||||
|
||||
"playrandom"
|
||||
{
|
||||
"time" "8, 30"
|
||||
"volume" "0.05,0.1"
|
||||
"pitch" "90,110"
|
||||
"soundlevel" "SNDLVL_140dB"
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "ambient/levels/citadel/strange_talk1.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk3.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk4.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk5.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk6.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk7.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk8.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk9.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk10.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk11.wav"
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
"playrandom"
|
||||
{
|
||||
"time" "20, 35"
|
||||
"volume" "0.08,0.15"
|
||||
"pitch" "90,110"
|
||||
"soundlevel" "SNDLVL_140dB"
|
||||
"position" "0"
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "npc/combine_soldier/vo/weaponsoffsafeprepforcontact.wav"
|
||||
"wave" "npc/combine_soldier/vo/teamdeployedandscanning.wav"
|
||||
"wave" "npc/combine_soldier/vo/unitismovingin.wav"
|
||||
"wave" "npc/combine_soldier/vo/sweepingin.wav"
|
||||
"wave" "npc/combine_soldier/vo/targetcompromisedmovein.wav"
|
||||
"wave" "npc/combine_soldier/vo/stabilizationteamhassector.wav"
|
||||
"wave" "npc/combine_soldier/vo/overwatchrequestreinforcement.wav"
|
||||
"wave" "npc/combine_soldier/vo/overwatchtarget1sterilized.wav"
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
"playrandom"
|
||||
{
|
||||
"time" "45, 120"
|
||||
"volume" "0.01,0.1"
|
||||
"pitch" "90,115"
|
||||
"soundlevel" "SNDLVL_140dB"
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "*ambient/levels/citadel/citadel_ambient_voices1.wav"
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.08"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/atmosphere/underground.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.25"
|
||||
"pitch" "80"
|
||||
"wave" "ambient/wind/wind_tunnel1.wav"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"labs_mp"
|
||||
{
|
||||
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" ".12"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/machines/lab_loop1.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" ".4"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/machines/combine_shield_loop3.wav"
|
||||
"position" "0"
|
||||
// tele snd
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" ".3"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/atmosphere/noise2.wav"
|
||||
"position" "0"
|
||||
// tele snd
|
||||
}
|
||||
|
||||
"playrandom"
|
||||
{
|
||||
"time" "8, 15"
|
||||
"volume" "0.3,0.5"
|
||||
"pitch" "100"
|
||||
"soundlevel" "SNDLVL_NORM"
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "npc/headcrab/alert1.wav"
|
||||
"wave" "npc/headcrab/idle1.wav"
|
||||
"wave" "npc/headcrab/idle2.wav"
|
||||
"wave" "npc/headcrab/idle3.wav"
|
||||
|
||||
|
||||
}
|
||||
"position" "1"
|
||||
// lamarr
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"under_boiler"
|
||||
{
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.2"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/atmosphere/ambience5.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.07"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/atmosphere/underground.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.06"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/machines/thumper_amb.wav"
|
||||
}
|
||||
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" ".08"
|
||||
"pitch" "85"
|
||||
"wave" "ambient/gas/steam_loop1.wav"
|
||||
"position" "1"
|
||||
// Steam pipe
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"under_tunnels"
|
||||
{
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.1"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/atmosphere/cargo_hold2.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.2"
|
||||
"pitch" "80"
|
||||
"wave" "ambient/wind/wind_tunnel1.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" ".08"
|
||||
"pitch" "85"
|
||||
"wave" "ambient/gas/steam_loop1.wav"
|
||||
"position" "0"
|
||||
// Steam pipe
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
"under_basement1"
|
||||
{
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.07"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/atmosphere/cargo_hold2.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.2"
|
||||
"pitch" "80"
|
||||
"wave" "ambient/wind/wind_tunnel1.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.15"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/wind/wasteland_wind.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.1"
|
||||
"pitch" "90"
|
||||
"wave" "ambient/atmosphere/quiet_cellblock_amb.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" ".08"
|
||||
"pitch" "85"
|
||||
"wave" "ambient/gas/steam_loop1.wav"
|
||||
"position" "0"
|
||||
// Steam pipe
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
"combine_tunnel"
|
||||
{
|
||||
|
||||
"dsp" "1"
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.3"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/levels/citadel/citadel_drone_loop6.wav"
|
||||
}
|
||||
|
||||
|
||||
|
||||
"playrandom"
|
||||
{
|
||||
"time" "8, 30"
|
||||
"volume" "0.05,0.1"
|
||||
"pitch" "90,110"
|
||||
"soundlevel" "SNDLVL_140dB"
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "ambient/levels/citadel/strange_talk1.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk3.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk4.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk5.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk6.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk7.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk8.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk9.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk10.wav"
|
||||
"wave" "ambient/levels/citadel/strange_talk11.wav"
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
"playrandom"
|
||||
{
|
||||
"time" "20, 35"
|
||||
"volume" "0.08,0.15"
|
||||
"pitch" "90,110"
|
||||
"soundlevel" "SNDLVL_140dB"
|
||||
"position" "0"
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "npc/combine_soldier/vo/weaponsoffsafeprepforcontact.wav"
|
||||
"wave" "npc/combine_soldier/vo/teamdeployedandscanning.wav"
|
||||
"wave" "npc/combine_soldier/vo/unitismovingin.wav"
|
||||
"wave" "npc/combine_soldier/vo/sweepingin.wav"
|
||||
"wave" "npc/combine_soldier/vo/targetcompromisedmovein.wav"
|
||||
"wave" "npc/combine_soldier/vo/stabilizationteamhassector.wav"
|
||||
"wave" "npc/combine_soldier/vo/overwatchrequestreinforcement.wav"
|
||||
"wave" "npc/combine_soldier/vo/overwatchtarget1sterilized.wav"
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
"playrandom"
|
||||
{
|
||||
"time" "45, 120"
|
||||
"volume" "0.01,0.1"
|
||||
"pitch" "90,115"
|
||||
"soundlevel" "SNDLVL_140dB"
|
||||
"rndwave"
|
||||
{
|
||||
"wave" "*ambient/levels/citadel/citadel_ambient_voices1.wav"
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.08"
|
||||
"pitch" "100"
|
||||
"wave" "ambient/atmosphere/underground.wav"
|
||||
}
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.25"
|
||||
"pitch" "80"
|
||||
"wave" "ambient/wind/wind_tunnel1.wav"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,18 +1,18 @@
|
||||
soundscaples_manifest
|
||||
{
|
||||
"file" "scripts/soundscapes.txt"
|
||||
|
||||
// List additional soundscape files here
|
||||
|
||||
"file" "scripts/soundscapes_canals.txt"
|
||||
"file" "scripts/soundscapes_klab.txt"
|
||||
"file" "scripts/soundscapes_elab.txt"
|
||||
"file" "scripts/soundscapes_streetwar.txt"
|
||||
"file" "scripts/soundscapes_citadel.txt"
|
||||
"file" "scripts/soundscapes_town.txt"
|
||||
"file" "scripts/soundscapes_coast.txt"
|
||||
"file" "scripts/soundscapes_prison.txt"
|
||||
"file" "scripts/soundscapes_trainyard.txt"
|
||||
"file" "scripts/soundscapes_labs.txt"
|
||||
"file" "scripts/soundscapes_strike.txt"
|
||||
soundscaples_manifest
|
||||
{
|
||||
"file" "scripts/soundscapes.txt"
|
||||
|
||||
// List additional soundscape files here
|
||||
|
||||
"file" "scripts/soundscapes_canals.txt"
|
||||
"file" "scripts/soundscapes_klab.txt"
|
||||
"file" "scripts/soundscapes_elab.txt"
|
||||
"file" "scripts/soundscapes_streetwar.txt"
|
||||
"file" "scripts/soundscapes_citadel.txt"
|
||||
"file" "scripts/soundscapes_town.txt"
|
||||
"file" "scripts/soundscapes_coast.txt"
|
||||
"file" "scripts/soundscapes_prison.txt"
|
||||
"file" "scripts/soundscapes_trainyard.txt"
|
||||
"file" "scripts/soundscapes_labs.txt"
|
||||
"file" "scripts/soundscapes_strike.txt"
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,53 +1,53 @@
|
||||
"strike_ware"
|
||||
{
|
||||
"dsp" "1"
|
||||
// The ambient sounds of the warehouse
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.1"
|
||||
"pitch" "100"
|
||||
"soundlevel" "SNDLVL_90dB"
|
||||
"wave" "ambient/atmosphere/ambience_base.wav"
|
||||
}
|
||||
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.15"
|
||||
"wave" "ambient/atmosphere/indoor2.wav"
|
||||
"pitch" "100"
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
"strike_outside"
|
||||
{
|
||||
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.25"
|
||||
"wave" "ambient/wind/wind1.wav"
|
||||
"pitch" "100"
|
||||
}
|
||||
|
||||
|
||||
"playsoundscape"
|
||||
{
|
||||
"name" "d1_canals.util_tunnel_windgusts"
|
||||
"volume" "0.7"
|
||||
}
|
||||
|
||||
"playsoundscape"
|
||||
{
|
||||
"name" "d1_canals.util_birds"
|
||||
"volume" "0.25"
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
"strike_ware"
|
||||
{
|
||||
"dsp" "1"
|
||||
// The ambient sounds of the warehouse
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.1"
|
||||
"pitch" "100"
|
||||
"soundlevel" "SNDLVL_90dB"
|
||||
"wave" "ambient/atmosphere/ambience_base.wav"
|
||||
}
|
||||
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.15"
|
||||
"wave" "ambient/atmosphere/indoor2.wav"
|
||||
"pitch" "100"
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
"strike_outside"
|
||||
{
|
||||
|
||||
|
||||
"playlooping"
|
||||
{
|
||||
"volume" "0.25"
|
||||
"wave" "ambient/wind/wind1.wav"
|
||||
"pitch" "100"
|
||||
}
|
||||
|
||||
|
||||
"playsoundscape"
|
||||
{
|
||||
"name" "d1_canals.util_tunnel_windgusts"
|
||||
"volume" "0.7"
|
||||
}
|
||||
|
||||
"playsoundscape"
|
||||
{
|
||||
"name" "d1_canals.util_birds"
|
||||
"volume" "0.25"
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,62 +1,62 @@
|
||||
// 357
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_357Handgun"
|
||||
"viewmodel" "models/weapons/v_357.mdl"
|
||||
"playermodel" "models/weapons/w_357.mdl"
|
||||
"anim_prefix" "python"
|
||||
"bucket" "1"
|
||||
"bucket_position" "1"
|
||||
|
||||
"clip_size" "6"
|
||||
"default_clip" "6"
|
||||
"primary_ammo" "357"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "7"
|
||||
"item_flags" "0"
|
||||
|
||||
"damage" "75"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
"empty" "Weapon_Pistol.Empty"
|
||||
"single_shot" "Weapon_357.Single"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "e"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "e"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "q"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
// 357
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_357Handgun"
|
||||
"viewmodel" "models/weapons/v_357.mdl"
|
||||
"playermodel" "models/weapons/w_357.mdl"
|
||||
"anim_prefix" "python"
|
||||
"bucket" "1"
|
||||
"bucket_position" "1"
|
||||
|
||||
"clip_size" "6"
|
||||
"default_clip" "6"
|
||||
"primary_ammo" "357"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "7"
|
||||
"item_flags" "0"
|
||||
|
||||
"damage" "75"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
"empty" "Weapon_Pistol.Empty"
|
||||
"single_shot" "Weapon_357.Single"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "e"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "e"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "q"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,78 +1,78 @@
|
||||
// Assault Rifle 2
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_Pulse_Rifle"
|
||||
"viewmodel" "models/weapons/v_irifle.mdl"
|
||||
"playermodel" "models/weapons/w_irifle.mdl"
|
||||
"anim_prefix" "ar2"
|
||||
"bucket" "2"
|
||||
"bucket_position" "1"
|
||||
|
||||
"clip_size" "30"
|
||||
"default_clip" "60"
|
||||
|
||||
"clip2_size" "-1"
|
||||
"default_clip2" "-1"
|
||||
|
||||
"primary_ammo" "AR2"
|
||||
"secondary_ammo" "AR2AltFire"
|
||||
|
||||
"weight" "5"
|
||||
"item_flags" "0"
|
||||
"damage" "11"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
"special1" "Weapon_CombineGuard.Special1"
|
||||
"empty" "Weapon_IRifle.Empty"
|
||||
"double_shot" "Weapon_IRifle.Single"
|
||||
"reload" "Weapon_AR2.Reload"
|
||||
"single_shot" "Weapon_AR2.Single"
|
||||
|
||||
// NPC SECTION
|
||||
"single_shot_npc" "Weapon_AR2.NPC_Single"
|
||||
"reload_npc" "Weapon_AR2.NPC_Reload"
|
||||
"double_shot_npc" "Weapon_AR2.NPC_Double"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "l"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "l"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "u"
|
||||
}
|
||||
"ammo2"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "z"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
// Assault Rifle 2
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_Pulse_Rifle"
|
||||
"viewmodel" "models/weapons/v_irifle.mdl"
|
||||
"playermodel" "models/weapons/w_irifle.mdl"
|
||||
"anim_prefix" "ar2"
|
||||
"bucket" "2"
|
||||
"bucket_position" "1"
|
||||
|
||||
"clip_size" "30"
|
||||
"default_clip" "60"
|
||||
|
||||
"clip2_size" "-1"
|
||||
"default_clip2" "-1"
|
||||
|
||||
"primary_ammo" "AR2"
|
||||
"secondary_ammo" "AR2AltFire"
|
||||
|
||||
"weight" "5"
|
||||
"item_flags" "0"
|
||||
"damage" "11"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
"special1" "Weapon_CombineGuard.Special1"
|
||||
"empty" "Weapon_IRifle.Empty"
|
||||
"double_shot" "Weapon_IRifle.Single"
|
||||
"reload" "Weapon_AR2.Reload"
|
||||
"single_shot" "Weapon_AR2.Single"
|
||||
|
||||
// NPC SECTION
|
||||
"single_shot_npc" "Weapon_AR2.NPC_Single"
|
||||
"reload_npc" "Weapon_AR2.NPC_Reload"
|
||||
"double_shot_npc" "Weapon_AR2.NPC_Double"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "l"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "l"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "u"
|
||||
}
|
||||
"ammo2"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "z"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,77 +1,77 @@
|
||||
// Crossbow
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_Crossbow"
|
||||
"viewmodel" "models/weapons/v_crossbow.mdl"
|
||||
"playermodel" "models/weapons/w_crossbow.mdl"
|
||||
"anim_prefix" "bow"
|
||||
"bucket" "3"
|
||||
"bucket_position" "1"
|
||||
|
||||
"clip_size" "1"
|
||||
"default_clip" "5"
|
||||
"primary_ammo" "XBowBolt"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "6"
|
||||
"item_flags" "0"
|
||||
|
||||
"damage" "100"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
"single_shot" "Weapon_Crossbow.Single"
|
||||
"reload" "Weapon_Crossbow.Reload"
|
||||
"special1" "Weapon_Crossbow.BoltElectrify"
|
||||
"special2" "Weapon_Crossbow.BoltFly"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "g"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "g"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "w"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "96"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
"zoom"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"zoom_autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "24"
|
||||
"y" "112"
|
||||
"width" "104"
|
||||
"height" "16"
|
||||
}
|
||||
}
|
||||
// Crossbow
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_Crossbow"
|
||||
"viewmodel" "models/weapons/v_crossbow.mdl"
|
||||
"playermodel" "models/weapons/w_crossbow.mdl"
|
||||
"anim_prefix" "bow"
|
||||
"bucket" "3"
|
||||
"bucket_position" "1"
|
||||
|
||||
"clip_size" "1"
|
||||
"default_clip" "5"
|
||||
"primary_ammo" "XBowBolt"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "6"
|
||||
"item_flags" "0"
|
||||
|
||||
"damage" "100"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
"single_shot" "Weapon_Crossbow.Single"
|
||||
"reload" "Weapon_Crossbow.Reload"
|
||||
"special1" "Weapon_Crossbow.BoltElectrify"
|
||||
"special2" "Weapon_Crossbow.BoltFly"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "g"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "g"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "w"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "96"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
"zoom"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"zoom_autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "24"
|
||||
"y" "112"
|
||||
"width" "104"
|
||||
"height" "16"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,68 +1,68 @@
|
||||
// Crowbar
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_Crowbar"
|
||||
"viewmodel" "models/weapons/v_crowbar.mdl"
|
||||
"playermodel" "models/weapons/w_crowbar.mdl"
|
||||
"anim_prefix" "crowbar"
|
||||
"bucket" "0"
|
||||
"bucket_position" "0"
|
||||
|
||||
"clip_size" "-1"
|
||||
"primary_ammo" "None"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "0"
|
||||
"item_flags" "0"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
"single_shot" "Weapon_Crowbar.Single"
|
||||
"melee_hit" "Weapon_Crowbar.Melee_Hit"
|
||||
"melee_hit_world" "Weapon_Crowbar.Melee_HitWorld"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "c"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "c"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "c"
|
||||
}
|
||||
"ammo2"
|
||||
{
|
||||
"file" "sprites/640hud7"
|
||||
"x" "48"
|
||||
"y" "72"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
// Crowbar
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_Crowbar"
|
||||
"viewmodel" "models/weapons/v_crowbar.mdl"
|
||||
"playermodel" "models/weapons/w_crowbar.mdl"
|
||||
"anim_prefix" "crowbar"
|
||||
"bucket" "0"
|
||||
"bucket_position" "0"
|
||||
|
||||
"clip_size" "-1"
|
||||
"primary_ammo" "None"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "0"
|
||||
"item_flags" "0"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
"single_shot" "Weapon_Crowbar.Single"
|
||||
"melee_hit" "Weapon_Crowbar.Melee_Hit"
|
||||
"melee_hit_world" "Weapon_Crowbar.Melee_HitWorld"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "c"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "c"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "c"
|
||||
}
|
||||
"ammo2"
|
||||
{
|
||||
"file" "sprites/640hud7"
|
||||
"x" "48"
|
||||
"y" "72"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,69 +1,69 @@
|
||||
// Cubemap visualization tool
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_Cubemap"
|
||||
"viewmodel" "models/shadertest/envballs.mdl"
|
||||
"playermodel" "models/shadertest/envballs.mdl"
|
||||
"anim_prefix" "envballs"
|
||||
"bucket" "2"
|
||||
"bucket_position" "2"
|
||||
|
||||
"clip_size" "-1"
|
||||
"clip2_size" "-1"
|
||||
|
||||
"default_clip" "-1"
|
||||
"default_clip2" "-1"
|
||||
|
||||
"primary_ammo" "None"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "0"
|
||||
"item_flags" "0"
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"file" "sprites/w_icons1"
|
||||
"x" "128"
|
||||
"y" "128"
|
||||
"width" "128"
|
||||
"height" "64"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"file" "sprites/w_icons1b"
|
||||
"x" "128"
|
||||
"y" "128"
|
||||
"width" "128"
|
||||
"height" "64"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"file" "sprites/a_icons1"
|
||||
"x" "55"
|
||||
"y" "60"
|
||||
"width" "73"
|
||||
"height" "15"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
// Cubemap visualization tool
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_Cubemap"
|
||||
"viewmodel" "models/shadertest/envballs.mdl"
|
||||
"playermodel" "models/shadertest/envballs.mdl"
|
||||
"anim_prefix" "envballs"
|
||||
"bucket" "2"
|
||||
"bucket_position" "2"
|
||||
|
||||
"clip_size" "-1"
|
||||
"clip2_size" "-1"
|
||||
|
||||
"default_clip" "-1"
|
||||
"default_clip2" "-1"
|
||||
|
||||
"primary_ammo" "None"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "0"
|
||||
"item_flags" "0"
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"file" "sprites/w_icons1"
|
||||
"x" "128"
|
||||
"y" "128"
|
||||
"width" "128"
|
||||
"height" "64"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"file" "sprites/w_icons1b"
|
||||
"x" "128"
|
||||
"y" "128"
|
||||
"width" "128"
|
||||
"height" "64"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"file" "sprites/a_icons1"
|
||||
"x" "55"
|
||||
"y" "60"
|
||||
"width" "73"
|
||||
"height" "15"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,63 +1,63 @@
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_Grenade"
|
||||
"viewmodel" "models/weapons/v_grenade.mdl"
|
||||
"playermodel" "models/weapons/w_grenade.mdl"
|
||||
"anim_prefix" "Grenade"
|
||||
"bucket" "4"
|
||||
"bucket_position" "0"
|
||||
|
||||
"clip_size" "-1"
|
||||
"clip2_size" "-1"
|
||||
"default_clip" "1"
|
||||
"default_clip2" "-1"
|
||||
|
||||
"primary_ammo" "grenade"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "1"
|
||||
"item_flags" "18" // ITEM_FLAG_NOAUTORELOAD | ITEM_FLAG_EXHAUSTIBLE
|
||||
"damage" "150"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
"special1" "WeaponFrag.Roll"
|
||||
"double_shot" "common/null.wav"
|
||||
"single_shot" "common/null.wav"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "k"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "k"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "v"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "48"
|
||||
"y" "72"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_Grenade"
|
||||
"viewmodel" "models/weapons/v_grenade.mdl"
|
||||
"playermodel" "models/weapons/w_grenade.mdl"
|
||||
"anim_prefix" "Grenade"
|
||||
"bucket" "4"
|
||||
"bucket_position" "0"
|
||||
|
||||
"clip_size" "-1"
|
||||
"clip2_size" "-1"
|
||||
"default_clip" "1"
|
||||
"default_clip2" "-1"
|
||||
|
||||
"primary_ammo" "grenade"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "1"
|
||||
"item_flags" "18" // ITEM_FLAG_NOAUTORELOAD | ITEM_FLAG_EXHAUSTIBLE
|
||||
"damage" "150"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
"special1" "WeaponFrag.Roll"
|
||||
"double_shot" "common/null.wav"
|
||||
"single_shot" "common/null.wav"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "k"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "k"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "v"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "48"
|
||||
"y" "72"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,78 +1,78 @@
|
||||
// Physics Gun
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_GravityGun"
|
||||
"viewmodel" "models/weapons/v_physcannon.mdl"
|
||||
"playermodel" "models/weapons/w_Physics.mdl"
|
||||
"anim_prefix" "gauss"
|
||||
"bucket" "0"
|
||||
"bucket_position" "2"
|
||||
"clip_size" "0"
|
||||
"clip2_size" "0"
|
||||
"primary_ammo" "None"
|
||||
"secondary_ammo" "None"
|
||||
"default_clip" "0"
|
||||
"default_clip2" "0"
|
||||
"weight" "0"
|
||||
"autoswitchto" "0"
|
||||
"autoswitchfrom" "0"
|
||||
"item_flags" "2"
|
||||
|
||||
SoundData
|
||||
{
|
||||
// launch held object
|
||||
"single_shot" "Weapon_PhysCannon.Launch"
|
||||
// Ignore?
|
||||
"reload" "Weapon_PhysCannon.Charge"
|
||||
// dry fire - no target
|
||||
"empty" "Weapon_PhysCannon.DryFire"
|
||||
// pick up object
|
||||
"special1" "Weapon_PhysCannon.Pickup"
|
||||
// open claws, target object
|
||||
"special2" "Weapon_PhysCannon.OpenClaws"
|
||||
// close claws, target out of range/invalid
|
||||
"melee_hit" "Weapon_PhysCannon.CloseClaws"
|
||||
// drop object
|
||||
"melee_miss" "Weapon_PhysCannon.Drop"
|
||||
// too heavy
|
||||
"special3" "Weapon_PhysCannon.TooHeavy"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "m"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "m"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"file" "sprites/a_icons1"
|
||||
"x" "0"
|
||||
"y" "0"
|
||||
"width" "32"
|
||||
"height" "32"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "48"
|
||||
"y" "72"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
// Physics Gun
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_GravityGun"
|
||||
"viewmodel" "models/weapons/v_physcannon.mdl"
|
||||
"playermodel" "models/weapons/w_Physics.mdl"
|
||||
"anim_prefix" "gauss"
|
||||
"bucket" "0"
|
||||
"bucket_position" "2"
|
||||
"clip_size" "0"
|
||||
"clip2_size" "0"
|
||||
"primary_ammo" "None"
|
||||
"secondary_ammo" "None"
|
||||
"default_clip" "0"
|
||||
"default_clip2" "0"
|
||||
"weight" "0"
|
||||
"autoswitchto" "0"
|
||||
"autoswitchfrom" "0"
|
||||
"item_flags" "2"
|
||||
|
||||
SoundData
|
||||
{
|
||||
// launch held object
|
||||
"single_shot" "Weapon_PhysCannon.Launch"
|
||||
// Ignore?
|
||||
"reload" "Weapon_PhysCannon.Charge"
|
||||
// dry fire - no target
|
||||
"empty" "Weapon_PhysCannon.DryFire"
|
||||
// pick up object
|
||||
"special1" "Weapon_PhysCannon.Pickup"
|
||||
// open claws, target object
|
||||
"special2" "Weapon_PhysCannon.OpenClaws"
|
||||
// close claws, target out of range/invalid
|
||||
"melee_hit" "Weapon_PhysCannon.CloseClaws"
|
||||
// drop object
|
||||
"melee_miss" "Weapon_PhysCannon.Drop"
|
||||
// too heavy
|
||||
"special3" "Weapon_PhysCannon.TooHeavy"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "m"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "m"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"file" "sprites/a_icons1"
|
||||
"x" "0"
|
||||
"y" "0"
|
||||
"width" "32"
|
||||
"height" "32"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "48"
|
||||
"y" "72"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,67 +1,67 @@
|
||||
// Pistol
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_Pistol"
|
||||
"viewmodel" "models/weapons/v_pistol.mdl"
|
||||
"playermodel" "models/weapons/w_pistol.mdl"
|
||||
"anim_prefix" "pistol"
|
||||
"bucket" "1"
|
||||
"bucket_position" "0"
|
||||
|
||||
"clip_size" "18"
|
||||
"primary_ammo" "Pistol"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "2"
|
||||
"item_flags" "0"
|
||||
"damage" "8"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
|
||||
"reload" "Weapon_Pistol.Reload"
|
||||
"reload_npc" "Weapon_Pistol.NPC_Reload"
|
||||
"empty" "Weapon_Pistol.Empty"
|
||||
"single_shot" "Weapon_Pistol.Single"
|
||||
"single_shot_npc" "Weapon_Pistol.NPC_Single"
|
||||
"special1" "Weapon_Pistol.Special1"
|
||||
"special2" "Weapon_Pistol.Special2"
|
||||
"burst" "Weapon_Pistol.Burst"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "d"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "d"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "p"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
// Pistol
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_Pistol"
|
||||
"viewmodel" "models/weapons/v_pistol.mdl"
|
||||
"playermodel" "models/weapons/w_pistol.mdl"
|
||||
"anim_prefix" "pistol"
|
||||
"bucket" "1"
|
||||
"bucket_position" "0"
|
||||
|
||||
"clip_size" "18"
|
||||
"primary_ammo" "Pistol"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "2"
|
||||
"item_flags" "0"
|
||||
"damage" "8"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
|
||||
"reload" "Weapon_Pistol.Reload"
|
||||
"reload_npc" "Weapon_Pistol.NPC_Reload"
|
||||
"empty" "Weapon_Pistol.Empty"
|
||||
"single_shot" "Weapon_Pistol.Single"
|
||||
"single_shot_npc" "Weapon_Pistol.NPC_Single"
|
||||
"special1" "Weapon_Pistol.Special1"
|
||||
"special2" "Weapon_Pistol.Special2"
|
||||
"burst" "Weapon_Pistol.Burst"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "d"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "d"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "p"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,70 +1,70 @@
|
||||
// Missile Launcher
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_RPG"
|
||||
"viewmodel" "models/weapons/v_rpg.mdl"
|
||||
"playermodel" "models/weapons/w_rocket_launcher.mdl"
|
||||
"anim_prefix" "missile launcher"
|
||||
"bucket" "4"
|
||||
"bucket_position" "1"
|
||||
"autoswitchfrom" "1"
|
||||
|
||||
"clip_size" "-1"
|
||||
"clip2_size" "-1"
|
||||
"default_clip" "3"
|
||||
"default_clip2" "-1"
|
||||
|
||||
"primary_ammo" "rpg_round"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "0"
|
||||
"item_flags" "0"
|
||||
"damage" "150"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
"single_shot" "Weapon_RPG.Single"
|
||||
"single_shot_npc" "Weapon_RPG.NPC_Single"
|
||||
//Laser on
|
||||
"special1" "Weapon_RPG.LaserOn"
|
||||
//Laser off
|
||||
"special2" "Weapon_RPG.LaserOff"
|
||||
"empty" "Weapon_SMG1.Empty"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "i"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "i"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "x"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "48"
|
||||
"y" "72"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
// Missile Launcher
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_RPG"
|
||||
"viewmodel" "models/weapons/v_rpg.mdl"
|
||||
"playermodel" "models/weapons/w_rocket_launcher.mdl"
|
||||
"anim_prefix" "missile launcher"
|
||||
"bucket" "4"
|
||||
"bucket_position" "1"
|
||||
"autoswitchfrom" "1"
|
||||
|
||||
"clip_size" "-1"
|
||||
"clip2_size" "-1"
|
||||
"default_clip" "3"
|
||||
"default_clip2" "-1"
|
||||
|
||||
"primary_ammo" "rpg_round"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "0"
|
||||
"item_flags" "0"
|
||||
"damage" "150"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
"single_shot" "Weapon_RPG.Single"
|
||||
"single_shot_npc" "Weapon_RPG.NPC_Single"
|
||||
//Laser on
|
||||
"special1" "Weapon_RPG.LaserOn"
|
||||
//Laser off
|
||||
"special2" "Weapon_RPG.LaserOff"
|
||||
"empty" "Weapon_SMG1.Empty"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "i"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "i"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "x"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "48"
|
||||
"y" "72"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,67 +1,67 @@
|
||||
// Shotgun
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_Shotgun"
|
||||
"viewmodel" "models/weapons/v_shotgun.mdl"
|
||||
"playermodel" "models/weapons/w_shotgun.mdl"
|
||||
"anim_prefix" "shotgun"
|
||||
"bucket" "3"
|
||||
"bucket_position" "0"
|
||||
|
||||
"clip_size" "6"
|
||||
"primary_ammo" "Buckshot"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "4"
|
||||
"item_flags" "0"
|
||||
"damage" "9"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
|
||||
"empty" "Weapon_Shotgun.Empty"
|
||||
"reload" "Weapon_Shotgun.Reload"
|
||||
"special1" "Weapon_Shotgun.Special1"
|
||||
"single_shot" "Weapon_Shotgun.Single"
|
||||
"double_shot" "Weapon_Shotgun.Double"
|
||||
// NPC WEAPON SOUNDS
|
||||
"reload_npc" "Weapon_Shotgun.NPC_Reload"
|
||||
"single_shot_npc" "Weapon_Shotgun.NPC_Single"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "b"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "b"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "s"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
// Shotgun
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_Shotgun"
|
||||
"viewmodel" "models/weapons/v_shotgun.mdl"
|
||||
"playermodel" "models/weapons/w_shotgun.mdl"
|
||||
"anim_prefix" "shotgun"
|
||||
"bucket" "3"
|
||||
"bucket_position" "0"
|
||||
|
||||
"clip_size" "6"
|
||||
"primary_ammo" "Buckshot"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "4"
|
||||
"item_flags" "0"
|
||||
"damage" "9"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
|
||||
"empty" "Weapon_Shotgun.Empty"
|
||||
"reload" "Weapon_Shotgun.Reload"
|
||||
"special1" "Weapon_Shotgun.Special1"
|
||||
"single_shot" "Weapon_Shotgun.Single"
|
||||
"double_shot" "Weapon_Shotgun.Double"
|
||||
// NPC WEAPON SOUNDS
|
||||
"reload_npc" "Weapon_Shotgun.NPC_Reload"
|
||||
"single_shot_npc" "Weapon_Shotgun.NPC_Single"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "b"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "b"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "s"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,56 +1,56 @@
|
||||
// Slam
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_SLAM"
|
||||
"viewmodel" "models/weapons/v_slam.mdl"
|
||||
"playermodel" "models/weapons/w_slam.mdl"
|
||||
"anim_prefix" "slam"
|
||||
"bucket" "4"
|
||||
"bucket_position" "2"
|
||||
|
||||
"clip_size" "3"
|
||||
"primary_ammo" "None"
|
||||
"secondary_ammo" "slam"
|
||||
"default_clip2" "3"
|
||||
|
||||
"weight" "1"
|
||||
"item_flags" "2"
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "o"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "o"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "o"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "48"
|
||||
"y" "72"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
// Slam
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_SLAM"
|
||||
"viewmodel" "models/weapons/v_slam.mdl"
|
||||
"playermodel" "models/weapons/w_slam.mdl"
|
||||
"anim_prefix" "slam"
|
||||
"bucket" "4"
|
||||
"bucket_position" "2"
|
||||
|
||||
"clip_size" "3"
|
||||
"primary_ammo" "None"
|
||||
"secondary_ammo" "slam"
|
||||
"default_clip2" "3"
|
||||
|
||||
"weight" "1"
|
||||
"item_flags" "2"
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "o"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "o"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "o"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "48"
|
||||
"y" "72"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,77 +1,77 @@
|
||||
// Small Machine Gun 1
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_SMG1"
|
||||
"viewmodel" "models/weapons/v_smg1.mdl"
|
||||
"playermodel" "models/weapons/w_smg1.mdl" //FIXME:
|
||||
"anim_prefix" "smg2"
|
||||
"bucket" "2"
|
||||
"bucket_position" "0"
|
||||
|
||||
"clip_size" "45"
|
||||
"clip2_size" "-1"
|
||||
|
||||
"default_clip" "45"
|
||||
"default_clip2" "-1"
|
||||
|
||||
"primary_ammo" "SMG1"
|
||||
"secondary_ammo" "SMG1_Grenade"
|
||||
|
||||
"weight" "3"
|
||||
"item_flags" "0"
|
||||
"damage" "5"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
"reload" "Weapon_SMG1.Reload"
|
||||
"reload_npc" "Weapon_SMG1.NPC_Reload"
|
||||
"empty" "Weapon_SMG1.Empty"
|
||||
"single_shot" "Weapon_SMG1.Single"
|
||||
"single_shot_npc" "Weapon_SMG1.NPC_Single"
|
||||
"special1" "Weapon_SMG1.Special1"
|
||||
"special2" "Weapon_SMG1.Special2"
|
||||
"double_shot" "Weapon_SMG1.Double"
|
||||
"burst" "Weapon_SMG1.Burst"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "a"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "a"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "r"
|
||||
}
|
||||
"ammo2"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "t"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
// Small Machine Gun 1
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_SMG1"
|
||||
"viewmodel" "models/weapons/v_smg1.mdl"
|
||||
"playermodel" "models/weapons/w_smg1.mdl" //FIXME:
|
||||
"anim_prefix" "smg2"
|
||||
"bucket" "2"
|
||||
"bucket_position" "0"
|
||||
|
||||
"clip_size" "45"
|
||||
"clip2_size" "-1"
|
||||
|
||||
"default_clip" "45"
|
||||
"default_clip2" "-1"
|
||||
|
||||
"primary_ammo" "SMG1"
|
||||
"secondary_ammo" "SMG1_Grenade"
|
||||
|
||||
"weight" "3"
|
||||
"item_flags" "0"
|
||||
"damage" "5"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
"reload" "Weapon_SMG1.Reload"
|
||||
"reload_npc" "Weapon_SMG1.NPC_Reload"
|
||||
"empty" "Weapon_SMG1.Empty"
|
||||
"single_shot" "Weapon_SMG1.Single"
|
||||
"single_shot_npc" "Weapon_SMG1.NPC_Single"
|
||||
"special1" "Weapon_SMG1.Special1"
|
||||
"special2" "Weapon_SMG1.Special2"
|
||||
"double_shot" "Weapon_SMG1.Double"
|
||||
"burst" "Weapon_SMG1.Burst"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "a"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "a"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "r"
|
||||
}
|
||||
"ammo2"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "t"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"font" "Crosshairs"
|
||||
"character" "Q"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,73 +1,73 @@
|
||||
// stunstick
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_StunBaton"
|
||||
"viewmodel" "models/weapons/v_stunstick.mdl"
|
||||
"playermodel" "models/weapons/w_stunbaton.mdl"
|
||||
"anim_prefix" "stunbaton"
|
||||
"bucket" "0"
|
||||
"bucket_position" "1"
|
||||
|
||||
"clip_size" "-1"
|
||||
"primary_ammo" "None"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "0"
|
||||
"item_flags" "0"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
|
||||
"single_shot" "Weapon_StunStick.Swing"
|
||||
"melee_miss" "Weapon_StunStick.Melee_Miss"
|
||||
"melee_hit" "Weapon_StunStick.Melee_Hit"
|
||||
"melee_hit_world" "Weapon_StunStick.Melee_HitWorld"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "n"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "n"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "n"
|
||||
}
|
||||
"ammo2"
|
||||
{
|
||||
"file" "sprites/640hud7"
|
||||
"x" "48"
|
||||
"y" "72"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "48"
|
||||
"y" "72"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
// stunstick
|
||||
|
||||
WeaponData
|
||||
{
|
||||
// Weapon data is loaded by both the Game and Client DLLs.
|
||||
"printname" "#HL2_StunBaton"
|
||||
"viewmodel" "models/weapons/v_stunstick.mdl"
|
||||
"playermodel" "models/weapons/w_stunbaton.mdl"
|
||||
"anim_prefix" "stunbaton"
|
||||
"bucket" "0"
|
||||
"bucket_position" "1"
|
||||
|
||||
"clip_size" "-1"
|
||||
"primary_ammo" "None"
|
||||
"secondary_ammo" "None"
|
||||
|
||||
"weight" "0"
|
||||
"item_flags" "0"
|
||||
|
||||
// Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
|
||||
SoundData
|
||||
{
|
||||
|
||||
"single_shot" "Weapon_StunStick.Swing"
|
||||
"melee_miss" "Weapon_StunStick.Melee_Miss"
|
||||
"melee_hit" "Weapon_StunStick.Melee_Hit"
|
||||
"melee_hit_world" "Weapon_StunStick.Melee_HitWorld"
|
||||
}
|
||||
|
||||
// Weapon Sprite data is loaded by the Client DLL.
|
||||
TextureData
|
||||
{
|
||||
"weapon"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "n"
|
||||
}
|
||||
"weapon_s"
|
||||
{
|
||||
"font" "WeaponIconsSelected"
|
||||
"character" "n"
|
||||
}
|
||||
"ammo"
|
||||
{
|
||||
"font" "WeaponIcons"
|
||||
"character" "n"
|
||||
}
|
||||
"ammo2"
|
||||
{
|
||||
"file" "sprites/640hud7"
|
||||
"x" "48"
|
||||
"y" "72"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
"crosshair"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "0"
|
||||
"y" "48"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
"autoaim"
|
||||
{
|
||||
"file" "sprites/crosshairs"
|
||||
"x" "48"
|
||||
"y" "72"
|
||||
"width" "24"
|
||||
"height" "24"
|
||||
}
|
||||
}
|
||||
}
|
@ -1915,6 +1915,22 @@ int ByteswapMDLFile( void *pDestBase, void *pSrcBase, const int fileSize )
|
||||
SET_INDEX_POINTERS_FIXUP( pData, pLinearBone, qalignmentindex )
|
||||
WriteBuffer<float>( &pDataDest, &pDataSrc, 4*numBones );
|
||||
}
|
||||
|
||||
/** BONE FLEX DRIVERS **/
|
||||
if ( pStudioHdr2->m_nBoneFlexDriverIndex )
|
||||
{
|
||||
SET_INDEX_POINTERS_FIXUP( pData, pStudioHdr2, m_nBoneFlexDriverIndex )
|
||||
DECLARE_OBJECT_POINTERS( pBoneFlexDriver, pData, mstudioboneflexdriver_t )
|
||||
ITERATE_BLOCK( pBoneFlexDriver, pStudioHdr2->m_nBoneFlexDriverCount )
|
||||
{
|
||||
WriteObjects( pBoneFlexDriverDest, pBoneFlexDriverSrc );
|
||||
|
||||
/** BONE FLEX DRIVER CONTROLS **/
|
||||
|
||||
SET_INDEX_POINTERS_FIXUP( pData, pBoneFlexDriver, m_nControlIndex );
|
||||
WriteObjects< mstudioboneflexdrivercontrol_t >( &pDataDest, &pDataSrc, SrcNative( &pBoneFlexDriver->m_nControlCount ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2516,7 +2532,8 @@ BEGIN_BYTESWAP_DATADESC( studiohdr_t )
|
||||
DEFINE_INDEX( unused4, FIELD_INTEGER ),
|
||||
DEFINE_FIELD( numflexcontrollerui, FIELD_INTEGER ),
|
||||
DEFINE_INDEX( flexcontrolleruiindex, FIELD_INTEGER ),
|
||||
DEFINE_ARRAY( unused3, FIELD_INTEGER, 2 ),
|
||||
DEFINE_FIELD( flVertAnimFixedPointScale, FIELD_FLOAT ),
|
||||
DEFINE_ARRAY( unused3, FIELD_INTEGER, 1 ),
|
||||
DEFINE_INDEX( studiohdr2index, FIELD_INTEGER ),
|
||||
DEFINE_ARRAY( unused2, FIELD_INTEGER, 1 ),
|
||||
END_BYTESWAP_DATADESC()
|
||||
@ -2530,7 +2547,9 @@ BEGIN_BYTESWAP_DATADESC( studiohdr2_t )
|
||||
DEFINE_FIELD( flMaxEyeDeflection, FIELD_FLOAT ),
|
||||
DEFINE_INDEX( linearboneindex, FIELD_INTEGER ),
|
||||
DEFINE_INDEX( sznameindex, FIELD_INTEGER ),
|
||||
DEFINE_ARRAY( reserved, FIELD_INTEGER, 58 ),
|
||||
DEFINE_INDEX( m_nBoneFlexDriverCount, FIELD_INTEGER ),
|
||||
DEFINE_INDEX( m_nBoneFlexDriverIndex, FIELD_INTEGER ),
|
||||
DEFINE_ARRAY( reserved, FIELD_INTEGER, 56 ),
|
||||
END_BYTESWAP_DATADESC()
|
||||
|
||||
BEGIN_BYTESWAP_DATADESC( mstudiobone_t )
|
||||
@ -2567,6 +2586,20 @@ BEGIN_BYTESWAP_DATADESC( mstudiolinearbone_t )
|
||||
DEFINE_ARRAY( unused, FIELD_INTEGER, 6 ),
|
||||
END_BYTESWAP_DATADESC()
|
||||
|
||||
BEGIN_BYTESWAP_DATADESC( mstudioboneflexdrivercontrol_t )
|
||||
DEFINE_INDEX( m_nBoneComponent, FIELD_INTEGER ),
|
||||
DEFINE_FIELD( m_nFlexControllerIndex, FIELD_INTEGER ),
|
||||
DEFINE_INDEX( m_flMin, FIELD_FLOAT ),
|
||||
DEFINE_INDEX( m_flMax, FIELD_FLOAT ),
|
||||
END_BYTESWAP_DATADESC()
|
||||
|
||||
BEGIN_BYTESWAP_DATADESC( mstudioboneflexdriver_t )
|
||||
DEFINE_INDEX( m_nBoneIndex, FIELD_INTEGER ),
|
||||
DEFINE_FIELD( m_nControlCount, FIELD_INTEGER ),
|
||||
DEFINE_INDEX( m_nControlIndex, FIELD_FLOAT ),
|
||||
DEFINE_ARRAY( unused, FIELD_INTEGER, 3 ),
|
||||
END_BYTESWAP_DATADESC()
|
||||
|
||||
BEGIN_BYTESWAP_DATADESC( mstudioaxisinterpbone_t )
|
||||
DEFINE_FIELD( control, FIELD_INTEGER ),
|
||||
DEFINE_FIELD( axis, FIELD_INTEGER ),
|
||||
|
2
mp/src/createallprojects.bat
Normal file → Executable file
2
mp/src/createallprojects.bat
Normal file → Executable file
@ -1 +1 @@
|
||||
devtools\bin\vpc.exe /hl2mp +everything /mksln everything.sln
|
||||
devtools\bin\vpc.exe /hl2mp +everything /mksln everything.sln
|
||||
|
2
mp/src/creategameprojects.bat
Normal file → Executable file
2
mp/src/creategameprojects.bat
Normal file → Executable file
@ -1 +1 @@
|
||||
devtools\bin\vpc.exe /hl2mp +game /mksln games.sln
|
||||
devtools\bin\vpc.exe /hl2mp +game /mksln games.sln
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
0
mp/src/devtools/bin/vpccrccheck.exe
Normal file → Executable file
0
mp/src/devtools/bin/vpccrccheck.exe
Normal file → Executable file
@ -1,3 +1,3 @@
|
||||
#defines these macros so that we skip VSIGN and P4 steps in the SDK
|
||||
SOURCE_SDK=1
|
||||
VALVE_NO_AUTO_P4=1
|
||||
#defines these macros so that we skip VSIGN and P4 steps in the SDK
|
||||
SOURCE_SDK=1
|
||||
VALVE_NO_AUTO_P4=1
|
||||
|
@ -1,14 +1,14 @@
|
||||
{
|
||||
global: *;
|
||||
local:
|
||||
extern "C++" {
|
||||
*std::*;
|
||||
__cxxabi*;
|
||||
__gcc*;
|
||||
__gxx*;
|
||||
__gnu_cxx*;
|
||||
__cxa*;
|
||||
operator*;
|
||||
__dynamic_cast
|
||||
};
|
||||
};
|
||||
{
|
||||
global: *;
|
||||
local:
|
||||
extern "C++" {
|
||||
*std::*;
|
||||
__cxxabi*;
|
||||
__gcc*;
|
||||
__gxx*;
|
||||
__gnu_cxx*;
|
||||
__cxa*;
|
||||
operator*;
|
||||
__dynamic_cast
|
||||
};
|
||||
};
|
||||
|
Binary file not shown.
Binary file not shown.
@ -1013,7 +1013,9 @@ CStudioHdr *C_BaseAnimating::OnNewModel()
|
||||
{
|
||||
// XXX what's authoritative? the model pointer or the model index? what a mess.
|
||||
nNewIndex = modelinfo->GetModelIndex( modelinfo->GetModelName( GetModel() ) );
|
||||
Assert( modelinfo->GetModel( nNewIndex ) == GetModel() );
|
||||
Assert( nNewIndex < 0 || modelinfo->GetModel( nNewIndex ) == GetModel() );
|
||||
if ( nNewIndex < 0 )
|
||||
nNewIndex = m_nModelIndex;
|
||||
}
|
||||
|
||||
m_AutoRefModelIndex = nNewIndex;
|
||||
@ -5099,7 +5101,7 @@ void C_BaseAnimating::StudioFrameAdvance()
|
||||
|
||||
SetCycle( flNewCycle );
|
||||
|
||||
m_flGroundSpeed = GetSequenceGroundSpeed( hdr, GetSequence() );
|
||||
m_flGroundSpeed = GetSequenceGroundSpeed( hdr, GetSequence() ) * GetModelScale();
|
||||
|
||||
#if 0
|
||||
// I didn't have a test case for this, but it seems like the right thing to do. Check multi-player!
|
||||
@ -5289,7 +5291,7 @@ void C_BaseAnimating::ResetSequenceInfo( void )
|
||||
}
|
||||
|
||||
CStudioHdr *pStudioHdr = GetModelPtr();
|
||||
m_flGroundSpeed = GetSequenceGroundSpeed( pStudioHdr, GetSequence() );
|
||||
m_flGroundSpeed = GetSequenceGroundSpeed( pStudioHdr, GetSequence() ) * GetModelScale();
|
||||
m_bSequenceLoops = ((GetSequenceFlags( pStudioHdr, GetSequence() ) & STUDIO_LOOPING) != 0);
|
||||
// m_flAnimTime = gpGlobals->time;
|
||||
m_flPlaybackRate = 1.0;
|
||||
|
@ -894,7 +894,12 @@ C_BaseEntity::C_BaseEntity() :
|
||||
{
|
||||
AddVar( &m_vecOrigin, &m_iv_vecOrigin, LATCH_SIMULATION_VAR );
|
||||
AddVar( &m_angRotation, &m_iv_angRotation, LATCH_SIMULATION_VAR );
|
||||
AddVar( &m_vecVelocity, &m_iv_vecVelocity, LATCH_SIMULATION_VAR );
|
||||
// Removing this until we figure out why velocity introduces view hitching.
|
||||
// One possible fix is removing the player->ResetLatched() call in CGameMovement::FinishDuck(),
|
||||
// but that re-introduces a third-person hitching bug. One possible cause is the abrupt change
|
||||
// in player size/position that occurs when ducking, and how prediction tries to work through that.
|
||||
//
|
||||
// AddVar( &m_vecVelocity, &m_iv_vecVelocity, LATCH_SIMULATION_VAR );
|
||||
|
||||
m_DataChangeEventRef = -1;
|
||||
m_EntClientFlags = 0;
|
||||
|
@ -1158,6 +1158,33 @@ void C_BaseFlex::SetupWeights( const matrix3x4_t *pBoneToWorld, int nFlexWeightC
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Use the local bone positions to set flex control weights
|
||||
// via boneflexdrivers specified in the model
|
||||
//-----------------------------------------------------------------------------
|
||||
void C_BaseFlex::BuildTransformations( CStudioHdr *pStudioHdr, Vector *pos, Quaternion q[], const matrix3x4_t& cameraTransform, int boneMask, CBoneBitList &boneComputed )
|
||||
{
|
||||
const int nBoneFlexDriverCount = pStudioHdr->BoneFlexDriverCount();
|
||||
|
||||
for ( int i = 0; i < nBoneFlexDriverCount; ++i )
|
||||
{
|
||||
const mstudioboneflexdriver_t *pBoneFlexDriver = pStudioHdr->BoneFlexDriver( i );
|
||||
const Vector &position = pos[ pBoneFlexDriver->m_nBoneIndex ];
|
||||
|
||||
const int nControllerCount = pBoneFlexDriver->m_nControlCount;
|
||||
for ( int j = 0; j < nControllerCount; ++j )
|
||||
{
|
||||
const mstudioboneflexdrivercontrol_t *pController = pBoneFlexDriver->pBoneFlexDriverControl( j );
|
||||
Assert( pController->m_nFlexControllerIndex >= 0 && pController->m_nFlexControllerIndex < pStudioHdr->numflexcontrollers() );
|
||||
Assert( pController->m_nBoneComponent >= 0 && pController->m_nBoneComponent <= 2 );
|
||||
SetFlexWeight( static_cast< LocalFlexController_t >( pController->m_nFlexControllerIndex ), RemapValClamped( position[pController->m_nBoneComponent], pController->m_flMin, pController->m_flMax, 0.0f, 1.0f ) );
|
||||
}
|
||||
}
|
||||
|
||||
BaseClass::BuildTransformations( pStudioHdr, pos, q, cameraTransform, boneMask, boneComputed );
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: process the entities networked state, vcd playback, wav file visemes, and blinks into a global shared flex controller array
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -147,6 +147,7 @@ public:
|
||||
virtual void OnThreadedDrawSetup();
|
||||
|
||||
// model specific
|
||||
virtual void BuildTransformations( CStudioHdr *pStudioHdr, Vector *pos, Quaternion q[], const matrix3x4_t& cameraTransform, int boneMask, CBoneBitList &boneComputed );
|
||||
static void LinkToGlobalFlexControllers( CStudioHdr *hdr );
|
||||
virtual void SetupWeights( const matrix3x4_t *pBoneToWorld, int nFlexWeightCount, float *pFlexWeights, float *pFlexDelayedWeights );
|
||||
virtual bool SetupGlobalWeights( const matrix3x4_t *pBoneToWorld, int nFlexWeightCount, float *pFlexWeights, float *pFlexDelayedWeights );
|
||||
|
@ -47,7 +47,7 @@
|
||||
#include "replay/ienginereplay.h"
|
||||
#endif
|
||||
#include "steam/steam_api.h"
|
||||
#include "headtrack/isourcevirtualreality.h"
|
||||
#include "sourcevr/isourcevirtualreality.h"
|
||||
#include "client_virtualreality.h"
|
||||
|
||||
#if defined USES_ECON_ITEMS
|
||||
@ -115,6 +115,13 @@ static ConVar cl_first_person_uses_world_model ( "cl_first_person_uses_world_mod
|
||||
|
||||
ConVar demo_fov_override( "demo_fov_override", "0", FCVAR_CLIENTDLL | FCVAR_DONTRECORD, "If nonzero, this value will be used to override FOV during demo playback." );
|
||||
|
||||
// This only needs to be approximate - it just controls the distance to the pivot-point of the head ("the neck") of the in-game character, not the player's real-world neck length.
|
||||
// Ideally we would find this vector by subtracting the neutral-pose difference between the head bone (the pivot point) and the "eyes" attachment point.
|
||||
// However, some characters don't have this attachment point, and finding the neutral pose is a pain.
|
||||
// This value is found by hand, and a good value depends more on the in-game models than on actual human shapes.
|
||||
ConVar cl_meathook_neck_pivot_ingame_up( "cl_meathook_neck_pivot_ingame_up", "7.0" );
|
||||
ConVar cl_meathook_neck_pivot_ingame_fwd( "cl_meathook_neck_pivot_ingame_fwd", "3.0" );
|
||||
|
||||
void RecvProxy_LocalVelocityX( const CRecvProxyData *pData, void *pStruct, void *pOut );
|
||||
void RecvProxy_LocalVelocityY( const CRecvProxyData *pData, void *pStruct, void *pOut );
|
||||
void RecvProxy_LocalVelocityZ( const CRecvProxyData *pData, void *pStruct, void *pOut );
|
||||
@ -429,6 +436,8 @@ C_BasePlayer::C_BasePlayer() : m_iv_vecViewOffset( "C_BasePlayer::m_iv_vecViewOf
|
||||
m_bFiredWeapon = false;
|
||||
|
||||
m_nForceVisionFilterFlags = 0;
|
||||
|
||||
ListenForGameEvent( "base_player_teleported" );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -698,6 +707,20 @@ surfacedata_t* C_BasePlayer::GetGroundSurface()
|
||||
return physprops->GetSurfaceData( trace.surface.surfaceProps );
|
||||
}
|
||||
|
||||
void C_BasePlayer::FireGameEvent( IGameEvent *event )
|
||||
{
|
||||
if ( FStrEq( event->GetName(), "base_player_teleported" ) )
|
||||
{
|
||||
const int index = event->GetInt( "entindex" );
|
||||
if ( index == entindex() && IsLocalPlayer() )
|
||||
{
|
||||
// In VR, we want to make sure our head and body
|
||||
// are aligned after we teleport.
|
||||
g_ClientVirtualReality.AlignTorsoAndViewToWeapon();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// returns the player name
|
||||
@ -1851,11 +1874,9 @@ void C_BasePlayer::ThirdPersonSwitch( bool bThirdperson )
|
||||
{
|
||||
return !input->CAM_IsThirdPerson() && ( !ToolsEnabled() || !ToolFramework_IsThirdPersonCamera() );
|
||||
}
|
||||
else
|
||||
{
|
||||
// Not looking at the local player, e.g. in a replay in third person mode or freelook.
|
||||
return false;
|
||||
}
|
||||
|
||||
// Not looking at the local player, e.g. in a replay in third person mode or freelook.
|
||||
return false;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -1867,11 +1888,9 @@ void C_BasePlayer::ThirdPersonSwitch( bool bThirdperson )
|
||||
{
|
||||
return !LocalPlayerInFirstPersonView() || cl_first_person_uses_world_model.GetBool();
|
||||
}
|
||||
else
|
||||
{
|
||||
static ConVarRef vr_first_person_uses_world_model( "vr_first_person_uses_world_model" );
|
||||
return !LocalPlayerInFirstPersonView() || vr_first_person_uses_world_model.GetBool();
|
||||
}
|
||||
|
||||
static ConVarRef vr_first_person_uses_world_model( "vr_first_person_uses_world_model" );
|
||||
return !LocalPlayerInFirstPersonView() || vr_first_person_uses_world_model.GetBool();
|
||||
}
|
||||
|
||||
|
||||
@ -1995,6 +2014,16 @@ void C_BasePlayer::PostThink( void )
|
||||
|
||||
if ( IsAlive())
|
||||
{
|
||||
// Need to do this on the client to avoid prediction errors
|
||||
if ( GetFlags() & FL_DUCKING )
|
||||
{
|
||||
SetCollisionBounds( VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX );
|
||||
}
|
||||
else
|
||||
{
|
||||
SetCollisionBounds( VEC_HULL_MIN, VEC_HULL_MAX );
|
||||
}
|
||||
|
||||
if ( !CommentaryModeShouldSwallowInput( this ) )
|
||||
{
|
||||
// do weapon stuff
|
||||
@ -2850,7 +2879,13 @@ void C_BasePlayer::BuildFirstPersonMeathookTransformations( CStudioHdr *hdr, Vec
|
||||
|
||||
m_BoneAccessor.SetWritableBones( BONE_USED_BY_ANYTHING );
|
||||
|
||||
matrix3x4_t &mHeadTransform = GetBoneForWrite( LookupBone( pchHeadBoneName ) );
|
||||
int iHead = LookupBone( pchHeadBoneName );
|
||||
if ( iHead == -1 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
matrix3x4_t &mHeadTransform = GetBoneForWrite( iHead );
|
||||
|
||||
// "up" on the head bone is along the negative Y axis - not sure why.
|
||||
//Vector vHeadTransformUp ( -mHeadTransform[0][1], -mHeadTransform[1][1], -mHeadTransform[2][1] );
|
||||
@ -2862,29 +2897,19 @@ void C_BasePlayer::BuildFirstPersonMeathookTransformations( CStudioHdr *hdr, Vec
|
||||
// We can't move this with animations or effects without causing nausea, so we need to move
|
||||
// the whole body so that the animated head is in the right place to match the player-controlled head.
|
||||
Vector vHeadUp;
|
||||
bool bMeathookEnable = true;
|
||||
Vector vRealPivotPoint;
|
||||
bool bEnableDecapitation = true;
|
||||
if( UseVR() )
|
||||
{
|
||||
static ConVarRef vr_neck_pivot_ingame_up( "vr_neck_pivot_ingame_up" );
|
||||
static ConVarRef vr_neck_pivot_ingame_fwd( "vr_neck_pivot_ingame_fwd" );
|
||||
static ConVarRef vr_meathook_enable ( "vr_meathook_enable" );
|
||||
static ConVarRef vr_decapitation_enable ( "vr_decapitation_enable" );
|
||||
|
||||
VMatrix mWorldFromMideye = g_ClientVirtualReality.GetWorldFromMidEye();
|
||||
|
||||
bMeathookEnable = vr_meathook_enable.GetBool();
|
||||
bEnableDecapitation = vr_decapitation_enable.GetBool();
|
||||
|
||||
// What we do here is:
|
||||
// * Take the required eye pos+orn - the actual pose the player is controlling with the HMD.
|
||||
// * Go downwards in that space by headtrack_neck_pivot_ingame_* - this is now the neck-pivot in the game world of where the player is actually looking.
|
||||
// * Go downwards in that space by cl_meathook_neck_pivot_ingame_* - this is now the neck-pivot in the game world of where the player is actually looking.
|
||||
// * Now place the body of the animated character so that the head bone is at that position.
|
||||
// The head bone is the neck pivot point of the in-game character.
|
||||
|
||||
Vector vRealMidEyePos = mWorldFromMideye.GetTranslation();
|
||||
vRealPivotPoint = vRealMidEyePos - ( mWorldFromMideye.GetUp() * vr_neck_pivot_ingame_up.GetFloat() ) - ( mWorldFromMideye.GetForward() * vr_neck_pivot_ingame_fwd.GetFloat() );
|
||||
vRealPivotPoint = vRealMidEyePos - ( mWorldFromMideye.GetUp() * cl_meathook_neck_pivot_ingame_up.GetFloat() ) - ( mWorldFromMideye.GetForward() * cl_meathook_neck_pivot_ingame_fwd.GetFloat() );
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2892,55 +2917,48 @@ void C_BasePlayer::BuildFirstPersonMeathookTransformations( CStudioHdr *hdr, Vec
|
||||
Vector vForward, vRight, vUp;
|
||||
AngleVectors( MainViewAngles(), &vForward, &vRight, &vUp );
|
||||
|
||||
vRealPivotPoint = MainViewOrigin() - ( vUp * 7.3f ) - ( vForward * 3.f );
|
||||
vRealPivotPoint = MainViewOrigin() - ( vUp * cl_meathook_neck_pivot_ingame_up.GetFloat() ) - ( vForward * cl_meathook_neck_pivot_ingame_fwd.GetFloat() );
|
||||
}
|
||||
|
||||
Vector vDeltaToAdd = vRealPivotPoint - vHeadTransformTranslation;
|
||||
|
||||
|
||||
if ( bMeathookEnable )
|
||||
// Now add this offset to the entire skeleton.
|
||||
for (int i = 0; i < hdr->numbones(); i++)
|
||||
{
|
||||
// Now add this offset to the entire skeleton.
|
||||
for (int i = 0; i < hdr->numbones(); i++)
|
||||
// Only update bones reference by the bone mask.
|
||||
if ( !( hdr->boneFlags( i ) & boneMask ) )
|
||||
{
|
||||
// Only update bones reference by the bone mask.
|
||||
if ( !( hdr->boneFlags( i ) & boneMask ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
matrix3x4_t& bone = GetBoneForWrite( i );
|
||||
Vector vBonePos;
|
||||
MatrixGetTranslation ( bone, vBonePos );
|
||||
vBonePos += vDeltaToAdd;
|
||||
MatrixSetTranslation ( vBonePos, bone );
|
||||
continue;
|
||||
}
|
||||
matrix3x4_t& bone = GetBoneForWrite( i );
|
||||
Vector vBonePos;
|
||||
MatrixGetTranslation ( bone, vBonePos );
|
||||
vBonePos += vDeltaToAdd;
|
||||
MatrixSetTranslation ( vBonePos, bone );
|
||||
}
|
||||
|
||||
if ( bEnableDecapitation )
|
||||
// Then scale the head to zero, but leave its position - forms a "neck stub".
|
||||
// This prevents us rendering junk all over the screen, e.g. inside of mouth, etc.
|
||||
MatrixScaleByZero( mHeadTransform );
|
||||
|
||||
// TODO: right now we nuke the hats by shrinking them to nothing,
|
||||
// but it feels like we should do something more sensible.
|
||||
// For example, for one sniper taunt he takes his hat off and waves it - would be nice to see it then.
|
||||
int iHelm = LookupBone( "prp_helmet" );
|
||||
if ( iHelm != -1 )
|
||||
{
|
||||
// Then scale the head to zero, but leave its position - forms a "neck stub".
|
||||
// This prevents us rendering junk all over the screen, e.g. inside of mouth, etc.
|
||||
MatrixScaleByZero ( mHeadTransform );
|
||||
|
||||
// TODO: right now we nuke the hats by shrinking them to nothing,
|
||||
// but it feels like we should do something more sensible.
|
||||
// For example, for one sniper taunt he takes his hat off and waves it - would be nice to see it then.
|
||||
int iHelm = LookupBone( "prp_helmet" );
|
||||
if ( iHelm != -1 )
|
||||
{
|
||||
// Scale the helmet.
|
||||
matrix3x4_t &transformhelmet = GetBoneForWrite( iHelm );
|
||||
MatrixScaleByZero ( transformhelmet );
|
||||
}
|
||||
|
||||
iHelm = LookupBone( "prp_hat" );
|
||||
if ( iHelm != -1 )
|
||||
{
|
||||
matrix3x4_t &transformhelmet = GetBoneForWrite( iHelm );
|
||||
MatrixScaleByZero ( transformhelmet );
|
||||
}
|
||||
// Scale the helmet.
|
||||
matrix3x4_t &transformhelmet = GetBoneForWrite( iHelm );
|
||||
MatrixScaleByZero( transformhelmet );
|
||||
}
|
||||
|
||||
iHelm = LookupBone( "prp_hat" );
|
||||
if ( iHelm != -1 )
|
||||
{
|
||||
matrix3x4_t &transformhelmet = GetBoneForWrite( iHelm );
|
||||
MatrixScaleByZero( transformhelmet );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -23,6 +23,8 @@
|
||||
#include "hintsystem.h"
|
||||
#include "SoundEmitterSystem/isoundemittersystembase.h"
|
||||
#include "c_env_fog_controller.h"
|
||||
#include "igameevents.h"
|
||||
#include "GameEventListener.h"
|
||||
|
||||
#if defined USES_ECON_ITEMS
|
||||
#include "econ_item.h"
|
||||
@ -66,7 +68,7 @@ bool IsInFreezeCam( void );
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Base Player class
|
||||
//-----------------------------------------------------------------------------
|
||||
class C_BasePlayer : public C_BaseCombatCharacter
|
||||
class C_BasePlayer : public C_BaseCombatCharacter, public CGameEventListener
|
||||
{
|
||||
public:
|
||||
DECLARE_CLASS( C_BasePlayer, C_BaseCombatCharacter );
|
||||
@ -467,6 +469,8 @@ protected:
|
||||
// used by client side player footsteps
|
||||
surfacedata_t* GetGroundSurface();
|
||||
|
||||
virtual void FireGameEvent( IGameEvent *event );
|
||||
|
||||
protected:
|
||||
// Did we just enter a vehicle this frame?
|
||||
bool JustEnteredVehicle();
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include "utlmultilist.h"
|
||||
#include "vprof.h"
|
||||
#include "icommandline.h"
|
||||
#include "headtrack/isourcevirtualreality.h"
|
||||
#include "sourcevr/isourcevirtualreality.h"
|
||||
|
||||
static void PixelvisDrawChanged( IConVar *pPixelvisVar, const char *pOld, float flOldValue );
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include "vgui/ISurface.h"
|
||||
#include "client_virtualreality.h"
|
||||
#include "../hud_crosshair.h"
|
||||
#include "headtrack/isourcevirtualreality.h"
|
||||
#include "sourcevr/isourcevirtualreality.h"
|
||||
// NVNT haptic utils
|
||||
#include "haptics/haptic_utils.h"
|
||||
|
||||
|
@ -121,7 +121,7 @@
|
||||
#include "clientsteamcontext.h"
|
||||
#include "renamed_recvtable_compat.h"
|
||||
#include "mouthinfo.h"
|
||||
#include "headtrack/isourcevirtualreality.h"
|
||||
#include "sourcevr/isourcevirtualreality.h"
|
||||
#include "client_virtualreality.h"
|
||||
#include "mumble.h"
|
||||
|
||||
@ -148,7 +148,6 @@
|
||||
#endif
|
||||
|
||||
extern vgui::IInputInternal *g_InputInternal;
|
||||
const char *COM_GetModDirectory(); // return the mod dir (rather than the complete -game param, which can be a path)
|
||||
|
||||
//=============================================================================
|
||||
// HPE_BEGIN
|
||||
@ -332,6 +331,11 @@ static ConVar s_CV_ShowParticleCounts("showparticlecounts", "0", 0, "Display num
|
||||
static ConVar s_cl_team("cl_team", "default", FCVAR_USERINFO|FCVAR_ARCHIVE, "Default team when joining a game");
|
||||
static ConVar s_cl_class("cl_class", "default", FCVAR_USERINFO|FCVAR_ARCHIVE, "Default class when joining a game");
|
||||
|
||||
#ifdef HL1MP_CLIENT_DLL
|
||||
static ConVar s_cl_load_hl1_content("cl_load_hl1_content", "0", FCVAR_ARCHIVE, "Mount the content from Half-Life: Source if possible");
|
||||
#endif
|
||||
|
||||
|
||||
// Physics system
|
||||
bool g_bLevelInitialized;
|
||||
bool g_bTextMode = false;
|
||||
@ -943,7 +947,7 @@ int CHLClient::Init( CreateInterfaceFn appSystemFactory, CreateInterfaceFn physi
|
||||
InitFbx();
|
||||
#endif
|
||||
|
||||
// it's ok if this is NULL. That just means the headtrack.dll wasn't found
|
||||
// it's ok if this is NULL. That just means the sourcevr.dll wasn't found
|
||||
g_pSourceVR = (ISourceVirtualReality *)appSystemFactory(SOURCE_VIRTUAL_REALITY_INTERFACE_VERSION, NULL);
|
||||
|
||||
factorylist_t factories;
|
||||
@ -977,17 +981,6 @@ int CHLClient::Init( CreateInterfaceFn appSystemFactory, CreateInterfaceFn physi
|
||||
|
||||
g_pcv_ThreadMode = g_pCVar->FindVar( "host_thread_mode" );
|
||||
|
||||
// If we are in VR mode do some initial setup work
|
||||
if( UseVR() )
|
||||
{
|
||||
int nViewportWidth, nViewportHeight;
|
||||
|
||||
g_pSourceVR->GetViewportBounds( ISourceVirtualReality::VREye_Left, NULL, NULL, &nViewportWidth, &nViewportHeight );
|
||||
vgui::surface()->SetFullscreenViewport( 0, 0, nViewportWidth, nViewportHeight );
|
||||
|
||||
vgui::ivgui()->SetVRMode( true );
|
||||
}
|
||||
|
||||
if (!Initializer::InitializeAllObjects())
|
||||
return false;
|
||||
|
||||
@ -1091,6 +1084,7 @@ int CHLClient::Init( CreateInterfaceFn appSystemFactory, CreateInterfaceFn physi
|
||||
#ifndef _X360
|
||||
HookHapticMessages(); // Always hook the messages
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -1141,29 +1135,23 @@ void CHLClient::PostInit()
|
||||
g_pSixenseInput->PostInit();
|
||||
#endif
|
||||
|
||||
// If we are in VR mode execute headtrack.cfg in PostInit so all the convars will
|
||||
// already be set up
|
||||
if( UseVR() )
|
||||
g_ClientVirtualReality.StartupComplete();
|
||||
|
||||
#ifdef HL1MP_CLIENT_DLL
|
||||
if ( s_cl_load_hl1_content.GetBool() && steamapicontext && steamapicontext->SteamApps() )
|
||||
{
|
||||
// general all-game stuff
|
||||
engine->ExecuteClientCmd( "exec headtrack\\headtrack.cfg" );
|
||||
char szPath[ MAX_PATH*2 ];
|
||||
int ccFolder= steamapicontext->SteamApps()->GetAppInstallDir( 280, szPath, sizeof(szPath) );
|
||||
if ( ccFolder > 0 )
|
||||
{
|
||||
V_AppendSlash( szPath, sizeof(szPath) );
|
||||
V_strncat( szPath, "hl1", sizeof( szPath ) );
|
||||
|
||||
// game specific VR config
|
||||
CUtlString sCmd;
|
||||
sCmd.Format( "exec headtrack_%s.cfg", COM_GetModDirectory() );
|
||||
engine->ExecuteClientCmd( sCmd.Get() );
|
||||
|
||||
engine->ExecuteClientCmd( "vr_start_tracking" );
|
||||
|
||||
vgui::surface()->SetSoftwareCursor( true );
|
||||
#if defined(POSIX)
|
||||
ConVarRef m_rawinput( "m_rawinput" );
|
||||
m_rawinput.SetValue( 1 );
|
||||
|
||||
ConVarRef mat_vsync( "mat_vsync" );
|
||||
mat_vsync.SetValue( 0 );
|
||||
#endif
|
||||
g_pFullFileSystem->AddSearchPath( szPath, "HL1" );
|
||||
g_pFullFileSystem->AddSearchPath( szPath, "GAME" );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -206,6 +206,8 @@ $Project
|
||||
$File "$SRCDIR\game\shared\basegrenade_shared.cpp"
|
||||
$File "$SRCDIR\game\shared\baseparticleentity.cpp"
|
||||
$File "$SRCDIR\game\shared\baseplayer_shared.cpp"
|
||||
$File "$SRCDIR\game\shared\baseprojectile.cpp"
|
||||
$File "$SRCDIR\game\shared\baseprojectile.h"
|
||||
$File "$SRCDIR\game\shared\baseviewmodel_shared.cpp"
|
||||
$File "beamdraw.cpp"
|
||||
$File "$SRCDIR\game\shared\beam_shared.cpp"
|
||||
|
@ -9,15 +9,21 @@
|
||||
#include "client_virtualreality.h"
|
||||
|
||||
#include "materialsystem/itexture.h"
|
||||
#include "materialsystem/materialsystem_config.h"
|
||||
#include "view_shared.h"
|
||||
#include "view_scene.h"
|
||||
#include "VGuiMatSurface/IMatSystemSurface.h"
|
||||
#include "vgui_controls/Controls.h"
|
||||
#include "headtrack/isourcevirtualreality.h"
|
||||
#include "sourcevr/isourcevirtualreality.h"
|
||||
#include "ienginevgui.h"
|
||||
#include "cdll_client_int.h"
|
||||
#include "vgui/IVGui.h"
|
||||
#include "vgui_controls/Controls.h"
|
||||
#include "tier0/vprof_telemetry.h"
|
||||
#include <time.h>
|
||||
|
||||
const char *COM_GetModDirectory(); // return the mod dir (rather than the complete -game param, which can be a path)
|
||||
|
||||
CClientVirtualReality g_ClientVirtualReality;
|
||||
EXPOSE_SINGLE_INTERFACE_GLOBALVAR( CClientVirtualReality, IClientVirtualReality,
|
||||
CLIENTVIRTUALREALITY_INTERFACE_VERSION, g_ClientVirtualReality );
|
||||
@ -26,6 +32,9 @@ EXPOSE_SINGLE_INTERFACE_GLOBALVAR( CClientVirtualReality, IClientVirtualReality,
|
||||
// --------------------------------------------------------------------
|
||||
// A huge pile of VR convars
|
||||
// --------------------------------------------------------------------
|
||||
ConVar vr_activate_default( "vr_activate_default", "0", FCVAR_ARCHIVE, "If this is true the game will switch to VR mode once startup is complete." );
|
||||
|
||||
|
||||
ConVar vr_moveaim_mode ( "vr_moveaim_mode", "3", FCVAR_ARCHIVE, "0=move+shoot from face. 1=move with torso. 2,3,4=shoot with face+mouse cursor. 5+ are probably not that useful." );
|
||||
ConVar vr_moveaim_mode_zoom ( "vr_moveaim_mode_zoom", "3", FCVAR_ARCHIVE, "0=move+shoot from face. 1=move with torso. 2,3,4=shoot with face+mouse cursor. 5+ are probably not that useful." );
|
||||
|
||||
@ -54,21 +63,18 @@ ConVar vr_debug_remote_cam_target_z( "vr_debug_remote_cam_target_z", "-50.0" );
|
||||
|
||||
ConVar vr_translation_limit( "vr_translation_limit", "10.0", 0, "How far the in-game head will translate before being clamped." );
|
||||
|
||||
ConVar vr_dont_use_calibration_projection ( "vr_dont_use_calibration_projection", "0", 0, "1=use calibrated rotation, but not projection" );
|
||||
|
||||
// HUD config values
|
||||
ConVar vr_render_hud_in_world( "vr_render_hud_in_world", "1" );
|
||||
ConVar vr_hud_max_fov( "vr_hud_max_fov", "60", FCVAR_ARCHIVE, "Max FOV of the HUD" );
|
||||
ConVar vr_hud_forward( "vr_hud_forward", "500", FCVAR_ARCHIVE, "Apparent distance of the HUD in inches" );
|
||||
ConVar vr_hud_display_ratio( "vr_hud_display_ratio", "0.95", FCVAR_ARCHIVE );
|
||||
ConVar vr_hud_never_overlay( "vr_hud_never_overlay", "0" );
|
||||
|
||||
ConVar vr_hud_axis_lock_to_world( "vr_hud_axis_lock_to_world", "0", FCVAR_ARCHIVE, "Bitfield - locks HUD axes to the world - 0=pitch, 1=yaw, 2=roll" );
|
||||
|
||||
// Default distance clips through rocketlauncher, heavy's body, etc.
|
||||
ConVar vr_projection_znear_multiplier( "vr_projection_znear_multiplier", "0.3", 0, "Allows moving the ZNear plane to deal with body clipping" );
|
||||
|
||||
ConVar vr_stat_sample_period ( "vr_stat_sample_period", "1", 0, "Frequency with which to sample motion stats" );
|
||||
|
||||
// Should the viewmodel (weapon) translate with the HMD, or remain fixed to the in-world body (but still rotate with the head)? Purely a graphics effect - no effect on actual bullet aiming.
|
||||
// Has no effect in aim modes where aiming is not controlled by the head.
|
||||
ConVar vr_viewmodel_translate_with_head ( "vr_viewmodel_translate_with_head", "0", 0, "1=translate the viewmodel with the head motion." );
|
||||
@ -80,16 +86,9 @@ ConVar vr_zoom_scope_scale ( "vr_zoom_scope_scale", "6.0", 0, "Something to do w
|
||||
ConVar vr_viewmodel_offset_forward( "vr_viewmodel_offset_forward", "-8", 0 );
|
||||
ConVar vr_viewmodel_offset_forward_large( "vr_viewmodel_offset_forward_large", "-15", 0 );
|
||||
|
||||
ConVar vr_ipdtest_left_t ( "vr_ipdtest_left_t", "260", FCVAR_ARCHIVE );
|
||||
ConVar vr_ipdtest_left_b ( "vr_ipdtest_left_b", "530", FCVAR_ARCHIVE );
|
||||
ConVar vr_ipdtest_left_i ( "vr_ipdtest_left_i", "550", FCVAR_ARCHIVE );
|
||||
ConVar vr_ipdtest_left_o ( "vr_ipdtest_left_o", "200", FCVAR_ARCHIVE );
|
||||
ConVar vr_ipdtest_right_t ( "vr_ipdtest_right_t", "260", FCVAR_ARCHIVE );
|
||||
ConVar vr_ipdtest_right_b ( "vr_ipdtest_right_b", "530", FCVAR_ARCHIVE );
|
||||
ConVar vr_ipdtest_right_i ( "vr_ipdtest_right_i", "550", FCVAR_ARCHIVE );
|
||||
ConVar vr_ipdtest_right_o ( "vr_ipdtest_right_o", "200", FCVAR_ARCHIVE );
|
||||
|
||||
ConVar vr_force_windowed ( "vr_force_windowed", "0", FCVAR_ARCHIVE );
|
||||
|
||||
ConVar vr_first_person_uses_world_model ( "vr_first_person_uses_world_model", "1", 0, "Causes the third person model to be drawn instead of the view model" );
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Purpose: Cycle through the aim & move modes.
|
||||
@ -122,6 +121,32 @@ void CC_VR_Cycle_Aim_Move_Mode ( const CCommand& args )
|
||||
static ConCommand vr_cycle_aim_move_mode("vr_cycle_aim_move_mode", CC_VR_Cycle_Aim_Move_Mode, "Cycle through the aim & move modes." );
|
||||
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Purpose: Switch to/from VR mode.
|
||||
// --------------------------------------------------------------------
|
||||
CON_COMMAND( vr_activate, "Switch to VR mode" )
|
||||
{
|
||||
g_ClientVirtualReality.Activate();
|
||||
}
|
||||
CON_COMMAND( vr_deactivate, "Switch from VR mode to normal mode" )
|
||||
{
|
||||
g_ClientVirtualReality.Deactivate();
|
||||
}
|
||||
CON_COMMAND( vr_toggle, "Toggles VR mode" )
|
||||
{
|
||||
if( g_pSourceVR )
|
||||
{
|
||||
if( g_pSourceVR->ShouldRunInVR() )
|
||||
g_ClientVirtualReality.Deactivate();
|
||||
else
|
||||
g_ClientVirtualReality.Activate();
|
||||
}
|
||||
else
|
||||
{
|
||||
Msg( "VR Mode is not enabled.\n" );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Purpose: Returns true if the matrix is orthonormal
|
||||
@ -235,11 +260,9 @@ CClientVirtualReality::CClientVirtualReality()
|
||||
m_rtLastMotionSample = 0;
|
||||
m_bMotionUpdated = false;
|
||||
|
||||
m_bIpdTestEnabled = false;
|
||||
|
||||
// Needs to be after the tracker has initted.
|
||||
m_bIpdTestEnabled = false;
|
||||
m_IpdTestControl = 0;
|
||||
#if defined( USE_SDL )
|
||||
m_nNonVRSDLDisplayIndex = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
CClientVirtualReality::~CClientVirtualReality()
|
||||
@ -378,8 +401,8 @@ void CClientVirtualReality::DrawMainMenu()
|
||||
viewEye[STEREO_EYE_RIGHT].y = rightY;
|
||||
viewEye[STEREO_EYE_RIGHT].m_eStereoEye = STEREO_EYE_RIGHT;
|
||||
|
||||
// let headtrack.dll tell us where to put the cameras
|
||||
ProcessCurrentTrackingState( 75.f );
|
||||
// let sourcevr.dll tell us where to put the cameras
|
||||
ProcessCurrentTrackingState( 0 );
|
||||
Vector vViewModelOrigin;
|
||||
QAngle qViewModelAngles;
|
||||
OverrideView( &viewEye[ STEREO_EYE_MONO ] , &vViewModelOrigin, &qViewModelAngles, HMM_NOOVERRIDE );
|
||||
@ -388,23 +411,22 @@ void CClientVirtualReality::DrawMainMenu()
|
||||
// render both eyes
|
||||
for( int nView = STEREO_EYE_LEFT; nView <= STEREO_EYE_RIGHT; nView++ )
|
||||
{
|
||||
// clear happens here probably
|
||||
render->Push3DView( viewEye[nView], VIEW_CLEAR_DEPTH|VIEW_CLEAR_COLOR, NULL, NULL );
|
||||
|
||||
RenderHUDQuad( true, false );
|
||||
CMatRenderContextPtr pRenderContext( materials );
|
||||
PIXEvent pixEvent( pRenderContext, nView == STEREO_EYE_LEFT ? "left eye" : "right eye" );
|
||||
|
||||
ITexture *pColor = g_pSourceVR->GetRenderTarget( (ISourceVirtualReality::VREye)(nView-1), ISourceVirtualReality::RT_Color );
|
||||
ITexture *pDepth = g_pSourceVR->GetRenderTarget( (ISourceVirtualReality::VREye)(nView-1), ISourceVirtualReality::RT_Depth );
|
||||
render->Push3DView( viewEye[nView], VIEW_CLEAR_DEPTH|VIEW_CLEAR_COLOR, pColor, NULL, pDepth );
|
||||
RenderHUDQuad( false, false );
|
||||
render->PopView( NULL );
|
||||
|
||||
PostProcessFrame( (StereoEye_t)nView );
|
||||
|
||||
OverlayHUDQuadWithUndistort( viewEye[nView], true, true, false );
|
||||
}
|
||||
|
||||
vrect_t rect;
|
||||
rect.x = rect.y = 0;
|
||||
rect.width = leftW*2;
|
||||
rect.height = leftH;
|
||||
PostProcessFrame( &rect );
|
||||
}
|
||||
|
||||
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Offset the incoming view appropriately.
|
||||
@ -449,8 +471,7 @@ bool CClientVirtualReality::OverrideView ( CViewSetup *pViewMiddle, Vector *pVie
|
||||
QAngle torsoAngles = m_PlayerTorsoAngle;
|
||||
|
||||
VMatrix worldFromTorso;
|
||||
AngleMatrix ( torsoAngles, worldFromTorso.As3x4() );
|
||||
worldFromTorso.SetTranslation ( m_PlayerTorsoOrigin );
|
||||
worldFromTorso.SetupMatrixOrgAngles( m_PlayerTorsoOrigin, torsoAngles );
|
||||
|
||||
//// Scale translation e.g. to allow big in-game leans with only a small head movement.
|
||||
//// Clamp HMD movement to a reasonable amount to avoid wallhacks, vis problems, etc.
|
||||
@ -484,16 +505,14 @@ bool CClientVirtualReality::OverrideView ( CViewSetup *pViewMiddle, Vector *pVie
|
||||
// Aim point is independent of view - leave it as it was, just copy it into m_WorldFromWeapon for our use.
|
||||
m_TorsoFromMideye = matMideyeZeroFromMideyeCurrent;
|
||||
m_WorldFromMidEye = worldFromTorso * matMideyeZeroFromMideyeCurrent;
|
||||
AngleMatrix ( originalMiddleAngles, m_WorldFromWeapon.As3x4() );
|
||||
m_WorldFromWeapon.SetTranslation ( originalMiddleOrigin );
|
||||
m_WorldFromWeapon.SetupMatrixOrgAngles( originalMiddleOrigin, originalMiddleAngles );
|
||||
break;
|
||||
|
||||
case HMM_SHOOTMOVELOOKMOUSE:
|
||||
// HMD is ignored completely, mouse does everything.
|
||||
m_PlayerTorsoAngle = originalMiddleAngles;
|
||||
|
||||
AngleMatrix ( originalMiddleAngles, worldFromTorso.As3x4() );
|
||||
worldFromTorso.SetTranslation ( m_PlayerTorsoOrigin );
|
||||
worldFromTorso.SetupMatrixOrgAngles( m_PlayerTorsoOrigin, originalMiddleAngles );
|
||||
|
||||
m_TorsoFromMideye.Identity();
|
||||
m_WorldFromMidEye = worldFromTorso;
|
||||
@ -535,9 +554,8 @@ bool CClientVirtualReality::OverrideView ( CViewSetup *pViewMiddle, Vector *pVie
|
||||
Vector vView = vLookat - vOffset;
|
||||
VectorAngles ( vView, m_WorldFromMidEye.GetUp(), pViewMiddle->angles );
|
||||
|
||||
AngleMatrix ( pViewMiddle->angles, m_WorldFromMidEye.As3x4() );
|
||||
m_WorldFromMidEye.SetupMatrixOrgAngles( pViewMiddle->origin, pViewMiddle->angles );
|
||||
|
||||
m_WorldFromMidEye.SetTranslation ( pViewMiddle->origin );
|
||||
m_TorsoFromMideye.Identity();
|
||||
}
|
||||
|
||||
@ -584,47 +602,19 @@ bool CClientVirtualReality::OverrideStereoView( CViewSetup *pViewMiddle, CViewSe
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( vr_stereo_swap_eyes.GetBool() )
|
||||
{
|
||||
// Windows likes to randomly rename display numbers which causes eye-swaps, so this tries to cope with that.
|
||||
CViewSetup *pViewTemp = pViewLeft;
|
||||
pViewLeft = pViewRight;
|
||||
pViewRight = pViewTemp;
|
||||
}
|
||||
VMatrix matOffsetLeft = g_pSourceVR->GetMidEyeFromEye( ISourceVirtualReality::VREye_Left );
|
||||
VMatrix matOffsetRight = g_pSourceVR->GetMidEyeFromEye( ISourceVirtualReality::VREye_Right );
|
||||
|
||||
// Move eyes to calibrated positions.
|
||||
VMatrix worldFromLeftEye = m_WorldFromMidEye * g_pSourceVR->GetMidEyeFromLeft();
|
||||
VMatrix worldFromRightEye = m_WorldFromMidEye * g_pSourceVR->GetMidEyeFromRight();
|
||||
|
||||
Assert ( IsOrthonormal ( worldFromLeftEye, 0.001f ) );
|
||||
Assert ( IsOrthonormal ( worldFromRightEye, 0.001f ) );
|
||||
|
||||
Vector rightFromLeft = worldFromRightEye.GetTranslation() - worldFromLeftEye.GetTranslation();
|
||||
//float calibratedIPD = rightFromLeft.Length(); // THIS IS NOT CORRECT. The positions of the virtual cameras do have any real physical "meaning" with the way we currently calibrate.
|
||||
float calibratedIPD = g_pSourceVR->GetDisplaySeparationMM() / 25.4f;
|
||||
|
||||
// Scale the eyes closer/further to fit the desired IPD.
|
||||
// (the calibrated distance is the IPD of whoever calibrated it!)
|
||||
float desiredIPD = g_pSourceVR->GetUserIPDMM() / 25.4f;
|
||||
if ( calibratedIPD < 0.000001f )
|
||||
{
|
||||
// No HMD, or a monocular HMD.
|
||||
}
|
||||
else
|
||||
{
|
||||
float scale = 0.5f * ( desiredIPD - calibratedIPD ) / calibratedIPD;
|
||||
worldFromLeftEye.SetTranslation ( worldFromLeftEye.GetTranslation() - ( scale * rightFromLeft ) );
|
||||
worldFromRightEye.SetTranslation ( worldFromRightEye.GetTranslation() + ( scale * rightFromLeft ) );
|
||||
}
|
||||
// Move eyes to IPD positions.
|
||||
VMatrix worldFromLeftEye = m_WorldFromMidEye * matOffsetLeft;
|
||||
VMatrix worldFromRightEye = m_WorldFromMidEye * matOffsetRight;
|
||||
|
||||
Assert ( IsOrthonormal ( worldFromLeftEye, 0.001f ) );
|
||||
Assert ( IsOrthonormal ( worldFromRightEye, 0.001f ) );
|
||||
|
||||
// Finally convert back to origin+angles.
|
||||
pViewLeft->origin = worldFromLeftEye.GetTranslation();
|
||||
VectorAngles ( worldFromLeftEye.GetForward(), worldFromLeftEye.GetUp(), pViewLeft->angles );
|
||||
pViewRight->origin = worldFromRightEye.GetTranslation();
|
||||
VectorAngles ( worldFromRightEye.GetForward(), worldFromRightEye.GetUp(), pViewRight->angles );
|
||||
MatrixAngles( worldFromLeftEye.As3x4(), pViewLeft->angles, pViewLeft->origin );
|
||||
MatrixAngles( worldFromRightEye.As3x4(), pViewRight->angles, pViewRight->origin );
|
||||
|
||||
// Find the projection matrices.
|
||||
|
||||
@ -645,13 +635,6 @@ bool CClientVirtualReality::OverrideStereoView( CViewSetup *pViewMiddle, CViewSe
|
||||
}
|
||||
}
|
||||
|
||||
if ( vr_dont_use_calibration_projection.GetBool() )
|
||||
{
|
||||
pViewLeft ->m_bViewToProjectionOverride = false;
|
||||
pViewRight ->m_bViewToProjectionOverride = false;
|
||||
pViewMiddle->m_bViewToProjectionOverride = false;
|
||||
}
|
||||
|
||||
switch ( vr_stereo_mono_set_eye.GetInt() )
|
||||
{
|
||||
case 0:
|
||||
@ -683,6 +666,17 @@ bool CClientVirtualReality::OverrideStereoView( CViewSetup *pViewMiddle, CViewSe
|
||||
CalcFovFromProjection ( &(pViewRight ->fov), pViewRight ->m_ViewToProjection );
|
||||
CalcFovFromProjection ( &(pViewMiddle->fov), pViewMiddle->m_ViewToProjection );
|
||||
|
||||
// if we don't know the HUD FOV, figure that out now
|
||||
if( m_fHudHorizontalFov == 0.f )
|
||||
{
|
||||
// Figure out the current HUD FOV.
|
||||
m_fHudHorizontalFov = pViewLeft->fov * vr_hud_display_ratio.GetFloat();
|
||||
if( m_fHudHorizontalFov > vr_hud_max_fov.GetFloat() )
|
||||
{
|
||||
m_fHudHorizontalFov = vr_hud_max_fov.GetFloat();
|
||||
}
|
||||
}
|
||||
|
||||
// remember the view angles so we can limit the weapon to something near those
|
||||
m_PlayerViewAngle = pViewMiddle->angles;
|
||||
m_PlayerViewOrigin = pViewMiddle->origin;
|
||||
@ -701,7 +695,6 @@ bool CClientVirtualReality::OverrideStereoView( CViewSetup *pViewMiddle, CViewSe
|
||||
m_fHudHalfHeight = tan( DEG2RAD( fVFOV * 0.5f ) ) * fHudForward * m_WorldZoomScale;
|
||||
|
||||
QAngle HudAngles;
|
||||
VMatrix HudUpCorrection;
|
||||
switch ( m_hmmMovementActual )
|
||||
{
|
||||
case HMM_SHOOTFACE_MOVETORSO:
|
||||
@ -709,7 +702,6 @@ bool CClientVirtualReality::OverrideStereoView( CViewSetup *pViewMiddle, CViewSe
|
||||
// This helps keep you oriented about where "forwards" is, which is otherwise surprisingly tricky!
|
||||
// TODO: try preserving roll and/or pitch from the view?
|
||||
HudAngles = m_PlayerTorsoAngle;
|
||||
HudUpCorrection.Identity();
|
||||
break;
|
||||
case HMM_SHOOTFACE_MOVEFACE:
|
||||
case HMM_SHOOTMOUSE_MOVEFACE:
|
||||
@ -720,7 +712,6 @@ bool CClientVirtualReality::OverrideStereoView( CViewSetup *pViewMiddle, CViewSe
|
||||
case HMM_SHOOTBOUNDEDMOUSE_LOOKFACE_MOVEMOUSE:
|
||||
// Put the HUD in front of wherever the player is looking.
|
||||
HudAngles = m_PlayerViewAngle;
|
||||
HudUpCorrection = g_pSourceVR->GetHudUpCorrection();
|
||||
break;
|
||||
default: Assert ( false ); break;
|
||||
}
|
||||
@ -742,9 +733,7 @@ bool CClientVirtualReality::OverrideStereoView( CViewSetup *pViewMiddle, CViewSe
|
||||
MatrixAngles( m_WorldFromWeapon.As3x4(), aimAngles );
|
||||
HudAngles[YAW] = aimAngles[YAW];
|
||||
}
|
||||
AngleMatrix ( HudAngles, m_WorldFromHud.As3x4() );
|
||||
m_WorldFromHud.SetTranslation ( m_PlayerViewOrigin );
|
||||
m_WorldFromHud = m_WorldFromHud * HudUpCorrection;
|
||||
m_WorldFromHud.SetupMatrixOrgAngles( m_PlayerViewOrigin, HudAngles );
|
||||
|
||||
// Remember in source X forwards, Y left, Z up.
|
||||
// We need to transform to a more conventional X right, Y up, Z backwards before doing the projection.
|
||||
@ -806,8 +795,8 @@ bool CClientVirtualReality::OverridePlayerMotion( float flInputSampleFrametime,
|
||||
{
|
||||
// Figure out what changes were made to the WEAPON by mouse/joystick/etc
|
||||
VMatrix worldFromOldWeapon, worldFromCurWeapon;
|
||||
AngleMatrix ( oldAngles, worldFromOldWeapon.As3x4() );
|
||||
AngleMatrix ( curAngles, worldFromCurWeapon.As3x4() );
|
||||
worldFromOldWeapon.SetupMatrixAngles( oldAngles );
|
||||
worldFromCurWeapon.SetupMatrixAngles( curAngles );
|
||||
|
||||
// We ignore mouse pitch, the mouse can't do rolls, so it's just yaw changes.
|
||||
if( !m_bOverrideTorsoAngle )
|
||||
@ -817,7 +806,7 @@ bool CClientVirtualReality::OverridePlayerMotion( float flInputSampleFrametime,
|
||||
m_PlayerTorsoAngle[PITCH] = 0.0f;
|
||||
}
|
||||
|
||||
AngleMatrix ( m_PlayerTorsoAngle, worldFromTorso.As3x4() );
|
||||
worldFromTorso.SetupMatrixAngles( m_PlayerTorsoAngle );
|
||||
|
||||
// Weapon view = mideye view, so apply that to the torso to find the world view direction.
|
||||
m_WorldFromWeapon = worldFromTorso * m_TorsoFromMideye;
|
||||
@ -846,10 +835,8 @@ bool CClientVirtualReality::OverridePlayerMotion( float flInputSampleFrametime,
|
||||
}
|
||||
|
||||
// Let every other system know.
|
||||
AngleMatrix( *pNewAngles, m_WorldFromWeapon.As3x4() );
|
||||
AngleMatrix( m_PlayerTorsoAngle, worldFromTorso.As3x4() );
|
||||
// Restore the translation.
|
||||
m_WorldFromWeapon.SetTranslation ( vWeaponOrigin );
|
||||
m_WorldFromWeapon.SetupMatrixOrgAngles( vWeaponOrigin, *pNewAngles );
|
||||
worldFromTorso.SetupMatrixAngles( m_PlayerTorsoAngle );
|
||||
}
|
||||
break;
|
||||
case HMM_SHOOTBOUNDEDMOUSE_LOOKFACE_MOVEFACE:
|
||||
@ -913,10 +900,8 @@ bool CClientVirtualReality::OverridePlayerMotion( float flInputSampleFrametime,
|
||||
}
|
||||
|
||||
// Let every other system know.
|
||||
AngleMatrix( *pNewAngles, m_WorldFromWeapon.As3x4() );
|
||||
AngleMatrix( m_PlayerTorsoAngle, worldFromTorso.As3x4() );
|
||||
// Restore the translation.
|
||||
m_WorldFromWeapon.SetTranslation ( vWeaponOrigin );
|
||||
m_WorldFromWeapon.SetupMatrixOrgAngles( vWeaponOrigin, *pNewAngles );
|
||||
worldFromTorso.SetupMatrixAngles( m_PlayerTorsoAngle );
|
||||
}
|
||||
break;
|
||||
case HMM_SHOOTMOUSE_MOVEFACE:
|
||||
@ -942,10 +927,8 @@ bool CClientVirtualReality::OverridePlayerMotion( float flInputSampleFrametime,
|
||||
m_PlayerTorsoAngle[ YAW ] += AngleDiff( curAngles[YAW], oldAngles[YAW] ) /2.f;
|
||||
}
|
||||
|
||||
AngleMatrix( *pNewAngles, m_WorldFromWeapon.As3x4() );
|
||||
AngleMatrix( m_PlayerTorsoAngle, worldFromTorso.As3x4() );
|
||||
// Restore the translation.
|
||||
m_WorldFromWeapon.SetTranslation ( vWeaponOrigin );
|
||||
m_WorldFromWeapon.SetupMatrixOrgAngles( vWeaponOrigin, *pNewAngles );
|
||||
worldFromTorso.SetupMatrixAngles( m_PlayerTorsoAngle );
|
||||
}
|
||||
break;
|
||||
default: Assert ( false ); break;
|
||||
@ -1007,101 +990,6 @@ bool CClientVirtualReality::OverridePlayerMotion( float flInputSampleFrametime,
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Purpose: Collects convar and HMD state once a session
|
||||
// --------------------------------------------------------------------
|
||||
bool CClientVirtualReality::CollectSessionStartStats( KeyValues *pkvStats )
|
||||
{
|
||||
pkvStats->SetName( "TF2VRSessionDetails" );
|
||||
|
||||
CUtlString sSerialNumber = g_pSourceVR->GetDisplaySerialNumber();
|
||||
if( sSerialNumber.IsValid() && !sSerialNumber.IsEmpty() )
|
||||
{
|
||||
pkvStats->SetString( "SerialNumber", sSerialNumber.Get() );
|
||||
}
|
||||
CUtlString sModelNumber = g_pSourceVR->GetDisplayModelNumber();
|
||||
if( sModelNumber.IsValid() && !sModelNumber.IsEmpty() )
|
||||
{
|
||||
pkvStats->SetString( "ModelNumberID", sModelNumber.Get() );
|
||||
}
|
||||
|
||||
pkvStats->SetFloat( "vr_separation_user_inches", g_pSourceVR->GetUserIPDMM() / 25.4f );
|
||||
//pkvStats->SetFloat( "vr_separation_toein_pixels", vr_separation_toein_pixels.GetFloat() );
|
||||
//pkvStats->SetInt( "vr_moveaim_mode", vr_moveaim_mode.GetInt() );
|
||||
//pkvStats->SetFloat( "vr_moveaim_reticle_yaw_limit", vr_moveaim_reticle_yaw_limit.GetFloat() );
|
||||
//pkvStats->SetFloat( "vr_moveaim_reticle_pitch_limit", vr_moveaim_reticle_pitch_limit.GetFloat() );
|
||||
//pkvStats->SetInt( "vr_moveaim_mode_zoom", vr_moveaim_mode_zoom.GetInt() );
|
||||
//pkvStats->SetFloat( "vr_moveaim_reticle_yaw_limit_zoom", vr_moveaim_reticle_yaw_limit_zoom.GetFloat() );
|
||||
//pkvStats->SetFloat( "vr_moveaim_reticle_pitch_limit_zoom", vr_moveaim_reticle_pitch_limit_zoom.GetFloat() );
|
||||
//pkvStats->SetFloat( "vr_hud_max_fov", vr_hud_max_fov.GetFloat() );
|
||||
//pkvStats->SetFloat( "vr_hud_forward", vr_hud_forward.GetFloat() );
|
||||
//pkvStats->SetFloat( "vr_neckmodel_up", vr_neckmodel_up.GetFloat() );
|
||||
//pkvStats->SetFloat( "vr_neckmodel_forwards", vr_neckmodel_forwards.GetFloat() );
|
||||
//pkvStats->SetInt( "vr_hud_axis_lock_to_world", vr_hud_axis_lock_to_world.GetInt() );
|
||||
|
||||
//pkvStats->SetInt( "vr_ipdtest_left_t", vr_ipdtest_left_t.GetInt() );
|
||||
//pkvStats->SetInt( "vr_ipdtest_left_b", vr_ipdtest_left_b.GetInt() );
|
||||
//pkvStats->SetInt( "vr_ipdtest_left_i", vr_ipdtest_left_i.GetInt() );
|
||||
//pkvStats->SetInt( "vr_ipdtest_left_o", vr_ipdtest_left_o.GetInt() );
|
||||
//pkvStats->SetInt( "vr_ipdtest_right_t", vr_ipdtest_right_t.GetInt() );
|
||||
//pkvStats->SetInt( "vr_ipdtest_right_b", vr_ipdtest_right_b.GetInt() );
|
||||
//pkvStats->SetInt( "vr_ipdtest_right_i", vr_ipdtest_right_i.GetInt() );
|
||||
//pkvStats->SetInt( "vr_ipdtest_right_o", vr_ipdtest_right_o.GetInt() );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Purpose: Collects view stats every so often
|
||||
// --------------------------------------------------------------------
|
||||
bool CClientVirtualReality::CollectPeriodicStats( KeyValues *pkvStats )
|
||||
{
|
||||
// maybe we haven't even been called to get tracking data
|
||||
if( !m_bMotionUpdated )
|
||||
return false;
|
||||
m_bMotionUpdated = false;
|
||||
|
||||
uint32 unPeriod = (uint32) vr_stat_sample_period.GetInt();
|
||||
if( unPeriod == 0 )
|
||||
return false; // periodic stats are turned off
|
||||
|
||||
RTime32 rtCurrent = time(NULL);
|
||||
if( rtCurrent == m_rtLastMotionSample && ( rtCurrent - m_rtLastMotionSample ) < unPeriod )
|
||||
return false; // it isn't time to report yet
|
||||
|
||||
pkvStats->SetName( "TF2VRMotionSample" );
|
||||
|
||||
pkvStats->SetInt( "SampleTime", rtCurrent );
|
||||
|
||||
Vector vPos;
|
||||
QAngle viewAngles;
|
||||
MatrixAngles( m_WorldFromMidEye.As3x4(), viewAngles, vPos );
|
||||
|
||||
pkvStats->SetFloat( "LookYaw", viewAngles[YAW] );
|
||||
pkvStats->SetFloat( "LookPitch", viewAngles[PITCH] );
|
||||
pkvStats->SetFloat( "LookRoll", viewAngles[ROLL] );
|
||||
pkvStats->SetFloat( "PositionX", vPos.x );
|
||||
pkvStats->SetFloat( "PositionY", vPos.y );
|
||||
pkvStats->SetFloat( "PositionZ", vPos.z );
|
||||
|
||||
pkvStats->SetFloat( "VelocityX", m_PlayerLastMovement.x );
|
||||
pkvStats->SetFloat( "VelocityY", m_PlayerLastMovement.y );
|
||||
pkvStats->SetFloat( "VelocityZ", m_PlayerLastMovement.z );
|
||||
|
||||
QAngle aimAngles;
|
||||
MatrixAngles( m_WorldFromWeapon.As3x4(), aimAngles );
|
||||
|
||||
pkvStats->SetFloat( "AimYaw", aimAngles[YAW] );
|
||||
pkvStats->SetFloat( "AimPitch", aimAngles[PITCH] );
|
||||
|
||||
m_rtLastMotionSample = rtCurrent;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Purpose: Returns true if the world is zoomed
|
||||
// --------------------------------------------------------------------
|
||||
@ -1154,6 +1042,19 @@ void CClientVirtualReality::CancelTorsoTransformOverride()
|
||||
}
|
||||
|
||||
|
||||
bool CClientVirtualReality::CanOverlayHudQuad()
|
||||
{
|
||||
bool bCanOverlay = true;
|
||||
|
||||
bCanOverlay = bCanOverlay && vr_render_hud_in_world.GetBool();
|
||||
bCanOverlay = bCanOverlay && ( ! vr_hud_never_overlay.GetBool() );
|
||||
bCanOverlay = bCanOverlay && ( vr_hud_axis_lock_to_world.GetInt() == 0 );
|
||||
bCanOverlay = bCanOverlay && ( m_hmmMovementActual != HMM_SHOOTFACE_MOVETORSO );
|
||||
|
||||
return bCanOverlay;
|
||||
}
|
||||
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Purpose: Returns the bounds in world space where the game should
|
||||
// position the HUD.
|
||||
@ -1177,6 +1078,10 @@ void CClientVirtualReality::GetHUDBounds( Vector *pViewer, Vector *pUL, Vector *
|
||||
// --------------------------------------------------------------------
|
||||
void CClientVirtualReality::RenderHUDQuad( bool bBlackout, bool bTranslucent )
|
||||
{
|
||||
// If we can overlay the HUD directly onto the target later, we'll do that instead (higher image quality).
|
||||
if ( CanOverlayHudQuad() )
|
||||
return;
|
||||
|
||||
Vector vHead, vUL, vUR, vLL, vLR;
|
||||
GetHUDBounds ( &vHead, &vUL, &vUR, &vLL, &vLR );
|
||||
|
||||
@ -1304,14 +1209,6 @@ float CClientVirtualReality::GetZoomedModeMagnification()
|
||||
// --------------------------------------------------------------------
|
||||
bool CClientVirtualReality::ProcessCurrentTrackingState( float fGameFOV )
|
||||
{
|
||||
// Figure out the current HUD FOV.
|
||||
m_fHudHorizontalFov = g_pSourceVR->GetHorizontalFOVDegrees() * vr_hud_display_ratio.GetFloat();
|
||||
if( m_fHudHorizontalFov > vr_hud_max_fov.GetFloat() )
|
||||
{
|
||||
m_fHudHorizontalFov = vr_hud_max_fov.GetFloat();
|
||||
}
|
||||
|
||||
|
||||
m_WorldZoomScale = 1.0f;
|
||||
if ( fGameFOV != 0.0f )
|
||||
{
|
||||
@ -1397,8 +1294,7 @@ void CClientVirtualReality::AlignTorsoAndViewToWeapon()
|
||||
if( !UseVR() )
|
||||
return;
|
||||
|
||||
VRTrackerState_t state = g_pSourceVR->GetTrackerState();
|
||||
if( state.bWillDriftInYaw )
|
||||
if( g_pSourceVR->WillDriftInYaw() )
|
||||
{
|
||||
m_iAlignTorsoAndViewToWeaponCountdown = 2;
|
||||
}
|
||||
@ -1408,291 +1304,202 @@ void CClientVirtualReality::AlignTorsoAndViewToWeapon()
|
||||
// --------------------------------------------------------------------
|
||||
// Purpose: Lets VR do stuff at the very end of the rendering process
|
||||
// --------------------------------------------------------------------
|
||||
void CClientVirtualReality::PostProcessFrame( const vrect_t *SrcRect )
|
||||
void CClientVirtualReality::PostProcessFrame( StereoEye_t eEye )
|
||||
{
|
||||
if( !UseVR() )
|
||||
return;
|
||||
|
||||
g_pSourceVR->DoDistortionProcessing( SrcRect );
|
||||
g_pSourceVR->DoDistortionProcessing( eEye == STEREO_EYE_LEFT ? ISourceVirtualReality::VREye_Left : ISourceVirtualReality::VREye_Right );
|
||||
}
|
||||
|
||||
if ( m_bIpdTestEnabled )
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Pastes the HUD directly onto the backbuffer / render target.
|
||||
// (higher quality than the RenderHUDQuad() path but can't always be used)
|
||||
// --------------------------------------------------------------------
|
||||
void CClientVirtualReality::OverlayHUDQuadWithUndistort( const CViewSetup &eyeView, bool bDoUndistort, bool bBlackout, bool bTranslucent )
|
||||
{
|
||||
if ( ! UseVR() )
|
||||
return;
|
||||
|
||||
// If we can't overlay the HUD, it will be handled on another path (rendered into the scene with RenderHUDQuad()).
|
||||
if ( ! CanOverlayHudQuad() )
|
||||
return;
|
||||
|
||||
// Get the position of the HUD quad in world space as used by RenderHUDQuad(). Then convert to a rectangle in normalized
|
||||
// device coordinates.
|
||||
|
||||
Vector vHead, vUL, vUR, vLL, vLR;
|
||||
GetHUDBounds ( &vHead, &vUL, &vUR, &vLL, &vLR );
|
||||
|
||||
VMatrix worldToView, viewToProjection, worldToProjection, worldToPixels;
|
||||
render->GetMatricesForView( eyeView, &worldToView, &viewToProjection, &worldToProjection, &worldToPixels );
|
||||
|
||||
Vector pUL, pUR, pLL, pLR;
|
||||
|
||||
worldToProjection.V3Mul( vUL, pUL );
|
||||
worldToProjection.V3Mul( vUR, pUR );
|
||||
worldToProjection.V3Mul( vLL, pLL );
|
||||
worldToProjection.V3Mul( vLR, pLR );
|
||||
|
||||
float ndcHudBounds[4];
|
||||
ndcHudBounds[0] = Min ( Min( pUL.x, pUR.x ), Min( pLL.x, pLR.x ) );
|
||||
ndcHudBounds[1] = Min ( Min( pUL.y, pUR.y ), Min( pLL.y, pLR.y ) );
|
||||
ndcHudBounds[2] = Max ( Max( pUL.x, pUR.x ), Max( pLL.x, pLR.x ) );
|
||||
ndcHudBounds[3] = Max ( Max( pUL.y, pUR.y ), Max( pLL.y, pLR.y ) );
|
||||
|
||||
ISourceVirtualReality::VREye sourceVrEye = ( eyeView.m_eStereoEye == STEREO_EYE_LEFT ) ? ISourceVirtualReality::VREye_Left : ISourceVirtualReality::VREye_Right;
|
||||
|
||||
g_pSourceVR->CompositeHud ( sourceVrEye, ndcHudBounds, bDoUndistort, bBlackout, bTranslucent );
|
||||
}
|
||||
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Purpose: Switches to VR mode
|
||||
// --------------------------------------------------------------------
|
||||
void CClientVirtualReality::Activate()
|
||||
{
|
||||
// we can only do this if a headtrack DLL is loaded
|
||||
if( !g_pSourceVR )
|
||||
return;
|
||||
|
||||
// see if VR mode is even enabled
|
||||
if( materials->GetCurrentConfigForVideoCard().m_nVRModeAdapter == -1 )
|
||||
{
|
||||
DrawIpdCalibration ( SrcRect );
|
||||
Warning( "Enable VR mode in the video options before trying to use it.\n" );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Calibration UI
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
// These control the conversion of IPD from pixels to inches.
|
||||
ConVar vr_ipdtest_interp_ipd_start_pixels ( "vr_ipdtest_interp_ipd_start_pixels", "491.0", 0 );
|
||||
ConVar vr_ipdtest_interp_ipd_start_inches ( "vr_ipdtest_interp_ipd_start_inches", "2.717", 0 ); // 69mm
|
||||
ConVar vr_ipdtest_interp_ipd_end_pixels ( "vr_ipdtest_interp_ipd_end_pixels", "602.0", 0 );
|
||||
ConVar vr_ipdtest_interp_ipd_end_inches ( "vr_ipdtest_interp_ipd_end_inches", "2.205", 0 ); // 56mm
|
||||
|
||||
// These numbers need to be filled in from physical tests. Right now they are placeholder.
|
||||
ConVar vr_ipdtest_interp_relief_start_pixels ( "vr_ipdtest_interp_relief_start_pixels", "400.0", 0 );
|
||||
ConVar vr_ipdtest_interp_relief_start_inches ( "vr_ipdtest_interp_relief_start_inches", "0.0", 0 );
|
||||
ConVar vr_ipdtest_interp_relief_end_pixels ( "vr_ipdtest_interp_relief_end_pixels", "600.0", 0 );
|
||||
ConVar vr_ipdtest_interp_relief_end_inches ( "vr_ipdtest_interp_relief_end_inches", "1.0", 0 );
|
||||
|
||||
|
||||
|
||||
|
||||
float Interpolate ( float fIn, float fInStart, float fInEnd, float fOutStart, float fOutEnd )
|
||||
{
|
||||
float fLamdba = ( fIn - fInStart ) / ( fInEnd - fInStart );
|
||||
float fOut = fOutStart + fLamdba * ( fOutEnd - fOutStart );
|
||||
return fOut;
|
||||
}
|
||||
|
||||
void CClientVirtualReality::RecalcEyeCalibration ( TEyeCalibration *p )
|
||||
{
|
||||
int iDisplayWidth, iDisplayHeight;
|
||||
bool bSuccess = g_pSourceVR->GetWindowSize ( &iDisplayWidth, &iDisplayHeight );
|
||||
Assert ( bSuccess );
|
||||
if ( bSuccess )
|
||||
// See if we have an actual adapter
|
||||
int32 nVRModeAdapter = g_pSourceVR->GetVRModeAdapter();
|
||||
if( nVRModeAdapter == -1 )
|
||||
{
|
||||
// Eye relief.
|
||||
// Many ways to take the average eye size. But since the top edge is hard to find (strains the eyes, and there's problems with glasses), let's just use the difference between left and right.
|
||||
p->Left.fSizePixels = (float)( p->Left.iIn - p->Left.iOut );
|
||||
p->Right.fSizePixels = (float)( p->Right.iIn - p->Right.iOut );
|
||||
// ...not that we have any data yet, nor do we know what to do with it if we had it.
|
||||
float fLeftInches = Interpolate ( p->Left.fSizePixels,
|
||||
vr_ipdtest_interp_relief_start_pixels.GetFloat(),
|
||||
vr_ipdtest_interp_relief_end_pixels.GetFloat(),
|
||||
vr_ipdtest_interp_relief_start_inches.GetFloat(),
|
||||
vr_ipdtest_interp_relief_end_inches.GetFloat() );
|
||||
p->Left.fReliefInches = fLeftInches;
|
||||
float fRightInches = Interpolate ( p->Right.fSizePixels,
|
||||
vr_ipdtest_interp_relief_start_pixels.GetFloat(),
|
||||
vr_ipdtest_interp_relief_end_pixels.GetFloat(),
|
||||
vr_ipdtest_interp_relief_start_inches.GetFloat(),
|
||||
vr_ipdtest_interp_relief_end_inches.GetFloat() );
|
||||
p->Right.fReliefInches = fRightInches;
|
||||
|
||||
// Calculate IPD
|
||||
// In and Out are both measured from the nearest edge of the display, i.e. the left ones from the left edge, the right ones from the right edge.
|
||||
float fLeftMid = (float)( p->Left.iIn + p->Left.iOut ) * 0.5f;
|
||||
float fRightMid = (float)( p->Right.iIn + p->Right.iOut ) * 0.5f;
|
||||
// An outside value of 0 is the first actual pixel on the outer edge of the display.
|
||||
// So if both values are 0, the two lines are (iDisplayWidth-1) apart.
|
||||
float fSeparationInPixels = (float)( iDisplayWidth - 1 ) - fLeftMid - fRightMid;
|
||||
float fIpdInches = Interpolate ( fSeparationInPixels,
|
||||
vr_ipdtest_interp_ipd_start_pixels.GetFloat(),
|
||||
vr_ipdtest_interp_ipd_end_pixels.GetFloat(),
|
||||
vr_ipdtest_interp_ipd_start_inches.GetFloat(),
|
||||
vr_ipdtest_interp_ipd_end_inches.GetFloat() );
|
||||
p->fIpdInches = fIpdInches;
|
||||
p->fIpdPixels = fSeparationInPixels;
|
||||
Warning( "Unable to get VRMode adapter from OpenVR. VR mode cannot be enabled. Try restarting and then enabling VR again.\n" );
|
||||
return;
|
||||
}
|
||||
|
||||
// we can only activate if we've got a VR device
|
||||
if( materials->GetCurrentConfigForVideoCard().m_nVRModeAdapter != nVRModeAdapter )
|
||||
{
|
||||
Warning( "VR Mode expects adapter %d which is different from %d which we are currently using. Try restarting and enabling VR mode again.\n",
|
||||
nVRModeAdapter, materials->GetCurrentConfigForVideoCard().m_nVRModeAdapter );
|
||||
engine->ExecuteClientCmd( "mat_enable_vrmode 0\n" );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CClientVirtualReality::GetCurrentEyeCalibration ( TEyeCalibration *p )
|
||||
{
|
||||
p->Left.iTop = vr_ipdtest_left_t.GetInt();
|
||||
p->Left.iBot = vr_ipdtest_left_b.GetInt();
|
||||
p->Left.iIn = vr_ipdtest_left_i.GetInt();
|
||||
p->Left.iOut = vr_ipdtest_left_o.GetInt();
|
||||
p->Right.iTop = vr_ipdtest_right_t.GetInt();
|
||||
p->Right.iBot = vr_ipdtest_right_b.GetInt();
|
||||
p->Right.iIn = vr_ipdtest_right_i.GetInt();
|
||||
p->Right.iOut = vr_ipdtest_right_o.GetInt();
|
||||
RecalcEyeCalibration ( p );
|
||||
m_IpdTestCurrent = *p;
|
||||
}
|
||||
// can't activate twice
|
||||
if( UseVR() )
|
||||
return;
|
||||
|
||||
void CClientVirtualReality::SetCurrentEyeCalibration ( TEyeCalibration const &p )
|
||||
{
|
||||
m_IpdTestCurrent = p;
|
||||
RecalcEyeCalibration ( &m_IpdTestCurrent );
|
||||
g_pSourceVR->SetUserIPDMM( m_IpdTestCurrent.fIpdInches * 25.4f );
|
||||
vr_ipdtest_left_t.SetValue ( m_IpdTestCurrent.Left.iTop );
|
||||
vr_ipdtest_left_b.SetValue ( m_IpdTestCurrent.Left.iBot );
|
||||
vr_ipdtest_left_i.SetValue ( m_IpdTestCurrent.Left.iIn );
|
||||
vr_ipdtest_left_o.SetValue ( m_IpdTestCurrent.Left.iOut );
|
||||
vr_ipdtest_right_t.SetValue ( m_IpdTestCurrent.Right.iTop );
|
||||
vr_ipdtest_right_b.SetValue ( m_IpdTestCurrent.Right.iBot );
|
||||
vr_ipdtest_right_i.SetValue ( m_IpdTestCurrent.Right.iIn );
|
||||
vr_ipdtest_right_o.SetValue ( m_IpdTestCurrent.Right.iOut );
|
||||
|
||||
#ifdef _DEBUG
|
||||
Warning ( " TBIO: left %d %d %d %d: right %d %d %d %d: %f inches\n", // Need the spaces to center it so I can read it!
|
||||
m_IpdTestCurrent.Left.iTop,
|
||||
m_IpdTestCurrent.Left.iBot,
|
||||
m_IpdTestCurrent.Left.iIn,
|
||||
m_IpdTestCurrent.Left.iOut,
|
||||
m_IpdTestCurrent.Right.iTop,
|
||||
m_IpdTestCurrent.Right.iBot,
|
||||
m_IpdTestCurrent.Right.iIn,
|
||||
m_IpdTestCurrent.Right.iOut,
|
||||
m_IpdTestCurrent.fIpdInches );
|
||||
// remember where we were
|
||||
m_bNonVRWindowed = g_pMaterialSystem->GetCurrentConfigForVideoCard().Windowed();
|
||||
vgui::surface()->GetScreenSize( m_nNonVRWidth, m_nNonVRHeight );
|
||||
#if defined( USE_SDL )
|
||||
static ConVarRef sdl_displayindex( "sdl_displayindex" );
|
||||
m_nNonVRSDLDisplayIndex = sdl_displayindex.GetInt();
|
||||
#endif
|
||||
|
||||
if( !g_pSourceVR->Activate() )
|
||||
{
|
||||
// we couldn't activate, so just punt on this whole thing
|
||||
return;
|
||||
}
|
||||
|
||||
// general all-game stuff
|
||||
engine->ExecuteClientCmd( "mat_reset_rendertargets\n" );
|
||||
|
||||
// game specific VR config
|
||||
CUtlString sCmd;
|
||||
sCmd.Format( "exec sourcevr_%s.cfg\n", COM_GetModDirectory() );
|
||||
engine->ExecuteClientCmd( sCmd.Get() );
|
||||
|
||||
vgui::surface()->SetSoftwareCursor( true );
|
||||
|
||||
#if defined(POSIX)
|
||||
ConVarRef m_rawinput( "m_rawinput" );
|
||||
m_bNonVRRawInput = m_rawinput.GetBool();
|
||||
m_rawinput.SetValue( 1 );
|
||||
|
||||
ConVarRef mat_vsync( "mat_vsync" );
|
||||
mat_vsync.SetValue( 0 );
|
||||
#endif
|
||||
|
||||
g_pMatSystemSurface->ForceScreenSizeOverride(true, 640, 480 );
|
||||
int nViewportWidth, nViewportHeight;
|
||||
|
||||
g_pSourceVR->GetViewportBounds( ISourceVirtualReality::VREye_Left, NULL, NULL, &nViewportWidth, &nViewportHeight );
|
||||
vgui::surface()->SetFullscreenViewportAndRenderTarget( 0, 0, nViewportWidth, nViewportHeight, g_pSourceVR->GetRenderTarget( ISourceVirtualReality::VREye_Left, ISourceVirtualReality::RT_Color ) );
|
||||
|
||||
vgui::ivgui()->SetVRMode( true );
|
||||
|
||||
VRRect_t rect;
|
||||
if( g_pSourceVR->GetDisplayBounds( &rect ) )
|
||||
{
|
||||
|
||||
// set mode
|
||||
char szCmd[ 256 ];
|
||||
Q_snprintf( szCmd, sizeof( szCmd ), "mat_setvideomode %i %i %i\n", rect.nWidth, rect.nHeight, vr_force_windowed.GetBool()? 1 : 0 );
|
||||
engine->ClientCmd_Unrestricted( szCmd );
|
||||
}
|
||||
}
|
||||
|
||||
void CClientVirtualReality::SetEyeCalibrationDisplayMisc ( int iEditingNum, bool bVisible )
|
||||
|
||||
void CClientVirtualReality::Deactivate()
|
||||
{
|
||||
if( bVisible && !m_bIpdTestEnabled )
|
||||
// can't deactivate when we aren't active
|
||||
if( !UseVR() )
|
||||
return;
|
||||
|
||||
g_pSourceVR->Deactivate();
|
||||
|
||||
g_pMatSystemSurface->ForceScreenSizeOverride(false, 0, 0 );
|
||||
g_pMaterialSystem->GetRenderContext()->Viewport( 0, 0, m_nNonVRWidth, m_nNonVRHeight );
|
||||
vgui::surface()->SetFullscreenViewportAndRenderTarget( 0, 0, m_nNonVRWidth, m_nNonVRHeight, NULL );
|
||||
|
||||
static ConVarRef cl_software_cursor( "cl_software_cursor" );
|
||||
vgui::surface()->SetSoftwareCursor( cl_software_cursor.GetBool() );
|
||||
|
||||
#if defined( USE_SDL )
|
||||
static ConVarRef sdl_displayindex( "sdl_displayindex" );
|
||||
sdl_displayindex.SetValue( m_nNonVRSDLDisplayIndex );
|
||||
#endif
|
||||
|
||||
#if defined(POSIX)
|
||||
ConVarRef m_rawinput( "m_rawinput" );
|
||||
m_rawinput.SetValue( m_bNonVRRawInput );
|
||||
#endif
|
||||
|
||||
// Make sure the client .dll root panel is at the proper point before doing the "SolveTraverse" calls
|
||||
vgui::VPANEL root = enginevgui->GetPanel( PANEL_CLIENTDLL );
|
||||
if ( root != 0 )
|
||||
{
|
||||
// if we're being shown, read out the current config from the convars
|
||||
GetCurrentEyeCalibration ( &m_IpdTestCurrent );
|
||||
vgui::ipanel()->SetSize( root, m_nNonVRWidth, m_nNonVRHeight );
|
||||
}
|
||||
// Same for client .dll tools
|
||||
root = enginevgui->GetPanel( PANEL_CLIENTDLL_TOOLS );
|
||||
if ( root != 0 )
|
||||
{
|
||||
vgui::ipanel()->SetSize( root, m_nNonVRWidth, m_nNonVRHeight );
|
||||
}
|
||||
|
||||
m_IpdTestControl = iEditingNum;
|
||||
m_bIpdTestEnabled = bVisible;
|
||||
int viewWidth, viewHeight;
|
||||
vgui::surface()->GetScreenSize( viewWidth, viewHeight );
|
||||
|
||||
engine->ExecuteClientCmd( "mat_reset_rendertargets\n" );
|
||||
|
||||
// set mode
|
||||
char szCmd[ 256 ];
|
||||
Q_snprintf( szCmd, sizeof( szCmd ), "mat_setvideomode %i %i %i\n", m_nNonVRWidth, m_nNonVRHeight, m_bNonVRWindowed ? 1 : 0 );
|
||||
engine->ClientCmd_Unrestricted( szCmd );
|
||||
|
||||
}
|
||||
|
||||
|
||||
void CClientVirtualReality::DrawIpdCalibration ( const vrect_t *SrcRect )
|
||||
// Called when startup is complete
|
||||
void CClientVirtualReality::StartupComplete()
|
||||
{
|
||||
int ControlNum = m_IpdTestControl;
|
||||
int WhichEdges = 0;
|
||||
bool bShowLeft = false;
|
||||
bool bShowRight = false;
|
||||
switch ( ControlNum )
|
||||
{
|
||||
case 0: case 1: case 2: case 3:
|
||||
bShowLeft = true;
|
||||
WhichEdges = 1 << ControlNum;
|
||||
break;
|
||||
case 4: case 5: case 6: case 7:
|
||||
bShowRight = true;
|
||||
WhichEdges = 1 << ControlNum;
|
||||
break;
|
||||
case 8:
|
||||
// Adjust IPD directly.
|
||||
bShowLeft = true;
|
||||
bShowRight = true;
|
||||
WhichEdges = 0x33;
|
||||
break;
|
||||
case 9:
|
||||
// Left relief.
|
||||
bShowLeft = true;
|
||||
WhichEdges = 0xff;
|
||||
break;
|
||||
case 10:
|
||||
// Right relief.
|
||||
bShowRight = true;
|
||||
WhichEdges = 0xff;
|
||||
break;
|
||||
default:
|
||||
Assert ( false );
|
||||
break;
|
||||
}
|
||||
|
||||
CMatRenderContextPtr pRenderContext( materials );
|
||||
|
||||
//pRenderContext->ClearColor4ub ( 0, 0, 0, 0 );
|
||||
//pRenderContext->ClearBuffers ( true, true );
|
||||
|
||||
IMaterial *pMaterial = materials->FindMaterial ( "debug/debugtranslucentsinglecolor", TEXTURE_GROUP_OTHER, true );
|
||||
pMaterial->ColorModulate( 1.0f, 1.0f, 1.0f );
|
||||
pMaterial->AlphaModulate( 1.0f );
|
||||
|
||||
const int Border = 4;
|
||||
const int BlueStart = 10; // Well, it used to be blue, now it isn't.
|
||||
const int BlueSize = 30;
|
||||
|
||||
// You want a pure green for the "current" edge so that it has no chromatic aberration smearing (i.e. white is a terrible choice!)
|
||||
// The non-current lines can be a different colour because you're not actively tuning them.
|
||||
#define SET_COLOR1(num) if ( 0 != ( WhichEdges & (1<<(num)) ) ) { pMaterial->ColorModulate( 0.0f, 1.0f, 0.0f ); } else { pMaterial->ColorModulate( 0.25f, 0.25f, 0.25f ); }
|
||||
#define SET_COLOR2(num) if ( 0 != ( WhichEdges & (1<<(num)) ) ) { pMaterial->ColorModulate( 1.0f, 1.0f, 1.0f ); } else { pMaterial->ColorModulate( 0.0f, 0.0f, 0.0f ); }
|
||||
|
||||
if ( bShowLeft )
|
||||
{
|
||||
int t = m_IpdTestCurrent.Left.iTop;
|
||||
int b = m_IpdTestCurrent.Left.iBot;
|
||||
int l = m_IpdTestCurrent.Left.iOut;
|
||||
int r = m_IpdTestCurrent.Left.iIn;
|
||||
|
||||
// Render a black rect to enhance contrast.
|
||||
pMaterial->ColorModulate( 0.0f, 0.0f, 0.0f );
|
||||
pMaterial->AlphaModulate( 1.0f );
|
||||
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, l-Border-1, t-Border-1, r-l+Border*2+3, Border*2+3, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, l-Border-1, b-Border-1, r-l+Border*2+3, Border*2+3, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, l-Border-1, t-Border-1, Border*2+3, b-t+Border*2+3, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, r-Border-1, t-Border-1, Border*2+3, b-t+Border*2+3, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
|
||||
int cx = (l+r)/2;
|
||||
int cy = (t+b)/2;
|
||||
|
||||
// For each side, draw the line along the side, and also a line "pointing to" it from the middle.
|
||||
// Left
|
||||
SET_COLOR1(1);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, l, t, 1, b-t+1, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
SET_COLOR2(1);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, l+BlueStart, cy-1, BlueSize, 3, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
|
||||
// Right
|
||||
SET_COLOR1(0);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, r, t, 1, b-t+1, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
SET_COLOR2(0);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, r-BlueStart-BlueSize, cy-1, BlueSize, 3, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
|
||||
// Top
|
||||
SET_COLOR1(2);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, l, t, r-l+1, 1, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
SET_COLOR2(2);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, cx-1, t+BlueStart, 3, BlueSize, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
|
||||
// Bottom
|
||||
SET_COLOR1(3);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, l, b, r-l+1, 1, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
SET_COLOR2(3);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, cx-1, b-BlueStart-BlueSize, 3, BlueSize, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
}
|
||||
|
||||
if ( bShowRight )
|
||||
{
|
||||
int t = m_IpdTestCurrent.Right.iTop;
|
||||
int b = m_IpdTestCurrent.Right.iBot;
|
||||
// An outside value of 0 is the first actual pixel on the edge of the display. So if both values are 0, the two lines are (SrcRect->width - 1) apart.
|
||||
int l = SrcRect->width - 1 - m_IpdTestCurrent.Right.iIn;
|
||||
int r = SrcRect->width - 1 - m_IpdTestCurrent.Right.iOut;
|
||||
|
||||
// Render a black rect to enhance contrast.
|
||||
pMaterial->ColorModulate( 0.0f, 0.0f, 0.0f );
|
||||
pMaterial->AlphaModulate( 1.0f );
|
||||
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, l-Border-1, t-Border-1, r-l+Border*2+3, Border*2+3, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, l-Border-1, b-Border-1, r-l+Border*2+3, Border*2+3, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, l-Border-1, t-Border-1, Border*2+3, b-t+Border*2+3, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, r-Border-1, t-Border-1, Border*2+3, b-t+Border*2+3, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
|
||||
int cx = (l+r)/2;
|
||||
int cy = (t+b)/2;
|
||||
|
||||
// For each side, draw the line along the side, and also a line "pointing to" it from the middle.
|
||||
// Left
|
||||
SET_COLOR1(4);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, l, t, 1, b-t+1, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
SET_COLOR2(4);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, l+BlueStart, cy-1, BlueSize, 3, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
|
||||
// Right
|
||||
SET_COLOR1(5);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, r, t, 1, b-t+1, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
SET_COLOR2(5);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, r-BlueStart-BlueSize, cy-1, BlueSize, 3, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
|
||||
// Top
|
||||
SET_COLOR1(6);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, l, t, r-l+1, 1, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
SET_COLOR2(6);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, cx-1, t+BlueStart, 3, BlueSize, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
|
||||
// Bottom
|
||||
SET_COLOR1(7);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, l, b, r-l+1, 1, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
SET_COLOR2(7);
|
||||
pRenderContext->DrawScreenSpaceRectangle ( pMaterial, cx-1, b-BlueStart-BlueSize, 3, BlueSize, 0.0f, 0.0f, 0.0f, 0.0f, 16, 16 );
|
||||
}
|
||||
|
||||
return;
|
||||
if( vr_activate_default.GetBool() )
|
||||
Activate();
|
||||
}
|
||||
|
||||
|
@ -14,6 +14,7 @@
|
||||
|
||||
#include "tier3/tier3.h"
|
||||
#include "iclientvirtualreality.h"
|
||||
#include "view_shared.h"
|
||||
|
||||
enum HeadtrackMovementMode_t
|
||||
{
|
||||
@ -34,20 +35,6 @@ enum HeadtrackMovementMode_t
|
||||
};
|
||||
|
||||
|
||||
// used for interacting with the calibration UI
|
||||
struct TEyeCalibration
|
||||
{
|
||||
struct TEyeEdges
|
||||
{
|
||||
int iTop, iBot, iIn, iOut; // These are used to calculate everything else.
|
||||
float fSizePixels;
|
||||
float fReliefInches;
|
||||
} Left, Right;
|
||||
|
||||
float fIpdPixels;
|
||||
float fIpdInches;
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// The implementation
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -77,6 +64,8 @@ public:
|
||||
virtual InitReturnVal_t Init();
|
||||
virtual void Shutdown();
|
||||
|
||||
// Called when startup is complete
|
||||
void StartupComplete();
|
||||
|
||||
//---------------------------------------------------------
|
||||
// IClientVirtualReality implementation
|
||||
@ -94,6 +83,7 @@ public:
|
||||
bool CurrentlyZoomed();
|
||||
void OverrideTorsoTransform( const Vector & position, const QAngle & angles ) ;
|
||||
void CancelTorsoTransformOverride( ) ;
|
||||
bool CanOverlayHudQuad();
|
||||
void GetHUDBounds( Vector *pViewer, Vector *pUL, Vector *pUR, Vector *pLL, Vector *pLR );
|
||||
void RenderHUDQuad( bool bBlackout, bool bTranslucent );
|
||||
float GetZoomedModeMagnification();
|
||||
@ -105,23 +95,14 @@ public:
|
||||
const VMatrix & GetWorldFromMidEye() const { return m_WorldFromMidEyeNoDebugCam; }
|
||||
void OverrideViewModelTransform( Vector & vmorigin, QAngle & vmangles, bool bUseLargeOverride );
|
||||
void AlignTorsoAndViewToWeapon();
|
||||
void PostProcessFrame( const vrect_t *SrcRect );
|
||||
void PostProcessFrame( StereoEye_t eEye );
|
||||
void OverlayHUDQuadWithUndistort( const CViewSetup &view, bool bDoUndistort, bool bBlackout, bool bTranslucent );
|
||||
|
||||
//---------------------------------------------------------
|
||||
// Stat collection
|
||||
// Enter/leave VR mode
|
||||
//---------------------------------------------------------
|
||||
bool CollectSessionStartStats( KeyValues *pkvStats );
|
||||
bool CollectPeriodicStats( KeyValues *pkvStats );
|
||||
|
||||
//---------------------------------------------------------
|
||||
// IPD Calibration
|
||||
//---------------------------------------------------------
|
||||
void DrawIpdCalibration ( const vrect_t *SrcRect );
|
||||
|
||||
void RecalcEyeCalibration ( TEyeCalibration *p );
|
||||
void GetCurrentEyeCalibration ( TEyeCalibration *p );
|
||||
void SetCurrentEyeCalibration ( TEyeCalibration const &p );
|
||||
void SetEyeCalibrationDisplayMisc ( int iEditingNum, bool bVisible );
|
||||
void Activate();
|
||||
void Deactivate();
|
||||
|
||||
private:
|
||||
HeadtrackMovementMode_t m_hmmMovementActual;
|
||||
@ -169,11 +150,14 @@ private:
|
||||
|
||||
RTime32 m_rtLastMotionSample;
|
||||
|
||||
// IPD test fields
|
||||
bool m_bIpdTestEnabled;
|
||||
int m_IpdTestControl;
|
||||
TEyeCalibration m_IpdTestCurrent;
|
||||
|
||||
// video mode we had before we entered VR mode
|
||||
bool m_bNonVRWindowed;
|
||||
int m_nNonVRWidth;
|
||||
int m_nNonVRHeight;
|
||||
#if defined( USE_SDL )
|
||||
int m_nNonVRSDLDisplayIndex;
|
||||
#endif
|
||||
bool m_bNonVRRawInput;
|
||||
};
|
||||
|
||||
extern CClientVirtualReality g_ClientVirtualReality;
|
||||
|
@ -36,7 +36,7 @@
|
||||
#include <vgui/ILocalize.h>
|
||||
#include "hud_vote.h"
|
||||
#include "ienginevgui.h"
|
||||
#include "headtrack/isourcevirtualreality.h"
|
||||
#include "sourcevr/isourcevirtualreality.h"
|
||||
#if defined( _X360 )
|
||||
#include "xbox/xbox_console.h"
|
||||
#endif
|
||||
@ -208,6 +208,7 @@ static void __MsgFunc_VGUIMenu( bf_read &msg )
|
||||
if ( count > 0 )
|
||||
{
|
||||
KeyValues *keys = new KeyValues("data");
|
||||
//Msg( "MsgFunc_VGUIMenu:\n" );
|
||||
|
||||
for ( int i=0; i<count; i++)
|
||||
{
|
||||
@ -216,10 +217,25 @@ static void __MsgFunc_VGUIMenu( bf_read &msg )
|
||||
|
||||
msg.ReadString( name, sizeof(name) );
|
||||
msg.ReadString( data, sizeof(data) );
|
||||
//Msg( " %s <- '%s'\n", name, data );
|
||||
|
||||
keys->SetString( name, data );
|
||||
}
|
||||
|
||||
// !KLUDGE! Whitelist of URL protocols formats for MOTD
|
||||
if (
|
||||
!V_stricmp( panelname, PANEL_INFO ) // MOTD
|
||||
&& keys->GetInt( "type", 0 ) == 2 // URL message type
|
||||
) {
|
||||
const char *pszURL = keys->GetString( "msg", "" );
|
||||
if ( Q_strncmp( pszURL, "http://", 7 ) != 0 && Q_strncmp( pszURL, "https://", 8 ) != 0 )
|
||||
{
|
||||
Warning( "Blocking MOTD URL '%s'; must begin with 'http://' or 'https://'\n", pszURL );
|
||||
keys->deleteThis();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
viewport->SetData( keys );
|
||||
|
||||
keys->deleteThis();
|
||||
@ -496,7 +512,7 @@ bool ClientModeShared::ShouldBlackoutAroundHUD()
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Allows the client mode to override mouse control stuff in headtrack
|
||||
// Purpose: Allows the client mode to override mouse control stuff in sourcevr
|
||||
//-----------------------------------------------------------------------------
|
||||
HeadtrackMovementMode_t ClientModeShared::ShouldOverrideHeadtrackControl()
|
||||
{
|
||||
|
@ -132,6 +132,7 @@ public:
|
||||
|
||||
virtual bool IsInfoPanelAllowed() OVERRIDE { return true; }
|
||||
virtual void InfoPanelDisplayed() OVERRIDE { }
|
||||
virtual bool IsHTMLInfoPanelAllowed() OVERRIDE { return true; }
|
||||
|
||||
protected:
|
||||
CBaseViewport *m_pViewport;
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include "vguitextwindow.h"
|
||||
#include <networkstringtabledefs.h>
|
||||
#include <cdll_client_int.h>
|
||||
#include <clientmode_shared.h>
|
||||
|
||||
#include <vgui/IScheme.h>
|
||||
#include <vgui/ILocalize.h>
|
||||
@ -165,8 +166,15 @@ void CTextWindow::ShowText( const char *text )
|
||||
void CTextWindow::ShowURL( const char *URL, bool bAllowUserToDisable )
|
||||
{
|
||||
#if defined( ENABLE_CHROMEHTMLWINDOW )
|
||||
if ( bAllowUserToDisable && cl_disablehtmlmotd.GetBool() )
|
||||
#ifdef _DEBUG
|
||||
Msg( "CTextWindow::ShowURL( %s )\n", URL );
|
||||
#endif
|
||||
|
||||
ClientModeShared *mode = ( ClientModeShared * )GetClientModeNormal();
|
||||
if ( ( bAllowUserToDisable && cl_disablehtmlmotd.GetBool() ) || !mode->IsHTMLInfoPanelAllowed() )
|
||||
{
|
||||
Warning( "Blocking HTML info panel '%s'; Using plaintext instead.\n", URL );
|
||||
|
||||
// User has disabled HTML TextWindows. Show the fallback as text only.
|
||||
if ( g_pStringTableInfoPanel )
|
||||
{
|
||||
@ -289,7 +297,15 @@ void CTextWindow::Update( void )
|
||||
}
|
||||
else if ( m_nContentType == TYPE_URL )
|
||||
{
|
||||
ShowURL( m_szMessage );
|
||||
if ( !Q_strncmp( m_szMessage, "http://", 7 ) || !Q_strncmp( m_szMessage, "https://", 8 ) || !Q_stricmp( m_szMessage, "about:blank" ) )
|
||||
{
|
||||
ShowURL( m_szMessage );
|
||||
}
|
||||
else
|
||||
{
|
||||
// We should have trapped this at a higher level
|
||||
Assert( !"URL protocol is missing or blocked" );
|
||||
}
|
||||
}
|
||||
else if ( m_nContentType == TYPE_FILE )
|
||||
{
|
||||
|
@ -146,6 +146,7 @@ void CHUDAutoAim::VidInit( void )
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CHUDAutoAim::ShouldDraw( void )
|
||||
{
|
||||
#ifndef HL1_CLIENT_DLL
|
||||
C_BaseHLPlayer *pLocalPlayer = (C_BaseHLPlayer *)C_BasePlayer::GetLocalPlayer();
|
||||
if ( pLocalPlayer )
|
||||
{
|
||||
@ -154,6 +155,7 @@ bool CHUDAutoAim::ShouldDraw( void )
|
||||
return false;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return ( (hud_draw_fixed_reticle.GetBool() || hud_draw_active_reticle.GetBool()) && CHudElement::ShouldDraw() && !engine->IsDrawingLoadingImage() );
|
||||
}
|
||||
|
@ -20,7 +20,7 @@
|
||||
#include "IEffects.h"
|
||||
#include "hudelement.h"
|
||||
#include "clienteffectprecachesystem.h"
|
||||
#include "headtrack/isourcevirtualreality.h"
|
||||
#include "sourcevr/isourcevirtualreality.h"
|
||||
|
||||
using namespace vgui;
|
||||
|
||||
|
@ -451,6 +451,17 @@ void CHudWeaponSelection::Paint()
|
||||
if ( !pSelectedWeapon )
|
||||
return;
|
||||
|
||||
bool bPushedViewport = false;
|
||||
if( hud_fastswitch.GetInt() == HUDTYPE_FASTSWITCH || hud_fastswitch.GetInt() == HUDTYPE_PLUS )
|
||||
{
|
||||
CMatRenderContextPtr pRenderContext( materials );
|
||||
if( pRenderContext->GetRenderTarget() )
|
||||
{
|
||||
surface()->PushFullscreenViewport();
|
||||
bPushedViewport = true;
|
||||
}
|
||||
}
|
||||
|
||||
// interpolate the selected box size between the small box size and the large box size
|
||||
// interpolation has been removed since there is no weapon pickup animation anymore, so it's all at the largest size
|
||||
float percentageDone = 1.0f; //min(1.0f, (gpGlobals->curtime - m_flPickupStartTime) / m_flWeaponPickupGrowTime);
|
||||
@ -727,6 +738,11 @@ void CHudWeaponSelection::Paint()
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if( bPushedViewport )
|
||||
{
|
||||
surface()->PopFullscreenViewport();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1025,8 +1041,6 @@ void CHudWeaponSelection::ApplySchemeSettings(vgui::IScheme *pScheme)
|
||||
{
|
||||
SetBounds( x, y, screenWide - x, screenTall - y );
|
||||
}
|
||||
|
||||
SetForceStereoRenderToFrameBuffer( true );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -114,7 +114,8 @@ void CHudBaseDeathNotice::Paint()
|
||||
DeathNoticeItem &msg = m_DeathNotices[i];
|
||||
|
||||
CHudTexture *icon = msg.iconDeath;
|
||||
|
||||
CHudTexture *iconPrekiller = msg.iconPreKiller;
|
||||
|
||||
wchar_t victim[256]=L"";
|
||||
wchar_t killer[256]=L"";
|
||||
|
||||
@ -125,10 +126,15 @@ void CHudBaseDeathNotice::Paint()
|
||||
|
||||
int iVictimTextWide = UTIL_ComputeStringWidth( m_hTextFont, victim ) + xSpacing;
|
||||
int iDeathInfoTextWide= msg.wzInfoText[0] ? UTIL_ComputeStringWidth( m_hTextFont, msg.wzInfoText ) + xSpacing : 0;
|
||||
int iDeathInfoEndTextWide= msg.wzInfoTextEnd[0] ? UTIL_ComputeStringWidth( m_hTextFont, msg.wzInfoTextEnd ) + xSpacing : 0;
|
||||
|
||||
int iKillerTextWide = killer[0] ? UTIL_ComputeStringWidth( m_hTextFont, killer ) + xSpacing : 0;
|
||||
int iLineTall = m_flLineHeight;
|
||||
int iTextTall = surface()->GetFontTall( m_hTextFont );
|
||||
int iconWide = 0, iconTall = 0, iDeathInfoOffset = 0, iVictimTextOffset = 0, iconActualWide = 0;
|
||||
|
||||
int iPreKillerTextWide = msg.wzPreKillerText[0] ? UTIL_ComputeStringWidth( m_hTextFont, msg.wzPreKillerText ) - xSpacing : 0;
|
||||
int iconPrekillerWide = 0, iconPrekillerActualWide = 0, iconPreKillerTall = 0;
|
||||
|
||||
// Get the local position for this notice
|
||||
if ( icon )
|
||||
@ -145,7 +151,25 @@ void CHudBaseDeathNotice::Paint()
|
||||
iconTall *= flScale;
|
||||
iconWide *= flScale;
|
||||
}
|
||||
int iTotalWide = iKillerTextWide + iconWide + iVictimTextWide + iDeathInfoTextWide + ( xMargin * 2 );
|
||||
|
||||
if ( iconPrekiller )
|
||||
{
|
||||
iconPrekillerActualWide = iconPrekiller->EffectiveWidth( 1.0f );
|
||||
iconPrekillerWide = iconPrekillerActualWide;
|
||||
iconPreKillerTall = iconPrekiller->EffectiveHeight( 1.0f );
|
||||
|
||||
int iconTallDesired = iLineTall-YRES(2);
|
||||
Assert( 0 != iconTallDesired );
|
||||
float flScale = (float) iconTallDesired / (float) iconPreKillerTall;
|
||||
|
||||
iconPrekillerActualWide *= flScale;
|
||||
iconPreKillerTall *= flScale;
|
||||
iconPrekillerWide *= flScale;
|
||||
}
|
||||
|
||||
int iTotalWide = iKillerTextWide + iconWide + iVictimTextWide + iDeathInfoTextWide + iDeathInfoEndTextWide + ( xMargin * 2 );
|
||||
iTotalWide += iconPrekillerWide + iPreKillerTextWide;
|
||||
|
||||
int y = yStart + ( ( iLineTall + m_flLineSpacing ) * i );
|
||||
int yText = y + ( ( iLineTall - iTextTall ) / 2 );
|
||||
int yIcon = y + ( ( iLineTall - iconTall ) / 2 );
|
||||
@ -160,11 +184,11 @@ void CHudBaseDeathNotice::Paint()
|
||||
Vertex_t vert[NUM_BACKGROUND_COORD];
|
||||
GetBackgroundPolygonVerts( x, y+1, x+iTotalWide, y+iLineTall-1, ARRAYSIZE( vert ), vert );
|
||||
surface()->DrawSetTexture( -1 );
|
||||
surface()->DrawSetColor( msg.bLocalPlayerInvolved ? m_clrLocalBGColor : m_clrBaseBGColor );
|
||||
surface()->DrawSetColor( GetBackgroundColor ( i ) );
|
||||
surface()->DrawTexturedPolygon( ARRAYSIZE( vert ), vert );
|
||||
|
||||
x += xMargin;
|
||||
|
||||
|
||||
if ( killer[0] )
|
||||
{
|
||||
// Draw killer's name
|
||||
@ -172,6 +196,22 @@ void CHudBaseDeathNotice::Paint()
|
||||
x += iKillerTextWide;
|
||||
}
|
||||
|
||||
// prekiller text
|
||||
if ( msg.wzPreKillerText[0] )
|
||||
{
|
||||
x += xSpacing;
|
||||
DrawText( x + iDeathInfoOffset, yText, m_hTextFont, GetInfoTextColor( i ), msg.wzPreKillerText );
|
||||
x += iPreKillerTextWide;
|
||||
}
|
||||
|
||||
// Prekiller icon
|
||||
if ( iconPrekiller )
|
||||
{
|
||||
int yPreIconTall = y + ( ( iLineTall - iconPreKillerTall ) / 2 );
|
||||
iconPrekiller->DrawSelf( x, yPreIconTall, iconPrekillerActualWide, iconPreKillerTall, m_clrIcon );
|
||||
x += iconPrekillerWide + xSpacing;
|
||||
}
|
||||
|
||||
// Draw glow behind weapon icon to show it was a crit death
|
||||
if ( msg.bCrit && msg.iconCritDeath )
|
||||
{
|
||||
@ -194,13 +234,19 @@ void CHudBaseDeathNotice::Paint()
|
||||
iVictimTextOffset -= iDeathInfoTextWide;
|
||||
}
|
||||
|
||||
DrawText( x + iDeathInfoOffset, yText, m_hTextFont, GetInfoTextColor( msg.bLocalPlayerInvolved ), msg.wzInfoText );
|
||||
DrawText( x + iDeathInfoOffset, yText, m_hTextFont, GetInfoTextColor( i ), msg.wzInfoText );
|
||||
x += iDeathInfoTextWide;
|
||||
}
|
||||
|
||||
// Draw victims name
|
||||
DrawText( x + iVictimTextOffset, yText, m_hTextFont, GetTeamColor( msg.Victim.iTeam, msg.bLocalPlayerInvolved ), victim );
|
||||
x += iVictimTextWide;
|
||||
|
||||
// Draw Additional Text on the end of the victims name
|
||||
if ( msg.wzInfoTextEnd[0] )
|
||||
{
|
||||
DrawText( x , yText, m_hTextFont, GetInfoTextColor( i ), msg.wzInfoTextEnd );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -358,7 +404,12 @@ void CHudBaseDeathNotice::FireGameEvent( IGameEvent *event )
|
||||
bLocalPlayerInvolved = true;
|
||||
}
|
||||
|
||||
if ( event->GetInt( "damagebits" ) & DMG_CRITICAL )
|
||||
if ( event->GetInt( "death_flags" ) & TF_DEATH_AUSTRALIUM )
|
||||
{
|
||||
m_DeathNotices[iMsg].bCrit= true;
|
||||
m_DeathNotices[iMsg].iconCritDeath = GetIcon( "d_australium", bLocalPlayerInvolved ? kDeathNoticeIcon_Inverted : kDeathNoticeIcon_Standard );
|
||||
}
|
||||
else if ( event->GetInt( "damagebits" ) & DMG_CRITICAL )
|
||||
{
|
||||
m_DeathNotices[iMsg].bCrit= true;
|
||||
m_DeathNotices[iMsg].iconCritDeath = GetIcon( "d_crit", bLocalPlayerInvolved ? kDeathNoticeIcon_Inverted : kDeathNoticeIcon_Standard );
|
||||
|
@ -30,6 +30,7 @@ struct DeathNoticeItem
|
||||
{
|
||||
szIcon[0]=0;
|
||||
wzInfoText[0]=0;
|
||||
wzInfoTextEnd[0]=0;
|
||||
iconDeath = NULL;
|
||||
iconCritDeath = NULL;
|
||||
bSelfInflicted = false;
|
||||
@ -40,6 +41,9 @@ struct DeathNoticeItem
|
||||
iWeaponID = -1;
|
||||
iKillerID = -1;
|
||||
iVictimID = -1;
|
||||
|
||||
iconPreKiller = NULL;
|
||||
wzPreKillerText[0] = 0;
|
||||
}
|
||||
|
||||
float GetExpiryTime();
|
||||
@ -48,8 +52,13 @@ struct DeathNoticeItem
|
||||
DeathNoticePlayer Victim;
|
||||
char szIcon[32]; // name of icon to display
|
||||
wchar_t wzInfoText[32]; // any additional text to display next to icon
|
||||
wchar_t wzInfoTextEnd[32]; // any additional text to display next to victim name
|
||||
CHudTexture *iconDeath;
|
||||
CHudTexture *iconCritDeath; // crit background icon
|
||||
|
||||
CHudTexture *iconPreKiller;
|
||||
wchar_t wzPreKillerText[32];
|
||||
|
||||
bool bSelfInflicted;
|
||||
bool bLocalPlayerInvolved;
|
||||
bool bCrit;
|
||||
@ -104,7 +113,8 @@ protected:
|
||||
virtual int UseExistingNotice( IGameEvent *event ) { return -1; }
|
||||
|
||||
void GetLocalizedControlPointName( IGameEvent *event, char *namebuf, int namelen );
|
||||
virtual Color GetInfoTextColor( bool bLocalPlayerInvolved ){ return Color( 255, 255, 255, 255 ); }
|
||||
virtual Color GetInfoTextColor( int iDeathNoticeMsg ){ return Color( 255, 255, 255, 255 ); }
|
||||
virtual Color GetBackgroundColor ( int iDeathNoticeMsg ) { return m_DeathNotices[iDeathNoticeMsg].bLocalPlayerInvolved ? m_clrLocalBGColor : m_clrBaseBGColor; }
|
||||
|
||||
CPanelAnimationVarAliasType( float, m_flLineHeight, "LineHeight", "16", "proportional_float" );
|
||||
CPanelAnimationVarAliasType( float, m_flLineSpacing, "LineSpacing", "4", "proportional_float" );
|
||||
@ -115,6 +125,7 @@ protected:
|
||||
CPanelAnimationVar( Color, m_clrIcon, "IconColor", "255 80 0 255" );
|
||||
CPanelAnimationVar( Color, m_clrBaseBGColor, "BaseBackgroundColor", "46 43 42 220" );
|
||||
CPanelAnimationVar( Color, m_clrLocalBGColor, "LocalBackgroundColor", "245 229 196 200" );
|
||||
CPanelAnimationVar( Color, m_clrKillStreakBg, "KillStreakBackgroundColor", "224 223 219 200" );
|
||||
|
||||
CUtlVector<DeathNoticeItem> m_DeathNotices;
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include "materialsystem/imaterialsystem.h"
|
||||
#include "VGuiMatSurface/IMatSystemSurface.h"
|
||||
#include "client_virtualreality.h"
|
||||
#include "headtrack/isourcevirtualreality.h"
|
||||
#include "sourcevr/isourcevirtualreality.h"
|
||||
|
||||
#ifdef SIXENSE
|
||||
#include "sixense/in_sixense.h"
|
||||
|
@ -1059,6 +1059,10 @@ void CHudVote::MsgFunc_CallVoteFailed( bf_read &msg )
|
||||
case VOTE_FAILED_CANNOT_KICK_DURING_ROUND:
|
||||
m_pCallVoteFailed->SetControlString( "FailedReason", "#GameUI_vote_failed_round_active" );
|
||||
break;
|
||||
|
||||
case VOTE_FAILED_MODIFICATION_ALREADY_ACTIVE:
|
||||
m_pCallVoteFailed->SetControlString( "FailedReason", "#GameUI_vote_failed_event_already_active" );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -147,6 +147,7 @@ public:
|
||||
|
||||
virtual bool IsInfoPanelAllowed() = 0;
|
||||
virtual void InfoPanelDisplayed() = 0;
|
||||
virtual bool IsHTMLInfoPanelAllowed() = 0;
|
||||
};
|
||||
|
||||
extern IClientMode *g_pClientMode;
|
||||
|
@ -31,7 +31,7 @@
|
||||
#endif
|
||||
|
||||
#include "client_virtualreality.h"
|
||||
#include "headtrack/isourcevirtualreality.h"
|
||||
#include "sourcevr/isourcevirtualreality.h"
|
||||
|
||||
// NVNT Include
|
||||
#include "haptics/haptic_utils.h"
|
||||
|
@ -1185,6 +1185,7 @@ CReplayPerformanceEditorPanel::CReplayPerformanceEditorPanel( Panel *parent, Rep
|
||||
m_nRedBlueSigns[0] = -1;
|
||||
m_nRedBlueSigns[1] = 1;
|
||||
m_iCurPlayerTarget = -1;
|
||||
m_bCurrentTargetNeedsVisibilityUpdate = false;
|
||||
|
||||
m_pImageList = new ImageList( false );
|
||||
|
||||
@ -1737,6 +1738,19 @@ void CReplayPerformanceEditorPanel::OnTick()
|
||||
pCamera->SetPrimaryTarget( m_iCurPlayerTarget );
|
||||
}
|
||||
|
||||
// fixes a case where the replay would be paused and the player would cycle cameras but the
|
||||
// target's visibility wouldn't be updated until the replay was unpaused (they would be invisible)
|
||||
if ( m_bCurrentTargetNeedsVisibilityUpdate )
|
||||
{
|
||||
C_BaseEntity *pTarget = ClientEntityList().GetEnt( pCamera->GetPrimaryTargetIndex() );
|
||||
if ( pTarget )
|
||||
{
|
||||
pTarget->UpdateVisibility();
|
||||
}
|
||||
|
||||
m_bCurrentTargetNeedsVisibilityUpdate = false;
|
||||
}
|
||||
|
||||
// If in free-cam mode, add set view event if we're not paused
|
||||
if ( bInAControllableCameraMode && m_bShownAtLeastOnce && bRecording )
|
||||
{
|
||||
@ -2444,12 +2458,14 @@ void CReplayPerformanceEditorPanel::OnCommand( const char *command )
|
||||
{
|
||||
ReplayCamera()->SetMode( OBS_MODE_IN_EYE );
|
||||
UpdateCameraSelectionPosition( CAM_FIRST );
|
||||
m_bCurrentTargetNeedsVisibilityUpdate = true;
|
||||
g_pReplayPerformanceController->AddEvent_Camera_Change_FirstPerson( flCurTime, nEntIndex );
|
||||
}
|
||||
else if ( !V_stricmp( pCamType, "third" ) )
|
||||
{
|
||||
ReplayCamera()->SetMode( OBS_MODE_CHASE );
|
||||
UpdateCameraSelectionPosition( CAM_THIRD );
|
||||
m_bCurrentTargetNeedsVisibilityUpdate = true;
|
||||
g_pReplayPerformanceController->AddEvent_Camera_Change_ThirdPerson( flCurTime, nEntIndex );
|
||||
AddSetViewEvent();
|
||||
}
|
||||
@ -2457,6 +2473,7 @@ void CReplayPerformanceEditorPanel::OnCommand( const char *command )
|
||||
{
|
||||
ReplayCamera()->SetMode( OBS_MODE_ROAMING );
|
||||
UpdateCameraSelectionPosition( CAM_FREE );
|
||||
m_bCurrentTargetNeedsVisibilityUpdate = true;
|
||||
g_pReplayPerformanceController->AddEvent_Camera_Change_Free( flCurTime );
|
||||
AddSetViewEvent();
|
||||
DisplayPerformanceTip( "#Replay_PerfTip_EnterFreeCam", &replay_perftip_count_freecam_enter, MAX_TIP_DISPLAYS );
|
||||
|
@ -224,6 +224,8 @@ private:
|
||||
float m_flActiveTimeInEditor; // Will be zero'd out if user is idle (ie if they don't press space bar often enough)
|
||||
|
||||
CPanelAnimationVarAliasType( int, m_nRightMarginWidth, "right_margin_width", "0", "proportional_xpos" );
|
||||
|
||||
bool m_bCurrentTargetNeedsVisibilityUpdate;
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -62,7 +62,7 @@ using sixenseMath::Line;
|
||||
#include "iinput.h"
|
||||
#include "game/client/iviewport.h"
|
||||
#include "filesystem.h"
|
||||
#include "headtrack/isourcevirtualreality.h"
|
||||
#include "sourcevr/isourcevirtualreality.h"
|
||||
|
||||
#ifdef TF_CLIENT_DLL
|
||||
#include "tf_hud_menu_engy_build.h"
|
||||
|
@ -36,13 +36,14 @@
|
||||
#include "materialsystem/itexture.h"
|
||||
#include "materialsystem/imaterialsystem.h"
|
||||
#include "materialsystem/materialsystem_config.h"
|
||||
#include "VGuiMatSurface/IMatSystemSurface.h"
|
||||
#include "toolframework_client.h"
|
||||
#include "tier0/icommandline.h"
|
||||
#include "ienginevgui.h"
|
||||
#include <vgui_controls/Controls.h>
|
||||
#include <vgui/ISurface.h>
|
||||
#include "ScreenSpaceEffects.h"
|
||||
#include "headtrack/isourcevirtualreality.h"
|
||||
#include "sourcevr/isourcevirtualreality.h"
|
||||
#include "client_virtualreality.h"
|
||||
|
||||
#if defined( REPLAY_ENABLED )
|
||||
@ -84,10 +85,6 @@ extern ConVar sensitivity;
|
||||
|
||||
ConVar zoom_sensitivity_ratio( "zoom_sensitivity_ratio", "1.0", 0, "Additional mouse sensitivity scale factor applied when FOV is zoomed in." );
|
||||
|
||||
#ifdef STAGING_ONLY
|
||||
ConVar vr_stereo_debug_viewport( "vr_stereo_debug_viewport", "0" );
|
||||
#endif
|
||||
|
||||
CViewRender g_DefaultViewRender;
|
||||
IViewRender *view = NULL; // set in cldll_client_init.cpp if no mod creates their own
|
||||
|
||||
@ -301,16 +298,6 @@ void CViewRender::Init( void )
|
||||
m_pDrawEntities = cvar->FindVar( "r_drawentities" );
|
||||
m_pDrawBrushModels = cvar->FindVar( "r_drawbrushmodels" );
|
||||
|
||||
if( UseVR() )
|
||||
{
|
||||
m_eStartEye = STEREO_EYE_LEFT;
|
||||
m_eLastEye = STEREO_EYE_RIGHT;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_eStartEye = m_eLastEye = STEREO_EYE_MONO;
|
||||
}
|
||||
|
||||
beams->InitBeams();
|
||||
tempents->Init();
|
||||
|
||||
@ -500,12 +487,18 @@ void CViewRender::DriftPitch (void)
|
||||
|
||||
StereoEye_t CViewRender::GetFirstEye() const
|
||||
{
|
||||
return m_eStartEye;
|
||||
if( UseVR() )
|
||||
return STEREO_EYE_LEFT;
|
||||
else
|
||||
return STEREO_EYE_MONO;
|
||||
}
|
||||
|
||||
StereoEye_t CViewRender::GetLastEye() const
|
||||
{
|
||||
return m_eLastEye;
|
||||
if( UseVR() )
|
||||
return STEREO_EYE_RIGHT;
|
||||
else
|
||||
return STEREO_EYE_MONO;
|
||||
}
|
||||
|
||||
|
||||
@ -1177,57 +1170,14 @@ void CViewRender::Render( vrect_t *rect )
|
||||
}
|
||||
break;
|
||||
|
||||
case STEREO_EYE_RIGHT:
|
||||
case STEREO_EYE_LEFT:
|
||||
{
|
||||
#ifdef STAGING_ONLY
|
||||
if ( vr_stereo_debug_viewport.GetBool() )
|
||||
{
|
||||
// Stress-test for crazy viewports.
|
||||
view.width = vr.width * flViewportScale * 0.25f;
|
||||
view.height = vr.height * flViewportScale * 0.75f;
|
||||
view.x = vr.x * flViewportScale;
|
||||
view.y = (vr.y + vr.height * 0.20f) * flViewportScale;
|
||||
|
||||
view.m_nUnscaledWidth = vr.width / 2;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
view.width = vr.width * flViewportScale * 0.5f;
|
||||
view.height = vr.height * flViewportScale;
|
||||
view.x = vr.x * flViewportScale ;
|
||||
view.y = vr.y * flViewportScale;
|
||||
|
||||
view.m_nUnscaledWidth = vr.width / 2;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case STEREO_EYE_RIGHT:
|
||||
{
|
||||
#ifdef STAGING_ONLY
|
||||
if ( vr_stereo_debug_viewport.GetBool() )
|
||||
{
|
||||
// Stress-test for crazy viewports.
|
||||
view.width = vr.width * flViewportScale * 0.75f;
|
||||
view.height = vr.height * flViewportScale * 0.75f;
|
||||
view.x = vr.x + vr.width * 0.25f;
|
||||
view.y = vr.y + vr.height * 0.1f;
|
||||
|
||||
view.m_nUnscaledWidth = vr.width / 2;
|
||||
view.m_nUnscaledX = vr.x + view.m_nUnscaledWidth;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
view.width = vr.width * flViewportScale * 0.5f;
|
||||
view.height = vr.height * flViewportScale;
|
||||
view.x = (vr.x + view.width) * flViewportScale;
|
||||
view.y = vr.y * flViewportScale;
|
||||
|
||||
view.m_nUnscaledWidth = vr.width / 2;
|
||||
view.m_nUnscaledX = vr.x + view.m_nUnscaledWidth;
|
||||
}
|
||||
g_pSourceVR->GetViewportBounds( (ISourceVirtualReality::VREye)(eEye - 1 ), &view.x, &view.y, &view.width, &view.height );
|
||||
view.m_nUnscaledWidth = view.width;
|
||||
view.m_nUnscaledHeight = view.height;
|
||||
view.m_nUnscaledX = view.x;
|
||||
view.m_nUnscaledY = view.y;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1302,9 +1252,32 @@ void CViewRender::Render( vrect_t *rect )
|
||||
// we should use the monitor view from the left eye for both eyes
|
||||
flags |= RENDERVIEW_SUPPRESSMONITORRENDERING;
|
||||
}
|
||||
RenderView( view, nClearFlags, flags );
|
||||
}
|
||||
|
||||
RenderView( view, nClearFlags, flags );
|
||||
|
||||
if ( UseVR() )
|
||||
{
|
||||
bool bDoUndistort = ! engine->IsTakingScreenshot();
|
||||
|
||||
if ( bDoUndistort )
|
||||
{
|
||||
g_ClientVirtualReality.PostProcessFrame( eEye );
|
||||
}
|
||||
|
||||
// logic here all cloned from code in viewrender.cpp around RenderHUDQuad:
|
||||
|
||||
// figure out if we really want to draw the HUD based on freeze cam
|
||||
bool bInFreezeCam = ( pPlayer && pPlayer->GetObserverMode() == OBS_MODE_FREEZECAM );
|
||||
|
||||
// draw the HUD after the view model so its "I'm closer" depth queues work right.
|
||||
if( !bInFreezeCam && g_ClientVirtualReality.ShouldRenderHUDInWorld() )
|
||||
{
|
||||
// TODO - a bit of a shonky test - basically trying to catch the main menu, the briefing screen, the loadout screen, etc.
|
||||
bool bTranslucent = !g_pMatSystemSurface->IsCursorVisible();
|
||||
g_ClientVirtualReality.OverlayHUDQuadWithUndistort( view, bDoUndistort, g_pClientMode->ShouldBlackoutAroundHUD(), bTranslucent );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// TODO: should these be inside or outside the stereo eye stuff?
|
||||
@ -1334,15 +1307,6 @@ void CViewRender::Render( vrect_t *rect )
|
||||
}
|
||||
|
||||
|
||||
if ( UseVR() )
|
||||
{
|
||||
if ( !engine->IsTakingScreenshot() )
|
||||
{
|
||||
// Deal with the distortion on the display.
|
||||
g_ClientVirtualReality.PostProcessFrame( rect );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
#include "rendertexture.h"
|
||||
#include "view_scene.h"
|
||||
#include "viewrender.h"
|
||||
#include "headtrack/isourcevirtualreality.h"
|
||||
#include "sourcevr/isourcevirtualreality.h"
|
||||
#include "client_virtualreality.h"
|
||||
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
|
@ -834,7 +834,7 @@ void CLuminanceHistogramSystem::UpdateLuminanceRanges( void )
|
||||
s_bFirstTime = false;
|
||||
|
||||
// This seems like a bad idea but it's fine for now
|
||||
const char *sModsForOriginalAlgorithm[] = { "dod", "cstrike", "lostcoast" };
|
||||
const char *sModsForOriginalAlgorithm[] = { "dod", "cstrike", "lostcoast", "hl1" };
|
||||
for ( int i=0; i<3; i++ )
|
||||
{
|
||||
if ( strlen( engine->GetGameDirectory() ) >= strlen( sModsForOriginalAlgorithm[i] ) )
|
||||
|
@ -51,7 +51,7 @@
|
||||
#include "studio_stats.h"
|
||||
#include "con_nprint.h"
|
||||
#include "clientmode_shared.h"
|
||||
#include "headtrack/isourcevirtualreality.h"
|
||||
#include "sourcevr/isourcevirtualreality.h"
|
||||
#include "client_virtualreality.h"
|
||||
|
||||
#ifdef PORTAL
|
||||
@ -394,7 +394,7 @@ protected:
|
||||
bool GetSkyboxFogEnable();
|
||||
|
||||
void Enable3dSkyboxFog( void );
|
||||
void DrawInternal( view_id_t iSkyBoxViewID = VIEW_3DSKY, bool bInvokePreAndPostRender = true, ITexture *pRenderTarget = NULL );
|
||||
void DrawInternal( view_id_t iSkyBoxViewID, bool bInvokePreAndPostRender, ITexture *pRenderTarget, ITexture *pDepthTarget );
|
||||
|
||||
sky3dparams_t * PreRender3dSkyboxWorld( SkyboxVisibility_t nSkyboxVisible );
|
||||
|
||||
@ -1055,7 +1055,15 @@ void CViewRender::DrawViewModels( const CViewSetup &view, bool drawViewmodel )
|
||||
viewModelSetup.fov = view.fovViewmodel;
|
||||
viewModelSetup.m_flAspectRatio = engine->GetScreenAspectRatio();
|
||||
|
||||
render->Push3DView( viewModelSetup, 0, NULL, GetFrustum() );
|
||||
ITexture *pRTColor = NULL;
|
||||
ITexture *pRTDepth = NULL;
|
||||
if( view.m_eStereoEye != STEREO_EYE_MONO )
|
||||
{
|
||||
pRTColor = g_pSourceVR->GetRenderTarget( (ISourceVirtualReality::VREye)(view.m_eStereoEye-1), ISourceVirtualReality::RT_Color );
|
||||
pRTDepth = g_pSourceVR->GetRenderTarget( (ISourceVirtualReality::VREye)(view.m_eStereoEye-1), ISourceVirtualReality::RT_Depth );
|
||||
}
|
||||
|
||||
render->Push3DView( viewModelSetup, 0, pRTColor, GetFrustum(), pRTDepth );
|
||||
|
||||
#ifdef PORTAL //the depth range hack doesn't work well enough for the portal mod (and messing with the depth hack values makes some models draw incorrectly)
|
||||
//step up to a full depth clear if we're extremely close to a portal (in a portal environment)
|
||||
@ -1822,7 +1830,15 @@ void CViewRender::SetupMain3DView( const CViewSetup &view, int &nClearFlags )
|
||||
}
|
||||
else
|
||||
{
|
||||
render->Push3DView( view, nClearFlags, NULL, GetFrustum() );
|
||||
ITexture *pRTColor = NULL;
|
||||
ITexture *pRTDepth = NULL;
|
||||
if( view.m_eStereoEye != STEREO_EYE_MONO )
|
||||
{
|
||||
pRTColor = g_pSourceVR->GetRenderTarget( (ISourceVirtualReality::VREye)(view.m_eStereoEye-1), ISourceVirtualReality::RT_Color );
|
||||
pRTDepth = g_pSourceVR->GetRenderTarget( (ISourceVirtualReality::VREye)(view.m_eStereoEye-1), ISourceVirtualReality::RT_Depth );
|
||||
}
|
||||
|
||||
render->Push3DView( view, nClearFlags, pRTColor, GetFrustum(), pRTDepth );
|
||||
}
|
||||
|
||||
// If we didn't clear the depth here, we'll need to clear it later
|
||||
@ -2155,6 +2171,12 @@ void CViewRender::RenderView( const CViewSetup &view, int nClearFlags, int whatT
|
||||
pCopyMaterial->DecrementReferenceCount();
|
||||
}
|
||||
|
||||
// if we're in VR mode we might need to override the render target
|
||||
if( UseVR() )
|
||||
{
|
||||
saveRenderTarget = g_pSourceVR->GetRenderTarget( (ISourceVirtualReality::VREye)(view.m_eStereoEye - 1), ISourceVirtualReality::RT_Color );
|
||||
}
|
||||
|
||||
// Draw the 2D graphics
|
||||
render->Push2DView( view, 0, saveRenderTarget, GetFrustum() );
|
||||
|
||||
@ -2192,7 +2214,9 @@ void CViewRender::RenderView( const CViewSetup &view, int nClearFlags, int whatT
|
||||
|
||||
vgui::surface()->GetScreenSize( viewWidth, viewHeight );
|
||||
|
||||
viewFramebufferX = view.m_eStereoEye == STEREO_EYE_RIGHT ? viewFramebufferWidth : 0;
|
||||
viewFramebufferX = 0;
|
||||
if( view.m_eStereoEye == STEREO_EYE_RIGHT && !saveRenderTarget )
|
||||
viewFramebufferX = viewFramebufferWidth;
|
||||
viewFramebufferY = 0;
|
||||
}
|
||||
}
|
||||
@ -2224,7 +2248,7 @@ void CViewRender::RenderView( const CViewSetup &view, int nClearFlags, int whatT
|
||||
// let vgui know where to render stuff for the forced-to-framebuffer panels
|
||||
if( UseVR() )
|
||||
{
|
||||
vgui::surface()->SetFullscreenViewport( viewFramebufferX, viewFramebufferY, viewFramebufferWidth, viewFramebufferHeight );
|
||||
vgui::surface()->SetFullscreenViewportAndRenderTarget( viewFramebufferX, viewFramebufferY, viewFramebufferWidth, viewFramebufferHeight, saveRenderTarget );
|
||||
}
|
||||
|
||||
// clear the render target if we need to
|
||||
@ -4703,7 +4727,7 @@ sky3dparams_t *CSkyboxView::PreRender3dSkyboxWorld( SkyboxVisibility_t nSkyboxVi
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
void CSkyboxView::DrawInternal( view_id_t iSkyBoxViewID, bool bInvokePreAndPostRender, ITexture *pRenderTarget )
|
||||
void CSkyboxView::DrawInternal( view_id_t iSkyBoxViewID, bool bInvokePreAndPostRender, ITexture *pRenderTarget, ITexture *pDepthTarget )
|
||||
{
|
||||
unsigned char **areabits = render->GetAreaBits();
|
||||
unsigned char *savebits;
|
||||
@ -4736,7 +4760,7 @@ void CSkyboxView::DrawInternal( view_id_t iSkyBoxViewID, bool bInvokePreAndPostR
|
||||
// cluster with sky. Then we could just connect the areas to do our vis.
|
||||
//m_bOverrideVisOrigin could hose us here, so call direct
|
||||
render->ViewSetupVis( false, 1, &m_pSky3dParams->origin.Get() );
|
||||
render->Push3DView( (*this), m_ClearFlags, pRenderTarget, GetFrustum() );
|
||||
render->Push3DView( (*this), m_ClearFlags, pRenderTarget, GetFrustum(), pDepthTarget );
|
||||
|
||||
// Store off view origin and angles
|
||||
SetupCurrentView( origin, angles, iSkyBoxViewID );
|
||||
@ -4832,7 +4856,15 @@ void CSkyboxView::Draw()
|
||||
{
|
||||
VPROF_BUDGET( "CViewRender::Draw3dSkyboxworld", "3D Skybox" );
|
||||
|
||||
DrawInternal();
|
||||
ITexture *pRTColor = NULL;
|
||||
ITexture *pRTDepth = NULL;
|
||||
if( m_eStereoEye != STEREO_EYE_MONO )
|
||||
{
|
||||
pRTColor = g_pSourceVR->GetRenderTarget( (ISourceVirtualReality::VREye)(m_eStereoEye-1), ISourceVirtualReality::RT_Color );
|
||||
pRTDepth = g_pSourceVR->GetRenderTarget( (ISourceVirtualReality::VREye)(m_eStereoEye-1), ISourceVirtualReality::RT_Depth );
|
||||
}
|
||||
|
||||
DrawInternal(VIEW_3DSKY, true, pRTColor, pRTDepth );
|
||||
}
|
||||
|
||||
|
||||
@ -4882,7 +4914,7 @@ void CPortalSkyboxView::Draw()
|
||||
|
||||
bool bInvokePreAndPostRender = ( g_pPortalRender->ShouldUseStencilsToRenderPortals() == false );
|
||||
|
||||
DrawInternal( iSkyBoxViewID, bInvokePreAndPostRender, m_pRenderTarget );
|
||||
DrawInternal( iSkyBoxViewID, bInvokePreAndPostRender, m_pRenderTarget, NULL );
|
||||
|
||||
pRenderContext->EnableClipping( bClippingEnabled );
|
||||
|
||||
|
@ -474,10 +474,6 @@ private:
|
||||
// This stores the current view
|
||||
CViewSetup m_CurrentView;
|
||||
|
||||
// these will both be mono or they will be left/right
|
||||
StereoEye_t m_eStartEye;
|
||||
StereoEye_t m_eLastEye;
|
||||
|
||||
// VIS Overrides
|
||||
// Set to true to turn off client side vis ( !!!! rendering will be slow since everything will draw )
|
||||
bool m_bForceNoVis;
|
||||
|
@ -10,6 +10,8 @@ $Project
|
||||
{
|
||||
$Folder "Libraries"
|
||||
{
|
||||
$Libexternal libprotobuf
|
||||
$Libexternal libprotobuf [!$VS2012 && !$VS2013]
|
||||
$Libexternal 2012\libprotobuf [$VS2012]
|
||||
$Libexternal 2013\libprotobuf [$VS2013]
|
||||
}
|
||||
}
|
||||
|
@ -2153,4 +2153,8 @@ void CAI_BaseNPC::InitDefaultActivitySR(void)
|
||||
ADD_ACTIVITY_TO_SR( ACT_THROWABLE_VM_IDLE );
|
||||
ADD_ACTIVITY_TO_SR( ACT_THROWABLE_VM_FIRE );
|
||||
|
||||
ADD_ACTIVITY_TO_SR( ACT_SPELL_VM_DRAW );
|
||||
ADD_ACTIVITY_TO_SR( ACT_SPELL_VM_IDLE );
|
||||
ADD_ACTIVITY_TO_SR( ACT_SPELL_VM_ARM );
|
||||
ADD_ACTIVITY_TO_SR( ACT_SPELL_VM_FIRE );
|
||||
}
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
inline float round( float f )
|
||||
inline float V_round( float f )
|
||||
{
|
||||
return (float)( (int)( f + 0.5 ) );
|
||||
}
|
||||
@ -133,7 +133,7 @@ bool CAI_MoveSolver::Solve( const AI_MoveSuggestion_t *pSuggestions, int nSugges
|
||||
|
||||
// Convert arc values to solution indices relative to right post. Right is angle down, left is angle up.
|
||||
float halfSpan = current.arc.span * 0.5;
|
||||
int center = round( ( halfSpan * NUM_SOLUTIONS ) / 360 );
|
||||
int center = V_round( ( halfSpan * NUM_SOLUTIONS ) / 360 );
|
||||
int left = ( current.arc.span * NUM_SOLUTIONS ) / 360;
|
||||
|
||||
float angRight = current.arc.center - halfSpan;
|
||||
|
@ -983,7 +983,7 @@ bool CAI_NetworkManager::IsAIFileCurrent ( const char *szMapName )
|
||||
Q_strncpy( szLoweredGameDir, pGameDir, sizeof( szLoweredGameDir ) );
|
||||
Q_strlower( szLoweredGameDir );
|
||||
|
||||
if ( !V_stricmp( szLoweredGameDir, "hl2" ) || !V_stricmp( szLoweredGameDir, "episodic" ) || !V_stricmp( szLoweredGameDir, "ep2" ) || !V_stricmp( szLoweredGameDir, "portal" ) || !V_stricmp( szLoweredGameDir, "lostcoast" ) )
|
||||
if ( !V_stricmp( szLoweredGameDir, "hl2" ) || !V_stricmp( szLoweredGameDir, "episodic" ) || !V_stricmp( szLoweredGameDir, "ep2" ) || !V_stricmp( szLoweredGameDir, "portal" ) || !V_stricmp( szLoweredGameDir, "lostcoast" ) || !V_stricmp( szLoweredGameDir, "hl1" ) )
|
||||
{
|
||||
// we shipped good node graphs for our games
|
||||
return true;
|
||||
|
@ -210,6 +210,9 @@ BEGIN_DATADESC( CBaseAnimating )
|
||||
DEFINE_INPUT( m_fadeMaxDist, FIELD_FLOAT, "fademaxdist" ),
|
||||
DEFINE_KEYFIELD( m_flFadeScale, FIELD_FLOAT, "fadescale" ),
|
||||
|
||||
DEFINE_KEYFIELD( m_flModelScale, FIELD_FLOAT, "modelscale" ),
|
||||
DEFINE_INPUTFUNC( FIELD_VECTOR, "SetModelScale", InputSetModelScale ),
|
||||
|
||||
DEFINE_FIELD( m_fBoneCacheFlags, FIELD_SHORT ),
|
||||
|
||||
END_DATADESC()
|
||||
@ -441,7 +444,7 @@ void CBaseAnimating::StudioFrameAdvanceInternal( CStudioHdr *pStudioHdr, float f
|
||||
m_flAnimTime.Get(), m_flPrevAnimTime, flInterval, GetCycle() );
|
||||
*/
|
||||
|
||||
m_flGroundSpeed = GetSequenceGroundSpeed( pStudioHdr, GetSequence() );
|
||||
m_flGroundSpeed = GetSequenceGroundSpeed( pStudioHdr, GetSequence() ) * GetModelScale();
|
||||
|
||||
// Msg("%s : %s : %5.1f\n", GetClassname(), GetSequenceName( GetSequence() ), GetCycle() );
|
||||
InvalidatePhysicsRecursive( ANIMATION_CHANGED );
|
||||
@ -610,6 +613,17 @@ void CBaseAnimating::InputSetLightingOrigin( inputdata_t &inputdata )
|
||||
SetLightingOrigin( strLightingOrigin );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: SetModelScale input handler
|
||||
//-----------------------------------------------------------------------------
|
||||
void CBaseAnimating::InputSetModelScale( inputdata_t &inputdata )
|
||||
{
|
||||
Vector vecScale;
|
||||
inputdata.value.Vector3D( vecScale );
|
||||
|
||||
SetModelScale( vecScale.x, vecScale.y );
|
||||
}
|
||||
|
||||
|
||||
//=========================================================
|
||||
// SelectWeightedSequence
|
||||
@ -877,7 +891,7 @@ void CBaseAnimating::ResetSequenceInfo ( )
|
||||
}
|
||||
|
||||
CStudioHdr *pStudioHdr = GetModelPtr();
|
||||
m_flGroundSpeed = GetSequenceGroundSpeed( pStudioHdr, GetSequence() );
|
||||
m_flGroundSpeed = GetSequenceGroundSpeed( pStudioHdr, GetSequence() ) * GetModelScale();
|
||||
m_bSequenceLoops = ((GetSequenceFlags( pStudioHdr, GetSequence() ) & STUDIO_LOOPING) != 0);
|
||||
// m_flAnimTime = gpGlobals->time;
|
||||
m_flPlaybackRate = 1.0;
|
||||
|
@ -338,6 +338,7 @@ private:
|
||||
void StudioFrameAdvanceInternal( CStudioHdr *pStudioHdr, float flInterval );
|
||||
void InputSetLightingOriginRelative( inputdata_t &inputdata );
|
||||
void InputSetLightingOrigin( inputdata_t &inputdata );
|
||||
void InputSetModelScale( inputdata_t &inputdata );
|
||||
|
||||
bool CanSkipAnimation( void );
|
||||
|
||||
|
@ -4524,6 +4524,17 @@ void CBaseEntity::Teleport( const Vector *newPosition, const QAngle *newAngles,
|
||||
teleportList[i].pEntity->CollisionRulesChanged();
|
||||
}
|
||||
|
||||
if ( IsPlayer() )
|
||||
{
|
||||
// Tell the client being teleported
|
||||
IGameEvent *event = gameeventmanager->CreateEvent( "base_player_teleported" );
|
||||
if ( event )
|
||||
{
|
||||
event->SetInt( "entindex", entindex() );
|
||||
gameeventmanager->FireEventClientSide( event );
|
||||
}
|
||||
}
|
||||
|
||||
Assert( g_TeleportStack[index] == this );
|
||||
g_TeleportStack.FastRemove( index );
|
||||
|
||||
|
@ -132,7 +132,15 @@ bool CBaseMultiplayerPlayer::CanHearAndReadChatFrom( CBasePlayer *pPlayer )
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CBaseMultiplayerPlayer::ShouldRunRateLimitedCommand( const CCommand &args )
|
||||
{
|
||||
const char *pcmd = args[0];
|
||||
return ShouldRunRateLimitedCommand( args[0] );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CBaseMultiplayerPlayer::ShouldRunRateLimitedCommand( const char *pszCommand )
|
||||
{
|
||||
const char *pcmd = pszCommand;
|
||||
|
||||
int i = m_RateLimitLastCommandTimes.Find( pcmd );
|
||||
if ( i == m_RateLimitLastCommandTimes.InvalidIndex() )
|
||||
|
@ -89,6 +89,7 @@ public:
|
||||
|
||||
// Command rate limiting.
|
||||
bool ShouldRunRateLimitedCommand( const CCommand &args );
|
||||
bool ShouldRunRateLimitedCommand( const char *pszCommand );
|
||||
|
||||
protected:
|
||||
virtual CAI_Expresser *CreateExpresser( void );
|
||||
|
@ -1,136 +0,0 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
#include "cbase.h"
|
||||
#include "baseprojectile.h"
|
||||
|
||||
BEGIN_DATADESC( CBaseProjectile )
|
||||
DEFINE_FIELD( m_flDamage, FIELD_FLOAT ),
|
||||
DEFINE_FIELD( m_iDamageType, FIELD_INTEGER ),
|
||||
DEFINE_FIELD( m_flDamageScale, FIELD_FLOAT ),
|
||||
|
||||
DEFINE_FUNCTION( ProjectileTouch ),
|
||||
DEFINE_THINKFUNC( FlyThink ),
|
||||
END_DATADESC()
|
||||
|
||||
LINK_ENTITY_TO_CLASS( proj_base, CBaseProjectile );
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CBaseProjectile::Spawn( void )
|
||||
{
|
||||
Precache();
|
||||
|
||||
SetModel( STRING( GetModelName() ) );
|
||||
|
||||
SetSolid( SOLID_BBOX );
|
||||
SetMoveType( MOVETYPE_FLYGRAVITY, MOVECOLLIDE_FLY_CUSTOM );
|
||||
AddFlag( FL_OBJECT );
|
||||
|
||||
UTIL_SetSize( this, -Vector( 1.0f, 1.0f, 1.0f ), Vector( 1.0f, 1.0f, 1.0f ) );
|
||||
|
||||
// Setup attributes.
|
||||
SetGravity( 0.001f );
|
||||
m_takedamage = DAMAGE_NO;
|
||||
|
||||
// Setup the touch and think functions.
|
||||
SetTouch( &CBaseProjectile::ProjectileTouch );
|
||||
SetThink( &CBaseProjectile::FlyThink );
|
||||
SetNextThink( gpGlobals->curtime );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CBaseProjectile::Precache( void )
|
||||
{
|
||||
BaseClass::Precache();
|
||||
|
||||
PrecacheModel( STRING( GetModelName() ) );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CBaseProjectile *CBaseProjectile::Create( baseprojectilecreate_t &pCreate )
|
||||
{
|
||||
CBaseProjectile *pProjectile = static_cast<CBaseProjectile*>( CBaseEntity::CreateNoSpawn( "proj_base", pCreate.vecOrigin, vec3_angle, pCreate.pOwner ) );
|
||||
if ( !pProjectile )
|
||||
return NULL;
|
||||
|
||||
pProjectile->SetModelName( pCreate.iszModel );
|
||||
pProjectile->SetDamage( pCreate.flDamage );
|
||||
pProjectile->SetDamageType( pCreate.iDamageType );
|
||||
pProjectile->SetDamageScale( pCreate.flDamageScale );
|
||||
pProjectile->SetAbsVelocity( pCreate.vecVelocity );
|
||||
|
||||
// Setup the initial angles.
|
||||
QAngle angles;
|
||||
VectorAngles( -pCreate.vecVelocity, angles );
|
||||
pProjectile->SetAbsAngles( angles );
|
||||
|
||||
// Spawn & Activate
|
||||
DispatchSpawn( pProjectile );
|
||||
pProjectile->Activate();
|
||||
|
||||
return pProjectile;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
unsigned int CBaseProjectile::PhysicsSolidMaskForEntity( void ) const
|
||||
{
|
||||
return BaseClass::PhysicsSolidMaskForEntity() | CONTENTS_HITBOX;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CBaseProjectile::ProjectileTouch( CBaseEntity *pOther )
|
||||
{
|
||||
// Verify a correct "other."
|
||||
Assert( pOther );
|
||||
if ( !pOther->IsSolid() || pOther->IsSolidFlagSet( FSOLID_VOLUME_CONTENTS ) )
|
||||
return;
|
||||
|
||||
// Handle hitting skybox (disappear).
|
||||
const trace_t *pTrace = &CBaseEntity::GetTouchTrace();
|
||||
trace_t *pNewTrace = const_cast<trace_t*>( pTrace );
|
||||
|
||||
if( pTrace->surface.flags & SURF_SKY )
|
||||
{
|
||||
UTIL_Remove( this );
|
||||
return;
|
||||
}
|
||||
|
||||
CTakeDamageInfo info;
|
||||
info.SetAttacker( GetOwnerEntity() );
|
||||
info.SetInflictor( this );
|
||||
info.SetDamage( GetDamage() );
|
||||
info.SetDamageType( GetDamageType() );
|
||||
CalculateMeleeDamageForce( &info, GetAbsVelocity(), GetAbsOrigin(), GetDamageScale() );
|
||||
|
||||
Vector dir;
|
||||
AngleVectors( GetAbsAngles(), &dir );
|
||||
|
||||
pOther->DispatchTraceAttack( info, dir, pNewTrace );
|
||||
ApplyMultiDamage();
|
||||
|
||||
UTIL_Remove( this );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Orient the projectile along its velocity
|
||||
//-----------------------------------------------------------------------------
|
||||
void CBaseProjectile::FlyThink( void )
|
||||
{
|
||||
QAngle angles;
|
||||
VectorAngles( -(GetAbsVelocity()), angles );
|
||||
SetAbsAngles( angles );
|
||||
SetNextThink( gpGlobals->curtime + 0.1f );
|
||||
}
|
@ -1,61 +0,0 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
#ifndef BASEPROJECTILE_H
|
||||
#define BASEPROJECTILE_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
// Creation.
|
||||
struct baseprojectilecreate_t
|
||||
{
|
||||
Vector vecOrigin;
|
||||
Vector vecVelocity;
|
||||
CBaseEntity *pOwner;
|
||||
string_t iszModel;
|
||||
float flDamage;
|
||||
int iDamageType;
|
||||
float flDamageScale;
|
||||
};
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// Generic projectile
|
||||
//
|
||||
class CBaseProjectile : public CBaseAnimating
|
||||
{
|
||||
DECLARE_CLASS( CBaseProjectile, CBaseAnimating );
|
||||
public:
|
||||
DECLARE_DATADESC();
|
||||
|
||||
void Spawn( void );
|
||||
void Precache( void );
|
||||
|
||||
static CBaseProjectile *Create( baseprojectilecreate_t &pCreate );
|
||||
|
||||
void SetDamage( float flDamage ) { m_flDamage = flDamage; }
|
||||
void SetDamageScale( float &flScale ) { m_flDamageScale = flScale; }
|
||||
void SetDamageType( int iType ) { m_iDamageType = iType; }
|
||||
|
||||
private:
|
||||
// Damage
|
||||
virtual float GetDamage() { return m_flDamage; }
|
||||
virtual float GetDamageScale( void ) { return m_flDamageScale; }
|
||||
virtual int GetDamageType( void ) { return m_iDamageType; }
|
||||
|
||||
unsigned int PhysicsSolidMaskForEntity( void ) const;
|
||||
|
||||
virtual void ProjectileTouch( CBaseEntity *pOther );
|
||||
void FlyThink( void );
|
||||
|
||||
protected:
|
||||
float m_flDamage;
|
||||
int m_iDamageType;
|
||||
float m_flDamageScale;
|
||||
};
|
||||
|
||||
#endif // BASEPROJECTILE_H
|
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