Untitled diff

Created Diff never expires
8 removals
371 lines
24 additions
386 lines
#include <amxmodx>
#include <amxmodx>
#include <amxmisc>
#include <amxmisc>
#include <cromchat>
#include <cromchat>
#include <hamsandwich>
#include <hamsandwich>
#include <nvault>
#include <nvault>


#define PLUGIN_VERSION "2.1"
#define PLUGIN_VERSION "2.1"
#define ARG_RANDOM -1
#define ARG_RANDOM -1
#define RANDOM_COLOR random_num(50, 255)
#define RANDOM_COLOR random_num(50, 255)
#define FLAGS_DELAY 0.1
#define FLAGS_DELAY 0.1


#if defined client_disconnected
#if defined client_disconnected
#define client_disconnect client_disconnected
#define client_disconnect client_disconnected
#endif
#endif


enum _:Settings
enum _:Settings
{
{
SAVE_TYPE,
SAVE_TYPE,
KILLS_NEEDED,
KILLS_NEEDED,
VIP_FLAGS_BIT,
VIP_FLAGS_BIT,
VIP_FLAGS_STR[32],
VIP_FLAGS_STR[32],
IGNORE_BOTS,
IGNORE_BOTS,
VIP_SUCCESS_MESSAGE,
VIP_SUCCESS_MESSAGE,
bool:HUD_MESSAGE_ENABLED,
bool:HUD_MESSAGE_ENABLED,
HUD_MESSAGE_COLOR[3],
HUD_MESSAGE_COLOR[3],
Float:HUD_MESSAGE_POSITION[2],
Float:HUD_MESSAGE_POSITION[2],
Float:HUD_MESSAGE_DURATION,
Float:HUD_MESSAGE_DURATION,
HUD_MESSAGE_EFFECTS,
HUD_MESSAGE_EFFECTS,
Float:HUD_MESSAGE_TIME[3]
Float:HUD_MESSAGE_TIME[3]
}
}


enum _:PlayerData
enum _:PlayerData
{
{
Name[32],
Name[32],
Info[35],
Info[35],
Kills
Kills
}
}


new g_eSettings[Settings],
new g_eSettings[Settings],
g_ePlayerData[33][PlayerData],
g_ePlayerData[33][PlayerData],
g_iObject,
g_iObject,
g_iVault
g_iVault


