PHP Code:
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <nvault>
new killstreak[32], deathstreak[33], killstreak_deagle[33], killstreak_knife[33]
new bool:first_kill[33], bool:marine[33], bool:rambo[33], bool:killer[33], bool:looser[33]
new g_Vault
public plugin_init()
{
register_plugin("Achievements", "1.0", "fLaXXiE")
g_Vault = nvault_open("Achievements")
register_event("DeathMsg", "DeathMsg", "a", "1=0", "2=0")
RegisterHam(Ham_Spawn, "player", "HamSpawn", 1)
register_clcmd("say /a", "Achievements")
register_clcmd("say_team /a", "Achievements")
}
public client_putinserver(id)
{
set_task(10.0, "ShowMarketing", id + 149)
}
public Achievements(id)
{
new cb = menu_makecallback("Achievements_CallBack")
new menu = menu_create("Achievements", "Achievements_Handle")
menu_additem(menu, "First Kill", _, _, cb)
menu_additem(menu, "Marine", _, _, cb)
menu_additem(menu, "Rambo", _, _, cb)
menu_additem(menu, "Killer", _, _, cb)
menu_additem(menu, "Looser", _, _, cb)
menu_display(id, menu)
}
public Achievements_CallBack(id, menu, item)
{
if(!first_kill[id] && item == 0 || !marine[id] && item == 1 || !rambo[id] && item == 2 || !killer[id] && item == 3 || !looser[id] && item == 4)
{
return ITEM_DISABLED
}
else
{
return ITEM_ENABLED
}
return PLUGIN_CONTINUE
}
public Achievements_Handle(id, menu, item)
{
if(item == MENU_EXIT)
{
return PLUGIN_HANDLED
}
menu_display(id, menu)
switch(item)
{
case 0:
{
client_print(id, print_chat, "[Achievements] Earned for your first Kill")
}
case 1:
{
client_print(id, print_chat, "[Achievements] Earned for your first Deagle Kill")
}
case 2:
{
client_print(id, print_chat, "[Achievements] Earned for 3 Kills in a row with Knife")
}
case 3:
{
client_print(id, print_chat, "[Achievements] Earned for 10 Kills in a row")
}
case 4:
{
client_print(id, print_chat, "[Achievements] Earned for 10 Deaths in a row")
}
}
return PLUGIN_CONTINUE
}
public DeathMsg()
{
new victim = read_data(2)
new attacker = read_data(1)
if(!is_user_alive(attacker))
{
killstreak[attacker] = 0
}
if(victim != attacker)
{
switch(get_user_weapon(attacker))
{
case CSW_DEAGLE:
{
killstreak_deagle[attacker] ++
}
case CSW_KNIFE:
{
killstreak_knife[attacker] ++
}
}
killstreak[attacker] ++
}
if(attacker != victim)
{
deathstreak[attacker] ++
}
switch(deathstreak[attacker])
{
case 10:
{
looser[attacker] = true
client_print(attacker, print_chat, "Congratulations, you have earned Achievement ^"Looser^"")
SaveData(attacker)
}
}
switch(killstreak[attacker])
{
case 1:
{
first_kill[attacker] = true
client_print(attacker, print_chat, "Congratulations, you have earned Achievement ^"First Kill^"")
SaveData(attacker)
}
case 10:
{
killer[attacker] = true
client_print(attacker, print_chat, "Congratulations, you have earned Achievement: ^"Killer^"")
SaveData(attacker)
}
}
switch(killstreak_deagle[attacker])
{
case 7:
{
marine[attacker] = true
client_print(attacker, print_chat, "Congratulations, you have earned Achievementn ^"Marine^"")
SaveData(attacker)
}
}
switch(killstreak_knife[attacker])
{
case 5:
{
rambo[attacker] = true
client_print(attacker, print_chat, "Congratulations, you have earned Achievementn ^"Rambo^"")
SaveData(attacker)
}
}
return PLUGIN_CONTINUE
}
public HamSpawn(id)
{
if(!is_user_alive(id))
{
return PLUGIN_HANDLED
}
if(marine[id])
{
strip_user_weapons(id)
give_item(id, "weapon_knife")
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
}
if(rambo[id])
{
give_item(id, "weapon_m249")
}
return PLUGIN_CONTINUE
}
public SaveData(id)
{
new AuthID[35]
get_user_authid(id,AuthID,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",AuthID)
format(vaultdata,255,"%i#%i#",marine[id])
nvault_set(g_Vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
public LoadData(id)
{
new AuthID[35]
get_user_authid(id,AuthID,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",AuthID)
format(vaultdata,255,"%i",marine[id])
nvault_get(g_Vault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")
new marine_a[32]
parse(vaultdata, marine_a, 31)
marine[id] = str_to_num(marine_a)
return PLUGIN_CONTINUE
}
public ShowMarketing(id)
{
id -= 149
client_print(id, print_chat, "[Achievements] This server is running Achievements 1.0")
}
public client_disconnect(id)
{
remove_task(id + 149)
}
public plugin_end()
{
nvault_close(g_Vault)
}