AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Rare, but sometimes saving wrong(fvault) (https://forums.alliedmods.net/showthread.php?t=152694)

fmfs10 03-12-2011 19:20

Rare, but sometimes saving wrong(fvault)
 
Hi! I made a plugin to give players tickets per minute on my server, but sometimes it's saving wrong for some players, really rare, but it is:

PHP Code:

#include <amxmodx>
#include <fvault>
#include <hamsandwich>
#include <superheromod>

new tickets[33]

new const 
Vault[] = "tickets"

new max_playersg_iThinker

new booluser_connected[33]

public 
plugin_init( ) {     
    
    
register_plugin"NTSBR TICKETS""1.4""KoN" )
    
    
register_clcmd"say /tickets""Menu_Tickets")
    
register_clcmd"say_team /tickets""Menu_Tickets")
    
    
RegisterHamHam_Spawn"player""FwdHamPlayerSpawn" 1);
    
    
set_task(300.0"task_Save"0)
    
    
g_iThinker create_entity"info_target" );
    
    if( 
is_valid_entg_iThinker ) ) {
        
entity_set_stringg_iThinkerEV_SZ_classname"SHThinker" );
        
entity_set_floatg_iThinkerEV_FL_nextthinkget_gametime( ) + 300.0 );
        
        
register_think"SHThinker""FwdThinker" );
    }
    else
        
set_task300.0"Save"___"b" );
    
    
max_players get_maxplayers()
    
}

public 
client_putinserver(id) {
    
    
tickets[id] = 0
    
    user_connected
[id] = true
    
    set_task
60.0"add_ticket"id__"b" )
    
    new 
SZ_Name32 ]
    new 
user_tickets[10]
    
get_user_nameidSZ_Name31 )
    
    if(!
fvault_get_dataVaultSZ_Nameuser_tickets) ) return PLUGIN_HANDLED
    
    tickets
[id] = str_to_num(user_tickets)
    
    return 
PLUGIN_CONTINUE
}

public 
client_disconnect(id) {
    
    
remove_task(id)
    
    
Save(id)
    
    
user_connected[id] = false
}

public 
add_ticket(id)
    
tickets[id]++

public 
Menu_Tickets(id) {
    
    new 
menu menu_create("\rNTSBR TICKETS""menup_handler");
    
    new 
tickets_num[32]
    
    
menu_additem(menu"\w500 XP - \r120 tickets""1");
    
menu_additem(menu"\w1500 XP - \r240 tickets""2");
    
menu_additem(menu"\w4000 XP - \r480 tickets""3");
    
menu_additem(menu"\w10000 XP - \r960 tickets""4");
    
menu_additem(menu"\w25000 XP - \r1920 tickets""5");
    
menu_additem(menu"\w50000 XP - \r3000 tickets^n""6");
    
formatex(tickets_num31"\yVoce tem \r%d \yticket%s"tickets[id], tickets[id] == "" "s")
    
menu_additem(menutickets_num"7");
    
    
menu_setprop(menuMPROP_EXITNAME"Sair")
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
    
    return 
PLUGIN_HANDLED
}

public 
menup_handler(idmenuitem)
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    new 
data[6], iName[64];
    new 
accesscallback;
    
menu_item_getinfo(menuitemaccessdata,5iName63callback);
    new 
