27

» WarCraft 3 / Как настроить поднятие предметов ИИ?

TechnoViking, не стандартные решения вам будет не задать. ии-скрипт заточен на классическое сражение. типа стройка, добыча, обучение, апгрейды, какие навыки учить героям и тому подобное. Существует несколько скриптов заточенные под разные расы, если нестандартную расу создавать, то нужен новый скрипт, но с другими юнитами, абилами и пр. Еще и логику надо продумывать: сколько и чего. Там защита, атака.
Главная проблема: это управление возьмет ИИ-комп, и не даст сделать что-то нужное. Если забрать у него юнита, он обратно его вернет.
Решение есть: Если вам нужен юнит, то можно отключить управление скриптом временно, и поуправлять триггером. А если надо, то возвращаем контроль скрипту. есть такая функция, в разделе ИИ смотри
Вторая проблема: ну функционал функции триггеров не велик для не стандартных решении. просто не хватает чекающих функции. типа проверки рядом врагов, итемов, какие итемы имеет или нужно применить, кто напал на базу, можно ли строить в этой точке итд. Это все надо будет продумывать, писать чисто с нуля. поэтому и говорю, что это не просто.
27

» WarCraft 3 / Как настроить поднятие предметов ИИ?

когда вы создаете карту, вам автоматом создают триггер инициализации. там добавлены функции melee-настройки. Если раскрыть функцию, то можно увидеть как они создают ИИ-ботов.
вот команда вызывает скрипт, если не ошибаюсь. но там в ии-скриптах нельзя задать итемы и пр. это в движке игры зашито
native StartMeleeAI takes player num, string script returns nothing
Если у вас карта другого жанра, типа только герои. То можно скрипты не включать. А тогда приказами. иначе тупой ИИ вас бесить будет. Или можно вообще ИИ написать чисто кодом, но это надо все предвидеть, продумать, много проверок и тому подобное - не легкое дело.
27

» WarCraft 3 / Как настроить поднятие предметов ИИ?

TechnoViking, боты в melee-сражениях. а подключаются с помощью ai-скриптов. наверное слыхал про них?
27

» WarCraft 3 / Как настроить поднятие предметов ИИ?

TechnoViking, у игрока подключен ИИ-скрипт? обычно вот такие игроки с включенным скриптом сами подбирают итемы, тк в заложено в ии-поведении. Искал я в ии-скрипте итемы, не находил. Это заложено внутри игры просто.
Я пробовал давать им итемы, или заставлял подбирать. Но не всегда может или хочет подбирать, у него первоочередные цели, и туда может не пойти подбирать. Но даже если положить в инвентарь, ИИ-дурак продает, если оказывается около лавки, или дропает. Не все конечно, и не со всеми, но вот топовые арты он может просто выкинуть
Тестил в карте Necris.
Как-то хотел сделать так, чтобы можно еще союзными-ботами управлять. Войска компьютеров-ИИ просто перешли под управление игрока. Одновременно как бы я мог управлять, и по возможности комп. Но такое управление, оно было частичным, даешь приказ одному, комп берет и перебивает. Покупаешь герою итем, а он берет дропает или продает. Я как-то хотел усилить героев союзников, а то они совсем ватными были.
Я сделал ИИ на триггерах, но кода было миллион. Поэтому дальше не зашло, хочу идею на потом оставить.
Оказывается, что за это отвечает типы итемов, короче это не зависит от абилок в итеме, класса или еще чего то, а на основе какого типа созданы. вот допустим, полезный для ИИ свиток телепортации, если взять и в ро скопировать итем, и создать новый тип, на его основе, т.е. он не будет продавать, он будет с охотой подбирать свитки. нужно самим смотреть будет ли ии его использовать
27

» WarCraft 3 / Вопрос про UnitDamageTarget?

