Помощь - Поиск - Пользователи - Календарь
Полная версия: Tiledata
UoKit.com Форумы > Ultima Online : Dev > Работа с клиентом UO
Александр Needle™
del
Aimed
Цитата(Александр Needle™ @ 21.10.2017, 23:59) *

Сообщений ни от кого не поступило, нашел информацию сам. Прошу прикрепить для будущих поколений.

Флаги в tiledata.mul при добавлении описания к новой вещи:
BACKGROUND := 0x00000001; //Фон
WEAPON := 0x00000002; //Оружие
TRANSPARENT := 0x00000004; //Прозрачный
TRANSLUCENT := 0x00000008; //Полупрозрачный
WALL := 0x00000010; //Стена
DAMAGING := 0x00000020; //Повреждающий
IMPASSIBLE := 0x00000040; //Непроходимый
WET := 0x00000080; //Мокрый
UNK := 0x00000100; //Неизвестно
SURFACE := 0x00000200; //Поверхность
BRIDGE := 0x00000400; //Мост
STACKABLE := 0x00000800; //Складывается в стопку
WINDOW := 0x00001000; //Окно
NOSHOOT := 0x00002000; //Не простреливается
PREFIX_A := 0x00004000; //Артикль "A"
PREFIX_AN := 0x00008000; //Артикль "An"
INTERNAL := 0x00010000; //Внутренний (вещи типа волос, бород, и т.д.)
FOILIAGE := 0x00020000; //Листва
PARTIAL_HUE := 0x00040000; //Частично окрашиваемо
UNK1 := 0x00080000; //Неизвестно 1
MAP := 0x00100000; //Карта
CONTAINER := 0x00200000; //Контейнер
WEARABLE := 0x00400000; //Одеваемо
LIGHTSOURCE := 0x00800000; //Источник света
ANIMATED := 0x01000000; //Анимируемо
NODIAGONAL := 0x02000000; //Без диагонали
UNK2 := 0x04000000; //Неизвестно 2
ARMOR := 0x08000000; //Броня
ROOF := 0x10000000; //Крыша
DOOR := 0x20000000; //Дверь
STAIRBACK := 0x40000000; //Лестница задняя
STAIRRIGHT := 0x80000000; //Лестница правая


Это все в фиддлере уже сто лет как отображается, зачем ты это выложил? Или тебе перевод с английского нужен был?
Sirocco
Зачем ты прокомментировал его сообщение, тем более все целиком? Ты боялся что он не поймет к кому ты обращался?

Притом самое смешное, что реально толку от такого перевода нет, ибо половина флагов нигде не используется, и никак не работает, а половина переведена просто божественно - "лестница задняя". Ну офигенно же?!


Какая разница между этими флагами?
Код

TRANSPARENT := 0x00000004; //Прозрачный
TRANSLUCENT := 0x00000008; //Полупрозрачный



А что делают эти флаги непонятно? перевести то я в состоянии, но влияют ли они на что-то еще?
Код

BACKGROUND := 0x00000001; //Фон
WALL := 0x00000010; //Стена
DAMAGING := 0x00000020; //Повреждающий
UNK := 0x00000100; //Неизвестно
BRIDGE := 0x00000400; //Мост
INTERNAL := 0x00010000; //Внутренний (вещи типа волос, бород, и т.д.)
UNK1 := 0x00080000; //Неизвестно 1
MAP := 0x00100000; //Карта
NODIAGONAL := 0x02000000; //Без диагонали
UNK2 := 0x04000000; //Неизвестно 2
ARMOR := 0x08000000; //Броня



Описание должно быть расширено, хотя бы так:
ANIMATED := 0x01000000; //Анимируемо (это означает что предмет появится в файле AnimData и можно работать с ними как со спрайтовой анимацией: указывать скорость, задержку, порядок кадров)
ROOF := 0x10000000; //Крыша (означает что когда ты заходишь под предмет, то он исчезает с экрана)
STACKABLE := 0x00000800; //Складывается в стопку (означает что предметы при количестве больше 1 будет отображаться продублированным со смещением, а при попытке перетащить будет появляться выбор количества. Одно и на сервере тоже нужно указывать PILE=1)


