diff --git a/Source/Client/Defs.h b/Source/Client/Defs.h index 6a5d3440..61b7491c 100755 --- a/Source/Client/Defs.h +++ b/Source/Client/Defs.h @@ -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; diff --git a/Source/Client/Draw.c b/Source/Client/Draw.c index 4bf8e93d..8a57fe28 100755 --- a/Source/Client/Draw.c +++ b/Source/Client/Draw.c @@ -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; diff --git a/Source/Client/Event.c b/Source/Client/Event.c index 286cab39..aac419cd 100755 --- a/Source/Client/Event.c +++ b/Source/Client/Event.c @@ -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 ); } } diff --git a/Source/Client/HUD.c b/Source/Client/HUD.c index 0a5f23a9..8de86c4e 100755 --- a/Source/Client/HUD.c +++ b/Source/Client/HUD.c @@ -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] = { diff --git a/Source/Client/HUDWeaponSelect.c b/Source/Client/HUDWeaponSelect.c index b3fb11f6..49fbe577 100755 --- a/Source/Client/HUDWeaponSelect.c +++ b/Source/Client/HUDWeaponSelect.c @@ -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; diff --git a/Source/Client/VGUIObjects.c b/Source/Client/VGUIObjects.c index 5dded12c..d2b6b33a 100755 --- a/Source/Client/VGUIObjects.c +++ b/Source/Client/VGUIObjects.c @@ -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; diff --git a/Source/FreeCS-CE.prj b/Source/FreeCS-CE.prj index f7d6c372..d167604d 100755 --- a/Source/FreeCS-CE.prj +++ b/Source/FreeCS-CE.prj @@ -25,7 +25,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -113,7 +113,18 @@ - - + + + + + + + + + + + + + diff --git a/Source/Globals.h b/Source/Globals.h index 0e2b41f1..0ec95ed1 100755 --- a/Source/Globals.h +++ b/Source/Globals.h @@ -226,7 +226,9 @@ enum { EV_CAMERATRIGGER, EV_RADIOMSG, EV_RADIOMSG2, - EV_ORBITUARY + EV_ORBITUARY, + EV_CHAT, + EV_CHAT_TEAM }; // Submodel materials diff --git a/Source/Server/FuncDoor.c b/Source/Server/FuncDoor.c index fa22f629..e76a1f01 100755 --- a/Source/Server/FuncDoor.c +++ b/Source/Server/FuncDoor.c @@ -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; diff --git a/Source/Server/FuncDoorRotating.c b/Source/Server/FuncDoorRotating.c index 9ba4d3cc..48ccfa88 100755 --- a/Source/Server/FuncDoorRotating.c +++ b/Source/Server/FuncDoorRotating.c @@ -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 ) { diff --git a/Source/Server/FuncLadder.c b/Source/Server/FuncLadder.c index ead2ce50..9d56e784 100755 --- a/Source/Server/FuncLadder.c +++ b/Source/Server/FuncLadder.c @@ -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 ); } diff --git a/Source/Server/Main.c b/Source/Server/Main.c index 0b8d271e..3bfc6102 100755 --- a/Source/Server/Main.c +++ b/Source/Server/Main.c @@ -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 ) { } diff --git a/Source/Shared/Radio.c b/Source/Shared/Radio.c index b666442e..a6ca5576 100755 --- a/Source/Shared/Radio.c +++ b/Source/Shared/Radio.c @@ -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 diff --git a/freecs/csprogs.dat b/freecs/csprogs.dat index 5f2213c9..612d4fe2 100644 Binary files a/freecs/csprogs.dat and b/freecs/csprogs.dat differ diff --git a/freecs/default.cfg b/freecs/default.cfg index 848e206a..ba90a01a 100755 --- a/freecs/default.cfg +++ b/freecs/default.cfg @@ -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" \ No newline at end of file +seta scr_conalpha "1" +seta con_notifylines "0" \ No newline at end of file diff --git a/freecs/progs.dat b/freecs/progs.dat index 1a459853..8e7e3cff 100644 Binary files a/freecs/progs.dat and b/freecs/progs.dat differ