использование скилла в плагине [решено]

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

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

Druha
Новичок
Сообщения: 9
Зарегистрирован: Вт июн 19, 2007 11:24 am

использование скилла в плагине [решено]

Сообщение Druha »

Нашел на forum.openkore.com плагин, реализующий использование стоек тейквоном.
Но с нынешней версией бота работать он отказывается, даже после обработки напильником. Ошибка собственно говоря здесь:

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

               my $skill = new Skill(idn => $_);
               $skill->use($main::accountID,7)
метод use просто отсутствует....

Каким образом можно использовать определенный скил из плагина?
Последний раз редактировалось Druha Пн сен 24, 2007 5:24 pm, всего редактировалось 1 раз.
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

а без плагина кора не работает со скилами тейквона?
Druha
Новичок
Сообщения: 9
Зарегистрирован: Вт июн 19, 2007 11:24 am

Сообщение Druha »

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

к тому же я нашел один метод в исходниках коры
$messageSender->sendSkillUse($_, 7, $main::accountID);
но при его использовании, опять таки не получается активировать стойку :(
Lims
Нууууп
Сообщения: 723
Зарегистрирован: Чт ноя 09, 2006 7:55 pm

Сообщение Lims »

Druha
всеже лучше плагин выложить.
Druha
Новичок
Сообщения: 9
Зарегистрирован: Вт июн 19, 2007 11:24 am

Сообщение Druha »

вот собственно сам плагин

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

package tk_combo;
use strict;
use Plugins;
use Globals;
use Log qw(message warning error debug);
use Utils;
use AI;
use Utils;
use Skill;

Plugins::register('tk_combo', 'tk Combo', \&Unload);

my $skill_hook = Plugins::addHook('packet_skilluse', \&on_call);
my $skill_use = Plugins::addHook('AI_pre', \&call);
my $skill_fail = Plugins::addHook('packet_skillfail', \&on_fail);

sub Unload {
        Plugins::delHook("tk_combo", $skill_hook);
       Plugins::delHook("tk_combo", $skill_fail);
        Plugins::delHook("tk_combo", $skill_use);
}

my $onStance=0;
my $kick=0;

sub on_fail {
        $onStance=0;
        $kick=0;
}

sub on_call {

        #initiate string combo on stance trigger

        if ($_[1]->{'sourceID'} eq $main::accountID && AI::action eq "attack" && $Globals::config{'tk_combo'} && $_[1]->{'skillID'}) {
       
                my $stance= $_[1]->{'skillID'};

                # Ready Storm
                if($stance==412) {$onStance=412;}

                # Ready Down
                if($stance==414) {$onStance=414;}
 
                # Ready Turn
                if($stance==416) {$onStance=416;}
     
                # Ready Counter
                if($stance==418) {$onStance=418;}

                #Tornado
                if($stance==413) {$kick=413;}
                       
                #Down
                if($stance==415) {$kick=415;}
       
                #Turn
                if($stance==417) {$kick=417;}
   
                #Counter
                if($stance==419) {$kick=419;}
                       

        }

#string combo after each kick

} # end of on_call

sub call {

        if (AI::action eq "attack" && $onStance && !$kick) {
                        doNextKick($onStance+1);
                        $kick=$onStance+1;
                        $onStance=0;
                        return;
                }
        if (AI::action eq "attack" && $kick && !$onStance) {
                        my $rand=newRandom($kick);
                        doNextKick($rand);
                        $kick=$rand;
                        return;
                }

}

sub newRandom {
my $temp=0;
$temp=1 if ($_==413);
$temp=2 if ($_==415);
$temp=3 if ($_==417);
$temp=4 if ($_==419);
my $rand=0;
                do {
                        $rand =  1 + int (rand 3);
                        } while($rand==$temp);
       
        return 413 if ($rand==1);
        return 415 if ($rand==2);
        return 417 if ($rand==3);
        return 419 if ($rand==4);
}

sub doNextKick {
               $messageSender->sendSkillUse($_, 7, $main::accountID);
}
return 1;
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Druha писал(а):тот вариант, который я нашел здесь(спамить скиллами), как написано, использует много траффика, что мне не очень подходит....
Минуточку! Тот вариант, что сейчас в FAQе, ничего не спамит. Ты его видел?
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Druha
Новичок
Сообщения: 9
Зарегистрирован: Вт июн 19, 2007 11:24 am

Сообщение Druha »

Цитирую консоль коры(вариант из faq'a ):

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

You use Ready Counter on yourself : Lv 1
[100/ 99] You use Counter (lvl 7) on monster Poporing (0) - Dmg: 810 (delay 30.4)
Skill Counter failed (Requirement)
Skill Counter failed (Requirement)
Skill Counter failed (Requirement)
Skill Counter failed (Requirement)
Skill Counter failed (Requirement)
Skill Counter failed (Requirement)
Skill Counter failed (Requirement)
Skill Counter failed (Requirement)
Skill Counter failed (Requirement)
Skill Counter failed (Requirement)
Skill Counter failed (Requirement)
Skill Counter failed (Requirement)
[100/ 99] Monster Poporing (0) attacks you - Dmg: Miss! (delay 67.2)
Skill Counter failed (Requirement)
Skill Counter failed (Requirement)
Skill Counter failed (Requirement)
Это походу и есть спам, но уже после скилла...
Потому я добавил еще в блок с Counter строку, вот результат:

attackComboSlot Counter {
lvl 7
afterSkill Ready Counter
waitBeforeUse 0.5
maxAttempts 3
sp > 3
dist 3
isSelfSkill 0
}
После этого проблема исчезла.
Когда я читал faq этого варианта еще не было, так что прошу прощения)
Ответить