Guest User

Untitled

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