John_Blaze1971

Login/Register system v1

Apr 5th, 2016
840
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.72 KB | None | 0 0
  1. // This is a comment
  2. // uncomment the line below if you want to write a filterscript
  3. //#define FILTERSCRIPT
  4.  
  5. #include <a_samp>
  6. #include <YSI\y_ini>
  7. #include <zcmd>
  8. #include <streamer>
  9. #include <sscanf>
  10.  
  11. main()
  12. {
  13. print("\n----------------------------------");
  14. print(" Blank Gamemode by your name here");
  15. print("----------------------------------\n");
  16. }
  17. new Text:login;
  18. new Text:kills;
  19. new Text:deaths;
  20. public OnGameModeInit()
  21. {
  22. // Don't use these lines if it's a filterscript
  23. SetGameModeText("Blank Script");
  24. AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  25. // On top of script:
  26.  
  27.  
  28. // In OnGameModeInit
  29. login = TextDrawCreate(6 ,311 , "Logging to the server");
  30. TextDrawFont(login , 1);
  31. TextDrawLetterSize(login ,0.3, 1.5);
  32. TextDrawColor(login , 0x4400ffFF);
  33. TextDrawSetOutline(login , false);
  34. TextDrawSetProportional(login , true);
  35. TextDrawSetShadow(login , 1);
  36. kills = TextDrawCreate(6 ,290 , "Kills:");
  37. TextDrawFont(login , 1);
  38. TextDrawLetterSize(login ,0.3, 1.5);
  39. TextDrawColor(login , 0x4400ffFF);
  40. TextDrawSetOutline(login , false);
  41. TextDrawSetProportional(login , true);
  42. TextDrawSetShadow(login , 1);
  43. deaths = TextDrawCreate(6 ,269 , "Deaths:");
  44. TextDrawFont(login , 1);
  45. TextDrawLetterSize(login ,0.3, 1.5);
  46. TextDrawColor(login , 0x4400ffFF);
  47. TextDrawSetOutline(login , false);
  48. TextDrawSetProportional(login , true);
  49. TextDrawSetShadow(login , 1);
  50. return 1;
  51. }
  52.  
  53. public OnGameModeExit()
  54. {
  55. return 1;
  56. }
  57.  
  58. public OnPlayerRequestClass(playerid, classid)
  59. {
  60. SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  61. SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  62. SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  63. return 1;
  64. }
  65. #define DIALOG_REGISTER 1
  66. #define DIALOG_LOGIN 2
  67. #define DIALOG_SUCCESS_1 3
  68. #define DIALOG_SUCCESS_2 4
  69. #define PATH "/Users/%s.ini"
  70. #define colorenter 0x33AA33AA
  71. #define COLOR_RED 0xAA3333AA
  72. #define colorexit 0xFFFF00AA
  73. enum pInfos
  74. {
  75. pPass,
  76. pCash,
  77. pAdmin,
  78. pKills,
  79. pDeaths,
  80. pActivity,
  81. pRegister
  82. }
  83. new pInfo[MAX_PLAYERS][pInfos];
  84. new
  85. Float: PosX[ MAX_PLAYERS ],
  86. Float: PosY[ MAX_PLAYERS ],
  87. Float: PosZ[ MAX_PLAYERS ],
  88. Float: Angle[ MAX_PLAYERS ]
  89. ;
  90. forward LoadUser_data(playerid,name[],value[]);
  91. public LoadUser_data(playerid,name[],value[])
  92. {
  93. INI_Int("Password",pInfo[playerid][pPass]);
  94. INI_Int("Cash",pInfo[playerid][pCash]);
  95. INI_Int("Admin",pInfo[playerid][pAdmin]);
  96. INI_Int("Kills",pInfo[playerid][pKills]);
  97. INI_Int("Deaths",pInfo[playerid][pDeaths]);
  98. INI_Float( "PosX", PosX[ playerid ] );
  99. INI_Float( "PosY", PosY[ playerid ] );
  100. INI_Float( "PosZ", PosZ[ playerid ] );
  101. INI_Float( "PosAngle", Angle[ playerid ] );
  102. INI_Int("Activity",pInfo[playerid][pActivity]);
  103. return 1;
  104. }
  105. stock UserPath(playerid)
  106. {
  107. new string[128],playername[MAX_PLAYER_NAME];
  108. GetPlayerName(playerid,playername,sizeof(playername));
  109. format(string,sizeof(string),PATH,playername);
  110. return string;
  111. }
  112. stock udb_hash(buf[]) {
  113. new length=strlen(buf);
  114. new s1 = 1;
  115. new s2 = 0;
  116. new n;
  117. for (n=0; n<length; n++)
  118. {
  119. s1 = (s1 + buf[n]) % 65521;
  120. s2 = (s2 + s1) % 65521;
  121. }
  122. return (s2 << 16) + s1;
  123. }
  124. public OnPlayerConnect(playerid)
  125. {
  126. if(fexist(UserPath(playerid)))
  127. {
  128. INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  129. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"{A92ACC}Login","{09B086}Type your password below to login.","Login","Quit");
  130. TextDrawShowForPlayer(playerid,login);
  131. }
  132. else
  133. {
  134. ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"{A92ACC}REGISTER","{09B086}Type your password below to register a new account to join Flement RPG.","Register","Quit");
  135. TextDrawSetString(login,"Registering to the server!");
  136. TextDrawShowForPlayer(playerid,login);
  137. }
  138. return 1;
  139. }
  140.  
  141. public OnPlayerDisconnect(playerid, reason)
  142. {
  143. GetPlayerPos( playerid, PosX[ playerid ], PosY[ playerid ], PosZ[ playerid ] );
  144. GetPlayerFacingAngle( playerid, Angle[ playerid ] );
  145. new INI:File = INI_Open(UserPath(playerid));
  146. INI_SetTag(File,"data");
  147. INI_WriteInt(File,"Cash",pInfo[playerid][pCash]);
  148. INI_WriteInt(File,"Admin",pInfo[playerid][pAdmin]);
  149. INI_WriteInt(File,"Kills",pInfo[playerid][pKills]);
  150. INI_WriteInt(File,"Deaths",pInfo[playerid][pDeaths]);
  151. INI_WriteFloat( File, "PosX", PosX[ playerid ] );
  152. INI_WriteFloat( File, "PosY", PosY[ playerid ] );
  153. INI_WriteFloat( File, "PosZ", PosZ[ playerid ] );
  154. INI_WriteFloat( File, "PosAngle", Angle[ playerid ] );
  155. INI_WriteInt(File,"Activity",pInfo[playerid][pActivity]);
  156. INI_Close(File);
  157. return 1;
  158. }
  159.  
  160. public OnPlayerSpawn(playerid)
  161. {
  162. SetPlayerPos( playerid, PosX[ playerid ], PosY[ playerid ], PosZ[ playerid ] );
  163. SetPlayerFacingAngle( playerid, Angle[ playerid ] );
  164. SetTimer("activity",60000,true);
  165. TextDrawHideForPlayer(playerid,login);
  166. new str[128],str1[128],str2[128];
  167. format(str,sizeof(str),"Activity: %d",pInfo[playerid][pActivity]);
  168. TextDrawSetString(login,str);
  169. TextDrawShowForPlayer(playerid,login);
  170. format(str1,sizeof(str1),"Kills: %d",pInfo[playerid][pKills]);
  171. TextDrawSetString(kills,str1);
  172. TextDrawShowForPlayer(playerid,kills);
  173. format(str2,sizeof(str2),"Deaths: %d",pInfo[playerid][pDeaths]);
  174. TextDrawSetString(deaths,str2);
  175. TextDrawShowForPlayer(playerid,deaths);
  176. return 1;
  177. }
  178.  
  179. public OnPlayerDeath(playerid, killerid, reason)
  180. {
  181. pInfo[killerid][pKills]++;
  182. pInfo[playerid][pDeaths]++;
  183. return 1;
  184. }
  185. CMD:activity(playerid,params[])
  186. {
  187. new str[128];
  188. format(str,sizeof(str),"[ ! ] Your total activity is %d",pInfo[playerid][pActivity]);
  189. SendClientMessage(playerid,colorenter,"------------------------------");
  190. SendClientMessage(playerid,-1,str);
  191. SendClientMessage(playerid,colorenter,"------------------------------");
  192. return 1;
  193. }
  194. CMD:kills(playerid,params[])
  195. {
  196. new str[128];
  197. format(str,sizeof(str),"[ ! ] Your total kills are %d",pInfo[playerid][pKills]);
  198. SendClientMessage(playerid,colorenter,"------------------------------");
  199. SendClientMessage(playerid,-1,str);
  200. SendClientMessage(playerid,colorenter,"------------------------------");
  201. return 1;
  202. }
  203. CMD:deaths(playerid,params[])
  204. {
  205. new str[128];
  206. format(str,sizeof(str),"[ ! ] Your total deaths are %d",pInfo[playerid][pDeaths]);
  207. SendClientMessage(playerid,colorenter,"------------------------------");
  208. SendClientMessage(playerid,-1,str);
  209. SendClientMessage(playerid,colorenter,"------------------------------");
  210. return 1;
  211. }
  212. CMD:savestats(playerid,params[])
  213. {
  214. GetPlayerPos( playerid, PosX[ playerid ], PosY[ playerid ], PosZ[ playerid ] );
  215. GetPlayerFacingAngle( playerid, Angle[ playerid ] );
  216. //Login Register system
  217. new INI:File = INI_Open(UserPath(playerid));
  218. INI_SetTag(File,"data");
  219. INI_WriteInt(File,"Cash",pInfo[playerid][pCash]);
  220. INI_WriteInt(File,"Admin",pInfo[playerid][pAdmin]);
  221. INI_WriteInt(File,"Kills",pInfo[playerid][pKills]);
  222. INI_WriteInt(File,"Deaths",pInfo[playerid][pDeaths]);
  223. INI_WriteFloat( File, "PosX", PosX[ playerid ] );
  224. INI_WriteFloat( File, "PosY", PosY[ playerid ] );
  225. INI_WriteFloat( File, "PosZ", PosZ[ playerid ] );
  226. INI_WriteFloat( File, "PosAngle", Angle[ playerid ] );
  227. INI_WriteInt(File,"Activity",pInfo[playerid][pActivity]);
  228. INI_Close(File);
  229. SendClientMessage(playerid,colorenter,"[ ! ] Your stats have being saved!");
  230. //End
  231. return 1;
  232. }
  233. forward activity(playerid);
  234. public activity(playerid)
  235. {
  236. pInfo[playerid][pActivity] += 1;
  237. }
  238.  
  239. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  240. {
  241. switch( dialogid )
  242. {
  243. case DIALOG_REGISTER:
  244. {
  245. if (!response) return Kick(playerid);
  246. if(response)
  247. {
  248. TextDrawSetString(login,"Registering to the server");
  249. TextDrawShowForPlayer(playerid,login);
  250. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "{A92ACC}Registering to the server","{09B086}Type your password below to register a new account.","Register","Quit");
  251. new INI:File = INI_Open(UserPath(playerid));
  252. INI_SetTag(File,"data");
  253. INI_WriteInt(File,"Password",udb_hash(inputtext));
  254. INI_WriteInt(File,"FCash",0);
  255. INI_WriteInt(File,"Admin",0);
  256. INI_WriteInt(File,"Kills",0);
  257. INI_WriteInt(File,"Deaths",0);
  258. INI_WriteFloat(File,"PosX",0);
  259. INI_WriteFloat(File,"PosY",0);
  260. INI_WriteFloat(File,"PosZ",0);
  261. INI_WriteFloat(File,"PosAngle",0);
  262. INI_WriteInt(File,"Activity",0);
  263. INI_Close(File);
  264. SetTimer("RegPos",2000,false);
  265. pInfo[playerid][pActivity] = 0;
  266. }
  267. }
  268. case DIALOG_LOGIN:
  269. {
  270. TextDrawSetString(login,"Logging to the server");
  271. TextDrawShowForPlayer(playerid,login);
  272. if ( !response ) return Kick ( playerid );
  273. if( response )
  274. {
  275. if(udb_hash(inputtext) == pInfo[playerid][pPass])
  276. {
  277. INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  278. GivePlayerMoney(playerid, pInfo[playerid][pCash]);
  279. TextDrawHideForPlayer(playerid,login);
  280. }
  281. else
  282. {
  283. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"{A92ACC}Logging into the server","{09B086}You have entered an incorrect password.\nType your password below to login.","Login","Quit");
  284. }
  285. return 1;
  286. }
  287. }
  288. }
  289. return 1;
  290. }
Add Comment
Please, Sign In to add comment