Tested only in insurgency
PHP Code:
#pragma semicolon 1
#pragma newdecls required
#include <sourcemod>
#include <sdktools>
int g_iNameSet = 0;
char g_sOriginalName[32];
public Plugin myinfo = {
name = "bot_xyz",
author = "",
description = "",
version = "1.0",
url = ""
};
public void OnPluginStart() {
HookEvent("player_team", Event_PlayerTeam, EventHookMode_Post);
for (int i = 1 + 1; i <= MaxClients; i++) {
if (!IsClientInGame(i) || !IsFakeClient(i)) {
continue;
}
SetName(i);
break;
}
}
public void OnClientDisconnect(int client) {
if (client == g_iNameSet && client > 0) {
int iHumans = 0,
iBot = 0;
for (int i = 1; i <= MaxClients; i++) {
if (!IsClientInGame(i) || i == g_iNameSet) {
continue;
}
if (!IsFakeClient(i)) {
iHumans++;
continue;
}
iBot = i;
if (iHumans) {
break;
}
}
if (iHumans && iBot) {
SetName(iBot);
} else {
g_iNameSet = 0;
}
}
}
public Action Event_PlayerTeam(Event event, const char[] name, bool dontBroadcast) {
if (g_iNameSet) {
return Plugin_Continue;
}
int client = GetClientOfUserId(event.GetInt("userid"));
if (client > 0 && IsClientInGame(client) && IsFakeClient(client)) {
SetName(client);
}
return Plugin_Continue;
}
void SetName(int client) {
//Remember original name so we can restore on plugin unload
GetClientName(client, g_sOriginalName, sizeof(g_sOriginalName));
SetClientName(client, "[Bot]-XYZ");
g_iNameSet = client;
}
public void OnPluginEnd() {
if (g_iNameSet && IsClientInGame(g_iNameSet) && IsFakeClient(g_iNameSet)) {
SetClientName(g_iNameSet, g_sOriginalName);
}
}