Advertisement
Guest User

Untitled

a guest
Apr 15th, 2012
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.36 KB | None | 0 0
  1. #include <a_samp>
  2. #include <a_mysql>
  3. #define DIALOG_REGISTER (1)
  4. #define DIALOG_LOGIN (2)
  5.  
  6. enum SpielerDaten
  7. {
  8. pName[MAX_PLAYER_NAME],
  9. pLevel,
  10. pGeld,
  11. pKills,
  12. pTode,
  13. Float:pHealth
  14. }
  15. new SpielerInfo[MAX_PLAYERS][SpielerDaten];
  16.  
  17. main()
  18. {
  19. print("\n----------------------------------");
  20. print("DB TEST");
  21. print("----------------------------------\n");
  22. }
  23.  
  24. public OnGameModeInit()
  25. {
  26. Connect_To_Database();
  27. mysql_debug(1);
  28. SetGameModeText("Blank Script");
  29. AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  30. return 1;
  31. }
  32.  
  33. public OnGameModeExit()
  34. {
  35. return 1;
  36. }
  37.  
  38. public OnPlayerRequestClass(playerid, classid)
  39. {
  40. if(GetPVarInt(playerid,"Eingeloggt") == 0) //Als erstes fragen wir ab ob der Spieler schon eingeloggt ist oder nicht, damit wir nicht bei jeder Skin Auswahl uns neu Einloggen müssen.
  41. {
  42. if(mysql_CheckAccount(playerid) == 0)//Wir überprüfen ob der Account Existiert, falls nicht Zeigen wir den Dialog zum Registrieren.
  43. {
  44. SendClientMessage(playerid, 0xFFFFFFFF,"________-> Willkommen auf auf meinem Server <-________");
  45. SendClientMessage(playerid, 0xFFFFFFFF,"Dein Account wurde nicht gefunden, bitte Registriere dich!");
  46. ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Bitte Gib ein Passwort an:","Register","Exit");
  47. }
  48. else if(mysql_CheckAccount(playerid) == 1)//Falls doch zeigen wir den Dialog zum Einloggen.
  49. {
  50. SendClientMessage(playerid, 0xFFFFFFFF,"________-> Willkommen auf auf meinem Server <-________");
  51. SendClientMessage(playerid, 0xFFFFFFFF,"Dein Account wurde gefunden, bitte Log dich nun ein!");
  52. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Bitte gib dein Passwort ein:","Login","Abbrechen");
  53. }
  54. }
  55. SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  56. SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  57. SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  58. return 1;
  59. }
  60.  
  61. public OnPlayerConnect(playerid)
  62. {
  63. return 1;
  64. }
  65.  
  66. public OnPlayerDisconnect(playerid, reason)
  67. {
  68. SavePlayer(playerid);
  69. DeletePVar(playerid,"Eingeloggt");
  70. }
  71.  
  72. public OnPlayerSpawn(playerid)
  73. {
  74. return 1;
  75. }
  76.  
  77. public OnPlayerDeath(playerid, killerid, reason)
  78. {
  79. return 1;
  80. }
  81.  
  82. public OnVehicleSpawn(vehicleid)
  83. {
  84. return 1;
  85. }
  86.  
  87. public OnVehicleDeath(vehicleid, killerid)
  88. {
  89. return 1;
  90. }
  91.  
  92. public OnPlayerText(playerid, text[])
  93. {
  94. return 1;
  95. }
  96.  
  97. public OnPlayerCommandText(playerid, cmdtext[])
  98. {
  99. if (strcmp("/mycommand", cmdtext, true, 10) == 0)
  100. {
  101. // Do something here
  102. return 1;
  103. }
  104. return 0;
  105. }
  106.  
  107. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  108. {
  109. return 1;
  110. }
  111.  
  112. public OnPlayerExitVehicle(playerid, vehicleid)
  113. {
  114. return 1;
  115. }
  116.  
  117. public OnPlayerStateChange(playerid, newstate, oldstate)
  118. {
  119. return 1;
  120. }
  121.  
  122. public OnPlayerEnterCheckpoint(playerid)
  123. {
  124. return 1;
  125. }
  126.  
  127. public OnPlayerLeaveCheckpoint(playerid)
  128. {
  129. return 1;
  130. }
  131.  
  132. public OnPlayerEnterRaceCheckpoint(playerid)
  133. {
  134. return 1;
  135. }
  136.  
  137. public OnPlayerLeaveRaceCheckpoint(playerid)
  138. {
  139. return 1;
  140. }
  141.  
  142. public OnRconCommand(cmd[])
  143. {
  144. return 1;
  145. }
  146.  
  147. public OnPlayerRequestSpawn(playerid)
  148. {
  149. return 1;
  150. }
  151.  
  152. public OnObjectMoved(objectid)
  153. {
  154. return 1;
  155. }
  156.  
  157. public OnPlayerObjectMoved(playerid, objectid)
  158. {
  159. return 1;
  160. }
  161.  
  162. public OnPlayerPickUpPickup(playerid, pickupid)
  163. {
  164. return 1;
  165. }
  166.  
  167. public OnVehicleMod(playerid, vehicleid, componentid)
  168. {
  169. return 1;
  170. }
  171.  
  172. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  173. {
  174. return 1;
  175. }
  176.  
  177. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  178. {
  179. return 1;
  180. }
  181.  
  182. public OnPlayerSelectedMenuRow(playerid, row)
  183. {
  184. return 1;
  185. }
  186.  
  187. public OnPlayerExitedMenu(playerid)
  188. {
  189. return 1;
  190. }
  191.  
  192. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  193. {
  194. return 1;
  195. }
  196.  
  197. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  198. {
  199. return 1;
  200. }
  201.  
  202. public OnRconLoginAttempt(ip[], password[], success)
  203. {
  204. return 1;
  205. }
  206.  
  207. public OnPlayerUpdate(playerid)
  208. {
  209. return 1;
  210. }
  211.  
  212. public OnPlayerStreamIn(playerid, forplayerid)
  213. {
  214. return 1;
  215. }
  216.  
  217. public OnPlayerStreamOut(playerid, forplayerid)
  218. {
  219. return 1;
  220. }
  221.  
  222. public OnVehicleStreamIn(vehicleid, forplayerid)
  223. {
  224. return 1;
  225. }
  226.  
  227. public OnVehicleStreamOut(vehicleid, forplayerid)
  228. {
  229. return 1;
  230. }
  231.  
  232. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  233. {
  234. switch(dialogid)
  235. {
  236. case DIALOG_REGISTER:
  237. {
  238. if(response)
  239. {
  240. if(strlen(inputtext) == 0) // Wenn kein Passwort angegebene wurde
  241. {
  242. ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Das angegebene Passwort war zu Kurz...\nBitte Registrier dich jetzt mit einem Passwort:","Register","Abbrechen");
  243. return 1;
  244. }
  245. else
  246. {
  247. CreateAccount(playerid, inputtext); //Account wird erstellt
  248. SetPVarInt(playerid,"Eingeloggt",1); //Die variable wird auf 1 gesetzt, damit wir nun die Skin Auswahl benutzen können ohne wieder nach unserem Passwort gefragt zu werden.
  249. return 1;
  250. }
  251. }
  252. else
  253. {
  254. Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
  255. }
  256. }
  257. case DIALOG_LOGIN:
  258. {
  259. if(response)
  260. {
  261. if(strlen(inputtext) == 0) // Wenn kein Passwort angegebene wurde
  262. {
  263. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das Angegebene Passwort war Falsch.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
  264. return 1;
  265. }
  266. else
  267. {
  268. new SpielerName[MAX_PLAYER_NAME];
  269. GetPlayerName(playerid, SpielerName, MAX_PLAYER_NAME);
  270. if(!strcmp(inputtext, mysql_ReturnPasswort(SpielerName), true)) // Wir holen uns das Passwort aus der MySQL Datenbank und überprüfen es mit dem angegebenen passwort.
  271. {
  272. SetPVarInt(playerid,"Eingeloggt",1); //Falls beide passwörter übereinstimmen wird die Variable auf 1 gesetzt damit wir die Skin auswahl benutzen können.
  273. LoadPlayer(playerid); //Der Spieler wird "geladen", speich es werden seine Daten aus der Datenbank geholt und in variablen gespeichert um diese im Skript zu verwenden.
  274. SpawnPlayer(playerid); //Wir lassen den Spieler Spawnen
  275. return 1;
  276. }
  277. else
  278. {
  279. //Wenn das Passwort falsch war, lassen wir erneut das Login fenster erscheinen damit der Spieler das Richtige Passwort eingibt.
  280. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das war das Falsche Passwort.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
  281. return 1;
  282. }
  283. }
  284. }
  285. else
  286. {
  287. Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
  288. }
  289. }
  290. }
  291. return 1;
  292. }
  293.  
  294.  
  295. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  296. {
  297. return 1;
  298. }
  299.  
  300. stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
  301. {
  302. new query[128], Float:sqlfloat;
  303. mysql_real_escape_string(Table, Table);
  304. mysql_real_escape_string(Field, Field);
  305. mysql_real_escape_string(Where, Where);
  306. mysql_real_escape_string(Is, Is);
  307. format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
  308. mysql_query(query);
  309. mysql_store_result();
  310. mysql_fetch_float(sqlfloat);
  311. mysql_free_result();
  312. return sqlfloat;
  313. }
  314.  
  315. stock Connect_To_Database()
  316. {
  317. mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS); //Wir versuchen mit den Angaben die wir oben im Script gemacht haben uns mit dem MySQL Server zu verbinden.
  318. if(mysql_ping() == 1) //Es wird überprüft ob die Verbindung steht.
  319. {
  320. //Falls ja wird das in die Console geschrieben und die Funktion wird beendet.
  321. print("<-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!");
  322. return true;
  323. }
  324. else
  325. {
  326. //Falls nicht wird erneut versucht eine Verbindung aufzubauen.
  327. print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
  328. print("<-| [MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
  329. mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
  330. if(mysql_ping() == 1)
  331. {
  332. print("<-| [MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
  333. return true;
  334. }
  335. else
  336. {
  337. //Falls das auch nicht Funktioniert wird der Server zur Sicherheit wieder heruntergefahren.
  338. print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
  339. print("<-| [MYSQL] Der Server wird nun beendet!");
  340. SendRconCommand("exit");
  341. return true;
  342. }
  343. }
  344. }
  345.  
  346. stock mysql_CheckAccount(playerid)
  347. {
  348. new Query[128],Name[MAX_PLAYER_NAME],count;
  349. GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
  350. mysql_real_escape_string(Name, Name);
  351. format(Query, sizeof(Query), "SELECT * FROM `accounts` WHERE `Name` = '%s'", Name);
  352. mysql_query(Query);
  353. mysql_store_result();
  354. count = mysql_num_rows();
  355. mysql_free_result();
  356. return count;
  357. }
  358.  
  359. stock CreateAccount(playerid, pass[])
  360. {
  361. new query[256],Name[MAX_PLAYER_NAME];
  362. GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
  363. mysql_real_escape_string(Name,Name);
  364. mysql_real_escape_string(pass,pass);
  365. format(query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Passwort`) VALUES ('%s', '%s')", Name, pass);
  366. mysql_query(query);
  367. return true;
  368. }
  369.  
  370. stock mysql_ReturnPasswort(Name[])
  371. {
  372. new query[130], Get[130];
  373. mysql_real_escape_string(Name, Name);
  374. format(query, 128, "SELECT `passwort` FROM `accounts` WHERE `Name` = '%s'", Name);
  375. mysql_query(query);
  376. mysql_store_result();
  377. mysql_fetch_row(Get);
  378. mysql_free_result();
  379. return Get;
  380. }
  381.  
  382. stock LoadPlayer(playerid)
  383. {
  384. if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))//Wir fragen ab ob der angegebene Spieler auch Online ist, und kein NPC ist (nur zur sicherhheit)
  385. {
  386. GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME); //Wir Speichern den Namen des Spielers in der Variable [i]SpielerInfo[playerid][pName][/i]
  387. SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Level" eingetragen ist und Speichern ihn in unserer Variable.
  388. SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Geld" eingetragen ist und Speichern ihn in unserer Variable.
  389. SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Kills" eingetragen ist und Speichern ihn in unserer Variable.
  390. SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Tode" eingetragen ist und Speichern ihn in unserer Variable.
  391. }
  392. return 1;
  393. }
  394.  
  395. stock mysql_GetInt(Table[], Field[], Where[], Is[])
  396. {
  397. new query[128];
  398. mysql_real_escape_string(Table, Table);
  399. mysql_real_escape_string(Field, Field);
  400. mysql_real_escape_string(Where, Where);
  401. mysql_real_escape_string(Is, Is);
  402. format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
  403. mysql_query(query);
  404. mysql_store_result();
  405. new sqlint = mysql_fetch_int();
  406. mysql_free_result();
  407. return sqlint;
  408. }
  409.  
  410. stock SavePlayer(playerid)
  411. {
  412. if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) //wir überprüfen ob der Spieler überhaupt noch Connected ist und ob er nicht ein NPC ist.
  413. {
  414. if(GetPVarInt(playerid,"Eingeloggt") == 1) //Und hier ob er noch eingeloggt ist.
  415. {
  416. //Nun speichern wir die Daten in der Datenbank.
  417. mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
  418. mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
  419. mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
  420. mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
  421. mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
  422. }
  423. }
  424. return 1;
  425. }
  426.  
  427. stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
  428. {
  429. new query[128];
  430. mysql_real_escape_string(Table, Table);
  431. mysql_real_escape_string(Field, Field);
  432. mysql_real_escape_string(Where, Where);
  433. mysql_real_escape_string(Where2, Where2);
  434. format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
  435. mysql_query(query);
  436. return true;
  437. }
  438. stock mysql_SetString(Table[], Field[], To[], Where[], Where2[])
  439. {
  440. new query[128];
  441. mysql_real_escape_string(Table, Table);
  442. mysql_real_escape_string(Field, Field);
  443. mysql_real_escape_string(To, To);
  444. mysql_real_escape_string(Where, Where);
  445. mysql_real_escape_string(Where2, Where2);
  446. format(query, 128, "UPDATE `%s` SET `%s` = '%s' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
  447. mysql_query(query);
  448. return true;
  449. }
  450. stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[])
  451. {
  452. new query[128];
  453. mysql_real_escape_string(Table, Table);
  454. mysql_real_escape_string(Field, Field);
  455. mysql_real_escape_string(Where, Where);
  456. mysql_real_escape_string(Where2, Where2);
  457. format(query, 128, "UPDATE `%s` SET `%s` = '%f' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
  458. mysql_query(query);
  459. return true;
  460. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement