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]); } } } }