Violation hooks for other pluginsSuggestion
plz add violations hooks for other plugins!
Arkan THE BEST! )
it's so hard?!
ez:
if (Interface.CallHook("OnArkanAIMViolation", player, violation) != null)
{
    return;
}​
I will add in the next update:

if (Interface.CallHook("API_ArkanOnAimbotDetect", player, AIMViolationsCnt, JsonConvert.SerializeObject(violationData)) != null)
{
	return;
}

if (Interface.CallHook("API_ArkanOnNoRecoilDetect", player, NRViolationsCnt, JsonConvert.SerializeObject(violationData)) != null)
{
	return;
}							

if (Interface.CallHook("API_ArkanOnInRockDetect", player, IRViolationsCnt, JsonConvert.SerializeObject(violationData)) != null)
{
	return;
}

private string API_ArkanGetPlayersViolationsData()
{
	if(PlayersViolations != null)
	{
		return JsonConvert.SerializeObject(PlayersViolations);
	}
	return null;
}​


hooks example:

private void API_ArkanOnNoRecoilDetect(BasePlayer player, int NRViolationsNum, string json)
{
	if (json != null)
	{
		NoRecoilViolationData nrvd = JsonConvert.DeserializeObject<NoRecoilViolationData>(json);				
		if (nrvd != null)
		{
			Puts($"API_ArkanOnNoRecoilDetect works! Player {player.displayName}, #{NRViolationsNum}, Ammo: {nrvd.ammoShortName}, Weapon: {nrvd.weaponShortName}\n {json}");
		}
	}
}

private void API_ArkanOnAimbotDetect(BasePlayer player, int AIMViolationsNum, string json)
{
	if (json != null)
	{				
		AIMViolationData aimvd = JsonConvert.DeserializeObject<AIMViolationData>(json);
		if (aimvd != null)
		{
			Puts($"API_ArkanOnAimbotDetect works! Player {player.displayName}, #{AIMViolationsNum}, Ammo: {aimvd.ammoShortName}, Weapon: {aimvd.weaponShortName}\n {json}");
		}
	}
} 

private void API_ArkanOnInRockDetect(BasePlayer player, int IRViolationsNum, string json)
{
	if (json != null)
	{				
		IRViolationData irvd = JsonConvert.DeserializeObject<IRViolationData>(json);
		if (irvd != null)
		{
			Puts($"API_ArkanOnInRockDetect works! Player {player.displayName}, #{IRViolationsNum}, Entity: {irvd.entityName}\n {json}");
		}
	}
}

[ChatCommand("getarkandata")]
private void GetArkanPlayersViolationsData()
{			
	string json = Arkan?.Call<string>("API_ArkanGetPlayersViolationsData");
	if (json != null)
	{
		PlayersViolationsData PlayersViolations = JsonConvert.DeserializeObject<PlayersViolationsData>(json);
		Puts($"API_ArkanGetPlayersViolationsData works! Players count { PlayersViolations.Players.Count}\n {json}");					
	}
	
}	
nice! thx
Just today I was thinking of making a mod and I needed the Api of this great plugin. This will make the task much easier, I look forward to that update!