Plugin Guide

Материал из Руководство по OpenKore
Перейти к: навигация, поиск

На данный момент (апрель 2010 года) имеется устаревший мануал по написанию плагинов - How to write plugins for OpenKore. Настало время переписать его. Приглашаются все желающие помочь написать новый мануал. По-моему стоило бы осветить следующие вопросы: 1. Какие модули подключать и за что отвечает тот или иной модуль? Например:

use strict;
use Plugins;
use Settings;
use Log qw(message error);
use Utils;
use Globals;
use Task;
use Task::MapRoute;
use Task::TalkNPC;
strict - прагма, не модуль
Log - импорт функций вывода на консоль
Globals - импорт переменных $char, %config etc
остальное нужно для конкретных задач, и для них же надо уже знать, что это за модуль, как работает и зачем нужен
Utils, Misc - некоторые функции общего назначения

2. Как написать плагин, который добавляет новую консольную команду?

my $commands = Commands::register(
	[$command, $description, $coderef],
	[$command, $description, $coderef],
);

Commands::unregister($commands); # в unload

3. Как сделать так, чтобы консольная команда понимала параметры?

sub handler {
	my ($command, $args_string) = @_;
	Log::message($args_string);
}

4. Как работать с хуками?

5. Какие хуки есть?

http://forums.openkore.com/viewtopic.php?t=8648

6. Как следует работать с параметрами конфига?

чтение: $Globals::config{param}
запись: Misc::configModify('param', 'value')

7. А с блочными?

см. Data::Dumper или исходники мест, работающих с блоками конфига

8. Как сделать таймер, чтобы плагин срабатывал через определённое время?

хук mainLoop_pre

9. Как работать с очередью ИИ?

Кто написал хотя бы три плагина для OpenKore уже мог выработать для себя определённую схему написания плагина, которую можно было бы взять за основу начинающим. Во многих случаях разработчик плагина сталкивается с однотипными задачами, которые как раз и можно было бы упомянуть в данном мануале. Например, прежде чем прочитать значение какого-то параметра конфига, следует проверить - а есть ли этот параметр вообще?

В общем случае, не стоит. Автовивифицировать там нечего; undef выражается пустой строкой, она же будет при наличии параметра без значения.

Я уверен, что есть много других интересных тем о написании плагинов для OpenKore.


Примечание. Смотри также (FAQ) Мой первый плагин. По-Perl-о.

Примечание. Смотри также Как писать плагины для OpenKore.

Примечание. Смотри также Вопрос по плагину - как сделать хук с передачей параметров.

  • среди плагинов в svn можно найти неплохие примеры