Advertisement
GammixSAMP

tdfader.inc - By Gammix

May 14th, 2015
347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.76 KB | None | 0 0
  1. /*
  2. Player Textdraw Fader Include (tdfader.inc)
  3. * Very simple and unique include to fade player textdraws, can be used as a screen fader too!
  4.  
  5. Author: (creator)
  6. * Gammix
  7.  
  8. (c) Copyright 2015
  9. * This file is provided as is (no warranties).
  10. */
  11. /*
  12. FUNCTIONS:
  13. native PlayerTextDrawFade(playerid, PlayerText:text, color, updatetick = 50, displaytime = 3000);
  14. native PlayerTextDrawUnfade(playerid, PlayerText:text);
  15. native IsPlayerTextDrawFading(playerid, PlayerText:text);
  16.  
  17. CALLBACKS:
  18. public OnPlayerTextDrawFadeComplete(playerid, PlayerText:text)
  19. */
  20.  
  21. //#include "GTIME\g_colors"
  22.  
  23. #if ! defined COLOR_SetTransparency
  24. stock static COLOR_SetTransparency(color, alpha = 0xFF)
  25. {
  26. static newcolor;
  27.  
  28. alpha = clamp(alpha, 0x00, 0xFF);
  29.  
  30. newcolor = (color & ~0xFF) | alpha;
  31. return newcolor;
  32. }
  33. #endif
  34.  
  35. #define MAX_FADES_AT_A_TIME 5//more tha value, more bigger the array, mor is the file size and more memory and maybe lag!
  36. //and after all i am using 3D arrays which normally increase the AMX size as well!
  37.  
  38. #define FADE_UPDATE_VALUE 15//this is the value been set for td color on every timer update. THe update rate of color!
  39.  
  40. enum TextDrawFadeEnum
  41. {
  42. PlayerText:fade_td,
  43. fade_color,
  44. fade_timer,
  45. fade_showtime,
  46. fade_updatetime
  47. }
  48. static gTextDrawFade[MAX_PLAYERS][MAX_FADES_AT_A_TIME][TextDrawFadeEnum];
  49.  
  50. public OnPlayerConnect(playerid)
  51. {
  52. for(new i; i < MAX_FADES_AT_A_TIME; i++)
  53. {
  54. gTextDrawFade[playerid][i][fade_td] = PlayerText:INVALID_TEXT_DRAW;
  55. gTextDrawFade[playerid][i][fade_color] = -1;
  56. gTextDrawFade[playerid][i][fade_timer] = -1;
  57. gTextDrawFade[playerid][i][fade_showtime] = 3000;
  58. gTextDrawFade[playerid][i][fade_updatetime] = 50;
  59. }
  60. return CallLocalFunction("FADER_OnPlayerConnect", "i", playerid);
  61. }
  62. #if defined _ALS_OnPlayerConnect
  63. #undef OnPlayerConnect
  64. #else
  65. #define _ALS_OnPlayerConnect
  66. #endif
  67. #define OnPlayerConnect FADER_OnPlayerConnect
  68. forward FADER_OnPlayerConnect(playerid);
  69.  
  70. public OnPlayerDisconnect(playerid, reason)
  71. {
  72. for(new i; i < MAX_FADES_AT_A_TIME; i++)
  73. {
  74. KillTimer(gTextDrawFade[playerid][i][fade_timer]);
  75. gTextDrawFade[playerid][i][fade_td] = PlayerText:INVALID_TEXT_DRAW;
  76. gTextDrawFade[playerid][i][fade_color] = -1;
  77. gTextDrawFade[playerid][i][fade_timer] = -1;
  78. gTextDrawFade[playerid][i][fade_showtime] = 3000;
  79. gTextDrawFade[playerid][i][fade_updatetime] = 50;
  80. }
  81. return CallLocalFunction("FADER_OnPlayerDisconnect", "i", playerid);
  82. }
  83. #if defined _ALS_OnPlayerDisconnect
  84. #undef OnPlayerDisconnect
  85. #else
  86. #define _ALS_OnPlayerDisconnect
  87. #endif
  88. #define OnPlayerDisconnect FADER_OnPlayerDisconnect
  89. forward FADER_OnPlayerDisconnect(playerid, reason);
  90.  
  91. stock PlayerTextDrawFade(playerid, PlayerText:text, color, updatetick = 30, displaytime = 1500)
  92. {
  93. for(new i; i < MAX_FADES_AT_A_TIME; i++)
  94. {
  95. if(IsPlayerTextDrawFading(playerid, text)) PlayerTextDrawUnfade(playerid, text);
  96.  
  97. gTextDrawFade[playerid][i][fade_td] = text;
  98. gTextDrawFade[playerid][i][fade_showtime] = displaytime;
  99. gTextDrawFade[playerid][i][fade_updatetime] = updatetick;
  100. gTextDrawFade[playerid][i][fade_color] = color;
  101.  
  102. PlayerTextDrawColor(playerid, text, COLOR_SetTransparency(color, 0));
  103. PlayerTextDrawShow(playerid, text);
  104.  
  105. if(gTextDrawFade[playerid][i][fade_timer] != -1) KillTimer(gTextDrawFade[playerid][i][fade_timer]);
  106. gTextDrawFade[playerid][i][fade_timer] = SetTimerEx("FADER_OnPlayerTextDrawFade", updatetick, false, "iiii", playerid, i, 0, 0);
  107. return i;
  108. }
  109. return -1;
  110. }
  111.  
  112. stock PlayerTextDrawUnfade(playerid, PlayerText:text)
  113. {
  114. for(new i; i < MAX_FADES_AT_A_TIME; i++)
  115. {
  116. if(gTextDrawFade[playerid][i][fade_td] == text)
  117. {
  118. KillTimer(gTextDrawFade[playerid][i][fade_timer]);
  119.  
  120. PlayerTextDrawColor(playerid, text, gTextDrawFade[playerid][i][fade_color]);
  121. PlayerTextDrawShow(playerid, text);
  122.  
  123. gTextDrawFade[playerid][i][fade_td] = PlayerText:INVALID_TEXT_DRAW;
  124. gTextDrawFade[playerid][i][fade_color] = -1;
  125. gTextDrawFade[playerid][i][fade_timer] = -1;
  126. gTextDrawFade[playerid][i][fade_showtime] = 3000;
  127. gTextDrawFade[playerid][i][fade_updatetime] = 50;
  128. return true;
  129. }
  130. }
  131. return false;
  132. }
  133.  
  134. stock IsPlayerTextDrawFading(playerid, PlayerText:text)
  135. {
  136. for(new i; i < MAX_FADES_AT_A_TIME; i++)
  137. {
  138. if(gTextDrawFade[playerid][i][fade_td] == text) return true;
  139. }
  140. return false;
  141. }
  142.  
  143. forward FADER_OnPlayerTextDrawFade(playerid, slot, alpha, type);
  144. public FADER_OnPlayerTextDrawFade(playerid, slot, alpha, type)
  145. {
  146. switch(type)
  147. {
  148. case 0:
  149. {
  150. alpha += FADE_UPDATE_VALUE;
  151. PlayerTextDrawColor(playerid, gTextDrawFade[playerid][slot][fade_td], COLOR_SetTransparency(gTextDrawFade[playerid][slot][fade_color], alpha));
  152. PlayerTextDrawShow(playerid, gTextDrawFade[playerid][slot][fade_td]);
  153.  
  154. if(alpha >= 255)
  155. {
  156. PlayerTextDrawColor(playerid, gTextDrawFade[playerid][slot][fade_td], gTextDrawFade[playerid][slot][fade_color]);
  157. PlayerTextDrawShow(playerid, gTextDrawFade[playerid][slot][fade_td]);
  158.  
  159. gTextDrawFade[playerid][slot][fade_timer] = SetTimerEx("FADER_OnPlayerTextDrawFade", gTextDrawFade[playerid][slot][fade_showtime], false, "iiii", playerid, slot, 255, 1);
  160. return 1;
  161. }
  162.  
  163. gTextDrawFade[playerid][slot][fade_timer] = SetTimerEx("FADER_OnPlayerTextDrawFade", gTextDrawFade[playerid][slot][fade_updatetime], false, "iiii", playerid, slot, alpha, 0);
  164. }
  165. case 1:
  166. {
  167. PlayerTextDrawColor(playerid, gTextDrawFade[playerid][slot][fade_td], gTextDrawFade[playerid][slot][fade_color]);
  168. PlayerTextDrawShow(playerid, gTextDrawFade[playerid][slot][fade_td]);
  169.  
  170. gTextDrawFade[playerid][slot][fade_timer] = SetTimerEx("FADER_OnPlayerTextDrawFade", gTextDrawFade[playerid][slot][fade_showtime], false, "iiii", playerid, slot, 255, 2);
  171. }
  172. case 2:
  173. {
  174. alpha -= FADE_UPDATE_VALUE;
  175. PlayerTextDrawColor(playerid, gTextDrawFade[playerid][slot][fade_td], COLOR_SetTransparency(gTextDrawFade[playerid][slot][fade_color], alpha));
  176. PlayerTextDrawShow(playerid, gTextDrawFade[playerid][slot][fade_td]);
  177.  
  178. if(alpha <= 0)
  179. {
  180. PlayerTextDrawColor(playerid, gTextDrawFade[playerid][slot][fade_td], gTextDrawFade[playerid][slot][fade_color]);
  181. PlayerTextDrawHide(playerid, gTextDrawFade[playerid][slot][fade_td]);
  182.  
  183. gTextDrawFade[playerid][slot][fade_timer] = -1;
  184. CallLocalFunction("OnPlayerTextDrawFadeComplete", "ii", playerid, slot);
  185. return 1;
  186. }
  187.  
  188. gTextDrawFade[playerid][slot][fade_timer] = SetTimerEx("FADER_OnPlayerTextDrawFade", gTextDrawFade[playerid][slot][fade_updatetime], false, "iiii", playerid, slot, alpha, 2);
  189. }
  190. }
  191. return 1;
  192. }
  193.  
  194. forward OnPlayerTextDrawFadeComplete(playerid, PlayerText:text);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement