Доброго времени суток всем.
Создаю карты в свое удовольствие и столкнулся с тем что во время проверки карты (с ботами) - получаю фатальную ошибку, которую пытаюсь разобрать.
Читал много статей, подобные этим:
Где рассказывают что можно установить Debug который может помочь отследить ошибку, при фатальности.
Но я не могу его установить, ибо при установке кода - редактор выдает много уведомлений об отсутствии строк и после отключает триггер полностью.
Я понимаю что неправильно его устанавливаю, поэтому это дополнительный мой вопрос к Вам.
Мои 2 вопроса, которые я бы хотел уточнить у профессиональных картоделов:
  1. Помогите расшифровать лог ошибки, которая у меня возникла на моей карте.
  2. Как устанавливать Debug, из ресурсов выше. Дабы после можно было отслеживать логи. (Инструкцию для чайника можно :с)
3(дополнительный вопрос). Как можно (или где можно научиться) расшифровать лог ошибки Варкрафта.
Сам лог с ошибкой: disk.yandex.com/d/4M0BC8EMcVdiLw
Сама фатальная ошибка: disk.yandex.com/i/sSjNgQ-OHfwe8w
Заранее спасибо Вам большое, за уделенное время и адекватные ответы. <3

я думал что в комьюнити нашем есть ребята, которые знают как отследить логи
ну не знаю комьюнити как комьюнити, половина толковых ребят бустанулись по карьерной ветке, а другая половина (или меньше) остались в варе, но они не особо горят желанием сидеть и отвечать на вопросы новичков, да и смотивировать их нормально только деньгами можно, это я тут лошок на энтузиазме (за лайки) пытаюсь тебе как-то помочь решить проблему, с горем пополам)
отследить то отследишь, даже просто те что варик тебе кидает, вот только ошибки могут быть абсолютно по разным причинам, вообще, что-то можно понять, как например утечки памяти, а что-то тупо рандом, тут тебе вряд ли какой либо профи уже поможет
системы я разобрал, нужное нашёл и перенёс на джасс, соответственно тебе тупо после каждой функции, после каждого действия нужно добавлять инфу в лог
в карте есть пример с крашем, когда юниту выдаёшь геройский инвентарь и даёшь книжку на статы
сам лог сохраняется на диск С в папке дебага (ты можешь поменять путь), в нём ты увидишь примерно это на тестовой карте
оно по факту вообще тебе может не помочь, реально, потому что, к примеру, геройский инвентарь ты можешь дать со старта игры, а крашнет из-за него спустя 10 минут игры, когда будут куча совсем других действий которые могли и не повлиять на краш вообще
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
28
zpxo, ты же сам заявил что у тебя 2 вопроса)
По ссылке там 1.28 версии и 1.27 версии.
А я карту делаю на версию 1.26а - Редактор из раздела "1.27 и ниже экспериментальная сборка" будет работать с моей версией?
по ссылке там всё нормально, я как бы сижу же на 1.26 и пользуюсь джнгп)
просто нажми на кнопку скачать
Если Вам не сложно я был бы рад получить от Вас тот код в джасс и краткую инструкцию по установке.
просто скопируй и закинь триггер к себе в карту

ладно, тот периодичный эффект что ты накладываешь на всех юнитов он одинаковый или для каких-то отличается? можно просто в массив все эффекты записать, запустить таймер и через время пройтись по ним и удалить, но если время разное, то вероятно придётся с периодиком запускать с указанием времени анимации

и ещё, микрофриз происходит прям в самом начале игры или спустя какое-то время?
2
ладно, тот периодичный эффект что ты накладываешь на всех юнитов он одинаковый или для каких-то отличается? можно просто в массив все эффекты записать, запустить таймер и через время пройтись по ним и удалить, но если время разное, то вероятно придётся с периодиком запускать с указанием времени анимации
Действие "Выбрать каждого юнита..." совершает действия в том количестве - сколько юнитов выбрано.
Я там просто логически не могу понять как их всех засунуть в массив переменной с типом "Спецэффект". Ибо он не меняет цифру массива, а просто перезаписывает каждый раз переменную с выбором каждого юнита. 😬
и ещё, микрофриз происходит прям в самом начале игры или спустя какое-то время?
Спустя некоторое время. Но я думаю это происходит из-за того что Вы писали выше.
Так как у меня много триггеров связано было с созданием спецэффекта на юните. Без удаления.
Поэтому я сейчас переиграл этот момент. Буду наблюдать.
просто скопируй и закинь триггер к себе в карту
Спасибо огроменное, добрый человек. сейчас попробую загрузить. ⭐️

Спасибо огроменное, добрый человек. сейчас попробую загрузить. ⭐️
А показатель, со старта запуска 4100 - это много? 😆
28
zpxo, вот тебе маленький пример, на его основе сделай удаление всех эффектов которые не удаляются сразу после создания, я сделал на примере хила (он тоже не проигрывает до конца анимку если удалить)
ты можешь отключить первые 2 триггера после коммента и включить последний чтобы наблюдать рост утечек
28
А показатель, со старта запуска 4100 - это много? 😆
нет, это мало, имей ввиду, хэндлы это юниты, разрушаемые декорации (деревья, баррикады), предметы, это всё не утечки само собой потому что используется всю игру, юниты и предметы удаляются при уничтожении спустя время (с рунами только беда может быть)

как бы по нормальному объяснить..
к тому, что утекает, ты не сможешь больше никогда обратиться если не сделаешь это прямо после использования или если не закинешь в глобалку, например к юниту ты можешь обратиться в любой момент игры просто выбрав его на карте или любыми другими событиями, а вот к эффекту, если ты не запеременишь его и не удалишь после анимации (как в примере выше), либо сразу же после создания не удалишь, если позволяет, обратиться больше никак не сможешь, нет такого действия допустим как "выбрать все эффекты на карте"

но повторюсь, утекают хэндлы, т.е. объекты. строки, реальные, целочисленные и подобное не течёт

вот тут подробнее
2
вот тебе маленький пример,
Спасибо, что-то не доперло сразу, что я могу внутри данного действия использовать арифметику с "+1".
Ведь это 100% дает возможность удалить эффекты которые были записаны ранее.
Это ведь правда круто!

нет, это мало, имей ввиду, хэндлы это юниты, разрушаемые декорации (деревья, баррикады), предметы, это всё не утечки само собой потому что используется всю игру, юниты и предметы удаляются при уничтожении спустя время (с рунами только беда может быть)
Спасибо большое Вам за помощь!
За уделенное время! Очень приятно что в наше время можно встретить хороших людей.
Спасибо, что помогли объяснить где может быть проблема и как её исключить методом оптимизации.
28
zpxo, успокойся, не спеши с благодарностями пока это реально не поможет решить проблему, если же всё окей то просто закрой вопрос
2
zpxo, успокойся, не спеши с благодарностями пока это реально не поможет решить проблему, если же всё окей то просто закрой вопрос
Сейчас карту тестил и произошел вновь фатал. Который сработал теперь в другом временном событии. (Который указал в шапке вопроса - там в другое время произошел сбой).
Счетчик показывал 7к+ и микролагов не было, после удаления спецэффектов.

Теперь сижу и ковыряю триггеры, ибо приблизительно понимаю в какой этап произошел фатал...
Думаю это из-за того что 1 триггер не отработал как следует свои действия в середине карты (микробаг, который я, наверное, совершил при написании триггера).
Сейчас буду смотреть, но если есть возможность разобрать лог и сказать где "пробел" - буду признателен.
2
Доброго времени суток. Попытался воссоздать ситуацию в момент Фатала - но вылета не было. Спокойно все отработало.
Если бы я знал как расшифровать лог ошибки - была бы новая информация о том что происходит.(((
Но не могу... Даже ДебагЛог не могу поставить, точнее не хватает мозгов это сделать.
В новом редакторе, который вы посоветовали - я его устанавливаю, но все равно получаю ошибки из самого кода дебага, при инициализации.
(Также заметил, при попытке оставить этот дебаглог в карте, при инициализации варка открывается в главном меню и все)
Пытался вставить этот код с доп триггерами: (Но он постоянно ругается на часть с сохранением: "private SavePath = Dir\\Debug"
//TESH.scrollpos=41
//TESH.alwaysfold=0
//@ Debug Log library by DoctorGester, 2011, v 1.0

#define{
    private SavePath = Dir\\Debug
    private SaveOnHardDrive = true
    private HardDriveLetter = C
    private AutoSaveLog = true
    private LogSavePeriod = 1.0
}

library DebugLog initializer DebugLogInit{

    #include "cj_types_priv.j"

    private string DebugLog[8192]
    private int CurrentString = 0
    private int Seconds = 0
    private int Minutes = 0
    private constant int StringLimit = 200
    
    void LogAdd(string s){
        string sec = I2S(Seconds)
        if (Seconds < 10){
            sec = "0" + sec
        }
        DebugLog[CurrentString] = DebugLog[CurrentString] + ("[" + I2S(Minutes) + ":" + sec + "] " + s + "\n") /* DebugLog[CurrentString] += (s + "\n") cJass bug ! */
        if (StringLength(DebugLog[CurrentString]) >= StringLimit){
            CurrentString++
        }
    }
    
    void LogClear(){
        int i = 0
        while (i <= CurrentString){
            DebugLog[i] = ""
            i++
        }
        CurrentString = 0
    }
    
    void LogUpdate(){
      PreloadGenClear()
      PreloadGenStart()
      int i = 0
        while (i <= CurrentString){
            Preload("\")\n" + DebugLog[i] + "\n(\"")
            i++
        }
      #if SaveOnHardDrive
            PreloadGenEnd(`HardDriveLetter` + ":\\" + `SavePath` + ".txt")
      #else
            PreloadGenEnd("\\" + `SavePath` + ".txt")
      #endif
    }
    
    private void DebugLogOnTimer(){
        Seconds++
        if (Seconds > 59){
            Seconds = 0
            Minutes++
        }
    }

    private void DebugLogInit(){
        #if AutoSaveLog
            TimerStart(CreateTimer(), LogSavePeriod, true, function LogUpdate)
        #endif
        TimerStart(CreateTimer(), 1., true, function DebugLogOnTimer)
        LogAdd("By DoctorGester. Last compilation: " + `DATE` + " " + `TIME`)
    }
    
}

На просторах интернета также нашел исходный код. Но не понимаю для чего он нужен и поможет ли он мне отследить фатальную ошибку с триггерами (когда там пишут про джас).
Загруженные файлы
28
(Также заметил, при попытке оставить этот дебаглог в карте, при инициализации варка открывается в главном меню и все)
вероятно потому что ты просто не включил вджасс с сджассом либо не дал скомпилироваться карте посредством сохранения (иногда нужно 2 раза) перед тестированием
2
вероятно потому что ты просто не включил вджасс с сджассом либо не дал скомпилироваться карте посредством сохранения (иногда нужно 2 раза) перед тестированием
Выходит код, который я выслал выше - он должен работать стабильно?
Вы можете мне помочь в установке дебага в карту? И объяснить работает он сам или нужно его активировать или как?
Господи, я уже готов заплатить, за знания, которые Вы можете мне дать и за Ваше потраченное время. При необходимости 😂
28
zpxo, я не знаю работает или нет, я мигом посмотрел код представленный из самого вопроса и понял принцип работы, всё

там собственно и код не нужно было смотреть, всё в описании расписано

я могу попробовать разобрать или даже перевести на обычный джасс чтобы ты мог пользоваться но честно говоря желания особо и нет

из-за того что там сджасс, ненавижу эту штуку
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.