27

» Endless Tale / Endless Tale

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

» WarCraft 3 / Terrain Pathability и прочее

TAHK90, понятно
а это видел? тфу это вообще не в карту, а в каталог игры пихают =(
27

» WarCraft 3 / Terrain Pathability и прочее

TAHK90, можно еще попробовать импортировать slk со своими настройками тайлов. Если там в рефордже можно извлечь. но такое я не пробовал. на тестовой карте автозамена настроек тайлов посредством slk у меня не работало, возможно как всегда че-то не так сделал. но я сильно не заморачивался этим
27

» WarCraft 3 / Terrain Pathability и прочее

Можно триггерно задать тип паффинга
//Задает в определенном участке (ректе по русски прямоугольнике) паффинг ландшафта
//Циклом пробегаем в квадрате и задаем тип ландшафта
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
            if y < y2 and x < x2 then
                call SetTerrainPathable(x, y, pt, pathable)
            endif
            set y = y + r
        endloop
        set x = x + r
    endloop
    //call RemoveRect(re)
    //set re = null
    set pt = null
endfunction

А вот чтобы тайл был непроходимым, это только в JNGP можно было, на новом патче не знаю завезли ли
раскрыть
В редакторе JNGP можно текстуру земли настроить, во вкладке UMSWE есть функция Custom Tile Pathability через которую можно редактировать маркеры тайлов на клиффах (на обычных текстурах кажется не работает, но видел в интернете какой то редактор, с возможностью редактировать ландшафт)
изменения происходят не сразу. на скрине написано что надо restart. Но это мб не у всех заработать
27

» WarCraft 3 / Эффекты молнии вызывают Fatal Error после Save/Load

Принятый ответ
После загрузки сохранённой игры пропадают эффекты молний.
Может быть молнии не сохраняются в игре, а при загрузке их уже нет? Проверил вашу карту. Информация в переменных не сохраняется, даже в хэше. Если это так, то нужно сохранять их как-то по-другому. Там координаты, цвет

По существу переменная сохраняет молнию, даже, если она удалена или уже не существует. В ней остается информация хэндла. Если двигать или удалять несуществующую, то приводит к фаталу. А проверить существует ли молния или нет - никак. Даже просто достать информацию цвета молнии ARGB приводит к этому.
Я в своей карте после удаления обнуляю переменную
call DestroyLightning(udg_lightning_1[i])
set udg_lightning_1[i] = null

if GetHandleId(udg_lightning_1[i]) > 0 then
    call DestroyLightning(udg_lightning_1[i])
	set udg_lightning_1[i] = null
 endif
если только по хэндлу проверять или молния!=null, то тогда нужно всегда нулить переменную. Тк переменная сохраняет хэндл, даже, если она удалена или не существует. При сохранении игры удаляешь все, а при загрузке пересоздаешь

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

» WarCraft 3 / Смена ассортимента товаров в лавках/продовцах

ты наверное способности не добавил. выше комментаторы ответили какую и условия. это все было написано в FAQ на форуме еще
система
27

» WarCraft 3 / Проверка завершенной постройки

Vlod, ну это еще легче =)) проще написать свою систему. Например, меня так реализован рост растений. днем быстрее растут, ночью медленее. +всякие бонусы ускорения (удобрения) /замедления (червячки, пожары, неподходящие условия местности )
27

» WarCraft 3 / Проверка завершенной постройки

Первая версия с таймерами - мучная идея. Надо очень многое учитывать (много кода). Зато там осталось идея "как отследить начавшую работу раба?". Здесь конечно отслеживается начала работы строительства. Но меня натолкнула еще одна идея. Например рубка леса. Вот хотел сделать нестандартный ресурс из декорации: камень, сбор фруктов с деревьев, набор воды. Обычно при отдаче приказа, юниту нужно добежать до цели. И потом останавливается, и проигрывается анима рубки. Есть приказ, но юнит стоит на месте. Мб сделать такое че-то

Нашел идеальный вариант (версия 2) нахождения % стройки (короче маленькая система):
проверять по хп. проценты = тек здоровье / макс здоровье
Но работает с одним условием, надо завести счетчик дамага. Надо написать небольшую систему отлова урона, и в счетчик прибавлять. Даже, если хп убывает от дамага, мы все равно можем узнать %
проценты = (тек здоровье+countDamage) / макс здоровье

короче я поставил цель сделать наработку с нестандартным ресурсом из декора
27

» WarCraft 3 / Проверка завершенной постройки

