Скины. Есть временное решение. Будет официальный фикс в одном из патчей.
Начудили что-то с масштабированием моделей
Опять-же, в основном скины виноваты. Временного решения приличного нет. Будет официальный фикс.
Новая система скинов дает интересные возможности, но еще очень сырая и забагованная.
Остальное - я не знаю насколько наивным надо быть, чтобы верить в то, что все старые карты будут работать в рефорже как есть без необходимости правок и изменений под новые реалии.
Bergi_Bear, я проверю позже. Но я вижу мало смысла в использовании именно этих абилок, проблемой всегда была именно невозможность стартовать кулдаун без сбивания приказа, а не невозможность отрисовать кулдаун на пассивке - всегда можно прятать пассивку и показывать активку с кулдауном, теперь еще и не нужно удалять абилки, можно их просто прятать другой новой нативкой.
Кстати, перепроверить не сбивается ли приказ этой новой нативкой тоже надо - я вроде проверял, но мог накосячить при проверке.
Поскольку в вопросе не указана версия игры, напомню что в рефорже завезли функцию старта кд любой абилки без отдачи приказа. Но во-первых это рефорж, а во-вторых этот способ работает только на абилки которые могут иметь кулдаун изначально.
Также, вместо кулдауна для этой задачи все в том-же рефорже можно использовать другую систему - специальные эффекты на кнопках - можно подсвечивать пассивку эффектом когда она готова к использованию вместо показа кулдауна.
тестирование карты реально стопицот времени открывается
Странно, у меня вот сравнимо с классикой по скорости запуска карты, может самую малость дольше. Правда не всегда - такое впечатление что есть зависимость от ответа веб-сервера где-то, который большую часть времени работает нормально, но иногда решает по выделываться.
Darkest1024, два года вкалывали малазийцы над графикой. Чем занимались в это время близы - можно примерно отследить по тому что они выкатывали, с поправкой на то, что мы не все видели.
respect_gg, алгоритм рабочий, хоть и требует одной маленькой доработки перед финальным использованием, а твой чувак не шарит и, похоже, ничерта не понял в алгоритме, начиная с того, зачем в нем нужны смещения. Первое "смещение" - N = кол-во игроков -1 нужно потому как нумерация от 0 до N включительно. Второе смещение +1 или -1 на некоторых итерациях нужно чтобы рандом не выдал ту-же ячейку в которой алгоритм находится в текущей итерации, это не более чем дешевое исключение ячейки из диапазона рандома.
Впрочем, поскольку ты даже не попытался реализовать этот алгоритм на практике или разобраться в принципах его работы, а сразу заклеймил его не рабочим - я умываю руки. Это будет мое последнее сообщение в этой теме.
Вот тебе алгоритм для твоего уровня, если нормальный не получается осилить:
Вместо перемешивания сдвигай всех на одно и то же случайное число один раз, с сохранением порядка. Это не так круто как полное перемешивание, но никто и не заметит если сдвиг будет рандомный каждый раз. Естественно, с использованием двух массивов, как я описал выше, чтобы исключить ливеров. Если и до этого не допрешь сам - спроси своего друга якобы шарящего в C++, может хоть с этим он справится.
На всякий случай даже подробно разжую:
Перебираешь игроков, тех кто жив записываешь в массив Index. В результате на выходе получаешь массив, в котором в первой ячейке номер первого живого игрока, во второй - номер второго живого игрока - не и важно какие это игроки по номеру - первый живой может быть пятым, а второй восьмым, тогда первая ячейка будет равна пяти, вторая восьми. Так-же нужно посчитать сколько всего их, живых игроков, это тоже удобно сделать тут, пусть это будет число P. А N, как и раньше, будет P-1.
Каким-угодно способом заполняешь массив Numbers числами от 0 и до N, так чтобы в каждой ячейке изначально был её номер.
Потом один раз берешь случайное число R, оно может быть любым, но важно чтобы оно не было кратным P.
Потом прибавляешь к каждой ячейке Numbers это число - R. Еще раз подчеркиваю - R для всех ячеек одинаковое.
Если в результате число в ячейке больше или равно P, то вычитаешь из него P пока оно не станет меньше P.
На этом заканчиваешь работу с массивом Numbers.
Теперь можно как-то использовать полученный массив, а именно:
Циклом от 0 до N проходим с индексом j
в цикле переменной k присваиваем Number[j]
и получаем номера для двух игроков из массива Index
Index[k] и Index[j]
Этот алгоритм тоже с подвохом, просьба тем кто его заметил не раскрывать карты раньше времени
respect_gg, я уже описал как решить проблему ливеров...
Нам всего-то надо знать сколько живых игроков, это будет N.
Пусть массив с номерами будет Numbers. Пока оставим его пустым.
Берем второй массив, назовем его Index. В Index записываем айдишники живых игроков, сколько бы их ни было, заодно в процессе вычисляем N и заполняем массив Numbers порядковыми номерами от 0 до N.
Выполняем алгоритм из поста выше.
Результат выполнения алгоритма используем так - проходим циклом от 0 до N, с номером итерации j
Index[Number[j]] - один игрок
Index[j] - второй игрок
записываем в массив номера от 0 до N, где N это число игроков минус один, в ячейки с соответствующими номерами
проходим циклом от N до 0, пусть номер итерации будет i
на каждой итерации получаем случайное число R от 0 до N, Если оно совпало с i, то берем R= i+1 или R=i-1, с учетом границ
меняем местами ячейки R и i
если в ячейку i в результате обмена опять попало число с номером этой ячейки, делаем еще один случайный обмен (тут можно не делать дополнительную проверку на коллизию т.к. коллизия не может на этом этапе возникнуть повторно для этой ячейки)
Если я ничего не напутал - получаем на выходе массив чисел в котором числа не повторяются и не находятся в ячейках совпадающих со своим номером.
Использовать это потом - номер ячейки это один игрок, число в ячейке - другой.
Если нужен учет того что игроки могут иметь номера не идущие подряд (ливеры, компьютеры, просто игроки не использующиеся в этой системе) - нам понадобится дополнительный массив с номерами игроков, чтобы превратить номер ячейки и число в ячейке в реальный номер игрока.
Nemezid, это значит что в один прекрасный момент весь жасс код превратится в тыкву. Шутка. Когда это введут - жасс код будет превращаться в луа код автоматически и выполнятся на луа-машине вместо жасс-машины, а жасс-машину уберут полностью.
respect_gg, ну так кто тебе мешает сперва циклом пройтись по массиву то, а не сразу действия делать?
Еще раз повторю суть своей идеи.
Сперва тасуем массив индексов так чтобы они заняли случайные позиции отличные от своих собственных. Алгоритм выстраивается так, чтобы только последняя оставшаяся пара могла быть коллизией.
В конце - проверяем последнюю пару, если она является коллизией, то выбираем случайную другую пару и меняем местами.
Проходим по массиву еще раз, в этот раз уже выполняя нужные действия.
DarkLigthing, Lord_Teo, вы оба не учитываете коллизию, которая может возникнуть, если последние двое оставшихся будут одного и того же типа, что нарушает условие согласно которому копии не должны атаковать оригинал.
замена жасс машины луа машиной с встроенным транспайлером - фактически подтвержденный факт, вопрос только когда
планы на добавление работы со скинами в WE есть, первая на очереди возможность указать юнитам разные значения для SD и HD режима в РО. Но это явно ниже по приоритету, чем багфиксы, поэтому ждать в первой паре обнов не стоит.
А так - там реально магия творится вокруг 0 и 1 значений урона - они используются движком для особых целей и вроде как в 1.31 что-то с этим связаное поломали.
Просто на всякий случай, напоминаю, что на 1.31 есть новое событие, которое работает до обсчета брони и функция, которая позволяет менять сколько урона будет нанесено. А еще функции позволяющие получить тип брони у юнита, а также типы атаки и урона для произошедшего события урона.
» WarCraft 3 / Релиз Warcraft 3: Reforged
Ред. prog
» WarCraft 3 / Релиз Warcraft 3: Reforged
» WarCraft 3 / Визуальная перезарядка пассивной способности
» WarCraft 3 / Визуальная перезарядка пассивной способности
Кстати, перепроверить не сбивается ли приказ этой новой нативкой тоже надо - я вроде проверял, но мог накосячить при проверке.
» WarCraft 3 / Визуальная перезарядка пассивной способности
» WarCraft 3 / Визуальная перезарядка пассивной способности
Также, вместо кулдауна для этой задачи все в том-же рефорже можно использовать другую систему - специальные эффекты на кнопках - можно подсвечивать пассивку эффектом когда она готова к использованию вместо показа кулдауна.
» WarCraft 3 / Релиз Reforged, оценки метакритиков, блогеры не могут ошибаться
» WarCraft 3 / Релиз Warcraft 3: Reforged
» WarCraft 3 / Релиз Warcraft 3: Reforged
» WarCraft 3 / Релиз Warcraft 3: Reforged
Ред. prog
» WarCraft 3 / Выбор рандомного юнита (числа, области, в целом не важно)
Вместо перемешивания сдвигай всех на одно и то же случайное число один раз, с сохранением порядка. Это не так круто как полное перемешивание, но никто и не заметит если сдвиг будет рандомный каждый раз. Естественно, с использованием двух массивов, как я описал выше, чтобы исключить ливеров. Если и до этого не допрешь сам - спроси своего друга якобы шарящего в C++, может хоть с этим он справится.
Каким-угодно способом заполняешь массив Numbers числами от 0 и до N, так чтобы в каждой ячейке изначально был её номер.
Потом один раз берешь случайное число R, оно может быть любым, но важно чтобы оно не было кратным P.
Потом прибавляешь к каждой ячейке Numbers это число - R. Еще раз подчеркиваю - R для всех ячеек одинаковое.
Если в результате число в ячейке больше или равно P, то вычитаешь из него P пока оно не станет меньше P.
На этом заканчиваешь работу с массивом Numbers.
Циклом от 0 до N проходим с индексом j
в цикле переменной k присваиваем Number[j]
и получаем номера для двух игроков из массива Index
Index[k] и Index[j]
» WarCraft 3 / Выбор рандомного юнита (числа, области, в целом не важно)
Нам всего-то надо знать сколько живых игроков, это будет N.
Пусть массив с номерами будет Numbers. Пока оставим его пустым.
Берем второй массив, назовем его Index. В Index записываем айдишники живых игроков, сколько бы их ни было, заодно в процессе вычисляем N и заполняем массив Numbers порядковыми номерами от 0 до N.
Выполняем алгоритм из поста выше.
Результат выполнения алгоритма используем так - проходим циклом от 0 до N, с номером итерации j
Index[Number[j]] - один игрок
Index[j] - второй игрок
Ред. prog
» WarCraft 3 / Выбор рандомного юнита (числа, области, в целом не важно)
» WarCraft 3 / Релиз Warcraft 3: Reforged
» WarCraft 3 / Выбор рандомного юнита (числа, области, в целом не важно)
» WarCraft 3 / Выбор рандомного юнита (числа, области, в целом не важно)
» WarCraft 3 / Выбор рандомного юнита (числа, области, в целом не важно)
» WarCraft 3 / Выбор рандомного юнита (числа, области, в целом не важно)
» WarCraft 3 / Релиз Warcraft 3: Reforged
» WarCraft 3 / currentmapscript.j Удаляется
» WarCraft 3 / Магия Защиты и Полная формула урона
» WarCraft 3 / Магия Защиты и Полная формула урона
» WarCraft 3 / Магия Защиты и Полная формула урона
» WarCraft 3 / TriggerRegisterUnitEvent VS. TriggerRegisterPlayerUnitEvent
» WarCraft 3 / Магия Защиты и Полная формула урона