Jerry, 2006-10-13:
piroJOKE:Кто-нибудь за свю жизнь хоть раз использовал "dynamic code reloading", или хотя бы знает о его существовании ? :)
Jerry:Кажется слышал, что эта штука работает только когда ты работаешь прямо из-под перла, а не из под start/wxstart. Короче, не знаю. Эм... а о чем вообще речь? Грубо говоря, откуда ты выцепил такое словосочетание?
piroJOKE:копался в сырцах хотел понять как работают конфиги и плагины.
Ты кстати, знаешь, как они работают? Там какое-нибудь подобие интерпретатора есть, или тупо как параметры проверяется?
piroJOKE:Плагины это вообще ЛОЛ. Я сначала думал что они просто врезаются в код где угодно, но ничего подобного.
Просто модули содержат в ключевых местах вызов каких-то функций... Вот к этим местам и могут подключаться плагины, только и всего!
Ну вот пример... В плагине написано:
my $hook = Plugins::addHook('AI_post', \&doCommand);
Эта штука просто подлючается к \src\functions.pl вот тут:
Plugins::callHook('AI_post');
И всё.
piroJOKE:PS: Ты смотрел команду rc ("reload code") ?
Jerry:Помучался немного с запуском без start.exe - пока ничего не получилось. Кочаю новый Перл, может в этом дело.
piroJOKE:(...)
В скиппере есть С-подобный интерпретатор. Т.е. конфиги там пишутся прямо чуть лии не кодом.
Вот так:Код: Выделить всё
OnServerMsg(string msg): if ( IsMatchPattern(".*White RO.*", msg) == 1 ) then Print("White RO is announced!") Say("public", "/omg") WhiteROAnnounce = 1 endif if ( WhiteROAnnounce == 1 and IsMatchPattern("аЗЕТ *([0-9]+)\.([0-9]+) *- *([0-9]+)\.([0-9]+)", msg) == 1 ) then Print("White RO will start since " + GetMatchedSubString(1) + ":" + GetMatchedSubString(2) + " until " + GetMatchedSubString(3) + ":" + GetMatchedSubString(4)) WhiteROStart = ( ToInt(GetMatchedSubString(1)) * 60 * 60 ) + ( ToInt(GetMatchedSubString(2)) * 60 ) WhiteROEnd = ( ToInt(GetMatchedSubString(3)) * 60 * 60 ) + ( ToInt(GetMatchedSubString(4)) * 60 ) endif if ( WhiteROAnnounce == 1 and IsMatchPattern("[АТВг№|НХЎ|г№]+ *([0-9]+) №Т·Х", msg) == 1 ) then Print("White RO will start in " + GetMatchedSubString(1) + "minutes") WhiteROStart = Now() + ( ToInt(GetMatchedSubString(1)) * 60 ) WhiteROEnd = WhiteROStart + ( 3600 ) endif end
Jerry:А... ага, это я видел. Согласись, голову там сломать можно.
Но результат на выходе... будет ли польза от такой imho чрезмерной гибкости?
фиг знает, как показывает практика, 95% юзеров нужна одна большая красная кнопка "ботать" и ничего больше :)