Пушистый, Фатал происходит не из-за юнита, а из-за функций GetUnitGoldCost() и GetUnitWoodCost().
Вернее когда этот юнит и эти функции встречаются с друг другом
.
Вызываем этот код пред созданием героя, чуствуем просадку фпс, побегали, покастовали спеллы (вейт нужно подольше). Идем смотреть что в текстовик сохранилось, там будет полный список того что загружал движок.
Затем Preloader("save//mydata.pld") - это вызов этого скрипта, который загрузит в память все что указанно в этом скрипте.
Это используется в кампаниях.
Понял, почему не работало. Нужно писать "save\\mydata.pld"
либо просто дай скиллу 0.01 сек длительности что на много проще
но всё же не проффитно, т.к. это целых 0.01 сек действия эффекта... или пофиг?
На деле на юните бафф даже не успевает появится, но, да действительно, 0.01 непозволительно для меня. Хз почему, я даже выставляю боевой единице урон, скорость атаки и т.д. на 0, даже если выключу атаку:
Diaboliko, да, именно так я понял, что бафф не успевает наложится. Придётся делать через отлов урона.
pro100master, зачем какой-то массив, если источник урона GetEventDamageSource( ) и есть тот, кто наложил бафф?
Steal nerves, благодарю. Жаль, что не работает с несколькими работниками на одного игрока. выбрал бы 8gabriel8'a, т. к. он первый предложил; но Steal nerves сделал ещё и пример.
Я не об этом, даже если поставить 0.01 ваша система начнет генерировать регион не во время инициализации карты, а только после того, как пройдет 0.01 сек. Если после генерации региона, все триггеры связанные с ним обновятся, то вопросов нет.
Если зарегистрировать событие на вход в воду еще до инициализации системы, то когда система будет готова к использованию, триггер обновится или останется с недоднланным регионом?
8gabriel8, функция DoNothing( ) не имеет тела, т. е. ничего не делает. Так зачем вызывать функцию, которая ничего не делает, если можно и так ничего не делать. -) Под ничего не делать я имел ввиду не вызвать эту функцию.
Если вы создаёте кампании и не беспокоитесь об утечках, то в этом нет ничего плохого.
PT153, а что насчёт function interface?
Написал следующий код для себя, подглядывая сюда:
код:
function interface callback takes integer this returns nothing defaults nothing
module linkedList
private static timer period = null
private thistype prev
private thistype next
private callback handlerFunc
method destroyList takes nothing returns nothing
set this.prev.next = this.next
set this.next.prev = this.prev
if ( thistype( 0 ).next == 0 ) then
call PauseTimer( thistype.period )
endif
call thistype.deallocate( this )
endmethod
private static method iterate takes nothing returns nothing
local thistype this = thistype( 0 ).next
loop
exitwhen ( this == 0 )
call this.handlerFunc.evaluate( integer( this ) )
set this = this.next
endloop
endmethod
static method createList takes real timeout, callback handlerFunc returns thistype
local thistype this = thistype.allocate( )
set this.next = thistype( 0 )
set this.prev = thistype( 0 ).prev
set this.next.prev = this
set this.prev.next = this
set this.handlerFunc = handlerFunc
if ( this.prev == 0 ) then
call TimerStart( thistype.period, timeout, true, function thistype.iterate )
endif
return this
endmethod
private static method onInit takes nothing returns nothing
set thistype.period = CreateTimerEx( )
endmethod
endmodule
пример использования:
struct abili
unit caster
unit target
implement linkedList
method update takes nothing returns nothing
// ...
endmethod
static method createA takes nothing returns nothing
local thistype this = thistype.createList( 0.03125, update )
// ...
endmethod
endstruct
Я так понял она нужна, только для того чтобы как-то заменить code array, который нельзя создать. Она создаёт триггер, который будет вызван через TriggerEvaluate( ), а параметры будут переданы через глобальные переменные. Это её единственное применение или можно еще что-нибудь замутить интересное?
А насчёт interface/endinterface вроде всё понятно. Просто набор правил, чтобы в случае чего выдать ошибку?
ScorpioT1000, хотелось бы, что Вы рассказали про полиморфизм. Интерфейсы вроде дают такую возможность. Хоть убейте, не могу понять, как работать с интерфейсами и где их стоит применять.
Ред. scopterectus
» WarCraft 3 / Fatal при отлове завершения строительства
Вернее когда этот юнит и эти функции встречаются с друг другом
.
» WarCraft 3 / PreloadAbility( integer )
» WarCraft 3 / WC3RusTextOptimizer
» WarCraft 3 / Fatal при отлове завершения строительства
native GetUnitGoldCost takes integer unitid returns integer
))
» WarCraft 3 / Fatal при отлове завершения строительства
Ред. scopterectus
» WarCraft 3 / Fatal при отлове завершения строительства
Ред. scopterectus
» WarCraft 3 / Fatal при отлове завершения строительства
» WarCraft 3 / Удаление баффа
» WarCraft 3 / Удаление баффа
» WarCraft 3 / Удаление баффа
» WarCraft 3 / Проблемы с постройкой зданий
выбрал бы 8gabriel8'a, т. к. он первый предложил; но Steal nerves сделал ещё и пример.
» WarCraft 3 / Проблемы с постройкой зданий
8gabriel8, это приказ, который открывает список доступных приказов.
*список доступных построек
» WarCraft 3 / Событие на вход в воду
» WarCraft 3 / Событие на вход в воду
» WarCraft 3 / Событие на вход в воду
» WarCraft 3 / Событие на вход в воду
» WarCraft 3 / Строка
Ред. scopterectus
» WarCraft 3 / Почему не отсеивается юнит из группы
Под ничего не делать я имел ввиду не вызвать эту функцию.
Если вы создаёте кампании и не беспокоитесь об утечках, то в этом нет ничего плохого.
» WarCraft 3 / Замена одного предмета, на другой при использовании третьего
» WarCraft 3 / Spirit Breaker из DotA со всеми способностями
» WarCraft 3 / RemoveUnit или KillUnit?
» WarCraft 3 / RemoveUnit или KillUnit?
Ред. scopterectus
» WarCraft 3 / Повседневные приёмы в программировании варкрафта
Написал следующий код для себя, подглядывая сюда:
Ред. scopterectus
» WarCraft 3 / Повседневные приёмы в программировании варкрафта
Хоть убейте, не могу понять, как работать с интерфейсами и где их стоит применять.
» WarCraft 3 / vJass
call KillUnit( this.u )
endmethod
call KillUnit( u[ this ] )
endfunction