А если уж писать эту фигню... то нужно писать и другие параметры Name Anim Weight StackOff и так далее...
Александр Needle™
Цитата(Aimed @ 23.10.2017, 19:36) *

Это все в фиддлере уже сто лет как отображается, зачем ты это выложил? Или тебе перевод с английского нужен был?

Да, я прекрасно знаю что это есть в фильдере и в других программах, и дальше что?
Выложил как полезная информация.
Aimed
Цитата(Sirocco @ 23.10.2017, 18:39) *

Зачем ты прокомментировал его сообщение, тем более все целиком? Ты боялся что он не поймет к кому ты обращался?


Ога, с этим парнем и такое может быть biggrin.gif
Александр Needle™
Цитата(Sirocco @ 23.10.2017, 19:39) *

Притом самое смешное, что реально толку от такого перевода нет, ибо половина флагов нигде не используется, и никак не работает, а половина переведена просто божественно - "лестница задняя". Ну офигенно же?!

Это не перевод, взял из старой статьи.
Практически все флаги используются, кроме unk, именно так отмечены те, которые более не используются.

Цитата(Sirocco @ 23.10.2017, 19:39) *

А если уж писать эту фигню... то нужно писать и другие параметры Name Anim Weight StackOff и так далее...

Есть желание дополнить? А то когда спрашивал, все молчали в тряпочку.
Name Anim Weight StackOff - это не относится к "флагам" / "свойствам".


Цитата(Aimed @ 23.10.2017, 20:32) *

Ога, с этим парнем и такое может быть biggrin.gif

Есть что-то добавить, или очередная показательная болтовня?
Желаешь дополнить тему, пожалуйста, я добавлю текст в шапку темы.
Aimed
Цитата(Александр Needle™ @ 23.10.2017, 21:03) *

Это не перевод, взял из старой статьи.
Практически все флаги используются, кроме unk, именно так отмечены те, которые более не используются.
Есть желание дополнить? А то когда спрашивал, все молчали в тряпочку.
Name Anim Weight StackOff - это не относится к "флагам" / "свойствам".
Есть что-то добавить, или очередная показательная болтовня?
Желаешь дополнить тему, пожалуйста, я добавлю текст в шапку темы.


А где ты это спрашивал то? Я не могу найти эту тему, хотя это и не важно на самом деле.
"Показная болтовня" это твой первый пост в этой теме и не менее чем 90% твоих сообщений на этом форуме и у тебя на сайте. В данном случае совершенно бесполезная информация, ( хорошо что в этот раз она хотя бы не искаженная ) которая будет в новинку совсем каким-то зеленым новичкам в УО, которые не знают о программе UO Fiddler либо не знают что существует google.

Прямо сейчас я зашёл в гугл и с первой попытки нашел то что ты выложил в первом посту в нескольких экземплярах.
Александр Needle™
Цитата(Aimed @ 23.10.2017, 23:08) *

А где ты это спрашивал то? Я не могу найти эту тему, хотя это и не важно на самом деле.
"Показная болтовня" это твой первый пост в этой теме и не менее чем 90% твоих сообщений на этом форуме и у тебя на сайте. В данном случае совершенно бесполезная информация, ( хорошо что в этот раз она хотя бы не искаженная ) которая будет в новинку совсем каким-то зеленым новичкам в УО, которые не знают о программе UO Fiddler либо не знают что существует google.

Прямо сейчас я зашёл в гугл и с первой попытки нашел то что ты выложил в первом посту в нескольких экземплярах.

Тема обновляется, вначале я спрашивал, потом стер сообщение и обновил.
По теме добавить полезную информацию можешь?
Sirocco
Name Anim Weight StackOff - это не относится к "флагам" / "свойствам".

