HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <fun>
  4.  
  5. #define PLUGIN "Glowing Color By Speed"
  6. #define VERSION "1.0"
  7. #define AUTHOR "Garey"
  8.  
  9. // Ha nem akarod akkor ird ele. /chaten irja a izzast.
  10. #define ECHOCMD
  11.  
  12. #define FREQ 0.1
  13.  
  14. new bool:plrGlow[33] = { true, ... };
  15.  
  16. new TaskEnt,g_showglow,g_glowamount,g_minspeed,g_maxspeed, maxplayers
  17.  
  18. public plugin_init() {
  19. register_plugin(PLUGIN, VERSION, AUTHOR)
  20. register_cvar("Garey", "Glowing Color By Speed", FCVAR_SERVER)
  21. register_forward(FM_Think, "Think")
  22.  
  23. TaskEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
  24. set_pev(TaskEnt, pev_classname, "speedometer_think")
  25. set_pev(TaskEnt, pev_nextthink, get_gametime() + 1.01)
  26.  
  27. register_clcmd("say /glow", "toogleGlow")
  28.  
  29. g_showglow = register_cvar("gbs_start", "0")
  30. g_glowamount=register_cvar("gbs_amount", "25")
  31. g_minspeed=register_cvar("gbs_glow_min_speed", "250")
  32. g_maxspeed=register_cvar("gbs_glow_max_speed", "300")
  33.  
  34. maxplayers = get_maxplayers()
  35. }
  36.  
  37. public Think(ent)
  38. {
  39. if(ent == TaskEnt)
  40. {
  41. SpeedTask()
  42. set_pev(ent, pev_nextthink, get_gametime() + FREQ)
  43. }
  44. }
  45.  
  46. public client_putinserver(id)
  47. {
  48. plrGlow[id] = (get_pcvar_num(g_showglow)) > 0 ? true : false
  49. }
  50.  
  51. public toogleGlow(id)
  52. {
  53. if( plrGlow[id] )
  54. {
  55. client_print(id, print_chat, "[HLMOD] Izzas nincs engedelyezve.");
  56. set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,0)
  57. plrGlow[id] = false;
  58. }
  59. else
  60. {
  61. client_print(id, print_chat, "[HLMOD] Izzas engedelyezve.");
  62. plrGlow[id] = true;
  63. }
  64.  
  65. #if defined ECHOCMD
  66. return PLUGIN_CONTINUE;
  67. #else
  68. return PLUGIN_HANDLED;
  69. #endif
  70. }
  71.  
  72. stock dynamicColor(min,max,Float:value,&red,&green,&blue)
  73. { //Don`t launch with max ~= min
  74. #define MaxC 255
  75. #define MinC 0
  76. #define DtC 255
  77.  
  78. if (value>=max)
  79. {
  80. red=MaxC;
  81. green=MinC;
  82. blue=MinC;
  83. return;
  84. }
  85. else if (value<=min)
  86. {
  87. red=MinC;
  88. green=MinC;
  89. blue=MaxC;
  90. return;
  91. }
  92.  
  93. new Float:step = (max-min)/4.0;
  94. new Float:dt = value-min;
  95.  
  96. if (dt <= step)
  97. {
  98. red = MinC;
  99. green = floatround(dt*(DtC/step));
  100. blue = MaxC;
  101. }
  102. else if (dt-=step, dt <= step)
  103. {
  104. red = MinC;
  105. green = MaxC;
  106. blue = floatround((step-dt)*(DtC/step));
  107. }
  108. else if (dt-=step, dt <= step)
  109. {
  110. red = floatround(dt*(DtC/step));
  111. green = MaxC;
  112. blue = MinC;
  113. }
  114. else
  115. {
  116. dt-=step;
  117. red = MaxC;
  118. green = floatround((step-dt)*(DtC/step));
  119. blue = MinC;
  120. }
  121. return;
  122. }
  123.  
  124.  
  125. SpeedTask()
  126. {
  127. static i, target
  128. static Float:velocity[3]
  129. static Float:speedh
  130.  
  131. for(i=1; i<=maxplayers; i++)
  132. {
  133. if(!is_user_connected(i)) continue
  134. if(!plrGlow[i]) continue
  135.  
  136. target = pev(i, pev_iuser1) == 4 ? pev(i, pev_iuser2) : i
  137. pev(target, pev_velocity, velocity)
  138.  
  139. speedh = floatsqroot(floatpower(velocity[0], 2.0) + floatpower(velocity[1], 2.0))
  140.  
  141. static r, g, b
  142. dynamicColor(get_pcvar_num(g_minspeed),get_pcvar_num(g_maxspeed),speedh,r,g,b)
  143. set_user_rendering(i,kRenderFxGlowShell,r,g,b,kRenderNormal,get_pcvar_num(g_glowamount))
  144. }
  145. }