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

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

Ответ
 
Rizen

offline
Опыт: 2,126
Активность:
Вопрос по теории переменных
Интересует то, как работают переменные. К примеру, у меня есть 10 героев, играющих на карте. Если я использую одну переменную Temp_Point и, к примеру, сразу 3 персонажа начнут применять разные способности, использующие эту переменную, что из этого будет? Я предполагаю, что если в способностях используются Wait'ы, ничего хорошего из этого не получится, а если их нет? Что насчет массивов, они могут как-то решить данную проблему? В карте очень много скиллов, лишние переменные плодить не хочется, а переменные вида Temp_Point[24] неудобны и не понятны. Хэш-таблицы - выход из такой ситуации?
Старый 02.11.2012, 09:50
Темак
jass for everyone
offline
Опыт: 7,200
Активность:
Rizen:
К примеру, у меня есть 10 героев, играющих на карте. Если я использую одну переменную Temp_Point и, к примеру, сразу 3 персонажа начнут применять разные способности, использующие эту переменную, что из этого будет?
без использования wait'ов скиллы активируют нужные тебе события в порядке использования (даже если между ними прошли тысячные секунды) и всё пройдет нормально. Нужно просто уяснить что такое поток. Поток - это порядок действия функций который можно прервать только вейтами. и никак иначе, если ты сделаешь гигантскую библиотеку с сотней циклов и функций, то только её ничто не прервет пока она не отработает все свои функции. Но из-за этого могут появится лаги, потому что библиотека как-раз не будет давать другим функциям работать (очередь забьется и комп может полностью зависнуть)
так я понимаю поток.
Кстати именно поэтому гуи априори - уг. Потому что в ней используется огромное количество ненужных проверок и функций.
Rizen:
Хэш-таблицы - выход из такой ситуации?
да

Отредактировано Temak1, 02.11.2012 в 10:51.
Старый 02.11.2012, 10:44
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
хештейбл выход? лолшто?
ваш выход это использование локалок и таймеров и только плюс к этому хт.
Старый 02.11.2012, 11:01
DioD

offline
Опыт: 45,134
Активность:
джаз идёт в один поток, никогда ничто не произойдёт "одновременно".
если нет nested потоков и триггер слипов то одна глобалка на всё реально и безопасно.
nested это итераторы групп и прочая чепуха.
Старый 02.11.2012, 13:59
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,494
Активность:
Rizen, Да не бойся, если вейты не юзать, то можно и бж переменные использовать, никакого вреда не будет, хештаблица тут вовсе не обязательна, можно создать штук 5 глобалок, разного типа и юзать во всех триггеров где действия выполняются сразу, без вейтов...
необязательно, но тем не мене важно
Список полезных глобальных переменных Blizzard:
((код jass
unit bj_lastCreatedUnit
unit bj_lastReplasedUnit
player bj_groupEnumOwningPlayer
hashtable bj_lastCreatedHashtable
полный список смотри в blizzard j, или в функции InitBlizzardGlobals
))
Старый 02.11.2012, 14:31
Ответ

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

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

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

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



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