Добрый день!
Подскажите, остался кто-то живой на форуме из разработчиков? Пытаюсь написать скрипт на автомайнинг с использованием новой функции UO.IsMinetile(), но почему то сталкиваюсь с ошибками - не видит определенные тайлы, хотя с помощью _infotile и uo.getprivatetile() они нормально распознаются. Копаю по камням, и в частности ошибка замечена для тайла 6012 (0x177C), который вроде как должен попадать в диапазон тайлов функции UO.IsMineTile(), если верить табличке:
Code:
{616, 618},
{1339, 1363},
{2272, 2282},
{4963, 4973},
{6001, 6012},
{13121,13369},
{13446,13455},
{13484,13492},
{13625,13628}
Но при этом функцией UO.IsMineTile() не определяется как тайл шахты. Как уже сказал другие функции возвращают корректные значения. При этом я проверял функцией UO.PrivateGetTile(), и даже там где функция находит только 1 тайл из диапазона 1-65000, как раз таки тот самый 0x177C, UO.IsMineTile() все равно не срабатывает. Бывает что uo.Privategettile() возвращает 2 значения с одного тайла, на котором расположен камень, но это редкость. Остальные тайлы из диапазона 6001-6012 вроде бы определяются корректно, не заметил других ошибок, но я пока не встречал тайлы 6001, 6005, 6006, 6009, 6010. Все остальное работает как часы, если копать по камням\кочкам, в пещере также пока не проверял.
Для проверки сделал скриптик:
Code:
######Проверка тайла#####
sub IsMineTile(x, y)
var k, tileid, intervals=9
DIM AA[9], BB[9]
AA[1] = 604
BB[1] = 630
AA[2] = 1339
BB[2] = 1363
AA[3] = 2272
BB[3] = 2282
AA[4] = 4963
BB[4] = 4973
AA[5] = 6001
BB[5] = 6012
AA[6] = 13121
BB[6] = 13369
AA[7] = 13446
BB[7] = 13455
AA[8] = 13484
BB[8] = 13492
AA[9] = 13625
BB[9] = 13628
for k = 1 to intervals
tileid=ASC(uo.privategettile( x, y, -1, AA[k], BB[k] ) )
if tileid>0 then
return tileid
endif
next
return 0
end sub
######Проверка координат в радиусе 'distance' вокруг персонажа####
sub checktile()
var tileid, xxxx, yyyy
var distance=50
var countmoy=0, countismine=0
for xxxx=uo.getx()-distance to UO.getx()+distance
for yyyy=uo.gety()-distance to uo.gety()+distance
tileid=isminetile(xxxx,yyyy)
if tileid==0 then
else
uo.textprint('Mozhno kopat! HEX Tile # = ' + uo.int2hex(VAL(STR(tileid))) + ', DEC Tile # = ' + str( tileid ) + '. X = '+str(xxxx)+ ', Y = '+str(yyyy))
uo.textprint(uo.PrivateGetTile(xxxx,yyyy,-1,604,13628))
countmoy=countmoy+1
end if
if uo.isminetile(xxxx, yyyy) then
countismine=countismine+1
end if
next
next
UO.textprint('Ya naschital '+str(countmoy)+' mining tiles! Vstroennaya funkciya IsMineTile naschitala '+str(countismine)+' mining tiles!')
end sub
В радиусе 50 клеток вокруг чара разница в кол-ве найденных тайлов была существенная:
Code:
Ya naschital 94 mining tiles! Vstroennaya funkciya IsMineTile naschitala 70 mining tiles!
Я копался в InsideUO, и нашел ещё ряд тайлов пещеры, не входящих в диапазон, например - все тайлы от 604 до 630 числятся как "Cave Wall", но в функции указан лишь диапазон из 3-х значений (616, 617, 618) для этого интервала. Возможно остальные тайлы некопаемые, проверить возможности пока не представилось, но для понимания был бы рад ответу.
Еще хотелось бы уточнить, правильно ли я понимаю, что модификация скриптового модуля из этой ветки форума (
viewtopic.php?f=12&t=16689) слилась с основным релизом и весь функционал был перенесен в последний инжект(2015-1508.09)?
Есть ещё ряд вопросов по скриптам, включая ходилку от Beyonder, хотел также расшарить свой макрос на автомининг по кочкам, но если никого живого нет - то смысла особо нет.. Просьба по возможности скинуть контакты в личку, если есть еще кто-то ответственный за проект.