Поробовал поменять на хеш-таблицы и карта запустилась на рефордже (не знаю про 1.26, но скорее всего тоже будет работать). Менял все чере мпк редактор, ибо если менять редактор мира, в из карты выидывает с поражением, не стал с этим заморачиваться, да и через блокнот редактировать код в данном случае удобней. Кстати эта защита видимо забытые технологии древних. По крайней мере я ничего подобного не видел. Да и то что в карте есть такая защита и саму карту не прогоняли через оптимизаторы, говорит о том что она мега древняя. Ну это так отступление.
Не знаю насколько это работоспособно, но попробуй заменить так:
globals
hashtable ht = InitHashtable()
endglobals
function Trig_I2U takes integer i returns unit
return LoadUnitHandle(ht, 0, i)
endfunction
function Trig_Nerubian_Tower_Unit takes unit u returns integer
local integer id = GetHandleId(u)
call SaveUnitHandle(ht, 0, id, u)
return id
endfunction
function Trig_Kill_Tower_Unit takes integer i returns unit
return LoadUnitHandle(ht, 0, i)
endfunction
В MPQ editor'е есть возможность создать карту из папки, но это, очевидно, не даст тебе открыть карту в редакторе карт и тебе в любом случае придется "редактировать war3map.j", что, скорей всего, и делали в случае с мафией.
Все list'ы это строки, в которой элементы разделены запятыми. Например heroAbilityList у паладина AHhb,AHds,AHre,AHad. Все type'ы тоже строки. Например attackType у стрелка pierce. bool это int. С int и real все итак понятно. Остальные типы это string.
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)
Но я ни где не нашёл информации о том, какой тип сколько весит (помимо стандартный int, real, string)
мб кто-то подскажет. В идеале нужна таблица с типами значений и описанием того, сколько эти значения весят и как их читать
Если по-простому, то всё (кроме строк) по 4 байта, а если по-сложному, то в начале статьи все типы описываются.
» WarCraft 3 / как запустить на 1.26 карту [ Nature's Call - Circle Defense ] ?
» WarCraft 3 / как запустить на 1.26 карту [ Nature's Call - Circle Defense ] ?
» WarCraft 3 / как запустить на 1.26 карту [ Nature's Call - Circle Defense ] ?
» WarCraft 3 / как запустить на 1.26 карту [ Nature's Call - Circle Defense ] ?
» WarCraft 3 / Как превратить папку в карту?
» WarCraft 3 / StringHash
» WarCraft 3 / StringHash
» WarCraft 3 / Что предпочтительней и почему Lua или Jass?
» WarCraft 3 / Щит молний.
» WarCraft 3 / HotS
» WarCraft 3 / Работа с w3o
» WarCraft 3 / Работа с w3o
Отредактирован BaHeK
» WarCraft 3 / Работа с w3o
Отредактирован BaHeK
» WarCraft 3 / Работа с w3o
Отредактирован BaHeK
» WarCraft 3 / Снова сэйв\лоад
» WarCraft 3 / Снова сэйв\лоад
» WarCraft 3 / Снова сэйв\лоад
» WarCraft 3 / Снова сэйв\лоад
» WarCraft 3 / Снова сэйв\лоад
» WarCraft 3 / Снова сэйв\лоад
» WarCraft 3 / Снова сэйв\лоад
» WarCraft 3 / Снова сэйв\лоад
» WarCraft 3 / Снова сэйв\лоад