28

» WarCraft 3 / Как правильно триггерить channeling способности?

А прекратил каст срабатывает во всех случаях? Типа поймал стан, нажал стоп или приказ идти?
без понятия, ты можешь проверить это самостоятельно
Chosen2:
То есть можно каждые 1с проверять какой приказ выполняет юнит?
какую хочешь периодичность такую и ставь, когда юнит кастует абилку её приказ будет в соответствии с приказом из ро (кэп)
28

» WarCraft 3 / Как правильно триггерить channeling способности?

ну либо через таймер смотри приказ у героя либо через события отлавливай начал/прекратил каст
28

» WarCraft 3 / [Конкурс становления героев] Crusader

MrHug, увы, я не пытался адаптировать под версии выше 1.26, да и в любом случае настолько глобальное обновление готовим, что багов там ещё ойойой обнаружится, но примем к сведению, установлю 1.27 и посмотрю что там с фонтаном накосячено, попробуем исправить, спасибо)
и приношу извинения что испортил впечатления, кодер из меня мягко говоря ужасный

в версии, что сейчас тут лежит, оно вообще насколько я помню нормально не отображает наполнение фонтана заново водичкой
28

» WarCraft 3 / Уменьшение здания?

Roman095UA, тебе ж сказали, карту путей поменяй, открой ро хотя бы посмотри какие строчки есть у юнита
Загруженные файлы
28

» WarCraft 3 / Уменьшение здания?

текстуру пути нужно изменить

чтобы посмотреть текстуры пути нужно перейти в вид -> пути: суша
28

» Администрация XGM / Фильтр ресурсов

Ruti Ragnason, ну оно и останется открытым, просто среди ненужного хлама будет легче найти полезное для себя
28

» WarCraft 3 / Сила Страха "скилы под ключ"

call GroupAddGroup(g, gtemp )
--->
set bj_groupAddGroupDest = gtemp
call ForGroup(g, function GroupAddGroupEnum)

if IsUnitGroupEmptyBJ(g) then
--->
if FirstOfGroup( g ) == null then
а так же закидывание в переменную владельца кастера и использование этой переменной в цикле:
if IsPlayerEnemy(GetOwningPlayer(un), GetOwningPlayer(GT)) and GetUnitAbilityLevel(un, TPOFBaff) > 0 then
--->
set bj_groupEnumOwningPlayer = GetOwningPlayer(GT)
...
if IsPlayerEnemy(GetOwningPlayer(un), bj_groupEnumOwningPlayer) and GetUnitAbilityLevel(un, TPOFBaff) > 0 then
да и вообще заменить IsPlayerEnemy на
constant native IsUnitEnemy takes unit whichUnit, player whichPlayer returns boolean
чтобы не вызывать лишний раз владельца юнита
28

» WarCraft 3 / Сила Страха "скилы под ключ"

XmegatronX, ну это не отменяет факта, что юнитом всё ещё можно управлять под действием фира, исходя из того, что в скилл было добавлено снятие выделения владельца с цели, могу предположить, что оно создавалось не только для одиночных кампаний и против ии, но даже если взглянуть на код можно найти предложения по улучшению, но это только если тебе интересно ¯\_(ツ)_/¯
28

» WarCraft 3 / не могу добавить текстуры земли в Jass New Gen Pack Rebuild Comp

ну нинаю тогда, может путь к карте имеет кириллицу?

только что проверил с кириллицей, снова нельзя открыть, переименовал на латиницу и норм

если не поможет, попробуй на новой карте повторить это, может даже переустановить редактор, тоже чтоб не было кириллицы в пути
28

» WarCraft 3 / не могу добавить текстуры земли в Jass New Gen Pack Rebuild Comp

тоже только что столкнулся с этой проблемой, достаточно просто сохранить карту и снова нажать Edit Tileset
28

» WarCraft 3 / Сила Страха "скилы под ключ"

к сожалению управлять юнитом можно, отдавать приказы, кастовать абилки, нужно дорабатывать

сама очистка выбора не очень хороший ход, могу предложить морф в стража либо мемхак
Загруженные файлы
28

» WarCraft 3 / Функция возвращает 0?

в кат убери этот код, пол страницы забрал)
ты понимаешь вообще для чего константа? ты по коду никак не сможешь её изменить, только при объявлении задать значение, и всё
повторюсь, убери нафиг константу, при выборе героя из таверны задай нужное значение этой переменной
вот такая формулировка:
globals
	unit u
	private constant integer r = GetHeroInt( u )
endglobals

function dfgdfg takes nothing returns nothing
	set u = CreateUnit( )
endfunction
вообще невозможна, переменная не возьмёт сама по себе значение героя когда он появится, ты ей задаёшь значение только при объявлении, а при объявлении этого героя нет
вот это
globals
	unit u = CreateUnit( )
	private constant integer r = GetHeroInt( u )
endglobals
тоже невозможно, потому что юнита таким образом создать нельзя, можешь сам проверить
поэтому возвращаемся к первому комменту
library mylib initializer init
globals
    unit u
    private real r
endglobals

private function init takes nothing returns nothing
    set u = CreateUnit( ... )
    set r = GetHeroInt( u, true )
endfunction
endlibrary
28

» WarCraft 3 / Локалки в циклах

Anonim2843, так понятное дело, посмотри как в коде оно выглядит, локалки находятся в одной функции, а юзаешь ты их в другой


объявляй локалки в цикле отряда либо юзай глобалки
28

» WarCraft 3 / Функция возвращает 0?

я же тебе уже отвечал по этому поводу

убираешь нафиг константу и делаешь следующее
library mylib initializer init
globals
    unit u
    private real r
endglobals

private function init takes nothing returns nothing
    set u = CreateUnit( ... )
    set r = 200.00 + GetHeroInt( u, true )
endfunction

endlibrary

сама функция вернёт 0 в нескольких случаях, если юнита нет, если юнит не герой и если у юнита стат нулевой
28

» WarCraft 3 / Локалки в циклах

подозреваю у автора что-то вроде этого:
    local integer i
    
    loop
        exitwhen i > 10
        set i = i + 1
    endloop
если что, переменной нужно задавать какое-то начальное значение, чтобы потом как-то оперировать с ним

т.е. перед циклом тыкнуть set i = 0
28

» WarCraft 3 / Jass MythBusters

PT153, ну ссылка локальной же не обнуляется, утекает значит
28

» WarCraft 3 / Jass MythBusters

Unryze, ещё кое-что интересно, работа с темповой группой
что быстрее: делать всё в цикле без булекспра или делать всё в булекспре? бенчмарк вовсе минусовый результат показывает, но вероятно тут проблемы уже моего компа
раскрыть
globals
    private constant group TempG = CreateGroup( )
    private unit bj_lastFilterUnit = null
endglobals

native UnitAlive takes unit id returns boolean

private function cond takes nothing returns boolean
    set bj_lastFilterUnit = GetFilterUnit( )
    if UnitAlive( bj_lastFilterUnit ) then
        call SetWidgetLife( bj_lastFilterUnit, GetWidgetLife( bj_lastFilterUnit ) )
    endif
    return false
endfunction

function TestBenchmarking takes nothing returns nothing
    local integer p     = 0
    local integer i     = 0
    local integer time  = 0
    local unit u
    local boolexpr b = Condition( function cond )
    
    set i    = 0
    set time = GetLocalTime( 0 )
    loop
        exitwhen i == 10000
        call GroupEnumUnitsInRect( TempG, bj_mapInitialPlayableArea, null )
        
        loop
            set u = FirstOfGroup( TempG )
            exitwhen u == null
            call GroupRemoveUnit( TempG, u )
            if UnitAlive( u ) then
                call SetWidgetLife( u, GetWidgetLife( u ) )
            endif
        endloop
        
        // Some stuff here
        set i = i + 1
    endloop
    set time  = GetLocalTime( 0 ) - time
    call DisplayTextToPlayer( GetLocalPlayer( ), 0, 0, "First Delay: " + I2S( time ) + "ms" )
    
    set i    = 0
    set time = GetLocalTime( 0 )
    loop
        exitwhen i == 10000
        call GroupEnumUnitsInRect( TempG, bj_mapInitialPlayableArea, b )
        // Some other stuff here
        set i = i + 1
    endloop
    set time  = GetLocalTime( 0 ) - time
    call DisplayTextToPlayer( GetLocalPlayer( ), 0, 0, "Second Delay: " + I2S( time ) + "ms" )
endfunction

28

» WarCraft 3 / JNGP: Rebuild от PT153

Ruti Ragnason, втф)
PT153, а на что оно влияло до обновления? пробелы и прочая ерунда иногда конечно влекут проблемы за собой, но вроде ж всё работало отлично