Анти-стрейф

bake2

Пользователь
Регистрация
3 Окт 2019
Сообщения
167
Симпатии
4
OS
Linux
Amx Mod X
AMXX 1.9.0
Билд
Protocol version 48 Exe version 1.1.2.7/Stdio (cstrike) ReHLDS version: 3.11.0.767-dev Build date: 03:13:55 Oct 25 2021 (2753)
ReGamedll
ReGameDLL version: 5.21.0.546-dev Build date: 15:32:48 Dec 28 2021
Metamod
Metamod-r v1.3.0.128, API (5:13) Metamod-r build: 17:47:54 Aug 24 2018
Meta модули
Код:
[ 1] AMX Mod X RUN - amxmodx_mm_i386.so v1.9.0.5271 ini Start ANY
[ 2] Reunion RUN - reunion_mm_i386.so v0.1.92d ini Start Never
[ 3] ReAuthCheck RUN - reauthcheck_mm_i386.so v0.1.6 ini Start Never
[ 4] ReSemiclip RUN - resemiclip_mm_i386.so v2.3.9 ini Chlvl ANY
[ 5] ReSRDetector RUN - resrdetector_mm_i386.so v0.1.0 ini Chlvl ANY
[ 6] WHBlocker RUN - whblocker_mm_i386.so v1.5.697 ini Chlvl ANY
[ 7] VoiceTranscoder RUN - VoiceTranscoder.so v2017RC5 ini ANY ANY
[ 8] ReAimDetector RUN - reaimdetector_amxx_i386.so v0.2.2 pl1 ANY Never
[ 9] MySQL RUN - mysql_amxx_i386.so v1.9.0.5271 pl1 ANY ANY
[10] SQLite RUN - sqlite_amxx_i386.so v1.9.0.5271 pl1 ANY ANY
[11] Fun RUN - fun_amxx_i386.so v1.9.0.5271 pl1 ANY ANY
[12] Engine RUN - engine_amxx_i386.so v1.9.0.5271 pl1 ANY ANY
[13] FakeMeta RUN - fakemeta_amxx_i386.so v1.9.0.5271 pl1 ANY ANY
[14] CStrike RUN - cstrike_amxx_i386.so v1.9.0.5271 pl1 ANY ANY
[15] CSX RUN - csx_amxx_i386.so v1.9.0.5271 pl1 ANY ANY
[16] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.9.0.5271 pl1 ANY ANY
[17] ReAPI RUN - reapi_amxx_i386.so v5.21.0.252-dev pl1 ANY Never
Плагины
Код:
[ 1] AntiIdleBot 2.0.0 mx?! antiindlebot.am running
[ 2] ReAimDetector API 0.2.2 ReHLDS Team reaimdetector.a running
[ 3] Admin Base 1.9.0.5271 AMXX Dev Team admin.amxx running
[ 4] Combo On Kill 0.2 Vaqtincha combo_on_kill.a running
[ 5] FreshBans 1.4.5b kanagava fresh_bans.amxx running
[ 6] Chat Manager 1.1.2-16 Mistrick chatmanager.amx running
[ 7] Admin Commands 1.9.0.5271 AMXX Dev Team admincmd.amxx running
[ 8] Commands Menu 1.9.0.5271 AMXX Dev Team cmdmenu.amxx running
[ 9] Server Menu 1.5.0 F@nt0M server_menu.amx running
[ 10] Players Menu 1.7 neugomon plmenu.amxx running
[ 11] Maps Menu 1.4.2 neugomon & Hisok mapsmenu3.amxx running
[ 12] Plugin Menu 1.9.0.5271 AMXX Dev Team pluginmenu.amxx running
[ 13] Admin Chat 1.9.0.5271 AMXX Dev Team adminchat.amxx running
[ 14] Instant AutoTeamBalanc 1.2.0 ConnorMcLeod autoteambalance running
[ 15] CSStatsX SQL 0.7.4+2 serfreeman1337 csstatsx_sql.am running
[ 16] AES: StatsX 0.5.9 [REA serfreeman1337/s aes_statsx_cstr running
[ 17] Stats Configuration 1.9.0.5271 AMXX Dev Team statscfg.amxx running
[ 18] Restrict Weapons 1.9.0.5271 AMXX Dev Team restmenu.amxx running
[ 19] StatsX 1.9.0.5271 AMXX Dev Team statsx.amxx running
[ 20] Reklama 20.05.2020 mx?! reklama.amxx running
[ 21] Advanced Kill Assists 1.2d Xelson next21_kill_ass running
[ 22] VoteGag 1.0 sNk votegag.amxx running
[ 23] [190] SlayLosers RBS 20.06.06 SKAJIbnEJIb & d3 slaylosers_rbs. running
[ 24] Mode 2x2 2.5re s1lent mode.amxx running
[ 25] Mute Menu 1.1.0 szawesome mute_menu.amxx running
[ 26] Rock to Ban 1.02 Safety1st rock2ban.amxx running
[ 27] AFK Control 1.4.1 [Rnd neygomon afk_control.amx running
[ 28] Ping Faker 1.5a MeRcyLeZZ pingfaker.amxx running
[ 29] [ReAPI] Best player of 1.1.2 F@nt0M best_player_of_ running
[ 30] WeaponState Remember 0.0.4 Vaqtincha weaponstate_rem running
[ 31] GameName Changer 1.0 neugomon gamename_change running
[ 32] C4 Timer 1.1 SAMURAI & Remod: c4_timer.amxx running
[ 33] [190] VIP RBS 20.07.20 SKAJIbnEJIb vip_rbs.amxx running
[ 34] [190] First Players Re 20.06.06 SKAJIbnEJIb FirstPlayersRes running
[ 35] Top Awards 0.11c Safety1st top_awards4.amx running
[ 36] ResetScore 1.0 MakapoH. ResetScoreAuto. running
[ 37] Time for info 1.0 neugomon time_for_info.a running
[ 38] Weapon Icon 1.2 hoboman313/Zenix weapon_icon.amx running
[ 40] AES: Status Info 0.1 serfreeman1337 aes_status_info running
[ 41] AES: StatsX Info Rank 0.1 serfreeman1337 aes_statsx_rank running
[ 42] Center Msg Fix 0.4 mx?! CenterMsgFix.am running
[ 43] Knife WarnUP 1.0 ill knife_warm-up.a running
[ 44] Refill Weapon On Kill 0.0.1a Vaqtincha refill_weapon_o running
[ 45] Smoke: HealthNade 0.0.3 wopox1337 Smoke_HealthNad running
[ 46] AdminsOnline 1.0 ZETA [M|E|N] AdminsOnline.am running
[ 47] Advanced Ultimate Weap 0.1.0b steelzzz auw.amxx running
[ 48] [ReAPI] Auto Menu 0.1.644 CG automenu1.amxx running
[ 49] Night VIPs 1.1.1 szawesome night_vips.amxx running
[ 50] VoteMap After Round Li 1.0 neygomon votemap_after_w running
[ 51] Simple Damager 2.1.0 fl0wer simple_damager. running
[ 52] Demo Recorder 2.4.1 F@nt0M demo_recorder.a running
[ 53] [182] Parachute RBS 17.12.12 KRoT@L/JTP10181 parachute_rbs.a running
[ 54] NO_FITH_TEXT 1.1w perf No_fith_text.am running
[ 55] BlockReconnectRespawn 1.4-kill Sylwester brr_kill.amxx running
[ 56] Win Messages & Sounds 2.2 OciXCrom crx_winmessages running
[ 57] [ReAPI:AMXX] Buy Nades 0.0.3a steelzorrr amxx_buy_nades_ running
[ 58] [ReAPI] No Team Flash 0.0.3 Vaqtincha no_team_flash3. running
[ 59] SF Bets 0.1.5 serfreeman1337 sf_bets.amxx running
[ 60] Spect Bot 1.2 SKAJIbnEJIb & Bo SpectBot.amxx running
[ 61] Bomb pickup on use 1.0.1 voed use_bomb_pickup running
[ 62] Flash Bug Fix 1.2.0 F@nt0M/biba flash_fix.amxx running
[ 63] [190] Snipers RBS 20.06.06 SKAJIbnEJIb snipers_rbs.amx running
[ 64] Give HP 1.0 neygomon | 9art vampire.amxx running
[ 65] Restart Round Cmd 1.5 KaLo admin_restart.a running
[ 66] Anti Fast Strafe 10.1 Proffi+Seroff fast_strafe_det running
[ 67] Map List Generator 1.3 Leo_[BH] mapslist_genera running
[ 68] Admin Respawn [by RoGu 3.0 RoGuE adm_respawn.amx running
[ 69] Map Manager: Core 3.0.10 Mistrick map_manager_cor running
[ 70] Map Manager: Scheduler 0.1.7 Mistrick map_manager_sch running
[ 71] Map Manager: Rtv 0.1.1 Mistrick map_manager_rtv running
[ 72] Map Manager: Nominatio 0.1.3 Mistrick map_manager_nom running
[ 73] Map Manager: BlockList 0.0.3 Mistrick map_manager_blo running
[ 74] Map Manager: Online so 0.0.3 Mistrick map_manager_onl running
[ 75] Map Manager: Effects 0.0.10 Mistrick map_manager_eff running
[ 76] Map Manager: Informer 0.0.5 Mistrick map_manager_inf running
[ 77] Map Manager: Priority 0.0.1 Mistrick map_manager_pri running
[ 78] Map Manager: Advanced 0.0.7 Mistrick map_manager_adv running
[ 79] Advanced Experience Sy 0.5.9 [REA serfreeman1337/s aes_main.amxx running
[ 80] AES: CStrike Addon 0.5.9 [REA serfreeman1337/s aes_exp_cstrike running
[ 81] AES: Informer 0.5.9 [REA serfreeman1337/s aes_informer.am running
[ 82] AES: Admin Tools 0.5.9 [REA serfreeman1337/s aes_exp_editor. running
[ 83] ChatAdditions: Core v1.7.3 Sergey Shorokhov ChatAdditions_C running
[ 84] ChatAdditions: SQLite v1.7.3 Sergey Shorokhov CA_Storage_SQLi running
[ 85] CA: Gag v1.7.3 Sergey Shorokhov CA_Gag.amxx running
Amxx Модули
Код:
ReAimDetector 0.2.2 ReHLDS Team running
MySQL 1.9.0.5271 AMX Mod X Dev Team running
SQLite 1.9.0.5271 AMX Mod X Dev Team running
Fun 1.9.0.5271 AMX Mod X Dev Team running
Engine 1.9.0.5271 AMX Mod X Dev Team running
FakeMeta 1.9.0.5271 AMX Mod X Dev Team running
nVault 1.9.0.5271 AMX Mod X Dev Team running
CStrike 1.9.0.5271 AMX Mod X Dev Team running
CSX 1.9.0.5271 AMX Mod X Dev Team running
Ham Sandwich 1.9.0.5271 AMX Mod X Dev Team running
ReAPI 5.21.0.252 Asmodai & s1lent running
Sockets 1.9.0.5271 AMX Mod X Dev Team running
RegEx 1.9.0.5271 AMX Mod X Dev Team running
Sockets2 1.8.1.3746 HLSW Dev Team running
Ошибка
Код:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <colorchat>

new cvarMax_Strafe,Float:FTimeJump[33],Float:FLastJumps[33],StrafeNum[33];

public plugin_init()
{
register_plugin("Anti Fast Strafe","10.1","Proffi+Seroff");
cvarMax_Strafe = register_cvar("Max_Strafe", "3");
register_forward(FM_CmdStart, "Player_CmdStart");
RegisterHam(Ham_Player_Jump, "player", "Player_Jump",1);
}

public Player_Jump(id)
{
if(is_user_alive(id))
{
if(FTimeJump[id] >= get_gametime()) return HAM_IGNORED;
FTimeJump[id] = get_gametime() + 1.0; // После истечение 1 сек можно стрейфит не нажимая джамп, это тоже проблема.
}
return HAM_IGNORED;
}

public Player_CmdStart(id, uc_handle)
{
if(get_cvar_num("Max_Strafe") && is_user_alive(id))
{
if(FTimeJump[id] <= get_gametime()){
return FMRES_IGNORED;
}
else
{
if(pev(id,pev_flags) & (FL_ONGROUND | FL_FLY | FL_FROZEN)) StrafeNum[id] = 0;
static Float:Gametime;Gametime = get_gametime();
if(Gametime > (FLastJumps[id] + 0.3))
{
StrafeNum[id] = 0;
FLastJumps[id] = Gametime;
}
}
if(pev(id,pev_flags) & (FL_ONGROUND | FL_FLY | FL_FROZEN)) StrafeNum[id] = 0;
if(get_pdata_int(id, 247, 5) & (IN_MOVELEFT + поворот на лево 90°| IN_MOVERIGHT+ поворот направо на 90° | IN_FORWARD | IN_BACK) )
{
if( ++StrafeNum[id] >= get_pcvar_num(cvarMax_Strafe))
{
new Float:fVelocity[3]; pev(id, pev_velocity, fVelocity);
fVelocity[0] *= 0.2; fVelocity[1] *= 0.2;
set_pev(id, pev_velocity, fVelocity);
}
}
}
return FMRES_IGNORED;
}

public client_putinserver( id ) FTimeJump[id] = 0.0;
Нужны советы по антистрейфу. Может ловит такое условие? Если игрок (в воздухе нажмет на лево и повернет налево на 90° в течении 0.3 сек) то будет 1 детект, аналогична и вправо, при 2 детекте застопим игрока, при истечении 0.3 сек детект сбросится. Код в спойлере.
 

bake2

Пользователь
Регистрация
3 Окт 2019
Сообщения
167
Симпатии
4
углы+нажатие.:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>

new Float:FTimeJump[33],Float:FLastJumps[33];

#define PLUGIN "StrafeHack Detector"
#define VERSION "0.1"
#define AUTHOR "Mistrick"

#pragma semicolon 1

const PITCH = 0;
const YAW = 1;

const LEFT = 1;
const RIGHT = 2;



enum _:PLAYER_DATA
{
 m_BadFrame,
 m_Strafes,
 m_WarningStrafeAngle,
 Float:m_fLastStrafeCheck,
 Float:m_fLastWeaponDeploy
};
enum _:PLAYER_DATA
{
 m_BadFrame,
 m_Strafes,
 m_WarningStrafeAngle,
 Float:m_fLastStrafeCheck,
 Float:m_fLastWeaponDeploy
};
new g_ePlayerInfo[33][PLAYER_DATA];

new g_ePlayerLog[33][LOG_DATA];


new Float:g_fOldAngles[33][3];
new g_iOldTurning[33];
new Float:g_fOldStrafeAngles[33][3];
new Float:g_fOldAnglesDiff[33];

public plugin_init()
{
 register_plugin(PLUGIN, VERSION, AUTHOR);
 RegisterHam(Ham_Player_Jump, "player", "Player_Jump",1);
 register_forward(FM_CmdStart, "FM_CmdStart_Pre", false);
 register_forward(FM_PlayerPreThink, "FM_PlayerPreThink_Pre", false);


 for(new iId = CSW_P228, szWeaponName[32]; iId <= CSW_P90; iId++)
 {
  if(get_weaponname(iId, szWeaponName, charsmax(szWeaponName)))
  {
   RegisterHam(Ham_Item_Deploy, szWeaponName, "Ham_Item_Deploy_Pre", false);
  }
 }
}
public Player_Jump(id)
{
 if(is_user_alive(id))                                 
 {
  if(FTimeJump[id] >= get_gametime()) return HAM_IGNORED;
  FTimeJump[id] = get_gametime() + 1.0; // 1.0
 }
 return HAM_IGNORED;
}


public Ham_Item_Deploy_Pre(weapon)
{
 new id = get_pdata_cbase(weapon, m_pPlayer, XO_CBASEPLAYERWEAPON);
 g_ePlayerInfo[id][m_fLastWeaponDeploy] = _:get_gametime();
}
public FM_CmdStart_Pre(id, uc_handle, seed)
{
 if(!is_user_alive(id)) return FMRES_IGNORED;
  if(FTimeJump[id] <= get_gametime())
  {
    return FMRES_IGNORED;
  }
 if(pev(id,pev_flags) & (FL_ONGROUND | FL_FLY | FL_FROZEN))
 {
return FMRES_IGNORED;
 }
 new Float:fForwardMove; get_uc(uc_handle, UC_ForwardMove, fForwardMove);
 new Float:fSideMove; get_uc(uc_handle, UC_SideMove, fSideMove);

 
static Float:Gametime;Gametime = get_gametime();
if(Gametime < (FLastJumps[id] + 0.3))
{
if(get_pdata_int(id, 247, 5) & (IN_MOVELEFT + leftstrafe(true) | IN_MOVERIGHT+ rightstrafe(true)) )
  {                                                                         
        new Float:fVelocity[3]; pev(id, pev_velocity, fVelocity);
        fVelocity[0] *= 0.2; fVelocity[1] *= 0.2;     
        set_pev(id, pev_velocity, fVelocity);     
  }
}
 if(fForwardMove == 0.0 && fSideMove == 0.0) return FMRES_IGNORED;
 
 new Float:fTime = get_gametime();
 
 if(fTime < g_ePlayerInfo[id][m_fLastWeaponDeploy] + IGNORE_TIME) return FMRES_IGNORED;
 
 new bButtons = get_uc(uc_handle, UC_Buttons);
 
 new Float:fAngles[3]; pev(id, pev_angles, fAngles);
 new Float:fAnglesDiff[3]; vec_diff(fAnglesDiff, fAngles, g_fOldAngles[id]);
 
 new Float:fValue = floatsqroot(fForwardMove * fForwardMove + fSideMove * fSideMove);
 
 // block scripts with +right, +left
 if(bButtons & (IN_LEFT | IN_RIGHT))
 {
new Float:fVelocity[3]; pev(id, pev_velocity, fVelocity);
  fVelocity[0] *= 0.2; fVelocity[1] *= 0.2;
  set_pev(id, pev_velocity, fVelocity)
 }
 
 fForwardMove = floatabs(fForwardMove);
 fSideMove = floatabs(fSideMove);
 
 new iTurning = 0;
new Float:fDiff = fAngles[YAW] - g_fOldAngles[id][YAW];
 
new leftstrafe=false
new rightstrafe= false
 
 if(fDiff >= 180.0) fDiff -= 360.0;
 if(fDiff < -180.0) fDiff += 360.0;
 
 
 if(fDiff < 0.0)
 {
  iTurning = RIGHT;
  if(g_iOldTurning[id] == LEFT)
  {
   rightstrafe= true
   StrafeForward(id, fAngles);
  }
 }
 else if(fDiff > 0.0)
 {
  iTurning = LEFT;
  if(g_iOldTurning[id] == RIGHT)
  {
   leftstrafe=true
   StrafeForward(id, fAngles);
  }
}

 g_iOldTurning[id] = iTurning;
 
 g_fOldAngles[id] = fAngles;
}
 return FMRES_IGNORED;
}

public FM_PlayerPreThink_Pre(id)
{
{
 if(!is_user_alive(id)) return FMRES_IGNORED;
 }
StrafeForward(id, Float:angles[3])
{
 new Float:fAnglesDiff[3]; vec_diff(fAnglesDiff, angles, g_fOldStrafeAngles[id]);
 
 if(fAnglesDiff[YAW] >= 180) fAnglesDiff[YAW] -= 360.0;
 if(fAnglesDiff[YAW] < -180) fAnglesDiff[YAW] += 360.0;
 
 fAnglesDiff[YAW] = floatabs(fAnglesDiff[YAW]);
 
 //console_print(id, "strafe angle diff %f, old angle diff %f, turning [%d]", fAnglesDiff[YAW], g_fOldAnglesDiff[id], turning);
 
 if(fAnglesDiff[YAW] < MAX_ANGLE_CHECK)
 {
  new Float:fDiff = floatabs(fAnglesDiff[YAW] - g_fOldAnglesDiff[id]);
  new iOldWarn = g_ePlayerInfo[id][m_WarningStrafeAngle];
 
  if( fDiff < 0.1 )
  {
   g_ePlayerInfo[id][m_WarningStrafeAngle] += 5;
  }
  else if( fDiff < MIN_STRAFE_ANGLE_DIFF )
  {
   g_ePlayerInfo[id][m_WarningStrafeAngle]++;
  }
  else if(g_ePlayerInfo[id][m_WarningStrafeAngle])
  {
   g_ePlayerInfo[id][m_WarningStrafeAngle]--;
  }
 
new Float:fTime = get_gametime();

 
 g_fOldAnglesDiff[id] = fAnglesDiff[YAW];
 g_fOldStrafeAngles[id] = angles;

}
vec_diff(Float:vec[3], Float:new_vec[3], Float:old_vec[3])
{
 vec[0] = new_vec[0] - old_vec[0];
 vec[1] = new_vec[1] - old_vec[1];
 vec[2] = new_vec[2] - old_vec[2];
}
equal_null(Float:vec[3])
{
 return (vec[0] == 0.0 && vec[1] == 0.0) ? true : false;
}

public client_putinserver( id ) FTimeJump[id] = 0.0;
 
Сверху Снизу