· 4 years ago · Aug 09, 2021, 09:22 PM
1in tutorials... it says if i want to add a new database coloumn
2first i add it to my
3
4enum player_data
5{
6 player_money, //manually added but didnt work
7 player_kills,
8 player_deaths,
9 bool:player_logged
10};
11
12
13then add it to my saveaccount stock
14stock SaveAccount(playerid)
15{
16 new query[256];
17 if(PlayerData[playerid][player_logged] == true)
18 {
19 format(query, sizeof(query),
20 "UPDATE `USERS` SET SCORE = '%d', MONEY = '%d' //added manually without tutorial] , KILLS = '%d', DEATHS = '%d' WHERE `NAME` = '%s' COLLATE NOCASE", GetPlayerScore(playerid), PlayerData[playerid][player_money], PlayerData[playerid][player_kills], PlayerData[playerid][player_deaths], DB_Escape(GetName(playerid)));
21 database_result = db_query(server_database, query);
22 db_free_result(database_result);
23 }
24 return 1;
25}
26
27then create the column
28public OnFilterScriptInit()
29{
30 server_database = db_open(SERVER_DATABASE);
31
32 db_query(server_database, "CREATE TABLE IF NOT EXISTS `USERS` (`NAME`, `PASS`,`MONEY`, `SCORE`, `KILLS`, `DEATHS`)");
33 return 1;
34}
35THEN i add it into my forward OnPlayerRegister and OnPlayerLogin
36
37
38forward OnPlayerLogin(playerid, bool:success);
39public OnPlayerLogin(playerid, bool:success)
40{
41 if(success)
42 {
43 new query[256], field[24];
44 format(query, sizeof(query), "SELECT * FROM `USERS` WHERE `NAME` = '%s' COLLATE NOCASE", DB_Escape(GetName(playerid)));
45 database_result = db_query(server_database, query);
46 if(db_num_rows(database_result))
47 {
48 db_get_field_assoc(database_result, "SCORE", field, sizeof(field));
49 SetPlayerScore(playerid, strval(field));
50
51 db_get_field_assoc(database_result, "KILLS", field, sizeof(field));
52 PlayerData[playerid][player_kills] = strval(field);
53
54 db_get_field_assoc(database_result, "DEATHS", field, sizeof(field));
55 PlayerData[playerid][player_deaths] = strval(field);
56
57 db_get_field_assoc(database_result, "MONEY", field, sizeof(field));
58 PlayerData[playerid][player_money] = strval(field);
59 }
60
61 db_free_result(database_result);
62
63 PlayerData[playerid][player_logged] = true;
64
65 SendClientMessage(playerid, yellow, "You have successfully logged into your account.");
66 return 1;
67 }
68 else
69 {
70 Kick(playerid);
71 }
72 return 1;
73}
74
75forward OnPlayerRegister(playerid);
76public OnPlayerRegister(playerid)
77{
78 new password[64];
79 bcrypt_get_hash(password);
80
81 new query[256];
82 format(query, sizeof(query), "INSERT INTO `USERS` (`NAME`, `PASS`,`MONEY`, `SCORE`, `KILLS`, `DEATHS`) VALUES ('%s', '%s','%d', '%d', '%d', '%d')", DB_Escape(GetName(playerid)), password ,GetPlayerMoney(playerid), GetPlayerScore(playerid), PlayerData[playerid][player_kills], PlayerData[playerid][player_deaths]);
83 database_result = db_query(server_database, query);
84 db_free_result(database_result);
85
86 PlayerData[playerid][player_logged] = true;
87
88 SendClientMessage(playerid, yellow, "You have successfully registered an account.");
89 return 1;
90}
91
92BUT THE MONEY DOESNT SAVE AND WHEN I CHECKED THE SERVER.DB THE MONEY COLUMN WAS THERE
93