Wadimiru, можно еще сделать через одного дамми-юнита. Нужно поставить на ноль анимацию каста и удалить способность 'Amov'. Не знаю как это влияет, но таким образом можно применять сколь угодно много способностей одновременно через одного дамми-юнита.
Maniac_91, раз уж речь зашла о минусах и плюсах, то хотелось бы сказать, что нужно сделать так, чтобы свой минус или плюс можно было менять. Бывает, что случайно промахиваешься, и всё, это никак не исправить!
Zahanc, проще говоря, thistype( 0 ) вернет 0, то есть нулевую ячейку структуры. Слово thistype используется для того, чтобы не было ошибок при компиляции. Действует примерно также, как и integer( this ).
struct linkedList
private static constant timer period = CreateTimer( )
private thistype prev
private thistype next
private stub method destroy 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.destroy( )
set this = this.next
endloop
endmethod
private static method create takes nothing 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
// Здесь должен находится Ваш код.
if ( this.prev == 0 ) then
call TimerStart( thistype.period, 0.03125, true, function thistype.iterate )
endif
return this
endmethod
endstruct
Maniac_91, а я вообще все события пихаю всё в один триггер...))
А какое событие прокнуло проверяю в условии через функции GetTriggerEventId( ) и запускаю соответствующую action-функцию.
- Но поверьте, на JASS это никакая не оптимизация, и то, что вы видите на втором скрине преобразуется в тоже самое, что и на первом скрине. Вот во что:
ScopteRectuS, Было бы прикольно если бы было событие просто любой игрок написал сообщение, ведь во многих случаях именно она и нужна, Хотя вроде события же не производять операций так что это чисто для удобства.
Такой функции даже на JASS нету. Несмотря на то, что это есть в GUI ( как на втором скрине ). Cобытия добавляются для каждого игрока отдельно.
GetTriggerPlayer( ) - это функция, которая возвращает ( в данном случае ) написавшего в чат игрока. То есть игрок уже написал в чат и мы этой функцией ловим этого игрока. А как в событии отловить написавшего в чат игрока, если это событие и создаётся для того, чтобы отловить написавшего в чат игрока?
ClotPh, я знаю, но создание боевой единицы ресурсозатратно. В моем случае это вызовет фриз на несколько секунд, так как данная функция будет использоваться большое количество раз.
Например, если вы хотите, чтобы при применении способности, воин прыгал в указанную точку, отбрасывая всех, кто оказался на точке приземления, а все, кого оттолкнули разлетаются по разные стороны и при столкновении в с другими воинами хилят их, если это союзник или наносит урон, если это враг...
globals
integer array myVar [20999]
endglobals
function myFunc takes nothing returns nothing
set myVar[ 9999 ] = 1
endfunction
globals
integer array s__myVar
integer array s__2myVar
integer array s__3myVar
endglobals
function sg__myVar_get takes integer i returns integer
if(i<8191) then
return s__myVar[i]
elseif(i<16382) then
return s__2myVar[i-8191]
else
return s__3myVar[i-16382]
endif
endfunction
function sg__myVar_set takes integer i,integer v returns nothing
if(i<8191) then
set s__myVar[i]=v
elseif(i<16382) then
set s__2myVar[i-8191]=v
else
set s__3myVar[i-16382]=v
endif
endfunction
function myFunc takes nothing returns nothing
call sg__myVar_set(9999,1)
endfunction
Как видите, указывать размер нужно лишь в тех случая, когда размер массива больше 8192 или в структурах, в противном случае указывать размер массива не надо.
Конкретно в Вашем случае рекомендую использовать возможное максимальное число.
В vJASS тоже есть ограничения, максимальный размер массива в vJASS - 409550.
Это же нужно специально для vJASS, чтобы использовать размер массива больше 8192. Если указать, например, 16384, то будут созданы два массива указанного типа, но ячейка массива с индексом больше 8191 уже будет храниться во втором массиве с индексом 0 и т. д.. А указывать меньше 8192 нет смысла, все равно будет создан обычный массив.
» WarCraft 3 / Помогите с триггерным спеллом
» WarCraft 3 / Ошибка сборки карты
Ред. scopterectus
» WarCraft 3 / vJass: как перебрать все экземпляры структуры?
» WarCraft 3 / vJass: как перебрать все экземпляры структуры?
» WarCraft 3 / Как после смерти игрока выкинуть все вещи которые он понасобирал
Ред. scopterectus
» WarCraft 3 / vJass: как перебрать все экземпляры структуры?
Ред. scopterectus
» WarCraft 3 / Не удаляются группы игроков через цикл
И вообще, Steal nerves сказал вам как сделать лучше всего.
» WarCraft 3 / Не удаляются группы игроков через цикл
» WarCraft 3 / Система отлова нанесённого урона
Ред. scopterectus
» WarCraft 3 / Как задетектить написавшего в чат игрока?
А какое событие прокнуло проверяю в условии через функции GetTriggerEventId( ) и запускаю соответствующую action-функцию.
» WarCraft 3 / Как задетектить написавшего в чат игрока?
» WarCraft 3 / Как задетектить написавшего в чат игрока?
» WarCraft 3 / Как задетектить написавшего в чат игрока?
Ред. scopterectus
» WarCraft 3 / Система отлова нанесённого урона
» WarCraft 3 / мемхак - побочные эффекты?
Ред. scopterectus
» WarCraft 3 / Уровень боевой единицы
Ред. scopterectus
» WarCraft 3 / Когда-то уже просил найти утечки тут, и через годы... Снова...
» WarCraft 3 / Существует ли карта способностей?
» WarCraft 3 / Существует ли карта способностей?
» WarCraft 3 / Существует ли карта способностей?
» WarCraft 3 / Опять утечка, может ли утекать переменная типа строка?
Ред. scopterectus
» WarCraft 3 / [jass] Кроме констант как можно добавить в массив?
Ред. scopterectus
» WarCraft 3 / [jass] Кроме констант как можно добавить в массив?
Ред. scopterectus
» WarCraft 3 / [jass] Кроме констант как можно добавить в массив?
» WarCraft 3 / как покрасить текст в цвет игрока?