Сейчас 09:19:02 Вторник, 2 июля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
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() {}
бтв, сорри, в код не вникал


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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 ^_^


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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
Блокировки:
Вроде как есть функция показать диалог... Могу путать

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

DreiiДата: Четверг, 19 Января 2012, 17:22:42 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Ty3uK, Ну я уже показал диалог!

 

SirNikolasДата: Четверг, 19 Января 2012, 20:12:35 | Сообщение # 10
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Dreii, ты ведь уже когда-то задавал такой вопрос? Проблема в том, что ты пишешь
Code
dialog MyGlobal
, а не
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
Блокировки:
Да, только событие лучше циклом пробежать- читаемость лучше, да и правила хорошего тона в коде тоже соблюдаются ^_^

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz