Actually, that HowdyHo code would work. Every word in the chat text after "/command" is an argument:
function servercmdEchoArgs(%client,%a,%b,%c,%d,%e)
{
echo(%client.name," called the function!");
error(%a NL %b NL %c NL %d NL %e);
}
If I typed "/EchoArgs 1 2 AAAAA 4 V MoreArgs Lots" I would get:
Space Guy called the function!
1
2
AAAAA
4
V
... Because the function doesn't have more arguments it will ignore the ones after %e ("V") but still use the rest. Your function might be:
function serverCmdSetName(%this, %t1,%t2,%t3,%t4,%t5,%t6)
{
if(isObject(%this.player))
{
%text = %t1 SPC %t2 SPC %t3 SPC %t4 SPC %t5 SPC %t6;
%this.player.setShapeName(%text);
}
}
The long line could be replaced with a for loop like
for(%i = 0;%t[%i] !$= "";%i++){%str = %str SPC %t[%i];} - looping through arguments with arrays and allowing easy addition of more. (%t7,%t8,etc)
The only other method I know of an on death check still uses packages but no > <:
package DeathCheck
{
function GameConnection::onDeath(%this, %sourceObject, %sourceClient, %damageType, %damLoc)
{
if(isObject(%sourceClient.player))
{
%sourceClient.player.mountImage(0,wrenchImage);
}
Parent::onDeath(%this, %sourceObject, %sourceClient, %damageType, %damLoc);
}
};
activatePackage(DeathCheck);
I may have been able to use %sourceObject, but I'm unsure whether that is the killer's player or not.