Advertisement
Guest User

Untitled

a guest
May 12th, 2013
415
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 13.40 KB | None | 0 0
  1. #include <a_samp>
  2. /* #include <zcmd>
  3. #include <streamer>
  4. #include <sscanf2> */
  5. native WP_Hash(buffer[], len, const str[]);
  6. stock DB_Escape(text[])
  7. {
  8.     new
  9.         ret[80 * 2],
  10.         ch,
  11.         i,
  12.         j;
  13.     while ((ch = text[i++]) && j < sizeof (ret))
  14.     {
  15.         if (ch == '\'')
  16.         {
  17.             if (j < sizeof (ret) - 2)
  18.             {
  19.                 ret[j++] = '\'';
  20.                 ret[j++] = '\'';
  21.             }
  22.         }
  23.         else if (j < sizeof (ret))
  24.         {
  25.             ret[j++] = ch;
  26.         }
  27.         else
  28.         {
  29.             j++;
  30.         }
  31.     }
  32.     ret[sizeof (ret) - 1] = '\0';
  33.     return ret;
  34. }
  35. new DB:Server;
  36. new Text:Textdraw0;
  37. new Text:Textdraw1;
  38. new Text:Textdraw2;
  39. new Text:Textdraw3;
  40. new Text:Textdraw4;
  41. new Text:Textdraw5;
  42. new Text:Textdraw6;
  43. new Text:Textdraw7;
  44. new Text:Textdraw8;
  45. new Text:Textdraw9;
  46. new LoginCount[MAX_PLAYERS];
  47. new bool:eingeloggt[MAX_PLAYERS];
  48. new Ping[MAX_PLAYERS];
  49. #define GRÜN 0x00CC00FF
  50. #define REGISTER 1
  51. #define LOGIN 2
  52. #define CHANGE 3
  53.  
  54. main()
  55. {
  56.     print("\n----------------------------------");
  57.     print(" Blank Gamemode by your name here");
  58.     print("----------------------------------\n");
  59. }
  60.  
  61. public OnGameModeInit()
  62. {
  63.     Server = db_open("Server.db");
  64.     db_query(Server,"CREATE TABLE IF NOT EXISTS `Accounts`(`Name`,`Password`)");
  65.    
  66.     SetGameModeText("Blank Script");
  67.     AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  68.    
  69.     Textdraw0 = TextDrawCreate(320.000000, 1.000000, "I");
  70.     TextDrawAlignment(Textdraw0, 2);
  71.     TextDrawBackgroundColor(Textdraw0, 255);
  72.     TextDrawFont(Textdraw0, 1);
  73.     TextDrawLetterSize(Textdraw0, 0.000000, 12.000000);
  74.     TextDrawColor(Textdraw0, -1);
  75.     TextDrawSetOutline(Textdraw0, 0);
  76.     TextDrawSetProportional(Textdraw0, 1);
  77.     TextDrawSetShadow(Textdraw0, 1);
  78.     TextDrawUseBox(Textdraw0, 1);
  79.     TextDrawBoxColor(Textdraw0, 255);
  80.     TextDrawTextSize(Textdraw0, 0.000000, -664.000000);
  81.  
  82.     Textdraw1 = TextDrawCreate(320.000000, 112.000000, "I");
  83.     TextDrawAlignment(Textdraw1, 2);
  84.     TextDrawBackgroundColor(Textdraw1, 255);
  85.     TextDrawFont(Textdraw1, 1);
  86.     TextDrawLetterSize(Textdraw1, 0.000000, 3.000000);
  87.     TextDrawColor(Textdraw1, -1);
  88.     TextDrawSetOutline(Textdraw1, 0);
  89.     TextDrawSetProportional(Textdraw1, 1);
  90.     TextDrawSetShadow(Textdraw1, 1);
  91.     TextDrawUseBox(Textdraw1, 1);
  92.     TextDrawBoxColor(Textdraw1, 11730774);
  93.     TextDrawTextSize(Textdraw1, 0.000000, -664.000000);
  94.  
  95.     Textdraw2 = TextDrawCreate(161.000000, 113.000000, "Hier dein Servername eintragen");
  96.     TextDrawBackgroundColor(Textdraw2, 255);
  97.     TextDrawFont(Textdraw2, 1);
  98.     TextDrawLetterSize(Textdraw2, 0.600000, 2.000000);
  99.     TextDrawColor(Textdraw2, -1);
  100.     TextDrawSetOutline(Textdraw2, 0);
  101.     TextDrawSetProportional(Textdraw2, 1);
  102.     TextDrawSetShadow(Textdraw2, 1);
  103.  
  104.     Textdraw3 = TextDrawCreate(320.000000, 341.000000, "I");
  105.     TextDrawAlignment(Textdraw3, 2);
  106.     TextDrawBackgroundColor(Textdraw3, 255);
  107.     TextDrawFont(Textdraw3, 1);
  108.     TextDrawLetterSize(Textdraw3, 0.000000, 12.000000);
  109.     TextDrawColor(Textdraw3, -1);
  110.     TextDrawSetOutline(Textdraw3, 0);
  111.     TextDrawSetProportional(Textdraw3, 1);
  112.     TextDrawSetShadow(Textdraw3, 1);
  113.     TextDrawUseBox(Textdraw3, 1);
  114.     TextDrawBoxColor(Textdraw3, 255);
  115.     TextDrawTextSize(Textdraw3, 0.000000, -664.000000);
  116.  
  117.     Textdraw4 = TextDrawCreate(48.000000, 161.000000, ">>Registration");
  118.     TextDrawAlignment(Textdraw4, 2);
  119.     TextDrawBackgroundColor(Textdraw4, 65535);
  120.     TextDrawFont(Textdraw4, 1);
  121.     TextDrawLetterSize(Textdraw4, 0.359999, 2.000000);
  122.     TextDrawColor(Textdraw4, -131);
  123.     TextDrawSetOutline(Textdraw4, 0);
  124.     TextDrawSetProportional(Textdraw4, 1);
  125.     TextDrawSetShadow(Textdraw4, 0);
  126.     TextDrawUseBox(Textdraw4, 1);
  127.     TextDrawBoxColor(Textdraw4, 113);
  128.     TextDrawTextSize(Textdraw4, 0.000000, -100.000000);
  129.  
  130.     Textdraw5 = TextDrawCreate(30.000000, 211.000000, ">>Login");
  131.     TextDrawAlignment(Textdraw5, 2);
  132.     TextDrawBackgroundColor(Textdraw5, 65535);
  133.     TextDrawFont(Textdraw5, 1);
  134.     TextDrawLetterSize(Textdraw5, 0.359999, 2.000000);
  135.     TextDrawColor(Textdraw5, -131);
  136.     TextDrawSetOutline(Textdraw5, 0);
  137.     TextDrawSetProportional(Textdraw5, 1);
  138.     TextDrawSetShadow(Textdraw5, 0);
  139.     TextDrawUseBox(Textdraw5, 1);
  140.     TextDrawBoxColor(Textdraw5, 113);
  141.     TextDrawTextSize(Textdraw5, 0.000000, -136.000000);
  142.  
  143.     Textdraw6 = TextDrawCreate(45.000000, 261.000000, ">>Changelog");
  144.     TextDrawAlignment(Textdraw6, 2);
  145.     TextDrawBackgroundColor(Textdraw6, 65535);
  146.     TextDrawFont(Textdraw6, 1);
  147.     TextDrawLetterSize(Textdraw6, 0.359999, 2.000000);
  148.     TextDrawColor(Textdraw6, -131);
  149.     TextDrawSetOutline(Textdraw6, 0);
  150.     TextDrawSetProportional(Textdraw6, 1);
  151.     TextDrawSetShadow(Textdraw6, 0);
  152.     TextDrawUseBox(Textdraw6, 1);
  153.     TextDrawBoxColor(Textdraw6, 113);
  154.     TextDrawTextSize(Textdraw6, 0.000000, -106.000000);
  155.  
  156.     Textdraw7 = TextDrawCreate(578.000000, 161.000000, "I");
  157.     TextDrawAlignment(Textdraw7, 2);
  158.     TextDrawBackgroundColor(Textdraw7, 255);
  159.     TextDrawFont(Textdraw7, 1);
  160.     TextDrawLetterSize(Textdraw7, 0.000000, 13.100000);
  161.     TextDrawColor(Textdraw7, -1);
  162.     TextDrawSetOutline(Textdraw7, 0);
  163.     TextDrawSetProportional(Textdraw7, 1);
  164.     TextDrawSetShadow(Textdraw7, 1);
  165.     TextDrawUseBox(Textdraw7, 1);
  166.     TextDrawBoxColor(Textdraw7, 125);
  167.     TextDrawTextSize(Textdraw7, 0.000000, -100.000000);
  168.  
  169.     Textdraw8 = TextDrawCreate(530.000000, 160.000000, "Statistiken:");
  170.     TextDrawBackgroundColor(Textdraw8, 255);
  171.     TextDrawFont(Textdraw8, 1);
  172.     TextDrawLetterSize(Textdraw8, 0.500000, 1.000000);
  173.     TextDrawColor(Textdraw8, -16777091);
  174.     TextDrawSetOutline(Textdraw8, 0);
  175.     TextDrawSetProportional(Textdraw8, 1);
  176.     TextDrawSetShadow(Textdraw8, 1);
  177.  
  178.     Textdraw9 = TextDrawCreate(530.000000, 176.000000, "Name:~n~Ping:");
  179.     TextDrawBackgroundColor(Textdraw9, 255);
  180.     TextDrawFont(Textdraw9, 1);
  181.     TextDrawLetterSize(Textdraw9, 0.3, 1.000000);
  182.     TextDrawColor(Textdraw9, -1);
  183.     TextDrawSetOutline(Textdraw9, 0);
  184.     TextDrawSetProportional(Textdraw9, 1);
  185.     TextDrawSetShadow(Textdraw9, 1);
  186.     TextDrawSetSelectable(Textdraw4, 1);
  187.     TextDrawSetSelectable(Textdraw5, 1);
  188.     TextDrawSetSelectable(Textdraw6, 1);
  189.    
  190.     TextDrawTextSize(Textdraw4, 20.000000, 90.000000);
  191.     TextDrawTextSize(Textdraw5, 20.000000, 90.000000);
  192.     TextDrawTextSize(Textdraw6, 20.000000, 90.000000);
  193.     return 1;
  194. }
  195. public OnPlayerRequestClass(playerid, classid)
  196. {
  197.     SetSpawnInfo(playerid,0,0,1958.3783, 1343.1572, 15.3746,0,0,0,0,0,0,0);
  198.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  199.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  200.     SpawnPlayer(playerid);
  201.     return 1;
  202. }
  203. public OnPlayerConnect(playerid)
  204. {
  205.     SetTimerEx("LoadAcc",15000,false,"i",playerid);
  206.     SendClientMessage(playerid,GRÜN, "Account wird geladen!");
  207.     return 1;
  208. }
  209. forward LoadAcc(playerid);
  210. public LoadAcc(playerid)
  211. {
  212.     new pstr[128], name[MAX_PLAYER_NAME+1];
  213.     GetPlayerName(playerid, name, sizeof(name));
  214.     Ping[playerid] = GetPlayerPing(playerid);
  215.     format(pstr,sizeof(pstr), "Name: %s~n~Ping: %i",name,Ping[playerid]);
  216.     TextDrawSetString(Textdraw9,pstr);
  217.     TextDrawShowForPlayer(playerid,Textdraw0);
  218.     TextDrawShowForPlayer(playerid,Textdraw1);
  219.     TextDrawShowForPlayer(playerid,Textdraw2);
  220.     TextDrawShowForPlayer(playerid,Textdraw3);
  221.     TextDrawShowForPlayer(playerid,Textdraw4);
  222.     TextDrawShowForPlayer(playerid,Textdraw5);
  223.     TextDrawShowForPlayer(playerid,Textdraw6);
  224.     TextDrawShowForPlayer(playerid,Textdraw7);
  225.     TextDrawShowForPlayer(playerid,Textdraw8);
  226.     TextDrawShowForPlayer(playerid,Textdraw9);
  227.     SelectTextDraw(playerid,GRÜN);
  228.     return 1;
  229. }
  230. public OnPlayerDisconnect(playerid)
  231. {
  232.     new /*str[256],*/ istr[128],name[MAX_PLAYER_NAME+1];
  233.     GetPlayerName(playerid,name,sizeof(name));
  234.     /* format(str,sizeof(str), "UPDATE `SET` `WERT1` = '%i' WHERE `NAME` = '%s'",Wert1,name);
  235.     db_query(Server,str); */
  236.     /*Kommentare entfernen, um Spieler zu speichern.. (Enum o.ä. sollte Vorher erstellt werden)*/
  237.     format(istr,sizeof(istr),"%s hat den Server verlassen!",name);
  238.     SendClientMessageToAll(-1,istr);
  239.    
  240.     return 1;
  241. }
  242. public OnPlayerText(playerid,text[])
  243. {
  244.     if(eingeloggt[playerid] == false)
  245.     {
  246.         SendClientMessage(playerid,-1,"Du bist derzeit nicht eingeloggt!");
  247.     }
  248.     else if(eingeloggt[playerid] == true)
  249.     {
  250.         new str[128],name[MAX_PLAYER_NAME+1];
  251.         GetPlayerName(playerid,name,sizeof(name));
  252.         format(str,sizeof(str), "%s: %s",name,text);
  253.         SendClientMessageToAll(-1,str);
  254.     }
  255.     return 0;
  256. }
  257. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  258. {
  259.     if(dialogid == LOGIN)
  260.     {
  261.         if(!response)return Kick(playerid);
  262.         if(response)
  263.         {
  264.             new name[MAX_PLAYER_NAME+1], DBResult:Result, str[512],sstr[128],hashpass[129];
  265.             GetPlayerName(playerid, name, sizeof(name));
  266.             WP_Hash(hashpass, sizeof(hashpass),inputtext);
  267.             format(str, sizeof(str), "SELECT * FROM `Accounts` where NAME = '%s' AND PASSWORD = '%s'", DB_Escape(name),hashpass);
  268.             Result = db_query(Server,str);
  269.             if(db_num_rows(Result) > 0)
  270.             {
  271.                 SpawnPlayer(playerid);
  272.                 TextDrawHideForPlayer(playerid,Textdraw0);
  273.                 TextDrawHideForPlayer(playerid,Textdraw1);
  274.                 TextDrawHideForPlayer(playerid,Textdraw2);
  275.                 TextDrawHideForPlayer(playerid,Textdraw3);
  276.                 TextDrawHideForPlayer(playerid,Textdraw4);
  277.                 TextDrawHideForPlayer(playerid,Textdraw5);
  278.                 TextDrawHideForPlayer(playerid,Textdraw6);
  279.                 TextDrawHideForPlayer(playerid,Textdraw7);
  280.                 TextDrawHideForPlayer(playerid,Textdraw8);
  281.                 TextDrawHideForPlayer(playerid,Textdraw9);
  282.                 eingeloggt[playerid] = true;
  283.                 CancelSelectTextDraw(playerid);
  284.                 SendClientMessage(playerid,GRÜN, "Du hast dich erfolgreich eingeloggt!");
  285.                 //SpielerLaden Beispiel:
  286.                 //db_get_field_assoc(Result,"Admin",str,sizeof(str));
  287.                 //SpielerInfo[playerid][Adminlevel] = strval(str);
  288.                 //Verwendung mit Enum => if(SpielerInfo[playerid][Adminlevel] < 1)return SendClientMessage(playerid,-1, "Du bist kein Admin!");
  289.             }
  290.             else
  291.             {
  292.                 ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_PASSWORD,"Login-fehlgeschlagen!", "Das Password stimmt nicht mit dem aus unserer Datenbank überein!\nBitte versuche es erneut!","Login","Abbrechen");
  293.                 LoginCount[playerid]++;
  294.                 format(sstr,sizeof(sstr), "Versuch: %i/3 - Solltest du 3 falsche Eingaben erreichen, wirst du automatisch gekickt!",LoginCount[playerid]);
  295.                 SendClientMessage(playerid,-1,sstr);
  296.                 if(LoginCount[playerid] == 3)return Kick(playerid);
  297.             }
  298.             db_free_result(Result);
  299.         }
  300.     }
  301.     if(dialogid == REGISTER)
  302.     {
  303.         if(!response)return Kick(playerid);
  304.         if(response)
  305.         {
  306.             if(strlen(inputtext) < 6 || strlen(inputtext) > 32)return SendClientMessage(playerid,-1,"Das Passwort muss mindestens 6-32 Zeichen haben!");
  307.             new str[512],hashpass[129], name[MAX_PLAYER_NAME+1];
  308.             GetPlayerName(playerid, name, sizeof(name));
  309.             WP_Hash(hashpass,sizeof(hashpass),inputtext);
  310.             format(str,sizeof(str),"INSERT INTO `Accounts`(`Name`,`Password`)VALUES('%s', '%s')",DB_Escape(name),hashpass);
  311.             db_query(Server,str);
  312.             TextDrawHideForPlayer(playerid,Textdraw0);
  313.             TextDrawHideForPlayer(playerid,Textdraw1);
  314.             TextDrawHideForPlayer(playerid,Textdraw2);
  315.             TextDrawHideForPlayer(playerid,Textdraw3);
  316.             TextDrawHideForPlayer(playerid,Textdraw4);
  317.             TextDrawHideForPlayer(playerid,Textdraw5);
  318.             TextDrawHideForPlayer(playerid,Textdraw6);
  319.             TextDrawHideForPlayer(playerid,Textdraw7);
  320.             TextDrawHideForPlayer(playerid,Textdraw8);
  321.             TextDrawHideForPlayer(playerid,Textdraw9);
  322.             eingeloggt[playerid] = true;
  323.             CancelSelectTextDraw(playerid);
  324.             SendClientMessage(playerid, GRÜN, "Dein Account wurde angelegt!");
  325.             SpawnPlayer(playerid);
  326.         }
  327.     }
  328.     return 1;
  329. }
  330. public OnPlayerClickTextDraw(playerid, Text:clickedid)
  331. {
  332.     if(clickedid == Textdraw4)
  333.     {
  334.         new str[512],lstr[128],rstr[128],DBResult:Result, name[MAX_PLAYER_NAME+1];
  335.         GetPlayerName(playerid, name, sizeof(name));
  336.         format(lstr, sizeof(lstr), "{FFFFFF}Der Account (({33FF33}%s{FFFFFF})) wurde gefunden!\nDu kannst dich nun mit deinem Password einloggen!",name);
  337.         format(rstr, sizeof(rstr), "{FFFFFF}Der Account (({FF0000}%s{FFFFFF})) wurde nicht gefunden!\nBitte registriere dich zunächst!",name);
  338.         format(str,sizeof(str), "SELECT * FROM `Accounts` WHERE `Name` = '%s'",DB_Escape(name));
  339.         Result = db_query(Server,str);
  340.         if(db_num_rows(Result) > 0)
  341.         {
  342.             ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_PASSWORD,"Login",lstr,"Login", "Abbrechen");
  343.         }
  344.         else
  345.         {
  346.             ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_PASSWORD, "Register", rstr,"Registrieren","Abbrechen");
  347.         }
  348.         db_free_result(Result);
  349.         return 1;
  350.     }
  351.     if(clickedid == Textdraw5)
  352.     {
  353.         new str[128],rstr[128],lstr[128],DBResult:Result,name[MAX_PLAYER_NAME+1];
  354.         GetPlayerName(playerid, name, sizeof(name));
  355.         format(lstr, sizeof(lstr), "{FFFFFF}Der Account (({33FF33}%s{FFFFFF})) wurde gefunden!\nDu kannst dich nun mit deinem Password einloggen!",name);
  356.         format(rstr, sizeof(rstr), "{FFFFFF}Der Account (({FF0000}%s{FFFFFF})) wurde nicht gefunden!\nBitte registriere dich zunächst!",name);
  357.         format(str,sizeof(str),"SELECT * FROM `Accounts` WHERE `Name` = '%s'",DB_Escape(name));
  358.         Result = db_query(Server,str);
  359.         if(db_num_rows(Result) > 0)
  360.         {
  361.             ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_PASSWORD,"Login", lstr,"Login", "Abbrechen");
  362.         }
  363.         else
  364.         {
  365.             ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_PASSWORD,"Register",rstr,"Registrieren", "Abbrechen");
  366.         }
  367.         db_free_result(Result);
  368.         return 1;
  369.     }
  370.     if(clickedid == Textdraw6)
  371.     {
  372.         ShowPlayerDialog(playerid,CHANGE,DIALOG_STYLE_MSGBOX, "Changelog 1.0", "Info\nInfo\nInfo!","OK","");
  373.         return 1;
  374.     }
  375.     return 1;
  376. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement