Advertisement
Guest User

SQL Base By Voxel

a guest
Nov 17th, 2013
970
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 9.78 KB | None | 0 0
  1. /*               * * * * INFO * * * *               */
  2. /*
  3.     Date started:   17-11-2013
  4.     Time:           10:20 AM
  5.     Creator:        Voxel
  6.     Server Name:    SQLBASE
  7.     Database:       SQLite
  8.     Version:        0.1
  9.     Website:        www.sa-mp.com
  10. */
  11. /*             * * * * INCLUDES * * * *             */
  12. #include <a_samp>
  13. /*             * * * * DEFINES * * * *              */
  14. #define MAX_INI_ENTRY_TEXT 80
  15. //INFO
  16. #define Web "www.sa-mp.com"
  17. #define Version "v0.1"
  18. #define Creator "Voxel"
  19. #define Name "SQL BASE""
  20. #define CName "SQLB"
  21. #define chat "{FFFFFF}*"
  22. //COLORS
  23. #define COL_WHITE          "{FFFFFF}"
  24. #define COL_GREY           "{C3C3C3}"
  25. #define COL_GREEN          "{37DB45}"
  26. #define COL_RED            "{F81414}"
  27. #define COL_YELLOW         "{F3FF02}"
  28. #define COL_ORANGE         "{F9B857}"
  29. #define COL_BLUE           "{0049FF}"
  30. #define COL_PINK           "{FF00EA}"
  31. #define COL_LIGHTBLUE      "{00C0FF}"
  32. #define COL_LGREEN         "{C9FFAB}"
  33. /*             * * * * NATIVES * * * *             */
  34. native WP_Hash(buffer[], len, const str[]);
  35. /*           * * * * ENUMERATORS * * * *           */
  36. enum USER_DATA
  37. {
  38.     USER_ID,
  39.     USER_NAME[MAX_PLAYER_NAME],
  40.     USER_PASSWORD[129],
  41.     USER_ADMIN,
  42.     USER_VIP,
  43.     USER_MONEY,
  44.     USER_SCORE,
  45.     USER_KILLS,
  46.     USER_DEATHS,
  47.     USER_KD,
  48.  
  49.     bool: USER_LOGGED_IN
  50. };
  51. /*         * * * * GLOBAL VARIABLES * * * *        */
  52. new User[MAX_PLAYERS][USER_DATA];
  53. new DB: Database;
  54. /*              * * * * MAIN * * * *               */
  55. main()
  56. {
  57.     print("=====================================");
  58.     print("|             SQL BASE              |");
  59.     print("|            *INITIATED*            |");
  60.     print("|           Version: v0.1           |");
  61.     print("|           Creator: Voxel          |");
  62.     print("=====================================");
  63. }
  64.  
  65. public OnFilterScriptInit()
  66. {
  67.     SetGameModeText("SQLBASE"Version"");
  68.     Database = db_open("server.db");
  69.     db_query(Database, "CREATE TABLE IF NOT EXISTS users (userid INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR(24) COLLATE NOCASE, password VARCHAR(129), admin INTEGER DEFAULT 0 NOT NULL, vip INTEGER DEFAULT 0 NOT NULL, money INTEGER DEFAULT 0 NOT NULL, score INTEGER DEFAULT 0 NOT NULL, kills INTEGER DEFAULT 0 NOT NULL, deaths INTEGER DEFAULT 0 NOT NULL, kd INTEGER DEFAULT 0 NOT NULL)");
  70.     AddPlayerClass(1, 2528.9143,-1667.7504,15.1689,91.2860,0,0,0,0,0,0);
  71.     return 1;
  72. }
  73.  
  74. public OnFilterScriptExit()
  75. {
  76.     db_close(Database);
  77.     print("=====================================");
  78.     print("|             SQL BASE              |");
  79.     print("|            *SHUT DOWN*            |");
  80.     print("|           Version: v0.1           |");
  81.     print("|           Creator: Voxel          |");
  82.     print("=====================================");
  83.     return 1;
  84. }
  85.  
  86. public OnPlayerRequestClass(playerid, classid)
  87. {
  88.     return 1;
  89. }
  90.  
  91. public OnPlayerConnect(playerid)
  92. {
  93.     for(new i; i < _: USER_DATA; ++i) User[playerid][USER_DATA: i] = 0;
  94.  
  95.     GetPlayerName(playerid, User[playerid][USER_NAME], MAX_PLAYER_NAME);
  96.  
  97.     new Query[71], DBResult: Result;
  98.     format(Query, sizeof(Query), "SELECT password FROM users WHERE username = '%s' LIMIT 0, 1", DB_Escape(User[playerid][USER_NAME]));
  99.     Result = db_query(Database, Query);
  100.     if(db_num_rows(Result))
  101.     {
  102.         db_get_field_assoc(Result, "password", User[playerid][USER_PASSWORD], 129);
  103.         ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, ""COL_BLUE"SGZM"COL_WHITE" Login pannel", ""chat" Please login to play on "COL_BLUE"Survival Games Zombie Mode\n"COL_WHITE"Enter your "COL_BLUE"password"COL_WHITE":", "Login", "Exit");
  104.     }
  105.     else ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, ""COL_BLUE"SGZM"COL_WHITE" Register pannel", ""chat" Please register to play on "COL_BLUE"Survival Games Zombie Mode\n"COL_WHITE"Enter a "COL_BLUE"password"COL_WHITE":", "Register", "Exit");
  106.     db_free_result(Result);
  107.     return 1;
  108. }
  109.  
  110. public OnPlayerDisconnect(playerid, reason)
  111. {
  112.     if(User[playerid][USER_LOGGED_IN] == true)
  113.     {
  114.         new Query[128];
  115.         format(Query, sizeof(Query), "UPDATE users SET admin = %d, vip = %d, money = %d, score = %d, kills = %d, deaths = %d, kd = %d WHERE username = '%s'", User[playerid][USER_ADMIN], User[playerid][USER_VIP], GetPlayerMoney(playerid), GetPlayerScore(playerid), User[playerid][USER_KILLS], User[playerid][USER_DEATHS], User[playerid][USER_KD], DB_Escape(User[playerid][USER_NAME]));
  116.         db_query(Database, Query);
  117.     }
  118.     for(new i; i < _: USER_DATA; ++i) User[playerid][USER_DATA: i] = 0;
  119.     return 1;
  120. }
  121.  
  122. public OnPlayerSpawn(playerid)
  123. {
  124.     return 1;
  125. }
  126.  
  127. public OnPlayerDeath(playerid, killerid, reason)
  128. {
  129.     return 1;
  130. }
  131. /*             * * * * DIALOGS * * * *           */
  132. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  133. {
  134.     if(dialogid == 0)
  135.     {
  136.         if(response)
  137.         {
  138.             if(!inputtext[0]) return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, ""COL_BLUE"SGZM"COL_WHITE" Login pannel", ""chat" Please login to play on "COL_BLUE"Survival Games Zombie Mode\n "COL_WHITE"Enter your "COL_BLUE"password"COL_WHITE":", "Login", "Exit");
  139.             new buf[129];
  140.             WP_Hash(buf, 129, inputtext);
  141.             if(!strcmp(buf, User[playerid][USER_PASSWORD], false))
  142.             {
  143.                 new Query[75], DBResult: Result;
  144.                 format(Query, sizeof(Query), "SELECT * FROM users WHERE username = '%s' LIMIT 0, 1", DB_Escape(User[playerid][USER_NAME]));
  145.                 Result = db_query(Database, Query);
  146.                 if(db_num_rows(Result))
  147.                 {
  148.                     db_get_field_assoc(Result, "userid", Query, 7);
  149.                     User[playerid][USER_ID] = strval(Query);
  150.  
  151.                     db_get_field_assoc(Result, "admin", Query, 3);
  152.                     User[playerid][USER_ADMIN] = strval(Query);
  153.  
  154.                     db_get_field_assoc(Result, "vip", Query, 3);
  155.                     User[playerid][USER_VIP] = strval(Query);
  156.  
  157.                     db_get_field_assoc(Result, "money", Query, 10);
  158.                     User[playerid][USER_MONEY] = strval(Query);
  159.  
  160.                     db_get_field_assoc(Result, "score", Query, 7);
  161.                     User[playerid][USER_SCORE] = strval(Query);
  162.  
  163.                     db_get_field_assoc(Result, "kills", Query, 10);
  164.                     User[playerid][USER_KILLS] = strval(Query);
  165.  
  166.                     db_get_field_assoc(Result, "deaths", Query, 10);
  167.                     User[playerid][USER_DEATHS] = strval(Query);
  168.  
  169.                     db_get_field_assoc(Result, "kd", Query, 10);
  170.                     User[playerid][USER_KD] = strval(Query);
  171.  
  172.                     User[playerid][USER_LOGGED_IN] = true;
  173.  
  174.                     GivePlayerMoney(playerid, User[playerid][USER_MONEY]);
  175.                     SetPlayerScore(playerid, User[playerid][USER_SCORE]);
  176.  
  177.                     SendClientMessage(playerid, 0x00FF00FF, ""chat" "COL_LIGHTBLUE"You have successfully logged in to your account!");
  178.                 }
  179.                 db_free_result(Result);
  180.             }
  181.             else
  182.             {
  183.                 SendClientMessage(playerid, -1, ""chat" "COL_RED"Incorrect password!");
  184.                 ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, ""COL_BLUE"SGZM"COL_WHITE" Login pannel", ""chat" Please login to play on "COL_BLUE"Survival Games Zombie Mode\n"COL_WHITE"Enter your "COL_BLUE"password"COL_WHITE":", "Login", "Exit");
  185.  
  186.             }
  187.         }
  188.         else Kick(playerid);
  189.         return 1;
  190.     }
  191.     if(dialogid == 1)
  192.     {
  193.         if(response)
  194.         {
  195.             if(!IsValidPassword(inputtext))
  196.             {
  197.                 SendClientMessage(playerid, -1, ""chat" "COL_RED"The password is invalid, Valid characters are: A-Z, a-z, 0-9");
  198.                 ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, ""COL_BLUE"SERVER NAME"COL_WHITE" Register pannel", ""chat" Please register to play on "COL_BLUE"SERVER NAME\n"COL_WHITE"Enter a "COL_BLUE"password"COL_WHITE":", "Register", "Exit");
  199.                 return 1;
  200.             }
  201.             if(strlen(inputtext) < 3 || strlen(inputtext) > 24)
  202.             {
  203.                 SendClientMessage(playerid, -1, ""chat" "COL_RED"The password is invalid, Its lenght should be 3-24 characters");
  204.                 ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, ""COL_BLUE"SERVER NAME"COL_WHITE" Register pannel", ""chat" Please register to play on "COL_BLUE"SERVER NAME\n"COL_WHITE"Enter a "COL_BLUE"password"COL_WHITE":", "Register", "Exit");
  205.                 return 1;
  206.             }
  207.             new Query[208];
  208.             WP_Hash(User[playerid][USER_PASSWORD], 129, inputtext);
  209.             format(Query, sizeof(Query), "INSERT INTO users (username, password) VALUES ('%s', '%s')", DB_Escape(User[playerid][USER_NAME]), DB_Escape(User[playerid][USER_PASSWORD]));
  210.             db_query(Database, Query);
  211.  
  212.             User[playerid][USER_LOGGED_IN] = true;
  213.             SendClientMessage(playerid, 0x00FF00FF, ""chat" "COL_LIGHTBLUE"You have just registered to our server! You have been automatically logged in!");
  214.         }
  215.         else Kick(playerid);
  216.         return 1;
  217.     }
  218.     return 1;
  219. }
  220. /*           * * * * STOCKS * * * *                */
  221. /*          * * * * DB ESCAPE * * * *              */
  222. stock DB_Escape(text[])
  223. {
  224.     new ret[ 80 * 2 ], ch, i, j;
  225.     while((ch = text[i++]) && j < sizeof(ret))
  226.     {
  227.         if(ch == '\'')
  228.         {
  229.             if(j < sizeof(ret) - 2)
  230.             {
  231.                 ret[j++] = '\'';
  232.                 ret[j++] = '\'';
  233.             }
  234.         }
  235.         else if(j < sizeof(ret))
  236.         {
  237.             ret[j++] = ch;
  238.         }
  239.         else
  240.         {
  241.             j++;
  242.         }
  243.     }
  244.     ret[sizeof(ret) - 1] = '\0';
  245.     return ret;
  246. }
  247.  
  248. stock IsValidPassword(const password[])
  249. {
  250.     for(new i = 0; password[i] != EOS; ++i)
  251.     {
  252.         switch(password[i])
  253.         {
  254.             case '0'..'9', 'A'..'Z', 'a'..'z': continue;
  255.             default: return 0;
  256.         }
  257.     }
  258.     return 1;
  259. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement