Trzymajcie gotową podstawę zdobywania doświadczenia i poziomów za pomocą nvault.
Jest to kod z alliedmodders w 90% przerobiony przeze mnie + małe zapożyczenie z cod moda
Spoiler
#include <amxmodx> #include <amxmisc> #include <nvault> #include <colorchat> new const LEVELS[6] = { 0, 200, 400, 800, 1600, 3200 } new iExp[33] new iLvl[33] new cKill new TypZapisu new g_vault new gSyncMessage; public plugin_init() { register_plugin("exp", "0.1", "Original by Flyen | Edit Harsay") register_event("DeathMsg", "eDeath", "a") cKill = register_cvar("amx_exp_kill", "20") TypZapisu = register_cvar("amx_save_type", "1") // 1 - SteamID // 2 - Nick g_vault = nvault_open("exp") gSyncMessage = CreateHudSyncObj() } public Event_DeathMsg() { new iKiller = read_data(1) new iVictim = read_data(2) if(is_user_alive(iKiller)) { iExp[iKiller] += get_pcvar_num(cKill) ColorChat(iKiller, GREEN, "^x04[Exp]^x01 Otrzymales %s doswiadczenia za zabicie.", cKill) } SprawdzPoziom(iKiller) PokazInformacje(iKiller) } public client_connect(id) { Wczytaj(id) PokazInformacje(id) } public client_disconnect(id) { Zapisz(id) iExp[id] = 0 iLvl[id] = 0 } public Zapisz(id) { new AuthID[35] if(TypZapisu == 1) get_user_authid(id,AuthID,34) else if(TypZapisu == 2) get_user_name(id,AuthID,34) new vaultkey[64],vaultdata[256] format(vaultkey,63,"%s-Mod",AuthID) format(vaultdata,255,"%i#%i#",iExp[id], iLvl[id]) nvault_set(g_vault,vaultkey,vaultdata) return PLUGIN_CONTINUE } public Wczytaj(id) { new AuthID[35] if(TypZapisu == 1) get_user_authid(id,AuthID,34) else if(TypZapisu == 2) get_user_name(id,AuthID,34) new vaultkey[64],vaultdata[256] format(vaultkey,63,"%s-Mod",AuthID) format(vaultdata,255,"%i#%i#",iExp[id], iLvl[id]) nvault_get(g_vault,vaultkey,vaultdata,255) replace_all(vaultdata, 255, "#", " ") new playerxp[32], playerlevel[32] parse(vaultdata, playerxp, 31, playerlevel, 31) iExp[id] = str_to_num(playerxp) iLvl[id] = str_to_num(playerlevel) return PLUGIN_CONTINUE } public SprawdzPoziom(id) { while(iExp[id] >= LEVELS[iLvl[id]]) { ColorChat(id, GREEN, "^x04[Exp]^x01 Awansowales na kolejny poziom!") set_hudmessage(0, 255, 0, -1.0, 0.17, 0, 6.0, 4) show_hudmessage(id, "Awansowales na kolejny poziom!") iLvl[id] += 1 } Zapisz(id) } public PokazInformacje(id) { set_task(0.1, "PokazInformacje", id) if(!is_user_alive(id)) return PLUGIN_CONTINUE set_hudmessage(0, 255, 0, 0.0, 0.16, 0, 6.0, 2) ShowSyncHudMsg(id, gSyncMessage, "[Poziom: %s]^n[Doswiadczenie: %s]", iLvl[id], iExp[id]); return PLUGIN_CONTINUE; }
Cvary:
amx_exp_kill "" // Doswiadczenie za zabicie kogos amx_save_type "" // Typ zapisu 1 - steamid // 2 - Nick
Użytkownik Harsay edytował ten post 13.11.2010 10:50