Dialog and DialogButtons
|
|
Dreii | Дата: Четверг, 19 Января 2012, 16:22:29 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Создаю диалог с кнопками: Code dialog Duel button array Opp
Code function Trig_CreateDialog_Actions takes nothing returns nothing player p=GetTriggerPlayer() int i=0 Duel=DialogCreate() DialogSetMessage(Duel,"Choose opponents!") whilenot i>11 { if Player(i)!=p { Opp[i]=DialogAddButton(Duel,pc[i]+GetPlayerName(Player(i))+" [ "+I2S(lvl[i])+" ] ",0) } i++ } Opp[i+1]=DialogAddButton(Duel,"Cancel",0) DialogDisplay(p,Duel,true) p=null endfunction
//=========================================================================== function InitTrig_CreateDialog takes nothing returns nothing set gg_trg_CreateDialog = CreateTrigger( ) call TriggerRegisterPlayerEvent(gg_trg_CreateDialog, Player(0), EVENT_PLAYER_END_CINEMATIC) call TriggerRegisterPlayerEvent(gg_trg_CreateDialog, Player(1), EVENT_PLAYER_END_CINEMATIC) call TriggerRegisterPlayerEvent(gg_trg_CreateDialog, Player(2), EVENT_PLAYER_END_CINEMATIC) call TriggerRegisterPlayerEvent(gg_trg_CreateDialog, Player(3), EVENT_PLAYER_END_CINEMATIC) call TriggerRegisterPlayerEvent(gg_trg_CreateDialog, Player(4), EVENT_PLAYER_END_CINEMATIC) call TriggerRegisterPlayerEvent(gg_trg_CreateDialog, Player(5), EVENT_PLAYER_END_CINEMATIC) call TriggerRegisterPlayerEvent(gg_trg_CreateDialog, Player(6), EVENT_PLAYER_END_CINEMATIC) call TriggerRegisterPlayerEvent(gg_trg_CreateDialog, Player(7), EVENT_PLAYER_END_CINEMATIC) call TriggerRegisterPlayerEvent(gg_trg_CreateDialog, Player(8), EVENT_PLAYER_END_CINEMATIC) call TriggerRegisterPlayerEvent(gg_trg_CreateDialog, Player(9), EVENT_PLAYER_END_CINEMATIC) call TriggerRegisterPlayerEvent(gg_trg_CreateDialog, Player(10), EVENT_PLAYER_END_CINEMATIC) call TriggerRegisterPlayerEvent(gg_trg_CreateDialog, Player(11), EVENT_PLAYER_END_CINEMATIC) call TriggerAddAction( gg_trg_CreateDialog, function Trig_CreateDialog_Actions ) endfunction
и событие на кнопки:
Code function Trig_PressButtons_Actions takes nothing returns nothing int i=0 whilenot i>11 { if GetClickedButton()==Opp[i] { BJDebugMsg("Clicked button number: "+I2S(i)) } i++ } endfunction
//=========================================================================== function InitTrig_PressButtons takes nothing returns nothing set gg_trg_PressButtons = CreateTrigger( ) call TriggerRegisterDialogEvent( gg_trg_PressButtons,Duel) call TriggerAddAction( gg_trg_PressButtons, function Trig_PressButtons_Actions ) endfunction
События не работают. И еще Code DialogDisplay(p,Duel,true) покажет ТОЛЬКО игроку p или покажет также всем.
Диалоги недавно решил сделать первый раз работают с ними.
|
|
|
|
Ty3uK | Дата: Четверг, 19 Января 2012, 16:36:29 | Сообщение # 2 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Почему бы не писатьCode void Trig_CreateDialog_Actions() {} бтв, сорри, в код не вникал
|
|
|
|
Dreii | Дата: Четверг, 19 Января 2012, 16:42:21 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Ty3uK, зачем? всеравно транслируется в function,зачем переписывать написанное.
|
|
|
|
Ty3uK | Дата: Четверг, 19 Января 2012, 16:45:04 | Сообщение # 4 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Встречался с подобной траблой, когда пытался сравнить регион из бж в инитфунке с регионом в массиве- не сошлись хэндлы, когда сделал дебаг. Проведи такой же дебаг, нажав на заведомо известную кнопку и сравни числа Добавлено (19 Январь 2012, 16:45:04) --------------------------------------------- Код выглядит более сишнее и опрятнее. А еще я всегда точку с запятой ставлю в конце каждой строки. Привычка после js
|
|
|
|
Dreii | Дата: Четверг, 19 Января 2012, 16:46:04 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Ty3uK, Quote (Ty3uK) Встречался с подобной траблой, когда пытался сравнить регион из бж в инитфунке с регионом в массиве- не сошлись хэндлы, когда сделал дебаг. Проведи такой же дебаг, нажав на заведомо известную кнопку и сравни числа Событие не реагирует не на одну кнопку этого диалога!
|
|
|
|
lawson | Дата: Четверг, 19 Января 2012, 16:52:21 | Сообщение # 6 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Ty3uK) Привычка после js Мне cJASS очень помог разобратся в синтаксисе С#. Так как привык к ECMAScript было сложно сначала писать в Visual Studio.Добавлено (19 Январь 2012, 16:52:21) --------------------------------------------- Dreii, А может быть это событие не для кнопок а для всего диалога!?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
Dreii | Дата: Четверг, 19 Января 2012, 16:56:56 | Сообщение # 7 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| lawson, Собтыие взято из ГУИ
|
|
|
|
Ty3uK | Дата: Четверг, 19 Января 2012, 17:00:03 | Сообщение # 8 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Вроде как есть функция показать диалог... Могу путать
|
|
|
|
Dreii | Дата: Четверг, 19 Января 2012, 17:22:42 | Сообщение # 9 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Ty3uK, Ну я уже показал диалог!
|
|
|
|
SirNikolas | Дата: Четверг, 19 Января 2012, 20:12:35 | Сообщение # 10 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Dreii, ты ведь уже когда-то задавал такой вопрос? Проблема в том, что ты пишешь, а неCode constant /*ну, это просто так, для красоты*/ dialog MyGlobal = CreateDialog() Добавлено (19 Январь 2012, 20:12:35) --------------------------------------------- Если внимательно изучить GUI, можно заметить, что там так и сделано (благодаря чему все и работает).
|
|
|
|
Dreii | Дата: Четверг, 19 Января 2012, 20:57:25 | Сообщение # 11 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| SirNikolas, Точно!Спасибо(Как всегда)! Еще вопрос,этот диалог покажет же только тому игроку кто нажал ESC(судя по вышеизложеному коду)?
|
|
|
|
Ty3uK | Дата: Четверг, 19 Января 2012, 21:02:59 | Сообщение # 12 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Да, только событие лучше циклом пробежать- читаемость лучше, да и правила хорошего тона в коде тоже соблюдаются
|
|
|
|