XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
Fatal Error из-за глобальных переменных
globals
        hashtable HASHTABLE = InitHashtable()
        
        unit UNIT = null
        effect EFFECT = null
        location LOCATION = Location(.0,.0)
        destructable DESTRUCTABLE = null
        rect RECT = null
        region REGION = null
        
        constant real PERIODIC_ALL = .025
        constant real MAX_X = (GetCameraBoundMinX()+512.)-50.
        constant real MIN_X = (GetCameraBoundMinX()-512.)+50.
        constant real MAX_Y = (GetCameraBoundMinY()+256.)-50.
        constant real MIN_Y = (GetCameraBoundMinY()-256.)+50.
        constant integer DUMMY_ID = 'h000'
    endglobals
Если вставить это в любую карту и обратиться к дамми или координатам - вылетит фатал еррор. Что за чертовщина???
Старый 22.10.2012, 07:18
Hanabishi
COOL STATUS
offline
Опыт: отключен
Нельзя вроде при ините эти координаты брать. Попробуй в отдельной функции после нулевого вейта или через событие прошло 0 секунд.
Старый 22.10.2012, 08:01
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,324
Активность:
Rampage, просто присвой значение переменным в функции инициализации библиотеки, вот так:
((код jass
library A Initializer Init
function Init takes nothing returns nothing
set HASHTABLE = InitHashtable( )
set MAX_X = ( GetCameraBoundMinX( ) + 512.00 ) - 50.00
set MIN_X = ( GetCameraBoundMinX( ) - 512.00 ) + 50.00
set MAX_Y = ( GetCameraBoundMinY( ) + 256.00 ) - 50.00
set MIN_Y = ( GetCameraBoundMinY( ) - 256.00 ) + 50.00
endfunction
))
Не забудь только сделать не константами...
То бывают одарённые личности, непонимающие значение слова CONSTANT
Старый 22.10.2012, 09:17
DioD

offline
Опыт: 45,134
Активность:
нельзя декларировать при ините хеш таблицу и получать корды чего либо, так как карты при ините еще нет.
Старый 22.10.2012, 10:55
влад10011

offline
Опыт: 2,337
Активность:
Цитата:
Сообщение от quq_CCCP
set HASHTABLE = InitHashtable( )

можно было сразу в globals(в globals можно сразу создавать объекты group,timer,hashtable и тд)
а вот камера создаётся после инициализации поэтому нельзя найти её координаты
Старый 22.10.2012, 11:35
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
влад10011:
можно было сразу в globals(в globals можно сразу создавать объекты group,timer,hashtable и тд)
где вы такое прочитали?
Попробуйте, присваивание переменным при инициализации таких значений, как: InitHashtable(), CreateMultiboard(), CreateGroup(), CreateTimer() вызывает критическую ошибку ВСЕГДА.
Clamp добавил:
quq_CCCP:
Rampage, просто присвой значение переменным в функции инициализации библиотеки, вот так:
((код jass
library A Initializer Init
function Init takes nothing returns nothing
set HASHTABLE = InitHashtable( )
set MAX_X = ( GetCameraBoundMinX( ) + 512.00 ) - 50.00
set MIN_X = ( GetCameraBoundMinX( ) - 512.00 ) + 50.00
set MAX_Y = ( GetCameraBoundMinY( ) + 256.00 ) - 50.00
set MIN_Y = ( GetCameraBoundMinY( ) - 256.00 ) + 50.00
endfunction
))
Не забудь только сделать не константами...
То бывают одарённые личности, непонимающие значение слова CONSTANT
Сначала проверяй@потом говори.
Про тебя очень верно высказался ADOLF:
quq_CCCP, надо попросить разработчиков сделать специальную настройку, которая запретили бы Вам писать в jass разделе: количество неправильных ответов от Вас превышает все разумные пределы.
Вот тут
Clamp добавил:
И да, оперировать с координатами можно только после полной загрузки карты, очевидно. Иначе будет ссылка на несуществующие объекты.
Старый 22.10.2012, 14:09
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
Я лично поменял только назначение координат. А с хеш-таблицой у меня ничего не фаталит. Честно.
Старый 22.10.2012, 16:40
влад10011

offline
Опыт: 2,337
Активность:
Цитата:
Сообщение от Clamp
Попробуйте, присваивание переменным при инициализации таких значений, как: InitHashtable(), CreateMultiboard(), CreateGroup(), CreateTimer() вызывает критическую ошибку ВСЕГДА.

бред, я всегда инициализирую таймеры и хеш таблицу прямо в globals, всё работает ВСЕГДА!
В глобальных переменных(при инициализации в колонке globals) можно создавать объекты, но нельзя обращаться к ним.
Цитата:
Сообщение от Rampage
Сначала проверяй@потом говори.

тоже могу сказать и тебе =_=

Отредактировано влад10011, 22.10.2012 в 16:55.
Старый 22.10.2012, 16:46
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
Ок, не всегда. И тем не менее я теперь при их инициализации даю таймером отсрочку в .04 секунды, ибо критовало.
Clamp добавил:
тоже могу сказать и тебе =_=
не можешь, он бред написал.
Старый 22.10.2012, 16:55
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,324
Активность:
Clamp, не понял юмора... Что тебе не нравится в этом способе?
Старый 22.10.2012, 18:00
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
quq_CCCP, этот способ идентичен практически.
Rampage добавил:
С начальным.
Старый 22.10.2012, 18:31
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,324
Активность:
Rampage, только фаталов не вызывает... Инитить хеш таблицу и создавать локейшены, ректы и тп. самое то именно таким способом...
Старый 22.10.2012, 18:36
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
quq_CCCP:
Clamp, не понял юмора... Что тебе не нравится в этом способе?
Нуу, наверное то, что ты ОПЯТЬ вызываешь функции, возвращающие координаты до того, как вар отрисует карту...
Иди и протести в редакторе, подтверди слова Адольфа.
Старый 22.10.2012, 18:48
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,324
Активность:
Clamp, по идеи точно тогда же когда будут создаваться юниты, камеры и ректы, сознанные на карте в редакторе... перед объявлением всех триггеров, и после инита бж...
ну в моей карте работает, не было фатала, скачай да глянь...
Старый 22.10.2012, 18:56
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
в ласт сжассе можно инит хт делать при объявлении глобалки
Старый 22.10.2012, 20:54
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
cJass?
((код jass
library A Initializer Init
function Init takes nothing returns nothing
set HASHTABLE = InitHashtable( )
set MAX_X = ( GetCameraBoundMinX( ) + 512.00 ) - 50.00
set MIN_X = ( GetCameraBoundMinX( ) - 512.00 ) + 50.00
set MAX_Y = ( GetCameraBoundMinY( ) + 256.00 ) - 50.00
set MIN_Y = ( GetCameraBoundMinY( ) - 256.00 ) + 50.00
endfunction
))
Старый 22.10.2012, 21:09
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,324
Активность:
Clamp, Rampage, Вот разявили на меня рот, а сами мой способ не проверили, нету никакого фатала и быть не может, почитайте vJass мануал, раздел библиотеки...
А чтобы у вас совсем не осталось сомнений, вот вам карта пример
Прикрепленные файлы
Тип файла: w3x Кто то такой тролль.w3x (18.7 Кбайт, 1 просмотров )
Старый 23.10.2012, 05:25
DioD

offline
Опыт: 45,134
Активность:
инит переменных и инит карты это РАЗНЫЕ ВЕЩИ\
если вам возможно будет понятнее
>>нельзя декларировать при ините хеш таблицу
нельзя в блоке инициализации глобальных переменных создавать хеш таблицу и 100500 других вещей потому что гладиолус
Старый 23.10.2012, 12:22
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 16:05.