/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <hamsandwich>
#include <zombieplague>
#define PLUGIN "ZM VIP"
#define VERSION "1.3"
#define AUTHOR "aaarnas"
#define VIPACCES ADMIN_LEVEL_E
#define MJACCES ADMIN_LEVEL_E
new const
VIP_STATUS[] = "^3Jelenlévő ^4*V.I.P* ^3tag:^4 ",
VIP_STATUS_N[] = "^4Nincs Jelenlévő *VIP*",
VIP_STATUS_CON[] = "^1Információ -- ^4%s",
VIP_CONNECTED[] = "^4*V.I.P* ^3tag, ^1%s ^3csatlakozott.";
static const CONTACT[] = ""
new g_jumps, g_armor, g_killammo, g_infectammo, g_infecthealth, g_nemhealth, g_show_vips
new maxplayers, g_msgSayText
new jumpnum[33] = 0
new bool:dojump[33] = false
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "FwdHamPlayerSpawnPost", 1 )
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
maxplayers = get_maxplayers()
g_msgSayText = get_user_msgid("SayText")
g_jumps = register_cvar("zp_vip_jumps", "1")
g_armor = register_cvar("zp_vip_armor", "65")
g_killammo = register_cvar("zp_vip_killammo", "2")
g_infectammo = register_cvar("zp_vip_infectammo", "2")
g_infecthealth = register_cvar("zp_vip_infecthealth", "300")
g_nemhealth = register_cvar("zp_vip_nemextra", "1")
g_show_vips = register_cvar("zp_vip_show", "1")
register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER)
register_clcmd("say /vips", "print_adminlist")
register_clcmd("say /vip", "ShowMotd")
register_clcmd("say /noriuvip", "ShowMotd")
}
public FwdHamPlayerSpawnPost(id) {
if(!(get_user_flags(id) & VIPACCES))
return PLUGIN_HANDLED;
if(pev(id, pev_armorvalue) < get_pcvar_num(g_armor))
set_pev(id, pev_armorvalue, float(get_pcvar_num(g_armor)))
return HAM_IGNORED;
}
public fw_PlayerKilled(victim, attacker) {
if(is_user_alive(attacker) && get_user_flags(attacker) & VIPACCES) {
if(zp_get_user_zombie(attacker) && !(zp_get_user_nemesis(attacker) && !get_pcvar_num(g_nemhealth))) fm_set_user_health(attacker, (pev(attacker, pev_health) + get_pcvar_num(g_infecthealth)))
zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + get_pcvar_num(g_killammo))
}
}
public zp_user_infected_post(id, infector, nemesis) {
if(get_user_flags(infector) & VIPACCES) {
fm_set_user_health(infector, (pev(infector, pev_health) + get_pcvar_num(g_infecthealth)))
zp_set_user_ammo_packs(infector, zp_get_user_ammo_packs(infector) + get_pcvar_num(g_infectammo))
}
}
public client_connect(id) {
if(get_pcvar_num(g_show_vips) == 1 && get_user_flags(id) & VIPACCES) {
new name[100]
get_user_name(id, name, 100)
client_printcolor(id, "/g%s",VIP_CONNECTED, name)
}
}
public print_adminlist(user)
{
new adminnames[33][32]
new message[256]
new contactinfo[256], contact[112]
new id, count, x, len
for(id = 1 ; id <= maxplayers ; id++)
if(is_user_connected(id))
if(get_user_flags(id) & VIPACCES)
get_user_name(id, adminnames[count++], 31)
len = format(message, 255, VIP_STATUS)
if(count > 0) {
for(x = 0 ; x < count ; x++) {
len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
if(len > 96 ) {
client_printcolor(user, "/g%s", message)
len = format(message, 255, "")
}
}
client_printcolor(user, "/g%s", message)
}
else {
len += format(message[len], 255-len, VIP_STATUS_N)
client_printcolor(user, "/g%s", message)
}
get_cvar_string("amx_contactinfo", contact, 63)
if(contact[0]) {
format(contactinfo, 111, VIP_STATUS_CON, contact)
client_printcolor(user, "/g%s", contactinfo)
}
}
public client_putinserver(id)
{
jumpnum[id] = 0
dojump[id] = false
}
public client_disconnect(id)
{
jumpnum[id] = 0
dojump[id] = false
}
public client_PreThink(id)
{
if(!is_user_alive(id) || !g_jumps || (!(get_user_flags(id) & MJACCES))) return PLUGIN_CONTINUE
new nbut = get_user_button(id)
new obut = get_user_oldbutton(id)
if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
{
if(jumpnum[id] < get_pcvar_num(g_jumps))
{
dojump[id] = true
jumpnum[id]++
return PLUGIN_CONTINUE
}
}
if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
{
jumpnum[id] = 0
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public client_PostThink(id)
{
if(!is_user_alive(id) || !get_pcvar_num(g_jumps) || (!(get_user_flags(id) & MJACCES))) return PLUGIN_CONTINUE
if(dojump[id] == true)
{
new Float:velocity[3]
entity_get_vector(id,EV_VEC_velocity,velocity)
velocity[2] = random_float(265.0,285.0)
entity_set_vector(id,EV_VEC_velocity,velocity)
dojump[id] = false
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public ShowMotd(id)
{
show_motd(id, "vip.txt")
}
stock fm_set_user_health(id, health)
{
(health > 0) ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id);
}
stock client_printcolor(const id, const input[], any:...)
{
new iCount = 1, iPlayers[32]
static szMsg[191]
vformat(szMsg, charsmax(szMsg), input, 3)
replace_all(szMsg, 190, "/g", "^4") // green txt
replace_all(szMsg, 190, "/y", "^1") // orange txt
replace_all(szMsg, 190, "/ctr", "^3") // team txt
replace_all(szMsg, 190, "/w", "^0") // team txt
if(id) iPlayers[0] = id
else get_players(iPlayers, iCount, "ch")
for (new i = 0; i < iCount; i++)
{
if (is_user_connected(iPlayers[i]))
{
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, iPlayers[i])
write_byte(iPlayers[i])
write_string(szMsg)
message_end()
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1063\\ f0\\ fs16 \n\\ par }
*/