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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
6
nvc123:
открываешь джнгп, пишешь туда этот код, зажимаешь ctrl и лкм на функции и это я тебе 100 раз говорил
вот код где юнит u это твой юнит a,юнит u1 это твой юнит b, r это расстояние(вместо твоих 50)
function nobj takes unit u,real r,unit u1 returns nothing
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)
endfunction
Да.Блин я очень тупил.Сейчас делал новый наработок попробовал опять ctrl+lkm и узрел анти BJ.А за код спасибо.И да кстати.На GUI точки не создаются.там движется юнит.Жаль нельзя 2 в 1 сделать.
Сейчас случится нечто.Я может смогу создать MYI SPELL без BJ.
Теперь ещё вопрос.Я двигаю юнита по отношению своего поворота.Не соображу код.
Скилл уже МУИ
28
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
6
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
28
что за ошибка ибо разбираться в бж коде очень сложно
локальные переменные должны быть объявлены в начале функции
код читается с верху вниз то есть например
функция а
бла бла бла
endfunction
функция б
бла бла бла
endfunction
из функции б ты можешь вызвать функцию а так как а выше
из функции а ты не можешь вызвать функцию б так как б ниже
это то что я вижу
в принципе идеалом было бы делать через апдейт
так
локальные переменные действуют в пределах 1 функции а ты пытаешься в Trig_Black_Hole_Func007Func001A
использовать локалки из Trig_Black_Hole_Actions
надо либо параллельные массивы либо структуры(в принципе это 1и тоже только в структурах короче получается)
6
nvc123:
что за ошибка ибо разбираться в бж коде очень сложно
локальные переменные должны быть объявлены в начале функции
код читается с верху вниз то есть например
функция а
бла бла бла
endfunction
функция б
бла бла бла
endfunction
из функции б ты можешь вызвать функцию а так как а выше
из функции а ты не можешь вызвать функцию б так как б ниже
это то что я вижу
в принципе идеалом было бы делать через апдейт
так
локальные переменные действуют в пределах 1 функции а ты пытаешься в Trig_Black_Hole_Func007Func001A
использовать локалки из Trig_Black_Hole_Actions
надо либо параллельные массивы либо структуры(в принципе это 1и тоже только в структурах короче получается)
я в структурах не АС
Может делать через таймер и хэш?
Кстати спелл без кода jass не утечен.но он не муи:(
28
утечен
само определение расстояния между юнитами в гуи утечно
6
nvc123:
утечен
само определение расстояния между юнитами в гуи утечно
жаль.Стоп до меня сейчас дошло.Можно сделать все в 1 триггере как.Вот тока я не смогу релиз.До сих пор функции плохо понимаю.
28
Gnusik, таймер+структуры в результате и муи и в 1 триггере
6
nvc123:
Gnusik, таймер+структуры в результате и муи и в 1 триггере
Таймер я не могу применять.Код не знаю.Структуры и подавно.
6
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".Я перезалил карту посмотри её.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.