лучше уж тогда в момент приземленияНикогда не понимал "прикола" блокировки прыжка
Почему просто не ограничить скорость клиента в момент прыжка?
Сделайте)лучше уж тогда в момент приземления
#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);
}
}
}
}
#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Ну можно либо таймером проверять скорость, на случай если в воздухе на парашюте игрок будет разгонятся:
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
Обновление:
Полностью переработанный плагин. По сути это не новая версия, а новая ветка, сделан с нуля и иначе
В версии 1.1.0 можно прыгать без проблем в конце раунда, блокировка работает только во время игры