Advertisement
Guest User

MySQL-Register-And-Login-System

a guest
Jan 28th, 2018
3,014
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 48.32 KB | None | 0 0
  1. /*==============================================================================
  2.  
  3.  
  4.     Login And Register System Script:
  5.  
  6.         Copyright (C) 2018 Juan Ugalde
  7.  
  8.         This program is free software: you can redistribute it and/or modify it
  9.         under the terms of the GNU General Public License as published by the
  10.         Free Software Foundation, either version 3 of the License, or (at your
  11.         option) any later version.
  12.  
  13.         This program is distributed in the hope that it will be useful, but
  14.         WITHOUT ANY WARRANTY; without even the implied warranty of
  15.         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  16.         See the GNU General Public License for more details.
  17.  
  18.         You should have received a copy of the GNU General Public License along
  19.         with this program.  If not, see <http://www.gnu.org/licenses/>.
  20.  
  21.  
  22. ==============================================================================*/
  23.  
  24.  
  25. #include <a_samp> //SA-MP Team
  26.  
  27. #include <a_mysql> //BlueG                                                      Version R41:    https://github.com/pBlueG/SA-MP-MySQL/releases/tag/R41
  28.  
  29. #include <sscanf2> //Y_Less                                                     Version 2.8.2:  https://github.com/maddinat0r/sscanf/releases/tag/v2.8.2
  30.  
  31. #include <zcmd> //ZeeX                                                          Version 0.3.1   https://github.com/YashasSamaga/I-ZCMD  - (Note: Rename izcmd to zcmd and done).
  32.  
  33.  
  34. /*==============================================================================
  35.  
  36.     Global Settings
  37.  
  38. ==============================================================================*/
  39.  
  40.  
  41. #if !defined MAX_LOGGIN_ATTEMPTS
  42.     #define MAX_LOGGIN_ATTEMPTS             (5)
  43. #endif
  44.  
  45.  
  46. #if !defined MIN_PASSWORD_LENGTH
  47.     #define MIN_PASSWORD_LENGTH             5
  48. #endif
  49.  
  50.  
  51. #if !defined MAX_PASSWORD_LENGTH
  52.     #define MAX_PASSWORD_LENGTH             20
  53. #endif
  54.  
  55.  
  56. #if !defined MIN_DATE_YEAR
  57.     #define MIN_DATE_YEAR                   (1850)
  58. #endif
  59.  
  60.  
  61. #if !defined MAX_DATE_YEAR
  62.     #define MAX_DATE_YEAR                   (2018)
  63. #endif
  64.  
  65.  
  66. #if !defined MAX_REGISTER_TEXTDRAWS
  67.     #define MAX_REGISTER_TEXTDRAWS          (22)
  68. #endif
  69.  
  70.  
  71. #if !defined MAX_LOGGIN_TEXTDRAWS
  72.     #define MAX_LOGGIN_TEXTDRAWS            (4)
  73. #endif
  74.  
  75.  
  76. #if !defined COLOR_LOGGIN_TD_HOVERING
  77.     #define COLOR_LOGGIN_TD_HOVERING        (0x00C100FF)
  78. #endif
  79.  
  80.  
  81. #if !defined COLOR_REGISTER_TD_HOVERING
  82.     #define COLOR_REGISTER_TD_HOVERING      (0xFF000085)
  83. #endif
  84.  
  85.  
  86. new MySQL:handle;
  87.  
  88.  
  89. enum // PLAYER DIALOGS
  90. {
  91.     DIALOG_PLAYER_REGISTER = 1,
  92.     DIALOG_PLAYER_LOGIN,
  93.     DIALOG_SELECT_GENDER,
  94.     DIALOG_SELECT_DATE_YEAR,
  95.     DIALOG_SELECT_DATE_MONTH,
  96.     DIALOG_SELECT_DATE_DAY,
  97.     UNUSED_PLAYER_DIALOG
  98. };
  99.  
  100.  
  101. new
  102.     PlayerText:LogginTextDraw[MAX_PLAYERS][MAX_LOGGIN_TEXTDRAWS],
  103.     PlayerText:RegisterTextDraw[MAX_PLAYERS][MAX_REGISTER_TEXTDRAWS];
  104.  
  105.  
  106. /*==============================================================================
  107.  
  108.     Internal functions
  109.  
  110. ==============================================================================*/
  111.  
  112.  
  113. static ReturnPlayerName(playerid)
  114. {
  115.     new string[MAX_PLAYER_NAME];
  116.     GetPlayerName(playerid, string, MAX_PLAYER_NAME);
  117.     return string;
  118. }
  119.  
  120.  
  121. /*==============================================================================
  122.  
  123.     Public functions
  124.  
  125. ==============================================================================*/
  126.  
  127.  
  128. public OnFilterScriptInit()
  129. {
  130.     handle = mysql_connect_file("mysql.ini");
  131.    
  132.     if (mysql_errno(handle) != 0)
  133.     {
  134.         print("[mysql]: Failed to connect mysql database.");
  135.     }
  136.     else
  137.     {
  138.         mysql_query(handle, "CREATE TABLE IF NOT EXISTS `users` (`id` int(11) NOT NULL AUTO_INCREMENT, `username` text NOT NULL, `password` text NOT NULL, `gender` int(1) NOT NULL DEFAULT '1', `birthdate` text NOT NULL, `skin` int(3) NOT NULL DEFAULT '0', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;", false);
  139.    
  140.         print("[mysql]: Success connect to mysql database.");
  141.     }
  142.     return 1;
  143. }
  144.  
  145. public OnFilterScriptExit()
  146. {
  147.     if (mysql_errno(handle) == 0) mysql_close(handle);
  148.  
  149.     for (new i, len = GetPlayerPoolSize(); i <= len; i++)
  150.     {
  151.         if (!IsPlayerConnected(i)) continue;
  152.        
  153.         OnPlayerDisconnect(i, 1);
  154.     }
  155.     return 1;
  156. }
  157.  
  158. public OnPlayerConnect(playerid)
  159. {
  160.     new
  161.         Cache:cache, rows, query[81 +MAX_PLAYER_NAME];
  162.  
  163.     format(query, sizeof(query), "SELECT * FROM `users` WHERE `username` COLLATE latin1_general_cs = '%q' LIMIT 1", ReturnPlayerName(playerid));
  164.     cache = mysql_query(handle, query, true);
  165.    
  166.     cache_get_row_count(rows);
  167.    
  168.     if (! rows)
  169.     {
  170.         if (SetPVarInt(playerid, "RegisterTextDraws", 1))
  171.         {
  172.             RegisterTextDraw[playerid][0] = CreatePlayerTextDraw(playerid, 277.400085, 101.399917, "box");
  173.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][0], 0.000000, 25.012474);
  174.             PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][0], 512.106445, 0.000000);
  175.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][0], 1);
  176.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][0], -1);
  177.             PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][0], 1);
  178.             PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][0], 133);
  179.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][0], 0);
  180.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][0], 0);
  181.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][0], 255);
  182.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][0], 1);
  183.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][0], 1);
  184.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][0], 0);
  185.  
  186.             RegisterTextDraw[playerid][1] = CreatePlayerTextDraw(playerid, 144.900054, 98.800018, "");
  187.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][1], 0.000000, 0.000000);
  188.             PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][1], 124.000000, 207.772872);
  189.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][1], 1);
  190.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][1], -1);
  191.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][1], 0);
  192.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][1], 0);
  193.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][1], 153);
  194.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][1], 5);
  195.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][1], 0);
  196.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][1], 0);
  197.             PlayerTextDrawSetPreviewModel(playerid, RegisterTextDraw[playerid][1], 0);
  198.             PlayerTextDrawSetPreviewRot(playerid, RegisterTextDraw[playerid][1], 0.000000, 0.000000, 0.000000, 1.000000);
  199.  
  200.             RegisterTextDraw[playerid][2] = CreatePlayerTextDraw(playerid, 207.199340, 313.302551, "PlayerName");
  201.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][2], 0.298000, 1.483332);
  202.             PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][2], -0.649999, 120.680145);
  203.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][2], 2);
  204.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][2], -1);
  205.             PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][2], 1);
  206.             PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][2], 133);
  207.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][2], 0);
  208.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][2], 1);
  209.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][2], 255);
  210.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][2], 2);
  211.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][2], 1);
  212.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][2], 0);
  213.  
  214.             RegisterTextDraw[playerid][3] = CreatePlayerTextDraw(playerid, 366.000000, 116.000000, "box");
  215.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][3], 0.000000, 2.149996);
  216.             PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][3], 504.000000, 20.000000);
  217.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][3], 1);
  218.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][3], -1);
  219.             PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][3], 1);
  220.             PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][3], 252645375);
  221.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][3], 0);
  222.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][3], 0);
  223.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][3], 255);
  224.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][3], 1);
  225.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][3], 1);
  226.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][3], 0);
  227.             PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][3], true);
  228.  
  229.             RegisterTextDraw[playerid][4] = CreatePlayerTextDraw(playerid, 320.000000, 118.000000, "Password:");
  230.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][4], 0.279000, 1.401664);
  231.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][4], 2);
  232.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][4], -1);
  233.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][4], 0);
  234.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][4], 1);
  235.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][4], 255);
  236.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][4], 2);
  237.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][4], 1);
  238.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][4], 0);
  239.  
  240.             RegisterTextDraw[playerid][5] = CreatePlayerTextDraw(playerid, 320.500000, 157.301635, "Gender:");
  241.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][5], 0.279000, 1.401664);
  242.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][5], 2);
  243.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][5], -1);
  244.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][5], 0);
  245.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][5], 1);
  246.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][5], 255);
  247.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][5], 2);
  248.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][5], 1);
  249.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][5], 0);
  250.  
  251.             RegisterTextDraw[playerid][6] = CreatePlayerTextDraw(playerid, 366.000000, 154.000305, "box");
  252.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][6], 0.000000, 2.149996);
  253.             PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][6], 504.000000, 20.000000);
  254.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][6], 1);
  255.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][6], -1);
  256.             PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][6], 1);
  257.             PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][6], 252645375);
  258.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][6], 0);
  259.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][6], 0);
  260.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][6], 255);
  261.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][6], 1);
  262.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][6], 1);
  263.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][6], 0);
  264.             PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][6], true);
  265.            
  266.             RegisterTextDraw[playerid][7] = CreatePlayerTextDraw(playerid, 320.000000, 194.503906, "Birth Date:");
  267.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][7], 0.279000, 1.401664);
  268.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][7], 2);
  269.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][7], -1);
  270.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][7], 0);
  271.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][7], 1);
  272.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][7], 255);
  273.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][7], 2);
  274.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][7], 1);
  275.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][7], 0);
  276.  
  277.             RegisterTextDraw[playerid][8] = CreatePlayerTextDraw(playerid, 366.000000, 192.902679, "box");
  278.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][8], 0.000000, 2.149996);
  279.             PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][8], 504.000000, 20.000000);
  280.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][8], 1);
  281.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][8], -1);
  282.             PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][8], 1);
  283.             PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][8], 252645375);
  284.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][8], 0);
  285.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][8], 0);
  286.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][8], 255);
  287.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][8], 1);
  288.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][8], 1);
  289.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][8], 0);
  290.             PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][8], true);
  291.  
  292.             RegisterTextDraw[playerid][9] = CreatePlayerTextDraw(playerid, 374.499420, 156.800048, "N/A");
  293.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][9], 0.279000, 1.401664);
  294.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][9], 1);
  295.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][9], -1);
  296.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][9], 0);
  297.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][9], 1);
  298.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][9], 255);
  299.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][9], 2);
  300.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][9], 1);
  301.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][9], 0);
  302.  
  303.             RegisterTextDraw[playerid][10] = CreatePlayerTextDraw(playerid, 374.000000, 196.283126, "Year");
  304.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][10], 0.279000, 1.401664);
  305.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][10], 1);
  306.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][10], -1);
  307.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][10], 0);
  308.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][10], 1);
  309.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][10], 255);
  310.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][10], 2);
  311.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][10], 1);
  312.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][10], 0);
  313.  
  314.             RegisterTextDraw[playerid][11] = CreatePlayerTextDraw(playerid, 366.000000, 224.004577, "box");
  315.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][11], 0.000000, 2.149996);
  316.             PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][11], 504.000000, 20.000000);
  317.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][11], 1);
  318.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][11], -1);
  319.             PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][11], 1);
  320.             PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][11], 252645375);
  321.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][11], 0);
  322.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][11], 0);
  323.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][11], 255);
  324.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][11], 1);
  325.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][11], 1);
  326.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][11], 0);
  327.             PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][11], true);
  328.            
  329.             RegisterTextDraw[playerid][12] = CreatePlayerTextDraw(playerid, 373.799957, 226.783096, "Month");
  330.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][12], 0.279000, 1.401664);
  331.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][12], 1);
  332.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][12], -1);
  333.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][12], 0);
  334.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][12], 1);
  335.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][12], 255);
  336.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][12], 2);
  337.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][12], 1);
  338.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][12], 0);
  339.  
  340.             RegisterTextDraw[playerid][13] = CreatePlayerTextDraw(playerid, 366.000000, 254.506439, "box");
  341.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][13], 0.000000, 2.149996);
  342.             PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][13], 504.000000, 20.000000);
  343.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][13], 1);
  344.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][13], -1);
  345.             PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][13], 1);
  346.             PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][13], 252645375);
  347.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][13], 0);
  348.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][13], 0);
  349.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][13], 255);
  350.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][13], 1);
  351.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][13], 1);
  352.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][13], 0);
  353.             PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][13], true);
  354.            
  355.             RegisterTextDraw[playerid][14] = CreatePlayerTextDraw(playerid, 374.200012, 257.683105, "Day");
  356.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][14], 0.279000, 1.401664);
  357.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][14], 1);
  358.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][14], -1);
  359.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][14], 0);
  360.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][14], 1);
  361.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][14], 255);
  362.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][14], 2);
  363.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][14], 1);
  364.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][14], 0);
  365.  
  366.             RegisterTextDraw[playerid][15] = CreatePlayerTextDraw(playerid, 481.000000, 311.743896, "Sign Up");
  367.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][15], 0.229497, 1.214998);
  368.             PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][15], 12.000000, 46.000000);
  369.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][15], 2);
  370.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][15], -1);
  371.             PlayerTextDrawUseBox(playerid, RegisterTextDraw[playerid][15], 1);
  372.             PlayerTextDrawBoxColor(playerid, RegisterTextDraw[playerid][15], 6815816);
  373.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][15], 0);
  374.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][15], 1);
  375.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][15], 255);
  376.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][15], 2);
  377.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][15], 1);
  378.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][15], 0);
  379.             PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][15], true);
  380.  
  381.             RegisterTextDraw[playerid][16] = CreatePlayerTextDraw(playerid, 336.797363, 286.388488, "SKIN:");
  382.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][16], 0.279000, 1.401664);
  383.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][16], 2);
  384.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][16], -1);
  385.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][16], 0);
  386.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][16], 1);
  387.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][16], 255);
  388.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][16], 2);
  389.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][16], 1);
  390.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][16], 0);
  391.            
  392.             RegisterTextDraw[playerid][17] = CreatePlayerTextDraw(playerid, 378.400756, 286.685028, "ld_beat:left");
  393.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][17], 0.000000, 0.000000);
  394.             PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][17], 12.000000, 16.000000);
  395.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][17], 1);
  396.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][17], -1);
  397.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][17], 0);
  398.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][17], 0);
  399.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][17], 255);
  400.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][17], 4);
  401.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][17], 0);
  402.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][17], 0);
  403.             PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][17], true);
  404.  
  405.             RegisterTextDraw[playerid][18] = CreatePlayerTextDraw(playerid, 473.406555, 286.685028, "ld_beat:right");
  406.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][18], 0.000000, 0.000000);
  407.             PlayerTextDrawTextSize(playerid, RegisterTextDraw[playerid][18], 12.000000, 16.000000);
  408.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][18], 1);
  409.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][18], -1);
  410.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][18], 0);
  411.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][18], 0);
  412.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][18], 255);
  413.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][18], 4);
  414.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][18], 0);
  415.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][18], 0);
  416.             PlayerTextDrawSetSelectable(playerid, RegisterTextDraw[playerid][18], true);
  417.            
  418.             RegisterTextDraw[playerid][19] = CreatePlayerTextDraw(playerid, 431.900238, 287.416778, "0");
  419.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][19], 0.400000, 1.600000);
  420.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][19], 2);
  421.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][19], -1);
  422.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][19], 0);
  423.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][19], 1);
  424.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][19], 255);
  425.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][19], 2);
  426.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][19], 1);
  427.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][19], 0);
  428.            
  429.             RegisterTextDraw[playerid][20] = CreatePlayerTextDraw(playerid, 368.800292, 122.633346, "[]");
  430.             PlayerTextDrawLetterSize(playerid, RegisterTextDraw[playerid][20], 0.191495, 1.057499);
  431.             PlayerTextDrawAlignment(playerid, RegisterTextDraw[playerid][20], 1);
  432.             PlayerTextDrawColor(playerid, RegisterTextDraw[playerid][20], -1);
  433.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][20], 0);
  434.             PlayerTextDrawSetOutline(playerid, RegisterTextDraw[playerid][20], 1);
  435.             PlayerTextDrawBackgroundColor(playerid, RegisterTextDraw[playerid][20], 255);
  436.             PlayerTextDrawFont(playerid, RegisterTextDraw[playerid][20], 2);
  437.             PlayerTextDrawSetProportional(playerid, RegisterTextDraw[playerid][20], 1);
  438.             PlayerTextDrawSetShadow(playerid, RegisterTextDraw[playerid][20], 0);
  439.         }
  440.         if (SetPVarInt(playerid, "CurrentPreviewModel", 0))
  441.         {
  442.             SetPVarInt(playerid, "Gender", -1);
  443.            
  444.             SetPVarInt(playerid, "BirthDateDay", -1);
  445.             SetPVarInt(playerid, "BirthDateYear", -1);
  446.             SetPVarInt(playerid, "BirthDateMonth", -1);
  447.         }
  448.        
  449.         if (GetPVarInt(playerid, "RegisterTextDraws"))
  450.         {
  451.             PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][2], ReturnPlayerName(playerid));
  452.            
  453.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][0]);
  454.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][1]);
  455.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][2]);
  456.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][3]);
  457.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][4]);
  458.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][5]);
  459.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][6]);
  460.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][7]);
  461.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][8]);
  462.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][9]);
  463.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][10]);
  464.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][11]);
  465.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][12]);
  466.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][13]);
  467.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][14]);
  468.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][15]);
  469.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][16]);
  470.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][17]);
  471.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][18]);
  472.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][19]);
  473.            
  474.             SelectTextDraw(playerid, COLOR_REGISTER_TD_HOVERING);
  475.         }
  476.     }
  477.     else
  478.     {
  479.         if (SetPVarInt(playerid, "LogginTextDraws", 1))
  480.         {
  481.             LogginTextDraw[playerid][0] = CreatePlayerTextDraw(playerid, 254.499908, 103.666770, "");
  482.             PlayerTextDrawLetterSize(playerid, LogginTextDraw[playerid][0], 0.000000, 0.000000);
  483.             PlayerTextDrawTextSize(playerid, LogginTextDraw[playerid][0], 131.000000, 190.000000);
  484.             PlayerTextDrawAlignment(playerid, LogginTextDraw[playerid][0], 1);
  485.             PlayerTextDrawColor(playerid, LogginTextDraw[playerid][0], -1);
  486.             PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][0], 0);
  487.             PlayerTextDrawSetOutline(playerid, LogginTextDraw[playerid][0], 0);
  488.             PlayerTextDrawBackgroundColor(playerid, LogginTextDraw[playerid][0], 153);
  489.             PlayerTextDrawFont(playerid, LogginTextDraw[playerid][0], 5);
  490.             PlayerTextDrawSetProportional(playerid, LogginTextDraw[playerid][0], 0);
  491.             PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][0], 0);
  492.             PlayerTextDrawSetPreviewModel(playerid, LogginTextDraw[playerid][0], 1);
  493.             PlayerTextDrawSetPreviewRot(playerid, LogginTextDraw[playerid][0], 0.000000, 0.000000, 0.000000, 1.000000);
  494.  
  495.             LogginTextDraw[playerid][1] = CreatePlayerTextDraw(playerid, 320.300109, 303.167022, "PlayerName");
  496.             PlayerTextDrawLetterSize(playerid, LogginTextDraw[playerid][1], 0.400000, 1.600000);
  497.             PlayerTextDrawTextSize(playerid, LogginTextDraw[playerid][1], 0.000000, 127.419876);
  498.             PlayerTextDrawAlignment(playerid, LogginTextDraw[playerid][1], 2);
  499.             PlayerTextDrawColor(playerid, LogginTextDraw[playerid][1], -1);
  500.             PlayerTextDrawUseBox(playerid, LogginTextDraw[playerid][1], 1);
  501.             PlayerTextDrawBoxColor(playerid, LogginTextDraw[playerid][1], 153);
  502.             PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][1], 0);
  503.             PlayerTextDrawSetOutline(playerid, LogginTextDraw[playerid][1], 1);
  504.             PlayerTextDrawBackgroundColor(playerid, LogginTextDraw[playerid][1], 255);
  505.             PlayerTextDrawFont(playerid, LogginTextDraw[playerid][1], 2);
  506.             PlayerTextDrawSetProportional(playerid, LogginTextDraw[playerid][1], 1);
  507.             PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][1], 0);
  508.  
  509.             LogginTextDraw[playerid][2] = CreatePlayerTextDraw(playerid, 256.899993, 322.599914, "box");
  510.             PlayerTextDrawLetterSize(playerid, LogginTextDraw[playerid][2], 0.000000, 2.222089);
  511.             PlayerTextDrawTextSize(playerid, LogginTextDraw[playerid][2], 383.920013, 0.000000);
  512.             PlayerTextDrawAlignment(playerid, LogginTextDraw[playerid][2], 1);
  513.             PlayerTextDrawColor(playerid, LogginTextDraw[playerid][2], -1);
  514.             PlayerTextDrawUseBox(playerid, LogginTextDraw[playerid][2], 1);
  515.             PlayerTextDrawBoxColor(playerid, LogginTextDraw[playerid][2], 133);
  516.             PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][2], 0);
  517.             PlayerTextDrawSetOutline(playerid, LogginTextDraw[playerid][2], 0);
  518.             PlayerTextDrawBackgroundColor(playerid, LogginTextDraw[playerid][2], 255);
  519.             PlayerTextDrawFont(playerid, LogginTextDraw[playerid][2], 1);
  520.             PlayerTextDrawSetProportional(playerid, LogginTextDraw[playerid][2], 1);
  521.             PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][2], 0);
  522.  
  523.             LogginTextDraw[playerid][3] = CreatePlayerTextDraw(playerid, 320.799957, 324.949707, "SIGN IN");
  524.             PlayerTextDrawLetterSize(playerid, LogginTextDraw[playerid][3], 0.305999, 1.290832);
  525.             PlayerTextDrawTextSize(playerid, LogginTextDraw[playerid][3], 10.000000, 113.000000);
  526.             PlayerTextDrawAlignment(playerid, LogginTextDraw[playerid][3], 2);
  527.             PlayerTextDrawColor(playerid, LogginTextDraw[playerid][3], -1);
  528.             PlayerTextDrawUseBox(playerid, LogginTextDraw[playerid][3], 1);
  529.             PlayerTextDrawBoxColor(playerid, LogginTextDraw[playerid][3], -2139062017);
  530.             PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][3], 0);
  531.             PlayerTextDrawSetOutline(playerid, LogginTextDraw[playerid][3], 1);
  532.             PlayerTextDrawBackgroundColor(playerid, LogginTextDraw[playerid][3], 255);
  533.             PlayerTextDrawFont(playerid, LogginTextDraw[playerid][3], 2);
  534.             PlayerTextDrawSetProportional(playerid, LogginTextDraw[playerid][3], 1);
  535.             PlayerTextDrawSetShadow(playerid, LogginTextDraw[playerid][3], 0);
  536.             PlayerTextDrawSetSelectable(playerid, LogginTextDraw[playerid][3], true);
  537.         }
  538.        
  539.         new password[MAX_PASSWORD_LENGTH +1], birthdate[11 +1], gender, previewmodel;
  540.        
  541.         cache_get_value_name(0, "password", password);
  542.         cache_get_value_name(0, "birthdate", birthdate);
  543.  
  544.         cache_get_value_name_int(0, "gender", gender);
  545.         cache_get_value_name_int(0, "skin", previewmodel);
  546.        
  547.         new day, month, year;
  548.         sscanf(birthdate, "p</>iii", day, month, year);
  549.        
  550.         SetPVarInt(playerid, "Gender", gender);
  551.        
  552.         SetPVarInt(playerid, "BirthDateDay", day);
  553.         SetPVarInt(playerid, "BirthDateMonth", month);
  554.         SetPVarInt(playerid, "BirthDateYear", year);
  555.  
  556.         SetPVarString(playerid, "Password", password);
  557.        
  558.         SetPVarInt(playerid, "LoggedInPlayer", -1);
  559.         SetPVarInt(playerid, "LogginAttempts", 0);
  560.  
  561.         PlayerTextDrawSetPreviewModel(playerid, LogginTextDraw[playerid][0], previewmodel);
  562.         PlayerTextDrawSetString(playerid, LogginTextDraw[playerid][1], ReturnPlayerName(playerid));
  563.        
  564.         for (new i; i < MAX_LOGGIN_TEXTDRAWS; i++)
  565.         {
  566.             PlayerTextDrawShow(playerid, LogginTextDraw[playerid][i]);
  567.         }
  568.        
  569.         SelectTextDraw(playerid, COLOR_LOGGIN_TD_HOVERING);
  570.     }
  571.  
  572.     cache_delete(cache);
  573.    
  574.     return 1;
  575. }
  576.  
  577. public OnPlayerDisconnect(playerid, reason)
  578. {
  579.     if (GetPVarInt(playerid, "RegisterTextDraws"))
  580.     {
  581.         for(new i; i < MAX_REGISTER_TEXTDRAWS; i++)
  582.         {
  583.             PlayerTextDrawHide(playerid, RegisterTextDraw[playerid][i]);
  584.             PlayerTextDrawDestroy(playerid, RegisterTextDraw[playerid][i]);
  585.         }
  586.     }
  587.     if (GetPVarInt(playerid, "LogginTextDraws"))
  588.     {
  589.         for(new i; i < MAX_LOGGIN_TEXTDRAWS; i++)
  590.         {
  591.             PlayerTextDrawHide(playerid, LogginTextDraw[playerid][i]);
  592.             PlayerTextDrawDestroy(playerid, LogginTextDraw[playerid][i]);
  593.         }
  594.     }
  595.     SetPVarString(playerid, "Password", EOS);
  596.    
  597.     SetPVarInt(playerid, "Gender", -1);
  598.    
  599.     SetPVarInt(playerid, "BirthDateDay", -1);
  600.     SetPVarInt(playerid, "BirthDateMonth", -1);
  601.     SetPVarInt(playerid, "BirthDateYear", -1);
  602.  
  603.     SetPVarInt(playerid, "LogginAttempts", -1);
  604.     SetPVarInt(playerid, "CurrentPreviewModel", -1);
  605.    
  606.     SetPVarInt(playerid, "RegisterTextDraws", -1);
  607.     SetPVarInt(playerid, "LogginTextDraws", -1);
  608.    
  609.     SetPVarInt(playerid, "LoggedInPlayer", -1);
  610.     SetPVarInt(playerid, "LogginAttempts", 0);
  611.  
  612.     return 1;
  613. }
  614.  
  615. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  616. {
  617.     switch(dialogid)
  618.     {
  619.         case DIALOG_PLAYER_REGISTER:
  620.         {
  621.             if (response == 1)
  622.             {
  623.                 if (!(MIN_PASSWORD_LENGTH <= strlen(inputtext) <= MAX_PASSWORD_LENGTH))
  624.                 {
  625.                     new string[118];
  626.  
  627.                     format(string, sizeof(string), "{FFFFFF}Enter your password then hit \"Submit\".\n\n \
  628.                                                     {DC143C}ERROR: Invalid password length, must be (b/w: %d/%d)", MIN_PASSWORD_LENGTH, MAX_PASSWORD_LENGTH);
  629.  
  630.                     ShowPlayerDialog(playerid, DIALOG_PLAYER_REGISTER, DIALOG_STYLE_INPUT, "{FFFF66}Register: {FFFFFF}Password", string, "Submit", "Close");
  631.                 }
  632.                 else
  633.                 {
  634.                     new string[20 +1];
  635.                     for (new i, len = strlen(inputtext); i < len; i++)
  636.                     {
  637.                         if (i < 10) strcat(string, "[]");
  638.                     }
  639.  
  640.                     if (SetPVarString(playerid, "Password", inputtext))
  641.                     {
  642.                         PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][20], string);
  643.                         PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][20]);
  644.                     }
  645.                 }
  646.             }
  647.         }
  648.         case DIALOG_PLAYER_LOGIN:
  649.         {
  650.             if (response == 1)
  651.             {
  652.                 SetPVarInt(playerid, "LogginAttempts", (GetPVarInt(playerid, "LogginAttempts") +1));
  653.                
  654.                 if (!(MIN_PASSWORD_LENGTH <= strlen(inputtext) <= MAX_PASSWORD_LENGTH))
  655.                 {
  656.                     if (GetPVarInt(playerid, "LogginAttempts") == MAX_LOGGIN_ATTEMPTS) return Kick(playerid);
  657.                    
  658.                     new string[144];
  659.  
  660.                     format(string, sizeof(string), "ERROR: Invalid password length, must be (correct length: %d/%d)", MIN_PASSWORD_LENGTH, MAX_PASSWORD_LENGTH);
  661.                     SendClientMessage(playerid, 0xDC143CFF, string);
  662.                    
  663.                     format(string, sizeof(string), "{FFFFFF}Enter your password then hit \"Submit\"\n\n \
  664.                                                     Error: Insert your correct password{DC143C}(attempts: %d/%d)", GetPVarInt(playerid, "LogginAttempts"), MAX_LOGGIN_ATTEMPTS);
  665.  
  666.                     ShowPlayerDialog(playerid, DIALOG_PLAYER_LOGIN, DIALOG_STYLE_INPUT, "{FFFF66}Login In: {FFFFFF}Insert your password", string, "Submit", "Close");
  667.                    
  668.                     PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
  669.                 }
  670.                 else
  671.                 {
  672.                     new password[MAX_PASSWORD_LENGTH +1];
  673.                     GetPVarString(playerid, "Password", password, MAX_PASSWORD_LENGTH);
  674.  
  675.                     if (!strcmp(inputtext, password, false))
  676.                     {
  677.                         if (GetPVarInt(playerid, "LogginTextDraws"))
  678.                         {
  679.                             CancelSelectTextDraw(playerid);
  680.                        
  681.                             for (new i; i < MAX_LOGGIN_TEXTDRAWS; i++)
  682.                             {
  683.                                 PlayerTextDrawHide(playerid, LogginTextDraw[playerid][i]);
  684.                                 PlayerTextDrawDestroy(playerid, LogginTextDraw[playerid][i]);
  685.                             }
  686.                             SetPVarInt(playerid, "LogginTextDraws", -1);
  687.                            
  688.                             if (SetPVarInt(playerid, "LoggedInPlayer", 1))
  689.                             {
  690.                                 SendClientMessage(playerid, 0x00FF00FF, "Welcome Back!");
  691.                             }
  692.                         }
  693.                     }
  694.                     else
  695.                     {
  696.                         if (GetPVarInt(playerid, "LogginAttempts") == MAX_LOGGIN_ATTEMPTS) return Kick(playerid);
  697.                        
  698.                         new string[133];
  699.  
  700.                         format(string, sizeof(string), "{FFFFFF}Enter your password then hit \"Submit\"\n\n \
  701.                                                         Error: Insert your correct password{DC143C}(attempts: %d/%d)", GetPVarInt(playerid, "LogginAttempts"), MAX_LOGGIN_ATTEMPTS);
  702.                                                        
  703.                         ShowPlayerDialog(playerid, DIALOG_PLAYER_LOGIN, DIALOG_STYLE_INPUT, "{FFFF66}Login In: {FFFFFF}Insert your password", string, "Submit", "Close");
  704.                        
  705.                         PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
  706.                     }
  707.                 }
  708.             }
  709.         }
  710.         case DIALOG_SELECT_GENDER:
  711.         {
  712.             if (response == 1)
  713.             {
  714.                 if (SetPVarInt(playerid, "Gender", (listitem +1)))
  715.                 {
  716.                     PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][9], (listitem > 0) ? ("Female"):("Male"));
  717.                 }
  718.             }
  719.         }
  720.         case DIALOG_SELECT_DATE_DAY:
  721.         {
  722.             if (response == 1)
  723.             {
  724.                 if (GetPVarInt(playerid, "BirthDateMonth") == -1)
  725.                 {
  726.                     ShowPlayerDialog(playerid, UNUSED_PLAYER_DIALOG, DIALOG_STYLE_MSGBOX, "{FFFF66}Register: {DC143C}Error:", "{FFFFFF}- Please; first select a month for your birth date", "Close", "");
  727.                    
  728.                     PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
  729.                 }
  730.                 else
  731.                 {
  732.                     if (SetPVarInt(playerid, "BirthDateDay", (listitem +1)))
  733.                     {
  734.                         new string[2 +1];
  735.  
  736.                         format(string, sizeof(string), "%i", (listitem +1));
  737.                         PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][14], string);
  738.                     }
  739.                 }
  740.             }
  741.         }
  742.         case DIALOG_SELECT_DATE_MONTH:
  743.         {
  744.             if (response == 1)
  745.             {
  746.                 new month[15];
  747.            
  748.                 switch (listitem)
  749.                 {
  750.                     case 0: month = "January";
  751.                     case 1: month = "February";
  752.                     case 2: month = "March";
  753.                     case 3: month = "April";
  754.                     case 4: month = "May";
  755.                     case 5: month = "June";
  756.                     case 6: month = "July";
  757.                     case 7: month = "August";
  758.                     case 8: month = "September";
  759.                     case 9: month = "October";
  760.                     case 10: month = "November";
  761.                     case 11: month = "December";
  762.                    
  763.                     default: month = "Unknown: ERROR";
  764.                 }
  765.                
  766.                 PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][12], month);
  767.                
  768.                 SetPVarInt(playerid, "BirthDateMonth", (listitem +1));
  769.             }
  770.         }
  771.         case DIALOG_SELECT_DATE_YEAR:
  772.         {
  773.             if (response == 1)
  774.             {
  775.                 PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][14], "Day");
  776.                 PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][12], "Month");
  777.                
  778.                 SetPVarInt(playerid, "BirthDateDay", -1);
  779.                 SetPVarInt(playerid, "BirthDateMonth", -1);
  780.                
  781.                 new string[5];
  782.  
  783.                 format(string, sizeof(string), "%i", (MAX_DATE_YEAR -listitem));
  784.                 PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][10], string);
  785.                
  786.                 SetPVarInt(playerid, "BirthDateYear", (MAX_DATE_YEAR -listitem));
  787.             }
  788.         }
  789.     }
  790.     return 1;
  791. }
  792.  
  793. public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
  794. {
  795.     if (playertextid == RegisterTextDraw[playerid][3])
  796.     {
  797.         ShowPlayerDialog(playerid, DIALOG_PLAYER_REGISTER, DIALOG_STYLE_PASSWORD, "{FFFF66}Register: {FFFFFF}Password", "{FFFFFF}Enter your password then hit \"Submit\"", "Submit", "Close");
  798.     }
  799.    
  800.     else if (playertextid == RegisterTextDraw[playerid][6])
  801.     {
  802.         ShowPlayerDialog(playerid, DIALOG_SELECT_GENDER, DIALOG_STYLE_LIST, "{FFFF66}Register: {FFFFFF}Gender", "{FFFFFF}Male\nFemale\n", "Select", "Close");
  803.     }
  804.  
  805.     else if (playertextid == RegisterTextDraw[playerid][8])
  806.     {
  807.         new string[7 *(MAX_DATE_YEAR -MIN_DATE_YEAR)], year[7];
  808.  
  809.         for (new i = MAX_DATE_YEAR; i >= MIN_DATE_YEAR; i--)
  810.         {
  811.             format(year, sizeof(year), "%i\n", i);
  812.             strcat(string, year, sizeof(string));
  813.         }
  814.         ShowPlayerDialog(playerid, DIALOG_SELECT_DATE_YEAR, DIALOG_STYLE_LIST, "{FFFF66}Register: {FFFFFF}Birth Date: Year", string, "Select", "Close");
  815.     }
  816.    
  817.     else if (playertextid == RegisterTextDraw[playerid][11])
  818.     {
  819.         ShowPlayerDialog(playerid, DIALOG_SELECT_DATE_MONTH, DIALOG_STYLE_LIST, "{FFFF66}Register: {FFFFFF}Birth Date: Month", "{FFFFFF}January\nFebruary\nMarch\nApril\nMay\nJune\nJuly\nAugust\nSeptember\nOctober\nNovember\nDecember", "Select", "Close");
  820.     }
  821.    
  822.     else if (playertextid == RegisterTextDraw[playerid][13])
  823.     {
  824.         new max_days_for_month;
  825.        
  826.         switch (GetPVarInt(playerid, "BirthDateMonth"))
  827.         {
  828.             case 1: max_days_for_month = 31;
  829.             case 3: max_days_for_month = 31;
  830.             case 4: max_days_for_month = 30;
  831.             case 5: max_days_for_month = 31;
  832.             case 6: max_days_for_month = 30;
  833.             case 7: max_days_for_month = 31;
  834.             case 8: max_days_for_month = 31;
  835.             case 9: max_days_for_month = 30;
  836.             case 10: max_days_for_month = 31;
  837.             case 11: max_days_for_month = 31;
  838.             case 12: max_days_for_month = 31;
  839.            
  840.             case 2: //February
  841.             {
  842.                 if ((GetPVarInt(playerid, "BirthDateYear") %4) == 0) max_days_for_month = 29;
  843.                 else                                                 max_days_for_month = 28;
  844.             }
  845.            
  846.             default: max_days_for_month = 30;
  847.         }
  848.  
  849.         new string[5 *31], days[5];
  850.  
  851.         for (new i = 1; i <= max_days_for_month; i++)
  852.         {
  853.             format(days, sizeof(days), "%i\n", i);
  854.             strcat(string, days, sizeof(string));
  855.         }
  856.         ShowPlayerDialog(playerid, DIALOG_SELECT_DATE_DAY, DIALOG_STYLE_LIST, "{FFFF66}Register: {FFFFFF}Birth Date: Day", string, "Select", "Close");
  857.     }
  858.  
  859.     else if (playertextid == RegisterTextDraw[playerid][15])
  860.     {
  861.         new Gender          =       GetPVarInt(playerid, "Gender");
  862.         new BirthDay        =       GetPVarInt(playerid, "BirthDateDay");
  863.         new BirthMonth      =       GetPVarInt(playerid, "BirthDateMonth");
  864.         new BirthYear       =       GetPVarInt(playerid, "BirthDateYear");
  865.        
  866.         new password[MAX_PASSWORD_LENGTH +1];
  867.         GetPVarString(playerid, "Password", password, MAX_PASSWORD_LENGTH);
  868.  
  869.         if (!(MIN_PASSWORD_LENGTH <= strlen(password) <= MAX_PASSWORD_LENGTH) || Gender < 0 || BirthDay < 0 || BirthMonth < 0 || BirthYear < 0)
  870.         {
  871.             new string[234 +1];
  872.  
  873.             if (!(MIN_PASSWORD_LENGTH <= strlen(password) <= MAX_PASSWORD_LENGTH))
  874.             {
  875.                 strcat(string, "{FFFFFF}- Please enter a password\n");
  876.             }
  877.             if (Gender          < 0)    strcat(string, "{FFFFFF}- Please select a gender\n");
  878.             if (BirthYear       < 0)    strcat(string, "{FFFFFF}- Please select a year four your birth date\n");
  879.             if (BirthMonth      < 0)    strcat(string, "{FFFFFF}- Please select a month four your birth date\n");
  880.             if (BirthDay        < 0)    strcat(string, "{FFFFFF}- Please select a day four your birth date\n");
  881.            
  882.             ShowPlayerDialog(playerid, UNUSED_PLAYER_DIALOG, DIALOG_STYLE_MSGBOX, "{FFFF66}Register: {DC143C}Error:", string, "Close", "");
  883.            
  884.             PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
  885.         }
  886.         else
  887.         {
  888.             if (SetPVarInt(playerid, "RegisterTextDraws", -1))
  889.             {
  890.                 CancelSelectTextDraw(playerid);
  891.            
  892.                 for (new i; i < MAX_REGISTER_TEXTDRAWS; i++)
  893.                 {
  894.                     PlayerTextDrawHide(playerid, RegisterTextDraw[playerid][i]);
  895.                     PlayerTextDrawDestroy(playerid, RegisterTextDraw[playerid][i]);
  896.                 }
  897.                
  898.                 new query[256 +1];
  899.                 format(query, sizeof(query), "INSERT INTO `users`(`username`, `password`, `gender`, `birthdate`, `skin`) VALUES ('%q', '%q', %i, '%i/%i/%i', %i)", ReturnPlayerName(playerid), password, Gender, BirthDay, BirthMonth, BirthYear, GetPVarInt(playerid, "CurrentPreviewModel"));
  900.                 mysql_query(handle, query, false);
  901.             }
  902.         }
  903.     }
  904.  
  905.     else if (playertextid == RegisterTextDraw[playerid][17])
  906.     {
  907.         new
  908.             current = GetPVarInt(playerid, "CurrentPreviewModel");
  909.  
  910.         if (current <= 0)
  911.         {
  912.             PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
  913.         }
  914.         else
  915.         {
  916.             SetPVarInt(playerid, "CurrentPreviewModel", (current -1));
  917.            
  918.             PlayerTextDrawHide(playerid, RegisterTextDraw[playerid][1]);
  919.             PlayerTextDrawSetPreviewModel(playerid, RegisterTextDraw[playerid][1], (current -1));
  920.            
  921.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][1]);
  922.            
  923.             new string[3 +1];
  924.             format(string, sizeof(string), "%i", (current -1));
  925.             PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][19], string);
  926.         }
  927.     }
  928.    
  929.     else if (playertextid == RegisterTextDraw[playerid][18])
  930.     {
  931.         new
  932.             current = GetPVarInt(playerid, "CurrentPreviewModel");
  933.            
  934.         if (current > 310)
  935.         {
  936.             PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
  937.         }
  938.         else
  939.         {
  940.             SetPVarInt(playerid, "CurrentPreviewModel", (current +1));
  941.            
  942.             PlayerTextDrawHide(playerid, RegisterTextDraw[playerid][1]);
  943.             PlayerTextDrawSetPreviewModel(playerid, RegisterTextDraw[playerid][1], (current +1));
  944.            
  945.             PlayerTextDrawShow(playerid, RegisterTextDraw[playerid][1]);
  946.            
  947.             new string[3 +1];
  948.             format(string, sizeof(string), "%i", (current +1));
  949.             PlayerTextDrawSetString(playerid, RegisterTextDraw[playerid][19], string);
  950.         }
  951.     }
  952.     else if (playertextid == LogginTextDraw[playerid][3])
  953.     {
  954.         ShowPlayerDialog(playerid, DIALOG_PLAYER_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFF66}Login In: {FFFFFF}Insert your password", "{FFFFFF}Enter your password then hit \"Submit\"", "Submit", "Close");
  955.     }
  956.     return 1;
  957. }
  958.  
  959. /*==============================================================================
  960.  
  961.     Util Commands:
  962.  
  963. ==============================================================================*/
  964.  
  965.  
  966. CMD:changepassword(playerid, params[])
  967. {
  968.     if (GetPVarInt(playerid, "LoggedInPlayer") < 0) return SendClientMessage(playerid, 0xDC143CFF, "ERROR: You are not registered or logged in.");
  969.  
  970.     new password[MAX_PASSWORD_LENGTH +1];
  971.  
  972.     if (sscanf(params, "s["#MAX_PASSWORD_LENGTH"]", password)) return SendClientMessage(playerid, -1, "* USAGE: /changepassword <new password>");
  973.    
  974.     if (!(MIN_PASSWORD_LENGTH <= strlen(password) <= MAX_PASSWORD_LENGTH)) return SendClientMessage(playerid, 0xDC143CFF, "ERROR: Invalid password length, must be (correct length: "#MIN_PASSWORD_LENGTH"/"#MAX_PASSWORD_LENGTH")");
  975.    
  976.     new current_password[MAX_PASSWORD_LENGTH +1];
  977.     GetPVarString(playerid, "Password", current_password, MAX_PASSWORD_LENGTH);
  978.    
  979.     if (!strcmp(current_password, password)) return SendClientMessage(playerid, 0xDC143CFF, "ERROR: Your current password and the new password are the same.");
  980.    
  981.     new query[109 +MAX_PASSWORD_LENGTH];
  982.    
  983.     format(query, sizeof(query), "UPDATE `users` SET `password` = '%q' WHERE `username` COLLATE latin1_general_cs = '%q'", password, ReturnPlayerName(playerid));
  984.     mysql_query(handle, query, false);
  985.    
  986.     new message[58 +MAX_PASSWORD_LENGTH];
  987.  
  988.     format(message, sizeof(message), "ACCOUNT: You have changed your password to {FFFFFF}\"%s\"", password);
  989.     SendClientMessage(playerid, 0x00FF00FF, message);
  990.    
  991.     SetPVarString(playerid, "Password", password);
  992.    
  993.     return 1;
  994. }
  995.  
  996. CMD:changegender(playerid, params[])
  997. {
  998.     if (GetPVarInt(playerid, "LoggedInPlayer") < 0) return SendClientMessage(playerid, 0xDC143CFF, "ERROR: You are not registered or logged in.");
  999.    
  1000.     new gender[6 +1];
  1001.     if (sscanf(params, "s[7]", gender)) return SendClientMessage(playerid, -1, "USAGE: /changegender <male/female>");
  1002.  
  1003.     new genderid;
  1004.  
  1005.     if (!strcmp(gender, "Male", true))              genderid = 1;
  1006.     else if (!strcmp(gender, "Female", true))       genderid = 2;
  1007.     else                                            genderid = -1;
  1008.    
  1009.     if (genderid < 0) return SendClientMessage(playerid, 0xDC143CFF, "ERROR: Insert a correct gender (correct gender: Male/Female)");
  1010.    
  1011.     if (GetPVarInt(playerid, "Gender") == genderid) return SendClientMessage(playerid, 0xDC143CFF, "ERROR: Current gender is already select gender.");
  1012.  
  1013.     new query[114 +MAX_PLAYER_NAME];
  1014.    
  1015.     format(query, sizeof(query), "UPDATE `users` SET `gender` = %i WHERE `username` COLLATE latin1_general_cs = '%q'", genderid, ReturnPlayerName(playerid));
  1016.     mysql_query(handle, query, false);
  1017.  
  1018.     new message[62];
  1019.    
  1020.     format(message, sizeof(query), "ACCOUNT: You have changed your gender to {FFFFFF}\"%s\"", (genderid > 1) ? ("Female"):("Male"));
  1021.     SendClientMessage(playerid, 0x00FF00FF, message);
  1022.    
  1023.     SetPVarInt(playerid, "Gender", genderid);
  1024.  
  1025.     return 1;
  1026. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement