I am having a problem with a saving on hand money plugin that bugsy posted a while back
*mp_startmoney set to 800
If a user disconnects with 16000, and reconnects back to the server, his money is restored back to 16000, which is correct.
The problem occurs when someone joins the server, and another person joins. (Game Will Start In 3.2.1 is initialized) and when that happens the money that was loaded, disappears and you get whatever mp_startmoney is set to (16000 becomes 800).
Plugin (Restore Money by Bugsy):
Code:
#include <amxmodx>
#include <cstrike>
#include <nvault>
#include <fakemeta>
#include <hamsandwich>
const OFFSET_CSMONEY = 115;
new g_szAuthID[33][35];
new g_iMoney[33];
new g_Vault;
new g_pStartMoney;
new bool:g_bRestored[33];
public plugin_init()
{
register_plugin("Restore Money" , "0.1" , "bugsy");
RegisterHam(Ham_Spawn , "player" , "fw_HamSpawn_Post" , 1);
g_pStartMoney = get_cvar_pointer("MP_STARTMONEY");
g_Vault = nvault_open("LoadMoney");
}
public plugin_end()
{
nvault_close(g_Vault);
}
public client_authorized(id)
{
get_user_authid( id , g_szAuthID[id] , charsmax( g_szAuthID[] ) );
}
public client_putinserver(id)
{
if ( g_szAuthID[id][0] )
{
g_bRestored[id] = true;
set_task( 1.0 , "LoadMoney" , id );
}
}
public client_disconnect(id)
{
remove_task(id);
SaveMoney(id);
g_szAuthID[id][0] = EOS;
}
public fw_HamSpawn_Post(id)
{
if( ( g_szAuthID[id][0] && !g_bRestored[id] ) && is_user_alive(id) )
{
g_bRestored[id] = true;
LoadMoney(id);
}
}
public SaveMoney(id)
{
new szKey[39] , szData[9];
formatex( szKey , charsmax(szKey) , "%s-SVB" , g_szAuthID[id] );
num_to_str( get_pdata_int(id , OFFSET_CSMONEY) , szData , charsmax(szData) );
g_bRestored[id] = false;
nvault_set( g_Vault , szKey , szData );
}
public LoadMoney(id)
{
new szKey[39];
formatex( szKey , charsmax(szKey) , "%s-SVB" , g_szAuthID[id] );
if ( (g_iMoney[id] = nvault_get( g_Vault ,szKey) ) && ( g_iMoney[id] != get_pcvar_num(g_pStartMoney) ) )
{
cs_set_user_money( id , g_iMoney[id] );
client_print( id , print_chat , "* Your money has been restored from a previous session: $%d" , g_iMoney[id] );
}
}
__________________