#1

i tried to learn sqlite.

on top

PHP код:
native WP_Hash(buffer[], len, const str[]);
enum USER_DATA
{
    
USER_ID,
    
USER_NAME[MAX_PLAYER_NAME],
    
USER_PASSWORD[129],
    
USER_ADMIN,
    
USER_VIP,
    
USER_MONEY,
    
USER_SCORE,
    
USER_KILLS,
    
USER_DEATHS,
    
USER_KD,
 
    
bool: USER_LOGGED_IN
};
new 
User[MAX_PLAYERS][USER_DATA];
new 
DB: Database; 
onplayerconnect

PHP код:
new Query[71], DBResult: Result;
            
format(Query, sizeof Query, "SELECT password FROM users WHERE username = '%q' LIMIT 1", DB_Escape(User[playerid][USER_NAME]));
            
Result = db_query(Database, Query);
            if(
db_num_rows(Result))
            {
                
db_get_field_assoc(Result, "password", User[playerid][USER_PASSWORD], 129);
                
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, ""green"CC_BUKIT"green" Login pannel", ""green" Please login to play on "green"FREEMODE/STUNT/DEATHMATCH.\n"green"Enter your "green"password"green":", "Login", "Exit");
            }
            else 
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, ""green"CC_BUKIT"green" Register pannel", ""green" Please register to play on "green"FREEMODE/STUNT/DEATHMATCH.\n"green"Enter a "green"password"green":", "Register", "Exit");
            
db_free_result(Result); 
OnPlayerDisconnect

PHP код:
if(User[playerid][USER_LOGGED_IN] == true)
            {
                new 
Query[128];
                
format(Query, sizeof(Query), "UPDATE users SET admin = %d, vip = %d, money = %d, score = %d, kills = %d, deaths = %d, kd = %d WHERE username = '%s'", User[playerid][USER_ADMIN], User[playerid][USER_VIP], GetPlayerMoney(playerid), GetPlayerScore(playerid), User[playerid][USER_KILLS], User[playerid][USER_DEATHS], User[playerid][USER_KD], DB_Escape(User[playerid][USER_NAME]));
                
db_query(Database, Query);
            }
            for(new 
i; i < _: USER_DATA; ++i) User[playerid][USER_DATA: i] = 0; 
OnDialogResponse

PHP код:
if(dialogid == 0)
    {
        if(
response)
        {                               
            if(!
inputtext[0]) return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, ""green"CC_BUKIT"green" Login pannel", ""green" Please login to play on "green"FREEMODE/STUNT/DEATHMATCH.\n"green"Enter your "green"password"green":", "Login", "Exit");
            new 
buf[129];
            
WP_Hash(buf, 129, inputtext);
            if(!
strcmp(buf, User[playerid][USER_PASSWORD], false))
            {
                new 
Query[75], DBResult: Result;
                
format(Query, sizeof Query, "SELECT * FROM users WHERE username = '%q' LIMIT 1", DB_Escape(User[playerid][USER_NAME]));
                
Result = db_query(Database, Query);
                if(
db_num_rows(Result))
                {
                    
db_get_field_assoc(Result, "userid", Query, 7);
                    
User[playerid][USER_ID] = strval(Query);
 
                    
db_get_field_assoc(Result, "admin", Query, 3);
                    
User[playerid][USER_ADMIN] = strval(Query);
 
                    
db_get_field_assoc(Result, "vip", Query, 3);
                    
User[playerid][USER_VIP] = strval(Query);
 
                    
db_get_field_assoc(Result, "money", Query, 10);
                    
User[playerid][USER_MONEY] = strval(Query);
 
                    
db_get_field_assoc(Result, "score", Query, 7);
                    
User[playerid][USER_SCORE] = strval(Query);
 
                    
db_get_field_assoc(Result, "kills", Query, 10);
                    
User[playerid][USER_KILLS] = strval(Query);
 
                    
db_get_field_assoc(Result, "deaths", Query, 10);
                    
User[playerid][USER_DEATHS] = strval(Query);
 
                    
db_get_field_assoc(Result, "kd", Query, 10);
                    
User[playerid][USER_KD] = strval(Query);
 
                    
User[playerid][USER_LOGGED_IN] = true;
 
                    
GivePlayerMoney(playerid, User[playerid][USER_MONEY]);
                    
SetPlayerScore(playerid, User[playerid][USER_SCORE]);
 
                    
SendClientMessage(playerid, COLOR_AQUA, "You have successfully logged in to your account!");
                }
                
db_free_result(Result);
            }
            else
            {
                
SendClientMessage(playerid, -1, ""red" "red"Incorrect password!");
                
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, ""green"CC_BUKIT"green" Login pannel", ""green" Please login to play on "green"FREEMODE/STUNT/DEATHMATCH.\n"green"Enter your "green"password"green":", "Login", "Exit");
 
            }
        }
        else 
