Здравствуйте, у меня есть на карте рандомные герои в алтарях, хочу сразу после загрузки карты сделать голосование за мод (с рандомные героями или без изменений), прочекал много статей на данную тему но так и не понял как реализовать

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:
	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 код.
Итог:
`
ОЖИДАНИЕ РЕКЛАМЫ...
28
ну ты диалог вообще умеешь делать? если да, то добавь массив целочисленной и обычную целочисленную кол-ва игроков которые должны проголосовать, в зависимости от кнопки добавляешь нужной целочисленной единичку, снижаешь кол-во проголосовавших игроков, когда их станет 0, то сравниваешь какое число самое больше, от него и выбираешь мод, можно так же добавить таймер если какой-то игрок специально не будет ничего нажимать, чтобы испортить другим игру
1
ну ты диалог вообще умеешь делать? если да, то добавь массив целочисленной и обычную целочисленную кол-ва игроков которые должны проголосовать, в зависимости от кнопки добавляешь нужной целочисленной единичку, снижаешь кол-во проголосовавших игроков, когда их станет 0, то сравниваешь какое число самое больше, от него и выбираешь мод, можно так же добавить таймер если какой-то игрок специально не будет ничего нажимать, чтобы испортить другим игру
Как раз дело в том что я не понимаю логики работы данного кода, хотя и нормально разбераюсь в некоторых ЯП
28
Thezolotoi, да я сам диалоги кодом никогда не делал, только гуи, хоть недавно и приходилось всю эту дичь на джасс переводить, могу сделать если никто не преуспеет раньше, нужно на гуи или джассе? если второе, то надеюсь можно через вджасс
1
Желательно и на gui , и на jass.Ша почекал в инете и понял что это ЯП но где его редачить так и не нашел

А так-же есть вопрос можно-ли через тригерры как-то изменить список войск которых можно нанять например в алтаре ?
20
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:
	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 код.
Итог:
Принятый ответ
Этот комментарий удален
Чтобы оставить комментарий, пожалуйста, войдите на сайт.