[Вопрос] GUI -> MUI
|
|
Extremator | Дата: Четверг, 17 Ноября 2011, 01:56:20 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| вот код... то бага нету, то баг есть... вопрос, почему баг появляется?
p.s. суть бага в том что ИНОГДА один даммик остаётся висеть и не используется триггером
Code function Trig_cast_Func001C takes nothing returns boolean if ( not ( GetSpellAbilityId() == 'A000' ) ) then return false endif return true endfunction
function Trig_cast_Actions takes nothing returns nothing if ( Trig_cast_Func001C() ) then set udg_all_point[0] = GetUnitLoc(GetTriggerUnit()) set udg_Nm_MUI = ( udg_Nm_MUI + 1 ) set udg_Nm_hero[udg_Nm_MUI] = GetTriggerUnit() call CreateNUnitsAtLoc( 1, 'u001', Player(PLAYER_NEUTRAL_PASSIVE), udg_all_point[0], bj_UNIT_FACING ) set udg_Nm_dummy[udg_Nm_MUI] = GetLastCreatedUnit() set udg_Nm_time[udg_Nm_MUI] = GetRandomReal(2.00, 10.00) call SetUnitVertexColorBJ( GetLastCreatedUnit(), 100, 100, 100, 50.00 ) call EnableTrigger( gg_trg_time ) call RemoveLocation(udg_all_point[0]) else endif endfunction
//=========================================================================== function InitTrig_cast takes nothing returns nothing set gg_trg_cast = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_cast, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddAction( gg_trg_cast, function Trig_cast_Actions ) endfunction Code function Trig_time_Func001Func004C takes nothing returns boolean if ( not ( udg_Nm_time[GetForLoopIndexA()] < 0.03 ) ) then return false endif return true endfunction
function Trig_time_Func002C takes nothing returns boolean if ( not ( udg_Nm_MUI == 0 ) ) then return false endif return true endfunction
function Trig_time_Actions takes nothing returns nothing set bj_forLoopAIndex = 1 set bj_forLoopAIndexEnd = udg_Nm_MUI loop exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd set udg_all_point[0] = GetUnitLoc(udg_Nm_hero[GetForLoopIndexA()]) call SetUnitPositionLoc( udg_Nm_dummy[GetForLoopIndexA()], udg_all_point[0] ) set udg_Nm_time[GetForLoopIndexA()] = ( udg_Nm_time[GetForLoopIndexA()] - 0.03 ) if ( Trig_time_Func001Func004C() ) then call KillUnit( udg_Nm_dummy[GetForLoopIndexA()] ) set udg_Nm_hero[GetForLoopIndexA()] = udg_Nm_hero[udg_Nm_MUI] set udg_Nm_dummy[GetForLoopIndexA()] = udg_Nm_dummy[udg_Nm_MUI] set udg_Nm_time[GetForLoopIndexA()] = udg_Nm_time[udg_Nm_MUI] set udg_Nm_MUI = ( udg_Nm_MUI - 1 ) else endif call RemoveLocation(udg_all_point[0]) set bj_forLoopAIndex = bj_forLoopAIndex + 1 endloop if ( Trig_time_Func002C() ) then call DisableTrigger( GetTriggeringTrigger() ) else endif endfunction
//=========================================================================== function InitTrig_time takes nothing returns nothing set gg_trg_time = CreateTrigger( ) call DisableTrigger( gg_trg_time ) call TriggerRegisterTimerEventPeriodic( gg_trg_time, 0.03 ) call TriggerAddAction( gg_trg_time, function Trig_time_Actions ) endfunction Добавлено (17 Ноябрь 2011, 01:53:00) --------------------------------------------- да, это конверт из гуи в текст... Добавлено (17 Ноябрь 2011, 01:56:20) --------------------------------------------- вот триггеры с гуи виде
Сообщение отредактировал Extremator - Четверг, 17 Ноября 2011, 01:52:37 |
|
|
|
FkoFF | Дата: Четверг, 17 Ноября 2011, 03:21:47 | Сообщение # 2 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| MUI GUI? зачем эти танцы с бубнами? Используй джасс уже.
|
|
|
|
Extremator | Дата: Четверг, 17 Ноября 2011, 03:23:30 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Quote (FkoFF) MUI GUI? зачем эти танцы с бубнами? Используй джасс уже. нет... ты мне скажи где тут ошибка!
|
|
|
|
Ty3uK | Дата: Четверг, 17 Ноября 2011, 08:06:49 | Сообщение # 4 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Ошибка в том, что ты используешь перевод гуи в текст. Забудь. Или кодь на гуи (бе...) или учи жасс. Полностью солидарен с фкоффом Добавлено (17 Ноябрь 2011, 08:06:49) --------------------------------------------- Вот интересный вопрос- зачем ты убиваешь дамми? Его надо удалять, а не убивать
|
|
|
|
Hexing | Дата: Четверг, 17 Ноября 2011, 08:42:17 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| SetTimedLife() после самого создания никогда не подводит(ну или както так пишется)
|
|
|
|
Ty3uK | Дата: Четверг, 17 Ноября 2011, 08:52:48 | Сообщение # 6 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Таймер истечения на .76 для даммикаста надо ставить
|
|
|
|
Extremator | Дата: Четверг, 17 Ноября 2011, 13:51:02 | Сообщение # 7 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Quote (Ty3uK) Ошибка в том, что ты используешь перевод гуи в текст. я не использую конверт гуи... я работаю НА гуи...
Quote (Ty3uK) Вот интересный вопрос- зачем ты убиваешь дамми? Его надо удалять, а не убивать что бы дамми воспроизвёл анимацию смерти (+звук)
Quote (Hexing) SetTimedLife() после самого создания никогда не подводит(ну или както так пишется) да можно... но у меня тоже самое в ульте лича (да да как в доте), если шар будет на таймере то он просто умереть может пока будет прыгать по жертвам...
Quote (Ty3uK) Таймер истечения на .76 для даммикаста надо ставить не понял... перефразируй
|
|
|
|
Ty3uK | Дата: Четверг, 17 Ноября 2011, 13:53:11 | Сообщение # 8 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Extremator, чего не понять? таймер истечения (UnitApplyTimedLife) надо ставить на .76, это оптимальный вариант на каст + исчез
Quote (Extremator) я не использую конверт гуи... я работаю НА гуи... это и печально
Сообщение отредактировал Ty3uK - Четверг, 17 Ноября 2011, 13:53:22 |
|
|
|
Extremator | Дата: Четверг, 17 Ноября 2011, 14:34:05 | Сообщение # 9 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Quote (Ty3uK) таймер истечения (UnitApplyTimedLife) надо ставить на .76, это оптимальный вариант на каст + исчез мне хватает и 0.4 сек хотя... можно создавать дамми - приказывать каст - и тут же удалять
Quote (Ty3uK) это и печально а по теме?
Quote (Extremator) вопрос, почему баг появляется?
Сообщение отредактировал Extremator - Четверг, 17 Ноября 2011, 14:37:44 |
|
|
|
Hexing | Дата: Четверг, 17 Ноября 2011, 16:53:25 | Сообщение # 10 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Quote (Ty3uK) можно создавать дамми - приказывать каст - и тут же удалять он неуспеет скаставать, тутже удалится Quote (Extremator) вопрос, почему баг появляется? тебе нужно 8 триггеов time и массив из них, потомучто если ктото скастует, а потом через короткий промежуток времени скастует еще один, то для 1 все зависнит а второй отработает, вот и получится что один останется у тебя кто бы не кастовал триггер один врубается - time, а вдруг в это время он уже работает? варианты решения проблемы: 1) писать все на jass используя хеш 2) замутить массив триггеров и указывать в поле индексномер игрока владеющего кастующим юнитом
|
|
|
|
Ty3uK | Дата: Четверг, 17 Ноября 2011, 16:56:11 | Сообщение # 11 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Кого ты цитируешь? Я такого не говорил
|
|
|
|
Hexing | Дата: Четверг, 17 Ноября 2011, 17:23:59 | Сообщение # 12 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Ватсон, успокойся, это всё из
|
|
|
|
Diabfall | Дата: Четверг, 17 Ноября 2011, 17:25:03 | Сообщение # 13 |
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
| Quote (Extremator) я не использую конверт гуи... я работаю НА гуи... Научись хотя бы локалки использовать, и будет тебе счастье!
|
|
|
|
Extremator | Дата: Четверг, 17 Ноября 2011, 18:39:55 | Сообщение # 14 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Quote (Hexing) он неуспеет скаставать, тутже удалится мой даммик успевает ._.
Quote (Hexing) у тебя кто бы не кастовал триггер один врубается - time, я не запускаю триггер... а включаю его...
Quote (Diabfall) Научись хотя бы локалки использовать, и будет тебе счастье! умею... но чем лакалки из триггера cast помогут триггеру time ? )))
В общем вот сама карта... репл бага... и всё всё всё... XGM
|
|
|
|
Hexing | Дата: Четверг, 17 Ноября 2011, 19:03:38 | Сообщение # 15 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| млин не тупи я тебе обьяснил что ты офаешь тайм когда другой может еще работать это нихрена не MUI
|
|
|
|
Ty3uK | Дата: Четверг, 17 Ноября 2011, 20:25:47 | Сообщение # 16 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Нельзя локально запустить триггер, можно только запустить функу. У тебя таймер не функой, а триггером, соответственно это не муи (старт триггера != запуск таймера)
|
|
|
|
Extremator | Дата: Четверг, 17 Ноября 2011, 21:21:23 | Сообщение # 17 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Quote (Ty3uK) запуск таймера какого таймера? -_- у меня нету таймеров
|
|
|
|
Ty3uK | Дата: Четверг, 17 Ноября 2011, 21:33:10 | Сообщение # 18 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Ох... Проехали... В этом и проблема, что таймеров нет. На запуске / остановке триггера муи сделать нельзя
|
|
|
|
OxygenD | Дата: Четверг, 17 Ноября 2011, 22:01:19 | Сообщение # 19 |
2 уровень
Группа: Проверенные
Сообщений: 25
Награды: 0
Репутация: 11
Блокировки:
| Что за аццкий код ._.
Пою в душе на паскале.
|
|
|
|
Hexing | Дата: Пятница, 18 Ноября 2011, 13:20:50 | Сообщение # 20 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Extremator, я про тайм = time = название триггера... как и сказал Ватсон тут триггером дело не обойдется или замути 8 триггеров для каждого игрока(муи) или используй локальную переменную-таймер для вызова функции и через хэшь смотри юнита
|
|
|
|
Extremator | Дата: Пятница, 18 Ноября 2011, 13:41:45 | Сообщение # 21 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Quote (Hexing) или замути 8 триггеров для каждого игрока(муи) зачем? 1 триггер 8 событий... таймер истёк [1-8] loop A 1-8 If - время таймера[А] = 0.00 то - все действия... запускаем таймер [A] на 10 сек и паузим...
...но я так делать не буду...
я уже нашёл вариант с уменьшение [A] в цикле... буду тестить как будет время
|
|
|
|
Hexing | Дата: Пятница, 18 Ноября 2011, 13:49:20 | Сообщение # 22 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| good luck mr freeman
|
|
|
|
Extremator | Дата: Пятница, 18 Ноября 2011, 13:49:55 | Сообщение # 23 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| всё... я реши проблему... смещаем цикл на один сегмент назад и сново прокатываем по нему...
Сообщение отредактировал Extremator - Пятница, 18 Ноября 2011, 14:29:56 |
|
|
|
FatalBlade | Дата: Пятница, 25 Ноября 2011, 10:24:13 | Сообщение # 24 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| Quote (Hexing) SetTimedLife() Это как раз таки убивает дамми, не?
|
|
|
|
Extremator | Дата: Пятница, 25 Ноября 2011, 10:33:52 | Сообщение # 25 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Quote (FatalBlade) Это как раз таки убивает дамми, не? если дамми не убивается в конце логичекой цепочки, значит цепочка выполняет не полностью ---> ошибка если дать таймер даммику то это не уберёт баг, а всего лишь попытается скрыть его...
|
|
|
|