Всем привет, как внутри цикла ждать секунды для того чтобы создать юнитов на разное время? Таймер и цикл совместимы?

Принятый ответ

На периодиках 0.10+ не вижу проблем почему бы не пихнуть TriggerSleepActions в цикл, оно всё равно обновит работу потока
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
3 года назад
0
Похожие вопросы:

ответ
а хотя стоп
у players_count нету начального значения
вместо
local integer players_count
local integer half_players
надо
local integer players_count = 0
local integer half_players = 0
ответ
функцию Trig_BlockA_Func005Func011Func001C() убери нафиг
как и другие функции используемые для ифов и подобной херни
а вообще про это написано во всех статьях про jass
мб стоит прочитать сразу несколько статей а затем задавать сюда вопросы?

правила сайта
смотри пункт 10.3
ответ
расстояние до найденного ближайшего лучше не пересчитывать каждый раз, а хранить в переменной; еще можно обойтись без корня, а сравнивать сразу квадраты расстояний
возможно проблема в сравнении неинициализированной (например int i вместо int i = 1) переменной (unit FIRST == null)
вместо этого юзай boolean флаг или проверку на сохраненное расстояние до ближайшего, например что оно больше -1
ответ
set powers[power + offset] = count
забыл вот так стоял
если 32 бит то цикл 31 раз прибавляет ему то есть не актуально
чтобы быстрый поиск по значение и получить порядок
чтобы быстрый поиск по значение и получить порядок
например если у меня 3 бит значит будет выполнять порядок с 2 очереди до 0, или если 2 бит то очередь 2 до 0 ну суть понял?
чтобы не было целиком порядок и вычеслять количество байтов
переделал
внутри код
library xePower initializer Init
    globals
        /* --------------------------------------- */
        private integer       xe_count    = 1
        private integer       xe_powerMax = 0
        private integer array xe_powersOf2
        private integer array xe_helpers
        /* --------------------------------------- */
    endglobals
    
    function GetPower takes integer index returns integer
        local integer offset = 1
        
        if index < 0 then
            return 0
        endif
        
        if xe_powersOf2[index] == 0 then
            set xe_powersOf2[index] = xe_powersOf2[index - 1] * 2
            set xe_count = xe_count + 1
            
            loop
                exitwhen offset == xe_powersOf2[index]
                set xe_helpers[xe_powersOf2[index] + offset] = index
                set offset = offset + 1
            endloop
            
            set xe_powerMax = xe_powersOf2[index] + offset
        endif

        return xe_powersOf2[index] 
    endfunction
    
    function GetPowerHelper takes integer power returns integer
        if power <= 0 then
            return 0
        endif
        
        if power > xe_powerMax then
            set power = xe_powerMax
        endif
        
        return xe_helpers[power]
    endfunction
    
    private function Init takes nothing returns nothing
        set xe_powersOf2[0] = 1
        set xe_helpers[1] = 1
    endfunction
endlibrary
PS обновил
library xePower initializer Init
    globals
        /* --------------------------------------- */
        private integer       xe_powerMax = 0
        private integer array xe_powersOf2
        private integer array xe_helpers
        /* --------------------------------------- */
    endglobals
    
    function GetPower takes integer index returns integer
        local integer offset = 0
        
        if index <= 0 then
            return 0
        endif

        if xe_powersOf2[index] == 0 then
            set xe_powersOf2[index] = xe_powersOf2[index - 1] * 2

            loop
                exitwhen offset == xe_powersOf2[index]
                set xe_helpers[xe_powersOf2[index] + offset] = index
                set offset = offset + 1
            endloop
            
            set xe_powerMax = xe_powersOf2[index] + offset
        endif

        return xe_powersOf2[index] 
    endfunction
    
    function GetPowerHelper takes integer power returns integer
        if power <= 0 then
            return 0
        endif
        
        if power > xe_powerMax then
            set power = xe_powerMax
        endif
        
        return xe_helpers[power]
    endfunction
    
    private function Init takes nothing returns nothing
        set xe_powersOf2[1] = 1
        set xe_helpers[1] = 1
    endfunction
endlibrary
Терь можно делать подбор только важных а не целиком.
local integer index = GetPowerHelper(33)
            
            loop
                exitwhen IDs == 0 or index == 0
                if IDs >= GetPower(index) then
					// Выполняет правильно index (32,1) а раньше было (32,16,8 и так далее)
                    set IDs = IDs - GetPower(index)
                    set index = GetPowerHelper(IDs)
                else
                    set index = index - 1
                endif
            endloop

0
14
3 года назад
0
создаешь таймер на промежуток создания юнитов и через другую функцию\триггер создаешь юнитов там где нужно не используй в цикле Ждать ломает все к чертям
0
2
3 года назад
0
Гуванч, про триггерную функцию Wait я в курсе да и Pause тоже не желательно использовать
1
27
3 года назад
1
На периодиках 0.10+ не вижу проблем почему бы не пихнуть TriggerSleepActions в цикл, оно всё равно обновит работу потока
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.