#define DMG (1<<1)
 
//przedzial, postep, nagroda xp, nagroda monety, flagi, nazwa
new const zadania[][] =
{
        {0, 0, 0, 0, 0, "Brak"},
        {1, 10000, 10, 0, DMG, "DMG"}
        
}
 
new const zadania_opis[][] =
{
        "Brak",
        "0000 dmg"
}
 
new const przedzial[] =
{
        0,
        1
}
 
new postep[33][sizeof zadania], zadanie_gracza[33], done[33]
 
public plugin_init()
{
        register_plugin("Misje", "1.0", "AUTHOR")
        register_clcmd("say /misje", "MenuZadan")
        vault = nvault_open("Misje")
        RegisterHam(Ham_TakeDamage, "player", "ObrazeniaPost", 1)
} 
 
public ObrazeniaPost(id, iInflicter, attacker, Float:damage, iBitDamage)
{
        if(!is_user_connected(attacker)) return
        new zadanie = zadanie_gracza[attacker]
        if(get_user_team(id) != get_user_team(attacker))
        {
        if(zadania[zadanie][4] & DMG)
        {
                postep[attacker][zadanie] += floatround(damage)
                SprawdzPostep(attacker)
                ZapiszDane(attacker)
        }
        }
}
 
public SprawdzPostep(id)
{
        new zadanie = zadanie_gracza[id]
        if(!zadanie) return
        if(postep[id][zadanie] >= zadania[zadanie][1])
        {
                cod_set_user_coins(id, cod_get_user_coins(id)+zadania[zadanie_gracza[id]][3])
                cod_set_user_xp(id, cod_get_user_xp(id)+zadania[zadanie_gracza[id]][2])
                zadanie_gracza[id] = 0
                done[id]++
        }
        
}
 
public client_authorized(id)
{
        get_user_name(id, nazwa_gracza[id], 34)
        WczytajDane(id)
}
 
public client_disconnect(id)
{
        ZapiszDane(id)
}
 
public WczytajDane(id)
{
        
        new vaultkey[64],vaultdata[256]
        format(vaultkey,63,"%s-ms",nazwa_gracza[id])
        format(vaultdata,255,"%d#%d#%d",zadanie_gracza[id],postep[id][zadanie_gracza[id]], done[id])
        nvault_get(vault,vaultkey,vaultdata,255)
        
        replace_all(vaultdata, 255, "#", " ")
        
        new fragitemp[33],deadstemp[33],donetemp[33]
        parse(vaultdata,fragitemp,32,deadstemp,32,donetemp,32)
        
        zadanie_gracza[id]=str_to_num(fragitemp)
        postep[id][zadanie_gracza[id]]=str_to_num(deadstemp)
        done[id] = str_to_num(donetemp)
        
        return PLUGIN_CONTINUE
}  
public ZapiszDane(id){
        new vaultkey[64],vaultdata[256]
        format(vaultkey,63,"%s-ms",nazwa_gracza[id])
        nvault_remove(vault, vaultkey)
        format(vaultdata,255,"%d#%d#%d",zadanie_gracza[id],postep[id][zadanie_gracza[id]], done[id])
        nvault_set(vault,vaultkey,vaultdata)
        
        return PLUGIN_CONTINUE
}