Przykładowa klasa z owym teleportem:
 
#include <amxmodx>
#include <engine>
#include <fakemeta> 
#include <fun>
#include <cstrike>
#include <amxmisc>
#include <codmod>
#define CS_PLAYER_HEIGHT 72.0
#define AUTHOR "J River"
#define x 0
#define y 1
#define z 2
new const nazwa[] = "[Mega Premium]Knife Ruggber";
new const opis[] = "Moze robic migniecia nozem na odleglsoc 2000(+inteligencja), 1\5 szans na oslepeinie wroga";
new const bronie = (1<<CSW_M4A1)|(1<<CSW_KNIFE);
new const zdrowie = 0;
new const kondycja = 50;
new const inteligencja = 0;
new const wytrzymalosc = 100;
new gmsgFade
new bool:ma_klase[33];
new player_b_blink[33] = 0    //Ability to get a railgun
new player_b_blind[33] = 0    //Chance 1/Value to blind the enemy
public plugin_init()
{
    register_plugin(nazwa, "1.0", AUTHOR);
    
    cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
    
    register_event("ResetHUD", "ResetHUD", "abe")
    
    register_event("Damage", "Damage", "b", "2!0")
    
    gmsgFade = get_user_msgid("ScreenFade")
}
public cod_class_enabled(id)
{
    if(!(get_user_flags(id) & ADMIN_LEVEL_A))
    {
        client_print(id, print_chat, "[Server] (Mega Premium!!) Nie masz uprawnien, aby uzywac klasy Knife Ruggber")
        return COD_STOP;
    }
    client_print(id, print_chat, "Klasa Knife Ruggber stworzona przez J River")
    player_b_blink[id] = floatround(halflife_time())
    player_b_blind[id] = 5
    ma_klase[id] = true;
    return COD_CONTINUE;
}
public cod_class_disabled(id)
{
    player_b_blink[id] = 0
    ma_klase[id] = false;
}
public client_PreThink ( id ) 
{
    if (player_b_blink[id] > 0) Prethink_Blink(id)
    
    return PLUGIN_CONTINUE    
    
}
public Prethink_Blink(id)
{
    if( get_user_button(id) & IN_ATTACK2 && !(get_user_oldbutton(id) & IN_ATTACK2) && is_user_alive(id))
    {            
        new clip, ammo
        new weapon = get_user_weapon(id,clip,ammo)
        
        if (weapon == CSW_KNIFE)
        {
            if (halflife_time()-player_b_blink[id] <= 0.5) return PLUGIN_HANDLED        
            player_b_blink[id] = floatround(halflife_time())    
            UTIL_Teleport(id,2000+15*cod_get_user_intelligence( id, 1, 1, 1 ))        
        }
    }
    return PLUGIN_CONTINUE
}    
public ResetHUD(id)
{
    if (is_user_connected(id))
    {    
        if(ma_klase[id])
            player_b_blink[id] = 1
            
        if (player_b_blink[id] > 0)
            player_b_blink[id] = 1
        client_cmd(id,"hud_centerid 0")
    }
}
public UTIL_Teleport(id,distance)
{    
    Set_Origin_Forward(id,distance)
    
    new origin[3]
    get_user_origin(id,origin)
    
    //Particle burst ie. teleport effect    
    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY) //message begin
    write_byte(TE_PARTICLEBURST )
    write_coord(origin[0]) // origin
    write_coord(origin[1]) // origin
    write_coord(origin[2]) // origin
    write_short(20) // radius
    write_byte(1) // particle color
    write_byte(4) // duration * 10 will be randomized a bit
    message_end()
    
    
}
stock Set_Origin_Forward(id, distance) 
{
    new Float:origin[3]
    new Float:angles[3]
    new Float:teleport[3]
    new Float:heightplus = 10.0
    new Float:playerheight = 64.0
    new bool:recalculate = false
    new bool:foundheight = false
    pev(id,pev_origin,origin)
    pev(id,pev_angles,angles)
    
    teleport[0] = origin[0] + distance * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
    teleport[1] = origin[1] + distance * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
    teleport[2] = origin[2]+heightplus
    
    while (!Can_Trace_Line_Origin(origin,teleport) || Is_Point_Stuck(teleport,48.0))
    {    
        if (distance < 10)
            break;
        
        //First see if we can raise the height to MAX playerheight, if we can, it's a hill and we can teleport there    
        for (new i=1; i < playerheight+20.0; i++)
        {
            teleport[2]+=i
            if (Can_Trace_Line_Origin(origin,teleport) && !Is_Point_Stuck(teleport,48.0))
            {
                foundheight = true
                heightplus += i
                break
            }
            
            teleport[2]-=i
        }
        
        if (foundheight)
            break
        
        recalculate = true
        distance-=10
        teleport[0] = origin[0] + (distance+32) * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
        teleport[1] = origin[1] + (distance+32) * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
        teleport[2] = origin[2]+heightplus
    }
    
    if (!recalculate)
    {
        set_pev(id,pev_origin,teleport)
        return PLUGIN_CONTINUE
    }
    
    teleport[0] = origin[0] + distance * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
    teleport[1] = origin[1] + distance * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
    teleport[2] = origin[2]+heightplus
    set_pev(id,pev_origin,teleport)
    
    return PLUGIN_CONTINUE
}
stock bool:Can_Trace_Line_Origin(Float:origin1[3], Float:origin2[3])
{    
    new Float:Origin_Return[3]    
    new Float:temp1[3]
    new Float:temp2[3]
    
    temp1[x] = origin1[x]
    temp1[y] = origin1[y]
    temp1[z] = origin1[z]-30
    
    temp2[x] = origin2[x]
    temp2[y] = origin2[y]
    temp2[z] = origin2[z]-30
    
    trace_line(-1, temp1, temp2, Origin_Return)
    
    if (get_distance_f(Origin_Return,temp2) < 1.0)
        return true
    
    return false
}
stock bool:Is_Point_Stuck(Float:Origin[3], Float:hullsize)
{
    new Float:temp[3]
    new Float:iterator = hullsize/3
    
    temp[2] = Origin[2]
    
    for (new Float:i=Origin[0]-hullsize; i < Origin[0]+hullsize; i+=iterator)
    {
        for (new Float:j=Origin[1]-hullsize; j < Origin[1]+hullsize; j+=iterator)
        {
            //72 mod 6 = 0
            for (new Float:k=Origin[2]-CS_PLAYER_HEIGHT; k < Origin[2]+CS_PLAYER_HEIGHT; k+=6)
            {
                temp[0] = i
                temp[1] = j
                temp[2] = k
                
                if (point_contents(temp) != -1)
                    return true
            }
        }
    }
    
    return false
}
stock Effect_Bleed(id,color)
{
    new origin[3]
    get_user_origin(id,origin)
    
    new dx, dy, dz
    
    for(new i = 0; i < 3; i++)
    {
        dx = random_num(-15,15)
        dy = random_num(-15,15)
        dz = random_num(-20,25)
        
        for(new j = 0; j < 2; j++)
        {
            message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
            write_byte(TE_BLOODSPRITE)
            write_coord(origin[0]+(dx*j))
            write_coord(origin[1]+(dy*j))
            write_coord(origin[2]+(dz*j))
            write_short(sprite_blood_spray)
            write_short(sprite_blood_drop)
            write_byte(color) // color index
            write_byte(8) // size
            message_end()
        }
    }
}
public Damage(id)
{
    if (is_user_connected(id))
    {
        new damage = read_data(2)
        new weapon
        new bodypart
        new attacker_id = get_user_attacker(id,weapon,bodypart)
        if (is_user_connected(attacker_id) && attacker_id != id)
            add_bonus_blind(id,attacker_id,weapon,damage)        
    }
}
/* ==================================================================================================== */
public add_bonus_blind(id,attacker_id,weapon,damage)
{
    if (player_b_blind[attacker_id] > 0 && weapon != 4)
    {
        new roll = random_num(1,player_b_blind[attacker_id])
        if (roll == 1)
        {
            message_begin(MSG_ONE,gmsgFade,{0,0,0},id)
            write_short( 1<<14 )
            write_short( 1<<14 )
            write_short( 1<<16 )
            write_byte( 255 )
            write_byte( 155 )
            write_byte( 50 )
            write_byte( 230 )
            message_end()
        }
        
    }
}