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