Да ладно не относится?
А ничего что некоторым флагам нужны дополнительные параметры в тайлдате, иначе толку от них никакого.
например контейнеру нужно Quality.
одеваемым предметам нужен Layer.
непроходимым предметам нужен Height.

Это ж тоже часть Tiledata.




ну и зачем нужны эти офигенно нужные флаги:
Код

BACKGROUND := 0x00000001; //Фон
WALL := 0x00000010; //Стена
DAMAGING := 0x00000020; //Повреждающий
UNK := 0x00000100; //Неизвестно
BRIDGE := 0x00000400; //Мост
INTERNAL := 0x00010000; //Внутренний (вещи типа волос, бород, и т.д.)
UNK1 := 0x00080000; //Неизвестно 1
MAP := 0x00100000; //Карта
NODIAGONAL := 0x02000000; //Без диагонали
UNK2 := 0x04000000; //Неизвестно 2
ARMOR := 0x08000000; //Броня


какую ф-цию они в клиенте несут? или так чисто метки бесполезные.
StaticZ
На форуме конечно крайне скудная возможность по оформлению, но первый явно из разряда как делать не стоит - что бы прочитать все это надо кучу раз тыкать мышкой по спойлерам. Если бы там имело место много текста, то оно еще бы имело смысл, а так там чаще всего одно слово. Ну или хотя бы в заголовке спойлера писать значение - англ название (эти названия широко распространены но не общеприняты), а внутри спойлера уже описание.

Цитата(Александр Needle™ @ 23.10.2017, 22:03) *
Практически все флаги используются, кроме unk, именно так отмечены те, которые более не используются.
На самом деле большинство не несут никакой смысловой нагрузки и применяются (или даже применялись) лишь в Гад клиенте. Я уже молчу, что в фидлере полно ереси и отсебятины, впрочем как и в сфере и ранке. Лишь как следует покопавшись в клиенте понимаешь какой бред там порой написан.

Например в тайлдате таких полей, как Quantity, Unk3, Hue вообще не существует. Конечно возможно они были упразднены, ладно беру самый первый клиент 1.25.35 смотрю и там их тоже нет. Спрашивается откуда пошла эта ересь, которую по кругу потом слизывали друг у друга (я про ранки \сферы и прочее по) и главное под каким веществом автор сочинял этот бред и названия к нему?

Цитата(Sirocco @ 24.10.2017, 11:10) *
какую ф-цию они в клиенте несут? или так чисто метки бесполезные.
Не все


Александр Needle™
del
StaticZ
Цитата(Александр Needle™ @ 24.10.2017, 16:17) *
Тут скорей спрос с фидлера, например в клиенте флаг был удален и отмечен как Unk, то фидлер может продолжать подписывать его по старому, к слову, потому может этот флаг у Вас никак не меняет ситуацию в игре, просто потому, что он уже никак не используется, а фиддлер продолжает твердить свое и втыкать Ваши значения в tiledata, которые не имеют уже никакого значения для клиента.
Вы это серьезно? )))))))) Никто ни за чем не следит, никто ничего не меняет, всем уже давно абсолютно на все наплевать. Подавляющее большинство, что писали этот или любой другой код сами не имеют никакого представления о том, что они пишут, вся информация что по протоколу UO, что по файлам клиента или относительно чего-то еще списывается по кругу от одного источника к другому, зачастую при этом добавляется собственная отсебятина или частично заменяется из другого сомнительного и непроверенного источника. Кстати, некоторые сознательно и специально добавляют ошибки в свои работы, чтобы было легче проследить тех кто заимствовал их труды. В результате всего этого тупого списывания ошибки и неточности лишь множатся и растут. Года идут и все начинают свято верить во всякую ересь, лишь потому что это кое как работает и главное все тупо привыкли или попросту пофиг. Это уже становиться догмой, никто не ставит под сомнение бред которому уже десятки лет, никто не ищет доказательств или подтверждений а зачем? кто-то там когда-то написал значит так и есть.

Возьмем те же поля Quantity и Hue откуда информация что они вообще существуют? Откуда название? Где, как и когда они использовались или используется? Нельзя утверждать, что они существуют не имея даже ответов на эти вопрос. Если задуматься то это все просто, то что привыкли видеть в Fiddler на протяжении многих лет. Теперь вспомним кто и как создавал его, изначально по сути это была графическая оболочка некой библиотеки ultimaSDK, последняя как раз и отвечает за работу с файлами клиентами и в частности используется в RunUO. То есть разработчики Fiddler по сути вообще не имели никакого представления о том как устроены файлы, они делали тупо графический интерфейс к библиотеке что с ними работает. Они видят, что в библиотеке при чтении тайлдаты есть такие поля и не думая добавили поля для их редактирования на форму окна. Вроде как-то все работает и клиент не материться, значит все чики-поки. Но давайте пойдем еще дальше и вспомним откуда вообще возник проект ultimaSDK, а это был чистый высер фаст кодинга товарища krrios (разработчик ядра RunUO), данная не лестная характеристика даже не мое личное мнение а его собственное признание. Не сложно догадаться, что так как разработчику было по большому счету пофиг на это дело и задача была написать все как можно скорее, лишь бы оно работало хоть как-то. При этом наверняка, работая над своим высером krrios не занимался собственными изысканиями а воспользовался непроверенной информацией из других источников, скорее всего разобщенных и разной степени достоверности, как и кто составлял их остается лишь гадать. Что изменилось за все время? Да ничего... Откройте файлы анимации и просмотрите на них, там даже до сих пор можно увидеть, что некоторые читаются крайне криво и кадры некоторых анимаций залязят не туда куда надо.

Мало того, я сам могу добавить поля для тайлдаты, сверх того что есть в Fiddler и все тоже будет замечательно работать.


Цитата(Александр Needle™ @ 24.10.2017, 16:17) *
Насколько я подозреваю, значения эти, то появлялись, то исчезали в зависимости от версии клиента, например у меня в версии 3.0.6 есть значение Quantity и Unk3, и более того, даже используется.
Посмотрел 3.0.6а - там их тоже нет. Да и было бы оно крайне странно, вплоть до начала эпохи KR разработчики клиента использовали принцип обратной совместимости, что подразумевает собой расширение без изменения структуры данных, путем добавления нового контента в старые структуры данных, если же это оказывалось не возможно, то расширение структуры данных путем ввода новых файлов данных. По этой причине в клиенте можно до сих пор встретить такие интересные файлики как palette.mul. Именно по этой причине в молодости было возможно скачать client.exe и закинуть его в папку с клиентом особо даже не напрягаясь тем от какой версии там файлы.
Александр Needle™
del
Sirocco
> Height не делает предмет непроходимым , это делает флаг - impassible.

вот и попробуй сделать предмет с флагом и без высоты... и он будет проходимым.
во всяком случае когда я включаю флаг на сервере через CAN - то без поднятия на 1 тайл можно без помех проходить.

> Height - высота предмета в прямом смысле этого слова, Height еще означает, что если включен флаг Conatainer, то показывает сколько вещей он может в себя вмещать.

Открываю тайлдату и не вижу ничего подобного... высота контейнера это обычная высота предмета... с числами типо 3--4.

