Page 6 of 10
Re: Script.dll + include
Posted: 2013-01-19 07:40:27
by Gromiz

как получилось добавить пустую строку, но никак удалить не могу)
баг не баг, я не знаю.
Re: Script.dll + include
Posted: 2013-01-19 08:59:59
by Juicy Fruit
Не, так и должно быть)
Re: Script.dll + include
Posted: 2013-01-20 09:00:15
by Gromiz
иногда, когда редактирую скрипт в окне инжи, вылетает ошибка и игра закрывается.
на всякий случай добавил лог инжекта в прикреление
Re: Script.dll + include
Posted: 2013-05-16 22:18:10
by Qualis Eram
Функция скрипта uo.exec("exec __PauseAll") поставит на паузу все запущенные скрипты.
В игре: ,exec __PauseAllА можно это сделать на хоткей? Если да, то как?
Re: Script.dll + include
Posted: 2013-05-17 00:50:39
by Juicy Fruit
exec __PauseAll
Без запятой только.
Re: Script.dll + include
Posted: 2013-06-17 20:00:43
by Juicy Fruit
Обновил модули.
Добавил функции по работе с тайлами:
Code: Select all
UO.SetMulPath(Path) - Установить путь к папке с *.mul файлами (map*.mul, statics*.mul, staidx*.mul, tiledata.mul). Path - строка.
UO.SetShowZ(Mode) - Установить режим отображения Z координаты в информации. 0 - отключить, 1 - включить. Mode - число.
UO.GetLandscapeTile(X, Y, Map) - Получить ИД тайла земли в координатах X,Y на карте номер Map. X, Y, Map - числа. Возвращает строку.
UO.GetStaticTiles(X, Y, Map) - Получить ИД всех тайлов статики в координатах X,Y на карте номер Map. X, Y, Map - числа. Возсращает строку.
UO.GetTileFlags(TileGroup, TileID) - Получить флаги тайла соответствующей группы (TileGroup=0 - Landscape Tile, TileGroup=1 - Static Tile). TileGroup - число, TileID - строка. Возвращает строку.
Contains(Source, Flag) - Узнать, входит ли Flag в набор Source. Source, Flag - числа. Возвращает 1 если Source содержит Flag и 0 если нет.
GetLandscapeTile возвращает информацию в формате TileID, при включенной ShowZ в формате TileID(Z)
GetStaticTiles так же, как и GetLandscapeTile, но перечисляет все тайлы статики, находящиеся в заданных координатах через запятую. Если тайлов статики не обнаружено - вернет пустую строку.
При ошибке возвращают строку -1.
Пример:
Code: Select all
sub test_gettile()
uo.setmulpath('E:\Ultima Online')
uo.setshowz(1)
uo.print('Landscape Tile ID(Z) = '+uo.getlandscapetile(4376,1119,0))
uo.print('Array of Static Tile ID(Z) = '+uo.getstatictiles(4376,1119,0))
uo.setshowz(0)
uo.print('Decimal Landscape Tile ID = '+str(uo.hex2int(uo.getlandscapetile(4372,1119,0))))
if (contains(0x12,0x10)) then
uo.print('0x12 Have! 0x10')
else
uo.print('0x12 NOT have 0x10!')
endif
if (contains(0x9,0x10)) then
uo.print('0x9 Have! 0x10')
else
uo.print('0x9 NOT have 0x10!')
endif
end sub
Выведет в чат:
Code: Select all
Landscape Tile ID(Z) = 0x00C4(0)
Array of Static Tile ID(Z) = 0x177C(0)
Decimal Landscape Tile ID = 218
0x12 Have! 0x10
0x9 NOT have 0x10!
Чтоб узнать, проходимый это тайл или нет:
Узнайте TileID, укажите TileGroup (земля (0) или статика (1))
Флаг проходимости тайлов 0x40
Проверьте тайл на проходимость:
Code: Select all
if Contains(uo.hex2int(UO.GetTileFlags(TileGroup,TileID)),0x40) then
//Непроходимый тайл
endif
Флаги УО (источник
http://uo.stratics.com/heptazane/fileformats.shtml):
Code: Select all
0x00000001 Background
0x00000002 Weapon
0x00000004 Transparent
0x00000008 Translucent
0x00000010 Wall
0x00000020 Damaging
0x00000040 Impassable
0x00000080 Wet
0x00000100 Unknown
0x00000200 Surface
0x00000400 Bridge
0x00000800 Generic/Stackable
0x00001000 Window
0x00002000 No Shoot
0x00004000 Prefix A
0x00008000 Prefix An
0x00010000 Internal (things like hair, beards, etc)
0x00020000 Foliage
0x00040000 Partial Hue
0x00080000 Unknown 1
0x00100000 Map
0x00200000 Container
0x00400000 Wearable
0x00800000 LightSource
0x01000000 Animated
0x02000000 No Diagonal
0x04000000 Unknown 2
0x08000000 Armor
0x10000000 Roof
0x20000000 Door
0x40000000 StairBack
0x80000000 StairRight
Re: Script.dll + include
Posted: 2013-06-17 20:33:39
by Incorrect User
Например в заданных координатах мы проверяем тайл на статику, если есть статика и она проходимая то идем, а если статики там нет? То нужно делать еще одну проверку но уже проходимости земли а не статики?
Re: Script.dll + include
Posted: 2013-06-17 20:39:38
by Juicy Fruit
Думаю да. Нужно учесть еще Z координату, проверить мост ли это (думаю 0x00000400 Bridge подойдет флаг, не проверял его).
Или можно сразу проверить землю, если проходимый - проверять статику, если вода - проверять на наличие моста и т.д.
Re: Script.dll + include
Posted: 2013-06-17 20:51:11
by Incorrect User
А Z координата чара не прокатит? Хотя помоему инжект не очень с ней дружит. Надо определиться с формулой проверки. Думаю так и будет, проверяем на статичные обьекты, обычно если есть проходимая статика на земле или воде то проход свободен, на это и будем расчитывать. И уже если объектов статики нет то будем проверять проходимость земли.
Скачал модуль, надеюсь крашить не будет, так как когда-то качал его раньше и вылетала инжа не помню даже нашли проблему или нет. И дизайн редактора тоже не изменился, едреная голубая полоска

. Хотелось бы что нибудь не утомляющее глаз

типа

Re: Script.dll + include
Posted: 2013-06-17 21:06:02
by Incorrect User
"на карте номер Map" - что за карта и что за номер?

Re: Script.dll + include
Posted: 2013-06-17 21:15:35
by Juicy Fruit
Map - это map0.mul, map1.mul, map2.mul и т.д. Индекс карты. Для клиентов, использующих дополнительные карты)
Есть сорцы твоего редактора? Могу прикрутить с дллку. Щас могу изменить только цвет, в исходники хайлайтера больше не полезу скорее всего)
Re: Script.dll + include
Posted: 2013-06-17 21:25:29
by Incorrect User
Редактор - Notepad++
Вообщем мне можно писать на месте мап - 0? UO.GetStaticTiles(X, Y, 0)
Re: Script.dll + include
Posted: 2013-06-17 21:29:25
by Juicy Fruit
Оу)
Да, ставь 0, если не правильно будет определять - поиграйся с номером карты.
.where пишет, если карта не 0
Re: Script.dll + include
Posted: 2013-06-17 21:33:29
by Incorrect User
Та же байда осталась, жмешь лог аут, и когда вышел жмешь крестик чтобы закрыть клиент и вылетает

Re: Script.dll + include
Posted: 2013-06-17 21:36:00
by Incorrect User
Теперь по скрипту, я правильно все сделал? Подхожу к дереву, пишет проходимый тайл, значит не понимает что оно непроходимый обьект?
Code: Select all
sub Test()
var x = uo.getx(), y = uo.gety() + 1, tileid
tileid = uo.getstatictiles(x, y, 0)
if contains(val(UO.GetTileFlags(1, tileid)),0x40) then
uo.print("Непроходимый тайл!")
else
uo.print("Проходимый тайл!")
end if
end sub
Re: Script.dll + include
Posted: 2013-06-17 22:11:04
by Juicy Fruit
Ошибка из-за того, что инжект почему-то не отлавливает одно сообщение и скриптовая дллка выгружается с ошибками, но это если на Quit жать, чтоб на крестик - не было ещё такого.
Перекачай модуль плиз, там баг был с определением флагов, теперь всё работает правильно.
И статику надо сначала разделить.
Code: Select all
sub Test()
uo.setmulpath('E:\Ultima Online')
var tileid = uo.getstatictiles(uo.getx(), uo.gety() + 1, 0)
uo.print('tileid='+tileid)
if tileid=='' then
uo.print('Тут нет статики.')
return
endif
dim tiles[20] #20 хватит думаю
var l=Str2Tiles(tiles,tileid)
var i,f
if l>0 then
for i=0 to l-1
f=UO.GetTileFlags(1,tiles[i])
uo.print('tile='+tiles[i])
uo.print('flags='+f)
if contains(uo.hex2int(f),0x40) then
uo.print("Непроходимый тайл!")
else
uo.print("Проходимый тайл!")
end if
next
endif
end sub
Sub Str2Tiles(a,s)
var i,l=len(s),b='',ptr=0
if not l then
return 0
endif
for i=0 to l-1
if s[i]<>',' then
b=b+s[i]
else
a[ptr]=b
b=''
ptr=ptr+1
endif
next
a[ptr]=b
ptr=ptr+1
return ptr
end sub
Re: Script.dll + include
Posted: 2013-06-17 22:12:57
by Incorrect User
У нас в клиенте крестик вместо Quit.
Re: Script.dll + include
Posted: 2013-06-17 22:16:09
by Incorrect User
Скачал модуль, уо не заходит, просто исчезает окно с экрана когда последний раз нажимаешь на стрелочку.
Re: Script.dll + include
Posted: 2013-06-17 22:17:53
by Incorrect User
Зашло, вылетало раз 5.
Re: Script.dll + include
Posted: 2013-06-17 22:18:59
by Incorrect User
Похоже вылетает если чар еще не исчез, когда исчез - заходит.