06.09.2017, 09:20
i tried to learn sqlite.
on top
onplayerconnect
OnPlayerDisconnect
OnDialogResponse
ongamemodeinit
the table not show the usename
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;
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);
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;
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;
}
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)");
![](https://i.imgur.com/GvbgS52.png)