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

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

Библиотека заклинаний

Если вы хотите поделиться своими триггерными и JASS-заклинаниями, то можете оставлять их здесь.
Желательно иметь, в карте, небольшое руководство для новичков, по установке вашего творения на другую карту.
» Шаблон выкладывания способностей:
Название: название заклинания
Метод исполнения: GUI, Jass (v*, c*)
Нужен ли JNGP: да или нет
Тип цели: юнит, точка, область, без цели
Результат применения: целое описание
Количество уровней: 0-255
Вызов заклинания на цель: buff, если есть
Наличие глобальных переменных: да или нет
Дополнительные аргументы(такие, как вызов новых юнитов, предметов, требования, и прочее)
**Название:**
**Метод исполнения:**
**Нужен ли JNGP:** 
**Тип цели:**
**Результат применения:**
**Количество уровней:**
**Вызов заклинания на цель:**
**Наличие глобальных переменных:** 
Шаблон можно просто скопировать здесь, вставить в свое сообщение, и заполнить
Выполняется для каждой способности, независимо от количества карт.

Правила темы:
  • Запрещены заказы заклинаний, для этого есть тема
  • Можно оставлять пожелания для улучшения заклинаний, указывать баги, но не оценки, и прочий флуд.
  • Оформление ответов, согласно шаблонам.
  • Запрещается выкладывать разные версии одного и того же заклинания в разных сообщениях.
  • Написание описаний понятным русским языком.
  • Не забывайте указывать в своих картах авторов заклинаний!
Заявки, не удовлетворяющие правилам, будут удаляться

Ответ
 
weaver
ПочемусерверХГМ тормозит?
offline
Опыт: 4,000
Активность:
Название:РАсенган
Метод исполнения:Гуй
Нужен ли JNGP: да
Тип цели:враг
Результат применения: Кастер начиная кастовать заклинания замирает на несколько секунд и летит прямо в цель с огромной энергией в руке ,после того как кастер достиг цели он отталкивает цель на случайные градусы и наносит урон равные 150Хуровень абилити,в результате взрыва наносится урон всем юнитом рядом с целью равной 150.
Количество уровней:бесконечность.
в карте пристсвтует отличная модель наруто,якобы героя анимэ.
weaver добавил:
МегаДотер:
не срабатывает если юнит находится в оглушении.
что тут особенного?всего лишь проверка волшебства.
Прикрепленные файлы
Тип файла: w3x Rasengan.w3x (82.7 Кбайт, 74 просмотров )
Старый 08.06.2011, 18:33
DualShock

offline
Опыт: 5,023
Активность:
Вот сдал экзамены (на отлично), выкладываю свой спеллпак простых заклинаний. Простых потому что недавно перешел на vjass.
Метод исполнения: vjass
Нужен ли JNGP: Да
Тип цели: юнит / точка
Кол-во заклинаний: 12
Обновлено
Миниатюры
Кликните на картинку для увеличения
Название:  Screenshot.JPG
Просмотров: 379
Размер:  99.2 Кбайт  Кликните на картинку для увеличения
Название:  Screenshot0.JPG
Просмотров: 196
Размер:  137.3 Кбайт  Кликните на картинку для увеличения
Название:  ScreenShot2.JPG
Просмотров: 105
Размер:  175.2 Кбайт  
Прикрепленные файлы
Тип файла: w3x Simple SpellPack.w3x (114.3 Кбайт, 166 просмотров )

Отредактировано DualShock, 11.06.2011 в 17:30.
Старый 08.06.2011, 22:39
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
bee, открыл карту в jnpg нажал проверить и вылетает фатал эрор вара...
Старый 12.06.2011, 15:01
Doc

offline
Опыт: 63,163
Активность:
Srezik, пересохрани.
Старый 12.06.2011, 15:21
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
Doc, пересохранил, теперь сразу вылетает на главное меню варки )
Старый 12.06.2011, 15:25
Helpmeplz

offline
Опыт: 11,738
Активность:
Название: Blood Hurricane
Способ исполнения: vJass
MUI: да
Нужен JNPG: да

Блейдмастер начинает кружится в разрушительном вихре, засасывающем в себя всех ближайших противников. При смерти враг выталкивается из вихря с огромной силой, заливая окружающую область своей кровью.

GUI вариант можете найти в архиве XGM Spell Contest 3.

Настройки:
  • Область воздействия
  • Урон в секунду
  • Высота полета
  • Скорость вращения
Прикрепленные файлы
Тип файла: w3x Blood Hurricane v0.4 vJass.w3x (45.1 Кбайт, 71 просмотров )
Старый 24.06.2011, 18:16
HappyDeath

