Kód:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#define _sens 40.0
#define _block 0.25
#define SPEEDLIMIT 300.0
new jumpnum[33] = 0
new bool:dojump[33] = false
new Float:doduck[33] = 0.0
new Float:BlockUntil[33] = 0.0
new Float:NewVelocity[33][3];
new Float:VerticalVelocity[33];
new Float:speed[33];
new bool:g_Alive[33];
new bool:last_FL_ONGROUND[33];
public plugin_init()
{
   //Original code source unknown - Blocking added by Kova
   register_plugin("MultiJumpBGSBLock","2.3","Kova")
   register_cvar("amx_maxjumps","1")
   RegisterHam(Ham_Spawn, "player", "hamPlayerSpawn", 1);
   register_event("DeathMsg", "eventPlayerDeath", "a");
}
public hamPlayerSpawn(id)
{
    if(!is_user_alive(id))
      return;
 
    g_Alive[id] = true;
}
public eventPlayerDeath()
{
  g_Alive[read_data(2)] = false;
}
public client_putinserver(id)
{
   jumpnum[id] = 0
   dojump[id] = false
   doduck[id] = 0.0
   BlockUntil[id] = 0.0
   last_FL_ONGROUND[id] = true;
}
public client_disconnected(id)
{
   jumpnum[id] = 0
   dojump[id] = false
   doduck[id] = 0.0
   BlockUntil[id] = 0.0
   g_Alive[id] = false;
   last_FL_ONGROUND[id] = true;
}
public client_PreThink(id)
{
   if(!g_Alive[id])
      return PLUGIN_CONTINUE
   
   new nbut = get_user_button(id)
   new obut = get_user_oldbutton(id)
   if(get_entity_flags(id) & FL_ONGROUND)
   {
      if(last_FL_ONGROUND[id] == false)
         SpeedTester(id);
      last_FL_ONGROUND[id] = true;
      if((nbut & IN_DUCK) && !(obut & IN_DUCK))
      {
         doduck[id] = get_gametime() + 0.05;
      }
   }
   if(!(get_entity_flags(id) & FL_ONGROUND))
   {
      last_FL_ONGROUND[id] = false;
      if((nbut & IN_JUMP) && !(obut & IN_JUMP))
      {
         if(jumpnum[id] < get_cvar_num("amx_maxjumps"))
         {
            dojump[id] = true
            jumpnum[id]++
            return PLUGIN_CONTINUE
         }
      }
   }
   if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
   {
      jumpnum[id] = 0
      return PLUGIN_CONTINUE
   }
   return PLUGIN_CONTINUE
}
public client_PostThink(id)
{
   if(!g_Alive[id])
      return PLUGIN_CONTINUE
   if(get_gametime() < doduck[id] && fm_distance_to_floor(id) > 0.0)
      BlockUntil[id] = get_gametime() + _block;
      
   if(dojump[id] == true)
   {
      if(BlockUntil[id] > get_gametime())
      {
         dojump[id] = false;
         jumpnum[id]--
         return PLUGIN_CONTINUE;
      }
      new Float:velocity[3]   
      entity_get_vector(id,EV_VEC_velocity,velocity)
      velocity[2] = random_float(265.0,285.0)
      entity_set_vector(id,EV_VEC_velocity,velocity)
      dojump[id] = false
      return PLUGIN_CONTINUE
   }
   return PLUGIN_CONTINUE
}   
public SpeedTester(id)
{
  get_user_velocity(id, NewVelocity[id]);
  VerticalVelocity[id] = NewVelocity[id][2];
  NewVelocity[id][2] = 0.0;
  speed[id] = vector_length(NewVelocity[id]);
  if(speed[id] > SPEEDLIMIT)
  {
    NewVelocity[id][0] = NewVelocity[id][0] * (SPEEDLIMIT / speed[id]);
    NewVelocity[id][1] = NewVelocity[id][1] * (SPEEDLIMIT / speed[id]);
    NewVelocity[id][2] = VerticalVelocity[id];
    set_user_velocity(id, NewVelocity[id]);
  }
}
stock Float:fm_distance_to_floor(index, ignoremonsters = 1) 
{
   new Float:start[3], Float:dest[3], Float:end[3];
   pev(index, pev_origin, start);
   dest[0] = start[0];
   dest[1] = start[1];
   dest[2] = -8191.0;
   engfunc(EngFunc_TraceLine, start, dest, ignoremonsters, index, 0);
   get_tr2(0, TR_vecEndPos, end);
   pev(index, pev_absmin, start);
   new Float:ret = start[2] - end[2];
   return ret > 0 ? ret : 0.0;
}
Ez egy multijump plugin. Ebbe benne van a BGS tiltása, amit azzal ér el, hogy guggolás után _block (0.25mp-ig) nem lehet ugrani a levegőben. (Ha valaki nagyon profi akkor lehet, hogy tud BSGS-t)
Továbbá egy rész ami kicsit idegesítő, de hasznos sebesség korlát ami akkor lép életbe amikor leérkezel a földre, így nem tudják kihasználni a tixo-t gyorsulásra (GS/SGS). (Ugrásból ha felgyorsulsz és leérkezel, olyan mit ha megakadnál valamiben és azért idegesítő kicsit)
GS - ground strafe (tixo + strafe)
SGS - stand-up ground strafe (tixo + guggolás letartás és és felengedés + strafe)
BGS - bhop ground strafe (tixo + multi jump + strafe)
BSGS - bhop stand-up ground strafe (tixo + guggolás és multijump majd felengedés + strafe)