Skip to content

Instantly share code, notes, and snippets.

@Southclaws
Created March 13, 2014 13:15
Show Gist options
  • Save Southclaws/9528249 to your computer and use it in GitHub Desktop.
Save Southclaws/9528249 to your computer and use it in GitHub Desktop.
// Experimental hack detector
static
def_CurrentCheckDefence[MAX_PLAYERS],
Timer: def_AngleCheckTimer[MAX_PLAYERS];
public OnPlayerEnterButtonArea(playerid, buttonid)
{
new defenceid = def_ButtonDefence[buttonid];
if(Iter_Contains(def_Index, defenceid))
{
if(def_Data[defenceid][def_open])
{
new Float:angle = absoluteangle(def_Data[defenceid][def_rotZ] - GetButtonAngleToPlayer(playerid, buttonid));
if(angle < 90.0 || angle > 270.0)
{
stop def_AngleCheckTimer[playerid];
def_CurrentCheckDefence[playerid] = defenceid;
def_AngleCheckTimer[playerid] = repeat DefenceAngleCheck(playerid, defenceid);
}
}
}
#if defined def_OnPlayerEnterButtonArea
return def_OnPlayerEnterButtonArea(playerid, buttonid);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerEnterButtonArea
#undef OnPlayerEnterButtonArea
#else
#define _ALS_OnPlayerEnterButtonArea
#endif
#define OnPlayerEnterButtonArea def_OnPlayerEnterButtonArea
#if defined def_OnPlayerEnterButtonArea
forward def_OnPlayerEnterButtonArea(playerid, buttonid);
#endif
public OnPlayerLeaveButtonArea(playerid, buttonid)
{
new defenceid = def_ButtonDefence[buttonid];
if(Iter_Contains(def_Index, defenceid))
{
if(def_CurrentCheckDefence[playerid] == defenceid)
stop def_AngleCheckTimer[playerid];
}
#if defined def_OnPlayerLeaveButtonArea
return def_OnPlayerLeaveButtonArea(playerid, buttonid);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerLeaveButtonArea
#undef OnPlayerLeaveButtonArea
#else
#define _ALS_OnPlayerLeaveButtonArea
#endif
#define OnPlayerLeaveButtonArea def_OnPlayerLeaveButtonArea
#if defined def_OnPlayerLeaveButtonArea
forward def_OnPlayerLeaveButtonArea(playerid, buttonid);
#endif
timer DefenceAngleCheck[100](playerid, defenceid)
{
new Float:angle = absoluteangle(def_Data[defenceid][def_rotZ] - GetButtonAngleToPlayer(playerid, def_Data[defenceid][def_buttonId]));
if(90.0 < angle < 270.0)
{
MsgAdminsF(3, YELLOW, " > [TEST] Player %p moved through defence %d at %.1f, %.1f, %.1f", playerid, defenceid,
def_Data[defenceid][def_posX], def_Data[defenceid][def_posY], def_Data[defenceid][def_posZ]);
stop def_AngleCheckTimer[playerid];
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment