Page 7 of 10
Re: Script.dll + include
Posted: 2013-06-17 22:20:43
by Juicy Fruit
о_О такого тоже не наблюдалось ещё...
Re: Script.dll + include
Posted: 2013-06-17 22:24:17
by Incorrect User
TeamViewer есть? Покажу )
Re: Script.dll + include
Posted: 2013-06-17 22:44:56
by Incorrect User
Флаг камня определяет как 0x00000040 но пишет что тайл проходимый, очевидно считает его не 0x40. if contains(val(UO.GetTileFlags(1, tileid)), 0x00000040) then не помогло
Re: Script.dll + include
Posted: 2013-06-17 22:52:11
by Juicy Fruit
Личку прочти, может камень это статика мира, а не карты.
Re: Script.dll + include
Posted: 2013-06-17 22:54:10
by Incorrect User
Проверил, камень статика, не исчезает.
Re: Script.dll + include
Posted: 2013-06-17 23:03:05
by Incorrect User
Похоже беда получается, у деревьев флаг 0х00020040, у кустов 0ч00004040, у сухих кустов 0х40000060 и т.д.
Re: Script.dll + include
Posted: 2013-06-17 23:04:36
by Juicy Fruit
Code: Select all
if contains(val(UO.GetTileFlags(1, tileid)), 0x00000040) then
Замени на
Code: Select all
if contains(uo.hex2int(UO.GetTileFlags(1, tileid)), 0x00000040) then
val не хочет нормально переводить HEX строку, юзай uo.hex2int()
С ним всё норм)
Re: Script.dll + include
Posted: 2013-06-17 23:13:13
by Incorrect User
Прийдется побегать пособирать флаги тайлов и массив сделать. Оно воспримет значение типа
if contains(uo.hex2int(UO.GetTileFlags(1, tileid)), Flags[i]) then
Re: Script.dll + include
Posted: 2013-06-18 01:14:10
by Incorrect User

скрипт распознает и деревья и кусты как непроходимые тайлы, хотя у них совсем другие номера, пока только камень и дерево с номером 0х00000201 считает проходимым, они статика, я проверил и 0х04000000 тайл скалы тоже считает проходимым. В чем прикол? Номера разные а считает как нужно, а некоторые наоборот считает проходимыми.
Re: Script.dll + include
Posted: 2013-06-18 01:39:23
by Incorrect User
Дошло, значения же соединяются. Все что имеет в конце 40 - непроходимый тайл. Значит 201 добавляем, что делать с 0х04000000? Я так понимаю если выдает 0x04000000 значит в этом месте нет статики, так пишет на всех пустых тайлах, значит если получаем 0x04000000 то значит тайл без объектов статики, и идем проверять его на проходимость земли. Нашел описание на русском
0x00000001; //Фон
0x00000002; //Оружие
0x00000004; //Прозрачный
0x00000008; //Полупрозрачный
0x00000010; //Стена
0x00000020; //Повреждающий
0x00000040; //Непроходимый
0x00000080; //Мокрый
0x00000100; //Неизвестно
0x00000200; //Поверхность
0x00000400; //Мост
0x00000800; //Складывается в стопку
0x00001000; //Окно
0x00002000; //Не простреливается
0x00004000; //Артикль "A"
0x00008000; //Артикль "An"
0x00010000; //Внутренний (вещи типа волос, бород, и т.д.)
0x00020000; //Листва
0x00040000; //Частично окрашиваемо
0x00080000; //Неизвестно 1
0x00100000; //Карта
0x00200000; //Контейнер
0x00400000; //Одеваемо
0x00800000; //Источник света
0x01000000; //Анимируемо
0x02000000; //Без диагонали
0x04000000; //Неизвестно 2
0x08000000; //Броня
0x10000000; //Крыша
0x20000000; //Дверь
0x40000000; //Лестница задняя
0x80000000; //Лестница правая
Re: Script.dll + include
Posted: 2013-06-18 01:53:23
by Incorrect User
Да, все верно, вот такой скриптик показывает правильно тайлы. Но очередной облом, тайлы с номером 0х00000201 есть и камни и деревья, но есть и растения проходимые
Code: Select all
sub Test()
var x = uo.getx(), y = uo.gety() + 1, tileid
tileid = uo.getstatictiles(x, y, 0)
if contains(uo.hex2int(UO.GetTileFlags(1, tileid)), 0x00000040) or contains(uo.hex2int(UO.GetTileFlags(1, tileid)), 0x00000201) then
uo.print("Непроходимый тайл!")
else
if not contains(uo.hex2int(UO.GetTileFlags(1, tileid)), 0x04000000) then
uo.print("Проходимый тайл!")
else
tileid = uo.getlandscapetile(x, y, 0)
if contains(uo.hex2int(UO.GetTileFlags(0, tileid)), 0x00000040) then
uo.print("Непроходимый тайл!")
else
uo.print("Проходимый тайл!")
end if
end if
end if
end sub
Re: Script.dll + include
Posted: 2013-06-18 07:59:35
by Juicy Fruit
Ты тайлы статики разделяй или хоть в принт выводи их, чтоб видеть, что там насобирала эта функция, она записывает все ид статики в заданных координатах через запятую, если ты целиком эту строку со всеми тайлами отправишь на флаг – она не правильно выдаст флаги.
0x201 от куда взял флаг? Если хочешь узнать проходимо или нет – проверяй только на 0x40, 201 это флаги тайла, выуди из них что содердит данный тайл и сделай вывод, какой именно флаг ты ищешь. В инсайд уо детали тайла нажми, он напишет какие флаги содержит объект. Или на этом тайле находится еще какая–то статика, может скрытая патчем верды.
Re: Script.dll + include
Posted: 2013-06-18 11:46:57
by Incorrect User
Откуда взял 201? uo.print(UO.GetTileFlags(1, tileid)), все эти влаги им и смотрел. В инсайд уо нет информации по флагу, только номера.
Re: Script.dll + include
Posted: 2013-06-18 13:42:51
by Juicy Fruit
Там список названий флагов написан где–то, вроде в скобках рядом с флагом
Re: Script.dll + include
Posted: 2013-06-18 14:03:17
by Incorrect User
Похоже мы о разных вещах говорим, не пойму о чем ты.
Re: Script.dll + include
Posted: 2013-06-18 17:34:48
by Juicy Fruit
Открываем инсайд, тыкаем на дерево (к примеру). Видим следующее:
Code: Select all
Overall Index: 19678 (0x4CDE)
Tag: 0001
Group: Static Tiles
Group Relative Lookup Offset: 3059 (0xBF3)
Group Index: 3294 (0xCDE)
Flags: Impassable, Foliage (0x20040)
Weight: 255 (0xFF)
Quality: 0 (0x0)
Unknown: 0 (0x0)
Unknown1: 0 (0x0)
Quantity: 0 (0x0)
Anim Id: 0 (0x0)
Unknown2: 0 (0x0)
Hue: 0 (0x0)
Unknown3: 0 (0x0)
Height: 2 (0x2)
Name: oak leaves
Его флаги 0x20040 (как и то, где ты нашел 0x201)
Там же описывается, какие именно флаги входят в набор:
Flags:
Impassable, Foliage (0x20040)
Находим индексы флагов, выбираем нужный индекс и настраиваем фильтр только по этому флагу.
Code: Select all
contains(uo.hex2int(UO.GetTileFlags(1, tileid)), 0x00000040)
нули можно сократить
contains(uo.hex2int(UO.GetTileFlags(1, tileid)), 0x40)
Запись
Code: Select all
contains(uo.hex2int(UO.GetTileFlags(1, tileid)), 0x00000201)
не актуальна.
Re: Script.dll + include
Posted: 2013-06-18 17:50:18
by Incorrect User
В Details у меня появляется окно Details under construction и ппц. Окна с информацией нет.
Re: Script.dll + include
Posted: 2013-06-18 18:03:46
by Incorrect User
Скачал уофидлер, он нормально показывает, в итоге имеем
Code: Select all
Name: willow tree
Graphic: 0x0CE6 (3302)
Height/Capacity: 10
Weight: 255
Animation: 0
Quality/Layer/Light: 0
Quantity: 0
Hue: 0
StackingOffset/Unk4: 0
Flags: Background, Impassable, ArticleA
и, хотя есть флаг непроходимости, скрипт видит его как проходимый объект, только что проверил.
Re: Script.dll + include
Posted: 2013-06-18 18:07:35
by Juicy Fruit
Code: Select all
sub Test()
uo.textclear()
uo.textopen()
uo.setmulpath('E:\Ultima Online')
var tileid='0x0CE6'
uo.textprint('tileid='+tileid)
var f=UO.GetTileFlags(1,tileid)
uo.textprint('tile='+tileid)
uo.textprint('flags='+f)
if contains(uo.hex2int(f),0x40) then
uo.textprint("Непроходимый тайл!")
else
uo.textprint("Проходимый тайл!")
endif
end sub
Выдаст
Code: Select all
tileid=0x0CE6
tile=0x0CE6
flags=0x00004041
Непроходимый тайл!
Запринть какой он у тебя тайл проверяет в данный момент, скорее всего это не этот тайл.
Re: Script.dll + include
Posted: 2013-06-18 18:23:35
by Incorrect User
Code: Select all
0x0D29(0),0x0CE7(0),0x0CE6(0)
0x00000201
Проходимый тайл!
Сразу три каких-то.