Page 3 of 4

Re: Странная хрень у меня на РанУО

Posted: 2014-06-01 23:15:33
by grundick
Incorrect User wrote:И саму задержку в принципе межно перенести сразу за строку
.

Хаха! Вот финальная версия

Code: Select all

sub mineAroundSelf()
   VAR x,y,z='0',TileNum , iTileNum
   VAR  Counter, PickAxeType
   VAR  MaxCount=10  , startTime
   uo.concolor('0x1234')
   UO.FindType('0x0E86',-1,'my')
   If Uo.FindCount() Then
      PickAxetype='0x0E86'
   Else
      PickAxetype='0x0F39'
   Endif
   
   ## cliloc# 0x7AD03 You loosen some rocks
   ## cliloc# 0x7A2DE Too far away
   ## cliloc# 0x7AD00 There is no metal to mine
   ## cliloc# 0x7A867 Can't mine that
   For x=-2 to 2
      For y=-2 to 2
         iTileNum = uo.Hex2Int( uo.IsMineTile(UO.GetX()+x, UO.GetY()+Y) )
         TileNum = str(iTileNum)
         #uo.print('x=' + str(x) + ', y=' + str(y) + ', tileType=' + tileNum)
         if  iTileNum > 1338 AND iTileNum < 1360  then
            Counter=0
            uo.deletejournal()
            Repeat
               startTime = now()
               UO.WaitTargetTile(TileNum, UO.GetX() + x, UO.GetY() + Y, z)
               UO.UseType(PickAxeType)
               uo.WaitingForJournalText(startTime,3000,"You put some|There is no metal|0x7AD03|0x7A2DE|0x7A867|0x7AD00|0x7A197")
               wait(500)
               Counter=Counter+1
            Until UO.InJournal("7AD00|You can't mine") > 0  OR Counter > MaxCount
         endif
      Next
   Next
end sub

Вообще ни разу не было, чтобы не получил ответ.
Уменьшаю задержку до 300, и получаю периодичекое "You must wait to perfom another action"
Уменьшаю до 100, и эта массгага валиться постоянно.
Уменьшаю до 0, и начинается ад :)

Re: Странная хрень у меня на РанУО

Posted: 2014-06-01 23:33:33
by Incorrect User
:wink: Только

Code: Select all

uo.WaitingForJournalText(startTime,1000
1000 наверное маловато?)

Re: Странная хрень у меня на РанУО

Posted: 2014-06-01 23:39:38
by grundick
Да не, хватает. Проблем не возникает.

Re: Странная хрень у меня на РанУО

Posted: 2014-06-01 23:41:45
by Incorrect User
Как, у вас так быстро копает? у нас минимум 5-6 секунд. + сейв я ставлю 15 сек(15000) всегда в таких скриптах.

Re: Странная хрень у меня на РанУО

Posted: 2014-06-01 23:43:20
by grundick
Да, здесь такая тема. Самому по началу непривычно было. За один взмах либо выкапывает, либо другую мессагу получаешь.

Re: Странная хрень у меня на РанУО

Posted: 2014-06-01 23:46:23
by Incorrect User
Ну таймер ставить оптимально время копки + время сейва с небольшим запасом. Иначе на сейве слетит и может сбиться будет кирку юзать бесконечно из за незаконченного действия.

Re: Странная хрень у меня на РанУО

Posted: 2014-06-01 23:48:17
by grundick
Ну это уже когда на стелсе начну автономный писать :)

Кстати, когда в последнем варианте пытался убрать проверку на тайл и вернуться к первоначальному WaitTargetTile( ... , '1339', ... )
получал ошибку Target cannot be seen.

Re: Странная хрень у меня на РанУО

Posted: 2014-06-02 09:06:31
by Incorrect User
Это потому что номера разные, и похоже на вашем сервере нужно указывать точный номер. На нашем, к примеру, можно -1 поставить и будет копать.

Re: Странная хрень у меня на РанУО

Posted: 2014-06-02 18:27:46
by grundick
Вообщем ,парни, видимо я вчера перебрал с алкоголем и наркотиками.
Реально проблема оказалась в WaitTargetTile, точнее, значении типа тайла. Проверил на БЕСТУО ради интереса, там пофигу какое значение ставить.
А вот где сейчас играю - нужно вставлять правильный тип тайла, иначе ответа от сервера не приходит.
В этом и была проблема.

Ещё вопрос по поводу IsMineTile. Эта функция как-то учитывает разницу в Z координатах чара и найденного тайла? А то я тут в пещере нашёл какой-то тайл 6006.
Это не скалистая крыша пещеры? :)

Re: Странная хрень у меня на РанУО

Posted: 2014-06-02 18:43:11
by Juicy Fruit
Нет, поиск ведется без учета Z координаты.
Список тайлов где-то в теме с обновлением давал, ща лень искать)

Code: Select all

{616,  618},
{1339, 1363},
{2272, 2282},
{4963, 4973},
{6001, 6012},
{13121,13369},
{13446,13455},
{13484,13492},
{13625,13628}
Вполне может быть что он нашел верх скалы)
Если кроме этого тайла ничего больше не выдал после разделителя - значит там ничего и нет в статике. Если есть - можно фильтр написать на не интересующие тайлы.
Или юзать

Code: Select all

UO.PrivateGetTile(X,Y,GroundOrStatic,Tile1,Tile2)
Если нашлось что-то в этих координатах от Tile1 до Tile2 - возвращает ИД тайла из диапазона, в противном случае - пустую строку.

Re: Странная хрень у меня на РанУО

Posted: 2014-06-02 18:48:48
by grundick
Понял, спасибо.

Re: Странная хрень у меня на РанУО

Posted: 2014-06-21 11:42:47
by grundick
А что, IsMineTile (равно как и PrivateGetTile) не работают в мирах, отличных от Trammel? Залез в другой мир, а там обе функции возвращают нули на копаемых тайлах. Хотя _infotile возвращает правильный тип...

Re: Странная хрень у меня на РанУО

Posted: 2014-06-21 12:41:10
by Juicy Fruit
Да, там не большой косяк с определением карты был.
В последнем релизе убрал автоопределение карты, всегда из 0 берет.

Re: Странная хрень у меня на РанУО

Posted: 2014-06-21 13:40:04
by grundick
Juicy Fruit wrote:Или юзать

Code: Select all

UO.PrivateGetTile(X,Y,GroundOrStatic,Tile1,Tile2)
Если нашлось что-то в этих координатах от Tile1 до Tile2 - возвращает ИД тайла из диапазона, в противном случае - пустую строку.

А как насчёт создания расширенной версии, которая дополнительно принимала бы диапазон Z координат (z1, z2) , используемой для фильтрации найденных тайлов и возвращала что-то типа списка структур (хз, возможно ли это в инжекте. Может массив массивов?), где элементами структуры были бы тип тайла, его Z координата, ну и на будущее, флаги тайла ?

Re: Странная хрень у меня на РанУО

Posted: 2014-06-21 14:01:09
by Incorrect User
А что инфотайл не показывает координату? Из него и бери.

Re: Странная хрень у меня на РанУО

Posted: 2014-06-21 15:44:21
by grundick
Incorrect User wrote:А что инфотайл не показывает координату? Из него и бери.

Что-то не совсем представляю, как это реализовать :)

Re: Странная хрень у меня на РанУО

Posted: 2014-06-21 16:33:23
by Incorrect User
Можно было бы, getword если бы писало в журнал. Похоже нужна функция для определения Z, типа GetTileZ(x,y)

Re: Странная хрень у меня на РанУО

Posted: 2014-06-21 18:44:51
by Juicy Fruit
grundick wrote:
Juicy Fruit wrote:Или юзать

Code: Select all

UO.PrivateGetTile(X,Y,GroundOrStatic,Tile1,Tile2)
Если нашлось что-то в этих координатах от Tile1 до Tile2 - возвращает ИД тайла из диапазона, в противном случае - пустую строку.

А как насчёт создания расширенной версии, которая дополнительно принимала бы диапазон Z координат (z1, z2) , используемой для фильтрации найденных тайлов и возвращала что-то типа списка структур (хз, возможно ли это в инжекте. Может массив массивов?), где элементами структуры были бы тип тайла, его Z координата, ну и на будущее, флаги тайла ?

viewtopic.php?f=12&t=16689&start=100#p94501
Совсем забыл, что в скрипт.длл тоже есть работа с мулами, но там нужно указывать принудительно путь к папке с УО.
Там же можно получить список всех тайлов с учетом их Z координаты.
Вырвать нужный тайл и его Z простым разбором строки, там дальше в теме есть готовый скрипт который это делает.

Re: Странная хрень у меня на РанУО

Posted: 2014-06-21 22:43:13
by grundick
А как определять какой мул подгружать? У меня тут с десяток файлов типа map....mul.
Портнулся в другой мир, на тайле 0x053C(-90) (по показаниям _infotile()) выдаёт 0x00A8(-5)

Кстати, а как IsTreeTile работает? Я смотрю деревья из двух тайлов состоят (ствол и листва), причём тайлы разных стволов имеют разные наборы флагов. Ориентироваться по тайлу листвы( (Foliage) ? По факту таргет можно и на листву, и на ствол бросать, однако логи у них общие(то есть если на листве всё вырубил, то и на стволе логов не будет)

Re: Странная хрень у меня на РанУО

Posted: 2014-06-22 08:45:01
by Juicy Fruit
.where должна выдавать X, Y, Z, Map
Вот значение из Map это будет порядковый номер мула.