offline
Опыт: 372
Активность:
Helpmeplz,
Красивый скил, в имба доте у джагернаута почти такой только без крави.
Старый 26.06.2011, 01:55
Hu_R_R_icane
ザバーニーヤ ~ 妄想心音
offline
Опыт: 6,092
Активность:
Спеллпак героя из аниме "To Aru Majutsu no Index" (Индекс Волшебства), Стайла Магнуса. Содержит четыре заклинания.
Делал я, все титры, лавры, тапки и критику мне.
» Первое:
Название: Огненный Шар
Способ исполнения: GUI
MUI: да
Описание: выпускает огненный шар, который наносит урон всем противникам в области. Шар взрывается, столкнувшись с вражеским юнитом.
Урон и радиус взрыва настраиваемые, изначально 3/6/9хИнтеллект и 300 АоЕ.
3 уровня
» Второе:
Название: Круг Рун
Способ исполнения: GUI
MUI: да
Описание: устанавливает круг рун в области, все противники оказавшиеся в круге, в момент его создания теряют возможность применять заклинания на 5/6/7 секунд, также получая 50 урона, пока находятся в круге. Если Огненный шар взорвется в круге, все противники в нем получат дополнительно 300/500/700 урона. Длительность круга: 5/6/7 секунд.
3 уровня
» Третий:
Название: Мастерство Мага
Способ исполнения: GUI
MUI: да
Описание: пассивная способность, увеличивающая скорость восстановления маны, добавляющая 10/20/30 интеллекта и увеличивающая урон, наносимый "Огненным Шаром" на 200/400/600.
3 уровня
» Четвертый:
Название: Иннокентий
Способ исполнения: GUI
MUI: да
Описание: призывает духа огня, следующего за героем, который наносит 130 урона за удар, обладает 2000 здоровья и 30 единицами защиты типа "герой". Также дух обладает заклинаниями: Огонь (100 урона в секунду, 400 АоЕ) и Пламя (волна, 900 урона, 50 урона в секунду, 5 секунд). Дух длится 30 секунд, при этом теряет 1% здоровья в секунду. Герой неуязвим, пока действует дух.
Если дух входит в "Круг Рун" его здоровье пополняется на 25% от максимального.
1 уровень
Просьба по поводу качества особо не лютовать, первые мои попытки сделать более-менее нормальные активные спеллы.
Прикрепленные файлы
Тип файла: w3x Стайл Магнус.w3x (437.6 Кбайт, 108 просмотров )
Старый 27.06.2011, 20:57
DualShock

offline
Опыт: 5,023
Активность:
Название: Shuriken
Метод исполнения: vjass
Нужен ли JNGP: Да
Тип цели: точка
Описание: Бросает в указанном направлении сирюкен, дамажит всех на пути и вызывает кровотечение, замедляет на 30%.
С виду очень простой спелл, но я сделал его как можно более настраиваемым.
обновлено до v1.01
И пожалуйста если вам понравился мой спелл, то не поленитесь поставить плюсик =P
Прикрепленные файлы
Тип файла: w3x Shuriken.w3x (32.2 Кбайт, 108 просмотров )

Отредактировано DualShock, 02.07.2011 в 22:12.
Старый 30.06.2011, 19:39
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
Название: Канал
Метод исполнения: vJass
Нужен ли JNGP: обязательно
Тип цели: точка
Количество уровней: 1
Описание:
Герой создает канал от героя в указанном направлени на расстояние 1000.
Союзник попавший в канал быстро перемещается к его концу. Во время движения по каналу юнит
находится в астрале.
(это не импорт)
» код
library Spiral initializer Init

struct rotation
real x1
real y1
real z1
real x2
real y2
real z2

method dist takes nothing returns real
return SquareRoot((.x2-.x1)*(.x2-.x1)+(.y2-.y1)*(.y2-.y1))
endmethod

method AxisX takes real a,real d returns nothing
if d==0.00 then
 set .y2=.y1+(.y2-.y1)*CosBJ(a)+(.z2-.z1)*SinBJ(a)
 set .z2=.z1+(.z2-.z1)*CosBJ(a)-(.y2-.y1)*SinBJ(a)
else
 set .x2=.x1
 set .y2=.y1+d*CosBJ(a)
 set .z2=.z1+d*SinBJ(a)
 endif
endmethod

method AxisY takes real a,real d returns nothing
if d==0.00 then
 set .x2=.x1+(.x2-.x1)*CosBJ(a)-(.z2-.z1)*SinBJ(a)
 set .z2=.z1+(.z2-.z1)*CosBJ(a)+(.x2-.x1)*SinBJ(a)
else
 set .x2=.x1+d*CosBJ(a)
 set .y2=.y1
 set .z2=.z1+d*SinBJ(a)
endif
endmethod

method AxisZ takes real a,real d returns nothing
if d==0.00 then
 set .x2=.x1+(.x2-.x1)*CosBJ(a)-(.y2-.y1)*SinBJ(a)
 set .y2=.y1+(.y2-.y1)*CosBJ(a)+(.x2-.x1)*SinBJ(a)
else
 set .x2=.x1+d*CosBJ(a)
 set .y2=.y1+d*SinBJ(a)
 set .z2=.z1
endif
endmethod

endstruct

globals
private constant integer SpellID='A000'
private constant integer Dummy1ID='u000'
private constant integer Dummy2ID='u001'
private constant integer Dummy3ID='u002'
private constant integer BuffID='B001'
private constant string SpellOrder="channel"
private constant real Ra=80.00
private group G=CreateGroup()
private group H=CreateGroup()
private hashtable HT=InitHashtable()
private real R=1.20
endglobals

private function Motion3 takes nothing returns nothing
local unit eu=GetEnumUnit()
local unit u=LoadUnitHandle(HT,GetHandleId(eu),1)
local rotation rotate=rotation.create()
set rotate.x1=GetUnitX(eu)
set rotate.y1=GetUnitY(eu)
set rotate.x2=GetUnitX(u)
set rotate.y2=GetUnitY(u)
if rotate.dist()<=150 and GetUnitState(u,UNIT_STATE_LIFE)!=0 and GetUnitState(eu,UNIT_STATE_LIFE)!=0 and GetUnitCurrentOrder(eu)!=OrderId(SpellOrder) then
 call rotate.AxisZ(GetUnitFacing(u),25)
 if not IsTerrainPathable(rotate.x2,rotate.y2,PATHING_TYPE_WALKABILITY) then
  call SetUnitX(eu,rotate.x2)
  call SetUnitY(eu,rotate.y2)
 endif
else
 call FlushChildHashtable(HT,GetHandleId(eu))
 call UnitRemoveAbility(eu,BuffID)
 call GroupRemoveUnit(H,eu)
endif
call rotate.destroy()
set eu=null
set u=null
endfunction

private function Motion2 takes nothing returns nothing
local unit eu=GetEnumUnit()
local integer h=LoadInteger(HT,GetHandleId(eu),1)
local real a=GetUnitFacing(eu)
local real b=LoadReal(HT,GetHandleId(eu),2)+7.00
local rotation rotate=LoadInteger(HT,h,2)
call rotate.AxisX(b,Ra)
call rotate.AxisZ(a,0.00)
if not IsTerrainPathable(rotate.x2,rotate.y2,PATHING_TYPE_FLYABILITY) then
 call SetUnitX(eu,rotate.x2)
 call SetUnitY(eu,rotate.y2)
endif
call SetUnitFlyHeight(eu,rotate.z2,0.00)
call SaveReal(HT,GetHandleId(eu),2,b)
set eu=null
endfunction

private function Motion1 takes nothing returns nothing
local unit eu=GetEnumUnit()
local group g=LoadGroupHandle(HT,GetHandleId(eu),1)
local real a=GetUnitFacing(eu)
local rotation rotate=LoadInteger(HT,GetHandleId(eu),2)
set rotate.x1=GetUnitX(eu)
set rotate.y1=GetUnitY(eu)
set rotate.z1=GetUnitFlyHeight(eu)
call rotate.AxisZ(a,8.00)
if not IsTerrainPathable(rotate.x2,rotate.y2,PATHING_TYPE_FLYABILITY) then
 call SetUnitX(eu,rotate.x2)
 call SetUnitY(eu,rotate.y2)
endif
set rotate.x1=rotate.x2
set rotate.y1=rotate.y2
call ForGroup(g,function Motion2)
set eu=null
set g=null
endfunction

private function CreateSpiral2 takes nothing returns nothing
local group g1=LoadGroupHandle(HT,GetHandleId(GetEnumUnit()),1)
call ForGroup(g1,function Motion1)
set g1=null
endfunction

private function Act5 takes nothing returns nothing
local unit u=LoadUnitHandle(HT,GetHandleId(GetTriggeringTrigger()),1)
local player p=GetOwningPlayer(u)
local unit tu=GetTriggerUnit()
local unit d
if GetUnitCurrentOrder(tu)!=OrderId(SpellOrder) and IsUnitAlly(tu,p) and GetUnitState(u,UNIT_STATE_LIFE)!=0 and GetUnitState(tu,UNIT_STATE_LIFE)!=0 then
call SaveUnitHandle(HT,GetHandleId(tu),1,u)
 if not IsUnitInGroup(tu,H) then
  call GroupAddUnit(H,tu)
  set d=CreateUnit(p,Dummy3ID,GetUnitX(tu),GetUnitY(tu),0.00)
  call IssueTargetOrder(d,"banish",tu)
  set d=null
 endif
endif
set u=null
set p=null
set tu=null
endfunction

