#include <sdktools>
bool IsPlayerNinja[MAXPLAYERS + 1];
ConVar sv_footsteps;
public OnPluginStart()
{
LoadTranslations("common.phrases");
sv_footsteps = FindConVar("sv_footsteps");
RegConsoleCmd("sm_test", test);
AddNormalSoundHook(FootstepCheck);
for(int i = 1; i <= MaxClients; i++)
{
if(IsClientInGame(i) && !IsFakeClient(i)) OnClientPutInServer(i);
}
}
public Action test(int client, int args)
{
char arg[MAX_NAME_LENGTH];
GetCmdArg(1, arg, sizeof(arg));
int target = FindTarget(client, arg, false, false);
if(target != -1)
{
IsPlayerNinja[target] = IsPlayerNinja[target] ? false:true;
ReplyToCommand(client, "%N is %s", target, IsPlayerNinja[target] ? "Ninja!":"not Ninja.");
}
return Plugin_Handled;
}
public void OnClientPutInServer(client)
{
if(!IsFakeClient(client)) SendConVarValue(client, sv_footsteps, "0");
}
public Action:FootstepCheck(clients[64], &numClients, String:sample[PLATFORM_MAX_PATH], &entity, &channel, &Float:volume, &level, &pitch, &flags)
{
// Player
if (0 < entity <= MaxClients)
{
if(StrContains(sample, "physics") != -1 || StrContains(sample, "footsteps") != -1)
{
// Player not ninja, play footsteps
if(!IsPlayerNinja[entity])
{
numClients = 0;
for(int i = 1; i <= MaxClients; i++)
{
if(IsClientInGame(i) && !IsFakeClient(i))
{
clients[numClients++] = i;
}
}
EmitSound(clients, numClients, sample, entity);
//return Plugin_Changed;
}
return Plugin_Stop;
}
}
return Plugin_Continue;
}