Ну а в чем проблема? JASS API как бы позволяет нам удалять, добавлять, скрывать - способности. Не вижу проблем, просто скрываем абилку и все, а когда нужно снова делаем видимой на карте комманд, ну а у самого героя \ юнита есть сразу все возможные такие абилки, а ты тупо делаешь достумными \ недоступными.
Ну как вариант морф в другого юнита, у тини сперва так было сделано, потом несколько по другому (уровни просто увилечение размера, а аганим с деревом - морф)
ST95, такое там насколько помню не ввели, и причем тут стороний софт? Мемхак это наработка на языке jass, он присутсвует в коде карты и больше ничего не требует. Их уже несколько версий, функционал очень широк и удобен, главное тщательно читать интсрукцию и рекомендации по форуму, чтобы не сесть в лужу.
еще раз, для особо одаренных - открываем ссылку и скачиваем карту с мемхаком, вставляем его себе в карту.
Ну уж тут прикреплю, самый древний мемхак где эти функции были и работали, далее чет не припомню развивали их или нет, через 5 сек после старта карты у чародея крови внезапно становятся доступны для изучения криты блейдмастера. Никаких абилок, никаких модификаций обьектов, все делается исключительно кодом, благодаря мемхаку.
function Y65 takes nothing returns boolean
local trigger t=GetTriggeringTrigger()
local integer S5I=GetHandleId(t)
local integer NPI=GetTriggerEvalCount(t)
local unit P7I=(LoadUnitHandle(HashData,(S5I),(2)))
local unit P8I=(LoadUnitHandle(HashData,(S5I),(17)))
local lightning UZI=(LoadLightningHandle(HashData,(S5I),(196)))
local integer SUI=(LoadInteger(HashData,(S5I),(5)))
local real QXI=(LoadReal(HashData,(S5I),(189)))
local real QYI=(LoadReal(HashData,(S5I),(190)))
local real QJI=GetUnitX(P8I)
local real QKI=GetUnitY(P8I)
local real IV1
local real IW1
local real II3=(LoadReal(HashData,(S5I),(23)))
local real I13=(LoadReal(HashData,(S5I),(24)))
local real RM2
local real QWI=QNI(II3,I13,QJI,QKI)
call SaveReal(HashData,(S5I),(23),((QJI)*1.0))
call SaveReal(HashData,(S5I),(24),((QKI)*1.0))
if QWI>100 or NPI>(3.5/.03)or RKI(P8I)==true then
call DestroyLightning(UZI)
call FlushChildHashtable(HashData,(S5I))
call S0I(t)
else
call MoveLightning(UZI,true,QXI,QYI,QJI,QKI)
if QNI(QXI,QYI,QJI,QKI)>325 then
set RM2=Atan2(QKI-QYI,QJI-QXI)
set IV1=QXI+(325)*Cos(RM2)
set IW1=QYI+(325)*Sin(RM2)
call SetUnitX(P8I,IV1)
call SetUnitY(P8I,IW1)
endif
endif
set t=null
set P7I=null
set P8I=null
set UZI=null
return false
endfunction
function Y75 takes unit P7I,unit P8I,integer SUI returns nothing
local trigger t=CreateTrigger()
local integer S5I=GetHandleId(t)
local lightning UZI=AddLightning("PONC",true,GetUnitX(P7I),GetUnitY(P7I),GetUnitX(P8I),GetUnitY(P8I))
call SetLightningColor(UZI,1,1,1,1)
call SaveLightningHandle(HashData,(S5I),(196),(UZI))
call SaveUnitHandle(HashData,(S5I),(2),(P7I))
call SaveUnitHandle(HashData,(S5I),(17),(P8I))
call SaveInteger(HashData,(S5I),(5),(SUI))
call SaveReal(HashData,(S5I),(189),((GetUnitX(P7I))*1.0))
call SaveReal(HashData,(S5I),(190),((GetUnitY(P7I))*1.0))
call SaveReal(HashData,(S5I),(23),((GetUnitX(P8I))*1.0))
call SaveReal(HashData,(S5I),(24),((GetUnitY(P8I))*1.0))
call TriggerRegisterTimerEvent(t,0.03,true)
call TriggerRegisterUnitEvent(t,P8I,EVENT_UNIT_DEATH)
call TriggerAddCondition(t,Condition(function Y65))
call DamageTarget(P7I,P8I,1,50.00*SUI)
call IssueTargetOrder(P7I,"attack",P8I)
set t=null
set UZI=null
endfunction
function Y85 takes nothing returns boolean
local trigger t=GetTriggeringTrigger()
local integer S5I=GetHandleId(t)
local integer NPI=GetTriggerEvalCount(t)
local integer SUI=(LoadInteger(HashData,(S5I),(5)))
local unit P7I=(LoadUnitHandle(HashData,(S5I),(2)))
local real RM2=(LoadReal(HashData,(S5I),(13)))
local real BA3=(LoadReal(HashData,(S5I),(189)))
local real BB3=(LoadReal(HashData,(S5I),(190)))
local real QJI=(LoadReal(HashData,(S5I),(47)))
local real QKI=(LoadReal(HashData,(S5I),(48)))
local real IV1=BA3+(30*(20+4*2)/30)*NPI*Cos(RM2*bj_DEGTORAD)
local real IW1=BB3+(30*(20+4*2)/30)*NPI*Sin(RM2*bj_DEGTORAD)
local real YB3=SquareRoot((IV1-QJI)*(IV1-QJI)+(IW1-QKI)*(IW1-QKI))
local real YC3=700
local real YD3=175
local real YE3=(1-YB3/YC3)*YD3*2
local group g=NTI()
local unit P8I
if NPI==1 then
call SetUnitAnimationByIndex(P7I,5)
call SetUnitTimeScale(P7I,1.5)
endif
if YE3>YD3 then
call SetUnitAnimationByIndex(P7I,5)
set YE3=YD3*2-YE3
endif
call SetUnitFlyHeight(P7I,QDI(YE3,0),0)
call SetUnitX(P7I,PTI(IV1))
call SetUnitY(P7I,PUI(IW1))
call SetUnitFacing(P7I,RM2)
set GK=P7I
call GroupEnumUnitsInRange(g,IV1,IW1,120,Condition(function D21))
set P8I=FirstOfGroup(g)
call NSI(g)
if YB3<30 or P8I!=null or GetTriggerEvalCount(t)>26 then
call SetUnitFlyHeight(P7I,0,0)
call SetUnitFacing(P7I,RM2)
call SetUnitTimeScale(P7I,1)
call SetUnitAnimation(P7I,"stand")
call SetUnitPathing(P7I,true)
call UnitRemoveAbility(P7I,'A1J6')
call UPI(GetUnitX(P7I),GetUnitY(P7I),100)
if P8I!=null and RKI(P8I)==false then
call SCI(P8I,4408,5)
call Y75(P7I,P8I,SUI)
endif
call FlushChildHashtable(HashData,(S5I))
call S0I(t)
endif
set t=null
set P7I=null
set P8I=null
return false
endfunction
function Y95 takes nothing returns nothing
local unit P7I=GetTriggerUnit()
local integer SUI=GetUnitAbilityLevel(P7I,'A1J7')
local trigger t=CreateTrigger()
local integer S5I=GetHandleId(t)
local real QWI=700
local real RM2=GetUnitFacing(P7I)
local real QXI=GetUnitX(P7I)
local real QYI=GetUnitY(P7I)
local real QJI=PTI(QXI+QWI*Cos(RM2*bj_DEGTORAD))
local real QKI=PUI(QYI+QWI*Sin(RM2*bj_DEGTORAD))
call AddPermanentAbility(P7I,'Amrf')
call UnitRemoveAbility(P7I,'Amrf')
call SetUnitPathing(P7I,false)
call AddPermanentAbility(P7I,'A1J6')
call TriggerRegisterTimerEvent(t,0.03,true)
call TriggerAddCondition(t,Condition(function Y85))
call SaveUnitHandle(HashData,(S5I),(2),(P7I))
call SaveInteger(HashData,(S5I),(5),(SUI))
call SaveReal(HashData,(S5I),(13),((RM2)*1.0))
call SaveReal(HashData,(S5I),(189),((QXI)*1.0))
call SaveReal(HashData,(S5I),(190),((QYI)*1.0))
call SaveReal(HashData,(S5I),(47),((QJI)*1.0))
call SaveReal(HashData,(S5I),(48),((QKI)*1.0))
set P7I=null
set t=null
endfunction
function YA5 takes nothing returns boolean
if GetSpellAbilityId()=='A1J7' then
call Y95()
endif
return false
endfunction
function R71 takes nothing returns nothing
local trigger t=CreateTrigger()
call UMI(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(t,Condition(function YA5))
set t=null
endfunction
'A1J7' - pounce. осоновано на "Веерный бросок" ('AEfk' )
UMI - TriggerRegisterAnyUnitEventBJ
PTI - проверка на границу карты по оси X
PUI - проверка на границу карты по оси Y
AddPermanentAbility:
function AddPermanentAbility takes unit u, integer id returns nothing
call UnitAddAbility( u, id )
call UnitMakeAbilityPermanent( u, true, id )
endfunction
S0I - утилизация триггеров, можно заменить на DestroyTrigger()
SCI - установка некого флага на хендл юнита втечени N сек, подленное назначение неизвестно.
NTI - CreateGroup()
NSI - DestroyGroup()
QNI - DistanceBetweenCords - измеряет растояние, выведено из одноименной бж функции.
PONC - Эффект молнии, кастом, добавлен в LigthingData.slk
Надо сделать дашер наёмников из магической лавки альянса (тот же набор абилок) и дать её союзнику игроков, тогда будут требования работать, как и в лавке на постройку замка.
Lesnoi troll, эмм чувак, как бы тебе так сказать - "Сделай мне чтобы красиво было", можно изменить твой вопрос и сути это не изменит, причем не нужно ерничить и говорить что кто то непонимает как это, "красиво". Вопрос в другом, а как именно - этих "красиво" может быть сотни, потом тебе уже написали замечание - не приводить голословные примеры из других карт, если вы ссылаетесь на другую карту, известную игру, аниме или фильм - будье добры добавить пример, как тут допустим, где когда упоминается дота следом идет ссылка то на гифку, то на ютуб, то приложен сам контент из этой доты. Не все играют в доту, кто то играл в доту 10 лет назад, и уже не помнит внятно что там и как, что поменялось, вовсе есть дота 2 уже лет 10 как.
Потом а что есть форс стаф в общих чертах - ну это периодическое передвижение юнита по координатом, 2 раза написали тебе, не? Как бы разжёвывать на пальцах уже зашквар, ибо этой инфы на сайте уже девать некуда. Про все остальное ты даже не удосужился описать что именно ты не можешь сделать или не понимаешь, своих попыток, виденья устройства или что ты задумал сделать нет - ну офк а что мы должны думать? Так что внятно пиши че ты собрался делать, если ты увидел де то охеренный спелл, - прикрепляй инфу а не "погуглите доту" или " в наруто в серии 100500 чувак там такую хрень применил, и все сгорели" - ссылочку кидаешь, гифки + описание дословно.
rsfghd, не думаю, причем вопрос ну шибко уж общий, защита как пример явно, поэтому хотелось бы послушать что именно он хочет, вручение абилки весьма универсальный метод выдачи подобных бонусов.
Lesnoi troll, и не собираюсь, т.к идет засорение поиска вопросами из серии "старо как дерьмо мамонта", как писать спеллы такого типа есть как древние статьи так и вполне современные.
Потом я что-то не вижу ни попыток не внятного вопроса, а намек на попрошайничество. Нормально даже сформулировать не соизволил что, как, зачем, что непонятно?
Я вот не пойму ты совсем кодить не умеешь или не хочешь? Форст стафф ни что иное как переодическое перемещение юнита, таких наработок тонны.
Тут рассказывать про подобное зашквар, т.к описано в статьях для начинающих, если ты не умеешь вовсе - мб пойти поучится, или закажи себе спелл в наработках на заказ.
Вредные советы подьехали, суть в том что никак, есть Rect а есть Region - это два разных хендла, вот есть действие двигать Rect а не Region, событие - юнит вошел в область, как раз работает на регион а не на ректы, суть такая создается регион в указанных координатах и с указанным размером, создается регион и добавляется в этот рект, на регион регистрируется событие в триггере, а рект уже можно двигать или удалять - это никак не отразится, к слову можно так же двигая ректы создать один большой регион сложной формы.
При этом все забыли про событие - Event Units in ragne, событие на конкретного юнита, сработает если в определенный радиус к нему войдет другой юнит.
Серьезно? Защиту менять, UnitAddAbilty( unit, ability ) - берешь предметную способность от кольца защиты, копируешь, ставишь бонус защиты +10 и вручаешь юниту триггерным действием, а когда нужно удаляешь действием UnitRemoveAbility...
Чтобы не задавать такие вопросы существует JASS__API
Ну и как бы самоучители что и как делать по картостроению тоже на сайте были.
Nifistofi, ну так вот, на любой версии можно просто добавить юниту технику 1 уровня, и абила поменяется, но этим можно не заниматся - ибо есть мемхак, функция SetAbilityIntoHeroList (или как то так), добавляет указанную абилку в список абилок героя (5 максимум), т.е можно изучать с нуля. Ну и отдельный список функций позволяет менять абилкам описание, хоткеи, иконки и прочее на лету, во время игры.
По этому не вижу особого смысла связыватся с техникой, в той же доте давно мемхак (LOD тоже DracoL1ch делает, ну по крайней мере делал пару, тройку лет назад )
А зачем делать уровни, если можно вручать по 1 абилке.
Насчет позиции иконок - ну либо делаем настройки абилки, или в как в доте у рубика все пустые слоты заткнуты абилками пустышками с черными иконками и удаляются по мере изучения нужных способностей, чтобы у способности не было другого места поместить иконку на карте комманд.
Ну а так уже давно доступен мемхак - там можно на лету менять абилки для изучения, и параметры самих абилок тоже менять.
» WarCraft 3 / РАБОТА с ОДНОРАЗОВЫМ способностями
» WarCraft 3 / Изменения внешности при изучения пассивки
» WarCraft 3 / Как сделать герою прокачиваемые способности во время игры?
» WarCraft 3 / Как сделать герою прокачиваемые способности во время игры?
» WarCraft 3 / Как сделать герою прокачиваемые способности во время игры?
» WarCraft 3 / Как сделать герою прокачиваемые способности во время игры?
Ну а в разных версиях мемхака код отличается, но найти по ctrl+f думаю не составит труда.
» WarCraft 3 / Как сделать герою прокачиваемые способности во время игры?
» WarCraft 3 / Как сделать герою прокачиваемые способности во время игры?
» WarCraft 3 / крафт
Отредактирован quq_CCCP
» WarCraft 3 / Прыжок сларка на гуи
call UnitAddAbility( u, id )
call UnitMakeAbilityPermanent( u, true, id )
endfunction
» WarCraft 3 / Прыжок сларка на гуи
с доты на jass могу кинуть код.
» WarCraft 3 / Как создать требования для юнитов в лагерях наемников?
» WarCraft 3 / Dash эффект
Потом а что есть форс стаф в общих чертах - ну это периодическое передвижение юнита по координатом, 2 раза написали тебе, не? Как бы разжёвывать на пальцах уже зашквар, ибо этой инфы на сайте уже девать некуда. Про все остальное ты даже не удосужился описать что именно ты не можешь сделать или не понимаешь, своих попыток, виденья устройства или что ты задумал сделать нет - ну офк а что мы должны думать? Так что внятно пиши че ты собрался делать, если ты увидел де то охеренный спелл, - прикрепляй инфу а не "погуглите доту" или " в наруто в серии 100500 чувак там такую хрень применил, и все сгорели" - ссылочку кидаешь, гифки + описание дословно.
» WarCraft 3 / Пара вопросов о действиях
» WarCraft 3 / Dash эффект
Потом я что-то не вижу ни попыток не внятного вопроса, а намек на попрошайничество. Нормально даже сформулировать не соизволил что, как, зачем, что непонятно?
» WarCraft 3 / Dash эффект
Тут рассказывать про подобное зашквар, т.к описано в статьях для начинающих, если ты не умеешь вовсе - мб пойти поучится, или закажи себе спелл в наработках на заказ.
» WarCraft 3 / Герой приносит определённый предмет боевой единице...
» WarCraft 3 / Dash эффект
» WarCraft 3 / Как прикрепить область к юниту?
При этом все забыли про событие - Event Units in ragne, событие на конкретного юнита, сработает если в определенный радиус к нему войдет другой юнит.
Отредактирован quq_CCCP
» WarCraft 3 / Пара вопросов о действиях
Чтобы не задавать такие вопросы существует JASS__API
Ну и как бы самоучители что и как делать по картостроению тоже на сайте были.
Отредактирован quq_CCCP
» WarCraft 3 / наработка для ability draft (LoD) через "Технику"
По этому не вижу особого смысла связыватся с техникой, в той же доте давно мемхак (LOD тоже DracoL1ch делает,
ну по крайней мере делал пару, тройку лет назад)» WarCraft 3 / Постоянный звук лопостей вертолёта
» WarCraft 3 / наработка для ability draft (LoD) через "Технику"
Насчет позиции иконок - ну либо делаем настройки абилки, или в как в доте у рубика все пустые слоты заткнуты абилками пустышками с черными иконками и удаляются по мере изучения нужных способностей, чтобы у способности не было другого места поместить иконку на карте комманд.
Ну а так уже давно доступен мемхак - там можно на лету менять абилки для изучения, и параметры самих абилок тоже менять.
» WarCraft 3 / Дизарм цели заклинания
» WarCraft 3 / Таргетная абилка без стана со снарядом?