Диалог - странная вещь однако
|
|
DeadJass | Дата: Пятница, 10 Июня 2011, 21:07:22 | Сообщение # 1 |
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
| Code function Trig_ModeSelect_Actions takes nothing returns nothing set d=DialogCreate() call DialogSetMessage(d,"Выберите мод для игры") set b[1] = DialogAddButton(d,"?????",0) set b[2] = DialogAddButton(d,"???",1) call DialogDisplay(Player(0),d,true) endfunction
//=========================================================================== function InitTrig_ModeSelect takes nothing returns nothing set gg_trg_ModeSelect = CreateTrigger( ) call TriggerRegisterTimerEventSingle( gg_trg_ModeSelect, 0.00 ) call TriggerAddAction( gg_trg_ModeSelect, function Trig_ModeSelect_Actions ) endfunction триггер создания диалога и назначения кнопок. Code function Trig_ButtonClick_Actions takes nothing returns nothing call BJDebugMsg("проверка") if GetClickedButton() == b[1] then call BJDebugMsg("проверка") endif endfunction
//=========================================================================== function InitTrig_ButtonClick takes nothing returns nothing set gg_trg_ButtonClick = CreateTrigger( ) call TriggerRegisterDialogEvent(gg_trg_ButtonClick,d) call TriggerAddAction( gg_trg_ButtonClick, function Trig_ButtonClick_Actions ) endfunction Триггер клика на кнопку b[1]-Но эффекта 0
^ кликабельно Archers Of The Island v1.8 - на стадии завершения
|
|
|
|
-Castro- | Дата: Пятница, 10 Июня 2011, 21:35:13 | Сообщение # 2 |
УГ продюсер
Группа: Ветераны
Сообщений: 2099
Награды: 3
Репутация: 1213
Блокировки:
| Попробуй кнопки не массивом
|
|
|
|
DeadJass | Дата: Пятница, 10 Июня 2011, 21:44:08 | Сообщение # 3 |
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
| -Castro-, мне нужно массивом
^ кликабельно Archers Of The Island v1.8 - на стадии завершения
|
|
|
|
-Castro- | Дата: Пятница, 10 Июня 2011, 21:45:06 | Сообщение # 4 |
УГ продюсер
Группа: Ветераны
Сообщений: 2099
Награды: 3
Репутация: 1213
Блокировки:
| я думал, что тебе нужно, чтобы работало...
|
|
|
|
DeadJass | Дата: Пятница, 10 Июня 2011, 21:46:29 | Сообщение # 5 |
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
| -Castro-, а толк тогда без массива? На каждую кнопку делать переменную,ну уж нет. есть другой выход и он найдеться
^ кликабельно Archers Of The Island v1.8 - на стадии завершения
|
|
|
|
-Castro- | Дата: Пятница, 10 Июня 2011, 21:48:18 | Сообщение # 6 |
УГ продюсер
Группа: Ветераны
Сообщений: 2099
Награды: 3
Репутация: 1213
Блокировки:
| У меня с массивами не работало... Ждем решения, может кто-то знает.
|
|
|
|
DeadJass | Дата: Пятница, 10 Июня 2011, 21:49:19 | Сообщение # 7 |
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
| -Castro-, дело в том что триггер просто не реагирует ибо нету надписи проверка
^ кликабельно Archers Of The Island v1.8 - на стадии завершения
|
|
|
|
romaN-1998 | Дата: Пятница, 10 Июня 2011, 22:57:56 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
| Quote (DeadJass) set b[1] = DialogAddButton(d,"?????",0) set b[2] = DialogAddButton(d,"???",1) b array глобалка? Quote (DeadJass) call TriggerRegisterTimerEventSingle( gg_trg_ModeSelect, 0.00 ) BJ кстати
|
|
|
|
DeadJass | Дата: Пятница, 10 Июня 2011, 23:01:51 | Сообщение # 9 |
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
| romaN-1998, сейчас мне на бж глубоко пофиг. b array офк. Ошибок никаких нету. ПРосто 2 триггер не реагирует на событие
^ кликабельно Archers Of The Island v1.8 - на стадии завершения
|
|
|
|
romaN-1998 | Дата: Пятница, 10 Июня 2011, 23:05:52 | Сообщение # 10 |
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
| Quote (DeadJass) call TriggerRegisterDialogEvent(gg_trg_ButtonClick,d) И что это регистрирует? Действия в диалоге (то есть нажатия на кнопки?) Пробуй без массива
|
|
|
|
DeadJass | Дата: Пятница, 10 Июня 2011, 23:13:39 | Сообщение # 11 |
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
| romaN-1998, да. Не глпите массив непричем
^ кликабельно Archers Of The Island v1.8 - на стадии завершения
|
|
|
|
PUVer | Дата: Пятница, 10 Июня 2011, 23:17:28 | Сообщение # 12 |
Сухопутные крысы!
Группа: Модераторы
Сообщений: 4462
Награды: 8
Репутация: 1845
Блокировки:
| DeadJass, обсуждалось много раз. Делай на каждую кнопку переменную. Массивы будут работать криво.
|
|
|
|
DeadJass | Дата: Пятница, 10 Июня 2011, 23:30:55 | Сообщение # 13 |
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
| PUVer, romaN-1998, -Castro-, проверил ваш безмассивный бред. То же самое 0 эффектов от триггера.Добавлено (10-06-2011, 23:30) --------------------------------------------- Закройте тему.переменная типа dialog не работает если она создана через globals
^ кликабельно Archers Of The Island v1.8 - на стадии завершения
|
|
|
|
ZanaraZ | Дата: Суббота, 11 Июня 2011, 09:17:47 | Сообщение # 14 |
5 уровень
Группа: Проверенные
Сообщений: 120
Награды: 0
Репутация: 28
Блокировки:
| Все работает просто руки кривыми не должны бытьQuote (DeadJass) Code function Trig_ModeSelect_Actions takes nothing returns nothing set d=DialogCreate() call DialogSetMessage(d,"Выберите мод для игры") set b[1] = DialogAddButton(d,"?????",0) set b[2] = DialogAddButton(d,"???",1) call DialogDisplay(Player(0),d,true) endfunction
//=========================================================================== function InitTrig_ModeSelect takes nothing returns nothing set gg_trg_ModeSelect = CreateTrigger( ) call TriggerRegisterTimerEventSingle( gg_trg_ModeSelect, 0.00 ) call TriggerAddAction( gg_trg_ModeSelect, function Trig_ModeSelect_Actions ) endfunction
Ошибка в коде уже нашел во первых показываеш игроку 0 (в джасе слабо варю так что...) игрока 0 вообще не существует есть игроки от 1 до 16 а во вторыз как ты вообще биндиш кнопки? Quote (DeadJass) Code function Trig_ButtonClick_Actions takes nothing returns nothing call BJDebugMsg("проверка") if GetClickedButton() == b[1] then call BJDebugMsg("проверка") endif endfunction
//=========================================================================== function InitTrig_ButtonClick takes nothing returns nothing set gg_trg_ButtonClick = CreateTrigger( ) call TriggerRegisterDialogEvent(gg_trg_ButtonClick,d) call TriggerAddAction( gg_trg_ButtonClick, function Trig_ButtonClick_Actions ) endfunction
Говорить не хочу всё неправильно триггер сделан чуть пой же напишу работающий код
Набрался мозгов, теперь буду себя сдерживать
Сообщение отредактировал ZanaraZ - Суббота, 11 Июня 2011, 09:31:53 |
|
|
|
DeadJass | Дата: Суббота, 11 Июня 2011, 09:21:00 | Сообщение # 15 |
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
| Quote (ZanaraZ) Ошибка в коде уже нашел во первых показываеш игроку 0 (в джасе слабо варю так что...) игрока 0 вообще не существует есть игроки от 1 до 14 а во вторыз как ты вообще биндиш кнопки? Игрроки в джассе от 0 до 15 я показываю игроку 0 тоесть 1 тоесть хосту.
Quote (ZanaraZ) Говорить не хочу всё неправильно триггер сделан через Что же тут не правильного Условие??)
^ кликабельно Archers Of The Island v1.8 - на стадии завершения
|
|
|
|
ZanaraZ | Дата: Суббота, 11 Июня 2011, 09:29:22 | Сообщение # 16 |
5 уровень
Группа: Проверенные
Сообщений: 120
Награды: 0
Репутация: 28
Блокировки:
| Это основной диалог (его создание)
Code function Trig_Dialog_start_Actions takes nothing returns nothing call DialogClearBJ( udg_d ) call DialogSetMessageBJ( udg_d, "Выберите мод) call DialogAddButtonBJ( udg_d, "Проверка!!!" ) set udg_b[1] = GetLastCreatedButtonBJ() call DialogAddButtonBJ( udg_d, "Проверка 2" ) set udg_b[2] = GetLastCreatedButtonBJ() call DialogDisplayBJ( true, udg_d, Player(0) ) endfunction
//=========================================================================== function InitTrig_Dialog_start takes nothing returns nothing set gg_trg_Dialog_start = CreateTrigger( ) call TriggerRegisterTimerEventSingle( gg_trg_Dialog_start, 0.01 ) call TriggerAddAction( gg_trg_Dialog_start, function Trig_Dialog_start_Actions ) endfunction
А это устанавливает что он будет делать
Code function Trig_Dialog_Func001Func001C takes nothing returns boolean if ( not ( GetClickedButtonBJ() == udg_b[2] ) ) then return false endif return true endfunction
function Trig_Dialog_Func001C takes nothing returns boolean if ( not ( GetClickedButtonBJ() == udg_b[1] ) ) then return false endif return true endfunction
function Trig_Dialog_Actions takes nothing returns nothing if ( Trig_Dialog_Func001C() ) then call DisplayTextToForce( GetPlayersAll(), "Проверка диалог работает!!!" ) else if ( Trig_Dialog_Func001Func001C() ) then call DisplayTextToForce( GetPlayersAll(), "Проверка диалог работает и создан юнит" ) call CreateNUnitsAtLoc( 1, 'hfoo', Player(0), GetRectCenter(GetPlayableMapRect()), bj_UNIT_FACING ) else endif endif endfunction
//=========================================================================== function InitTrig_Dialog takes nothing returns nothing set gg_trg_Dialog = CreateTrigger( ) call TriggerRegisterDialogEventBJ( gg_trg_Dialog, udg_d ) call TriggerAddAction( gg_trg_Dialog, function Trig_Dialog_Actions ) endfunction
Набрался мозгов, теперь буду себя сдерживать
|
|
|
|
DeadJass | Дата: Суббота, 11 Июня 2011, 09:58:41 | Сообщение # 17 |
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
| ZanaraZ, и что тут иззменилось кроме тупого конверта? я сказал что переменная типа dialog не работает если она создана через globals и в этом вся проблема.
^ кликабельно Archers Of The Island v1.8 - на стадии завершения
|
|
|
|
SirNikolas | Дата: Суббота, 11 Июня 2011, 11:31:55 | Сообщение # 18 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (DeadJass) переменная типа dialog не работает, если она создана через globals А как еще можно создавать переменные?Добавлено (11-06-2011, 11:31) --------------------------------------------- DeadJass, я понял, почему у тебя не работало! Функция InitTrig_ButtonClick вызывается при инициализации карты, в это время переменная d содержит так называемый "информационный мусор", => событие никуда не добавляется. Нужно сделать так: Code globals constant dialog d = CreateDialog() endglobals
|
|
|
|
DeadJass | Дата: Суббота, 11 Июня 2011, 11:47:05 | Сообщение # 19 |
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
| SirNikolas, спасибо! Помоголо. Теперь редактор переменных снова чист) Только констант мне не нужен)
^ кликабельно Archers Of The Island v1.8 - на стадии завершения
|
|
|
|
SirNikolas | Дата: Суббота, 11 Июня 2011, 11:48:27 | Сообщение # 20 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (DeadJass) Теперь редактор переменных снова чист) Что, абсолютно?)Quote (DeadJass) Только констант мне не нужен) Теоретически, обращение к константе должно быть немного быстрее обращения к переменной.
Сообщение отредактировал SirNikolas - Суббота, 11 Июня 2011, 11:49:43 |
|
|
|
DeadJass | Дата: Суббота, 11 Июня 2011, 11:54:53 | Сообщение # 21 |
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
| Quote (SirNikolas) Что, абсолютно?) Ага)Все в блоке глобалок. Quote (SirNikolas) Теоретически, обращение к константе должно быть немного быстрее обращения к переменной. У меня переменная d измениться в ходе игры,а имеенно при нажатии кнопки создаться диалог d но с другими кнопками.
^ кликабельно Archers Of The Island v1.8 - на стадии завершения
|
|
|
|
romaN-1998 | Дата: Суббота, 11 Июня 2011, 18:21:59 | Сообщение # 22 |
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
| ZanaraZ, Добавлено (11-06-2011, 18:21) --------------------------------------------- DeadJass, ты сделал так? Code globals dialog d endglobals
а потом её установил? Уже в коде?
|
|
|
|
SirNikolas | Дата: Суббота, 11 Июня 2011, 18:38:56 | Сообщение # 23 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| romaN-1998, Quote (SirNikolas) globals constant dialog d = CreateDialog() endglobals Quote (DeadJass) спасибо! Помоголо.
|
|
|
|