* 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"
|
"spawnclass" "NSClientPlayer"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
entityDef player_mp
|
||||||
|
{
|
||||||
|
"inherit" "player"
|
||||||
|
}
|
||||||
|
|
|
@ -10,26 +10,27 @@ entityDef weapon_bat
|
||||||
"ammoRequired" "0"
|
"ammoRequired" "0"
|
||||||
"def_dropItem" "weapon_bat"
|
"def_dropItem" "weapon_bat"
|
||||||
|
|
||||||
"def_melee" "damage_bat"
|
"def_onFire" "damage_bat"
|
||||||
"melee_distance" "32"
|
"testDistance" "-32"
|
||||||
|
|
||||||
"meleeRateMiss" "0.6"
|
"meleeRateMiss" "0.6"
|
||||||
"meleeRateHit" "0.75"
|
"meleeRateHit" "0.75"
|
||||||
|
|
||||||
"actIdle" "0,2"
|
"act_idle" "0,2"
|
||||||
"actDraw" "4"
|
"act_draw" "4"
|
||||||
"actHolster" "6"
|
"act_holster" "6"
|
||||||
"actMeleeMiss" "9,11,13"
|
"act_fireFailed" "9,11,13"
|
||||||
"actMeleeHit" "8,10,12"
|
"act_fire" "8,10,12"
|
||||||
|
"snd_fire" "weapon_bat.hit"
|
||||||
|
"snd_fireFailed" "weapon_bat.miss"
|
||||||
}
|
}
|
||||||
|
|
||||||
entityDef damage_bat
|
entityDef damage_bat
|
||||||
{
|
{
|
||||||
|
"spawnclass" "NSProjectile"
|
||||||
|
"is_bullet" "1"
|
||||||
"damage" "15"
|
"damage" "15"
|
||||||
"gib" "1"
|
"gib" "1"
|
||||||
|
|
||||||
"snd_hit" "weapon_bat.hit"
|
|
||||||
"snd_miss" "weapon_bat.miss"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pistol
|
// Pistol
|
||||||
|
@ -48,14 +49,14 @@ entityDef weapon_pistol
|
||||||
"fireRate" ".2"
|
"fireRate" ".2"
|
||||||
|
|
||||||
"snd_fire" "weapon_pistol.fire"
|
"snd_fire" "weapon_pistol.fire"
|
||||||
"actFire" "14,16"
|
"act_fire" "14,16"
|
||||||
"actFireLast" "15,17"
|
"act_fireLast" "15,17"
|
||||||
"actReload" "8"
|
"act_reload" "8"
|
||||||
"actReloadEmpty" "9"
|
"act_reloadEmpty" "9"
|
||||||
"actDrawEmpty" "3"
|
"act_drawEmpty" "3"
|
||||||
"actDraw" "2"
|
"act_draw" "2"
|
||||||
"actIdleEmpty" "1"
|
"act_idleEmpty" "1"
|
||||||
"actIdle" "0"
|
"act_idle" "0"
|
||||||
}
|
}
|
||||||
|
|
||||||
entityDef projectile_pistol
|
entityDef projectile_pistol
|
||||||
|
@ -80,11 +81,11 @@ entityDef weapon_frag
|
||||||
"def_dropItem" "weapon_frag"
|
"def_dropItem" "weapon_frag"
|
||||||
"def_onRelease" "projectile_frag"
|
"def_onRelease" "projectile_frag"
|
||||||
|
|
||||||
"actIdle" "0"
|
"act_idle" "0"
|
||||||
"actDraw" "1"
|
"act_draw" "1"
|
||||||
"actHolster" "2"
|
"act_holster" "2"
|
||||||
"actFire" "4"
|
"act_fire" "4"
|
||||||
"actRelease" "6"
|
"act_release" "6"
|
||||||
}
|
}
|
||||||
|
|
||||||
entityDef projectile_frag
|
entityDef projectile_frag
|
||||||
|
@ -101,7 +102,6 @@ entityDef projectile_frag
|
||||||
"snd_explode" "fx.explosion"
|
"snd_explode" "fx.explosion"
|
||||||
"snd_bounce" "weapon_frag.bounce"
|
"snd_bounce" "weapon_frag.bounce"
|
||||||
"decal_detonate" "ExplosionScorch"
|
"decal_detonate" "ExplosionScorch"
|
||||||
|
|
||||||
"def_damage" "damage_fragDirect"
|
"def_damage" "damage_fragDirect"
|
||||||
"def_splash_damage" "damage_fragSplash"
|
"def_splash_damage" "damage_fragSplash"
|
||||||
}
|
}
|
||||||
|
@ -116,9 +116,3 @@ entityDef damage_fragSplash
|
||||||
"damage" "150"
|
"damage" "150"
|
||||||
"radius" "250"
|
"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 */
|
/* mod specific header */
|
||||||
defs.h
|
defs.h
|
||||||
|
|
||||||
/* for VGUI elements, we want to include this (optional) */
|
/* for VGUI elements, we want to include this (optional) */
|
||||||
../../../src/vgui/include.src
|
../../../src/vgui/include.src
|
||||||
|
|
||||||
|
@ -23,15 +22,7 @@ defs.h
|
||||||
/* mod specific functions */
|
/* mod specific functions */
|
||||||
../shared/include.src
|
../shared/include.src
|
||||||
|
|
||||||
draw.qc
|
main.qc
|
||||||
init.qc
|
|
||||||
entities.qc
|
|
||||||
camera.qc
|
|
||||||
cmds.qc
|
|
||||||
game_event.qc
|
|
||||||
viewmodel.qc
|
|
||||||
hud.qc
|
|
||||||
scoreboard.qc
|
|
||||||
|
|
||||||
/* global client/shared code */
|
/* global client/shared code */
|
||||||
../../../src/client/include.src
|
../../../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/server/defs.h
|
||||||
../../../src/gs-entbase/server.src
|
../../../src/gs-entbase/server.src
|
||||||
../../../src/gs-entbase/shared.src
|
../../../src/gs-entbase/shared.src
|
||||||
|
|
||||||
/* mod specific header */
|
|
||||||
defs.h
|
|
||||||
|
|
||||||
../shared/include.src
|
../shared/include.src
|
||||||
|
|
||||||
/* include the botlib if desired (optional) */
|
/* include the botlib if desired (optional) */
|
||||||
../../../src/botlib/include.src
|
../../../src/botlib/include.src
|
||||||
|
|
||||||
/* mod specific functions */
|
/* mod specific functions */
|
||||||
gamerules_multiplayer.qc
|
main.qc
|
||||||
|
|
||||||
/* global server/shared code */
|
/* global server/shared code */
|
||||||
../../../src/server/include.src
|
../../../src/server/include.src
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/ceiling.tga
|
diffusemap textures/measure/ceiling.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/counter.tga
|
diffusemap textures/measure/counter.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/desk.tga
|
diffusemap textures/measure/desk.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/door.tga
|
diffusemap textures/measure/door.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/floor.tga
|
diffusemap textures/measure/floor.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/healthcharge.tga
|
diffusemap textures/measure/healthcharge.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
surfaceparm trans
|
surfaceparm trans
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap "textures/measure/ladder.tga"
|
diffusemap "textures/measure/ladder.tga"
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
surfaceParm alien
|
surfaceParm alien
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/mat_alien.tga
|
diffusemap textures/measure/mat_alien.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
surfaceParm computer
|
surfaceParm computer
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/mat_computer.tga
|
diffusemap textures/measure/mat_computer.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
surfaceParm concrete
|
surfaceParm concrete
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/mat_concrete.tga
|
diffusemap textures/measure/mat_concrete.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
surfaceParm dirt
|
surfaceParm dirt
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/mat_dirt.tga
|
diffusemap textures/measure/mat_dirt.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
surfaceParm flesh
|
surfaceParm flesh
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/mat_flesh.tga
|
diffusemap textures/measure/mat_flesh.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
surfaceParm foliage
|
surfaceParm foliage
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/mat_foliage.tga
|
diffusemap textures/measure/mat_foliage.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
surfaceParm glass
|
surfaceParm glass
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/mat_glass.tga
|
diffusemap textures/measure/mat_glass.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
surfaceParm grate
|
surfaceParm grate
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/mat_grate.tga
|
diffusemap textures/measure/mat_grate.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
surfaceParm metal
|
surfaceParm metal
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/mat_metal.tga
|
diffusemap textures/measure/mat_metal.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
surfaceParm sand
|
surfaceParm sand
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/mat_sand.tga
|
diffusemap textures/measure/mat_sand.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
surfaceParm slosh
|
surfaceParm slosh
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/mat_slosh.tga
|
diffusemap textures/measure/mat_slosh.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
surfaceParm snow
|
surfaceParm snow
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/mat_snow.tga
|
diffusemap textures/measure/mat_snow.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
surfaceParm tile
|
surfaceParm tile
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/mat_tile.tga
|
diffusemap textures/measure/mat_tile.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
surfaceParm vent
|
surfaceParm vent
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/mat_vent.tga
|
diffusemap textures/measure/mat_vent.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
surfaceParm wood
|
surfaceParm wood
|
||||||
|
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/mat_wood.tga
|
diffusemap textures/measure/mat_wood.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
program lightmapped#MASK=0.5
|
program defaultwall#MASK=0.5
|
||||||
surfaceParm alphashadow
|
surfaceParm alphashadow
|
||||||
diffusemap textures/measure/rail.tga
|
diffusemap textures/measure/rail.tga
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/recharge.tga
|
diffusemap textures/measure/recharge.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/stairs1.tga
|
diffusemap textures/measure/stairs1.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/wall128.tga
|
diffusemap textures/measure/wall128.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/wall128b.tga
|
diffusemap textures/measure/wall128b.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/wall128g.tga
|
diffusemap textures/measure/wall128g.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/wall128gr.tga
|
diffusemap textures/measure/wall128gr.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/wall128pl.tga
|
diffusemap textures/measure/wall128pl.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/wall32.tga
|
diffusemap textures/measure/wall32.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/wall64.tga
|
diffusemap textures/measure/wall64.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Vera Visions Material
|
// Vera Visions Material
|
||||||
{
|
{
|
||||||
if $programs
|
if $programs
|
||||||
program lightmapped
|
program defaultwall
|
||||||
diffusemap textures/measure/wall64a.tga
|
diffusemap textures/measure/wall64a.tga
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/asphalt1.tga"
|
diffusemap "textures/next/asphalt1.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ if $programs
|
||||||
diffusemap "textures/next/asphalt2.tga"
|
diffusemap "textures/next/asphalt2.tga"
|
||||||
normalmap "textures/next/asphalt2_normal.tga"
|
normalmap "textures/next/asphalt2_normal.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/asphalt3.tga"
|
diffusemap "textures/next/asphalt3.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/bunker1.tga"
|
diffusemap "textures/next/bunker1.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/bunker2.tga"
|
diffusemap "textures/next/bunker2.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/bunker3.tga"
|
diffusemap "textures/next/bunker3.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/bunker4.tga"
|
diffusemap "textures/next/bunker4.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/bunker5.tga"
|
diffusemap "textures/next/bunker5.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/bunker6.tga"
|
diffusemap "textures/next/bunker6.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/bunker7.tga"
|
diffusemap "textures/next/bunker7.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/bunker8.tga"
|
diffusemap "textures/next/bunker8.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/bunker9.tga"
|
diffusemap "textures/next/bunker9.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/cracked1.tga"
|
diffusemap "textures/next/cracked1.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/cracked2.tga"
|
diffusemap "textures/next/cracked2.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/dirty1.tga"
|
diffusemap "textures/next/dirty1.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/dirty2.tga"
|
diffusemap "textures/next/dirty2.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/dirty3.tga"
|
diffusemap "textures/next/dirty3.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/dirty4.tga"
|
diffusemap "textures/next/dirty4.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/earth1.tga"
|
diffusemap "textures/next/earth1.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ if $programs
|
||||||
diffusemap "textures/next/earth2.tga"
|
diffusemap "textures/next/earth2.tga"
|
||||||
normalmap "textures/next/earth2_normal.tga"
|
normalmap "textures/next/earth2_normal.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/earth3.tga"
|
diffusemap "textures/next/earth3.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/earth4.tga"
|
diffusemap "textures/next/earth4.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/earth5.tga"
|
diffusemap "textures/next/earth5.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/earth6.tga"
|
diffusemap "textures/next/earth6.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/earth7.tga"
|
diffusemap "textures/next/earth7.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/earth8.tga"
|
diffusemap "textures/next/earth8.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/earth9.tga"
|
diffusemap "textures/next/earth9.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/plywood1.tga"
|
diffusemap "textures/next/plywood1.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/plywood2.tga"
|
diffusemap "textures/next/plywood2.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/plywood3.tga"
|
diffusemap "textures/next/plywood3.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/plywood4.tga"
|
diffusemap "textures/next/plywood4.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/plywood5.tga"
|
diffusemap "textures/next/plywood5.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/rusty1.tga"
|
diffusemap "textures/next/rusty1.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/rusty2.tga"
|
diffusemap "textures/next/rusty2.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/rusty3.tga"
|
diffusemap "textures/next/rusty3.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/rusty4.tga"
|
diffusemap "textures/next/rusty4.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/rusty5.tga"
|
diffusemap "textures/next/rusty5.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/rusty6.tga"
|
diffusemap "textures/next/rusty6.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/rusty7.tga"
|
diffusemap "textures/next/rusty7.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/tarmac1.tga"
|
diffusemap "textures/next/tarmac1.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/tarmac2.tga"
|
diffusemap "textures/next/tarmac2.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
if $programs
|
if $programs
|
||||||
diffusemap "textures/next/vent1.tga"
|
diffusemap "textures/next/vent1.tga"
|
||||||
{
|
{
|
||||||
program lightmapped
|
program defaultwall
|
||||||
map $diffuse
|
map $diffuse
|
||||||
map $normalmap
|
map $normalmap
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue