Table of Contents

Оповещение об ошибках

Различные функции могут быть использованы неправильно. Когда это происходит, вы можете добавить вывод сообщений об ошибке в функцию. Но будет ли записано это сообщение в журнал (историю команд) сервера в многопользовательской игре? Не забудете ли вы использовать PrintBold вместо Print, если ошибку вызовет не игрок? Что если вы захотите возможность отключения оповещений об ошибках? И вообще, как библиотека должна уведомлять вас об ошибках?

Для решения всех этих проблем ACSUtils предоставляет стандартизированный обработчик ошибок. Сообщения об ошибках вызываются с помощью набора функций, которые передают их в пользовательский обработчик ошибок вашего проекта (смотрите статью Именованные скрипты).

#define ACSUTILS_ERROR_HANDLER myproject_errorhandler
#include "acsutils.acs"

script myproject_errorhandler (int type, int message)
{
	Log(s:"error: ", s:message); // Запись в историю команд сервера
	printbold(s:"error: ", s:message); // Вывод ошибки всем игрокам
}

Обработчик ошибок может делать что угодно с его оповещениями: показывать их только администратору, может скрывать сообщения, если установлен соответствующий CVar или показывать их вообще всем.

Обработчик ошибок также принимает тип ошибки. Существуют следующие типы ошибок:

Функции сообщения об ошибках

Чтобы сообщить об ошибке, используйте одну из функций ниж, соответствующих вышеописанным типам ошибок:

ProgramError (Программная ошибка)

void ProgramError(str message)

Вызывает ACSERROR_PROGRAM с указанным сообщением.

MappingError (Ошибка маппинга)

void MappingError(str message)

Вызывает ACSERROR_MAPPING с указанным сообщением.

LimitError (Превышение лимитов)

void LimitError(str message)

Вызывает an ACSERROR_LIMIT с указанным сообщением.