XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
В чем проблема? О.о vJass
Вобщем vJass мне здесь нужен был лишь для того, чтобы избавиться от проблем с повторяющимися именами функций, но не в этом суть. Сут ьв том, что после 4-5 использований спела игра начинает ЖУТКО тормозить..почему?

Код:
scope MoveInTime initializer Init

    private function MoveInTime_cond takes nothing returns boolean
    return GetSpellAbilityId()=='A093'
    endfunction
    
    private function MoveInTIme_actions takes nothing returns nothing
        local unit d 
        local unit targ = GetSpellTargetUnit()
        local unit u = GetTriggerUnit()
        local location loc=GetSpellTargetLoc()
        local real x = GetLocationX(loc)
        local real y = GetLocationY(loc)
            if targ != null then
                if IsUnitAlly(targ,GetOwningPlayer(u)) then
                    set d=CreateUnit(GetOwningPlayer(u),'o005',x,y,0)
                    call UnitAddAbility(d,'A091')
                    call SetUnitAbilityLevel(d,'A091',GetUnitAbilityLevel(u,'A093'))
                    call IssueTargetOrder(d,"slow",targ)
                    call UnitApplyTimedLife(d, 'BTLF', 0.5)
                else
                    set d=CreateUnit(GetOwningPlayer(u),'o005',x,y,0)
                    call UnitAddAbility(d,'A090')
                    call SetUnitAbilityLevel(d,'A090',GetUnitAbilityLevel(u,'A093'))
                    call IssueTargetOrder(d,"slow",targ)
                    call UnitApplyTimedLife(d, 'BTLF', 0.5)
                endif
            else
                call SetUnitPosition(u,x,y)
                set d=CreateUnit(GetOwningPlayer(u),'o005',x,y,0)
                call UnitAddAbility(d,'A091')
                call SetUnitAbilityLevel(d,'A091',GetUnitAbilityLevel(u,'A093'))
                call IssueTargetOrder(d,"slow",u)
                call UnitApplyTimedLife(d, 'BTLF', 0.5)
            endif
        call RemoveLocation(loc)
        set loc=null
        set u = null
        set targ = null
        set d=null
    endfunction
    
    private function Init takes nothing returns nothing
    local trigger trg = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(trg, EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerAddAction(trg,function MoveInTIme_actions)
    call TriggerAddCondition(trg,Condition(function MoveInTime_cond))
    endfunction
endscope

Отредактировано Артте, 11.03.2009 в 22:33.
Старый 11.03.2009, 22:07
9thNerZul
forum/warcraft3
offline
Опыт: 4,869
Активность:
Ну для начала TriggerRegisterAnyUnitEventBJ,
GetUnitAbilityLevelSwaped, тоже bj(если не ошибаюсь)
Старый 11.03.2009, 22:13
akkolt

offline
Опыт: 13,826
Активность:
хмм... если пробежаться глазами, уже видно 2 небольших утечки - x и y, хотя они не должны вызвать жутких лагов
Старый 11.03.2009, 22:15
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
и bj и что? я знаю что они bj. ты, однако, не по делу написал

Артте добавил:
akkolt
они же "риал" типа. их обнулять не надо
Старый 11.03.2009, 22:15
akkolt

offline
Опыт: 13,826
Активность:
Я конечно давно этим не занимался, но насколько я помню - переодически заполняющаяся локалка без обнуления = утечко...
Старый 11.03.2009, 22:19
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
нету периода. интеджер и риал обнулить нельзя..можно приравнять к нулю
Старый 11.03.2009, 22:19
akkolt

offline
Опыт: 13,826
Активность:
Артте, я о том же... ну в принципе этого мало для жутких лагов...
Старый 11.03.2009, 22:20
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
после 4-5 раза игра начинает идти с фпс 1-2
Старый 11.03.2009, 22:24
9thNerZul
forum/warcraft3
offline
Опыт: 4,869
Активность:
А зачем ты сначала вычисляешь лок(позицию юнита) а потом берешь ее х и у. А сказал я именно к теме так, как большинство bj вызывают утечки.
Старый 11.03.2009, 22:24
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
затестил бы, раскрыл бы эти BJ а потом говорил бы про утечки

Артте добавил:
вот так вот..немного упростил..лаги остались
Старый 11.03.2009, 22:27
ScorpioT1000
Работаем
offline
Опыт: отключен
не слушай аккольта про реалы
Цитата:
GetSpellTargetLoc()

не удаляется точка
Старый 11.03.2009, 22:31
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
ну..вернул как было=)
Старый 11.03.2009, 22:31
akkolt

offline
Опыт: 13,826
Активность:
ScorpioT1000, ну ладно.. не слушай меня... T_T
Хоть у меня они и вызывали жуткие лаги...
Старый 11.03.2009, 22:34
ScorpioT1000
Работаем
offline
Опыт: отключен
а ордеры пробовал закоментить?

ScorpioT1000 добавил:
akkolt, реал, инт и бул - стандартные неизменные типы и к ним нету хендлов, следовательно они удаляются по окончанию времени жизни
Старый 11.03.2009, 22:38
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
ScorpioT1000
не помогает...
Старый 11.03.2009, 22:42
akkolt

offline
Опыт: 13,826
Активность:
Ну... я конечно могу и ошибаться, но у меня создалось впечатление, что они живут до конца игры...
Хотя это только мое имхо...
Старый 11.03.2009, 22:43
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
rofl,отключил триггер-лаги все-равно есть...
Старый 11.03.2009, 22:45
FaB0SS

offline
Опыт: 2,504
Активность:
Знач утечка не тут =)
Старый 11.03.2009, 22:58
ScorpioT1000
Работаем
offline
Опыт: отключен
Т_Т
Старый 11.03.2009, 23:07
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
абилки на основе канала-лучшие абилки. остальное-глючные фекалии
Старый 11.03.2009, 23:10
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 09:25.