8gabriel8, представь ситуацию, когда генерация происходит не мгновенно и в процессе генерации срабатывает триггер с получением случайного числа, не связанный с генерацией карты - в результате одно число из потока псевдослучайных чисел не попадает в генератор карты и результат генерации получается совсем другим, чем если бы этот сторонний триггер не сработал в этот момент.
quq_CCCP, не суть важно сколько там нативных потоков рандома под капотом, суть в том что коду карты доступен только один нативный поток рандома, даже если мне показалось и он не зависит от других действий кроме ручного вызова связанных с ним функций - в условиях когда игровой процесс не прерывается на время работы генератора это чревато засорением рандомного потока либо генератора либо игрового процесса.
8gabriel8, приведу пример того когда мне понадобился отдельный от стандартного поток рандома - в одной из моих карт давным давно использовалась процедурная генерация уровня, причем не один раз заранее, а постоянно по мере движения игрока по карте. Все бы ничего, но я хотел чтобы одинаковый сид всегда выдавал одинаковую результирующую карту, независимо от действий игрока во время генерации и чтобы генерация никак не влияла на действия игрока, кроме невозможности пройти в еще не готовый участок карты. На одном только стандартном рандоме это практически невыполнимо ведь поток рандомных чисел один на все операции.
8gabriel8, одно из применений кастомного рандома - когда нужен рандомный поток не связаный со стандартным, к которому привязаны нативные криты и прочие случайные события.
Также - в определенных ситуациях у стандартного рандома есть проблемы с распределением и один из вариантов решения этой проблемы это кастомный рандом. Хотя, конечно, есть и другие способы решения этой проблемы, например масштабирование диапазона на котором берется рандом.
Еще есть отдельный случай, не реализованный в этой наработке - другие типы рандома, например тот же перлин, который кроме линейного может быть двух и трех-мерным (можно и больше, но практическое применение под большим вопросом).
NazarPunk, os.time чреват рассинхроном, поэтому сперва ручная синхронизация полученного значения, а потом уже установка сида.
Кроме того, стандартная реализация рандома в варе вроде примерно так и делает при старте карты, если не стоит фиксированный рандом и не запускаются синематики гуи функциями ставящими свой сид.
Castiel, объясни что ты пытаешься сделать этим таймером. Запустить то таймер изнутри таймера можно, но не факт что это действительно решает твою задачу.
Насколько я знаю, декорацию нельзя, только разрушаемые.
В принципе, можно создать эффект с моделью декорации и изменить проходимость карты, но это не совсем то же самое.
8gabriel8, там проблема в другом, юнит который проверяется на то является ли он солнечным колодцем никогда не может быть солнечным колодцем при том способе его получения который используется.
PT153, в том то и дело, присмотрись - он воспринимает их как двух разных юнитов, почему-то считая что в TriggeringUnit будет нужная цель для каста, а в EnteringUnit создаваемый юнит, потому ничего и не работает - ни одно событие не даст такой комбинации при которой эти условия выполнятся в том виде в каком они на скрине.
Простой ответ - никак. Невозможно добавить автокаст к способности у которой его изначально не было.
Сложный ответ - триггерно имитировать автокаст одним из нескольких способов.
Субанимации, они же анимационные таги, работают на эффектах аналогично тому как они работают на юнитах. Но если юниту часто достаточно выдать таг, то эффекту надо сперва выдать таг, а потом проиграть нужную анимацию.
ScopteRectuS, основная задача статьи - место куда можно отправлять читать на тему инжекта в целом и инжекта InitGlobals в WE, эта задача вполне выполняется в текущем виде. Все остальное - бонус. Двух шаговый инжект, да еще и специфичный для работы в WE мне не очень интересен, но если ты его подробнее распишешь, с кодом, или у меня будет свободное время - добавлю.
Почему же, вполне себе хукнеш, она же не в коде карты объявлена, а значит уже есть на момент выполнения кода карты.
В принципе, через двух шаговый инжект можно и до main добраться, хукнув SetMapName, которая вызовется из config, ведь config вызывается раньше main, если я еще не совсем с ума сошел.
Придется таки найти время и дописать этот двух шаговый инжект. Но не сегодня уже.
TeX13, это один из самых кривых вариантов, но так тоже можно.
Я обычно пользуюсь другим способом:
счетчик секунд в одной переменной, без цикла и массива
массив lastKill в котором по [номеру игрока] записывается время последнего кила и по [номеру игрока +24] записывается длина серии
при киле идет проверка сколько прошло времени с последнего кила, если больше 30, то в длину серии записывается 1, время последнего кила выставляется на текущее значение счетчика
если времени прошло меньше 30, то на 1 увеличивается длина серии и время последнего кила выставляется на текущее значение счетчика
награда за серию выдается частями, при каждом киле смотрится текущая длина серии и выдается соответствующая часть награды, так чтобы суммарная награда за всю серию достигала того значения которое мне нужно
NazarPunk, я и говорю чуть сложнее становится - нужно перебирать всех игроков для которых активна серия и проверять не пора ли для них закончить серию. Самая простая реализация не требует даже циклов, только проверку времени после каждого кила.
» WarCraft 3 / Генератор псевдослучайных чисел
Ред. prog
» WarCraft 3 / Генератор псевдослучайных чисел
» WarCraft 3 / Генератор псевдослучайных чисел
» WarCraft 3 / Генератор псевдослучайных чисел
Также - в определенных ситуациях у стандартного рандома есть проблемы с распределением и один из вариантов решения этой проблемы это кастомный рандом. Хотя, конечно, есть и другие способы решения этой проблемы, например масштабирование диапазона на котором берется рандом.
Еще есть отдельный случай, не реализованный в этой наработке - другие типы рандома, например тот же перлин, который кроме линейного может быть двух и трех-мерным (можно и больше, но практическое применение под большим вопросом).
Ред. prog
» WarCraft 3 / Генератор псевдослучайных чисел
» WarCraft 3 / Пассивка - восстановление маны в проценте
» WarCraft 3 / запустить таймер из таймера
» WarCraft 3 / Свап хп - не могу разобраться
» WarCraft 3 / запустить таймер из таймера
» WarCraft 3 / запустить таймер из таймера
» WarCraft 3 / Создать декорацию гуи или jass
В принципе, можно создать эффект с моделью декорации и изменить проходимость карты, но это не совсем то же самое.
» WarCraft 3 / По поводу триггеров в нескольких (связанных между собой) картах
» WarCraft 3 / Триггерный приказ каста "массовой телепортации"
Ред. prog
» WarCraft 3 / Триггерный приказ каста "массовой телепортации"
» WarCraft 3 / Триггерный приказ каста "массовой телепортации"
» WarCraft 3 / Как сделать способности автокаст?
Сложный ответ - триггерно имитировать автокаст одним из нескольких способов.
» WarCraft 3 / Дамми не кастует спелл
» WarCraft 3 / Дамми не кастует спелл
» WarCraft 3 / Можно ли в переменную занести вызов функции?
Ред. prog
» WarCraft 3 / Локальные переменные и таймер
на Lua в 1.31 - есть более удобные способы
» WarCraft 3 / Декорация пропадает
Ред. prog
» WarCraft 3 / как у спецэффекта проиграть анимацию типа Slam? (1.31)
BlzPlaySpecialEffect(e,ANIM_TYPE_ATTACK)
Ред. prog
» WarCraft 3 / [Lua] Инжект функций
Ред. prog
» WarCraft 3 / Передача параметра в функции
» WarCraft 3 / Передача параметра в функции