· 8 years ago · Aug 06, 2018, 07:22 AM
1#include <a_samp>
2
3#define VERSION "1.0"
4#define DIALOG_LOGIN 4999
5#define DIALOG_REGISTER 5000
6
7new pLogedIn[MAX_PLAYERS];
8
9new DB:Database;
10
11enum _login_register_infos
12{
13 lrpName[MAX_PLAYER_NAME],
14 lrpPassword[128],
15 money,
16 score
17}
18
19new lrPlayerInfos[MAX_PLAYERS][_login_register_infos];
20
21public OnFilterScriptInit()
22{
23 printf("Register/Login FilterScript by CoaPsyFactor\n Version: %s", VERSION);
24 CreateDatabase();
25 return true;
26}
27
28public OnFilterScriptExit()
29{
30 db_close(Database);
31 print("Thanks for using Register/Login Script by CoaPsyFactor");
32 return true;
33}
34
35public OnPlayerConnect(playerid)
36{
37 GetPlayerName(playerid, lrPlayerInfos[playerid][lrpName], MAX_PLAYER_NAME);
38 pLogedIn[playerid] = 0;
39 return true;
40}
41
42
43public OnPlayerRequestClass(playerid, classid)
44{
45 if(PlayerExists(playerid))
46 {
47 ShowDialog(playerid, 1);
48 }
49
50 else
51 {
52 ShowDialog(playerid, 2);
53 }
54 return 1;
55}
56public OnPlayerRequestSpawn(playerid)
57{
58 if(!pLogedIn[playerid]) return SendClientMessage(playerid, 0xAA3333AA, "You need to login first...");
59 return 1;
60}
61
62public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
63{
64 if(dialogid == DIALOG_LOGIN)
65 {
66 if(!response) return Kick(playerid);
67 if(!strcmp(inputtext, lrPlayerInfos[playerid][lrpPassword], false))
68 {
69 pLogedIn[playerid] = 1;
70 SetPlayerScore(playerid, lrPlayerInfos[playerid][score]);
71 GivePlayerMoney(playerid, lrPlayerInfos[playerid][money]);
72 SendClientMessage(playerid, 0xFFFF00AA, "You have been loged in successfully.");
73 return 1;
74 }
75 SendClientMessage(playerid, 0xAA3333AA, "Wrong password. Please try again...");
76 ShowDialog(playerid, 1);
77 return 1;
78 }else if(dialogid == DIALOG_REGISTER)
79 {
80 if(!response) return Kick(playerid);
81 if(SavePlayer(playerid, inputtext))
82 {
83 SendClientMessage(playerid, 0xFFFF00AA, "Successful registration, you are now logged in...");
84 pLogedIn[playerid] = 1;
85 return 1;
86 }
87 }
88 return 1;
89}
90public OnPlayerDisconnect(playerid,reason)
91{
92 SavePlayer(playerid, lrPlayerInfos[playerid][lrpPassword], false);
93 return 1;
94}
95
96stock ShowDialog(playerid, dialogid){
97 new String[256];
98 switch(dialogid)
99 {
100 case 1:
101 {
102 format(String, sizeof(String), "Hello %s, please login first.", lrPlayerInfos[playerid][lrpName]);
103 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Welcome, please login.", String, "Login", "Leave");
104 }
105 case 2:
106 {
107 format(String, sizeof(String), "Hello %s, please register first.", lrPlayerInfos[playerid][lrpName]);
108 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Welcome, please register.", String, "Register", "Leave");
109 }
110 }
111 return true;
112}
113
114stock PlayerExists(playerid){
115 new String[256], DBResult:Result, ReturnValue;
116 format(String,sizeof(String), "SELECT * FROM `Players` WHERE `Players`.`pName` = '%s'", lrPlayerInfos[playerid][lrpName]);
117 Result = db_query(Database, String);
118 ReturnValue = db_num_rows(Result);
119 if(ReturnValue){
120 db_get_field_assoc(Result, "pPassword", lrPlayerInfos[playerid][lrpPassword], 128);
121 db_get_field_assoc(Result, "pScore", lrPlayerInfos[playerid][score], 5);
122 db_get_field_assoc(Result, "pMoney", lrPlayerInfos[playerid][money], 11);
123 }
124 db_free_result(Result);
125 return ReturnValue;
126}
127
128stock SavePlayer(playerid, password[], insert = true){
129 new Query[512];
130 if(insert){
131 format(Query, sizeof(Query), "INSERT INTO `Players` (`pName`, `pPassword`, `pScore`, `pMoney`) VALUES ('%s', '%s', %d, %d)", lrPlayerInfos[playerid][lrpName], password, lrPlayerInfos[playerid][score], lrPlayerInfos[playerid][money]);
132 }else{
133 format(Query, sizeof(Query), "UPDATE `Players` SET `pScore` = %d , `pMoney` = %d WHERE `pName` = '%s'", lrPlayerInfos[playerid][score], lrPlayerInfos[playerid][money], lrPlayerInfos[playerid][lrpName]);
134 }
135 if(!db_free_result(db_query(Database, Query))) return 1;
136 return true;
137}
138
139stock CreateDatabase(){
140 new Query[1024];
141 Database = db_open("Players.db");
142 format(Query, sizeof(Query), "CREATE TABLE IF NOT EXISTS `Players` (`pID` INTEGER PRIMARY KEY AUTOINCREMENT, `pName` VARCHAR(24), `pPassword` VARCHAR(32), `pAdminLevel` INTEGER, `pScore` INTEGER, `pWeapon1` INTEGER, `pWeapon2` INTEGER, `pWeapon3` INTEGER, `pMoney` INTEGER, `pJoinDate` VARCHAR(32))");
143 if(!db_free_result(db_query(Database, Query))) return 1;
144 return true;
145}