Raised This Month: $ Target: $400
 0% 

nVault saving enum.


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
Napoleon_be
Veteran Member
Join Date: Jul 2011
Location: Belgium
Old 06-10-2012 , 08:53   nVault saving enum.
Reply With Quote #1

For example, i'm making an achievement system, but i want to save everything in the enum, should i loop like this or is there some other way to do it:

for(new i; i < sizeof(iAchCount); i++) {
format(vaultdata, 255, "%i#%i#", iAchLevel[id][i], TotalAchievements[id])
}
nvault_set(gVault, vaultkey, vaultdata)

And how about loading the same stats?

EDIT: Full code.

PHP Code:
#include <amxmodx>
#include <colorchat>
#include <fakemeta>
#include <engine>
#include <xs>
#include <nvault>

#define VERSION "1.0.0"

#define MaxPlayers 33

native get_user_achievements(id)
native set_user_achievements(idAchievements)

new 
TotalAchievements[33]
new 
iTotalAchievements 11
new gVault

new const szAchievementSound[] = "Achievements/AchievementReach.wav"

enum _:iAchCount {
    
DIES,
    
SPRAYS,
    
KILLS,
    
CONNECT,
    
HEADSHOT,
    
KNIFE,
    
DISTANCE,
    
SURVIVE,
    
GRENADE,
    
USP,
    
GLOCK
}

new const 
iAchPoints[iAchCount] = {
    
500,
    
1000,
    
1000,
    
500,
    
500,
    
100,
    
3,
    
100,
    
50,
    
250,
    
250
}

new 
iAchLevel[MaxPlayers][iAchCount]


new const 
Float:vecNullOrigin[3]

new 
Float:flDistance[MaxPlayers]
new 
Float:vecOldOrigin[MaxPlayers][3]
new 
Float:g_iFeet 35.0

public plugin_init() {
    
register_plugin("JailBreak Achievements"VERSION"NapoleoN#")
    
    
// Commands
    
register_clcmd("say /achs""Cmd_ShowAchievements")
    
    
// Events
    
register_event("DeathMsg""eDeath""a")
    
register_event("23""player_spray""a""1=112")
    
register_event("SendAudio""TerrorWins""a""2=%!MRAD_terwin")
    
    
// Fakemeta
    
register_forward(FM_CmdStart"CmdStart")
    
    
// nVault
    
nvault_open("AchievementSystem")
}

public 
plugin_natives() {
    
register_library("AchievementsNatives")
    
    
register_native("get_user_achievements""_get_achievements")
    
register_native("set_user_achievements""_set_achievements")
}

public 
_get_achievements(id) {
    return 
TotalAchievements[get_param(1)]
}

public 
_set_achievements(idAchievements) {
    new 
iPlayer get_param(1)
    
TotalAchievements[iPlayer] = max(0get_param(2))
    return 
TotalAchievements[iPlayer]
}

public 
plugin_precache() {
    
precache_sound(szAchievementSound)
}

public 
TerrorWins() {     
    new 
players[32], count
    get_players
(playerscount"ae""TERRORIST")
    if(
count == 1) {
        
        new 
id players[0]
        
iAchLevel[id][SURVIVE]++
        
        if(
iAchLevel[id][SURVIVE] == 100) {
            
TotalAchievements[id]++
            
ColorChat(idGREEN"[Achievements]^1 Congratulations! You have unclocked the achievement:^3 Survivor!")
        }
    }
}

