Page 3 of 8

Posted: 2008-10-27 00:30:41
by Destruction
Игрока.

Posted: 2009-11-10 09:58:28
by TarantuL
ПОнять не могу. В бейондеровской нету "prec", другие тоже не подходят(
выложите под него ходилку, ребят?)


разобрался)

Posted: 2009-11-10 19:56:58
by Destruction
viewtopic.php?p=66813#66813

PS: Добавил в первый пост.

Posted: 2009-11-11 03:30:36
by Stacy Love
Ммм.. Скрипт очень хороший, слишком уж геморно каждый раз на новых шардах перемаркивать деревья и т.п.


Я вот что хотел бы узнать и предложить :roll: :

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

2. Я что-то так и не понял, как заставить деревья обновлятся?

3. Скорее вопрос по ходитлке. :roll: Как сделать так что бы чар постоянно прятался? Допустим он нашел новое дерево, идет к нему и вышел из хайда, что бы неостанавливая движение сделать так что бы он прятался. Ну и стандартно что бы прятался у дерева когда рубит. (это я сделал)

Теперь предложение: :lol:

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

2. Потом просто загружаем файл и ходим по собраным координатам с автоудалением координата вырубленого дерева + что бы это уже было не змойкой, а рандомно.

п.с. ну и так же игнор всего что за забором.. допустим что бы чар (гост который собирает координаты в файл) искал деревья в радиусе 1-2 клетки. :P

Posted: 2009-11-11 05:19:48
by Destruction
1. Это вопрос к ходилке, чтобы она отрубалась, если нельзя пройти.
2. Ну.. Изначально у меня были довольно-таки кривые реализации.
В целом алгоритм должен выглядеть так:
- Знаем через сколько часов нужно дать возможность вырубить заного.
- В строке:

Code: Select all

uo.setGlobal( 't:' + str( x ) + "," + str( y ), "empty" ) 
указываем время вырубки
- В строке:

Code: Select all

if NOT uo.getGlobal( 't:' + str( x + cx ) + "," + str( y + cy ) ) == "empty"
ставим соответственно проверку на прошедшее время с момента вырубки.

Править совершенно лень.

3. Напиши обертку для ходилки, которая будет в отдельном потоке прятаться. Это много проще, чем править саму ходилку.

-----------


1. Вы не знаете как ползают змеи. Цель этого скрипта как раз-таки избежать разметки, но если вам так хочется - можете юзать его для разметки, изменений просто минимум.
2. Зачем оно нужно, если можно искать автоматом?

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

Posted: 2009-11-15 23:34:42
by Beyonder
1) Нужно поиграть с параметрами ходилки. Если не получилось обойти препятствие - она возвращает 0. Если получилось - 1.
Для конкретно этого скрипта я думаю оптимальные параметры такие:

Code: Select all

var MaxTraceDistance=5 #Большие препятствия мы обходить не собираемся 
var TraceLoopIncrease=10
var LimitTrace=14

Или для еще меньших препятствий, можно попробовать параметры [3,3,5]. Может быть для леса это даже лучше.
В результате ходилка будет вести себя так:
Идём 5 ходов в одну сторону, если не обошли - идём 5+10 в обратную сторону. Если не вышло (5+10 > 14) - возвращаем 0 и заканчиваем поиски пути.

И в самом скрипте добавить:
if (walker(...) == 0) then
...помечаем дерево недосягаемым
endif

3) Добавь в начало функции TryDir проверку на спрятанность. Эта функция отвечает за шаги, тоесть твоя проверка будет срабатывать при каждом шаге.

Posted: 2009-12-12 13:34:30
by Mazer
Maybe someone can make this script that if i chop one tree for more then 60 seconds it will go to next one:) becouse now with 30 % lumber in DRW i chop it for about 10 minutes and nothing hapens :) thats not funny :)

Re: autoLumber - вырубка с автопоиском деревий

Posted: 2010-02-02 01:19:22
by Beyonder
Скрипт будет в теории иногда падать (в чём я убедился на практике).
Проблема в UO.GetGlobal и UO.SetGlobal. Эти функции не синхронизированы с потоками, тоесть если два потока одновременно запустят эти функции на одной переменной - клиент умрёт. А у тебя очень редко но это случается. Т.к. ты в отдельном потоке запускаешь поиск дерева, а потом в другом потоке считываешь координату UO.GetGlobal-ом. Если текущее дерево было вырублено и компьютер тормознулся, клиент умирает.
Поэтому простой способ - убрать потоки, много ты времени там не экономишь.
Второй способ - сделать через SetEasyUO и GetEasyUO.

Re: autoLumber - вырубка с автопоиском деревий

Posted: 2010-02-11 13:08:24
by Savage
Заявленные функции скрипт выполняет. А именно "немного порубить на стрелы". Я на нём качнул гм боу и 93 ламбера. Конечно парит перегружать клиент (чтоб сброслись глобалки). Но коли лениво что то настраивать своё, это скрипт вполне пригоден к использованию.

Re: autoLumber - вырубка с автопоиском деревий

Posted: 2010-02-11 14:08:03
by Destruction
Savage wrote:Заявленные функции скрипт выполняет. А именно "немного порубить на стрелы". Я на нём качнул гм боу и 93 ламбера. Конечно парит перегружать клиент (чтоб сброслись глобалки). Но коли лениво что то настраивать своё, это скрипт вполне пригоден к использованию.

Можно легко установить время жизни глобалок.

Записываем в переменную не тупо строку, а что-нибудь типа uo.timer() и когда в следующий раз идет проверка этой клетки - смотрим uo.timer() - global > N.

Re: autoLumber - вырубка с автопоиском деревий

Posted: 2010-03-15 07:24:41
by 6aToH
Destruction wrote:
Savage wrote:Заявленные функции скрипт выполняет. А именно "немного порубить на стрелы". Я на нём качнул гм боу и 93 ламбера. Конечно парит перегружать клиент (чтоб сброслись глобалки). Но коли лениво что то настраивать своё, это скрипт вполне пригоден к использованию.

Можно легко установить время жизни глобалок.

Записываем в переменную не тупо строку, а что-нибудь типа uo.timer() и когда в следующий раз идет проверка этой клетки - смотрим uo.timer() - global > N.

А можно поподробнее плиз :lol:

Re:

Posted: 2010-03-15 07:25:34
by 6aToH
Beyonder wrote:1) Нужно поиграть с параметрами ходилки. Если не получилось обойти препятствие - она возвращает 0. Если получилось - 1.
Для конкретно этого скрипта я думаю оптимальные параметры такие:

Code: Select all

var MaxTraceDistance=5 #Большие препятствия мы обходить не собираемся 
var TraceLoopIncrease=10
var LimitTrace=14

Или для еще меньших препятствий, можно попробовать параметры [3,3,5]. Может быть для леса это даже лучше.
В результате ходилка будет вести себя так:
Идём 5 ходов в одну сторону, если не обошли - идём 5+10 в обратную сторону. Если не вышло (5+10 > 14) - возвращаем 0 и заканчиваем поиски пути.

И в самом скрипте добавить:
if (walker(...) == 0) then
...помечаем дерево недосягаемым
endif

3) Добавь в начало функции TryDir проверку на спрятанность. Эта функция отвечает за шаги, тоесть твоя проверка будет срабатывать при каждом шаге.

Почему то какие значения не выставлял для валкера все равно застревает в одном и том же месте (

Re:

Posted: 2010-03-31 15:53:40
by SuMMoN
Destruction wrote:2. Ну.. Изначально у меня были довольно-таки кривые реализации.
В целом алгоритм должен выглядеть так:
- Знаем через сколько часов нужно дать возможность вырубить заного.
- В строке:

Code: Select all

uo.setGlobal( 't:' + str( x ) + "," + str( y ), "empty" ) 
указываем время вырубки
- В строке:

Code: Select all

if NOT uo.getGlobal( 't:' + str( x + cx ) + "," + str( y + cy ) ) == "empty"
ставим соответственно проверку на прошедшее время с момента вырубки.


Можно поподробнее?
Чтобы не подумали, что я лентяй, я, используя Ваш АвтоЛамбер, написал еще сброс логов домой и проверку на ПК.
Но вот со сбросом запомненного так и не разобрался. Пытался понять Ваш скрипт на сброс "каких угодно параметров", но тоже туговато. Можно объяснить что и где подправить надо?
Заранее большое спасибо.

Re: autoLumber - вырубка с автопоиском деревий

Posted: 2010-04-25 02:14:36
by ZeroDX
Вопрос к автору. Реально ли приделать какие-либо ограничения на перемещение в пространстве? А то у меня недалеко от домика монстры гуляют, и я думаю что автопоиск может найти мне такое счастье, как ресать лесоруба... Был бы благодарен за готовое решение, но можно и указать суть, сам попробую написать.

Re: autoLumber - вырубка с автопоиском деревий

Posted: 2010-04-25 14:13:27
by Mirage
чтобы не убредал далеко надо использовать ходилку с координатами :)
Ну или проверку чтото типо
если getx('self')>1234 и gety('self')>1234 тогда
томаем в точку с координатами 12 12

Re: autoLumber - вырубка с автопоиском деревий

Posted: 2010-04-25 18:09:51
by kostjan
Дестр посиди и сделай сброс деревьев... Уже вон скоко запросов. А то парит каждый раз переключать его. :!:

Re: autoLumber - вырубка с автопоиском деревий

Posted: 2010-04-25 23:33:51
by ZeroDX
Mirage wrote:чтобы не убредал далеко надо использовать ходилку с координатами :)
Ну или проверку чтото типо
если getx('self')>1234 и gety('self')>1234 тогда
томаем в точку с координатами 12 12



Проверку это идея. Вот только не в ходилку, а в поиск

Code: Select all

        If (x + cx) < MaxX and (x + cx) > MinX and (y + cy) < MaxY and (y + cy) > MinY
          If val(UO.GetGlobal('t:' + str(x + cx) + ',' + str(y + cy))) < UO.Timer() - RespawnTime and not UO.GetGlobal('t:' + str(x + cx) + ',' + str(y + cy)) == 'empty' then
            t = IsTreeTile(x + cx, y + cy)
            If not t == false then
              UO.SetGlobal('tree_x', str(x + cx))
              UO.SetGlobal('tree_y', str(y + cy))
              UO.SetGlobal('tree_t', str(t))
              Return false
             else
              UO.SetGlobal('t:' + str(x + cx) + ',' + str(y + cy), 'empty')
            Endif
          Endif
         else
          Wait(100)
        Endif


По идее если тайл не в коробочке, он скипнется. Но в моем случае оптимальнее будет сделать коробочку, в которую нельзя соваться.

Re: autoLumber - вырубка с автопоиском деревий

Posted: 2010-05-30 15:51:03
by reTry
подскажите какой командой можно обнулить данные деревьев полученные этим скриптом?

Re: autoLumber - вырубка с автопоиском деревий

Posted: 2010-06-02 03:28:11
by Destruction
kostjan wrote:Дестр посиди и сделай сброс деревьев... Уже вон скоко запросов. А то парит каждый раз переключать его. :!:

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

reTry wrote:подскажите какой командой можно обнулить данные деревьев полученные этим скриптом?

О чем речь? - Что вы хотите сделать?

Re: autoLumber - вырубка с автопоиском деревий

Posted: 2010-06-02 10:31:37
by reTry
Destruction wrote:О чем речь? - Что вы хотите сделать?

скрипт запоминает вырубленные деревья, он у меня за 2-3 часа обходит местность и больше не рубает, пишет, что не находит деревья, если пере зайти в уо, все в порядке...Как сделать так, что бы он после 100 деревьев обнулял координаты вырубленных деревьев?