key str_to_num(data);
    
    switch(
key)
    {
        case 
1:
        {
            if(
user_has_tickets(id120)) {
                new 
name[64]
                
get_user_name(idname63)
                
log_amx("[NTSBR TICKETS]%s comprou 500XP gastando 120 tickets"name)
                
tickets[id] -= 120
                sh_set_user_xp
(id500true)
                
client_print(idprint_chat"[NTSBR] Voce recebeu 500XP!")
                
Save(id)
            }
            else
                
client_print(idprint_chat"[NTSBR] Voce nao tem tickets suficientes")
        }
        case 
2:
        {
            if(
user_has_tickets(id240)) {
                new 
name[64]
                
get_user_name(idname63)
                
log_amx("[NTSBR TICKETS]%s comprou 1500XP gastando 240 tickets"name)
                
tickets[id] -= 240
                sh_set_user_xp
(id1500true)
                
client_print(idprint_chat"[NTSBR] Voce recebeu 1500XP!")
                
Save(id)
            }
            else
                
client_print(idprint_chat"[NTSBR] Voce nao tem tickets suficientes")
        }
        case 
3:
        {
            if(
user_has_tickets(id480)) {
                new 
name[64]
                
get_user_name(idname63)
                
log_amx("[NTSBR TICKETS]%s comprou 4000XP gastando 480 tickets"name)
                
tickets[id] -= 480
                sh_set_user_xp
(id4000true)
                
client_print(idprint_chat"[NTSBR] Voce recebeu 4000XP!")
                
Save(id)
            }
            else
                
client_print(idprint_chat"[NTSBR] Voce nao tem tickets suficientes")
        }
        case 
4:
        {
            if(
user_has_tickets(id960)) {
                new 
name[64]
                
get_user_name(idname63)
                
log_amx("[NTSBR TICKETS]%s comprou 10000XP gastando 960 tickets"name)
                
tickets[id] -= 960
                sh_set_user_xp
(id10000true)
                
client_print(idprint_chat"[NTSBR] Voce recebeu 10000XP!")
                
Save(id)
            }
            else
                
client_print(idprint_chat"[NTSBR] Voce nao tem tickets suficientes")
        }
        case 
5:
        {
            if(
user_has_tickets(id1920)) {
                new 
name[64]
                
get_user_name(idname63)
                
log_amx("[NTSBR TICKETS]%s comprou 25000XP gastando 1920 tickets"name)
                
tickets[id] -= 1920
                sh_set_user_xp
(id25000true)
                
client_print(idprint_chat"[NTSBR] Voce recebeu 25000XP!")
                
Save(id)
            }
            else
                
client_print(idprint_chat"[NTSBR] Voce nao tem tickets suficientes")
        }
        case 
6:
        {
            if(
user_has_tickets(id3000)) {
                new 
name[64]
                
get_user_name(idname63)
                
log_amx("[NTSBR TICKETS]%s comprou 50000XP gastando 3000 tickets"name)
                
tickets[id] -= 3000
                sh_set_user_xp
(id50000true)
                
client_print(idprint_chat"[NTSBR] Voce recebeu 50000XP!")
                
Save(id)
            }
            else
                
client_print(idprint_chat"[NTSBR] Voce nao tem tickets suficientes")
        }
        case 
7:
        {
            
Menu_Tickets(id)
        }
    }
    
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}

public 
FwdHamPlayerSpawnid ) {
    if(!
is_user_aliveid ) )  return HAM_IGNORED;
    
    
set_task(3.0"Mensagem"id)
    
    
Save(id)
    
    return 
HAM_IGNORED;
}

public 
Mensagem(id)
    
client_print(idprint_chat"[NTSBR] Digite /tickets para trocar seus tickets por XP")

Save(id) {
    
    if(!
user_connected[id]) return PLUGIN_HANDLED
    
    
new SZ_Name[64], user_tickets[10]
    
    
get_user_nameidSZ_Name63 )
    
    
num_to_str(tickets[id], user_tickets9)
    
fvault_set_dataVaultSZ_Nameuser_tickets)
    
    return 
PLUGIN_CONTINUE
}

public 
FwdThinkeriEntity ) {
    
    for(new 
1<= max_playersi++)
        
Save(i)
    
    
entity_set_floatiEntityEV_FL_nextthinkget_gametime( ) + 300.0 );
}

stock bool:user_has_tickets(idvtickets) {
    
    if(
tickets[id] >= vtickets) return true
    
    
return false


So... what's the problem?

EDIT@

Oh and there are random numbers appearing after all the saved accounts, like "Pr0 NOOB" "123" 5641447
What's wrong?

fmfs10 03-27-2011 10:33

Re: Rare, but sometimes saving wrong(fvault)
 
bump


All times are GMT -4. The time now is 14:32.

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