Witam,
Jak dodać do tego: http://amxx.pl/topic...xp-moda-nvault/
Do tego coda co napisał tam """""Sebul"""""
Umiejętności klas.
Tzn. + 300 speeda,
+50 hp
+ grawitacja itp.
Jak to zrobić?
#include <amxmodx>
#include <amxmisc>
#include <nvault>
new const CLASSES[][] = {
"None",
"Dog",
"Cat",
"Horse",
"Cow"
}
new const LEVELS[] = {
0,
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 attacker = read_data(1);
new iVictim = read_data(2);
if(!is_user_connected(attacker) || !is_user_connected(iVictim))
return;
if(attacker == iVictim) // mozna tez dodac sprawdzanie druzyn
return;
new headshot = read_data(3);
new weaponname[32];
read_data(4, weaponname, 31);
if(equal(weaponname, "grenade")) {
format(weaponname, 31, "weapon_he%s", weaponname);
}
else if(!equal(weaponname, "weapon_", 7))
format(weaponname, 31, "weapon_%s", weaponname);
new weapon = get_weaponid(weaponname);
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);
new bool:zdobyl, bool:stracil;
while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
{
++PlayerLevel[attacker];
zdobyl = true;
}
while(PlayerXP[attacker] < LEVELS[PlayerLevel[attacker]])
{
--PlayerLevel[attacker];
stracil = true;
}
if(stracil) {
client_print(attacker, print_chat, "Spadles do %i poziomu!", PlayerLevel[attacker]);
}
else if(zdobyl) {
client_print(attacker, print_chat, "Awansowales do %i poziomu!", PlayerLevel[attacker]);
}
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]]);
return PLUGIN_HANDLED;
}
public ChangeClass(id) {
new menu = menu_create("Class Menu", "Class_Handle");
new ile = sizeof(CLASSES);
for(new i=1; i<ile; ++i)
menu_additem(menu, CLASSES[i]);
menu_display(id, menu);
return PLUGIN_HANDLED;
}
public Class_Handle(id, menu, item) {
if(item++ == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(PlayerClass[id] != item) {
PlayerClass[id] = item;
client_print(id, print_chat, "You are now a %s", CLASSES[item]);
}
else {
client_print(id, print_chat, "You are alredy a %s", CLASSES[item]);
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public client_authorized(id) {
PlayerXP[id] = 0;
PlayerLevel[id] = 1;
PlayerClass[id] = 0;
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] = 1;
PlayerClass[id] = 0;
}
public SaveData(id) {
if(g_vault == INVALID_HANDLE)
return;
new AuthID[32]; get_user_authid(id, AuthID, 31);
new vaultkey[64], vaultdata[128];
format(vaultkey, 63, "%s-Mod", AuthID);
format(vaultdata, 127, "%i %i", PlayerXP[id], PlayerLevel[id]);
nvault_set(g_vault, vaultkey, vaultdata);
}
public LoadData(id) {
if(g_vault == INVALID_HANDLE)
return;
new AuthID[32]; get_user_authid(id, AuthID, 31);
new vaultkey[64], vaultdata[128];
format(vaultkey, 63, "%s-Mod", AuthID);
if(nvault_get(g_vault, vaultkey, vaultdata, 127)) {
new playerxp[11], playerlevel[11];
parse(vaultdata, playerxp, 10, playerlevel, 10);
PlayerXP[id] = str_to_num(playerxp);
PlayerLevel[id] = str_to_num(playerlevel);
}
}
Użytkownik pijag edytował ten post 13.07.2014 18:44


Dodatki SourceMod












