Putting on events, I think it would be a useful ability to mute certain players on the ingame chat (disallow them to chat period to anybody) Admin's only of course, and you wouldn't need to worry about people chatting after they have crashed out of a race or something of that mannor.
Well i don´t think you should kick players just for crashing, but maybe it could be possible to have a spectator chat instead, so drivers wont see that chat. Could be alot like team chat ..
If you are running Airio you can use the !pm command to setup private chat lists.
Not the best solution as it requires the guys who are spamming to set up the list and use the!pm command in front of every message, but it does allow you to talk to only certain people.
This would be a great idea for admins to be able to mute people (chatterboxes and foulmouths) either during league races or at public servers. Blocking messages doesn't help things too much here, since you're looking after something that will stop, say, 31 people from reading what the 1 chatterbox has to say.
The best thing to do atm to make sure they shut up is, like the Boothman said, to kick/ban them
but what if an admin happens to talk to you during the race? that would only make things worse, specially if talking about a penalty or something like that.
If they gave InSim applications first shot at the message so we could decide if we want the client to talk or not, or if the client's message should be delivered to other clients or not that would be good. If I remember correctly, a message is at most 128 characters, and there are a maximum of 64 clients on the server, and 4 bytes for the packet header. We could use all of this information and put it into a packet and still be well within the 256 byte envelope for a InSim packet.
We add an option flag to the IS_ISI packet, obviously to set the flag you also have to have the admin password for the server so that the InSim instance can control it. Well call the flag INSIM_CHAT_CONTROL, and we will += that into our IS_ISI::Flags. That will tell LFS that we want this InSim instance to be authoritative on who can talk to whom. After that's added we modify the IS_SMALL packet, and the IS_MSO packet as follows.
We add a small define, in the regards of
<?php define('SMALL_MSC', 8); // 8 - inStruction : Allow the message to be sent to all clients. ?>
And we make the ISP_SMALL's UVal that of the IS_MSO's MID, so LFS knows what message to deliver. This allows us to sync the messages between the systems.
We edit the IS_MSO packet so that we combine parts of it header. We take $ReqI, and $Zero and combine them to make a uInt_16 datatype. This will be used to identify the message. So this
So now when we get an IS_MSO packet, we can look at who it's coming from, and use the IS_SMALL packet to block the message by not sending a IS_SMALL::SMALL_MSC with the Msg ID, or sending another packet so that only some players can see that message. This packet would be called IS_MSC and looks as follows.
<?php class IS_MSC extends Struct // MeSsage Control - Control who get's to see a message from a client. { const PACK = 'CCSCCCCa128'; const UNPACK = 'CSize/CType/SMID/CUCID/CPLID/CUserType/CTextStart/a128Msg';
public $UCID = 0; # connection's unique id (0 = host) public $PLID = 0; # player's unique id (if zero, use UCID) public $UserType; # set if typed by a user (see User Values below) public $TextStart; # first character of the actual text (after player name)
public $UCIDs; # Array of UCIDs the message should be sent too. public $Msg; }; function IS_MSC() { return new IS_MSC; } ?>