RagBot Forum
 

Вернуться   RagBot Forum > • Всё что касается бота • > Вопросы по Боту

Вопросы по Боту ПРОСЬБА НЕ СОЗДАВАТЬ ТЕМЫ ТИПО "ХЕЕЕЕЛЛЛППП, ППЛЛИИZZZ"

Ответ
 
Опции темы Опции просмотра
Старый 19.03.2011, 02:13   #1
kkim
Нюб делает первые шаги
 
Регистрация: 19.03.2011
Сообщений: 5
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию Несколько вопросов по коду

Я ни в misc.pl ни в utils.pl не нашел описания функции timeOut.
Что она делает(я так понимаю возвращает faulse пока не прошло N секунд, где N - какой-то из аргументов)?
Почему в конце обычно используется такая хрень:

$timeout{ai_teleport_retry}{time} = time;

Можно обьяснить на примере такого куска?

if (!$timeout{ai_teleport_delay}{time} && timeOut($timeout
{ai_teleport_retry}))
{
# тут что-нибудь поделать
$timeout{ai_teleport_retry}{time} = time;
}

Например в конце processItemsAutoGather стоит
$timeout{ai_items_gather_auto}{time} = time;
Но даже если выставить 20 секунд в timeouts.txt по этому ключу ничего не меняется. clientSuspend же нормально все тормозит.
Еще вопрос. В том же processItemsAutoGather() лут в @itemsID лежит в случайном порядке и соответственно абы как из этого массива извлекается.В каком-нибудь оркданже бот берет 1 лутину потом чешет за 5 клеток ко второй и снова возвращается собирать барахло на старое место. Как отсортировать этот массив по дистанции как например в getBestTarget() для processAutoAttack()?
Perl-а не знаю тупо по аналогии вляпал такую хрень:
@sorted = sort{ round(distance($myPos,calcPosition($a))) cmp round(distance($myPos,calcPosition($a)))} @itemsID;
Естественно она не работает.Как сделать такую штуку?
kkim вне форума   Ответить с цитированием
Старый 19.03.2011, 16:39   #2
manticora
Опытный Ботовод
 
Регистрация: 14.12.2009
Сообщений: 121
Вы сказали Спасибо: 4
Поблагодарили 19 раз(а) в 19 сообщениях
По умолчанию

Вот же написано, что такое функция timeOut: openkore\src\Utils.pm.

Код:
##
# timeOut(r_time, [timeout])
# r_time: a time value, or a hash.
# timeout: the timeout value to use if $r_time is a time value.
# Returns: a boolean.
...
Дальше расписывается, как предполагается этой функцией пользоваться. Что принимает и что возвращает. Приведены два примера. В самом конце комментария сказано, откуда эта функция берётся:

Код:
# timeOut() is implemented in tools/misc/fastutils.xs

Цитата:
Еще вопрос. В том же processItemsAutoGather() лут в @itemsID лежит в случайном порядке и соответственно абы как из этого массива извлекается.В каком-нибудь оркданже бот берет 1 лутину потом чешет за 5 клеток ко второй и снова возвращается собирать барахло на старое место. Как отсортировать этот массив по дистанции как например в getBestTarget() для processAutoAttack()?
Тупо сортировка массива по такому параметру как "удалённость лежащего лута от персонажа" мало что даст. Например, что будет, если положить слева и справа две кучки лута? А если эти кучки растащить равномерно в разные стороны?
manticora вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 23:34. Часовой пояс GMT +3.