Advertisement
Guest User

Untitled

a guest
Jan 5th, 2014
1,603
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.75 KB | None | 0 0
  1. /* --------------- Регистрация аккаунтов MySQL R8 R34 ----------------------- */
  2. /* Автор: Jaws1(Jeff_Hardy) */
  3.  
  4. #include <a_samp>
  5. main();
  6. #include <a_mysql>
  7. #include <sscanf2>
  8.  
  9. // ------------ Данные сервера в клиенте
  10. #define mysql_host "localhost"
  11. #define mysql_user "root"
  12. #define mysql_base "newr34"
  13. #define mysql_pass ""
  14.  
  15. // ----------- Прочее
  16. #define serverNmae "MySQL R8 R34" // название
  17. #define BASE_USERS "users" // название базы данных
  18. #define isValidPass 30 // валидность пароля
  19. #define getpl(%0) plname[%0]
  20. #define send(%0,%1) SendClientMessage(%0, -1, %1)
  21.  
  22. // ----------- PVars
  23. #define SPVI SetPVarInt
  24. #define SPVS SetPVarString
  25. #define SPVF SetPVarFloat
  26. #define GPVI GetPVarInt
  27. #define GPVS GetPVarString
  28. #define GPVF GetPVarFloat
  29.  
  30. // ----------- Стили диалогов
  31. #define ds_msg 0
  32. #define ds_input 1
  33. #define ds_list 2
  34. #define ds_pass 3
  35.  
  36.  
  37. // ----------- ID диалогов
  38. #define d_none 0
  39.  
  40. new plname[MAX_PLAYERS][MAX_PLAYER_NAME]; // записываем ник игрока при коннекте
  41.  
  42. enum plInfo
  43. {
  44. ORM:ORMID,
  45. plID, // ид аккаунта
  46. name[MAX_PLAYER_NAME], // ник игрока
  47. pass[isValidPass], // пароль игрока
  48. level, // скин игрока
  49. }
  50. new Pi[MAX_PLAYERS][plInfo];
  51.  
  52. public OnGameModeInit()
  53. {
  54. /* MySQL R8 */
  55. mysql_connect(mysql_host, mysql_user, mysql_base, mysql_pass);
  56. mysql_log(LOG_DEBUG);
  57. /* MySQL R8 */
  58. SetGameModeText("MySQL R8 R34");
  59. AddPlayerClass(0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
  60. return 1;
  61. }
  62.  
  63. public OnGameModeExit()
  64. {
  65. return 1;
  66. }
  67.  
  68. public OnPlayerRequestClass(playerid, classid)
  69. {
  70. SetPlayerVirtualWorld(playerid, playerid), SetPlayerInterior(playerid, 0);
  71. SetPlayerCameraPos(playerid, 1925.9149,-841.7464,150.9362);
  72. SetPlayerCameraLookAt(playerid, 1595.1147,-1173.6073,167.9245);
  73. SetPlayerPos(playerid, 1684.9298,-1216.7500,167.5547);
  74. SetPlayerFacingAngle(playerid, 266.1046);
  75. for(new i = 0; i < 21; i++) send(playerid, "");
  76. return 1;
  77. }
  78.  
  79. public OnPlayerRequestSpawn(playerid)
  80. {
  81. return 1;
  82. }
  83.  
  84. public OnPlayerConnect(playerid)
  85. {
  86. GetPlayerName(playerid, plname[playerid], MAX_PLAYER_NAME);
  87. for(new plInfo:e; e < plInfo; ++e) Pi[playerid][e] = 0; // обнуляем числа при коннекте
  88.  
  89. GetPlayerName(playerid, Pi[playerid][name], MAX_PLAYER_NAME);
  90. new ORM:ormid = Pi[playerid][ORMID] = orm_create(BASE_USERS);
  91. orm_addvar_int(ormid, Pi[playerid][plID], "id");
  92. orm_addvar_string(ormid, Pi[playerid][name], MAX_PLAYER_NAME+1, "name");
  93. orm_addvar_string(ormid, Pi[playerid][pass], isValidPass, "pass");
  94. orm_addvar_int(ormid, Pi[playerid][level], "level");
  95.  
  96. orm_setkey(ormid, "name"), orm_select(ormid, "onPlayerLoadUsers", "d", playerid); // загружаем все параметры с бд
  97. return 1;
  98. }
  99.  
  100. public OnPlayerDisconnect(playerid, reason)
  101. {
  102. if(GPVI(playerid, "isPlAutothed")) // если игрок авторизирован
  103. {
  104. orm_update(Pi[playerid][ORMID]); // сохраняет все параметры игрока при дисконнекте
  105. for(new plInfo:e; e < plInfo; ++e) Pi[playerid][e] = 0; // обнуляем числа при дисконекте
  106. orm_destroy(Pi[playerid][ORMID]);
  107. }
  108. return 1;
  109. }
  110.  
  111. public OnPlayerSpawn(playerid)
  112. {
  113. new str[50];
  114. if(!GPVI(playerid, "isPlAutothed")) return 1;
  115. SetPlayerScore(playerid, Pi[playerid][level]);
  116. SetPlayerSkin(playerid, 3), SetPlayerColor(playerid, -1);
  117. SetPlayerPos(playerid, 1639.0121,-2239.9082,13.4998), SetPlayerFacingAngle(playerid, 129.8660);
  118. SetPlayerInterior(playerid, 0), SetPlayerVirtualWorld(playerid, 0);
  119. format(str, 50, "{3fda07}~ Добро пожаловать в наш штат, %s.", getpl(playerid)), send(playerid, str);
  120. return 1;
  121. }
  122.  
  123. public OnPlayerDeath(playerid, killerid, reason)
  124. {
  125. return 1;
  126. }
  127.  
  128. public OnVehicleSpawn(vehicleid)
  129. {
  130. return 1;
  131. }
  132.  
  133. public OnVehicleDeath(vehicleid, killerid)
  134. {
  135. return 1;
  136. }
  137.  
  138. public OnPlayerText(playerid, text[])
  139. {
  140. if(!GPVI(playerid, "isPlAutothed")) { send(playerid, "{ff6347}** Вы не авторизированы на сервере."); return 0; }
  141. return 1;
  142. }
  143.  
  144. public OnPlayerCommandText(playerid, cmdtext[])
  145. {
  146. return false;
  147. }
  148.  
  149. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  150. {
  151. return 1;
  152. }
  153.  
  154. public OnPlayerExitVehicle(playerid, vehicleid)
  155. {
  156. return 1;
  157. }
  158.  
  159. public OnPlayerStateChange(playerid, newstate, oldstate)
  160. {
  161. return 1;
  162. }
  163.  
  164. public OnPlayerEnterCheckpoint(playerid)
  165. {
  166. return 1;
  167. }
  168.  
  169. public OnPlayerLeaveCheckpoint(playerid)
  170. {
  171. return 1;
  172. }
  173.  
  174. public OnPlayerEnterRaceCheckpoint(playerid)
  175. {
  176. return 1;
  177. }
  178.  
  179. public OnPlayerLeaveRaceCheckpoint(playerid)
  180. {
  181. return 1;
  182. }
  183.  
  184. public OnRconCommand(cmd[])
  185. {
  186. return 1;
  187. }
  188.  
  189. public OnObjectMoved(objectid)
  190. {
  191. return 1;
  192. }
  193.  
  194. public OnPlayerObjectMoved(playerid, objectid)
  195. {
  196. return 1;
  197. }
  198.  
  199. public OnPlayerPickUpPickup(playerid, pickupid)
  200. {
  201. return 1;
  202. }
  203.  
  204. public OnVehicleMod(playerid, vehicleid, componentid)
  205. {
  206. return 1;
  207. }
  208.  
  209. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  210. {
  211. return 1;
  212. }
  213.  
  214. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  215. {
  216. return 1;
  217. }
  218.  
  219. public OnPlayerSelectedMenuRow(playerid, row)
  220. {
  221. return 1;
  222. }
  223.  
  224. public OnPlayerExitedMenu(playerid)
  225. {
  226. return 1;
  227. }
  228.  
  229. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  230. {
  231. return 1;
  232. }
  233.  
  234. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  235. {
  236. return 1;
  237. }
  238.  
  239. public OnRconLoginAttempt(ip[], password[], success)
  240. {
  241. return 1;
  242. }
  243.  
  244. public OnPlayerUpdate(playerid)
  245. {
  246. if(!GPVI(playerid, "isPlAutothed")) return 1;
  247. return 1;
  248. }
  249.  
  250. public OnPlayerStreamIn(playerid, forplayerid)
  251. {
  252. return 1;
  253. }
  254.  
  255. public OnPlayerStreamOut(playerid, forplayerid)
  256. {
  257. return 1;
  258. }
  259.  
  260. public OnVehicleStreamIn(vehicleid, forplayerid)
  261. {
  262. return 1;
  263. }
  264.  
  265. public OnVehicleStreamOut(vehicleid, forplayerid)
  266. {
  267. return 1;
  268. }
  269.  
  270. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  271. {
  272. switch(dialogid)
  273. {
  274. case 1:
  275. {
  276. if(!response) return Kick(playerid);
  277. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1, ds_input, "[ Авторизация игрового аккаунта ] ", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{3fda07}Аккаунт с вашин ником уже зарегистрирован!", "Далее", "Закрыть"); // ERROR_OK Аккаунт зарегистрирован
  278. if(!strcmp(inputtext, Pi[playerid][pass], false, isValidPass)) // спавним игрока при корректном вводе пароля
  279. {
  280. for(new i = 0; i < 40; i++) send(playerid, "");
  281. SPVI(playerid, "isPlAutothed", true), SpawnPlayer(playerid);
  282. }
  283. else return ShowPlayerDialog(playerid, 1, ds_input, "[ Авторизация игрового аккаунта ] ", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{3fda07}Аккаунт с вашин ником уже зарегистрирован!", "Далее", "Закрыть"); // ERROR_OK Аккаунт зарегистрирован
  284. return 1;
  285. }
  286. case 2:
  287. {
  288. if(!response) return Kick(playerid);
  289. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, ds_input, "[ Регистрация игрового аккаунта ]", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{ff6347}Аккаунт с вашим ником не зарегистрирован, \n нажмите {3fda07}Далее {ff6347}чтобы продолжить.\n{ffffff}Введите пароль(от 1 до 30):", "Регистр.", "Закрыть"); // ERROR_NO_DATA Аккаунт в базе не найден
  290. onPlayerRegister(playerid, inputtext);
  291. return 1;
  292. }
  293. }
  294. return 1;
  295. }
  296.  
  297. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  298. {
  299. return 1;
  300. }
  301. /* Регисnрация аккаунтов MySQL R8 R34 */
  302.  
  303. stock onPlayerRegister(playerid, password[])
  304. {
  305. format(Pi[playerid][name], MAX_PLAYER_NAME, "%s", getpl(playerid)); // записываем ник при реестре
  306. format(Pi[playerid][pass], isValidPass, "%s", password); // записываем пароль при реестре
  307.  
  308. Pi[playerid][level] = 1;
  309. orm_insert(Pi[playerid][ORMID], "onPlayerRegisterCallback", "d", playerid);
  310. return 1;
  311. }
  312.  
  313. forward onPlayerLoadUsers(playerid);
  314. public onPlayerLoadUsers(playerid)
  315. {
  316. switch(orm_errno(Pi[playerid][ORMID]))
  317. {
  318. case ERROR_OK: ShowPlayerDialog(playerid, 1, ds_input, "[ Авторизация игрового аккаунта ] ", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{3fda07}Аккаунт с вашин ником уже зарегистрирован!", "Далее", "Закрыть"); // ERROR_OK Аккаунт зарегистрирован
  319. case ERROR_NO_DATA: ShowPlayerDialog(playerid, 2, ds_input, "[ Регистрация игрового аккаунта ]", " {ffffff}Добро пожаловать на сервер "serverNmae"\n{ff6347}Аккаунт с вашим ником не зарегистрирован, \n нажмите {3fda07}Далее {ff6347}чтобы продолжить.\n{ffffff}Введите пароль(от 1 до 30):", "Регистр.", "Закрыть"); // ERROR_NO_DATA Аккаунт в базе не найден
  320. }
  321. orm_setkey(Pi[playerid][ORMID], "id");
  322. return 1;
  323. }
  324.  
  325. forward onPlayerRegisterCallback(playerid);
  326. public onPlayerRegisterCallback(playerid) return SPVI(playerid, "isPlAutothed", true), SpawnPlayer(playerid);
  327. /* Регисnрация аккаунтов MySQL R8 R34 */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement