Добавлен
Хочу вытащить параметры объектов из w3o и засунуть их в Excel. В Excel отредактировать всё нужное - и обратно запихнуть в w3o. Но для этого мне нужно знать как правильно читать данный формат - где бы покурить эту тему?
на случай если уже есть утилиты, позволяющие перегонять данные из w3o в Excel и обратно - также буду благодарен за ссылки.

Принятый ответ

Widgitizer в помощь, он сам преобразует данные редактора в слк таблицы.
Ну или в пустую карту киньте файл, и редактируйте...
2
32
6 лет назад
2
Widgitizer в помощь, он сам преобразует данные редактора в слк таблицы.
Ну или в пустую карту киньте файл, и редактируйте...
Принятый ответ
0
13
6 лет назад
0
quq_CCCP, скачатл, указал карту получил 4 файла на выходе, но я так и не понял где появились slk куда их девать и как перегонять обратно в w3o? Есть ссылка на рускоязычный хелп?
0
17
6 лет назад
0
Silk обратно запаковывает
5
27
6 лет назад
Отредактирован MpW
5
Cancel, инструкция? там нужно правильные настройки ставить. так тоже пробовал, оказалось, что там в одной из папок внутри папки Widgitizer-а отредактированную карту сохраняет. Короче смотри в папке Widgitizer-а. Папка называется Output, в ней будет все сохраняться
там есть инструкция, найти текстовик, правда на английском
  1. Запустите виджетайзер, нажмите кнопку «Добавить» и найдите карту, которую вы хотите виджетировать. Затем карта появится в списке исходных файлов.
  2. Теперь вам нужно будет решить, какие типы объектов вы хотите конвертировать, как правило, вы захотите конвертировать все типы объектов, просто активировать соответствующие флажки (Units добавляют таблицы slk и тексты юнитов, Items добавляют таблицы slk и тексты предметов и др.).
  3. Теперь у нас есть некоторые дополнительные настройки.
-> Remove Unused Objects (Удалить неиспользуемые объекты): эти семь флажков позволяют указать, какие неиспользуемые объекты будут удалены из выходных файлов, отключение этих параметров оставляет стандартные объекты без изменении, короче так и хранятся в исходных файлах
-> Keep Placed Objects (Сохранить размещенные на карте объекты): этот флажок определяет, все ли элементы: units, doodads и destructables, размещенные на карте, будут сохранены, а также единицы и элементы на случайных таблицах будут сохранены, если этот параметр включен
-> Keep Trigger Referenced Objects (Сохранить связь между триггерами и объектами): этот флажок определяет, будут ли объекты, на которые ссылаются где-то в триггере карты будут сохранены, а также технические элементы, которые изменить их доступность на экране свойств карты будут сохранены, а также
-> Keep Referenced Objects (Сохранить ссылочные объекты): этот флажок определяет, проверяются ли все сохраненные объекты для ссылок к другим объектам, они будут сохранены, если этот параметр включен, это вариант часто приводит к сохранению целой технологии расы не понял что пишут
-> Ignore Basic References (Игнорировать основные ссылки): в ini-файле этого инструмента вы найдете основной список исключений с Идентификаторы объектов, которые не следует удалять (например, перемещение и атака способности и крестьянская единица), теперь, если включен второй флажок, объекты, на которые ссылаются эти объекты (например, все построенные здания крестьянином) также будет сохранено, вы, вероятно, этого не хотите, так что вы может активировать эту опцию, чтобы игнорировать те ссылки основных объектов не понял что пишут
-> Clean Trigger Strings (Очистить строки из триггеров): множество строк, таких как имена элементов, суффиксы редактора, подсказки и т. д. сохраняются в WTS-файле карты, во время преобразования ссылки эти строки будут заменены фактическими строками, в большинстве случаев запись строки в файле WTS будет устаревшей, поэтому может быть удаляется, вот что делает этот флажок (только если одна и та же строка повторно используется в других местах, например, в скрипте карты, это может вызвать проблемы)
-> Clean SLK Tables (Очистить slk-таблицы): удаляет необязательные данные из таблиц SLK, таких как комментарии, бета-флаги и дефисы, и удалит комментарии и пустые строки из полученного TXT-файлы, если это не проверено, будут сохранены комментарии и комментарии, которые начало с :: будет добавлено в конец каждого файла
-> Custom Keys Resistant (отменить изменения в Custom Keys.txt): гарантирует, что результирующая карта будет работать с файлами CustomKeys.txt точно так же, как исходная карта (что означает, что ваши изменения будут отменены возможные файлы CustomKeys.txt)
-> Reference Logging: создаст файл ReferenceLog.txt в выходной папке, где вы можете почему некоторые объекты не очищаются
  1. Итак, теперь мы готовы нажать кнопку компиляции, чтобы начать конвертацию.
