Я около 5 лет не занимался своей картой, но сегодня пришло озарение и я сделал несколько систем. После чего обнаружил, что все триггеры не работают на карте, и выключение новых так же не помогло, только бекап. Слеплено все нормально на гуи + кс.
В общем-то вопрос - есть ли какое-то ограничение по кол-ву триггеров или возможно чего-то другого? сейчас в карте 25к декораций, чуть меньше 300 триггеров, около 2к нестандартных предметов.
Помню, что раньше похожая проблема была - вроде бы при достижении определенного числа триггеров они все выключались, и ничего кроме бекапа не спасало.
Редактор jnpg и полный обвес на него присутствует.
Есть ограничения, или совпадение? Прошлого случая четко не помню.

Принятый ответ

Есть лимит на кол-во операций. Вы не 1 такой гуишник, уменьшайте число триггеров, покрайней мере со стандартной инициализацией.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
32
7 лет назад
Отредактирован quq_CCCP
0
Есть лимит на кол-во операций. Вы не 1 такой гуишник, уменьшайте число триггеров, покрайней мере со стандартной инициализацией.
Принятый ответ
0
26
7 лет назад
Отредактирован 8gabriel8
0
У меня бывало, что вдруг импортированные модели перестают загружаться. То есть с моделью произвели какие-то изменения, она работала, но после некоторого времени перестала загружаться и в редакторе, и в игре. Вроде как помогает удаление всего импорта и его загрузка по новой. Может быть тут аналогичный случай?
Но только такое копирование может привести к обрезанию реплик в триггерах, если они есть. Тут, наверное, влияет раскладка клавиатуры при копировании. Если, например, скопировать русский текст с английской раскладкой, то на выходе получается белиберда, а с русской нормально. Также русский символ занимает обычно вдвое больше места, чем английский, может быть поэтому длинные реплики при копировании укорачивает.
0
18
7 лет назад
0
Неоднократно проходила информация об ограничении количества действий в триггере, (а не об ограничении количества триггеров)
1
32
7 лет назад
1
dave_wwid, не в триггере а в потоке, 30000 операций лимит в потоке.
Из за того что в гуи все созданные триггеры имеют функцию инициализации, функция инициализации всех этих триггеров настолько забита действиями что упирается в лимит.
0
18
7 лет назад
Отредактирован dave_wwid
0
Как я понимаю, при инициализции количество триггеров не должно превышать 30000 (предположив гипотетически, что других действий при инициализации не выполняется) А изначально выключенные триггеры разве тоже инициализируются?
Если нет, то было-бы логично сделать дополнительный триггер для запуска нескольких сотен( или тысяч) других триггеров.
0
32
7 лет назад
0
dave_wwid:
Как я понимаю, при инициализции количество триггеров не должно превышать 30000 (предположив гипотетически, что других действий при инициализации не выполняется) А изначально выключенные триггеры разве тоже инициализируются?
Если нет, то было-бы логично сделать дополнительный триггер для запуска нескольких сотен( или тысяч) других триггеров.
совершенно нет, это не значит что 1 функция это 1 действие.
0
18
7 лет назад
0
ОК, а как все-таки насчет изначально выключенных триггеров? Ибо для меня тоже очень важен этот вопрос.
1
32
7 лет назад
1
dave_wwid, вовсе существующих, включен или не выключен не важно, для каждого триггера вызывается функция его создания, добавления в него условий действий и событий.
Нужно не плодить триггеры бездумно, 300 триггеров это явно перебор, пишите на jass. Там вам не понадобится плодить триггеры, да и вовсе плодить по 4-5 триггеров для каждого героя не умно, долго и нефига неудобно.
1
28
7 лет назад
Отредактирован nvc123
1
quq_CCCP, вроде 10000 а не 30000 (если меня память не подводит)
dave_wwid, кроме самой инициализации триггеров этот же поток занимается и другими вещами
создание юнитов и предметов на карте
инициализация начальных значений переменных(если в редакторе переменный у переменной стоит начальное значение отличное от "нет"/"0")
инициализация некоторых параметров карты(InitBlizzard и прочее)
т.е. сумма всего этого не должна превышать лимит потока
для сложной карты надо не более 10-15 триггеров
у гуишников не более 50(т.к. на гуи иначе никак)
если знаешь vjass то лучше создавать триггеры внутри библиотек(т.к. инициализация библиотеки идёт в отдельном потоке)
для всех заклинаний можно использовать 1 триггер с бд (недавно задавали вопрос на эту тему)
0
32
7 лет назад
0
Тут дело в том что это действия не в jass коде а в jass машине, хз как там будет каждая функция разбавится.
0
28
7 лет назад
0
quq_CCCP, большинство нативных функций атомарно и считается как 1 операция
по крайней мере они занимают ровно столько же операций как и вывод текста на экран
0
32
7 лет назад
0
nvc123, кто же там проверял сколько пустой цикл выполнится, 5000 раз чтоли он выполнялся...
1
28
7 лет назад
Отредактирован nvc123
1
quq_CCCP, я проверял)
сейчас поищу старые результаты
quq_CCCP, память меня подвела
этот код заканчивается на выводе 14999
function Trig___________________________u_Actions takes nothing returns nothing
    local integer i=0
    local player p=GetLocalPlayer()
    loop
        call DisplayTextToPlayer( p, 0, 0, I2S(i))
        set i=i+1
    endloop
endfunction
этот же код но с проверкой exitwhen i==-1 заканчивается на выводе 11110
function Trig___________________________u_Actions takes nothing returns nothing
    local integer i=0
    local player p=GetLocalPlayer()
    loop
        call DisplayTextToPlayer( p, 0, 0, I2S(i))
        set i=i+1
        exitwhen i==-1
    endloop
endfunction
этот же код на дублированным выводом заканчивается на выводе 9090
function Trig___________________________u_Actions takes nothing returns nothing
    local integer i=0
    local player p=GetLocalPlayer()
    loop
        call DisplayTextToPlayer( p, 0, 0, I2S(i))
        call DisplayTextToPlayer( p, 0, 0, I2S(i))
        set i=i+1
    endloop
endfunction
0
18
7 лет назад
0
Надо полагать что при инициализации триггеры грузятся последними (после объектов констант и переменных) и поэтому проблема возникает именно с ними? Система работающая на недекорированной полупустой карте может слететь после доработки декора?
0
28
7 лет назад
Отредактирован nvc123
0
dave_wwid, декор не создаётся триггерно
только юниты и предметы
ну ещё и переменные
только чтобы забить поток нужно создать очень много юнитов(более 10000)
триггеров же нужно намного меньше
0
29
7 лет назад
0
По-моему там не по операциям вообще было а по количеству байт переданному в жасс машину, видел на хайве что-то такое.
В любом случаё все правда, 300 триггеров это гораздо больше чем может быть ивентов в приницпе, пишите свою функцию инита или типа того.
0
16
7 лет назад
0
ограничение на количетсво операций для виртуальной машины жасса. вам знать детали ни к чему. просто ставь BJDebugMsg или любой другой трекер в конце функции, чтобы знать, что она полностью выполнилась, если боишься, что слишком большая.
Декор создается через функцию жасса, но т.к. по умолчанию он идет в отдельном файле, то и в общем подсчете лимита в main он не участвует, ибо вызывается в другом "потоке".
0
28
7 лет назад
0
а переменные массивы у которых в редакторе переменных указан большой размер тратят ещё больше операций
0
16
7 лет назад
0
nvc123:
а переменные массивы у которых в редакторе переменных указан большой размер тратят ещё больше операций
только на инициализацию
0
28
7 лет назад
0
DracoL1ch, ну так речь про главный поток идёт в котором и проходит инициализация
Чтобы оставить комментарий, пожалуйста, войдите на сайт.