1. #include <a_samp>
  2. #include <YSI\y_ini>
  3. #define FILTERSCRIPT
  4. #define DIALOG_REG 2011
  5. #define DIALOG_LOGIN 2012
  6. #define UserPath "Accounts/%s.ini"
  7. native WP_Hash(buffer[],len,const str[]);
  8. enum pInfo
  9. {
  10. pPass[129],
  11. pAdminLevel,
  12. pVIPlevel,
  13. pMoney,
  14. pScores,
  15. pKills,
  16. pDeaths
  17. }
  18. new PlayerInfo[MAX_PLAYERS][pInfo];
  19. stock Path(playerid)
  20. {
  21. new str[128],name[MAX_PLAYER_NAME];
  22. GetPlayerName(playerid,name,sizeof(name));
  23. format(str,sizeof(str),UserPath,name);
  24. return str;
  25. }
  26. forward loadaccount_user(playerid, name[], value[]);
  27. public loadaccount_user(playerid, name[], value[])
  28. {
  29. INI_String("Password", PlayerInfo[playerid][pPass],129);
  30. INI_Int("AdminLevel",PlayerInfo[playerid][pAdminLevel]);
  31. INI_Int("VIPLevel",PlayerInfo[playerid][pVIPlevel]);
  32. INI_Int("Money",PlayerInfo[playerid][pMoney]);
  33. INI_Int("Scores",PlayerInfo[playerid][pScores]);
  34. INI_Int("Kills",PlayerInfo[playerid][pKills]);
  35. INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
  36. return 1;
  37. }
  38. #if defined FILTERSCRIPT
  39. public OnFilterScriptInit()
  40. {
  41. print("\n--------------------------------------");
  42. print(" Reg & Login v1.0");
  43. print("--------------------------------------\n");
  44. return 1;
  45. }
  46. public OnFilterScriptExit()
  47. {
  48. return 1;
  49. }
  50. #else
  51. main()
  52. {
  53. print("\n----------------------------------");
  54. print(" Blank Gamemode by your name here");
  55. print("----------------------------------\n");
  56. }
  57. #endif
  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. public OnPlayerConnect(playerid)
  66. {
  67. new name[MAX_PLAYER_NAME];
  68. GetPlayerName(playerid,name,sizeof(name));
  69. if(fexist(Path(playerid)))
  70. {
  71. INI_ParseFile(Path(playerid),"loadaccount_user", .bExtra = true, .extra = playerid);
  72. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Welcome back. This account is registered. \nInsert your password to login to your account","Login","Quit");
  73. }
  74. else
  75. {
  76. ShowPlayerDialog(playerid,DIALOG_REG,DIALOG_STYLE_INPUT,"Register","Welcome! This account is not registered.\nEnter your own password to create a new account.","Register","Quit");
  77. return 1;
  78. }
  79. return 1;
  80. }
  81. public OnPlayerDisconnect(playerid, reason)
  82. {
  83. if(fexist(Path(playerid)))
  84. {
  85. new INI:file = INI_Open(Path(playerid));
  86. INI_SetTag(file,"Player's Data");
  87. INI_WriteInt(file,"AdminLevel",PlayerInfo[playerid][pAdminLevel]);
  88. INI_WriteInt(file,"VIPLevel",PlayerInfo[playerid][pVIPlevel]);
  89. INI_WriteInt(file,"Money",GetPlayerMoney(playerid));
  90. INI_WriteInt(file,"Scores",GetPlayerScore(playerid));
  91. INI_WriteInt(file,"Kills",PlayerInfo[playerid][pKills]);
  92. INI_WriteInt(file,"Deaths",PlayerInfo[playerid][pDeaths]);
  93. INI_Close(file);
  94. INI_Close(file);
  95. return 1;
  96. }
  97. return 1;
  98. }
  99. public OnPlayerSpawn(playerid)
  100. {
  101. return 1;
  102. }
  103. public OnPlayerDeath(playerid, killerid, reason)
  104. {
  105. return 1;
  106. }
  107. public OnVehicleSpawn(vehicleid)
  108. {
  109. return 1;
  110. }
  111. public OnVehicleDeath(vehicleid, killerid)
  112. {
  113. return 1;
  114. }
  115. public OnPlayerText(playerid, text[])
  116. {
  117. return 1;
  118. }
  119. public OnPlayerCommandText(playerid, cmdtext[])
  120. {
  121. if (strcmp("/mycommand", cmdtext, true, 10) == 0)
  122. {
  123. // Do something here
  124. return 1;
  125. }
  126. return 0;
  127. }
  128. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  129. {
  130. return 1;
  131. }
  132. public OnPlayerExitVehicle(playerid, vehicleid)
  133. {
  134. return 1;
  135. }
  136. public OnPlayerStateChange(playerid, newstate, oldstate)
  137. {
  138. return 1;
  139. }
  140. public OnPlayerEnterCheckpoint(playerid)
  141. {
  142. return 1;
  143. }
  144. public OnPlayerLeaveCheckpoint(playerid)
  145. {
  146. return 1;
  147. }
  148. public OnPlayerEnterRaceCheckpoint(playerid)
  149. {
  150. return 1;
  151. }
  152. public OnPlayerLeaveRaceCheckpoint(playerid)
  153. {
  154. return 1;
  155. }
  156. public OnRconCommand(cmd[])
  157. {
  158. return 1;
  159. }
  160. public OnPlayerRequestSpawn(playerid)
  161. {
  162. return 1;
  163. }
  164. public OnObjectMoved(objectid)
  165. {
  166. return 1;
  167. }
  168. public OnPlayerObjectMoved(playerid, objectid)
  169. {
  170. return 1;
  171. }
  172. public OnPlayerPickUpPickup(playerid, pickupid)
  173. {
  174. return 1;
  175. }
  176. public OnVehicleMod(playerid, vehicleid, componentid)
  177. {
  178. return 1;
  179. }
  180. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  181. {
  182. return 1;
  183. }
  184. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  185. {
  186. return 1;
  187. }
  188. public OnPlayerSelectedMenuRow(playerid, row)
  189. {
  190. return 1;
  191. }
  192. public OnPlayerExitedMenu(playerid)
  193. {
  194. return 1;
  195. }
  196. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  197. {
  198. return 1;
  199. }
  200. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  201. {
  202. return 1;
  203. }
  204. public OnRconLoginAttempt(ip[], password[], success)
  205. {
  206. return 1;
  207. }
  208. public OnPlayerUpdate(playerid)
  209. {
  210. return 1;
  211. }
  212. public OnPlayerStreamIn(playerid, forplayerid)
  213. {
  214. return 1;
  215. }
  216. public OnPlayerStreamOut(playerid, forplayerid)
  217. {
  218. return 1;
  219. }
  220. public OnVehicleStreamIn(vehicleid, forplayerid)
  221. {
  222. return 1;
  223. }
  224. public OnVehicleStreamOut(vehicleid, forplayerid)
  225. {
  226. return 1;
  227. }
  228. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  229. {
  230. if(dialogid == DIALOG_REG)
  231. {
  232. if(!response) return Kick(playerid);
  233. if(response)
  234. {
  235. if(!strlen(inputtext))
  236. {
  237. ShowPlayerDialog(playerid,DIALOG_REG,DIALOG_STYLE_INPUT,"Register","Welcome! This account is not registered.\nEnter your own password to create a new account.\nPlease enter the password!","Register","Quit");
  238. return 1;
  239. }
  240. new hashpass[129];
  241. WP_Hash(hashpass,sizeof(hashpass),inputtext);
  242. new INI:file = INI_Open(Path(playerid));
  243. INI_SetTag(file,"Player's Data");
  244. INI_WriteString(file,"Password",hashpass);
  245. INI_WriteInt(file,"AdminLevel",0);
  246. INI_WriteInt(file,"VIPLevel",0);
  247. INI_WriteInt(file,"Money",0);
  248. INI_WriteInt(file,"Scores",0);
  249. INI_WriteInt(file,"Kills",0);
  250. INI_WriteInt(file,"Deaths",0);
  251. INI_Close(file);
  252. SendClientMessage(playerid,-1,"You have been successfully registered");
  253. return 1;
  254. }
  255. }
  256. if(dialogid == DIALOG_LOGIN)
  257. {
  258. if(!response) return Kick(playerid);
  259. if(response)
  260. {
  261. new hashpass[129];
  262. WP_Hash(hashpass,sizeof(hashpass),inputtext);
  263. if(!strcmp(hashpass,PlayerInfo[playerid][pPass]))
  264. {
  265. INI_ParseFile(Path(playerid),"loadaccount_user",.bExtra = true, .extra = playerid);
  266. SetPlayerScore(playerid,PlayerInfo[playerid][pScores]);
  267. GivePlayerMoney(playerid,PlayerInfo[playerid][pMoney]);
  268. SendClientMessage(playerid,-1,"Welcome back! You have successfully logged in");
  269. }
  270. else
  271. {
  272. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Welcome back. This account is registered. \nInsert your password to login to your account.\nIncorrect password!","Login","Quit");
  273. return 1;
  274. }
  275. }
  276. }
  277. return 1;
  278. }
  279. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  280. {
  281. return 1;
  282. }