Advertisement
Vennox

Untitled

Sep 3rd, 2020
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.90 KB | None | 0 0
  1. #define SQL_HOST "127.0.0.1"
  2. #define SQL_USER "root"
  3. #define SQL_DATA "gamemode0"
  4. #define SQL_PASS ""
  5.  
  6. #include <a_samp>
  7. #include <a_mysql>
  8. #include <core>
  9. #include <float>
  10.  
  11. native WP_Hash(buffer[], len, const str[]);
  12. #define function%0(%1) forward%0(%1); public%0(%1)
  13. #define SCM SendClientMessage
  14. new MySQL:SQL, gString[512];
  15.  
  16. #pragma tabsize 0
  17.  
  18. enum pInfo {
  19. pHasAccount, pLoggedIn, pRegisterPassword[256], pRegisterAge, pRegisterSex, pRegisterMail[100], pSkin, pSQLID, pLastLogin
  20. }
  21. new PlayerInfo[MAX_PLAYERS][pInfo];
  22.  
  23.  
  24. enum{
  25. DIALOG_LOGIN_PASS, DIALOG_REGISTER_PASS, DIALOG_REGISTER_SEX, DIALOG_REGISTER_AGE, DIALOG_REGISTER_MAIL
  26. }
  27.  
  28. main()
  29. {
  30. print("\nGamemode is starting");
  31.  
  32.  
  33. }
  34.  
  35. public OnPlayerConnect(playerid)
  36. {
  37. PlayerInfo[playerid][pHasAccount] = CheckAccount(playerid);
  38.  
  39. return 1;
  40. }
  41.  
  42. function SetPlayerLoginCam(playerid){
  43. SetPlayerInterior(playerid,0);
  44. SetPlayerPos(playerid, 1797.6636, 809.3239, 20.1566);
  45. InterpolateCameraPos(playerid, 1797.6636, 809.3239, 50.1566, 1796.7500, 1188.6267, 45.2061, 30000, CAMERA_MOVE);
  46. InterpolateCameraLookAt(playerid, 1797.6426, 810.3271, 50.1114, 1796.7330, 1189.6305, 45.2260, 30000, CAMERA_MOVE);
  47. TogglePlayerControllable(playerid, 0);
  48.  
  49. return 1;
  50. }
  51.  
  52. public OnPlayerRequestClass(playerid, classid){
  53.  
  54. SetPlayerLoginCam(playerid);
  55.  
  56. gString[0] = EOS;
  57. format(gString, 256, "This account is already registered.\nLast login: %s \nPlease enter your password below:", unixtodate(PlayerInfo[playerid][pLastLogin]));
  58.  
  59. new string[144];
  60. format(string, 144, "Salut, %s. Bun venit pe server.ro.", GetName(playerid));
  61. SCM(playerid, -1, string);
  62. string[0] = EOS;
  63. if(PlayerInfo[playerid][pHasAccount]) ShowPlayerDialog(playerid, DIALOG_LOGIN_PASS, DIALOG_STYLE_PASSWORD, "Server login",gString, "Continue", "Cancel"), strcat(string, "Acest cont este deja inregistrat, introdu-ti parola mai jos");
  64. else ShowPlayerDialog(playerid, DIALOG_REGISTER_PASS, DIALOG_STYLE_PASSWORD, "Server register", "This account is not registered.\nPlease enter you desired password below:", "Continue", "Cancel"), strcat(string, "Acest cont nu este inregistrat, introdu parola dorita mai jos");
  65. SCM(playerid, -1, string);
  66.  
  67.  
  68. return 1;
  69. }
  70.  
  71. public OnPlayerSpawn(playerid)
  72. {
  73. if(!PlayerInfo[playerid][pLoggedIn]) return SetPlayerLoginCam(playerid);
  74. SetPlayerPos(playerid, 0, -300, 5);
  75. SetPlayerInterior(playerid,0);
  76. TogglePlayerClock(playerid,0);
  77. SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
  78. return 1;
  79. }
  80.  
  81. public OnGameModeInit()
  82. {
  83.  
  84. SQL = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DATA);
  85.  
  86. SetGameModeText("Gamemode 0.1");
  87. ShowPlayerMarkers(0);
  88. ShowNameTags(1);
  89.  
  90. DisableInteriorEnterExits();
  91. AllowInteriorWeapons(1);
  92. UsePlayerPedAnims();
  93. ManualVehicleEngineAndLights();
  94.  
  95. return 1;
  96. }
  97.  
  98. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
  99. if(strfind(inputtext, "%", true) != -1 || strfind(inputtext, "`", true) != -1 || strfind(inputtext, "'", true) != -1){
  100. SendClientMessage(playerid, -1, "Invalid dialog input");
  101. return 1;
  102. }
  103. switch (dialogid){
  104. case DIALOG_LOGIN_PASS:{
  105. if(!response) return Kick(playerid);
  106. if(PlayerInfo[playerid][pHasAccount]){
  107. new string[256];
  108. WP_Hash(string, 256, inputtext);
  109. OnPlayerLogin(playerid, string);
  110. }
  111. }
  112. case DIALOG_REGISTER_PASS:{
  113. if(!response) return Kick(playerid);
  114. if(!PlayerInfo[playerid][pHasAccount]){
  115. if(strlen(inputtext) < 3 || strlen(inputtext) > 50) return ShowPlayerDialog(playerid, DIALOG_REGISTER_PASS, DIALOG_STYLE_PASSWORD, "Server register", "The password must be between 3 and 50 characters\nPlease enter you desired password below:", "Continue", "Cancel");
  116. WP_Hash(PlayerInfo[playerid][pRegisterPassword], 256, inputtext);
  117. gString[0] = EOS;
  118. format(gString, 144, "Parola ta are %d caractere.", strlen(inputtext));
  119. SCM(playerid, -1, gString);
  120. ShowPlayerDialog(playerid, DIALOG_REGISTER_SEX, DIALOG_STYLE_LIST, "Choose your gender", "Male\nFemale", "Continue", "Cancel");
  121. }
  122. }
  123. case DIALOG_REGISTER_SEX:{
  124. if(!response) return Kick(playerid);
  125. if(!PlayerInfo[playerid][pHasAccount]){
  126. PlayerInfo[playerid][pRegisterSex] = listitem;
  127. if(listitem == 0) PlayerInfo[playerid][pSkin] = 250;
  128. else PlayerInfo[playerid][pSkin] = 90;
  129. gString[0] = EOS;
  130. format(gString, 144, "Sexul caracterului tau este %s", ((listitem == 1) ? ("feminin") : ("masculin")));
  131. SCM(playerid, -1,gString);
  132. ShowPlayerDialog(playerid, DIALOG_REGISTER_AGE, DIALOG_STYLE_INPUT, "Choose your age", "Please enter your age below", "Continue", "Cancel");
  133. }
  134. }
  135. case DIALOG_REGISTER_AGE:{
  136. if(!response) return Kick(playerid);
  137. if(!PlayerInfo[playerid][pHasAccount]){
  138. new age = strval(inputtext);
  139. if(age < 1 || age > 60) return ShowPlayerDialog(playerid, DIALOG_REGISTER_AGE, DIALOG_STYLE_INPUT, "Choose your age", "Please enter a valid age", "Continue", "Cancel");
  140. PlayerInfo[playerid][pRegisterAge] = age;
  141. gString[0] = EOS;
  142. format(gString, 144, "Varsta caracterului tau este de %d ani.", strval(inputtext));
  143. SCM(playerid, -1, gString);
  144. ShowPlayerDialog(playerid, DIALOG_REGISTER_MAIL, DIALOG_STYLE_INPUT, "Choose your email", "Please enter your email below", "Continue", "Cancel");
  145. }
  146. }
  147. case DIALOG_REGISTER_MAIL:{
  148. if(!response) return Kick(playerid);
  149. if(!PlayerInfo[playerid][pHasAccount]){
  150. if(!IsCorrectMail(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER_MAIL, DIALOG_STYLE_INPUT, "Choose your email", "Please enter your email below", "Continue", "Cancel");
  151. format(PlayerInfo[playerid][pRegisterMail], 100, "%s", inputtext);
  152. new string[144];
  153. format(string, 144, "Email-ul setat este %s", inputtext);
  154. SCM(playerid, -1, string);
  155. gString[0] = EOS;
  156. mysql_format(SQL, gString, sizeof(gString), "INSERT INTO `users`(`username`, `password`, `skin`, `gender`, `mail`, `registerTime`, `lastLogin`) VALUES ('%s','%s', %d, %d, '%s', %d)", GetName(playerid), PlayerInfo[playerid][pRegisterPassword], PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pRegisterSex], PlayerInfo[playerid][pRegisterMail], gettime(), gettime());
  157. mysql_query(SQL, gString);
  158. SendClientMessage(playerid, -1, "Account registered.");
  159. PlayerInfo[playerid][pHasAccount] = 1;
  160. ShowPlayerDialog(playerid, DIALOG_LOGIN_PASS, DIALOG_STYLE_PASSWORD, "Server login", "This account is already registered.\nPlease enter your password below:", "Continue", "Cancel");
  161. }
  162. }
  163. }
  164. SpawnPlayer(playerid);
  165. return 1;
  166. }
  167.  
  168. function CheckAccount(playerid){
  169.  
  170. gString[0] = EOS;
  171. mysql_format(SQL, gString, sizeof(gString), "SELECT `lastLogin` FROM `users` WHERE `username` = '%s' LIMIT 1", GetName(playerid));
  172. new Cache:result = mysql_query(SQL, gString);
  173. new rowcount = 0;
  174. cache_get_row_count(rowcount);
  175. cache_get_value_name_int(0, "lastLogin", PlayerInfo[playerid][pLastLogin]);
  176. cache_delete(result);
  177. return rowcount;
  178. }
  179.  
  180. stock GetName(playerid){
  181. new name[24];
  182. GetPlayerName(playerid, name, 24);
  183. return name;
  184. }
  185.  
  186. function ResetVars(playerid){
  187. PlayerInfo[playerid][pHasAccount] = 0;
  188. PlayerInfo[playerid][pLoggedIn] = 0;
  189. return 1;
  190. }
  191.  
  192. function OnPlayerLogin(playerid, password[]){
  193. gString[0] = EOS;
  194. mysql_format(SQL, gString, sizeof(gString), "SELECT * FROM `users` WHERE `username` = '%s' AND `password` = '%s' LIMIT 1", GetName(playerid), password);
  195. new Cache:result = mysql_query(SQL, gString);
  196. new rowcount = 0;
  197. cache_get_row_count(rowcount);
  198.  
  199. if(rowcount == 0){
  200. ShowPlayerDialog(playerid, DIALOG_LOGIN_PASS, DIALOG_STYLE_PASSWORD, "Server login", "Incorrect password.\nPlease enter your password below:", "Continue", "");
  201. cache_delete(result);
  202. return 1;
  203. }
  204.  
  205. cache_get_value_name_int(0, "id", PlayerInfo[playerid][pSQLID]);
  206. cache_get_value_name_int(0, "skin", PlayerInfo[playerid][pSkin]);
  207. PlayerInfo[playerid][pLoggedIn] = 1;
  208. cache_delete(result);
  209.  
  210.  
  211.  
  212. gString[0] = EOS;
  213. mysql_format(SQL, gString, sizeof(gString), "UPDATE `users` SET `lastLogin` = %d WHERE `id` = %d", gettime(), PlayerInfo[playerid][pSQLID]);
  214. mysql_query(SQL, gString);
  215. SendClientMessage(playerid, -1, "You have been logged in");
  216. SpawnPlayer(playerid);
  217.  
  218.  
  219. return 1;
  220. }
  221.  
  222. stock IsCorrectMail(mail[])
  223. {
  224. new len = strlen(mail), bool:find[2], w;
  225. if(!(6 < len < 129)) return false;
  226. for(new l; l < len; l++)
  227. {
  228. if(mail[l] == '.') find[0] = true;
  229. if(mail[l] == '@')
  230. {
  231. if(find[1]) return false;
  232. find[1] = true;
  233. w = l;
  234. if(w > 64) return false;
  235. }
  236. if(!(mail[l] >= 'A' && mail[l] <= 'Z' || mail[l] >= 'a' && mail[l] <= 'z' || mail[l] >= '0' && mail[l] <= '9' || mail[l] == '.' || mail[l] == '-' || mail[l] == '_' || mail[l] == '@')) return false;
  237. }
  238. if(len - w > 65) return false;
  239. if(!find[0] || !find[1]) return false;
  240. return true;
  241. }
  242.  
  243. forward isLeap(y);
  244. public isLeap(y){
  245. return ((y)%4==0&&((y)%100!=0||(y)%400==0));
  246. }
  247.  
  248. stock unixtodate(timestamp)
  249. {
  250. new rtrn[128];
  251. if(timestamp > 0) {
  252. new year, dayInSeconds, daysInYear, daysInLYear, days, tmpDays, monthsInDays[12], month, day;
  253. year = 1970;
  254. dayInSeconds = 86400;
  255. daysInYear = 365;
  256. daysInLYear = daysInYear+1;
  257. days = (timestamp/dayInSeconds);
  258. tmpDays = days+1;
  259. month = 11;
  260.  
  261. while(tmpDays>=daysInYear){
  262. year++;
  263. if(isLeap(year)){
  264. tmpDays-=daysInLYear;
  265. }
  266. else{
  267. tmpDays-=daysInYear;
  268. }
  269. }
  270.  
  271. if(isLeap(year)){
  272. tmpDays--;
  273. monthsInDays = {-1,30,59,90,120,151,181,212,243,273,304,334};
  274. }
  275. else{
  276. monthsInDays = {0,31,59,90,120,151,181,212,243,273,304,334};
  277. }
  278.  
  279. while(month>0){
  280. if(tmpDays>monthsInDays[month]){
  281. break;
  282. }
  283. month--;
  284. }
  285. day=tmpDays-monthsInDays[month];
  286. month++;
  287. day++;
  288. new daystring[5];
  289. if(day <= 9) format(daystring, 5, "0%d", day);
  290. else format(daystring, 5, "%d", day);
  291.  
  292. new monthstring[5];
  293. if(month <= 9) format(monthstring, 5, "0%d", month);
  294. else format(monthstring, 5, "%d", month);
  295.  
  296. new temphour = timestamp + 10800;
  297.  
  298. while(temphour >= 86400){
  299. temphour -= 86400;
  300. }
  301. new hours = temphour / 3600;
  302. new minutes = ((temphour % 3600) / 60) + 1;
  303. new seconds = temphour % 60;
  304.  
  305. new hourstring[5];
  306. if(hours <= 9) format(hourstring, 5, "0%d", hours);
  307. else format(hourstring, 5, "%d", hours);
  308.  
  309. new minstring[5];
  310. if(minutes <= 9) format(minstring, 5, "0%d", minutes);
  311. else format(minstring, 5, "%d", minutes);
  312.  
  313. new secstring[5];
  314. if(seconds <= 9) format(secstring, 5, "0%d", seconds);
  315. else format(secstring, 5, "%d", seconds);
  316.  
  317. format(rtrn, sizeof(rtrn), "%s.%s.%d %s:%s:%s", daystring, monthstring, year, hourstring, minstring, secstring);
  318. return rtrn;
  319. }
  320. format(rtrn, sizeof(rtrn), "0");
  321. return rtrn;
  322. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement