Регистрируется трэйс-атака для ненужных энтитей:
Код
RegisterHam(Ham_TraceAttack, "func_breakable", "HamHook_Entity_TraceAttack", false);
RegisterHam(Ham_TraceAttack, "hostage_entity", "HamHook_Entity_TraceAttack", false);
RegisterHam(Ham_TraceAttack, "info_target", "HamHook_Entity_TraceAttack", false);
Даже если в теории предположить, что для них данное событие будет вызвано (в роли атакующего), то они потом в событии все равно стопроцентно отсекаются проверкой:
Код
public HamHook_Entity_TraceAttack(const iEntity, const iAttacker, Float: flDamage)
{
if (!is_user_connected(iAttacker))
return HAM_IGNORED;
Да и для отлова подошел бы Ham_TakeDamage.
Отрицание целой функции:
Код
if (!(get_user_flags(id) & ADMIN_LEVEL_D))
Легко заменяется на отрицание побитности функции получения флага:
Код
if (~get_user_flags(id) & ADMIN_LEVEL_D)
Подобный код будет заблочен некоторыми версиями протекторов:
Код
client_cmd(id, "gitara")
client_cmd(id, "admin_get_balrog3")
Стоит заменить на натив или на форвард.
Ну про мелочи я уже молчу. В принципе нормально, учитывай описанные ошибки на будущее.