Oxotnak, Инвиз то нужен для героя с иконочкой? Ну для иконки которую можно изучить и тыкать юберется любая пассивка которая ничего не дает, ну или её эффект можно убрать, чародейская аура с 0.01 мп\сек. регеном, промахи с 1% шансом и так далее. Далее следим триггером за тем что выучит герой, если это наша пустышка то вручаем ему перманентную невидимость, можно еще по другому, изначально поставить герою в способностях перманентный инвиз с несколькими уровнями, но на 1 уровне убрать все бонусы, время ухода в инвиз -1, там и так далее, при изучении пустышки поднимать уровень инвиза на 1.
ImbaStyle, Что за нуботня? какие таймеры? Блин пассивка волков - Постоянная невидимость...
морф в другого юнита, с бонусом хп меньше нуля, если макс хп юнита будет меньше или равно 0 то юнит никогда не умрет, он будет стоять, им можно управлять, его будут бить и он будет получать урон но никогда не умрёт.
Событие - юнит игрока умирает, действие посчитать юнитов в области, если юнитов меньше 1 то делай свои действия, чувак как то не круто...
Примитив же? Разве нет?
ClotPh, а чем это плохо? Глобалки? Создавать каждый раз группу глупо, достаточно одной для всех дейсвий, брать всех и перебирать в цикле? Нафиг надо, это не быстрее,не лучше ни коим образом, разве что удобнее, так же у меня везде есть проверки на корректность результатов выполнения функций, чего у тебя нету, RMaxBJ - не даст поставить юниту 0 хп если что то пойдет не так, хил возможен только выше 1.00.
Так же зачем брать кд абилки каждый раз, это не шибко быстрая функция, лучше запиши её результат в переменную.
Фильтр удалять ненужно, он не утекает, 1 и тот же boolexpr можно использовать многократно для разных целей.
Так же отсеиваем клонов. DracoL1ch, у тебя же у самого была проблема с GetTriggerEventId() С возвращением.
Фильтр страннооватый, сначала берёшь всех потом проверяешь на уровень абилки, сначала проверь что живые, не клоны. А потом смотри уже абилку. И почему одни юзы Gettriggerunit(), Getunitabilitylevel, заноси вначале триггера все значения в переменные, функции могут возвращать не то значение если вызвать повторное срабатывание триггеров.
globals
unit bj_lastFilterUnit = null
group TEMP_GROUP = CreateGroup( )
real TEMP_REAL = 0.00
endglobals
function IsUnitDead takes unit u returns boolean
return IsUnitType( u, UNIT_TYPE_DEAD ) or GetUnitTypeId( u ) < 1
endfunction
function Cond_Find_Alive_Hero_Units takes nothing returns boolean
set bj_lastFilterUnit = GetFilterUnit( )
return IsUnitType( UNIT_TYPE_HERO bj_lastFilterUnit ) and not( IsUnitIllusion( bj_lastFilterUnit ) or IsUnitDead( bj_lastFilterUnit ) )
endfunction
function Group_Add_Effect_Enum takes nothing returns nothing
local unit hero = GetEnumUnit( )
local integer level = GetUnitAbilityLevel( hero, 'A27T' )
if level > 0 then
call DestroyEffect(AddSpecialEffectTarget("Psychopomp4.mdx", hero, "origin"))
call SetUnitState( hero, UNIT_STATE_LIFE, GetUnitState( UNIR_STATE_LIFE ) + RMaxBJ( TEMP_REAL * level, 1.01 ) )
endif
set hero = null
endfunction
function PerceptionEffect takes nothing returns nothing
local unit cast = GetSpellAbilityUnit( )
local integer id = GetSpellAbilityId( )
local integer level = GetUnitAbilityLevel( cast, id )
local real cooldown
if level > 1 and not IsUnitDead( cast ) then
set cooldown = GetAbilityCD( id, level, cast )
else
set cooldown = 0.00
endif
if cooldown >= 1.01 then
call GroupClear( TEMP_GROUP )
call GroupEnumUnitsInRect( TEMP_GROUP, bj_mapInitialPlayableArea, Condition( function Cond_Find_Alive_Hero_Units ) )
set TEMP_REAL = cooldown
call ForGroup( TEMP_GROUP, function Group_Add_Effect_Enum )
endif
set cast = null
endfunction
Попробуй вот так, на вид куда понятнее, да и покороче...
Бери другую основу или юзай импорт, у многих скиллов хардкодные данные, т.е он прописаны в коде и спел не берет из из слк таблицы, хоть ты что измени. Так у аватара нельзя изменить бафф в настройках, а только отредактировать дефолт.
Юзай ауру смерти ("Unholy aura") или еще что, но не ауры фонтанов и лечащего варда, там ничего низя изменить, да и бафф там висит случайные 2-4 сек.
Спелл магнуса из доты? Ну движение по векторам с малым периодом, довольно примитивый спелл. Таймером двигаем юнита к цели + следим что цель жива, так же ищем союзников в радиусе и добавляем их в группу, при каждом тике таймера двигаем кастера с юнитами в группе к цели.
ClotPh, ничего там не работает, уже 10 раз сказали, точка. Хер вы что сделайте с эмпатией, это хардкодный спелл который работает только так как задумали близзарды и никак иначе! Её нельзя использовать в качестве связки варлока из доты, хоть вы там за настраивайтесь!
Крестом перерождения, иначе - никак!
Зачем тебе понадобилось воскрешать не героев, проще сделать из героя и не мучится, отображение опыта, сообщения о гибели и прочие "геройские" фишки можно отключать.
Это способность предмета - Книга заклинаний (spellbook) об это была даже статья, как сделать так чтобы выученные способности попадали в спеллбук.
Вот одна ссылка
Остальное ищи сам, наработок с этими книгами было море.
Alexander122, потому что она не работает так как нужно, да и юниты сдохнуть не от тебя, а сами себя пришибут... Да и урон там распределяется несколько не так.
awesomesk1ll, а что если в кешь записать могут ли двигать камеру все игроки, если все нет - то реплей, если большинство да, то синхронизируем с ними данные и записываем в переменную.
Ну на ГУИ никак, хотя там сравнительно примитивно.
Отдается молния которая есть визуальный эффект, молнию двигает отдельный таймер.
При касте создается триггер, в который добавляется события что Юнит цель умер, Юнит цель получил урон а так же цель записывается в группу, ( для всех юнитов которых задела молния), условие триггера если событие на который сработал триггер = получение урона то проверить что урон выше 0 и меньше 6000 ( проверка корректности урона, ибо акс добивает 10 миллионов физ урона) , иначе вернуть true.
Далее в действии триггера проверяем умер ли Юнит, истекло ли время или Юнит получил урон, если Юнит умер удаляем его из группы и изданием с него визуальный эффект, если время вышло то удаляем визуальные эффекты на всех юнитах в группе и утилизируем триггер. Если цель получила урон, цель в группе, то рассчитываем сколько сколько урона нужно распределить по остальным Юнита в группе, исключаем из группы того кто получил урон, с остальными в группе проделываем действия: смотрим сколько у Юнита хп, больше урона - снижаем хп на кол во урона. Иначе наносим 10 миллионов урона от лица применившего заклинание.
Все данные прикрепляются к триггеру с помощью хештаблицы. Триггеру так же добавляется событие - время истекло, чтобы завершить эффект спелла по истечению времени.
16GB, тестанул код, но делал разделения только на визуальные действия, т.е камеру не перемещал при телепортах и перерождениях героев в реплее, всё норм. Но вот без цилков, рили может десинхать, ты же не для каждого игрока записываешь проверку, а для всех.
Нужно тестить в муи, судя по тому что похожий антихак засунули в доту ниче не дисинхало и ниче не делало вред, правда читеры очень быстро научились обходить прозрачность юнитов и всякие туманы, затеняющие карту...
В доте вроде юзается какая то фишка с кинематиком, хз в чем различие киниматике в игре и в реплее?
Код лень колупать...
» WarCraft 3 / Как сделать два типа юнита?
» WarCraft 3 / Как сделать два типа юнита?
» WarCraft 3 / аналог перста смерти
» WarCraft 3 / аналог перста смерти
» WarCraft 3 / аналог перста смерти
» WarCraft 3 / Юниты игрока в области мертвы
Примитив же? Разве нет?
» WarCraft 3 / И снова о GetAbilityCD и многострадальной Психопомпе
Так же зачем брать кд абилки каждый раз, это не шибко быстрая функция, лучше запиши её результат в переменную.
Фильтр удалять ненужно, он не утекает, 1 и тот же boolexpr можно использовать многократно для разных целей.
Так же отсеиваем клонов.
DracoL1ch, у тебя же у самого была проблема с GetTriggerEventId() С возвращением.
» WarCraft 3 / И снова о GetAbilityCD и многострадальной Психопомпе
Ред. quq_CCCP
» WarCraft 3 / И снова о GetAbilityCD и многострадальной Психопомпе
» WarCraft 3 / Аура ХП-регена (лайфсорс)
Юзай ауру смерти ("Unholy aura") или еще что, но не ауры фонтанов и лечащего варда, там ничего низя изменить, да и бафф там висит случайные 2-4 сек.
» WarCraft 3 / Как сделать неепически сложный спелл?
» WarCraft 3 / Эмпатия для врагов
» WarCraft 3 / Эмпатия для врагов
» WarCraft 3 / Есть ли рабочий способ проверки на просмотр replay'я
» WarCraft 3 / Как сделать возрождение не-героя как у героя?
Зачем тебе понадобилось воскрешать не героев, проще сделать из героя и не мучится, отображение опыта, сообщения о гибели и прочие "геройские" фишки можно отключать.
» WarCraft 3 / Есть ли рабочий способ проверки на просмотр replay'я
» WarCraft 3 / Невыделяемый юнит
» WarCraft 3 / Как сделать абилку с абилками внутри?
Вот одна ссылка
Остальное ищи сам, наработок с этими книгами было море.
» WarCraft 3 / Эмпатия для врагов
» WarCraft 3 / Есть ли рабочий способ проверки на просмотр replay'я
» WarCraft 3 / Эмпатия для врагов
Отдается молния которая есть визуальный эффект, молнию двигает отдельный таймер.
При касте создается триггер, в который добавляется события что Юнит цель умер, Юнит цель получил урон а так же цель записывается в группу, ( для всех юнитов которых задела молния), условие триггера если событие на который сработал триггер = получение урона то проверить что урон выше 0 и меньше 6000 ( проверка корректности урона, ибо акс добивает 10 миллионов физ урона) , иначе вернуть true.
Далее в действии триггера проверяем умер ли Юнит, истекло ли время или Юнит получил урон, если Юнит умер удаляем его из группы и изданием с него визуальный эффект, если время вышло то удаляем визуальные эффекты на всех юнитах в группе и утилизируем триггер. Если цель получила урон, цель в группе, то рассчитываем сколько сколько урона нужно распределить по остальным Юнита в группе, исключаем из группы того кто получил урон, с остальными в группе проделываем действия: смотрим сколько у Юнита хп, больше урона - снижаем хп на кол во урона. Иначе наносим 10 миллионов урона от лица применившего заклинание.
Все данные прикрепляются к триггеру с помощью хештаблицы. Триггеру так же добавляется событие - время истекло, чтобы завершить эффект спелла по истечению времени.
» WarCraft 3 / Эмпатия для врагов
» WarCraft 3 / Есть ли рабочий способ проверки на просмотр replay'я
Нужно тестить в муи, судя по тому что похожий антихак засунули в доту ниче не дисинхало и ниче не делало вред, правда читеры очень быстро научились обходить прозрачность юнитов и всякие туманы, затеняющие карту...
В доте вроде юзается какая то фишка с кинематиком, хз в чем различие киниматике в игре и в реплее?
Код лень колупать...
» WarCraft 3 / Есть ли рабочий способ проверки на просмотр replay'я
Смотри код внимательнее
» WarCraft 3 / Есть ли рабочий способ проверки на просмотр replay'я