public 
client_putinserver(id) {
    
iAchLevel[id][CONNECT]++
    switch(
iAchLevel[id][CONNECT]) {
        case 
500: {
            
set_task(2.0"ReachAddict"id// Avoid playing the sound and printing the message to early.
        
}
    }
}

public 
ReachAddict(id) {
    
TotalAchievements[id]++
    
ColorChat(idGREEN"[Achievements]^1 Congratulations! You have unlocked the achievement:^3 Addict!")
    
emit_sound(idCHAN_STATICszAchievementSound1.0ATTN_NORM0PITCH_NORM)
}

public 
eDeath() {
    new 
iClipiAmmoiWeapon get_user_weapon(read_data(1), iClipiAmmo)
    
    if(
is_user_alive(read_data(1))) {
        
iAchLevel[read_data(1)][KILLS]++
    }
    
    if(
read_data(3)) {
        
iAchLevel[read_data(1)][HEADSHOT]++
    }
    
    if(
iWeapon == CSW_KNIFE) {
        
iAchLevel[read_data(1)][KNIFE]++
    }
    
    if(
iWeapon == CSW_HEGRENADE) {
        
iAchLevel[read_data(1)][GRENADE]++
    }
    
    if(
iWeapon == CSW_USP) {
        
iAchLevel[read_data(1)][USP]++
    }
    
    if(
iWeapon == CSW_GLOCK18) {
        
iAchLevel[read_data(1)][GLOCK]++
    }
    
    
iAchLevel[read_data(2)][DIES]++
    
    switch(
iAchLevel[read_data(2)][DIES]) {
        case 
500: {
            
TotalAchievements[read_data(2)]++
            
ColorChat(read_data(2), GREEN"[Achievements]^1 Congratulations! You have unlocked the achievement:^3 Anti-GodMode!")
            
emit_sound(read_data(2), CHAN_STATICszAchievementSound1.0ATTN_NORM0PITCH_NORM)
        }
    }
    
    switch(
iAchLevel[read_data(1)][KILLS]) {
        case 
1000: {
            
TotalAchievements[read_data(1)]++
            
ColorChat(read_data(1), GREEN"[Achievements]^1 Congratulations! You have unlocked the achievement:^3 Prison Breaker!")
            
emit_sound(read_data(1), CHAN_STATICszAchievementSound1.0ATTN_NORM0PITCH_NORM)
        }
    }
    
    switch(
iAchLevel[read_data(1)][HEADSHOT]) {
        case 
500: {
            
TotalAchievements[read_data(1)]++
            
ColorChat(read_data(1), GREEN"[Achievements]^1 Congratulations! You have unlocked the achievement:^3 HeadzHunterz!")
            
emit_sound(read_data(1), CHAN_STATICszAchievementSound1.0ATTN_NORM0PITCH_NORM)
        }
    }
    
    switch(
iAchLevel[read_data(1)][KNIFE]) {
        case 
100: {
            
TotalAchievements[read_data(1)]++
            
ColorChat(read_data(1), GREEN"[Achievements]^1 Congratulations! You have unlocked the achievement:^3 The Butcher!")
            
emit_sound(read_data(1), CHAN_STATICszAchievementSound1.0ATTN_NORM0PITCH_NORM)
        }
    }
    
    switch(
iAchLevel[read_data(1)][GRENADE]) {
        case 
50: {
            
TotalAchievements[read_data(1)]++
            
ColorChat(read_data(1), GREEN"[Achievements]^1 Congratulations! You have unlocked the achievement:^3 Grenadier!")
            
emit_sound(read_data(1), CHAN_STATICszAchievementSound1.0ATTN_NORM0PITCH_NORM)
        }
    }
    
    switch(
iAchLevel[read_data(1)][USP]) {
        case 
250: {
            
TotalAchievements[read_data(1)]++
            
ColorChat(read_data(1), GREEN"[Achievements]^1 Congratulations! You have unlocked the achievement:^3 Officer!")
            
emit_sound(read_data(1), CHAN_STATICszAchievementSound1.0ATTN_NORM0PITCH_NORM)
        }
    }
    
    switch(
iAchLevel[read_data(1)][GLOCK]) {
        case 
250: {
            
TotalAchievements[read_data(1)]++
            
ColorChat(read_data(1), GREEN"[Achievements]^1 Congratulations! You have unlocked the achievement:^3 Glocker!")
            
emit_sound(read_data(1), CHAN_STATICszAchievementSound1.0ATTN_NORM0PITCH_NORM)
        }
    }
}

public 
player_spray() {
    
iAchLevel[read_data(2)][SPRAYS]++
    
    switch(
iAchLevel[read_data(2)][SPRAYS]) {
        case 
1000: {
            
TotalAchievements[read_data(2)]++
            
ColorChat(read_data(2), GREEN"[Achievements]^1 Congratulations! You have unlocked the achievement:^3 Graffity Gangster!")
            
emit_sound(read_data(2), CHAN_STATICszAchievementSound1.0ATTN_NORM0PITCH_NORM)
        }
    }
}

public 
Cmd_ShowAchievements(id) {
    new 
szTemp[500 char]
    
formatex(szTempcharsmax(szTemp), "JailBreak Achievements Menu^nTotal Achievements: \r%i/%i"TotalAchievements[id], iTotalAchievements)
    
    new 
menu menu_create(szTemp"Ach_Handler")
    
    
formatex(szTempcharsmax(szTemp), "Anti-GodMode! \r%i/%i"iAchLevel[id][DIES], iAchPoints[DIES])
    
menu_additem(menuszTemp"1")
    
    
formatex(szTempcharsmax(szTemp), "Graffity Gangster! \r%i/%i"iAchLevel[id][SPRAYS], iAchPoints[SPRAYS])
    
menu_additem(menuszTemp"2")
    
    
formatex(szTempcharsmax(szTemp), "Prison Breaker! \r%i/%i"iAchLevel[id][KILLS], iAchPoints[KILLS])
    
menu_additem(menuszTemp"3")
    
    
formatex(szTempcharsmax(szTemp), "Addict! \r%i/%i"iAchLevel[id][CONNECT], iAchPoints[CONNECT])
    
menu_additem(menuszTemp"4")
    
    
formatex(szTempcharsmax(szTemp), "HeadzHunterz! \r%i/%i"iAchLevel[id][HEADSHOT], iAchPoints[HEADSHOT])
    
menu_additem(menuszTemp"5")
    
    
formatex(szTempcharsmax(szTemp), "The Butcher! \r%i/%i"iAchLevel[id][KNIFE], iAchPoints[KNIFE])
    
menu_additem(menuszTemp"6")
    
    
formatex(szTempcharsmax(szTemp), "Sprinter! \r%i/%i"iAchLevel[id][DISTANCE], iAchPoints[DISTANCE])
    
menu_additem(menuszTemp"7")
    
    
formatex(szTempcharsmax(szTemp), "Survivor! \r%i/%i"iAchLevel[id][SURVIVE], iAchPoints[SURVIVE])
    
menu_additem(menuszTemp"8")
    
    
formatex(szTempcharsmax(szTemp), "Grenadier! \r%i/%i"iAchLevel[id][GRENADE], iAchPoints[GRENADE])
    
menu_additem(menuszTemp"9")
    
    
formatex(szTempcharsmax(szTemp), "Officer! \r%i/%i"iAchLevel[id][USP], iAchPoints[USP])
    
menu_additem(menuszTemp"10")
    
    
formatex(szTempcharsmax(szTemp), "Glocker! \r%i/%i"iAchLevel[id][GLOCK], iAchPoints[GLOCK])
    
menu_additem(menuszTemp"11")
    
    
menu_display(idmenu)
}

public 
Ach_Handler(idmenuitem) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item) {
        case 
0: {
            
ColorChat(idGREEN"[Achievements]^1 Reach^3 %i^1 deaths to unlock this^4 Achievement!"iAchPoints[DIES])
            
ColorChat(idGREEN"[Achievements]^3 %i/%i."iAchLevel[id][DIES], iAchPoints[DIES])
        }
        case 
1: {
            
ColorChat(idGREEN"[Achievements]^1 Reach^3 %i^1 sprays to unlock this^4 Achievement!"iAchPoints[SPRAYS])
            
ColorChat(idGREEN"[Achievements]^3 %i/%i."iAchLevel[id][SPRAYS], iAchPoints[SPRAYS])
        }
        case 
2: {
            
ColorChat(idGREEN"[Achievements]^1 Reach^3 %i^1 kills to unlock this^4 Achievement!"iAchPoints[KILLS])
            
ColorChat(idGREEN"[Achievements]^3 %i/%i."iAchLevel[id][KILLS], iAchPoints[KILLS])
        }
        case 
3: {
            
ColorChat(idGREEN"[Achievements]^1 Reach^3 %i^1 connects to unlock this^4 Achievement!"iAchPoints[CONNECT])
            
ColorChat(idGREEN"[Achievements]^3 %i/%i."iAchLevel[id][CONNECT], iAchPoints[CONNECT])
        }
        case 
4: {
            
ColorChat(idGREEN"[Achievements]^1 Reach^3 %i^1 headshots to unlock this^4 Achievement!"iAchPoints[HEADSHOT])
            
ColorChat(idGREEN"[Achievements]^3 %i/%i."iAchLevel[id][HEADSHOT], iAchPoints[HEADSHOT])
        }
        case 
5: {
            
ColorChat(idGREEN"[Achievements]^1 Reach^3 %i^1 knife kills to unlock this^4 Achievement!"iAchPoints[KNIFE])
            
ColorChat(idGREEN"[Achievements]^3 %i/%i."iAchLevel[id][KNIFE], iAchPoints[KNIFE])
        }
        case 
6: {
            new 
Float:footsteps flDistance[id] / g_iFeet
            
            ColorChat
(idGREEN"[Achievements]^1 Reach^3 52800^1 footsteps to unlock this achievement!")
            
ColorChat(idGREEN"[Achievements]^3 %f/52800."footsteps)
        }
        case 
7: {
            
ColorChat(idGREEN"[Achievements]^1 Survive^3 %i^1 rounds to unlock this achievement!"iAchPoints[SURVIVE])
            
ColorChat(idGREEN"[Achievements]^1 %i/%i."iAchLevel[id][SURVIVE], iAchPoints[SURVIVE])
        }
        case 
8: {
            
ColorChat(idGREEN"[Achievements]^1 Kill^3 %i^1 ct's with a he grende to unlock this achievement!"iAchPoints[GRENADE])
            
ColorChat(idGREEN"[Achievements]^1 %i/%i."iAchLevel[id][GRENADE], iAchPoints[GRENADE])
        }
        case 
9: {
            
ColorChat(idGREEN"[Achievements]^1 Kill^3 %i^1 ct's with a USP to unlock this achievement!"iAchPoints[USP])
            
ColorChat(idGREEN"[Achievements]^1 %i/%i."iAchLevel[id][USP], iAchPoints[USP])
        }
        case 
10: {
            
ColorChat(idGREEN"[Achievements]^1 Kill^3 %i^1 ct's with a Glock18 to unlock this achievement!"iAchPoints[GLOCK])
            
ColorChat(idGREEN"[Achievements]^1 %i/%i."iAchLevel[id][GLOCK], iAchPoints[GLOCK])
        }
    }
    return 
