Добавлен Thezolotoi
Здравствуйте, у меня есть на карте рандомные герои в алтарях, хочу сразу после загрузки карты сделать голосование за мод (с рандомные героями или без изменений), прочекал много статей на данную тему но так и не понял как реализовать
Принятый ответ
Thezolotoi: Ну, вообще было бы желательно если бы ты ещё и показал, какую именно статью ты читал и какой код ты вообще написал. Я буду исходить из того, что ты наверное не понял вообще ничего (надеюсь не в обиду).
Итого, начнём с простого, создания самого диалога. Всё что нам нужно - это CreateDialog и DialogAddButton, краткий пример ниже.
Код
globals
dialog Dialog = null
button DialogButton1 = null
endglobals
function TestCreateDialog takes nothing returns nothing
set Dialog = CreateDialog( )
set DialogButton1 = DialogAddButton( Dialog, "Опция 1", 0 )
endfunction
Всё довольно просто, ведь так? Теперь добавим триггер и действие, для этого нам нужно:
Ещё код
call TriggerRegisterDialogEvent( trigger, dialog ), где dialog = это не кнопка а именно весь созданный диалог, к которому мы добавляем кнопки.
call TriggerAddAction( trigger, function FUNCTION ) где FUNCTION - это допустим ModeDialogAction:
call TriggerAddAction( trigger, function FUNCTION ) где FUNCTION - это допустим ModeDialogAction:
globals
dialog Dialog = null
button DialogButton1 = null
endglobals
function ModeDialogAction takes nothing returns nothing
if GetClickedButton( ) == DialogButton1 then
// что-то если нажатая кнопка = нужной кнопке.
endif
endfunction
function TestDialog takes nothing returns nothing
local trigger t
if Dialog == null then
set t = CreateTrigger( )
set Dialog = CreateDialog( )
set DialogButton1 = DialogAddButton( Dialog, "Опция 1", 0 )
call TriggerRegisterDialogEvent( t, Dialog )
call TriggerAddAction( t, function ModeDialogAction )
endif
set t = null
endfunction
Теперь у нас получен простенький вариант проверки нажатой кнопки, можно делать даже массив из кнопок button array, чтобы не впихивать каждую кнопку, а сделать вот так:
И опять код :)
globals
button array Buttons
endglobals
function ModeDialogAction takes nothing returns nothing
local integer i = 0
local integer max = 10
local button Button = GetClickedButton( )
loop
exitwhen i > 10
if Button = Buttons[ i ] then
// что-то делаем тут
endif
set i = i + 1
endloop
set Button = null
endfunction
А по поводу, где "редачить" Jass, всё в том же World Editor, просто нажимаешь на нужный тебе триггер -> Правка -> Преобразовать в Текст. И вуоля ГУИ-ужасня превратилась в Jass код.
Итог:
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. Unryze
call TriggerAddAction( trigger, function FUNCTION ) где FUNCTION - это допустим ModeDialogAction: