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

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

Закрытая тема
 
Preveder
StarCraft II® Inside
offline
Опыт: 1,927
Активность:
Накрылся цикл
Доброе время суток.
Долго ломал голову над проблемой и решил-таки спросить на форуме.

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

Что есть: Периодический триггер 1.25 сек, который запускает функцию.

Цикл бегает по игрокам и смотрит, находится ли игрок в force.

Примерный код:
Код:
function Footmans takes nothing returns nothing    
    set bj_forLoopAIndex = 1
    set bj_forLoopAIndexEnd = 8
    loop
        exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
        if IsPlayerInForce(ConvertedPlayer(bj_forLoopAIndex), udg_Force) then
            call CreateUnit(Player(13), 'hfoo', 0, 0, bj_UNIT_FACING)
        endif
        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop
endfunction


Цикл должен кадые 1.25 делать футмена в центре карты по счёту на каждого игрока, который находится в force.

Ранее всё работало замечательно, теперь же цикл мгновенно создаёт 100500 юнитов и вешает наглухо вар.
Если вместо создания юнита вставить, допустим, мессагу, всё работает отлично - каждые 1.25 секунд пишется сообщение.
А с юнитами - никак.

Что делать? Кто виноват? Подскажите, откуда начать копать. Ума не приложу - точно такой же цикл пару часов назад делал исправно юнитов. Может следует посмотреть потоки? Или это грохнулся нью ген? Джасс хелпер в нью гене последней версии стоит.
Старый 21.08.2009, 00:55
agentex

offline
Опыт: 34,834
Активность:
замени бж-константы на локалки, так будет правильней
Старый 21.08.2009, 00:59
Preveder
StarCraft II® Inside
offline
Опыт: 1,927
Активность:
Цитата:
Сообщение от agentex
замени бж-константы на локалки, так будет правильней

Всё и с ними работало нормально. Просто потеряется чуть-чуть времени на инициализацию локалок. Суть проблемы в том, что почему-то цикл самопроизвольно стал фигачить толпу юнитов вместо дозированного количества.
Если взять мессаги, то сообщения выводятся как положено - сколько игроков, столько и сообщений в промежутке 1.25 сек.
Старый 21.08.2009, 01:03
agentex

offline
Опыт: 34,834
Активность:
Preveder, хз даже скорее всего чето с жнгп, либо смотри че там с событием юнит входит в регион
Старый 21.08.2009, 01:05
Hellfim
Новичок
offline
Опыт: 79,700
Активность:
function Footmans takes nothing returns nothing    
    local integer index=0
    loop
        exitwhen index>7
        if IsPlayerInForce(Player(index),udg_Force) then
            call CreateUnit(Player(13),'hfoo',0,0,0)
        endif
        set index=index+1
    endloop
endfunction

function MyPeriodicFunction takes nothing returns nothing
    call TimerStart(CreateTimer(),1.25,true,function Footmans)
endfunction
А так?
Старый 21.08.2009, 01:07
Preveder
StarCraft II® Inside
offline
Опыт: 1,927
Активность:
Цитата:
Сообщение от Hellfim
""
function Footmans takes nothing returns nothing
local integer index=0
loop
exitwhen index>7
if IsPlayerInForce(Player(index),udg_Force) then
call CreateUnit(Player(13),'hfoo',0,0,0)
endif
set index=index+1
endloop
endfunction

function MyPeriodicFunction takes nothing returns nothing
call TimerStart(CreateTimer(),1.25,true,function Footmans)
endfunction
""
А так?

В твоём исходном варианте с локалками не работает.
Зато если заменить локалки на бж-глобалки работает!

В общем временно solved...
Недоброе творится...©
Пойду-ка начисто переставлю ньюген, не очень хорошо всё это...
Старый 21.08.2009, 01:19
Закрытая тема

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

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

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

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



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