Yoko

All sides of Injection
It is currently 2024-03-19 11:48:22

All times are UTC+02:00




Post new topic  This topic is locked, you cannot edit posts or make further replies.  [ 187 posts ]  Go to page Previous 15 6 7 8 9 10 Next
Author Message
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-17 22:20:43 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
о_О такого тоже не наблюдалось ещё...


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-17 22:24:17 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
TeamViewer есть? Покажу )

_________________
CodeSweeper


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-17 22:44:56 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Флаг камня определяет как 0x00000040 но пишет что тайл проходимый, очевидно считает его не 0x40. if contains(val(UO.GetTileFlags(1, tileid)), 0x00000040) then не помогло

_________________
CodeSweeper


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-17 22:52:11 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Личку прочти, может камень это статика мира, а не карты.


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-17 22:54:10 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Проверил, камень статика, не исчезает.

_________________
CodeSweeper


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-17 23:03:05 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Похоже беда получается, у деревьев флаг 0х00020040, у кустов 0ч00004040, у сухих кустов 0х40000060 и т.д.

_________________
CodeSweeper


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-17 23:04:36 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Code:
if contains(val(UO.GetTileFlags(1, tileid)), 0x00000040) then

Замени на
Code:
if contains(uo.hex2int(UO.GetTileFlags(1, tileid)), 0x00000040) then

val не хочет нормально переводить HEX строку, юзай uo.hex2int()
С ним всё норм)


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-17 23:13:13 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Прийдется побегать пособирать флаги тайлов и массив сделать. Оно воспримет значение типа
if contains(uo.hex2int(UO.GetTileFlags(1, tileid)), Flags[i]) then

_________________
CodeSweeper


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-18 01:14:10 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
:shock: скрипт распознает и деревья и кусты как непроходимые тайлы, хотя у них совсем другие номера, пока только камень и дерево с номером 0х00000201 считает проходимым, они статика, я проверил и 0х04000000 тайл скалы тоже считает проходимым. В чем прикол? Номера разные а считает как нужно, а некоторые наоборот считает проходимыми.

_________________
CodeSweeper


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-18 01:39:23 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Дошло, значения же соединяются. Все что имеет в конце 40 - непроходимый тайл. Значит 201 добавляем, что делать с 0х04000000? Я так понимаю если выдает 0x04000000 значит в этом месте нет статики, так пишет на всех пустых тайлах, значит если получаем 0x04000000 то значит тайл без объектов статики, и идем проверять его на проходимость земли. Нашел описание на русском
Quote:
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; //Лестница правая

_________________
CodeSweeper


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-18 01:53:23 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Да, все верно, вот такой скриптик показывает правильно тайлы. Но очередной облом, тайлы с номером 0х00000201 есть и камни и деревья, но есть и растения проходимые :evil:
Code:
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

_________________
CodeSweeper


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-18 07:59:35 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Ты тайлы статики разделяй или хоть в принт выводи их, чтоб видеть, что там насобирала эта функция, она записывает все ид статики в заданных координатах через запятую, если ты целиком эту строку со всеми тайлами отправишь на флаг – она не правильно выдаст флаги.
0x201 от куда взял флаг? Если хочешь узнать проходимо или нет – проверяй только на 0x40, 201 это флаги тайла, выуди из них что содердит данный тайл и сделай вывод, какой именно флаг ты ищешь. В инсайд уо детали тайла нажми, он напишет какие флаги содержит объект. Или на этом тайле находится еще какая–то статика, может скрытая патчем верды.


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-18 11:46:57 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Откуда взял 201? uo.print(UO.GetTileFlags(1, tileid)), все эти влаги им и смотрел. В инсайд уо нет информации по флагу, только номера.

_________________
CodeSweeper


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-18 13:42:51 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Там список названий флагов написан где–то, вроде в скобках рядом с флагом


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-18 14:03:17 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Похоже мы о разных вещах говорим, не пойму о чем ты.

_________________
CodeSweeper


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-18 17:34:48 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Открываем инсайд, тыкаем на дерево (к примеру). Видим следующее:
Code:
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:
contains(uo.hex2int(UO.GetTileFlags(1, tileid)), 0x00000040)
нули можно сократить
contains(uo.hex2int(UO.GetTileFlags(1, tileid)), 0x40)

Запись
Code:
contains(uo.hex2int(UO.GetTileFlags(1, tileid)), 0x00000201)
не актуальна.


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-18 17:50:18 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
В Details у меня появляется окно Details under construction и ппц. Окна с информацией нет.

_________________
CodeSweeper


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-18 18:03:46 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Скачал уофидлер, он нормально показывает, в итоге имеем
Code:
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

и, хотя есть флаг непроходимости, скрипт видит его как проходимый объект, только что проверил.

_________________
CodeSweeper


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-18 18:07:35 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Code:
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:
tileid=0x0CE6
tile=0x0CE6
flags=0x00004041
Непроходимый тайл!

Запринть какой он у тебя тайл проверяет в данный момент, скорее всего это не этот тайл.


Top
   
 
 Post subject: Re: Script.dll + include
PostPosted: 2013-06-18 18:23:35 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Code:
0x0D29(0),0x0CE7(0),0x0CE6(0)
0x00000201
Проходимый тайл!

Сразу три каких-то.

_________________
CodeSweeper


Top
   
 
Display posts from previous:  Sort by  
Post new topic  This topic is locked, you cannot edit posts or make further replies.  [ 187 posts ]  Go to page Previous 15 6 7 8 9 10 Next

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 5 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:  
Powered by phpBB® Forum Software © phpBB Limited