Привет! Поковырялся чуток, прикладываю скрин, видео и карту.
Доброго времени суток!
Спасибо ОГРОМНОЕ за помощь! Все разжевали и показали. Как по мне проделана большая работа!
Не ожидал такой обратной связи) С утра встал и залип на час)
Был бы рад получить приглашение на Discord сервер, дабы присоединиться. А так еще раз спасибо!
Вот тут я "видимо" неверно указываю область и далее триггер не закидывает юнитов в группу.
Хотя если я не использую call GroupEnumUnitsInRect и использую простое действие - то все работает.
Сильно не обращайте внимание зачем мне это нужно, это просто "вырванный" кусок из всего триггера.
Но даже этот вырванный не работает. (событие Каждые 10 сек)
Всегда слышу только осуждение) Неужели никто не умеет общаться по-человечески, а не приравнивать всех к самому себе. :)
Я читал аннотацию, читал вики по JASS, но есть люди, которые не имеют такое прекрасное мышление как у Вас. Это я вам как Маркетолог говорю. nazarpunk:
udg_Temp не логическая, а boolexpr. От использования которых лучше отказаться.
Если это просто придирка к фразе "логическая" - то считаю она неуместна. Ибо я заранее уже извинился за свое толкование. nazarpunk:
Все области лежат в переменных. Проще всего на гуй сделать триггер с нужной областью, превратить в текст и скопировать переменную.
При том что я не великий пользователь редактора (повторяюсь уже 2/3 раз) - я попытался понять о чем вы с затруднением.
Я уже указывал область через гуи "gg_rct_...". Но область у меня записывается в переменную, а не ранее созданная на карте. И я также указывал "udg_newpoint" Вместо "mapInitialPlayableArea". Триггер не выполнял поиск по новой области. nazarpunk:
Можно же просто открыть первое попавшееся заклинание и посмотреть, как там перебирают юнитов.
Посмотрел, ситуация в том что эта способность вообще не задействует "GroupEnumUnitsInRect". А задействует другие функции. Это если мы продолжаем придираться к мелочам.
Но, заранее вам дам ответ на ваше следующее сообщение "Сложно посмотреть нотацию по другим функциям?" - да как бы не сложно, просто я сюда пришел получить помощь от умных ребят. Дабы закрыть тот момент когда Я САМОСТОЯТЕЛЬНО не могу закрыть этот вопрос долгие часы. Или на данном сайте можно задавать вопросы только "гиппер сложные"?
Такое чувство будто я зарабатываю на хобби, в котором меня ругают что я глуповат -_-"
quq_CCCP, Спасибо, буду пробовать.
Заметил что фатальная ошибка происходит именно в рефордже, уже без лока карты.
Хотя в старом варике стабильно функционирует.
При оптимизаторе, можешь подсказать, там есть раздел в который нужно указать путь к исполняемому файлу (варкрафта).
В старой варке он есть в корневой папке.
В рефордже его нет.
Выходит не страшно, если я буду указывать старую версию для оптимизатора?
Спасибо большое.
Не обращай внимание на хейт. Этот UI для отдельной аудитории, которая тебе благодарна.
Так как не все хотят посвятить жизнь кодингу, но хотят просто на досуге поковырять карту для игру со своим другом/друзьями и все.
Тем самым такой перевод спасает таких как я.
Скорее всего ошибка в формате обьектных данных, в некоторых полях абилок ниче нету, а в рефордже близарды это сломали. Вроде этим страдает ANeg (если у юнита есть не указанные там абилки), так же возможно в каких то абилках заработали поля которые до этого не работали (всякеи аватары, где бафф низя настроить)
Выходит проблема может быть в нестандартных способностях?
Просто у меня их малое количество, я могу попробовать, спасибо.
А другие причины фатальных ошибок не бывает? Я к тому что любая карта из 1.26 должна по сути адекватно запускаться без вылетов на рефордже?
В этом триггере я понимаю что точно идет утечка, из-за случайности.
Просто у этого триггера идет арифметика в таком ключе: Взять 40 процентов из суммы юнитов.
Могу ли я заранее создать переменную с арифметикой? Где возьму сумму из группы юнитов и высчитаю 40%, а после переведу в реальное число и вставлю в bj_randomSubGroupWant?
юзай отдельную функцию что я скинул, мне кажется так удобнее будет, а то какая-то дрисня со склейкой получилась
Кстати, да, она такая упрощенная.
Вместо цифры "4" я могу туда по сути вставить переменную, верно?
И я могу внутри функции перевести переменную из реального в целое, в момент ссылания на переменную?
К примеру так: call GetRandomSubGroupEx( udg_TempGroup[ 0 ], udg_TempGroup[ 1 ], R2I(udg_ANOMABalanceUron_Time_Procent) )
rsfghd, Использовал твои наработки выше и наработки из прошлых советов, в других вопросах.
Я скажу так. Ты монстр, спасибо тебе огромное.
Счетчик вообще не двигается, а мои знания сегодня выросли еще на планку выше, чем за годы!
Сейчас данный триггер отрабатывает как часы и без каких либо утечек.
Также разобрался как в сценарии превратить реальное в целое число. И под себя получилось идеально
Дождусь твоего ответа :) А после закреплю правильный ответ
то есть функция принимает точку, а когда ты указываешь позицию юнита, ты её создаёшь, то есть она тут уже нигде не исчезает как ты видишь, а заодно возвращает ещё одну, новую точку, то есть создаётся по факту 2 точки, одна это позиция юнита, другая это смещение, вот именно смещение ты и присваиваешь и удаляешь в последствии. чтобы исправить это, тебе нужно запеременить позицию юнита, указать её в смещении, а потом уже удалить и позицию, и смещение, выглядит вот так
Да, это я как раз начал понимать (благодаря тебе) когда создавал эту переменную.
Но выстроил иллюзии, что вероятно точка создается одна, а не две.
По этой причине думал ничего не будет страшного. А оказывается все страшно 😄
Выходит я просто должен в 1 переменной указать внутри позицию другой переменной.
А не страшно что у меня указан случайный угол, в момент создания точки со смещением?
да. если, опять же, дружишь с английским, то я думаю mapInitialPlayableArea уже говорит сама за себя (исходная игровая зона карты), то есть по сути вся карта (исключая тёмные края вроде)
а как я могу использовать ВСЮ карту?
call GroupEnumUnitsInRect( udg_TempGroup, bj_mapInitialPlayableArea, udg_TempBlxpr )
Так как bj_mapInitialPlayableArea ссылается на карту, которая игровая. Если правильно понимаю. А мне нужно всю карту захватить.
Ибо иногда Дамми создаются за краем игровой карты. Тем самым я не могу с ними взаимодействовать, если они не в игровой зоне.
Я просто пытаюсь найти фразу для замены "mapInitialPlayableArea"
Можно еще подсказку.
Как провернуть такое же действие, как выше, но с предметами?
У меня просто есть триггер, который берет все предметы на карте и совершает действие:
Условия: (определенный тип)
Действие: Удалить
Возможно, я ошибаюсь, но вдруг это тоже создает утечки
А также, хотел узнать, про счетчик Handle.
Если убрать все утечки, прям все все, цифра счетчика будет возвращаться к первоначальной позиции? Или она будет продолжать расти с каждым запуском триггера?
Я сейчас ломаю голову над данным триггером:
Его задача брать юнитов на карте и совершать действие со случайным из них.
Триггер работает на ура. Но...
По началу счетчик Handle показывает при активации триггера +4/-4 и такие мелкие значения. Отклонения бывают на 1/2 единицы. Вроде бы это норма...
Но после 60-й секунды, когда появляется текстовое уведомление на карте всем игрокам - Счетчик Handle повышается резко на +30/40
А после Каждый раз, когда триггер запускается - идет уже по +12 и спад не появляется, только рост и рост с каждой активацией.
Не могу понять... Почему в начале он показывает рост счетчика в 0, а после 60 секунды рост идет сильный и нет спада.
Проверял триггеры, ничего не работает параллельно с данным триггером (призыва мобов). Также отключал сам триггер с призывом мобов и на 60 секунду, когда появляется текст - счетчик Handle даже не дрогнулся. Также отключал триггер появления текста, просто происходит резкий рост и нет спада... И дальше счетчик увеличивается то на +12/14/20/40/50/
native GroupEnumUnitsInRange takes group whichGroup, real x, real y, real radius, boolexpr filter returns nothing
native GroupEnumUnitsInRangeOfLoc takes group whichGroup, location whichLocation, real radius, boolexpr filter returns nothing
native GroupEnumUnitsInRect takes group whichGroup, rect r, boolexpr filter returns nothing
native GroupEnumUnitsOfPlayer takes group whichGroup, player whichPlayer, boolexpr filter returns nothing
native GroupEnumUnitsOfType takes group whichGroup, string unitname, boolexpr filter returns nothing
native GroupEnumUnitsSelected takes group whichGroup, player whichPlayer, boolexpr filter returns nothing
у некоторых есть аналоги с потолком выбора (кол-ва юнитов)
DestroyGroup( ... ) нужно использовать только если ты постоянно создаёшь группу до этого (в основном это требуется, если ты должен сделать действия с теми же юнитами спустя какое-то время, например выбрать кого-то там в области, наложить эффект, подождать 2 секунды и продамажить), но для темповых действий лучше иметь одну группу и просто очищать её
Еще раз доброго времени суток :)
Главный хранитель этого ресурса хд
Спасибо большое за ответ.
Хотел уточнить:
Я правильно понимаю, я могу заранее через действие "Отряд выбрать каждого с условиями совпадения" записать позиции(точку) в переменную типа "точка". А после взаимодействовать с ней и далее очистить ее. Тем самым я освобождаю память?
И еще, извините за свою любознательность.
call GroupEnumUnitsInRect( udg_TempGroup, bj_mapInitialPlayableArea, udg_TempBlxpr )
Эта функция записывает всех юнитов в группу TempGroup, которые совпадают выше условиями из переменной TempBlxpr, на всей карте mapInitialPlayableArea?
Выходит я могу менять условия и тип юнита/игрока в переменной TempBlxpr?
А если я сделаю через действие "Отряд выбрать каждого с условиями совпадения" и запишу юнитов в группу TempGroup - память в этом случае забивается? Если да, то как?
Это конечно жестоко, в плане того что необходимо каждую функцию прописывать после каждого совершенного действия, для того чтобы отследить на какой последовательности триггер дал отбой.
Спасибо, что на голом энтузиазме проявили желание переработать код на джасс.
Я думаю что это уже является ответом, ибо благодаря вам понял что подобная тема сложна в отслеживании.
Также, благодаря вам понял что такое оптимизация и как она важна.
Раньше упрощал триггер, думал что это оптимизация, теперь понимаю что это только 1% из всего понимания.
угум, прям во все триггеры после каждой функции, я попробовал перевести это на нормальный джасс но это дичь какая-то, мне больно(
Вот и я о том же, типа вставить этот код в 100 триггеров, но это слишком сильно.
Так или иначе спасибо большое за помощь.
Видимо мой вопрос так и не закроется :( я думал что в комьюнити нашем есть ребята, которые знают как отследить логи
zpxo, я не знаю работает или нет, я мигом посмотрел код представленный из самого вопроса и понял принцип работы, всё
там собственно и код не нужно было смотреть, всё в описании расписано
я могу попробовать разобрать или даже перевести на обычный джасс чтобы ты мог пользоваться но честно говоря желания особо и нет
из-за того что там сджасс, ненавижу эту штуку
Да, конечно, я понимаю. По этой причине пытаюсь только получить от Вас информацию и все)
А вот касательно момента связанного "все в описании расписано" - я как раз встал в ступор от фраз:
"ты вставляешь этот код ВЕЗДЕ во всех функциях" - Не могу понять, в каждый триггер мне вставлять этот код? Или о каких функциях идет речь?
"доводишь до рабочего состояния, чтобы ошибок не выходило" - Не могу понять в каких местах нужно "довести до рабочего". Ибо я ели как понимаю сам код, а тут еще его нужно адаптировать под меня :с
Я просто при всем своем желании сидел несколько часов и ковырялся, пробовал, тыкал, изучал. Но тщетно...
вероятно потому что ты просто не включил вджасс с сджассом либо не дал скомпилироваться карте посредством сохранения (иногда нужно 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`)
}
}
На просторах интернета также нашел исходный код. Но не понимаю для чего он нужен и поможет ли он мне отследить фатальную ошибку с триггерами (когда там пишут про джас).
zpxo, успокойся, не спеши с благодарностями пока это реально не поможет решить проблему, если же всё окей то просто закрой вопрос
Сейчас карту тестил и произошел вновь фатал. Который сработал теперь в другом временном событии. (Который указал в шапке вопроса - там в другое время произошел сбой).
Счетчик показывал 7к+ и микролагов не было, после удаления спецэффектов.
Теперь сижу и ковыряю триггеры, ибо приблизительно понимаю в какой этап произошел фатал...
Думаю это из-за того что 1 триггер не отработал как следует свои действия в середине карты (микробаг, который я, наверное, совершил при написании триггера).
Сейчас буду смотреть, но если есть возможность разобрать лог и сказать где "пробел" - буду признателен.
Спасибо, что-то не доперло сразу, что я могу внутри данного действия использовать арифметику с "+1".
Ведь это 100% дает возможность удалить эффекты которые были записаны ранее.
Это ведь правда круто!
нет, это мало, имей ввиду, хэндлы это юниты, разрушаемые декорации (деревья, баррикады), предметы, это всё не утечки само собой потому что используется всю игру, юниты и предметы удаляются при уничтожении спустя время (с рунами только беда может быть)
Спасибо большое Вам за помощь!
За уделенное время! Очень приятно что в наше время можно встретить хороших людей.
Спасибо, что помогли объяснить где может быть проблема и как её исключить методом оптимизации.
ладно, тот периодичный эффект что ты накладываешь на всех юнитов он одинаковый или для каких-то отличается? можно просто в массив все эффекты записать, запустить таймер и через время пройтись по ним и удалить, но если время разное, то вероятно придётся с периодиком запускать с указанием времени анимации
Действие "Выбрать каждого юнита..." совершает действия в том количестве - сколько юнитов выбрано.
Я там просто логически не могу понять как их всех засунуть в массив переменной с типом "Спецэффект". Ибо он не меняет цифру массива, а просто перезаписывает каждый раз переменную с выбором каждого юнита. 😬
и ещё, микрофриз происходит прям в самом начале игры или спустя какое-то время?
Спустя некоторое время. Но я думаю это происходит из-за того что Вы писали выше.
Так как у меня много триггеров связано было с созданием спецэффекта на юните. Без удаления.
Поэтому я сейчас переиграл этот момент. Буду наблюдать.
1 пункт: 10.1 Размещение нескольких вопросов в одном ресурсе.
Извините заранее за нарушение пункта 10.1.
Но, вопрос по сути один, просто он разделен на 2 подпункта связанные между собой.
Лог + дебаг + счетчик хэндов = одна суть, в решении проблемы моей.
ну тебе джнгп так-то нужен, это модифицированный редактор со снятыми лимитами и прочими ништячками, там с кодом намного удобнее работать и соответственно есть нужные диалекты, а вообще, я могу просто переписать тот код на обычный джасс, но тогда тебе нужно будет пару переменных создать и гуишный триггер
По ссылке там 1.28 версии и 1.27 версии.
А я карту делаю на версию 1.26а - Редактор из раздела "1.27 и ниже экспериментальная сборка" будет работать с моей версией?
Если Вам не сложно я был бы рад получить от Вас тот код в джасс и краткую инструкцию по установке.
ну сек, для начала попробуй такую конструкцию, если эффект не исчезает с юнитов сразу же как накладывается (то есть что ты вообще его видишь), то всё норм, но бывает так, что уничтожение эффекта не даёт последнему проиграть анимку
Да, забыл написать. Я попробовал данный метод и вспомнил почему его не использовал. Ибо он сразу уничтожает анимацию, она только начинает воспроизведение и сразу удаляет ее из игры. Тем самым спецэффект не успевает толком воспроизвестись. А ожидание (wait) я туда не могу вставить, ибо через действие "Выбрать каждого..." ожидание не работает. 😰
zpxo, ну сек, для начала попробуй такую конструкцию, если эффект не исчезает с юнитов сразу же как накладывается (то есть что ты вообще его видишь), то всё норм, но бывает так, что уничтожение эффекта не даёт последнему проиграть анимку
если ты создаёшь эффект в позиции юнита, а не на самом юните, то позицию тоже нужно переменить, создавать в ней, а потом удалять кастомскриптом вместе с эффектом
(либо просто вджасс, если обернёшь таблицу рекордов в globals endglobals)
Спасибо, сегодня/завтра попробую.
Вопрос: А если я создам анимацию через способность (каст именно), вместо триггера. Будет ли засорять такая анимация память? Я думаю что эффекты из способностей самостоятельно удаляются по завершению? Или они привязаны к какой-то длительности? К примеру "Длительность воздействия на юнита".
Извините за мою наглость, но я овощ в коде(
А можно инструкцию как вджасс открыть? У меня просто редактор о.о
zpxo, эффект никуда не пропадает по окончании анимации, лол, ты же когда юниту задаёшь какую-то анимацию он же не исчезает из игры по окончании? его нужно удалить, отрицательный реген нормально, желательно ещё убрать разлагаемость/воскрешение если ты оставил
счётчик хэндлов это просто 50 строк кода, достаточно в шапку карты закинуть если вджассом пользуешься
в варе есть локальные и глобальные, вероятно локальными ты не пользовался так что можешь забить, их отличие в том, что используются в пределах своей функции, а глобалки везде, только вторые всё равно перезапишутся в последствии, а первые нужно обнулять
вероятно у тебя спецэффекты и текут, если ты не удаляешь их
Я ели как нашел этот код, но мне кажется он неверный, либо я что-то не то делаю.
Он при инсталляции выдает кучу неверных строк и отключает триггер.
Касательно эффектов, а как его можно удалить/записать? Если эффект накладывается через функцию "Выбрать каждого юнита и совершить действие". Ибо я не могу взять и записать все эффекты в 1 переменную. А уничтожаю только последнюю созданную :( по логике варика последняя созданная - это именно последняя созданная
Спасибо за объяснения, уже стало более что-то понятное :)
Но я все же остался в тупике хд
» WarCraft 3 / call GroupEnumUnitsInRect - Помогите внести корректив в сценарий
Спасибо ОГРОМНОЕ за помощь! Все разжевали и показали. Как по мне проделана большая работа!
Не ожидал такой обратной связи) С утра встал и залип на час)
» WarCraft 3 / call GroupEnumUnitsInRect - Помогите внести корректив в сценарий
Хотя если я не использую call GroupEnumUnitsInRect и использую простое действие - то все работает.
Но даже этот вырванный не работает. (событие Каждые 10 сек)
» WarCraft 3 / call GroupEnumUnitsInRect - Помогите внести корректив в сценарий
Я читал аннотацию, читал вики по JASS, но есть люди, которые не имеют такое прекрасное мышление как у Вас. Это я вам как Маркетолог говорю.
nazarpunk:
nazarpunk:
nazarpunk:
Я уже указывал область через гуи "gg_rct_...". Но область у меня записывается в переменную, а не ранее созданная на карте. И я также указывал "udg_newpoint" Вместо "mapInitialPlayableArea". Триггер не выполнял поиск по новой области.
nazarpunk:
Но, заранее вам дам ответ на ваше следующее сообщение "Сложно посмотреть нотацию по другим функциям?" - да как бы не сложно, просто я сюда пришел получить помощь от умных ребят. Дабы закрыть тот момент когда Я САМОСТОЯТЕЛЬНО не могу закрыть этот вопрос долгие часы. Или на данном сайте можно задавать вопросы только "гиппер сложные"?
Такое чувство будто я зарабатываю на хобби, в котором меня ругают что я глуповат -_-"
» WarCraft 3 / Как лочить карту, дабы она не крашилась в Reforged?
Заметил что фатальная ошибка происходит именно в рефордже, уже без лока карты.
Хотя в старом варике стабильно функционирует.
В старой варке он есть в корневой папке.
В рефордже его нет.
Выходит не страшно, если я буду указывать старую версию для оптимизатора?
» WarCraft 3 / Русификатор редактора карт Warcraft 3 Reforged
Не обращай внимание на хейт. Этот UI для отдельной аудитории, которая тебе благодарна.
Так как не все хотят посвятить жизнь кодингу, но хотят просто на досуге поковырять карту для игру со своим другом/друзьями и все.
Тем самым такой перевод спасает таких как я.
» WarCraft 3 / Как лочить карту, дабы она не крашилась в Reforged?
Ред. zpxo
» WarCraft 3 / Как лочить карту, дабы она не крашилась в Reforged?
Просто у меня их малое количество, я могу попробовать, спасибо.
Я к тому что любая карта из 1.26 должна по сути адекватно запускаться без вылетов на рефордже?
» WarCraft 3 / Как написать код без утечек, для 1 триггера
Ред. zpxo
» WarCraft 3 / Как написать код без утечек, для 1 триггера
Могу ли я заранее создать переменную с арифметикой? Где возьму сумму из группы юнитов и высчитаю 40%, а после переведу в реальное число и вставлю в bj_randomSubGroupWant?
К примеру так: call GetRandomSubGroupEx( udg_TempGroup[ 0 ], udg_TempGroup[ 1 ], R2I(udg_ANOMABalanceUron_Time_Procent) )
» WarCraft 3 / Как написать код без утечек, для 1 триггера
Я скажу так. Ты монстр, спасибо тебе огромное.
Счетчик вообще не двигается, а мои знания сегодня выросли еще на планку выше, чем за годы!
Сейчас данный триггер отрабатывает как часы и без каких либо утечек.
Также разобрался как в сценарии превратить реальное в целое число. И под себя получилось идеально
Ред. zpxo
» WarCraft 3 / Как написать код без утечек, для 1 триггера
Но выстроил иллюзии, что вероятно точка создается одна, а не две.
По этой причине думал ничего не будет страшного. А оказывается все страшно 😄
Рандомный выбор именно утекает? Или любая работа со случайностью?
К примеру случайный угол, случайное число.
» WarCraft 3 / Как написать код без утечек, для 1 триггера
Ред. zpxo
» WarCraft 3 / Как написать код без утечек, для 1 триггера
call GroupEnumUnitsInRect( udg_TempGroup, bj_mapInitialPlayableArea, udg_TempBlxpr )
Ибо иногда Дамми создаются за краем игровой карты. Тем самым я не могу с ними взаимодействовать, если они не в игровой зоне.
Я просто пытаюсь найти фразу для замены "mapInitialPlayableArea"
Как провернуть такое же действие, как выше, но с предметами?
У меня просто есть триггер, который берет все предметы на карте и совершает действие:
Триггер работает на ура. Но...
По началу счетчик Handle показывает при активации триггера +4/-4 и такие мелкие значения. Отклонения бывают на 1/2 единицы. Вроде бы это норма...
А после Каждый раз, когда триггер запускается - идет уже по +12 и спад не появляется, только рост и рост с каждой активацией.
Не могу понять... Почему в начале он показывает рост счетчика в 0, а после 60 секунды рост идет сильный и нет спада.
Также отключал триггер появления текста, просто происходит резкий рост и нет спада... И дальше счетчик увеличивается то на +12/14/20/40/50/
» WarCraft 3 / Как написать код без утечек, для 1 триггера
Главный хранитель этого ресурса хд
call GroupEnumUnitsInRect( udg_TempGroup, bj_mapInitialPlayableArea, udg_TempBlxpr )
» WarCraft 3 / Можете помочь разобрать Лог Фатальной ошибки (Fatal error)
Я думаю что это уже является ответом, ибо благодаря вам понял что подобная тема сложна в отслеживании.
Раньше упрощал триггер, думал что это оптимизация, теперь понимаю что это только 1% из всего понимания.
» WarCraft 3 / Можете помочь разобрать Лог Фатальной ошибки (Fatal error)
Так или иначе спасибо большое за помощь.
Видимо мой вопрос так и не закроется :( я думал что в комьюнити нашем есть ребята, которые знают как отследить логи
Ред. zpxo
» WarCraft 3 / Можете помочь разобрать Лог Фатальной ошибки (Fatal error)
"ты вставляешь этот код ВЕЗДЕ во всех функциях" - Не могу понять, в каждый триггер мне вставлять этот код? Или о каких функциях идет речь?
"доводишь до рабочего состояния, чтобы ошибок не выходило" - Не могу понять в каких местах нужно "довести до рабочего". Ибо я ели как понимаю сам код, а тут еще его нужно адаптировать под меня :с
» WarCraft 3 / Можете помочь разобрать Лог Фатальной ошибки (Fatal error)
Вы можете мне помочь в установке дебага в карту? И объяснить работает он сам или нужно его активировать или как?
Ред. zpxo
» WarCraft 3 / Можете помочь разобрать Лог Фатальной ошибки (Fatal error)
Если бы я знал как расшифровать лог ошибки - была бы новая информация о том что происходит.(((
В новом редакторе, который вы посоветовали - я его устанавливаю, но все равно получаю ошибки из самого кода дебага, при инициализации.
» WarCraft 3 / Можете помочь разобрать Лог Фатальной ошибки (Fatal error)
Счетчик показывал 7к+ и микролагов не было, после удаления спецэффектов.
Думаю это из-за того что 1 триггер не отработал как следует свои действия в середине карты (микробаг, который я, наверное, совершил при написании триггера).
Сейчас буду смотреть, но если есть возможность разобрать лог и сказать где "пробел" - буду признателен.
» WarCraft 3 / Можете помочь разобрать Лог Фатальной ошибки (Fatal error)
Ведь это 100% дает возможность удалить эффекты которые были записаны ранее.
Это ведь правда круто!
За уделенное время! Очень приятно что в наше время можно встретить хороших людей.
Спасибо, что помогли объяснить где может быть проблема и как её исключить методом оптимизации.
Ред. zpxo
» WarCraft 3 / Можете помочь разобрать Лог Фатальной ошибки (Fatal error)
Я там просто логически не могу понять как их всех засунуть в массив переменной с типом "Спецэффект". Ибо он не меняет цифру массива, а просто перезаписывает каждый раз переменную с выбором каждого юнита. 😬
Так как у меня много триггеров связано было с созданием спецэффекта на юните. Без удаления.
Поэтому я сейчас переиграл этот момент. Буду наблюдать.
Ред. zpxo
» WarCraft 3 / Можете помочь разобрать Лог Фатальной ошибки (Fatal error)
Но, вопрос по сути один, просто он разделен на 2 подпункта связанные между собой.
Лог + дебаг + счетчик хэндов = одна суть, в решении проблемы моей.
А я карту делаю на версию 1.26а - Редактор из раздела "1.27 и ниже экспериментальная сборка" будет работать с моей версией?
» WarCraft 3 / Можете помочь разобрать Лог Фатальной ошибки (Fatal error)
А можно инструкцию как вджасс открыть? У меня просто редактор о.о
» WarCraft 3 / Можете помочь разобрать Лог Фатальной ошибки (Fatal error)
Он при инсталляции выдает кучу неверных строк и отключает триггер.
Но я все же остался в тупике хд