PHP Code:
#pragma ctrlchar '\'
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#define PLUGIN "VIP System"
#define VERSION "v0.1"
#define AUTHOR "Croxeye"
new Array:g_Names;
new Array:g_Passwords;
new Array:g_Flags;
new Array:g_Days;
new g_Name[33][32];
new g_Password[33][32];
new g_sFlags[33][32];
new g_timeNow[8];
stock __DHud_Color;
stock __DHud_X;
stock __DHud_Y;
stock __DHud_Effect;
stock __DHud_FXTime;
stock __DHud_HoldTime;
stock __DHud_FadeInTime;
stock __DHud_FadeOutTime;
prepareDHudMessage(Red = 0, Green = 0, Blue = 0, Float:X = 0.0, Float:Y = 0.0, Effect = 2, \
Float:FXTime = 0.0, Float:HoldTime = 0.0, Float:FadeInTime = 0.0, Float:FadeOutTime = 0.0)
{
__DHud_Color = Blue + (Green << 8) + (Red << 16);
__DHud_X = _:X;
__DHud_Y = _:Y;
__DHud_Effect = Effect;
__DHud_FXTime = _:FXTime;
__DHud_HoldTime = _:HoldTime;
__DHud_FadeInTime = _:FadeInTime;
__DHud_FadeOutTime = _:FadeOutTime;
return 1;
}
sendDHudMessage(Target, Format[], any:... /** 3 */)
{
static Buffer[256] = { 0, ... }, Length = 0;
Length = vformat(Buffer, charsmax(Buffer), Format, 3 /** 3 */);
message_begin(Target && is_user_connected(Target) ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, \
SVC_DIRECTOR, _, Target);
write_byte(Length + 31);
write_byte(DRC_CMD_MESSAGE);
write_byte(__DHud_Effect);
write_long(__DHud_Color);
write_long(__DHud_X);
write_long(__DHud_Y);
write_long(__DHud_FadeInTime);
write_long(__DHud_FadeOutTime);
write_long(__DHud_HoldTime);
write_long(__DHud_FXTime);
write_string(Buffer);
message_end();
return Length;
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "onSpawn", 1);
register_event("ResetHUD", "onResetHUD", "b");
register_event("ResetHUD", "onResetHUD", "be");
register_event("DeathMsg", "onDeathMsg", "a");
get_time("%H", g_timeNow, charsmax(g_timeNow));
g_Names = ArrayCreate(32);
g_Passwords = ArrayCreate(32);
g_Flags = ArrayCreate(32);
g_Days = ArrayCreate(32);
}
public onSpawn(Player)
{
if (is_user_alive(Player))
{
if (containi(g_sFlags[Player], "a") != -1)
cs_set_user_money(Player, clamp(cs_get_user_money(Player) + 3000, 0, 16000));
if (containi(g_sFlags[Player], "b") != -1)
set_task(0.1, "onResetHUD", Player, _, _, "a", 5);
}
}
public onDeathMsg()
{
new Killer = read_data(1);
new Victim = read_data(2);
new Headshot = read_data(3);
if (Killer >= 1 && Killer != Victim && containi(g_sFlags[Killer], "c") != -1)
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), _, Killer);
write_short(512); // 4096 - 1 second, 2048 - 0.5 seconds, 1024 - 0.25 seconds, 512 - 0.125 seconds
write_short(512); // 4096 - 1 second, 2048 - 0.5 seconds, 1024 - 0.25 seconds, 512 - 0.125 seconds
write_short(0x0001); // FADE IN
write_byte(150); // red [ 0-255 ]
write_byte(10); // green [ 0-255 ]
write_byte(225); // blue [ 0-255 ]
write_byte(160); // alpha - opacity [ 0-255 ]
message_end();
set_user_health(Killer, clamp(get_user_health(Killer) + (Headshot ? 30 : 15), 0, 200));
cs_set_user_armor(Killer, clamp(get_user_armor(Killer) + (Headshot ? 30 : 15), 0, 200), CS_ARMOR_VESTHELM);
}
}
public onResetHUD(Id)
{
if (is_user_alive(Id))
{
message_begin(MSG_BROADCAST, get_user_msgid("ScoreAttrib"));
write_byte(Id);
write_byte(4);
message_end();
}
}
public plugin_cfg()
{
readVIPs();
rewriteVIPs();
}
public plugin_natives()
{
registerLibrary();
registerFunctions();
}
public client_connect(Client)
{
get_user_name(Client, g_Name[Client], charsmax(g_Name));
formatex(g_sFlags[Client], charsmax(g_sFlags[]), "");
formatex(g_Password[Client], charsmax(g_Password[]), "");
}
public client_disconnect(Client)
{
formatex(g_Name[Client], charsmax(g_Name[]), "");
formatex(g_sFlags[Client], charsmax(g_sFlags[]), "");
formatex(g_Password[Client], charsmax(g_Password[]), "");
}
public client_putinserver(Client)
{
new aName[32], aPassword[32], aFlags[32];
get_user_name(Client, g_Name[Client], charsmax(g_Name[]));
get_user_info(Client, "_vip", g_Password[Client], charsmax(g_Password[]));
for (new Iter = 0; Iter < ArraySize(g_Names); Iter++)
{
ArrayGetString(g_Names, Iter, aName, 31);
ArrayGetString(g_Passwords, Iter, aPassword, 31);
ArrayGetString(g_Flags, Iter, aFlags, 31);
if (equali(g_Name[Client], aName))
{
if (equali(aPassword, g_Password[Client]))
{
formatex(g_sFlags[Client], 31, "%s", aFlags);
set_task(5.0, "welcomeMsg", Client);
break;
}
else
{
server_cmd("kick #%d Incorrect VIP password!", get_user_userid(Client));
break;
}
}
}
}
public welcomeMsg(Id)
{
if (is_user_connected(Id))
{
prepareDHudMessage(150, 10, 225, 0.03, 0.6755, 2, 6.0, 3.0);
sendDHudMessage(Id, "You are now VIP!");
}
}
public __get_user_c_vip(Plugin, Params)
{
if (Params == 1)
{
new Player = get_param(1);
if (Player > 0 && Player <= get_maxplayers())
return strlen(g_sFlags[Player]) > 0 ? 1 : 0;
}
return 0;
}
/**
* Update VIPs, subtract 1 day if needed...
*/
rewriteVIPs()
{
new fileName[256];
get_configsdir(fileName, charsmax(fileName));
add(fileName, charsmax(fileName), "/c_vips.ini");
new File = fopen(fileName, "w+");
if (File)
{
new Iter, Cell;
fprintf(File, "; [a = +$3000 /round | b = VIP in Scores Table | c = +15 HP, AP /Kill & +30 HP, AP /Headshot]\r\n");
fprintf(File, "; Usage : \"name\" \"password\" \"flags\" \"days\"\r\n");
fprintf(File, "; Usage : \"name\" \"password\" \"flags\" \"Permanent\" ; never expires\r\n\r\n");
for (Iter = 0; Iter < ArraySize(g_Names); Iter++)
{
Cell = ArrayGetCell(g_Days, Iter);
if (equali(g_timeNow, "06") && ((Cell - 1) <= 0))
continue;
if (Cell > 2048)
fprintf(File, "\"%a\" \"%a\" \"%a\" \"Permanent\"\r\n", ArrayGetStringHandle(g_Names, Iter),
ArrayGetStringHandle(g_Passwords, Iter),
ArrayGetStringHandle(g_Flags, Iter));
else
fprintf(File, "\"%a\" \"%a\" \"%a\" \"%d\"\r\n", ArrayGetStringHandle(g_Names, Iter),
ArrayGetStringHandle(g_Passwords, Iter),
ArrayGetStringHandle(g_Flags, Iter),
equali(g_timeNow, "06") ? Cell - 1 : Cell);
}
fclose(File);
}
}
readVIPs()
{
new fileName[256];
get_configsdir(fileName, charsmax(fileName));
add(fileName, charsmax(fileName), "/c_vips.ini");
new File = fopen(fileName, "r");
if (File)
{
new String[512], \
Name[32], Password[32], Flags[32], remainingDays[64];
while (!feof(File))
{
fgets(File, String, charsmax(String));
trim(String);
if (String[0] == '"' && \
parse(String, Name, charsmax(Name), Password, charsmax(Password), \
Flags, charsmax(Flags), remainingDays, charsmax(remainingDays)) >= 4)
{
ArrayPushString(g_Names, Name);
ArrayPushString(g_Passwords, Password);
ArrayPushString(g_Flags, Flags);
if (remainingDays[0] == '\0' || remainingDays[0] == 'p' || remainingDays[0] == 'P')
ArrayPushCell(g_Days, 4096);
else
ArrayPushCell(g_Days, str_to_num(remainingDays));
}
}
fclose(File);
}
}
/**
* Register Plug-in Library
*/
registerLibrary()
{
register_library("c_vip");
}
/**
* Register Plug-in Functions
*/
registerFunctions()
{
register_native("get_user_c_vip", "__get_user_c_vip");
}
* DOWNLOAD *