Нахрена нужны эти флаги Armor и Weapon... ты думаешь клиенту есть до этого какое-то дело?? Да, Н.И.Х.Е.Р.А. да и те же Quality тоже откровенно говоря в Tiledata не нужны.
Все это решается на уровне Сервера там есть type и layer. И я могу их крутить как захочу... и клиент схавает.
StaticZ
Цитата(Александр Needle™ @ 24.10.2017, 18:28) *
Так что если рассматривать клиент в этот период, то следует рассматривать конкретный клиент, я не брал 3.0.6а, у меня 3.0.6j и это огромная разница. Так как в этот период уже шла подготовка к Lord Blackthorn's Revenge и начались вноситься изменения в клиент.
Посмотрел 3.0.6j касательно формата тайлдаты никаких изменений. На грани любого аддона творится мясо, к примеру код чтения uop файлов появился задолго до того как началась замена мулов uop'ами и не только код, но и их обработка, т.е. клиент пытался открыть файлы в формате uop а если их не было то в формате mul. В HS пошла мода на патчи по 50-300 мб из-за того что там полностью перетряхивались uop контейнеры по нескольку раз. Так что тут спора нет чем масштабнее изменения тем большая тряска шла, но это касается новых форматов, файлов и тд но не таких вещей вроде тайлдаты.


Цитата(Sirocco @ 24.10.2017, 18:52) *
Нахрена нужны эти флаги Armor и Weapon... ты думаешь клиенту есть до этого какое-то дело?? Да, Н.И.Х.Е.Р.А. да и те же Quality тоже откровенно говоря в Tiledata не нужны. Все это решается на уровне Сервера там есть type и layer. И я могу их крутить как захочу... и клиент схавает.
Вы правы, но данное поле на самом деле нужно и существует не спроста. Клиент отсылает серверу пакет постфактум, когда пользователь перетащил предмет на папердрол и отпустил ЛКМ, после чего сервер уже решает дальнейшую судьбу предмета. Однако при перетаскивании предмета на папердол до отпускания ЛКМ клиент рисует соответствующий гамп на слое указанном в данном поле даже никак не информируя сервер о данном событии (при условии что установлен флаг Wearable). Так что без указания слоя все будет работать, но немножко по другому. К тому же вы еще забываете, что данное поле для тайлов статики также используется для указания маски освещения для источников света (в случае если задан флаг Lightsource но не задан флаг Wearable).

Флаги Armor и Weapon и иже с ними это по большому счету наследие гад клиента, по ним определяется класс объекта а из поля MiscData берется айди скрипта этого объекта на сервере. Хотя есть и небольшие исключения вроде флага Map для которого клиент создает объекты другого типа, впрочем для фришардов разницы никакой нет, а сами корни всего этого дела растут из тойже ОСИ где можно было путешествовать по картам
Frog
По полям тайлдаты тут кое-что есть, но не все поля на 100% изучены.
Брал напрямую из клиента 203, в 6ххх и может даже 7ххх проверял - кроме размера поля Flags ничего не изменилось.
Подкреплю кусочком псевдокода:
Код
char LoadTiledata()
{
  FILE *file; // esi@1
  char result; // al@2
  char landIndex; // bl@3
  signed int landOffset; // edi@3
  char statiscIndex; // bl@7
  signed int staticsOffset; // edi@7

  file = OpenFile(aTiledata_mul, g_Text_rb);
  if ( file )
  {
    landIndex = 0;
    landOffset = 0;
    do
    {
      if ( !(landIndex & 0x1F) )
        SeekFile(file, 4, 1);
      ReadFileData(&g_LandTiledata[landOffset], 4u, 1u, file);
      ReadFileData(&g_LandTiledata[landOffset].TextureID, 2u, 1u, file);
      ReadFileData(g_LandTiledata[landOffset].Name, 20u, 1u, file);
      ++landOffset;
      ++landIndex;
    }
    while ( landOffset < 0x4000 );
    statiscIndex = 0;
    staticsOffset = 0;
    do
    {
      if ( !(statiscIndex & 0x1F) )
        SeekFile(file, 4, 1);
      ReadFileData(&g_StaticTiledata[staticsOffset], 4u, 1u, file);
      ReadFileData(&g_StaticTiledata[staticsOffset].Weight, 1u, 1u, file);
      ReadFileData(&g_StaticTiledata[staticsOffset].QualityOrLayer, 1u, 1u, file);
      ReadFileData(&g_StaticTiledata[staticsOffset].Count, 4u, 1u, file);
      ReadFileData(&g_StaticTiledata[staticsOffset].AnimID, 2u, 1u, file);
      ReadFileData(&g_StaticTiledata[staticsOffset].Hue, 2u, 1u, file);
      ReadFileData(&g_StaticTiledata[staticsOffset].LightIndex, 2u, 1u, file);
      ReadFileData(&g_StaticTiledata[staticsOffset].Height, 1u, 1u, file);
      ReadFileData(g_StaticTiledata[staticsOffset].Name, 20u, 1u, file);
      ++staticsOffset;
      ++statiscIndex;
    }
    while ( staticsOffset < 0x4000 );
    result = FileManager__CloseFile(file);
  }
  else
  {
    result = TraceUOReportError(aCobjectmanag_0, aTiledata_mul);
  }
  return result;
}


