Циклы
Использую след.конструкцию
globals
integer niju = XXXX
integer rokuju = XXXXXXX
endglobals
Function Lmao takes nothing returns nothing
	local integer i
	
	loop 
	exitwhen i == niju
		...
		i++
	endloop
	
	set i = 0
	
	loop 
	exitwhen i == rokuju
		...
		i++
	endloop
Вызывает лаги, т.к. я использую локалку i дважды для обоих циклов, а вот если я использую другую локалку, нууу, объявляю и использую ее для второго цикла, то уже не лагает. Как сделать так, чтобы не лагали циклы при использовании одной локалки для них всех.

Без ответа.


Просмотров: 311

» Лучшие комментарии


XGM Bot #1 - 3 месяца назад 0
Похожие вопросы:

» ответ
TAHK90:
убери действие for integer B
заведи себе переменную типа integer с именем count
далее выбираешь всех юнитов в группе
с каждым действием count увеличивай на 1
делаешь нужные действия если count меньше 2
если равен или больше - устаналивай на 0 и очищай группу
» ответ
в гуи есть триггер-добавить событие
в триггере с событием инициализация 
если триггерная область == null (нету области)
	пробегаем циклом по массиву областей
	триггер - добавить событие этому триггеру (Юнит входит в область (Rect[А]))
иначе
	делаем то что надо делать при входе в 1 из 50 областей
иначе никак
» ответ
~16GB:
ты что делаешь новые функции для гуи? если да, то нафига?
» ответ
Custom script: exitwhen true
» ответ
Лимит операций примерно 4 к. А у тебя тут поболее 16к.
Обойти лимит операций можно только разнеся действия в разные потоки. К примеру для через таймер.

Hate #2 - 3 месяца назад 14
вы втираете какую то дичь
EnergyFrost #3 - 3 месяца назад (отредактировано ) 0
Дичь или кривые условия в циклах. Ну типа niju или rokuju - отрицательные или очень-очень большие. И я не знаю, как и что там с инициализацией по-умолчанию локалки. (проверять самому лень). Но вообще, по сути должно инициализироваться автоматом нолем
LainMikoroso #4 - 3 месяца назад 0
EnergyFrost:
Дичь или кривые условия в циклах. Ну типа niju или rokuju - отрицательные или очень-очень большие. И я не знаю, как и что там с инициализацией по-умолчанию локалки. (проверять самому лень). Но вообще, по сути должно инициализироваться автоматом нолем
А, лол я забыл дописать, я локалку инициализирую нулем, а глобалки устанавливаются в другом триггере
EnergyFrost #5 - 3 месяца назад 0
LainMikoroso, в первый цикл допиши BJDebugMsg(I2S(niju)), во второй BJDebugMsg(I2S(rokuju )). Вот тебе счастье. Если все нормально выполняется и выходит, значит проблема не в этом куске
LainMikoroso #6 - 3 месяца назад 0
в первый цикл допиши BJDebugMsg(I2S(niju)), во второй BJDebugMsg(I2S(rokuju )). Вот тебе счастье. Если все нормально выполняется и выходит, значит проблема не в этом куске
(Если я использую другую локалку то все работает)
EnergyFrost #7 - 3 месяца назад 0
LainMikoroso, да, точно дичь втираешь. Какие значения у тебя принимают переменные условия цикла?
LainMikoroso #8 - 3 месяца назад 0
да, точно дичь втираешь. Какие значения у тебя принимают переменные условия цикла?
Положительные от 0 и до 10(не более, тестил с 0-2)
EnergyFrost #9 - 3 месяца назад 0
Короче. Вот тебе- проблема не с локалкой, а с условиями (ну если, конечно, пробелма в этих местах). Узнай какое из условий зацикливается и не выходит, и будет тебе счастье
LainMikoroso #10 - 3 месяца назад -2
EnergyFrost:
Короче. Вот тебе- проблема не с локалкой, а с условиями (ну если, конечно, пробелма в этих местах). Узнай какое из условий зацикливается и не выходит, и будет тебе счастье
(Поменял переменную все заработало)
Тебе еще раз повторить?
EnergyFrost #11 - 3 месяца назад (отредактировано ) 0
LainMikoroso, да, пожалуйста. 3 раза. Отладку давай лучше, чем упираться
quq_CCCP #12 - 3 месяца назад 0
LainMikoroso, вот кто так делает?
У вас цикл вовсе не должен запустится, ибо переменная не инициализрованна:
local integer i // необходимо заменить local integer i = 0
Потом есть лимит операций, нужно осторожнее с циклами в которых 100500 итераций.
Просадку фпс вызывает кривой код, предоставьте весь код а не этот пример...
LainMikoroso #13 - 3 месяца назад 0
quq_CCCP:
LainMikoroso, вот кто так делает?
У вас цикл вовсе не должен запустится, ибо переменная не инициализрованна:
local integer i // необходимо заменить local integer i = 0
Потом есть лимит операций, нужно осторожнее с циклами в которых 100500 итераций.
Просадку фпс вызывает кривой код, предоставьте весь код а не этот пример...
Читай ниже, плез, там я отписал что инициализирую, но забыл написать ее в коде.
Весь код в мейн записи.
quq_CCCP #14 - 3 месяца назад 0
LainMikoroso, ничего лаги не вызывает... Это ваша фантазия...
EnergyFrost #15 - 3 месяца назад 0
LainMikoroso, вам 3 мапмейкера говорят одно и то же. Может быть, и правда она- дичь?
LainMikoroso #16 - 3 месяца назад 0
вам 3 мапмейкера говорят одно и то же. Может быть, и правда она- дичь?
Не
16GB #17 - 3 месяца назад 0
LainMikoroso,
сделай тестовую карту с этими, и чтобы там были лаги. Тогда мы тебе поверим.
Clamp #18 - 3 месяца назад (отредактировано ) 2
LainMikoroso, описаное в вопросе невозможно технически по ряду причин. Более того, каждая новая локальная переменная только увеличивает количество выполняемых процессором команд, что определённо не может увеличивать производительность функции по определению.