toribio

toribio

Dec 13th, 2009
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.28 KB | None | 0 0
  1. /**
  2.  *  Progress Bar 1.1.0.0
  3.  *  Copyright 2007-2010 Infernus' Group,
  4.  *  Flávio Toribio (flavio_toibio@hotmail.com)
  5.  */
  6.  
  7. #if defined _progress_included
  8.     #endinput
  9. #endif
  10.  
  11. #if !defined _samp_included
  12.     #tryinclude <a_samp>
  13.     #if !defined _samp_included
  14.         #error could not locate a_samp.inc file, please check your server includes
  15.     #endif
  16. #endif
  17.  
  18. #tryinclude <foreach>
  19.  
  20. #define _progress_included
  21. #define _progress_version   0x1100
  22.  
  23. #define MAX_BARS                (MAX_TEXT_DRAWS / 3)
  24. #define INVALID_BAR_ID          (Bar:-1)
  25. #define pb_percent(%1,%2,%3,%4) ((%1 - 6.0) + ((((%1 + 6.0 + %2 - 2.0) - %1) / %3) * %4))
  26. //pb_percent(x, width, max, value)
  27.  
  28. /* Pawno/Infernus Pawn Editor function list
  29. native Bar:CreateProgressBar(Float:x, Float:y, Float:width=55.5, Float:height=3.2, color, Float:max=100.0);
  30. native DestroyProgressBar(Bar:barid);
  31. native ShowProgressBarForPlayer(playerid, Bar:barid);
  32. native HideProgressBarForPlayer(playerid, Bar:barid);
  33. native ShowProgressBarForAll(Bar:barid);
  34. native HideProgressBarForAll(Bar:barid);
  35. native SetProgressBarValue(Bar:barid, Float:value);
  36. native UpdateProgressBar(Bar:barid, playerid=INVALID_PLAYER_ID);
  37. */
  38.  
  39. enum e_bar
  40. {
  41.     Float:pb_x,
  42.     Float:pb_y,
  43.     Float:pb_w,
  44.     Float:pb_h,
  45.     Float:pb_m,
  46.     Text:pb_t1,
  47.     Text:pb_t2,
  48.     Text:pb_t3,
  49.     pb_color,
  50.     bool:pb_created
  51. }
  52.  
  53. static Bars[MAX_BARS][e_bar];
  54.  
  55. stock Bar:CreateProgressBar(Float:x, Float:y, Float:width=55.5, Float:height=3.2, color, Float:max=100.0)
  56. {
  57.     new
  58.         barid;
  59.  
  60.     for(barid = 0; barid < sizeof Bars; ++barid)
  61.         if(!Bars[barid][pb_created]) break;
  62.  
  63.     if(Bars[barid][pb_created])
  64.         return INVALID_BAR_ID;
  65.  
  66.     new Text:in_t = Bars[barid][pb_t1] = TextDrawCreate(x, y, "_");
  67.     TextDrawUseBox          (in_t, 1);
  68.     TextDrawTextSize        (in_t, x + width, 0.0);
  69.     TextDrawLetterSize      (in_t, 1.0, height / 10);
  70.     TextDrawBoxColor        (in_t, 0x000000FF);
  71.  
  72.     in_t = Bars[barid][pb_t2] = TextDrawCreate(x + 1.2, y + 2.15, "_");
  73.     TextDrawUseBox          (in_t, 1);
  74.     TextDrawTextSize        (in_t, x + width - 2.0, 0.0);
  75.     TextDrawLetterSize      (in_t, 1.0, height / 10 - 0.35);
  76.     TextDrawBoxColor        (in_t, (color & 0xFFFFFF00) | 0x66);
  77.  
  78.     in_t = Bars[barid][pb_t3] = TextDrawCreate(x + 1.2, y + 2.15, "_");
  79.     TextDrawTextSize        (in_t, pb_percent(x, width, max, 1.0), 0.0);
  80.     TextDrawLetterSize      (in_t, 1.0, height / 10 - 0.35);
  81.     TextDrawBoxColor        (in_t, (color & 0xFFFFFF00) | 0xFF);
  82.  
  83.     Bars[barid][pb_x] = x;
  84.     Bars[barid][pb_y] = y;
  85.     Bars[barid][pb_w] = width;
  86.     Bars[barid][pb_h] = height;
  87.     Bars[barid][pb_m] = max;
  88.     Bars[barid][pb_color] = color;
  89.     Bars[barid][pb_created] = true;
  90.     return Bar:barid;
  91. }
  92.  
  93. stock DestroyProgressBar(Bar:barid)
  94. {
  95.     if(barid != INVALID_BAR_ID && Bar:-1 < barid < Bar:MAX_BARS)
  96.     {
  97.         if(!Bars[_:barid][pb_created])
  98.             return 0;
  99.  
  100.         TextDrawDestroy(Bars[_:barid][pb_t1]);
  101.         TextDrawDestroy(Bars[_:barid][pb_t2]);
  102.         TextDrawDestroy(Bars[_:barid][pb_t3]);
  103.  
  104.         Bars[_:barid][pb_t1] = Text:0;      
  105.         Bars[_:barid][pb_t2] = Text:0;      
  106.         Bars[_:barid][pb_t3] = Text:0;
  107.         Bars[_:barid][pb_x] = 0.0;
  108.         Bars[_:barid][pb_y] = 0.0;
  109.         Bars[_:barid][pb_w] = 0.0;
  110.         Bars[_:barid][pb_h] = 0.0;
  111.         Bars[_:barid][pb_m] = 0.0;
  112.         Bars[_:barid][pb_color] = 0;
  113.         Bars[_:barid][pb_created] = false;
  114.         return 1;
  115.     }
  116.     return 0;
  117. }
  118.  
  119. stock ShowProgressBarForPlayer(playerid, Bar:barid)
  120. {
  121.     if(IsPlayerConnected(playerid) && barid != INVALID_BAR_ID && Bar:-1 < barid < Bar:MAX_BARS)
  122.     {
  123.         if(!Bars[_:barid][pb_created])
  124.             return 0;
  125.  
  126.         TextDrawShowForPlayer(playerid, Bars[_:barid][pb_t1]);
  127.         TextDrawShowForPlayer(playerid, Bars[_:barid][pb_t2]);
  128.         TextDrawShowForPlayer(playerid, Bars[_:barid][pb_t3]);
  129.         return 1;
  130.     }
  131.     return 0;
  132. }
  133.  
  134. stock HideProgressBarForPlayer(playerid, Bar:barid)
  135. {
  136.     if(IsPlayerConnected(playerid) && barid != INVALID_BAR_ID && Bar:-1 < barid < Bar:MAX_BARS)
  137.     {
  138.         if(!Bars[_:barid][pb_created])
  139.             return 0;
  140.  
  141.         TextDrawHideForPlayer(playerid, Bars[_:barid][pb_t1]);
  142.         TextDrawHideForPlayer(playerid, Bars[_:barid][pb_t2]);
  143.         TextDrawHideForPlayer(playerid, Bars[_:barid][pb_t3]);
  144.         return 1;
  145.     }
  146.     return 0;
  147. }
  148.  
  149. stock SetProgressBarValue(Bar:barid, Float:value)
  150. {
  151.     if(barid == INVALID_BAR_ID || Bar:MAX_BARS < barid < Bar:-1)
  152.         return 0;
  153.  
  154.     if(Bars[_:barid][pb_created])
  155.     {
  156.         value = (value < 0.0) ? (0.0) : (value > Bars[_:barid][pb_m]) ? (Bars[_:barid][pb_m]) : (value);
  157.  
  158.         TextDrawUseBox(Bars[_:barid][pb_t3], value > 0.0);
  159.  
  160.         TextDrawTextSize(Bars[_:barid][pb_t3],
  161.             pb_percent(Bars[_:barid][pb_x], Bars[_:barid][pb_w], Bars[_:barid][pb_m], value), 0.0);
  162.        
  163.         return 1;
  164.     }
  165.     return 0;
  166. }
  167.  
  168. stock ShowProgressBarForAll(Bar:barid)
  169. {
  170.     #if defined _foreach_included
  171.     foreach(Player, i)
  172.     #else
  173.     for(new i = 0; i < MAX_PLAYERS; ++i)
  174.         if(IsPlayerConnected(i))
  175.     #endif
  176.     #if defined IsPlayerNPC
  177.         if(!IsPlayerNPC(i))
  178.     #endif
  179.     {
  180.         ShowProgressBarForPlayer(i, barid);
  181.     }
  182.     return 1;
  183. }
  184.  
  185. stock HideProgressBarForAll(Bar:barid)
  186. {
  187.     #if defined _foreach_included
  188.     foreach(Player, i)
  189.     #else
  190.     for(new i = 0; i < MAX_PLAYERS; ++i)
  191.         if(IsPlayerConnected(i))
  192.     #endif
  193.     #if defined IsPlayerNPC
  194.         if(!IsPlayerNPC(i))
  195.     #endif
  196.     {
  197.         HideProgressBarForPlayer(i, barid);
  198.     }
  199.     return 1;
  200. }
  201.  
  202. stock UpdateProgressBar(Bar:barid, playerid=INVALID_PLAYER_ID)
  203. {
  204.     if(playerid == INVALID_PLAYER_ID)
  205.     {
  206.         return ShowProgressBarForAll(barid);
  207.     } else {
  208.         return ShowProgressBarForPlayer(playerid, barid);
  209.     }
  210. }
Add Comment
Please, Sign In to add comment