![]() |
|
|
Если вы хотели бы использовать в своей карте нестандартное, оригинальное заклинание, но у вас не хватает знаний для его реализации, то эта тема специально для вас. В данной теме вы можете оставить заявку на создание необходимого вам заклинания.
Если вам нужно заклинание одного из персонажей DotA, то ищите его здесь
» Шаблон оформления заявки
Название: название заклинания
Способ исполнения: GUI / JASS / всё равно Цель: вражеский юнит / свой юнит / сам герой / итд. Для героя: да/нет MUI: можно ли одновременно использовать заклинание больше одного раза Описание: здесь описание нужного спелла По уровням:
Шаблон можно просто скопировать здесь, вставить в свое сообщение и заполнить:
» Шаблон оформления ответа
Заклинание: здесь может быть название спелла или номер поста
Заказчик: здесь имя пользователя, который заказал заклинание Способ исполнения: Jass или GUI MUI: можно ли одновременно использовать заклинание больше одного раза Нужен ли JNGP: Да или Нет Используются глобальные переменные: Да или Нет Шаблон можно просто скопировать здесь, вставить в свое сообщение и заполнить:
MUI - Multiplayer
Разрешается просто процитировать сообщение заказа и дописать информацию о получившемся заклинании. Правила темы:
Заявки, не удовлетворяющие правилам, будут удалены! |
![]() |
|
![]()
krosaf4eg
![]() offline
Опыт:
1,859Активность: |
Просто я привык что если карта содержит только один спелл, то пишу его в кастом коде. Скоупу можно переместить куда угодно, в любой триггер, то есть не нужно создавать новый триггер с необходимым названием,что облегчает импорт спелла) |
![]() |
#4881
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Gareth Emery
Passive Progressive^^
![]() ![]() offline
Опыт:
9,874Активность: |
Извини, написали почти в одно время, не увидел поста. Вообще просмотрел твой код, хорошо сделал, явно не новичок) В общем, я свой подправлю на всякий пожарный, а автор уже сам решит что ему лучше) |
![]() |
#4882
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Pavell
![]() offline
Опыт:
7,823Активность: |
krosaf4eg, Gareth_Emery, спасибо большое. |
![]() |
#4883
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Gareth Emery
Passive Progressive^^
![]() ![]() offline
Опыт:
9,874Активность: |
Заклинание: Исправленное Украсть золото + Сонная Аура
Заказчик: Pavell Способ исполнения: Jass Статус: выполнено Исправил спелл украсть золото, теперь нельзя украсть 50 монет, если у цели их нет. Также на скорую руку сделал спелл Сонная Аура. Если будут баги - пиши. Отредактировано Gareth Emery, 20.02.2010 в 19:38. |
![]() |
#4884
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Pavell
![]() offline
Опыт:
7,823Активность: |
Gareth_Emery, спасибо большое. |
![]() |
#4885
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
StoneHeartis
Kicked by ScorpioT1002
![]() ![]() offline
Опыт:
1,009Активность: |
Итак. Мне посоветовали обратиться сюда. Что я и делаю.
В доте у Энчантрессы есть скилл Impetus. Я выдрал его из доты, но. Как оказалось он использует кэш. Мб кто возьмется переделать его, чтобы не использовал кэш. Либо уже с использованием новых хэш-таблиц. Заранее огромное спасибо. » Выдранный код Функции из "Ядра" function H2Ix takes handle pTarg returns integer return pTarg return 0 endfunction function H2Tx takes handle pTarg returns string return I2S(H2Ix(pTarg)) endfunction Собсно, сам спел. // Objects used: // 'A0DY' = Impetus (Enchantress : Aiushtha) // 'B03U' = Impetus // DEBUG Trigger Number : 248 function Trig_Impetus_Conditions takes nothing returns boolean if(GetLearnedSkill()!='A0DY'and IsUnitIllusion(GetTriggerUnit())==false)then return false endif return true endfunction function Impetus_OnOff takes nothing returns boolean if GetTriggerEventId()==EVENT_PLAYER_UNIT_ATTACKED then if GetUnitAbilityLevel(GetAttacker(),'A0DY')==0 then return false elseif GetBoolean(H2Tx(GetTriggeringTrigger()),"OrbOn")then if IsUnitType(GetTriggerUnit(),UNIT_TYPE_STRUCTURE)==false and GetAttacker()==GetUnit(H2Tx(GetTriggeringTrigger()),"Enchantress")then return true endif else return false endif elseif GetTriggerEventId()==EVENT_UNIT_ISSUED_ORDER then if GetIssuedOrderId()==852255then call SetBoolean(H2Tx(GetTriggeringTrigger()),"OrbOn",true) elseif GetIssuedOrderId()==852256then call SetBoolean(H2Tx(GetTriggeringTrigger()),"OrbOn",false) endif elseif GetTriggerEventId()==EVENT_UNIT_SPELL_EFFECT then if GetSpellAbilityId()=='A0DY'then return true else return false endif endif return false endfunction function Impetus_Range takes real px1,real py1,real px2,real py2 returns real return SquareRoot(((px1-px2)*(px1-px2))+((py1-py2)*(py1-py2))) endfunction function Impetus_Main takes nothing returns nothing local texttag lgg local real ldd if UnitHasBuffBJ(GetTriggerUnit(),'B03U') and GetUnitAbilityLevel(GetEventDamageSource(),'A0DY')>0 and GetUnit(H2Tx(GetTriggeringTrigger()),"Source")==GetEventDamageSource()then call DisableTrigger(GetTriggeringTrigger()) set ldd=.04*I2R(GetUnitAbilityLevel(GetEventDamageSource(),'A0DY'))*Impetus_Range(Ge tUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()),GetUnitX(GetEventDamageSourc e()),GetUnitY(GetEventDamageSource())) if(ldd>400)then set ldd=400 endif set lgg=CreateTextTagUnitBJ("+"+I2S(R2I(ldd)),GetTriggerUnit(),64,10,1,85,86,15) call SetTextTagVelocityBJ(lgg,64,90) call UnitDamageTargetBJ(GetEventDamageSource(),GetTriggerUnit(),ldd,ATTACK_TYPE_HERO, DAMAGE_TYPE_DIVINE) call PolledWait(1) call DestroyTextTag(lgg) call DisableTrigger(GetTriggeringTrigger()) endif endfunction function Impetus_Event takes nothing returns nothing local trigger ltt=CreateTrigger() local unit lFB local unit lFb if(GetTriggerEventId()==EVENT_UNIT_SPELL_EFFECT)then set lFB=GetSpellTargetUnit() set lFb=GetTriggerUnit() else set lFB=GetTriggerUnit() set lFb=GetAttacker() endif if IsUnitIllusion(lFb)==false then call SetHandle(H2Tx(ltt),"Source",lFb) call TriggerRegisterUnitEvent(ltt,lFB,EVENT_UNIT_DAMAGED) call TriggerAddAction(ltt,function Impetus_Main) endif call PolledWait(2) call DisableTrigger(ltt) endfunction function Trig_Impetus_Actions takes nothing returns nothing local unit lfo=GetTriggerUnit() local trigger ltt local integer lmZ=GetUnitAbilityLevel(lfo,'A0DY') if(lmZ==1)then set ltt=CreateTrigger() call TriggerRegisterAnyUnitEventBJ(ltt,EVENT_PLAYER_UNIT_ATTACKED) call TriggerRegisterUnitEvent(ltt,lfo,EVENT_UNIT_SPELL_EFFECT) call TriggerRegisterUnitEvent(ltt,lfo,EVENT_UNIT_ISSUED_ORDER) call TriggerAddCondition(ltt,Condition(function Impetus_OnOff)) call TriggerAddAction(ltt,function Impetus_Event) call SetHandle(H2Tx(ltt),"Enchantress",lfo) endif endfunction function StartTrigger_Impetus takes nothing returns nothing set gg_trg_Impetus=CreateTrigger() call TriggerRegisterAnyUnitEventBJ(gg_trg_Impetus,EVENT_PLAYER_HERO_SKILL) call TriggerAddCondition(gg_trg_Impetus,Condition(function Trig_Impetus_Conditions)) call TriggerAddAction(gg_trg_Impetus,function Trig_Impetus_Actions) endfunction function InitTrig_Impetus takes nothing returns nothing endfunction |
![]() |
#4886
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
zero index
Фантома же!
![]() ![]() offline
Опыт:
886Активность: |
youtube, поставь у скила "Скачок" растояние приминения 99999. StoneHeartis, сделать не успеваю, обьясняю так на гуи: событие - каст, условие - скил-орб эфект с нужным снарядом. Действия - ждать растояние между кастером и целью/скорость снаряда. Нанести урон равный растояние между кастером и целью/100*нужный процент. И летающий текст. Отредактировано zero index, 20.02.2010 в 20:41. |
![]() |
#4887
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Helpmeplz
![]() ![]() offline
Опыт:
11,698Активность: |
N1XapOIII, если ты имеешь ввиду утечку с плавающим текстом, то,
во-первых, она незначительна, во-вторых, это просто пример сообщения о недостатке маны, которое можно выводить любым другим способом. |
![]() |
#4888
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
N1XapOIII
![]() offline
Опыт:
1,815Активность: |
Helpmeplz, Да не, я про то что переменную точи лучше убрать.
|
![]() |
#4889
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Helpmeplz
![]() ![]() offline
Опыт:
11,698Активность: |
Если ее убрать, то будет утечка. А так она удаляется.
|
![]() |
#4890
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
StoneHeartis
Kicked by ScorpioT1002
![]() ![]() offline
Опыт:
1,009Активность: |
zero index, это понятно...
Меня больше интересует проверка на включение/выключение автоприменения способности. Если мы включим "Юнит начинает применять способность", то тригер ведь будет работать только тогда, когда ты сам нажмешь на него... В коде видна эта проверка, но она идет через использование кэша. Хотелось бы без кэша.На крайняк можно и с хэшем, но хэшем, увы, я не смог разобраться. |
![]() |
#4891
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
zero index
Фантома же!
![]() ![]() offline
Опыт:
886Активность: |
StoneHeartis, хммм.. ну тогда можно сделать пассивом или вкл/выкл. |
![]() |
#4892
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
16GB
GhostOne User
![]() ![]() offline
Опыт:
59,317Активность: |
StoneHeartis, я делал на гуи через 2 триггера один с событие боевая единица атакован а 2 боевая еденица приводит способность в действие а потом проверял бафф |
![]() |
#4893
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
youtube
сктыщь
![]() ![]() offline
Опыт:
8,025Активность: |
*zero_index* так мне надо чтоб было заклинание как в доте у войда или морфа и на джасс |
![]() |
#4894
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
zero index
Фантома же!
![]() ![]() offline
Опыт:
886Активность: |
youtube... ну как то так... у морфа там подругому не мого. |
![]() |
#4895
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
StoneHeartis
Kicked by ScorpioT1002
![]() ![]() offline
Опыт:
1,009Активность: |
16GB, можешь сэмпл выложить? Я не понял как эти тригеры связаны.. |
![]() |
#4896
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Pavell
![]() offline
Опыт:
7,823Активность: |
Название: Сфера вампиризма
Способ исполнения: не важно Цель: точка Для героя: да Описание: Герой создает сферу в указанном месте. Она каждую секунду поглатывает жизнь ближайших врагов. Количество поглощенной жизни передается герою после окончания заклинания. Во время вызова сферы герой не может двигаться 5 сек. Также за врагов, находящихся под воздействием сферы, если их атаковать, то атакующий исцелится на часть нанесенного урона. Время действия сферы - 40 сек. По уровням: 1 Поглощает по 5 ед. жизни в сек., 30% нанесенного урона - исцеление. Название: Точный удар Способ исполнения: не важно Цель: враг Для героя: да Описание: Герой кастует спел в радиусе 100 на указанного врага. Враг останавливается. Затем герой стоит 1 сек. и наносит сильный урон, отталкивая его. По уровням: 3
|
![]() |
#4897
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Helpmeplz
![]() ![]() offline
Опыт:
11,698Активность: |
StoneHeartis, сделай на основе ледяных стрел или черной стрелы, т.е. чтобы накладывался бафф на 0.01 секунду. Делай триггер с событием Юнит получает урон. Проверяй если у него есть этот баф и наноси урон.
Helpmeplz добавил: zero index, это мало похоже на таймволк воеда) youtube, вот волна морфа, сделал MUI. Урон не наносится, т.к. ты не просил, только перемещение. |
![]() |
#4898
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
StoneHeartis
Kicked by ScorpioT1002
![]() ![]() offline
Опыт:
1,009Активность: |
Сделал. Но почему-то не работает. Что не так?
>>Код
function Trig_FF_Func001C takes nothing returns boolean
if ( not ( UnitHasBuffBJ(GetTriggerUnit(), 'B001') == true ) ) then return false endif return true endfunction function Trig_FF_Actions takes nothing returns nothing
local real r = DistanceBetweenPoints(GetUnitLoc(GetAttacker()), GetUnitLoc(GetTriggerUnit())) local integer i = GetUnitAbilityLevelSwapped('A020', GetAttacker()) local texttag t if ( Trig_FF_Func001C() ) then call UnitDamageTargetBJ( GetAttacker(), GetTriggerUnit(), ( r / ( 3.00 / I2R(i) ) ), ATTACK_TYPE_HERO, DAMAGE_TYPE_DIVINE ) call CreateTextTagUnitBJ( I2S(( R2I(r) / ( 3 / i ) )), GetAttacker(), 0.00, 10, 45.00, 45.00, 100, 0 ) set t = GetLastCreatedTextTag() call ShowTextTagForceBJ( true, t, GetPlayersAll() ) call PolledWait(1) call DestroyTextTagBJ( t ) else call DoNothing( ) endif endfunction =========================================================================== function InitTrig_FF takes nothing returns nothing set gg_trg_FF = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_FF, EVENT_PLAYER_UNIT_ATTACKED ) call TriggerAddAction( gg_trg_FF, function Trig_FF_Actions ) endfunction << |
![]() |
#4899
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Helpmeplz
![]() ![]() offline
Опыт:
11,698Активность: |
StoneHeartis, условие не ЮНИТ АТАКОВАН (Unit is attacked), а ЮНИТ ПОЛУЧАЕТ УРОН (Unit takes damage). Это условие делается таким образом:
Создается отдельный триггер с событием Юнит входит в игровую зону //Условие можешь не ставить Действие: Trigger - Добавить условие к триггеру (здесь твой триггер) - Trigger Unit получает урон. Если на карте изначально есть юниты, которые могут быть задействованы под твоей способностью, то при инициализации пикаешь всех этих юнитов и добавляешь также событие. |
![]() |
#4900
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|