Заклинание состоит из 4 триггеров (не считая стартового) 1 создает в позиции героя(Point[1]) столько даммиков, сколько есть врагов в группе (Targets все юниты в радиусе 450 без баффа кандалыи не являющимися союзниками castera) и заносит даммиков в группу .Переодический каждые 0.10 секунд, в конце трига присутствуют call RemoveLocation(udg_Point[1]) и call DestroyGroup(udg_Targets) 2 проверяет, есть ли на кастере бафф заклинания, и если нет идет выключение всех тригов и обнуление всех переменных(Всех, которые используются) 3.Переодически выбирает всех дамми в группе даммиков и делает: call SetUnitX (( GetEnumUnit() ), (GetUnitX (udg_Caster2))) call SetUnitY (( GetEnumUnit() ), (GetUnitY (udg_Caster2))) Группа потом обнуляется 4. Проверяет, применяет ли даммик способность и если нет, то удаляет его из группы и из игры.
Проблема в том, что при применении (заклинание дейстыует 20 сек) Постепенно наращиваются БЕШЕННЫЕ лаги, такие, что вар просто вылетает. Почему так? Все утечки я устраняю, а jass их и не вызывает (3 триг). Но откуда тогда лаги? Даже если врагов штук 5, всеравно лаги бешеные. Обьясните мне, пожалуйста)
function Trig_BloodDummyMove_Actions takes nothing returns nothing call ForGroupBJ( udg_Dmmy, function Trig_BloodDummyMove_Func001A ) endfunction
//=========================================================================== function InitTrig_BloodDummyMove takes nothing returns nothing set gg_trg_BloodDummyMove = CreateTrigger( ) call DisableTrigger( gg_trg_BloodDummyMove ) call TriggerRegisterTimerEventPeriodic( gg_trg_BloodDummyMove, 0.05 ) call TriggerAddAction( gg_trg_BloodDummyMove, function Trig_BloodDummyMove_Actions ) endfunction
Добавлено (28-10-2010, 20:46) --------------------------------------------- Единственное, что уменьшает лаги (немного) это вот такая команда: call DoNotSaveReplay() Но все равно, заклинание лагает, пусть игра и не вылетает
Vova5009, попробуй сделать проверку удаляются ли дамми из игры, поставь им модельку и проюзай спел, это очень хорошо помогает выявить некоторые ошибки и утечки с использованием дамми.
вместо ForGroupBJ, используй просто ForGroup() , и зачаем вообще собственно нужен 2 триггер? и почему их столько?
DarkVader, Я сделал проверку, удаляются. Спелл создает вокруг героя щит, который Захватывает в кандалы всех вокруг вокруг героя с эффектом молнии) 2 триг нужен для того, чтобы перемешать кастующих даммиков в позицию героя, перемещает их по Х и у, они не прекращают каст. А их столько, потому что мне удобнее редактировать их каждый по отдельности)
По поводу 3 триггера, не проще ли сразу добавлять юнитов в группу только тех которые не имеют опредленного бафа, почему цель приказа случайный юнит из группы а не выбранный юнит? функция через которую ты создаешь дамми оч плохая функция=(
и по 5 триггеру нет разрушения группы дамми через кастом скрипт
во 2 поменяй ForGroupBJ на ForGroup
а вообще лучше спел сделать на jass, и лагов точно не будет к тому же все поместится в один триггер
Добавлено (29-10-2010, 00:50) --------------------------------------------- вот посмотри как выглядит функция через которую ты создаешь дамми
Code
function CreateNUnitsAtLoc takes integer count, integer unitId, player whichPlayer, location loc, real face returns group call GroupClear(bj_lastCreatedGroup) loop set count = count - 1 exitwhen count < 0 call CreateUnitAtLocSaveLast(whichPlayer, unitId, loc, face) call GroupAddUnit(bj_lastCreatedGroup, bj_lastCreatedUnit) endloop return bj_lastCreatedGroup endfunction
она мало того выполняет бесполезные действия, но еще и по ходу утечна...
попробуй вместо нее кастом скриптом вставить CreateUnitAtLoc или просто CreateUnit но она по координатам