Создал триггер на кнопки диалога.
Однако, он не работает.
Я думал сначала, что дело в кнопках. Мол, кнопки не работают, фигачил их. Как оказалось, дело в событии или типо того. (Я это понял, добавив 5 функций на текст в начале действия. Там ниже идут проверки кнопок. В итоге, при нажатии на любую кнопку 1 в диалоге мне должно было вывести 5 строк текста. Но, ничего не происходит).
Однако, он не работает.
Я думал сначала, что дело в кнопках. Мол, кнопки не работают, фигачил их. Как оказалось, дело в событии или типо того. (Я это понял, добавив 5 функций на текст в начале действия. Там ниже идут проверки кнопок. В итоге, при нажатии на любую кнопку 1 в диалоге мне должно было вывести 5 строк текста. Но, ничего не происходит).
Само диалоговое окно показывается. Кнопки тоже показываются именно для этого диалогового окна. Однако, нажимая на них ничего не происходит.
Почему так? Дело и правда в событии?
Или, почему кнопки не хотят нажиматься в диалоговом окне, даже если убрать все проверки и сделать так, чтобы при нажатии на ЛЮБУЮ кнопку в диалоге высвечивался текст, он не появится.
Почему так? Дело и правда в событии?
Или, почему кнопки не хотят нажиматься в диалоговом окне, даже если убрать все проверки и сделать так, чтобы при нажатии на ЛЮБУЮ кнопку в диалоге высвечивался текст, он не появится.
ТРИГГЕР НА НАЖАТИЕ КНОПОК
function Trig_FUCK_IT_Actions takes nothing returns nothing
local player SpellOwner = GetTriggerPlayer()
local integer OwnerNumber = GetConvertedPlayerId(GetTriggerPlayer())
local integer SPNM
Улучшение
if ( SpellAction[OwnerNumber] == 1 ) then
if ( GetClickedButton() == SpellsButtons[OwnerNumber][1] ) then
set SPNM = 1
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][2] ) then
set SPNM = 2
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][3] ) then
set SPNM = 3
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][4] ) then
set SPNM = 4
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][5] ) then
set SPNM = 5
else
set SPNM = 6
endif
endif
endif
endif
endif
local player SpellOwner = GetTriggerPlayer()
local integer OwnerNumber = GetConvertedPlayerId(GetTriggerPlayer())
local integer SPNM
Улучшение
if ( SpellAction[OwnerNumber] == 1 ) then
if ( GetClickedButton() == SpellsButtons[OwnerNumber][1] ) then
set SPNM = 1
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][2] ) then
set SPNM = 2
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][3] ) then
set SPNM = 3
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][4] ) then
set SPNM = 4
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][5] ) then
set SPNM = 5
else
set SPNM = 6
endif
endif
endif
endif
endif
if ( GetUnitAbilityLevelSwapped(SpellName[OwnerNumber][SPNM],udg_Hero[OwnerNumber]) < 4 ) then
call SetUnitAbilityLevelSwapped( SpellName[OwnerNumber][SPNM], udg_Hero[OwnerNumber], ( GetUnitAbilityLevelSwapped(SpellName[OwnerNumber][SPNM], udg_Hero[OwnerNumber]) + 1 ) )
else
call DisplayTextToPlayer(SpellOwner,0,0,"|c00FF0000Ошибка:|r Уровень способности уже равен 3")
endif
call SetUnitAbilityLevelSwapped( SpellName[OwnerNumber][SPNM], udg_Hero[OwnerNumber], ( GetUnitAbilityLevelSwapped(SpellName[OwnerNumber][SPNM], udg_Hero[OwnerNumber]) + 1 ) )
else
call DisplayTextToPlayer(SpellOwner,0,0,"|c00FF0000Ошибка:|r Уровень способности уже равен 3")
endif
endif
Удаление
if ( SpellAction[OwnerNumber] == 2 ) then
if ( GetClickedButton() == SpellsButtons[OwnerNumber][1] ) then
set SPNM = 1
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][2] ) then
set SPNM = 2
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][3] ) then
set SPNM = 3
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][4] ) then
set SPNM = 4
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][5] ) then
set SPNM = 5
else
set SPNM = 6
endif
endif
endif
endif
endif
Удаление
if ( SpellAction[OwnerNumber] == 2 ) then
if ( GetClickedButton() == SpellsButtons[OwnerNumber][1] ) then
set SPNM = 1
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][2] ) then
set SPNM = 2
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][3] ) then
set SPNM = 3
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][4] ) then
set SPNM = 4
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][5] ) then
set SPNM = 5
else
set SPNM = 6
endif
endif
endif
endif
endif
call UnitRemoveAbilityBJ( SpellName[OwnerNumber][SPNM], udg_Hero[GetConvertedPlayerId(GetTriggerPlayer())] )
if ( GetClickedButton() == SpellsButtons[OwnerNumber][1] ) then
set SpellName[OwnerNumber][1] = SpellName[OwnerNumber][2]
set SpellName[OwnerNumber][2] = SpellName[OwnerNumber][3]
set SpellName[OwnerNumber][3] = SpellName[OwnerNumber][4]
set SpellName[OwnerNumber][4] = SpellName[OwnerNumber][5]
set SpellName[OwnerNumber][5] = SpellName[OwnerNumber][6]
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][2] ) then
set SpellName[OwnerNumber][2] = SpellName[OwnerNumber][3]
set SpellName[OwnerNumber][3] = SpellName[OwnerNumber][4]
set SpellName[OwnerNumber][4] = SpellName[OwnerNumber][5]
set SpellName[OwnerNumber][5] = SpellName[OwnerNumber][6]
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][3] ) then
set SpellName[OwnerNumber][3] = SpellName[OwnerNumber][4]
set SpellName[OwnerNumber][4] = SpellName[OwnerNumber][5]
set SpellName[OwnerNumber][5] = SpellName[OwnerNumber][6]
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][4] ) then
set SpellName[OwnerNumber][4] = SpellName[OwnerNumber][5]
set SpellName[OwnerNumber][5] = SpellName[OwnerNumber][6]
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][5] ) then
set SpellName[OwnerNumber][5] = SpellName[OwnerNumber][6]
else
endif
endif
endif
endif
endif
set SpellCount[OwnerNumber] = (SpellCount[OwnerNumber] - 1)
endif
endfunction
if ( GetClickedButton() == SpellsButtons[OwnerNumber][1] ) then
set SpellName[OwnerNumber][1] = SpellName[OwnerNumber][2]
set SpellName[OwnerNumber][2] = SpellName[OwnerNumber][3]
set SpellName[OwnerNumber][3] = SpellName[OwnerNumber][4]
set SpellName[OwnerNumber][4] = SpellName[OwnerNumber][5]
set SpellName[OwnerNumber][5] = SpellName[OwnerNumber][6]
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][2] ) then
set SpellName[OwnerNumber][2] = SpellName[OwnerNumber][3]
set SpellName[OwnerNumber][3] = SpellName[OwnerNumber][4]
set SpellName[OwnerNumber][4] = SpellName[OwnerNumber][5]
set SpellName[OwnerNumber][5] = SpellName[OwnerNumber][6]
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][3] ) then
set SpellName[OwnerNumber][3] = SpellName[OwnerNumber][4]
set SpellName[OwnerNumber][4] = SpellName[OwnerNumber][5]
set SpellName[OwnerNumber][5] = SpellName[OwnerNumber][6]
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][4] ) then
set SpellName[OwnerNumber][4] = SpellName[OwnerNumber][5]
set SpellName[OwnerNumber][5] = SpellName[OwnerNumber][6]
else
if ( GetClickedButton() == SpellsButtons[OwnerNumber][5] ) then
set SpellName[OwnerNumber][5] = SpellName[OwnerNumber][6]
else
endif
endif
endif
endif
endif
set SpellCount[OwnerNumber] = (SpellCount[OwnerNumber] - 1)
endif
endfunction
===========================================================================
function InitTrig_FUCK_IT takes nothing returns nothing
set gg_trg_FUCK_IT = CreateTrigger( )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[0] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[1] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[2] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[3] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[4] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[5] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[6] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[10] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[11] )
call TriggerAddAction( gg_trg_FUCK_IT, function Trig_FUCK_IT_Actions )
endfunction
function InitTrig_FUCK_IT takes nothing returns nothing
set gg_trg_FUCK_IT = CreateTrigger( )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[0] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[1] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[2] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[3] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[4] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[5] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[6] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[10] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[11] )
call TriggerAddAction( gg_trg_FUCK_IT, function Trig_FUCK_IT_Actions )
endfunction
ТРИГГЕР НА СОЗДАНИЕ ДИАЛОГА(При покупке предмета, в это же время он и появляется у игрока)
function Trig_MobileUpgrade_Conditions takes nothing returns boolean
return GetItemTypeId(GetSoldItem()) == 'I091'
endfunction
return GetItemTypeId(GetSoldItem()) == 'I091'
endfunction
function Trig_MobileUpgrade_Actions takes nothing returns nothing
local player Buyer = GetOwningPlayer(GetSellingUnit())
local integer BuyerNumber = GetConvertedPlayerId(GetOwningPlayer(GetSellingUnit()))
call DialogClear(SpellsMenu[BuyerNumber])
call DialogSetMessage(SpellsMenu[BuyerNumber],"Выберите способность(Улучшение)")
set bj_forLoopAIndex = 1
set bj_forLoopAIndexEnd = SpellCount[BuyerNumber]
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
set SpellsButtons[BuyerNumber][bj_forLoopAIndex] = DialogAddButton(SpellsMenu[BuyerNumber],GetObjectName(SpellName[BuyerNumber][bj_forLoopAIndex]),'A')
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
set SpellAction[BuyerNumber] = 1
call DialogDisplay( GetOwningPlayer(GetSellingUnit()), SpellsMenu[BuyerNumber], true )
local player Buyer = GetOwningPlayer(GetSellingUnit())
local integer BuyerNumber = GetConvertedPlayerId(GetOwningPlayer(GetSellingUnit()))
call DialogClear(SpellsMenu[BuyerNumber])
call DialogSetMessage(SpellsMenu[BuyerNumber],"Выберите способность(Улучшение)")
set bj_forLoopAIndex = 1
set bj_forLoopAIndexEnd = SpellCount[BuyerNumber]
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
set SpellsButtons[BuyerNumber][bj_forLoopAIndex] = DialogAddButton(SpellsMenu[BuyerNumber],GetObjectName(SpellName[BuyerNumber][bj_forLoopAIndex]),'A')
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
set SpellAction[BuyerNumber] = 1
call DialogDisplay( GetOwningPlayer(GetSellingUnit()), SpellsMenu[BuyerNumber], true )
call UnitRemoveItemSwapped( GetItemOfTypeFromUnitBJ(GetSellingUnit(), 'I091'), GetSellingUnit() )
call RemoveItem( GetLastRemovedItem() )
endfunction
===========================================================================
function InitTrig_MobileUpgrade takes nothing returns nothing
set gg_trg_MobileUpgrade = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_MobileUpgrade, EVENT_PLAYER_UNIT_SELL_ITEM )
call TriggerAddCondition( gg_trg_MobileUpgrade, Condition( function Trig_MobileUpgrade_Conditions ) )
call TriggerAddAction( gg_trg_MobileUpgrade, function Trig_MobileUpgrade_Actions )
endfunction
call RemoveItem( GetLastRemovedItem() )
endfunction
===========================================================================
function InitTrig_MobileUpgrade takes nothing returns nothing
set gg_trg_MobileUpgrade = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_MobileUpgrade, EVENT_PLAYER_UNIT_SELL_ITEM )
call TriggerAddCondition( gg_trg_MobileUpgrade, Condition( function Trig_MobileUpgrade_Conditions ) )
call TriggerAddAction( gg_trg_MobileUpgrade, function Trig_MobileUpgrade_Actions )
endfunction
ГЛОБАЛКИ КОТОРЫЕ ИСПОЛЬЗУЮТСЯ
globals
integer array SpellAction[11]
integer array SpellName[11][6]
integer array SpellCount[11]
dialog array SpellsMenu[11]
button array SpellsButtons[11][6]
endglobals
integer array SpellAction[11]
integer array SpellName[11][6]
integer array SpellCount[11]
dialog array SpellsMenu[11]
button array SpellsButtons[11][6]
endglobals
Видеоматериал, в котором я показываю, что сам диалог работает но при нажатии на кнопки ничего не происходит:
Я не хотел сюда обращаться, потому-что, это уже 3 раз когда я сюда пишу, но, после того как я 8 часов разбирался с этой проблемой, в итоге я психанул и решил всё-же обратиться сюда за помощью.
P.S, сами диалоги создаются при иницализации карты.
set SpellsMenu[1] = DialogCreate()
set SpellsMenu[2] = DialogCreate()
set SpellsMenu[3] = DialogCreate()
set SpellsMenu[4] = DialogCreate()
set SpellsMenu[5] = DialogCreate()
set SpellsMenu[6] = DialogCreate()
set SpellsMenu[10] = DialogCreate()
set SpellsMenu[11] = DialogCreate()
Принятый ответ
Решение:
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[0] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[1] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[2] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[3] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[4] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[5] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[6] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[10] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[11] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[0] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[1] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[2] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[3] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[4] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[5] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[6] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[10] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[11] )
Надо было переместить в Action триггера на создание диалога.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[0] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[1] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[2] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[3] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[4] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[5] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[6] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[10] )
call TriggerRegisterDialogEvent( gg_trg_FUCK_IT, SpellsMenu[11] )