· 8 years ago · Jul 24, 2018, 06:48 PM
1function onPlayerCommand( player, cmd, text )
2{
3 cmd = cmd.tolower();
4
5 if ( cmd == "register" )
6 {
7 if(Registered( player )) MessagePlayer("Error: you are already registered!",player);
8 else if(!text) MessagePlayer("Error: /" + cmd + " <password>",player);
9 else RegisterUser( player,text);
10 }
11
12 else if( cmd == "login" )
13 {
14 if(!Registered( player )) MessagePlayer("Error: you haven't registered your account!",player);
15 else if ( LoggedIn( player ) == 1 ) MessagePlayer( "Error: you are already logged in!", player );
16 else if(!text) MessagePlayer("Error: /" + cmd + " <password>",player);
17 else if(MD5(text) != PlayerPassword( player ) ) MessagePlayer( "Error: the password you have entered is incorrect!", player );
18 else LoginPlayer( player );
19 }
20}
21
22
23//Register/Login Functions
24function AccountInfo( player )
25{
26 local ip = player.IP, name = player.Name.tolower(), Reg = Registered( player ),
27 AccountIP = sqlite_column_data( sqlite_query(database, "SELECT IP FROM Accounts WHERE Nick='" + name + "'" ), 0 ),Level = PlayerLevel( player );
28
29 if ( Reg )
30 {
31 if ( LoggedIn( player ) == 1 )
32 {
33 Wanted[player.ID] = sqlite_column_data( sqlite_query( database, "SELECT Wanted FROM Accounts WHERE Nick='" + player.Name.tolower() + "'" ), 0 );
34 sqlite_query( database, "UPDATE Accounts SET Logged='1' WHERE Nick='" + player.Name.tolower() + "'" );
35 sqlite_query( database, "UPDATE Accounts SET IP='"+ip+"' WHERE Nick='" + player.Name.tolower() + "'");
36 SmallMessage(player, "You were auto-logged in Level: " + Level,4000,1);
37 }
38 else if ( ip != AccountIP && LoggedIn( player ) != 1) SmallMessage( player,"Your nick is already registered please login to proceed!",4000,1);
39 }
40 else
41 {
42 SmallMessage(player, "Your nick is not registered, please register it to protect it!",4000,1);
43 }
44return 1;
45}
46
47function RegisterUser( player, password )
48{
49 local name = player.Name.tolower();
50 sqlite_query( database, "INSERT INTO Accounts ( Nick, Password, Logged, Level, Cash, Bank, Wanted, IP) VALUES ( '"+name+"', '"+MD5(password)+"', '1', '1', '0', '0', '0', '"+player.IP+"')" );
51 MessagePlayers( "Congratz you have registered sucessfully", player );
52 MessagePlayers( "Don't forget your password: " + password, player );
53 SmallMessage(player,"You have registered sucessfully now you may spawn and play!",4000,1);
54}
55
56function GetPlayer( target )
57{
58 target = target.tostring();
59
60 if ( IsNum( target ) )
61 {
62 target = target.tointeger();
63
64 if ( FindPlayer( target ) ) return FindPlayer( target );
65 else return null;
66 }
67 else if ( FindPlayer( target ) ) return FindPlayer( target );
68 else return null;
69}
70
71function LoginPlayer( player )
72{
73 sqlite_query( database, "UPDATE Accounts SET Logged='1' WHERE Nick='" + player.Name.tolower() + "'" );
74 sqlite_query( database, "UPDATE Accounts SET IP='"+player.IP+"' WHERE Nick='" + player.Name.tolower() + "'");
75 /*hsh_Accounts.Add( player.Name.tolower() + "IP", player.IP );
76 hsh_LoggedIn.Add( player.Name.tolower(), 1 );
77 SaveHashes(); */
78 MessagePlayers( "Welcome back, " + player.Name+ " you have logged in!", player );
79}
80
81function Registered( player )
82{
83 local nick = player.Name.tolower();
84 /* local Reg = hsh_Accounts.Get( player.Name.tolower() + "Password" ); */
85 local Reg = sqlite_column_data(sqlite_query( database, "SELECT Password FROM Accounts WHERE Nick='" + nick + "'"),0);
86 return Reg;
87}
88
89function LoggedIn( player )
90{
91 local nick = player.Name.tolower();
92 /* local Logged = hsh_LoggedIn.Get( player.Name.tolower() ); */
93 local Logged = sqlite_column_data( sqlite_query(database, "SELECT Logged FROM Accounts WHERE Nick='" + nick + "'" ), 0 );
94 return Logged;
95}
96
97function PlayerLevel( player )
98{
99 local Level,nick = player.Name.tolower();
100 Level = sqlite_column_data(sqlite_query( database, "SELECT Level FROM Accounts WHERE Nick='" + nick + "'" ), 0 );
101 /*Level = hsh_Accounts.Get( player.Name.tolower() + "Level" ); */
102 if ( Level ) return Level;
103 else return 0;
104}
105
106function PlayerPassword( player )
107{
108 local nick = player.Name.tostring().tolower();
109 local password = sqlite_column_data( sqlite_query( database, "SELECT Password FROM Accounts WHERE Nick='" + nick + "'" ), 0 );
110 return password;
111}
112//***************************************************************************************************************************************************************
113//Cash functions
114function IncCash( player, amount )
115{
116 // This increases the amount of cash a player has
117 //hsh_Finance.Inc( player.Name.tolower() + "Cash", amount );
118 SetCash(player, PlayerCash(player) + amount.tointeger())
119}
120
121function DecCash( player, amount )
122{
123 // This decreases the amount of cash a player has
124 //hsh_Finance.Dec( player.Name.tolower() + "Cash", amount );
125 SetCash(player, PlayerCash(player) - amount.tointeger())
126}
127
128function IncBank( player, amount )
129{
130 local nick = player.Name.tolower();
131 local total = sqlite_column_data( sqlite_query( database, "SELECT Bank FROM Accounts WHERE Nick='" + nick + "'" ), 0 );
132 sqlite_query( database, format( "UPDATE Accounts SET Bank='%i' WHERE Nick='" + nick + "'", total+amount ) );
133 /*hsh_Finance.Inc( player.Name.tolower() + "Bank", amount ); */
134}
135
136function DecBank( player, amount )
137{
138 local nick = player.Name.tolower();
139 local total = sqlite_column_data( sqlite_query( database, "SELECT Bank FROM Accounts WHERE Nick='" + nick + "'" ), 0 );
140 sqlite_query( database, format( "UPDATE Accounts SET Bank='%i' WHERE Nick='" + nick + "'", total-amount ) );
141 /*hsh_Finance.Dec( player.Name.tolower() + "Bank", amount ); */
142}
143
144function SetCash(player, amount)
145{
146 local nick = player.Name.tolower();
147 sqlite_query( database, format( "UPDATE Accounts SET Cash='%i' WHERE Nick='" + nick + "'", amount.tointeger() ) );
148 player.Cash = amount.tointeger();
149}
150
151
152function PlayerCash( player )
153{
154 local nick = player.Name.tolower();
155 local a = sqlite_column_data( sqlite_query( database, "SELECT Cash FROM Accounts WHERE Nick='" + nick + "'" ), 0 );
156 /* local Cash;
157 Cash = hsh_Finance.Get( player.Name.tolower() + "Cash" ); */
158 if ( a) return a;
159 else return 0;
160}
161
162function PlayerBank( player )
163{
164 local Bank,nick = player.Name.tolower();
165 Bank = sqlite_column_data( sqlite_query( database, "SELECT Bank FROM Accounts WHERE Nick='" + nick + "'" ), 0 );
166 /*Bank = hsh_Finance.Get( player.Name.tolower() + "Bank" ); */
167 if ( Bank ) return Bank;
168 else return 0;
169}
170
171function onScriptLoad()
172{
173 database <- sqlite_open( "LU/data/Database.rpg" );
174 sqlite_query( database, "CREATE TABLE IF NOT EXISTS Accounts ( Nick TEXT,Password TEXT, Logged NUMERIC, Level NUMERIC, Cash NUMERIC, Bank NUMERIC, Wanted NUMERIC, IP FLOAT )" );
175return 1;
176}
177function onScriptUnload()
178{
179 sqlite_close( database );
180 return 1;
181}
182
183function onPlayerSpawn( player, spawn )
184{
185 local Reg = Registered( player ), Logged = LoggedIn( player );
186 if ( (!Reg ) || ( !Logged ) )
187 {
188 Message(player.Name +" has been kicked beacuse he failed to login");
189 KickPlayer( player );
190 }
191return 1;
192}
193
194function onPlayerPart( player, reason )
195{
196 Message( player.Name + " has left the server" );
197
198 local Reg = Registered( player ), Logged = LoggedIn( player ), id = player.ID;
199 if ( ( Reg ) && ( Logged ) )
200 {
201 sqlite_query( database, "UPDATE Accounts SET Logged='0' WHERE Nick='" + player.Name.tolower() + "'" );
202}
203return 1;
204}