Добавлен , не публикуется
Переделанная версия моей прошлой наработки.
Изменения:Все сделано на Jass.Переделана пассивная способность.Добавлена новая способность.Оптимизированы некоторые утечки.Убрано GUI.Исправлены недочёты с иконками.Теперь карта открывается у всех и без JNGP.Вес карты уменьшен.
Описание способностей:
1)Резка клинками:Герой производит серию ударов по врагу с разных точек нанося незначительный урон,после чего мгновенно разрезает его со спины нанеся огромный урон.
2)Быстрые атаки:Герой перемещается в случайные точки в радиусе 650 от начала способности нанося урон попадающимся рядом противникам.
3)Искуство Ассасина:Герой имеющий эту способность становится невидимым.При атаке он наносит серию ударов по врагу нанося урон.Через 4 секунды после атаки герой вновь становится невидимым.
4)Цепь:Герой крутит цепь вокруг себя.Каждые 0.02 секунды цепь наносит 20 урона.Количество сцепленных частей 12.Расстояние между частями 75.Длина цепи 1200.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
1
28
11 лет назад
Отредактирован nvc123
1
GetUnitLoc(b) создаёт точку,полярные координаты создают точку
SetUnitFacing(u,Atan2(y1-y,x1-x)*bj_RADTODEG)
y1 x1 координаты 2 юнита,y x координаты точки где был 1 юнит до того как мы его переместили
SetUnitX(u,r*Cos(a)+x)
SetUnitY(u,r*Sin(a)+y)
это двигает юнита на расстояние r под углом a
расстояние умноженное на косинус угла + его текущая координата x=его новая координата x
расстояние умноженное на синус угла + его текущая координата y=его новая координата y
0
6
11 лет назад
Отредактирован Gnusik
0
nvc123:
это уже готовый код или переменные подгонять надо?
и пожалуйста скажи
real a=GetUnitFacing(u)*bj_DEGTORAD
real x=GetUnitX(u)
real y=GetUnitY(u)
real x1=GetUnitX(u1)
real y1=GetUnitY(u1)
SetUnitX(u,r*Cos(a)+x)
SetUnitY(u,r*Sin(a)+y)
SetUnitFacing(u,Atan2(y1-y,x1-x)*bj_RADTODEG)
как это вставить?
уже понял
хотя нет.как в 1 триггере делать?через таймер?
nvc123, скажи пожалуйста из за чего ошибка.На BJ не обращай внимания потом уберу.
код
function Trig_Black_Hole_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A002'
endfunction

function Trig_Black_Hole_Actions takes nothing returns nothing
    local unit Caster=GetSpellAbilityUnit()
    set udg_Cast_Point = GetOrderPointLoc()
    call CreateNUnitsAtLoc( 1,'h002',GetOwningPlayer(Caster),GetSpellTargetLoc(),bj_UNIT_FACING)
    local unit Dummy=bj_lastCreatedUnit
    call AddSpecialEffectLoc("T_baqixiaoguo.mdx",GetUnitLoc(Dummy))
    local effect Effect=bj_lastCreatedEffect
    set bj_forLoopAIndex = 1
    set bj_forLoopAIndexEnd = 16
    loop
        exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
        call ForGroupBJ(GetUnitsInRangeOfLocMatching(250.00,GetUnitLoc(Dummy),Condition(function Trig_Black_Hole_Func007Func001001003)),function Trig_Black_Hole_Func007Func001A)
        call TriggerSleepAction(0.20)
        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop
    call RemoveUnit(Dummy)
    call DestroyEffect(whichEffect)
    call RemoveLocation(Cast_Point)
endfunction

function Trig_Black_Hole_Func007Func001001003 takes nothing returns boolean
    return ( IsUnitEnemy(GetEnumUnit(), GetOwningPlayer(Caster)) == true )
endfunction

function Trig_Black_Hole_Func007Func001A takes nothing returns nothing
    call SetUnitPositionLocFacingBJ( GetEnumUnit(), PolarProjectionBJ(GetUnitLoc(Dummy), -8.00, AngleBetweenPoints(GetUnitLoc(Dummy), GetUnitLoc(GetEnumUnit()))),GetUnitFacing(Dummy))
endfunction


//===========================================================================
function InitTrig_Black_Hole takes nothing returns nothing
    set gg_trg_Black_Hole = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Black_Hole, EVENT_PLAYER_UNIT_SPELL_CAST )
    call TriggerAddCondition( gg_trg_Black_Hole, Condition( function Trig_Black_Hole_Conditions ) )
    call TriggerAddAction( gg_trg_Black_Hole, function Trig_Black_Hole_Actions )
