Do it the same way you're doing it but change from MSG_ONE (message sent to a single client, over reliable data stream) to MSG_BROADCAST (message to all players, unreliable).
This removes the need for a loop and MSG_BROADCAST is the equivalent of client_print(0...) and also it's unreliable which means (i think) it doesn't get sent if its going to cause an overflow.
Also you don't need to read the file in every time you want to display the message. Read the file once on map load into a string array (define a number like MAX_ADS 30, new ads[MAX_ADS][128])
Then just loop through that array when you want to print..