block load
{
  es_xset mb_exists 0
  es_xexists mb_exists command mb_hyperjump
  if (server_var(mb_exists) = 0) do
  {
    es_xregcmd mb_hyperjump mb_matrix/modules/mb_hyperjump/cmd_hyperjump "Syntax: mb_hyperjump <Userid> <Up-Scale> <Forward-Scale>"
  }
  es_xset mb_exists 0
  es_xexists mb_exists command !hyper
  if (server_var(mb_exists) = 0) do
  {
    es_xregclientcmd !hyper mb_matrix/modules/mb_hyperjump/clienthyper "Command to activate hyperjump"
  }
}
block cmd_hyperjump
{
  es_xset mb_yaw 0
  es_xset mb_vx 0
  es_xset mb_vy 0
  es_xset mb_vector 0
  es_xset mb_hyperjumpheight 0
  es_xset mb_hyperjumpdistance 0
  es_xgetargv mb_userid 1
  es_xgetargv mb_hyperjumpheight 2
  es_xgetargv mb_hyperjumpdistance 3
  es_xmath mb_hyperjumpheight float
  es_xmath mb_hyperjumpdistance float
  es_xmath mb_hyperjumpheight * 100.000
  es_xmath mb_hyperjumpdistance * 30.000
  es_getplayerprop mb_yaw server_var(mb_userid) CCSPlayer.m_angEyeAngles[1]
  es_xmathparse mb_vx "cos(mb_yaw/(180/3.14159))*mb_push"
  es_xmathparse mb_vy "sin(mb_yaw/(180/3.14159))*mb_push"
  //es_xcopy mb_vx mb_yaw
  //es_xcopy mb_vy mb_yaw
  //es_xmath mb_vx / 57.295827908797774375395898255342
  //es_xmath mb_vy / 57.295827908797774375395898255342
  //es_xmath mb_vx cos
  //es_xmath mb_vy sin
  //es_math mb_vx * server_var(mb_hyperjumpdistance)
  //es_math mb_vy * server_var(mb_hyperjumpdistance)
  es_createvectorstring mb_vector server_var(mb_vx) server_var(mb_vy) server_var(mb_hyperjumpheight)
  es_setplayerprop server_var(mb_userid) "CCSPlayer.baseclass.localdata.m_vecBaseVelocity" server_var(mb_vector)
}
block clienthyper
{
  es_xset mb_userid 0
  es_xgetcmduserid mb_userid
  es_xdoblock mb_matrix/format_command_steamid
  es_keygetvalue mb_currentclass matrix server_var(mb_steamid) currentclass
  es_keygetvalue mb_canjump matrix server_var(mb_steamid) canjump
  es_xcopy mb_copyclass mb_currentclass
  es_keygetvalue mb_hyperjumplevel server_var(mb_copyclass) server_var(mb_steamid) hyperjumplevel
  if (server_var(mb_hyperjumplevel) != 0) do
  {
    if (server_var(mb_canjump) == 1) do
    {
      es_keysetvalue matrix server_var(mb_steamid) canjump 0
      es_getplayerlocation mb_jx mb_jy mb_jz server_var(mb_userid)
      es_xmath mb_jz + 15
      es est_effect 10 #a 0 "sprites/lgtning.vmt" server_var(mb_jx) server_var(mb_jy) server_var(mb_jz) 0 40 1 1 1 1 0 255 0 255 0
      es_delayed .2 est_effect 10 #a 0 "sprites/lgtning.vmt" server_var(mb_jx) server_var(mb_jy) server_var(mb_jz) 0 40 1 1 1 1 0 255 0 255 0
      es mb_hyperjump server_var(mb_userid) server_var(mb_hyperjumplevel) 4
      es_delayed 3 es_xkeysetvalue matrix server_var(mb_steamid) canjump 1
    }
  }
  else do
  {
    es_tell server_var(mb_userid) #multi #lightgreen[Failure]#default server_var(mb_currentclass) cannot hyperjump!
  }
}