как определить процент стройки (с учетом хуманских рабов и обычная для остальных рас)
Можно использовать таймер. Создаешь и запускаешь таймер в начале стройки, и при завершении удаляешь. процент = текущее время таймера / заданное время *100%

А со случаем с хуманскими рабами такое сделать сложно. Они могут дропнуть, или ускорить. Ладно дроп, там таймер можно было бы запаузить. но как быть с ускорением, когда несколько рабов подключаются к строительству? Не знаю как это надо было сделать. Придумал такую схему: нужен счетчик рабов и счетчик процентов. Периодически каждую секунду таймером прибавляешь проценты в сек
100% / (заданное время стройки/ число рабов) - начисляемый процент за 1 сек

короче с хманскими рабами есть какие-то не точности и погрешности. Обычно большинство случаев норм в 100% укладывается. А бывает и больше 100, но такое редко происходит. Мне кажется период таймер не успевает запаузиться, и начисляет лишние проценты. Что*то ломается, ай, лень уже.
Загруженные файлы
27

» WarCraft 3 / Проверка завершенной постройки

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

Bergi_Bear, интересное утверждение, что абилки не активны у недостроенного здания, их не видно. можно ли проверить есть ли они в наличии? например проверить уровень (Lv>0), приказ кастануть и пр
по хп нельзя проверять % стройки. что если кто-то из вражин ударит, и хп уже не будет считаться полным. % стройки идет на время строительства раздел_строительство
влияющие_на_здание

что эта за пассивка?

можно еще проверять текущий приказ у здания. Обычно у строящего здания текущий приказ равен id здания, что означает, что оно еще строится. к сожалению точно отследить % стройки у хуманов сложнее.

мнение о строителях хуманов
сложность вот в чем, с одним строителем не сложно определить % стройки. Даже когда он перестает временно строить, и возвращается. Все это отслеживается приказами. Нужно точно настроить и предусмотреть все. Но когда подключаются несколько рабочих, то стройка ускоряется. Нужно вводить некий счетчик строителей, которые одновременно строят одно здание. Если один строитель уходит во время стройки, счетчик убывает на единичку. Если счетчик равен = 0, значит стройка приостановлена. Теперь насколько ускоряется? щас затестил:
один хуман строит ратушу: 60 сек, 100%
два хумана строят ратушу: 30 сек, 50% Получается в 2 раза
три хумана строят ратушу: 20 сек, 33,3% Получается в 3 раза
но реально отследить, если коэффициент добавить. Проблема еще в том, что доп ускорение жрет ресурсы. Чтоб будет, если ресурсов не хватать будет? доп рабы перестанут строить? можно ли это отследить то? наверное приказами как-то отслеживается
27

» WarCraft 3 / Приказ отмены постройки орков

PT153, лучше еще на время выключать триггер, а то вместе с текущий приказом - приказ стана 851973 срабатывает в дебагах. Я вообще не понимал, почему это срабатывает, если условие = равкод здания, следовательно, условие триггера должно вернуть false. Но оно работает, и я не обращал внимание, пока до меня не дошло
выкл триггер
вкл паузу
приказ "stop" //в паузе отдает приказ 851973
выкл паузу
вкл триггер
27

» WarCraft 3 / Приказ "Отмена"

pro100master, смотря как... если нужно вызвать прицел... hotkey. Но есть и выше минусы вызова прицела через hotkey. другого ничего не придумать
27

» WarCraft 3 / Приказ "Отмена"

Bergi_Bear, ну да, так и есть))
пример каст + hotkey работает, но не всегда. Тк если каст мгновенный, то в данный момент у игрока выделен кастер. Например чертовы игрушечные фермы, мне нужно, чтобы выбирать место строительства. Я вот не могу создать кучу игрушечных ферм и всучить одному юниту, тк у них общий приказ. Поэтому берем пустышку, и она будет заменять. Так вот: Каст пустышки - подмена этой пустышки на игрушечную ферму + hotkey = работает. Но не всегда, в момент каста надо сделать задержку 0.00 сек
27

» WarCraft 3 / Приказ "Отмена"

Принятый ответ
есть горячая клавиша отмены. Но это работать должно, если у игрока юнит выделен. И кнопка отмены не заблочена и не спрятана. Горячая клавиша напрямую связана с видимостью клавиши, пробовал прятать кнопку, и тогда также не работает и hotkey
function ForceUICancelBJ takes player whichPlayer returns nothing
    if (GetLocalPlayer() == whichPlayer) then
        // Use only local code (no net traffic) within this block to avoid desyncs.
        call ForceUICancel()
    endif
endfunction

