Локальные переменные и переодические события
|
|
GodOfDead | Дата: Вторник, 04 Ноября 2014, 14:21:04 | Сообщение # 1 |
7 уровень
Группа: Проверенные
Сообщений: 302
Награды: 0
Репутация: 115
Блокировки:
| У меня имеется локальная переменная f. В нее записывается юнит, который кастует способность. Но в конце триггера должно запускаться переодическое событие (т. е. - другой триггер), в котором этого чувачка двигают. Но, поскольку оно переодическое, если делать просто так, то значение переменной обязательно собьется - ведь взаимодействия с локальной переменной не добиться, она в другом триггере осталась. Вопрос - можно ли как-нибудь поместить это самое переодическое событие в первый триггер, не создавая отдельный? В жассе я пока не особо разбираюсь, и это мягко сказано.
Если ты не знаешь кто это ---> , то ты оочень многое упустил в своей жизни...
|
|
|
|
Srezi | Дата: Вторник, 04 Ноября 2014, 16:38:09 | Сообщение # 2 |
7 уровень
Группа: Проверенные
Сообщений: 414
Награды: 0
Репутация: 116
Блокировки:
| Сохранить переменную в хештаблицу и работать с ней в другом триггере.
Нет места чести на войне, Враг церемониться не будет, Убей его любым путём, Ведь победителей не судят.
|
|
|
|
Bibo | Дата: Вторник, 04 Ноября 2014, 16:52:14 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Как на счет этого? Товарищ все таки старался.
|
|
|
|
Srezi | Дата: Вторник, 04 Ноября 2014, 17:01:20 | Сообщение # 4 |
7 уровень
Группа: Проверенные
Сообщений: 414
Награды: 0
Репутация: 116
Блокировки:
| Парень же написал, что он даун и Jass ему не надо показывать. Он хочет быть всея тригерщиком и работать только в графическом интерфейсе gUi.
Нет места чести на войне, Враг церемониться не будет, Убей его любым путём, Ведь победителей не судят.
|
|
|
|
GodOfDead | Дата: Вторник, 04 Ноября 2014, 17:31:45 | Сообщение # 5 |
7 уровень
Группа: Проверенные
Сообщений: 302
Награды: 0
Репутация: 115
Блокировки:
| Srezi, а ты добрый, я смотрю Bibo, меня здесь больше смущает то, что переодическое событие обращается к нормальной переменной, и получается, что если в него я внесу set flyer=f, то эти значения будут друг друга перебивать, у события ж кд 0.01 секунды
Если ты не знаешь кто это ---> , то ты оочень многое упустил в своей жизни...
|
|
|
|
Srezi | Дата: Вторник, 04 Ноября 2014, 17:35:15 | Сообщение # 6 |
7 уровень
Группа: Проверенные
Сообщений: 414
Награды: 0
Репутация: 116
Блокировки:
| 0.01, это что за периодик. Зачем? 0.05 с лихвой хватит.
Нет места чести на войне, Враг церемониться не будет, Убей его любым путём, Ведь победителей не судят.
|
|
|
|
GodOfDead | Дата: Вторник, 04 Ноября 2014, 17:52:56 | Сообщение # 7 |
7 уровень
Группа: Проверенные
Сообщений: 302
Награды: 0
Репутация: 115
Блокировки:
| Srezi, 0.05? Хм. Надо проверить, останется ли таким же плавным движение...
Если ты не знаешь кто это ---> , то ты оочень многое упустил в своей жизни...
|
|
|
|
Srezi | Дата: Вторник, 04 Ноября 2014, 18:25:58 | Сообщение # 8 |
7 уровень
Группа: Проверенные
Сообщений: 414
Награды: 0
Репутация: 116
Блокировки:
| Человек воспринимает 24 кадра в секунду. 100 он не воспринимает. Я не зря тебя назвал тем, кем назвал.
Нет места чести на войне, Враг церемониться не будет, Убей его любым путём, Ведь победителей не судят.
|
|
|
|
GodOfDead | Дата: Вторник, 04 Ноября 2014, 18:50:34 | Сообщение # 9 |
7 уровень
Группа: Проверенные
Сообщений: 302
Награды: 0
Репутация: 115
Блокировки:
| Srezi, не, ты все-таки не понял. Ну ладно, не буду вдаваться в пояснения. При 0.05 таки заметны рывки при движении, а вот 0.04 подходит почти идеально
Если ты не знаешь кто это ---> , то ты оочень многое упустил в своей жизни...
|
|
|
|
Bibo | Дата: Вторник, 04 Ноября 2014, 19:15:13 | Сообщение # 10 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Цитата GodOfDead ( ) Bibo, меня здесь больше смущает то, что переодическое событие обращается к нормальной переменной, и получается, что если в него я внесу set flyer=f, то эти значения будут друг друга перебивать, у события ж кд 0.01 секунды Что такое "Нормальная" переменная? Мне знакомы только глобальные и локальные переменные. Глобальными же переменными являются и те, что создаются в разделе переменных редактора триггеров. Передать напрямую в другой триггер значение локальной переменной никак нельзя, для этого нужно использовать глобальные переменные. Передаем данные из локальной переменной в глобальную, после чего, во втором триггере, забираем эти данные из глобальной переменной. Теперь как это осуществить MUIшно. Если посредством жасса, то используем хэш-таблицу, как рассказано в статье по ссылке. Если посредством только GUI. То... То нам нужно много глобальных переменных. Чтобы значения не сбивались, для каждого объекта нужна своя глобальная переменная. Для таких тривиальных целей существуют массивы. Мы должны будем в первом триггере задать цикл, в котором будем проверять каждую ячейку массива, свободна она или занята. Как только находим первую свободную, записываем в нее данные и завершаем работу триггера. Во втором(периодическом) триггере, мы снова задаем цикл, посредством которого опять перебираем каждую ячейку массива, выполняем нужные действия и освобождаем ее(если от информации хранящейся в этой ячейке более ничего не требуется).
P.S. самый оптимальный вариант интервала для движения - 0.02 сек. Меньше бессмыслено, разницы не видно. Больше - начинает заметно дергаться. В "ужасная нагрузка на компьютер из-за маленького инетрвала", не верь, это зависит уже не от интервала, от заданного алгоритма.
|
|
|
|
GodOfDead | Дата: Вторник, 04 Ноября 2014, 19:25:06 | Сообщение # 11 |
7 уровень
Группа: Проверенные
Сообщений: 302
Награды: 0
Репутация: 115
Блокировки:
| Bibo, вот я на 0.02 все-таки и остановился, хотя 0.03 тоже вроде ничего так. Нормальными переменными я называю глобальные, не привык к терминологии еще. В результате у меня вышла неудобоваримая конструкция из жасса, в которой осталась одна проблема - как научить моего юнита попадать на возвышенности/падать в низины. Насчет этого я вообще без понятия как делать.
P. S. И это называется 2-й курс бейсика...
Если ты не знаешь кто это ---> , то ты оочень многое упустил в своей жизни...
|
|
|
|
Bibo | Дата: Вторник, 04 Ноября 2014, 19:40:57 | Сообщение # 12 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Цитата GodOfDead ( ) как научить моего юнита попадать на возвышенности/падать в низины Ну, мне тоже ни о чем не говорят эти строчки.
|
|
|
|
GodOfDead | Дата: Вторник, 04 Ноября 2014, 20:12:20 | Сообщение # 13 |
7 уровень
Группа: Проверенные
Сообщений: 302
Награды: 0
Репутация: 115
Блокировки:
| Bibo, ну какбы мой скилл - что-то типа скольжения вперед, и мне нужно, чтобы юнит еще и склоны преодолевал, а он в них застревает.
Если ты не знаешь кто это ---> , то ты оочень многое упустил в своей жизни...
|
|
|
|
Bibo | Дата: Вторник, 04 Ноября 2014, 20:29:36 | Сообщение # 14 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| То есть, застревает?
|
|
|
|
GodOfDead | Дата: Среда, 05 Ноября 2014, 00:54:44 | Сообщение # 15 |
7 уровень
Группа: Проверенные
Сообщений: 302
Награды: 0
Репутация: 115
Блокировки:
| То есть упирается - и никак. Если уперся не по прямому углу, двигается вправо-влево рывками, но это видимо потому, что его игра пытается разместить в адекватном месте. А надо, чтобы не пыталась. Может, его летающим делать на время движения?
Если ты не знаешь кто это ---> , то ты оочень многое упустил в своей жизни...
|
|
|
|
Наклз | Дата: Среда, 05 Ноября 2014, 08:35:06 | Сообщение # 16 |
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
| Отключая колюзию юнит фактически преодолевает препятствия, как летающий, однако его высота не изменяется и система "поиска пути" всё ещё считает его наземным, как и атакующие его юниты. Это что-то на подобии спектры в доте. После движения следует опять сделать колюзию вкл.
Сообщение отредактировал Наклз - Среда, 05 Ноября 2014, 08:35:55 |
|
|
|