Эврика!!! Free Cast у сагов заработало!!

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

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

Аватара пользователя
AndreyLun
Грамотный
Сообщения: 280
Зарегистрирован: Пн фев 05, 2007 5:55 pm

Эврика!!! Free Cast у сагов заработало!!

Сообщение AndreyLun »

Наконецто! болбил, я freecast.pl для Сага, долбил и сделал) и всё РАБОТАЕТ ТЕПЕРЬ!
Значит так, обьясню что я сделал, что плагин заработал.
Ну сначало просто скинул freecast.pl в соответствующую папку, попробовал не идёт пишет ошибку (см. скрин). И обратил внимание на выделеную уже мной строчку с надписью "line 18"
Дальше открыл в DzSoft Perl Editor этот файл, нашёл эту строчку(см второй скрин 18 строчка выделенная). Ну я и подумал, раз в этом дело, может там что то поменять?) я в настройках и созданиях плагинов полный нуб, поэтому стал просто всячески издеваться над словом Skills. Ну и проверял постоянно.
И ВДРУГ когда я просто стёр последнюю букву "s", сохранения и запуска бота, саг ЗАРАБОТАЛ! Значит причина была в этой строчке. Можно сказать мну повезло) и я рад)
Скидываю файл для других, пусть пользуются)

package freeCast;

# This plugin is licensed under the GNU GPL
# Copyright 2005 by kaliwanagan
# --------------------------------------------------
# How to install this thing..:
#
# The plugin will activate iff:
# you have the skill free cast at level 1 or higher, and
# attackUseWeapon is set to 1, and
# you are using an attackSkillSlot that has a cast bar

use strict;
use Plugins;
use Globals;
use Log qw(message warning error);
use AI;
use skill;
use Misc;
use Network;
use Network::Send;
use Utils;
use Math::Trig;

Plugins::register('Free Cast', 'experimental sage free cast support', \&Unload);
my $hook1 = Plugins::addHook('AI_post', \&call);
my $ID;
my $monster;

my %timeout;

sub Unload {
Plugins::delHook('AI_post', $hook1);
}

sub call {
my $i = AI::findAction("attack");
if (defined $i) {
my $args = AI::args($i);
$ID = $args->{ID};
$monster = $monsters{$ID};
}
if (AI::action eq "skill_use") {
cast();
}
}

sub cast {
if (($config{'attackUseWeapon'}) && ($char->{skills}{SA_FREECAST}{lv}) && main::timeOut(\%timeout)){
if(Utils::distance(main::calcPosition($char), main::calcPosition($monster)) <= ($config{"attackDistance"})) {
sendAttack(\$main::remote_socket, $monster->{ID}, ($config{'tankMode'}) ? 0 : 7);
} else {
my %attackhash = getAttackCoords(main::calcPosition($monster), main::calcPosition($char), ($config{"attackDistance"} - 1));
sendMove(\$main::remote_socket, $attackhash{x}, $attackhash{y});
}
}
$timeout{time} = time;
$timeout{timeout} = 1;
}

sub getAttackCoords {
my ($obj1, $obj2, $distance) = @_;
my %attack;
if ($$obj1{x} == $$obj2{x}) {
$attack{x} = $$obj2{x};
$attack{y} = ($$obj1{y} > $$obj2{y}) ? $$obj2{y} + $distance : $$obj2{y} - $distance;
return %attack;
}
if ($$obj1{y} == $$obj2{y}) {
$attack{y} = $$obj2{y};
$attack{x} = ($$obj1{x} > $$obj2{x}) ? $$obj2{x} + $distance : $$obj2{x} - $distance;
return %attack;
}
my $ang = atan(($$obj1{y} - $$obj2{y}) / ($$obj1{x} - $$obj2{x}));
$attack{x} = ($$obj1{x} > $$obj2{x}) ? $$obj2{x} + ($distance * cos($ang)) : $$obj2{x} - ($distance * cos($ang));
$attack{y} = ($$obj1{y} > $$obj2{y}) ? $$obj2{y} + ($distance * sin($ang)) : $$obj2{y} - ($distance * sin($ang));
return %attack;
};

return 1;


И файл тоже сам. Всем спасибо) я так РАД :roll: :Yahoo!:
Вложения
freecast.rar
Пользуйтесь!)
(928 байт) 312 скачиваний
Это ошибка которая у меня появлялась и Кора вылетала.
Это ошибка которая у меня появлялась и Кора вылетала.
1-ошибка.JPG (73.78 КБ) 5014 просмотров
Вот оно
Вот оно
18-я строчка.JPG (13.6 КБ) 4998 просмотров
Последний раз редактировалось AndreyLun Вт дек 04, 2007 12:10 am, всего редактировалось 2 раза.
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Говорит зануда:
"тема перенесена в раздел 'плагины'! "

Добавлено спустя 1 минуту 59 секунд:

PS: Клёво. Но это ты увидел, что он теперь не вылетает с ошибкой; но точно ли плагин работает как надо?
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
AndreyLun
Грамотный
Сообщения: 280
Зарегистрирован: Пн фев 05, 2007 5:55 pm

Сообщение AndreyLun »

Пусть перенесена, сори, что не там выложил)
Сам проверял, рядом бегал рогом и смотрел как мочит и кастит одновременно!!))
Доказательство
Вложения
Вот
Вот
.JPG (61.1 КБ) 4977 просмотров
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Кстати, дарагой афтар, а вот мине чисто интересно, а ты читал воооот эту тему? -
http://www.openkore.com/wiki/index.php/ ... and_higher
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
AndreyLun
Грамотный
Сообщения: 280
Зарегистрирован: Пн фев 05, 2007 5:55 pm

Сообщение AndreyLun »

piroJOKE писал(а):Кстати, дарагой афтар, а вот мине чисто интересно, а ты читал воооот эту тему? -
http://www.openkore.com/wiki/index.php/ ... and_higher
Понял намёк..
Сегодня проверял плагин при атаке на расстоянии - не работает, буду читать, может решу проблему.
Аватара пользователя
AndreyLun
Грамотный
Сообщения: 280
Зарегистрирован: Пн фев 05, 2007 5:55 pm

Сообщение AndreyLun »

Кароче, поспешил я... людей насмешил. Плагин не работает на расстоянии, только при ближней атаке. Прошу прощения, что смуту навёл. Раз я заварил эту "кашу" мне её и расхлёбывать. Даже самому стыдно(((.
Решил освоить знания для создания плагинов. Поэтому прошу: кто нибудь скиньте какие нибудь ссылки на учебники, может, или программу обучающую создания плагинов. Желательно на Русском языке. Буду признателен в помощи. Приду с работы займусь углублённым изучением. Как освою азы, попробую создать заново плагин для freecast'а, что то вроде копии данноо плагина, только переделанный под Кору
2.0.1_and_higher
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

AndreyLun
Ну, в помощь тебе Гугль Транслейт, местами помогает.
Я пойду, и доколбашу Task::Attack уже с поддержкой сагов, в том числе.
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

/me делает джыдайский жест: "учебник по плагинам не надобен тебе, AndreyLun!"

Плагины врезаются в спецально подготовленные для них места вызова в теле ОК. Посмотри код десятка разных плагинов, найди места в ОК, откуда они вызываюццо, и всё поймешь.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
AndreyLun
Грамотный
Сообщения: 280
Зарегистрирован: Пн фев 05, 2007 5:55 pm

Сообщение AndreyLun »

kLabMouse писал(а):AndreyLun
Ну, в помощь тебе Гугль Транслейт, местами помогает.
Я пойду, и доколбашу Task::Attack уже с поддержкой сагов, в том числе.
а по английски это как звучит? Чтобы в инете найти...
piroJOKE писал(а):
Плагины врезаются в спецально подготовленные для них места вызова в теле ОК. Посмотри код десятка разных плагинов, найди места в ОК, откуда они вызываюццо, и всё поймешь.
Ну в принципи я вчера просматривал некоторые плагины и немного стал понимать, скажем так, процессы, которые "протекают" в этих файлах. Ещё со школы изучалось на информатике такие языки как Байсик или Паскаль и нашёл с этими оболочками многие сходства:
То же примерное начало, тот же ввод переменных и функций.
Примерно такое же написание условий и их выполнение.
По идее Фрикаст нужен, чтобы кастить на моба и убегать от него или кастить на себя некоторые заклинания и бежать в это время.
То что у меня получилось работает так: Саг подбегает к мобу на расстояние ближней атаки, начинает на него кастовать Болт и сразу бьёт его книгой, бьёт, бьёт(иногда автокаст срабатывает), потом срабатывает кастующийся Болт, возможно убивает его, если нет - опять кастует. Если убивает бежит дальше. Когда кастует на себя Энчант- стоит, когда кастит на себя Энерг.защиту - стоит. А когда настроил Сага на Глину и попробовал, так оказалось, что он от них не бежит, хотя я в конфиге все необходимые настройки поставил, в том числе runfromtarget...

Значит получается, что часть плагина работает? а часть нет, вот и буду искать ...[/quote]
Последний раз редактировалось AndreyLun Вт дек 04, 2007 8:01 pm, всего редактировалось 1 раз.
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

kLabMouse
А что ты думаешь по этому поводу? Точнее, почему ты заговорил о Task::Attack???
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

piroJOKE
Короче. Саговский кастинг сильно зависит от структуры АИ.
Новый таск: Task::Attack Уже умеет нормально ходить и кастить итп.
там просто многово ещё не хватает.
Аватара пользователя
AndreyLun
Грамотный
Сообщения: 280
Зарегистрирован: Пн фев 05, 2007 5:55 pm

Сообщение AndreyLun »

А можно спросить? за что отвечает выражение

... Math::Trig;

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

Сообщение piroJOKE »

Ну это же очевидно, батенька! "подключить и использовать модуль тригонометрии" - это для твоих sin() и cos() в плагине. ИМХО.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
AndreyLun
Грамотный
Сообщения: 280
Зарегистрирован: Пн фев 05, 2007 5:55 pm

Сообщение AndreyLun »

Потому что мне кажется не способность ходить скрывается в вычислении конечных координат, куда бот должен отойти от моба при его приближении к боту (при заданных значениях runfortarget 1 и attackDistance ** )...
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Воткни перед sendMove вывод на дисплей отладочной инфы - все интересующие тебя координаты.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Ответить