Будьте терпеливы с инструментом, особенно на больших картах, конверсия может занять довольно много времени (до 5 минут на старых процессорах или больших картах, обычно около 1 минуты).
  1. Найдите сгенерированные файлы в папке Output \ виджета. Вы, скорее всего, будете только интересуется созданным файлом карты. Он будет иметь то же имя, что и исходная карта. Чтобы открыть преобразованную карту в редакторе World без ошибок (и иметь возможность редактировать ее после конверсия) запустите редактор сгенерированным файлом Editor Patch.exe.

    Для модов и итоговых преобразований он также скомпилирует ROC Patch.exe и файл TFT Patch.exe. Они могут использоваться, чтобы не импортировать скомпилированные файлы в каждую из ваших карт. Если вы собираетесь
    для использования такого патча обязательно удалите все данные пользовательских объектов с карт, которые вы используете на нем (w3u, w3t, w3b, w3d, w3a, w3h, w3q). Скрытая опция конвертирования постоянных игр и игры
    настройки интерфейса могут быть активированы с помощью констант ключа INI.
Вы можете заставить Виджеты автоматически заменять идентификатор ваших настроенных объектов на идентификатор твой выбор. Поэтому измените имя объекта в редакторе объектов на формат Имя :: newid (fex Blast :: Abla изменит идентификатор способности от A000 до Abla). После id был заменен, добавленный идентификатор будет удален из имени объекта.
0
13
6 лет назад
0
Steal nerves, ну да, я видел в папке аутпут сгенерированную карту, но где находятся слк файлы? и как слк преобразовать обратно в w3o? Извиняюсь если я туплю, но что-то не понимаю
0
27
6 лет назад
Отредактирован MpW
0
Cancel, в генерированной карте, открываешь mpq-архиватором карту, и смотришь slk и тексты. Юниты и абилки например в папке Units находятся и др. Обратно в w3o преобразует программа w3map Restorer (но не всегда работает, в сложных картах типа доты пишет: "не удалось извлечь файлы", и дальше не может, все. Хотя нет, также и простые не работают тоже пишет: "не удалось извлечь файлы" )
1
29
6 лет назад
1
w3map Restorer мего криво восстанавливает объекты из slk
И да не забываем что в слк хранится 3 или 4 уровня абилок, всё остальное всё ровно в объектах
0
13
6 лет назад
0
16GB, значит - остаётся только писать свою утилиту для двухсторонних преобразований w3o?
0
29
6 лет назад
0
Cancel,
Да, но там огромное количество подводных камней и исключений, это сложная очень задача на мой взгляд. Не на одну сотню часов. Чтобы сделать полностью рабочую без багов. Ну зато был бы инструмент который бы позволял восстановить объекты нормально. Сейчас его нет.
Вообще ещё был какой-то депротектор восстанавливающий объекты, на php и вроде с xgm, но он был у узкого круга лиц и точно чел с ником Атилла *(в скайпе по крайней мере) я его не знаю, но у него был. Вряд ли найдём его конечно.
0
13
6 лет назад
Отредактирован Cancel
0
16GB, я в английском слабоват, так что в англоязычных статьсях не всё понимаю. Я, вроде, нашёл инфу как распарсить файл world-editor-tutorials.thehelper.net/cat_usersubmit.php?view=427...
там почти для всего указывается сколько байт весит та или иная информация.
но дошёл до момента
*Unit definition structure:
char[4]: original unit ID (get the IDs from "Units\UnitData.slk" of war3.mpq)
char[4]: new unit ID. If it is on original table, this is 0, since it isn't used.
int: number m of modifications for this unit
m times a modification structure*
*Modification structure:
char[4] modification ID code (get the IDs from "Units\UnitMetaData.slk" of war3.mpq)
int: variable type* t (0=int, 1=real, 2=unreal, 3=String,...)
t type: value (length depends on the type t specified before)
int: end of unit definition (usually 0)
где указано, что значение поля имеет размер, зависимый от типа значения. Но я ни где не нашёл информации о том, какой тип сколько весит (помимо стандартный int, real, string)
мб кто-то подскажет. В идеале нужна таблица с типами значений и описанием того, сколько эти значения весят и как их читать
0
29
6 лет назад
0
Cancel,
Ну садись отлаживай значит, ты на чём писать будешь?
0
13
6 лет назад
Отредактирован Cancel
0
VBA - для взаимодействия с Excel
Всё ещё ни где не нахожу информацию о типах значений и как их читать
2
6
6 лет назад
Отредактирован BaHeK
2
Но я ни где не нашёл информации о том, какой тип сколько весит (помимо стандартный int, real, string)
мб кто-то подскажет. В идеале нужна таблица с типами значений и описанием того, сколько эти значения весят и как их читать
Если по-простому, то всё (кроме строк) по 4 байта, а если по-сложному, то в начале статьи все типы описываются.
0
13
6 лет назад
0
BaHeK, где? world-editor-tutorials.thehelper.net/cat_usersubmit.php?view=427...
в процессе игры я могу поверить что всё по 4 байта (если это ссылки на объекты), но в файле сохранения это не прокатит, там ссылаться не на что, кроме самого себя
2
6
6 лет назад
Отредактирован BaHeK
2
Cancel:
BaHeK, где? world-editor-tutorials.thehelper.net/cat_usersubmit.php?view=427...
в процессе игры я могу поверить что всё по 4 байта (если это ссылки на объекты), но в файле сохранения это не прокатит, там ссылаться не на что, кроме самого себя
Вот же все используемые типы описаны.
1.03 Warcraft III Data Format
Warcraft III Data Format has 8 differants format type.
  • Integers
Integers are 4 bytes in Little Endian Order
Example : 1234 Not Equal [00 00 04 D2]h
1234 Equal [D2 04 00 00]h
  • Small Integers
Small integers are from -16384 to 16383. They take 2 bytes and are in Little Endian Order.
  • Reals
Reals are Floats. They take 4 bytes and are in Little Endian Order.
Example : 7654.32 ~ [8F 32 EF 45]h ~ 7654.319824
The last number is the closest number to 7654.32
  • Arrays
1 Array take 1 byte
  • UnitIds
UnitId Integers takes 32 bytes. (46656 possibilities, they are like normal Integers)
  • Flags
Boolean, or "Flags", take 4 bytes. In those 4 bytes, there are 32 bit, which can contains 32 flags. Each Flag can contain only the value 0 (False) or 1 (True).
  • Water
Water Level (In the terrain) takes 4 bytes every cell, it handles 2 bytes for a total of 16 flags, and the 2 lasts for the closest number to the Water Level.
  • Custom Handles
An integer or a flag may share themselves some bytes. A byte may handle two or more differant data.
  • Structured Handles
Unknown. They have various size.
  • Strings / Trigger Strings
Strings are just like arrays of chars finished with a null char (From C++ : "\0").
But, Blizzard uses a special coloring code to change the color of the text shown, these starts with "|c00", and finishes with "|r", most of the times. An example is "|c00BBGGRR|r", in which you replace by the percentage value "BB", "GG", "RR", by the percentage value you want. They are hexadecimal values (0123456789ABCDEF), using 2 digits each, BB = Blue, GG = Green, RR = Red.
In Trigger Strings, if it starts with "TRIGSTR_", with a sensitive case, it is a Trigger String. Trigger Strings are ever keep in the virtual memory when you play a map, which is loaded at the map initalization, as a name of "TRIGSTR_***". Instead of writing the TRIGSTR_<WHATEVER> thing, Warcraft III get a look in the string table, and displays the correct trigger string. They work only for files inside a .w3m or .w3x map, but not with the exception of WTS files, which is used for Trigger Strings files itself. If the following number after "TRIGSTR_" is negative, it will be considered as the first one, called "TRIGSTR_000". And when there are letters, they will be considered as 0, or if an example of "5aa", as 5.
At all, they takes :
  • Strings : (String Length + 1) bytes (Because of the finishing char)
  • Trigger Strings : 12 bytes (Note Trigger Strings handles Strings, so the total is Trigger Strings + Strings)
0
13
6 лет назад
Отредактирован Cancel
0
BaHeK, жто не полный перечень, в редакторе юнитов встречаются следующие типы:
*Variable types:
0=int
1=real
2=unreal
3=string
4=bool
5=char
6=unitList
7=itemList
8=regenType
9=attackType
10=weaponType
11=targetType
12=moveType
13=defenseType
14=pathingTexture
15=upgradeList
16=stringList
17=abilityList
18=heroAbilityList
19=missileArt
20=attributeType
21=attackBits
2
6
6 лет назад
2
По факту используются только первые четыре типа int, real, unreal, string. Хотя unreal скорей всего тоже самое что и real.
0
13
6 лет назад
Отредактирован Cancel
0
BaHeK, как ты string list будешь хранить в string, или как ты будешь хранить heroAbilityList в каком-то простом типе данных? Отвечайте пожалуйста по существу, у кого-нибудь есть информация о способе чтения этих данных из w3o?
*Modification structure:
char[4] modification ID code (get the IDs from "Units\UnitMetaData.slk" of war3.mpq)
int: variable type* t (0=int, 1=real, 2=unreal, 3=String,...)
t type: value (length depends on the type t specified before)
int: end of unit definition (usually 0)
Вот тут говорится, что размер значения зависит от типа, и приведён список из 21 типов, но не указано сколько весит каждый тип и как его читать
2
6
6 лет назад
2
Все list'ы это строки, в которой элементы разделены запятыми. Например heroAbilityList у паладина AHhb,AHds,AHre,AHad. Все type'ы тоже строки. Например attackType у стрелка pierce. bool это int. С int и real все итак понятно. Остальные типы это string.
0
17
6 лет назад
0
Наверно я не так выразился,silk очень хорошо запаковывает с slk в w3o и обратно,буду у компа скину её саму
Чтобы оставить комментарий, пожалуйста, войдите на сайт.