Kod:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#define MAXCLASSES 5
new const CLASSES[MAXCLASSES][] = {
"None",
"Dog",
"Cat",
"Horse",
"Cow"
}
new const LEVELS[6] = {
100,
200,
400,
800,
1600,
3200
}
new PlayerXP[33],PlayerLevel[33],PlayerClass[33]
new XP_Kill,XP_Knife,XP_Hs,SaveXP,g_vault
public plugin_init()
{
register_plugin("XpMod", "1.0", "Fxfighter")
register_event("DeathMsg", "eDeath", "a")
SaveXP = register_cvar("SaveXP","1")
XP_Kill=register_cvar("XP_per_kill", "20")
XP_Hs=register_cvar("XP_hs_bonus","20")
XP_Knife=register_cvar("XP_knife_bonus","20")
g_vault = nvault_open("animod")
register_clcmd("say /class", "ChangeClass")
register_clcmd("say_team /class", "ChangeClass")
register_clcmd("say /xp", "ShowHud")
register_clcmd("say_team /xp", "ShowHud")
}
public eDeath( )
{
new iVictim = read_data( 2 )
new headshot = read_data( 3 )
new clip, ammo, weapon = get_user_weapon(id,clip,ammo);
PlayerXP[attacker] += get_pcvar_num(XP_Kill)
if(headshot)
PlayerXP[attacker] += get_pcvar_num(XP_Hs)
if(weapon == CSW_KNIFE)
PlayerXP[attacker] += get_pcvar_num(XP_Knife)
while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
{
client_print(attacker, print_chat, "[Animal Mod] Congratulations! You are a level %i %s!",
PlayerLevel[attacker] += 1
}
ShowHud(attacker)
SaveData(attacker)
}
public ShowHud(id)
{
set_hudmessage(255, 0, 0, 0.75, 0.01, 0, 6.0, 15.0)
show_hudmessage(id, "Level: %i^nXP: %i^nClass: %s",PlayerLevel[id],PlayerXP[id],CLASSES[PlayerClass[id]])
}
public ChangeClass(id)
{
new menu = menu_create("Class Menu" , "Class_Handle");
menu_additem(menu ,"Dog", "1" , 0);
menu_additem(menu ,"Cat", "2" , 0);
menu_additem(menu ,"Horse", "3" , 0);
menu_additem(menu ,"Cow", "4" , 0);
menu_setprop(menu , MPROP_EXIT , MEXIT_ALL);
menu_display(id , menu , 0);
return PLUGIN_CONTINUE;
}
public Class_Handle(id , menu , item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
}
new szCommand[6] , szName[64];
new access , callback;
menu_item_getinfo(menu , item , access , szCommand , 5 , szName , 63 , callback);
new i = str_to_num(szCommand)
if(PlayerClass[id] != i)
{
PlayerClass[id] = i
client_print(id,print_chat,"You are now a %s",CLASSES[i])
}
else
{
client_print(id,print_chat,"You are alredy a %s",CLASSES[i])
}
menu_destroy(menu);
return PLUGIN_CONTINUE
}
public client_connect(id)
{
if(get_pcvar_num(SaveXP) == 1)
{
LoadData(id)
}
}
public client_disconnect(id)
{
if(get_pcvar_num(SaveXP) == 1)
{
SaveData(id)
}
PlayerXP[id] = 0
PlayerLevel[id] = 0
PlayerClass[id] = 0
}
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#",PlayerXP[id],PlayerLevel[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#%i#",PlayerXP[id],PlayerLevel[id])
nvault_get(g_vault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")
new playerxp[32], playerlevel[32]
parse(vaultdata, playerxp, 31, playerlevel, 31)
PlayerXP[id] = str_to_num(playerxp)
PlayerLevel[id] = str_to_num(playerlevel)
return PLUGIN_CONTINUE
}
Kod:
#include <amxmodx>
#include <nvault>
#include <fakemeta>
#define g_exp(%1) get_pcvar_num(xpm_start) + (seviye[%1] * get_pcvar_num(xpm_inc))
new
xpkayit,
seviye[33],
exp[33],
xpm_kill,
xpm_knife,
xpm_headshot,
xpm_maxlevel,
hud_seviye,
hud_exp,
hud_hp,
xpm_inc,
xpm_start,
xpm_hud_style,
g_iMsgSayText
public plugin_init() {
register_plugin("Xp-Mod v1.0", "1.0", "nefret007")
xpm_start = register_cvar("xpm_start", "250");
xpm_inc = register_cvar("xpm_inc", "75");
xpm_kill = register_cvar("xpm_kill","25")
xpm_knife = register_cvar("xpm_knife","40")
xpm_headshot = register_cvar("xpm_headshot","50")
xpm_maxlevel = register_cvar("xpm_maxlevel","50")
xpm_hud_style = register_cvar("xpm_hud_style","1")
xpkayit = nvault_open("xpmodkayit")
register_event("DeathMsg", "event_death", "a");
hud_seviye = CreateHudSyncObj();
hud_exp = CreateHudSyncObj();
hud_hp = CreateHudSyncObj();
g_iMsgSayText = get_user_msgid("SayText")
}
public plugin_precache() {
precache_sound("explevel/seviye_atlama.wav")
precache_sound("fvox/beep.wav")
}
public kaydet(id){
new name[64],key[72], stats[34];
get_user_name(id, name, 63);
formatex(key, 71, "%s-stats", name);
formatex(stats, 33, "%i %i", seviye[id], exp[id]);
nvault_set(xpkayit, key, stats);
}
public kontrol(id){
if(exp[id] >= g_exp(id))
{
static Float:FOrigin3[3]
pev(id, pev_origin, FOrigin3)
ChatColor(id,"!g[CSPLAGUE.COM]!y Tebrikler !!! !t[+1]!y Seviye Yukseldiniz... ")
console_cmd(id,"spk explevel/seviye_up" )
seviye[id]++
exp[id] = 0
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, FOrigin3, 0)
write_byte(TE_IMPLOSION)
engfunc(EngFunc_WriteCoord, FOrigin3[0])
engfunc(EngFunc_WriteCoord, FOrigin3[1])
engfunc(EngFunc_WriteCoord, FOrigin3[2])
write_byte(200)
write_byte(100)
write_byte(5)
message_end()
}
else
{
console_cmd(id,"spk fvox/beep")
}
}
public yukle(id){
new name[64],key[72], stats[34], stat[3][12];
get_user_name(id, name, 63);
formatex(key, 71, "%s-stats", name);
nvault_get(xpkayit, key, stats, 33);
parse(stats, stat[0], 11, stat[1], 11);
seviye[id] = str_to_num(stat[0]);
exp[id] = str_to_num(stat[1]);
}
public client_authorized(id){
seviye[id]=0
exp[id] = 0
set_task(1.0, "show_explevel", id, _, _, "b")
yukle(id)
}
public client_disconnect(id){
kaydet(id)
}
public event_death()
{
new attacker = read_data(1);
new victim = read_data(2);
if(attacker == victim)
{
return PLUGIN_HANDLED;
}
if(seviye[attacker] >= get_pcvar_num(xpm_maxlevel)){
ChatColor(attacker,"!g[CSPLAGUE.COM]!y Maximum seviyeye ulastiniz...")
return PLUGIN_HANDLED;
}
exp[attacker] += get_pcvar_num(xpm_kill)
if(get_pdata_int(victim, 75) == HIT_HEAD){
exp[attacker] += get_pcvar_num(xpm_headshot)
}
if(get_user_weapon(attacker) == CSW_KNIFE){
exp[attacker] += get_pcvar_num(xpm_knife)
}
kontrol(attacker)
return PLUGIN_HANDLED;
}
public show_explevel(id)
{
switch (get_pcvar_num(xpm_hud_style))
{
case 0: // exp/level
{
set_hudmessage(255, 79, 79, 0.02, 0.23, 1, 0.02, 1.0, 0.01, 0.1, 10);
ShowSyncHudMsg(id, hud_seviye, "Seviye: [%d/%d]",seviye[id],get_pcvar_num(xpm_maxlevel));
set_hudmessage(255, 129, 200, 0.02, 0.26, 1, 0.02, 1.0, 0.01, 0.1, 10);
ShowSyncHudMsg(id, hud_exp, "Exp: [%i/%i]",exp[id],g_exp(id));
}
case 1: // exp/level/hp
{
set_hudmessage(255, 79, 79, 0.02, 0.23, 1, 0.02, 1.0, 0.01, 0.1, 10);
ShowSyncHudMsg(id, hud_seviye, "Seviye: [%d/%d]",seviye[id],get_pcvar_num(xpm_maxlevel));
set_hudmessage(255, 129, 200, 0.02, 0.26, 1, 0.02, 1.0, 0.01, 0.1, 10);
ShowSyncHudMsg(id, hud_exp, "Exp: [%i/%i]",exp[id],g_exp(id));
set_hudmessage(179, 0, 0, 0.02, 0.29, 1, 0.02, 1.0, 0.01, 0.1, 10);
ShowSyncHudMsg(id, hud_hp, "Hp: [%i/100]",get_user_health(id));
}
}
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, g_iMsgSayText, _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/
Beni Tanıyan Tanır...