Senior Member
Join Date: Jan 2011
Location: Behind you!
|
11-14-2012
, 14:24
Need some help with NVAULT
|
#1
|
Hey..
I got some problems with this code for my Ranking System, it should work with saving/loading function, but it just.. doesnt?
I've been trying like everything, but nothing's working..
I don't want MySQL, since I hate that, and I think nvault saving is better, but I just can't make it.
Heres my code:
PHP Code:
/* Rank Mod for GamePark Author: eNDex Decription: Ranking System for players ingame Version: 1.0 */ #include < amxmodx > #include < amxmisc > #include < cstrike > #include < nvault > #include < nvault_util > #include < colorchat >
#define PREFIX "^4[Ranking]^3"
#define NVAULT1_NAME "Rankingstats_test4" #define NVAULT2_NAME "Rankingnames_test4"
new gKills [ 33 ] new gDeaths [ 33 ] new gSurvives [ 33 ] new gSuicides [ 33 ] new gPoint [ 33 ]
new gVault, gVaultNames new gAuthID [ 33 ] [ 35 ] new gHtml [ 3200 ]
new gCvarKill, gCvarDeath, gCvarSurvive, gCvarSuicide new CvarKill, CvarDeath, CvarSurvive, CvarSuicide
const TOPRANKS = 10 new gTopAuth [ 11 ] [ 35 ] new gTopNames [ 11 ] [ 35 ] new gTopPoints [ 11 ]
public plugin_init ( ) { register_clcmd ( "say /rank", "CmdSayRank" ) register_clcmd ( "say /top", "CmdSayTop" ) register_clcmd ( "say /top10", "CmdSayTop" ) register_clcmd ( "say /debug", "CmdDebug" ) register_event ( "DeathMsg", "DeathMsg", "a" ) register_logevent ( "EventRoundEnd", 2, "1=Round_End" ) gVault = nvault_open ( NVAULT1_NAME ) gVaultNames = nvault_open ( NVAULT2_NAME ) if ( gVault == INVALID_HANDLE ) set_fail_state ( "Vault1 returned Invalid Handle" ) if ( gVaultNames == INVALID_HANDLE ) set_fail_state ( "Vault2 returned Invalid Handle" ) gCvarKill = register_cvar ( "rank_kill", "2" ) gCvarDeath = register_cvar ( "rank_death", "1" ) gCvarSurvive = register_cvar ( "rank_survive", "2" ) gCvarSuicide = register_cvar ( "rank_suicide", "2" ) CvarKill = get_pcvar_num ( gCvarKill ) CvarDeath = get_pcvar_num ( gCvarDeath ) CvarSurvive = get_pcvar_num ( gCvarSurvive ) CvarSuicide = get_pcvar_num ( gCvarSuicide ) CreateTop ( ); }
public CmdDebug ( id ) { gPoint [ id ] += 100 gKills [ id ] += 10 gDeaths [ id ] += 5 gSuicides [ id ] += 2 gSurvives [ id ] += 1 client_print ( id, print_chat, "DEBUG" ) }
public plugin_end ( ) { nvault_close ( gVault ) }
public client_authorized ( id ) { if ( !is_user_bot ( id ) && !is_user_hltv ( id ) ) { get_user_authid ( id, gAuthID [ id ], 31 ) Load ( id ) } }
public client_disconnect ( id ) { Save ( id ) }
public DeathMsg ( ) { new killer = read_data ( 1 ) new victim = read_data ( 2 ) if ( victim != killer ) { gPoint [ killer ] += CvarKill gPoint [ victim ] -= CvarDeath gKills [ killer ] += 1 gDeaths [ victim ] += 1 Save ( killer ) Save ( victim ) } else { gPoint [ victim ] -= CvarSuicide gDeaths [ victim ] += 1 Save ( victim ) } }
public EventRoundEnd ( ) { new hider, seeker, hider_alive for ( new i = 1; i <= get_maxplayers ( ); i++ ) { if ( is_user_connected ( i ) ) { switch ( cs_get_user_team ( i ) ) { case CS_TEAM_CT: { if ( !seeker ) { seeker = i } } case CS_TEAM_T: { if ( !hider ) { hider = i if ( !hider_alive && is_user_alive ( i ) ) { hider_alive = i } } } } if ( seeker && hider && hider_alive ) { break; } } } if ( !hider || !seeker ) { return; } new CsTeams:winner = CS_TEAM_CT if ( hider_alive ) { winner = CS_TEAM_T for ( new id = 1; id <= get_maxplayers ( ); id++ ) { if ( is_user_alive ( id ) && cs_get_user_team ( id ) == winner ) { gPoint [ id ] += CvarSurvive gSurvives [ id ] += 1 Save ( id ) } } } }
Load ( id ) { static data [ 256 ], timestamp if ( nvault_lookup ( gVault, gAuthID [ id ], data, sizeof ( data ) - 1, timestamp ) ) { LoadData ( id, data ) return; } else { gPoint [ id ] = 1000 gKills [ id ] = 0 gDeaths [ id ] = 0 gSurvives [ id ] = 0 gSuicides [ id ] = 0 } }
LoadData ( id, data [ 256 ] ) { static num [ 6 ] strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 ) gPoint [ id ] = str_to_num ( num ) strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 ) gKills [ id ] = str_to_num ( num ) strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 ) gDeaths [ id ] = str_to_num ( num ) strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 ) gSurvives [ id ] = str_to_num ( num ) strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 ) gSuicides [ id ] = str_to_num ( num ) }
Save ( id ) { if ( is_user_bot ( id ) ) return; static data [ 256 ] new len = formatex ( data, sizeof ( data ) - 1, "%i", gPoint [ id ] ) len += formatex ( data [ len ], sizeof ( data ) - len - 1, " %i", gKills [ id ] ) len += formatex ( data [ len ], sizeof ( data ) - len - 1, " %i", gDeaths [ id ] ) len += formatex ( data [ len ], sizeof ( data ) - len - 1, " %i", gSurvives [ id ] ) len += formatex ( data [ len ], sizeof ( data ) - len - 1, " %i", gSuicides [ id ] ) nvault_set ( gVault, gAuthID [ id ], data ) new szName [ 32 ], szNameTemp [ 32 ] get_user_name ( id, szName, charsmax ( szName ) ) formatex ( szNameTemp, charsmax ( szNameTemp ), "%s", szName ) nvault_set ( gVaultNames, gAuthID [ id ], szNameTemp ) }
public CreateTop ( ) { new Array:aNames, Array:aAuths, Array:aPoint new iTotal = SortTop ( aNames, aAuths, aPoint ) new szName [ 156 ], szAuth [ 156 ] for ( new i= 0; i < 10; i++ ) { if ( i < iTotal ) { ArrayGetString ( aNames, i, szName, charsmax ( szName ) ) ArrayGetString ( aAuths, i, szAuth, charsmax ( szAuth ) ) replace_all ( szName, charsmax ( szName ), "&", "&" ) replace_all ( szName, charsmax ( szName ), "<", "<" ) replace_all ( szName, charsmax ( szName ), ">", ">" ) formatex ( gTopNames [ i + 1 ], charsmax ( gTopNames [ ] ), "%s", szName ) formatex ( gTopAuth [ i + 1 ], charsmax ( gTopAuth [ ] ), "%s", szAuth ) gTopPoints [ i + 1 ] = ArrayGetCell ( aPoint, i ) } } ArrayDestroy ( aNames ) ArrayDestroy ( aAuths ) ArrayDestroy ( aPoint ) return PLUGIN_HANDLED }
SortTop ( &Array:aNames, &Array:aAuths, &Array:aPoints ) { aNames = ArrayCreate ( 32 ) aAuths = ArrayCreate ( 35 ) aPoints = ArrayCreate ( 1 ) new hVault = nvault_util_open ( NVAULT1_NAME ) new gCount = nvault_util_count ( hVault ) new iPos, szSteamID [ 35 ], szPoints [ 11 ], iTimeStamp, szName [ 32 ] for ( new i = 0; i < gCount; i++ ) { iPos = nvault_util_read ( hVault, iPos, szSteamID, charsmax ( szSteamID ), szPoints, charsmax ( szPoints ), iTimeStamp ) nvault_get ( gVaultNames, szSteamID, szName, charsmax ( szName ) ) ArrayPushString ( aNames, szName ) ArrayPushString ( aAuths, szSteamID ) ArrayPushCell ( aPoints, str_to_num ( szPoints ) ) } nvault_util_close ( hVault ) new iPoints for ( new i = 0, j; i < ( gCount - 1 ); i++ ) { iPoints = ArrayGetCell ( aPoints, i ) for ( j = i + 1; j < gCount; j++ ) { if ( iPoints < ArrayGetCell ( aPoints, j ) ) { ArraySwap ( aNames, i, j ) ArraySwap ( aAuths, i, j ) ArraySwap ( aPoints, i, j ) i--; break; } } } return gCount }
public CmdSayRank ( id ) { new Array:aNames, Array:aAuths, Array:aPoints new iTotal = SortTop ( aNames, aAuths, aPoints ) new gAuthID2 [ 35 ], i for ( i = 0; i < iTotal; i++ ) { ArrayGetString ( aAuths, i, gAuthID2, charsmax ( gAuthID2 ) ) if ( equal ( gAuthID [ id ], gAuthID2 ) ) { new szData [ 256 ], szPoints [ 11 ] nvault_get ( gVault, gAuthID2, szData, charsmax ( szData ) ) parse ( szData, szPoints, charsmax ( szPoints ) ) ColorChat ( id, GREY, "^4[Ranking]^3 Your rank is^4 %i^3 of^4 %i^3 with^4 %i^3 points^4 %i^3 kills(^4+%i^3)^4 %i^3 deaths(^4-%i^3)^4 %i^3 survives(^4+%i^3) and^4 %i^3 suicides(^4-%i^3)", ( i + 1 ), iTotal, str_to_num ( szPoints ), gKills [ id ], (gKills [ id ] * CvarKill), gDeaths [ id ], (gDeaths [ id ] * CvarDeath ), gSurvives [ id ], (gSurvives [ id ] * CvarSurvive), gSuicides [ id ], (gSuicides [ id ] * CvarSuicide) ) } } ArrayDestroy ( aNames ) ArrayDestroy ( aAuths ) ArrayDestroy ( aPoints ) }
public CmdSayTop ( id ) { new iLen iLen = formatex ( gHtml [ iLen ], charsmax ( gHtml ) - iLen, "<STYLE>body{background:#212121;color:#d1d1d1;font-family:Arial}table{width:100%%;font-size:11px}</STYLE><table cellpadding=1 cellspacing=1 border=0>" ) iLen += formatex ( gHtml [ iLen ], charsmax ( gHtml ) - iLen, "<tr bgcolor=#333333><th width=5%%><align=left font color=white> Rank <th width=10%%> Nick <th width=10%%> Steamid <th width=10%%> Total points" ) for ( new i = 0; i < TOPRANKS; i++ ) { if ( i == 0 || i == 2 || i == 4 || i == 6 || i == 8 ) { iLen += formatex ( gHtml [ iLen ], charsmax ( gHtml ) - iLen, "<tr align=left%s><td align=left><font color=white> %i. <td> %s <td> %s <td> %i", " bgcolor=#2b5b95", ( i + 1 ), gTopNames [ i + 1 ], gTopAuth [ i + 1 ], gTopPoints [ i + 1 ] ) } else { iLen += formatex ( gHtml [ iLen ], charsmax ( gHtml ) - iLen, "<tr align=left%s><td align=left><font color=white> %i. <td> %s <td> %s <td> %i", " bgcolor=#333333", ( i + 1 ), gTopNames [ i + 1 ], gTopAuth [ i + 1 ], gTopPoints [ i + 1 ] ) } } iLen += formatex ( gHtml [ iLen ], charsmax ( gHtml ) - iLen, "</table></body>" ) show_motd ( id, gHtml, "GamePark Ranking by eNDex" ) return PLUGIN_HANDLED }
__________________
Selling:
- PointMod for Hide And Seek - $20
- Private BlockMaker with Weapon Block And More - $50
- Achievements ( FFA GamePlay ) - $25
PM Me about Private Work!
Last edited by HBxander; 11-14-2012 at 14:25.
|
|