Autotalk after death

Дополнения к OpenKore, расширяющиее её функциональность, называются плагинами.

Модератор: 4epT

KillJoy
Начинающий
Сообщения: 42
Зарегистрирован: Вс май 20, 2007 7:37 pm

Autotalk after death

Сообщение KillJoy »

Вот плагин:

Код: Выделить всё

package autotalk;

use strict;
use Plugins;
use AI;
use Commands;
use Globals;
use Log;
use Utils;

Plugins::register('autotalk', 'talks to NPC after death or via command', \&unload);
my $mainLoopHook = Plugins::addHook('AI_pre', \&mainLoop);
my $hookCommandPost = Plugins::addHook('Command_post', \&onCommandPost);

sub unload {
Plugins::delHook('AI_pre', $mainLoopHook);
Plugins::delHook('Command_post', $hookCommandPost);
}

sub onCommandPost {
my (undef, $args) = @_;
my ($cmd, $subcmd) = split(' ', $args->{input}, 2);

if ($cmd eq "autotalk") {
AI::queue('talkAuto');
$args->{return} = 1;
}
}

sub mainLoop {
# Queue talkAuto after death
if (AI::action eq "dead" && !$::char->{dead}) {
if (!$::char->{resurrected}) {
# Force talk-auto after death
AI::queue('talkAuto') if ($::config{'talkAuto_afterDeath'});
}
}

AUTOTALK: {

if (AI::action eq "talkAuto" && AI::args->{done}) {
# Autotalk finished
AI::dequeue;

} elsif (AI::action eq "talkAuto") {
# Main autotalk block
my $args = AI::args;

# Stop if talkAuto is not enabled, or if the specified NPC is invalid
$args->{npc} = {};
main::getNPCInfo($::config{'talkAuto_npc'}, $args->{npc});
if (!defined($args->{npc}{ok})) {
$args->{done} = 1;
return;
}

# Determine whether we have to move to the NPC
my $do_route;
if ($::field{'name'} ne $args->{npc}{map}) {
$do_route = 1;
} else {
my $distance = Utils::distance($args->{npc}{pos}, $::char->{pos_to});
if ($distance > $::config{'talkAuto_distance'}) {
$do_route = 1;
}
}

if ($do_route) {
Log::message "Calculating auto-talk route to: $::maps_lut{$args->{npc}{map}.'.rsw'}($args->{npc}{map}): $args->{npc}{pos}{x}, $args->{npc}{pos}{y}\n", "route";
main::ai_route($args->{npc}{map}, $args->{npc}{pos}{x}, $args->{npc}{pos}{y},
attackOnRoute => 1,
distFromGoal => $::config{'talkAuto_distance'});
} else {
# Talk to NPC if we haven't done so
if (!defined($args->{queuedTalkSequence})) {
$args->{queuedTalkSequence} = 1;

if (defined $args->{npc}{id}) {
main::ai_talkNPC(ID => $args->{npc}{id}, $::config{'talkAuto_npc_steps'}); 
} else {
main::ai_talkNPC($args->{npc}{pos}{x}, $args->{npc}{pos}{y}, $::config{'talkAuto_npc_steps'}); 
}

return;
}

$args->{done} = 1;
}
}

} #END OF BLOCK AUTOTALK
}

return 1;
Вот че надо в конфиге писать

Код: Выделить всё

talkAuto_afterDeath 1 (вкл\выкл)
talkAuto_distance 8(дистанция с хилером или)
talkAuto_npc prontera XXX  XXX (позиция хилера)
talkAuto_npc_steps  (шагы разовора как с кафрой: типа с r3 c)
Де его взял непомню но помню что на opencore на форуме шас если найду. Во нашел http://forums.openkore.com/viewtopic.ph ... sc&start=0
Последний раз редактировалось KillJoy Ср мар 19, 2008 10:29 am, всего редактировалось 4 раза.
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Парень, давай плагины плиз выкладывать в теге

