· 8 years ago · May 14, 2018, 04:28 AM
1// Load Script & Create SQLite database
2
3function onScriptLoad( )
4{
5 WiLsOn <- ConnectSQL( "Database.db" );
6 QuerySQL( WiLsOn, "CREATE TABLE IF NOT EXISTS Accounts ( Name TEXT, User TEXT, TEXT, Password TEXT, Logged TEXT, Level NUMERIC, IP TEXT, RegData TEXT, LastActive TEXT, Kills NUMERIC, Deaths NUMERIC, Joins NUMERIC, Cash NUMERIC, Bank NUMERIC )" );
7 print( "SQLite Database loaded succesfully." );
8}
9
10// Some SQLite functions to check register system
11
12function GetPlayerLevel( player ) { local Level = GetSQLColumnData( QuerySQL( WiLsOn, "SELECT Level FROM Accounts WHERE Name='" + player.Name.tolower() + "'" ), 0 ); if ( Level ) return Level; else return 0; }
13
14function GetTok(string, separator, n, ...)
15{
16 local m = vargv.len() > 0 ? vargv[0] : n,
17 tokenized = split(string, separator),
18 text = "";
19
20 if (n > tokenized.len() || n < 1) return null;
21 for (; n <= m; n++)
22 {
23 text += text == "" ? tokenized[n-1] : separator + tokenized[n-1];
24 }
25 return text;
26}
27
28function NumTok(string, separator)
29{
30 local tokenized = split(string, separator);
31 return tokenized.len();
32}
33
34function SetPlayerLevel(player,am) { QuerySQL( WiLsOn, format( "UPDATE Accounts SET Level='%s' WHERE Name='" + player.Name.tolower() + "'", am ) ); }
35
36// Commands
37
38function onPlayerCommand( player, command, text )
39{
40 local cmd = command.tolower();
41
42 if ( cmd == "register" ) {
43 if ( GetPlayerLevel( player ) ) ::PrivMessage( "You are already registered.", player );
44 else if ( !text ) PrivMessage( "Missing information, /c " + cmd + " <password>", player );
45 else
46 {
47 QuerySQL( WiLsOn, "REPLACE INTO Accounts ( Name, User, Password, Logged, Level, IP, RegData, LastActive, Kills, Deaths, Joins, Cash, Bank ) VALUES ( '" + player.Name.tolower() + "', '" + player.Name + "', '" + text + "', 'true', 1, '" + player.IP + "', '" + GetFullTime() + "', '" + GetFullTime() + "', 0, 0, 0, 12000, 0 )" );
48 PrivMessage( "Registered succesfully, Password:[ " + text + " ], Level:[ " + GetPlayerLevel( player ).tofloat() + " ]", player );
49 }
50 }
51
52 else if ( cmd == "setlevel" )
53 {
54 if ( !GetPlayerLevel( player ) ) ::PrivMessage( "Register before using commands.", player );
55 else if ( !text ) PrivMessage( "/c " + cmd + " <nick/id> <level>", player);
56 else if ( NumTok( text, " " ) < 2 ) PrivMessage( "/c " + cmd + " <nick/id> <level>", player);
57 else {
58 local plr = FindPlayer( GetTok( text, " ", 1 ) );
59 if ( !plr ) ::PrivMessage( "Unknow player id.", player);
60 else if ( !IsNum( GetTok( text, " ", 2 ) ) ) PrivMessage( "Invalid level.", player);
61 else
62 {
63 Message( "** Admin " + player.Name + " set " + plr + "'s level to " + GetTok( text, " ", 2 ).tofloat() + "." );
64 SetPlayerLevel( plr, GetTok( text, " ", 2 ) );
65 }
66 }
67 }
68
69 else if ( cmd == "level" )
70 {
71 if ( !GetPlayerLevel( player ) ) ::PrivMessage( "Register before using commands.", player );
72 else
73 {
74 Message(player + "'s level:[ " + GetPlayerLevel( player ).tofloat() + " ]");
75
76 }
77 }
78}