Plugin Guide — различия между версиями

Материал из Руководство по OpenKore
Перейти к: навигация, поиск
м
Строка 10: Строка 10:
 
  use Task::MapRoute;
 
  use Task::MapRoute;
 
  use Task::TalkNPC;
 
  use Task::TalkNPC;
 +
 +
: strict - прагма, не модуль
 +
: Log - импорт функций вывода на консоль
 +
: Globals - импорт переменных $char, %config etc
 +
: остальное нужно для конкретных задач, и для них же надо уже знать, что это за модуль, как работает и зачем нужен
 +
: Utils, Misc - некоторые функции общего назначения
 +
 
#Как написать плагин, который добавляет новую консольную команду?
 
#Как написать плагин, который добавляет новую консольную команду?
 +
 +
my $commands = Commands::register(
 +
[$command, $description, $coderef],
 +
[$command, $description, $coderef],
 +
);
 +
 +
Commands::unregister($commands); # в unload
 +
 
#Как сделать так, чтобы консольная команда понимала параметры?
 
#Как сделать так, чтобы консольная команда понимала параметры?
#Как работать с хуками? Какие хуки есть?
+
 
#Как следует работать с параметрами конфига? А с блочными?
+
sub handler {
 +
my ($command, $args_string) = @_;
 +
Log::message($args_string);
 +
}
 +
 
 +
#Как работать с хуками?
 +
 
 +
#Какие хуки есть?
 +
 
 +
: http://forums.openkore.com/viewtopic.php?t=8648
 +
 
 +
#Как следует работать с параметрами конфига?
 +
 
 +
: чтение: $Globals::config{param}
 +
: запись: Misc::configModify('param', 'value')
 +
 
 +
#А с блочными?
 +
 
 +
: см. Data::Dumper или исходники мест, работающих с блоками конфига
 +
 
 
#Как сделать таймер, чтобы плагин срабатывал через определённое время?
 
#Как сделать таймер, чтобы плагин срабатывал через определённое время?
 +
 +
: хук mainLoop_pre
 +
 
#Как работать с очередью ИИ?
 
#Как работать с очередью ИИ?
  
Строка 26: Строка 63:
  
 
'''Примечание.''' Смотри также [http://rofan.ru/viewtopic.php?f=8&t=8976 Вопрос по плагину] - как сделать хук с передачей параметров.
 
'''Примечание.''' Смотри также [http://rofan.ru/viewtopic.php?f=8&t=8976 Вопрос по плагину] - как сделать хук с передачей параметров.
 +
 +
* среди плагинов в svn можно найти неплохие примеры

Версия 01:30, 30 апреля 2010

На данный момент (апрель 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 - некоторые функции общего назначения
  1. Как написать плагин, который добавляет новую консольную команду?
my $commands = Commands::register(
	[$command, $description, $coderef],
	[$command, $description, $coderef],
);

Commands::unregister($commands); # в unload
  1. Как сделать так, чтобы консольная команда понимала параметры?
sub handler {
	my ($command, $args_string) = @_;
	Log::message($args_string);
}
  1. Как работать с хуками?
  1. Какие хуки есть?
http://forums.openkore.com/viewtopic.php?t=8648
  1. Как следует работать с параметрами конфига?
чтение: $Globals::config{param}
запись: Misc::configModify('param', 'value')
  1. А с блочными?
см. Data::Dumper или исходники мест, работающих с блоками конфига
  1. Как сделать таймер, чтобы плагин срабатывал через определённое время?
хук mainLoop_pre
  1. Как работать с очередью ИИ?

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


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

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

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

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