Advertisement
Guest User

Gutschein-System SA-MP/PAWN

a guest
Apr 1st, 2015
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.73 KB | None | 0 0
  1. /*
  2. CREATE TABLE IF NOT EXISTS `gutscheine` (
  3.   `DatensatzID` int(11) NOT NULL AUTO_INCREMENT,
  4.   `gID` int(11) DEFAULT NULL,
  5.   `gOwner` text,
  6.   `gCode` int(11) DEFAULT NULL,
  7.   `gUsed` int(11) DEFAULT NULL,
  8.   `gUsedBy` text,
  9.   `gAktion` int(11) DEFAULT NULL,
  10.   PRIMARY KEY (`DatensatzID`)
  11. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=80 ;
  12.  */
  13.  
  14. #include <a_samp>
  15. #include <ocmd>
  16. #include <mysql>
  17.  
  18. #define MAX_GUTSCHEINE 500 //Maximal 500 Gutscheine
  19. #define DIALOG_GUTSCHEIN 998 //Gutscheindialog definierung (Anpassen!)
  20. #define DIALOG_GNAMECHANGE 999 //Namenchange Dialog definierung (Anpassen!)
  21.  
  22. forward LoadCoupons();
  23.  
  24. #define MySQL
  25. #if defined MySQL
  26. #define mysql_host      "localhost" //MySQL Daten anpassen!
  27. #define mysql_user      "rgr"
  28. #define mysql_db        "rgrscript"
  29. #define mysql_pass      "test"
  30. #endif
  31.  
  32. enum GutscheinSystem
  33. {
  34.     gID, //GutscheinID
  35.     gOwner[MAX_PLAYER_NAME], //GutscheinErsteller
  36.     gCode, //Gutschein Code
  37.     gUsed, //Gutschein genutzt
  38.     gUsedBy[MAX_PLAYER_NAME], //Gutschein genutzt von
  39.     gAktion //Gutscheinaktion
  40. }
  41. new Gutschein[MAX_GUTSCHEINE][GutscheinSystem];
  42.  
  43.  
  44. public OnFilterScriptInit()
  45. {
  46.     print(" Gutschein/Coupon-System by crontec/Jason_Varrez");
  47.     LoadCoupons();
  48.     #if defined MySQL
  49.     mysql_connect(mysql_host, mysql_user, mysql_db, mysql_pass);
  50.     printf("");
  51.     printf("Das Gutschein/Coupon System konnte mit der MySQL Datenbank verbunden werden.");
  52.     printf("");
  53.     #endif
  54.     return 1;
  55. }
  56.  
  57. public OnFilterScriptExit()
  58. {
  59.     return 1;
  60. }
  61.  
  62. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  63. {
  64.     if(dialogid == DIALOG_GUTSCHEIN)
  65.     {
  66.         printf("Test1");
  67.         if(response)
  68.         {
  69.             printf("Test2");
  70.             new string[256];
  71.             if(listitem == 0) //Namenschange
  72.             {
  73.                 new geld = GetPlayerMoney(playerid),
  74.                     differenz = 500000 -geld;
  75.                 if(geld < 500000)
  76.                 {
  77.                     format(string, sizeof(string), "Dieser Gutschein kostet $500.000, dir fehlen %d", differenz);
  78.                     SendClientMessage(playerid, -1, string);
  79.                     return 1;
  80.                 }
  81.                 new rand = random(999998)+1,
  82.                     aktion = 1,
  83.                     used = 0;
  84.                 for(new g = 0; g <MAX_GUTSCHEINE; g++)
  85.                 {
  86.                     if(Gutschein[g][gCode] == 0)
  87.                     {
  88.                         Gutschein[g][gID]++;
  89.                         Gutschein[g][gCode] = rand;
  90.                         Gutschein[g][gAktion] = aktion;
  91.                         Gutschein[g][gUsed] = used;
  92.                         break;
  93.                     }
  94.                 }
  95.                 //GivePlayerMoney(playerid, -500000);
  96.                 SendClientMessage(playerid, -1, "Du hast einen Gutschein für eine Namensänderung für $500.000 gekauft!");
  97.                 format(string, sizeof(string), "Der Gutscheincode ist: %d - der Gutschein kann mit /usecoupon verwendet werden.", rand);
  98.                 SendClientMessage(playerid, -1, string);
  99.                 SendClientMessage(playerid, -1, "Wichtig: Schreibe dir diesen Code auf, falls du ihn an einen Spieler weiter geben möchtest.");
  100.                 format(string, sizeof(string), "INSERT INTO `gutscheine` (`gOwner`, `gCode`, `gUsed`, `gAktion`) VALUES ('%s', '%d', '%d', '%d')", SpielerName(playerid), rand, used, aktion);
  101.                 self_mysql_query(string);
  102.             }
  103.             if(listitem == 1) // Gefängnisfrei
  104.             {
  105.                 printf("Test3");
  106.                 new rand = random(999998)+1,
  107.                     aktion = 2,
  108.                     used = 0;
  109.                 for(new g = 0; g <MAX_GUTSCHEINE; g++)
  110.                 {
  111.                     if(Gutschein[g][gCode] == 0)
  112.                     {
  113.                         Gutschein[g][gID]++;
  114.                         Gutschein[g][gCode] = rand;
  115.                         Gutschein[g][gAktion] = aktion;
  116.                         Gutschein[g][gUsed] = used;
  117.                         break;
  118.                     }
  119.                 }
  120.                 format(string, sizeof(string), "Der Gutscheincode ist: %d - der Gutschein kann mit /usecoupon verwendet werden.", rand);
  121.                 SendClientMessage(playerid, -1, string);
  122.                 SendClientMessage(playerid, -1, "Wichtig: Schreibe dir diesen Code auf, falls du ihn an einen Spieler weiter geben möchtest.");
  123.                 format(string, sizeof(string), "INSERT INTO `gutscheine` (`gOwner`, `gCode`, `gUsed`, `gAktion`) VALUES ('%s', '%d', '%d', '%d')", SpielerName(playerid), rand, used, aktion);
  124.                 self_mysql_query(string);
  125.             }
  126.             if(listitem == 2) //Kostenlose Autoreparatur
  127.             {
  128.                 new rand = random(999998)+1,
  129.                     aktion = 3,
  130.                     used = 0;
  131.                 for(new g = 0; g <MAX_GUTSCHEINE; g++)
  132.                 {
  133.                     if(Gutschein[g][gCode] == 0)
  134.                     {
  135.                         Gutschein[g][gID]++;
  136.                         Gutschein[g][gCode] = rand;
  137.                         Gutschein[g][gAktion] = aktion;
  138.                         Gutschein[g][gUsed] = used;
  139.                         break;
  140.                     }
  141.                 }
  142.                 format(string, sizeof(string), "Der Gutscheincode ist: %d - der Gutschein kann mit /usecoupon verwendet werden.", rand);
  143.                 SendClientMessage(playerid, -1, string);
  144.                 SendClientMessage(playerid, -1, "Wichtig: Schreibe dir diesen Code auf, falls du ihn an einen Spieler weiter geben möchtest.");
  145.                 format(string, sizeof(string), "INSERT INTO `gutscheine` (`gOwner`, `gCode`, `gUsed`, `gAktion`) VALUES ('%s', '%d', '%d', '%d')", SpielerName(playerid), rand, used, aktion);
  146.                 self_mysql_query(string);
  147.             }
  148.             if(listitem == 3) //Invite Sperre
  149.             {
  150.                 new rand = random(999998)+1,
  151.                     aktion = 4,
  152.                     used = 0;
  153.                 for(new g = 0; g <MAX_GUTSCHEINE; g++)
  154.                 {
  155.                     if(Gutschein[g][gCode] == 0)
  156.                     {
  157.                         Gutschein[g][gID]++;
  158.                         Gutschein[g][gCode] = rand;
  159.                         Gutschein[g][gAktion] = aktion;
  160.                         Gutschein[g][gUsed] = used;
  161.                         break;
  162.                     }
  163.                 }
  164.                 format(string, sizeof(string), "Der Gutscheincode ist: %d - der Gutschein kann mit /usecoupon verwendet werden.", rand);
  165.                 SendClientMessage(playerid, -1, string);
  166.                 SendClientMessage(playerid, -1, "Wichtig: Schreibe dir diesen Code auf, falls du ihn an einen Spieler weiter geben möchtest.");
  167.                 format(string, sizeof(string), "INSERT INTO `gutscheine` (`gOwner`, `gCode`, `gUsed`, `gAktion`) VALUES ('%s', '%d', '%d', '%d')", SpielerName(playerid), rand, used, aktion);
  168.                 self_mysql_query(string);
  169.             }
  170.         }
  171.     }
  172.     return 1;
  173. }
  174.  
  175. public LoadCoupons()
  176. {
  177.     for(new i = 0; i < MAX_GUTSCHEINE; i++)
  178.     {
  179.         Gutschein[i][gOwner] = mysql_GetInt("gutscheine", "gOwner", "DatensatzID",i);
  180.         Gutschein[i][gCode] = mysql_GetInt("gutscheine", "gCode", "DatensatzID",i);
  181.         Gutschein[i][gUsed] = mysql_GetInt("gutscheine", "gUsed", "DatensatzID",i);
  182.         Gutschein[i][gUsedBy] = mysql_GetInt("gutscheine", "gUsedBy", "DatensatzID",i);
  183.         Gutschein[i][gAktion] = mysql_GetInt("gutscheine", "gAktion", "DatensatzID",i);
  184.     }
  185.     return 1;
  186. }
  187.  
  188. ocmd:buycoupon(playerid, params[])
  189. {
  190.     //Hier sollte noch eine Abfrage erstellt werden, WANN der Befehl nicht benutzt werden sollte, damit man sich keine Vorteile erschleichen kann
  191.     ShowPlayerDialog(playerid, DIALOG_GUTSCHEIN, DIALOG_STYLE_LIST, "ServerName - Gutscheine", "Namenschange            $500.000\nCoupon 2      $50.000\nCoupon 3   $2.000\nCoupon 4    $200.000", "Kaufen", "Schließen");
  192.     return 1;
  193. }
  194.  
  195. ocmd:usecoupon(playerid, params[])
  196. {
  197.     new gutscheinid, string[256];
  198.     if(sscanf(params, "i", gutscheinid)) return SendClientMessage(playerid, -1, "Benutze: /usecoupon [GutscheinCode]");
  199.     for(new g = 0; g <MAX_GUTSCHEINE; g++)
  200.     {
  201.         if(gutscheinid != Gutschein[g][gCode]) continue;
  202.         if(Gutschein[g][gUsed] == 1) return SendClientMessage(playerid, -1, "Dieser Code wurde bereits aktiviert.");
  203.         if(Gutschein[g][gAktion] == 1)
  204.         {
  205.             ShowPlayerDialog(playerid, DIALOG_GNAMECHANGE, DIALOG_STYLE_INPUT, "Gutschein einlösen: Namenschange", "Bitte gib deinen neuen Wunschnamen ein:", "Change", "Abbrechen");
  206.             SetPVarInt(playerid, "g", g);
  207.         }
  208.         if(Gutschein[g][gAktion] == 2)
  209.         {
  210.             Gutschein[g][gUsed] = 1;
  211.             format(string, sizeof(string), "UPDATE `gutscheine` SET `gUsed` = '1', `gUsedBy` = '%s' WHERE gCode = '%d'", SpielerName(playerid), Gutschein[g][gCode]);
  212.             self_mysql_query(string);
  213.         }
  214.         if(Gutschein[g][gAktion] == 3)
  215.         {
  216.             Gutschein[g][gUsed] = 1;
  217.             format(string, sizeof(string), "UPDATE `gutscheine` SET `gUsed` = '1', `gUsedBy` = '%s' WHERE gCode = '%d'", SpielerName(playerid), Gutschein[g][gCode]);
  218.             self_mysql_query(string);
  219.         }
  220.         if(Gutschein[g][gAktion] == 4)
  221.         {
  222.             format(string, sizeof(string), "UPDATE `gutscheine` SET `gUsed` = '1', `gUsedBy` = '%s' WHERE gCode = '%d'", SpielerName(playerid), Gutschein[g][gCode]);
  223.             self_mysql_query(string);
  224.         }
  225.         return 1;
  226.     }
  227.     return SendClientMessage(playerid, -1, "Dieser Code existiert nicht!");
  228. }
  229.  
  230. stock SpielerName(playerid)
  231. {
  232.     new name[MAX_PLAYER_NAME];
  233.     GetPlayerName(playerid, name, sizeof(name));
  234.     return name;
  235. }
  236.  
  237. stock self_mysql_query(string[])
  238. {
  239.     mysql_query(string);
  240. }
  241.  
  242. stock mysql_GetInt(Table[], Field[], Where[], check){
  243.     new query[128];
  244.     mysql_real_escape_string(Table, Table);
  245.     mysql_real_escape_string(Field, Field);
  246.     mysql_real_escape_string(Where, Where);
  247.     format(query, 128, "SELECT %s FROM %s WHERE %s = '%d'", Field, Table, Where, check);
  248.     mysql_query(query);
  249.     mysql_store_result();
  250.     new sqlint = mysql_fetch_int();
  251.     mysql_free_result();
  252.     return sqlint;
  253. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement