Сейчас 18:00:54 Понедельник, 25 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] Undeclared variable
NypДата: Понедельник, 27 Февраля 2012, 22:22:11 | Сообщение # 1
6 уровень
Группа: Проверенные
Сообщений: 217
Награды: 0
Репутация: 56
Блокировки:
Code
function iniAc takes nothing returns nothing
     set udg_cc_players[13] = "|cFF404040"
     set udg_cc_players[14] = "|cFFE0E0E0"
     set udg_cc_players[0] = "|cFF008080"
     set udg_cc_players[1] = "|cFFFF0000"
     set udg_cc_players[2] = "|cFF0000FF"
     set udg_cc_players[3] = "|cFFFFFF00"
     set udg_cc_players[4] = "|cFF800080"
     set udg_cc_players[5] = "|cFF00FFFF"
     set udg_cc_players[6] = "|cFF0080FF"
     set udg_cc_players[7] = "|cFF00FF00"
     set udg_cc_players[8] = "|cFFFF00FF"
     set udg_cc_players[9] = "|cFF808080"
     set udg_cc_players[10] = "|cFFFFC0C0"
     set udg_cc_players[11] = "|cFF004000"
     set udg_cc_players[12] = "|cFF764800"
     set udg_cc_endtag = "|r"
     set udg_obciicmerti[1] = 0
     set udg_obciicmerti[2] = 0
     set udg_team_score[1] = 0
     set udg_team_score[2] = 0
endfunction

//===========================================================================
function InitTrig_ini takes nothing returns nothing
     local trigger trig = CreateTrigger()
     call TriggerAddAction( trig, function iniAc )
endfunction

Народ, вот тригер инициализации, тут присваиваются значение глобалкам, с типом Строка, на код цвета, а целочисленнім - 0. В JNPG при проверке на ошибки, выводит 4 их:
Undeclared variable udg_team_score
Undeclared variable udg_obciicmerti
Undeclared variable udg_cc_endtag
Undeclared variable udg_cc_players
Необьявленные переменные? Если да, то как их обьявить, это же глобалки?
 

DreiiДата: Понедельник, 27 Февраля 2012, 23:01:20 | Сообщение # 2
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Nyp, в редакторе глобалок офк
лиюо в блоке globals

Добавлено (27 Февраль 2012, 23:01:20)
---------------------------------------------
Quote (Nyp)
local trigger trig = CreateTrigger()

Чем глобальный не устроил? Если локальный делаешь то обнули его




Сообщение отредактировал Dreii - Понедельник, 27 Февраля 2012, 23:01:48
 

NypДата: Понедельник, 27 Февраля 2012, 23:06:58 | Сообщение # 3
6 уровень
Группа: Проверенные
Сообщений: 217
Награды: 0
Репутация: 56
Блокировки:
Quote (Dreii)
Чем глобальный не устроил? Если локальный делаешь то обнули его

Точно, забыл обнулить
Quote (Dreii)
в редакторе глобалок офк лиюо в блоке globals

Не понял...
 

oleg_best_olegДата: Понедельник, 27 Февраля 2012, 23:35:08 | Сообщение # 4
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
Quote (Nyp)
Не понял...

Вроде бы в шапке карты:

globals
...
endglobals


Сообщение отредактировал oleg_best_oleg - Понедельник, 27 Февраля 2012, 23:35:28
 

BorodachДата: Вторник, 28 Февраля 2012, 03:50:28 | Сообщение # 5
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
Nyp, Может ты не задал им массив hmm

Karamba
 

Ty3uKДата: Вторник, 28 Февраля 2012, 08:03:34 | Сообщение # 6
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Он бы тогда написал udg_team_score is not array. А вообще, раздел по жассу создали просто так?

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

SirNikolasДата: Вторник, 28 Февраля 2012, 11:41:28 | Сообщение # 7
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Ty3uK)
А вообще, раздел по жассу создали просто так?
Наверное, чтоб модераторы перекидывали туда темы.

Жми Ctrl+B, вписывай переменные, но без udg_. А также перенеси все действия в функцию InitTrig_ini. Естественно, никаких триггеров создавать не надо, ни локальных, ни глобальных.

Добавлено (28 Февраль 2012, 11:41:28)
---------------------------------------------
Стоп, я понял, в чем ошибка. Ты ведь жал кнопку "Syntax check"? Она проверяет синтаксис только в пределах одного триггера, а глобалки объявляются в самом верху кода. Перемести карту так, чтобы в пути не было русских букв, сохрани. Если не выдаст ошибку, значит, все нормально.

А действия в функцию InitTrig_ все равно надо перенести.


 

NypДата: Вторник, 28 Февраля 2012, 17:57:54 | Сообщение # 8
6 уровень
Группа: Проверенные
Сообщений: 217
Награды: 0
Репутация: 56
Блокировки:
Quote (SirNikolas)
Жми Ctrl+B, вписывай переменные, но без udg_.

Я конвентировал триггер, поэтому переменные вписаны.
Quote (SirNikolas)
А также перенеси все действия в функцию InitTrig_ini. Естественно, никаких триггеров создавать не надо, ни локальных, ни глобальных.

Code
function InitTrig_ini takes nothing returns nothing
     set udg_cc_players[13] = "|cFF404040"
     set udg_cc_players[14] = "|cFFE0E0E0"
     set udg_cc_players[0] = "|cFF008080"
     set udg_cc_players[1] = "|cFFFF0000"
     set udg_cc_players[2] = "|cFF0000FF"
     set udg_cc_players[3] = "|cFFFFFF00"
     set udg_cc_players[4] = "|cFF800080"
     set udg_cc_players[5] = "|cFF00FFFF"
     set udg_cc_players[6] = "|cFF0080FF"
     set udg_cc_players[7] = "|cFF00FF00"
     set udg_cc_players[8] = "|cFFFF00FF"
     set udg_cc_players[9] = "|cFF808080"
     set udg_cc_players[10] = "|cFFFFC0C0"
     set udg_cc_players[11] = "|cFF004000"
     set udg_cc_players[12] = "|cFF764800"
     set udg_cc_endtag = "|r"
     set udg_obciicmerti[1] = 0
     set udg_obciicmerti[2] = 0
     set udg_team_score[1] = 0
     set udg_team_score[2] = 0
endfunction

Так перенести? А почему тригер создавать не надо, или, вопрос наоборот - зачем пишут эту строку, т.е. приравнивают к переменной созданный тригер?
Code
local trigger trig = CreateTrigger()

Далее: да, жал Syntax check. Я переместил карту в папку с путём "D:\Gran" , но всё равно ошибка в синтаксисе.
 

DreiiДата: Вторник, 28 Февраля 2012, 20:10:31 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Nyp, Ctrl+b созадешь переменные

потом в триггере init присваеваешь их
Code
function iniAc takes nothing returns nothing   
       set udg_cc_players[13] = "|cFF404040"   
       set udg_cc_players[14] = "|cFFE0E0E0"   
       set udg_cc_players[0] = "|cFF008080"   
       set udg_cc_players[1] = "|cFFFF0000"   
       set udg_cc_players[2] = "|cFF0000FF"   
       set udg_cc_players[3] = "|cFFFFFF00"   
       set udg_cc_players[4] = "|cFF800080"   
       set udg_cc_players[5] = "|cFF00FFFF"   
       set udg_cc_players[6] = "|cFF0080FF"   
       set udg_cc_players[7] = "|cFF00FF00"   
       set udg_cc_players[8] = "|cFFFF00FF"   
       set udg_cc_players[9] = "|cFF808080"   
       set udg_cc_players[10] = "|cFFFFC0C0"   
       set udg_cc_players[11] = "|cFF004000"   
       set udg_cc_players[12] = "|cFF764800"   
       set udg_cc_endtag = "|r"   
       set udg_obciicmerti[1] = 0   
       set udg_obciicmerti[2] = 0   
       set udg_team_score[1] = 0   
       set udg_team_score[2] = 0   
   endfunction   

   //===========================================================================   
   function InitTrig_ini takes nothing returns nothing   
       set gg_trg_ini = CreateTrigger()   
       //Тут добавляешь событие на срабатывание
       call TriggerAddAction( ini, function iniAc )
endfunction




Сообщение отредактировал Dreii - Вторник, 28 Февраля 2012, 20:12:03
 

SirNikolasДата: Среда, 29 Февраля 2012, 15:17:38 | Сообщение # 10
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Dreii)
//Тут добавляешь событие на срабатывание
Событие на срабатывание - инициализация карты, так что тут есть несколько интересных моментов. Во-первых, после вызова функции InitTrig_ini будет сделан ConditionalTriggerExecute(ggtrg_GlobalTrigger), который ты не используешь => данный инит выполнен не будет. А во-вторых, зачем инициализировать через TriggerExecute, когда можно просто все вписать в одну функцию?
Кстати, не забудь снять галочку инита (вверху).
Quote (Nyp)
да, жал Syntax check. Я переместил карту в папку с путём "D:\Gran" , но всё равно ошибка в синтаксисе.
Сохраняешь карту. Если при сохранении не выдаст ошибки, значит, ее нет. Просто кнопка "Syntax check" недоработана.
Quote (SirNikolas)
Она проверяет синтаксис только в пределах одного триггера, а глобалки объявляются в самом верху кода.


 

NypДата: Среда, 29 Февраля 2012, 21:36:54 | Сообщение # 11
6 уровень
Группа: Проверенные
Сообщений: 217
Награды: 0
Репутация: 56
Блокировки:
Насчёт Syntax check понятно, спасибо.
Вот только интересно: если эти строки
Code
local trigger trig = CreateTrigger()
Code
set gg_trg_ini = CreateTrigger()

означают приравнивание тригера к переменной (как, например, set udg_Caster = GetLastCreatedUnit() ), то зачем это вообще делать, если на протяжении игры я не буду к переменной обращаться, или это надо для игры?
Quote (Dreii)
Чем глобальный не устроил? Если локальный делаешь то обнули его

А почему глобальный обнулять не надо?
 

DreiiДата: Среда, 29 Февраля 2012, 21:39:25 | Сообщение # 12
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (Nyp)
А почему глобальный обнулять не надо?

