Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Drug System made by Friezakinght
- Current Version: 2.0
- Commands:
- /buydrugs
- /usedrugs
- /mydrugs
- /givedrugs
- /setdrugs (only for RCON admins)
- /agivedrugs (only for RCON admins)
- /checkdrugs (only for RCON admins)
- Author/Scripter: friezakinght
- Thanks to:
- Y_Less for - foreach, sscanf, Y_ini
- Zeex for - ZCMD
- You can modify the script how you like, however, please keep the credits.
- Currently working on v3.0, which might be the final version, thank you for downloading my script.
- Changelog v2.0:
- Added /givedrugs command. - Players can easily give drugs to other players.
- Added /agivedrugs command. - RCON Admins can give a player a specific amounts of drug
- Added /checkdrugs command. - RCON Admins can see a specific player's drug amount
- Changed some text colors so it would look more user-friendly
- Now the maximum amount of drugs you can buy per purchase is 500g
- Now players can type /usedrugs 1/2/3 [1 is for Cocaine, 2 is for Weed and 3 is for Heroine]
- Now the player's HUD won't hide when he gets high.
- Now when the player wants to get high with weed he will get a cigar in his hand.
- When the player uses a drug it gives him a message saying what drug he used(snort cocaine, smoke a joint, inject heroine)
- Now you can easily change the price per gram at #define DRUG_GRAM_PRICE
- Fixed the .AMX file, in version 1 it's size was like 4,1mb, now it's 350kb+.
- */
- #include <a_samp>
- #include <YSI\y_ini>
- #include <zcmd>
- #include <sscanf2>
- #include <foreach>
- #define USER_FILE "UserDrugs/%s.ini"
- #define DRUG_SHOP_MENU 1
- #define DRUG_GRAM_PRICE 500
- #define RED 0xFF0000FF
- #define BLUE 0x999999
- #define WHITE 0xFFFFFFAA
- #define GREEN 0x33AA33AA
- enum PlayerInfo
- {
- pName,
- pDrugs
- }
- new PDrugs[MAX_PLAYERS][PlayerInfo];
- new IsHigh[MAX_PLAYERS];
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" Drug System by friezakinght v2.0");
- print("--------------------------------------\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- foreach(Player, p)
- {
- if(IsPlayerConnected(p))
- {
- SaveUserDrugStats(p);
- }
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- if(fexist(DrugFilePath(playerid)))
- {
- INI_ParseFile(DrugFilePath(playerid), "LoadDrugData_%s", .bExtra = true, .extra = playerid);
- }
- else
- {
- new playerName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, playerName, MAX_PLAYER_NAME);
- new INI:ufile = INI_Open(DrugFilePath(playerid));
- INI_SetTag(ufile, "general");
- INI_WriteString(ufile, "pName", playerName);
- INI_WriteInt(ufile, "pDrugs", 0);
- INI_Close(ufile);
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- SaveUserDrugStats(playerid);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- IsHigh[playerid] = 0;
- SetPlayerDrunkLevel(playerid, 0);
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- IsHigh[playerid] = 0;
- SetPlayerWeather(playerid, 1);
- SetPlayerDrunkLevel(playerid, 0);
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == DRUG_SHOP_MENU && response == 1)
- {
- if(strlen(inputtext) <= 0) { ShowPlayerDialog(playerid, DRUG_SHOP_MENU, DIALOG_STYLE_INPUT,"{006600}Buy drugs","{FFFFFF}Enter the amount of {006600}grams {FFFFFF}you would like to {00FF00}buy{FFFFFF}:","Buy","Close"); }
- else if(!DrugAmountIsNumeric(inputtext)) { ShowPlayerDialog(playerid, DRUG_SHOP_MENU, DIALOG_STYLE_INPUT,"{006600}Buy drugs","{FFFFFF}Enter the amount of {006600}grams {FFFFFF}you would like to {00FF00}buy{FFFFFF}","Buy","Close"); }
- else
- {
- new
- pcash = GetPlayerMoney(playerid),
- str[128],
- amount = strval(inputtext),
- cash = amount * DRUG_GRAM_PRICE;
- if(amount <= 500)
- {
- if(pcash >= cash)
- {
- GivePlayerMoney(playerid, - cash);
- format(str, sizeof(str), "You bought {00FF00}%d {FFFFFF}grams of drugs for {00FF00}$%d{FFFFFF}.", amount, cash);
- SendClientMessage(playerid, -1, str);
- PDrugs[playerid][pDrugs] += amount;
- SaveUserDrugStats(playerid);
- }
- else
- {
- format(str, sizeof(str), "You don't have enough money for %dg of drugs!", amount);
- SendClientMessage(playerid, RED, str);
- }
- }
- else
- {
- format(str, sizeof(str), "You cannot buy more than 500g of drugs per purchase!");
- SendClientMessage(playerid, RED, str);
- }
- }
- }
- return 1;
- }
- CMD:buydrugs(playerid, params[])
- {
- if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, -1, "You need to be connected to buy drugs!");
- ShowPlayerDialog(playerid, DRUG_SHOP_MENU, DIALOG_STYLE_INPUT,"{006600}Buy drugs","{FFFFFF}Enter the amount of {006600}grams {FFFFFF}you would like to {00FF00}buy{FFFFFF}","Buy","Close");
- return true;
- }
- CMD:usedrugs(playerid, params[])
- {
- if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, BLUE, "You're not even connected to the server.");
- if(IsHigh[playerid] == 1) return SendClientMessage(playerid, BLUE, "You're already high!" );
- if(PDrugs[playerid][pDrugs] == 0) return SendClientMessage(playerid, BLUE, "You don't have a gram of drugs");
- new drugname[32];
- if(sscanf(params,"s[32]",drugname))
- {
- SendClientMessage(playerid, BLUE, "USAGE: /usedrugs [drugname/number]");
- SendClientMessage(playerid, BLUE, "CHOICES: Cocaine [1](75HP), Weed [2](50HP), Heroine [3](25HP).");
- return 1;
- }
- new Float:PHealth;
- if(strcmp(drugname, "cocaine", true) == 0 || strcmp(drugname, "1", true) == 0)
- {
- GetPlayerHealth(playerid, PHealth);
- if(PDrugs[playerid][pDrugs] >= 3)
- {
- SetPlayerWeather(playerid, -66);
- SetPlayerDrunkLevel(playerid, 4000);
- SetPlayerTime(playerid,12,00);
- GameTextForPlayer(playerid, "~r~The drug effect will be gone in a minute", 3000, 5);
- IsHigh[playerid] = 1;
- PDrugs[playerid][pDrugs] -= 3;
- SaveUserDrugStats(playerid);
- SendClientMessage(playerid, WHITE, "You snorted 3g of cocaine.");
- SetTimer("IsHighTimer", 120000, false);
- if(PHealth <= 75)
- {
- GivePlayerHealth(playerid, 25);
- }
- else
- {
- SetPlayerHealth(playerid, 100);
- }
- }
- else
- {
- SendClientMessage(playerid, BLUE, "You need 3g of drugs to snort cocaine.");
- }
- }
- if(strcmp(drugname, "weed", true) == 0 || strcmp(drugname, "2", true) == 0)
- {
- if(PDrugs[playerid][pDrugs] >= 2)
- {
- GetPlayerHealth(playerid, PHealth);
- SetPlayerWeather(playerid, -66);
- SetPlayerDrunkLevel(playerid, 4000);
- SetPlayerTime(playerid,12,00);
- GameTextForPlayer(playerid, "~r~The drug effect will be gone in a minute", 3000, 5);
- IsHigh[playerid] = 1;
- PDrugs[playerid][pDrugs] -= 2;
- SaveUserDrugStats(playerid);
- SetPlayerSpecialAction(playerid, SPECIAL_ACTION_SMOKE_CIGGY);
- SendClientMessage(playerid, WHITE, "You lit a joint and started smoking.");
- SetTimer("IsHighTimer", 120000, false);
- if(PHealth <= 50)
- {
- GivePlayerHealth(playerid, 50);
- }
- else
- {
- SetPlayerHealth(playerid, 100);
- }
- }
- else
- {
- SendClientMessage(playerid, BLUE, "You need 2g of drugs to smoke weed.");
- }
- }
- if(strcmp(drugname, "heroine", true) == 0 || strcmp(drugname, "3", true) == 0)
- {
- if(PDrugs[playerid][pDrugs] >= 1)
- {
- SetPlayerWeather(playerid, -66);
- SetPlayerDrunkLevel(playerid, 4000);
- SetPlayerTime(playerid,12,00);
- GameTextForPlayer(playerid, "~r~The drug effect will be gone in a minute", 3000, 5);
- IsHigh[playerid] = 1;
- PDrugs[playerid][pDrugs] -= 1;
- SaveUserDrugStats(playerid);
- SendClientMessage(playerid, WHITE, "You injected 1g of heroine into your veins.");
- SetTimer("IsHighTimer", 120000, false);
- if(PHealth <= 25)
- {
- GivePlayerHealth(playerid, 75);
- }
- else
- {
- SetPlayerHealth(playerid, 100);
- }
- }
- else
- {
- SendClientMessage(playerid, BLUE, "You need 1g of drugs to inject heroine.");
- }
- }
- return 1;
- }
- CMD:mydrugs(playerid, params[])
- {
- new cline[100];
- format(cline, sizeof(cline), "Drugs: %dg", PDrugs[playerid][pDrugs]);
- SendClientMessage(playerid, GREEN, cline);
- return 1;
- }
- CMD:setdrugs(playerid, params[])
- {
- new fstr[200];
- new damount, id;
- if(sscanf(params, "ud", id, damount)) return SendClientMessage(playerid, RED, "[USAGE]: /setdrugs [player id] [amount]");
- if(!IsPlayerConnected(id)) return SendClientMessage(playerid, RED, "Player not found.");
- if(IsPlayerAdmin(playerid))
- {
- PDrugs[id][pDrugs] = damount;
- PlayerPlaySound(id,1085,0.0,0.0,0.0);
- format(fstr, sizeof(fstr), "You have set %s [%d] drug amount to {00FF00}%d{FFFFFF}.", GetName(id), id, damount);
- SendClientMessage(playerid, WHITE, fstr);
- format(fstr, sizeof(fstr), "Admin %s [%d] has set your drug amount to {00FF00}%d{FFFFFF}.", GetName(playerid), playerid, damount);
- SendClientMessage(id, WHITE, fstr);
- SaveUserDrugStats(id);
- }
- else
- {
- SendClientMessage(playerid, RED, "You don't have the permission to acces this command!");
- }
- return true;
- }
- CMD:givedrugs(playerid, params[])
- {
- new fstr[200];
- new damount, id;
- if(sscanf(params, "ud", id, damount)) return SendClientMessage(playerid, RED, "[USAGE]: /givedrugs [player id] [amount]");
- if(!IsPlayerConnected(id)) return SendClientMessage(playerid, RED, "Player not found.");
- if(PDrugs[playerid][pDrugs] >= damount)
- {
- PDrugs[id][pDrugs] += damount;
- PDrugs[playerid][pDrugs] -= damount;
- PlayerPlaySound(id,1085,0.0,0.0,0.0);
- format(fstr, sizeof(fstr), "You have given %s [%d] {00FF00}%d{FFFFFF} drug grams.", GetName(id), id, damount);
- SendClientMessage(playerid, WHITE, fstr);
- format(fstr, sizeof(fstr), "%s [%d] has given you {00FF00}%d{FFFFFF} grams of drugs.", GetName(playerid), playerid, damount);
- SendClientMessage(id, WHITE, fstr);
- SaveUserDrugStats(id);
- SaveUserDrugStats(playerid);
- }
- else
- {
- SendClientMessage(playerid, RED, "You don't have enough grams of drugs!");
- }
- return true;
- }
- CMD:agivedrugs(playerid, params[])
- {
- new fstr[200];
- new damount, id;
- if(sscanf(params, "ud", id, damount)) return SendClientMessage(playerid, RED, "[USAGE]: /agivedrugs [player id] [amount]");
- if(!IsPlayerConnected(id)) return SendClientMessage(playerid, RED, "Player not found.");
- if(IsPlayerAdmin(playerid))
- {
- PDrugs[id][pDrugs] += damount;
- PlayerPlaySound(id,1085,0.0,0.0,0.0);
- format(fstr, sizeof(fstr), "You have given %s [%d] {00FF00}%d{FFFFFF} drug grams.", GetName(id), id, damount);
- SendClientMessage(playerid, WHITE, fstr);
- format(fstr, sizeof(fstr), "Admin %s [%d] has given you {00FF00}%d{FFFFFF} grams of drugs.", GetName(playerid), playerid, damount);
- SendClientMessage(id, WHITE, fstr);
- SaveUserDrugStats(id);
- }
- else
- {
- SendClientMessage(playerid, RED, "You don't have the permission to acces this command!");
- }
- return true;
- }
- CMD:checkdrugs(playerid, params[])
- {
- new id;
- if(sscanf(params, "u", id)) return SendClientMessage(playerid, RED, "[USAGE]: /checkdrugs [player id]");
- if(!IsPlayerConnected(id)) return SendClientMessage(playerid, RED, "Player not found.");
- if(IsPlayerAdmin(playerid))
- {
- new msg[48];
- format(msg, sizeof(msg), "[Name]: %s [%d] [Drugs]: %dg", GetName(id), id, PDrugs[id][pDrugs]);
- SendClientMessage(playerid, BLUE, msg);
- }
- else
- {
- SendClientMessage(playerid, RED, "You don't have the permission to acces this command!");
- }
- return true;
- }
- stock SaveUserDrugStats(playerid)
- {
- if(IsPlayerConnected(playerid))
- {
- new playerName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, playerName, MAX_PLAYER_NAME);
- new file[40];
- format(file, sizeof(file), USER_FILE, playerName);
- new INI:ufile = INI_Open(file);
- INI_SetTag(ufile, "general");
- INI_WriteString(ufile, "pName", playerName);
- INI_WriteInt(ufile, "pDrugs", PDrugs[playerid][pDrugs]);
- INI_Close(ufile);
- }
- return 1;
- }
- forward LoadDrugData_general(playerid, name[], value[]);
- public LoadDrugData_general(playerid, name[], value[])
- {
- INI_Int("pName", PDrugs[playerid][pName]);
- INI_Int("pDrugs", PDrugs[playerid][pDrugs]);
- return 1;
- }
- forward IsHighTimer(playerid);
- public IsHighTimer(playerid)
- {
- IsHigh[playerid] = 0;
- SetPlayerWeather(playerid, 1);
- SetPlayerDrunkLevel(playerid, 0);
- }
- stock DrugAmountIsNumeric(const string[])
- {
- new i;
- while(string[i] != '\0') //end of string
- {
- if (string[i] > '9' || string[i] < '0'){return 0;}
- i++;
- }
- return 1;
- }
- stock GivePlayerHealth(playerid,Float:Health)
- {
- new Float:health; GetPlayerHealth(playerid,health);
- SetPlayerHealth(playerid,health+Health);
- }
- stock GetName(playerid)
- {
- new Name[24];
- GetPlayerName(playerid, (Name), sizeof(Name));
- return Name;
- }
- stock DrugFilePath(playerid)
- {
- new string[128],playername[MAX_PLAYER_NAME];
- GetPlayerName(playerid,playername,sizeof(playername));
- format(string,sizeof(string),USER_FILE,playername);
- return string;
- }
Advertisement
Add Comment
Please, Sign In to add comment