Страница 1 из 1

homunculusFeeder.pl

Добавлено: Вт июл 03, 2007 11:03 am
Kissa2k
Написал небольшой плагин, который кормит хомункулуса (быстрый набор интимаси).
Также он проверят, есть ли у вас в инвентаре нужная еда для него.
В критических случаях делает Rest, чтобы уберечь вашего хомункулуса от голодной смерти :(.
Возможно позже добавлю проверку еды в телеге.

Тестированно на OpenKore 1.9.4 SVN и последней eAthena.
Никаких изменений в config.txt делать не нужно.

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

#Homunculus feeding plugin
#Just put in your plugins folder

package homunculusFeeder;

use strict;
use Globals;
use Plugins;
use Log qw(debug message warning error);
use Utils;
use Misc;
use Skill;
use Commands;
use Network;
use Network::Send;
use AI;
use Task;
use Task::UseSkill;
use Task::ErrorReport;

Plugins::register('HomunculusFeeder', 'Plugin for automatic homunculus feeding', \&Unload);

my $hook = Plugins::addHooks(
                                ['AI_pre', \&main]
);

our $homunculus;

sub Unload {
        Plugins::delHooks($hook);
}

sub main {
		return if (!$char->{homunculus} || ($char->{homunculus}{state} & 2) || ($char->{homunculus}{state} & 4));
		my $homunculusJob = $char->{homunculus}{jobID};
		my $food;
		if($homunculusJob == 6001 || $homunculusJob == 6005 || $homunculusJob == 6009 || $homunculusJob == 6013){
			$food ="Pet Food"; #Мы имеем дело с Lif
		}elsif($homunculusJob == 6002 || $homunculusJob == 6006  || $homunculusJob == 6010 || $homunculusJob == 6014){
			$food="Zargon"; #Мы имеем дело с Amistr
		}elsif($homunculusJob == 6003 || $homunculusJob == 6007 || $homunculusJob == 6011 || $homunculusJob == 6015){
			$food="Garlet"; #Мы имеем дело с  Filir
		}elsif($homunculusJob == 6004 || $homunculusJob == 6008 || $homunculusJob == 6012 || $homunculusJob == 6016){
			$food="Scell"; #Это Vanilmirth
		}
		if(
				$char->{homunculus}
				&& !inInventory($food)
				&& $char->{homunculus}{hunger} <= 12
				&& !($char->{homunculus}{state} & 2)
				&& !($char->{homunculus}{state} & 4)
				&& timeOut($homunculus{lastRest}, 5)
		){
						my $rest = Skill->new(auto => 'AM_REST');
						my $skillTask = new Task::UseSkill(
						target => $char,
						skill => $rest,
						priority => Task::HIGH_PRIORITY
						);
						my $task = new Task::ErrorReport(task => $skillTask);
						$taskManager->add($task);
						$homunculus{lastRest} = time;
		}
		
        if (
				!($char->{homunculus}{state} & 2)
				&& !($char->{homunculus}{state} & 4)
				&& $char->{homunculus}{hunger} <= 12
				&& inInventory($food)
				&& timeOut($homunculus{lastFeed}, 5)
		){
                        $homunculus{lastFeed} = time;
                        message "Time to feed your Homunculus!\n";
                        $messageSender->sendHomunculusFeed();
						message "Now your intimacy is $char->{homunculus}{intimacy}!\n";
		}       
}

return 1;

Добавлено: Чт окт 11, 2007 3:12 am
maxsus

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

 # ============================================
# homunFeed v.1.0.0
# ============================================
# by azCies
# config add
#
# homun_Feed 1
# homun_Hunger #
#
# special thank Capion (Homun Support's plugin)
# =============================================

package HomunFeed;

use strict;
use Globals;
use Plugins;
use Log qw(debug message warning error);
use Utils;
use Commands;
use Network;
use Network::Send;
use AI;

Plugins::register('HomunFeed', 'Homun Feed plugins by azCies', \&onUnload);

my $hooks = Plugins::addHooks(
                                ['Command_post', \&onCommandPost],
                                ['AI_pre', \&onHomunFeed]
);

our $homunculus;

sub onUnload {
        Plugins::delHooks($hooks);
}

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

        if ($cmd eq "homunculus") {
                if ($subcmd eq "") {      
                
                message "------ Homunculus -------\n", "list";
                message "Name: $char->{'homunculus'}{'name'}\n";
                message "Level: $char->{'homunculus'}{'level'}\n";
                message "hungly: $char->{'homunculus'}{'hunger'}\n";
                message "Friendly: $char->{homunculus}{intimacy}\n";
                message "-------------------------\n", "list";

                } elsif ($subcmd eq "feed") {
                        message "------ Feeding -------\n", "list";
                        message "Hungly: $char->{'homunculus'}{'hunger'}\n";
                        message "Friendly: $char->{homunculus}{intimacy}\n";
                        message "----------------------\n", "list";          
                        my $msg = pack("C*", 0x2D, 0x02, 0x00, 0x00, 0x01);
                        $messageSender->sendToServer($msg);
                        message "Homunculus feeding\n", "list";
          } else {
                        error "Syntax Error in function 'homun' (homun management)\n" .
                                "Usage: homunculus < feed >\n";
                }
                $args->{return} = 1;
        }
}

