Може ли към плъгина на Дидо ( от тази тема: https://forums.alliedmods.net/showthread.php?t=281385 ) , да се добави
един допълнителен квар:
amx_vip_kills_limit - т.е. - с него да се поставя "лимит" от убийства, след който лимит, играча да "губи" VIP-флага? Може би инфото броя направени убийства с VIP - ше е по-лесно да се отчита от cstats (или просто там да си го "записва" в nvault-a...)-това не го разбирам и знам, главното е - убийствата да се нулират при достигане на някаква горна граница или лимит... - ще бъда много благодарен ако някой се опита да добави тази "опция"
Плъгина:
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <nvault>
#include <hamsandwich>
// Save type (1 - by name / 2 - by IP / 3 - by SteamID)
#define SAVE_TYPE 3
// Chat Tag (prefix)
#define MSG_TAG "FREE VIP"
new p_kills, p_flags;
new g_iVault;
new g_iMsgSayText;
new g_iKills[33];
new g_szData[33][35];
new bool:g_bFlagged[33];
public plugin_init()
{
register_plugin("Pro Become V.I.P.", "re1.0.4", "didoWEE");
register_cvar( "pb_vip_version", "re1.0.4", FCVAR_SERVER | FCVAR_SPONLY);
p_kills = register_cvar("amx_vip_kills", "1500"); // The number of kills you need to become V.I.P.
p_flags = register_cvar("amx_vip_flags", "abc"); // The flags you get when you become V.I.P.
g_iVault = nvault_open("pb_vip");
g_iMsgSayText = get_user_msgid("SayText");
RegisterHam(Ham_Spawn, "player", "fwdPlayerSpawn", 1);
RegisterHam(Ham_Killed, "player", "fwdPlayerKilled", 1);
}
public fwdPlayerSpawn(id)
{
if(!is_user_alive(id))
return HAM_IGNORED;
if(!is_real_player(id))
return HAM_IGNORED;
if(g_bFlagged[id])
return HAM_IGNORED;
if(!g_iKills[id])
SayText(id, "^4[%s] ^1Players who play ^3regularly ^1are rewarded with ^4V.I.P. ^1privileges", MSG_TAG);
SayText(id, "^4[%s] ^1You need^3 %i ^1kills more to become ^4V.I.P.", MSG_TAG, (get_pcvar_num(p_kills)-g_iKills[id]));
return HAM_IGNORED;
}
public fwdPlayerKilled(victim, killer, shouldgib)
{
if(!is_user_connected(killer))
return HAM_IGNORED;
if(killer == victim)
return HAM_IGNORED;
if(!is_real_player(killer))
return HAM_IGNORED;
if(g_bFlagged[killer])
return HAM_IGNORED;
g_iKills[killer]++;
SaveData(killer);
if(g_iKills[killer] < get_pcvar_num(p_kills))
{
SayText(killer, "^4[%s] ^1You need ^3%i ^1kills more to become ^4V.I.P.", MSG_TAG, (get_pcvar_num(p_kills)-g_iKills[killer]));
return HAM_IGNORED;
}
g_bFlagged[killer] = true;
new flags[24];
get_pcvar_string(p_flags, flags, charsmax(flags));
set_user_flags(killer, read_flags(flags));
new name[32];
get_user_name(killer, name, charsmax(name));
SayText(0, "^4[%s] ^1Congratulation to^4 %s^1 for reaching^3 %i ^1kills and becoming ^4V.I.P.", MSG_TAG, name, get_pcvar_num(p_kills));
return HAM_IGNORED;
}
public client_authorized(id)
UpdateData(id);
public client_infochanged(id)
set_task(0.1, "UpdateData", id);
public client_disconnect(id)
remove_task(id);
public UpdateData(id)
{
if(!is_real_player(id))
return PLUGIN_HANDLED;
static flags[24];
get_pcvar_string(p_flags, flags, charsmax(flags));
if(get_user_flags(id) & read_flags(flags))
{
g_bFlagged[id] = true;
return PLUGIN_CONTINUE;
}
switch(SAVE_TYPE)
{
case 1: get_user_name(id, g_szData[id], charsmax(g_szData[]));
case 2: get_user_ip(id, g_szData[id], charsmax(g_szData[]), 1);
case 3: get_user_authid(id, g_szData[id], charsmax(g_szData[]));
}
LoadData(id);
if(g_iKills[id] < get_pcvar_num(p_kills))
{
g_bFlagged[id] = false;
return PLUGIN_HANDLED;
}
set_user_flags(id, read_flags(flags));
g_bFlagged[id] = true;
return PLUGIN_CONTINUE;
}
LoadData(id)
{
new data[16];
g_iKills[id] = nvault_get(g_iVault, g_szData[id], data, charsmax(data)) ? str_to_num(data):0;
}
SaveData(id)
{
new data[16];
num_to_str(g_iKills[id], data, charsmax(data));
nvault_set(g_iVault, g_szData[id], data);
}
bool:is_real_player(id)
return ((is_user_bot(id) || is_user_hltv(id)) ? false : true);
SayText(id, input[], any:...)
{
static i, receiver, iCount, iPlayers[32];
static msg[191];
vformat(msg, charsmax(msg), input, 3);
if(id)
{
//if(!is_user_connected(id))
// return 0;
iCount = 1;
iPlayers[0] = id;
}
else
get_players(iPlayers , iCount , "ch");
for(i=0; i<iCount; i++)
{
receiver = iPlayers[i];
message_begin(MSG_ONE_UNRELIABLE, g_iMsgSayText,. player=receiver);
write_byte(receiver);
write_string(msg);
message_end();
}
return 1;
}