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


Dodatki SourceMod













