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

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

Widgitizer в помощь, он сам преобразует данные редактора в слк таблицы.
Ну или в пустую карту киньте файл, и редактируйте...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
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 и обратно,буду у компа скину её саму
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.