27

» WarCraft 3 / можно ли получить ключ из координат x,y

Drynwhyl, конечно же нет. но вряд ли дробная часть будет мешать. 100% уверен. тк берем одну точку, и относительно нее строится все, все остальные оффсеты следуют из нее.
PT153, ну хэш-таблица не в приоритете, там и чистить надо, и писать много кода. еще и переделывать надо систему под хэш. бррр много работы
ладно, нашел силу воли циклы так циклы.
27

» WarCraft 3 / GUI - В событиях нет переменных нужного типа

Дик, можно триггерно через действие:
"добавить событие - Юнит вошёл в область 250, от юнита …"

тут важно понимать порядок. если заглянуть в main-функцию. там сначала инициируются глобалки, затем инициируются триггеры. ты можешь в регистре события на юнита запихать, которые на карте находятся. возможно близзарды учли в гуи такой момент, ибо сама переменная мб пуста, и ты не сможешь в событие занести юнита. видимо поэтому не отображается. Лично для меня это пустяк, мб на jass записать
----
И кстати все юниты, вытаставленные вами на карте, создаются триггерно. Можешь сам занести в переменную. И добавить действием "add event ...".
Обойти можно на джаз
27

» WarCraft 3 / как разбить фигуры на прямоугольники?

prog, ну понимаешь, код проверял соседние точки. и получалось что точки ближе находились к центру чем должны были. а оказалось что мб "общие точки", одни и те же могут занять одну и ту точку. я так ругался
27

» WarCraft 3 / как разбить фигуры на прямоугольники?

prog, 32х32 миним размер ячейки (достаточно 1 точки)
кстати есть проблема из-за общих ячеек, один раз сильно из-за них лоханулся
Загруженные файлы
27

» WarCraft 3 / как разбить фигуры на прямоугольники?

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

» WarCraft 3 / как разбить фигуры на прямоугольники?

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

» WarCraft 3 / как разбить фигуры на прямоугольники?

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

» WarCraft 3 / как разбить фигуры на прямоугольники?

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

» WarCraft 3 / как разбить фигуры на прямоугольники?

NazarPunk, я не понимаю что вы мне скинули. поэтому не могу этой подсказкой воспользоваться
Clamp, ну они циклами проверяют соседние координаты. а это большая работа чтоб объяснить. проще самому под капот заглянуть. есть видос как они создаются.
8gabriel8, я знаю. но есть разные фигуры
Загруженные файлы
27

» WarCraft 3 / как разбить фигуры на прямоугольники?

Вам случайно не задача о принадлежности точки многоугольнику нужна?
не могу сказать, у меня же нет центра, у меня квадратные формы. и выглядит слишком сложно.

NazarPunk, так она у меня на 1.26, и с ошибками. щас новую карту скидываю.
Clamp, щас объясню как
Загруженные файлы
27

» WarCraft 3 / как разбить фигуры на прямоугольники?

детерминируются многоугольники
слово не понятное для меня) я не считаю это многоугольником, поэтому и аккуратно назвал "фигурой"

Clamp, циклами)) могу карту скинуть.
  1. строите палатку
  2. выбираете палатку, и пытаетесь через нее построить вагонетки
по идее должно покупать участки
Загруженные файлы
27

» WarCraft 3 / Триггерный ИИ

Принятый ответ
ищи примеры на "Send AI Command" или
native CommandAI takes player num, integer command, integer data returns nothing
настраиваете в ИИ-редакторе, конечно проще в ai-файл подредактировать, просто надо понять как это работает. надо понять что делают все эти ИИ-функции
жаль что нельзя подходящие условия и данные из ИИ-обработок в триггеры. Это приходится самому в триггерах ловить события
и наоборот передать в ИИ-обработку данные. Мб с помощью Send AI Command можно передать число противников боту
27

» WarCraft 3 / Модель дамми