Да хз спроси у Николаса


 

llkaДата: Четверг, 01 Марта 2012, 10:14:10 | Сообщение # 13
4 уровень
Группа: Пользователи
Сообщений: 88
Награды: 0
Репутация: 34
Блокировки:
А зачем вообще локальный триггер в инициализации?
Можно просто написать в ините call ExecuteFunc("") или просто call ФункцияИнита()
 

SirNikolasДата: Четверг, 01 Марта 2012, 11:35:38 | Сообщение # 14
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Nyp)
означают приравнивание тригера к переменной
Означают создание триггера и запись ссылки на него в переменную. Чтобы потом в этот триггер добавить условия, события и действия.
Quote (Nyp)
А почему глобальный обнулять не надо?
Потому что он используется в других функциях. Очевидно же.
Quote (llka)
А зачем вообще локальный триггер в инициализации?
Можно просто написать в ините call ExecuteFunc("") или просто call ФункцияИнита()
А можно действия поместить в инит, как в посте №8.


 

NypДата: Четверг, 01 Марта 2012, 20:10:11 | Сообщение # 15
6 уровень
Группа: Проверенные
Сообщений: 217
Награды: 0
Репутация: 56
Блокировки:
Всем спс. Самый оптимальный вариант, как мне кажется, остаётся таким:
Code
   function InitTrig_ini takes nothing returns nothing
     local trigger trig = CreateTrigger()
     set udg_cc_players[13] = "|cFF404040"
     set udg_cc_players[14] = "|cFFE0E0E0"
     set udg_cc_players[0] = "|cFF008080"
     set udg_cc_players[1] = "|cFFFF0000"
     set udg_cc_players[2] = "|cFF0000FF"
     set udg_cc_players[3] = "|cFFFFFF00"
     set udg_cc_players[4] = "|cFF800080"
     set udg_cc_players[5] = "|cFF00FFFF"
     set udg_cc_players[6] = "|cFF0080FF"
     set udg_cc_players[7] = "|cFF00FF00"
     set udg_cc_players[8] = "|cFFFF00FF"
     set udg_cc_players[9] = "|cFF808080"
     set udg_cc_players[10] = "|cFFFFC0C0"
     set udg_cc_players[11] = "|cFF004000"
     set udg_cc_players[12] = "|cFF764800"
     set udg_cc_endtag = "|r"
     set udg_obciicmerti[1] = 0
     set udg_obciicmerti[2] = 0
     set udg_team_score[1] = 0
     set udg_team_score[2] = 0
     set trig = null
endfunction
 

Ty3uKДата: Четверг, 01 Марта 2012, 21:47:15 | Сообщение # 16
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Триггер еще можно уничтожить в этом случае. Хотя локальные все равно не вытираются из памяти нормально

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

NypДата: Четверг, 01 Марта 2012, 22:10:38 | Сообщение # 17
6 уровень
Группа: Проверенные
Сообщений: 217
Награды: 0
Репутация: 56
Блокировки:
Quote (Ty3uK)
Триггер еще можно уничтожить в этом случае. Хотя локальные все равно не вытираются из памяти нормально

Тогда пусть будет так::
Code
function InitTrig_ini takes nothing returns nothing
     set gg_trg_ini = CreateTrigger()
     set udg_cc_players[13] = "|cFF404040"
     set udg_cc_players[14] = "|cFFE0E0E0"
     set udg_cc_players[0] = "|cFF008080"
     set udg_cc_players[1] = "|cFFFF0000"
     set udg_cc_players[2] = "|cFF0000FF"
     set udg_cc_players[3] = "|cFFFFFF00"
     set udg_cc_players[4] = "|cFF800080"
     set udg_cc_players[5] = "|cFF00FFFF"
     set udg_cc_players[6] = "|cFF0080FF"
     set udg_cc_players[7] = "|cFF00FF00"
     set udg_cc_players[8] = "|cFFFF00FF"
     set udg_cc_players[9] = "|cFF808080"
     set udg_cc_players[10] = "|cFFFFC0C0"
     set udg_cc_players[11] = "|cFF004000"
     set udg_cc_players[12] = "|cFF764800"
     set udg_cc_endtag = "|r"
     set udg_obciicmerti[1] = 0
     set udg_obciicmerti[2] = 0
     set udg_team_score[1] = 0
     set udg_team_score[2] = 0
     call DestroyTrigger(gg_trg_ini)
     set gg_trg_ini = null
endfunction
 

SirNikolasДата: Пятница, 02 Марта 2012, 12:28:48 | Сообщение # 18
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Nyp)
Самый оптимальный вариант, как мне кажется, остаётся таким:
Самый оптимальный вариант - в посте №8. Тебе вообще не нужны здесь триггеры.


 

NypДата: Пятница, 02 Марта 2012, 16:43:46 | Сообщение # 19
6 уровень
Группа: Проверенные
Сообщений: 217
Награды: 0
Репутация: 56
Блокировки:
Значит если не использовать присоединение действий, событий, условий, то можно вообще не записывать тригер в переменную...Ок, сделаю как в посте № 8, спс!
 

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

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