18

» WarCraft 3 / как уничтожить все таймер-диалоги timerdialog ?

host_pi, Используй массив как уже и сказал. Дело в том что глобальная переменная перезаписивается. Для каждого окошка должна быть своя переменная
globals
timerdialog TestDialog array [3]
endglobals

set TestDialog[0]=CreateTimerDialogBJ(t,"Time")
set TestDialog[1]=CreateTimerDialogBJ(t,"Time")
set TestDialog[2]=CreateTimerDialogBJ(t,"Time")
// мы тут

call DestroyTimerDialog(TestDialog[0])
call DestroyTimerDialog(TestDialog[1])
call DestroyTimerDialog(TestDialog[2])
18

» WarCraft 3 / как уничтожить все таймер-диалоги timerdialog ?

2.1 Тебе нужен массив и каждий записать в пустую ячейку
globals 
timerdialog tDialog array [20] //- 20 макс количество таймеров
endglobals
// Записать новый таймер диалог
local integer i = 0
loop
     exitwhen 20 >= i
if tDialog[i] == null then
     tDialog[i] = new CreateDialog()
     exithen true
endif
set i = i + 1
endloop

// Удалить таймер диалоги
local integer i = 0
loop
     exitwhen 20 >= i
if tDialog[i] != null then
     tDialog[i] = DestroyDialog()
endif
set i = i + 1
endloop
endif
     
3.1 Помню читал, что в редких случаях если не запаузить таймер, игра может вызвать внутрисистемную ошибку. Мне не повезло с такой ошибкой встретится, но на всякий также на паузу ставил
18

» WarCraft 3 / Помогите реализовать новую систему найма войск

Способность в Альянсе, кажется називаеться Ополчение, попробуй ей поставить таймер в 0.
18

» WarCraft 3 / Способность фуры из Доты

Принятый ответ
Хештаблица тебе поможет решить дилему, сдесь есть статьи как ею пользоватся.
18

» WarCraft 3 / Как сделать пассивную способность активной?

Способ чтоб пасивку не было видно. Пассивную засунуть в предметную способность "книга заклинаний" и заблокировать книгу и пасивку для игрока при изучении активной и ее добавлении юниту. После, при активации разблокировать пасивку и зблокировать в конце таймера
18

» WarCraft 3 / Количество убийств юнита

В категории "unit" есть команда схожая на SetUnitDataValue(точное не помню). Там можно задать число которое будет привязано к юниту, а потом с помощью глобальной массива ссылатся на GetUnitDataValue
18

» Unryze Jass API / UjAPI

Вопрос по HandleList, как я понял с помощью него можно сделать в карте свой условный Garbage Collector?
18

» WarCraft 3 / Щит аббадона или же пассивка воина свет из ЖНА

Принятый ответ
Нанесение урона происходит после события. Логика такова, что ты востановишь юниту здоровье в тот момент когда у него и так максимум, а после наносится урон. Лечится таймером в 0.0 сек. Возможно, еще понадобится добавление способности повышающая макс.здоровье и после окончания таймера ее удаление
18

» WarCraft 3 / [vJass/Jass] не могу понять, что не так с кодом?)

Спросил про функцию, вот ее результат
function GetNearbyUnits takes unit u, real range returns group
    group g = CreateGroup()
    set g = GetUnitsInRangeOfLocAll(range, GetUnitLoc(u))
    call GroupRemoveUnit(g, u)
    return g
endfunction
Утекает переменная, но в целом если задавать уточняющие вопросы сможет написать кое какой код за тебя
18

» WarCraft 3 / [vJass/Jass] не могу понять, что не так с кодом?)

Не было созданой переменной local unit u, она сразу при cоздании юнита прописала set unit u =.
CreateUnit принимает х,у координаты. CreateUnitAtLoc (если не ошибаюсь) на нее можно заменить или создать координаты х,у и
CreateUnit(GetOwningPlayer(caster), 'hfoo', х, у, bj_UNIT_FACING)
18

» WarCraft 3 / Запустить рандом триггер и убрать его

Попробую с пояснением:
переменная - тип Триггер галочка что массив и размер на единицу больше количества триггеров название например MyTriggers,
переменая - тип целочисленная название MyTriggerMax
Событие при инитиализации карты
Установить переменная MyTriggers[1] = триггер из списка
Установить переменная MyTriggers[2] = другой триггер из списка

