mirror of
https://github.com/celisej567/source-sdk-2013.git
synced 2026-09-23 20:09:45 +03:00
Mapbase v6.0
- Fixed path_track paths saving as pointers instead of handles - Fixed player animations not falling to base class correctly - Fixed logic_externaldata creating garbage in trailing spaces - Added "SetHandModelSkin" input - Added unique colors for various types of console message, adjustable via convars - Added the ability to use map-specific weapon scripts - Added a way to display (placeholder) text entirely from Faceposer scenes - Added "autobreak" keyvalue to game_text, which automatically breaks long text into different lines - Added the ability to change a game_text's font (very limited) - Added LightToggle input to point_spotlight - Added Enable/DisableSprites on npc_manhack - Added ai_goal_police behavior from metrocops to Combine soldiers and citizens - Added func_precipitation particle rain systems from the Alien Swarm SDK - Added new func_precipitation spawnflags for controlling behavior in particle types - Added "mapbase_version" cvar which shows the version of Mapbase a mod might be running on - Fixed an oversight with NPC crouch activities which was causing npc_metropolice to stop firing in standoffs - Added toggleable patches to npc_combine AI which make soldiers less likely to stand around without shooting or rush to melee when not needed - Added key for custom logo font on env_credits scripts - Added SetSpeed and SetPushDir inputs for trigger_push - Added a bunch of I/O/KV to func_fish_pool to allow for more control over the fish - Added OnLostEnemy/Player support for npc_combine_camera - Added enhanced save/restore for the Response System, toggleable via convar - Added a convar which allows users to disable weapon autoswitching when picking up ammo - Split VScript base script into its own file - Added VScript descriptions for NPC squads and the manager class which handles them - Moved several classes, functions, etc. to the VScript library itself for future usage in other projects, like VBSP - Added VScript to VBSP with basic map file interfacing - Made some VScript documentation more clear due to deprecation of online documentation - Added VScript "hook" registration, creating a standardized system which shows up in script_help documentation - Added VScript-driven custom weapons - Added clientside VScript scopes - Added a bunch of weapon-related VScript functions - Split a bunch of cluttered VScript stuff into different files - Added VScript functions for "following" entities/bonemerging - Added VScript functions for grenades - Added a few more VScript trigger functions - Added OnDeath hook for VScript - Fixed documentation for aliased functions in VScript - Fixed $bumpmask not working on SDK_LightmappedGeneric - Made vertex blend swapping in Hammer use a constant instead of a combo (makes it easier to compile the shader, especially for $bumpmask's sake) - Fixed brush phong, etc. causing SDK_WorldVertexTransition to stop working - Added limited support for $envmapmask in the bumpmapping shader - Fixed more issues with parallax corrected cubemaps and instances - Made instance variable recursion consistent with VMFII
This commit is contained in:
@@ -862,6 +862,82 @@ void CHudMessage::MsgFunc_HudMsg(bf_read &msg)
|
||||
// see tmessage.cpp why 512
|
||||
msg.ReadString( (char*)pNetMessage->pMessage, 512 );
|
||||
|
||||
#ifdef MAPBASE
|
||||
//
|
||||
// Mapbase adds a new data entry for custom fonts on entities like game_text.
|
||||
// Some existing instances of this user message may not have this, so we have to make sure we have any bits left first.
|
||||
//
|
||||
if (msg.GetNumBitsLeft() > 0)
|
||||
{
|
||||
// Try to have VGui font names for each channel
|
||||
static char szVGuiFontNames[MAX_NETMESSAGE][512];
|
||||
msg.ReadString( szVGuiFontNames[channel], 512 );
|
||||
if (szVGuiFontNames[channel][0] != '\0')
|
||||
{
|
||||
pNetMessage->pVGuiSchemeFontName = szVGuiFontNames[channel];
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Mapbase adds a new data entry for breaking game_text into newline when it goes past the user's screen.
|
||||
// Some existing instances of this user message may not have this, so we have to make sure we have any bits left first.
|
||||
//
|
||||
if (msg.GetNumBitsLeft() > 0)
|
||||
{
|
||||
int len = msg.ReadByte();
|
||||
|
||||
// This is supposed to work around a bug where certain aspect ratios cut off lengthy texts.
|
||||
//int lineMax = 64 * ((float)ScreenWidth() / 1440.0f);
|
||||
int lineMax = 100 / engine->GetScreenAspectRatio();
|
||||
|
||||
int lineMinBreak = lineMax * 0.9;
|
||||
|
||||
DevMsg( "Line max is %i from an aspect ratio of %.3f (strlen %i)\n", lineMax, engine->GetScreenAspectRatio(), len );
|
||||
|
||||
char *curMessage = (char*)pNetMessage->pMessage;
|
||||
char newMessage[512];
|
||||
|
||||
int cur = 0; // Current time on this line
|
||||
int i = 0; // curMessage
|
||||
int i2 = 0; // newMessage
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
cur++;
|
||||
newMessage[i2] = curMessage[i];
|
||||
|
||||
// Check if we're past the point in which we should break the line
|
||||
if (cur >= lineMinBreak)
|
||||
{
|
||||
// Line break at the next space
|
||||
if (curMessage[i] == ' ')
|
||||
{
|
||||
newMessage[i2] = '\n';
|
||||
cur = 0;
|
||||
}
|
||||
else if (curMessage[i] == '\n')
|
||||
{
|
||||
// Already a newline here
|
||||
cur = 0;
|
||||
}
|
||||
else if (cur >= lineMax)
|
||||
{
|
||||
// We're at the max and there's no space. Force a newline with a hyphen
|
||||
newMessage[i2] = '-';
|
||||
i2++;
|
||||
newMessage[i2] = '\n';
|
||||
i2++;
|
||||
newMessage[i2] = curMessage[i];
|
||||
cur = 0;
|
||||
}
|
||||
}
|
||||
|
||||
i2++;
|
||||
}
|
||||
|
||||
Q_strncpy( (char*)pNetMessage->pMessage, newMessage, 512 );
|
||||
}
|
||||
#endif
|
||||
|
||||
MessageAdd( pNetMessage->pName );
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user