ScopteRectuS, можно одновременно несколько флагов задать точке
это можно легко проверить. берете здание, там указываете в требование пути:
"Пути - расположение мешает" или "Пути - требование к расположению"
триггером помечаешь точку, потом пытайте прощупать землю. При постройке указываете здание, у вас будет помечано красным или зеленым. Это более точно помогает, тк эти точки невидимы. В своей карте мне помогает, до этого столько ляпов наделал полагаясь на логику.
делаете 3 разных здания с разными требованиями, и смотрите поочередно. Это работает норм.
не понятно ничего. давай объясни подробнее что не работает, пример кидай. тебе никто так не даст ответ) это все равно что спросить: "почему у меня не работает программа?"
в зависимости от задач. Можно нарисовать карту путей ссылка, и триггерно ставить невидимые декорации (блокираторы). текстуры путей нацепить можно на здания, так и на декор
ну и чисто триггерно это с помощью SetTerrainPathable, точечно каждую точку помечаешь нужным тебе флагом.
пример кода
function SetPathingRect takes rect re, pathingtype pt, boolean pathable returns nothing
//probably this trigger won't work if you don't snap the regions to the grid
//available pathing types
//PATHING_TYPE_ANY //if this is false you can't walk/build/fly on it
//PATHING_TYPE_WALKABILITY //if this is false you can't walk on it
//PATHING_TYPE_FLYABILITY //if this is false you can't fly on it
//PATHING_TYPE_BUILDABILITY //if this is false you can't build on it
//PATHING_TYPE_PEONHARVESTPATHING //don't know
//PATHING_TYPE_BLIGHTPATHING //if this is false you can't build ziggs on it
//PATHING_TYPE_FLOATABILITY //don't know
//PATHING_TYPE_AMPHIBIOUSPATHING //don't know
local real r = 32 //size of pathing blocks
local real x = GetRectMinX(re)
local real y
local real x2 = GetRectMaxX(re)
local real y2 = GetRectMaxY(re)
loop
exitwhen x == x2
set y = GetRectMinY(re)
loop
exitwhen y == y2
call SetTerrainPathable(x, y, pt, pathable)
set y = y + r
endloop
set x = x + r
endloop
call RemoveRect(re)
set re = null
set pt = null
endfunction
вроде можно попробовать с руной. даем ее триггерно. делаем все без утечек по статье
есть еще особый приказ на иллюзию итема (жезл иллюзии или как-то его звать "Предмет: иллюзий" 'AIil'). Приказ = 852274, строкового приказа не существует.
читал что в новых патчах добавить хотели, не знаю добавили такую проверку
код мем хака
//Является ли юнит неактивным (находится ли он в состоянии покоя или нет)
//В некоторых случаях полезна знать стоит ли юнит, т.к. ловить приказ не надежно
function IsUnitUnactive takes unit u returns boolean
set LastConvertedHandle = ConvertHandle( u )
if LastConvertedHandle > 0 then
return (RMem(LastConvertedHandle+0x174)==-1)
endif
return false
endfunction
если не может юнит обойти преграду, то что происходит с юнитом? прерывается ли приказ. если да, то можно попробовать проверять через него
ссылкасм. раздел "как установить связь между способностями", там можно конечному юниту (архонту) не давать абилку "расседлать", ничего не будет давно, проверял. ладно, дали выше уже ответ)
люди не первый раз спрашивали как сделать архонта или всадника
вот здесь ссылка пробовал (щас не помню, помню что у меня как-то отслеживалось добыча через приказ. на другом компьютере сижу, вар на другом компе). там вроде метки (по хэндлу) ставишь и все
когда будешь проверяешь по хэндлу, достаешь boolean
Можете объяснить как эта работает? Утверждаю yes (y), вожу название name, координаты (сам не знаю какие надо, у меня карта 64х64, значит ли что везде надо 64?). Далее создается файлик с name и это все
GetLocalPlayer, ну все равно что-то короткая там статья. здесь информативная. больше интересует, что лежит внутри этих файлов (всякие slk), чем открыть или конвентировать итд. могу попробовать поперевести. можно было объединить их.
не понятный какой-то вопрос. вводите в поиск Handle Counter и находите код, копируете себе в карту. Есть даже наработки. Это все 1.26 патче работает норм.
В чем отличие? Эти рунные браслеты снижают урон от типа атаки "заклинание", а благословление элуны снижает урон типов атак "Магия" и "Заклинание".
коэ-ты благословления элуны складываются, они перемножаются
пример пассивка с 0.8, две пассивки дают 0.8*0.8=0.64 (64%), три пассивки дают 0.8*0.8*0.8=0.51 (51%). итд
у браслетов не складываются
Замечание: есть конфликт благословления элуны с рунными браслетами "Уменьшение от магии". Во первых, рунные браслеты работают не так. Это у браслетов получается что урон не множится на коэффициент (вычисляется по другой формуле. Формула: урон = damage*(1.00-k) ). Допустим, приведем сравнение по отдельности:
Благословление: 0.8 (80%), противник наносит 100 урона, юнит получает 80 урона
Уменьшение от магии: 0.6 (60%), противник наносит 100 урона, юнит получает 40 урона
Если дать эти две способности, то вместе эти коэффициенты не складываются, не получится, ибо разные коэффициенты в разных вычисления учавствуют. Обе способности последовательно снижают урон. В каком порядке были добавлены способности, в таком порядке и будут снижены: пример первым добавлен скилл рунных браслетов, второй скилл благословление.
100 * (1-0.6) = 100 * 0.4 = 40 - рунные браслеты
40 * 0.8 = 32 - благословление
в конечном итоге юнит с такими абилами получит 32 урона
если пробую выставить РБ в последнюю очередь, то резист б.э. не работает, выдает 40 damage, видимо ломает, как в первом случае взаимодействия. видимо, те что находятся ниже в списке, обрабатываются в первую очередь.
вот такой список был: БЭ + РБ + БЭ + БЭ
первым идут два БЭ = 0.8x0.8=0,64 итог: 100х0.64=64 урона
далее идет РБ = 0.40 итог: 64х0.4=25.6 урона
после этого первый резист БЭ не работает
NazarPunk, вроде есть коллизион. на мемхаке драколич нашел одну нативку, там можно сделать чтобы через предметы нельзя было ходить (в настоящее время коллизиона с итемами нет)
вот
//Установить тип движения юнита
//movetp - тип движения
//selfcollision - могут ли другие юниты пройти через unit u
//outhercollision -может ли unit u пройти через других
function SetUnitMovementType takes unit u, integer movetp, integer selfcollision, integer outhercollision returns nothing
local integer data= GetUnitDataDefByIdCaching(GetUnitTypeId(u)) + 0x1A8
local integer p1=RMem(data)
local integer p2=RMem(data + 4)
local integer p3=RMem(data + 8)
if movetp!=-1 then
call WMem(data,movetp)
endif
//0 = "none", 1 = "foot", 2 = "fly", 4 = "horse", 8 = "hover", 16 = "water"?, 32 = "amph"
//-1 = оставить без изменений
//0 = нет (отсутствует ограничения)
//1 = пеший, 4 = конный, 8 = парящий (ограничение: вода, всякие преграды: здания, деревья, ландшафт, юниты)
//2 = летающий (отсутствуют ограничения, кроме блокираторов воздуха (здания и декор). На воздух влияет с нужным цветом текстура пути, которая, собственно, и крепится к зданию или декору)
//16 = плавающий (ограничение: суша, ландшафт, юниты)
//32 = земноводный (ограничивает только деревья и здания, ландшафт, юниты)
//Примечание: ограничение в смысле что-то блокирует, препятствует движению. И юнит может обойти эту преграду
if selfcollision!=-1 then
call WMem(data + 4,selfcollision)
endif
//0xCA by default
//seems to be TexturePlacement analogue (кажется является аналогом TexturePlacement. наверное аналогия https://xgm.guru/p/wc3/pathing-alternate ?? Не совсем понятно, что имел в виду автор)
//0 = pathable for others
//only 2+8 (A) makes unit non-pathable
//-1 - оставляет без изменений
//0 - если ввожу ноль или любую другую цифру, то через этого юнита "u" проходят
//10 - если десять, то через юнита "u" не могут проходить, обходят стороной
//0xCA - по умолчанию. возвращает к исходному значению, которое было задано.
//пробовал ввести 0xFF летун не мог через здание пролетать, облетает. Как-то влияет значит текстура. Ну вообще большинство чисел (0xFFF) не дают такое сделать. Не все числа, конечно.
//Конечно пытался попробовал изменить текстуру на стройку и ходьбу наземных = не получается.
if outhercollision!=-1 then
call WMem(data + 8,outhercollision)
endif
//-1 = оставить без изменений
//0 = pass through anything (unit u проходит через что-либо. Короче не имеет преград)
//1 = cannot move (unit u не может двигаться, неподвижен. Может только совершать повороты на месте)
//2 = default, 2 by default for ground (настройка по умолчанию для наземных)
//4 = flying default (настройка по умолчанию для летающих)
//8 = stuck at items, can't go thtough units/buildings, pathable for others (unit u не может проходить через предметы. Остальное почти тоже самое, преграды: юниты/здания/декор. Если у здания/декора убрать текстуру пути, то проходит без преград)
//0x10 = can go through units but not items/buildings (Юнит проходит через юнитов. Через итемы/здания/декор не может. Если у здания/декора убрать текстуру пути, то проходит без преград)
//0x20 = free (свободен. без ограничении)
//0x40 = cant move (не может двигаться. почти тоже самое что и "1")
//0x80 == 2 ? , above == 0
call SetUnitPathing(u, true)
call WMem(data,p1)
call WMem(data + 4,p2)
call WMem(data + 8,p3)
endfunction
//===========
когда кастуешь одну, может сработать одновременно несколько. у них просто возможно одинаковый приказ. изменить приказ абилке (кроме канала) нельзя никак, даже если в редакторе задать другой, в игре она все равно никак не меняется. Просто все абилы имеют основу, из чего они сделаны. такой вопрос часто задаваемый на хгм
такое исправить можно каналом или заменой похожей по действию способности. обычно триггерно можно решить.
мне кажется с этим событием нельзя найти того, кто нанес ушерб зданию или убил. и поэтому и не передается другому игроку.
{Владелец {Переключающий юнит}} - это кто?
мб событие - юнит умирает? или получает урон? или юнит атакован?
при получении урона проверяешь хп, правда дело твое. помню чит ставил на whosyourdaddy сносил здание за удар, и не мог захватить, никак отстроить в картах типа риск. при слишком большом дамаге наверн сносится быстро. лучше тогда использовать "юнит умирает", при смерти создает новое и все
для редактирования изображения - фотошоп и пэйнт и любой др графический редактор. размеры и альфа-каналы там же настраивают.
для работы с иконками - Button Manager (конвертируют мелкие иконки с добавлением рамок)
для работы с большими текстурами типа тайлы, или текстуры от моделей есть WARCRAFT III Viewer rus - использую как просмотрщик иконок blp и моделей mdx, и конвертор. есть массовый конверт. работает хорошо в 1.26.
BLP Laboratory - тоже самое вроде, вроде как обычный конвертор иконок. есть массовый конверт. тоже хороший просмотр blp. видит прозрачность (альфа-канал), ну и сжимает файлы
по идее же можно использовать способ из 1,2 коммента, и суммон не будет призываться. это должно работать. нафиг тогда удалять и пр. неизвестно будет ли работать это, тк мб без призыва и стана с уроном не будет.
знаете, вот есть абилы чумы
Ядовитое облако (Дух Чумы) 'Aap2'/'Aap4' - аура, которая отравляет всех ежесекудно.
Ядовитое облако (мясник) 'Aap1'/'Aap3' - аура, которая отравляет всех юнитов ежесекудно.
у мясника указан сумон, а у духа он не указан (это поля пустует). когда мясник дохнет, он призывает духа чумы. аналогично наверн с абилой големом
короче без призыва не работает стан и урон, проверил. там просто падение камня и все, ничего больше не происходит.
а правда ли что StringHash разное на разных машинах? у нас на сайте Ванек кидал раскрытый код этой нативки. xgm.guru/p/blog-bahek/157979 че то не понял, с байтами не дружу
хотелось метод найти. в поиск не знаю чего вбивать. не хватает знаний. в голову лезут всякие генераторы чисел, адрес, индекс. все не то.
Ред. MpW
» WarCraft 3 / Как триггерно создать блок. пути на тип местности?
"Пути - расположение мешает" или "Пути - требование к расположению"
триггером помечаешь точку, потом пытайте прощупать землю. При постройке указываете здание, у вас будет помечано красным или зеленым. Это более точно помогает, тк эти точки невидимы. В своей карте мне помогает, до этого столько ляпов наделал полагаясь на логику.
» WarCraft 3 / DataManager
Ред. MpW
» WarCraft 3 / Как триггерно создать блок. пути на тип местности?
» WarCraft 3 / Разъяснение способности Укрыться за щитом
юзайте поиск
» WarCraft 3 / Как запретить продажу дерева?
Ред. MpW
» WarCraft 3 / Как триггерно призвать иллюзию героя?
Ред. MpW
» WarCraft 3 / Как отловить, что юнит остановился тригерно?
» WarCraft 3 / Как отловить, что юнит остановился тригерно?
https://www.xgm.guru/p/blog-maniac91/movement-detection
Ред. MpW
» WarCraft 3 / Механика архонта
люди не первый раз спрашивали как сделать архонта или всадника
Ред. MpW
» WarCraft 3 / Как определить что рабочий с мешком золота?
когда будешь проверяешь по хэндлу, достаешь boolean
Ред. MpW
» WarCraft 3 / Динамическое создание ландшафта (Wurst)
» WarCraft 3 / Иконки экипировки из Day R Survival
Ред. MpW
» WarCraft 3 / W3M and W3X Files Format
Ред. MpW
» WarCraft 3 / Handle Counter для пача 1.26.0.6401
Ред. MpW
» WarCraft 3 / Благословение Элуны и Рунные браслеты
пример пассивка с 0.8, две пассивки дают 0.8*0.8=0.64 (64%), три пассивки дают 0.8*0.8*0.8=0.51 (51%). итд
у браслетов не складываются
Благословление: 0.8 (80%), противник наносит 100 урона, юнит получает 80 урона
Уменьшение от магии: 0.6 (60%), противник наносит 100 урона, юнит получает 40 урона
Если дать эти две способности, то вместе эти коэффициенты не складываются, не получится, ибо разные коэффициенты в разных вычисления учавствуют. Обе способности последовательно снижают урон. В каком порядке были добавлены способности, в таком порядке и будут снижены: пример первым добавлен скилл рунных браслетов, второй скилл благословление.
100 * (1-0.6) = 100 * 0.4 = 40 - рунные браслеты
40 * 0.8 = 32 - благословление
в конечном итоге юнит с такими абилами получит 32 урона
вот такой список был: БЭ + РБ + БЭ + БЭ
первым идут два БЭ = 0.8x0.8=0,64 итог: 100х0.64=64 урона
далее идет РБ = 0.40 итог: 64х0.4=25.6 урона
после этого первый резист БЭ не работает
Ред. MpW
» WarCraft 3 / Утечки
Ред. MpW
» WarCraft 3 / Убрать физ размер предмета
» WarCraft 3 / Почему кастуются сразу все заклинания?
Ред. MpW
» WarCraft 3 / Почему кастуются сразу все заклинания?
Ред. MpW
» WarCraft 3 / Вопрос про триггер
{Владелец {Переключающий юнит}} - это кто?
Ред. MpW
» WarCraft 3 / Текстуры и все что с ними связано
» WarCraft 3 / Как закрепить плавающий текст вверху экрана?
» The Witcher new Empires / Рыночная система
Ред. MpW
» WarCraft 3 / Способность огненный голем
Ядовитое облако (мясник) 'Aap1'/'Aap3' - аура, которая отравляет всех юнитов ежесекудно.
у мясника указан сумон, а у духа он не указан (это поля пустует). когда мясник дохнет, он призывает духа чумы. аналогично наверн с абилой големом
Ред. MpW
» WarCraft 3 / можно ли получить ключ из координат x,y