· 6 years ago · Jul 05, 2019, 05:36 PM
1//----------------------------------------------------------
2//
3// GRAND LARCENY 1.0
4// A freeroam gamemode for SA-MP 0.3
5//
6//----------------------------------------------------------
7
8#include <a_samp>
9#include <a_mysql>
10
11#pragma tabsize 0
12
13#define DIALOG_LOGIN 1
14#define DIALOG_REGISTER 2
15
16new MySQL: MySQLCon;
17enum e_player {
18 pID, pPass[65], pName[20], Cache: Player_Cache
19}
20new pInfo[MAX_PLAYERS][e_player];
21//----------------------------------------------------------
22forward OnAccountCheck(playerid);
23
24forward OnPlayerDataCheck(playerid);
25public OnPlayerDataCheck(playerid)
26{
27 new String[150];
28
29 if(cache_num_rows() > 0)
30 {
31 cache_get_value(0, "pass", pInfo[playerid][pPass], 65);
32 pInfo[playerid][Player_Cache] = cache_save();
33 format(String, sizeof(String), "{FFFFFF}Welcome back, %s.\n\n{0099FF}This account is already registered.\n\
34 {0099FF}Please, input your password below to proceed to the game.\n\n", pInfo[playerid][pName]);
35 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login System", String, "Login", "Leave");
36 }
37 else
38 {
39 format(String, sizeof(String), "{FFFFFF}Welcome %s.\n\n{0099FF}This account is not registered.\n\
40 {0099FF}Please, input your password below to proceed to the game.\n\n", pInfo[playerid][pName]);
41 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration System", String, "Register", "Leave");
42 }
43 return 1;
44}
45
46main()
47{
48 print("\n---------------------------------------");
49 print("Running Grand Larceny - by the SA-MP team\n");
50 print("---------------------------------------\n");
51}
52
53//----------------------------------------------------------
54
55public OnPlayerConnect(playerid)
56{
57 new query[256];
58 GetPlayerName(playerid, pInfo[playerid][pName], MAX_PLAYER_NAME);
59 mysql_format(MySQLCon, query, sizeof(query), "SELECT * FROM `players` WHERE `user` = '%s' LIMIT 1", pInfo[playerid][pName]);
60 mysql_tquery(MySQLCon, query, "OnPlayerDataCheck", "i", playerid);
61
62 return 1;
63}
64
65//----------------------------------------------------------
66
67public OnPlayerSpawn(playerid)
68{
69
70 return 1;
71}
72
73//----------------------------------------------------------
74
75public OnPlayerDeath(playerid, killerid, reason)
76{
77
78 return 1;
79}
80
81//----------------------------------------------------------
82//----------------------------------------------------------
83// Used to init textdraws of city names
84
85//----------------------------------------------------------
86
87public OnPlayerRequestClass(playerid, classid)
88{
89 return 0;
90}
91
92//----------------------------------------------------------
93
94public OnGameModeInit()
95{
96 MySQLCon = mysql_connect("Host", "user", "parola", "numedb");
97 mysql_tquery(MySQLCon, "CREATE TABLE IF NOT EXISTS `players` (`ID` int(11) NOT NULL AUTO_INCREMENT,`user` varchar(24) NOT NULL,`pass` char(65) NOT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `user` (`user`))");
98 return 1;
99}
100
101//----------------------------------------------------------
102public OnPlayerUpdate(playerid)
103{
104 return 1;
105}
106public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
107 switch (dialogid)
108 {
109 case DIALOG_LOGIN:
110 {
111 if(!response) return Kick(playerid);
112
113 if(strcmp(inputtext, pInfo[playerid][pPass]) == 0)
114 {
115 cache_set_active(pInfo[playerid][Player_Cache]);
116 cache_get_value_int(0, "ID", pInfo[playerid][pID]);
117 cache_delete(pInfo[playerid][Player_Cache]);
118 pInfo[playerid][Player_Cache] = MYSQL_INVALID_CACHE;
119 SendClientMessage(playerid, 0x00FF00FF, "Logged in to the account.");
120 }
121 else
122 {
123 new String[150];
124 format(String, sizeof(String), "{FFFFFF}Welcome back, %s.\n\n{0099FF}This account is already registered.\n\
125 {0099FF}Please, input your password below to proceed to the game.\n\n", pInfo[playerid][pName]);
126 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login System", String, "Login", "Leave");
127 }
128 }
129 case DIALOG_REGISTER:
130 {
131 if(!response) return Kick(playerid);
132
133 if(strlen(inputtext) <= 5 || strlen(inputtext) > 60)
134 {
135 new String[150];
136 format(String, sizeof(String), "{FFFFFF}Welcome %s.\n\n{0099FF}This account is not registered.\n\
137 {0099FF}Please, input your password below to proceed.\n\n", pInfo[playerid][pName]);
138 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration System", String, "Register", "Leave");
139 }
140 else
141 {
142 new query[225];
143 mysql_format(MySQLCon, query, sizeof(query), "INSERT INTO `players` (`user`, `pass`)\
144 VALUES ('%e', '%s')", pInfo[playerid][pName], pInfo[playerid][pPass]);
145 mysql_tquery(MySQLCon, query, "OnPlayerRegister", "d", playerid);
146 }
147 }
148 }
149 return 1;
150}
151forward OnPlayerRegister(playerid);
152public OnPlayerRegister(playerid)
153{
154 SendClientMessage(playerid, 0x00FF00FF, "You are now registered and has been logged in.");
155 return 1;
156}
157//----------------------------------------------------------