0
6
8 месяцев назад
0

» WarCraft 3 / как запустить на 1.26 карту [ Nature's Call - Circle Defense ] ?

Дак эта версия тоже с рб.
1
6
8 месяцев назад
1

» WarCraft 3 / как запустить на 1.26 карту [ Nature's Call - Circle Defense ] ?

Поробовал поменять на хеш-таблицы и карта запустилась на рефордже (не знаю про 1.26, но скорее всего тоже будет работать). Менял все чере мпк редактор, ибо если менять редактор мира, в из карты выидывает с поражением, не стал с этим заморачиваться, да и через блокнот редактировать код в данном случае удобней. Кстати эта защита видимо забытые технологии древних. По крайней мере я ничего подобного не видел. Да и то что в карте есть такая защита и саму карту не прогоняли через оптимизаторы, говорит о том что она мега древняя. Ну это так отступление.
Загруженные файлы
1
6
8 месяцев назад
1

» WarCraft 3 / как запустить на 1.26 карту [ Nature's Call - Circle Defense ] ?

Не знаю насколько это работоспособно, но попробуй заменить так:
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
1
6
8 месяцев назад
1

» WarCraft 3 / как запустить на 1.26 карту [ Nature's Call - Circle Defense ] ?

Функция Trig_W2U , к слову, вообще не используется в карте. Просто удали её.
0
6
8 месяцев назад
0

» WarCraft 3 / Как превратить папку в карту?

В MPQ editor'е есть возможность создать карту из папки, но это, очевидно, не даст тебе открыть карту в редакторе карт и тебе в любом случае придется "редактировать war3map.j", что, скорей всего, и делали в случае с мафией.
Загруженные файлы
0
6
2 года назад
0

» WarCraft 3 / StringHash

and not IsPlayerInForce(p2p,CHEATER)
0
6
2 года назад
0

» WarCraft 3 / StringHash

Очень интересный вопрос. Только что проверил:
function test takes nothing returns nothing
    if StringHash(GetEventPlayerChatString())==-310027398 then
        call BJDebugMsg("ok")
    endif
endfunction
Всё работает при вводе слова test. Скорей всего проблема во втором условии.
0
6
2 года назад
0

» WarCraft 3 / Что предпочтительней и почему Lua или Jass?

Много интересных постов в теме, но ответа на главный вопрос так и не было. Lua или Jass?
1
6
2 года назад
1

» WarCraft 3 / Щит молний.

Можно сделать на основе заклинания Жар Преисподней, но без триггеров тут не обойтись.
0
6
2 года назад
0

» WarCraft 3 / HotS

А героев из хотса добавлять будешь?
2
6
6 лет назад
2

» WarCraft 3 / Работа с w3o

Все list'ы это строки, в которой элементы разделены запятыми. Например heroAbilityList у паладина AHhb,AHds,AHre,AHad. Все type'ы тоже строки. Например attackType у стрелка pierce. bool это int. С int и real все итак понятно. Остальные типы это string.
2
6
6 лет назад
2

» WarCraft 3 / Работа с w3o

По факту используются только первые четыре типа int, real, unreal, string. Хотя unreal скорей всего тоже самое что и real.
2
6
6 лет назад
Отредактирован BaHeK
2

» WarCraft 3 / Работа с w3o

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)
2
6
6 лет назад
Отредактирован BaHeK
2

» WarCraft 3 / Работа с w3o

Но я ни где не нашёл информации о том, какой тип сколько весит (помимо стандартный int, real, string)
мб кто-то подскажет. В идеале нужна таблица с типами значений и описанием того, сколько эти значения весят и как их читать
Если по-простому, то всё (кроме строк) по 4 байта, а если по-сложному, то в начале статьи все типы описываются.
2
6
7 лет назад
Отредактирован BaHeK
2

» WarCraft 3 / Снова сэйв\лоад

Попробуй переставить строку следующим образом
    set buffer = buffer + I2S(SaveLoad_EncodeVerify(buffer))
    if udg_Save[1] == 0 then
        set buffer = "-" + buffer
    endif
чтобы получилось
    if udg_Save[1] == 0 then
        set buffer = "-" + buffer
    endif
    set buffer = buffer + I2S(StringHash(buffer))
2
6
7 лет назад
2

» WarCraft 3 / Снова сэйв\лоад

Исправлял в обе строки и вторую с учетом того что я написал? Если так, то простому сделать не получится и нужно будет многое переделать.
2
6
7 лет назад
2

» WarCraft 3 / Снова сэйв\лоад

Тогда исправь
set j = SaveLoad_EncodeVerify(SubString(buffer,0,k))
на
set j = StringHash(SubString(buffer,0,k + 1)
2
6
7 лет назад
2

» WarCraft 3 / Снова сэйв\лоад

Надо было менять только в этих строчках
set buffer = buffer + I2S(SaveLoad_EncodeVerify(buffer))
set j = SaveLoad_EncodeVerify(SubString(buffer,0,k))
2
6
7 лет назад
2

» WarCraft 3 / Снова сэйв\лоад

Karp:
И как же её использовать? Спасибо конечно за наводку, но для меня она особо ни чего не говорит)
Просто замени в коде SaveLoad_EncodeVerify на StringHash в функция сохранения и загрузки кода.
2
6
7 лет назад
2

» WarCraft 3 / Снова сэйв\лоад

Karp:
BaHeK:
Karp:
BaHeK:
Там слишком много итераций. Убери вызов этой функции и проверь как будет работать.
я конечно попробую, но что-то мне подсказывает, что без этой функции будет всё наперекосяк)
Конечно не будет. Поэтому это функцию надо будет переделать.
Можешь изменить в правильном направлении? я не знаток вообще Jass
Есть встроенная функция StringHash, поробуй использовать её вместо SaveLoad_EncodeVerify.
2
6
7 лет назад
2

» WarCraft 3 / Снова сэйв\лоад

Karp:
BaHeK:
Там слишком много итераций. Убери вызов этой функции и проверь как будет работать.
я конечно попробую, но что-то мне подсказывает, что без этой функции будет всё наперекосяк)
Конечно не будет. Поэтому это функцию надо будет переделать.
2
6
7 лет назад
2

» WarCraft 3 / Снова сэйв\лоад

Там слишком много итераций. Убери вызов этой функции и проверь как будет работать.
2
6
7 лет назад
2

» WarCraft 3 / Снова сэйв\лоад

Проблема в функции SaveLoad_EncodeVerify.