Hexing Дата: Четверг, 28 Июля 2011, 16:11:18 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды:
1
Репутация:
432
Блокировки:
Весь jass код:
Code
globals integer array Selections unit array SelectionUnits integer array SelectionUnitTypes integer MaxHero = 1 endglobals library mainLib initializer mainInit private function UpdateSelection takes nothing returns nothing local integer id = GetPlayerId(GetLocalPlayer()) BJDebugMsg("Функция UpdateSelection запущена") call SetCameraTargetControllerNoZForPlayer( Player(0), gg_unit_hpea_0003, 0, 0, false ) //call SetCameraTargetController(SelectionUnits[Selections[id]], 0, 0, false) BJDebugMsg("Функция UpdateSelection завершена") endfunction private function SelectLeft takes nothing returns nothing BJDebugMsg("Функция SelectLeft запущена") local integer id = GetPlayerId(GetLocalPlayer()) if not(Selections[id] == 0) set Selections[id] = Selections[id]-1 else set Selections[id] = MaxHero endif call UpdateSelection() endfunction private function SelectRight takes nothing returns nothing BJDebugMsg("Функция SelectRight запущена") local integer id = GetPlayerId(GetLocalPlayer()) if not(Selections[id] == MaxHero) set Selections[id] = Selections[id]+1 else set Selections[id] = 0 endif call UpdateSelection() endfunction private function ShowSelectHelpMessage takes nothing returns nothing BJDebugMsg("Функция ShowSelectHelpMessage запущена") if not(Selections[GetPlayerId(GetLocalPlayer())] == 100) call DisplayTimedTextToPlayer( GetLocalPlayer(),0,0, 10.00, "Используйте стрелоки 'влево' и 'вправо' чтобы выбирать героя, используйте 'вверх' чтобы выбрать выделенного героя и 'вниз' чтобы выбрать случайного героя") endif BJDebugMsg("Функция ShowSelectHelpMessage завершена") endfunction private function SelectHeroActions takes nothing returns nothing BJDebugMsg("Функция SelectHeroActions запущена") local integer index = 0 local timer PeriodicMessage = CreateTimer() call TimerStart(PeriodicMessage, 30, true,function ShowSelectHelpMessage) loop set Selections[index]=0 set index = index+1 exitwhen(index == 1) //ТЕСТ - 1 игрок!!! endloop set SelectionUnitTypes[0] = 'H000' set SelectionUnitTypes[1] = 'H001' set SelectionUnits[0] = gg_unit_H000_0000 set SelectionUnits[1] = gg_unit_H001_0001 call UpdateSelection() local trigger SelectHeroLeft = CreateTrigger() local trigger SelectHeroRight = CreateTrigger() call TriggerRegisterPlayerEvent(SelectHeroLeft, GetLocalPlayer(), EVENT_PLAYER_ARROW_LEFT_DOWN) call TriggerAddAction(SelectHeroLeft,function SelectLeft) call TriggerRegisterPlayerEvent(SelectHeroRight, GetLocalPlayer(), EVENT_PLAYER_ARROW_RIGHT_DOWN) call TriggerAddAction(SelectHeroRight,function SelectRight) BJDebugMsg("Функция SelectHeroActions завершена") set PeriodicMessage = null set SelectHeroLeft = null set SelectHeroRight = null endfunction private function mainInit takes nothing returns nothing call DisplayTimedTextToPlayer( GetLocalPlayer(),0,0, 5.00, "Лагерам - 5 секунд отлагать." ) local trigger SelectHero = CreateTrigger() call TriggerRegisterTimerEvent(SelectHero, 5.00, false) call TriggerAddAction(SelectHero,function SelectHeroActions ) endfunction endlibrary
Почему-то -эдакий гуи код работает:
Code
function Trig_qwe_Actions takes nothing returns nothing call SetCameraTargetControllerNoZForPlayer( Player(0), gg_unit_hpea_0003, 0, 0, false ) endfunction //=========================================================================== function InitTrig_qwe takes nothing returns nothing set gg_trg_qwe = CreateTrigger( ) call TriggerAddAction( gg_trg_qwe, function Trig_qwe_Actions ) endfunction
-, а эдакий мой код не работает:
Code
private function UpdateSelection takes nothing returns nothing local integer id = GetPlayerId(GetLocalPlayer()) BJDebugMsg("Функция UpdateSelection запущена") call SetCameraTargetControllerNoZForPlayer( Player(0), gg_unit_hpea_0003, 0, 0, false ) //call SetCameraTargetController(SelectionUnits[Selections[id]], 0, 0, false) BJDebugMsg("Функция UpdateSelection завершена") endfunction
UpdateSelection точно вызывается и неработает. Не оптимизировал что бы показать что проблема не в кривобокости. Сначала думал что дело в том что в гуи это триггерное "Actions" и динамически создал триггер с добавленным "Actions" вызывающим всё туже функцию, но ничего также не произошло. Что скрывается под гуи? может быть что-то написано между строк мелким почерком? Если да то только скажите, дам скрин! Добавлено (28-07-2011, 16:11) --------------------------------------------- ------ Кое-как перебором нашёл проблему: почему-то эта функция с камерой работает только будучи в триггере созданным только редактором... Причём я её раскрыл и всё равно работает. Ну теперь завожу глобалки и вызывают триггер эксекут. Хотя это очень странно, выходит что у триггера кроме джасс кода есть еще что-то чего я не вижу...