Advertisement
friezakinght

Drug System v1.0

Jul 8th, 2014
552
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.36 KB | None | 0 0
  1. /*Drug System made by Friezakinght
  2. Current Version: 1.0
  3.  
  4. Commands:
  5. /buydrugs
  6. /usedrugs
  7. /mydrugs
  8. /setdrugs (only for RCON admins)
  9.  
  10. Author/Scripter: friezakinght
  11. Thanks to:
  12. Y_Less for - foreach, sscanf, Y_ini
  13. Zeex for - ZCMD
  14.  
  15. You can modify the script how you like, however, please keep the credits.
  16. Currently working on v2.0, thank you for downloading my script.
  17. */
  18.  
  19. #include <a_samp>
  20. #include <YSI\y_ini>
  21. #include <zcmd>
  22. #include <sscanf2>
  23. #include <foreach>
  24.  
  25. #define USER_FILE "UserDrugs/%s.ini"
  26. #define DRUG_SHOP_MENU 1
  27.  
  28. #define RED 0xFF0000FF
  29. #define BLUE 0x999999
  30. #define WHITE 0xFFFFFFAA
  31. #define GREEN 0x33AA33AA
  32.  
  33. enum PlayerInfo
  34. {
  35.     pName,
  36.     pDrugs
  37. }
  38. new PDrugs[MAX_PLAYERS][PlayerInfo];
  39. new IsHigh[MAX_PLAYERS];
  40.  
  41. public OnFilterScriptInit()
  42. {
  43.     print("\n--------------------------------------");
  44.     print(" Drug System by Friezakinght v1.0");
  45.     print("--------------------------------------\n");
  46.    
  47.     return 1;
  48. }
  49.  
  50. public OnFilterScriptExit()
  51. {
  52.     foreach(Player, p)
  53.     {
  54.         if(IsPlayerConnected(p))
  55.         {
  56.             SaveUserDrugStats(p);
  57.         }
  58.     }
  59. }
  60.  
  61. public OnPlayerConnect(playerid)
  62. {
  63.     new playerName[MAX_PLAYER_NAME];
  64.     GetPlayerName(playerid, playerName, MAX_PLAYER_NAME);
  65.     new userfile[40];
  66.     format(userfile, sizeof(userfile), USER_FILE, playerName);
  67.     INI_ParseFile(userfile, "LoadDrugData_%s", .bExtra = true, .extra = playerid);
  68.     return 1;
  69. }
  70.  
  71. public OnPlayerDisconnect(playerid, reason)
  72. {
  73.     SaveUserDrugStats(playerid);
  74.     return 1;
  75. }
  76.  
  77. public OnPlayerSpawn(playerid)
  78. {
  79.     IsHigh[playerid] = 0;
  80.     SetPlayerDrunkLevel(playerid, 0);
  81.     return 1;
  82. }
  83.  
  84. public OnPlayerDeath(playerid, killerid, reason)
  85. {
  86.     IsHigh[playerid] = 0;
  87.     SetPlayerWeather(playerid, 1);
  88.     SetPlayerDrunkLevel(playerid, 0);
  89.     return 1;
  90. }
  91.  
  92. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  93. {
  94.     if(dialogid == DRUG_SHOP_MENU && response == 1)
  95.     {
  96.         if(strlen(inputtext) <= 0) { ShowPlayerDialog(playerid, DRUG_SHOP_MENU, DIALOG_STYLE_INPUT,"Buy drugs","Enter the amount of grams you would like to buy:","Buy","Close"); }
  97.         else if(!DrugAmountIsNumeric(inputtext)) { ShowPlayerDialog(playerid, DRUG_SHOP_MENU, DIALOG_STYLE_INPUT,"Buy drugs","Enter the amount of grams you would like to buy:","Buy","Close"); }
  98.         else
  99.         {
  100.         new
  101.             pcash = GetPlayerMoney(playerid),
  102.             str[128],
  103.             amount = strval(inputtext),
  104.             cash = amount * 1000;
  105.         if(pcash >= cash)
  106.         {
  107.             GivePlayerMoney(playerid, - cash);
  108.             format(str, sizeof(str), "You bought {00FF00}%d {FFFFFF}grams of drugs for {00FF00}$%d{FFFFFF}.", amount, cash);
  109.             SendClientMessage(playerid, -1, str);
  110.             PDrugs[playerid][pDrugs] += amount;
  111.             SaveUserDrugStats(playerid);
  112.         }
  113.         }
  114.     }
  115.     return 1;
  116. }
  117.  
  118. CMD:buydrugs(playerid, params[])
  119. {
  120.     if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, -1, "You need to be connected to buy drugs!");
  121.     ShowPlayerDialog(playerid, DRUG_SHOP_MENU, DIALOG_STYLE_INPUT,"Buy drugs","Enter the amount of grams you would like to buy:","Buy","Close");
  122.     return true;
  123. }
  124.  
  125. CMD:usedrugs(playerid, params[])
  126. {
  127.     if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, BLUE, "You're not even connected to the server.");
  128.     if(IsHigh[playerid] == 1) return SendClientMessage(playerid, BLUE, "You're already high!" );
  129.     if(PDrugs[playerid][pDrugs] == 0) return SendClientMessage(playerid, BLUE, "You don't have a gram of drugs");
  130.     new drugname[32];
  131.     if(sscanf(params,"s[32]",drugname))
  132.     {
  133.         SendClientMessage(playerid, BLUE, "USAGE: /usedrugs [drugname]");
  134.         SendClientMessage(playerid, BLUE, "CHOICES: Cocaine (75HP), Weed (50HP), Heroine(25HP).");
  135.  
  136.         return 1;
  137.     }
  138.     new Float:PHealth;
  139.     if(strcmp(drugname, "cocaine", true) == 0)
  140.     {
  141.         GetPlayerHealth(playerid, PHealth);
  142.         if(PDrugs[playerid][pDrugs] >= 3)
  143.         {
  144.             SetPlayerWeather(playerid, -66);
  145.             SetPlayerDrunkLevel(playerid, 10000);
  146.             SetPlayerTime(playerid,12,00);
  147.             GameTextForPlayer(playerid, "~r~The drug effect will be gone in a minute", 3000, 5);
  148.             IsHigh[playerid] = 1;
  149.             PDrugs[playerid][pDrugs] -= 3;
  150.             SaveUserDrugStats(playerid);
  151.             SendClientMessage(playerid, WHITE, "You injected cocaine into your veins.");
  152.             SetTimer("IsHighTimer", 120000, false);
  153.             if(PHealth <= 75)
  154.             {
  155.                 GivePlayerHealth(playerid, 25);
  156.             }
  157.             else
  158.             {
  159.                 SetPlayerHealth(playerid, 100);
  160.             }
  161.         }
  162.         else
  163.         {
  164.             SendClientMessage(playerid, BLUE, "You need 3 grams of drugs to inject cocaine.");
  165.         }
  166.     }
  167.     if(strcmp(drugname, "weed", true) == 0)
  168.     {
  169.         if(PDrugs[playerid][pDrugs] >= 2)
  170.         {
  171.             GetPlayerHealth(playerid, PHealth);
  172.             SetPlayerWeather(playerid, -66);
  173.             SetPlayerDrunkLevel(playerid, 10000);
  174.             SetPlayerTime(playerid,12,00);
  175.             GameTextForPlayer(playerid, "~r~The drug effect will be gone in a minute", 3000, 5);
  176.             IsHigh[playerid] = 1;
  177.             PDrugs[playerid][pDrugs] -= 2;
  178.             SaveUserDrugStats(playerid);
  179.             SetTimer("IsHighTimer", 120000, false);
  180.             if(PHealth <= 50)
  181.             {
  182.                 GivePlayerHealth(playerid, 50);
  183.             }
  184.             else
  185.             {
  186.                 SetPlayerHealth(playerid, 100);
  187.             }
  188.         }
  189.         else
  190.         {
  191.             SendClientMessage(playerid, BLUE, "You need 2 grams of drugs to smoke weed.");
  192.         }
  193.  
  194.     }
  195.     if(strcmp(drugname, "heroine", true) == 0)
  196.     {
  197.         if(PDrugs[playerid][pDrugs] >= 1)
  198.         {
  199.             SetPlayerWeather(playerid, -66);
  200.             SetPlayerDrunkLevel(playerid, 10000);
  201.             SetPlayerTime(playerid,12,00);
  202.             GameTextForPlayer(playerid, "~r~The drug effect will be gone in a minute", 3000, 5);
  203.             IsHigh[playerid] = 1;
  204.             PDrugs[playerid][pDrugs] -= 1;
  205.             SaveUserDrugStats(playerid);
  206.             SetTimer("IsHighTimer", 120000, false);
  207.             if(PHealth <= 25)
  208.             {
  209.                 GivePlayerHealth(playerid, 75);
  210.             }
  211.             else
  212.             {
  213.                 SetPlayerHealth(playerid, 100);
  214.             }
  215.         }
  216.         else
  217.         {
  218.             SendClientMessage(playerid, BLUE, "You need 1 grams of drugs to inject heroine.");
  219.         }
  220.     }
  221.     return 1;
  222. }
  223.  
  224. CMD:mydrugs(playerid, params[])
  225. {
  226.     new cline[100];
  227.     format(cline, sizeof(cline), "Drugs: %dg", PDrugs[playerid][pDrugs]);
  228.     SendClientMessage(playerid, GREEN, cline);
  229.     return 1;
  230. }
  231.  
  232. CMD:setdrugs(playerid, params[])
  233. {
  234.     new fstr[200];
  235.     new damount, id;
  236.     if(sscanf(params, "ud", id, damount)) return SendClientMessage(playerid, RED, "[USAGE]: /setdrugs [player id] [amount]");
  237.     if(!IsPlayerConnected(id)) return SendClientMessage(playerid, RED, "Player not found.");
  238.     if(IsPlayerAdmin(playerid))
  239.     {
  240.         PDrugs[id][pDrugs] = damount;
  241.         PlayerPlaySound(id,1085,0.0,0.0,0.0);
  242.         format(fstr, sizeof(fstr), "You have set %s [%d] drug amount to {00FF00}%d{FFFFFF}.", GetName(id), id, damount);
  243.         SendClientMessage(playerid, WHITE, fstr);
  244.         format(fstr, sizeof(fstr), "Admin %s [%d] has set your drug amount to {00FF00}%d{FFFFFF}.", GetName(playerid), playerid, damount);
  245.         SendClientMessage(id, WHITE, fstr);
  246.         SaveUserDrugStats(id);
  247.     }
  248.     else
  249.     {
  250.         SendClientMessage(playerid, RED, "You don't have the permission to acces this command!");
  251.     }
  252.     return true;
  253. }
  254.  
  255. stock SaveUserDrugStats(playerid)
  256. {
  257.     if(IsPlayerConnected(playerid))
  258.     {
  259.         new playerName[MAX_PLAYER_NAME];
  260.         GetPlayerName(playerid, playerName, MAX_PLAYER_NAME);
  261.         new file[40];
  262.         format(file, sizeof(file), USER_FILE, playerName);
  263.         new INI:ufile = INI_Open(file);
  264.         INI_SetTag(ufile, "general");
  265.         INI_WriteString(ufile, "pName", playerName);
  266.         INI_WriteInt(ufile, "pDrugs",  PDrugs[playerid][pDrugs]);
  267.         INI_Close(ufile);
  268.     }
  269.     return 1;
  270. }
  271.  
  272. forward LoadDrugData_general(playerid, name[], value[]);
  273. public LoadDrugData_general(playerid, name[], value[])
  274. {
  275.     INI_Int("pName", PDrugs[playerid][pName]);
  276.     INI_Int("pDrugs", PDrugs[playerid][pDrugs]);
  277.     return 1;
  278. }
  279.  
  280. forward IsHighTimer(playerid);
  281. public IsHighTimer(playerid)
  282. {
  283.     IsHigh[playerid] = 0;
  284.     SetPlayerWeather(playerid, 1);
  285.     SetPlayerDrunkLevel(playerid, 0);
  286. }
  287.  
  288. stock DrugAmountIsNumeric(const string[])
  289. {
  290.     new i;
  291.     while(string[i] != '\0') //end of string
  292.     {
  293.         if (string[i] > '9' || string[i] < '0'){return 0;}
  294.         i++;
  295.     }
  296.     return 1;
  297. }
  298.  
  299. stock GivePlayerHealth(playerid,Float:Health)
  300. {
  301.     new Float:health; GetPlayerHealth(playerid,health);
  302.     SetPlayerHealth(playerid,health+Health);
  303. }
  304.  
  305. stock GetName(playerid)
  306. {
  307.     new Name[24];
  308.     GetPlayerName(playerid, (Name), sizeof(Name));
  309.     return Name;
  310. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement