28

» WarCraft 3 / Баги со скрытыми через триггер предметами

а по сабжу - в редакторе 60% функций работают не так, как надо
Эм, что? Всё работает, как надо, только иногда со странными функциями бывают странности, вроде этой.
28

» WarCraft 3 / wait течет или капает?

Ну так,а мы обнулим переменную))
Она локальная, как ты её обнулишь вне её функции? Только если свой аналог напишешь.
28

» WarCraft 3 / Баги со скрытыми через триггер предметами

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

» WarCraft 3 / wait течет или капает?

Если это утверждение верно
Классика blizzard.j, объект удаляется, но переменная на него не обнуляется.
28

» WarCraft 3 / Баги со скрытыми через триггер предметами

Открывай Object Manager, и смотри, где используются переменные этих предметов.
Также покажи все места, где итемы раскрываются.
28

» WarCraft 3 / wait течет или капает?

Мне уже лет 5 твердят,что команда "wait" утечна.
PolledWait не обнуляет переменную таймера, вот и всё. Это не утечка, но хендл не освобождается.
28

» WarCraft 3 / Запретить автоатаку

Сама по себе она нейтральная и никого не атакует.
Можно отключать ей атаку, а когда герой садится, включать.
28

» WarCraft 3 / JNGP 1.30 - есть что-нибудь такое?

Это нужно помнить на память все.
Так-то N++ выдаёт подсказки по функциям, но я не ручаючь за эту подсветку.
28

» WarCraft 3 / Ошибка при выборе юнита в триггере

Принятый ответ
Нужно в GUI в каком-нибудь действии юнита этого выбрать, тогда данная переменная создастся.
28

» WarCraft 3 / JNGP 1.30 - есть что-нибудь такое?

Можно писать код в Notepad++ с подсветкой (тоже на хайве есть), а код компилировать в jasshelper через powershell.
28

» WarCraft 3 / Последовательность выполнения

Попробуй отдавать "стоп" перед удалением, например,
Я так и начал делать, но сейчас это бесполезно, мне кажется, потому что сейчас рект из региона удаляется первее юнитов.
PT153:
На данный момент последовательность такая: жизни становятся равным нулю; установка inGame на false; удаление области из региона, на который зарегистрирован триггер EnterFinish; всем юнитам отдаётся приказ "Стоп"; удаление миньонов.
Раз уж никто точно не знает, то хватит ли реализации из первого комментария, чтобы избежать данной ошибки?
Вообще, надо систему логов сделать, вместо вывода в сообщений в игру, ибо последние отключены в ndopt версиях.
28

» WarCraft 3 / Последовательность выполнения

без карты реплей не могу посмотреть
Забыл, xD.
Путь у карты такой: Maps\Download\WispTD v3.-1.2 ndopt.w3x
Обязательно замени _ на пробелы в названии карты.
Загруженные файлы
28

» WarCraft 3 / Приоритет атаки ИИ

Я ролик по карте смотрел, там у юнита не было атаки, но у него была способность феникса, на не не обращали внимание.
28

» WarCraft 3 / Приоритет атаки ИИ

не надо атаки, попробуй сделать ему периодическое нанесение урона каждую секунду противникам вокруг в размере 0.01
Это не поможет, разве что только если через функции наносить урон.
28

» WarCraft 3 / Последовательность выполнения

Но это не так: если несколько миньонов заходят в область почти одновременно, триггер вызывается несколько раз, потому что код не успевает удалять миньонов, которые почти одновременно входят. Потому данный код багнут.
Удаление игрока вызывается несколько раз.

19:28, жёлтый проигрывает, удаляясь 3 раза, из-за чего у зелёного становится -1 потребление пищи, а 2 игрока вылетают из пула играющих.
В момент удаления у оранжевого создаются эффекты (у него точка (0, 0)), так как эффекты создаются для юнитов, что уже удалены.
Загруженные файлы
28

» WarCraft 3 / Последовательность выполнения

(в начале функции пишем название функции или триггера, в конец функции пишем end_name func и будет понятно кто за кем следует)
Да вот и проблема в том, что это происходит нечасто, но происходит, это сложно просимулировать.
28

» WarCraft 3 / Последовательность выполнения

На данный момент я попытался исправить это так. Все функции не менялись, кроме указанных ниже:
раскрыть
function Trig_EnterFinish_Actions takes nothing returns nothing
    local Minion m = GetUnitUserData(GetEnteringUnit())
    local CustomPlayer p = m.foe
    if p.inGame then
        call p.leaked(m.data.livesconsume)
        call m.gainBounty(false)
        if p != m.owner and m.owner.inGame then
            call m.owner.leaked(m.data.livesgain)
        endif
        call CreateEffectPoint(EffectLifeConsume, GetUnitX(m.minion), GetUnitY(m.minion))
        if p.lives > 0 then
            call m.remove()
        elseif p.flush() then
            call Message(MessagesDuration, "Player " + p.colored_name + " has been defeated.")
            if bj_isSinglePlayer != (PlayingPlayers.top == 0) then
                call FinishGame(10)
            endif
        endif
    endif
endfunction

// p.flush()
    method flush takes nothing returns boolean
        if inGame then
            set inGame = false
            call field.flush()
            call field.stopAllUnits()
            call PlayingPlayers.deleteFromArray(this)
            set flushing = this
            call ExecuteFunc("SellAllForces")
            call ExecuteFunc("RemoveAllSpawned")
            call ExecuteFunc("RemoveAllMinions")
            call ExecuteFunc("RemoveAllCorpses")
            call ExecuteFunc("SellAllTowers")  // Почти тоже самое, что и call ExecuteFunc("RemoveAllTowers").
            call DeleteTimer()
            if isReady then
                call DestroyGrid.execute()
                call ShadowMultiboard()
                call RemoveUnit(builder)
                set builder = null
                call RemoveUnit(barracks)
                set barracks = null
                call RemoveUnit(altar)
                set altar = null
                call RemoveUnit(merccamp)
                set merccamp = null
                call RemoveUnit(blacksmith)
                set blacksmith = null
                set blacksmith_swap_faction = null
                set blacksmith_mhu_level = null
                set blacksmith_mhu_cost = null
            endif
            call DebugMsg("Player " + I2S(this) + " is flushed.")
            return true
        endif
        return false
    endmethod

// call field.flush()
    method flush takes nothing returns nothing
        // Regions
        call RegionClearRect(SpawnRegion, spawnarea)
        call RegionClearRect(LeaveRegion, leavearea)
        // Destroy
        call TimerStart(t, FieldDestroyDelay, false, DestroyCallback)
    endmethod

// call field.stopAllUnits()
    private static method StopAllUnitsFilterFunc takes nothing returns nothing
        call IssueImmediateOrderById(GetFilterUnit(), Order_stop)
    endmethod
    
    private static boolexpr StopAllUnitsFilter
    
    method stopAllUnits takes nothing returns nothing
        call GroupEnumUnitsInRect(bj_lastCreatedGroup, playerfield, StopAllUnitsFilter)
    endmethod
Достаточно ли этого, чтобы избежать бага, что описан в вопросе? Будет ли лучше поставить в Trig_EnterFinish_Actions вместо if p.inGame then вот это if p.lives > 0 then, или без разницы с реализацией выше? Количество жизней становится меньше 0 раньше, чем флаг inGame становится false.

На данный момент последовательность такая: жизни становятся равным нулю; установка inGame на false; удаление области из региона, на который зарегистрирован триггер EnterFinish; всем юнитам отдаётся приказ "Стоп"; удаление миньонов.
28

» WarCraft 3 / АвтоклиКАБЕЛЬность

Забавный факт - в триггере с событием "Игрок снимает выделение" юнит, с которого было снято выделение, всё ещё считается выделенным.
28

» WarCraft 3 / PauseUnit

Я вместо паузы приказ "Стоп" решил отдавать, просто интересно, в чём же дело.
28

» WarCraft 3 / PauseUnit

так че-то пространственно туманно
Да вообще дичь.
Просимулировал такую же ситуацию на чистой карте - проблемы нет.
Карту в ЛС отправлю.
28

» WarCraft 3 / Реплей

реплей пишется на машине хоста
Это так, даже если хостит бот?
28

» WarCraft 3 / Реплей

По идее да,
Там в этом и вопрос. У меня отображаются только локальные действия игрока 0, но реплей мой, и я не был игроком 0.
28

» WarCraft 3 / jass в новой версии варкрафта

Так в 1.30 ввели поддержку vJass, вот и всё. Вех остальных фич из JNGP там нет.