#include <sourcemod>
#include <sdktools>
#include <cstrike>
// Force 1.7 syntax
#pragma newdecls required
ConVar g_CvarEnabled, g_CvarKnives;
int g_iGrenadeOffsets[] = {15, 17, 16, 14, 18, 17};
public Plugin myinfo =
{
name = "Player Cleaner",
description = "Clear player weapons on round start",
author = "White Wolf (HLModders LLC)",
version = "1.0.1",
url = "http://steamcommunity.com/id/doctor_white http://tibari.ru http://hlmod.ru"
};
public void OnPluginStart()
{
g_CvarEnabled = CreateConVar("sm_cleanwpn_enabled", "0", "Enable or disable plugin", 0, true, 0.0, true, 1.0);
g_CvarKnives = CreateConVar("sm_cleanwpn_knives", "0", "Cleanup all wepaons but knives", 0, true, 0.0, true, 1.0);
g_CvarEnabled.AddChangeHook(OnCvarChange);
g_CvarKnives.AddChangeHook(OnCvarChange);
HookEvent("player_spawn", Event_OnPlayerSpawn);
AutoExecConfig(true, "cleanwpn");
}
public void OnCvarChange(ConVar cvar, const char[] oldValue, const char[] newValue)
{
if (cvar == g_CvarEnabled) g_CvarEnabled.SetInt(StringToInt(newValue));
else if (cvar == g_CvarKnives) g_CvarKnives.SetInt(StringToInt(newValue));
}
public void Event_OnPlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
if (g_CvarEnabled.BoolValue)
{
int client = GetClientOfUserId(event.GetInt("userid"));
for (int i = 0; i < 5; ++i)
{
if (i != 3)
RemoveWeaponBySlot(client, i);
}
RemoveNades(client);
if (g_CvarKnives.BoolValue)
GivePlayerItem(client, "weapon_knife");
}
}
stock void RemoveNades(int client)
{
while (RemoveWeaponBySlot(client, 3))
{
for (int i = 0; i < 6; ++i)
SetEntProp(client, Prop_Send, "m_iAmmo", 0, _, g_iGrenadeOffsets[i]);
}
}
stock bool RemoveWeaponBySlot(int client, int slot)
{
int entity = GetPlayerWeaponSlot(client, slot);
if (entity != -1)
{
RemovePlayerItem(client, entity);
AcceptEntityInput(entity, "Kill");
return true;
}
return false;
}