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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Диалог - странная вещь однако
Диалог - странная вещь однако
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)
Говорить не хочу всё неправильно триггер сделан через

Что же тут не правильного :D :D Условие??)



^ кликабельно
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, facepalm

Добавлено (11-06-2011, 18:21)
---------------------------------------------
DeadJass, ты сделал так?

Code
globals
dialog d
endglobals


а потом её установил? Уже в коде?
 

SirNikolasДата: Суббота, 11 Июня 2011, 18:38:56 | Сообщение # 23
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
romaN-1998, facepalm
Quote (SirNikolas)
globals
constant dialog d = CreateDialog()
endglobals
Quote (DeadJass)
спасибо! Помоголо.


 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Диалог - странная вещь однако
  • Страница 1 из 1
  • 1
Поиск:

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