· 8 years ago · Jul 23, 2018, 02:02 AM
1/COMMANDSO
2
3function onPlayerCommand( player, cmd, text )
4{
5 cmd = cmd.tolower();
6
7 if ( cmd == "register" )
8 {
9 if(Registered( player )) MessagePlayer("Error: you are already registered!",player);
10 else if(!text) MessagePlayer("Error: /" + cmd + " <password>",player);
11 else RegisterUser( player,text);
12 }
13
14 else if( cmd == "login" )
15 {
16 if(!Registered( player )) MessagePlayer("Error: you haven't registered your account!",player);
17 else if ( LoggedIn( player ) == 1 ) MessagePlayer( "Error: you are already logged in!", player );
18 else if(!text) MessagePlayer("Error: /" + cmd + " <password>",player);
19 else if(MD5(text) != PlayerPassword( player ) ) MessagePlayer( "Error: the password you have entered is incorrect!", player );
20 else LoginPlayer( player );
21 }
22
23 return 1;
24}
25
26//Functions
27
28
29//Register/Login Functions
30function AccountInfo( player )
31{
32 local ip = player.IP, name = player.Name.tolower(), Reg = Registered( player ),
33 AccountIP = sqlite_column_data( sqlite_query(database, "SELECT IP FROM Accounts WHERE Nick='" + name + "'" ), 0 ),Level = PlayerLevel( player );
34
35 if ( Reg )
36 {
37 if ( LoggedIn( player ) == 1 )
38 {
39 Wanted[player.ID] = sqlite_column_data( sqlite_query( database, "SELECT Wanted FROM Accounts WHERE Nick='" + player.Name.tolower() + "'" ), 0 );
40 sqlite_query( database, "UPDATE Accounts SET Logged='1' WHERE Nick='" + player.Name.tolower() + "'" );
41 sqlite_query( database, "UPDATE Accounts SET IP='"+ip+"' WHERE Nick='" + player.Name.tolower() + "'");
42 SmallMessage(player, "You were auto-logged in Level: " + Level,4000,1);
43 }
44 else if ( ip != AccountIP && LoggedIn( player ) != 1) SmallMessage( player,"Your nick is already registered please login to proceed!",4000,1);
45 }
46 else
47 {
48 SmallMessage(player, "Your nick is not registered, please register it to protect it!",4000,1);
49 }
50}
51
52function RegisterUser( player, password )
53{
54 local name = player.Name.tolower();
55 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+"')" );
56 MessagePlayers( "Congratz you have registered sucessfully", player );
57 MessagePlayers( "Don't forget your password: " + password, player );
58 SmallMessage(player,"You have registered sucessfully now you may spawn and play!",4000,1);
59}
60
61
62
63function LoginPlayer( player )
64{
65 sqlite_query( database, "UPDATE Accounts SET Logged='1' WHERE Nick='" + player.Name.tolower() + "'" );
66 sqlite_query( database, "UPDATE Accounts SET IP='"+player.IP+"' WHERE Nick='" + player.Name.tolower() + "'");
67 /*hsh_Accounts.Add( player.Name.tolower() + "IP", player.IP );
68 hsh_LoggedIn.Add( player.Name.tolower(), 1 );
69 SaveHashes(); */
70 MessagePlayers( "Welcome back, " + player.Name+ " you have logged in!", player );
71}
72
73function Registered( player )
74{
75 local nick = player.Name.tolower();
76 /* local Reg = hsh_Accounts.Get( player.Name.tolower() + "Password" ); */
77 local Reg = sqlite_column_data(sqlite_query( database, "SELECT Password FROM Accounts WHERE Nick='" + nick + "'"),0);
78 return Reg;
79}
80
81function LoggedIn( player )
82{
83 local nick = player.Name.tolower();
84 /* local Logged = hsh_LoggedIn.Get( player.Name.tolower() ); */
85 local Logged = sqlite_column_data( sqlite_query(database, "SELECT Logged FROM Accounts WHERE Nick='" + nick + "'" ), 0 );
86 return Logged;
87}
88
89function PlayerLevel( player )
90{
91 local Level,nick = player.Name.tolower();
92 Level = sqlite_column_data(sqlite_query( database, "SELECT Level FROM Accounts WHERE Nick='" + nick + "'" ), 0 );
93 /*Level = hsh_Accounts.Get( player.Name.tolower() + "Level" ); */
94 if ( Level ) return Level;
95 else return 0;
96}
97
98function PlayerPassword( player )
99{
100 local nick = player.Name.tostring().tolower();
101 local password = sqlite_column_data( sqlite_query( database, "SELECT Password FROM Accounts WHERE Nick='" + nick + "'" ), 0 );
102 return password;
103}
104function IncCash( player, amount )
105{
106 // This increases the amount of cash a player has
107 //hsh_Finance.Inc( player.Name.tolower() + "Cash", amount );
108 SetCash(player, PlayerCash(player) + amount.tointeger())
109}
110
111function DecCash( player, amount )
112{
113 // This decreases the amount of cash a player has
114 //hsh_Finance.Dec( player.Name.tolower() + "Cash", amount );
115 SetCash(player, PlayerCash(player) - amount.tointeger())
116}
117
118
119function PlayerCash( player )
120{
121 local nick = player.Name.tolower();
122 local a = sqlite_column_data( sqlite_query( database, "SELECT Cash FROM Accounts WHERE Nick='" + nick + "'" ), 0 );
123 /* local Cash;
124 Cash = hsh_Finance.Get( player.Name.tolower() + "Cash" ); */
125 if ( a) return a;
126 else return 0;
127}
128
129//Events
130//onscriptload
131 LoadModule("lu_sqlite");
132 database <- sqlite_open( "LU/data/Database.rpg" );
133 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 )" ); //You can modify it to NICK PASSWORD LOGGED LEVEL CASH AND IP rest are just for my server.
134
135//onspawn
136local Reg = Registered( player ), Logged = LoggedIn( player );
137 if ( (!Reg ) || ( !Logged ) )
138 {
139 Messages(player.Name +" has been kicked beacuse he failed to login");
140 SmallMessage(player,"Sorry, you need to register or login before spawn else you will be kicked",10000,1);
141 KickPlayer( player );
142 }
143
144//onjoin
145
146 NewTimer( "AccountInfo", 500, 1, player );