Created
March 13, 2014 13:15
-
-
Save Southclaws/9528249 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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