You can use \c0 through \c8 to change color in a single character. The reason there's a limit is because there's a character limit for commandToClient and commandToServer (due to networking). A way to work around this is to use a client sided mod and send multiple commands, or just use multiple arguments for the function, eg:
//Client side:
function clientCmdLongBottomPrint(%msg1, %msg2, %msg3, %msg4, %msg5, %msg6, %msg7, %msg8)
{
for(%i=1; %i <= 8; %i++)
%message = %message @ %msg[%i];
clientCmdBottomPrint(%message);
}
//Server side:
function GameConnection::longBottomPrint(%client, %message)
{
%len = strLen(%message);
for(%i=1; %i <= %len / 128; %i++) //Replace 128 with the char limit, i forgot the precise amount
{
%msg[%i] = getSubStr(%message, %i * 128, 128);
}
commandToClient(%client, 'LongBottomPrint', %msg1, %msg2, %msg3, %msg4, %msg5, %msg6, %msg7, %msg8);
}
(You'll want to also pass the time and the bool for the black box thing, but i forgot what order they're in)