PLUGIN_HANDLED
}

public 
CmdStart(id) {
    if(!
is_user_alive(id)) {
        return 
FMRES_IGNORED
    
}
    
    if(
iAchLevel[id][DISTANCE] <= 2) {
        
        new 
Float:vecOrigin]
        
entity_get_vectoridEV_VEC_originvecOrigin )
    
        if(!
xs_vec_equal(vecOldOrigin[id], vecNullOrigin)) {
            
flDistance[id] += get_distance_f(vecOriginvecOldOrigin[id])
        }
        
        
xs_vec_copy(vecOriginvecOldOrigin[id])
        
        switch(
iAchLevel[id][DISTANCE]) {
            case 
0: {
                if(
flDistance[id] / g_iFeet >= 1)
                {
                    
iAchLevel[id][DISTANCE]++
                    
ColorChat(idGREEN"[Achievements]^1 Congratulations! You have unlocked the achievement:^3 Baby Footsteps!")
                    
emit_sound(idCHAN_STATICszAchievementSound1.0ATTN_NORM0PITCH_NORM )
                }
            }
            case 
1: {
                if(
flDistance[id] / g_iFeet >= 5280) {
                    
iAchLevel[id][DISTANCE]++
                    
ColorChat(idGREEN"[Achievements]^1 Congratulations! You have unlocked the achievement:^3 Walk Away!")
                    
emit_sound(idCHAN_STATICszAchievementSound1.0ATTN_NORM0PITCH_NORM )
                }
            }
            case 
2: {
                if(
flDistance[id] / g_iFeet >= 52800) {
                    
iAchLevel[id][DISTANCE]++
                    
TotalAchievements[id]++
                    
ColorChat(idGREEN"[Achievements]^1 Congratulations! You have unlocked the achievement:^3 Sprinter!")
                    
emit_sound(idCHAN_STATICszAchievementSound1.0ATTN_NORM0PITCH_NORM )
                }
            }
        }
    }
    return 