Kick(playerid);
        return 
1;
    }
    if(
dialogid == 1)
    {
            new 
ip[ 16 ];
            
GetPlayerIp(playerid, ip, sizeof(ip));
            if(
response)
            {
                if(!
IsValidPassword(inputtext))
                {
                    
SendClientMessage(playerid, -1, ""red" "red"The password is invalid, Valid characters are: A-Z, a-z, 0-9");
                    
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, ""green"CC_BUKIT"green" Register pannel", ""green" Please register to play on "green"FREEMODE/STUNT/DEATHMATCH.\n"green"Enter a "green"password"green":", "Register", "Exit");
                    return 
1;
                }
                if(
strlen(inputtext) < 3 || strlen(inputtext) > 24)
                {
                    
SendClientMessage(playerid, -1, ""red" "red"The password is invalid, Its lenght should be 3-24 characters");
                    
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, ""green"CC_BUKIT"green" Register pannel", ""green" Please register to play on "green"FREEMODE/STUNT/DEATHMATCH.\n"green"Enter a "green"password"green":", "Register", "Exit");
                    return 
1;
                }
                new 
Query[208];
                
WP_Hash(User[playerid][USER_PASSWORD], 129, inputtext);
                
format(Query, sizeof(Query), "INSERT INTO users (username, password , IP) VALUES ('%s', '%s' , '%s') ", DB_Escape(User[playerid][USER_NAME]), DB_Escape(User[playerid][USER_PASSWORD]) ,DB_Escape(ip));
                
db_query(Database, Query);
 
                
User[playerid][USER_LOGGED_IN] = true;
                
SendClientMessage(playerid, 0x00FF00FF, "You have just registered to our server! You have been automatically logged in!");
            }
            else 
Kick(playerid);
            return 
1;
    }
    return 
1;
} 
ongamemodeinit

PHP код:
Database = db_open("server.db");
        
db_query(Database, "CREATE TABLE IF NOT EXISTS users (userid INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR(24) COLLATE NOCASE, password VARCHAR(129), admin INTEGER DEFAULT 0 NOT NULL, vip INTEGER DEFAULT 0 NOT NULL, money INTEGER DEFAULT 0 NOT NULL, score INTEGER DEFAULT 0 NOT NULL, kills INTEGER DEFAULT 0 NOT NULL, deaths INTEGER DEFAULT 0 NOT NULL, kd INTEGER DEFAULT 0 NOT NULL, IP INTEGER DEFAULT 0 NOT NULL)"); 
the table not show the usename

Reply
#2

he show all the code.
Reply
#3

anyone
Reply
#4

I'm not familiar with the SQLite's format specifiers, however I do have a question. Why did you use this?

Quote:

format(Query, sizeof Query, "SELECT password FROM users WHERE username = '%q' LIMIT 1", DB_Escape(User[playerid][USER_NAME]));

I assume that it's a format specifier for escape string? If you could clarify that it's indeed correct and not a mistake then I cannot think of any other solution apart from trying to change it to %s.

I however might be wrong.

~iSpark
Reply
#5

same not working
Reply
#6

Quote:
Originally Posted by asri
Посмотреть сообщение
same not working
Try updating the %q -> %s where you push in the query when the player joins for the first time (Register case).
Reply
#7

same i try to %s but not working
Reply
#8

Stupid question perhaps, but where do you actually assign a value to the name variable? From the code you posted it just seems like you're inserting an empty string.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)