quq_CCCP:
Спасибо, понял что надо создавать форс единожды, чтобы утечек не было
Мдаа уж, оказывается все дело в том, что забыл поставить исходные позиции другим игрокам, хорошо хоть проверить догадался, засиделся за редактором
Спасибо всем, но я кое-что не подумал, надо чтобы баффы ауры на целях были видны только игроку (и его союзникам) юнита, который их распространяет и в инвизе, а иначе палево. Вся суть баффа это дать спецэффект на юните, знаю что можно даммиком, но нужно чтобы он был закреплен как спецэффкт, иначе некрасиво. Возможно ли такое вообще, давать инвизные спецэффекты?
Ну в этом случае тебе аура не нужна вовсе, триггерной пикай всех юнитов в радиусе и локально для игроков изменяй модель спецээфектов на юнитах под эффектом ауры, ну бафф сделать так не выйдет = сразу же десинх.
Как понять локально для игроков? Тогда спецэффект будет виден одному игроку, а другому нет? Я в джасс не особо, какое условие на гуи соответствует этому if (GetLocalPlayer() == Player(0)) then ?
Спасибо всем, но я кое-что не подумал, надо чтобы баффы ауры на целях были видны только игроку (и его союзникам) юнита, который их распространяет и в инвизе, а иначе палево. Вся суть баффа это дать спецэффект на юните, знаю что можно даммиком, но нужно чтобы он был закреплен как спецэффкт, иначе некрасиво. Возможно ли такое вообще, давать инвизные спецэффекты?
Caster = юнит, применивший скил
PointCaster = позиция кастера
PointTarget = точка скила
PointMiddle = Расстояние между PointCaster и PointTarget делить на 2 (середина прыжка, где будет его максимальная высота, потом снижение)
RealDistance = 0 (расстояние, на которое юнит будет двигаться каждую 0.01)
RealHeight = 0 (высота)
Включить Timer, который зазвонит через 0.01 секунд
В таймере:
PointCasterNow = позиция Caster
PointMove = PointCasterNow смещение на RealDistance
Двигать Caster в PointMove
RealHeight = корень из RealDistance (сама формула)
Установить высоту Caster как RealHeight
*Если расстояние между PointMove и PointMiddle = 0
-То,
RealDistance = RealDistance - 1
-Иначе,
RealDistance = RealDistance + 1 (или сколько хочешь)
*Если расстояние между PointMove и PointTarget = 0
-То,
Пауза Timer
-Иначе,
-
Утечки сам удалишь.
Ну или иначе вот сама формула на джассе
function ParabolaZ takes real h, real d, real x returns real
return (4 * h / d) * (d - x) * (x / d)
endfunction
h - максимальная высота в прыжке на середине расстояния (x = d / 2),
d - общее расстояние до цели,
x - расстояние от исходной цели до точки, где следует взять высоту по параболе.
Сделай лучше просто периодом: выбрать всех юнитов в радиусе точки, если расстояние между выбранный юнит и точкой больше, то двигать юнита в точку. Точнее лучше таймером и выбирать EnumGroupInRect.
Lotus101, это не то. карты старые. там фаталы происходят из-за старого ретург бага (короче раньше, в варе ниже 1.24 код немного по-другому писали, там не было хэш-таблицы, использовали кэш. И сохраняли в качестве ключа не с помощью целого числа, а с помощью строки).
короче там ошибки из-за функции, внутри они могут возвращать два значения (либо одно значение, либо пустующее, есть хитрость к примеру возвращает значение целое число (id-хэндл), а в функциях в аргументах написан юнит, значит возвращает юнита, или наоборот из юнита в id-хэндл. Типа конвертация из объекта в число или из числа в объект). но сегодняшний вар будет считать это за ошибку, так как нельзя вернуть целое число, если указано в функции, что надо вернуть юнита. я конечно не застал то время, начал изучать jass с 1.24.
раскрыть
например
constant function H2I takes handle h returns integer
return h
return 0
endfunction
constant function I2U takes integer i returns unit
return i
return null
endfunction
constant function I2Li takes integer i returns lightning
return i
return null
endfunction
могу как-то первую переделать
function H2I takes handle h returns integer
return GetHandleId(h)
endfunction
А вот остальные не работают, так как требуют чтобы как-то хэндлом управлять. Хэндл - все объекты, id хэндла - номер ячейки. Короче мы знаем номер объекта, а вот как достать из хэндла юнита или молнию не можем. раньше это делали так, как привел выше (см. первые три функции). то теперь близзарды в качестве защиты переделали это.
Нельзя сохранить в кэше юнита, молнию и прочих объектов. Но можно сохранять в кэше номера, и строки, логические значения. Короче сохраняли id-хэндл юнита или молнию. А когда нужно было достать юнита или молнию, то конвертировали из id-хэндла юнита в хэндла с помощью ретурна.
Теперь нам дали теперь на каждый тип объекта функцию
старая:
local unit Unit1 = I2U(GetStoredInteger (udg_cache, I2S(H2I(Timer)), "Unit1"))
local unit Unit1 = LoadUnitHandle(udg_Hash, IGetHandleId(Timer), 0)
Спасибо что объяснил, раз там надо другие версии варкрафта качать то и фиг с ними тогда, другие карты работают и норм)
В принципе то что вы скинули все равно не решит главную проблему - невозможность кликать по декорации и под ней. В общем нашел только единственное решение сделать декорацию даммика, и при прохождении рядом с ней юнитов изменять им высоту в зависимости от той, которая была до этого, а по бокам ставить барьеры, и такое получится только при управлении клавишами, иначе не удобно.
делать декорацию как юнита со способностью москитов, и менять высоту других юнитов в зависимости от того как они пришли в место над/под декорацией (например хранить координаты и высоту для каждого юнита и узнавать какая высота была 0,05 сек. назад)
Нужна именно декорация, иначе клик будет по зоне под москитным юнитом и не оч тогда будет. Steal nerves:
мб столкновение отключить у юнита? а вообще надо поискать на форуме и на сайте. помню кто-то задавал
я выяснил что set udg_total_rocks = GetForLoopIndexB() ее создает
там нету утечки
Да, уже нашел что вызывало, создание группы юнитов в области не через call GroupEnumUnitsInRect, теперь безутечно, только 10-50 утечек из-за кол-ва юнитов в группе, но я думаю и так нормально и лучше некуда.
Спасибо большое, теперь то что нужно. Можешь только пожалуйста утечку убрать, я выяснил что set udg_total_rocks = GetForLoopIndexB() ее создает, но не знаю как исправить чтобы все работало.
Если системно увеличить не получится, то как вариант создать дамми юнитов с нужным обзором по краям обзора героя (1800),а так и всю карту можно спалить.
Попробовал сделать через динамическое создание/удаление декорации, но декорации с текстурой пути создаются строго по сетке, и движение выходит скачками
Вооо, вот это уже то что надо, жаль я так понял что декорации нельзя как юнитов на 1 миллиметр перемещать, а только на большие клетки редактора и из-за этого кажется, что они телепортируются, если другие варианты не получатся сделают этот. Осталось только придумать как сделать так, чтобы юнит не двигался относительно декорации, на которой он стоит. Bornikkeny:
Вероятнее всего, ты повышаешь камеру выше скайбокса.
Вероятные решения проблемы:
а) Уменьшить самих юнитов и стилизовать ланд под маленькие модели.
б) Вставить нестандартный скайбокс с огромным размером.
(я бы выбрал первый вариант, потому что он круче)
Кстати тоже интересует этот вопрос, вот я вставил скайбокс, но все равно на большой высоте между картой и скайбоксом есть тьма, что это и как это убрать, чтобы была видна карта?
Lotus101, это очень сложный вопрос. Сложность в том, как сделать так, чтобы можно было ходить по глыбам, которые создаются в игре. Интересный вопрос. Это вопрос к экспертам. Мне кажется надо что-то высчитывать всякие координаты и прочее.
Но у меня есть система прыжка. Не помню где ее скачал, но на хгм. Я ее не изучал, и полностью не понимаю как реализована это творение. Вроде разрушаемые декорации на этот влияют, но точно не уверен. Верно вами подмечено, что это наподобие моста, надо смотреть как у моста сделано.
Это немного не то, самого главного нету - движения декорации или юнита, по которому можно ходить, + как-то слишком много триггеров и очень длинные они, но когда буду делать коллизии пригодится, спасибо. quq_CCCP:
Глыбы - тупо сделать из юнитов, а то чтобы по ним можно было ходить, просто летающий юнит которому не дают выйти за пределы глыбы.
Я тоже такой вариант думал, но решил что он самый бредовый и сложный, ведь по идеи для скила должно создаваться много таких глыб, с разными высотой, шириной, с разным таймингом с различным увеличением размера (чтобы было настоящее зрелище). Но чтож, попробую для начала так сделать с одной без всяких усложнений, выбора нет. Позже отпишу.
Тоже не прочь протестировать, пк немого выше средней мощности. DemonoiD:
А кто-нибудь случаем не видел микс-архива (года так 2014), когда пытались в war3 перекинуть переделанные модельки wow'a? Им вроде как раз рендера и освещения не хватало, поэтому они ушли в sc2. Тут графон, судя по скринам, стал как в mount and blade. И это для чертовой стратегии 2001 года.
С появлением шейдеров, нормального освещения и теней в этой модификации, можно переродить не только war3, но и небо и даже Аллаха.
Не знаю про микс патч, но тебе может это понравится
Fraps,
любой нормальный человек хостит себе игру своим хост ботом.
Да не... Там стоко хост ботов, что народу ждать можно пол дня... И это если ботом хостить даже.
А в гарене и за 10 мин набрать можно.
Дело даже не в хост-ботах, а в народе. Хоть гарену и закроют скоро, в связи с чем там связь стала хуже и лан иногда не работает, все равно большинство к сожалению там играет.
Что-то я давно не заходил в редактор, в редакторе вкладке render edge есть, галочки стоят, сам рендер работает, но когда нажимаю проверка просто запускается рендер в главном меню, а самой проверки карты нет, раньше все было нормально, wehack.lua заново скачал и установил. Помогите исправить пожалуйста.
Поправка, переместил папку с рендером из рабочего стола в путь только с анлийскими буквами, теперь все нормально, как-то так)
Lotus101, посмотри эту систему, либо сделай сам. Для движения снарядов нужно написать всего-лишь одну-две формулы. Ещё можешь посмотреть наработки для Unreal Engine, Unity, либо прочитать книги по игровой физике.
Спасиб, а как установить и пользоваться sharpcraft знаешь?
» WarCraft 3 / Функция противники игрока не работает и создает утечки
Спасибо, понял что надо создавать форс единожды, чтобы утечек не было
Мдаа уж, оказывается все дело в том, что забыл поставить исходные позиции другим игрокам, хорошо хоть проверить догадался, засиделся за редактором
Ред. Lotus101
» WarCraft 3 / Как может невидимый юнит дать врагам (и не только) ауру?
Ред. Lotus101
» WarCraft 3 / Как может невидимый юнит дать врагам (и не только) ауру?
Ред. Lotus101
» WarCraft 3 / Скилл прыжок
PointCaster = позиция кастера
PointTarget = точка скила
PointMiddle = Расстояние между PointCaster и PointTarget делить на 2 (середина прыжка, где будет его максимальная высота, потом снижение)
RealDistance = 0 (расстояние, на которое юнит будет двигаться каждую 0.01)
RealHeight = 0 (высота)
Включить Timer, который зазвонит через 0.01 секунд
PointCasterNow = позиция Caster
PointMove = PointCasterNow смещение на RealDistance
Двигать Caster в PointMove
RealHeight = корень из RealDistance (сама формула)
Установить высоту Caster как RealHeight
*Если расстояние между PointMove и PointMiddle = 0
-То,
RealDistance = RealDistance - 1
-Иначе,
RealDistance = RealDistance + 1 (или сколько хочешь)
*Если расстояние между PointMove и PointTarget = 0
-То,
Пауза Timer
-Иначе,
-
return (4 * h / d) * (d - x) * (x / d)
endfunction
d - общее расстояние до цели,
x - расстояние от исходной цели до точки, где следует взять высоту по параболе.
Ред. Lotus101
» WarCraft 3 / Юнит покидает регион
» WarCraft 3 / Модели стен
» WarCraft 3 / Возможность кликать и ходить под декорацией
В принципе то что вы скинули все равно не решит главную проблему - невозможность кликать по декорации и под ней. В общем нашел только единственное решение сделать декорацию даммика, и при прохождении рядом с ней юнитов изменять им высоту в зависимости от той, которая была до этого, а по бокам ставить барьеры, и такое получится только при управлении клавишами, иначе не удобно.
» WarCraft 3 / Возможность кликать и ходить под декорацией
Steal nerves: Других вариантов нет?
Переместил карту в папку в пути которого нет кириллицы, теперь при сохранении появляется такое окно, а затем фатал
» WarCraft 3 / Возможность кликать и ходить под декорацией
» WarCraft 3 / Возможность кликать и ходить под декорацией
Steal nerves: Проверил, столкновение ничего не дало
» WarCraft 3 / Движение декорации или альтернатива
nvc123: Да, уже нашел что вызывало, создание группы юнитов в области не через call GroupEnumUnitsInRect, теперь безутечно, только 10-50 утечек из-за кол-ва юнитов в группе, но я думаю и так нормально и лучше некуда.
» WarCraft 3 / Движение декорации или альтернатива
» WarCraft 3 / Можно ли превзойти максимальные значения в редакторе объектов?
» WarCraft 3 / Движение декорации или альтернатива
Bornikkeny: Даже если перемещать каждые 0.05 секунды?
» WarCraft 3 / Как убрать "черноту" на большой высоте
Ред. Lotus101
» WarCraft 3 / Движение декорации или альтернатива
quq_CCCP: Я тоже такой вариант думал, но решил что он самый бредовый и сложный, ведь по идеи для скила должно создаваться много таких глыб, с разными высотой, шириной, с разным таймингом с различным увеличением размера (чтобы было настоящее зрелище). Но чтож, попробую для начала так сделать с одной без всяких усложнений, выбора нет. Позже отпишу.
» WarCraft 3 / Пофиксите модель, пожалуйста / Как пофиксить >ЭТУ< модель?
А вообще ты наверно понял кто я) напомни в лс, попрошу одного человека помочь.
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
DemonoiD: Не знаю про микс патч, но тебе может это понравится
» WarCraft 3 / Патч 1.27б
Ред. Lotus101
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
» Dota 2 / Мой первый кастомный уровень на Source 2\Dota 2
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III