И чуть подробнее о некоторых полях:
Weight - используется для определения статуса Locked предметов, на уровне тайлдаты и при просчете шага
Count, Hue - предположительно, для стандартного количества и цвета (если не задан) для компонент мульти. На 100% не уверен, но использование только в конструкторе объекта статики (в клиенте конечно же).
LightIndex - судя по коду клиента - ИД источника света, но по факту пока не сходится, может быть еще нужно пошаманить с этим значением.
StaticZ
Цитата(Frog @ 24.10.2017, 21:14) *

По полям тайлдаты тут кое-что есть, но не все поля на 100% изучены.
Брал напрямую из клиента 203, в 6ххх и может даже 7ххх проверял - кроме размера поля Flags ничего не изменилось.
Подкреплю кусочком псевдокода:
Код
char LoadTiledata()
{
  FILE *file; // esi@1
  char result; // al@2
  char landIndex; // bl@3
  signed int landOffset; // edi@3
  char statiscIndex; // bl@7
  signed int staticsOffset; // edi@7

  file = OpenFile(aTiledata_mul, g_Text_rb);
  if ( file )
  {
    landIndex = 0;
    landOffset = 0;
    do
    {
      if ( !(landIndex & 0x1F) )
        SeekFile(file, 4, 1);
      ReadFileData(&g_LandTiledata[landOffset], 4u, 1u, file);
      ReadFileData(&g_LandTiledata[landOffset].TextureID, 2u, 1u, file);
      ReadFileData(g_LandTiledata[landOffset].Name, 20u, 1u, file);
      ++landOffset;
      ++landIndex;
    }
    while ( landOffset < 0x4000 );
    statiscIndex = 0;
    staticsOffset = 0;
    do
    {
      if ( !(statiscIndex & 0x1F) )
        SeekFile(file, 4, 1);
      ReadFileData(&g_StaticTiledata[staticsOffset], 4u, 1u, file);
      ReadFileData(&g_StaticTiledata[staticsOffset].Weight, 1u, 1u, file);
      ReadFileData(&g_StaticTiledata[staticsOffset].QualityOrLayer, 1u, 1u, file);
      ReadFileData(&g_StaticTiledata[staticsOffset].Count, 4u, 1u, file);
      ReadFileData(&g_StaticTiledata[staticsOffset].AnimID, 2u, 1u, file);
      ReadFileData(&g_StaticTiledata[staticsOffset].Hue, 2u, 1u, file);
      ReadFileData(&g_StaticTiledata[staticsOffset].LightIndex, 2u, 1u, file);
      ReadFileData(&g_StaticTiledata[staticsOffset].Height, 1u, 1u, file);
      ReadFileData(g_StaticTiledata[staticsOffset].Name, 20u, 1u, file);
      ++staticsOffset;
      ++statiscIndex;
    }
    while ( staticsOffset < 0x4000 );
    result = FileManager__CloseFile(file);
  }
  else
  {
    result = TraceUOReportError(aCobjectmanag_0, aTiledata_mul);
  }
  return result;
}


