Descriere (adica ce face el mai exact): am observat niste buguri in el , dupa ce un vip alege meniul acesta ii ramane activ as dorii ca dupa ce selecteaza o arma sau o aptitudine sa se inchida automat acel meniu , am vazut in el ca este pusa comanda /vips dar cand scri nu se intampla nimic iar inca o chestie din ce mi-a zis un player orice player care face nu stiu ce experience este acolo primeste vip automat as dorii sa se scoata aceasta chestie daca este .. vip-ul sa fie doar persoanelor la care dau fondatorii prin comanda amx_vip 1 nume ceva de genul era iar acesta sa fie nu stiu sa adauge automat in users.ini sau sa creez un fisier in configs unde sa se salveze ca si cum ar fi admin deoarece oricine intra cu numele respectiv are vip .. daca este posibil asta sau daca v-ar fi mai usor sa scoate-ti comanda amx_vip si sa puneti un anumit flag pentru a fi adaugat intr-un fisier vip.ini dar acel flag sa nu interfereze cu adminii ,adica nici macar fondatorii daca nu sunt trecuti in vip.ini sa nu aibe acces la vip ,sper ca nu am cerut prea mult sau greu si ca se poate face va multumesc !!
Serverul impune conditii strict HLDS/REHLDS?: rehlds
Ai cautat pluginul?(daca da, precizeaza cum): -
Necesita mod special?: respawn
ps. si un motd dinacela html daca se poate cand scrii /vreauvip sa apara motd cu beneficile vip
Code: Select all
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <nvault>
#include <fun>
#define PLUGIN "EFFx's VIP"
#define VERSION "2.0"
#define AUTHOR "EFFx"
#define FLAG_FONDA "a"
#define nvault_clear(%1) nvault_prune(%1, 0, get_systime() + 1) // Thx OciXCrom
#define LOGFILE "vip_log.log"
new const szCfgFile[] = "VIP_Config.cfg"
enum(+= 1000)
{
TASK_HPREGEN,
TASK_SHOWEXPERIENCE,
TASK_SHOWVMONEY,
TASK_GODMOD
}
static timer[33]
new const ModelsT[][] =
{
"terror", "guerilla", "arctic","leet"
}
new const ModelsCT[][] =
{
"sas", "gign", "gsg9","urban"
}
enum _:Weapons
{
WeapName[200],
WeaponID[32],
BpAmmo
}
new const VipWeapons[][Weapons] =
{
{ "AK47 \d+ \wDeagle \d+ \wAll Grenades", "weapon_ak47",250 },
{ "M4A1 \d+ \wDeagle \d+ \wAll Grenades","weapon_m4a1",250 },
{ "AWP \d+ \wDeagle \d+ \wAll Grenades", "weapon_awp",250 }
}
new bool:WeaponSelected[33]
native get_user_vip(user_id)
native set_user_vip(user_id,vip_mode)
new CVAR_color_Kill[3]
new g_iJumpCount[ 33 ]
new PcvarHPGive,PcvarAPGive,PcvarVIPMoneyKillBonus,
PcvarMaxRegenHP,PcvarHpRegenAdd,PcvarShowVMoney,
PcvarMaxExperience,PcvarPrefixChat
new VIP[33],VIPMoney[33],Experience[33]
new VIPMj[33],VIPBh[33],VIPRegen[33],VIPNoDmg[33],VIPImm[33]
new bool:g_bActived_Mj[33],bool:g_bActived_Bhop[33],bool:g_bActived_Imm[33],
bool:g_bActived_Regen[33],bool:g_bActived_NoDmg[33]
new HudsSync[6]
new maxplayers
new g_nVault
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
PcvarPrefixChat = register_cvar("vip_prefixchat","[PGL-VIP]")
PcvarShowVMoney = register_cvar("vip_showmoney","1")
PcvarHPGive = register_cvar("vip_killhpbonus","25")
PcvarAPGive = register_cvar("vip_killapbonus","25")
PcvarVIPMoneyKillBonus = register_cvar("vip_vipmoneybonus","15")
PcvarMaxRegenHP = register_cvar("vip_hpregenmax","250")
PcvarHpRegenAdd = register_cvar("vip_hpregenadd","2")
PcvarMaxExperience= register_cvar("vip_maxexperience","12500")
maxplayers = get_maxplayers()
for(new i;i < sizeof HudsSync;i++)
HudsSync[i] = CreateHudSyncObj()
register_forward( FM_CmdStart, "CmdStart" )
register_clcmd("say /vips","ShowVIPs")
register_clcmd("say /vipmenu","ShowVIPMenu")
register_concmd("amx_resetdata","cmdReset",read_flags(FLAG_FONDA),"- Reset all vip data")
register_concmd("amx_vip", "cmdVIP", read_flags(FLAG_FONDA), "<name or @ALL> [1|0]")
register_concmd("amx_give_money", "cmdGM", read_flags(FLAG_FONDA), "<name or @ALL> <money to add>")
RegisterHam(Ham_TakeDamage, "player", "ham_Player_TakeDamage_Post", 0)
RegisterHam(Ham_Player_PostThink, "player", "ham_Player_PostThink_Post", 1 )
RegisterHam(Ham_Killed,"player","fw_Ham_Player_Killed",1)
RegisterHam(Ham_Spawn,"player","fwSpawn",1)
LoadCfg()
}
LoadCfg()
{
new text[128], fp
formatex(text,charsmax(text),"addons/amxmodx/configs/VIPCfgs/%s",szCfgFile)
fp = fopen(text,"rt")
if(!fp)
{
formatex(text,charsmax(text),"Archive ^"addons/amxmodx/configs/VIPCfgs/%s^" not found",szCfgFile)
log_to_file(LOGFILE,text)
set_fail_state(text)
}
new szDir[32];
get_localinfo("amxx_configsdir",szDir,charsmax(szDir));
server_cmd("exec %s/VIPCfgs/%s",szDir,szCfgFile)
}
public plugin_natives()
{
register_native("get_user_vip","_get_user_vip")
register_native("set_user_vip","_set_user_vip")
}
public _get_user_vip(user_id)
{
new id = get_param(1)
if(!is_user_connected(id) || !id)
return 0
return VIP[id]
}
public _set_user_vip(user_id,vip_mode)
{
new id = get_param(1)
new MODE = get_param(2)
if(!is_user_connected(id) || !id)
return 0
VIP[id] = MODE
return 1
}
public cmdReset(id,level,cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
new name[32]
get_user_name(id, name, 31)
new Buffer[85]
get_pcvar_string(PcvarPrefixChat,Buffer,charsmax(Buffer))
color_chat(0,"!g%s!y: ADMIN!t %s!y has reseted all vip data from this server!,",equal(Buffer,"0" ) ? "" : Buffer,name)
new players[32],inum
get_players(players,inum)
for(new i = 0 ;i < inum; i++)
{
if(get_user_vip(players[i]) == 1)
{
VIPMoney[players[i]] = 0
VIPBh[players[i]] = 0
VIPMj[players[i]] = 0
VIPImm[players[i]] = 0
VIPNoDmg[players[i]] = 0
VIPRegen[players[i]] = 0
g_bActived_Bhop[players[i]] = false
g_bActived_Imm[players[i]] = false
g_bActived_Mj[players[i]] = false
g_bActived_Regen[players[i]] = false
g_bActived_NoDmg[players[i]] = false
}
}
return PLUGIN_HANDLED
}
public cmdGM(id,level,cid){
if(!cmd_access(id,level,cid,2)) return PLUGIN_HANDLED
new arg[33],arg2[10]
read_argv(1,arg,charsmax(arg))
read_argv(2,arg2,charsmax(arg2))
if(equal(arg,"")||equal(arg2,"")||!is_str_num(arg2)){
console_print(id,"Usage: amx_give_money <target OR @ALL> <money>")
return PLUGIN_HANDLED
}
new money=str_to_num(arg2)
if(!money||money<=0){
console_print(id,"Invalid MONEY SUM")
return PLUGIN_HANDLED
}
new aname[33]; get_user_name(id,aname,charsmax(aname))
if(equali(arg,"@ALL")){
new players[32],num,targets
get_players(players,num,"ch")
for(new i;i<num;i++){
targets=players[i]
VIPMoney[targets]+=money
}
client_print(0,print_chat,"Adminul %s a daruit +%dVIPMoney tuturor",aname,money)
}
else{
new target=cmd_target(id,arg,CMDTARGET_NO_BOTS)
if(!target) return PLUGIN_HANDLED
new tname[33]; get_user_name(target,tname,charsmax(tname))
VIPMoney[target]+=money
client_print(0,print_chat,"Adminul %s i-a daruit +%dVIPMoney lui %s",aname,money,tname)
}
return PLUGIN_HANDLED
}
public cmdVIP(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new arg[32]
read_argv(1, arg, 31)
new arg2[7]
read_argv(2, arg2, 6)
new Buffer[85]
get_pcvar_string(PcvarPrefixChat,Buffer,charsmax(Buffer))
new name2[32], name[32]
get_user_name(id, name, 31)
if(equal(arg,"@ALL"))
{
if(arg2[0] == '0')
{
new players[32],inum
get_players(players,inum)
for(new i = 0;i<inum;i++)
{
if(get_user_vip(players[i]) == 1)
{
if(task_exists(players[i]+TASK_HPREGEN))
remove_task(players[i]+TASK_HPREGEN)
if(task_exists(players[i]+TASK_SHOWVMONEY))
remove_task(players[i]+TASK_SHOWVMONEY)
if(task_exists(players[i]+TASK_GODMOD))
remove_task(players[i]+TASK_GODMOD)
if(is_user_alive(players[i]))
set_task(1.0,"ShowExperience",players[i]+TASK_SHOWEXPERIENCE,_,_,"b")
if(get_user_team(players[i]) == 1)
cs_set_user_model(players[i],ModelsT[random_num(0,3)])
if(get_user_team(players[i]) == 2)
cs_set_user_model(players[i],ModelsCT[random_num(0,3)])
VIPBh[players[i]] = 0
VIPMj[players[i]] = 0
VIPImm[players[i]] = 0
VIPNoDmg[players[i]] = 0
VIPRegen[players[i]] = 0
g_bActived_Bhop[players[i]] = false
g_bActived_Imm[players[i]] = false
g_bActived_Mj[players[i]] = false
g_bActived_Regen[players[i]] = false
g_bActived_NoDmg[players[i]] = false
set_user_vip(players[i],0)
VIPMoney[players[i]] = 0
}
}
color_chat(0,"!g%s!y: ADMIN!t %s!y has !gremoved!y VIP from!t All Players",equal(Buffer,"0" ) ? "" : Buffer,name)
}
else if(arg2[0] == '1')
{
new players[32],inum
get_players(players,inum)
for(new i = 0;i<inum;i++)
{
if(get_user_vip(players[i]) == 0)
{
if(get_pcvar_num(PcvarShowVMoney) == 1)
if(is_user_alive(players[i]))
set_task(1.0,"ShowVIPMoney",players[i]+TASK_SHOWVMONEY,_,_,"b")
if(task_exists(players[i]+TASK_SHOWEXPERIENCE))
remove_task(players[i]+TASK_SHOWEXPERIENCE)
set_user_vip(players[i],1)
Experience[players[i]] = 0
}
}
color_chat(0,"!g%s!y: ADMIN!t %s!y has!g given!y VIP for!t All Players",equal(Buffer,"0" ) ? "" : Buffer,name)
}
else
{
console_print(id,"[AMXX]: Use '1' or '0' to active/deactive the VIP from player!")
return PLUGIN_HANDLED
}
}
else
{
new player = cmd_target(id, arg, CMDTARGET_NO_BOTS)
if (!player)
return PLUGIN_HANDLED
get_user_name(player, name2, 31)
if(arg2[0] == '0')
{
if(get_user_vip(player) == 1)
{
color_chat(0,"!g%s!y: ADMIN!t %s!y has !gremoved!y VIP from!t %s",equal(Buffer,"0" ) ? "" : Buffer,name,name2)
if(task_exists(player+TASK_HPREGEN))
remove_task(player+TASK_HPREGEN)
if(task_exists(player+TASK_SHOWVMONEY))
remove_task(player+TASK_SHOWVMONEY)
if(task_exists(player+TASK_GODMOD))
remove_task(player+TASK_GODMOD)
if(is_user_alive(player))
set_task(1.0,"ShowExperience",player+TASK_SHOWEXPERIENCE,_,_,"b")
if(get_user_team(player) == 1)
cs_set_user_model(player,"guerilla")
if(get_user_team(player) == 2)
cs_set_user_model(player,"gign")
VIPBh[player] = 0
VIPMj[player] = 0
VIPImm[player] = 0
VIPNoDmg[player] = 0
VIPRegen[player] = 0
g_bActived_Bhop[player] = false
g_bActived_Imm[player] = false
g_bActived_Mj[player] = false
g_bActived_Regen[player] = false
g_bActived_NoDmg[player] = false
set_user_vip(player,0)
VIPMoney[player] = 0
}
else
console_print(id,"[AMXX]: This player already have not VIP!")
}
else if(arg2[0] == '1')
{
if(get_user_vip(player) == 0)
{
color_chat(0,"!g%s!y: ADMIN!t %s!y has!g given!y VIP for!t %s",equal(Buffer,"0" ) ? "" : Buffer,name,name2)
if(get_pcvar_num(PcvarShowVMoney) == 1)
if(is_user_alive(player))
set_task(1.0,"ShowVIPMoney",player+TASK_SHOWVMONEY,_,_,"b")
if(task_exists(player+TASK_SHOWEXPERIENCE))
remove_task(player+TASK_SHOWEXPERIENCE)
set_user_vip(player,1)
Experience[player] = 0
}
else
console_print(id,"[AMXX]: This player already have VIP!")
}
else
{
console_print(id,"[AMXX]: Use '1' or '0' to active/deactive the VIP from player!")
return PLUGIN_HANDLED
}
}
return PLUGIN_HANDLED
}
public client_putinserver(id)
{
if(is_user_bot(id))
return
set_task( 0.2 , "HUD" , id + 672 );
LoadVIP(id)
if(get_user_vip(id) == 1)
{
if(get_pcvar_num(PcvarShowVMoney) == 1)
set_task(1.0,"ShowVIPMoney",id+TASK_SHOWVMONEY,_,_,"b")
set_task(3.0,"HelloVIP",id+200210)
}
}
public HelloVIP(id)
{
id -= 200210
new szName[32]
get_user_name(id,szName,31)
set_hudmessage(0,100,255,0.15,0.35,2,1.0,5.0)
ShowSyncHudMsg(id,HudsSync[4],"Hello %s, how are you today?^nType /vipmenu for show your menu!",szName)
client_cmd(id,"spk ^"scientist/hellothere letsgo^"")
}
public client_disconnect(id)
{
SaveVIP(id)
}
public ShowVIPs(user)
{
new adminnames[33][32]
new message[256]
new id, count, x, len
for(id = 1 ; id <= maxplayers ; id++)
if(is_user_connected(id))
if(get_user_vip(id) == 1)
get_user_name(id, adminnames[count++], 31)
len = format(message, 255, "^x04---------------------------")
len = format(message, 255, "^x04 VIP's ONLINE:^x01 ")
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 )
{
color_chat(user, message)
}
}
}
else
{
len += format(message[len], 255-len, "NO VIP's")
color_chat(user, message)
}
len = format(message, 255, "^x04---------------------------")
}
public ShowVIPMoney(id)
{
id -= TASK_SHOWVMONEY
if(is_user_alive(id))
{
set_hudmessage(0,200,0,0.83,0.80,0,1.0,1.0)
ShowSyncHudMsg(id,HudsSync[0],"VIPMoney: %d",VIPMoney[id])
}
else
remove_task(id+TASK_SHOWVMONEY)
}
public ShowExperience(id)
{
id -= TASK_SHOWEXPERIENCE
if(is_user_alive(id))
{
set_hudmessage(0,200,0,0.83,0.80,0,1.0,1.0)
ShowSyncHudMsg(id,HudsSync[2],"Experience: %d / %d",Experience[id],get_pcvar_num(PcvarMaxExperience))
}
else
remove_task(id+TASK_SHOWVMONEY)
}
public ShowVIPMenu(id)
{
new Buffer[85]
get_pcvar_string(PcvarPrefixChat,Buffer,charsmax(Buffer))
if(get_user_vip(id) == 1)
{
new szMenu = menu_create("VIP Menu^n\d- Choose what you want do!","vip_menu_handler")
menu_additem(szMenu,"Weapons^n\d- Your first weapons!")
menu_additem(szMenu,"\Special Items^n\d- Amazing items for you!")
menu_display(id,szMenu)
}
else
{
color_chat(id,"!g%s!y: You cant access this menu!",equal(Buffer,"0" ) ? "" : Buffer)
}
return PLUGIN_HANDLED
}
public vip_menu_handler(id,menu,item)
{
if(item == MENU_EXIT || !is_user_alive(id) || get_user_vip(id) == 0)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new Buffer[85]
get_pcvar_string(PcvarPrefixChat,Buffer,charsmax(Buffer))
switch(item)
{
case 0:
{
if(!WeaponSelected[id])
{
VipWeaponsMenu(id)
}
else
{
color_chat(id,"!g%s!y: You already have selected your equipament!",equal(Buffer,"0" ) ? "" : Buffer)
ShowVIPMenu(id)
}
}
case 1:
{
VipItemsMenu(id)
}
}
return PLUGIN_HANDLED
}
public VipWeaponsMenu(id)
{
new szMenuW = menu_create("Choose your weapon:","vip_weapons_handler")
for ( new i; i < sizeof VipWeapons; i++ )
menu_additem( szMenuW, VipWeapons[ i ][ WeapName ] )
menu_display(id,szMenuW)
}
public vip_weapons_handler(id,menu,item)
{
if(item == MENU_EXIT || !is_user_alive(id) || get_user_vip(id) == 0)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
strip_user_weapons(id)
give_item(id,"weapon_knife")
give_item(id,"weapon_hegrenade")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_smokegrenade")
cs_set_user_bpammo(id, CSW_FLASHBANG, 2)
WeaponSelected[id] = true
give_item( id, VipWeapons[ item ][ WeaponID ] )
cs_set_user_bpammo( id, get_weaponid( VipWeapons[ item ][ WeaponID ] ), VipWeapons[ item ][ BpAmmo ] )
give_item(id,"weapon_deagle")
cs_set_user_bpammo(id,CSW_DEAGLE,250)
ShowVIPMenu(id)
return PLUGIN_HANDLED
}
public VipItemsMenu(id)
{
new szTittle = menu_create("VIP Items Menu^n\d- Your items will be permenently.","vip_items_handler")
if(VIPMj[id] == 0)
menu_additem(szTittle,"Multi-Jump \r500VM^n\d- Add for you 2 more jumps!")
else
menu_additem(szTittle,!g_bActived_Mj[id] ? "Multi-Jump \r[OFF]^n\d- Add for you 2 more jumps!"
: "Multi-Jump \y[ON]^n\d- Add for you 2 more jumps!")
if(VIPRegen[id] == 0)
menu_additem(szTittle,"HP Regenerate \r800VM^n\d- Add 2HP per second.")
else
menu_additem(szTittle,!g_bActived_Regen[id] ? "HP Regenerate \r[OFF]^n\d- Add 2HP per second." :
"HP Regenerate \y[ON]^n\d- Add 2HP per second.")
if(VIPImm[id] == 0)
menu_additem(szTittle,"Immobilize \r1100VM^n\d- Chance for immobilize with a shot!")
else
menu_additem(szTittle,!g_bActived_Imm[id] ? "Immobilize \r[OFF]^n\d- Chance for immobilize with a shot!" :
"Immobilize \y[ON]^n\d- Chance for immobilize with a shot!")
if(VIPBh[id] == 0)
menu_additem(szTittle,"BunnyHop \r1500VM^n\d- Add for you automatic bhop!")
else
menu_additem(szTittle,!g_bActived_Bhop[id] ? "BunnyHop \r[OFF]^n\d- Add for you automatic bhop!" :
"BunnyHop \y[ON]^n\d- Add for you automatic bhop!")
if(VIPNoDmg[id] == 0)
menu_additem(szTittle,"No Damage \r2000VM^n\d- You dont lose hp per 15 seconds!")
else
menu_additem(szTittle,!g_bActived_NoDmg[id] ? "No Damage \r[OFF]^n\d- You dont lose hp per 15 seconds!" :
"No Damage \y[ON]^n\d- You dont lose hp per 15 seconds!")
menu_additem(szTittle,"Back")
menu_display(id,szTittle)
}
public vip_items_handler(id,menu,item)
{
if(item == MENU_EXIT || !is_user_alive(id) || get_user_vip(id) == 0)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new Buffer[85]
get_pcvar_string(PcvarPrefixChat,Buffer,charsmax(Buffer))
switch(item)
{
case 0:
{
if(VIPMj[id] == 0)
{
if(VIPMoney[id] >= 500)
{
VIPMj[id] = 1
VIPMoney[id] -= 500
color_chat(id,"!g%s!y: You've buyed !gMulti Jump!",equal(Buffer,"0" ) ? "" : Buffer)
client_cmd(id,"spk items/gunpickup2.wav")
VipItemsMenu(id)
}
else
{
color_chat(id,"!g%s!y: You haven't sufficient VIPMoney. Need more!g %d!y for buy.",equal(Buffer,"0" ) ? "" : Buffer,500 - VIPMoney[id])
VipItemsMenu(id)
}
}
else
{
if(!g_bActived_NoDmg[id])
{
if(!g_bActived_Mj[id])
{
g_bActived_Mj[id] = true
if(task_exists(id+TASK_GODMOD))
remove_task(id+TASK_GODMOD)
if(task_exists(id+TASK_HPREGEN))
remove_task(id+TASK_HPREGEN)
g_bActived_Bhop[id] = false
g_bActived_Imm[id] = false
g_bActived_Regen[id] = false
VipItemsMenu(id)
}
else
{
g_bActived_Mj[id] = false
VipItemsMenu(id)
}
}
else
{
color_chat(id,"!g%s!y: You cant use this item now. Wait your No Damage finish!",equal(Buffer,"0" ) ? "" : Buffer)
VipItemsMenu(id)
}
}
}
case 1:
{
if(VIPRegen[id] == 0)
{
if(VIPMoney[id] >= 800)
{
VIPRegen[id] = 1
VIPMoney[id] -= 800
client_cmd(id,"spk items/gunpickup2.wav")
color_chat(id,"!g%s!y: You've buyed !gHP Regenerate!",equal(Buffer,"0" ) ? "" : Buffer)
VipItemsMenu(id)
}
else
{
color_chat(id,"!g%s!y: You haven't sufficient VIPMoney. Need more!g %d!y for buy.",equal(Buffer,"0" ) ? "" : Buffer,800 - VIPMoney[id])
VipItemsMenu(id)
}
}
else
{
if(!g_bActived_NoDmg[id])
{
if(!g_bActived_Regen[id])
{
g_bActived_Regen[id] = true
g_bActived_Bhop[id] = false
g_bActived_Imm[id] = false
g_bActived_Mj[id] = false
if(task_exists(id+TASK_GODMOD))
remove_task(id+TASK_GODMOD)
set_task(1.0,"HPRegen",id+TASK_HPREGEN,_,_,"b")
VipItemsMenu(id)
}
else
{
g_bActived_Regen[id] = false
VipItemsMenu(id)
}
}
else
{
color_chat(id,"!g%s!y: You cant use this item now. Wait your No Damage finish!",equal(Buffer,"0" ) ? "" : Buffer)
VipItemsMenu(id)
}
}
}
case 2:
{
if(VIPImm[id] == 0)
{
if(VIPMoney[id] >= 1100)
{
VIPImm[id] = 1
VIPMoney[id] -= 1100
client_cmd(id,"spk items/gunpickup2.wav")
color_chat(id,"!g%s!y: You've buyed !gImmobilize!",equal(Buffer,"0" ) ? "" : Buffer)
VipItemsMenu(id)
}
else
{
color_chat(id,"!g%s!y: You haven't sufficient VIPMoney. Need more!g %d!y for buy.",equal(Buffer,"0" ) ? "" : Buffer,1100 - VIPMoney[id])
VipItemsMenu(id)
}
}
else
{
if(!g_bActived_NoDmg[id])
{
if(!g_bActived_Imm[id])
{
g_bActived_Imm[id] = true
if(task_exists(id+TASK_GODMOD))
remove_task(id+TASK_GODMOD)
if(task_exists(id+TASK_HPREGEN))
remove_task(id+TASK_HPREGEN)
g_bActived_Bhop[id] = false
g_bActived_Mj[id] = false
g_bActived_Regen[id] = false
VipItemsMenu(id)
}
else
{
g_bActived_Imm[id] = false
VipItemsMenu(id)
}
}
else
{
color_chat(id,"!g%s!y: You cant use this item now. Wait your No Damage finish!",equal(Buffer,"0" ) ? "" : Buffer)
VipItemsMenu(id)
}
}
}
case 3:
{
if(VIPBh[id] == 0)
{
if(VIPMoney[id] >= 1500)
{
VIPBh[id] = 1
VIPMoney[id] -= 1500
color_chat(id,"!g%s!y: You've buyed !gBunnyHop!",equal(Buffer,"0" ) ? "" : Buffer)
client_cmd(id,"spk items/gunpickup2.wav")
VipItemsMenu(id)
}
else
{
color_chat(id,"!g%s!y: You haven't sufficient VIPMoney. Need more!g %d!y for buy.",equal(Buffer,"0" ) ? "" : Buffer,1500 - VIPMoney[id])
VipItemsMenu(id)
}
}
else
{
if(!g_bActived_NoDmg[id])
{
if(!g_bActived_Bhop[id])
{
g_bActived_Bhop[id] = true
if(task_exists(id+TASK_GODMOD))
remove_task(id+TASK_GODMOD)
if(task_exists(id+TASK_HPREGEN))
remove_task(id+TASK_HPREGEN)
g_bActived_Imm[id] = false
g_bActived_Mj[id] = false
g_bActived_Regen[id] = false
VipItemsMenu(id)
}
else
{
g_bActived_Bhop[id] = false
VipItemsMenu(id)
}
}
else
{
color_chat(id,"!g%s!y: You cant use this item now. Wait your No Damage finish!",equal(Buffer,"0" ) ? "" : Buffer)
VipItemsMenu(id)
}
}
}
case 4:
{
if(VIPNoDmg[id] == 0)
{
if(VIPMoney[id] >= 2000)
{
VIPNoDmg[id] = 1
VIPMoney[id] -= 2000
color_chat(id,"!g%s!y: You've buyed !gNo Damage!",equal(Buffer,"0" ) ? "" : Buffer)
client_cmd(id,"spk items/gunpickup2.wav")
set_pev(id,pev_takedamage,DAMAGE_NO)
set_task(1.0,"GodMod_CountDown",id+TASK_GODMOD,_,_,"a",15)
VipItemsMenu(id)
}
else
{
color_chat(id,"!g%s!y: You haven't sufficient VIPMoney. Need more!g %d!y for buy.",equal(Buffer,"0" ) ? "" : Buffer,2000 - VIPMoney[id])
VipItemsMenu(id)
}
}
else
{
if(!g_bActived_NoDmg[id])
{
g_bActived_NoDmg[id] = true
if(task_exists(id+TASK_GODMOD))
remove_task(id+TASK_GODMOD)
if(task_exists(id+TASK_HPREGEN))
remove_task(id+TASK_HPREGEN)
g_bActived_Bhop[id] = false
g_bActived_Imm[id] = false
g_bActived_Mj[id] = false
g_bActived_Regen[id] = false
set_pev(id,pev_takedamage,DAMAGE_NO)
set_task(1.0,"GodMod_CountDown",id+TASK_GODMOD,_,_,"a",15)
VipItemsMenu(id)
}
else
{
color_chat(id,"!g%s!y: You cant use this item right now! Wait the round restart!",equal(Buffer,"0" ) ? "" : Buffer)
VipItemsMenu(id)
}
}
}
case 5: ShowVIPMenu(id)
}
return PLUGIN_HANDLED
}
public fwSpawn(id)
{
if(!is_user_alive(id))
return HAM_IGNORED
if(get_user_vip(id) == 1)
{
WeaponSelected[id] = false
g_bActived_NoDmg[id] = false
ShowVIPMenu(id)
set_pev(id,pev_takedamage,DAMAGE_AIM)
timer[id] = 15
if(get_pcvar_num(PcvarShowVMoney) == 1)
if(!task_exists(id+TASK_SHOWVMONEY))
set_task(1.0,"ShowVIPMoney",id+TASK_SHOWVMONEY,_,_,"b")
if(g_bActived_Regen[id])
set_task(1.0,"HPRegen",id+TASK_HPREGEN,_,_,"b")
if(task_exists(id+TASK_GODMOD))
remove_task(id+TASK_GODMOD)
cs_set_user_armor(id,100,CsArmorType:2)
if(get_user_team(id) == 2)
give_item(id, "item_thighpack")
}
else
{
if(!task_exists(id+TASK_SHOWEXPERIENCE))
set_task(1.0,"ShowExperience",id+TASK_SHOWEXPERIENCE,_,_,"b")
}
return HAM_IGNORED
}
public fw_Ham_Player_Killed(iVictim,iAttacker)
{
if(!iVictim || !iAttacker && !is_user_alive(iVictim) || !is_user_alive(iAttacker))
return HAM_IGNORED
if(task_exists(iVictim+TASK_HPREGEN))
remove_task(iVictim+TASK_HPREGEN)
if(task_exists(iVictim+TASK_SHOWVMONEY))
remove_task(iVictim+TASK_SHOWVMONEY)
if(task_exists(iVictim+TASK_SHOWEXPERIENCE))
remove_task(iVictim+TASK_SHOWEXPERIENCE)
if(task_exists(iVictim+TASK_GODMOD))
remove_task(iVictim+TASK_GODMOD)
if(get_user_vip(iAttacker) == 1)
{
set_user_health(iAttacker,get_user_health(iAttacker) + get_pcvar_num(PcvarHPGive))
set_user_armor(iAttacker,get_user_armor(iAttacker) + get_pcvar_num(PcvarAPGive))
VIPMoney[iAttacker] += get_pcvar_num(PcvarVIPMoneyKillBonus)
static color[12],parts[3][4];
switch( CsTeams:cs_get_user_team( iAttacker ) )
{
case CS_TEAM_CT:
{
CVAR_color_Kill[0] = 000;
CVAR_color_Kill[1] = 100;
CVAR_color_Kill[2] = 200;
message_begin(MSG_ONE,get_user_msgid("ScreenFade"),_,iAttacker);
write_short(400 * 14);
write_short(0);
write_short(0);
write_byte(CVAR_color_Kill[0]);
write_byte(CVAR_color_Kill[1]);
write_byte(CVAR_color_Kill[2]);
write_byte(75) ;
message_end();
parse(color,parts[0],3,parts[1],3,parts[2],3);
CVAR_color_Kill[0] = str_to_num(parts[0]);
CVAR_color_Kill[1] = str_to_num(parts[1]);
CVAR_color_Kill[2] = str_to_num(parts[2]);
}
case CS_TEAM_T:
{
CVAR_color_Kill[0] = 200;
CVAR_color_Kill[1] = 000;
CVAR_color_Kill[2] = 000;
message_begin(MSG_ONE,get_user_msgid("ScreenFade"),_,iAttacker);
write_short(400 * 14);
write_short(0);
write_short(0);
write_byte(CVAR_color_Kill[0]);
write_byte(CVAR_color_Kill[1]);
write_byte(CVAR_color_Kill[2]);
write_byte(75) ;
message_end();
parse(color,parts[0],3,parts[1],3,parts[2],3);
CVAR_color_Kill[0] = str_to_num(parts[0]);
CVAR_color_Kill[1] = str_to_num(parts[1]);
CVAR_color_Kill[2] = str_to_num(parts[2]);
}
}
}
else
{
Experience[iAttacker] += random_num(25,80)
if(Experience[iAttacker] >= get_pcvar_num(PcvarMaxExperience))
{
set_user_vip(iAttacker,1)
if(get_pcvar_num(PcvarShowVMoney) == 1)
set_task(1.0,"ShowVIPMoney",iAttacker+TASK_SHOWVMONEY,_,_,"b")
set_hudmessage(0,255,0,-1.0,0.25,1,1.0,5.0)
ShowSyncHudMsg(iAttacker,HudsSync[3],"CONGRATULATIONS!^nYou got VIP!")
remove_task(iAttacker+TASK_SHOWEXPERIENCE)
new Buffer[85]
get_pcvar_string(PcvarPrefixChat,Buffer,charsmax(Buffer))
new Name[32]
get_user_name(iAttacker,Name,31)
color_chat(0,"!g%s!y: Player!t %s!y got vip with!g %d!y of !g%d!y experience!",equal(Buffer,"0" ) ? "" : Buffer,Name,Experience[iAttacker],get_pcvar_num(PcvarMaxExperience))
client_cmd(0,"spk buttons/bell1")
}
}
return HAM_IGNORED
}
public GodMod_CountDown(id)
{
id -= TASK_GODMOD
if(task_exists(id+TASK_GODMOD))
{
set_hudmessage(255,255,255,-1.0,0.70,0,1.0,1.0)
ShowSyncHudMsg(id,HudsSync[1],"No Dmg will be off in %d second%s",timer[id],( timer[id] >= 2 ) ? "s" : "")
timer[id]--
if(timer[id] == 0)
{
remove_task(id+TASK_GODMOD)
new Buffer[85]
get_pcvar_string(PcvarPrefixChat,Buffer,charsmax(Buffer))
set_pev(id,pev_takedamage,DAMAGE_AIM)
color_chat(id,"!g%s!y: !yNo Damage deactived!",equal(Buffer,"0" ) ? "" : Buffer)
ShowVIPMenu(id)
timer[id] = 15
}
}
}
public HPRegen(id)
{
id -= TASK_HPREGEN
if(get_user_health(id) >= get_pcvar_num(PcvarMaxRegenHP))
{
set_user_health(id,get_pcvar_num(PcvarMaxRegenHP))
return PLUGIN_HANDLED
}
else
{
set_user_health(id,get_user_health(id) + get_pcvar_num(PcvarHpRegenAdd))
}
return PLUGIN_CONTINUE
}
public ham_Player_TakeDamage_Post( iVictim, iInfictor, iAttacker, Float:fDamage, iDmgBits )
{
if( !is_user_connected( iVictim ) || !is_user_connected( iAttacker ) || iVictim == iAttacker )
return HAM_IGNORED
if( g_bActived_Imm[iAttacker] )
{
if(cs_get_user_team(iAttacker) != cs_get_user_team(iVictim))
{
if( iDmgBits & DMG_BULLET || iDmgBits & (1<<24) || iDmgBits & DMG_SLASH )
{
new random = random_num( 1,4 )
if( random == 2 )
{
set_pev( iVictim, pev_flags, pev( iVictim, pev_flags ) | FL_FROZEN )
if( !task_exists( iVictim ) )
set_task( 2.0, "remove_frozen", iVictim )
}
}
}
}
return HAM_IGNORED
}
public remove_frozen( iVictim )
set_pev( iVictim, pev_flags, pev( iVictim, pev_flags ) & ~FL_FROZEN )
SaveVIP( id )
{
new szAuthid[ 32 ]
get_user_authid( id, szAuthid, charsmax( szAuthid ) )
new szVaultKey[ 128 ], szVaultData[ 512 ]
formatex( szVaultKey, 127, "VIP_%s", szAuthid )
formatex( szVaultData, 511, "%i %i %i %i %i %i %i %i", VIP[id],VIPMoney[id],VIPBh[id],VIPMj[id],VIPNoDmg[id],VIPRegen[id],VIPImm[id], Experience[id])
nvault_set( g_nVault, szVaultKey, szVaultData )
}
LoadVIP( id )
{
new szAuthid[ 32 ]
get_user_authid( id, szAuthid, charsmax( szAuthid ) )
new szVaultKey[ 128 ], szVaultData[ 512 ]
formatex( szVaultKey, 127, "VIP_%s", szAuthid )
formatex( szVaultData, 511, "%i %i %i %i %i %i %i %i", VIP[id],VIPMoney[id],VIPBh[id],VIPMj[id],VIPNoDmg[id],VIPRegen[id],VIPImm[id], Experience[id])
nvault_get( g_nVault, szVaultKey, szVaultData, 511 )
new vp[32],vpm[32],vpmj[32],vpbhop[32],vpnodmg[32],vpregen[32],vpimm[32],exp[32]
parse( szVaultData, vp, 31,vpm, 31,vpmj, 31, vpbhop, 31, vpnodmg, 31, vpregen, 31 ,vpimm, 31, exp, 31)
VIP[ id ] = str_to_num( vp )
VIPMoney[ id ] = str_to_num( vpm )
VIPBh[id] = str_to_num( vpbhop )
VIPMj[id] = str_to_num( vpmj )
VIPNoDmg[id] = str_to_num( vpnodmg )
VIPRegen[id] = str_to_num( vpregen )
VIPImm[id] = str_to_num( vpimm )
Experience[id] = str_to_num( exp )
}
public HUD( id )
{
id -= 672;
set_task( 0.2, "HUD", id+672 );
if(!is_user_alive( id ) )
{
new szHud[64];
new target = entity_get_int( id, EV_INT_iuser2 );
if( target == 0 )
return PLUGIN_HANDLED
if(get_user_vip(target) == 1)
{
if(g_bActived_Bhop[target])
formatex(szHud,63,"[ VIPMoney: %d | VIP Item: BunnyHop ]", VIPMoney[target])
else if(g_bActived_Imm[target])
formatex(szHud,63,"[ VIPMoney: %d | VIP Item: Immobilize ]", VIPMoney[target])
else if(g_bActived_Mj[target])
formatex(szHud,63,"[ VIPMoney: %d | VIP Item: MultiJump ]", VIPMoney[target])
else if(g_bActived_NoDmg[target])
formatex(szHud,63,"[ VIPMoney: %d | VIP Item: No Damage ]", VIPMoney[target])
else if(g_bActived_Regen[target])
formatex(szHud,63,"[ VIPMoney: %d | VIP Item: HP Regenerate ]", VIPMoney[target])
else
formatex(szHud,63,"[ VIPMoney: %d | VIP Item: None ]", VIPMoney[target])
}
else
formatex(szHud,63,"[ Experience: %d of %s ]", Experience[target],get_pcvar_num(PcvarMaxExperience))
set_hudmessage(150, 50, 35, -1.0, 0.95, 0, 1.0, 0.1);
ShowSyncHudMsg(id,HudsSync[5],szHud);
}
return PLUGIN_CONTINUE;
}
public plugin_end( )
{
nvault_close( g_nVault )
return PLUGIN_CONTINUE
}
public plugin_cfg( )
{
g_nVault = nvault_open( "VIP_Player" )
if( g_nVault == INVALID_HANDLE )
set_fail_state( "Error opening VIP nVault, file does not exist!" )
}
public CmdStart( id, uc_handle )
{
if( !is_user_alive( id ))
return FMRES_IGNORED
new flags = pev( id, pev_flags )
if( ( get_uc( uc_handle, UC_Buttons ) & IN_JUMP ) && !( flags & FL_ONGROUND ) && !( pev( id, pev_oldbuttons ) & IN_JUMP ) && g_iJumpCount[ id ] )
{
g_iJumpCount[ id ]--
new Float:velocity[ 3 ]
pev( id, pev_velocity, velocity )
velocity[ 2 ] = random_float( 265.0,285.0 )
set_pev( id, pev_velocity, velocity )
}
else if( flags & FL_ONGROUND )
{
g_iJumpCount[ id ] = g_bActived_Mj[id] ? 2 : 0
}
return FMRES_IGNORED
}
public ham_Player_PostThink_Post( id )
{
if( !is_user_alive( id ) )
return HAM_IGNORED
if( g_bActived_Bhop[id])
{
if( pev( id, pev_button) & IN_JUMP )
{
new flags = pev( id, pev_flags )
if( flags & FL_WATERJUMP )
return HAM_IGNORED
if( pev( id, pev_waterlevel ) >= 2 )
return HAM_IGNORED
if( !( flags & FL_ONGROUND ) )
return HAM_IGNORED
static Float:velocity[ 3 ]
pev( id, pev_velocity, velocity )
velocity[ 2 ] += 250.0
set_pev( id, pev_velocity, velocity )
set_pev( id, pev_gaitsequence, 6 )
}
}
return HAM_IGNORED
}
stock color_chat( id, const szStr[], any:... )
{
new szMsg[ 191 ], iPlayers[ 32 ], iCount = 1
vformat( szMsg, sizeof szMsg - 1, szStr, 3 )
replace_all( szMsg, 190, "!g", "^4" )
replace_all( szMsg, 190, "!y", "^1" )
replace_all( szMsg, 190, "!t", "^3" )
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, get_user_msgid("SayText"), _, iPlayers[ i ] )
write_byte( iPlayers[ i ] )
write_string( szMsg )
message_end( )
}
}
}
Code: Select all
;-------[Fondator]--------[abcdefghijklmnopqrstu]-------
;-------[Owner]--------[abcdefghijklmnopqrs]------
;-------[Co-Owner]------[abcdefijklmnopqrs]------
;-------[Master]-------[bcdefijklmnopqr]-------
;-------[Super-Moderator]-----[bcdefijmnop]--------
;-------[Moderator]------[bcdefijmnou]--------
;-------[Administrator]------[bcdefij]--------
;-------[Helper]-------[bceij]--------
;-------[Admin de Proba]--------[btim]--------
;-------[Nume Rezervat]-------[btim]---------