endfunction
1
28
11 лет назад
1
что за ошибка ибо разбираться в бж коде очень сложно
локальные переменные должны быть объявлены в начале функции
код читается с верху вниз то есть например
функция а
бла бла бла
endfunction
функция б
бла бла бла
endfunction
из функции б ты можешь вызвать функцию а так как а выше
из функции а ты не можешь вызвать функцию б так как б ниже
это то что я вижу
в принципе идеалом было бы делать через апдейт
так
локальные переменные действуют в пределах 1 функции а ты пытаешься в Trig_Black_Hole_Func007Func001A
использовать локалки из Trig_Black_Hole_Actions
надо либо параллельные массивы либо структуры(в принципе это 1и тоже только в структурах короче получается)
0
6
11 лет назад
0
nvc123:
что за ошибка ибо разбираться в бж коде очень сложно
локальные переменные должны быть объявлены в начале функции
код читается с верху вниз то есть например
функция а
бла бла бла
endfunction
функция б
бла бла бла
endfunction
из функции б ты можешь вызвать функцию а так как а выше
из функции а ты не можешь вызвать функцию б так как б ниже
это то что я вижу
в принципе идеалом было бы делать через апдейт
так
локальные переменные действуют в пределах 1 функции а ты пытаешься в Trig_Black_Hole_Func007Func001A
использовать локалки из Trig_Black_Hole_Actions
надо либо параллельные массивы либо структуры(в принципе это 1и тоже только в структурах короче получается)
я в структурах не АС
Может делать через таймер и хэш?
Кстати спелл без кода jass не утечен.но он не муи:(
0
28
11 лет назад
0
утечен
само определение расстояния между юнитами в гуи утечно
0
6
11 лет назад
0
nvc123:
утечен
само определение расстояния между юнитами в гуи утечно
жаль.Стоп до меня сейчас дошло.Можно сделать все в 1 триггере как.Вот тока я не смогу релиз.До сих пор функции плохо понимаю.
0
28
11 лет назад
0
Gnusik, таймер+структуры в результате и муи и в 1 триггере
0
6
11 лет назад
0
nvc123:
Gnusik, таймер+структуры в результате и муи и в 1 триггере
Таймер я не могу применять.Код не знаю.Структуры и подавно.
0
28
11 лет назад
0
Gnusik, я как нибудь напишу статью
0
6
11 лет назад
Отредактирован Gnusik
0
nvc123:
Gnusik, я как нибудь напишу статью
С нетерпением буду ждать!!!
nvc123, Кстати посмотри код получился муи?
code
function Trig_Assasin_Invisible_Conditions takes nothing returns boolean
return GetUnitAbilityLevel(GetAttacker(),'Apiv') >= 1
endfunction

function Trig_Assasin_Invisible_Actions takes nothing returns nothing
    local unit Attack=GetAttacker()
    local unit Unit=GetTriggerUnit()
    call PauseUnit(Attack,true)
    call PauseUnit(Unit,true)
    call DisableTrigger(gg_trg_Assasin_Spell)
    call UnitRemoveAbility(Attack,'Apiv')
    call SetUnitAnimation(Attack,"attack")
    call SetUnitAnimation(Unit,"death")
    call UnitDamageTarget(Attack,Unit,75.00,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
    call TriggerSleepAction(0.20)
    call SetUnitAnimation(Attack,"attack")
    call SetUnitAnimation(Unit,"death")
    call UnitDamageTarget(Attack,Unit,75.00,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
    call TriggerSleepAction(0.20)
    call SetUnitAnimation(Attack,"attack")
    call SetUnitAnimation(Unit,"death")
    call UnitDamageTarget(Attack,Unit,75.00,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
    call TriggerSleepAction(0.20)
    call SetUnitAnimation(Attack,"attack")
    call SetUnitAnimation(Unit,"death")
    call UnitDamageTarget(Attack,Unit,75.00,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
    call TriggerSleepAction(0.20)
    call SetUnitAnimation(Attack,"attack")
    call SetUnitAnimation(Unit,"death")
    call UnitDamageTarget(Attack,Unit,75.00,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
    call TriggerSleepAction(0.20)
    call SetUnitAnimation(Attack,"attack")
    call SetUnitAnimation(Unit,"death")
    call UnitDamageTarget(Attack,Unit,75.00,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
    call TriggerSleepAction(0.20)
    call PauseUnit(Attack,false)
    call PauseUnit(Unit,false)
    call DisableTrigger(GetTriggeringTrigger())
    call TriggerSleepAction(4.00)
    call EnableTrigger(GetTriggeringTrigger())
    call EnableTrigger(gg_trg_Assasin_Spell)
endfunction

//===========================================================================
function InitTrig_Assasin_Invisible takes nothing returns nothing
    local integer index=0
    set gg_trg_Sword_Attack = CreateTrigger(  )
        loop
            call TriggerRegisterPlayerUnitEvent(gg_trg_Assasin_Invisible, Player(index),EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
            set index = index + 1
            exitwhen index == 15
        endloop
    call TriggerAddCondition(gg_trg_Assasin_Invisible, Condition( function Trig_Assasin_Invisible_Conditions ) )
    call TriggerAddAction(gg_trg_Assasin_Invisible, function Trig_Assasin_Invisible_Actions )
endfunction
nvc123, вот вопрос что такое:
1)source
2)dist
3)angle
В коде
local real x = GetLocationX(source) + dist * Cos(angle * bj_DEGTORAD)
nvc123, И ещё одна просьба.Поможешь мне сделать из того скила что ты мне кинул "Sword Attacl" немного переделать в "Speed Attack".Я перезалил карту посмотри её.
0
28
11 лет назад
0
TriggerSleepAction(0.20) даёт неточный результат лучше делать через таймер и структуры/параллельные массивы
source это точка,dist расстояние,angle угол
косинус угла*гипотенуза+координата x угла
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.