OVOgenez, тут кватерионы x,y,z,w
вращение по оси x
если вращение только по одной оси x, то y=0,z=0
кадров можно взять поменьше, огромное число кадров сделал чтоб понимали
		Rotation 17 {
		Linear,
		0: { 0, 0, 0, 1 }, //180°
		150: { 0.19, 0, 0, 0.98 }, //157.5°
		300: { 0.38, 0, 0, 0.92 }, //135°
		450: { 0.55, 0, 0, 0.83 }, //112.5°
		600: { 0.707, 0, 0, 0.707 }, //90°
		750: { 0.83, 0, 0, 0.55 }, //67.5°
		900: { 0.92, 0, 0, 0.38 }, //45°
		1050: { 0.98, 0, 0, 0.19 }, //22.5°
		1200: { 1, 0, 0, 0 }, //0°
		1350: { -0.98, 0, 0, 0.19 }, //337,5°
		1500: { -0.92, 0, 0, 0.38 }, //315°
		1650: { -0.83, 0, 0, 0.55 }, //292,5°
		1800: { -0.707, 0, 0, 0.707 }, //270°
		1950: { -0.55, 0, 0, 0.83 }, //247,5°
		2100: { -0.38, 0, 0, 0.92 }, //225°
		2250: { -0.19, 0, 0, 0.98 }, //202,5°
		2400: { 0, 0, 0, 1 }, //180°
	}
для вращения по другим осям поменяйте плоскость, короче тоже самое, те же цифры только ось меняем
вращение по оси y
если вращение только по одной оси y, то x=0,z=0
		Rotation 17 {
		Linear,
		0: { 0, 0, 0, 1 }, //180°
		150: { 0, 0.19, 0, 0.98 }, //157.5°
		300: { 0, 0.38, 0, 0.92 }, //135°
		450: { 0, 0.55, 0, 0.83 }, //112.5°
		600: { 0, 0.707, 0, 0.707 }, //90°
		750: { 0, 0.83, 0, 0.55 }, //67.5°
		900: { 0, 0.92, 0, 0.38 }, //45°
		1050: { 0, 0.98, 0, 0.19 }, //22.5°
		1200: { 0, 1, 0, 0 }, //0°
		1350: { 0, -0.98, 0, 0.19 }, //337,5°
		1500: { 0, -0.92, 0, 0.38 }, //315°
		1650: { 0, -0.83, 0, 0.55 }, //292,5°
		1800: { 0, -0.707, 0, 0.707 }, //270°
		1950: { 0, -0.55, 0, 0.83 }, //247,5°
		2100: { 0, -0.38, 0, 0.92 }, //225°
		2250: { 0, -0.19, 0, 0.98 }, //202,5°
		2400: { 0, 0, 0, 1 }, //180°
	}
вращение по оси z
если вращение только по одной оси z, то x=0,y=0
		Rotation 17 {
		Linear,
		0: { 0, 0, 0, 1 }, //180°
		150: { 0, 0, 0.19, 0.98 }, //157.5°
		300: { 0, 0, 0.38, 0.92 }, //135°
		450: { 0, 0, 0.55, 0.83 }, //112.5°
		600: { 0, 0, 0.707, 0.707 }, //90°
		750: { 0, 0, 0.83, 0.55 }, //67.5°
		900: { 0, 0, 0.92, 0.38 }, //45°
		1050: { 0, 0, 0.98, 0.19 }, //22.5°
		1200: { 0, 0, 1, 0 }, //0°
		1350: { 0, 0, -0.98, 0.19 }, //337,5°
		1500: { 0, 0, -0.92, 0.38 }, //315°
		1650: { 0, 0, -0.83, 0.55 }, //292,5°
		1800: { 0, 0, -0.707, 0.707 }, //270°
		1950: { 0, 0, -0.55, 0.83 }, //247,5°
		2100: { 0, 0, -0.38, 0.92 }, //225°
		2250: { 0, 0, -0.19, 0.98 }, //202,5°
		2400: { 0, 0, 0, 1 }, //180°
	}
27

