Странные претензии к автору наработки, который, хочу заметить так активно вкладывается в столь перспективное направление как Lua. Ведь это так же хороший учебный материал. Мне вот кажется, что человек способный оперировать логическими конструкциями на GUI, может (в теории), загуглить слово «нелинейный» и сделать небольшой вклад в саморазвитие. И кстати о саморазвитии, наверняка мало кто будет отрицать преимущество метода разработки программированием, над GUI. Вы можете сделать хорошую карту на GUI, ведь это всего лишь инструмент реализации хорошей идеи, однако на том же Jass вы сможете сделать это качественней, быстрее и с большими возможностями, без (массивных)утечек в ОЗУ. Не говоря уже о преимуществе Lua... По этому, ориентированность на людей пишущих код - это стимул развивать сообщество, а значит и повышать качество проектов. Следовательно ГУИшники так же часть сообщества, однако преимущество за кодерами. Что-то вроде Junior Jass кодеров) ИМХО
NazarPunk, Скорее всего поддерживатюся, а вот Ultrawide зашили, так как это даёт преимущество в виде расширенной игровой камеры видимо. (как в SC2)
Тем не менее, я нашел решение. Для тех кто обладает Ultrawide монитором и хочет избавиться от чёрных полос понадобится выставить в Wc3 оконный режим и расширить окно с помощью проги 'Fullscreenizer'.
Легко, считаем по формуле расстояние от строителя до точки назначения строительства.;
function GetDistanceBetween takes real x1, real y1, real x2, real y2 returns real
return SquareRoot((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))
endfunction
После чего делим путь на скорость движения работника, получаем время. Вот это время мы устонавливаем на таймер+1 секунду чтобы успел построить. По истечению таймера - удаляем работника.
Да, но у нас ведь могут быть модификаторы скорости бега. Впрочем, сейчас попробую
Так отлавливай текущую скорость, а не дефолтную.
Так же таймер не обязателен, можно дать работнику время жизни как у призывных юнитов. Если это в рамках твоего проекта эстетический приемлемо.
Юнит получил приказ "цель-точка"
Отданный приказ равно "строить ферму"
Дальше уже можем делать с ordered unit что захотим. Беда в том, что юнит должен исчезать конкретно после начала постройки (Здание строится само, как у нежити). И вот тут мы опять возвращаемся к изначальному вопросу - как отловить что вот этот вот гадский юнит начал стройку?
Легко, считаем по формуле расстояние от строителя до точки назначения строительства.;
function GetDistanceBetween takes real x1, real y1, real x2, real y2 returns real
return SquareRoot((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))
endfunction
После чего делим путь на скорость движения работника, получаем время. Вот это время мы устонавливаем на таймер+1 секунду чтобы успел построить. По истечению таймера - удаляем работника.
Алсо при чем тут троллинг? Ты алгоритм левый закинул и решил посмотреть что напишут или троллинг в том что троллинга нет или это ответочка на последние записи в блогах. В код не вникал. Не понравились названия функций и работа с триггерами. В общем интересно почему такой заголовок у записи.
Троллинг в том, что чёткое понимание того как работает алгоритм не объясняет того, как образуется эта фигура (фрактал). Это не объяснит даже математик с научной степенью. Всё что можно сказать - это то, что такова природа фракталов. Ставка была на то, что не найдётся того кто бы знал о рекреационной математике. Ну или не так быстро... =)
DarkLigthing, всё верно, но только построение фракталов методом хаоса warcraft не в силах воспроизводить.
Тут да, это самое слабое место в такой системе. Неоправданно много лишних объектов, + не ясно чему равно Х времени на заполнение Х фигуры, потому что не дорисуешь - контуры будут кривые, переполнишь - рискуешь сильной посадкой производительности. Разве что реализовать сетку для точек, таким образом чтобы расстояние новоизбранной точки не могло быть ближе к существующей на некое значение.
Куда интересней было бы услышать твои соображения о том где это можно применить в игре.
Можно сделать наработку для спец. эффектов заклинаний, т.к фракталы могут быть очень разными с чёткими и красивыми узорами. К примеру, во время каста заклинания во круг кастера или другой цели взаимодействия спелла создаётся фрактал из думми-обьектов, не имеющих модельки. Это шаблон узора, но нам нужно к примеру выбрать только контуры фигуры, как внешние, так и внутренние. Т.е обрисовать фрактал либо эффектом молний, либо каким-либо спец. эффектом. Для этого можно помещать в группу точки фрактала которые соответствуют условию - рядом с ними есть хотябы одна сторона, где нет точек фрактала. Так можно поместить все контурные точки в группу и на их месте создать спец. эффект, либо последовательно соединить все точки в группе эффектом молний. И удалить думми фрактал.
ScopteRectuS, а если вместо юнитов использовать декорации, а вместо точек - координаты?
Координаты использовать лучше конечно, т.к объекты типа real гораздо менее объемные. Но в моем примере используется только одна глобальная точка которая двигается через MoveLocation(), что по сути тоже самое т.к в каждой итерации утекают только real во время присвоения точке новой координаты. Так что это не имеет особого значения. В остальном это вопрос детализации фигуры, больше точек - выше детализация, декорации тоже подходят лучше, чем юниты, но это все равно высокая нагрузка. хотя и нужно исходить из области применения фрактала, что в принципе придумать не просто в рамках wc3. Если это просто вариант побаловаться с фракталами то оптимизация сильно значения не имеет, если не делать совсем уж грубых ошибок в коде, а вот использование в реальной игровой карте уже другой вопрос. А так можно попробовать связывать точки эффектом молний удаляя сами точки-обьекты, но это только задумка)
Да, похоже что моя идея не нова, в реализации фракталов на Wc3. Хотя и не обязательно останавливаться на треугольниках, можно получать более сложные узоры используя несколько геом. фигур, но с разным шансом движения к точкам этих фигур)
Не вижу смысла даже вникать, поскольку отсутствие оптимизации кода отбивает настроение, однако, хочу заметить, что скриншот Ваш даже не отображается (хотя, почему-то, я успел увидеть его часть пока прогружалась страница, фронтенд скрипт показывает что он действительно есть). Причиной тому - правила размещения изображений.
А почему бы не сделать своего рода спин-офф и добавить в карту нового контента?
Если уже и делать такой проект - то качественно.
Я бы занялся таким проектом, но не один. На пару с опытным Jass-коддером. Потому что если переделывать героев и все заклинания, на триггерные это достаточно трудоёмкий процесс, в ходе которого можно и потерять интерес к проекту. (: Потом ещё выверять баланс... И герои должны быть изначально продуманы, таким образом чтобы бы игра правильным билдом героев была преимуществом. А в идеале ещё бы понадобился лвл-дизайнер, который внесёт что-то новое в уже заезженный дизайн всем хорошо известной карты. И сама идея нужна, которая бы развивала идеи оригинальной карты и не шла в разрез с идеями остальных участников проекта.
Здорово. Давно хотел поиграть в эту карту, а самому ИИ писать лень.
Только боты юзают абилки когда не надо, например маг юзает кольцо холода хотя в радиусе действия только башня. При этом моего героя боты не бьют. Играл 3на3 орком рогой. Напротив маг, жрец и друид, только пару раз гнев деревьев в меня кинули.
Да, у них действительно пока что нету приоритета на героя, но я реализую это в следующей версии. Так же как и с паттерном использования абилок, по сути он стандартный, просто ему дали изученные заклинания героя. uranus:
Это модификация стандартной карты, правильно понимаю?
И каким боком оно ваша если оно входит стандартная карта близарда
В чём суть вопроса? Слово ремейк, как бы изначально подразумевает что авторство оригинальной карты не может быть моим. Более того, даже люди, которые всё ещё не удосужились обучиться знакам припинания и русскому языку в целом, способны понять на основе какой карты создавался ремейк) Бордер, Бордер:
Очень любил играть в эту карту в 2004 году. Поэтому поставил минус за то что называешьс ебя её автором.
А, так ты просто чужую карту переделал и переименовал, добавив в неё какого то говна.
По крайней мере это "говно" имеет под собой часы, потраченные на качественный Jass-код и MH функции. А не помёт очередного петуха, в комментариях, сформированный за пару секунд в куриной голове. Проект не завершён, я отдал его людям для обучения, а не для того что бы причислить себя к разработчикам Blizzard)
В РО, такое невозможно сделать. Подробно на триггерах? Ну вот пример, а если нужно ещё подробнее, то учебник по Jass в руки.
На проклятие в РО,или любой другой спелл,ставится минимальная дистанция
function Trig_Spell_Actions takes nothing returns nothing
local location loc = Location(GetWidgetX(GetSpellAbilityUnit()),GetWidgetY(GetSpellAbilityUnit()))
local unit u = null
if GetSpellAbilityId() == 'АЙ ДИ СКИЛЛА' then
set u = CreateUnitAtLoc(GetOwningPlayer(GetSpellAbilityUnit()),'АЙ ДИ ДАММИ ЮНИТА-ЭФФЕКТА',loc,0.00)
call IssueTargetOrder(u,"curse",GetSpellTargetUnit())
endif
call RemoveLocation(loc)
set loc = null
endfunction
//===========================================================================
function InitTrig_Spell takes nothing returns nothing
local integer i = 0
set gg_trg_Spell = CreateTrigger()
loop
exitwhen i > 12
call TriggerRegisterPlayerUnitEvent(gg_trg_Spell, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
set i = i + 1
endloop
call TriggerAddAction( gg_trg_Spell , function Trig_Spell_Actions )
endfunction
Потом тоже самое, только отследить каст проклятия, проверить тип юнита и удалить его из игры.
» WarCraft 3 / [Lua] В таблицу не заносятся герои.
Да, нужно учить Lua и прекращать пытаться его использовать как Jass...
» WarCraft 3 / Как усилить melee AI триггерами? AMAI не предлагать
» WarCraft 3 / math.ease
» WarCraft 3 / Хэш на Lua ?
» WarCraft 3 / Векс не видит war3map.j
Ред. DarkLigthing
» WarCraft 3 / Заклинание: Длань Господня
» WarCraft 3 / Официально стал доступен PTR 1.31
» WarCraft 3 / Официально стал доступен PTR 1.31
» WarCraft 3 / Официально стал доступен PTR 1.31
» WarCraft 3 / Подскажите функцию
» WarCraft 3 / Отлов строящего юнита
Так же таймер не обязателен, можно дать работнику время жизни как у призывных юнитов. Если это в рамках твоего проекта эстетический приемлемо.
» WarCraft 3 / Отлов строящего юнита
Отданный приказ равно "строить ферму"
Дальше уже можем делать с ordered unit что захотим. Беда в том, что юнит должен исчезать конкретно после начала постройки (Здание строится само, как у нежити). И вот тут мы опять возвращаемся к изначальному вопросу - как отловить что вот этот вот гадский юнит начал стройку?
return SquareRoot((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))
endfunction
» Блог им. DarkLigthing / Математический троллинг
» Блог им. DarkLigthing / Математический троллинг
» Блог им. DarkLigthing / Математический троллинг
» Блог им. DarkLigthing / Математический троллинг
» Блог им. DarkLigthing / Математический троллинг
» Блог им. DarkLigthing / Математический троллинг
» WarCraft 3 / Extreme Candy War AI
Я бы занялся таким проектом, но не один. На пару с опытным Jass-коддером. Потому что если переделывать героев и все заклинания, на триггерные это достаточно трудоёмкий процесс, в ходе которого можно и потерять интерес к проекту. (: Потом ещё выверять баланс... И герои должны быть изначально продуманы, таким образом чтобы бы игра правильным билдом героев была преимуществом. А в идеале ещё бы понадобился лвл-дизайнер, который внесёт что-то новое в уже заезженный дизайн всем хорошо известной карты. И сама идея нужна, которая бы развивала идеи оригинальной карты и не шла в разрез с идеями остальных участников проекта.
» WarCraft 3 / Extreme Candy War AI
uranus: Так и есть, это версия от 2005г.
quq_CCCP:
Diaboliko: ИИ в карте играет по тем же законам карты, что и обычный игрок. Функционал AI будет расширен.
» WarCraft 3 / Новые нативные функции в 1.29
» WarCraft 3 / Brave Souls
Бордер, Бордер:
Ред. Uber
» WarCraft 3 / Как сделать чтобы у способности без снаряда летел снаряд?