Az a 2 ,,változó", amit parancsként kellene megnevezni:
XP adás: xp_adas <név> <xp>
XP elvétel: xp_elvetel <név> <xp>
[spoiler]
Kód:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <engine>
#include <hamsandwich>
#include <nvault>
#define PLUGIN "XPmod"
#define VERSION "1.0"
#define AUTHOR "HunGamer"
new exp_player[33];
new level_player[33] = 1;
new exp_for_kill;
new exp_for_hs;
new xpmentes;
new SyncHudObj;
new SyncHudObj2;
new playername[33][34];
new g_vault;
new const exp_level[] =
{
0,100,300,500,700,900,1100,1300,1500,1700,1900,2100,2300,2500,2700,2900,
3100,3300,3500,3700,3900,4100,4300,4500,4700,4900,5100,5300,5500,5700,5900,
6100,6300,6500,6700,6900,7100,7300,7500,7700,7900,8100,8300,8500,8700,8900,
9100,9300,9500,9700,9900,10100,10300,10500,10700,10900,11100,11300,11500,11700,11900,
12100,12300,12500,12700,12900,13100,13300,13500,13700,13900,14100,14300,14500,14700,14900,
15100,15300,15500,15700,15900,16100,16300,16500,16700,16900,17100,17300,17500,17700,17900,
18100,18300,18500,18700,18900,19100,19300,19500,19700
};
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("xp_adas", "xpadas", ADMIN_KICK, "<nev> <xp>");
register_clcmd("xp_elvetel", "xpelvetel", ADMIN_KICK, "<nev> <xp>");
register_event("DeathMsg", "Death", "a");
RegisterHam(Ham_Spawn, "player", "ujraeledes", 1);
SyncHudObj = CreateHudSyncObj();
exp_for_kill = register_cvar("xpmod_killxp", "5");
exp_for_hs = register_cvar("xpmod_hsxp", "10");
xpmentes = register_cvar("xpmod_save", "1");
g_vault = nvault_open("XpMod");
}
public Death()
{
new victim = read_data(2);
new attacker = read_data(1);
new heads = read_data(3);
new killxp = get_pcvar_num(exp_for_kill);
new hsxp = get_pcvar_num(exp_for_hs);
if(!is_user_alive(attacker))
return PLUGIN_CONTINUE;
if(get_user_team(victim) != get_user_team(attacker))
{
if(heads)
{
expszerzes(attacker, hsxp);
}
else
{
expszerzes(attacker, killxp);
}
}
szintlepes(attacker);
return PLUGIN_CONTINUE;
}
public expszerzes(player, exp)
{
if(exp_player[player] < 19700)
exp_player[player]+=exp;
}
public szintlepes(id)
{
while(exp_player[id] >= exp_level[level_player[id]])
{
level_player[id]++;
set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2);
ShowSyncHudMsg(id, SyncHudObj, "Gratulalunk, szintet leptel!");
}
if(get_pcvar_num(xpmentes) == 1)
{
SaveData(id);
}
}
public client_PreThink(id)
{
set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.2, 0.0, 0.0);
ShowSyncHudMsg(id, SyncHudObj2, "[Nev : %s]^n[Exp : %i / %i]^n[Szint : %i]", playername[id], exp_player[id], exp_level[level_player[id]], level_player[id]);
return PLUGIN_CONTINUE;
}
public ujraeledes(id)
{
if(!is_user_alive(id))
return PLUGIN_CONTINUE;
set_user_health(id, 100+level_player[id]*2);
return PLUGIN_CONTINUE;
}
public client_connect(id)
{
get_user_name(id, playername[id], 33);
if(get_pcvar_num(xpmentes) == 1)
{
LoadData(id);
}
}
public client_disconnect(id)
{
if(get_pcvar_num(xpmentes) == 1)
{
SaveData(id);
}
}
public SaveData(id)
{
new vaultkey[64],vaultdata[256];
new name[32];
get_user_name(id, name, 31);
format(vaultkey,63,"%s-xp", playername[id]);
format(vaultdata,255,"%i#%i", exp_player[id], level_player[id]);
nvault_set(g_vault,vaultkey,vaultdata);
}
public LoadData(id)
{
new vaultkey[64],vaultdata[256];
new name[32];
get_user_name(id, name, 31);
format(vaultkey,63,"%s-xp", playername[id]);
format(vaultdata,255,"%i#%i", exp_player[id], level_player[id]);
nvault_get(g_vault,vaultkey,vaultdata,255);
replace_all(vaultdata, 255, "#", " ");
new playerxp[32], playerlevel[32];
parse(vaultdata, playerxp, 31, playerlevel, 31);
exp_player[id] = str_to_num(playerxp);
level_player[id] = str_to_num(playerlevel);
}
public xpadas(id, level, cid)
{
if(!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED;
new arg1[33];
new arg2[6];
read_argv(1, arg1, 32);
read_argv(2, arg2, 5);
new player = cmd_target(id, arg1);
new value = str_to_num(arg2);
exp_player[player] += value;
szintlepes(player);
return PLUGIN_HANDLED;
}
public xpelvetel(id, level, cid)
{
if(!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED;
new arg1[33];
new arg2[6];
read_argv(1, arg1, 32);
read_argv(2, arg2, 5);
new player = cmd_target(id, arg1);
new value = str_to_num(arg2);
exp_player[player] -= value;
return PLUGIN_HANDLED;
}
[/spoiler]
Átmegy a konvertálón, de még nem teszteltem.