Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Plugin generated by AMXX-Studio */
- #include <amxmodx>
- #include <fakemeta>
- #include <hamsandwich>
- #include <xs>
- #define PLUGIN "Jumper!"
- #define VERSION "0.2"
- #define AUTHOR "PomanoB"
- new g_cvar_tele_interval, g_cvar_trail_time, g_cvar_enable_trail
- new const g_entity_classname[] = "jump_trail"
- new g_info_target_str
- new g_shockwave_sprite, g_beam_sprite
- new bool:g_trailEnable[33]
- new g_maxPlayers
- public plugin_init()
- {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- register_forward(FM_Think, "fwdThink")
- register_forward(FM_Touch, "fwdTouch")
- register_clcmd("jump_to", "cmdJump")
- register_clcmd("say /trace", "cmdTrail")
- g_cvar_tele_interval = register_cvar("jump_interval", "0")
- g_cvar_trail_time = register_cvar("jump_trail_time", "4.0")
- g_cvar_enable_trail = register_cvar("jump_enable_trail", "1")
- g_info_target_str = engfunc(EngFunc_AllocString, "info_target")
- }
- public plugin_precache() {
- precache_model("sprites/jumper/trace.spr")
- g_shockwave_sprite = precache_model("sprites/shockwave.spr")
- g_beam_sprite = precache_model("sprites/lgtning.spr")
- }
- public client_putinserver(id)
- {
- g_trailEnable[id] = false
- }
- public cmdTrail(id)
- {
- if (get_pcvar_num(g_cvar_enable_trail))
- {
- g_trailEnable[id] = !g_trailEnable[id]
- client_print(id, print_chat, "Trail now %s!", g_trailEnable[id] ? "enabled" : "disabled")
- }
- else
- client_print(id, print_chat, "Sorry, trail not enabled!")
- }
- public cmdJump(id)
- {
- static Float:origin[3], Float:angle[3], Float:oldOrigin[3], tr, Float:lastTele[33], Float:gameTime
- if (!is_user_alive(id)) {
- return PLUGIN_HANDLED
- }
- gameTime = get_gametime()
- if (lastTele[id] + get_pcvar_float(g_cvar_tele_interval) < gameTime)
- {
- tr = 0
- pev(id, pev_origin, origin)
- pev(id, pev_view_ofs, angle)
- xs_vec_copy(origin, oldOrigin)
- xs_vec_add(origin, angle, origin)
- pev(id, pev_v_angle, angle)
- engfunc(EngFunc_MakeVectors, angle)
- global_get(glb_v_forward, angle)
- xs_vec_mul_scalar(angle, 99999.0, angle)
- xs_vec_add(origin, angle, angle)
- engfunc(EngFunc_TraceLine, origin, angle, 0, id, tr)
- get_tr2(tr, TR_vecEndPos, origin)
- get_tr2(tr, TR_vecPlaneNormal, angle)
- free_tr2(tr)
- xs_vec_mul_scalar(angle, -40.0, angle)
- xs_vec_sub(origin, angle, origin)
- tr = 0
- engfunc(EngFunc_TraceHull, origin, origin, 0, pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN, 0, tr)
- if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen))
- {
- set_pev(id, pev_velocity, angle)
- engfunc(EngFunc_SetOrigin, id, origin)
- createEffects(oldOrigin, origin)
- createTrail(oldOrigin, origin)
- }
- free_tr2(tr)
- lastTele[id] = gameTime
- }
- return PLUGIN_HANDLED
- }
- public fwdThink(ent)
- {
- static classname[32]
- pev(ent, pev_classname, classname, 31)
- if (equal(classname, g_entity_classname))
- set_pev(ent, pev_flags, FL_KILLME)
- }
- public fwdTouch(id, ent)
- {
- if (is_user_alive(id))
- {
- static classname[32]
- pev(ent, pev_classname, classname, 31)
- if (equal(classname, g_entity_classname))
- {
- static Float:target[3], tr
- pev(ent, pev_vuser1, target)
- tr = 0
- engfunc(EngFunc_TraceHull, target, target, 0, pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN, DONT_IGNORE_MONSTERS, tr)
- if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen))
- {
- engfunc(EngFunc_SetOrigin, id, target)
- }
- free_tr2(tr)
- }
- }
- }
- public createEffects(Float:origin[3], Float:endOrigin[3])
- {
- static center[3], axis[3], i
- center[0] = floatround(origin[0])
- center[1] = floatround(origin[1])
- center[2] = floatround(origin[2]) + 10
- axis[0] = center[0]
- axis[1] = center[1]
- axis[2] = center[2] + 50
- createBeamCylinder(origin, center, axis, g_shockwave_sprite, 0, 0, 3, 60, 0, 255, 255, 255, 100, 0)
- center[2] += 80
- axis[2] += 80
- createBeamCylinder(origin, center, axis, g_shockwave_sprite, 0, 0, 3, 60, 0, 255, 255, 255, 100, 0)
- if (get_pcvar_num(g_cvar_enable_trail))
- {
- for (i = 1; i < g_maxPlayers; i++)
- {
- if (g_trailEnable[i] && is_user_connected(i))
- createBeam(i, origin, endOrigin, get_pcvar_num(g_cvar_trail_time)*10, 30, 0, 255, 255, 0, 100, 10)
- }
- }
- }
- public createTrail(Float:oldOrigin[3], Float:newOrigin[3])
- {
- static ent
- ent = engfunc(EngFunc_CreateNamedEntity, g_info_target_str)
- dllfunc(DLLFunc_Spawn, ent)
- set_pev(ent, pev_classname, g_entity_classname)
- engfunc(EngFunc_SetModel, ent, "sprites/jumper/trace.spr")
- set_pev(ent, pev_mins, Float:{-16.0, -16.0, -16.0})
- set_pev(ent, pev_maxs, Float:{16.0, 16.0, 16.0})
- set_pev(ent, pev_size, Float:{-16.0,-16.0, -16.0, 16.0, 16.0, 16.0})
- engfunc(EngFunc_SetSize, ent, Float:{-16.0, -16.0, -16.0}, Float:{16.0, 16.0, 16.0})
- set_pev(ent, pev_movetype, MOVETYPE_FLY)
- set_pev(ent, pev_solid, SOLID_BBOX)
- set_pev(ent, pev_rendermode, kRenderTransAdd)
- set_pev(ent, pev_renderamt, 255.0)
- set_pev(ent, pev_vuser1, newOrigin)
- engfunc(EngFunc_SetOrigin, ent, oldOrigin)
- set_pev(ent, pev_nextthink, get_gametime() + get_pcvar_float(g_cvar_trail_time))
- }
- public createBeamCylinder(Float:origin[3], center[3], axis[3], iSprite, startFrame, frameRate, life, width, amplitude, red, green, blue, brightness, speed){
- engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, origin)
- write_byte(TE_BEAMCYLINDER)
- write_coord(center[0])
- write_coord(center[1])
- write_coord(center[2])
- write_coord(axis[0])
- write_coord(axis[1])
- write_coord(axis[2])
- write_short(iSprite)
- write_byte(startFrame)
- write_byte(frameRate)
- write_byte(life)
- write_byte(width)
- write_byte(amplitude)
- write_byte(red)
- write_byte(green)
- write_byte(blue)
- write_byte(brightness)
- write_byte(speed)
- message_end()
- }
- public createBeam(id, Float:start[3], Float:end[3], life, width, noise, red, green, blue, brightness, speed)
- {
- engfunc(EngFunc_MessageBegin, MSG_ONE, SVC_TEMPENTITY, start, id)
- write_byte(TE_BEAMPOINTS)
- engfunc(EngFunc_WriteCoord, start[0])
- engfunc(EngFunc_WriteCoord, start[1])
- engfunc(EngFunc_WriteCoord, start[2])
- engfunc(EngFunc_WriteCoord, end[0])
- engfunc(EngFunc_WriteCoord, end[1])
- engfunc(EngFunc_WriteCoord, end[2])
- write_short(g_beam_sprite)
- write_byte(1)
- write_byte(10)
- write_byte(life)
- write_byte(width)
- write_byte(noise)
- write_byte(red)
- write_byte(green)
- write_byte(blue)
- write_byte(brightness)
- write_byte(speed)
- message_end()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement