|
|
ВведениеЧасто имеющиеся плагины не реализуют желаемых функций. Конечно, можно заказать новую функциональность, но реализацию можно ждать долго, либо реализация будет не совсем соответствовать заявке. Что делать? - Писать свой плагин. Простейший плагинВ принципе, простейший плагин - это фрагмент JavaScript кода, не выполняющий никаких действий. Но такой плагин никому не нужен. Вот как выглядит скелет стандартного подключаемого модуля: (function(){
return {
parameterNumber: 12345,
parameterString: "qwerty",
parameterBool: true,
toString: function() { // Название плагина
return "Простейший плагин";
},
getProperties: function() { // запрос конфигурируемых параметров
return [
{name:"Параметр 1", value:this.parameterNumber},
{name:"Параметр 2", value:this.parameterString},
{name:"Параметр 3", value:this.parameterBool}
];
},
setProperties: function(a) { // применение изменённых настроек
this.parameterNumber = a[0].value;
this.parameterString = a[1].value;
this.parameterBool = a[2].value;
},
Init: function() {
return this;
}
}.Init();
})()Вызов анонимной функции гарантирует, что процесс инициализации плагина не оставит после себя каких-либо артефактов, а также гарантирует, что локальные переменные не пересекутся с уже объявленными ранее переменными и членами объекта top. Функции-члены toString, getProperties, setProperties - опциональны (их можно опустить) и выполняют следующие задачи: - toString - позволяет отображать имя плагина в списке плагинов в настройках Менеджера
- getProperties - признак того, что плагин конфигурируемый, возвращает массив объектов для настройки своих параметров пользователем
- setProperties - признак того, что плагин может применять отредактированные пользователем настройки
Функция-член Init упрощает процедуру инициализации плагина, позволяя написать код "в одну строку", без создания локальных переменных. Для доступа к объекту менеджера плагинов следует использовать выражение top.combats_plugin_manager, который реализует следующие свойства и методы: - getMainFrame() - возвращает объект основного фрейма игрового окна, того самого, где открывается инвентарь, где просматриваются заявки на поединки, где отображаются игровые локации
- add_chat(s) - выводит сообщения, заданные строкой s в чат, сообщения должны быть разделены тэгом
- getHTTPRequest() - возвращает объект XMLHttpRequest
- attachEvent(event, method) - позволяет подключить обработчик событий method на событие с именем event
- detachEvent(event, method) - отключить обработчик событий method от события с именем event
- fireEvent(event, eventObj) - генерирует событие с именем event, передавая в обработчики объект eventObj
- get_binded_method(obj, method, ...) - позволяет создать функцию, привязанную к объекту obj, вызов такой функции гарантирует, что при испольнении метода method объект this будет ссылаться на obj
- addLog(message) - заносит в журнал событий текст, заданные параметром message
- logError(plugin,e) - заносит в журнал событий информацию об ошибке e в плагине plugin, опционально сообщение может быть отображено в чате, если это разрешено в настройках менеджера
|