Yoko

All sides of Injection
It is currently 2024-03-28 16:30:59

All times are UTC+02:00




Post new topic  Reply to topic  [ 144 posts ]  Go to page Previous 1 2 3 4 5 68 Next
Author Message
PostPosted: 2010-06-02 18:32:01 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
reTry wrote:
Destruction wrote:
О чем речь? - Что вы хотите сделать?

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

Никак. Проще по таймеру сбрасывать. О чем собственно говоря и идет речь на полторы страницы..

_________________
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-07-18 02:25:49 
Offline

Joined: 2009-08-04 14:16:41
Posts: 30
Location: SPB
у меня была замечательная идея создания 2х амссивов на 100 единиц x и y , то есть циколм мы проверяем нахождение деревья в этих 2х массивах,и если это дерево етсь мы просто переходим к следущему :D только лагает жутко,зато сброс легко сделать,если массив заполнен то циколм обнуляешь оба массива просто и все)


Top
   
PostPosted: 2010-07-18 18:03:30 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
1) 100 деревьев рубятся на некоторых шардах за 20-30 минут. Респ несколько часов.
2) зачем делать отдельно массивы для х и для y если ты про координаты?
3) с чего бы ей лагать?
4) если идея не потерялась пиши - посмотрим. Может мозговой штурм решит проблему.

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


Top
   
PostPosted: 2010-07-19 08:05:38 
Offline
Expert!
User avatar

Joined: 2005-04-23 10:19:43
Posts: 388
Я тоже когда-то думал сделать вместо обычного поиска ближайших деревьев - прикрутить к ней оптимальный обход графа. Правда так как не силён в графах то не смог этого доделать (да и не надо/лень уже было).

Идея простая:
1) Кешируем деревья в определённом радиусе в массив.
2) Представляем весь массив в виде сильно связного полного графа (правда хз выдержит ли инжа такое издевательство если деревьев будет 1000+) где вес каждого ребра равен расстоянию между вершинами.
3) Ищем оптимальный полный обход полученного графа.
4) Сохраняем обход этого графа в файл (не обязательно, но очень полезно, т.к. пункт 2 и 3 будут долго работать).
5) Идём по графу и рубим деревья.

Если-бы кто сделал - был-бы отменный скрипт на ламбер :)


Last edited by Beyonder on 2010-07-23 11:41:42, edited 1 time in total.

Top
   
PostPosted: 2010-07-22 13:31:20 
Offline

Joined: 2009-08-04 14:16:41
Posts: 30
Location: SPB
по поводу мозгового штурма...ну щас посмотрю,перепишу кое что,что давно хотел переписать и выложу)


Top
   
PostPosted: 2010-10-22 07:47:06 
Offline
User avatar

Joined: 2010-10-01 16:47:41
Posts: 75
Кстати, чтобы ходилка нормально работала, при помощи Tiledata patcher'а следует отредактировать свойства всяких кустов, камней, колючек, ну и (конечно) деревьев.
В частности поставить в свойствах тайлов "unpassable". Тогда будет их нормально обходить, а не застревать...

_________________
Все мы славные ребята, простые русские парни, железные люди с деревянными головами...


Top
   
PostPosted: 2010-10-22 17:39:55 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
GMX wrote:
Кстати, чтобы ходилка нормально работала, при помощи Tiledata patcher'а следует отредактировать свойства всяких кустов, камней, колючек, ну и (конечно) деревьев.
В частности поставить в свойствах тайлов "unpassable". Тогда будет их нормально обходить, а не застревать...

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

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


Top
   
PostPosted: 2010-11-04 13:26:43 
Offline
User avatar

Joined: 2010-10-01 16:47:41
Posts: 75
Mirage wrote:
GMX wrote:
Кстати, чтобы ходилка нормально работала, при помощи Tiledata patcher'а следует отредактировать свойства всяких кустов, камней, колючек, ну и (конечно) деревьев.
В частности поставить в свойствах тайлов "unpassable". Тогда будет их нормально обходить, а не застревать...

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

Наоборот! Когда на сервере стоит, что их проходить нельзя, а в тайлдата такого свойства нет, то получается, что тебя "отбрасывает", а когда в тайлдата указано, что их нельзя проходить, то тогда ходилка (в частности от Бейондера) обходит их хорошо.

_________________
Все мы славные ребята, простые русские парни, железные люди с деревянными головами...


Top
   
PostPosted: 2010-11-08 14:46:23 
Offline
Expert!
User avatar

Joined: 2005-04-23 10:19:43
Posts: 388
В теории она должна проходить даже если тебя отбрасывает, т.к. там 2 уровня проверки: проверка по тайлдате и по результату действия. Но не ручаюсь так как писал её очень давно.
Плюс, если слегка подправить метод по сканированию тайла (в самом низу скрипта), то можно в сам скрипт добавить массив с типами кустов и другого мусора.


Top
   
PostPosted: 2010-12-03 12:38:46 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
Вот чуть поковырял скрипт
Code:
Sub SearchTree()
  var i, x, y, t, stp, max_search = 24, RespawnTime = 9000
  var MaxX = 755, MinX = 200, MaxY = 1030, MinY = 867
  var cx = UO.GetX()
  var cy = UO.GetY()
  For i = 1 to max_search
    For x = -i to i
      stp = 1
      If not i == Abs(x) then
        stp = Abs(i) * 2
      Endif
      For y = -i to i step stp
        If (x + cx) < MaxX and (x + cx) > MinX and (y + cy) < MaxY and (y + cy) > MinY then
          If val(UO.GetEasyUO(val(str(x + cx) + str(y + cy)))) + RespawnTime > UO.Timer() and not UO.GetEasyUO(val(str(x + cx) + str(y + cy))) == 'empty' then
            t = IsTreeTile(x + cx, y + cy)
            If not t == false then
              UO.SetEasyUO(1, str(x + cx))
              UO.SetEasyUO(2, str(y + cy))
              UO.SetEasyUO(3, str(t))
              Return false
             else
              UO.SetEasyUO(val(str(x + cx) + str(y + cy)), 'empty')
            Endif
          Endif
         else
          Wait(100)
        Endif
      Next
    Next
  Next
Endsub

Sub DoMineTree()
  var x, y, t, Time, k
  var end = 'appears immune|nothing here|reach this'
  var try = 'I put|fail'
  Repeat
    x = val(UO.GetEasyUO(1))
    y = val(UO.GetEasyUO(2))
    t = val(UO.GetEasyUO(3))
    UO.SetEasyUO(val(str(x) + str(y)), str(UO.Timer()))
    If Walker(x, y, 1) > 0 then
      UO.Exec('exec SearchTree')
      k = 0
      Repeat
        k = k + 1
        If UO.Waiting() then
          UO.CancelTarget()
        Endif
        DelJournal(try + '|' + end)
        UO.WaitTargetTile(str(t), str(x), str(y), str(UO.GetZ()))
        UO.UseType(Hatchet)
        Time = UO.Timer()
        Repeat
          Wait(100)
        Until UO.InJournal(try + '|' + end) or Time + 100 < UO.Timer()
      Until UO.InJournal(end) or k > 7
    Endif
    While val(UO.GetEasyUO(1)) == x && val(UO.GetEasyUO(2)) == y
      Wait(100)
    Wend
  Until false
Endsub


Проблемма в том, что ни чего не делает)
Думаю, что виноват этот кусочек
Code:
If val(UO.GetEasyUO(val(str(x + cx) + str(y + cy)))) + RespawnTime > UO.Timer() and not UO.GetEasyUO(val(str(x + cx) + str(y + cy))) == 'empty' then


Подскажите, что не так
Эту проблемму решил

теперь unhandled exeption in parser вылетает после подхода к n-ному дереву

Всем спасибо :lol: Сделал в одном потоке и все проблеммы исчезли


Top
   
PostPosted: 2011-03-23 13:30:45 
Offline

Joined: 2006-06-08 15:51:51
Posts: 5
Танцевал с бубном вокруг бродилки от Beyonder'a и данного скрипта, но так и не получилось заставить персонажа хайдиться больше одного раза. Направьте меня советом, пожалуйста :) Хочется сделать так, чтобы он хотя бы перед каждой рубкой дерева делал чекхайд и, если персонаж не в инвизе, хайдился. Постоянно быть в хайде нет нужды, поэтому хайд пытался прикрутить больше не к бродилке (её вообще трогать страшно - до такого кода по-моему, не будучи профессиональным разработчиком ПО, не дорасти), а именно к данному ламбер-скрипту.


Top
   
PostPosted: 2011-03-23 13:41:01 
Offline

Joined: 2006-06-08 15:51:51
Posts: 5
Code:
Sub doMineTree()
   var x, y, t
   var end = "appears immune|to chop|reach this|destroer|in work!"
   var try = "You put|fail"
   repeat
      x = val( uo.getGlobal( "tree_x" ) )
      y = val( uo.getGlobal( "tree_y" ) )
      t = val( uo.getGlobal( "tree_t" ) )
      uo.setGlobal( 't:' + str( x ) + "," + str( y ), "empty" )
      Walker( x, y, 1 )
      uo.exec( "exec searchTree" )
      repeat
         if uo.waiting() then
            uo.canceltarget()
         endif
         deljournal( try + "|" + end )
         uo.waittargettile( str( t ), str( x ), str( y ), str( uo.getZ() ) )
         uo.usetype( hatchet )
         repeat
            wait( 100 )
         until uo.injournal( try + "|" + end )
      until uo.injournal( end )
      while uo.getGlobal( "tree_x" ) == str( x ) && uo.getGlobal( "tree_y" ) == str( y )
         wait( 100 )
      wend
   until false
