Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ------------------- >= xPlosions =< -------------------
- =================== (Version: 1.0) ===================
- ------------------- => Scripted by "inv3rse" a.k.a "Inverse". -------------------
- */
- #define FILTERSCRIPT
- #include <a_samp>
- #include <zcmd>
- #include <YSI\y_ini>
- #define SMALL_BOMB_PRICE 0
- #define NORMAL_BOMB_PRICE 0
- #define HEAVY_BOMB_PRICE 0
- #define xPlosivesPath "xPlosives/%s.ini"
- #define DIALOG_BUYBOMB 98742
- #define DIALOG_PLANTBOMB 98743
- #define DIALOG_MSGBOMB 98744
- #define SMALL_BOMB 1
- #define NORMAL_BOMB 2
- #define HEAVY_BOMB 3
- #define ShopX 0.0
- #define ShopY 0.0
- #define ShopZ 0.0
- new NOofSmallBombs[MAX_PLAYERS];
- new NOofNormalBombs[MAX_PLAYERS];
- new NOofHeavyBombs[MAX_PLAYERS];
- new PlayerHasPlantedBomb[MAX_PLAYERS];
- new BombID[MAX_PLAYERS];
- new Float:BombX[MAX_PLAYERS];
- new Float:BombY[MAX_PLAYERS];
- new Float:BombZ[MAX_PLAYERS];
- new BombTYPE[MAX_PLAYERS];
- // ------------------------ Custom Functions ------------------------------------------ //
- PlantBombForPlayer(playerid, BOMBTYPE)
- {
- new Float:X, Float:Y, Float:Z, ObjID;
- switch(BOMBTYPE)
- {
- case SMALL_BOMB: ObjID = 3798;
- case NORMAL_BOMB: ObjID = 964;
- case HEAVY_BOMB: ObjID = 2040;
- }
- GetPlayerPos(playerid, X, Y, Z);
- BombX[playerid] = X + 2;
- BombY[playerid] = Y + 2;
- BombZ[playerid] = Z;
- BombTYPE[playerid] = BOMBTYPE;
- BombID[playerid] = CreateObject(ObjID, BombX[playerid], BombY[playerid], BombZ[playerid], 0.0, 0.0, 0.0, 400.0);
- PlayerHasPlantedBomb[playerid] = true;
- return true;
- }
- forward loadbombs_user(playerid, name[], value[]);
- public loadbombs_user(playerid, name[], value[])
- {
- INI_Int("NOofSmallBombs", NOofSmallBombs[playerid]);
- INI_Int("NOofNormalBombs", NOofNormalBombs[playerid]);
- INI_Int("NOofHeavyBombs", NOofHeavyBombs[playerid]);
- return 1;
- }
- LoadBombs(playerid)
- {
- new name[MAX_PLAYER_NAME + 1], fname[36];
- GetPlayerName(playerid, name, sizeof(name));
- format(fname, sizeof(fname), xPlosivesPath, name);
- switch(fexist(fname))
- {
- case true:
- {
- INI_ParseFile(fname, "loadbombs_%s", .bExtra = true, .extra = playerid);
- }
- case false:
- {
- new INI:file = INI_Open(fname);
- INI_WriteInt(file, "NOofSmallBombs", 0);
- INI_WriteInt(file, "NOofNormalBombs", 0);
- INI_WriteInt(file, "NOofHeavyBombs", 0);
- INI_Close(file);
- }
- }
- return true;
- }
- SaveBombs(playerid)
- {
- new name[MAX_PLAYER_NAME + 1], fname[36], INI:file;
- GetPlayerName(playerid, name, sizeof(name));
- format(fname, sizeof(fname), xPlosivesPath, name);
- file = INI_Open(fname);
- INI_WriteInt(file, "NOofSmallBombs", NOofSmallBombs[playerid]);
- INI_WriteInt(file, "NOofNormalBombs", NOofNormalBombs[playerid]);
- INI_WriteInt(file, "NOofHeavyBombs", NOofHeavyBombs[playerid]);
- INI_Close(file);
- return true;
- }
- // --------------------------- Callbacks ---------------------------------------- //
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" |xPlosives by inv3rse loaded!| ");
- print("--------------------------------------\n");
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- LoadBombs(playerid);
- return true;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- SaveBombs(playerid);
- PlayerHasPlantedBomb[playerid] = false;
- return true;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case DIALOG_PLANTBOMB:
- {
- if(PlayerHasPlantedBomb[playerid]) return ShowPlayerDialog(playerid, DIALOG_MSGBOMB, DIALOG_STYLE_MSGBOX, "{FFA500}Bombs Inventory", "\n{FFFFFF}You have already planted a bomb.\nUse {FFA500}/detonate {FFFFFF}to detonate it first.\n", "", "Cancel");
- switch(listitem)
- {
- case 0:
- {
- if(NOofSmallBombs[playerid] > 0)
- {
- NOofSmallBombs[playerid] -= 1;
- PlantBombForPlayer(playerid, SMALL_BOMB);
- }
- else ShowPlayerDialog(playerid, DIALOG_MSGBOMB, DIALOG_STYLE_MSGBOX, "{FFA500}Bombs Inventory", "\n{FFFFFF}You have no {FFFF00}Small Bombs.\n{FFFFFF}Select {FFA500}Buy to buy one.\n", "{FFA500}Buy!", "Cancel");
- }
- case 1:
- {
- if(NOofNormalBombs[playerid] > 0)
- {
- NOofNormalBombs[playerid] -= 1;
- PlantBombForPlayer(playerid, NORMAL_BOMB);
- }
- else ShowPlayerDialog(playerid, DIALOG_MSGBOMB, DIALOG_STYLE_MSGBOX, "{FFA500}Bombs Inventory", "\n{FFFFFF}You have no {008000}Normal Bombs.\n{FFFFFF}Select {FFA500}Buy to buy one.\n", "{FFA500}Buy!", "Cancel");
- }
- case 2:
- {
- if(NOofHeavyBombs[playerid] > 0)
- {
- NOofHeavyBombs[playerid] -= 1;
- PlantBombForPlayer(playerid, HEAVY_BOMB);
- }
- else ShowPlayerDialog(playerid, DIALOG_MSGBOMB, DIALOG_STYLE_MSGBOX, "{FFA500}Bombs Inventory", "\n{FFFFFF}You have no {42C0FB}Heavy Bombs.\n{FFFFFF}Select {FFA500}Buy to buy one.\n", "{FFA500}Buy!", "Cancel");
- }
- }
- return true;
- }
- case DIALOG_BUYBOMB:
- {
- switch(listitem)
- {
- case 0:
- {
- if(GetPlayerMoney(playerid) >= SMALL_BOMB_PRICE)
- {
- GivePlayerMoney(playerid, - (SMALL_BOMB_PRICE));
- NOofSmallBombs[playerid] += 1;
- PlayerPlaySound(playerid, 4203, 0, 0, 0);
- ShowPlayerDialog(playerid, DIALOG_MSGBOMB, DIALOG_STYLE_MSGBOX, "{FFA500}Bomb Shop", "\n{FFFFFF}You have successfully purchased a {FFFF00}Small Bomb.\n\n{FFA500}COMMANDS\n\n\n{FF0000}/plantbomb - {FFFFFF}To plant the bomb.\n{FF0000}/detonate - {FFFFFF}To explode the bomb.\n", "{FFA500}Back!", "Cancel");
- }
- else ShowPlayerDialog(playerid, DIALOG_MSGBOMB, DIALOG_STYLE_MSGBOX, "{FFA500}Bomb Shop", "\n{FFFFFF}You don't have enough money to purchase a {FFFF00}Small Bomb.\n", "{FFA500}Back!", "Cancel");
- }
- case 1:
- {
- if(GetPlayerMoney(playerid) >= NORMAL_BOMB_PRICE)
- {
- GivePlayerMoney(playerid, - (NORMAL_BOMB_PRICE));
- NOofNormalBombs[playerid] += 1;
- PlayerPlaySound(playerid, 4203, 0, 0, 0);
- ShowPlayerDialog(playerid, DIALOG_MSGBOMB, DIALOG_STYLE_MSGBOX, "{FFA500}Bomb Shop", "\n{FFFFFF}You have successfully purchased a {008000}Normal Bomb.\n\n{FFA500}COMMANDS\n\n\n{FF0000}/plantbomb - {FFFFFF}To plant the bomb.\n{FF0000}/detonate - {FFFFFF}To explode the bomb.\n", "{FFA500}Back!", "Cancel");
- }
- else ShowPlayerDialog(playerid, DIALOG_MSGBOMB, DIALOG_STYLE_MSGBOX, "{FFA500}Bomb Shop", "\n{FFFFFF}You don't have enough money to purchase a {008000}Normal Bomb.\n", "{FFA500}Back!", "Cancel");
- }
- case 2:
- {
- if(GetPlayerMoney(playerid) >= HEAVY_BOMB_PRICE)
- {
- GivePlayerMoney(playerid, - (HEAVY_BOMB_PRICE));
- NOofHeavyBombs[playerid] += 1;
- PlayerPlaySound(playerid, 4203, 0, 0, 0);
- ShowPlayerDialog(playerid, DIALOG_MSGBOMB, DIALOG_STYLE_MSGBOX, "{FFA500}Bomb Shop", "\n{FFFFFF}You have successfully purchased a {42C0FB}Heavy Bomb.\n\n{FFA500}COMMANDS\n\n\n{FF0000}/plantbomb - {FFFFFF}To plant the bomb.\n{FF0000}/detonate - {FFFFFF}To explode the bomb.\n", "{FFA500}Back!", "Cancel");
- }
- else ShowPlayerDialog(playerid, DIALOG_MSGBOMB, DIALOG_STYLE_MSGBOX, "{FFA500}Bomb Shop", "\n{FFFFFF}You don't have enough money to purchase a {42C0FB}Heavy Bomb.\n", "{FFA500}Back!", "Cancel");
- }
- }
- return true;
- }
- case DIALOG_MSGBOMB:
- {
- if(response)
- {
- new str[200];
- format(str, sizeof(str), "{FFFF00}Small Bomb {FFFFFF}(Price: {008000}$%i{FFFFFF})\n{008000}Normal Bomb {FFFFFF}(Price: {008000}$%i{FFFFFF})\n{42C0FB}Heavy Bomb {FFFFFF}(Price: {008000}$%i{FFFFFF})", SMALL_BOMB_PRICE, NORMAL_BOMB_PRICE, HEAVY_BOMB_PRICE);
- ShowPlayerDialog(playerid, DIALOG_BUYBOMB, DIALOG_STYLE_LIST, "{FFA500}Bomb Shop", str, "{FFA500}Buy!", "{FFFFFF}Cancel");
- PlayerPlaySound(playerid, 4203, 0, 0, 0);
- }
- return true;
- }
- }
- return false;
- }
- // ------------------------- Commands -------------------------------------------- //
- CMD:plantbomb(playerid, params[])
- {
- new str[200];
- format(str, sizeof(str), "{FFFF00}Small Bomb {FFFFFF}(Quantity: {008080}%i{FFFFFF})\n{008000}Normal Bomb {FFFFFF}(Quantity: {008080}%i{FFFFFF})\n{42C0FB}Heavy Bomb {FFFFFF}(Quantity: {008080}%i{FFFFFF})", NOofSmallBombs[playerid], NOofNormalBombs[playerid], NOofHeavyBombs[playerid]);
- ShowPlayerDialog(playerid, DIALOG_PLANTBOMB, DIALOG_STYLE_LIST, "{FFA500}Bombs Inventory", str, "{FFA500}Plant!", "{FFFFFF}Cancel");
- PlayerPlaySound(playerid, 4203, 0, 0, 0);
- return true;
- }
- CMD:detonate(playerid, params[])
- {
- if(!PlayerHasPlantedBomb[playerid]) return SendClientMessage(playerid, -1, "{FFA500}ERROR: {FFFFFF}You haven't planted any bomb!");
- switch(BombTYPE[playerid])
- {
- case SMALL_BOMB: CreateExplosion(BombX[playerid], BombY[playerid], BombZ[playerid], 11, 10.0);
- case NORMAL_BOMB: CreateExplosion(BombX[playerid], BombY[playerid], BombZ[playerid], 9, 20.0);
- case HEAVY_BOMB: CreateExplosion(BombX[playerid], BombY[playerid], BombZ[playerid], 2, 30.0);
- }
- DestroyObject(BombID[playerid]);
- GameTextForPlayer(playerid, "~r~~h~Bomb detonated!", 3000, 3);
- PlayerPlaySound(playerid, 4203, 0, 0, 0);
- PlayerHasPlantedBomb[playerid] = false;
- return true;
- }
- CMD:buybomb(playerid, params[])
- {
- if(!IsPlayerInRangeOfPoint(playerid, 3.0, ShopX, ShopY, ShopZ)) return SendClientMessage(playerid, -1, "{FFA500}ERROR: {FFFFFF}You are not near a bomb shop!");
- new str[200];
- format(str, sizeof(str), "{FFFF00}Small Bomb {FFFFFF}(Price: {008000}$%i{FFFFFF})\n{008000}Normal Bomb {FFFFFF}(Price: {008000}$%i{FFFFFF})\n{42C0FB}Heavy Bomb {FFFFFF}(Price: {008000}$%i{FFFFFF})", SMALL_BOMB_PRICE, NORMAL_BOMB_PRICE, HEAVY_BOMB_PRICE);
- ShowPlayerDialog(playerid, DIALOG_BUYBOMB, DIALOG_STYLE_LIST, "{FFA500}Bomb Shop", str, "{FFA500}Buy!", "{FFFFFF}Cancel");
- PlayerPlaySound(playerid, 4203, 0, 0, 0);
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement