Save Stats Help
#1

Hi!

I have created my own admin system with zcmd and MySQL. The problem is that when someone connects to the server he takes some money or score. When he disconnects and connects again his stats are the same as the beginning! Any help?

My script:
PHP код:
#include <a_samp>
#include <a_sampdb>
#include <zcmd>
#include <sscanf2>
//Defines
#define IsConnect(%0) IsPlayerConnected(%0)
#define SPD(%0,%1,%2,%3,%4,%5,%6) ShowPlayerDialog(%0,%1,%2,%3,%4,%5,%6)
//Dialogs
#define DIALOG_REG 1
#define DIALOG_LOG 2
#define DIALOG_ADMINS 3
#define CMDS_ADMIN 4
#define SERVER_HELP 5
#define SERVER_TELES 6
#define LIGHTBLUE2 0xF6BB0AA
//enums
enum P{
    
money,
    
alevel,
    
score,
    
password[256],
    
kills,
    
deths,
    
bool:mute,
    
pCar,
    
bool:Agoto,
    
bool:jail
}
//Global Vairables
new DB:database;
new 
P_DATA[MAX_PLAYERS][P];
new 
IsPlayerInDMgoto[MAX_PLAYERS];
new 
IsPlayerInDMforspamit[MAX_PLAYERS];
new 
VehicleNames[212][] = {
{
"Landstalker"},{"Bravura"},{"Buffalo"},{"Linerunner"},{"Perrenial"},{"Sentinel"},{"Dumper"},
{
"Firetruck"},{"Trashmaster"},{"Stretch"},{"Manana"},{"Infernus"},{"Voodoo"},{"Pony"},{"Mule"},
{
"Cheetah"},{"Ambulance"},{"Leviathan"},{"Moonbeam"},{"Esperanto"},{"Taxi"},{"Washington"},
{
"Bobcat"},{"Mr Whoopee"},{"BF Injection"},{"Hunter"},{"Premier"},{"Enforcer"},{"Securicar"},
{
"Banshee"},{"Predator"},{"Bus"},{"Rhino"},{"Barracks"},{"Hotknife"},{"Trailer 1"},{"Previon"},
{
"Coach"},{"Cabbie"},{"Stallion"},{"Rumpo"},{"RC Bandit"},{"Romero"},{"Packer"},{"Monster"},
{
"Admiral"},{"Squalo"},{"Seasparrow"},{"Pizzaboy"},{"Tram"},{"Trailer 2"},{"Turismo"},
{
"Speeder"},{"Reefer"},{"Tropic"},{"Flatbed"},{"Yankee"},{"Caddy"},{"Solair"},{"Berkley's RC Van"},
{
"Skimmer"},{"PCJ-600"},{"Faggio"},{"Freeway"},{"RC Baron"},{"RC Raider"},{"Glendale"},{"Oceanic"},
{
"Sanchez"},{"Sparrow"},{"Patriot"},{"Quad"},{"Coastguard"},{"Dinghy"},{"Hermes"},{"Sabre"},
{
"Rustler"},{"ZR-350"},{"Walton"},{"Regina"},{"Comet"},{"BMX"},{"Burrito"},{"Camper"},{"Marquis"},
{
"Baggage"},{"Dozer"},{"Maverick"},{"News Chopper"},{"Rancher"},{"FBI Rancher"},{"Virgo"},{"Greenwood"},
{
"Jetmax"},{"Hotring"},{"Sandking"},{"Blista Compact"},{"Police Maverick"},{"Boxville"},{"Benson"},
{
"Mesa"},{"RC Goblin"},{"Hotring Racer A"},{"Hotring Racer B"},{"Bloodring Banger"},{"Rancher"},
{
"Super GT"},{"Elegant"},{"Journey"},{"Bike"},{"Mountain Bike"},{"Beagle"},{"Cropdust"},{"Stunt"},
{
"Tanker"}, {"Roadtrain"},{"Nebula"},{"Majestic"},{"Buccaneer"},{"Shamal"},{"Hydra"},{"FCR-900"},
{
"NRG-500"},{"HPV1000"},{"Cement Truck"},{"Tow Truck"},{"Fortune"},{"Cadrona"},{"FBI Truck"},
{
"Willard"},{"Forklift"},{"Tractor"},{"Combine"},{"Feltzer"},{"Remington"},{"Slamvan"},
{
"Blade"},{"Freight"},{"Streak"},{"Vortex"},{"Vincent"},{"Bullet"},{"Clover"},{"Sadler"},
{
"Firetruck LA"},{"Hustler"},{"Intruder"},{"Primo"},{"Cargobob"},{"Tampa"},{"Sunrise"},{"Merit"},
{
"Utility"},{"Nevada"},{"Yosemite"},{"Windsor"},{"Monster A"},{"Monster B"},{"Uranus"},{"Jester"},
{
"Sultan"},{"Stratum"},{"Elegy"},{"Raindance"},{"RC Tiger"},{"Flash"},{"Tahoma"},{"Savanna"},
{
"Bandito"},{"Freight Flat"},{"Streak Carriage"},{"Kart"},{"Mower"},{"Duneride"},{"Sweeper"},
{
"Broadway"},{"Tornado"},{"AT-400"},{"DFT-30"},{"Huntley"},{"Stafford"},{"BF-400"},{"Newsvan"},
{
"Tug"},{"Trailer 3"},{"Emperor"},{"Wayfarer"},{"Euros"},{"Hotdog"},{"Club"},{"Freight Carriage"},
{
"Trailer 3"},{"Andromada"},{"Dodo"},{"RC Cam"},{"Launch"},{"Police Car (LSPD)"},{"Police Car (SFPD)"},
{
"Police Car (LVPD)"},{"Police Ranger"},{"Picador"},{"S.W.A.T. Van"},{"Alpha"},{"Phoenix"},{"Glendale"},
{
"Sadler"},{"Luggage Trailer A"},{"Luggage Trailer B"},{"Stair Trailer"},{"Boxville"},{"Farm Plow"},
{
"Utility Trailer"}
};
new 
AntiSpawnTimer;
//forwards
forward Timer_ProcessMutes();
forward GOD(playerid);
//functions
Login(playerid){
    new 
name[MAX_PLAYER_NAME],q[256],DBResult:res,fields[256];
    
GetPlayerName(playerid,name,sizeof(name));
    
format(q,sizeof(q),"SELECT * FROM Account WHERE username='%s'",name);
    
res db_query(database,q);
    
db_get_field_assoc(res,"score",fields,sizeof(fields)); P_DATA[playerid][score] = strval(fields); SetPlayerScore(playerid,P_DATA[playerid][score]);
    
db_get_field_assoc(res,"money",fields,sizeof(fields)); P_DATA[playerid][money] = strval(fields); SetCash(playerid,P_DATA[playerid][money]);
    
db_get_field_assoc(res,"kills",fields,sizeof(fields)); P_DATA[playerid][kills] = strval(fields);
    
db_get_field_assoc(res,"deths",fields,sizeof(fields)); P_DATA[playerid][deths] = strval(fields);
    
db_get_field_assoc(res,"alevel",fields,sizeof(fields)); P_DATA[playerid][alevel] = strval(fields);
    return 
1;
}
strtok(const string[], &index)
{
    new 
length strlen(string);
    while ((
index length) && (string[index] <= ' '))
    {
        
index++;
    }
    new 
offset index;
    new 
result[20];
    while ((
index length) && (string[index] > ' ') && ((index offset) < (sizeof(result) - 1)))
    {
        
result[index offset] = string[index];
        
index++;
    }
    
result[index offset] = EOS;
    return 
result;
}
GetVehicleModelIDFromName(vname[])
{
    for(new 
0211i++)
    {
    if ( 
strfind(VehicleNames[i], vnametrue) != -)
    return 
400;
    }
    return -
1;
}
ResetPlayer(playerid){
    
P_DATA[playerid][jail] = false;
    
P_DATA[playerid][Agoto] = true;
    
P_DATA[playerid][pCar] = -1;
    
P_DATA[playerid][mute] = false;
    
P_DATA[playerid][money] = 0;
    
P_DATA[playerid][alevel] = 0;
    
P_DATA[playerid][score] = 0;
    
P_DATA[playerid][kills] = 0;
    
P_DATA[playerid][deths] = 0;
    return 
1;
}
SetCash(playerid,cash){
    
ResetPlayerMoney(playerid);
    
GivePlayerMoney(playerid,cash);
    return 
1;
}
Save(playerid){
    new 
name[MAX_PLAYER_NAME],q[256];
    
GetPlayerName(playerid,name,sizeof(name));
    
format(q,sizeof(q),"UPDATE Account SET alevel = '%i',score = '%i',money='%i',kills='%i',deths='%i', WHERE username='%s'",
    
P_DATA[playerid][alevel],GetPlayerScore(playerid),GetPlayerMoney(playerid),P_DATA[playerid][kills],P_DATA[playerid][deths],name);
    
db_free_result(db_query(database,q));
    return 
1;
}
stock GetPlayersName(playerid)
{
    new 
pName[32];
    
GetPlayerName(playerid,pName,32);
    return 
pName;
}
public 
OnGameModeInit(){
    
SetTimer("Timer_ProcessMutes",1000,true);
    
database=db_open("server");
    
db_free_result(db_query(database,"CREATE TABLE IF NOT EXISTS Account (username VARCHAR(24),password VARCHAR(256),alevel INTEGER DEFAULT 0 NOT NULL,score INTEGER DEFAULT 0 NOT NULL,money INTEGER DEFAULT 0 NOT NULL,kills INTEGER DEFAULT 0 NOT NULL,deths INTEGER DEFAULT 0 NOT NULL)"));
    return 
1;
}
public 
OnGameModeExit(){
    
db_close(database);
    return 
1;
}
public 
OnPlayerDisconnect(playerid,reason){
    
KillTimer(AntiSpawnTimer);
    
Save(playerid);
    return 
1;
}
public 
OnPlayerText(playeridtext[])
{
    if(
text[0] == '/' && P_DATA[playerid][jail] == true && strlen(text) > 1){
        
SendClientMessage(playerid,-1,"You cannot use any command in jail");
        return 
0;
    }
     if(
P_DATA[playerid][mute] == true){
         
SendClientMessage(playerid,-1,"{FFFFFF}You are muted! You{FF0000} can't{FFFFFF} talk!");
         return 
0;
    }
     return 
1;
}
public 
OnPlayerConnect(playerid){
    
ResetPlayer(playerid);
    new 
name[MAX_PLAYER_NAME],q[256],DBResult:Result;
    
GetPlayerName(playerid,name,sizeof(name));
    
format(q,sizeof(q),"SELECT password FROM Account WHERE username='%s'",name);
    
Result db_query(database,q);
    if(
db_num_rows(Result)){
        new 
field[256];
        
db_get_field_assoc(Result,"password",field,sizeof(field)); format(P_DATA[playerid][password],256,"%s",field);
        
ShowPlayerDialog(playerid,DIALOG_LOG,DIALOG_STYLE_PASSWORD,"{FF0000}Login","{FFFFFF}Welcome back to the server!\n\nType your password to Login:","Login","Quit");
    }
    else{
        
ShowPlayerDialog(playerid,DIALOG_REG,DIALOG_STYLE_PASSWORD,"{FF0000}Register","{FFFFFF}Welcome to our server for the first time!\nType your new password to register an account!","Register","Quit");
    }
    return 
1;
}
public 
OnPlayerSpawn(playerid)
{
    
IsPlayerInDMgoto[playerid] = false;
    
IsPlayerInDMforspamit[playerid] = false;
    
SetPlayerVirtualWorld(playerid0);
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    switch(
dialogid){
        case 
DIALOG_LOG:{
            if(!
response)return Kick(playerid);
            if(
strcmp(inputtext,P_DATA[playerid][password],true))return ShowPlayerDialog(playerid,DIALOG_LOG,DIALOG_STYLE_PASSWORD,"{FF0000}Login Error","{FF0000}Wrong password!\n\n\n{FFFFFF}Try again:","Login","Quit");
            
Login(playerid);
        }
    
        case 
DIALOG_REG:{
            if(!
response)return Kick(playerid);
            if(
strlen(inputtext) == 0)return ShowPlayerDialog(playerid,DIALOG_REG,DIALOG_STYLE_PASSWORD,"{FF0000}Register","{FFFFFF}Welcome to our server for the first time!\nType your new password to register an account!","Register","Quit");
            new 
name[MAX_PLAYER_NAME],q[256],DBResult:Res;
            
GetPlayerName(playerid,name,sizeof(name));
            
format(q,sizeof(q),"INSERT INTO Account (username,password) VALUES ('%s','%s')",name,inputtext);
            
Res db_query(database,q);
            
db_free_result(Res);
        }
    
    }
    return 
1;

Reply
#2

Hello!

PHP код:
format(q,sizeof(q),"UPDATE Account SET alevel = '%i',score = '%i',money='%i',kills='%i',deths='%i', WHERE username='%s'"
to
PHP код:
format(q,sizeof(q),"UPDATE Account SET alevel = '%i',score = '%i',money='%i',kills='%i',deths='%i' WHERE username='%s'"
(It's in the saving function)


- Mencent
Reply
#3

THANKS OMG +1 REP
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)