Добавлен Таренас,
опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
vJass
Тип:
Способность
Версия Warcraft:
1.26a
Очень легкие способности, но может кому-то нужно будет. Снизу будет описание способностей
Лаги: нет
MUI: да
Лаги: нет
MUI: да
Способности
код
scope KurdanQ initializer Init
globals
private constant integer SPELL_ID = 'A001' //ID Способности
private constant real RADIUS = 350. //Радиус
private constant string MODEL = "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" //Модель эффекта
private real array MAX_DMG
private real array DMG
endglobals
private function Start takes nothing returns nothing
local unit u = GetTriggerUnit()
local unit ut
local group g = CreateGroup()
local boolean b = false
local player p = GetOwningPlayer(u)
local integer l = GetUnitAbilityLevel(u, SPELL_ID)
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local effect e
local real md = MAX_DMG[l]
call GroupEnumUnitsInRange(g, x, y, RADIUS, null)
loop
set ut = FirstOfGroup(g)
exitwhen ut == null or md <=0
if IsUnitEnemy(ut, p) and IsUnitAliveBJ(ut) then
set x = GetUnitX(ut)
set y = GetUnitY(ut)
set e = AddSpecialEffect(MODEL, x, y)
if md > DMG[l] then
call UnitDamageTarget( u, ut, DMG[l], true, true, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_LIGHTNING, WEAPON_TYPE_WHOKNOWS )
set md = md - DMG[l]
else
call UnitDamageTarget( u, ut, md, true, true, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_LIGHTNING, WEAPON_TYPE_WHOKNOWS )
set md = 0
endif
call DestroyEffect(e)
set b = true
endif
call GroupRemoveUnit(g, ut)
endloop
call DestroyGroup(g)
endfunction
private function Init takes nothing returns nothing
local trigger Q = CreateTrigger( )
call TriggerAddAction( Q, function Start )
call TriggerRegisterAnyUnitEventBJ( Q, EVENT_PLAYER_UNIT_SPELL_EFFECT )
set DMG[1] = 125.
set DMG[2] = 165.
set DMG[3] = 225.
set DMG[4] = 265.
set MAX_DMG[1] = 2500.
set MAX_DMG[2] = 4500.
set MAX_DMG[3] = 6500.
set MAX_DMG[4] = 8500.
endfunction
endscope
установка
- скопировать триггер Q в свою карту
- скопировать способность "Грозовые тучи" в свою карту
- вставить нужный айди способности в: private constant integer SPELL_ID = 'A001'
настройка
изменить эффект:
поменять строку в
private constant string MODEL = "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl"
изменить урон:
поменять массивы реальных в функции init
set DMG[1] = 125.
изменить макс. урон:
поменять массивы реальных в функции init
set MAX_DMG[1] = 2500.
поменять строку в
private constant string MODEL = "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl"
изменить урон:
поменять массивы реальных в функции init
set DMG[1] = 125.
изменить макс. урон:
поменять массивы реальных в функции init
set MAX_DMG[1] = 2500.
код
scope KurdanE initializer init
globals
private constant integer SPELL_ID = 'A000' //ID Способности
private constant real PERIODIC = 3.5 //Раз во сколько секунд
private constant real RADIUS = 500. //Радиус
private constant string MODEL = "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" //Модель эффекта
private real array DMG
hashtable hash = InitHashtable()
endglobals
private function time takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit u = LoadUnitHandle(hash, GetHandleId(t), StringHash("unit"))
local unit ut
local group g = CreateGroup()
local boolean b = false
local player p = GetOwningPlayer(u)
local integer l = GetUnitAbilityLevel(u, SPELL_ID)
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local effect e
if IsUnitAliveBJ(u) and IsUnitPaused(u) != true then
call GroupEnumUnitsInRange(g, x, y, RADIUS, null)
loop
set ut = FirstOfGroup(g)
exitwhen b==true or ut == null
if IsUnitEnemy(ut, p) and IsUnitAliveBJ(ut) then
set x = GetUnitX(ut)
set y = GetUnitY(ut)
set e = AddSpecialEffect(MODEL, x, y)
call UnitDamageTarget( u, ut, DMG[l], true, true, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_LIGHTNING, WEAPON_TYPE_WHOKNOWS )
call DestroyEffect(e)
set b = true
endif
call GroupRemoveUnit(g, ut)
endloop
endif
set p = null
set t = null
set u = null
call DestroyGroup(g)
set g = null
endfunction
private function Start takes nothing returns nothing
local timer t
local unit u = GetTriggerUnit()
if GetLearnedSkill() == SPELL_ID and GetUnitAbilityLevel(u, SPELL_ID) == 1 then
set t = CreateTimer()
call SaveUnitHandle(hash, GetHandleId(t), StringHash("unit"), u)
call TimerStart(t, PERIODIC, true, function time)
endif
set u = null
endfunction
private function init takes nothing returns nothing
local trigger E = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( E, EVENT_PLAYER_HERO_SKILL )
call TriggerAddAction( E, function Start )
set DMG[1] = 100.
set DMG[2] = 150.
set DMG[3] = 200.
set DMG[4] = 250.
set E = null
endfunction
endscope
установка
- скопировать триггер E в свою карту
- скопировать способность "Разъяренное небо" в свою карту
- вставить нужный айди способности в: private constant integer SPELL_ID = 'A000'
настройка
изменить эффект:
поменять строку в
private constant string MODEL = "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl"
изменить урон:
поменять массивы реальных в функции init
set DMG[1] = 100.
изменить перезарядку:
поменять число в
private constant real PERIODIC = 3.5
поменять строку в
private constant string MODEL = "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl"
изменить урон:
поменять массивы реальных в функции init
set DMG[1] = 100.
изменить перезарядку:
поменять число в
private constant real PERIODIC = 3.5
`
ОЖИДАНИЕ РЕКЛАМЫ...
Комментарии пока отсутcтвуют.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.