Код: Выделить всё

 и/или в атаче!  :evil:  И не забудь сцылку поставить, где ты его взял.  :x
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
KillJoy
Начинающий
Сообщения: 42
Зарегистрирован: Вс май 20, 2007 7:37 pm

Сообщение KillJoy »

Незнал первый раз тему создал =)
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Гхм... тему впервые может и создал, но на технические форумы-то чай не первый день ходишь? Смотри, как делают опытные пацаны - и делай сам так же.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
KillJoy
Начинающий
Сообщения: 42
Зарегистрирован: Вс май 20, 2007 7:37 pm

Сообщение KillJoy »

Все зделано норм?
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Ты же сам видишь, что нет. :twisted:
Тэг "code" среди прочего сохраняет отступы - что делает код легко читаемым. А у тебя они (отступы) уже угроблены. Надо заново скопировать код плагина со странички ОпенКоры.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

я уже выкладывал такой макросик, но повторюсь, так как считаю что он удобнее чем плагин)

удобнее тем, что бот не будет вставить на одну и тоже точку у нпц, тем самым палиться.

Код: Выделить всё

automacro needheal { 
console /Map Change: prontera.gat/ 
disabled 0 
call heall 
} 

macro heall { 
$X = @rand(153, 157) 
$Y = @rand (180, 188) 
do move $X $Y 
do talknpc 149 192 r0 
}
вот эту строчку мона заменить console /Map Change: prontera.gat/
приятнее было б на if (!$::char->{resurrected}), но это к 4ерТу
ZorDen
Энтузиаст
Сообщения: 86
Зарегистрирован: Пт мар 02, 2007 7:28 pm
Контактная информация:

Сообщение ZorDen »

У макросов преоритет больше, чем у конфига? В плане что будет выполняться на практике: бот умирает, карта меняется на карту сохранения и он начинает сидеть, или будет умирать, хиляться с помощью NPC и идти дальше по своим делам?
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

ZorDen
Другими словами ты сомневаешься, что Click выложил полезный рабочий макрос? Подумай теперь о приоритетах сам. :twisted:
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Сообщение vit »

KillJoy, чувак, да, отступы не сохранены. Еще ты умудрился вырезать шапку. Ох не чтите вы товарещей разработчегов, ох не чтите...
dvdc
Бывалый
Сообщения: 556
Зарегистрирован: Вс ноя 05, 2006 1:43 pm
Контактная информация:

Сообщение dvdc »

и копирайты не сохранены... Joseph - автор данного плагина.
и пожалуйста, на будущее, если в тексте плагина есть строчка с описанием лицензии - она должна быть. как минимум из уважения к авторам плагинов :)

Код: Выделить всё

# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
спасибо.
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Я думаю это проблемы нупства. "Подростет" чел, поймет, что к чему.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
KillJoy
Начинающий
Сообщения: 42
Зарегистрирован: Вс май 20, 2007 7:37 pm

Сообщение KillJoy »

c4 сем =)
[mod="piroJOKE"]?[/mod]
ZorDen
Энтузиаст
Сообщения: 86
Зарегистрирован: Пт мар 02, 2007 7:28 pm
Контактная информация:

Сообщение ZorDen »

piroJOKE, сомневаться в квалифицированности Click'a не приходится. Опытным путём выяснил, что: Макрос имеет приоритет выше, чем конфиг.
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

ZorDen
Ты немного в терминах путаешься. На самом деле, тут нет никаких таких "приоритетов"! Точнее есть, но не в том, что ты подумал. Вот сатри: положим чар уселся лечиццо. Тут ты ему с консоли пишешь move икс игрек. Он естественно встает и топает. Так вот - нет разницы, кто подаст команду move - ты или макрос.

ЗЫ: Что такое "приоритет" вообще? Это когда за право чо-то сделать борюцца два одинаковых или очень похожих объекта. В таких случаях можно говорить, что у одного из них например выше приоритет. А насчет макро/конфига и таких условий - среда абсолютно разнородная.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Ответить