|
Senior Member
Join Date: Mar 2009
Location: Brasil
|

03-12-2011
, 19:20
Rare, but sometimes saving wrong(fvault)
|
#1
|
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_players, g_iThinker
new bool: user_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") RegisterHam( Ham_Spawn, "player", "FwdHamPlayerSpawn" , 1); set_task(300.0, "task_Save", 0) g_iThinker = create_entity( "info_target" ); if( is_valid_ent( g_iThinker ) ) { entity_set_string( g_iThinker, EV_SZ_classname, "SHThinker" ); entity_set_float( g_iThinker, EV_FL_nextthink, get_gametime( ) + 300.0 ); register_think( "SHThinker", "FwdThinker" ); } else set_task( 300.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_Name[ 32 ] new user_tickets[10] get_user_name( id, SZ_Name, 31 ) if(!fvault_get_data( Vault, SZ_Name, user_tickets, 9 ) ) 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_num, 31, "\yVoce tem \r%d \yticket%s", tickets[id], tickets[id] == 1 ? "" : "s") menu_additem(menu, tickets_num, "7"); menu_setprop(menu, MPROP_EXITNAME, "Sair") menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_display(id, menu, 0); return PLUGIN_HANDLED }
public menup_handler(id, menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[6], iName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,5, iName, 63, callback); new key = str_to_num(data); switch(key) { case 1: { if(user_has_tickets(id, 120)) { new name[64] get_user_name(id, name, 63) log_amx("[NTSBR TICKETS]%s comprou 500XP gastando 120 tickets", name) tickets[id] -= 120 sh_set_user_xp(id, 500, true) client_print(id, print_chat, "[NTSBR] Voce recebeu 500XP!") Save(id) } else client_print(id, print_chat, "[NTSBR] Voce nao tem tickets suficientes") } case 2: { if(user_has_tickets(id, 240)) { new name[64] get_user_name(id, name, 63) log_amx("[NTSBR TICKETS]%s comprou 1500XP gastando 240 tickets", name) tickets[id] -= 240 sh_set_user_xp(id, 1500, true) client_print(id, print_chat, "[NTSBR] Voce recebeu 1500XP!") Save(id) } else client_print(id, print_chat, "[NTSBR] Voce nao tem tickets suficientes") } case 3: { if(user_has_tickets(id, 480)) { new name[64] get_user_name(id, name, 63) log_amx("[NTSBR TICKETS]%s comprou 4000XP gastando 480 tickets", name) tickets[id] -= 480 sh_set_user_xp(id, 4000, true) client_print(id, print_chat, "[NTSBR] Voce recebeu 4000XP!") Save(id) } else client_print(id, print_chat, "[NTSBR] Voce nao tem tickets suficientes") } case 4: { if(user_has_tickets(id, 960)) { new name[64] get_user_name(id, name, 63) log_amx("[NTSBR TICKETS]%s comprou 10000XP gastando 960 tickets", name) tickets[id] -= 960 sh_set_user_xp(id, 10000, true) client_print(id, print_chat, "[NTSBR] Voce recebeu 10000XP!") Save(id) } else client_print(id, print_chat, "[NTSBR] Voce nao tem tickets suficientes") } case 5: { if(user_has_tickets(id, 1920)) { new name[64] get_user_name(id, name, 63) log_amx("[NTSBR TICKETS]%s comprou 25000XP gastando 1920 tickets", name) tickets[id] -= 1920 sh_set_user_xp(id, 25000, true) client_print(id, print_chat, "[NTSBR] Voce recebeu 25000XP!") Save(id) } else client_print(id, print_chat, "[NTSBR] Voce nao tem tickets suficientes") } case 6: { if(user_has_tickets(id, 3000)) { new name[64] get_user_name(id, name, 63) log_amx("[NTSBR TICKETS]%s comprou 50000XP gastando 3000 tickets", name) tickets[id] -= 3000 sh_set_user_xp(id, 50000, true) client_print(id, print_chat, "[NTSBR] Voce recebeu 50000XP!") Save(id) } else client_print(id, print_chat, "[NTSBR] Voce nao tem tickets suficientes") } case 7: { Menu_Tickets(id) } } menu_destroy(menu); return PLUGIN_HANDLED; }
public FwdHamPlayerSpawn( id ) { if(!is_user_alive( id ) ) return HAM_IGNORED; set_task(3.0, "Mensagem", id) Save(id) return HAM_IGNORED; }
public Mensagem(id) client_print(id, print_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_name( id, SZ_Name, 63 ) num_to_str(tickets[id], user_tickets, 9) fvault_set_data( Vault, SZ_Name, user_tickets) return PLUGIN_CONTINUE }
public FwdThinker( iEntity ) { for(new i = 1; i <= max_players; i++) Save(i) entity_set_float( iEntity, EV_FL_nextthink, get_gametime( ) + 300.0 ); }
stock bool:user_has_tickets(id, vtickets) { 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?
Last edited by fmfs10; 03-12-2011 at 19:24.
|
|