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
Ммм.. Скрипт очень хороший, слишком уж геморно каждый раз на новых шардах перемаркивать деревья и т.п.
Я вот что хотел бы узнать и предложить

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

Как сделать так что бы чар постоянно прятался? Допустим он нашел новое дерево, идет к нему и вышел из хайда, что бы неостанавливая движение сделать так что бы он прятался. Ну и стандартно что бы прятался у дерева когда рубит. (это я сделал)
Теперь предложение:
1.Можно было бы сделать универсальный скрипт что бы допусти берем координату, по ней добовляем насколько чар может отойти в тайлах (достаточно большой квадрат) и заставляем пробежатся "змейкой" в этом квадрате находя деревья и записывая найденое в файл. (причем как я понял неважно будет это гост или нет).
2. Потом просто загружаем файл и ходим по собраным координатам с автоудалением координата вырубленого дерева + что бы это уже было не змойкой, а рандомно.
п.с. ну и так же игнор всего что за забором.. допустим что бы чар (гост который собирает координаты в файл) искал деревья в радиусе 1-2 клетки.

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.
А можно поподробнее плиз

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 деревьев обнулял координаты вырубленных деревьев?