void HUD_ship_sent_printf(int sh, const char *format, ...)
{
    va_list args;
    char tmp[HUD_MSG_LENGTH_MAX];
    tmp[sizeof(tmp)-1] = '\0';
    size_t len;

    snprintf(tmp, sizeof(tmp)-1, NOX("%s: "), Ships[sh].ship_name);
    len = strlen(tmp);

    va_start(args, format);
    vsnprintf(tmp + len, sizeof(tmp)-1-len, format, args);
    va_end(args);

    Assert(strlen(tmp) < HUD_MSG_LENGTH_MAX);	//	If greater than this, probably crashed anyway.
    hud_sourced_print(HUD_team_get_source(Ships[sh].team), tmp);
}
// --------------------------------------------------------------------------------------
// HUD_sourced_printf() 
//
// HUD_sourced_printf() has the same parameters as printf(), but displays the text as a scrolling
// message on the HUD.  Text is split into multiple lines if width exceeds msg display area
// width.  'source' is used to indicate who send the message, and is used to color code text.
//
void HUD_sourced_printf(int source, char *format, ...)
{
	va_list args;
	char tmp[HUD_MSG_LENGTH_MAX];

	// make sure we only print these messages if we're in the correct state
	if((Game_mode & GM_MULTIPLAYER) && (Net_player->state != NETPLAYER_STATE_IN_MISSION)){
		nprintf(("Network","HUD_sourced_printf bailing because not in multiplayer game play state\n"));
		return;
	}
	
	va_start(args, format);
	vsprintf(tmp, format, args);
	va_end(args);
	Assert(strlen(tmp) < HUD_MSG_LENGTH_MAX);	//	If greater than this, probably crashed anyway.
	hud_sourced_print(source, tmp);
}
// --------------------------------------------------------------------------------------
// HUD_sourced_printf()
//
// HUD_sourced_printf() has the same parameters as printf(), but displays the text as a scrolling
// message on the HUD.  Text is split into multiple lines if width exceeds msg display area
// width.  'source' is used to indicate who send the message, and is used to color code text.
//
void HUD_sourced_printf(int source, const char *format, ...)
{
    va_list args;
    char tmp[HUD_MSG_LENGTH_MAX];

    // make sure we only print these messages if we're in the correct state
    if((Game_mode & GM_MULTIPLAYER) && (Net_player->state != NETPLAYER_STATE_IN_MISSION)) {
        nprintf(("Network","HUD_sourced_printf bailing because not in multiplayer game play state\n"));
        return;
    }

    va_start(args, format);
    vsnprintf(tmp, sizeof(tmp)-1, format, args);
    va_end(args);
    tmp[sizeof(tmp)-1] = '\0';

    hud_sourced_print(source, tmp);
}