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

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

Ответ
 
Лекс

offline
Опыт: 3,280
Активность:
Не выполняет действия fsgui
Код:
function OpenInventory takes unit u returns nothing
    local integer id = GetPlayerId(GetOwningPlayer(u)) // Номер игрока
    call IssueImmediateOrder(u, "stop") // Остановить юнита который использовал способность
    set udg_CurrentInvUnit[id] = u // Юнит для которого открыть инвентарь Для данного игрока
    set udg_OpenInv[id] = true // Инвентарь открыт для даного игрока
    call ViewCamera_Action() // Вызываем функцию которую использует таймер ViewCamera
endfunction

function CloseInventory takes player p returns nothing
    local integer id = GetPlayerId(p)
    set udg_OpenInv[id] = false
    if GetLocalPlayer() == p then
        call ResetToGameCamera(0)
        call PanCameraToTimed(GetUnitX(udg_CurrentInvUnit[id]), GetUnitY(udg_CurrentInvUnit[id]), 0)
    endif
    set udg_CurrentInvUnit[id] = null
endfunction

function InvStart_Conditions takes nothing returns boolean
   return GetSpellAbilityId() == 'A006' and not udg_OpenInv[GetPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]
endfunction

function InvStart_Actions takes nothing returns nothing
   call OpenInventory(GetSpellAbilityUnit())
endfunction

function GetOpenInvPl takes nothing returns boolean
   return udg_OpenInv[GetPlayerId(GetTriggerPlayer())]
endfunction

function PressEsc_Action takes nothing returns nothing
   call CloseInventory(GetTriggerPlayer())
endfunction


Код должен открывать и закрывать инвентарь. Булевая переменная отвечает за камеру. Если просто выставить в обычном триггере set udg_OpenInv[id] = true то все работает.
В чем проблема? Почему не выполняется OpenInventory?

Лекс добавил:
Код:
function CreateInvTriggers takes nothing returns nothing
    local trigger trig = CreateTrigger()
    call TriggerRegisterAnyUnitEventInv(trig, EVENT_PLAYER_UNIT_SPELL_CAST, null    ) // Юнит кастует Магию
    call TriggerAddCondition           (trig,Condition(function InvStart_Conditions))
    call TriggerAddAction              (trig,          function InvStart_Actions    )
   set trig = CreateTrigger()
   call TriggerRegisterPlayerEventInv(trig, EVENT_PLAYER_END_CINEMATIC        ) // Игрок Нажимает Esc
   call TriggerAddCondition          (trig,Condition(function GetOpenInvPl   ))
   call TriggerAddAction             (trig,          function PressEsc_Action )
    set trig = null
endfunction

вот основная функция если что

Лекс добавил:
call IssueImmediateOrder(u, "stop") в том триге срабатывает а вот переменные не присваиваются никак...
Старый 27.01.2010, 20:56
adic3x

offline
Опыт: 108,439
Активность:
отладочную печать пробовали?
Старый 27.01.2010, 22:23
Лекс

offline
Опыт: 3,280
Активность:
тобиш стринг после команды?
Старый 29.01.2010, 16:14
DioD

offline
Опыт: 45,134
Активность:
тобишь каждую функцию пометить BJDebugmsg и смотртеть где прерывается исполнение и начинается ли оно вообще.
может быть вы код абилки не верно написали или еще чтото в этом роде находиться именно отладочными сообщениями.
Старый 29.01.2010, 17:56
adic3x

offline
Опыт: 108,439
Активность:
Старый 30.01.2010, 13:11
Ответ

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

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

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

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



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