public plugin_init()
public plugin_init()
{
{
register_plugin("BecomeVIP Plus", PLUGIN_VERSION, "OciXCrom")
register_plugin("BecomeVIP Plus", PLUGIN_VERSION, "OciXCrom")
register_cvar("CRXBecomeVIP", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
register_cvar("CRXBecomeVIP", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
register_dictionary("BecomeVIP.txt")
register_dictionary("BecomeVIP.txt")
register_event("DeathMsg", "OnPlayerKilled", "a")
register_event("DeathMsg", "OnPlayerKilled", "a")
register_concmd("becomevip_give_kills", "Cmd_GiveKills", ADMIN_BAN, "<nick|#userid> <kills>")
register_concmd("becomevip_give_kills", "Cmd_GiveKills", ADMIN_LEVEL_C, "<nick|#userid> <kills>")
register_concmd("becomevip_reset_kills", "Cmd_ResetKills", ADMIN_BAN, "<nick|#userid>")
register_concmd("becomevip_reset_kills", "Cmd_ResetKills", ADMIN_LEVEL_C, "<nick|#userid>")
ReadFile()
ReadFile()
}
}


public plugin_end()
public plugin_end()
nvault_close(g_iVault)
nvault_close(g_iVault)


ReadFile()
ReadFile()
{
{
new szConfigsName[256], szFilename[256]
new szConfigsName[256], szFilename[256]
get_configsdir(szConfigsName, charsmax(szConfigsName))
get_configsdir(szConfigsName, charsmax(szConfigsName))
formatex(szFilename, charsmax(szFilename), "%s/BecomeVIP.ini", szConfigsName)
formatex(szFilename, charsmax(szFilename), "%s/BecomeVIP.ini", szConfigsName)
new iFilePointer = fopen(szFilename, "rt")
new iFilePointer = fopen(szFilename, "rt")
if(iFilePointer)
if(iFilePointer)
{
{
new szData[96], szValue[64], szKey[32], szTemp[4][5], i
new szData[96], szValue[64], szKey[32], szTemp[4][5], i
while(!feof(iFilePointer))
while(!feof(iFilePointer))
{
{
fgets(iFilePointer, szData, charsmax(szData))
fgets(iFilePointer, szData, charsmax(szData))
trim(szData)
trim(szData)
switch(szData[0])
switch(szData[0])
{
{
case EOS, '#', ';': continue
case EOS, '#', ';': continue
default:
default:
{
{
strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
trim(szKey); trim(szValue)
trim(szKey); trim(szValue)
if(equal(szKey, "PLUGIN_PREFIX"))
if(equal(szKey, "PLUGIN_PREFIX"))
CC_SetPrefix(szValue)
CC_SetPrefix(szValue)
else if(equal(szKey, "SAVE_TYPE"))
else if(equal(szKey, "SAVE_TYPE"))
g_eSettings[SAVE_TYPE] = str_to_num(szValue)
g_eSettings[SAVE_TYPE] = str_to_num(szValue)
else if(equal(szKey, "KILLS_NEEDED"))
else if(equal(szKey, "KILLS_NEEDED"))
g_eSettings[KILLS_NEEDED] = str_to_num(szValue)
g_eSettings[KILLS_NEEDED] = str_to_num(szValue)
else if(equal(szKey, "VIP_FLAGS"))
else if(equal(szKey, "VIP_FLAGS"))
{
{
copy(g_eSettings[VIP_FLAGS_STR], charsmax(g_eSettings[VIP_FLAGS_STR]), szValue)
copy(g_eSettings[VIP_FLAGS_STR], charsmax(g_eSettings[VIP_FLAGS_STR]), szValue)
g_eSettings[VIP_FLAGS_BIT] = read_flags(szValue)
g_eSettings[VIP_FLAGS_BIT] = read_flags(szValue)
}
}
else if(equal(szKey, "IGNORE_BOTS"))
else if(equal(szKey, "IGNORE_BOTS"))
g_eSettings[IGNORE_BOTS] = str_to_num(szValue)
g_eSettings[IGNORE_BOTS] = str_to_num(szValue)
if(equal(szKey, "CHECK_KILLS_COMMANDS"))
if(equal(szKey, "CHECK_KILLS_COMMANDS"))
{
{
while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
{
{
trim(szKey); trim(szValue)
trim(szKey); trim(szValue)
if(szKey[0] == '/' || szKey[0] == '!')
if(szKey[0] == '/' || szKey[0] == '!')
{
{
formatex(szData, charsmax(szData), "say %s", szKey)
formatex(szData, charsmax(szData), "say %s", szKey)
register_clcmd(szData, "Cmd_CheckKills")
register_clcmd(szData, "Cmd_CheckKills")
formatex(szData, charsmax(szData), "say_team %s", szKey)
formatex(szData, charsmax(szData), "say_team %s", szKey)
register_clcmd(szData, "Cmd_CheckKills")
register_clcmd(szData, "Cmd_CheckKills")
}
}
else register_clcmd(szData, "Cmd_CheckKills")
else register_clcmd(szData, "Cmd_CheckKills")
}
}
}
}
else if(equal(szKey, "VAULT_FILE"))
else if(equal(szKey, "VAULT_FILE"))
g_iVault = nvault_open(szValue)
g_iVault = nvault_open(szValue)
else if(equal(szKey, "VIP_SUCCESS_MESSAGE"))
else if(equal(szKey, "VIP_SUCCESS_MESSAGE"))
g_eSettings[VIP_SUCCESS_MESSAGE] = str_to_num(szValue)
g_eSettings[VIP_SUCCESS_MESSAGE] = str_to_num(szValue)
else if(equal(szKey, "HUD_MESSAGE_ENABLED"))
else if(equal(szKey, "HUD_MESSAGE_ENABLED"))
{
{
g_eSettings[HUD_MESSAGE_ENABLED] = bool:str_to_num(szValue)
g_eSettings[HUD_MESSAGE_ENABLED] = bool:str_to_num(szValue)
if(g_eSettings[HUD_MESSAGE_ENABLED])
if(g_eSettings[HUD_MESSAGE_ENABLED])
{
{
g_iObject = CreateHudSyncObj()
g_iObject = CreateHudSyncObj()
RegisterHam(Ham_Spawn, "player", "OnPlayerSpawn", 1)
RegisterHam(Ham_Spawn, "player", "OnPlayerSpawn", 1)
}
}
}
}
else if(equal(szKey, "HUD_MESSAGE_COLOR"))
else if(equal(szKey, "HUD_MESSAGE_COLOR"))
{
{
parse(szValue, szTemp[0], charsmax(szTemp[]), szTemp[1], charsmax(szTemp[]), szTemp[2], charsmax(szTemp[]))
parse(szValue, szTemp[0], charsmax(szTemp[]), szTemp[1], charsmax(szTemp[]), szTemp[2], charsmax(szTemp[]))
for(i = 0; i < 3; i++)
for(i = 0; i < 3; i++)
g_eSettings[HUD_MESSAGE_COLOR][i] = str_to_num(szTemp[i])
g_eSettings[HUD_MESSAGE_COLOR][i] = str_to_num(szTemp[i])
}
}
else if(equal(szKey, "HUD_MESSAGE_POSITION"))
else if(equal(szKey, "HUD_MESSAGE_POSITION"))
{
{
parse(szValue, szTemp[0], charsmax(szTemp[]), szTemp[1], charsmax(szTemp[]))
parse(szValue, szTemp[0], charsmax(szTemp[]), szTemp[1], charsmax(szTemp[]))
for(i = 0; i < 2; i++)
for(i = 0; i < 2; i++)
g_eSettings[HUD_MESSAGE_POSITION][i] = _:str_to_float(szTemp[i])
g_eSettings[HUD_MESSAGE_POSITION][i] = _:str_to_float(szTemp[i])
}
}
else if(equal(szKey, "HUD_MESSAGE_DURATION"))
else if(equal(szKey, "HUD_MESSAGE_DURATION"))
g_eSettings[HUD_MESSAGE_DURATION] = _:str_to_float(szValue)
g_eSettings[HUD_MESSAGE_DURATION] = _:str_to_float(szValue)
else if(equal(szKey, "HUD_MESSAGE_EFFECTS"))
else if(equal(szKey, "HUD_MESSAGE_EFFECTS"))
{
{
parse(szValue, szTemp[0], charsmax(szTemp[]), szTemp[1], charsmax(szTemp[]), szTemp[2], charsmax(szTemp[]), szTemp[3], charsmax(szTemp[]))
parse(szValue, szTemp[0], charsmax(szTemp[]), szTemp[1], charsmax(szTemp[]), szTemp[2], charsmax(szTemp[]), szTemp[3], charsmax(szTemp[]))
g_eSettings[HUD_MESSAGE_EFFECTS] = str_to_num(szTemp[0])
g_eSettings[HUD_MESSAGE_EFFECTS] = str_to_num(szTemp[0])
for(i = 0; i < 3; i++)
for(i = 0; i < 3; i++)
g_eSettings[HUD_MESSAGE_TIME][i] = _:str_to_float(szTemp[i + 1])
g_eSettings[HUD_MESSAGE_TIME][i] = _:str_to_float(szTemp[i + 1])
}
}
}
}
}
}
}
}
fclose(iFilePointer)
fclose(iFilePointer)
}
}
}
}


public client_authorized(id)
public client_authorized(id)
{
{
if(ignore_bot(id))
if(ignore_bot(id))
return
return


switch(g_eSettings[SAVE_TYPE])
switch(g_eSettings[SAVE_TYPE])
{
{
case 0:
case 0:
{
{
get_user_name(id, g_ePlayerData[id][Info], charsmax(g_ePlayerData[][Info]))
get_user_name(id, g_ePlayerData[id][Info], charsmax(g_ePlayerData[][Info]))
strtolower(g_ePlayerData[id][Info])
strtolower(g_ePlayerData[id][Info])
}
}
case 1: get_user_ip(id, g_ePlayerData[id][Info], charsmax(g_ePlayerData[][Info]), 1)
case 1: get_user_ip(id, g_ePlayerData[id][Info], charsmax(g_ePlayerData[][Info]), 1)
case 2: get_user_authid(id, g_ePlayerData[id][Info], charsmax(g_ePlayerData[][Info]))
case 2: get_user_authid(id, g_ePlayerData[id][Info], charsmax(g_ePlayerData[][Info]))
}
}
get_user_name(id, g_ePlayerData[id][Name], charsmax(g_ePlayerData[][Name]))
get_user_name(id, g_ePlayerData[id][Name], charsmax(g_ePlayerData[][Name]))
use_vault(id, false, g_ePlayerData[id][Info])
use_vault(id, false, g_ePlayerData[id][Info])
}
}


public client_disconnect(id)
public client_disconnect(id)
{
{
if(ignore_bot(id))
if(ignore_bot(id))
return
return


use_vault(id, true, g_ePlayerData[id][Info])
use_vault(id, true, g_ePlayerData[id][Info])
}
}
public client_infochanged(id)
public client_infochanged(id)
{
{
if(ignore_bot(id))
if(ignore_bot(id))
return
return


static szNewName[32], szOldName[32]
static szNewName[32], szOldName[32]
get_user_info(id, "name", szNewName, charsmax(szNewName))
get_user_info(id, "name", szNewName, charsmax(szNewName))
get_user_name(id, szOldName, charsmax(szOldName))
get_user_name(id, szOldName, charsmax(szOldName))
if(!equal(szNewName, szOldName))
if(!equal(szNewName, szOldName))
{
{
if(!g_eSettings[SAVE_TYPE])
if(!g_eSettings[SAVE_TYPE])
{
{
use_vault(id, true, szOldName)
use_vault(id, true, szOldName)
use_vault(id, false, szNewName)
use_vault(id, false, szNewName)
copy(g_ePlayerData[id][Info], charsmax(g_ePlayerData[][Info]), szNewName)
copy(g_ePlayerData[id][Info], charsmax(g_ePlayerData[][Info]), szNewName)
strtolower(g_ePlayerData[id][Info])
strtolower(g_ePlayerData[id][Info])
}
}
set_task(FLAGS_DELAY, "refresh_status", id)
set_task(FLAGS_DELAY, "refresh_status", id)
copy(g_ePlayerData[id][Name], charsmax(g_ePlayerData[][Name]), szNewName)
copy(g_ePlayerData[id][Name], charsmax(g_ePlayerData[][Name]), szNewName)
}
}
}
}


public OnPlayerSpawn(id)
public OnPlayerSpawn(id)
{
{
if(!is_user_alive(id) || has_vip_flags(id) || ignore_bot(id))
if(!is_user_alive(id) || has_vip_flags(id) || ignore_bot(id))
return
return
new szName[32], szAuthId[35], szDateAndTime[22]
get_user_name(id, szName, charsmax(szName))
get_user_authid(id, szAuthId, charsmax(szAuthId))
get_time("%H:%M - %d/%m/%Y", szDateAndTime, charsmax(szDateAndTime))
set_hudmessage
set_hudmessage
(
(
g_eSettings[HUD_MESSAGE_COLOR][0] == ARG_RANDOM ? RANDOM_COLOR : g_eSettings[HUD_MESSAGE_COLOR][0],
g_eSettings[HUD_MESSAGE_COLOR][0] == ARG_RANDOM ? RANDOM_COLOR : g_eSettings[HUD_MESSAGE_COLOR][0],
g_eSettings[HUD_MESSAGE_COLOR][1] == ARG_RANDOM ? RANDOM_COLOR : g_eSettings[HUD_MESSAGE_COLOR][1],
g_eSettings[HUD_MESSAGE_COLOR][1] == ARG_RANDOM ? RANDOM_COLOR : g_eSettings[HUD_MESSAGE_COLOR][1],
g_eSettings[HUD_MESSAGE_COLOR][2] == ARG_RANDOM ? RANDOM_COLOR : g_eSettings[HUD_MESSAGE_COLOR][2],
g_eSettings[HUD_MESSAGE_COLOR][2] == ARG_RANDOM ? RANDOM_COLOR : g_eSettings[HUD_MESSAGE_COLOR][2],
g_eSettings[HUD_MESSAGE_POSITION][0], g_eSettings[HUD_MESSAGE_POSITION][1], g_eSettings[HUD_MESSAGE_EFFECTS],
g_eSettings[HUD_MESSAGE_POSITION][0], g_eSettings[HUD_MESSAGE_POSITION][1], g_eSettings[HUD_MESSAGE_EFFECTS],
g_eSettings[HUD_MESSAGE_TIME][0], g_eSettings[HUD_MESSAGE_DURATION], g_eSettings[HUD_MESSAGE_TIME][1], g_eSettings[HUD_MESSAGE_TIME][2]
g_eSettings[HUD_MESSAGE_TIME][0], g_eSettings[HUD_MESSAGE_DURATION], g_eSettings[HUD_MESSAGE_TIME][1], g_eSettings[HUD_MESSAGE_TIME][2]
)
)
ShowSyncHudMsg(id, g_iObject, "%L", id, "BECOMEVIP_HUD_MSG", g_eSettings[KILLS_NEEDED], g_ePlayerData[id][Kills])
ShowSyncHudMsg(id, g_iObject, "%L", id, "BECOMEVIP_HUD_MSG", szName, szAuthId, g_eSettings[KILLS_NEEDED], g_ePlayerData[id][Kills], szDateAndTime)
}
}


public OnPlayerKilled()
public OnPlayerKilled()
{
{
new iAttacker = read_data(1), iVictim = read_data(2)
new iAttacker = read_data(1), iVictim = read_data(2)
if(is_user_connected(iAttacker) && iAttacker != iVictim && !ignore_bot(iAttacker))
if(is_user_connected(iAttacker) && iAttacker != iVictim && !ignore_bot(iAttacker))
{
{
g_ePlayerData[iAttacker][Kills]++
g_ePlayerData[iAttacker][Kills]++
check_status(iAttacker, true)
check_status(iAttacker, true)
}
}
}
}


public Cmd_CheckKills(id)
public Cmd_CheckKills(id)
{
{
new szName[32], szAuthId[35], szDateAndTime[22]
get_user_name(id, szName, charsmax(szName))
get_user_authid(id, szAuthId, charsmax(szAuthId))
get_time("%H:%M - %d/%m/%Y", szDateAndTime, charsmax(szDateAndTime))
if(has_vip_flags(id))
if(has_vip_flags(id))
CC_SendMessage(id, "%L", id, "BECOMEVIP_INFO_YES", g_eSettings[KILLS_NEEDED], g_eSettings[VIP_FLAGS_STR])
CC_SendMessage(id, "%L", id, "BECOMEVIP_INFO_YES", szName, szAuthId, g_eSettings[KILLS_NEEDED], g_eSettings[VIP_FLAGS_STR], szDateAndTime)
else
else
CC_SendMessage(id, "%L", id, "BECOMEVIP_INFO_NO", g_eSettings[KILLS_NEEDED] - g_ePlayerData[id][Kills], g_ePlayerData[id][Kills], g_eSettings[VIP_FLAGS_STR])
CC_SendMessage(id, "%L", id, "BECOMEVIP_INFO_NO", szName, szAuthId, g_eSettings[KILLS_NEEDED] - g_ePlayerData[id][Kills], g_ePlayerData[id][Kills], g_eSettings[VIP_FLAGS_STR], szDateAndTime)
return PLUGIN_HANDLED
return PLUGIN_HANDLED
}
}


public Cmd_GiveKills(id, iLevel, iCid)
public Cmd_GiveKills(id, iLevel, iCid)
{
{
if(!cmd_access(id, iLevel, iCid, 3))
if(!cmd_access(id, iLevel, iCid, 3))
return PLUGIN_HANDLED
return PLUGIN_HANDLED
new szPlayer[32]
new szPlayer[32]
read_argv(1, szPlayer, charsmax(szPlayer))
read_argv(1, szPlayer, charsmax(szPlayer))
new iPlayer = cmd_target(id, szPlayer, CMDTARGET_ALLOW_SELF)
new iPlayer = cmd_target(id, szPlayer, CMDTARGET_ALLOW_SELF)
if(!iPlayer)
if(!iPlayer)
return PLUGIN_HANDLED
return PLUGIN_HANDLED
new szName[2][32], szAmount[8]
new szName[2][32], szAmount[8]
get_user_name(id, szName[0], charsmax(szName[]))
get_user_name(id, szName[0], charsmax(szName[]))
get_user_name(iPlayer, szName[1], charsmax(szName[]))
get_user_name(iPlayer, szName[1], charsmax(szName[]))
read_argv(2, szAmount, charsmax(szAmount))
read_argv(2, szAmount, charsmax(szAmount))
new iAmount = str_to_num(szAmount)
new iAmount = str_to_num(szAmount)
g_ePlayerData[iPlayer][Kills] += iAmount
g_ePlayerData[iPlayer][Kills] += iAmount
check_status(iPlayer, true)
check_status(iPlayer, true)
CC_LogMessage(0, _, "%L", LANG_PLAYER, iAmount >= 0 ? "BECOMEVIP_GIVE_KILLS" : "BECOMEVIP_TAKE_KILLS", szName[0], iAmount, szName[1])
CC_LogMessage(0, _, "%L", LANG_PLAYER, iAmount >= 0 ? "BECOMEVIP_GIVE_KILLS" : "BECOMEVIP_TAKE_KILLS", szName[0], iAmount, szName[1])
return PLUGIN_HANDLED
return PLUGIN_HANDLED
}
}


public Cmd_ResetKills(id, iLevel, iCid)
public Cmd_ResetKills(id, iLevel, iCid)
{
{
if(!cmd_access(id, iLevel, iCid, 2))
if(!cmd_access(id, iLevel, iCid, 2))
return PLUGIN_HANDLED
return PLUGIN_HANDLED
new szPlayer[32]
new szPlayer[32]
read_argv(1, szPlayer, charsmax(szPlayer))
read_argv(1, szPlayer, charsmax(szPlayer))
new iPlayer = cmd_target(id, szPlayer, CMDTARGET_ALLOW_SELF|CMDTARGET_OBEY_IMMUNITY)
new iPlayer = cmd_target(id, szPlayer, CMDTARGET_ALLOW_SELF|CMDTARGET_OBEY_IMMUNITY)
if(!iPlayer)
if(!iPlayer)
return PLUGIN_HANDLED
return PLUGIN_HANDLED
new szName[2][32]
new szName[2][32]
get_user_name(id, szName[0], charsmax(szName[]))
get_user_name(id, szName[0], charsmax(szName[]))
get_user_name(iPlayer, szName[1], charsmax(szName[]))
get_user_name(iPlayer, szName[1], charsmax(szName[]))
g_ePlayerData[iPlayer][Kills] = 0
g_ePlayerData[iPlayer][Kills] = 0
CC_LogMessage(0, _, "%L", LANG_PLAYER, "BECOMEVIP_RESET_KILLS", szName[0], szName[1])
CC_LogMessage(0, _, "%L", LANG_PLAYER, "BECOMEVIP_RESET_KILLS", szName[0], szName[1])
return PLUGIN_HANDLED
return PLUGIN_HANDLED
}
}


public refresh_status(id)
public refresh_status(id)
check_status(id, false)
check_status(id, false)


bool:check_status(const id, const bool:bAnnounce)
bool:check_status(const id, const bool:bAnnounce)
{
{
if(has_vip_flags(id) || ignore_bot(id))
if(has_vip_flags(id) || ignore_bot(id))
return
return
if(g_ePlayerData[id][Kills] >= g_eSettings[KILLS_NEEDED])
if(g_ePlayerData[id][Kills] >= g_eSettings[KILLS_NEEDED])
set_vip_flags(id, bAnnounce)
set_vip_flags(id, bAnnounce)
}
}
set_vip_flags(const id, const bool:bAnnounce)
set_vip_flags(const id, const bool:bAnnounce)
{
{
set_user_flags(id, g_eSettings[VIP_FLAGS_BIT])
set_user_flags(id, g_eSettings[VIP_FLAGS_BIT])
new szName[32], szAuthId[35], szDateAndTime[22]
get_user_name(id, szName, charsmax(szName))
get_user_authid(id, szAuthId, charsmax(szAuthId))
get_time("%H:%M - %d/%m/%Y", szDateAndTime, charsmax(szDateAndTime))
if(bAnnounce)
if(bAnnounce)
{
{
switch(g_eSettings[VIP_SUCCESS_MESSAGE])
switch(g_eSettings[VIP_SUCCESS_MESSAGE])
{
{
case 1: CC_SendMessage(id, "%L", id, "BECOMEVIP_SUCCESS_PLR", g_eSettings[VIP_FLAGS_STR], g_eSettings[KILLS_NEEDED])
case 1: CC_SendMessage(id, "%L", id, "BECOMEVIP_SUCCESS_PLR", szName, szAuthId, g_eSettings[VIP_FLAGS_STR], g_eSettings[KILLS_NEEDED], szDateAndTime)
case 2: CC_SendMessage(0, "%L", LANG_PLAYER, "BECOMEVIP_SUCCESS_ALL", g_ePlayerData[id][Name], g_eSettings[VIP_FLAGS_STR], g_eSettings[KILLS_NEEDED])
case 2: CC_SendMessage(0, "%L", LANG_PLAYER, "BECOMEVIP_SUCCESS_ALL", szName, szAuthId, g_eSettings[VIP_FLAGS_STR], g_eSettings[KILLS_NEEDED], szDateAndTime)
}
}
}
}
}
}


bool:ignore_bot(const id)
bool:ignore_bot(const id)
return (g_eSettings[IGNORE_BOTS] && is_user_bot(id))
return (g_eSettings[IGNORE_BOTS] && is_user_bot(id))


bool:has_vip_flags(const id)
bool:has_vip_flags(const id)
return ((get_user_flags(id) & g_eSettings[VIP_FLAGS_BIT]) == g_eSettings[VIP_FLAGS_BIT])
return ((get_user_flags(id) & g_eSettings[VIP_FLAGS_BIT]) == g_eSettings[VIP_FLAGS_BIT])


use_vault(const id, const bool:bSave, const szInfo[])
use_vault(const id, const bool:bSave, const szInfo[])
{
{
if(!szInfo[0])
if(!szInfo[0])
return
return
if(bSave)
if(bSave)
{
{
static szKills[10]
static szKills[10]
num_to_str(g_ePlayerData[id][Kills], szKills, charsmax(szKills))
num_to_str(g_ePlayerData[id][Kills], szKills, charsmax(szKills))
nvault_set(g_iVault, szInfo, szKills)
nvault_set(g_iVault, szInfo, szKills)
}
}
else
else
{
{
g_ePlayerData[id][Kills] = nvault_get(g_iVault, szInfo)
g_ePlayerData[id][Kills] = nvault_get(g_iVault, szInfo)
set_task(FLAGS_DELAY, "refresh_status", id)
set_task(FLAGS_DELAY, "refresh_status", id)
}
}
}
}


public plugin_natives()
public plugin_natives()
{
{
register_library("becomevip")
register_library("becomevip")
register_native("becomevip_get_flags", "_becomevip_get_flags")
register_native("becomevip_get_flags", "_becomevip_get_flags")
register_native("becomevip_get_kills_needed", "_becomevip_get_kills_needed")
register_native("becomevip_get_kills_needed", "_becomevip_get_kills_needed")
register_native("becomevip_get_save_type", "_becomevip_get_save_type")
register_native("becomevip_get_save_type", "_becomevip_get_save_type")
register_native("becomevip_get_user_kills", "_becomevip_get_user_kills")
register_native("becomevip_get_user_kills", "_becomevip_get_user_kills")
register_native("becomevip_is_hud_enabled", "_becomevip_is_hud_enabled")
register_native("becomevip_is_hud_enabled", "_becomevip_is_hud_enabled")
register_native("becomevip_user_has_flags", "_becomevip_user_has_flags")
register_native("becomevip_user_has_flags", "_becomevip_user_has_flags")
}
}


public _becomevip_get_flags(iPlugin, iParams)
public _becomevip_get_flags(iPlugin, iParams)
return g_eSettings[VIP_FLAGS_BIT]
return g_eSettings[VIP_FLAGS_BIT]


public _becomevip_get_kills_needed(iPlugin, iParams)
public _becomevip_get_kills_needed(iPlugin, iParams)
return g_eSettings[KILLS_NEEDED]
return g_eSettings[KILLS_NEEDED]
public _becomevip_get_save_type(iPlugin, iParams)
public _becomevip_get_save_type(iPlugin, iParams)
return g_eSettings[SAVE_TYPE]
return g_eSettings[SAVE_TYPE]
public _becomevip_get_user_kills(iPlugin, iParams)
public _becomevip_get_user_kills(iPlugin, iParams)
return g_ePlayerData[get_param(1)][Kills]
return g_ePlayerData[get_param(1)][Kills]
public bool:_becomevip_is_hud_enabled(iPlugin, iParams)
public bool:_becomevip_is_hud_enabled(iPlugin, iParams)
return g_eSettings[HUD_MESSAGE_ENABLED]
return g_eSettings[HUD_MESSAGE_ENABLED]


public bool:_becomevip_user_has_flags(iPlugin, iParams)
public bool:_becomevip_user_has_flags(iPlugin, iParams)
return has_vip_flags(get_param(1))
return has_vip_flags(get_param(1))