Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.41 KB | None | 0 0
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include <amxmodx>
  4. #include <fakemeta>
  5. #include <hamsandwich>
  6. #include <xs>
  7.  
  8. #define PLUGIN "Jumper!"
  9. #define VERSION "0.2"
  10. #define AUTHOR "PomanoB"
  11.  
  12. new g_cvar_tele_interval, g_cvar_trail_time, g_cvar_enable_trail
  13.  
  14. new const g_entity_classname[] = "jump_trail"
  15. new g_info_target_str
  16.  
  17. new g_shockwave_sprite, g_beam_sprite
  18.  
  19. new bool:g_trailEnable[33]
  20. new g_maxPlayers
  21.  
  22.  
  23. public plugin_init()
  24. {
  25.     register_plugin(PLUGIN, VERSION, AUTHOR)
  26.    
  27.     register_forward(FM_Think, "fwdThink")
  28.     register_forward(FM_Touch, "fwdTouch")
  29.    
  30.     register_clcmd("jump_to", "cmdJump")
  31.     register_clcmd("say /trace", "cmdTrail")
  32.    
  33.     g_cvar_tele_interval = register_cvar("jump_interval", "0")
  34.     g_cvar_trail_time = register_cvar("jump_trail_time", "4.0")
  35.     g_cvar_enable_trail = register_cvar("jump_enable_trail", "1")
  36.    
  37.     g_info_target_str = engfunc(EngFunc_AllocString, "info_target")
  38. }
  39.  
  40. public plugin_precache() {
  41.     precache_model("sprites/jumper/trace.spr")
  42.     g_shockwave_sprite = precache_model("sprites/shockwave.spr")
  43.     g_beam_sprite = precache_model("sprites/lgtning.spr")
  44. }
  45.  
  46. public client_putinserver(id)
  47. {
  48.     g_trailEnable[id] = false
  49. }
  50.  
  51. public cmdTrail(id)
  52. {
  53.     if (get_pcvar_num(g_cvar_enable_trail))
  54.     {
  55.         g_trailEnable[id] = !g_trailEnable[id]
  56.         client_print(id, print_chat, "Trail now %s!", g_trailEnable[id] ? "enabled" : "disabled")
  57.     }
  58.     else
  59.         client_print(id, print_chat, "Sorry, trail not enabled!")
  60. }
  61.  
  62. public cmdJump(id)
  63. {
  64.     static Float:origin[3], Float:angle[3], Float:oldOrigin[3], tr, Float:lastTele[33], Float:gameTime
  65.    
  66.     if (!is_user_alive(id)) {
  67.         return PLUGIN_HANDLED
  68.     }
  69.    
  70.     gameTime = get_gametime()
  71.    
  72.     if (lastTele[id] + get_pcvar_float(g_cvar_tele_interval) < gameTime)
  73.     {
  74.         tr = 0
  75.        
  76.         pev(id, pev_origin, origin)
  77.         pev(id, pev_view_ofs, angle)
  78.         xs_vec_copy(origin, oldOrigin)
  79.         xs_vec_add(origin, angle, origin)
  80.        
  81.         pev(id, pev_v_angle, angle)
  82.         engfunc(EngFunc_MakeVectors, angle)
  83.         global_get(glb_v_forward, angle)
  84.         xs_vec_mul_scalar(angle, 99999.0, angle)
  85.        
  86.         xs_vec_add(origin, angle, angle)
  87.        
  88.         engfunc(EngFunc_TraceLine, origin, angle, 0, id, tr)
  89.         get_tr2(tr, TR_vecEndPos, origin)
  90.         get_tr2(tr, TR_vecPlaneNormal, angle)
  91.         free_tr2(tr)
  92.        
  93.        
  94.         xs_vec_mul_scalar(angle, -40.0, angle)
  95.         xs_vec_sub(origin, angle, origin)
  96.        
  97.         tr = 0
  98.         engfunc(EngFunc_TraceHull, origin, origin, 0, pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN, 0, tr)
  99.         if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen))
  100.         {
  101.             set_pev(id, pev_velocity, angle)
  102.             engfunc(EngFunc_SetOrigin, id, origin)
  103.             createEffects(oldOrigin, origin)
  104.             createTrail(oldOrigin, origin)
  105.         }
  106.         free_tr2(tr)
  107.        
  108.         lastTele[id] = gameTime
  109.     }
  110.    
  111.     return PLUGIN_HANDLED
  112. }
  113.  
  114. public fwdThink(ent)
  115. {
  116.     static classname[32]
  117.     pev(ent, pev_classname, classname, 31)
  118.     if (equal(classname, g_entity_classname))
  119.         set_pev(ent, pev_flags, FL_KILLME)
  120. }
  121.  
  122. public fwdTouch(id, ent)
  123. {
  124.     if (is_user_alive(id))
  125.     {
  126.         static classname[32]
  127.         pev(ent, pev_classname, classname, 31)
  128.         if (equal(classname, g_entity_classname))
  129.         {
  130.             static Float:target[3], tr
  131.             pev(ent, pev_vuser1, target)
  132.             tr = 0
  133.             engfunc(EngFunc_TraceHull, target, target, 0, pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN, DONT_IGNORE_MONSTERS, tr)
  134.             if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen))
  135.             {
  136.                 engfunc(EngFunc_SetOrigin, id, target)
  137.             }
  138.             free_tr2(tr)
  139.         }
  140.     }
  141. }
  142.  
  143. public createEffects(Float:origin[3], Float:endOrigin[3])
  144. {
  145.     static center[3], axis[3], i
  146.     center[0] = floatround(origin[0])
  147.     center[1] = floatround(origin[1])
  148.     center[2] = floatround(origin[2]) + 10
  149.    
  150.     axis[0] = center[0]
  151.     axis[1] = center[1]
  152.     axis[2] = center[2] + 50
  153.    
  154.     createBeamCylinder(origin, center, axis, g_shockwave_sprite, 0, 0, 3, 60, 0, 255, 255, 255, 100, 0)
  155.     center[2] += 80
  156.     axis[2] += 80
  157.     createBeamCylinder(origin, center, axis, g_shockwave_sprite, 0, 0, 3, 60, 0, 255, 255, 255, 100, 0)
  158.    
  159.     if (get_pcvar_num(g_cvar_enable_trail))
  160.     {
  161.         for (i = 1; i < g_maxPlayers; i++)
  162.         {
  163.             if (g_trailEnable[i] && is_user_connected(i))
  164.                 createBeam(i, origin, endOrigin, get_pcvar_num(g_cvar_trail_time)*10, 30, 0, 255, 255, 0, 100, 10)
  165.         }
  166.     }
  167. }
  168.  
  169. public createTrail(Float:oldOrigin[3], Float:newOrigin[3])
  170. {
  171.     static ent
  172.     ent = engfunc(EngFunc_CreateNamedEntity, g_info_target_str)
  173.     dllfunc(DLLFunc_Spawn, ent)
  174.     set_pev(ent, pev_classname, g_entity_classname)
  175.     engfunc(EngFunc_SetModel, ent, "sprites/jumper/trace.spr")
  176.     set_pev(ent, pev_mins, Float:{-16.0, -16.0, -16.0})
  177.     set_pev(ent, pev_maxs, Float:{16.0, 16.0, 16.0})
  178.     set_pev(ent, pev_size, Float:{-16.0,-16.0, -16.0, 16.0, 16.0, 16.0})
  179.     engfunc(EngFunc_SetSize, ent, Float:{-16.0, -16.0, -16.0}, Float:{16.0, 16.0, 16.0})
  180.     set_pev(ent, pev_movetype, MOVETYPE_FLY)
  181.     set_pev(ent, pev_solid, SOLID_BBOX)
  182.     set_pev(ent, pev_rendermode, kRenderTransAdd)
  183.     set_pev(ent, pev_renderamt, 255.0)
  184.     set_pev(ent, pev_vuser1, newOrigin)
  185.     engfunc(EngFunc_SetOrigin, ent, oldOrigin)
  186.     set_pev(ent, pev_nextthink, get_gametime() + get_pcvar_float(g_cvar_trail_time))
  187. }
  188.  
  189. public createBeamCylinder(Float:origin[3], center[3], axis[3], iSprite, startFrame, frameRate, life, width, amplitude, red, green, blue, brightness, speed){
  190.  
  191.     engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, origin)
  192.     write_byte(TE_BEAMCYLINDER)
  193.     write_coord(center[0])
  194.     write_coord(center[1])
  195.     write_coord(center[2])
  196.     write_coord(axis[0])
  197.     write_coord(axis[1])
  198.     write_coord(axis[2])
  199.     write_short(iSprite)
  200.     write_byte(startFrame)
  201.     write_byte(frameRate)
  202.     write_byte(life)
  203.     write_byte(width)
  204.     write_byte(amplitude)
  205.     write_byte(red)
  206.     write_byte(green)
  207.     write_byte(blue)
  208.     write_byte(brightness)
  209.     write_byte(speed)
  210.     message_end()
  211. }
  212.  
  213. public createBeam(id, Float:start[3], Float:end[3], life, width, noise, red, green, blue, brightness, speed)
  214. {
  215.     engfunc(EngFunc_MessageBegin, MSG_ONE, SVC_TEMPENTITY, start, id)
  216.     write_byte(TE_BEAMPOINTS)
  217.     engfunc(EngFunc_WriteCoord, start[0])
  218.     engfunc(EngFunc_WriteCoord, start[1])
  219.     engfunc(EngFunc_WriteCoord, start[2])
  220.     engfunc(EngFunc_WriteCoord, end[0])
  221.     engfunc(EngFunc_WriteCoord, end[1])
  222.     engfunc(EngFunc_WriteCoord, end[2])
  223.     write_short(g_beam_sprite)
  224.     write_byte(1)
  225.     write_byte(10)
  226.     write_byte(life)
  227.     write_byte(width)
  228.     write_byte(noise)
  229.     write_byte(red)
  230.     write_byte(green)
  231.     write_byte(blue)
  232.     write_byte(brightness)
  233.     write_byte(speed)
  234.     message_end()
  235. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement