Witam, potrzebuję zrobić tak aby nie wykrywało gdy mamy nóż lub granat wyciągnięty.
public Fwd_TraceLine(Float:StartPos[3], Float:EndPos[3], SkipMonsters, id, Trace)
{
if(!is_user_alive(id))
return FMRES_IGNORED;
if(!gSettings[CHECK_AIMBOT])
return FMRES_IGNORED;
static Float:fGameTime;
fGameTime = get_gametime();
if(fNextAimCheck[id] < fGameTime)
{
static iTarget, iHitGroup, Button;
iTarget = get_tr2(Trace, TR_pHit);
iHitGroup = (1 << get_tr2(Trace, TR_iHitgroup));
Button = pev(id, pev_button);
if(!is_user_alive(iTarget))
return FMRES_IGNORED;
if(get_pdata_int(id, FM_TEAM_OFFSET) != get_pdata_int(iTarget, FM_TEAM_OFFSET))
{
if((iHitGroup & FM_HITGROUP_HEAD) && (Button & IN_ATTACK))
Detections[id][AIMBOT]++;
else if(((Button <= 0) || (!(iHitGroup & FM_HITGROUP_HEAD) && (LastHeadshot[id] < fGameTime))) && (Detections[id][AIMBOT] > 0))
Detections[id][AIMBOT]--;
if(Detections[id][AIMBOT] >= get_pcvar_num(c_6))
{
set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 6.0, 5.0, 1.0, 1.0, 3);
//show_hudmessage(id, "[Hack Hunter] Aimbot warning!");
show_hudmessage(id,"%L",LANG_PLAYER,"AIM_BOT");
client_cmd(id, "spk %s", gWarningSounds[1]);
}
if(Detections[id][AIMBOT] >= get_pcvar_num(c_7))
PunishUser(id, "*AimBot*");
fNextAimCheck[id] = fGameTime + get_pcvar_num(c_8);
}
}
return FMRES_IGNORED;
}
I mam jeszcze coś na speedhacka, patrzy na to kto jaki dystans przebiegł w krótkim czasie, tylko jest taki problem że gdy jest koniec rundy łapie przeniesienie z miejsca docelowego na respa jako speedhacka..
Czy da się to jakoś wyłączyć/ sprawić żeby nie wykrywał gdy jest koniec i początek rundy?
public EventNewRound()
{
static Players[32], iNum;
get_players(Players, iNum, "ch");
for(new i = 0 ; i < iNum ; i++)
{
if(gSettings[CHECK_SPEEDHACK])
{
static Float:fOrigin[3];
pev(Players[i], pev_origin, fOrigin);
CopyVector(fOrigin, fLastOrigin[Players[i]]);
}
}
}
public CheckSpeedHack()
{
static Players[32], iNum, id;
get_players(Players, iNum, "ach");
for(new i = 0 ; i < iNum ; i++)
{
id = Players[i];
if(cs_get_user_driving(id) == 0)
{
if(!(pev(id,pev_flags) & FL_ONGROUND) || !(pev(id,pev_flags) & FL_INWATER) || !(pev(id,pev_flags) & FL_PARTIALGROUND))
{
static Float:fOrigin[3], Float:fOldOrigin[3], Float:fDistance;
pev(id, pev_origin, fOrigin);
CopyVector(fLastOrigin[id], fOldOrigin);
if(gSettings[SPEEDHACK_SECURE])
{
fOrigin[2] = 0.0;
fOldOrigin[2] = 0.0;
}
fDistance = get_distance_f(fOrigin, fOldOrigin);
if(Detections[id][SPEEDHACK] >= get_pcvar_num(c_11))
Detections[id][SPEEDHACK]--;
if(Detections[id][SPEEDHACK] < 0)
Detections[id][SPEEDHACK] = 0;
if(fDistance >= get_pcvar_num(c_3))
Detections[id][SPEEDHACK] += get_pcvar_num(c_4);
if(Detections[id][SPEEDHACK] >= get_pcvar_num(c_9))
{
set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 6.0, 5.0, 1.0, 1.0, 3);
//show_hudmessage(id, "[Hack Hunter] Speedhack warning!");
show_hudmessage(id,"%L",LANG_PLAYER,"SPEED_HACK");
client_cmd(id, "spk %s", gWarningSounds[1]);
}
if(Detections[id][SPEEDHACK] >= get_pcvar_num(c_5))
PunishUser(id, "*SpeedHack*");
CopyVector(fOrigin, fLastOrigin[id]);
}
}
}
}


Dodatki SourceMod














