#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,
 
    
boolUSER_LOGGED_IN
};
new 
User[MAX_PLAYERS][USER_DATA];
new 
DBDatabase
onplayerconnect

PHP код:
new Query[71], DBResultResult;
            
format(Querysizeof Query"SELECT password FROM users WHERE username = '%q' LIMIT 1"DB_Escape(User[playerid][USER_NAME]));
            
Result db_query(DatabaseQuery);
            if(
db_num_rows(Result))
            {
                
db_get_field_assoc(Result"password"User[playerid][USER_PASSWORD], 129);
                
ShowPlayerDialog(playerid0DIALOG_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(playerid1DIALOG_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(Querysizeof(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(DatabaseQuery);
            }
            for(new 
i_USER_DATA; ++iUser[playerid][USER_DATAi] = 0
OnDialogResponse

PHP код:
if(dialogid == 0)
    {
        if(
response)
        {                               
            if(!
inputtext[0]) return ShowPlayerDialog(playerid0DIALOG_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(buf129inputtext);
            if(!
strcmp(bufUser[playerid][USER_PASSWORD], false))
            {
                new 
Query[75], DBResultResult;
                
format(Querysizeof Query"SELECT * FROM users WHERE username = '%q' LIMIT 1"DB_Escape(User[playerid][USER_NAME]));
                
Result db_query(DatabaseQuery);
                if(
db_num_rows(Result))
                {
                    
db_get_field_assoc(Result"userid"Query7);
                    
User[playerid][USER_ID] = strval(Query);
 
                    
db_get_field_assoc(Result"admin"Query3);
                    
User[playerid][USER_ADMIN] = strval(Query);
 
                    
db_get_field_assoc(Result"vip"Query3);
                    
User[playerid][USER_VIP] = strval(Query);
 
                    
db_get_field_assoc(Result"money"Query10);
                    
User[playerid][USER_MONEY] = strval(Query);
 
                    
db_get_field_assoc(Result"score"Query7);
                    
User[playerid][USER_SCORE] = strval(Query);
 
                    
db_get_field_assoc(Result"kills"Query10);
                    
User[playerid][USER_KILLS] = strval(Query);
 
                    
db_get_field_assoc(Result"deaths"Query10);
                    
User[playerid][USER_DEATHS] = strval(Query);
 
                    
db_get_field_assoc(Result"kd"Query10);
                    
User[playerid][USER_KD] = strval(Query);
 
                    
User[playerid][USER_LOGGED_IN] = true;
 
                    
GivePlayerMoney(playeridUser[playerid][USER_MONEY]);
                    
SetPlayerScore(playeridUser[playerid][USER_SCORE]);
 
                    
SendClientMessage(playeridCOLOR_AQUA"You have successfully logged in to your account!");
                }
                
db_free_result(Result);
            }
            else
            {
                
SendClientMessage(playerid, -1""red" "red"Incorrect password!");
                
ShowPlayerDialog(playerid0DIALOG_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 
ip16 ];
            
GetPlayerIp(playeridipsizeof(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(playerid1DIALOG_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) < || strlen(inputtext) > 24)
                {
                    
SendClientMessage(playerid, -1""red" "red"The password is invalid, Its lenght should be 3-24 characters");
                    
ShowPlayerDialog(playerid1DIALOG_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], 129inputtext);
                
format(Querysizeof(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(DatabaseQuery);
 
                
User[playerid][USER_LOGGED_IN] = true;
                
SendClientMessage(playerid0x00FF00FF"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: 2 Guest(s)