Yoko

All sides of Injection
It is currently 2024-03-28 13:56:31

All times are UTC+02:00




Post new topic  Reply to topic  [ 144 posts ]  Go to page Previous 1 2 3 4 58 Next
Author Message
 Post subject:
PostPosted: 2008-10-27 00:30:41 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Игрока.

_________________
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.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2009-11-10 09:58:28 
Offline
User avatar

Joined: 2006-08-06 10:23:20
Posts: 117
ПОнять не могу. В бейондеровской нету "prec", другие тоже не подходят(
выложите под него ходилку, ребят?)


разобрался)


Top
   
 Post subject:
PostPosted: 2009-11-10 19:56:58 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
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.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2009-11-11 03:30:36 
Offline

Joined: 2009-11-07 14:37:03
Posts: 5
Ммм.. Скрипт очень хороший, слишком уж геморно каждый раз на новых шардах перемаркивать деревья и т.п.


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

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

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

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

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

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

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

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


Top
   
 Post subject:
PostPosted: 2009-11-11 05:19:48 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
1. Это вопрос к ходилке, чтобы она отрубалась, если нельзя пройти.
2. Ну.. Изначально у меня были довольно-таки кривые реализации.
В целом алгоритм должен выглядеть так:
- Знаем через сколько часов нужно дать возможность вырубить заного.
- В строке:
Code:
uo.setGlobal( 't:' + str( x ) + "," + str( y ), "empty" ) 
указываем время вырубки
- В строке:
Code:
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.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2009-11-15 23:34:42 
Offline
Expert!
User avatar

Joined: 2005-04-23 10:19:43
Posts: 388
1) Нужно поиграть с параметрами ходилки. Если не получилось обойти препятствие - она возвращает 0. Если получилось - 1.
Для конкретно этого скрипта я думаю оптимальные параметры такие:
Code:
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 проверку на спрятанность. Эта функция отвечает за шаги, тоесть твоя проверка будет срабатывать при каждом шаге.


Top
   
 Post subject:
PostPosted: 2009-12-12 13:34:30 
Offline

Joined: 2007-11-13 00:39:14
Posts: 125
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 :)


Top
   
PostPosted: 2010-02-02 01:19:22 
Offline
Expert!
User avatar

Joined: 2005-04-23 10:19:43
Posts: 388
Скрипт будет в теории иногда падать (в чём я убедился на практике).
Проблема в UO.GetGlobal и UO.SetGlobal. Эти функции не синхронизированы с потоками, тоесть если два потока одновременно запустят эти функции на одной переменной - клиент умрёт. А у тебя очень редко но это случается. Т.к. ты в отдельном потоке запускаешь поиск дерева, а потом в другом потоке считываешь координату UO.GetGlobal-ом. Если текущее дерево было вырублено и компьютер тормознулся, клиент умирает.
Поэтому простой способ - убрать потоки, много ты времени там не экономишь.
Второй способ - сделать через SetEasyUO и GetEasyUO.


Top
   
PostPosted: 2010-02-11 13:08:24 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
Заявленные функции скрипт выполняет. А именно "немного порубить на стрелы". Я на нём качнул гм боу и 93 ламбера. Конечно парит перегружать клиент (чтоб сброслись глобалки). Но коли лениво что то настраивать своё, это скрипт вполне пригоден к использованию.


Top
   
PostPosted: 2010-02-11 14:08:03 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
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.
Skype: d119060


Top
   
PostPosted: 2010-03-15 07:24:41 
Offline

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

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

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

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


Top
   
 Post subject: Re:
PostPosted: 2010-03-15 07:25:34 
Offline

Joined: 2009-08-20 06:45:57
Posts: 22
Beyonder wrote:
1) Нужно поиграть с параметрами ходилки. Если не получилось обойти препятствие - она возвращает 0. Если получилось - 1.
Для конкретно этого скрипта я думаю оптимальные параметры такие:
Code:
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 проверку на спрятанность. Эта функция отвечает за шаги, тоесть твоя проверка будет срабатывать при каждом шаге.

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


Top
   
 Post subject: Re:
PostPosted: 2010-03-31 15:53:40 
Offline

Joined: 2009-02-26 14:39:12
Posts: 24
Destruction wrote:
2. Ну.. Изначально у меня были довольно-таки кривые реализации.
В целом алгоритм должен выглядеть так:
- Знаем через сколько часов нужно дать возможность вырубить заного.
- В строке:
Code:
uo.setGlobal( 't:' + str( x ) + "," + str( y ), "empty" ) 
указываем время вырубки
- В строке:
Code:
if NOT uo.getGlobal( 't:' + str( x + cx ) + "," + str( y + cy ) ) == "empty"
ставим соответственно проверку на прошедшее время с момента вырубки.


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


Top
   
PostPosted: 2010-04-25 02:14:36 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
Вопрос к автору. Реально ли приделать какие-либо ограничения на перемещение в пространстве? А то у меня недалеко от домика монстры гуляют, и я думаю что автопоиск может найти мне такое счастье, как ресать лесоруба... Был бы благодарен за готовое решение, но можно и указать суть, сам попробую написать.


Top
   
PostPosted: 2010-04-25 14:13:27 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
чтобы не убредал далеко надо использовать ходилку с координатами :)
Ну или проверку чтото типо
если getx('self')>1234 и gety('self')>1234 тогда
томаем в точку с координатами 12 12

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2010-04-25 18:09:51 
Offline
User avatar

Joined: 2009-03-06 21:52:25
Posts: 89
Дестр посиди и сделай сброс деревьев... Уже вон скоко запросов. А то парит каждый раз переключать его. :!:


Top
   
PostPosted: 2010-04-25 23:33:51 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
Mirage wrote:
чтобы не убредал далеко надо использовать ходилку с координатами :)
Ну или проверку чтото типо
если getx('self')>1234 и gety('self')>1234 тогда
томаем в точку с координатами 12 12



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

Code:
        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


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


Top
   
PostPosted: 2010-05-30 15:51:03 
Offline

Joined: 2010-05-30 15:45:59
Posts: 2
подскажите какой командой можно обнулить данные деревьев полученные этим скриптом?


Top
   
PostPosted: 2010-06-02 03:28:11 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
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.
Skype: d119060


Top
   
PostPosted: 2010-06-02 10:31:37 
Offline

Joined: 2010-05-30 15:45:59
Posts: 2
Destruction wrote:
О чем речь? - Что вы хотите сделать?

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 144 posts ]  Go to page Previous 1 2 3 4 58 Next

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 6 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited