Weapon selection now cares about the grenade slot again.
Overhauled chat handling and display HUD and VGUI colors now reflect 1.5 more closely Fixes to func_door Fixes to func_door_rotating Overhauled radio message handling and diplay to match chat
This commit is contained in:
parent
d25eb3850f
commit
06d1cf7a3c
16 changed files with 225 additions and 69 deletions
|
@ -33,8 +33,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
var float FONT_16;
|
||||
|
||||
// Clientside cvars
|
||||
var vector autocvar_con_color = '255 128 0'; // autocvar of "con_color"
|
||||
var vector autocvar_vgui_color = '255 128 0'; // autocvar of "vgui_color"
|
||||
var vector autocvar_con_color = '255 170 0'; // autocvar of "con_color"
|
||||
var vector autocvar_vgui_color = '255 170 0'; // autocvar of "vgui_color"
|
||||
var vector autocvar_cross_color = '0 255 0'; // autocvar of "cross_color"
|
||||
var float autocvar_cl_bob = 0.01;
|
||||
var float autocvar_cl_bobcycle = 0.8;
|
||||
|
@ -88,6 +88,7 @@ vector vPlayerOriginOld;
|
|||
vector vPlayerVelocity;
|
||||
|
||||
void View_PlayAnimation( int iSequence );
|
||||
string HUD_GetChatColorHEX( float fTeam );
|
||||
|
||||
// This actually belongs in Builtins.h since its an undocumented global
|
||||
vector pmove_vel;
|
||||
|
|
|
@ -18,10 +18,12 @@ along with this program; if not, write to the Free Software
|
|||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#define CHAT_LINES 5
|
||||
#define CHAT_TIME 4
|
||||
int iLineScroll;
|
||||
#define CHAT_LINES 5
|
||||
#define CHAT_TIME 10
|
||||
var int iLineScroll = 0;
|
||||
|
||||
float fChatTime;
|
||||
float fChatAlpha;
|
||||
string sMSGBuffer[ CHAT_LINES ];
|
||||
|
||||
/*
|
||||
|
@ -32,6 +34,11 @@ Receives a message and sorts it into the chat messagebuffer
|
|||
=================
|
||||
*/
|
||||
void CSQC_Parse_Print(string sMessage, float fLevel ) {
|
||||
// This gives messages other than chat an orange tint
|
||||
if ( fLevel != PRINT_CHAT ) {
|
||||
sMessage = sprintf( "^xF80%s", sMessage );
|
||||
}
|
||||
|
||||
if ( iLineScroll < ( CHAT_LINES - 1 ) ) {
|
||||
sMSGBuffer[ iLineScroll + 1 ] = sMessage;
|
||||
iLineScroll++;
|
||||
|
@ -43,6 +50,10 @@ void CSQC_Parse_Print(string sMessage, float fLevel ) {
|
|||
}
|
||||
|
||||
fChatTime = time + CHAT_TIME;
|
||||
fChatAlpha = 1.0f;
|
||||
|
||||
// Log to console
|
||||
localcmd( sprintf( "echo \"%s\"\n", sMessage ) );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -56,16 +67,18 @@ void CSQC_DrawChat( void ) {
|
|||
vector vChatPos = [ 16, vVideoResolution_y - 128 ];
|
||||
|
||||
// Remove messages after a fChatTime has passed
|
||||
if ( fChatTime < time && iLineScroll >= 0 ) {
|
||||
sMSGBuffer[ iLineScroll ] = "";
|
||||
iLineScroll--;
|
||||
fChatTime = time + CHAT_TIME;
|
||||
if ( fChatTime < time ) {
|
||||
fChatAlpha -= frametime;
|
||||
} else {
|
||||
fChatAlpha = 1.0f;
|
||||
}
|
||||
|
||||
for ( int i = 0; i < CHAT_LINES; i++ ) {
|
||||
drawstring( vChatPos + '1 1', sMSGBuffer[ i ], '8 8', '0 0 0', VGUI_WINDOW_FGALPHA, 0 );
|
||||
drawstring( vChatPos, sMSGBuffer[ i ], '8 8', vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
vChatPos_y += 12;
|
||||
if ( fChatAlpha > 0.0f ) {
|
||||
for ( int i = 0; i < CHAT_LINES; i++ ) {
|
||||
drawstring( vChatPos + '1 1', sMSGBuffer[ i ], '8 8', '0 0 0', fChatAlpha, 0 );
|
||||
drawstring( vChatPos, sMSGBuffer[ i ], '8 8', '1 1 1', fChatAlpha, 0 );
|
||||
vChatPos_y += 12;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -102,7 +115,7 @@ void CSQC_DrawCenterprint( void ) {
|
|||
for ( int i = 0; i < ( fCenterPrintLines ); i++ ) {
|
||||
vCenterPrintPos_x = ( vVideoResolution_x / 2 ) - ( stringwidth( sCenterPrintBuffer[ i ], FALSE ) / 2 );
|
||||
drawstring( vCenterPrintPos + '1 1', sCenterPrintBuffer[ i ], '8 8', '0 0 0', fCenterPrintAlpha, 0 );
|
||||
drawstring( vCenterPrintPos, sCenterPrintBuffer[ i ], '8 8', vHUDColor, fCenterPrintAlpha, DRAWFLAG_ADDITIVE );
|
||||
drawstring( vCenterPrintPos, sCenterPrintBuffer[ i ], '8 8', '1 1 1', fCenterPrintAlpha, 0 );
|
||||
vCenterPrintPos_y += 8;
|
||||
}
|
||||
}
|
||||
|
@ -117,11 +130,10 @@ Keep in mind that newlines need to be tokenized
|
|||
=================
|
||||
*/
|
||||
float CSQC_Parse_CenterPrint( string sMessage ) {
|
||||
|
||||
fCenterPrintLines = tokenizebyseparator( sMessage, "\n" );
|
||||
|
||||
for( int i = 0; i < ( fCenterPrintLines ); i++ ) {
|
||||
sCenterPrintBuffer[ i ] = argv( i );
|
||||
sCenterPrintBuffer[ i ] = sprintf( "^xF80%s", argv( i ) );
|
||||
}
|
||||
|
||||
fCenterPrintAlpha = 1;
|
||||
|
|
|
@ -490,6 +490,18 @@ void CSQC_Parse_Event( void ) {
|
|||
vSparkAngle_z = readcoord();
|
||||
|
||||
Effect_CreateSpark( vSparkPos, vSparkAngle );
|
||||
} else if ( fHeader == EV_CHAT ) {
|
||||
float fSender = readbyte();
|
||||
float fTeam = readbyte();
|
||||
string sMessage = readstring();
|
||||
|
||||
CSQC_Parse_Print( sprintf( "%s%s^xF80: %s", HUD_GetChatColorHEX( fTeam ), getplayerkeyvalue( fSender, "name" ), sMessage ), PRINT_CHAT );
|
||||
} else if ( fHeader == EV_CHAT_TEAM ) {
|
||||
float fSender2 = readbyte();
|
||||
float fTeam2 = readbyte();
|
||||
string sMessage2 = readstring();
|
||||
|
||||
CSQC_Parse_Print( sprintf( "%s%s^xF80: %s", HUD_GetChatColorHEXTeam( fTeam2 ), getplayerkeyvalue( fSender2, "name" ), sMessage2 ), PRINT_CHAT );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#define NUMSIZE_X 0.09375
|
||||
#define NUMSIZE_Y 0.09765625
|
||||
|
||||
#define HUD_ALPHA 0.6
|
||||
#define HUD_ALPHA 0.5
|
||||
|
||||
// Instead of calculating them on demand, just read the offsets here
|
||||
float vHUDNumPos[10] = {
|
||||
|
|
|
@ -93,6 +93,11 @@ float HUD_DrawWeaponSelect_NextItem( float fSlot ) {
|
|||
iHUDGrenades = 0;
|
||||
|
||||
// Keep this order in order for the selection to work
|
||||
if ( getstatf( STAT_SLOT_GRENADE ) ) {
|
||||
iHUDGrenadesSelected = getstatf( STAT_SLOT_GRENADE );
|
||||
iHUDGrenades++;
|
||||
}
|
||||
|
||||
if ( getstati_punf( STAT_ITEM_SMOKEGRENADE ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_SMOKEGRENADE;
|
||||
iHUDGrenades++;
|
||||
|
@ -117,17 +122,28 @@ float HUD_DrawWeaponSelect_NextItem( float fSlot ) {
|
|||
// If we're in the grenade slot, go down
|
||||
if ( iHUDGrenadesSelected == WEAPON_HEGRENADE ) {
|
||||
// Do we have a flash bang? If yes, select that thing
|
||||
if ( getstatf( STAT_ITEM_FLASHBANG ) ) {
|
||||
if ( getstati_punf( STAT_ITEM_FLASHBANG ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_FLASHBANG;
|
||||
return SLOT_GRENADE;
|
||||
} else if ( getstatf( STAT_ITEM_SMOKEGRENADE ) ) {
|
||||
} else if ( getstati_punf( STAT_ITEM_SMOKEGRENADE ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_SMOKEGRENADE;
|
||||
return SLOT_GRENADE;
|
||||
} else if ( getstatf( STAT_SLOT_GRENADE ) ) {
|
||||
iHUDGrenadesSelected = getstatf( STAT_SLOT_GRENADE );
|
||||
return SLOT_GRENADE;
|
||||
}
|
||||
} else if ( iHUDGrenadesSelected == WEAPON_FLASHBANG ) {
|
||||
if ( getstatf( STAT_ITEM_SMOKEGRENADE ) ) {
|
||||
if ( getstati_punf( STAT_ITEM_SMOKEGRENADE ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_SMOKEGRENADE;
|
||||
return SLOT_GRENADE;
|
||||
} else if ( getstatf( STAT_SLOT_GRENADE ) ) {
|
||||
iHUDGrenadesSelected = getstatf( STAT_SLOT_GRENADE );
|
||||
return SLOT_GRENADE;
|
||||
}
|
||||
} else if ( iHUDGrenadesSelected == WEAPON_SMOKEGRENADE ) {
|
||||
if ( getstatf( STAT_SLOT_GRENADE ) ) {
|
||||
iHUDGrenadesSelected = getstatf( STAT_SLOT_GRENADE );
|
||||
return SLOT_GRENADE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -163,6 +179,10 @@ float HUD_DrawWeaponSelect_PreviousItem( float fSlot ) {
|
|||
iHUDGrenadesSelected = WEAPON_SMOKEGRENADE;
|
||||
iHUDGrenades++;
|
||||
}
|
||||
if ( getstatf( STAT_SLOT_GRENADE ) ) {
|
||||
iHUDGrenadesSelected = getstatf( STAT_SLOT_GRENADE );
|
||||
iHUDGrenades++;
|
||||
}
|
||||
|
||||
if ( iHUDGrenades ) {
|
||||
return SLOT_GRENADE;
|
||||
|
@ -182,16 +202,28 @@ float HUD_DrawWeaponSelect_PreviousItem( float fSlot ) {
|
|||
return HUD_DrawWeaponSelect_PreviousItem( SLOT_SECONDARY );
|
||||
}
|
||||
} else {
|
||||
if ( iHUDGrenadesSelected == WEAPON_SMOKEGRENADE ) {
|
||||
if ( getstatf( STAT_ITEM_FLASHBANG ) ) {
|
||||
if ( iHUDGrenadesSelected == getstatf( STAT_SLOT_GRENADE ) ) {
|
||||
if ( getstati_punf( STAT_ITEM_SMOKEGRENADE ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_SMOKEGRENADE;
|
||||
return SLOT_GRENADE;
|
||||
} else if ( getstati_punf( STAT_ITEM_FLASHBANG ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_FLASHBANG;
|
||||
return SLOT_GRENADE;
|
||||
} else if ( getstatf( STAT_ITEM_HEGRENADE ) ) {
|
||||
} else if ( getstati_punf( STAT_ITEM_HEGRENADE ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_HEGRENADE;
|
||||
return SLOT_GRENADE;
|
||||
}
|
||||
}
|
||||
if ( iHUDGrenadesSelected == WEAPON_SMOKEGRENADE ) {
|
||||
if ( getstati_punf( STAT_ITEM_FLASHBANG ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_FLASHBANG;
|
||||
return SLOT_GRENADE;
|
||||
} else if ( getstati_punf( STAT_ITEM_HEGRENADE ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_HEGRENADE;
|
||||
return SLOT_GRENADE;
|
||||
}
|
||||
} else if ( iHUDGrenadesSelected == WEAPON_FLASHBANG ) {
|
||||
if ( getstatf( STAT_ITEM_HEGRENADE ) ) {
|
||||
if ( getstati_punf( STAT_ITEM_HEGRENADE ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_HEGRENADE;
|
||||
return SLOT_GRENADE;
|
||||
}
|
||||
|
@ -304,23 +336,46 @@ void HUD_DrawWeaponSelect( void ) {
|
|||
// Again, grenades are treated seperately
|
||||
if ( i == SLOT_GRENADE ) {
|
||||
if ( wptTable[ fHUDWeaponSelected ].iSlot == SLOT_GRENADE ) {
|
||||
if ( iHUDGrenadesSelected == WEAPON_HEGRENADE ) {
|
||||
vSelectPos_y -= 45;
|
||||
if ( getstati_punf( STAT_ITEM_HEGRENADE ) ) {
|
||||
vSelectPos_y += 45;
|
||||
drawsubpic( vSelectPos + '0 20', '170 45', wpSymbolTable[ WEAPON_HEGRENADE ].sSprite, wpSymbolTable[ WEAPON_HEGRENADE ].vOrigin, [ 0.6640625, 0.17578125 ], vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
}
|
||||
vSelectPos_y += 45;
|
||||
if ( iHUDGrenadesSelected == WEAPON_HEGRENADE ) {
|
||||
drawsubpic( vSelectPos + '0 20', '170 45', "sprites/640hud3.spr_0.tga", '0 0.703125', [ 0.6640625, 0.17578125 ], vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
}
|
||||
|
||||
if ( iHUDGrenadesSelected == WEAPON_FLASHBANG ) {
|
||||
if ( getstati_punf( STAT_ITEM_FLASHBANG ) ) {
|
||||
vSelectPos_y += 45;
|
||||
drawsubpic( vSelectPos + '0 20', '170 45', wpSymbolTable[ WEAPON_FLASHBANG ].sSprite, wpSymbolTable[ WEAPON_FLASHBANG ].vOrigin, [ 0.6640625, 0.17578125 ], vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
}
|
||||
vSelectPos_y += 45;
|
||||
if ( iHUDGrenadesSelected == WEAPON_FLASHBANG ) {
|
||||
drawsubpic( vSelectPos + '0 20', '170 45', "sprites/640hud3.spr_0.tga", '0 0.703125', [ 0.6640625, 0.17578125 ], vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
}
|
||||
|
||||
|
||||
if ( iHUDGrenadesSelected == WEAPON_SMOKEGRENADE ) {
|
||||
if ( getstati_punf( STAT_ITEM_SMOKEGRENADE ) ) {
|
||||
vSelectPos_y += 45;
|
||||
drawsubpic( vSelectPos + '0 20', '170 45', wpSymbolTable[ WEAPON_SMOKEGRENADE ].sSprite, wpSymbolTable[ WEAPON_SMOKEGRENADE ].vOrigin, [ 0.6640625, 0.17578125 ], vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
|
||||
}
|
||||
if ( iHUDGrenadesSelected == WEAPON_SMOKEGRENADE ) {
|
||||
drawsubpic( vSelectPos + '0 20', '170 45', "sprites/640hud3.spr_0.tga", '0 0.703125', [ 0.6640625, 0.17578125 ], vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
}
|
||||
|
||||
if ( getstatf( STAT_SLOT_GRENADE ) ) {
|
||||
vSelectPos_y += 45;
|
||||
drawsubpic( vSelectPos + '0 20', '170 45', wpSymbolTable[ getstatf( STAT_SLOT_GRENADE ) ].sSprite, wpSymbolTable[ getstatf( STAT_SLOT_GRENADE ) ].vOrigin, [ 0.6640625, 0.17578125 ], vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
}
|
||||
if ( iHUDGrenadesSelected == getstatf( STAT_SLOT_GRENADE ) ) {
|
||||
drawsubpic( vSelectPos + '0 20', '170 45', "sprites/640hud3.spr_0.tga", '0 0.703125', [ 0.6640625, 0.17578125 ], vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
if ( wptTable[ fHUDWeaponSelected ].iSlot == i ) {
|
||||
drawsubpic( vSelectPos + '0 20', '170 45', wpSymbolTable[ fHUDWeaponSelected ].sSprite, wpSymbolTable[ fHUDWeaponSelected ].vOrigin, [ 0.6640625, 0.17578125 ], vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
drawsubpic( vSelectPos + '0 20', '170 45', "sprites/640hud3.spr_0.tga", '0 0.703125', [ 0.6640625, 0.17578125 ], vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
vSelectPos_x += 170;
|
||||
} else {
|
||||
vSelectPos_x += 20;
|
||||
|
|
|
@ -30,6 +30,26 @@ vector HUD_GetChatColor( float fTeam ) {
|
|||
}
|
||||
}
|
||||
|
||||
string HUD_GetChatColorHEX( float fTeam ) {
|
||||
if ( fTeam == TEAM_CT ) {
|
||||
return "^x7AC";
|
||||
} else if ( fTeam == TEAM_T ) {
|
||||
return "^xC33";
|
||||
} else {
|
||||
return "^xCCC";
|
||||
}
|
||||
}
|
||||
|
||||
string HUD_GetChatColorHEXTeam( float fTeam ) {
|
||||
if ( fTeam == TEAM_CT ) {
|
||||
return "^x7AC(Counter-Terrorist) ";
|
||||
} else if ( fTeam == TEAM_T ) {
|
||||
return "^xC33(Terrorist) ";
|
||||
} else {
|
||||
return "^xCCC(Spectator) ";
|
||||
}
|
||||
}
|
||||
|
||||
// Returns whether or not our mouse cursor hovers over a region
|
||||
float VGUI_CheckMouse( vector vPos, vector vReg ) {
|
||||
vector vSMins, vSMaxs;
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\VGUITeamSelect.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\View.c" />
|
||||
</category>
|
||||
<category name="Server" expanded="no">
|
||||
<category name="Server" expanded="yes">
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\AmbientSound.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Ammo.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\ArmouryEntity.c" />
|
||||
|
@ -71,7 +71,7 @@
|
|||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\Objects.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\progs.src" />
|
||||
</category>
|
||||
<category name="Shared" expanded="no">
|
||||
<category name="Shared" expanded="yes">
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\Animations.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\BaseMelee.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\Effects.c" />
|
||||
|
@ -113,7 +113,18 @@
|
|||
</project>
|
||||
|
||||
<workspace version="Crimson Editor 3.60">
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\HUDCrosshair.c" linenum="28" placement="0:1:-1:-1:-4:-23:132:132:980:597" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\HUD.c" linenum="411" placement="2:3:-1:-1:-4:-23:154:154:1006:623" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\Event.c" linenum="498" placement="0:1:-1:-1:-4:-23:44:44:892:509" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Main.c" linenum="81" placement="0:1:-1:-1:-4:-23:66:66:918:535" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\Draw.c" linenum="31" placement="0:1:-1:-1:-4:-23:88:88:940:557" />
|
||||
<localfile path="C:\Users\eukara\Dropbox\The Wastes Build\SDK\Source\Client\Defs.h" linenum="26" placement="0:1:-1:-1:-4:-23:110:110:962:579" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Builtins.h" linenum="873" placement="0:1:-1:-1:-4:-23:154:154:1006:623" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\VGUIScoreboard.c" linenum="49" placement="0:1:-1:-1:-4:-23:176:176:1028:645" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\VGUIObjects.c" linenum="39" placement="0:1:-1:-1:-4:-23:198:198:1050:667" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponAK47.c" linenum="1" placement="0:1:-1:-1:-4:-23:220:220:1072:689" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\Radio.c" linenum="182" placement="0:1:-1:-1:-4:-23:0:0:852:469" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Spawn.c" linenum="300" placement="0:1:-1:-1:-4:-23:22:22:874:491" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\Defs.h" linenum="93" placement="0:1:-1:-1:-4:-23:220:220:1072:689" />
|
||||
<localfile path="C:\Users\eukara\Dropbox\The Wastes Build\SDK\Source\Client\Draw.c" linenum="65" placement="0:1:-1:-1:-4:-23:0:0:852:469" />
|
||||
<localfile path="C:\Program Files (x86)\Winamp\Plugins\AudioScrobbler.log.txt" linenum="1" placement="2:3:-1:-1:-4:-23:22:22:874:491" />
|
||||
</workspace>
|
||||
|
||||
|
|
|
@ -226,7 +226,9 @@ enum {
|
|||
EV_CAMERATRIGGER,
|
||||
EV_RADIOMSG,
|
||||
EV_RADIOMSG2,
|
||||
EV_ORBITUARY
|
||||
EV_ORBITUARY,
|
||||
EV_CHAT,
|
||||
EV_CHAT_TEAM
|
||||
};
|
||||
|
||||
// Submodel materials
|
||||
|
|
|
@ -202,12 +202,12 @@ FuncDoor_Touch
|
|||
====================
|
||||
*/
|
||||
void FuncDoor_Touch( void ) {
|
||||
if ( self.spawnflags & SF_MOV_TOGGLE ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( other.classname == "player" ) {
|
||||
FuncDoor_Trigger();
|
||||
|
||||
if ( ( self.spawnflags & SF_MOV_USE ) ) {
|
||||
self.touch = __NULL__;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -262,12 +262,12 @@ void func_door( void ) {
|
|||
if ( !self.dmg ) {
|
||||
self.dmg = 2;
|
||||
}
|
||||
|
||||
if ( ( self.spawnflags & SF_MOV_USE ) ) {
|
||||
|
||||
if ( self.spawnflags & SF_MOV_USE ) {
|
||||
self.iUsable = TRUE;
|
||||
} else {
|
||||
self.touch = FuncDoor_Touch;
|
||||
}
|
||||
|
||||
self.iUsable = TRUE;
|
||||
|
||||
|
||||
self.pos1 = self.origin;
|
||||
|
|
|
@ -151,7 +151,7 @@ void FuncDoorRotate_Trigger( void ) {
|
|||
if ( self.fAttackFinished > time ) {
|
||||
return;
|
||||
}
|
||||
self.fAttackFinished = self.ltime + self.wait;
|
||||
self.fAttackFinished = time + self.wait;
|
||||
|
||||
if ( ( self.state == STATE_UP ) || ( self.state == STATE_RAISED ) ) {
|
||||
FuncDoorRotate_RotateBack();
|
||||
|
@ -173,13 +173,13 @@ FuncDoorRotate_Touch
|
|||
=================
|
||||
*/
|
||||
void FuncDoorRotate_Touch( void ) {
|
||||
if ( self.spawnflags & SF_ROT_TOGGLE ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( other.classname == "player" ) {
|
||||
eActivator = other;
|
||||
FuncDoorRotate_Trigger();
|
||||
|
||||
if ( !( self.spawnflags & SF_ROT_USE ) ) {
|
||||
self.touch = __NULL__;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -221,8 +221,11 @@ void func_door_rotating( void ) {
|
|||
self.blocked = FuncDoorRotate_Blocked;
|
||||
self.vUse = FuncDoorRotate_Trigger;
|
||||
|
||||
self.touch = FuncDoorRotate_Touch;
|
||||
self.iUsable = TRUE;
|
||||
if ( self.spawnflags & SF_ROT_USE ) {
|
||||
self.iUsable = TRUE;
|
||||
} else {
|
||||
self.touch = FuncDoorRotate_Touch;
|
||||
}
|
||||
|
||||
if ( !self.speed ) {
|
||||
self.speed = 100;
|
||||
|
@ -246,9 +249,9 @@ void func_door_rotating( void ) {
|
|||
|
||||
}
|
||||
|
||||
// ...only do X by default?
|
||||
// only do Y by default
|
||||
if ( !( self.spawnflags & SF_ROT_YAXIS ) && !( self.spawnflags & SF_ROT_XAXIS ) ) {
|
||||
self.pos2_x = self.pos1_x + self.distance;
|
||||
self.pos2_y = self.pos1_y + self.distance;
|
||||
}
|
||||
|
||||
if ( self.spawnflags & SF_ROT_OPEN ) {
|
||||
|
|
|
@ -39,18 +39,8 @@ void func_ladder_sound( entity target ) {
|
|||
|
||||
float fForce = vStep;
|
||||
float fDelay = clamp( 0.1, 1 / ( fForce / 90 ), 1 );
|
||||
float fRandom = random();
|
||||
|
||||
if ( fRandom <= 0.25 ) {
|
||||
sound( target, CHAN_BODY, "player/pl_ladder1.wav", 0.5, ATTN_IDLE );
|
||||
} else if ( fRandom <= 0.50 ) {
|
||||
sound( target, CHAN_BODY, "player/pl_ladder2.wav", 0.5, ATTN_IDLE );
|
||||
} else if ( fRandom <= 0.75 ) {
|
||||
sound( target, CHAN_BODY, "player/pl_ladder3.wav", 0.5, ATTN_IDLE );
|
||||
} else {
|
||||
sound( target, CHAN_BODY, "player/pl_ladder4.wav", 0.5, ATTN_IDLE );
|
||||
}
|
||||
|
||||
|
||||
sound( target, CHAN_BODY, sprintf( "player/pl_ladder%d.wav", floor( random() * 4 ) + 1 ), 0.5, ATTN_IDLE );
|
||||
target.fStepTime = ( time + fDelay );
|
||||
}
|
||||
|
||||
|
|
|
@ -20,9 +20,58 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
void main( void ) {}
|
||||
void SetNewParms( void ) {}
|
||||
|
||||
void SetChangeParms( void ) {}
|
||||
|
||||
void SV_SendChat( entity eSender, string sMessage, entity eEnt, float fType ) {
|
||||
WriteByte( MSG_MULTICAST, SVC_CGAMEPACKET );
|
||||
WriteByte( MSG_MULTICAST, fType == 0 ? EV_CHAT:EV_CHAT_TEAM );
|
||||
WriteByte( MSG_MULTICAST, num_for_edict( eSender ) - 1 );
|
||||
WriteByte( MSG_MULTICAST, eSender.team );
|
||||
WriteString( MSG_MULTICAST, sMessage );
|
||||
msg_entity = eEnt;
|
||||
multicast( '0 0 0', MULTICAST_ONE );
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
SV_ParseClientCommand
|
||||
|
||||
Intercepts 'cmd' calls. We use it to intercept
|
||||
chat messages and handle distribution ourselves.
|
||||
=================
|
||||
*/
|
||||
void SV_ParseClientCommand( string sCommand ) {
|
||||
tokenize( sCommand );
|
||||
|
||||
// Players talk to players, spectators to spectators.
|
||||
if ( self.health ) {
|
||||
if ( argv( 0 ) == "say" ) {
|
||||
for ( entity eFind = world; ( eFind = find( eFind, classname, "player" ) ); ) {
|
||||
SV_SendChat( self, argv( 1 ), eFind, 0 );
|
||||
}
|
||||
return;
|
||||
} else if ( argv( 0 ) == "say_team" ) {
|
||||
for ( entity eFind = world; ( eFind = find( eFind, classname, "player" ) ); ) {
|
||||
if ( eFind.team == self.team ) {
|
||||
SV_SendChat( self, argv( 1 ), eFind, 1 );
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if ( argv( 0 ) == "say" ) {
|
||||
for ( entity eFind = world; ( eFind = find( eFind, classname, "spectator" ) ); ) {
|
||||
SV_SendChat( self, argv( 1 ), eFind, 1 );
|
||||
}
|
||||
return;
|
||||
} else if ( argv( 0 ) == "say_team" ) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
clientcommand( self, sCommand );
|
||||
}
|
||||
|
||||
void SV_PausedTic( float fDuration ) {
|
||||
|
||||
}
|
||||
|
|
|
@ -179,7 +179,7 @@ Play a radio message that doesn't come from a player
|
|||
*/
|
||||
void Radio_PlayMessage( float fMessage ) {
|
||||
sound( world, CHAN_VOICE, sRadioSamples[ fMessage ], 1, ATTN_NONE, 0, SOUNDFLAG_NOSPACIALISE );
|
||||
CSQC_Parse_Print( sprintf( "[RADIO]: %s\n", sRadioChat[ fMessage ] ), PRINT_CHAT );
|
||||
CSQC_Parse_Print( sprintf( "^2[RADIO]^xF80: %s\n", sRadioChat[ fMessage ] ), PRINT_CHAT );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -191,7 +191,7 @@ This radio message does come from a player
|
|||
*/
|
||||
void Radio_PlayPlayerMessage( float fPlayerNum, float fMessage ) {
|
||||
sound( world, CHAN_VOICE, sRadioSamples[ fMessage ], 1, ATTN_NONE, 0, SOUNDFLAG_NOSPACIALISE );
|
||||
CSQC_Parse_Print( sprintf( "[RADIO] %s: %s\n", getplayerkeyvalue( fPlayerNum, "name" ), sRadioChat[ fMessage ] ), PRINT_CHAT );
|
||||
CSQC_Parse_Print( sprintf( "^2[RADIO] %s%s^xF80: %s\n", HUD_GetChatColorHEX( stof( getplayerkeyvalue( fPlayerNum, "*team" ) ) ), getplayerkeyvalue( fPlayerNum, "name" ), sRadioChat[ fMessage ] ), PRINT_CHAT );
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Binary file not shown.
|
@ -52,8 +52,8 @@ seta cl_bobup 0.5
|
|||
seta r_particledesc default
|
||||
seta pm_bunnyspeedcap 1
|
||||
|
||||
seta con_color 255 128 0
|
||||
seta vgui_color 255 128 0
|
||||
seta con_color "255 170 0"
|
||||
seta vgui_color "255 170 0"
|
||||
seta cross_color 0 255 0
|
||||
|
||||
hostname "FreeCS Server"
|
||||
|
@ -72,4 +72,5 @@ seta r_shadow_realtime_world_shadows "0"
|
|||
seta r_shadow_realtime_dlight_shadows "0"
|
||||
seta r_imageexensions "tga bmp pcx"
|
||||
seta vid_conautoscale "1"
|
||||
seta scr_conalpha "1"
|
||||
seta scr_conalpha "1"
|
||||
seta con_notifylines "0"
|
BIN
freecs/progs.dat
BIN
freecs/progs.dat
Binary file not shown.
Loading…
Reference in a new issue