#include <amxmodx>
#include <amxmisc>
#include <reapi>
#define SAVE_DATA
#if defined SAVE_DATA
#include <fvault>
new g_szFVault[] = "RemovedKnife"
new g_szName[MAX_PLAYERS + 1][MAX_NAME_LENGTH]
#endif
new g_bRemovedKnife[MAX_PLAYERS + 1]
public plugin_init()
{
register_plugin("Remove Knife", "1.0", "Huehue @ AMXX-BG.INFO")
RegisterHookChain(RG_CBasePlayer_Spawn, "RG__CBasePlayer_Spawn", 1)
register_clcmd("amx_knife", "Command_Knife", ADMIN_BAN, "<name|#uid>")
}
public RG__CBasePlayer_Spawn(id)
{
if (is_user_alive(id))
{
if (g_bRemovedKnife[id])
{
if (user_has_weapon(id, CSW_KNIFE))
{
rg_remove_item(id, "weapon_knife")
}
}
}
}
public Command_Knife(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new szArgs[MAX_NAME_LENGTH]
read_argv(1, szArgs, charsmax(szArgs))
new iPlayer = cmd_target(id, szArgs, CMDTARGET_ALLOW_SELF)
if (!iPlayer)
return PLUGIN_HANDLED
if (g_bRemovedKnife[iPlayer])
{
g_bRemovedKnife[iPlayer] = false
if (is_user_alive(iPlayer))
rg_give_item(iPlayer, "weapon_knife", GT_APPEND)
client_print_color(0, print_team_default, "ADMIN ^3%n^1: gave knife to ^3%n^1.", id, iPlayer)
}
else
{
g_bRemovedKnife[iPlayer] = true
if (is_user_alive(iPlayer))
rg_remove_item(iPlayer, "weapon_knife")
client_print_color(0, print_team_default, "ADMIN ^3%n^1: removed knife from ^3%n^1.", id, iPlayer)
}
return PLUGIN_HANDLED
}
#if defined SAVE_DATA
public client_putinserver(id)
{
get_user_name(id, g_szName[id], charsmax(g_szName[]))
set_task(0.1, "Load_Data", id, g_szName[id], sizeof(g_szName[]))
}
public client_disconnected(id)
{
Save_Data(id, g_szName[id])
}
public client_infochanged(id)
{
if (!is_user_connected(id))
return PLUGIN_HANDLED
new szNewName[MAX_NAME_LENGTH], szOldName[MAX_NAME_LENGTH]
get_user_name(id, szOldName, charsmax(szOldName))
get_user_info(id, "name", szNewName, charsmax(szNewName))
if (!equal(szNewName, szOldName))
{
Save_Data(id, szOldName)
set_task(0.1, "Load_Data", id, szNewName, sizeof(szNewName))
g_szName[id] = szNewName
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public Save_Data(id, szName[])
{
new szData[64]
formatex(szData, charsmax(szData), "%i", g_bRemovedKnife[id])
fvault_set_data(g_szFVault, szName, szData)
}
public Load_Data(szName[], id)
{
if (!is_user_connected(id))
return
new szData[64]
fvault_get_data(g_szFVault, szName, szData, charsmax(szData))
new szKnifeStatus[3]
parse(szData, szKnifeStatus, charsmax(szKnifeStatus))
g_bRemovedKnife[id] = str_to_num(szKnifeStatus)
}
#endif