и так же с остальными которые будут запускатся
В конце установить переменная MyTriggersMax равно количеству установленых триггеров.
Переменной х(любая целочислення) ставим случайное число от 1 до MyTriggerMax
Запускаем триггер MyTriggers[х]
Установить переменную MyTriggers[x] равно MyTriggers[MyTriggerMax], то есть, на место триггера который больше не будет использоваться переносим триггер из конца списка, а максимальное количество списка уменьшим на 1, и тогда конец списка не випадет, так как случайное число от 1 до макс. количества.
Установить переменную MyTriggersMax равную (Арифметика) MyTriggersMax - 1
18

» WarCraft 3 / [vJass/Jass] не могу понять, что не так с кодом?)

function Skill1 takes unit caster returns nothing
    local integer i = 0
    local location loc = GetUnitLoc(caster)
local unit u

    loop
        exitwhen i >= 5
        set i = i + 1
        set loc = OffsetLocation(loc, 128.0, 360.0 / 5.0 * i)
        set u = CreateUnit(GetOwningPlayer(caster), 'hfoo', loc, bj_UNIT_FACING)
        call SetUnitOwner(u, GetOwningPlayer(caster), true)
        set loc = GetUnitLoc(caster)
    endloop

    loop
        set i = 0
        exitwhen i >= 5
        set i = i + 1
        set u = GetNearbyEnemy(caster, 300.0, true)
        if u != null and IsUnitType(u, UNIT_TYPE_HERO) == false and IsUnitType(u, UNIT_TYPE_STRUCTURE) == false then
            call UnitDamageTarget(u, caster, 100, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
            call KillUnit(GetEnumUnit())
        endif
    endloop
endfunction

Так ошибка исправится, но такой код не подойдет под твою задумку. В нем юниты все время создаются по кругу, а не двигают созданых., урон окружающие наносят кастеру., убивает юнита которого нет., нет проверки что юнит столкновения не являеться кастером.
18

» WarCraft 3 / Пропадают все объекты на карте

Похоже на какой то протектор карт который чистит весь код карти. Нужно через mpq открывать код
18

» WarCraft 3 / [GUI] Шансовое срабатывание яда

Проще триггером при событии атакован, действием повторно атаковать. Также перед действием нужно отключить триггер, а после включить
18

» WarCraft 3 / Изменение переменной в тригере

Скорее всего, тебе нужно просто из списка выбрать. Жми не изменить, а на темпреал
18

» WarCraft 3 / Доска Статистики

Принятый ответ
Возможно ошибка в коде, попробуй
local integer l = 0
local integer i = 0
loop
exitwhen i >= 10
if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING and GetPlayerSlotState(Player(i)) != PLAYER_SLOT_STATE_EMPTY then
call MultiboardSetRowCount(udg_MB, l + 2)
set l = l + 1
endif
set i = i + 1
endloop
18

» WarCraft 3 / Нанесение урона триггерным способом

Возьми не int, a real, есть событие которое сработает когда значение будет равно(наверно можно больше,меньше) нужному тебе.
18

» WarCraft 3 / Нанесение урона триггерным способом

Урон такой же. Там можно выбрать тип урона, чтоб нанести чистый урон, учитывалась броня или маг.резист.
Второй вопрос не совсем понял, но правильной постройке триггера глюков не будет.
18

» WarCraft 3 / [GUI] Тригер "отказывает" в запуске карты, или крашит игру.

Centyrion, Может способность не для героя, либо юнит не герой. Краш бывает, если проводить манипуляции с характеристиками на простых юнитах
18

» WarCraft 3 / Опыт после убийства крипа

Измени событие, там есть Generic unit і добавь условие что: тип юнита Trigger unit равно бандит
18

» Unryze Jass API / UjAPI

И да, забыл добавить, Y2 ограничение имеет, откуда Y3? Напоминаю, что столбов (X) 4 (0-3) а строк (Y) 3 (0-2). И получается 4 * 3 = 12 (11 индекс). А ты хочешь получить 4 * 4 = 16ый индекс, вопрос откуда и куда.
Я ошибся с обозначением х,у. Позиция х2 и у2 = Child(0). -1 индекс указал чисто проверить, думал если Child(0) = x2;y2 и Child(10) = x0;y0 то -1 может быть x3;y2
ОШИБКА
This application has encountered a critical error:

FATAL ERROR!

Program:	D:\Games\WarCraft3\Warcraft 3 Frozen Throne\war3.exe
Exception:	0xC0000005 (ACCESS_VIOLATION) at 0023:0222279A

The instruction at '0x0222279A' referenced memory at '0x00000010'.
The memory could not be 'read'.