Thanks for this!
EDIT: Below is my attempt at trying to add some safety to this (how it's setup it can silently fail, or crash if used improperly).
PHP Code:
stock bool:SetClientName(client, const String:name[])
{
// Save the current name.
decl String:oldname[MAX_NAME_LENGTH];
if(!GetClientName(client, oldname, sizeof(oldname)))
{
return false;
}
// Change the name.
SetClientInfo(client, "name", name);
SetEntPropString(client, Prop_Data, "m_szNetname", name);
// Fire the event.
new Handle:event = CreateEvent("player_changename");
if (event != INVALID_HANDLE)
{
SetEventInt(event, "userid", GetClientUserId(client));
SetEventString(event, "oldname", oldname);
SetEventString(event, "newname", name);
FireEvent(event);
// Send the usermessage.
new Handle:msg = StartMessageAll("SayText2");
if (msg != INVALID_HANDLE)
{
BfWriteByte(msg, client);
BfWriteByte(msg, true);
BfWriteString(msg, "Cstrike_Name_Change");
BfWriteString(msg, oldname);
BfWriteString(msg, name);
EndMessage();
return true;
}
}
return false;
}