Вы непонятный вопрос задали, и легкий такой код скинули. лично надо проверять, и подбирать. вы не указали тип атаки? работает ваш код то. а все понял, у вас код не полный
смотря что вы понимаете под физический магический чистые уроны. тут на каждый случай. к примеру физический/магический можно разобраться. Но чтобы добиться чистого урона, это сложно, нужно продумать
тут ваш урон разделен на составляющие характеристики: тип атаки, тип урона.
физический тип урона - урон, который блочится защитой. в варкрафте, обычно большинство атак являются обычными, т.е. физическими атаками. за редким исключением разве что магический тип атаки. введен специально для магов, которые могут урон духам или в эфире наносить. Но сам магический тип атаки может являться физическим типом. Короче типы атак введены для коэ-тов, ваши значения меняются в зависимости от типа защиты цели.
магический тип урона - урон, который игнорируется физической защитой. короче защита физическая никак не понижается, будь хоть 99999 защиты, маг тип урона все равно нанесет урона. большинство заклинании являются магическим типом урона с типом атаки заклинания. Но не все заклинания в варкрафте являются с магическим уроном, есть и с физическим уроном. еще существуют физические атаки с доп магическим уроном с типом заклинания типа bush. в варкрафте в триггерах дохрена типов урона, но об этом уже сотню раз разбирались в статьях.
чистый урон - ровный урон. столько, сколько ты указал, столько и прилетело. Не меньше, не больше. По факту, такое сложно добиться из-за маг резисторов, защиты, которая понижает. И из-за типы атаки/типы защиты, табличные коэффициенты не дают наносить ровно. Можно добиться разве что вычитаем здоровья, с нанесением триггерного 0.00 урона. Наношу 0.00 урона, чтобы заагрить юнитов, и события урона чтобы работало. Если просто вычесть здоровье, то цель не поймет, что ее ударил кто-то, и события не будет

сейчас существуют в рефордже события, позволяющие менять и редактировать уроны.
27

» WarCraft 3 / Заставить ИИ применить способность

боты могут юзать способности без вашего ведома, тк это прописано в ИИ. обычно они все сделаны на основе чего то, тот же буран - можете повстречать несколько раз в ро. юнит уже знает как это применять, и в каких случаях (в пределах допустимого). даже есть разные способности, просто характеристики изменены. вы можете дать способность, и юнит заюзает в определенный момент (обычно он это сам решает когда юзать. если вам желателен этот юз, то используйте приказы). канал он не будет юзать, возможна за основу взять какую то похожую способность, и сделать триггерно. даже предметы тоже сделаны по тому же принципу - прописаны в ИИ, у меня какие то итемы просто не подбирает, а какие то сволочуга просто продает. поэтому итемы взяты такие за основу, что не захочет продавать
27

» WarCraft 3 / помощь со скиллом

у обоих скилов одинаковый приказ, созданы на одной основе.
27

» WarCraft 3 / lua: Как получить количество записей в таблице Lua?

	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, дебаг ничего не показывал, тк я ничего не иниицировавал
27

» WarCraft 3 / lua: Как получить количество записей в таблице Lua?

Bergi_Bear, не работают
пробовал
table.maxn(table):
То же, что и table.getn и #.
мне просто нужно узнать сколько данных в одной ячейке хранятся. а не в таблице, и наверн поэтому не работает?????????
list = a,b,c,d --list имеет 4 данные
27

» WarCraft 3 / Виртуальный рельеф

можно качающие об берег морские волны так создать

интересен мост
27

» WarCraft 3 / Алгоритм построения юнитов

в чем проблема?
Каким образом юниты, выбранные в отряд, понимают как им построить оптимальную "коробочку"?
за расстановку юнитов отвечает какая то строчка в ро. ближнего боя воины вперед, ренжевики сзади. не помню.
вы хотите вращать матрицу прямоугольника вокруг одного капитана?
если командир - всегда находится в углу прямоугольника. то ищем остальные 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
что то было похожее тут

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

» WarCraft 3 / Хук оригинальной функции хоткея

Bergi_Bear, да понял. просто а мало ли. в рефордже чтобы вызвать прицел/меню и пр до сих пор хоткей юзаем?
27

» WarCraft 3 / Ограничение найма солдат.

h0rde, выводи текст на экран. есть в разделе "игра - Display Text Player"
Пишем: "тест" в том месте, где у вас не работает. Если в игре текста не видим, значит, надо посмотреть а работает ли триггер, мб в основном условии триггера не работает. просто проверяй запускает ли триггер вначале. В самом начале триггера ставим, смотрим. Запускаем. В игре смотрим и видим текст, значит работает. И так далее. В условие if смотрим запускается, и так далее до самой нижней ветки.
if ваше условие then
текст "работает"
else
текст "не работает"
end
Можно еще счетчик проверить, сложение этих юнитов, и вывести число
27

