Anti-BHop

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
  • Автор ресурса
  • #21
Тестируем
1. Новый подход
2. Новый конфиг
3. Добавлена переменная активности плагина
Проверял на стандартных настройках плагина, вроде всё блокирует
 

Вложения

  • antibhop.sp
    2.6 КБ · Просмотры: 36

NeLifeASkazka

Участник
Сообщения
128
Реакции
70
Никогда не понимал "прикола" блокировки прыжка
Почему просто не ограничить скорость клиента в момент прыжка?
 

NeLifeASkazka

Участник
Сообщения
128
Реакции
70
Ну можно либо таймером проверять скорость, на случай если в воздухе на парашюте игрок будет разгонятся:
timer:
#include <sdktools>

public void OnMapStart(){
    CreateTimer(0.5, GlobalTimer, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
}
public Action GlobalTimer(Handle timer){
    float vec[3];
    for(int client = 1; client <= MaxClients; client++){
        if(IsClientInGame(client) && !IsFakeClient(client) && IsPlayerAlive(client)){
            GetEntPropVector(client, Prop_Data, "m_vecVelocity", vec);
            if(SquareRoot(vec[0] * vec[0] + vec[1] * vec[1]) > 260.0){
                vec[0] *= 0.8;
                vec[1] *= 0.8;
                TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, vec);
            }
        }
    }
}

Либо в ивенте player_jump:
jump:
#include <sdktools>

public void OnPluginStart(){
    HookEvent("player_jump", OnPlayerJump);
}

public void OnPlayerJump(Event event, const char[] name, bool dontBroadcast){
    RequestFrame(rf_PlayerJump, event.GetInt("userid"));
}

public void rf_PlayerJump(int client){
    if((client = GetClientOfUserId(client)) < 1 || IsFakeClient(client))
        return;

    float vec[3]; GetEntPropVector(client, Prop_Data, "m_vecVelocity", vec);
    if(SquareRoot(vec[0] * vec[0] + vec[1] * vec[1]) > 260.0){
        vec[0] *= 0.8;
        vec[1] *= 0.8;
        TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, vec);
    }
}
 

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
  • Автор ресурса
  • #26
Никогда не понимал "прикола" блокировки прыжка
Почему просто не ограничить скорость клиента в момент прыжка?
Пробовали, недовольства игроков и админов не утихает. Нужно что бы именно не было прыжка
 

anonim8

Участник
Сообщения
26
Реакции
7
Ну можно либо таймером проверять скорость, на случай если в воздухе на парашюте игрок будет разгонятся:
timer:
#include <sdktools>

public void OnMapStart(){
    CreateTimer(0.5, GlobalTimer, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
}
public Action GlobalTimer(Handle timer){
    float vec[3];
    for(int client = 1; client <= MaxClients; client++){
        if(IsClientInGame(client) && !IsFakeClient(client) && IsPlayerAlive(client)){
            GetEntPropVector(client, Prop_Data, "m_vecVelocity", vec);
            if(SquareRoot(vec[0] * vec[0] + vec[1] * vec[1]) > 260.0){
                vec[0] *= 0.8;
                vec[1] *= 0.8;
                TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, vec);
            }
        }
    }
}

Либо в ивенте player_jump:
jump:
#include <sdktools>

public void OnPluginStart(){
    HookEvent("player_jump", OnPlayerJump);
}

public void OnPlayerJump(Event event, const char[] name, bool dontBroadcast){
    RequestFrame(rf_PlayerJump, event.GetInt("userid"));
}

public void rf_PlayerJump(int client){
    if((client = GetClientOfUserId(client)) < 1 || IsFakeClient(client))
        return;

    float vec[3]; GetEntPropVector(client, Prop_Data, "m_vecVelocity", vec);
    if(SquareRoot(vec[0] * vec[0] + vec[1] * vec[1]) > 260.0){
        vec[0] *= 0.8;
        vec[1] *= 0.8;
        TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, vec);
    }
}
sv_maxvelocity 280
 

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
  • Автор ресурса
  • #29
Nekro обновил(а) ресурс Anti-BHop новой записью:

1.1.0

Обновление:
Полностью переработанный плагин. По сути это не новая версия, а новая ветка, сделан с нуля и иначе
В версии 1.1.0 можно прыгать без проблем в конце раунда, блокировка работает только во время игры

Узнать больше об этом обновлении...
 
Сверху Снизу