Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Drug System made by Friezakinght
- Current Version: 1.0
- Commands:
- /buydrugs
- /usedrugs
- /mydrugs
- /setdrugs (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 v2.0, thank you for downloading my script.
- */
- #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 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 v1.0");
- print("--------------------------------------\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- foreach(Player, p)
- {
- if(IsPlayerConnected(p))
- {
- SaveUserDrugStats(p);
- }
- }
- }
- public OnPlayerConnect(playerid)
- {
- new playerName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, playerName, MAX_PLAYER_NAME);
- new userfile[40];
- format(userfile, sizeof(userfile), USER_FILE, playerName);
- INI_ParseFile(userfile, "LoadDrugData_%s", .bExtra = true, .extra = playerid);
- 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,"Buy drugs","Enter the amount of grams you would like to buy:","Buy","Close"); }
- 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"); }
- else
- {
- new
- pcash = GetPlayerMoney(playerid),
- str[128],
- amount = strval(inputtext),
- cash = amount * 1000;
- 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);
- }
- }
- }
- 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,"Buy drugs","Enter the amount of grams you would like to buy:","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]");
- SendClientMessage(playerid, BLUE, "CHOICES: Cocaine (75HP), Weed (50HP), Heroine(25HP).");
- return 1;
- }
- new Float:PHealth;
- if(strcmp(drugname, "cocaine", true) == 0)
- {
- GetPlayerHealth(playerid, PHealth);
- if(PDrugs[playerid][pDrugs] >= 3)
- {
- SetPlayerWeather(playerid, -66);
- SetPlayerDrunkLevel(playerid, 10000);
- 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 injected cocaine into your veins.");
- SetTimer("IsHighTimer", 120000, false);
- if(PHealth <= 75)
- {
- GivePlayerHealth(playerid, 25);
- }
- else
- {
- SetPlayerHealth(playerid, 100);
- }
- }
- else
- {
- SendClientMessage(playerid, BLUE, "You need 3 grams of drugs to inject cocaine.");
- }
- }
- if(strcmp(drugname, "weed", true) == 0)
- {
- if(PDrugs[playerid][pDrugs] >= 2)
- {
- GetPlayerHealth(playerid, PHealth);
- SetPlayerWeather(playerid, -66);
- SetPlayerDrunkLevel(playerid, 10000);
- 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);
- SetTimer("IsHighTimer", 120000, false);
- if(PHealth <= 50)
- {
- GivePlayerHealth(playerid, 50);
- }
- else
- {
- SetPlayerHealth(playerid, 100);
- }
- }
- else
- {
- SendClientMessage(playerid, BLUE, "You need 2 grams of drugs to smoke weed.");
- }
- }
- if(strcmp(drugname, "heroine", true) == 0)
- {
- if(PDrugs[playerid][pDrugs] >= 1)
- {
- SetPlayerWeather(playerid, -66);
- SetPlayerDrunkLevel(playerid, 10000);
- 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);
- SetTimer("IsHighTimer", 120000, false);
- if(PHealth <= 25)
- {
- GivePlayerHealth(playerid, 75);
- }
- else
- {
- SetPlayerHealth(playerid, 100);
- }
- }
- else
- {
- SendClientMessage(playerid, BLUE, "You need 1 grams 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;
- }
- 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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement