TechnoViking, не стандартные решения вам будет не задать. ии-скрипт заточен на классическое сражение. типа стройка, добыча, обучение, апгрейды, какие навыки учить героям и тому подобное. Существует несколько скриптов заточенные под разные расы, если нестандартную расу создавать, то нужен новый скрипт, но с другими юнитами, абилами и пр. Еще и логику надо продумывать: сколько и чего. Там защита, атака.
Главная проблема: это управление возьмет ИИ-комп, и не даст сделать что-то нужное. Если забрать у него юнита, он обратно его вернет.
Решение есть: Если вам нужен юнит, то можно отключить управление скриптом временно, и поуправлять триггером. А если надо, то возвращаем контроль скрипту. есть такая функция, в разделе ИИ смотри
Вторая проблема: ну функционал функции триггеров не велик для не стандартных решении. просто не хватает чекающих функции. типа проверки рядом врагов, итемов, какие итемы имеет или нужно применить, кто напал на базу, можно ли строить в этой точке итд. Это все надо будет продумывать, писать чисто с нуля. поэтому и говорю, что это не просто.
когда вы создаете карту, вам автоматом создают триггер инициализации. там добавлены функции melee-настройки. Если раскрыть функцию, то можно увидеть как они создают ИИ-ботов.
вот команда вызывает скрипт, если не ошибаюсь. но там в ии-скриптах нельзя задать итемы и пр. это в движке игры зашито
native StartMeleeAI takes player num, string script returns nothing
Если у вас карта другого жанра, типа только герои. То можно скрипты не включать. А тогда приказами. иначе тупой ИИ вас бесить будет. Или можно вообще ИИ написать чисто кодом, но это надо все предвидеть, продумать, много проверок и тому подобное - не легкое дело.
TechnoViking, у игрока подключен ИИ-скрипт? обычно вот такие игроки с включенным скриптом сами подбирают итемы, тк в заложено в ии-поведении. Искал я в ии-скрипте итемы, не находил. Это заложено внутри игры просто.
Я пробовал давать им итемы, или заставлял подбирать. Но не всегда может или хочет подбирать, у него первоочередные цели, и туда может не пойти подбирать. Но даже если положить в инвентарь, ИИ-дурак продает, если оказывается около лавки, или дропает. Не все конечно, и не со всеми, но вот топовые арты он может просто выкинуть
Тестил в карте Necris.
Как-то хотел сделать так, чтобы можно еще союзными-ботами управлять. Войска компьютеров-ИИ просто перешли под управление игрока. Одновременно как бы я мог управлять, и по возможности комп. Но такое управление, оно было частичным, даешь приказ одному, комп берет и перебивает. Покупаешь герою итем, а он берет дропает или продает. Я как-то хотел усилить героев союзников, а то они совсем ватными были.
Я сделал ИИ на триггерах, но кода было миллион. Поэтому дальше не зашло, хочу идею на потом оставить.
Оказывается, что за это отвечает типы итемов, короче это не зависит от абилок в итеме, класса или еще чего то, а на основе какого типа созданы. вот допустим, полезный для ИИ свиток телепортации, если взять и в ро скопировать итем, и создать новый тип, на его основе, т.е. он не будет продавать, он будет с охотой подбирать свитки. нужно самим смотреть будет ли ии его использовать
Вы непонятный вопрос задали, и легкий такой код скинули. лично надо проверять, и подбирать. вы не указали тип атаки? работает ваш код то. а все понял, у вас код не полный
смотря что вы понимаете под физический магический чистые уроны. тут на каждый случай. к примеру физический/магический можно разобраться. Но чтобы добиться чистого урона, это сложно, нужно продумать
тут ваш урон разделен на составляющие характеристики: тип атаки, тип урона.
физический тип урона - урон, который блочится защитой. в варкрафте, обычно большинство атак являются обычными, т.е. физическими атаками. за редким исключением разве что магический тип атаки. введен специально для магов, которые могут урон духам или в эфире наносить. Но сам магический тип атаки может являться физическим типом. Короче типы атак введены для коэ-тов, ваши значения меняются в зависимости от типа защиты цели.
магический тип урона - урон, который игнорируется физической защитой. короче защита физическая никак не понижается, будь хоть 99999 защиты, маг тип урона все равно нанесет урона. большинство заклинании являются магическим типом урона с типом атаки заклинания. Но не все заклинания в варкрафте являются с магическим уроном, есть и с физическим уроном. еще существуют физические атаки с доп магическим уроном с типом заклинания типа bush. в варкрафте в триггерах дохрена типов урона, но об этом уже сотню раз разбирались в статьях.
чистый урон - ровный урон. столько, сколько ты указал, столько и прилетело. Не меньше, не больше. По факту, такое сложно добиться из-за маг резисторов, защиты, которая понижает. И из-за типы атаки/типы защиты, табличные коэффициенты не дают наносить ровно. Можно добиться разве что вычитаем здоровья, с нанесением триггерного 0.00 урона. Наношу 0.00 урона, чтобы заагрить юнитов, и события урона чтобы работало. Если просто вычесть здоровье, то цель не поймет, что ее ударил кто-то, и события не будет
сейчас существуют в рефордже события, позволяющие менять и редактировать уроны.
боты могут юзать способности без вашего ведома, тк это прописано в ИИ. обычно они все сделаны на основе чего то, тот же буран - можете повстречать несколько раз в ро. юнит уже знает как это применять, и в каких случаях (в пределах допустимого). даже есть разные способности, просто характеристики изменены. вы можете дать способность, и юнит заюзает в определенный момент (обычно он это сам решает когда юзать. если вам желателен этот юз, то используйте приказы). канал он не будет юзать, возможна за основу взять какую то похожую способность, и сделать триггерно. даже предметы тоже сделаны по тому же принципу - прописаны в ИИ, у меня какие то итемы просто не подбирает, а какие то сволочуга просто продает. поэтому итемы взяты такие за основу, что не захочет продавать
list = {}
list[FourCC('Hpal')]=
{
FourCC('AHhb') ,
FourCC('AHds') ,
FourCC('AHad') ,
FourCC('AHre')
}
TimerStart(CreateTimer(),0.03,true,function()
print("кол-во: ",#list[FourCC('Hpal')])
for i=1,#list[FourCC('Hpal')] do
print(i,GetAbilityName(list[FourCC('Hpal')][i]))
end
end)
Bergi_Bear, спасибо за подсказку. хотя некоторые вещи не работают как надо. если в качестве ключа применять строку, то там они нумеруются с 1. А если задавать ключу номер, к примеру не в порядке 1 2 3 4 итд, а FourCC('AHhb') , FourCC('AHds') , FourCC('AHad') , FourCC('AHre'), то функция # счетчика не работает. ZLOY5, дебаг ничего не показывал, тк я ничего не иниицировавал
мне просто нужно узнать сколько данных в одной ячейке хранятся. а не в таблице, и наверн поэтому не работает?????????
list = a,b,c,d --list имеет 4 данные
Каким образом юниты, выбранные в отряд, понимают как им построить оптимальную "коробочку"?
за расстановку юнитов отвечает какая то строчка в ро. ближнего боя воины вперед, ренжевики сзади. не помню.
вы хотите вращать матрицу прямоугольника вокруг одного капитана?
если командир - всегда находится в углу прямоугольника. то ищем остальные 11 точек. и вращаем прямоугольник относительно поворота командира
код. матрица поворота прямоугольника вокруг оси z
//Простая матрица поворота вокруг оси Z
//cx,cy - центр прямоугольника. в данном случае, я поворачивал относительно центра. вы же можете задать угол прямоугольника в таком случае оффсеты придется менять
//offsetx, offsety - относительное положение от центра. У каждого юнита из 12 будет смещение от центра.
//theta - угол на который вы хотите повернуть прямоугольник
function Matrix takes unit u, real cx, real cy, real offsetx, real offsety, real theta returns nothing
//вектор
local real dx= (cx + offsetx)-cx
local real dy= (cy + offsety)-cy
//ищем offset-ы
local real vx= dx * Cos(theta) - dy * Sin(theta)
local real vy= dx * Sin(theta) + dy * Cos(theta)
//сдвигаем
call SetUnitX(u,cx+vx)
call SetUnitY(u,cy+vy)
endfunction
h0rde, выводи текст на экран. есть в разделе "игра - Display Text Player"
Пишем: "тест" в том месте, где у вас не работает. Если в игре текста не видим, значит, надо посмотреть а работает ли триггер, мб в основном условии триггера не работает. просто проверяй запускает ли триггер вначале. В самом начале триггера ставим, смотрим. Запускаем. В игре смотрим и видим текст, значит работает. И так далее. В условие if смотрим запускается, и так далее до самой нижней ветки.
if ваше условие then
текст "работает"
else
текст "не работает"
end
Можно еще счетчик проверить, сложение этих юнитов, и вывести число
ну можно приказом cancel. cancel - отменяет лишь первую технолошку, надо несколько раз отменять. а еще есть другой способ (но не точный) - если нажать по кнопке технолошки - она удалится из списка, то есть достаточно отдать id-приказ технолошки.
и дебагом надо проверять. еще вопрос по событию - юнит завершает технолошку
я знаю игру Warlock: Master of the Arcane
создаем шестиугольные гексогональные клетки. можно сделать images как тут тут
если игра пошаговая, то юзаем паузы на юнитов. короче, это юнитам перемещение не важна, они просто пешки на карте. А то эти юниты сами выбирают как ходить, поэтому надо ограничить или как то самим направлять. Вам нужно будет отобразить стрелочками как ходить будут.
задает различные характеристики и виды магии как в героях. Что у них должно быть? вроде скорость и дальность перемещения по клеткам. Каждая клетка имеет штрафы (вроде леса, болота, море итд).
когда два противника встречаются на одной клетке, то перемещаем на арену. делаем на карте арены. и пошагово деремся.
развитие города: есть несколько механик. как в героях там здания обустраивать в менюшке, или как в Warlock: Master of the Arcane: там город берет шестигональную область из клеток. в середине крепость. и можно строить разные здания. по ходу увеличения населения город растет, и шестигональная область увеличивается, и значит больше клеток. Эта населения - сволочи, требуют больше жрачки и недовольна. боевые единицы могут улучшаться и lv-up. и еще есть выбор богов, если построить храм вам дадут супер-имбового юнита.
а еще у города есть разные преимущества местности. типа есть золотая шахта, теперь будет бабла давать. Есть эльфийская деревня, то можно построить эльфийское стрельбище или эльфийский отель, которое бабло приносит. Есть пещера минотавра, то можно или из него сделать минотавриков или лабиринт минотавра, чтобы увеличивало дамаг всем войскам. божественная земля - спец земля для храмов. ну и пр
кажется я соединил две механики в одну. ну ладно. удачи.
проблема состоит в том чтоб при касте способности другим игроком снаряд не летит в сторону дамика который принадлежит юзающему игроку.
мб как-то не правильно сохраняете переменные? у вас судя по всему проблемы именно с этим. Кастующий/применяющий - скорее всего GetTriggerPlayer(). Зависит от событии. Наверное, у вас общие глобальные переменные, и тут идет перезапись данных. Надо сделать как-то мультиплерными.
В рефорджете есть событие движения курсора мыши. Как только двигаете мышь, получаете игрока GetTriggerPlayer(), координаты мыши X,Y. Можете узнать номер игрока.
У четырех игроков есть дамик который постоянно перемещается туда где курсор
снаряд летит туда где находится дамик т.к курсор не хочет отслеживаться прошлось таким способом сделать
т.е. курсор не хочет отслеживаться, пришлось сделать даймика. Скажите, пожалуйста, а как даймик у вас отслеживает положение курсора? Есть два способа: либо рефорджет или мемхак. Можно игровые координаты курсора каждого игрока записывать в переменные. Не знаю как в мемхаке, и синхронизировано ли там. И двигать таймером спецэффект. Только вот инфа обновления курсора медленная в рефорджете, как говорил берги. snippet-mouse-utility <= тут используют систему для нахождения игровых координат (не экранных!!!). Считают, что использовать нативки для определения курсора мыши плохо или неудобно, тк они используют события, а события движения мыши реагируют не чаще 0.15 сек. Визуально 0.15 сек вроде норм для человека
Ред. MpW
» WarCraft 3 / Как настроить поднятие предметов ИИ?
Главная проблема: это управление возьмет ИИ-комп, и не даст сделать что-то нужное. Если забрать у него юнита, он обратно его вернет.
Ред. MpW
» WarCraft 3 / Как настроить поднятие предметов ИИ?
вот команда вызывает скрипт, если не ошибаюсь. но там в ии-скриптах нельзя задать итемы и пр. это в движке игры зашито
» WarCraft 3 / Как настроить поднятие предметов ИИ?
» WarCraft 3 / Зелёный город
Ред. MpW
» WarCraft 3 / Как настроить поднятие предметов ИИ?
Ред. MpW
» WarCraft 3 / Вопрос про UnitDamageTarget?
магический тип урона - урон, который игнорируется физической защитой. короче защита физическая никак не понижается, будь хоть 99999 защиты, маг тип урона все равно нанесет урона. большинство заклинании являются магическим типом урона с типом атаки заклинания. Но не все заклинания в варкрафте являются с магическим уроном, есть и с физическим уроном. еще существуют физические атаки с доп магическим уроном с типом заклинания типа bush. в варкрафте в триггерах дохрена типов урона, но об этом уже сотню раз разбирались в статьях.
Ред. MpW
» WarCraft 3 / Заставить ИИ применить способность
» WarCraft 3 / помощь со скиллом
» WarCraft 3 / Как отловить Перерождение?
Ред. MpW
» WarCraft 3 / lua: Как получить количество записей в таблице Lua?
ZLOY5, дебаг ничего не показывал, тк я ничего не иниицировавал
Ред. MpW
» WarCraft 3 / lua: Как получить количество записей в таблице Lua?
пробовал
list = a,b,c,d --list имеет 4 данные
» WarCraft 3 / Виртуальный рельеф
Ред. MpW
» WarCraft 3 / Алгоритм построения юнитов
если командир - всегда находится в углу прямоугольника. то ищем остальные 11 точек. и вращаем прямоугольник относительно поворота командира
» WarCraft 3 / Балорская республика: Анонс
» WarCraft 3 / Хук оригинальной функции хоткея
Ред. MpW
» WarCraft 3 / Ограничение найма солдат.
if ваше условие then
текст "работает"
else
текст "не работает"
end
» WarCraft 3 / Ограничение найма солдат.
» WarCraft 3 / Хук оригинальной функции хоткея
» WarCraft 3 / Как триггерно прервать изучение технологии?
Ред. MpW
» WarCraft 3 / Как воссоздать Warlords?
создаем шестиугольные гексогональные клетки. можно сделать images как
тут
тут
если игра пошаговая, то юзаем паузы на юнитов. короче, это юнитам перемещение не важна, они просто пешки на карте. А то эти юниты сами выбирают как ходить, поэтому надо ограничить или как то самим направлять. Вам нужно будет отобразить стрелочками как ходить будут.
» WarCraft 3 / Костыль с курсором.
Ред. MpW
» WarCraft 3 / Костыль с курсором.
snippet-mouse-utility <= тут используют систему для нахождения игровых координат (не экранных!!!). Считают, что использовать нативки для определения курсора мыши плохо или неудобно, тк они используют события, а события движения мыши реагируют не чаще 0.15 сек. Визуально 0.15 сек вроде норм для человека
» WarCraft 3 / мемный хак для самых маленьких
Ред. MpW
» WarCraft 3 / Отслеживание уничтожения предмета
Виджет - это такой тип переменных: в него можно записать юнит, декор,итем.
» WarCraft 3 / Нету нужного типа классификации в ГУИ