» WarCraft 3 / Ограничение найма солдат.

пока что сложно сказать в чем дело. по логике все верно, это надо чекать в игре карту.
27

» WarCraft 3 / Как триггерно прервать изучение технологии?

ну можно приказом cancel. cancel - отменяет лишь первую технолошку, надо несколько раз отменять. а еще есть другой способ (но не точный) - если нажать по кнопке технолошки - она удалится из списка, то есть достаточно отдать id-приказ технолошки.
и дебагом надо проверять. еще вопрос по событию - юнит завершает технолошку
27

» WarCraft 3 / Как воссоздать Warlords?

я знаю игру Warlock: Master of the Arcane
создаем шестиугольные гексогональные клетки. можно сделать images как
тут
тут
если игра пошаговая, то юзаем паузы на юнитов. короче, это юнитам перемещение не важна, они просто пешки на карте. А то эти юниты сами выбирают как ходить, поэтому надо ограничить или как то самим направлять. Вам нужно будет отобразить стрелочками как ходить будут.
задает различные характеристики и виды магии как в героях. Что у них должно быть? вроде скорость и дальность перемещения по клеткам. Каждая клетка имеет штрафы (вроде леса, болота, море итд).
когда два противника встречаются на одной клетке, то перемещаем на арену. делаем на карте арены. и пошагово деремся.
развитие города: есть несколько механик. как в героях там здания обустраивать в менюшке, или как в Warlock: Master of the Arcane: там город берет шестигональную область из клеток. в середине крепость. и можно строить разные здания. по ходу увеличения населения город растет, и шестигональная область увеличивается, и значит больше клеток. Эта населения - сволочи, требуют больше жрачки и недовольна. боевые единицы могут улучшаться и lv-up. и еще есть выбор богов, если построить храм вам дадут супер-имбового юнита.
а еще у города есть разные преимущества местности. типа есть золотая шахта, теперь будет бабла давать. Есть эльфийская деревня, то можно построить эльфийское стрельбище или эльфийский отель, которое бабло приносит. Есть пещера минотавра, то можно или из него сделать минотавриков или лабиринт минотавра, чтобы увеличивало дамаг всем войскам. божественная земля - спец земля для храмов. ну и пр
кажется я соединил две механики в одну. ну ладно. удачи.
27

» WarCraft 3 / Костыль с курсором.

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

» WarCraft 3 / Костыль с курсором.

плохо задаете вопрос, не понятно так написано.
проблема состоит в том чтоб при касте способности другим игроком снаряд не летит в сторону дамика который принадлежит юзающему игроку.
мб как-то не правильно сохраняете переменные? у вас судя по всему проблемы именно с этим. Кастующий/применяющий - скорее всего GetTriggerPlayer(). Зависит от событии. Наверное, у вас общие глобальные переменные, и тут идет перезапись данных. Надо сделать как-то мультиплерными.
В рефорджете есть событие движения курсора мыши. Как только двигаете мышь, получаете игрока GetTriggerPlayer(), координаты мыши X,Y. Можете узнать номер игрока.
У четырех игроков есть дамик который постоянно перемещается туда где курсор
снаряд летит туда где находится дамик т.к курсор не хочет отслеживаться прошлось таким способом сделать
т.е. курсор не хочет отслеживаться, пришлось сделать даймика. Скажите, пожалуйста, а как даймик у вас отслеживает положение курсора? Есть два способа: либо рефорджет или мемхак. Можно игровые координаты курсора каждого игрока записывать в переменные. Не знаю как в мемхаке, и синхронизировано ли там. И двигать таймером спецэффект. Только вот инфа обновления курсора медленная в рефорджете, как говорил берги.
snippet-mouse-utility <= тут используют систему для нахождения игровых координат (не экранных!!!). Считают, что использовать нативки для определения курсора мыши плохо или неудобно, тк они используют события, а события движения мыши реагируют не чаще 0.15 сек. Визуально 0.15 сек вроде норм для человека
27

» WarCraft 3 / Отслеживание уничтожения предмета

Можно событием смерти widget-та. Не знаю на вашем гуи есть такое.
Виджет - это такой тип переменных: в него можно записать юнит, декор,итем.
Другой вариант - проверять таймером хп, и чекать не скрыт ли он. Пока такого никогда не делал.