sub onHomunFeed {
        if ($config{homun_Feed}) {
                if ($char->{homunculus}{hunger} < $::config{'homun_Hunger'}&& timeOut($homunculus{lastFeed}, 5)) {
                        $homunculus{lastFeed} = time;
                        message "------ Feeding -------\n", "list";
                        message "Hungly: $char->{'homunculus'}{'hunger'}\n";
                        message "Friendly: $char->{homunculus}{intimacy}\n";
                        message "----------------------\n", "list";          
                        my $msg = pack("C*", 0x2D, 0x02, 0x00, 0x00, 0x01);
                        $messageSender->sendToServer($msg);
                        message "Homunculus feeding\n", "list";
                }
        }       
}

return 1; 
Есть вот такой плагин...я нерублю в скриптах=/ Сори за дубль..

Люди помогите сделать чтоб он кармил гома на час тобишь - интемаси равно 15 он его кормит 6 раз..и на каждый раз была задержка в секунду...Оф лагучий псц..

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

Не все же люди экстрималы=) я люблю ботить акуратно=)


В том плаге что я выложил, вроде он кормит отправкой пакета о кормлении"my $msg = pack("C*", 0x2D, 0x02, 0x00, 0x00, 0x01);" может ее дублировать как то.....

В зарание пасибо! :oops:

Добавлено: Пт май 02, 2008 5:03 pm
megabotovod
В конфиге закоментил все что связано с гомой,добавил плагин в папку с плагинами, но столкнулся с такой проблемой, бот гому вообще не кормит, а когда наступает 12 голода пишет вот это: Код:

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

Your Homunculus was vaporized! 
You use Rest on yourself : Lv 1
Что делать, подскажите?
П.С. Еда 100% есть в инвенте, сначала тоже подумал что нету, проверил--есть!

Добавлено спустя 4 минуты 57 секунд:

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

......
-- Non-Usable --
0    Scell x 621                                          
......                        
......
Your Homunculus was recalled!
Your Homunculus was vaporized!
You use Rest on yourself : Lv 1
......
Вот.

Добавлено: Пт май 02, 2008 5:32 pm
Kissa2k
megabotovod
Такс, а класс хомункулуса какой?
Вообще лучше пользоваться встроенной кормилкой в ОК, этот плагин стоит использовать если нужно выключить AI..

Добавлено: Пт май 02, 2008 5:37 pm
megabotovod
Класс ванилька.
Можно поподробней по поводу встроенной кормилки ОК?

Добавлено спустя 57 секунд:

И не будет ли опять проблем с дисконнектом,если им пользоваться?

Добавлено: Пт май 02, 2008 5:46 pm
Kissa2k
По поводу встроенной кормилки - смотри директивы, начинающиеся с префикса homunculus_ в control/config.txt
megabotovod писал(а):Класс ванилька...
Нужно тестить, сложно с ходу сказать чем это может быть вызвано. Если это того стоит, то в свободное время можно проверить это.. :oops:

Добавлено: Пт май 02, 2008 6:38 pm
megabotovod
Kissa2k писал(а):По поводу встроенной кормилки - смотри директивы, начинающиеся с префикса homunculus_ в control/config.txt
Да, но ведь в той теме где я изначально писал, указали, что надо убрать все связанное с гомой из конфига, т.к. дисконнектит когда гома атачит?

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

Короче, плагин удалил, а в конфиг добавил

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

homunculus_intimacyMax 999
homunculus_intimacyMin 911
homunculus_hungerTimeoutMax 60
homunculus_hungerTimeoutMin 10
homunculus_autoFeed 1
homunculus_autoFeedAllowedMaps
homunculus_hungerMin 13
homunculus_hungerMax 15
Пока кормит, буду следить дальше.

Добавлено: Пт май 02, 2008 10:08 pm
megabotovod
В общем убрал из плагина проверку на наличие еды и все, связанное с $rest, и все заработало!

Re:

Добавлено: Пт мар 13, 2009 9:43 pm
wxBotowod

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

homunculus_intimacyMax 999
homunculus_intimacyMin 911
homunculus_hungerTimeoutMax 60
homunculus_hungerTimeoutMin 10
homunculus_autoFeed 1
homunculus_autoFeedAllowedMaps
homunculus_hungerMin 13
homunculus_hungerMax 15
Насчет этого вопрос. А оно будет работать в Хкор 1 на ручном управлении? Просто я хочу свой аи из клиента использовать. Или тогда придется использовать плагин?

Re:

Добавлено: Вс апр 05, 2009 10:50 pm
ВасильевСаша
megabotovod писал(а):В общем убрал из плагина проверку на наличие еды и все, связанное с $rest, и все заработало!
А можно выложить этот плагин, модифицированный.

Re: homunculusFeeder.pl

Добавлено: Вт апр 07, 2009 6:42 pm
Kissa2k
Последняя версия ОК может самостоятельно кормить вашего хомункулуса, этот плагин уже давно бесполезен

Re: homunculusFeeder.pl

Добавлено: Чт апр 09, 2009 6:48 pm
xgoowix
Народ а я чёто непонимаю как сделать чтобы он кормил помогите пожалуйста!!!