Модель LightningSpear.mdl имеет внутри Particle Emitter первого типа, который должен источать модель purgeeffect.mdl , но не делает этого. Источаемая модель корректно отображается в игре -> скорее всего дело не в ней. Прошу оказать содействие в настройке этого эмиттера.
Фишка вжасса в том, что он позволяет определять глобалки в любой части кода(но при компиляции эти глобалки будут помещены просто поверх размещенных в первом блоке). БОльшая часть действий в триггерах вц3 синхронизируется. Если происходит действие в игре - оно происходит на компах всех игроков -> действия повторяются. Можно через GetLocalPlayer() определять переменные для конкретного игрока, но, если не уметь этим пользоваться, можно быстро словить десинк в мультиплеере.
Ну иконку древесины можно заменить в настройках интерфейса и импортом картинки с указанием пути равному пути иконки древесины. Триггеры на это не способны нативно.
?
Конкретно: будет ли он юнит искать цели для атаки, если его текущий приказ - атаковать на точку/удерживает позицию/простаивает?
Думаю расшарить контроль неуправляемого союзного бота для визуальной индикации создаваемого при спецэффичных обстоятельствах героя под контролем для этого бота. При этом лишать всех юнитов контроля при помощи упомянутой функции, дабы оставить лишь иконку этого героя как результат шары контроля. (ИИ все-равно триггерный)
Можно ли отдавать юниту приказы через ПКМ?(будет полностью игнорироваться или будет эффект как при добавлении непрерываемого флага через руну морфа(можно отдавать приказы, но юнит будет их игнорировать)?)
Так же существуют модельки горелой земли разного размера (есть в доте для всяких метеоритов и думов) а так же на хайве (видел модель текущей лавы с огоньками)
Ну мне нужно именно создание кучи мелких спецэффектов, так что....
Гораздо более стабильный результат дают вычисления между преобразованными в интегеры флоатами(R2I(r*10^8)), правда погрешность все-равно появляется когда наступает время умножать на 10^-8. Использование степени меньшей, чем 8я, увеличивает погрешность. Использование непосредственно восьмой степени, судя по тестам, исключает наращивание погрешности(небольшая погрешность появляется после упомянутого умножения на 10^-8)
Только вот этот метод не подходит.
Diaboliko, ну а бонус это тоже дистанция. Там наверняка деление на тик таймера и проверка на мин. значение
Я не понимаю куда ты клонишь. Бонус - аддитивно стакающаяся величина, даваемая тем же Безумием или Аурой Выносливости.
Код, которым пытался вычислить число знаков после запятой самого бонуса
globals
constant real arginc = 0.10001
constant real argexit = 0.90009
endglobals
function xxx takes nothing returns boolean
local real r
set r = arginc
loop
exitwhen r == argexit
call AddUnitMSBonus(gg_unit_uaco_0002, r)
set r = r + arginc
endloop
set r = -arginc
loop
exitwhen r == -argexit
call AddUnitMSBonus(gg_unit_uaco_0002, r)
set r = r -arginc
endloop
return false
endfunction
function Trig_zxcxc_Actions takes nothing returns nothing
local real r
local integer i = 0
local trigger t = CreateTrigger()
call TriggerAddCondition( t, Condition(function xxx))
call BJDebugMsg(R2S(GetUnitMoveSpeed(gg_unit_uaco_0002)))
loop
call TriggerEvaluate(t)
exitwhen i == 1000
set i = i + 1
endloop
call BJDebugMsg(R2S(GetUnitMoveSpeed(gg_unit_uaco_0002)))
set t = null
return
endfunction
//===========================================================================
function InitTrig_zxcxc takes nothing returns nothing
set gg_trg_zxcxc = CreateTrigger()
call TriggerRegisterTimerEvent( gg_trg_zxcxc, 3., false )
call TriggerAddAction( gg_trg_zxcxc, function Trig_zxcxc_Actions )
endfunction
Для чисел с N числом знаков после запятой выдал следующие значения конечного MS(начальный = 220)
Diaboliko, там же тупо ресстояние за тик таймера, лич его правил на прямую, но тогда юнит начинает бегать во круг точки т.к расстояние за тик таймера слишком большое, юниту кажется что он не может дойти до точки. Там и стоит проверка, до миллионных же никто не будет рассчитывать дистанцию.
Ты путаешь с
function SetUnitCurrentMSper32 takes integer convertedHandle, real r returns nothing
function AddUnitMovespeedBonus takes unit u, real r returns nothing
И обнаружил что этот бонус подвержен погрешности как и прочие вычисления с флоатом. Операции нужно производить с числами определенной точности(хотя мне кажется что 0.0900000 будет воспринято как 0.09) или где-то прячется нативная функция округления MS'а?
Как один из вариантов решения:
При создании предмета заносить его в массив предметов. Запись ведется последовательно, пока не достигнется его конец(8192я ячейка массива(exitwhen i = 8191)), после чего вновь начинается с нуля. (в прочем, можно поставить значение и поменьше, от этого будет только лучше(переменная перезапишется раньше -> старая ссылка удалится -> предмет окончательно удалится из памяти если ссылок на него больше нигде нет)).
Ну а каждую секунду инкрементить целочисленные переменные в параллельном массиве от нуля до... времени жизни в секундах, по достижении значения которого удалять предмет.
local integer i = 0
local real angle = 0.
loop
call DestroyEffect(AddSpecialEffectPos(..., x + cos(r) * offset, y + sin(r) * offset ))
exitwhen i == AMOUNT_OF_EFFECTS_MINUS_ONE
set r = r + ANGLE_IN_RADIANS
set i = i + 1
endloop
Не припоминаю чтобы кто-то говорил об этом, но дабы AdicParser не крашился, попутно удаляя все комментарии (что приводит к удалению директив pjass) и конфликту с хаком, после "//! nocjass" должна быть хотя бы одна пустая строчка(возможно одна пустая строчка в конце всего юзерского кода, я без понятия.).
Для приложения следующая версия компилится нормально (см. приложение)
Если делать нативными костылями - заменяешь этот даггер предметом с аналогичным описанием и иконкой, но невыбрасываемым и имеющим способность на основе безумия(как вариант). Юзаешь его -> ждешь пока закончится кулдаун -> заменяешь обратно
Как я понимаю - проблема в не заданном начальном состоянии(а может быть и нет, я не уверен). Информация о рескейлинге есть на момент начала анимации(599 кадр), а информация о используемом материале (повороте модели в последствии) появляется только на 600. Вероятно инструкции о том что делать с моделью определяются по ходу требования(а не хранятся в файле самой модели, как я думал) и на основании данных по требуемому кадру. Нельзя так просто взять и вникнуть в mdx формат. А, впрочем, я могу ошибаться.
Сделал анимации не пересекающимися (0-399 "stand", 400-599 "death", 600-799 "birth"), изменение скейла
покопавышись в коде нашол косяк ты анимацию death заканчиваешь на 599 кадре и с этого начинаешь birth
Используемые кадры анимаций не могут пересекаться? Т.е. один кадр использоваться в разных анимациях.
Мой план был задать 3 кадра, между которыми линейно меняется размер. 100% на нулевом, 0% на конец анимации смерти и, соответственно, 0-100 во время анимации Birth. Поэтому Birth шел с 599 до 798.
ledoed, я убрал однократность у анимации и наблюдал за ней в игре пока не убедился в том, что это не работает :) В War3ME она проигрывается исправно, а вот в игре - нет.
Используется в качестве юнита.
А что за ин-гейм ситуация вообще? Если юнит кастует что-то как-бы на ходу или несколько скиллов подряд - можно просто ловить приказ на каст... Если нужно чтобы от юнита был нанесен урон какой-то стандартной абилкой - можно прибегнуть к помощи рун, если подойдет, конечно.
Находит длину перпендикуляра от отрезка, заданного Xa, Ya, Xb, Yb к точке, заданной Xc, Yc. Полезно при реализации заклинаний типа "Огненная стена", во избежание последовательных пиков юнитов по прямой.
Автор - silumin
function Perpendicular takes real Xa,real Ya,real Xb,real Yb,real Xc,real Yc returns real
return SquareRoot((Xa - Xc) * (Xa - Xc) + (Ya - Yc) * (Ya - Yc)) * Sin(Atan2(Yc-Ya,Xc-Xa) - Atan2(Yb-Ya,Xb-Xa))
endfunction
Эта формула в сочетании с использованием молний возможно удовлетворит потребности автора.
» WarCraft 3 / Как создать из одного однократного таймера Периодический таймер
» WarCraft 3 / Нужна модель? - Вам сюда!
» WarCraft 3 / vJass вопрос меньше чем новичок
» WarCraft 3 / Желтый квадрат
Ред. Diaboliko
» WarCraft 3 / Хак на память Warcraft3
Конкретно: будет ли он юнит искать цели для атаки, если его текущий приказ - атаковать на точку/удерживает позицию/простаивает?
Думаю расшарить контроль неуправляемого союзного бота для визуальной индикации создаваемого при спецэффичных обстоятельствах героя под контролем для этого бота. При этом лишать всех юнитов контроля при помощи упомянутой функции, дабы оставить лишь иконку этого героя как результат шары контроля. (ИИ все-равно триггерный)
» WarCraft 3 / Как лучше реализовывать распределенные по всему AoE спецэффекты
» WarCraft 3 / Как сделать механику как у древа
» WarCraft 3 / Хак на память Warcraft3
Ред. Diaboliko
» WarCraft 3 / Хак на память Warcraft3
Что возвращает GetUnitAbility(whichUnit, abilityId)? Логично предположить что адрес, но в ближайшие 24 часа протестить руки не дойдут.
» WarCraft 3 / Реализация округления флоата в условиях вц3
Ред. Diaboliko
» WarCraft 3 / Реализация округления флоата в условиях вц3
Только вот этот метод не подходит.
Ред. Diaboliko
» WarCraft 3 / Хак на память Warcraft3
Я ведь верно понимаю что
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Хак на память Warcraft3
» WarCraft 3 / Как сделать что бы предмет исчезал по истечению времени?
При создании предмета заносить его в массив предметов. Запись ведется последовательно, пока не достигнется его конец(8192я ячейка массива(exitwhen i = 8191)), после чего вновь начинается с нуля. (в прочем, можно поставить значение и поменьше, от этого будет только лучше(переменная перезапишется раньше -> старая ссылка удалится -> предмет окончательно удалится из памяти если ссылок на него больше нигде нет)).
Ну а каждую секунду инкрементить целочисленные переменные в параллельном массиве от нуля до... времени жизни в секундах, по достижении значения которого удалять предмет.
» WarCraft 3 / Как отловить оглушение на разных героях
Ред. Diaboliko
» WarCraft 3 / как создать эффекты по кругу на jass?
» WarCraft 3 / Хак на память Warcraft3
Для приложения следующая версия компилится нормально (см. приложение)
» WarCraft 3 / как создать эффекты по кругу на jass?
Ред. Diaboliko
» WarCraft 3 / Запустит таймер предмета
» WarCraft 3 / Почему во время анимации не происходит изменение масштаба модели
Сделал анимации не пересекающимися (0-399 "stand", 400-599 "death", 600-799 "birth"), изменение скейла
Ред. Diaboliko
» WarCraft 3 / Почему во время анимации не происходит изменение масштаба модели
Мой план был задать 3 кадра, между которыми линейно меняется размер. 100% на нулевом, 0% на конец анимации смерти и, соответственно, 0-100 во время анимации Birth. Поэтому Birth шел с 599 до 798.
Ред. Diaboliko
» WarCraft 3 / Почему во время анимации не происходит изменение масштаба модели
Используется в качестве юнита.
» WarCraft 3 / Анимация канала
» WarCraft 3 / Как сделать спелл луч?