Guest User

Alcohol Script

a guest
Jul 6th, 2010
1,417
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.44 KB | None | 0 0
  1. /* Zezombia
  2.    Alcohol Script */
  3.  
  4. #include <a_samp>
  5.  
  6. #define PRESSED(%0) \
  7.     (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) //Created by Y_Less (I think...)
  8.  
  9. forward CheckDrinkCount(playerid);
  10. forward CheckPointCheck();
  11. forward BloodAlcoholLevel();
  12.  
  13. new Text:Menu, Text:Menu2, Text:Menu3, Text:Menu4, Text:Menu5;
  14.  
  15. enum pInfo
  16. {
  17.     InCheckpoint,
  18.     CheckSet,
  19.     DrinkingCount,
  20.     DrinkingType
  21. }
  22.  
  23. new PlayerInfo[MAX_PLAYERS][pInfo];
  24.  
  25. //Check Point Positions (Bars)
  26. new Float:CPP[11][3] =
  27. {
  28.     {1955.3748, 1017.6965, 992.4688},
  29.     {-2653.1204, 1410.2084, 906.2734},
  30.     {499.9641, -20.6701, 1000.6797},
  31.     {498.4640, -76.0254, 998.7578},
  32.     {-224.7854, 1403.8903, 27.7734},
  33.     {498.4646, -76.0377, 998.7578},
  34.     {499.9659, -20.6998, 1000.6797},
  35.     {499.9659, -20.6629, 1000.6797},
  36.     {498.4817, -76.0398, 998.7578},
  37.     {1955.3748, 1017.6965, 992.4688},
  38.     {2199.3247, 1603.7456, 1005.0625}
  39. };
  40.  
  41. public OnFilterScriptInit()
  42. {
  43.     SetTimer("CheckPointCheck", 500, 1);
  44.     SetTimer("BloodAlcoholLevel", 1000, 1);
  45.    
  46.     //Textdraw Beverage Menu
  47.     Menu = TextDrawCreate(50, 150, "~r~Beverage Menu~n~~n~~n~~n~~n~~n~");
  48.     TextDrawUseBox(Menu, 1);
  49.     TextDrawFont(Menu, 1);
  50.     TextDrawLetterSize(Menu, 0.30, 1.25);
  51.     TextDrawTextSize(Menu, 200, 200);
  52.     TextDrawBoxColor(Menu, 0x00000085);
  53.     TextDrawColor(Menu, 0xFFFFFFFF);
  54.     TextDrawSetOutline(Menu, 1);
  55.     TextDrawSetShadow(Menu, 0);
  56.     TextDrawSetProportional(Menu, 1);
  57.    
  58.     Menu2 = TextDrawCreate(50, 166, "~w~1) Beer~n~2) Wine~n~3) Champagne~n~4) Brandy~n~5) Rum~n~6) Whiskey");
  59.     TextDrawFont(Menu2, 1);
  60.     TextDrawLetterSize(Menu2, 0.25, 1);
  61.     TextDrawTextSize(Menu2, 200, 200);
  62.     TextDrawColor(Menu2, 0xFFFFFFFF);
  63.     TextDrawSetOutline(Menu2, 1);
  64.     TextDrawSetShadow(Menu2, 0);
  65.     TextDrawSetProportional(Menu2, 1);
  66.    
  67.     Menu3 = TextDrawCreate(123, 166, "~b~5%~n~15%~n~20%~n~30%~n~40%~n~55%");
  68.     TextDrawFont(Menu3, 1);
  69.     TextDrawLetterSize(Menu3, 0.25, 1);
  70.     TextDrawTextSize(Menu3, 200, 200);
  71.     TextDrawColor(Menu3, 0xFFFFFFFF);
  72.     TextDrawSetOutline(Menu3, 1);
  73.     TextDrawSetShadow(Menu3, 0);
  74.     TextDrawSetProportional(Menu3, 1);
  75.    
  76.     Menu4 = TextDrawCreate(160, 166, "~y~$5~n~$10~n~$15~n~$20~n~$25~n~$30");
  77.     TextDrawFont(Menu4, 1);
  78.     TextDrawLetterSize(Menu4, 0.25, 1);
  79.     TextDrawTextSize(Menu4, 200, 200);
  80.     TextDrawColor(Menu4, 0xFFFFFFFF);
  81.     TextDrawSetOutline(Menu4, 1);
  82.     TextDrawSetShadow(Menu4, 0);
  83.     TextDrawSetProportional(Menu4, 1);
  84.    
  85.     //Textdraw Blood Alcohol Level
  86.     Menu5 = TextDrawCreate(500, 420, "~w~Blood Alcohol Level: ~w~0.0%~n~~w~0.40% means death!");
  87.     TextDrawUseBox(Menu5, 1);
  88.     TextDrawFont(Menu5, 1);
  89.     TextDrawLetterSize(Menu5, 0.2, 0.75);
  90.     TextDrawTextSize(Menu5, 600, 200);
  91.     TextDrawBoxColor(Menu5, 0x00000085);
  92.     TextDrawColor(Menu5, 0xFFFFFFFF);
  93.     TextDrawSetOutline(Menu5, 1);
  94.     TextDrawSetShadow(Menu5, 0);
  95.     TextDrawSetProportional(Menu5, 1);
  96.     return 1;
  97. }
  98.  
  99. public OnFilterScriptExit()
  100. {
  101.     TextDrawDestroy(Menu);
  102.     TextDrawDestroy(Menu2);
  103.     TextDrawDestroy(Menu3);
  104.     TextDrawDestroy(Menu4);
  105.     TextDrawDestroy(Menu5);
  106. }
  107.  
  108. public OnPlayerConnect(playerid)
  109. {
  110.     PlayerInfo[playerid][InCheckpoint] = 0;
  111.     PlayerInfo[playerid][DrinkingCount] = 0;
  112.     PlayerInfo[playerid][DrinkingType] = 0;
  113.     return 1;
  114. }
  115.  
  116. public OnPlayerSpawn(playerid)
  117. {
  118.     PlayerInfo[playerid][InCheckpoint] = 0;
  119.     PlayerInfo[playerid][DrinkingCount] = 0;
  120.     PlayerInfo[playerid][DrinkingType] = 0;
  121.     return 1;
  122. }
  123.  
  124. public OnPlayerText(playerid, text[])
  125. {
  126.     if(PlayerInfo[playerid][InCheckpoint] == 0) return 1;
  127.    
  128.     if(strval(text) == 1 && GetPlayerMoney(playerid) < 5) return PlayerPlaySound(playerid, 1055, 0, 0, 0);
  129.     if(strval(text) == 2 && GetPlayerMoney(playerid) < 10) return PlayerPlaySound(playerid, 1055, 0, 0, 0);
  130.     if(strval(text) == 3 && GetPlayerMoney(playerid) < 15) return PlayerPlaySound(playerid, 1055, 0, 0, 0);
  131.     if(strval(text) == 4 && GetPlayerMoney(playerid) < 20) return PlayerPlaySound(playerid, 1055, 0, 0, 0);
  132.     if(strval(text) == 5 && GetPlayerMoney(playerid) < 25) return PlayerPlaySound(playerid, 1055, 0, 0, 0);
  133.     if(strval(text) == 6 && GetPlayerMoney(playerid) < 30) return PlayerPlaySound(playerid, 1055, 0, 0, 0);
  134.    
  135.     if(strval(text) == 1)
  136.     {
  137.         SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_BEER);
  138.         PlayerInfo[playerid][DrinkingType] = strval(text);
  139.         PlayerInfo[playerid][DrinkingCount] = 3;
  140.         GivePlayerMoney(playerid, -10);
  141.         PlayerPlaySound(playerid, 1054, 0, 0, 0);
  142.         return 0;
  143.     }
  144.     else if(strval(text) > 1 && strval(text) < 7)
  145.     {
  146.         SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_WINE);
  147.         PlayerInfo[playerid][DrinkingType] = strval(text);
  148.         PlayerInfo[playerid][DrinkingCount] = 3;
  149.         if(strval(text) == 2) GivePlayerMoney(playerid, -10);
  150.         if(strval(text) == 3) GivePlayerMoney(playerid, -15);
  151.         if(strval(text) == 4) GivePlayerMoney(playerid, -20);
  152.         if(strval(text) == 5) GivePlayerMoney(playerid, -25);
  153.         if(strval(text) == 6) GivePlayerMoney(playerid, -30);
  154.         PlayerPlaySound(playerid, 1054, 0, 0, 0);
  155.         return 0;
  156.     }
  157.     return 1;
  158. }
  159.  
  160. public OnPlayerEnterCheckpoint(playerid)
  161. {
  162.     PlayerInfo[playerid][InCheckpoint] = 1;
  163.    
  164.     if(PlayerInfo[playerid][CheckSet])
  165.     {
  166.         TextDrawShowForPlayer(playerid, Menu);
  167.         TextDrawShowForPlayer(playerid, Menu2);
  168.         TextDrawShowForPlayer(playerid, Menu3);
  169.         TextDrawShowForPlayer(playerid, Menu4);
  170.     }
  171.     return 1;
  172. }
  173.  
  174. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  175. {
  176.     if(PRESSED(KEY_FIRE) && PlayerInfo[playerid][DrinkingCount] != 0)
  177.     {
  178.         if(PlayerInfo[playerid][DrinkingType] == 1) SetPlayerDrunkLevel(playerid, GetPlayerDrunkLevel(playerid) + 1000);
  179.         if(PlayerInfo[playerid][DrinkingType] == 2) SetPlayerDrunkLevel(playerid, GetPlayerDrunkLevel(playerid) + 3000);
  180.         if(PlayerInfo[playerid][DrinkingType] == 3) SetPlayerDrunkLevel(playerid, GetPlayerDrunkLevel(playerid) + 4000);
  181.         if(PlayerInfo[playerid][DrinkingType] == 4) SetPlayerDrunkLevel(playerid, GetPlayerDrunkLevel(playerid) + 6000);
  182.         if(PlayerInfo[playerid][DrinkingType] == 5) SetPlayerDrunkLevel(playerid, GetPlayerDrunkLevel(playerid) + 8000);
  183.         if(PlayerInfo[playerid][DrinkingType] == 6) SetPlayerDrunkLevel(playerid, GetPlayerDrunkLevel(playerid) + 11000);
  184.  
  185.         PlayerInfo[playerid][DrinkingCount]--;
  186.         SetTimerEx("CheckDrinkCount", 1000, 0, "i", playerid);
  187.     }
  188. }
  189.  
  190. public OnPlayerLeaveCheckpoint(playerid)
  191. {
  192.     PlayerInfo[playerid][InCheckpoint] = 0;
  193.  
  194.     TextDrawHideForPlayer(playerid, Menu);
  195.     TextDrawHideForPlayer(playerid, Menu2);
  196.     TextDrawHideForPlayer(playerid, Menu3);
  197.     TextDrawHideForPlayer(playerid, Menu4);
  198.     return 1;
  199. }
  200.  
  201. public OnPlayerDeath(playerid)
  202. {
  203.     TextDrawHideForPlayer(playerid, Menu);
  204.     TextDrawHideForPlayer(playerid, Menu2);
  205.     TextDrawHideForPlayer(playerid, Menu3);
  206.     TextDrawHideForPlayer(playerid, Menu4);
  207.     return 1;
  208. }
  209.  
  210. public CheckDrinkCount(playerid)
  211. {
  212.     if(PlayerInfo[playerid][DrinkingCount] <= 0)
  213.     {
  214.         PlayerInfo[playerid][DrinkingCount] = 0;
  215.         PlayerInfo[playerid][DrinkingType] = 0;
  216.  
  217.         SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
  218.     }
  219. }
  220.  
  221. public CheckPointCheck()
  222. {
  223.     for(new a = 0; a < MAX_PLAYERS; a++)
  224.     {
  225.         if(IsPlayerConnected(a) == 0) continue;
  226.  
  227.         new Float:X, Float:Y, Float:Z, radius = 8, disable;
  228.         GetPlayerPos(a, X, Y, Z);
  229.        
  230.         for(new b = 0; b < 11; b++)
  231.         {
  232.             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]))
  233.             {
  234.                 disable = 1;
  235.            
  236.                 if(PlayerInfo[a][CheckSet] == 1) continue;
  237.                 PlayerInfo[a][CheckSet] = 1;
  238.  
  239.                 SetPlayerCheckpoint(a, CPP[b][0], CPP[b][1], CPP[b][2], 2);
  240.             }
  241.         }
  242.  
  243.         if(disable == 0)
  244.         {
  245.             PlayerInfo[a][CheckSet] = 0;
  246.             DisablePlayerCheckpoint(a);
  247.         }
  248.     }
  249. }
  250.  
  251. public BloodAlcoholLevel()
  252. {
  253.     new Float:DrunkFloatValue;
  254.     for(new i = 0; i < MAX_PLAYERS; i++)
  255.     {
  256.         if(PlayerInfo[i][DrinkingType] == 7)
  257.         {
  258.             SetPlayerHealth(i, 0);
  259.             continue;
  260.         }
  261.    
  262.         if(GetPlayerDrunkLevel(i) >= 50000)
  263.         {
  264.             ApplyAnimation(i,"PARACHUTE", "FALL_skyDive_DIE", 4.1, 0, 1, 1, 1, 1);
  265.             PlayerInfo[i][DrinkingType] = 7;
  266.             continue;
  267.         }
  268.  
  269.         if(IsPlayerConnected(i) == 0) continue;
  270.         TextDrawHideForPlayer(i, Menu5);
  271.        
  272.         if(GetPlayerDrunkLevel(i) > 0)
  273.         {
  274.             SetPlayerDrunkLevel(i, GetPlayerDrunkLevel(i) - 200);
  275.             DrunkFloatValue = GetPlayerDrunkLevel(i);
  276.        
  277.             new string[128];
  278.             format(string, sizeof(string), "~w~Blood Alcohol Level: ~w~%0.2f~n~~w~0.40 means death!", DrunkFloatValue / 50000 / 2.5);
  279.             TextDrawSetString(Menu5, string);
  280.             TextDrawShowForPlayer(i, Menu5);
  281.         }
  282.  
  283.         if(GetPlayerDrunkLevel(i) > 40000) if(random(20) == 0) ApplyAnimation(i, "PED", "WALK_DRUNK", 4.1, 1, 1, 1, 1, 1);
  284.     }
  285. }
Advertisement
Add Comment
Please, Sign In to add comment