Yoko

All sides of Injection
It is currently 2024-04-25 15:44:22

All times are UTC+02:00




Post new topic  Reply to topic  [ 67 posts ]  Go to page Previous 1 2 3 4 Next
Author Message
PostPosted: 2014-06-01 23:15:33 
Offline

Joined: 2006-11-25 17:44:44
Posts: 258
Incorrect User wrote:
И саму задержку в принципе межно перенести сразу за строку
.

Хаха! Вот финальная версия
Code:
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, и начинается ад :)


Last edited by grundick on 2014-06-02 01:03:31, edited 4 times in total.

Top
   
PostPosted: 2014-06-01 23:33:33 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
:wink: Только
Code:
uo.WaitingForJournalText(startTime,1000
1000 наверное маловато?)

_________________
CodeSweeper


Top
   
PostPosted: 2014-06-01 23:39:38 
Offline

Joined: 2006-11-25 17:44:44
Posts: 258
Да не, хватает. Проблем не возникает.


Top
   
PostPosted: 2014-06-01 23:41:45 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Как, у вас так быстро копает? у нас минимум 5-6 секунд. + сейв я ставлю 15 сек(15000) всегда в таких скриптах.

_________________
CodeSweeper


Top
   
PostPosted: 2014-06-01 23:43:20 
Offline

Joined: 2006-11-25 17:44:44
Posts: 258
Да, здесь такая тема. Самому по началу непривычно было. За один взмах либо выкапывает, либо другую мессагу получаешь.


Top
   
PostPosted: 2014-06-01 23:46:23 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Ну таймер ставить оптимально время копки + время сейва с небольшим запасом. Иначе на сейве слетит и может сбиться будет кирку юзать бесконечно из за незаконченного действия.

_________________
CodeSweeper


Top
   
PostPosted: 2014-06-01 23:48:17 
Offline

Joined: 2006-11-25 17:44:44
Posts: 258
Ну это уже когда на стелсе начну автономный писать :)

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


Top
   
PostPosted: 2014-06-02 09:06:31 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Это потому что номера разные, и похоже на вашем сервере нужно указывать точный номер. На нашем, к примеру, можно -1 поставить и будет копать.

_________________
CodeSweeper


Top
   
PostPosted: 2014-06-02 18:27:46 
Offline

Joined: 2006-11-25 17:44:44
Posts: 258
Вообщем ,парни, видимо я вчера перебрал с алкоголем и наркотиками.
Реально проблема оказалась в WaitTargetTile, точнее, значении типа тайла. Проверил на БЕСТУО ради интереса, там пофигу какое значение ставить.
А вот где сейчас играю - нужно вставлять правильный тип тайла, иначе ответа от сервера не приходит.
В этом и была проблема.

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


Top
   
PostPosted: 2014-06-02 18:43:11 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Нет, поиск ведется без учета Z координаты.
Список тайлов где-то в теме с обновлением давал, ща лень искать)
Code:
{616,  618},
{1339, 1363},
{2272, 2282},
{4963, 4973},
{6001, 6012},
{13121,13369},
{13446,13455},
{13484,13492},
{13625,13628}
Вполне может быть что он нашел верх скалы)
Если кроме этого тайла ничего больше не выдал после разделителя - значит там ничего и нет в статике. Если есть - можно фильтр написать на не интересующие тайлы.
Или юзать
Code:
UO.PrivateGetTile(X,Y,GroundOrStatic,Tile1,Tile2)
Если нашлось что-то в этих координатах от Tile1 до Tile2 - возвращает ИД тайла из диапазона, в противном случае - пустую строку.


Top
   
PostPosted: 2014-06-02 18:48:48 
Offline

Joined: 2006-11-25 17:44:44
Posts: 258
Понял, спасибо.


Top
   
PostPosted: 2014-06-21 11:42:47 
Offline

Joined: 2006-11-25 17:44:44
Posts: 258
А что, IsMineTile (равно как и PrivateGetTile) не работают в мирах, отличных от Trammel? Залез в другой мир, а там обе функции возвращают нули на копаемых тайлах. Хотя _infotile возвращает правильный тип...


Top
   
PostPosted: 2014-06-21 12:41:10 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Да, там не большой косяк с определением карты был.
В последнем релизе убрал автоопределение карты, всегда из 0 берет.


Top
   
PostPosted: 2014-06-21 13:40:04 
Offline

Joined: 2006-11-25 17:44:44
Posts: 258
Juicy Fruit wrote:
Или юзать
Code:
UO.PrivateGetTile(X,Y,GroundOrStatic,Tile1,Tile2)
Если нашлось что-то в этих координатах от Tile1 до Tile2 - возвращает ИД тайла из диапазона, в противном случае - пустую строку.

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


Top
   
PostPosted: 2014-06-21 14:01:09 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
А что инфотайл не показывает координату? Из него и бери.

_________________
CodeSweeper


Top
   
PostPosted: 2014-06-21 15:44:21 
Offline

Joined: 2006-11-25 17:44:44
Posts: 258
Incorrect User wrote:
А что инфотайл не показывает координату? Из него и бери.

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


Top
   
PostPosted: 2014-06-21 16:33:23 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Можно было бы, getword если бы писало в журнал. Похоже нужна функция для определения Z, типа GetTileZ(x,y)

_________________
CodeSweeper


Top
   
PostPosted: 2014-06-21 18:44:51 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
grundick wrote:
Juicy Fruit wrote:
Или юзать
Code:
UO.PrivateGetTile(X,Y,GroundOrStatic,Tile1,Tile2)
Если нашлось что-то в этих координатах от Tile1 до Tile2 - возвращает ИД тайла из диапазона, в противном случае - пустую строку.

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

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


Top
   
PostPosted: 2014-06-21 22:43:13 
Offline

Joined: 2006-11-25 17:44:44
Posts: 258
А как определять какой мул подгружать? У меня тут с десяток файлов типа map....mul.
Портнулся в другой мир, на тайле 0x053C(-90) (по показаниям _infotile()) выдаёт 0x00A8(-5)

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


Last edited by grundick on 2014-06-22 09:04:38, edited 2 times in total.

Top
   
PostPosted: 2014-06-22 08:45:01 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
.where должна выдавать X, Y, Z, Map
Вот значение из Map это будет порядковый номер мула.


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

All times are UTC+02:00


Who is online

Users browsing this forum: Google [Bot] and 23 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