private function CreateSpiral1 takes nothing returns nothing
local unit u1
local unit u2
local unit eu=GetEnumUnit()
local player p=GetOwningPlayer(eu)
local real a=LoadReal(HT,GetHandleId(eu),2)
local group g1=LoadGroupHandle(HT,GetHandleId(eu),1)
local group g2=CreateGroup()
local trigger tr=CreateTrigger()
local integer i=1
local rotation rotate=rotation.create()

set rotate.x1=GetUnitX(eu)
set rotate.y1=GetUnitY(eu)
set rotate.z1=GetUnitFlyHeight(eu)+Ra
set u1=CreateUnit(p,Dummy1ID,rotate.x1,rotate.y1,a)
call SetUnitFlyHeight(u1,rotate.z1,0.00)
loop
 call rotate.AxisX(i*120.00,Ra)
 call rotate.AxisZ(a,0.00)
 set u2=CreateUnit(p,Dummy2ID,rotate.x2,rotate.y2,a)
 call SetUnitFlyHeight(u2,rotate.z2,0.00)
 call SaveInteger(HT,GetHandleId(u2),1,GetHandleId(u1))
 call SaveReal(HT,GetHandleId(u2),2,i*120.00)
 call GroupAddUnit(g2,u2)
 set i=i+1
exitwhen i>3
endloop

call SaveGroupHandle(HT,GetHandleId(u1),1,g2)
call SaveInteger(HT,GetHandleId(u1),2,rotate)
call TriggerRegisterUnitInRange(tr,u1,Ra,null)
call TriggerAddAction(tr,function Act5)
call SaveTriggerHandle(HT,GetHandleId(u1),3,tr)
call SaveUnitHandle(HT,GetHandleId(tr),1,u1)
call GroupAddUnit(g1,u1)


set p=null
set g2=null
set u1=null
set u2=null
set g1=null
set eu=null
set tr=null
endfunction

private function Act4 takes nothing returns nothing
call ForGroup(G,function CreateSpiral2)
call ForGroup(H,function Motion3)
endfunction

private function Act3 takes nothing returns nothing
call ForGroup(G,function CreateSpiral1)
endfunction

private function Clear2 takes nothing returns nothing
call FlushChildHashtable(HT,GetHandleId(GetEnumUnit()))
call KillUnit(GetEnumUnit())
endfunction

private function Clear1 takes nothing returns nothing
local group g=LoadGroupHandle(HT,GetHandleId(GetEnumUnit()),1)
local rotation rotate=LoadInteger(HT,GetHandleId(GetEnumUnit()),2)
local trigger tr=LoadTriggerHandle(HT,GetHandleId(GetEnumUnit()),3)
call FlushChildHashtable(HT,GetHandleId(tr))
call DestroyTrigger(tr)
call rotate.destroy()
call FlushChildHashtable(HT,GetHandleId(GetEnumUnit()))
call ForGroup(g,function Clear2)
call GroupClear(g)
call DestroyGroup(g)
call KillUnit(GetEnumUnit())
set g=null
set tr=null
endfunction

private function Act2 takes nothing returns boolean
local group g
if GetSpellAbilityId()==SpellID then
 set g=LoadGroupHandle(HT,GetHandleId(GetTriggerUnit()),1)
 call FlushChildHashtable(HT,GetHandleId(GetTriggerUnit()))
 call ForGroup(g,function Clear1)
 call GroupClear(g)
 call DestroyGroup(g)
 call GroupRemoveUnit(G,GetTriggerUnit())
 set g=null
endif
return false
endfunction

private function Act1 takes nothing returns boolean
local group g
local unit tu
if GetSpellAbilityId()==SpellID then
 set tu=GetTriggerUnit()
 set g=CreateGroup()
 call SaveGroupHandle(HT,GetHandleId(tu),1,g)
 call SaveReal(HT,GetHandleId(tu),2,Atan2BJ(GetSpellTargetY()-GetUnitY(tu),GetSpellTargetX()-GetUnitX(tu))​)
 call GroupAddUnit(G,tu)
 set g=null
 set tu=null
 endif
return false
endfunction

private function Init takes nothing returns nothing
local trigger tr1=CreateTrigger()
local trigger tr2=CreateTrigger()
local timer tm1=CreateTimer()
local timer tm2=CreateTimer()
local player p
local integer i=0
loop
 set p=Player(i)
 call TriggerRegisterPlayerUnitEvent(tr1,p,EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
 call TriggerRegisterPlayerUnitEvent(tr2,p,EVENT_PLAYER_UNIT_SPELL_FINISH,null)
 call TriggerRegisterPlayerUnitEvent(tr2,p,EVENT_PLAYER_UNIT_SPELL_ENDCAST,null)
 set p=null
 set i=i+1
 exitwhen i>11
endloop

call TriggerAddCondition(tr1,Condition(function Act1))
call TriggerAddCondition(tr2,Condition(function Act2))
call TimerStart(tm1,0.45,true,function Act3)
call TimerStart(tm2,0.03,true,function Act4)

set tr1=null
set tm1=null
set tm2=null
endfunction
endlibrary
код открытый только надо папку создать в тригерах иначе код не появляется. хз почему. глюк редактора.
Миниатюры
Кликните на картинку для увеличения
Название:  chanel.JPG
Просмотров: 430
Размер:  27.2 Кбайт  
Прикрепленные файлы
Тип файла: w3x spiral.w3x (23.3 Кбайт, 138 просмотров )

Отредактировано Zanozus, 02.07.2011 в 21:17.
Старый 02.07.2011, 20:26
megasniper

offline
Опыт: 3,656
Активность:
Название: Сгусток Силы
Метод исполнения: GUI+Jass
Нужен ли JNGP: -
Тип цели: юнит
Результат применения: Маг пускает в сторону выбранного противника сгусток энергии, который наносит 500 урона любому противнику, оказавшемуся на его пути. Если на его пути не попадется ни одного врага, сгусток взрывается, нанося 200 урона всем юнитам в радиусе 500.
Количество уровней: 1
Наличие глобальных переменных: 1 глобалка (хэш)
Все параметры настраиваемые. Способность базовая, можно легко навесить любые баффы. Думаю новичкам пригодится.
Прикрепленные файлы
Тип файла: w3x sgustok.w3x (20.3 Кбайт, 90 просмотров )
Старый 06.07.2011, 18:12
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
Название способности: что-то типо ярости молота
На каком языке писалось: vJass
Требования: JassHelper 0.9.I.2+
MUI ли? разумеется!
Описание: Чар поднимает вверх свой великий и ужасный молот, после он его около двух секунд разяжает с помощью частиц энергии и красивого shiva-эффекта. Потом прыгает и круто сотрясает землю. Типо ульт, дамажит 5x СИЛА +стан на 4с. Пользуйтесь, правда писал так, косточки размять, на съедение новым юзерам. Код ужас.

Игровое видео: Youtube Link
Прикрепленные файлы
Тип файла: w3x HammerWrath.w3x (29.4 Кбайт, 95 просмотров )

Отредактировано bee, 15.07.2011 в 06:59.
Старый 15.07.2011, 06:52
youtube
сктыщь
offline
Опыт: 8,025
Активность:
Название: Fire Laser
Метод исполнения: vJass,cJass
Нужен ли JNGP: yes
Тип цели: без цели
Количество уровней: 1
Описание: Герой запускает в верх 30 шаров, которые разлетаются во все стороны, и через некоторое время летят обратно с лазароми, разталкивая всех на своем пути.
» код
scope FireLaser initializer Init{
include "cj_types_priv.j"
    define{
        private SpellId='A777'
        //айди скила
        private DummyId='h000'
        //айди дамика
        private LightningId="AFOD"
        //айди молнии
        private Height_up=12.
        //скорость с которой поднимаются в воздух шары
        private num=30
        //кол-во шариков
        private speed_of_laser=2.5
        //скорость лазера
        private MoveSpeed_one=10.
        //скорость шариков, когда они разлетаються
        private MoveSpeed_of_target=(GetUnitMoveSpeed(u)*periodic)
        //сила, с которой двигаеи юнитов, попавших под лазер
        private MaxRange=500
        //максимальный радиус когда шарики разлетаются во все строны
        private MinRange=100
        //мин радиус шариков
        private MaxHeight=500
        //макс высота
        private range_of_group=80
        //радиус каждого лазера
        private periodic=.025
        //...
        private periodic_of_creating=.0
        //период появления шаров
        private effect_st="Abilities\\Spells\\Orc\\LiquidFire\\Liquidfire.mdl"
        //эффект во время спавна шаров
        private effect_nd="Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl"
        //эффект по окончанию спавна
    }
    
    define{
        private Unit(u,x,y,a)={ut=CreateUnit(GetOwningPlayer(u),DummyId,x,y,a)}
        private random=GetRandomReal(0,100)
    }
globals
    private unit dummy
endglobals

private struct Lightning
lightning l
unit u
real a,d,tm
    
    static method onRange takes nothing returns boolean
        unit u = GetFilterUnit()
        real x1 = GetUnitX(u) - GetUnitX(dummy)
        real y1 = GetUnitY(u) - GetUnitY(dummy)    
        real dist = SquareRoot(x1*x1 + y1*y1)
        real angle = Atan2(GetUnitY(dummy) - GetUnitY(u), GetUnitX(dummy) - GetUnitX(u))       
        if IsUnitEnemy(dummy, GetOwningPlayer(u)) and GetWidgetLife(u) > 0.405 and dist > 20 and not IsUnitType(u, UNIT_TYPE_STRUCTURE) and not IsUnitType(u, UNIT_TYPE_MECHANICAL) then 
            SetUnitX(u, GetUnitX(u) - MoveSpeed_of_target * Cos(angle))
            SetUnitY(u, GetUnitY(u) - MoveSpeed_of_target * Sin(angle))
        endif
        u = null
        return false          
    endmethod
    static method onAction takes nothing returns nothing
        timer t = GetExpiredTimer()
        thistype c = GetTimerData(t)
        if c.d>MinRange
            if c.tm<3 then
                c.tm+=periodic
                SetUnitScalePercent(c.u,100+(c.tm*10),100+(c.tm*10),100+(c.tm*10))
                SetLightningColor(c.l,random,0,random,100)
                MoveLightningEx(c.l,true,GetUnitX(c.u),GetUnitY(c.u),GetUnitFlyHeight(c.u),GetUnitX(c.u),GetUnitY(c.​u),GetUnitFlyHeight(c.u)-c.tm*200)
            else
                SetUnitX(c.u,GetUnitX(c.u)-speed_of_laser*Cos(c.a))
                SetUnitY(c.u,GetUnitY(c.u)-speed_of_laser*Sin(c.a))
                MoveLightningEx(c.l,true,GetUnitX(c.u),GetUnitY(c.u),GetUnitFlyHeight(c.u),GetUnitX(c.u),GetUnitY(c.​u),0)
                SetLightningColor(c.l,100,0,100,100)
                dummy=c.u
                group g=CreateGroup()
                GroupEnumUnitsInRange(g, GetUnitX(c.u), GetUnitY(c.u), range_of_group, Filter(function thistype.onRange))
                DestroyGroup(g)
                g=null
                c.d-=speed_of_laser
            endif
        else
            DestroyLightning(c.l)
            KillUnit(c.u)
            ReleaseTimer(t)
        endif
        t=null
    endmethod
    static method onCreate takes unit caster,real a,real d returns thistype
        thistype c= thistype.create()
        timer t = NewTimer()
        c.u=caster
        c.a=a
        c.d=d
        c.tm=0
        c.l=AddLightningEx("AFOD",true,GetUnitX(c.u),GetUnitY(c.u),GetUnitFlyHeight(c.u),GetUnitX(​c.u),GetUnitY(c.u),GetUnitFlyHeight(c.u))
        SetTimerData(t, c)
        TimerStart(t, periodic, true, function thistype.onAction)
        t = null
        return c
    endmethod
endstruct

private struct Height
    unit u
    real x,y,a,d,h
    static method onAction takes nothing returns nothing
        timer t = GetExpiredTimer()
        thistype c = GetTimerData(t)
        c.d=SquareRoot((GetUnitX(c.u) - c.x) * (GetUnitX(c.u) - c.x) + (GetUnitY(c.u) - c.y) * (GetUnitY(c.u) - c.y))
        if c.h<MaxHeight then
            c.h+=Height_up
            SetUnitFlyHeight(c.u,c.h,0)
        elseif c.d>MoveSpeed_one
            UnitRemoveAbility(c.u,'Aloc')
            ShowUnit(c.u,true)
            UnitAddAbility(c.u,'Aloc')
            SetUnitX(c.u,GetUnitX(c.u)+MoveSpeed_one*Cos(c.a))
            SetUnitY(c.u,GetUnitY(c.u)+MoveSpeed_one*Sin(c.a))
        else
            Lightning.onCreate(c.u,c.a,MaxRange)
            ReleaseTimer(t)
        endif
        t=null
    endmethod
    static method onCreate takes unit caster,real a returns thistype
        thistype c= thistype.create()
        timer t = NewTimer()
        c.u=caster
        c.x = GetUnitX(c.u)+MaxRange*Cos(a)
        c.y = GetUnitY(c.u)+MaxRange*Sin(a)
        c.h=0
        c.a=a
        SetTimerData(t, c)
        TimerStart(t, periodic, true, function thistype.onAction)
        t = null
        return c
    endmethod
endstruct

private struct cold
    //+++++
    unit u
    real x,y,ts
    effect e
    //+++++
    static method onDamage takes nothing returns boolean
         return false
    endmethod
    
    static method onRange takes nothing returns boolean
        return false
    endmethod
    
    static method onAction takes nothing returns nothing
        timer t = GetExpiredTimer()
        thistype c = GetTimerData(t)
        unit ut
        if c.ts>0 then
            c.ts--
            Unit(c.u,c.x,c.y,0)
            if c.ts!=1 then
                ShowUnit(ut,false)
            endif
            Height.onCreate(ut,((360/num)*c.ts)*bj_DEGTORAD)
        else
            DestroyEffect(c.e)
            DestroyEffect(AddSpecialEffect(effect_nd,c.x,c.y ))
            ReleaseTimer(t)
        endif
        t=null
        ut=null
    endmethod
    
    static method onCreate takes unit caster returns thistype
        thistype Cold = thistype.create()
        timer t = NewTimer()
        Cold.u=caster
        Cold.x = GetUnitX(Cold.u)
        Cold.y = GetUnitY(Cold.u)
        Cold.ts = num
        Cold.e=AddSpecialEffect(effect_st,Cold.x,Cold.y )
        SetTimerData(t, Cold)
        TimerStart(t, periodic_of_creating, true, function thistype.onAction)
        t = null
        return Cold
    endmethod
    
endstruct 

    private bool COLD_CAST(){
        if GetSpellAbilityId()==SpellId then
            cold.onCreate(GetTriggerUnit())
        endif 
        return false
    }

    private void Init(){
        trigger t=CreateTrigger()   
        int index = 0
        debug BJDebugMsg("|c0000C5FFSpell Created By Jumper aka YouTube")
        whilenot(index == 13){
            TriggerRegisterPlayerUnitEvent(t, Player(index), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
            index++
        }
        TriggerAddCondition(t, Condition(function COLD_CAST))
        t = null
    }
}
» скрины
Прикрепленные файлы
Тип файла: w3x Fire Laser.w3x (41.5 Кбайт, 73 просмотров )

Отредактировано youtube, 18.07.2011 в 11:26.
Старый 18.07.2011, 01:14
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
Название способности: Fire Trap / Огненная ловушка
Язык написания способности: vJass (lastest jasshelper required)
Описание: Герой запускает огненный снаряд в воздух, по указанной директории на расстояние 900 ед. (настраивается). Снаряд летит по параболе и при приземлении возвращается к герою. По пути если встретит врага то зацепит и притащит к герою со половинной скоростью, нанося 150 ед. / сек.
Все это конешно же с эпичными спецэффектами, фапайте господа.

Прикрепленные файлы
Тип файла: w3x Shandris.w3x (20.6 Кбайт, 89 просмотров )
Старый 23.07.2011, 08:51
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
Название: Клетка
Метод исполнения: vJass
Нужен ли JNGP: да
MUI: да
Тип цели: без цели (наземные)
Количество уровней: 1
Описание:
Посмотрел я на спелл клока из доты и захотелось сделать свой, но лучше.
Герой создает вокруг себя непроницаемую квадратную клетку (дамми). Если к внешней стороне клетки подойдет вражеский юнит, его ударит током, застанит и отбросит на небольшое расстояние.
Миниатюры
Кликните на картинку для увеличения
Название:  cage.jpg
Просмотров: 254
Размер:  72.7 Кбайт  
Прикрепленные файлы
Тип файла: w3x cage.w3x (24.4 Кбайт, 96 просмотров )

Отредактировано Zanozus, 28.07.2011 в 17:30.
Старый 28.07.2011, 17:15
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
Zanozus, красавец, как всегда, но есть пара советов по оптимизации в коде:

Первое - зачем объявлять локалку tm в функции Init
» раскрыть
Код:
private function Init takes nothing returns nothing
local trigger tr=CreateTrigger()
local timer tm=CreateTimer()
local integer i=0
call TimerStart(tm,0.03,true,function Act2)
loop
 call TriggerRegisterPlayerUnitEvent(tr,Player(i),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)  
 set i=i+1
 exitwhen i>11
endloop
call TriggerAddCondition(tr,Condition(function Act1))
set tr = null
set tm = null
endfunction
когда можно написать вот так
» раскрыть
Код:
private function Init takes nothing returns nothing
local trigger tr=CreateTrigger()
local integer i=0
call TimerStart(CreateTimer(),0.03,true,function Act2)
loop
 call TriggerRegisterPlayerUnitEvent(tr,Player(i),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)  
 set i=i+1
 exitwhen i>11
endloop
call TriggerAddCondition(tr,Condition(function Act1))
set tr = null
endfunction


» раскрыть
Код:
private function Act1 takes nothing returns boolean
        local cage c
        local unit tu
        local unit u
        local timer tm
        if GetSpellAbilityId( )=='A002' then
        
            set tu = GetTriggerUnit( )
            set c = cage.create( )
            set c.p = GetOwningPlayer( tu )
            set c.r = 140.00
            set c.b = 210.00
            set c.x = GetUnitX( tu )
            set c.y = GetUnitY( tu )
            set c.a = GetUnitFacing( tu ) * bj_DEGTORAD
            set u = CreateUnit( c.p, Dummy1ID, c.x, c.y, GetUnitFacing( tu ) )
            set c.g = CreateGroup( )
            call SaveInteger( HT, GetHandleId( u ), 1, c )
            set tm = CreateTimer( )
            call TimerStart( tm, 8.00, false, function Act5 )
            call SaveUnitHandle( HT, GetHandleId( tm ), 1, u )
            call GroupAddUnit( G1, u )
            set u = null
            set tu = null
            set tm = null
        endif
        return false
    endfunction
->
» раскрыть
Код:
private function Act1 takes nothing returns boolean
        local cage c
        local unit tu
        local unit u
        local timer tm
        if GetSpellAbilityId( )=='A002' then
        
            set tu = GetTriggerUnit( )
            set c = cage.create( )
            set c.p = GetOwningPlayer( tu )
            set c.r = 140.00
            set c.b = 210.00
            set c.x = GetUnitX( tu )
            set c.y = GetUnitY( tu )
            set c.a = GetUnitFacing( tu ) * bj_DEGTORAD
            set u = CreateUnit( c.p, Dummy1ID, c.x, c.y, GetUnitFacing( tu ) )
            set c.g = CreateGroup( )
            call SaveInteger( HT, GetHandleId( u ), 1, c )
            set tm = CreateTimer( )
            call TimerStart( tm, 8.00, false, function Act5 )
            call SaveUnitHandle( HT, GetHandleId( tm ), 1, u )
            call GroupAddUnit( G1, u )

        endif
            set u = null
            set tu = null
            set tm = null
        return false
    endfunction


я чето там еще видел но мне стало лень и я случайно закрыл WE D:
Старый 01.08.2011, 05:59
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
Название способности: Omnislash
Способ исполнения: vJass
JNGP: нужен
Цель: боевая единица, противник
Описание: Blademaster поочередно атакует нескольких противников. Во время применения способности Blademaster абсолютно неуязвим.
Атаки героя учитывают все ваши пассивные и авто-способности.
Прикрепленные файлы
Тип файла: w3x Omnislash.w3x (23.0 Кбайт, 78 просмотров )
Старый 04.08.2011, 12:47
Sarispa

offline
Опыт: 30
Активность:
Название: Скилы наездницы
Количество: 2
Тип: 1 Skill - цель
2 Skill - точка
Тип исполнения: триггеры
PS: кто понимает в утечках просьба посмотреть 2 скилл возможно там утечка, просьба объяснить в чем суть этой утечки.
Прикрепленные файлы
Тип файла: w3x Наездница.w3x (42.0 Кбайт, 31 просмотров )
Старый 10.08.2011, 21:44
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
Название: RoboHands
Метод исполнения: vJass
Нужен ли JNGP: да
MUI: как обычно
Тип цели: область,200 радиус, для героя (активно-пассивный)
Количество уровней: много (4)
Описание: сделал свой RoboHands по описанию спелла из Hive по просьбе Madhead
Спелл действет в двух режимах: активный и пассивный
Пассивный режим:
После изучения спелла "руки" начинают искать врагов в 800 радиусе от героя, обездвиживают их (спелл "Очищение"), наносят 1.5*лвл ед. магического урона и похищают 1.5*лвл единиц маны каждые 0.33 секунды в течение 1*лвл секунд. Урон, полученный врагом, также передается герою.
Активный режим:
После применения спелла "руки" тянутся к врагам в указанной области, обездвиживают их и тянут обратно к герою, также нанося урон и похищая ману, в течение 1*лвл секунд.
» Системные требования =)
3 руки на карте:
Intel Atom N455 1.66 GHz
128 mb Video
2GB ROM
15 рук на карте
Intel Core 2 Duo 2.50 GHz
256 mb Video
2GB ROM
30 рук на карте
AMD Phenom X4 3.2 GHz
1024 mb Video
2GB ROM
Тестирование проводилось примерно на таких компах на самых высоких настройках графики.
p.s модель сегмента "руки" с анимациями тангажа позаимствована с Hive
Миниатюры
Кликните на картинку для увеличения
Название:  RoboHands.jpg
Просмотров: 479
Размер:  72.1 Кбайт  
Прикрепленные файлы
Тип файла: w3x RoboHandsv1.w3x (40.3 Кбайт, 103 просмотров )

Отредактировано Zanozus, 17.09.2011 в 17:28.
Старый 20.08.2011, 15:42
Vadik29
Choice Battle 1.6а
offline
Опыт: 15,845
Активность:
Название: Каменьщик
Метод исполнения: GUI
Количество: 2
Количество уровней: много (4)
Каменные плиты:
Создает две каменные плиты, которые сдвигаются на встречу, друг другу зацепляют и тащат каждого воина у них на пути. Когда 2 плиты сталкиваются, происходит колоссальный взрыв и противники получают огромный урон.
Удар земли:
Под каждым противником в радиусе 500 создает либо шпиль из земли либо гигантскую яму тем самым оглушая противника на 2 секунды.
Прикрепленные файлы
Тип файла: w3x skill by Vadik29.w3x (22.8 Кбайт, 85 просмотров )
Старый 25.08.2011, 18:31
Ответ

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

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

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

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



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