XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Барахолка
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Если вы хотели бы использовать в своей карте нестандартное, оригинальное заклинание, но у вас не хватает знаний для его реализации, то эта тема специально для вас. В данной теме вы можете оставить заявку на создание необходимого вам заклинания.
Если вам нужно заклинание одного из персонажей DotA, то ищите его здесь
» Шаблон оформления заявки
Название: название заклинания
Способ исполнения: GUI / JASS / всё равно
Цель: вражеский юнит / свой юнит / сам герой / итд.
Для героя: да/нет
MUI: можно ли одновременно использовать заклинание больше одного раза
Описание: здесь описание нужного спелла
По уровням:
  1. здесь параметры на первом уровне
  2. здесь на втором
  3. итд.
Шаблон можно просто скопировать здесь, вставить в свое сообщение и заполнить:
**Название:** 
**Способ исполнения:**
**Цель:**
**Для героя:**
**MUI:**
**Описание:**
**По уровням:**
1. 
2. 
...

» Шаблон оформления ответа
Заклинание: здесь может быть название спелла или номер поста
Заказчик: здесь имя пользователя, который заказал заклинание
Способ исполнения: Jass или GUI
MUI: можно ли одновременно использовать заклинание больше одного раза
Нужен ли JNGP: Да или Нет
Используются глобальные переменные: Да или Нет
Шаблон можно просто скопировать здесь, вставить в свое сообщение и заполнить:
**Заклинание:**
**Заказчик:**
**Способ исполнения:**
**MUI:**
**Нужен ли JNGP:**
**Используются глобальные переменные:**
MUI - Multiplayer
Разрешается просто процитировать сообщение заказа и дописать информацию о получившемся заклинании.

Правила темы:

  • Оформление заявок согласно шаблонам.
  • Запрещено дублирование заявок.
  • Написание заявок понятным русским языком.
  • В пункте "Описание" необходимо максимально подробно описать все действия заклинания.
  • Если все же возникли вопросы у выполняющих заявки людей - редактируем старую заявку (дописываем описание), а не отписываемся дальше!
Заявки, не удовлетворяющие правилам, будут удалены!

Закрытая тема
 
krosaf4eg

offline
Опыт: 1,859
Активность:
Просто я привык что если карта содержит только один спелл, то пишу его в кастом коде. Скоупу можно переместить куда угодно, в любой триггер, то есть не нужно создавать новый триггер с необходимым названием,что облегчает импорт спелла)
Старый 20.02.2010, 18:34
Gareth Emery
Passive Progressive^^
offline
Опыт: 9,874
Активность:
Извини, написали почти в одно время, не увидел поста. Вообще просмотрел твой код, хорошо сделал, явно не новичок) В общем, я свой подправлю на всякий пожарный, а автор уже сам решит что ему лучше)
Старый 20.02.2010, 18:37
Pavell

offline
Опыт: 7,823
Активность:
krosaf4eg, Gareth_Emery, спасибо большое.
Старый 20.02.2010, 18:53
Gareth Emery
Passive Progressive^^
offline
Опыт: 9,874
Активность:
Заклинание: Исправленное Украсть золото + Сонная Аура
Заказчик: Pavell
Способ исполнения: Jass
Статус: выполнено
Исправил спелл украсть золото, теперь нельзя украсть 50 монет, если у цели их нет. Также на скорую руку сделал спелл Сонная Аура. Если будут баги - пиши.
Прикрепленные файлы
Тип файла: w3x Steal+SleepAura.w3x (15.3 Кбайт, 25 просмотров )

Отредактировано Gareth Emery, 20.02.2010 в 19:38.
Старый 20.02.2010, 19:32
Pavell

offline
Опыт: 7,823
Активность:
Gareth_Emery, спасибо большое.
Старый 20.02.2010, 19:46
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
Старый 20.02.2010, 20:22
zero index
Фантома же!
offline
Опыт: 886
Активность:
youtube, поставь у скила "Скачок" растояние приминения 99999.
StoneHeartis, сделать не успеваю, обьясняю так на гуи: событие - каст, условие - скил-орб эфект с нужным снарядом. Действия - ждать растояние между кастером и целью/скорость снаряда. Нанести урон равный растояние между кастером и целью/100*нужный процент. И летающий текст.

Отредактировано zero index, 20.02.2010 в 20:41.
Старый 20.02.2010, 20:35
Helpmeplz

offline
Опыт: 11,698
Активность:
N1XapOIII, если ты имеешь ввиду утечку с плавающим текстом, то,
во-первых, она незначительна,
во-вторых, это просто пример сообщения о недостатке маны, которое можно выводить любым другим способом.
Старый 20.02.2010, 21:04
N1XapOIII

offline
Опыт: 1,815
Активность:
Helpmeplz, Да не, я про то что переменную точи лучше убрать.
Старый 20.02.2010, 21:08
Helpmeplz

offline
Опыт: 11,698
Активность:
Если ее убрать, то будет утечка. А так она удаляется.
Старый 20.02.2010, 22:07
StoneHeartis
Kicked by ScorpioT1002
offline
Опыт: 1,009
Активность:
zero index, это понятно...
Меня больше интересует проверка на включение/выключение автоприменения способности.
Если мы включим "Юнит начинает применять способность", то тригер ведь будет работать только тогда, когда ты сам нажмешь на него...
В коде видна эта проверка, но она идет через использование кэша. Хотелось бы без кэша.На крайняк можно и с хэшем, но хэшем, увы, я не смог разобраться.
Старый 20.02.2010, 22:25
zero index
Фантома же!
offline
Опыт: 886
Активность:
StoneHeartis, хммм.. ну тогда можно сделать пассивом или вкл/выкл.
Старый 21.02.2010, 09:01
16GB
GhostOne User
offline
Опыт: 59,317
Активность:
StoneHeartis,
я делал на гуи через 2 триггера один с событие боевая единица атакован а 2 боевая еденица приводит способность в действие а потом проверял бафф
Старый 21.02.2010, 09:15
youtube
сктыщь
offline
Опыт: 8,025
Активность:
*zero_index* так мне надо чтоб было заклинание как в доте у войда или морфа и на джасс
Старый 21.02.2010, 11:27
zero index
Фантома же!
offline
Опыт: 886
Активность:
youtube... ну как то так... у морфа там подругому не мого.
Прикрепленные файлы
Тип файла: w3x time walk.w3x (13.3 Кбайт, 29 просмотров )
Старый 21.02.2010, 13:11
StoneHeartis
Kicked by ScorpioT1002
offline
Опыт: 1,009
Активность:
16GB, можешь сэмпл выложить? Я не понял как эти тригеры связаны..
Старый 21.02.2010, 13:35
Pavell

offline
Опыт: 7,823
Активность:
Название: Сфера вампиризма
Способ исполнения: не важно
Цель: точка
Для героя: да
Описание: Герой создает сферу в указанном месте. Она каждую секунду поглатывает жизнь ближайших врагов. Количество поглощенной жизни передается герою после окончания заклинания. Во время вызова сферы герой не может двигаться 5 сек. Также за врагов, находящихся под воздействием сферы, если их атаковать, то атакующий исцелится на часть нанесенного урона. Время действия сферы - 40 сек.
По уровням: 1
Поглощает по 5 ед. жизни в сек., 30% нанесенного урона - исцеление.
Название: Точный удар
Способ исполнения: не важно
Цель: враг
Для героя: да
Описание: Герой кастует спел в радиусе 100 на указанного врага. Враг останавливается. Затем герой стоит 1 сек. и наносит сильный урон, отталкивая его.
По уровням: 3
  1. 100 ед. урона.
  2. 225 ед. урона.
  3. 350 ед. урона.
Старый 21.02.2010, 13:44
Helpmeplz

offline
Опыт: 11,698
Активность:
StoneHeartis, сделай на основе ледяных стрел или черной стрелы, т.е. чтобы накладывался бафф на 0.01 секунду. Делай триггер с событием Юнит получает урон. Проверяй если у него есть этот баф и наноси урон.

Helpmeplz добавил:
zero index, это мало похоже на таймволк воеда)
youtube, вот волна морфа, сделал MUI. Урон не наносится, т.к. ты не просил, только перемещение.
Прикрепленные файлы
Тип файла: w3x Hydrowave.w3x (29.4 Кбайт, 26 просмотров )
Старый 21.02.2010, 14:07
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
<<
Старый 21.02.2010, 15:15
Helpmeplz

offline
Опыт: 11,698
Активность:
StoneHeartis, условие не ЮНИТ АТАКОВАН (Unit is attacked), а ЮНИТ ПОЛУЧАЕТ УРОН (Unit takes damage). Это условие делается таким образом:
Создается отдельный триггер с событием Юнит входит в игровую зону //Условие можешь не ставить
Действие: Trigger - Добавить условие к триггеру (здесь твой триггер) - Trigger Unit получает урон.

Если на карте изначально есть юниты, которые могут быть задействованы под твоей способностью, то при инициализации пикаешь всех этих юнитов и добавляешь также событие.
Старый 21.02.2010, 15:21
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 10:33.