| iTzLeandro |
10-30-2011 17:27 |
Rare, but sometimes saving wrong(fvault)
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?
|