* fix dirFromTarget() logic
* passing of extra damageDecl values from radiusDamage() calls * add fun cg_modelSpin/Bob cvars * NSActor::MaxAmmo(int) added * NSItem::ItemPickUpCheck(entity) added * base/ cleanup
This commit is contained in:
parent
0909b91703
commit
e27e2a85ec
179 changed files with 10047 additions and 10395 deletions
11
Tools/get-plugins.sh
Executable file
11
Tools/get-plugins.sh
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/bin/sh
|
||||
|
||||
if [ $# -lt 1 ]
|
||||
then
|
||||
printf "Unknown\n"
|
||||
else
|
||||
if [ -f "$1/PLUGINS" ]
|
||||
then
|
||||
head -n 1 "$1/PLUGINS"
|
||||
fi
|
||||
fi
|
|
@ -1,6 +1,6 @@
|
|||
/***
|
||||
*
|
||||
* Copyright (c) 2000-2022, Vera Visions. All rights reserved.
|
||||
* Copyright (c) 2000-2024, Vera Visions. All rights reserved.
|
||||
*
|
||||
****/
|
||||
|
||||
|
|
|
@ -2,3 +2,8 @@ entityDef player
|
|||
{
|
||||
"spawnclass" "NSClientPlayer"
|
||||
}
|
||||
|
||||
entityDef player_mp
|
||||
{
|
||||
"inherit" "player"
|
||||
}
|
||||
|
|
|
@ -10,26 +10,27 @@ entityDef weapon_bat
|
|||
"ammoRequired" "0"
|
||||
"def_dropItem" "weapon_bat"
|
||||
|
||||
"def_melee" "damage_bat"
|
||||
"melee_distance" "32"
|
||||
"def_onFire" "damage_bat"
|
||||
"testDistance" "-32"
|
||||
|
||||
"meleeRateMiss" "0.6"
|
||||
"meleeRateHit" "0.75"
|
||||
|
||||
"actIdle" "0,2"
|
||||
"actDraw" "4"
|
||||
"actHolster" "6"
|
||||
"actMeleeMiss" "9,11,13"
|
||||
"actMeleeHit" "8,10,12"
|
||||
"act_idle" "0,2"
|
||||
"act_draw" "4"
|
||||
"act_holster" "6"
|
||||
"act_fireFailed" "9,11,13"
|
||||
"act_fire" "8,10,12"
|
||||
"snd_fire" "weapon_bat.hit"
|
||||
"snd_fireFailed" "weapon_bat.miss"
|
||||
}
|
||||
|
||||
entityDef damage_bat
|
||||
{
|
||||
"spawnclass" "NSProjectile"
|
||||
"is_bullet" "1"
|
||||
"damage" "15"
|
||||
"gib" "1"
|
||||
|
||||
"snd_hit" "weapon_bat.hit"
|
||||
"snd_miss" "weapon_bat.miss"
|
||||
}
|
||||
|
||||
// Pistol
|
||||
|
@ -48,14 +49,14 @@ entityDef weapon_pistol
|
|||
"fireRate" ".2"
|
||||
|
||||
"snd_fire" "weapon_pistol.fire"
|
||||
"actFire" "14,16"
|
||||
"actFireLast" "15,17"
|
||||
"actReload" "8"
|
||||
"actReloadEmpty" "9"
|
||||
"actDrawEmpty" "3"
|
||||
"actDraw" "2"
|
||||
"actIdleEmpty" "1"
|
||||
"actIdle" "0"
|
||||
"act_fire" "14,16"
|
||||
"act_fireLast" "15,17"
|
||||
"act_reload" "8"
|
||||
"act_reloadEmpty" "9"
|
||||
"act_drawEmpty" "3"
|
||||
"act_draw" "2"
|
||||
"act_idleEmpty" "1"
|
||||
"act_idle" "0"
|
||||
}
|
||||
|
||||
entityDef projectile_pistol
|
||||
|
@ -80,11 +81,11 @@ entityDef weapon_frag
|
|||
"def_dropItem" "weapon_frag"
|
||||
"def_onRelease" "projectile_frag"
|
||||
|
||||
"actIdle" "0"
|
||||
"actDraw" "1"
|
||||
"actHolster" "2"
|
||||
"actFire" "4"
|
||||
"actRelease" "6"
|
||||
"act_idle" "0"
|
||||
"act_draw" "1"
|
||||
"act_holster" "2"
|
||||
"act_fire" "4"
|
||||
"act_release" "6"
|
||||
}
|
||||
|
||||
entityDef projectile_frag
|
||||
|
@ -101,7 +102,6 @@ entityDef projectile_frag
|
|||
"snd_explode" "fx.explosion"
|
||||
"snd_bounce" "weapon_frag.bounce"
|
||||
"decal_detonate" "ExplosionScorch"
|
||||
|
||||
"def_damage" "damage_fragDirect"
|
||||
"def_splash_damage" "damage_fragSplash"
|
||||
}
|
||||
|
@ -116,9 +116,3 @@ entityDef damage_fragSplash
|
|||
"damage" "150"
|
||||
"radius" "250"
|
||||
}
|
||||
|
||||
entityDef env_frag_explodeinhand
|
||||
{
|
||||
"spawnclass" "idAnimatedEntity"
|
||||
"model" "grenadeExplosion.prt"
|
||||
}
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 812 B After Width: | Height: | Size: 786 B |
|
@ -1,153 +0,0 @@
|
|||
// This file is not meant to be edited.
|
||||
// It sets defaults to wrangle the engine into
|
||||
// acting more useful towards our goals and agenda
|
||||
// You can find Nuclide specific cvars in `cvars.cfg`
|
||||
|
||||
// default console font size is 12 pixels, negative values specifies explicit size
|
||||
seta con_textsize -12
|
||||
// console background should be opaque so we can read it properly
|
||||
seta scr_conalpha 1
|
||||
// idlefps 0 means we will match cl_maxfps
|
||||
seta cl_idlefps 0
|
||||
// forces CSQC to take the pvs of an entity into account on its end
|
||||
seta r_ignoreentpvs 0
|
||||
// required for spray logos
|
||||
seta _pext_infoblobs 1
|
||||
// required for speedy patch/curve collision
|
||||
seta _q3bsp_bihtraces 1
|
||||
// required for some custom prop entities
|
||||
seta sv_gameplayfix_setmodelsize_qw 1
|
||||
// required so that Quake does not round to the nearest hull or whatever
|
||||
seta sv_gameplayfix_setmodelrealbox 1
|
||||
// load console font in HL format
|
||||
seta gl_font 0
|
||||
seta gl_font fonts/squaregear/whitrabt.ttf
|
||||
// sensible texture filtering default
|
||||
seta gl_texturemode GL_LINEAR_MIPMAP_LINEAR
|
||||
// sensible mipcap default
|
||||
seta d_mipcap 0 1000
|
||||
// sensible texture max size
|
||||
seta gl_max_size 8192
|
||||
// no affine texture projection on models by default
|
||||
seta gl_affinemodels 0
|
||||
// don't blend sprites by default
|
||||
seta gl_blendsprites 0
|
||||
// no flashblend by default
|
||||
seta gl_flashblend 0
|
||||
// we assume overbright 2 for best dynamic range
|
||||
seta gl_overbright 2
|
||||
// we assume highest texture quality
|
||||
seta gl_picmip 0
|
||||
// allow overlays like cshifts
|
||||
seta gl_polyblend 1
|
||||
// allow specular...
|
||||
seta gl_specular 1
|
||||
// but the engine forces a fallback, which is applied on everything, kill that
|
||||
seta gl_specular_fallback 0
|
||||
// set kernel dithering for defaultwall/defaultskin to 0
|
||||
seta gl_kdither 0
|
||||
// cull models out of the view to avoid e.g. shotgun shell clipping in HL
|
||||
seta gl_mindist 4
|
||||
// allow interpolation of entities
|
||||
seta cl_nolerp 0
|
||||
// allow interpolation between framegroups
|
||||
seta r_noframegrouplerp 0
|
||||
// allow interpolation between frames
|
||||
seta r_nolerp 0
|
||||
// not what you think this means, turning this to 1 disables diffusemap rendering
|
||||
seta r_lightmap 0
|
||||
// we want hdr quality lightmaps by default
|
||||
seta r_lightmap_format e5bgr9
|
||||
// we want vanilla lightmap saturation by default
|
||||
seta r_lightmap_saturation 1
|
||||
// allow models to respect light direction
|
||||
seta r_nolightdir 0
|
||||
// respect colored lighting files
|
||||
seta r_loadlit 1
|
||||
// FBO setting, render 1:1 framebuffer to our window
|
||||
seta r_renderscale 1
|
||||
// disable offset/parallax mapping
|
||||
seta r_glsl_offsetmapping 0
|
||||
// disable softwarebanding
|
||||
seta r_softwarebanding 0
|
||||
// disable any possible overlay we might have
|
||||
seta r_postprocshader ""
|
||||
// disable low dynamic range light clamping
|
||||
seta gl_ldr 0
|
||||
// allow fullbright colors on brush models
|
||||
seta r_fb_bmodels 1
|
||||
// allow fullbright colors on models
|
||||
seta r_fb_models 1
|
||||
// shadows
|
||||
seta r_shadows 1
|
||||
seta r_shadow_realtime_dlight 1
|
||||
seta r_shadow_realtime_dlight_shadows 1
|
||||
seta r_shadow_realtime_world 1
|
||||
// disable bloom
|
||||
seta r_bloom 0
|
||||
// disable engine coronas
|
||||
seta r_coronas 0
|
||||
// enable deluxe mapping on maps that support it
|
||||
seta r_deluxemapping 1
|
||||
// allow static entities like flames
|
||||
seta r_drawflame 1
|
||||
// don't render the world flat shaded
|
||||
seta r_drawflat 0
|
||||
// allow dlights, colored ones at that (2 forces all to be monochrome like Q1)
|
||||
seta r_dynamic 1
|
||||
// full quality sky setting
|
||||
seta r_fastsky 0
|
||||
// classic liquid style rendering
|
||||
seta r_lavastyle 1
|
||||
seta r_waterstyle 1
|
||||
seta r_slimestyle 1
|
||||
seta r_telestyle 1
|
||||
// disable stain mapping
|
||||
seta r_stains 0
|
||||
// enable the waterwarp shader
|
||||
seta r_waterwarp 1
|
||||
// allow scripted particles
|
||||
seta r_particledesc "default"
|
||||
// control gamma via glsl when in windowed mode
|
||||
seta vid_hardwaregamma 1
|
||||
// because the defaul cursor scale is not 1 apparently
|
||||
seta cl_cursor_scale "1"
|
||||
// disable any extra bob the engine may have.
|
||||
seta cl_bob "0"
|
||||
// allow people to look up almost all the way
|
||||
seta maxpitch "89"
|
||||
// ditto, but for downwards viewing
|
||||
seta minpitch "-89"
|
||||
// this fixes model pitches, otherwise all of our angle math would need *= -1 on x
|
||||
seta r_meshpitch "1"
|
||||
// default bob values for Nuclide
|
||||
seta v_bob "0.01"
|
||||
seta v_bobcycle "0.8"
|
||||
seta v_bobup "0.5"
|
||||
// disable engine side content blends, let the client-game handle it
|
||||
seta v_contentblend "0"
|
||||
// people hate having to manually save configs
|
||||
seta cfg_save_auto "1"
|
||||
// menu doesn't need to operate at more than 60 fps
|
||||
seta cl_idlefps "60"
|
||||
// game shouldn't need to run at more than 250 fps right now
|
||||
seta cl_maxfps "250"
|
||||
// allow native code if it's there I guess
|
||||
seta com_nogamedirnativecode "0"
|
||||
// don't log centerprints
|
||||
seta con_logcenterprint "0"
|
||||
// don't display regular prints in the top corner
|
||||
seta con_notifylines "0"
|
||||
// set a default locale, because the engine won't
|
||||
seta lang "en_us"
|
||||
// external texture formats that we recognize
|
||||
seta r_imageextensions "bmp dds jpg ktx pcx png tga vtf"
|
||||
// store screenshots in TrueVision Targa by default
|
||||
seta scr_sshot_type "tga"
|
||||
// don't force music loops
|
||||
seta media_repeat "0"
|
||||
|
||||
// set master servers
|
||||
exec masters.lst
|
||||
// load in Nuclide specific cvars
|
||||
exec cvars.cfg
|
|
@ -1,7 +0,0 @@
|
|||
// Uncomment the ones you'd like to use
|
||||
//banner.dat
|
||||
//chatfilter.dat
|
||||
//chatsounds.dat
|
||||
//connectsounds.dat
|
||||
//ircbridge.dat
|
||||
//voxannouncer.dat
|
|
@ -1,84 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2021 Marco Cawthorne <marco@icculus.org>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
struct
|
||||
{
|
||||
float m_flSpeed;
|
||||
float m_flFracSin;
|
||||
float m_flTime;
|
||||
float m_flMove;
|
||||
float m_flDelta;
|
||||
int m_iCycle;
|
||||
} g_camBobVars[4], *pCamBob;
|
||||
|
||||
/* tilts the camera for a head-bob like effect when moving */
|
||||
vector
|
||||
Camera_RunBob(vector camera_angle)
|
||||
{
|
||||
if (!autocvar(v_cambob, 1, "Enables bobbing effect for the first-person camera"))
|
||||
return camera_angle;
|
||||
|
||||
int s = (float)getproperty(VF_ACTIVESEAT);
|
||||
pCamBob = &g_camBobVars[s];
|
||||
|
||||
/* we don't really care about the vertical velocity */
|
||||
vector speed = pSeat->m_vecPredictedVelocity;
|
||||
speed[2] = 0.0f;
|
||||
pCamBob->m_flSpeed = vlen(speed);
|
||||
|
||||
if (pCamBob->m_flSpeed > 330.0f)
|
||||
pCamBob->m_flSpeed = 330.0f;
|
||||
|
||||
/* don't bother on low speeds */
|
||||
if ( pCamBob->m_flSpeed < 5.0f ) {
|
||||
pCamBob->m_flMove = 0.0f;
|
||||
pCamBob->m_flTime = 0.0f; /* progress has halted, start anew */
|
||||
return camera_angle;
|
||||
} else {
|
||||
pCamBob->m_flMove = frametime * (pCamBob->m_flSpeed * 0.01);
|
||||
}
|
||||
|
||||
pCamBob->m_flTime = (pCamBob->m_flTime += pCamBob->m_flMove);
|
||||
pCamBob->m_flFracSin = fabs(sin(pCamBob->m_flTime * M_PI));
|
||||
pCamBob->m_iCycle = (int)pCamBob->m_flTime;
|
||||
pCamBob->m_flDelta = (pCamBob->m_flFracSin * 0.0025f) * pCamBob->m_flSpeed;
|
||||
|
||||
camera_angle[0] += pCamBob->m_flDelta;
|
||||
|
||||
if (pCamBob->m_iCycle & 1) {
|
||||
pCamBob->m_flDelta = -pCamBob->m_flDelta;
|
||||
}
|
||||
|
||||
camera_angle[2] += pCamBob->m_flDelta;
|
||||
return camera_angle;
|
||||
}
|
||||
|
||||
/* applies a tilt to the camera for when we're strafing left to right */
|
||||
vector
|
||||
Camera_StrafeRoll(vector camera_angle)
|
||||
{
|
||||
if (!autocvar(v_camroll, 0, "Enables strafe-roll for the first-person camera"))
|
||||
return camera_angle;
|
||||
|
||||
float roll;
|
||||
makevectors(camera_angle);
|
||||
|
||||
roll = dotproduct(pSeat->m_vecPredictedVelocity, v_right);
|
||||
roll *= 0.015f;
|
||||
|
||||
camera_angle[2] += roll;
|
||||
return camera_angle;
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2022 Vera Visions LLC.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* This is where custom game-specific commands go!
|
||||
* You'll also inherit all the commands defined in entry.c */
|
||||
int
|
||||
ClientGame_ConsoleCommand(void)
|
||||
{
|
||||
switch(argv(0)) {
|
||||
default:
|
||||
return (0);
|
||||
}
|
||||
return (1);
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2022 Vera Visions LLC.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
void
|
||||
ClientGame_PreDraw(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
ClientGame_PostDraw(void)
|
||||
{
|
||||
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2022 Vera Visions LLC.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
int
|
||||
ClientGame_EntityUpdate(float id, float new)
|
||||
{
|
||||
switch (id) {
|
||||
default:
|
||||
return (0);
|
||||
}
|
||||
|
||||
return (1);
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2022 Vera Visions LLC.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
int
|
||||
ClientGame_EventParse(float fHeader)
|
||||
{
|
||||
switch (fHeader) {
|
||||
case EV_CHAT:
|
||||
float fSender = readbyte();
|
||||
float fTeam = readbyte();
|
||||
string sMessage = readstring();
|
||||
|
||||
CSQC_Parse_Print(sprintf("%s: %s", getplayerkeyvalue(fSender, "name"), sMessage), PRINT_CHAT);
|
||||
break;
|
||||
case EV_CHAT_TEAM:
|
||||
float fSender2 = readbyte();
|
||||
float fTeam2 = readbyte();
|
||||
string sMessage2 = readstring();
|
||||
|
||||
CSQC_Parse_Print(sprintf("[TEAM] %s: %s", getplayerkeyvalue(fSender2, "name"), sMessage2), PRINT_CHAT);
|
||||
break;
|
||||
default:
|
||||
return (0);
|
||||
}
|
||||
return (1);
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2022 Vera Visions LLC.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
const float baseIconSize = 32.0;
|
||||
const float baseIconPadding = 16.0;
|
||||
|
||||
/* main entry */
|
||||
void
|
||||
HUD_Init(void)
|
||||
{
|
||||
}
|
||||
|
||||
/* main entry */
|
||||
void
|
||||
HUD_Draw(void)
|
||||
{
|
||||
vector hudSize = g_view.GetHUDCanvasSize();
|
||||
vector iconPos = g_view.GetHUDCanvasPos() + (hudSize / 2);
|
||||
iconPos[1] = (hudSize[1] - baseIconSize) - baseIconPadding;
|
||||
|
||||
/* health, armor icons */
|
||||
Font_DrawRText(iconPos + [-((baseIconSize/2) + (baseIconPadding/2)) - baseIconPadding, 0], "100", FONT_16);
|
||||
drawpic(iconPos + [-((baseIconSize/2) + (baseIconPadding/2)), 0], "gfx/hud/health", [baseIconSize, baseIconSize], [1,1,1], 1.0f);
|
||||
Font_DrawText(iconPos + [(baseIconSize/2) + (baseIconPadding/2) + baseIconSize + baseIconPadding, 0], "100", FONT_16);
|
||||
drawpic(iconPos + [(baseIconSize/2) + (baseIconPadding/2), 0], "gfx/hud/armor", [baseIconSize, baseIconSize], [1,1,1], 1.0f);
|
||||
|
||||
/* little point in not drawing these, even if you don't have a suit */
|
||||
if (pl.m_activeWeapon) {
|
||||
pl.m_activeWeapon.UpdateGUI();
|
||||
}
|
||||
|
||||
Textmenu_Draw();
|
||||
}
|
||||
|
||||
/* specatator main entry */
|
||||
void
|
||||
HUD_DrawSpectator(void)
|
||||
{
|
||||
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2022 Vera Visions LLC.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/*
|
||||
=================
|
||||
ClientGame_Init
|
||||
|
||||
Comparable to worldspawn in SSQC in that it's mostly used for precaches
|
||||
=================
|
||||
*/
|
||||
void
|
||||
ClientGame_Init(float apilevel, string enginename, float engineversion)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
ClientGame_InitDone(void)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
ClientGame_RendererRestart(string rstr)
|
||||
{
|
||||
}
|
521
base/src/client/main.qc
Normal file
521
base/src/client/main.qc
Normal file
|
@ -0,0 +1,521 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2021 Marco Cawthorne <marco@icculus.org>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
struct
|
||||
{
|
||||
float m_flSpeed;
|
||||
float m_flFracSin;
|
||||
float m_flTime;
|
||||
float m_flMove;
|
||||
float m_flDelta;
|
||||
int m_iCycle;
|
||||
} g_camBobVars[4], *pCamBob;
|
||||
|
||||
/* tilts the camera for a head-bob like effect when moving */
|
||||
vector
|
||||
Camera_RunBob(vector camera_angle)
|
||||
{
|
||||
if (!autocvar(v_cambob, 1, "Enables bobbing effect for the first-person camera"))
|
||||
return camera_angle;
|
||||
|
||||
int s = (float)getproperty(VF_ACTIVESEAT);
|
||||
pCamBob = &g_camBobVars[s];
|
||||
|
||||
/* we don't really care about the vertical velocity */
|
||||
vector speed = pSeat->m_vecPredictedVelocity;
|
||||
speed[2] = 0.0f;
|
||||
pCamBob->m_flSpeed = vlen(speed);
|
||||
|
||||
if (pCamBob->m_flSpeed > 330.0f)
|
||||
pCamBob->m_flSpeed = 330.0f;
|
||||
|
||||
/* don't bother on low speeds */
|
||||
if ( pCamBob->m_flSpeed < 5.0f ) {
|
||||
pCamBob->m_flMove = 0.0f;
|
||||
pCamBob->m_flTime = 0.0f; /* progress has halted, start anew */
|
||||
return camera_angle;
|
||||
} else {
|
||||
pCamBob->m_flMove = frametime * (pCamBob->m_flSpeed * 0.01);
|
||||
}
|
||||
|
||||
pCamBob->m_flTime = (pCamBob->m_flTime += pCamBob->m_flMove);
|
||||
pCamBob->m_flFracSin = fabs(sin(pCamBob->m_flTime * M_PI));
|
||||
pCamBob->m_iCycle = (int)pCamBob->m_flTime;
|
||||
pCamBob->m_flDelta = (pCamBob->m_flFracSin * 0.0025f) * pCamBob->m_flSpeed;
|
||||
|
||||
camera_angle[0] += pCamBob->m_flDelta;
|
||||
|
||||
if (pCamBob->m_iCycle & 1) {
|
||||
pCamBob->m_flDelta = -pCamBob->m_flDelta;
|
||||
}
|
||||
|
||||
camera_angle[2] += pCamBob->m_flDelta;
|
||||
return camera_angle;
|
||||
}
|
||||
|
||||
/* applies a tilt to the camera for when we're strafing left to right */
|
||||
vector
|
||||
Camera_StrafeRoll(vector camera_angle)
|
||||
{
|
||||
if (!autocvar(v_camroll, 0, "Enables strafe-roll for the first-person camera"))
|
||||
return camera_angle;
|
||||
|
||||
float roll;
|
||||
makevectors(camera_angle);
|
||||
|
||||
roll = dotproduct(pSeat->m_vecPredictedVelocity, v_right);
|
||||
roll *= 0.015f;
|
||||
|
||||
camera_angle[2] += roll;
|
||||
return camera_angle;
|
||||
}
|
||||
|
||||
int
|
||||
ClientGame_ConsoleCommand(void)
|
||||
{
|
||||
switch(argv(0)) {
|
||||
default:
|
||||
return (0);
|
||||
}
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
ClientGame_PreDraw(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
ClientGame_PostDraw(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
int
|
||||
ClientGame_EntityUpdate(float id, float new)
|
||||
{
|
||||
switch (id) {
|
||||
default:
|
||||
return (0);
|
||||
}
|
||||
|
||||
return (1);
|
||||
}
|
||||
|
||||
int
|
||||
ClientGame_EventParse(float fHeader)
|
||||
{
|
||||
switch (fHeader) {
|
||||
default:
|
||||
return (0);
|
||||
}
|
||||
return (1);
|
||||
}
|
||||
|
||||
const float baseIconSize = 32.0;
|
||||
const float baseIconPadding = 16.0;
|
||||
|
||||
void
|
||||
HUD_Init(void)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
HUD_Draw(void)
|
||||
{
|
||||
NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer;
|
||||
vector hudSize = g_view.GetHUDCanvasSize();
|
||||
vector iconPos = g_view.GetHUDCanvasPos() + (hudSize / 2);
|
||||
iconPos[1] = (hudSize[1] - baseIconSize) - baseIconPadding;
|
||||
|
||||
string healthValue = ftos(pl.health);
|
||||
string armorValue = ftos(pl.armor);
|
||||
|
||||
/* health, armor icons */
|
||||
Font_DrawRText(iconPos + [-((baseIconSize/2) + (baseIconPadding/2)) - baseIconPadding, 0], healthValue, FONT_16);
|
||||
drawpic(iconPos + [-((baseIconSize/2) + (baseIconPadding/2)), 0], "gfx/hud/health", [baseIconSize, baseIconSize], [1,1,1], 1.0f);
|
||||
Font_DrawText(iconPos + [(baseIconSize/2) + (baseIconPadding/2) + baseIconSize + baseIconPadding, 0], armorValue, FONT_16);
|
||||
drawpic(iconPos + [(baseIconSize/2) + (baseIconPadding/2), 0], "gfx/hud/armor", [baseIconSize, baseIconSize], [1,1,1], 1.0f);
|
||||
|
||||
/* little point in not drawing these, even if you don't have a suit */
|
||||
if (pl.m_activeWeapon) {
|
||||
pl.m_activeWeapon.UpdateGUI();
|
||||
}
|
||||
|
||||
Textmenu_Draw();
|
||||
}
|
||||
|
||||
void
|
||||
HUD_DrawSpectator(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
ClientGame_Init(float apilevel, string enginename, float engineversion)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
ClientGame_InitDone(void)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
ClientGame_RendererRestart(string rstr)
|
||||
{
|
||||
}
|
||||
|
||||
#define SCORE_HEADER_C [255/255,156/255,0]
|
||||
#define SCORE_LINE_C [255/255,200/255,0]
|
||||
|
||||
var int autocvar_cl_centerscores = FALSE;
|
||||
var int g_scores_teamplay = 0;
|
||||
|
||||
void
|
||||
Scores_Init(void)
|
||||
{
|
||||
g_scores_teamplay = (int)serverkeyfloat("teamplay");
|
||||
}
|
||||
|
||||
void
|
||||
Scores_DrawTeam(NSClientPlayer pl, vector pos)
|
||||
{
|
||||
drawfill(pos, [290, 1], SCORE_LINE_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
drawfont = Font_GetID(FONT_20);
|
||||
drawstring(pos + [0,-18], "Teams", [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
drawstring(pos + [124,-18], "kills / deaths", [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
drawstring(pos + [240,-18], "latency", [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
pos[1] += 12;
|
||||
|
||||
for (int t = 1; t <= serverkeyfloat("teams"); t++) {
|
||||
float l;
|
||||
string temp;
|
||||
drawstring(pos, serverkey(sprintf("team_%i", t)), [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
temp = serverkey(sprintf("teamscore_%i", t));
|
||||
l = stringwidth(temp, FALSE, [8,8]);
|
||||
drawstring(pos + [150-l, 0], temp, [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
drawstring(pos + [158, 0], "wins", [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
pos[1] += 16;
|
||||
|
||||
for (int i = -1; i > -32; i--) {
|
||||
if (getplayerkeyfloat(i, "*team") != t) {
|
||||
continue;
|
||||
}
|
||||
|
||||
temp = getplayerkeyvalue(i, "name");
|
||||
|
||||
/* Out of players */
|
||||
if (!temp) {
|
||||
break;
|
||||
} else if (temp == getplayerkeyvalue(pl.entnum-1, "name")) {
|
||||
drawfill(pos, [290, 13], [0,0,1], 0.5f, DRAWFLAG_ADDITIVE);
|
||||
}
|
||||
|
||||
drawstring(pos + [24,0], getplayerkeyvalue(i, "name"), [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
drawstring(pos + [154,0], "/", [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
/* Get the kills and align them left to right */
|
||||
temp = getplayerkeyvalue(i, "frags");
|
||||
l = stringwidth(temp, FALSE, [8,8]);
|
||||
drawstring(pos + [150 - l,0], temp, [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
/* Deaths are right to left aligned */
|
||||
temp = getplayerkeyvalue(i, "*deaths");
|
||||
drawstring(pos + [165,0], temp, [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
/* Get the latency and align it left to right */
|
||||
temp = getplayerkeyvalue(i, "ping");
|
||||
l = stringwidth(temp, FALSE, [8,8]);
|
||||
|
||||
drawstring(pos + [290 - l,0], temp, [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
pos[1] += 20;
|
||||
}
|
||||
pos[1] += 12;
|
||||
}
|
||||
|
||||
drawfont = Font_GetID(FONT_CON);
|
||||
}
|
||||
|
||||
void
|
||||
Scores_DrawNormal(NSClientPlayer pl, vector pos)
|
||||
{
|
||||
drawfill(pos, [290, 1], SCORE_LINE_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
drawfont = Font_GetID(FONT_20);
|
||||
drawstring(pos + [0,-18], "Player", [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
drawstring(pos + [124,-18], "kills / deaths", [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
drawstring(pos + [240,-18], "latency", [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
pos[1] += 12;
|
||||
for (int i = -1; i > -32; i--) {
|
||||
float l;
|
||||
string ping;
|
||||
string kills;
|
||||
string deaths;
|
||||
string name;
|
||||
|
||||
name = getplayerkeyvalue(i, "name");
|
||||
|
||||
/* Out of players */
|
||||
if (!name) {
|
||||
break;
|
||||
} else if (name == getplayerkeyvalue(pl.entnum-1, "name")) {
|
||||
drawfill(pos, [290, 13], [0,0,1], 0.5f, DRAWFLAG_ADDITIVE);
|
||||
}
|
||||
|
||||
drawstring(pos, getplayerkeyvalue(i, "name"), [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
drawstring(pos + [154,0], "/", [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
/* Get the kills and align them left to right */
|
||||
kills = getplayerkeyvalue(i, "frags");
|
||||
l = stringwidth(kills, FALSE, [8,8]);
|
||||
drawstring(pos + [150 - l,0], kills, [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
/* Deaths are right to left aligned */
|
||||
deaths = getplayerkeyvalue(i, "*deaths");
|
||||
drawstring(pos + [165,0], deaths, [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
/* Get the latency and align it left to right */
|
||||
ping = getplayerkeyvalue(i, "ping");
|
||||
l = stringwidth(ping, FALSE, [8,8]);
|
||||
|
||||
drawstring(pos + [290 - l,0], ping, [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
pos[1] += 20;
|
||||
}
|
||||
|
||||
drawfont = Font_GetID(FONT_CON);
|
||||
}
|
||||
|
||||
void
|
||||
Scores_Draw(void)
|
||||
{
|
||||
vector pos;
|
||||
NSClientPlayer pl;
|
||||
|
||||
pl = (NSClientPlayer)pSeat->m_ePlayer;
|
||||
|
||||
if (autocvar_cl_centerscores) {
|
||||
int c = 10;
|
||||
|
||||
/* calculate all valid entries */
|
||||
for (int i = -1; i > -32; i--) {
|
||||
if (getplayerkeyvalue(i, "name")) {
|
||||
break;
|
||||
}
|
||||
c += 10;
|
||||
}
|
||||
pos = video_mins + [(g_vidsize[0] / 2) - 145, (g_vidsize[1] / 2) - c];
|
||||
} else {
|
||||
pos = video_mins + [(g_vidsize[0] / 2) - 145, 30];
|
||||
}
|
||||
|
||||
if (Util_IsTeamplay()) {
|
||||
Scores_DrawTeam(pl, pos);
|
||||
} else {
|
||||
Scores_DrawNormal(pl, pos);
|
||||
}
|
||||
}
|
||||
|
||||
#define BOB_STRENGTH 0.02
|
||||
#define BOB_CYCLE 1.0
|
||||
#define BOB_UP 0.60
|
||||
|
||||
var vector autocvar_bg_bobAmplitudeDucked = [0.0075, 0.0065, 0.0000];
|
||||
var vector autocvar_bg_bobAmplitudeProne = [0.02, 0.005, 0.0000];
|
||||
var vector autocvar_bg_bobAmplitudeSprinting = [0.02, 0.014, 0.0000];
|
||||
var vector autocvar_bg_bobAmplitudeStanding = [0.007, 0.007, 0.0000];
|
||||
var float autocvar_bg_bobMax = 8.0;
|
||||
var float autocvar_player_sprintCameraBob = 0.5;
|
||||
|
||||
struct
|
||||
{
|
||||
float m_flBobTime;
|
||||
float m_flBobTime2;
|
||||
float m_flBob;
|
||||
float m_flBob2;
|
||||
float m_flBobCycle;
|
||||
float m_flBobCycle2;
|
||||
float m_flSpeed;
|
||||
|
||||
float m_flViewBob;
|
||||
float m_flViewBob2;
|
||||
} g_viewBobVars[4], *pViewBob;
|
||||
|
||||
|
||||
/* bob vars are calculated separately from application, so that if there's
|
||||
* more than one viewmodel we won't affect the speed of the bob by running
|
||||
* the math too many times */
|
||||
void
|
||||
Viewmodel_CalcBob(void)
|
||||
{
|
||||
int s = (float)getproperty(VF_ACTIVESEAT);
|
||||
pViewBob = &g_viewBobVars[s];
|
||||
|
||||
vector vecVel;
|
||||
float flBob;
|
||||
|
||||
float var_bob;
|
||||
float var_cycle;
|
||||
float var_up;
|
||||
bool isSprinting = pSeat->m_ePlayer.vv_flags & VFL_SPRINTING;
|
||||
bool isCrouching = pSeat->m_ePlayer.vv_flags & VFL_CROUCHING;
|
||||
|
||||
// if (pSeatLocal->m_iSprinting && vlen(pSeat->m_vecPredictedVelocity) > 240)
|
||||
// isSprinting = true;
|
||||
|
||||
var_bob = BOB_STRENGTH;
|
||||
var_cycle = BOB_CYCLE;
|
||||
var_up = BOB_UP;
|
||||
|
||||
if (isSprinting)
|
||||
var_cycle *= autocvar_player_sprintCameraBob;
|
||||
|
||||
pViewBob->m_flBobTime += frametime;
|
||||
pViewBob->m_flBobCycle = pViewBob->m_flBobTime - (int)(pViewBob->m_flBobTime / var_cycle) * var_cycle;
|
||||
pViewBob->m_flBobCycle /= var_cycle;
|
||||
|
||||
if (pViewBob->m_flBobCycle < var_up) {
|
||||
pViewBob->m_flBobCycle = MATH_PI * pViewBob->m_flBobCycle / var_up;
|
||||
} else {
|
||||
pViewBob->m_flBobCycle = MATH_PI + MATH_PI * (pViewBob->m_flBobCycle - var_up)/(1.0 - var_up);
|
||||
}
|
||||
|
||||
vecVel = pSeat->m_vecPredictedVelocity;
|
||||
vecVel[2] = 0;
|
||||
pViewBob->m_flSpeed = vlen(vecVel);
|
||||
|
||||
flBob = pViewBob->m_flSpeed * var_bob;
|
||||
flBob = flBob * sin(pViewBob->m_flBobCycle);
|
||||
pViewBob->m_flBob = flBob;
|
||||
|
||||
/* BOB2, which is half the cycle of bob1 */
|
||||
pViewBob->m_flBobTime2 += frametime;
|
||||
pViewBob->m_flBobCycle2 = pViewBob->m_flBobTime2 - (int)(pViewBob->m_flBobTime2 / (var_cycle * 0.5f)) * (var_cycle * 0.5f);
|
||||
pViewBob->m_flBobCycle2 /= (var_cycle * 0.5f);
|
||||
|
||||
if (pViewBob->m_flBobCycle2 < var_up) {
|
||||
pViewBob->m_flBobCycle2 = MATH_PI * pViewBob->m_flBobCycle2 / var_up;
|
||||
} else {
|
||||
pViewBob->m_flBobCycle2 = MATH_PI + MATH_PI * (pViewBob->m_flBobCycle2 - var_up)/(1.0 - var_up);
|
||||
}
|
||||
|
||||
flBob = pViewBob->m_flSpeed * (var_bob * 0.5);
|
||||
flBob = flBob * cos(pViewBob->m_flBobCycle2);
|
||||
pViewBob->m_flBob2 = flBob;
|
||||
|
||||
if (isSprinting) {
|
||||
pViewBob->m_flViewBob2 = pViewBob->m_flBob2 * autocvar_bg_bobAmplitudeSprinting[0] * 25.0f;
|
||||
pViewBob->m_flViewBob = pViewBob->m_flBob * autocvar_bg_bobAmplitudeSprinting[1] * 25.0f;
|
||||
pViewBob->m_flBob2 *= autocvar_bg_bobAmplitudeSprinting[0] * 20.0;
|
||||
pViewBob->m_flBob *= autocvar_bg_bobAmplitudeSprinting[1] * 20.0;
|
||||
} else if (isCrouching) {
|
||||
pViewBob->m_flViewBob2 = pViewBob->m_flBob2 * autocvar_bg_bobAmplitudeDucked[0] * 25.0f;
|
||||
pViewBob->m_flViewBob = pViewBob->m_flBob * autocvar_bg_bobAmplitudeDucked[1] * 25.0f;
|
||||
pViewBob->m_flBob2 *= autocvar_bg_bobAmplitudeDucked[0] * 20.0;
|
||||
pViewBob->m_flBob *= autocvar_bg_bobAmplitudeDucked[1] * 20.0;
|
||||
} else {
|
||||
pViewBob->m_flViewBob2 = pViewBob->m_flBob2 * autocvar_bg_bobAmplitudeStanding[0] * 25.0f;
|
||||
pViewBob->m_flViewBob = pViewBob->m_flBob * autocvar_bg_bobAmplitudeStanding[1] * 25.0f;
|
||||
pViewBob->m_flBob2 *= autocvar_bg_bobAmplitudeStanding[0] * 20.0;
|
||||
pViewBob->m_flBob *= autocvar_bg_bobAmplitudeStanding[1] * 20.0;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Viewmodel_ApplyBob(entity gun)
|
||||
{
|
||||
int s = (float)getproperty(VF_ACTIVESEAT);
|
||||
pViewBob = &g_viewBobVars[s];
|
||||
|
||||
float sintime;
|
||||
float strength;
|
||||
float kickUp;
|
||||
//gun.angles[2] = pViewBob->m_flBob2 * -2.0f;
|
||||
gun.angles[2] = pViewBob->m_flViewBob * 4.0f;
|
||||
kickUp = pViewBob->m_flViewBob2 * 4.0f;
|
||||
|
||||
vector angmod = [0,0,0];
|
||||
|
||||
angmod[0] = pViewBob->m_flViewBob2 + kickUp;
|
||||
angmod[1] = pViewBob->m_flViewBob;
|
||||
|
||||
//angmod[2] += pViewBob->m_flBob * 3.0f;
|
||||
gun.angles += angmod;
|
||||
|
||||
/* sway with speed */
|
||||
sintime = sin(time);
|
||||
strength = pViewBob->m_flSpeed;
|
||||
|
||||
if (strength > 240)
|
||||
strength = 240;
|
||||
|
||||
strength = 240 - strength;
|
||||
strength *= 0.01f;
|
||||
|
||||
float sprint;
|
||||
if (pSeat->m_ePlayer.vv_flags & VFL_SPRINTING) {
|
||||
pSeat->m_flSprintLerp = bound(0.0f, pSeat->m_flSprintLerp + clframetime, 1.0f);
|
||||
} else {
|
||||
pSeat->m_flSprintLerp = bound(0.0f, pSeat->m_flSprintLerp - clframetime, 1.0f);
|
||||
}
|
||||
sprint = 20 * pSeat->m_flSprintLerp;
|
||||
gun.angles[0] += sprint;
|
||||
gun.angles[1] += sprint + (sprint * pViewBob->m_flBob) * 0.25f;
|
||||
|
||||
#ifdef WASTES
|
||||
if (pSeat->m_ePlayer.gflags & GF_IS_HEALING) {
|
||||
pSeatLocal->m_flHealLerp = bound(0.0f, pSeatLocal->m_flHealLerp + clframetime, 1.0f);
|
||||
} else {
|
||||
pSeatLocal->m_flHealLerp = bound(0.0f, pSeatLocal->m_flHealLerp - clframetime, 1.0f);
|
||||
}
|
||||
gun.angles[0] += pSeatLocal->m_flHealLerp * 45;
|
||||
gun.origin[2] -= pSeatLocal->m_flHealLerp * 5;
|
||||
#endif
|
||||
|
||||
gun.angles[0] += strength * sintime;
|
||||
gun.angles[1] += strength * sintime;
|
||||
//gun.angles[2] += strength * sintime;
|
||||
gun.origin += [0,0,-1];
|
||||
|
||||
makevectors(g_view.GetCameraAngle());
|
||||
gun.origin += v_forward * cvar("cl_gunx");
|
||||
gun.origin += v_right * cvar("cl_guny");
|
||||
gun.origin += v_up * cvar("cl_gunz");
|
||||
|
||||
/* lower gun when moving */
|
||||
if (pViewBob->m_flSpeed > 10.0) {
|
||||
gun.origin += (v_up * -pViewBob->m_flSpeed * 0.005f);
|
||||
gun.origin += (v_right * -pViewBob->m_flSpeed * 0.005f);
|
||||
}
|
||||
}
|
||||
|
||||
vector
|
||||
Camera_AddCamBob(vector cameraAngle)
|
||||
{
|
||||
vector angmod = g_vec_null;
|
||||
|
||||
makevectors(cameraAngle);
|
||||
|
||||
angmod = (pViewBob->m_flBob2 * -v_up);
|
||||
angmod += (pViewBob->m_flBob * -v_right);
|
||||
|
||||
return angmod;
|
||||
}
|
|
@ -12,7 +12,6 @@
|
|||
|
||||
/* mod specific header */
|
||||
defs.h
|
||||
|
||||
/* for VGUI elements, we want to include this (optional) */
|
||||
../../../src/vgui/include.src
|
||||
|
||||
|
@ -23,15 +22,7 @@ defs.h
|
|||
/* mod specific functions */
|
||||
../shared/include.src
|
||||
|
||||
draw.qc
|
||||
init.qc
|
||||
entities.qc
|
||||
camera.qc
|
||||
cmds.qc
|
||||
game_event.qc
|
||||
viewmodel.qc
|
||||
hud.qc
|
||||
scoreboard.qc
|
||||
main.qc
|
||||
|
||||
/* global client/shared code */
|
||||
../../../src/client/include.src
|
||||
|
|
|
@ -1,168 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2022 Vera Visions LLC.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#define SCORE_HEADER_C [255/255,156/255,0]
|
||||
#define SCORE_LINE_C [255/255,200/255,0]
|
||||
|
||||
var int autocvar_cl_centerscores = FALSE;
|
||||
var int g_scores_teamplay = 0;
|
||||
|
||||
void
|
||||
Scores_Init(void)
|
||||
{
|
||||
g_scores_teamplay = (int)serverkeyfloat("teamplay");
|
||||
}
|
||||
|
||||
void
|
||||
Scores_DrawTeam(NSClientPlayer pl, vector pos)
|
||||
{
|
||||
drawfill(pos, [290, 1], SCORE_LINE_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
drawfont = Font_GetID(FONT_20);
|
||||
drawstring(pos + [0,-18], "Teams", [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
drawstring(pos + [124,-18], "kills / deaths", [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
drawstring(pos + [240,-18], "latency", [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
pos[1] += 12;
|
||||
|
||||
for (int t = 1; t <= serverkeyfloat("teams"); t++) {
|
||||
float l;
|
||||
string temp;
|
||||
drawstring(pos, serverkey(sprintf("team_%i", t)), [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
temp = serverkey(sprintf("teamscore_%i", t));
|
||||
l = stringwidth(temp, FALSE, [8,8]);
|
||||
drawstring(pos + [150-l, 0], temp, [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
drawstring(pos + [158, 0], "wins", [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
pos[1] += 16;
|
||||
|
||||
for (int i = -1; i > -32; i--) {
|
||||
if (getplayerkeyfloat(i, "*team") != t) {
|
||||
continue;
|
||||
}
|
||||
|
||||
temp = getplayerkeyvalue(i, "name");
|
||||
|
||||
/* Out of players */
|
||||
if (!temp) {
|
||||
break;
|
||||
} else if (temp == getplayerkeyvalue(pl.entnum-1, "name")) {
|
||||
drawfill(pos, [290, 13], [0,0,1], 0.5f, DRAWFLAG_ADDITIVE);
|
||||
}
|
||||
|
||||
drawstring(pos + [24,0], getplayerkeyvalue(i, "name"), [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
drawstring(pos + [154,0], "/", [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
/* Get the kills and align them left to right */
|
||||
temp = getplayerkeyvalue(i, "frags");
|
||||
l = stringwidth(temp, FALSE, [8,8]);
|
||||
drawstring(pos + [150 - l,0], temp, [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
/* Deaths are right to left aligned */
|
||||
temp = getplayerkeyvalue(i, "*deaths");
|
||||
drawstring(pos + [165,0], temp, [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
/* Get the latency and align it left to right */
|
||||
temp = getplayerkeyvalue(i, "ping");
|
||||
l = stringwidth(temp, FALSE, [8,8]);
|
||||
|
||||
drawstring(pos + [290 - l,0], temp, [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
pos[1] += 20;
|
||||
}
|
||||
pos[1] += 12;
|
||||
}
|
||||
|
||||
drawfont = Font_GetID(FONT_CON);
|
||||
}
|
||||
|
||||
void
|
||||
Scores_DrawNormal(NSClientPlayer pl, vector pos)
|
||||
{
|
||||
drawfill(pos, [290, 1], SCORE_LINE_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
drawfont = Font_GetID(FONT_20);
|
||||
drawstring(pos + [0,-18], "Player", [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
drawstring(pos + [124,-18], "kills / deaths", [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
drawstring(pos + [240,-18], "latency", [8,8], SCORE_HEADER_C, 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
pos[1] += 12;
|
||||
for (int i = -1; i > -32; i--) {
|
||||
float l;
|
||||
string ping;
|
||||
string kills;
|
||||
string deaths;
|
||||
string name;
|
||||
|
||||
name = getplayerkeyvalue(i, "name");
|
||||
|
||||
/* Out of players */
|
||||
if (!name) {
|
||||
break;
|
||||
} else if (name == getplayerkeyvalue(pl.entnum-1, "name")) {
|
||||
drawfill(pos, [290, 13], [0,0,1], 0.5f, DRAWFLAG_ADDITIVE);
|
||||
}
|
||||
|
||||
drawstring(pos, getplayerkeyvalue(i, "name"), [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
drawstring(pos + [154,0], "/", [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
/* Get the kills and align them left to right */
|
||||
kills = getplayerkeyvalue(i, "frags");
|
||||
l = stringwidth(kills, FALSE, [8,8]);
|
||||
drawstring(pos + [150 - l,0], kills, [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
/* Deaths are right to left aligned */
|
||||
deaths = getplayerkeyvalue(i, "*deaths");
|
||||
drawstring(pos + [165,0], deaths, [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
|
||||
/* Get the latency and align it left to right */
|
||||
ping = getplayerkeyvalue(i, "ping");
|
||||
l = stringwidth(ping, FALSE, [8,8]);
|
||||
|
||||
drawstring(pos + [290 - l,0], ping, [8,8], [1,1,1], 1.0f, DRAWFLAG_ADDITIVE);
|
||||
pos[1] += 20;
|
||||
}
|
||||
|
||||
drawfont = Font_GetID(FONT_CON);
|
||||
}
|
||||
|
||||
void
|
||||
Scores_Draw(void)
|
||||
{
|
||||
vector pos;
|
||||
NSClientPlayer pl;
|
||||
|
||||
pl = (NSClientPlayer)pSeat->m_ePlayer;
|
||||
|
||||
if (autocvar_cl_centerscores) {
|
||||
int c = 10;
|
||||
|
||||
/* calculate all valid entries */
|
||||
for (int i = -1; i > -32; i--) {
|
||||
if (getplayerkeyvalue(i, "name")) {
|
||||
break;
|
||||
}
|
||||
c += 10;
|
||||
}
|
||||
pos = video_mins + [(g_vidsize[0] / 2) - 145, (g_vidsize[1] / 2) - c];
|
||||
} else {
|
||||
pos = video_mins + [(g_vidsize[0] / 2) - 145, 30];
|
||||
}
|
||||
|
||||
if (Util_IsTeamplay()) {
|
||||
Scores_DrawTeam(pl, pos);
|
||||
} else {
|
||||
Scores_DrawNormal(pl, pos);
|
||||
}
|
||||
}
|
|
@ -1,202 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2021 Marco Cawthorne <marco@icculus.org>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#define BOB_STRENGTH 0.02
|
||||
#define BOB_CYCLE 1.0
|
||||
#define BOB_UP 0.60
|
||||
|
||||
var vector autocvar_bg_bobAmplitudeDucked = [0.0075, 0.0065, 0.0000];
|
||||
var vector autocvar_bg_bobAmplitudeProne = [0.02, 0.005, 0.0000];
|
||||
var vector autocvar_bg_bobAmplitudeSprinting = [0.02, 0.014, 0.0000];
|
||||
var vector autocvar_bg_bobAmplitudeStanding = [0.007, 0.007, 0.0000];
|
||||
var float autocvar_bg_bobMax = 8.0;
|
||||
var float autocvar_player_sprintCameraBob = 0.5;
|
||||
|
||||
struct
|
||||
{
|
||||
float m_flBobTime;
|
||||
float m_flBobTime2;
|
||||
float m_flBob;
|
||||
float m_flBob2;
|
||||
float m_flBobCycle;
|
||||
float m_flBobCycle2;
|
||||
float m_flSpeed;
|
||||
|
||||
float m_flViewBob;
|
||||
float m_flViewBob2;
|
||||
} g_viewBobVars[4], *pViewBob;
|
||||
|
||||
|
||||
/* bob vars are calculated separately from application, so that if there's
|
||||
* more than one viewmodel we won't affect the speed of the bob by running
|
||||
* the math too many times */
|
||||
void
|
||||
Viewmodel_CalcBob(void)
|
||||
{
|
||||
int s = (float)getproperty(VF_ACTIVESEAT);
|
||||
pViewBob = &g_viewBobVars[s];
|
||||
|
||||
vector vecVel;
|
||||
float flBob;
|
||||
|
||||
float var_bob;
|
||||
float var_cycle;
|
||||
float var_up;
|
||||
bool isSprinting = pSeat->m_ePlayer.vv_flags & VFL_SPRINTING;
|
||||
bool isCrouching = pSeat->m_ePlayer.vv_flags & VFL_CROUCHING;
|
||||
|
||||
// if (pSeatLocal->m_iSprinting && vlen(pSeat->m_vecPredictedVelocity) > 240)
|
||||
// isSprinting = true;
|
||||
|
||||
var_bob = BOB_STRENGTH;
|
||||
var_cycle = BOB_CYCLE;
|
||||
var_up = BOB_UP;
|
||||
|
||||
if (isSprinting)
|
||||
var_cycle *= autocvar_player_sprintCameraBob;
|
||||
|
||||
pViewBob->m_flBobTime += frametime;
|
||||
pViewBob->m_flBobCycle = pViewBob->m_flBobTime - (int)(pViewBob->m_flBobTime / var_cycle) * var_cycle;
|
||||
pViewBob->m_flBobCycle /= var_cycle;
|
||||
|
||||
if (pViewBob->m_flBobCycle < var_up) {
|
||||
pViewBob->m_flBobCycle = MATH_PI * pViewBob->m_flBobCycle / var_up;
|
||||
} else {
|
||||
pViewBob->m_flBobCycle = MATH_PI + MATH_PI * (pViewBob->m_flBobCycle - var_up)/(1.0 - var_up);
|
||||
}
|
||||
|
||||
vecVel = pSeat->m_vecPredictedVelocity;
|
||||
vecVel[2] = 0;
|
||||
pViewBob->m_flSpeed = vlen(vecVel);
|
||||
|
||||
flBob = pViewBob->m_flSpeed * var_bob;
|
||||
flBob = flBob * sin(pViewBob->m_flBobCycle);
|
||||
pViewBob->m_flBob = flBob;
|
||||
|
||||
/* BOB2, which is half the cycle of bob1 */
|
||||
pViewBob->m_flBobTime2 += frametime;
|
||||
pViewBob->m_flBobCycle2 = pViewBob->m_flBobTime2 - (int)(pViewBob->m_flBobTime2 / (var_cycle * 0.5f)) * (var_cycle * 0.5f);
|
||||
pViewBob->m_flBobCycle2 /= (var_cycle * 0.5f);
|
||||
|
||||
if (pViewBob->m_flBobCycle2 < var_up) {
|
||||
pViewBob->m_flBobCycle2 = MATH_PI * pViewBob->m_flBobCycle2 / var_up;
|
||||
} else {
|
||||
pViewBob->m_flBobCycle2 = MATH_PI + MATH_PI * (pViewBob->m_flBobCycle2 - var_up)/(1.0 - var_up);
|
||||
}
|
||||
|
||||
flBob = pViewBob->m_flSpeed * (var_bob * 0.5);
|
||||
flBob = flBob * cos(pViewBob->m_flBobCycle2);
|
||||
pViewBob->m_flBob2 = flBob;
|
||||
|
||||
if (isSprinting) {
|
||||
pViewBob->m_flViewBob2 = pViewBob->m_flBob2 * autocvar_bg_bobAmplitudeSprinting[0] * 25.0f;
|
||||
pViewBob->m_flViewBob = pViewBob->m_flBob * autocvar_bg_bobAmplitudeSprinting[1] * 25.0f;
|
||||
pViewBob->m_flBob2 *= autocvar_bg_bobAmplitudeSprinting[0] * 20.0;
|
||||
pViewBob->m_flBob *= autocvar_bg_bobAmplitudeSprinting[1] * 20.0;
|
||||
} else if (isCrouching) {
|
||||
pViewBob->m_flViewBob2 = pViewBob->m_flBob2 * autocvar_bg_bobAmplitudeDucked[0] * 25.0f;
|
||||
pViewBob->m_flViewBob = pViewBob->m_flBob * autocvar_bg_bobAmplitudeDucked[1] * 25.0f;
|
||||
pViewBob->m_flBob2 *= autocvar_bg_bobAmplitudeDucked[0] * 20.0;
|
||||
pViewBob->m_flBob *= autocvar_bg_bobAmplitudeDucked[1] * 20.0;
|
||||
} else {
|
||||
pViewBob->m_flViewBob2 = pViewBob->m_flBob2 * autocvar_bg_bobAmplitudeStanding[0] * 25.0f;
|
||||
pViewBob->m_flViewBob = pViewBob->m_flBob * autocvar_bg_bobAmplitudeStanding[1] * 25.0f;
|
||||
pViewBob->m_flBob2 *= autocvar_bg_bobAmplitudeStanding[0] * 20.0;
|
||||
pViewBob->m_flBob *= autocvar_bg_bobAmplitudeStanding[1] * 20.0;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Viewmodel_ApplyBob(entity gun)
|
||||
{
|
||||
int s = (float)getproperty(VF_ACTIVESEAT);
|
||||
pViewBob = &g_viewBobVars[s];
|
||||
|
||||
float sintime;
|
||||
float strength;
|
||||
float kickUp;
|
||||
//gun.angles[2] = pViewBob->m_flBob2 * -2.0f;
|
||||
gun.angles[2] = pViewBob->m_flViewBob * 4.0f;
|
||||
kickUp = pViewBob->m_flViewBob2 * 4.0f;
|
||||
|
||||
vector angmod = [0,0,0];
|
||||
|
||||
angmod[0] = pViewBob->m_flViewBob2 + kickUp;
|
||||
angmod[1] = pViewBob->m_flViewBob;
|
||||
|
||||
//angmod[2] += pViewBob->m_flBob * 3.0f;
|
||||
gun.angles += angmod;
|
||||
|
||||
/* sway with speed */
|
||||
sintime = sin(time);
|
||||
strength = pViewBob->m_flSpeed;
|
||||
|
||||
if (strength > 240)
|
||||
strength = 240;
|
||||
|
||||
strength = 240 - strength;
|
||||
strength *= 0.01f;
|
||||
|
||||
float sprint;
|
||||
if (pSeat->m_ePlayer.vv_flags & VFL_SPRINTING) {
|
||||
pSeat->m_flSprintLerp = bound(0.0f, pSeat->m_flSprintLerp + clframetime, 1.0f);
|
||||
} else {
|
||||
pSeat->m_flSprintLerp = bound(0.0f, pSeat->m_flSprintLerp - clframetime, 1.0f);
|
||||
}
|
||||
sprint = 20 * pSeat->m_flSprintLerp;
|
||||
gun.angles[0] += sprint;
|
||||
gun.angles[1] += sprint + (sprint * pViewBob->m_flBob) * 0.25f;
|
||||
|
||||
#ifdef WASTES
|
||||
if (pSeat->m_ePlayer.gflags & GF_IS_HEALING) {
|
||||
pSeatLocal->m_flHealLerp = bound(0.0f, pSeatLocal->m_flHealLerp + clframetime, 1.0f);
|
||||
} else {
|
||||
pSeatLocal->m_flHealLerp = bound(0.0f, pSeatLocal->m_flHealLerp - clframetime, 1.0f);
|
||||
}
|
||||
gun.angles[0] += pSeatLocal->m_flHealLerp * 45;
|
||||
gun.origin[2] -= pSeatLocal->m_flHealLerp * 5;
|
||||
#endif
|
||||
|
||||
gun.angles[0] += strength * sintime;
|
||||
gun.angles[1] += strength * sintime;
|
||||
//gun.angles[2] += strength * sintime;
|
||||
gun.origin += [0,0,-1];
|
||||
|
||||
makevectors(g_view.GetCameraAngle());
|
||||
gun.origin += v_forward * cvar("cl_gunx");
|
||||
gun.origin += v_right * cvar("cl_guny");
|
||||
gun.origin += v_up * cvar("cl_gunz");
|
||||
|
||||
/* lower gun when moving */
|
||||
if (pViewBob->m_flSpeed > 10.0) {
|
||||
gun.origin += (v_up * -pViewBob->m_flSpeed * 0.005f);
|
||||
gun.origin += (v_right * -pViewBob->m_flSpeed * 0.005f);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
vector
|
||||
Camera_AddCamBob(vector cameraAngle)
|
||||
{
|
||||
vector angmod = g_vec_null;
|
||||
|
||||
makevectors(cameraAngle);
|
||||
|
||||
angmod = (pViewBob->m_flBob2 * -v_up);
|
||||
angmod += (pViewBob->m_flBob * -v_right);
|
||||
|
||||
return angmod;
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2022 Vera Visions LLC.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
|
@ -1,52 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2022 Vera Visions LLC.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
class GameRules:CGameRules
|
||||
{
|
||||
void GameRules(void);
|
||||
|
||||
virtual void(NSClientPlayer) PlayerConnect;
|
||||
virtual void(NSClientPlayer) PlayerDisconnect;
|
||||
virtual void(NSClientPlayer) PlayerPostFrame;
|
||||
|
||||
virtual void(NSClientPlayer) LevelDecodeParms;
|
||||
virtual void(NSClientPlayer) LevelChangeParms;
|
||||
virtual void(void) LevelNewParms;
|
||||
};
|
||||
|
||||
class SingleplayerRules:GameRules
|
||||
{
|
||||
void SingleplayerRules(void);
|
||||
|
||||
/* client */
|
||||
virtual void(NSClientPlayer) PlayerSpawn;
|
||||
virtual void(NSClientPlayer) PlayerDeath;
|
||||
};
|
||||
|
||||
class MultiplayerRules:GameRules
|
||||
{
|
||||
|
||||
int m_iIntermission;
|
||||
int m_iIntermissionTime;
|
||||
|
||||
void MultiplayerRules(void);
|
||||
virtual void(void) FrameStart;
|
||||
|
||||
/* client */
|
||||
virtual void(NSClientPlayer) PlayerSpawn;
|
||||
virtual void(NSClientPlayer) PlayerDeath;
|
||||
virtual bool(NSClientPlayer, string) ConsoleCommand;
|
||||
};
|
|
@ -1,101 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2022 Vera Visions LLC.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
void
|
||||
GameRules::GameRules(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
GameRules::LevelDecodeParms(NSClientPlayer pl)
|
||||
{
|
||||
g_landmarkpos[0] = parm1;
|
||||
g_landmarkpos[1] = parm2;
|
||||
g_landmarkpos[2] = parm3;
|
||||
pl.angles[0] = parm4;
|
||||
pl.angles[1] = parm5;
|
||||
pl.angles[2] = parm6;
|
||||
pl.velocity[0] = parm7;
|
||||
pl.velocity[1] = parm8;
|
||||
pl.velocity[2] = parm9;
|
||||
pl.g_items = parm10;
|
||||
pl.activeweapon = parm11;
|
||||
pl.flags = parm64;
|
||||
}
|
||||
|
||||
void
|
||||
GameRules::LevelChangeParms(NSClientPlayer pl)
|
||||
{
|
||||
parm1 = g_landmarkpos[0];
|
||||
parm2 = g_landmarkpos[1];
|
||||
parm3 = g_landmarkpos[2];
|
||||
parm4 = pl.angles[0];
|
||||
parm5 = pl.angles[1];
|
||||
parm6 = pl.angles[2];
|
||||
parm7 = pl.velocity[0];
|
||||
parm8 = pl.velocity[1];
|
||||
parm9 = pl.velocity[2];
|
||||
parm64 = pl.flags;
|
||||
parm10 = pl.g_items;
|
||||
parm11 = pl.activeweapon;
|
||||
}
|
||||
|
||||
void
|
||||
GameRules::LevelNewParms(void)
|
||||
{
|
||||
parm1 = parm2 = parm3 = parm4 = parm5 = parm6 = parm7 =
|
||||
parm8 = parm9 = parm10 = parm11 = parm12 = parm13 = parm14 =
|
||||
parm15 = parm16 = parm17 = parm18 = parm19 = parm20 = parm21 =
|
||||
parm22 = parm23 = parm24 = parm25 = parm26 = parm27 = parm28 =
|
||||
parm29 = parm30 = 0;
|
||||
parm64 = FL_CLIENT;
|
||||
}
|
||||
|
||||
/* we check what fields have changed over the course of the frame and network
|
||||
* only the ones that have actually changed */
|
||||
void
|
||||
GameRules::PlayerPostFrame(NSClientPlayer pl)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
GameRules::PlayerConnect(NSClientPlayer pl)
|
||||
{
|
||||
if (Plugin_PlayerConnect(pl) == FALSE)
|
||||
bprint(PRINT_HIGH, sprintf("%s connected\n", pl.netname));
|
||||
}
|
||||
|
||||
void
|
||||
GameRules::PlayerDisconnect(NSClientPlayer pl)
|
||||
{
|
||||
if (Plugin_PlayerDisconnect(pl) == FALSE)
|
||||
bprint(PRINT_HIGH, sprintf("%s disconnected\n", pl.netname));
|
||||
|
||||
/* Make this unusable */
|
||||
pl.solid = SOLID_NOT;
|
||||
pl.movetype = MOVETYPE_NONE;
|
||||
pl.modelindex = 0;
|
||||
pl.health = 0;
|
||||
pl.takedamage = 0;
|
||||
pl.SendFlags = -1;
|
||||
}
|
||||
|
||||
void
|
||||
Game_Worldspawn(void)
|
||||
{
|
||||
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2022 Vera Visions LLC.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
void
|
||||
Game_InitRules(void)
|
||||
{
|
||||
g_grMode = NSGameRules::InitFromProgs("maps/mp/gametypes/dm.dat");
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
Game_Worldspawn(void)
|
||||
{
|
||||
|
||||
}
|
|
@ -1,77 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2022 Vera Visions LLC.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
void
|
||||
SingleplayerRules::SingleplayerRules(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
SingleplayerRules::PlayerDeath(NSClientPlayer pl)
|
||||
{
|
||||
pl.movetype = MOVETYPE_NONE;
|
||||
pl.solid = SOLID_NOT;
|
||||
pl.takedamage = DAMAGE_NO;
|
||||
pl.armor = pl.activeweapon = pl.g_items = pl.weapon = 0;
|
||||
pl.health = 0;
|
||||
|
||||
if (cvar("coop") == 1) {
|
||||
pl.think = PutClientInServer;
|
||||
pl.nextthink = time + 4.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
SingleplayerRules::PlayerSpawn(NSClientPlayer pl)
|
||||
{
|
||||
pl.classname = "player";
|
||||
pl.health = pl.max_health = 100;
|
||||
pl.takedamage = DAMAGE_YES;
|
||||
pl.solid = SOLID_SLIDEBOX;
|
||||
pl.movetype = MOVETYPE_WALK;
|
||||
pl.flags = FL_CLIENT;
|
||||
pl.viewzoom = 1.0;
|
||||
pl.model = "models/player.mdl";
|
||||
setmodel(pl, pl.model);
|
||||
pl.AddEffects(EF_NOSHADOW);
|
||||
|
||||
setsize(pl, VEC_HULL_MIN, VEC_HULL_MAX);
|
||||
pl.velocity = [0,0,0];
|
||||
pl.gravity = __NULL__;
|
||||
pl.frame = 1;
|
||||
pl.SendFlags = UPDATE_ALL;
|
||||
pl.customphysics = Empty;
|
||||
pl.iBleeds = TRUE;
|
||||
forceinfokey(pl, "*spec", "0");
|
||||
forceinfokey(pl, "*deaths", ftos(pl.deaths));
|
||||
|
||||
/* this is where the mods want to deviate */
|
||||
entity spot;
|
||||
|
||||
if (startspot != "") {
|
||||
dprint(sprintf("^3Gamerules_Spawn^7: Startspot is %s\n", startspot));
|
||||
LevelDecodeParms(pl);
|
||||
setorigin(pl, Landmark_GetSpot());
|
||||
} else {
|
||||
LevelNewParms();
|
||||
spot = find(world, ::classname, "info_player_start");
|
||||
setorigin(pl, spot.origin);
|
||||
pl.angles = spot.angles;
|
||||
}
|
||||
|
||||
Client_FixAngle(pl, pl.angles);
|
||||
}
|
11
base/src/server/main.qc
Normal file
11
base/src/server/main.qc
Normal file
|
@ -0,0 +1,11 @@
|
|||
void
|
||||
Game_Worldspawn(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
Game_InitRules(void)
|
||||
{
|
||||
g_grMode = NSGameRules::InitFromProgs("maps/mp/gametypes/dm.dat");
|
||||
}
|
|
@ -12,17 +12,13 @@
|
|||
../../../src/server/defs.h
|
||||
../../../src/gs-entbase/server.src
|
||||
../../../src/gs-entbase/shared.src
|
||||
|
||||
/* mod specific header */
|
||||
defs.h
|
||||
|
||||
../shared/include.src
|
||||
|
||||
/* include the botlib if desired (optional) */
|
||||
../../../src/botlib/include.src
|
||||
|
||||
/* mod specific functions */
|
||||
gamerules_multiplayer.qc
|
||||
main.qc
|
||||
|
||||
/* global server/shared code */
|
||||
../../../src/server/include.src
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/ceiling.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/counter.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/desk.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/door.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/floor.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/healthcharge.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
surfaceparm trans
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap "textures/measure/ladder.tga"
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
surfaceParm alien
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/mat_alien.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
surfaceParm computer
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/mat_computer.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
surfaceParm concrete
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/mat_concrete.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
surfaceParm dirt
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/mat_dirt.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
surfaceParm flesh
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/mat_flesh.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
surfaceParm foliage
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/mat_foliage.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
surfaceParm glass
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/mat_glass.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
surfaceParm grate
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/mat_grate.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
surfaceParm metal
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/mat_metal.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
surfaceParm sand
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/mat_sand.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
surfaceParm slosh
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/mat_slosh.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
surfaceParm snow
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/mat_snow.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
surfaceParm tile
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/mat_tile.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
surfaceParm vent
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/mat_vent.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
surfaceParm wood
|
||||
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/mat_wood.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
program lightmapped#MASK=0.5
|
||||
program defaultwall#MASK=0.5
|
||||
surfaceParm alphashadow
|
||||
diffusemap textures/measure/rail.tga
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/recharge.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/stairs1.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/wall128.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/wall128b.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/wall128g.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/wall128gr.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/wall128pl.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/wall32.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/wall64.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Vera Visions Material
|
||||
{
|
||||
if $programs
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
diffusemap textures/measure/wall64a.tga
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/asphalt1.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ if $programs
|
|||
diffusemap "textures/next/asphalt2.tga"
|
||||
normalmap "textures/next/asphalt2_normal.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/asphalt3.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/bunker1.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/bunker2.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/bunker3.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/bunker4.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/bunker5.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/bunker6.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/bunker7.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/bunker8.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/bunker9.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/cracked1.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/cracked2.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/dirty1.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/dirty2.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/dirty3.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/dirty4.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/earth1.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ if $programs
|
|||
diffusemap "textures/next/earth2.tga"
|
||||
normalmap "textures/next/earth2_normal.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/earth3.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/earth4.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/earth5.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/earth6.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/earth7.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/earth8.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/earth9.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/plywood1.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/plywood2.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/plywood3.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/plywood4.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/plywood5.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/rusty1.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/rusty2.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/rusty3.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/rusty4.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/rusty5.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/rusty6.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/rusty7.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/tarmac1.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/tarmac2.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if $programs
|
||||
diffusemap "textures/next/vent1.tga"
|
||||
{
|
||||
program lightmapped
|
||||
program defaultwall
|
||||
map $diffuse
|
||||
map $normalmap
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue