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

Good scripts, not reviewed and checked yet

Moderators: Murderator+, Murderator

Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Игрока.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
TarantuL
Posts: 117
Joined: 2006-08-06 10:23:20

Post by TarantuL »

ПОнять не могу. В бейондеровской нету "prec", другие тоже не подходят(
выложите под него ходилку, ребят?)


разобрался)
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

viewtopic.php?p=66813#66813

PS: Добавил в первый пост.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Stacy Love
Posts: 5
Joined: 2009-11-07 14:37:03

Post by Stacy Love »

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


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

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

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

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

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

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

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

п.с. ну и так же игнор всего что за забором.. допустим что бы чар (гост который собирает координаты в файл) искал деревья в радиусе 1-2 клетки. :P
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post 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. Зачем оно нужно, если можно искать автоматом?

Переписывать нужно только те деревья, до которых нельзя добраться, остальное скрипт найдет автоматически.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Post 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 проверку на спрятанность. Эта функция отвечает за шаги, тоесть твоя проверка будет срабатывать при каждом шаге.
Mazer
Posts: 125
Joined: 2007-11-13 00:39:14

Post 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 :)
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

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

Post by Beyonder »

Скрипт будет в теории иногда падать (в чём я убедился на практике).
Проблема в UO.GetGlobal и UO.SetGlobal. Эти функции не синхронизированы с потоками, тоесть если два потока одновременно запустят эти функции на одной переменной - клиент умрёт. А у тебя очень редко но это случается. Т.к. ты в отдельном потоке запускаешь поиск дерева, а потом в другом потоке считываешь координату UO.GetGlobal-ом. Если текущее дерево было вырублено и компьютер тормознулся, клиент умирает.
Поэтому простой способ - убрать потоки, много ты времени там не экономишь.
Второй способ - сделать через SetEasyUO и GetEasyUO.
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

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

Post by Savage »

Заявленные функции скрипт выполняет. А именно "немного порубить на стрелы". Я на нём качнул гм боу и 93 ламбера. Конечно парит перегружать клиент (чтоб сброслись глобалки). Но коли лениво что то настраивать своё, это скрипт вполне пригоден к использованию.
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

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

Post by Destruction »

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

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

Записываем в переменную не тупо строку, а что-нибудь типа uo.timer() и когда в следующий раз идет проверка этой клетки - смотрим uo.timer() - global > N.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
6aToH
Posts: 22
Joined: 2009-08-20 06:45:57

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

Post by 6aToH »

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

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

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

А можно поподробнее плиз :lol:
6aToH
Posts: 22
Joined: 2009-08-20 06:45:57

Re:

Post 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 проверку на спрятанность. Эта функция отвечает за шаги, тоесть твоя проверка будет срабатывать при каждом шаге.

Почему то какие значения не выставлял для валкера все равно застревает в одном и том же месте (
SuMMoN
Posts: 24
Joined: 2009-02-26 14:39:12

Re:

Post 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"
ставим соответственно проверку на прошедшее время с момента вырубки.


Можно поподробнее?
Чтобы не подумали, что я лентяй, я, используя Ваш АвтоЛамбер, написал еще сброс логов домой и проверку на ПК.
Но вот со сбросом запомненного так и не разобрался. Пытался понять Ваш скрипт на сброс "каких угодно параметров", но тоже туговато. Можно объяснить что и где подправить надо?
Заранее большое спасибо.
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

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

Post by ZeroDX »

Вопрос к автору. Реально ли приделать какие-либо ограничения на перемещение в пространстве? А то у меня недалеко от домика монстры гуляют, и я думаю что автопоиск может найти мне такое счастье, как ресать лесоруба... Был бы благодарен за готовое решение, но можно и указать суть, сам попробую написать.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

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

Post by Mirage »

чтобы не убредал далеко надо использовать ходилку с координатами :)
Ну или проверку чтото типо
если getx('self')>1234 и gety('self')>1234 тогда
томаем в точку с координатами 12 12
kostjan
Posts: 89
Joined: 2009-03-06 21:52:25
Contact:

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

Post by kostjan »

Дестр посиди и сделай сброс деревьев... Уже вон скоко запросов. А то парит каждый раз переключать его. :!:
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

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

Post 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


По идее если тайл не в коробочке, он скипнется. Но в моем случае оптимальнее будет сделать коробочку, в которую нельзя соваться.
reTry
Posts: 2
Joined: 2010-05-30 15:45:59

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

Post by reTry »

подскажите какой командой можно обнулить данные деревьев полученные этим скриптом?
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

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

Post by Destruction »

kostjan wrote:Дестр посиди и сделай сброс деревьев... Уже вон скоко запросов. А то парит каждый раз переключать его. :!:

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

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

О чем речь? - Что вы хотите сделать?
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
reTry
Posts: 2
Joined: 2010-05-30 15:45:59

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

Post by reTry »

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

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