FMRES_IGNORED
}

public 
client_authorized(id) {
    
LoadData(id)
}

public 
client_disconnect(id) {
    
SaveData(id)
}

public 
SaveData(id) {
    new 
SteamID[32]; get_user_authid(idSteamIDcharsmax(SteamID))
    new 
vaultkey[64], vaultdata[256
    
    
format(vaultkeycharsmax(vaultkey), "%s-AchievementSystem"SteamID)
    
    for(new 
isizeof(iAchPoints); i++) {
        
format(vaultdatacharsmax(vaultdata), "%i#%i#"iAchLevel[id][i], TotalAchievements[id])
    }
    
    
nvault_set(gVaultvaultkeyvaultdata)
}

public 
LoadData(id) {
    new 
SteamID[35]; get_user_authid(idSteamIDcharsmax(SteamID)) 
    new 
vaultkey[64], vaultdata[256
    
    
format(vaultkeycharsmax(vaultkey), "%s-AchievementSystem"SteamID
    
    for(new 
isizeof(iAchPoints); i++) {
        
format(vaultdatacharsmax(vaultdata), "%i#%i#"iAchLevel[id][i], TotalAchievements[id])
    }
    
    
nvault_get(gVaultvaultkeyvaultdatacharsmax(vaultdata))
    
replace_all(vaultdatacharsmax(vaultdata), "#"" "
    
    new 
achievements[32], level[32]
    
parse(vaultdataachievementscharsmax(achievements)) 
    
    
TotalAchievements[id] = str_to_num(achievements)
    
iAchLevel[id][iAchPoints[id]] = str_to_num(level)

__________________

Last edited by Napoleon_be; 06-10-2012 at 09:04.
Napoleon_be is offline
Send a message via Skype™ to Napoleon_be
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 06:15.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode