this is already there.
pawn Код:
/* Zezombia
Alcohol Script */
#include <a_samp>
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) //Created by ****** (I think...)
forward CheckDrinkCount(playerid);
forward CheckPointCheck();
forward BloodAlcoholLevel();
new Text:Menu, Text:Menu2, Text:Menu3, Text:Menu4, Text:Menu5;
enum pInfo
{
InCheckpoint,
CheckSet,
DrinkingCount,
DrinkingType
}
new PlayerInfo[MAX_PLAYERS][pInfo];
//Check Point Positions (Bars)
new Float:CPP[11][3] =
{
{1955.3748, 1017.6965, 992.4688},
{-2653.1204, 1410.2084, 906.2734},
{499.9641, -20.6701, 1000.6797},
{498.4640, -76.0254, 998.7578},
{-224.7854, 1403.8903, 27.7734},
{498.4646, -76.0377, 998.7578},
{499.9659, -20.6998, 1000.6797},
{499.9659, -20.6629, 1000.6797},
{498.4817, -76.0398, 998.7578},
{1955.3748, 1017.6965, 992.4688},
{2199.3247, 1603.7456, 1005.0625}
};
public OnFilterScriptInit()
{
SetTimer("CheckPointCheck", 500, 1);
SetTimer("BloodAlcoholLevel", 1000, 1);
//Textdraw Beverage Menu
Menu = TextDrawCreate(50, 150, "~r~Beverage Menu~n~~n~~n~~n~~n~~n~");
TextDrawUseBox(Menu, 1);
TextDrawFont(Menu, 1);
TextDrawLetterSize(Menu, 0.30, 1.25);
TextDrawTextSize(Menu, 200, 200);
TextDrawBoxColor(Menu, 0x00000085);
TextDrawColor(Menu, 0xFFFFFFFF);
TextDrawSetOutline(Menu, 1);
TextDrawSetShadow(Menu, 0);
TextDrawSetProportional(Menu, 1);
Menu2 = TextDrawCreate(50, 166, "~w~1) Beer~n~2) Wine~n~3) Champagne~n~4) Brandy~n~5) Rum~n~6) Whiskey");
TextDrawFont(Menu2, 1);
TextDrawLetterSize(Menu2, 0.25, 1);
TextDrawTextSize(Menu2, 200, 200);
TextDrawColor(Menu2, 0xFFFFFFFF);
TextDrawSetOutline(Menu2, 1);
TextDrawSetShadow(Menu2, 0);
TextDrawSetProportional(Menu2, 1);
Menu3 = TextDrawCreate(123, 166, "~b~5%~n~15%~n~20%~n~30%~n~40%~n~55%");
TextDrawFont(Menu3, 1);
TextDrawLetterSize(Menu3, 0.25, 1);
TextDrawTextSize(Menu3, 200, 200);
TextDrawColor(Menu3, 0xFFFFFFFF);
TextDrawSetOutline(Menu3, 1);
TextDrawSetShadow(Menu3, 0);
TextDrawSetProportional(Menu3, 1);
Menu4 = TextDrawCreate(160, 166, "~y~$5~n~$10~n~$15~n~$20~n~$25~n~$30");
TextDrawFont(Menu4, 1);
TextDrawLetterSize(Menu4, 0.25, 1);
TextDrawTextSize(Menu4, 200, 200);
TextDrawColor(Menu4, 0xFFFFFFFF);
TextDrawSetOutline(Menu4, 1);
TextDrawSetShadow(Menu4, 0);
TextDrawSetProportional(Menu4, 1);
//Textdraw Blood Alcohol Level
Menu5 = TextDrawCreate(500, 420, "~w~Blood Alcohol Level: ~w~0.0%~n~~w~0.40% means death!");
TextDrawUseBox(Menu5, 1);
TextDrawFont(Menu5, 1);
TextDrawLetterSize(Menu5, 0.2, 0.75);
TextDrawTextSize(Menu5, 600, 200);
TextDrawBoxColor(Menu5, 0x00000085);
TextDrawColor(Menu5, 0xFFFFFFFF);
TextDrawSetOutline(Menu5, 1);
TextDrawSetShadow(Menu5, 0);
TextDrawSetProportional(Menu5, 1);
return 1;
}
public OnFilterScriptExit()
{
TextDrawDestroy(Menu);
TextDrawDestroy(Menu2);
TextDrawDestroy(Menu3);
TextDrawDestroy(Menu4);
TextDrawDestroy(Menu5);
}
public OnPlayerConnect(playerid)
{
PlayerInfo[playerid][InCheckpoint] = 0;
PlayerInfo[playerid][DrinkingCount] = 0;
PlayerInfo[playerid][DrinkingType] = 0;
return 1;
}
public OnPlayerSpawn(playerid)
{
PlayerInfo[playerid][InCheckpoint] = 0;
PlayerInfo[playerid][DrinkingCount] = 0;
PlayerInfo[playerid][DrinkingType] = 0;
return 1;
}
public OnPlayerText(playerid, text[])
{
if(PlayerInfo[playerid][InCheckpoint] == 0) return 1;
if(strval(text) == 1 && GetPlayerMoney(playerid) < 5) return PlayerPlaySound(playerid, 1055, 0, 0, 0);
if(strval(text) == 2 && GetPlayerMoney(playerid) < 10) return PlayerPlaySound(playerid, 1055, 0, 0, 0);
if(strval(text) == 3 && GetPlayerMoney(playerid) < 15) return PlayerPlaySound(playerid, 1055, 0, 0, 0);
if(strval(text) == 4 && GetPlayerMoney(playerid) < 20) return PlayerPlaySound(playerid, 1055, 0, 0, 0);
if(strval(text) == 5 && GetPlayerMoney(playerid) < 25) return PlayerPlaySound(playerid, 1055, 0, 0, 0);
if(strval(text) == 6 && GetPlayerMoney(playerid) < 30) return PlayerPlaySound(playerid, 1055, 0, 0, 0);
if(strval(text) == 1)
{
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_BEER);
PlayerInfo[playerid][DrinkingType] = strval(text);
PlayerInfo[playerid][DrinkingCount] = 3;
GivePlayerMoney(playerid, -10);
PlayerPlaySound(playerid, 1054, 0, 0, 0);
return 0;
}
else if(strval(text) > 1 && strval(text) < 7)
{
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_WINE);
PlayerInfo[playerid][DrinkingType] = strval(text);
PlayerInfo[playerid][DrinkingCount] = 3;
if(strval(text) == 2) GivePlayerMoney(playerid, -10);
if(strval(text) == 3) GivePlayerMoney(playerid, -15);
if(strval(text) == 4) GivePlayerMoney(playerid, -20);
if(strval(text) == 5) GivePlayerMoney(playerid, -25);
if(strval(text) == 6) GivePlayerMoney(playerid, -30);
PlayerPlaySound(playerid, 1054, 0, 0, 0);
return 0;
}
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
PlayerInfo[playerid][InCheckpoint] = 1;
if(PlayerInfo[playerid][CheckSet])
{
TextDrawShowForPlayer(playerid, Menu);
TextDrawShowForPlayer(playerid, Menu2);
TextDrawShowForPlayer(playerid, Menu3);
TextDrawShowForPlayer(playerid, Menu4);
}
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(PRESSED(KEY_FIRE) && PlayerInfo[playerid][DrinkingCount] != 0)
{
if(PlayerInfo[playerid][DrinkingType] == 1) SetPlayerDrunkLevel(playerid, GetPlayerDrunkLevel(playerid) + 1000);
if(PlayerInfo[playerid][DrinkingType] == 2) SetPlayerDrunkLevel(playerid, GetPlayerDrunkLevel(playerid) + 3000);
if(PlayerInfo[playerid][DrinkingType] == 3) SetPlayerDrunkLevel(playerid, GetPlayerDrunkLevel(playerid) + 4000);
if(PlayerInfo[playerid][DrinkingType] == 4) SetPlayerDrunkLevel(playerid, GetPlayerDrunkLevel(playerid) + 6000);
if(PlayerInfo[playerid][DrinkingType] == 5) SetPlayerDrunkLevel(playerid, GetPlayerDrunkLevel(playerid) + 8000);
if(PlayerInfo[playerid][DrinkingType] == 6) SetPlayerDrunkLevel(playerid, GetPlayerDrunkLevel(playerid) + 11000);
PlayerInfo[playerid][DrinkingCount]--;
SetTimerEx("CheckDrinkCount", 1000, 0, "i", playerid);
}
}
public OnPlayerLeaveCheckpoint(playerid)
{
PlayerInfo[playerid][InCheckpoint] = 0;
TextDrawHideForPlayer(playerid, Menu);
TextDrawHideForPlayer(playerid, Menu2);
TextDrawHideForPlayer(playerid, Menu3);
TextDrawHideForPlayer(playerid, Menu4);
return 1;
}
public OnPlayerDeath(playerid)
{
TextDrawHideForPlayer(playerid, Menu);
TextDrawHideForPlayer(playerid, Menu2);
TextDrawHideForPlayer(playerid, Menu3);
TextDrawHideForPlayer(playerid, Menu4);
KillTimer(CheckPointCheck);
KillTimer(BloodAlcoholLevel);
return 1;
}
public CheckDrinkCount(playerid)
{
if(PlayerInfo[playerid][DrinkingCount] <= 0)
{
PlayerInfo[playerid][DrinkingCount] = 0;
PlayerInfo[playerid][DrinkingType] = 0;
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
}
}
public CheckPointCheck()
{
for(new a = 0; a < MAX_PLAYERS; a++)
{
if(IsPlayerConnected(a) == 0) continue;
new Float:X, Float:Y, Float:Z, radius = 8, disable;
GetPlayerPos(a, X, Y, Z);
for(new b = 0; b < 11; b++)
{
if((X - radius < CPP[b][0] && X + radius > CPP[b][0]) && (Y - radius < CPP[b][1] && Y + radius > CPP[b][1]) && (Z - radius < CPP[b][2] && Z + radius > CPP[b][2]))
{
disable = 1;
if(PlayerInfo[a][CheckSet] == 1) continue;
PlayerInfo[a][CheckSet] = 1;
SetPlayerCheckpoint(a, CPP[b][0], CPP[b][1], CPP[b][2], 2);
}
}
if(disable == 0)
{
PlayerInfo[a][CheckSet] = 0;
DisablePlayerCheckpoint(a);
}
}
}
public BloodAlcoholLevel()
{
new Float:DrunkFloatValue;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(PlayerInfo[i][DrinkingType] == 7)
{
SetPlayerHealth(i, 0);
continue;
}
if(GetPlayerDrunkLevel(i) >= 50000)
{
ApplyAnimation(i,"PARACHUTE", "FALL_skyDive_DIE", 4.1, 0, 1, 1, 1, 1);
PlayerInfo[i][DrinkingType] = 7;
continue;
}
if(IsPlayerConnected(i) == 0) continue;
TextDrawHideForPlayer(i, Menu5);
if(GetPlayerDrunkLevel(i) > 0)
{
SetPlayerDrunkLevel(i, GetPlayerDrunkLevel(i) - 200);
DrunkFloatValue = GetPlayerDrunkLevel(i);
new string[128];
format(string, sizeof(string), "~w~Blood Alcohol Level: ~w~%0.2f~n~~w~0.40 means death!", DrunkFloatValue / 50000 / 2.5);
TextDrawSetString(Menu5, string);
TextDrawShowForPlayer(i, Menu5);
}
if(GetPlayerDrunkLevel(i) > 40000) if(random(20) == 0) ApplyAnimation(i, "PED", "WALK_DRUNK", 4.1, 1, 1, 1, 1, 1);
}
}