» WarCraft 3 / Модель дамми

Принятый ответ
как повернуть юнита (снаряд) обычно мы можешь юнита двигать, поднимать. Но вот редактор не обладает возможностью триггерно наклонять вниз, накренять юнита вбок, вращать вокруг оси. здесь перечислено несколько способов как поворачивать модель юнита. тут есть дохрена моделей примерами, тут еще описано как создать свою модель
ссылка 2 тут тоже несколько способов. первый: использовать кость модели и поворачивать с помощью функции SetUnitLookAt. Раньше думал, что эта функция только для поворота головы, но оказалось можно сделать больше - поворачивать dummy-снаряды. К сожалению, не опробовал этот метод по причине недостатка времени. Недостатки: там можно повернуть только две кости, в принципе достаточно для снаряда (нужно создать модель. что тут сложного? ракета или стрела это простые модели, на них крепим кость); необходимость использовать даймика для поворота. Еще один способ - использовать специальную модель с различными анимациями (где каждая анимация сменяет положение юнита), и вращать с помощью SetUnitAnimationByIndex. берете модель из наработки скорпа и изучите код
вот кватерион вращения из первой ссылки
вот рисунок доработанный завалялся у меня на компе.
это в моделе прописывают
Загруженные файлы
27

» WarCraft 3 / вероятность в триггерах

Принятый ответ
есть такая функция, которая достает случайное число из заданного вами промежутка. Почти все варкрафтеры с помощью нее строят рандомные события в игре, заклинания и пр.Смотри в разделе целое число (integer), или действительное число (real)

set i = GetRandomInt(i0,i1) - достает случайное целое число из промежутка i0- i1
set r = GerRandomReal(x0,x1) - аналогично, только реальное число
и с помощью нее пляем, делаем проверки.
ненужное
часто с помощью нее делают скилы с критическим ударом, уклонением, стан и пр. в таких заклинаниях делают проверку на шанс. можете посмотреть на нашем сайте, тут часто спрашивали как с шансом что-то сделать.
пример 50% шанс нанести 1.5x урона, и иначе промах
set i = GetRandomInt(0,100)
if i>50 then //если целое число больше 50
//нанести 1.5x урон
elseif i<50 then //иначе если меньше 50
//промах, хиляем
endif
аналогично и с реальным числом
set r = GetRandomReal(0.00,1.00)
if r>0.50 then //если целое число больше 50
//нанести 1.5x урон
elseif r<0.50 then //иначе если меньше 50
//промах, хиляем
endif

или
set i = GetRandomInt(0,1)
if i==0 then //если целое число равно 0
//нанести 1.5x урон
elseif i==1 then //иначе если число рано 1
//промах, хиляем
endif
тоже самое можно сделать все что угодно.
27

» WarCraft 3 / За что отвечают отмеченые параметры..

вот рисунок с объяснением некоторым параметров (с буфером, и разбросом урона катапульты)
Загруженные файлы
27

» WarCraft 3 / Проблема с правописанием кода

Принятый ответ
LoadUnitHandle(HashUnit,1,TaimerID) - кажется тут наоборот id с единицей не перепутал?
надо LoadUnitHandle(HashUnit,TaimerID, 1)

if условие then <= не забыл ли then?
действие
endif

еще ты сравниваешь реальное число с юнитом, поэтому редактор мб выдать ошибку
27

» WarCraft 3 / Как сбросить способности героя?

Принятый ответ
книга забвения 'Aret' - активная способность, позволяет забыть все выученные способности героем. И также возвращает обратно герою очки навыков, за каждое очко навыков можешь прокачать 1 навык.

в руну пихаешь абилу, и в нужный момент даешь герою.

Можно попробовать удалять навык, и очки навыков триггером дать. Хотя не знаю точно можно ли запихать обратно в меню изучаемых скилов (коасный плюсик). вроде, если удалить, то обратно в hero-ability list не вернуть
27

» WarCraft 3 / Условный диалог

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