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

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

Ответ
 
nic666

offline
Опыт: 5,612
Активность:
TriggerExecute
Извиняюсь заранее...
Как работает TriggerExecute?
  1. Он запускает тригер, а затем продолжает выполнение кода в текущем блоке, запущеный тригер как бы функция или подпрограмма (то есть аналогично тому если вызвать через call акцион-функцию тригера)
  1. создает другой поток и выполняет триггер паралельно с оставшимся кодом в текущем блоке
В чем трабла, почему спрашиваю:
Я тут использую SetRandomSeed чтобы сгенерировать некую последовательность и чтобы она задавалась однозначно начальным числом...
Но - последовательность при одинаковом входном числе оказывается разная! У меня такое впечатление что что-то работает паралельно (в другом потоке) и там вызывается ГСЧ несколько раз...

Отредактировано nic666, 14.12.2006 в 09:16.
Старый 14.12.2006, 09:03
DioD

offline
Опыт: 45,134
Активность:
рандом сид надо устанавливать каждый раз перед вызовом рандом числа, можно посмотреть это в функциях синематика, во всяком случае
эксекат триггер создаёт новый поток
Старый 14.12.2006, 09:38
nic666

offline
Опыт: 5,612
Активность:
А в нативах еще есть
TriggerExecuteWait
он то хоть ждет пока выполнится код вызываемого триггера, а не выполняет его паралельно с остатком кода?
Судя по названию, я имено так и думаю... так ли?
Старый 14.12.2006, 09:49
DioD

offline
Опыт: 45,134
Активность:
timer 0.00 выполняется сразу по завершению триггера
Старый 14.12.2006, 11:43
nic666

offline
Опыт: 5,612
Активность:
Я проверил свой код, сделал так что тригеры включаются последовательно, накладок быть не может. Но где-то между вызовом моих тригеров выполняются другие, наверное связаные с работой AI и они наверное используют Random в своих целях, мне этого не надо.
Всвязи с чем создаю другую тему: Как сделать свой RND генератор.
Если это удастся то можно иметь свой изолированый генератор и никакие AI в него не влезут...
Старый 14.12.2006, 12:02
p01nTT

offline
Опыт: 11,160
Активность:
nic666 лучше выложи код,того что ты делаешь
Старый 14.12.2006, 12:48
nic666

offline
Опыт: 5,612
Активность:
ВОПРОС:
Как можно запустить триггер кроме TriggerExecute
необходимо чтобы пока тригер не отработает полностью чтобы дальше код не выполнялся в вызывающем тригере.
(Можно конечно вызвать через call функцию с экшен тригера, но в моем случае я не знаю наперед название этой функции, может чтобы узнать на нее ссылку есть другая функция?)
Старый 14.12.2006, 13:27
DioD

offline
Опыт: 45,134
Активность:
не пробывал делать так
function B
call
call
call
call
END
endfunction
function A
call
call
call
exec B
endfunction
function
call
call
call
exec A
endfunction
Смысл в том, что эксекат делать ПОСЛЕДНИМ в тригере и все действия что происходят после него добавить в тот триггер что вызываеся, а потом в следующий и так по цепочке
Старый 14.12.2006, 13:34
nic666

offline
Опыт: 5,612
Активность:
Да вся беда в том что я не хочу переводить все триггеры из Гуи в жасс... если перевести в жас то проблема бы исчезла...
Старый 14.12.2006, 13:48
DioD

offline
Опыт: 45,134
Активность:
ах, ну тогда это будет глючно, делай через call функция триггера, иначе только переносить действия.

еще можно воспользоваться тригер очередью, хотя это не то..
Старый 14.12.2006, 13:59
nic666

offline
Опыт: 5,612
Активность:
Тригер очередь в конечном итоге это опять TrigerExecute просто потоков меньше, через call это да но WorldEdit ругается что этой функции еще нет (наверно так как тригер гуи)
Старый 14.12.2006, 14:01
DioD

offline
Опыт: 45,134
Активность:
гуи триггеры идут НЕ по порядку, и слудует добовлять функцию для вызова вышефункции из которой она вызывается ПРИНУДИТЕЛЬНО ручками, тоесть придётся переводить гуи триггеры в джаз.
делай так
1 создал гуи триггер
2 копировал
3 выключил
4 оригинал конвертировал в джаз
5 перенёс
6 надо редактировать работай с гуи версией
Старый 14.12.2006, 14:04
Toadcop

offline
Опыт: 54,313
Активность:
Trig(g)erExecute TriggerEvalute - быстрей но выполняет только условия ! все нормальные юзают Evalute для хитрых вещей...
  1. ты опечаталса !
Старый 15.12.2006, 15:59
Ответ

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

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

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

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



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