28

» WarCraft 3 / AdicHelper?

А почему нолями, а не null?
Выше пояснил. 0 = false = null, в том же vJass в структурах (что являются integer) идёт сравнение с null. JASS не ругается.
28

» WarCraft 3 / AdicHelper?

Если б это было так, то простое объявление массива сжирало всю доступную память.
Что за чушь? Объявление массива аллоцирует под него место и заполняет нулями (как calloc в C). Потому начальные значения у массива есть false, 0, 0. и null. Для обычной переменной заполнения нулями не происходит, потому там может быть что угодно. Использование переменной без установленного значения (которое может быть присвоено во время определения переменной или после) обрывает поток.

И так не вызывает ошибок.
Потому что используете старый pjass.exe, используйте новый.
То компилируется без проблем. В чем же подвох?
Если писать на cJass, то надо писать на cJass. Верно будет так.
void temp() {
  integer dot = 1
  dot = present(dot)
{
function temp takes nothing returns nothing
  local integer dot = 1
  set dot = present(dot)
endfunction
28

» WarCraft 3 / Правка урона

8gabriel8, у юнита максхп есть 100, урон 200. Наш бафф снижает урон на 90% (то есть юнит получит 20 урона). В твоём случае юниту поставиться 100 хп (максимум), 200 урона его убивает, что неверно.
28

» WarCraft 3 / Пособие по публикации ресурсов

point order дает утечку системы поиска пути, например
Мы такое не проходили, нам такое не задавали)
Всё же речь про те утечки памяти, которые мы можем исправить не пренебрегая функциональностью.
28

» WarCraft 3 / AdicHelper?

Правда?
В JASS так, даже последний pjass.exe это определяет.
А посему декларация переменных поток не сбрасывается?
Не понял.
А не обращение к несуществующему элементу массива возвращало null?
Все элементы массива по умолчанию заполнены нулями.
28

» WarCraft 3 / Правка урона

вы оба не учитываете это
А, ты про ситуацию, когда полный урон убивает, а сниженный нет? Да, не подумал.
28

» WarCraft 3 / Правка урона

Классический способ:
В чём проблема через 0 секунд просто восполнить здоровье в размере полученного урона, если юнит всё ещё жив?
28

» WarCraft 3 / Правка урона

исцелить юнита на этот процент урона
Урон в EVENT_UNIT_DAMAGED наносится после завершения триггера, потому следует либо восполнить хп с помощью таймера в 0 секунд, либо способом Hate.
EVENT_PLAYER_UNIT_DAMAGING
Стоит отметить, что в триггере с таким событием урон снизится до вычета брони.
28

» WarCraft 3 / Создание проклятого рудника через триггеры

WestTiger, триггеры вообще открывал?
Найти ближайший рудник можно с помощью такого кастомого скрипта.
set Mine = MeleeFindNearestMine(startLoc, bj_MELEE_MINE_SEARCH_RADIUS)
Где startLoc - стартовая позиция игрока.
Загруженные файлы
28

» WarCraft 3 / AdicHelper?

А в чём проблема переменной без значения?
При обращении к переменной без значения поток обрывается. Вот у массивов все ячейки имеют дефолтное значение, обычнве переменные нет.
Vlod, а какая ошибка?
28

» WarCraft 3 / AdicHelper?

Vlod, ты всегда пытаешься использовать переменную без значения. Это ошибка. Во втором случае ты пытаешь использовать не определённую переменную, о чём и говорит парсер. Скачай новый pjass.exe, он укажет и на ошибки в оставшися случаях.
28

» WarCraft 3 / Как сделать для каждого игрока отдельный MultiBoard?

Много раз слышал, что мультиборды десинкают и поэтому для каждого игрока свой создают.
Где? Почему у меня не десинкают?
28

» WarCraft 3 / Ошибка в описании спасобности

Принятый ответ
Kanteu, у тебя в описаниях стоит код AUdc, тебе нужно его заменить на равкод твоей способности. Чтобы его узнать, выдели способность и нажми Ctrl+D. Перед двоеточием будет равкод способности.
28

» WarCraft 3 / Способности прыгают со своего места

MKDimon, если в спелбуке должно быть X заклинаний, то ты должен поставить минимум и максимум на X.
28

» WarCraft 3 / Хеш-таблица и юнит

Принятый ответ
действительно, почему же не работает?
Это вообще никак не влияет. Ты ещё скажи, что set a = a + 1 не работает.

Дело может быть в том, что юнит за 10 секунд разлагается.
немного исправленный код
function Reborn takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer s = GetHandleId(t)
    local unit dead = LoadUnitHandle (udg_hash, s, 6)
    call FlushChildHashtable(udg_hash, s)
    call CreateUnit(GetOwningPlayer(dead), GetUnitTypeId(dead), GetUnitX(dead), GetUnitY(dead), GetUnitFacing(dead))
    call DestroyTimer(t)
    set dead = null
    set t = null
endfunction

function Trig_Kill_Unit_Actions takes nothing returns nothing
    local unit dead = GetTriggerUnit()                      //Присваиваем убитого юнита
    local timer t = CreateTimer()                              //Создаём таймер
    local integer s = GetHandleId(t)                         //Узнаём его ID
    call SaveUnitHandle(udg_hash, s, 6, dead)       //Сохраняем юнита 
    call TimerStart(t, 10, false, function Reborn)        //Активируем одноразовый таймер на 10 секунд
    set dead = null
    set t = null
endfunction
код с учётом разложения
function Reborn takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer s = GetHandleId(t)
    local player p = LoadPlayerHandle(udg_hash, s, 0)
    local integer id = LoadInteger(udg_hash, s, 0)
    local real x = LoadReal(udg_hash, s, 0)
    local real y = LoadReal(udg_hash, s, 1)
    local real f = LoadReal(udg_hash, s, 2)
    call CreateUnit(p, id, x, y, f)
    call FlushChildHashtable(udg_hash, s)
    call DestroyTimer(t)
    set t = null
    set p = null
endfunction

function Trig_Kill_Unit_Actions takes nothing returns nothing
    local unit dead = GetTriggerUnit()
    local timer t = CreateTimer()
    local integer s = GetHandleId(t)
    call SavePlayerHandle(udg_hash, s, 0, GetOwningPlayer(dead))
    call SaveInteger(udg_hash, s, 0, GetUnitTypeId(dead))
    call SaveReal(udg_hash, s, 0, GetUnitX(dead))
    call SaveReal(udg_hash, s, 1, GetUnitY(dead))
    call SaveReal(udg_hash, s, 2, GetUnitFacing(dead))
    call TimerStart(t, 10, false, function Reborn)
    set dead = null
    set t = null
endfunction
28

» WarCraft 3 / Нужно ли собирать триггеры с одинаковым условием в один

8gabriel8, простая оптимизация. Очень легко делается, а при срабатывании триггера проверяются не все условия.
Можно сделать по другому, для каждого спела в соответствие поставить триггер и вызывать его, передавая аргументы через глобалки.
28

» WarCraft 3 / Нужно ли собирать триггеры с одинаковым условием в один

То есть в "То - Действия" нужно после всех моих действий там вписывать Skip remaining actions, чтобы оно пропускало "Иначе - действия", т.к там у меня ничего нет. Да ?
Условия на то и условия, что либо выполнится ветка then, либо ветка else. Black Soul верно ответил, это для того, чтобы другие условия пропускались. На твоём скриншоте код выглядит так.
код
If something1 then
    // actions
endif

if something2 then
    // actions
endif
В этом случае, даже если something1 = true, второе условие будет всё равно проверятся. Тебе же нужно, чтобы при обнаружении нужного условия остальные не выполнялись. Потому нужно сделать так.
код
If something1 then
    // actions
    return
endif

if something2 then
    // actions
    return  // Если это условие в самом конце, то return необязателен.
endif
От этого смысла примерно столько же, как от удаления действия Do nothing. То есть вообще незаметно.
?
28

» WarCraft 3 / Десинк с Preloader'ом

ProximityCat, нет, юнит должен быть создан для всех. Нужно для всех игроков создать такой файл и запрелоадить, но лично я не вижу смысла в этом.
28

» WarCraft 3 / Десинк с Preloader'ом

Скорее всего не у всех есть такой файл. Потому для одного игрока юнит создаётся, а для других нет.
28

» WarCraft 3 / Нужно ли собирать триггеры с одинаковым условием в один

Skip remaining actions
Это просто return в JASS, вот и всё, после этого слова триггер завершается, так как триггер в GUI состоит из одной функции.
А диалоги багнуты чутка, их лучше всего скрывать через EnableUserInterface.