endsub


Насколько я понял, имплементировать хайд необходимо в эту часть скрипт, но я не понимаю, почему куда бы я не засовывал проверку на хайд, чар хайдится только 1 раз перед рубкой, после чего перестает хайдиться и полностью игнорирует while с хайдом.


Top
   
PostPosted: 2011-03-23 19:12:08 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Code:
Sub doMineTree()
   var x, y, t
   var end = "appears immune|to chop|reach this|destroer|in work!"
   var try = "You put|fail"
   repeat
      x = val( uo.getGlobal( "tree_x" ) )
      y = val( uo.getGlobal( "tree_y" ) )
      t = val( uo.getGlobal( "tree_t" ) )
      uo.setGlobal( 't:' + str( x ) + "," + str( y ), "empty" )
      Walker( x, y, 1 )
      uo.exec( "exec searchTree" )
      repeat
         Hide()         ;  <-------------------
         if uo.waiting() then
            uo.canceltarget()
         endif
         deljournal( try + "|" + end )
         uo.waittargettile( str( t ), str( x ), str( y ), str( uo.getZ() ) )
         uo.usetype( hatchet )
         repeat
            wait( 100 )
         until uo.injournal( try + "|" + end )
      until uo.injournal( end )
      while uo.getGlobal( "tree_x" ) == str( x ) && uo.getGlobal( "tree_y" ) == str( y )
         wait( 100 )
      wend
   until false
endsub
sub Hide()
   If Not UO.Hidden() Then
      if Uo.WarMode()==1 then
         Uo.WarMode('0')
      endif
         UO.UseSkill("Hiding")
         Wait( 2000 ) ; пауза на использование скилла (изменить или удалить)
   endif
end sub


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


Top
   
PostPosted: 2011-05-27 12:14:00 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Mirage wrote:
Переписать сообщения в журнале, добавить таймеры.

Ну меня собственно и интересует в чем сама проблема а не как ее решить. А в чем она я в упор не видел. "Сообщения в журнале" это всмысле мсг сферы указанные в скрипте?

_________________
CodeSweeper


Top
   
PostPosted: 2011-05-27 13:48:03 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
тоесть ты просишь решение проблемы не ознакомившись с самой проблемой? :D

Сообщения на любом типе серверов (sphere/POL/RunUO/прочие) хранятся в текстовом файле. Который админы имеют привычку править. Инжект в меру своей обыденности не может сопоставить фразу
You pushed the ball
с фразой
Вы ударили по мечу.
Хотя вроде бы одно и тоже. :roll:
Самый злобные и коварные админы идут дальше. Они заменяют ряд букв (как правило гласных) на аналогичнонаписательные но на другом языке
деревo - буква o на английском.
И бедный инжект не понимает чего от него хочет бедный игрок пытаясь найти слово "дерево" (о - русское) в журнале - слова то такого нет! Потому скрипты и не работают.

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


Top
   
PostPosted: 2011-05-27 14:34:38 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Вот оно че Михалыч. Только я не понял в каком журнале сообщения переписывать. Из журнала инжекта после того как он получит нужные с сервера, копировать в скрипт? Не совсем понятно :? И почему из за того что неправильное сообщение, чар может неделать ничего вообще, не идти к дереву, даже топор не юзать? Ведь сообщения он получает уже после рубки.

_________________
CodeSweeper


Top
   
PostPosted: 2011-05-27 20:26:43 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
Incorrect User wrote:
Вот оно че Михалыч. Только я не понял в каком журнале сообщения переписывать. Из журнала инжекта после того как он получит нужные с сервера, копировать в скрипт? Не совсем понятно :? И почему из за того что неправильное сообщение, чар может неделать ничего вообще, не идти к дереву, даже топор не юзать? Ведь сообщения он получает уже после рубки.


Именно с журнала инжекта. Команда ,showjournal. А если не находит деревья, то проверь типы статики


Top
   
PostPosted: 2011-05-27 21:04:01 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Сейчас такая тема, если просто вставить скрипт ламбера то пишет not found ABS. Вставляю скрипт ходилки, ошибки больше нет но при запуске процедуры searchTree она просто включается и моментально выключается. То есть в окне списка запущеных процедур она просто появляеться и сразу исчезает. При этом нет никаких сообщений об ошибках, и сообщений из самого скрипта в клиенте тоже нету никаких.

_________________
CodeSweeper


Top
   
PostPosted: 2011-05-28 00:06:44 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
А как ты ходилку прикрутил?


Top
   
PostPosted: 2011-05-28 00:42:41 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Просто скопипастил.

_________________
CodeSweeper


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 144 posts ]  Go to page Previous 1 2 3 4 5 68 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