PDA

Просмотр полной версии : freeCast


4epT
21.05.2007, 17:35
Рай для сагов..
Для работы плагина у вас должен быть:
1. Скил Free cast 1 левела или выше
2. В конфиге: attackUseWeapon 1
3. должен быть настроен attackSkillSlot (http://ragbot.ru/forum/showthread.php?t=24)

cabromen
03.09.2007, 19:07
при загрузки этого плагина бот выдает ошибку.. может я сделал что то не так:)
я я просто кинул его в папку плагинс

4epT
03.09.2007, 21:37
скорее всего этот плагин под старую версию коры

cabromen
03.09.2007, 21:41
просто старую поставить?

AndreyLun
02.12.2007, 23:45
старую не поставишь, работать не будет вообще. тут надо её как то доделать до последней версии коры. только хз как. те, кто умеет делать не хотят, а те кто не умеет, те не могут сделать))

4epT
03.12.2007, 02:00
а вот говорят, рабочая версия (http://rofan.ru/viewtopic.php?t=3973)*bravo*

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

freecast.rar (http://rofan.ru/download.php?id=1066) (ссылка на Рофан форум)

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;

И доказательство работы плагина

http://rofan.ru/files/3741_1196633043.jpg_167.jpg

4epT
03.12.2007, 21:00
вообще-то я неменал на то, чтобы ты написал что-то типо мануальчика, т.е. чё куда написать (запихнуть) чтоб всё работало и что иммено этот плагинчек делает :)

незнаю на сколько это критично, но в строках 25,26 должны быть слэши, т.е. не &Unload и &call, а \&Unload и \&call

AndreyLun
04.12.2007, 07:40
вообще-то я неменал на то, чтобы ты написал что-то типо мануальчика, т.е. чё куда написать (запихнуть) чтоб всё работало и что иммено этот плагинчек делает :)

незнаю на сколько это критично, но в строках 25,26 должны быть слэши, т.е. не &Unload и &call, а \&Unload и \&call

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

4epT
04.12.2007, 13:02
а он должен работаеть ещё и для дяльних атак?

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

Gans
04.12.2007, 14:22
я уже плачу. ='(

AndreyLun
04.12.2007, 18:37
По идее Фрикаст нужен, чтобы кастить на моба и убегать от него или кастить на себя некоторые заклинания и бежать в это время.
То что у меня получилось работает так: Саг подбегает к мобу на расстояние ближней атаки, начинает на него кастовать Болт и сразу бьёт его книгой, бьёт, бьёт(иногда автокаст срабатывает), потом срабатывает кастующийся Болт, возможно убивает его, если нет - опять кастует. Если убивает бежит дальше. Когда кастует на себя Энчант- стоит, когда кастит на себя Энерг.защиту - стоит. А когда настроил Сага на Глину и попробовал, так оказалось, что он от них не бежит, хотя я в конфиге все необходимые настройки поставил, в том числе runfromtarget...

4epT
04.12.2007, 19:10
AndreyLun, а что у тебя в конфиге написано по поводу:
attackDistance
attackDistanceAuto
attackMaxDistance
attackUseWeapon

runFromTarget
runFromTarget_dist

attackSkillSlot бла {
lvl
dist
sp
бла бла бла
}

Что-то мне кажется что если поиграться с дистанциями, то можно и убегать от моба кастуя при этом скил

AndreyLun
04.12.2007, 21:35
Пробовал всякое
и в
attackDistance
attackDistanceAuto
attackMaxDistance
attackUseWeapon

и в
runFromTarget
runFromTarget_dist

и в
attackSkillSlot...
Понимаешь, в влизи то он работает, т.е. кастит и бьёт. А если настраиваешь атачить и убегать от мобов при касте то он начинает кастить, но не убегает.

вот часть плагина

package freeCast;

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('freeCast', '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();
}
}
Значит если саг может кастить при ближней атаке а следом сразу бить оружием, значит работает только часть плагина, я правильно понял?
судя по этим тестам моим
http://rofan.ru/files/3741_1196633043.jpg_167.jpg
то часть плагина, отвечающая на каст и атаку одновременно работает...

4epT
05.12.2007, 00:07
хорошо ответил на вопрос "пробовал всякое", удачи тебе..

плагин работает целиком, просто в он не предназначен для дальних дистанций!