xgm.guru/p/wc3/220178 если надо, чтобы не бежал строить. Вы уже отдали приказ строить в точку, и нужно сразу же отдать отмену. сразу же отменить можно. Но приказ стоп обычно не срабатывает.
xgm.guru/p/wc3/218129 приказ отмены. Идет на апгрейды, тренировку и прочее. Вы может неправильно отлов делаете?
27

» WarCraft 3 / WarCraft Shooter v1.1

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

» WarCraft 3 / Можно ли выбрать случайное "разрушаемое" в радиусе?

Принятый ответ
Тебе нужно выбрать дерево из ближайшего окружения?

Ты можешь выбрать все декорации используя эту же функцию. Только в фильтре сравнивай расстояние между древом войны и выбранным деревом, если расстояние между ними меньше радиуса (сам укажешь).
есть функция выбора в круге EnumDestructablesInCircleBJ
есть функция рандома в регионе RandomDestructableInRectBJ

r - реальное число, радиус обхвата деревьев
count - целое число, счетчик деревьев, показывает кол-во выбранных деревьев вокруг древа войны в радиусе r. Необходимое для рандома, функции рандома необходимо указать пределы от и до. А так ты не знаешь сколько будет, поэтому счетчик введен
d [...] - декорация, массив декорации. Сюда можно запихивать подходящие по условию декорации.
u - юнит, древо войны
Можно использовать EnumDestructablesInRect как и в функции EnumDestructablesInCircleBJ, по сути описываю принцип ее действия. В функции выбираем все декорации на карте, то есть в игровой области карты bj_mapInitialPlayableArea. Но используйте фильтр, функцию. Там сравниваете (расстояние между u и GetFilterDestructable() ) <= r. И добавляете подходящую выбранную декорацию в массив d и прибавляете единичку к счетчику, можно прям фильтре. А потом рандомите число, и выбираете подходящую декорацию. все. можно переменных этих не вводить, а сразу рандомить как в RandomDestructableInRectBJ немного переделать на круг
27

» WarCraft 3 / Способность у нейтрального здания

Непонятно, что вам нужно (ответ уже найден - 4 ссылка xgm-бота, но отвечу):
Если вам нужно, чтобы отобразить абилку:
Побочным эффектом способности ‘Aneu’ (Выбрать героя) или ‘Ane2’ (Выбор воина) является доступ к другим заклинаниям боевой единицы. Даже, вражеский воин может использовать способности обладателя выборки. Это же очевидно, помните, есть способность "разведка" в мастерской гоблинов, чтобы обследовать территорию, нужно подойти и кликнуть. Или способность "поставка ресурсов" - производит обмен. Точно, также происходит и с наймом юнитов, игре нужно знать какой игрок нажал, затем продает ему юнита. Есть даже нативки с приказами, иммитирующие действия магазина от другого игрока. Даже атакующие абилки срабатывают.
27

» WarCraft 3 / Задание произвольной высоты декорации

koloff, ну такой нативки нет в 1.26 патче. Такой вопрос я уже изучал. Только пересозданием можно сместить. ждем более умелых специалистов. Тут еще у декора чаще всего карта путей есть, и она может быть не дать сместиться таким образом. Хотя я мб ошибаюсь, вон деревья в ряд создаются, и никак не конфликтуются.
27

» WarCraft 3 / Задание произвольной высоты декорации

Принятый ответ
CreateDestructableZ? Можно ли задать высоту, чтобы воздухе висело или опустить под землю - неизвестно. UPD: да можно поднять. Короче можно пересоздавать декор, но двигать его нельзя.
нативки
native CreateDestructable takes integer objectid, real x, real y, real face, real scale, integer variation returns destructable
native CreateDestructableZ takes integer objectid, real x, real y, real z, real face, real scale, integer variation returns destructable
можно поднимать мосты как в кампаниях близзард.
Пример
кампания ночных эльфов - 3 серия, гробница саргероса, поднимающий мост
Модель имеет 3 состояние (и 3 анимации):
  1. когда моста нет. Он по факту разрушен. На карту ставите декорацию в виде моста. Изначально в третьей карте кампании ночных эльфов в гробнице саргероса близзард уничтожают мост (действие - убить (разрушить) декорацию).
  2. когда необходимо восстановить мост. При заходе в область или нажатии на рычаг - эту декорацию восстанавливают (хп здоровья поправляют), и проигрывают анимацию возрождения "birth".
  3. После восстановления моста - сам этот мост находится в статическом состояний, у него анимация "stand". Теперь по нему можно пройтись.
Неизвестно можно ли друг на друга ставить декорации