24

» WarCraft 3 / Генератор псевдослучайных чисел

8gabriel8, представь ситуацию, когда генерация происходит не мгновенно и в процессе генерации срабатывает триггер с получением случайного числа, не связанный с генерацией карты - в результате одно число из потока псевдослучайных чисел не попадает в генератор карты и результат генерации получается совсем другим, чем если бы этот сторонний триггер не сработал в этот момент.
24

» WarCraft 3 / Генератор псевдослучайных чисел

quq_CCCP, не суть важно сколько там нативных потоков рандома под капотом, суть в том что коду карты доступен только один нативный поток рандома, даже если мне показалось и он не зависит от других действий кроме ручного вызова связанных с ним функций - в условиях когда игровой процесс не прерывается на время работы генератора это чревато засорением рандомного потока либо генератора либо игрового процесса.
24

» WarCraft 3 / Генератор псевдослучайных чисел

8gabriel8, приведу пример того когда мне понадобился отдельный от стандартного поток рандома - в одной из моих карт давным давно использовалась процедурная генерация уровня, причем не один раз заранее, а постоянно по мере движения игрока по карте. Все бы ничего, но я хотел чтобы одинаковый сид всегда выдавал одинаковую результирующую карту, независимо от действий игрока во время генерации и чтобы генерация никак не влияла на действия игрока, кроме невозможности пройти в еще не готовый участок карты. На одном только стандартном рандоме это практически невыполнимо ведь поток рандомных чисел один на все операции.
24

» WarCraft 3 / Генератор псевдослучайных чисел

8gabriel8, одно из применений кастомного рандома - когда нужен рандомный поток не связаный со стандартным, к которому привязаны нативные криты и прочие случайные события.
Также - в определенных ситуациях у стандартного рандома есть проблемы с распределением и один из вариантов решения этой проблемы это кастомный рандом. Хотя, конечно, есть и другие способы решения этой проблемы, например масштабирование диапазона на котором берется рандом.
Еще есть отдельный случай, не реализованный в этой наработке - другие типы рандома, например тот же перлин, который кроме линейного может быть двух и трех-мерным (можно и больше, но практическое применение под большим вопросом).
24

» WarCraft 3 / Генератор псевдослучайных чисел

NazarPunk, os.time чреват рассинхроном, поэтому сперва ручная синхронизация полученного значения, а потом уже установка сида.
Кроме того, стандартная реализация рандома в варе вроде примерно так и делает при старте карты, если не стоит фиксированный рандом и не запускаются синематики гуи функциями ставящими свой сид.
24

» WarCraft 3 / Пассивка - восстановление маны в проценте

Лаги при триггерном добавлении способности часто лечатся прелоадом или выдачей этой способности юниту изначально стоящему на карте.
24

» WarCraft 3 / запустить таймер из таймера

почему нельзя запустить таймер этим же таймером
На самом деле можно.
24

» WarCraft 3 / Свап хп - не могу разобраться

Выбранный юнит это совсем другое и никакого отношения не имеет к цели применения способности.
24

» WarCraft 3 / запустить таймер из таймера

Castiel, мне не сильно поможет твой код - расскажи какую задачу ты пытаешься решить, какой должен быть результат работы всех этих таймеров.
24

» WarCraft 3 / запустить таймер из таймера

Castiel, объясни что ты пытаешься сделать этим таймером. Запустить то таймер изнутри таймера можно, но не факт что это действительно решает твою задачу.
24

» WarCraft 3 / Создать декорацию гуи или jass

Насколько я знаю, декорацию нельзя, только разрушаемые.
В принципе, можно создать эффект с моделью декорации и изменить проходимость карты, но это не совсем то же самое.
24

» WarCraft 3 / Триггерный приказ каста "массовой телепортации"

8gabriel8, там проблема в другом, юнит который проверяется на то является ли он солнечным колодцем никогда не может быть солнечным колодцем при том способе его получения который используется.
24

» WarCraft 3 / Триггерный приказ каста "массовой телепортации"

PT153, в том то и дело, присмотрись - он воспринимает их как двух разных юнитов, почему-то считая что в TriggeringUnit будет нужная цель для каста, а в EnteringUnit создаваемый юнит, потому ничего и не работает - ни одно событие не даст такой комбинации при которой эти условия выполнятся в том виде в каком они на скрине.
т.к jass для меня тёмный лес
Судя по этому вопросу, для тебя и GUI темный лес. Рекомендую перечитать статьи.
24

» WarCraft 3 / Как сделать способности автокаст?

Простой ответ - никак. Невозможно добавить автокаст к способности у которой его изначально не было.
Сложный ответ - триггерно имитировать автокаст одним из нескольких способов.
24

» WarCraft 3 / Дамми не кастует спелл

Работает ли этот спел у этого даммика при ручной отдаче приказа?
24

» WarCraft 3 / Можно ли в переменную занести вызов функции?

Уточнение, передавать параметры в функцию можно. Нельзя передавать параметры в каллбеки (это когда сама функция передается куда-то параметром).
24

» WarCraft 3 / Локальные переменные и таймер

на жассе - глобальный массив, если таймер один или хештаблица если таких таймеров много
на Lua в 1.31 - есть более удобные способы
24

» WarCraft 3 / как у спецэффекта проиграть анимацию типа Slam? (1.31)

BlzSpecialEffectAddSubAnimation(e,SUBANIM_TYPE_SLAM)
BlzPlaySpecialEffect(e,ANIM_TYPE_ATTACK)
Субанимации, они же анимационные таги, работают на эффектах аналогично тому как они работают на юнитах. Но если юниту часто достаточно выдать таг, то эффекту надо сперва выдать таг, а потом проиграть нужную анимацию.
24

» WarCraft 3 / [Lua] Инжект функций

ScopteRectuS, основная задача статьи - место куда можно отправлять читать на тему инжекта в целом и инжекта InitGlobals в WE, эта задача вполне выполняется в текущем виде. Все остальное - бонус. Двух шаговый инжект, да еще и специфичный для работы в WE мне не очень интересен, но если ты его подробнее распишешь, с кодом, или у меня будет свободное время - добавлю.
Из WE её не хукнешь
Почему же, вполне себе хукнеш, она же не в коде карты объявлена, а значит уже есть на момент выполнения кода карты.
В принципе, через двух шаговый инжект можно и до main добраться, хукнув SetMapName, которая вызовется из config, ведь config вызывается раньше main, если я еще не совсем с ума сошел.

Придется таки найти время и дописать этот двух шаговый инжект. Но не сегодня уже.
24

» WarCraft 3 / Передача параметра в функции

TeX13, это один из самых кривых вариантов, но так тоже можно.
Я обычно пользуюсь другим способом:
  • счетчик секунд в одной переменной, без цикла и массива
  • массив lastKill в котором по [номеру игрока] записывается время последнего кила и по [номеру игрока +24] записывается длина серии
  • при киле идет проверка сколько прошло времени с последнего кила, если больше 30, то в длину серии записывается 1, время последнего кила выставляется на текущее значение счетчика
  • если времени прошло меньше 30, то на 1 увеличивается длина серии и время последнего кила выставляется на текущее значение счетчика
  • награда за серию выдается частями, при каждом киле смотрится текущая длина серии и выдается соответствующая часть награды, так чтобы суммарная награда за всю серию достигала того значения которое мне нужно
24

» WarCraft 3 / Передача параметра в функции

NazarPunk, я и говорю чуть сложнее становится - нужно перебирать всех игроков для которых активна серия и проверять не пора ли для них закончить серию. Самая простая реализация не требует даже циклов, только проверку времени после каждого кила.