Diff
checker
Texte
Texte
Images
Documents
Excel
Dossiers
Legal
Enterprise
Application de bureau
Prix
Se connecter
Télécharger Diffchecker Desktop
Comparer le texte
Trouver la différence entre deux fichiers texte
Outils
Historique
Éditeur live
Cacher identiques
Sans retour à la ligne
Vue
Divisé
Unifié
Niveau de précision
Intelligent
Mot
Caractère
Coloration syntaxique
Choisir la syntaxe
Ignorer
Transformer le texte
Aller au premier écart
Modifier l'entrée
Diffchecker Desktop
La façon la plus sécurisée d'utiliser Diffchecker. Obtenez l'application Diffchecker Desktop : vos diffs ne quittent jamais votre ordinateur !
Obtenir Desktop
Untitled diff
Créé
il y a 8 ans
Le diff n'expire jamais
Effacer
Exporter
Partager
Expliquer
4 suppressions
Lignes
Total
Supprimé
Caractères
Total
Supprimé
Pour continuer à utiliser cette fonctionnalité, passez à
Diff
checker
Pro
Voir les prix
371 lignes
Copier tout
28 ajouts
Lignes
Total
Ajouté
Caractères
Total
Ajouté
Pour continuer à utiliser cette fonctionnalité, passez à
Diff
checker
Pro
Voir les prix
386 lignes
Copier tout
#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")
Copier
Copié
Copier
Copié
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
Copier
Copié
Copier
Copié
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]
)
)
Copier
Copié
Copier
Copié
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)
{
{
Copier
Copié
Copier
Copié
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))
Copier
Copié
Copier
Copié
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
Copier
Copié
Copier
Copié
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])
Copier
Copié
Copier
Copié
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])
{
{
Copier
Copié
Copier
Copié
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",
sz
Name
, 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))
Différences enregistrées
Texte d'origine
Ouvrir un fichier
#include <amxmodx> #include <amxmisc> #include <cromchat> #include <hamsandwich> #include <nvault> #define PLUGIN_VERSION "2.1" #define ARG_RANDOM -1 #define RANDOM_COLOR random_num(50, 255) #define FLAGS_DELAY 0.1 #if defined client_disconnected #define client_disconnect client_disconnected #endif enum _:Settings { SAVE_TYPE, KILLS_NEEDED, VIP_FLAGS_BIT, VIP_FLAGS_STR[32], IGNORE_BOTS, VIP_SUCCESS_MESSAGE, bool:HUD_MESSAGE_ENABLED, HUD_MESSAGE_COLOR[3], Float:HUD_MESSAGE_POSITION[2], Float:HUD_MESSAGE_DURATION, HUD_MESSAGE_EFFECTS, Float:HUD_MESSAGE_TIME[3] } enum _:PlayerData { Name[32], Info[35], Kills } new g_eSettings[Settings], g_ePlayerData[33][PlayerData], g_iObject, g_iVault public plugin_init() { register_plugin("BecomeVIP Plus", PLUGIN_VERSION, "OciXCrom") register_cvar("CRXBecomeVIP", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED) register_dictionary("BecomeVIP.txt") register_event("DeathMsg", "OnPlayerKilled", "a") register_concmd("becomevip_give_kills", "Cmd_GiveKills", ADMIN_BAN, "<nick|#userid> <kills>") register_concmd("becomevip_reset_kills", "Cmd_ResetKills", ADMIN_BAN, "<nick|#userid>") ReadFile() } public plugin_end() nvault_close(g_iVault) ReadFile() { new szConfigsName[256], szFilename[256] get_configsdir(szConfigsName, charsmax(szConfigsName)) formatex(szFilename, charsmax(szFilename), "%s/BecomeVIP.ini", szConfigsName) new iFilePointer = fopen(szFilename, "rt") if(iFilePointer) { new szData[96], szValue[64], szKey[32], szTemp[4][5], i while(!feof(iFilePointer)) { fgets(iFilePointer, szData, charsmax(szData)) trim(szData) switch(szData[0]) { case EOS, '#', ';': continue default: { strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=') trim(szKey); trim(szValue) if(equal(szKey, "PLUGIN_PREFIX")) CC_SetPrefix(szValue) else if(equal(szKey, "SAVE_TYPE")) g_eSettings[SAVE_TYPE] = str_to_num(szValue) else if(equal(szKey, "KILLS_NEEDED")) g_eSettings[KILLS_NEEDED] = str_to_num(szValue) else if(equal(szKey, "VIP_FLAGS")) { copy(g_eSettings[VIP_FLAGS_STR], charsmax(g_eSettings[VIP_FLAGS_STR]), szValue) g_eSettings[VIP_FLAGS_BIT] = read_flags(szValue) } else if(equal(szKey, "IGNORE_BOTS")) g_eSettings[IGNORE_BOTS] = str_to_num(szValue) if(equal(szKey, "CHECK_KILLS_COMMANDS")) { while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ',')) { trim(szKey); trim(szValue) if(szKey[0] == '/' || szKey[0] == '!') { formatex(szData, charsmax(szData), "say %s", szKey) register_clcmd(szData, "Cmd_CheckKills") formatex(szData, charsmax(szData), "say_team %s", szKey) register_clcmd(szData, "Cmd_CheckKills") } else register_clcmd(szData, "Cmd_CheckKills") } } else if(equal(szKey, "VAULT_FILE")) g_iVault = nvault_open(szValue) else if(equal(szKey, "VIP_SUCCESS_MESSAGE")) g_eSettings[VIP_SUCCESS_MESSAGE] = str_to_num(szValue) else if(equal(szKey, "HUD_MESSAGE_ENABLED")) { g_eSettings[HUD_MESSAGE_ENABLED] = bool:str_to_num(szValue) if(g_eSettings[HUD_MESSAGE_ENABLED]) { g_iObject = CreateHudSyncObj() RegisterHam(Ham_Spawn, "player", "OnPlayerSpawn", 1) } } else if(equal(szKey, "HUD_MESSAGE_COLOR")) { parse(szValue, szTemp[0], charsmax(szTemp[]), szTemp[1], charsmax(szTemp[]), szTemp[2], charsmax(szTemp[])) for(i = 0; i < 3; i++) g_eSettings[HUD_MESSAGE_COLOR][i] = str_to_num(szTemp[i]) } else if(equal(szKey, "HUD_MESSAGE_POSITION")) { parse(szValue, szTemp[0], charsmax(szTemp[]), szTemp[1], charsmax(szTemp[])) for(i = 0; i < 2; i++) g_eSettings[HUD_MESSAGE_POSITION][i] = _:str_to_float(szTemp[i]) } else if(equal(szKey, "HUD_MESSAGE_DURATION")) g_eSettings[HUD_MESSAGE_DURATION] = _:str_to_float(szValue) 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[])) g_eSettings[HUD_MESSAGE_EFFECTS] = str_to_num(szTemp[0]) for(i = 0; i < 3; i++) g_eSettings[HUD_MESSAGE_TIME][i] = _:str_to_float(szTemp[i + 1]) } } } } fclose(iFilePointer) } } public client_authorized(id) { if(ignore_bot(id)) return switch(g_eSettings[SAVE_TYPE]) { case 0: { get_user_name(id, g_ePlayerData[id][Info], charsmax(g_ePlayerData[][Info])) strtolower(g_ePlayerData[id][Info]) } 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])) } get_user_name(id, g_ePlayerData[id][Name], charsmax(g_ePlayerData[][Name])) use_vault(id, false, g_ePlayerData[id][Info]) } public client_disconnect(id) { if(ignore_bot(id)) return use_vault(id, true, g_ePlayerData[id][Info]) } public client_infochanged(id) { if(ignore_bot(id)) return static szNewName[32], szOldName[32] get_user_info(id, "name", szNewName, charsmax(szNewName)) get_user_name(id, szOldName, charsmax(szOldName)) if(!equal(szNewName, szOldName)) { if(!g_eSettings[SAVE_TYPE]) { use_vault(id, true, szOldName) use_vault(id, false, szNewName) copy(g_ePlayerData[id][Info], charsmax(g_ePlayerData[][Info]), szNewName) strtolower(g_ePlayerData[id][Info]) } set_task(FLAGS_DELAY, "refresh_status", id) copy(g_ePlayerData[id][Name], charsmax(g_ePlayerData[][Name]), szNewName) } } public OnPlayerSpawn(id) { if(!is_user_alive(id) || has_vip_flags(id) || ignore_bot(id)) return set_hudmessage ( 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][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_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]) } public OnPlayerKilled() { new iAttacker = read_data(1), iVictim = read_data(2) if(is_user_connected(iAttacker) && iAttacker != iVictim && !ignore_bot(iAttacker)) { g_ePlayerData[iAttacker][Kills]++ check_status(iAttacker, true) } } public Cmd_CheckKills(id) { if(has_vip_flags(id)) CC_SendMessage(id, "%L", id, "BECOMEVIP_INFO_YES", g_eSettings[KILLS_NEEDED], g_eSettings[VIP_FLAGS_STR]) 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]) return PLUGIN_HANDLED } public Cmd_GiveKills(id, iLevel, iCid) { if(!cmd_access(id, iLevel, iCid, 3)) return PLUGIN_HANDLED new szPlayer[32] read_argv(1, szPlayer, charsmax(szPlayer)) new iPlayer = cmd_target(id, szPlayer, CMDTARGET_ALLOW_SELF) if(!iPlayer) return PLUGIN_HANDLED new szName[2][32], szAmount[8] get_user_name(id, szName[0], charsmax(szName[])) get_user_name(iPlayer, szName[1], charsmax(szName[])) read_argv(2, szAmount, charsmax(szAmount)) new iAmount = str_to_num(szAmount) g_ePlayerData[iPlayer][Kills] += iAmount check_status(iPlayer, true) CC_LogMessage(0, _, "%L", LANG_PLAYER, iAmount >= 0 ? "BECOMEVIP_GIVE_KILLS" : "BECOMEVIP_TAKE_KILLS", szName[0], iAmount, szName[1]) return PLUGIN_HANDLED } public Cmd_ResetKills(id, iLevel, iCid) { if(!cmd_access(id, iLevel, iCid, 2)) return PLUGIN_HANDLED new szPlayer[32] read_argv(1, szPlayer, charsmax(szPlayer)) new iPlayer = cmd_target(id, szPlayer, CMDTARGET_ALLOW_SELF|CMDTARGET_OBEY_IMMUNITY) if(!iPlayer) return PLUGIN_HANDLED new szName[2][32] get_user_name(id, szName[0], charsmax(szName[])) get_user_name(iPlayer, szName[1], charsmax(szName[])) g_ePlayerData[iPlayer][Kills] = 0 CC_LogMessage(0, _, "%L", LANG_PLAYER, "BECOMEVIP_RESET_KILLS", szName[0], szName[1]) return PLUGIN_HANDLED } public refresh_status(id) check_status(id, false) bool:check_status(const id, const bool:bAnnounce) { if(has_vip_flags(id) || ignore_bot(id)) return if(g_ePlayerData[id][Kills] >= g_eSettings[KILLS_NEEDED]) set_vip_flags(id, bAnnounce) } set_vip_flags(const id, const bool:bAnnounce) { set_user_flags(id, g_eSettings[VIP_FLAGS_BIT]) if(bAnnounce) { 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 2: CC_SendMessage(0, "%L", LANG_PLAYER, "BECOMEVIP_SUCCESS_ALL", g_ePlayerData[id][Name], g_eSettings[VIP_FLAGS_STR], g_eSettings[KILLS_NEEDED]) } } } bool:ignore_bot(const id) return (g_eSettings[IGNORE_BOTS] && is_user_bot(id)) bool:has_vip_flags(const id) return ((get_user_flags(id) & g_eSettings[VIP_FLAGS_BIT]) == g_eSettings[VIP_FLAGS_BIT]) use_vault(const id, const bool:bSave, const szInfo[]) { if(!szInfo[0]) return if(bSave) { static szKills[10] num_to_str(g_ePlayerData[id][Kills], szKills, charsmax(szKills)) nvault_set(g_iVault, szInfo, szKills) } else { g_ePlayerData[id][Kills] = nvault_get(g_iVault, szInfo) set_task(FLAGS_DELAY, "refresh_status", id) } } public plugin_natives() { register_library("becomevip") register_native("becomevip_get_flags", "_becomevip_get_flags") register_native("becomevip_get_kills_needed", "_becomevip_get_kills_needed") register_native("becomevip_get_save_type", "_becomevip_get_save_type") register_native("becomevip_get_user_kills", "_becomevip_get_user_kills") register_native("becomevip_is_hud_enabled", "_becomevip_is_hud_enabled") register_native("becomevip_user_has_flags", "_becomevip_user_has_flags") } public _becomevip_get_flags(iPlugin, iParams) return g_eSettings[VIP_FLAGS_BIT] public _becomevip_get_kills_needed(iPlugin, iParams) return g_eSettings[KILLS_NEEDED] public _becomevip_get_save_type(iPlugin, iParams) return g_eSettings[SAVE_TYPE] public _becomevip_get_user_kills(iPlugin, iParams) return g_ePlayerData[get_param(1)][Kills] public bool:_becomevip_is_hud_enabled(iPlugin, iParams) return g_eSettings[HUD_MESSAGE_ENABLED] public bool:_becomevip_user_has_flags(iPlugin, iParams) return has_vip_flags(get_param(1))
Texte modifié
Ouvrir un fichier
#include <amxmodx> #include <amxmisc> #include <cromchat> #include <hamsandwich> #include <nvault> #define PLUGIN_VERSION "2.1" #define ARG_RANDOM -1 #define RANDOM_COLOR random_num(50, 255) #define FLAGS_DELAY 0.1 #if defined client_disconnected #define client_disconnect client_disconnected #endif enum _:Settings { SAVE_TYPE, KILLS_NEEDED, VIP_FLAGS_BIT, VIP_FLAGS_STR[32], IGNORE_BOTS, VIP_SUCCESS_MESSAGE, bool:HUD_MESSAGE_ENABLED, HUD_MESSAGE_COLOR[3], Float:HUD_MESSAGE_POSITION[2], Float:HUD_MESSAGE_DURATION, HUD_MESSAGE_EFFECTS, Float:HUD_MESSAGE_TIME[3] } enum _:PlayerData { Name[32], Info[35], Kills } new g_eSettings[Settings], g_ePlayerData[33][PlayerData], g_iObject, g_iVault public plugin_init() { register_plugin("BecomeVIP Plus", PLUGIN_VERSION, "OciXCrom") register_cvar("CRXBecomeVIP", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED) register_dictionary("BecomeVIP.txt") register_event("DeathMsg", "OnPlayerKilled", "a") register_concmd("becomevip_give_kills", "Cmd_GiveKills", ADMIN_LEVEL_C, "<nick|#userid> <kills>") register_concmd("becomevip_reset_kills", "Cmd_ResetKills", ADMIN_LEVEL_C, "<nick|#userid>") ReadFile() } public plugin_end() nvault_close(g_iVault) ReadFile() { new szConfigsName[256], szFilename[256] get_configsdir(szConfigsName, charsmax(szConfigsName)) formatex(szFilename, charsmax(szFilename), "%s/BecomeVIP.ini", szConfigsName) new iFilePointer = fopen(szFilename, "rt") if(iFilePointer) { new szData[96], szValue[64], szKey[32], szTemp[4][5], i while(!feof(iFilePointer)) { fgets(iFilePointer, szData, charsmax(szData)) trim(szData) switch(szData[0]) { case EOS, '#', ';': continue default: { strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=') trim(szKey); trim(szValue) if(equal(szKey, "PLUGIN_PREFIX")) CC_SetPrefix(szValue) else if(equal(szKey, "SAVE_TYPE")) g_eSettings[SAVE_TYPE] = str_to_num(szValue) else if(equal(szKey, "KILLS_NEEDED")) g_eSettings[KILLS_NEEDED] = str_to_num(szValue) else if(equal(szKey, "VIP_FLAGS")) { copy(g_eSettings[VIP_FLAGS_STR], charsmax(g_eSettings[VIP_FLAGS_STR]), szValue) g_eSettings[VIP_FLAGS_BIT] = read_flags(szValue) } else if(equal(szKey, "IGNORE_BOTS")) g_eSettings[IGNORE_BOTS] = str_to_num(szValue) if(equal(szKey, "CHECK_KILLS_COMMANDS")) { while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ',')) { trim(szKey); trim(szValue) if(szKey[0] == '/' || szKey[0] == '!') { formatex(szData, charsmax(szData), "say %s", szKey) register_clcmd(szData, "Cmd_CheckKills") formatex(szData, charsmax(szData), "say_team %s", szKey) register_clcmd(szData, "Cmd_CheckKills") } else register_clcmd(szData, "Cmd_CheckKills") } } else if(equal(szKey, "VAULT_FILE")) g_iVault = nvault_open(szValue) else if(equal(szKey, "VIP_SUCCESS_MESSAGE")) g_eSettings[VIP_SUCCESS_MESSAGE] = str_to_num(szValue) else if(equal(szKey, "HUD_MESSAGE_ENABLED")) { g_eSettings[HUD_MESSAGE_ENABLED] = bool:str_to_num(szValue) if(g_eSettings[HUD_MESSAGE_ENABLED]) { g_iObject = CreateHudSyncObj() RegisterHam(Ham_Spawn, "player", "OnPlayerSpawn", 1) } } else if(equal(szKey, "HUD_MESSAGE_COLOR")) { parse(szValue, szTemp[0], charsmax(szTemp[]), szTemp[1], charsmax(szTemp[]), szTemp[2], charsmax(szTemp[])) for(i = 0; i < 3; i++) g_eSettings[HUD_MESSAGE_COLOR][i] = str_to_num(szTemp[i]) } else if(equal(szKey, "HUD_MESSAGE_POSITION")) { parse(szValue, szTemp[0], charsmax(szTemp[]), szTemp[1], charsmax(szTemp[])) for(i = 0; i < 2; i++) g_eSettings[HUD_MESSAGE_POSITION][i] = _:str_to_float(szTemp[i]) } else if(equal(szKey, "HUD_MESSAGE_DURATION")) g_eSettings[HUD_MESSAGE_DURATION] = _:str_to_float(szValue) 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[])) g_eSettings[HUD_MESSAGE_EFFECTS] = str_to_num(szTemp[0]) for(i = 0; i < 3; i++) g_eSettings[HUD_MESSAGE_TIME][i] = _:str_to_float(szTemp[i + 1]) } } } } fclose(iFilePointer) } } public client_authorized(id) { if(ignore_bot(id)) return switch(g_eSettings[SAVE_TYPE]) { case 0: { get_user_name(id, g_ePlayerData[id][Info], charsmax(g_ePlayerData[][Info])) strtolower(g_ePlayerData[id][Info]) } 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])) } get_user_name(id, g_ePlayerData[id][Name], charsmax(g_ePlayerData[][Name])) use_vault(id, false, g_ePlayerData[id][Info]) } public client_disconnect(id) { if(ignore_bot(id)) return use_vault(id, true, g_ePlayerData[id][Info]) } public client_infochanged(id) { if(ignore_bot(id)) return static szNewName[32], szOldName[32] get_user_info(id, "name", szNewName, charsmax(szNewName)) get_user_name(id, szOldName, charsmax(szOldName)) if(!equal(szNewName, szOldName)) { if(!g_eSettings[SAVE_TYPE]) { use_vault(id, true, szOldName) use_vault(id, false, szNewName) copy(g_ePlayerData[id][Info], charsmax(g_ePlayerData[][Info]), szNewName) strtolower(g_ePlayerData[id][Info]) } set_task(FLAGS_DELAY, "refresh_status", id) copy(g_ePlayerData[id][Name], charsmax(g_ePlayerData[][Name]), szNewName) } } public OnPlayerSpawn(id) { if(!is_user_alive(id) || has_vip_flags(id) || ignore_bot(id)) 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 ( 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][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_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", szName, szAuthId, g_eSettings[KILLS_NEEDED], g_ePlayerData[id][Kills], szDateAndTime) } public OnPlayerKilled() { new iAttacker = read_data(1), iVictim = read_data(2) if(is_user_connected(iAttacker) && iAttacker != iVictim && !ignore_bot(iAttacker)) { g_ePlayerData[iAttacker][Kills]++ check_status(iAttacker, true) } } 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)) CC_SendMessage(id, "%L", id, "BECOMEVIP_INFO_YES", szName, szAuthId, g_eSettings[KILLS_NEEDED], g_eSettings[VIP_FLAGS_STR], szDateAndTime) else 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 } public Cmd_GiveKills(id, iLevel, iCid) { if(!cmd_access(id, iLevel, iCid, 3)) return PLUGIN_HANDLED new szPlayer[32] read_argv(1, szPlayer, charsmax(szPlayer)) new iPlayer = cmd_target(id, szPlayer, CMDTARGET_ALLOW_SELF) if(!iPlayer) return PLUGIN_HANDLED new szName[2][32], szAmount[8] get_user_name(id, szName[0], charsmax(szName[])) get_user_name(iPlayer, szName[1], charsmax(szName[])) read_argv(2, szAmount, charsmax(szAmount)) new iAmount = str_to_num(szAmount) g_ePlayerData[iPlayer][Kills] += iAmount check_status(iPlayer, true) CC_LogMessage(0, _, "%L", LANG_PLAYER, iAmount >= 0 ? "BECOMEVIP_GIVE_KILLS" : "BECOMEVIP_TAKE_KILLS", szName[0], iAmount, szName[1]) return PLUGIN_HANDLED } public Cmd_ResetKills(id, iLevel, iCid) { if(!cmd_access(id, iLevel, iCid, 2)) return PLUGIN_HANDLED new szPlayer[32] read_argv(1, szPlayer, charsmax(szPlayer)) new iPlayer = cmd_target(id, szPlayer, CMDTARGET_ALLOW_SELF|CMDTARGET_OBEY_IMMUNITY) if(!iPlayer) return PLUGIN_HANDLED new szName[2][32] get_user_name(id, szName[0], charsmax(szName[])) get_user_name(iPlayer, szName[1], charsmax(szName[])) g_ePlayerData[iPlayer][Kills] = 0 CC_LogMessage(0, _, "%L", LANG_PLAYER, "BECOMEVIP_RESET_KILLS", szName[0], szName[1]) return PLUGIN_HANDLED } public refresh_status(id) check_status(id, false) bool:check_status(const id, const bool:bAnnounce) { if(has_vip_flags(id) || ignore_bot(id)) return if(g_ePlayerData[id][Kills] >= g_eSettings[KILLS_NEEDED]) set_vip_flags(id, bAnnounce) } set_vip_flags(const id, const bool:bAnnounce) { 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) { switch(g_eSettings[VIP_SUCCESS_MESSAGE]) { 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", szName, szAuthId, g_eSettings[VIP_FLAGS_STR], g_eSettings[KILLS_NEEDED], szDateAndTime) } } } bool:ignore_bot(const id) return (g_eSettings[IGNORE_BOTS] && is_user_bot(id)) bool:has_vip_flags(const id) return ((get_user_flags(id) & g_eSettings[VIP_FLAGS_BIT]) == g_eSettings[VIP_FLAGS_BIT]) use_vault(const id, const bool:bSave, const szInfo[]) { if(!szInfo[0]) return if(bSave) { static szKills[10] num_to_str(g_ePlayerData[id][Kills], szKills, charsmax(szKills)) nvault_set(g_iVault, szInfo, szKills) } else { g_ePlayerData[id][Kills] = nvault_get(g_iVault, szInfo) set_task(FLAGS_DELAY, "refresh_status", id) } } public plugin_natives() { register_library("becomevip") register_native("becomevip_get_flags", "_becomevip_get_flags") register_native("becomevip_get_kills_needed", "_becomevip_get_kills_needed") register_native("becomevip_get_save_type", "_becomevip_get_save_type") register_native("becomevip_get_user_kills", "_becomevip_get_user_kills") register_native("becomevip_is_hud_enabled", "_becomevip_is_hud_enabled") register_native("becomevip_user_has_flags", "_becomevip_user_has_flags") } public _becomevip_get_flags(iPlugin, iParams) return g_eSettings[VIP_FLAGS_BIT] public _becomevip_get_kills_needed(iPlugin, iParams) return g_eSettings[KILLS_NEEDED] public _becomevip_get_save_type(iPlugin, iParams) return g_eSettings[SAVE_TYPE] public _becomevip_get_user_kills(iPlugin, iParams) return g_ePlayerData[get_param(1)][Kills] public bool:_becomevip_is_hud_enabled(iPlugin, iParams) return g_eSettings[HUD_MESSAGE_ENABLED] public bool:_becomevip_user_has_flags(iPlugin, iParams) return has_vip_flags(get_param(1))
Trouver la différence