И чуть подробнее о некоторых полях:
Weight - используется для определения статуса Locked предметов, на уровне тайлдаты и при просчете шага
Count, Hue - предположительно, для стандартного количества и цвета (если не задан) для компонент мульти. На 100% не уверен, но использование только в конструкторе объекта статики (в клиенте конечно же).
LightIndex - судя по коду клиента - ИД источника света, но по факту пока не сходится, может быть еще нужно пошаманить с этим значением.






Ну я ведь о том же самом и говорю, а теперь сопоставим приведенные выше названия с названиями представленными в фидлере на основании их смещений и получим показательную картину:

Weight -> Weight
QualityOrLayer -> Quality
Count -> Miscdata | (Unkn1 << 8) | (Quantity << 16)
AnimID -> Animation
Hue -> Unk2 | (Hue << 8)
LightIndex -> StackingOff | (Value << 8)
Height -> Height

Большой вопрос, кто и каким образом сочинял названия полей в обоих случаях, но как видно названия первого варианта часто приведены вообще не в попад, в то время как во втором лучше, но при этом часть названий была заимствована из первого и разбавлена львиной долей собственного бреда.
Александр Needle™
Цитата(Sirocco @ 24.10.2017, 18:52) *

> Height не делает предмет непроходимым , это делает флаг - impassible.
вот и попробуй сделать предмет с флагом и без высоты... и он будет проходимым.
во всяком случае когда я включаю флаг на сервере через CAN - то без поднятия на 1 тайл можно без помех проходить.

Попробовал, не проходит.

Цитата
Нахрена нужны эти флаги Armor и Weapon... ты думаешь клиенту есть до этого какое-то дело?? Да, Н.И.Х.Е.Р.А. да и те же Quality тоже откровенно говоря в Tiledata не нужны.
Все это решается на уровне Сервера там есть type и layer. И я могу их крутить как захочу... и клиент схавает.

Вообще-то да, ему есть дело и они используются. Да, на сервере это есть, но если не заметил, тут обсуждается клиент и плевать на то, что там может делать сервер.
Может тогда 65 тыс. вещам имя давать тоже будешь через скрипты? wink.gif
Sirocco
Цитата(Александр Needle™ @ 24.10.2017, 23:55) *

Попробовал, не проходит.


Вот ты сам написал, что обсуждаешь клиент - так и пробуй на сервер не класть тайлдату... естественно сервак тебе прохождение блокирует по флагу. ты попробуй только на стороне игрока это проделать, чисто на одной тайлдате.
Александр Needle™
Цитата(Sirocco @ 25.10.2017, 8:20) *

Вот ты сам написал, что обсуждаешь клиент - так и пробуй на сервер не класть тайлдату... естественно сервак тебе прохождение блокирует по флагу. ты попробуй только на стороне игрока это проделать, чисто на одной тайлдате.

И ответ будет тот же самый - не пройдёт.
Сервер ничего не блокирует, клиент тебе не разрешит это делать.
В некоторых случаях до сервера даже не дойдёт что происходит.
Sirocco
Ну да конечно... я поменяю тайлдату под Wall Stone и смогу насквозь него ходить... Если бы все было так просто, так бы все и делали.

Описываю как у меня работает. На сервер патч не залит. Патч стоит только у игрока.
вот предмет https://image.prntscr.com/image/TaemlL9ETRO9vqxStPnNEQ.png
как видно флаг есть, высоты нет.
кладу на сервер - выставляю предмету высоту 0 - хожу через него спокойно, поднимаю на 1 единицу - и уже не могу пройти.

вот предмет - https://image.prntscr.com/image/8rVlPMFFSGulT26YkI0kMA.png
с ним все тоже самое, но он не пропускает, на какой бы высоте он не стоял.
Александр Needle™
del
Sirocco
Вот кстати даже сервер использует этот параметр для вычисления высоты предметов, а потом уже использует его в проходимости.

inline signed char CItemBase::GetItemHeightFlags( const CUOItemTypeRec & tiledata, WORD & wBlockThis ) // static

return( tiledata.m_height );
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.