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

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

Закрытая тема
 
SiT3D

offline
Опыт: 1,514
Активность:
Циклы не работают
Короче следующая проблема, раньше такого не было. Может из-за того что код большой или хз. Циклы выполняются не целиком. Например из 8 раз только 2 или 1 или 3 но не 8. В чём может быть причина такого поведения циклов? Причём недавно такое началось почти с любым новым циклом. Может есть какие то ограничения на одновременное выполнени?
Старый 26.05.2013, 01:02
Borodach

offline
Опыт: 5,785
Активность:
SiT3D, Ты используешь Цыкл для числа А ?
Старый 26.05.2013, 01:04
SiT3D

offline
Опыт: 1,514
Активность:
не но и их тоже я думал что изза них и перестал юзать, но фишка в том что и через loop в джазе тож тупить начали. Была такая мысль все их переделать, часть переделал но не все. Если проблема в них, то придётся сесть и переделать, без циклов не представляю как. А в чем ещё может быть загвоздка?

Отредактировано SiT3D, 26.05.2013 в 01:23.
Старый 26.05.2013, 01:17
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
где и как ты их используешь?
Старый 26.05.2013, 01:55
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
SiT3D, есть ограничение на длительность выполнения потока. После чего вар считает, что он завис и убивает его. Поток это либо новый триггер, либо таймер
Старый 26.05.2013, 01:56
SiT3D

offline
Опыт: 1,514
Активность:
alexprey:
SiT3D, есть ограничение на длительность выполнения потока. После чего вар считает, что он завис и убивает его. Поток это либо новый триггер, либо таймер
А как от этого избавиться? Ну я паузы в цикле не использую, вот код ща выложу
================================================================
function Trig_DetectRole_Actions takes nothing returns nothing
//переносим в новый массив игроков которые играют
	local player array MBplmass
	local integer i = 1
	local integer a = 0
	local string s = "------"
	local boolean ab
	local boolean bb
	local boolean cb
	local integer i2 = 0
// Помещаю в массив игроков которые играют подряд, для списка.
	loop
		exitwhen i > 8
			if GetPlayerSlotState(udg_Players[i]) == PLAYER_SLOT_STATE_PLAYING then
				set a = a + 1
				set MBplmass[a] = udg_Players[i]			
			endif
		set i = i + 1
endloop
//Проверяю статы игроков и присваиваю им класс, заполняю мультиборд, статистикой каждого игрока

	set i = 1

	loop
	exitwhen i>8
		call MultiboardSetItemValueBJ( udg_MBmass[1], 1, i+1, GetPlayerName(MBplmass[i]) )//Имена игроков
		call MultiboardSetItemValueBJ( udg_MBmass[1], 3, i+1, "------" )//статусы
		set i2 = GetConvertedPlayerId(MBplmass[i])
		call MultiboardSetItemValueBJ( udg_MBmass[1], 2, i+1, udg_PLString1[i2]+udg_PLString2[i2]+udg_PLString3[i2] )
		set ab = GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A066', udg_CurrentHero[i2]) != 0 
		if ab and bb and cb == true then
			set s = "Танк"
			call MultiboardSetItemValueBJ( udg_MBmass[1], 3, i+1, s )
		endif
		set ab = GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A068', udg_CurrentHero[i2]) != 0
		if ab and bb and cb == true then
			set s = "Танк"
			call MultiboardSetItemValueBJ( udg_MBmass[1], 3, i+1, s )
		endif
		set ab = GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A06R', udg_CurrentHero[i2]) != 0
		if ab and bb and cb == true then
			set s = "Танк"
			call MultiboardSetItemValueBJ( udg_MBmass[1], 3, i+1, s )
		endif // Танк
		set ab = GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A060', udg_CurrentHero[i2]) != 0 
		if ab and bb and cb == true then
			set s = "ДД"
			call MultiboardSetItemValueBJ( udg_MBmass[1], 3, i+1, s )
		endif
		set ab = GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A05Y', udg_CurrentHero[i2]) != 0
		if ab and bb and cb == true then
			set s = "ДД"
			call MultiboardSetItemValueBJ( udg_MBmass[1], 3, i+1, s )
		endif
		set ab = GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A06L', udg_CurrentHero[i2]) != 0
		if ab and bb and cb == true then
			set s = "ДД"
			call MultiboardSetItemValueBJ( udg_MBmass[1], 3, i+1, s )
		endif// Ловкачи
		set ab = GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A062', udg_CurrentHero[i2]) != 0
		if ab and bb and cb == true then
			set s = "Маг"
			call MultiboardSetItemValueBJ( udg_MBmass[1], 3, i+1, s )
		endif
		set ab = GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A05R', udg_CurrentHero[i2]) != 0
		if ab and bb and cb == true then
			set s = "Хил"
			call MultiboardSetItemValueBJ( udg_MBmass[1], 3, i+1, s )
		endif
		set ab = GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A06U', udg_CurrentHero[i2]) != 0
		if ab and bb and cb == true then
			set s = "Хил"
			call MultiboardSetItemValueBJ( udg_MBmass[1], 3, i+1, s )
		endif
		
		call MultiboardSetItemValueBJ( udg_MBmass[1], 4, i+1, I2S(udg_RealStatsHero[i2*10+1]) )
		call MultiboardSetItemValueBJ (udg_MBmass[1],1,udg_allplayers+2,"Cправка:  ESC")
		call MultiboardSetItemValueBJ (udg_MBmass[1],2,udg_allplayers+2,"")
		call MultiboardSetItemValueBJ (udg_MBmass[1],3,udg_allplayers+2,"")
		call MultiboardSetItemValueBJ (udg_MBmass[1],4,udg_allplayers+2,"")
		set i = i + 1

	endloop

	call MultiboardDisplay(udg_MBmass[1],true)

endfunction

//===========================================================================
function InitTrig_DetectRole takes nothing returns nothing
    set gg_trg_DetectRole = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_DetectRole, 5.00 )
    call TriggerAddAction( gg_trg_DetectRole, function Trig_DetectRole_Actions )
endfunction
==================================================
Вот тут мультиборд заполняется, раньше 1 был щас надо 8, но цикл в цикле срабатывает 1 раз

Отредактировано SiT3D, 26.05.2013 в 03:01.
Старый 26.05.2013, 02:04
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
а ты не подумал что поток может обрываться?
Старый 26.05.2013, 02:11
SiT3D

offline
Опыт: 1,514
Активность:
Я думал об этом, но я не ставил условий на обрывание, я бы не спрашивал если бы знал причину. =) что может стать причиной обрыва? И как этого избегать в будущем?
Старый 26.05.2013, 02:16
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
продебажь сначала все, а потом уже делай выводы, без него вообще сюда приходить не стоит
Старый 26.05.2013, 02:17
SiT3D

offline
Опыт: 1,514
Активность:
я не шарю как работает дэбаг твой, я смотрел по сообщениям, что он выполняет 1 раз вложеный цикл, а потом выполняется ещё 7 раз, но вложеный цикл уже не срабатывает. О чём то говорит?
И это не 1 раз уже такое, мне кажется что дело в количестве циклов в 1 триггере, или в одно и тоже время, как будто не могут 10 циклов выполняться в 1 и туже секунду. Ну странно это както.
Старый 26.05.2013, 02:20
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
set i=0
 set a =0
 set s = ""
 set ab = false
 set bb = false
 set cb = false
это звиздец товарисчи, номинирую этот код и кодера на премию дарвина
Старый 26.05.2013, 02:26
SiT3D

offline
Опыт: 1,514
Активность:
Hate:
set i=0
 set a =0
 set s = ""
 set ab = false
 set bb = false
 set cb = false
это звиздец товарисчи, номинирую этот код и кодера на премию дарвина
Ты смешон Hate тебе есть разница как я пишу? Это ошибка большая или что? Или из-за этого цикл прирывается? Скажи. Или твои комплексы не дают спокойно смотреть на то, что тебе не нравится и ты ищешь как бы унизить других людей? Гниль да и только. Пиши по делу или не пиши вовсе, я тебе уже не в первый раз так говорю.
Старый 26.05.2013, 02:31
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
я не могу смотреть на людей которые просто тупые.
спешал фор ю
был бы ты умнее, спросил бы что в этом куске не так, однако неет, лучше повыпендриваться и показать яйца.
Старый 26.05.2013, 02:35
SiT3D

offline
Опыт: 1,514
Активность:
Пусть так, я знал что их не обязательно так записывать. Но был не уверен, спаибо. Но мой вопрос ни в том был, и ты не отвечаешь на вопросы мои, ты пытаешься издеваться. Премию дарвина себе бери я не жадный.
Старый 26.05.2013, 02:41
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
могу посоветовать отформатировать ваше сообщение с кодом, расставить отступы, и нормально назвать переменные, тогда и код можно подробнее почитать, и так, это помойка в таком виде
Старый 26.05.2013, 02:48
SiT3D

offline
Опыт: 1,514
Активность:
На вот смотри только толку.
Старый 26.05.2013, 03:01
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
либо я дурак, либо вы полено
call MultiboardSetItemValueBJ( udg_MBmass[1], 1, i+1, GetPlayerName(MBplmass[i]) )//Имена игроков
		call MultiboardSetItemValueBJ( udg_MBmass[1], 3, i+1, "------" )//статусы
		set i2 = GetConvertedPlayerId(MBplmass[i])
		call MultiboardSetItemValueBJ( udg_MBmass[1], 2, i+1, udg_PLString1[i2]+udg_PLString2[i2]+udg_PLString3[i2] )
		set ab = GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A066', udg_CurrentHero[i2]) != 0 
		set ab = GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A068', udg_CurrentHero[i2]) != 0
		set ab = GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A06R', udg_CurrentHero[i2]) != 0
		set ab = GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A060', udg_CurrentHero[i2]) != 0 
		set ab = GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A05Y', udg_CurrentHero[i2]) != 0
		set ab = GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A06L', udg_CurrentHero[i2]) != 0
		set ab = GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A062', udg_CurrentHero[i2]) != 0
		set ab = GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A05R', udg_CurrentHero[i2]) != 0
		set ab = GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_STR, udg_CurrentHero[i2], false)
		set bb = GetHeroStatBJ(bj_HEROSTAT_INT, udg_CurrentHero[i2], false) > GetHeroStatBJ(bj_HEROSTAT_AGI, udg_CurrentHero[i2], false) 
		set cb = GetUnitAbilityLevelSwapped('A06U', udg_CurrentHero[i2]) != 0
		call MultiboardSetItemValueBJ( udg_MBmass[1], 4, i+1, I2S(udg_RealStatsHero[i2*10+1]) )
		call MultiboardSetItemValueBJ (udg_MBmass[1],1,udg_allplayers+2,"Cправка:  ESC")
		call MultiboardSetItemValueBJ (udg_MBmass[1],2,udg_allplayers+2,"")
		call MultiboardSetItemValueBJ (udg_MBmass[1],3,udg_allplayers+2,"")
		call MultiboardSetItemValueBJ (udg_MBmass[1],4,udg_allplayers+2,"")
		set i = i + 1
зачем??? вы хоть понимаете что пишете индийский код?
Старый 26.05.2013, 03:12
SiT3D

offline
Опыт: 1,514
Активность:
вот как у меня там
Миниатюры
Кликните на картинку для увеличения
Название:  cod.jpg
Просмотров: 24
Размер:  615.5 Кбайт  
Старый 26.05.2013, 03:22
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
включите моск, и подумайте как это все выполняется циклом. вы не замечаете ничего?
Старый 26.05.2013, 03:23
SiT3D

offline
Опыт: 1,514
Активность:
Та и вообще нафиг тебе код он свотдитса к банальному
SiT3D добавил:
нет а что там ни так что ты такое заметил? А ну поделись
SiT3D добавил:
Единственное что можно сократить, из того что я сейчас заметил присвоение ab и bb можно делать немного реже, но это прям так сильно загрузит процессор?
Старый 26.05.2013, 03:27
Закрытая тема

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

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

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

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



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