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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
12
публикуйте, нормально сделано, человек старался.
6
maxbox:
публикуйте, нормально сделано, человек старался.
Спасибо,думаю опубликуют.Все требования выполнены.Разве 3-4 утечки не устранил.Но они не проблемные.
25
У иконок все еще нету DISBTN и... рамок. Все иконки выглядят так, словно они пассивные. Скиллы перепутаны местами. У цепи есть полоски хп. Я не кодер, но этого уже достаточно.
Еще новая пассивка, какая-то неюзабельная. Старая была оригинальной и интересной, а это просто спам. Это всего-лишь мое мнение, а не наставление. Все-таки я не кодер. С этим разберется другой чувак.
28
Gnusik, утечек очень много
например функция полярных координат вызывает утечки
используй геометрию(7 класс по моему)
так же ненужные бж например PauseUnitBJ
используешь глобалки там где надо локалки
и не надо делать новый ресурс,можно просто обновить старый
в принципе оптимизировал только условия что неплохо
но зачем делать кучу триггеров которые кроме того изначально неактивны я не понимаю,ведь можно просто по триггеру на способность а так получилось не оптимально
6
JesusHipster:
У иконок все еще нету DISBTN и... рамок. Все иконки выглядят так, словно они пассивные. Скиллы перепутаны местами. У цепи есть полоски хп. Я не кодер, но этого уже достаточно.
Еще новая пассивка, какая-то неюзабельная. Старая была оригинальной и интересной, а это просто спам. Это всего-лишь мое мнение, а не наставление. Все-таки я не кодер. С этим разберется другой чувак.
На счет цепи.Полоски жизни не могу удалить т.к. цепь состоит из Dummy.Сейчас мне нужно отыскать модель самой части цепи.Тогда я удалю модель из дамми и сделаю просто спецэффект.Старая пассивка была утечной и я её удалил.Но думаю могу её оптимизировать.DISBTN иконки у меня есть но я их не импортировал.Сегодня я перезалью карту и исправлю все что нужно.
nvc123:
Gnusik, утечек очень много
например функция полярных координат вызывает утечки
используй геометрию(7 класс по моему)
так же ненужные бж например PauseUnitBJ
используешь глобалки там где надо локалки
и не надо делать новый ресурс,можно просто обновить старый
в принципе оптимизировал только условия что неплохо
но зачем делать кучу триггеров которые кроме того изначально неактивны я не понимаю,ведь можно просто по триггеру на способность а так получилось не оптимально
Насчет геометрии за 7 класс.Даже не знаю.Можно попробовать вспомнить.Теперь "PauseUnitBJ".А что надо ставить вместо этого?Насчет "для каждой способности по 1 триггеру"-я не знаю как это сделать.В статьях которые читал не видел такого.Просто когда делаешь да GUI нужно иногда 2 а то и 3 триггера.Ну я попробую сделать получше.Только скажи как делать все в 1 триггере.
28
Gnusik,твой спел был не муи,я сделал его муи
когда ты используешь полярные координаты то ты создаёшь точку и не удаляешь её,если использовать их очень часто то их станет очень много и будут лаги
PauseUnit
кат
struct sword_sp
unit caster
unit target
endstruct

function TimerStartEx takes timer whichTimer, real period, code handlerFunc, integer userData returns nothing
    call TimerStart(whichTimer, I2R(userData), false, null) // timer exploit, xgm 2007
    call PauseTimer(whichTimer)
    call TimerStart(whichTimer, period,false, handlerFunc ) // start timer
endfunction

function TimerGetUserData takes timer whichTimer returns integer
    return R2I(TimerGetRemaining(whichTimer )+0.5) // get user data from timer
endfunction

function Sword_Attack_Action takes nothing returns nothing
   local timer a=GetExpiredTimer()
   local sword_sp b=TimerGetUserData(a)
   local unit caster=b.caster
   local unit target=b.target
   local real facing=GetUnitFacing(target)*bj_DEGTORAD
   local real sin=Sin(facing)
   local real cos=Cos(facing)
   local real x1=GetUnitX(target)
   local real y1=GetUnitY(target)
   local real x2=GetUnitX(caster)
   local real y2=GetUnitY(caster)
   local real x3=x1+GetRandomReal(-80,80)
   local real y3=y1+GetRandomReal(-80,80)
    call SetUnitX(caster,x3)
    call SetUnitY(caster,y3)
    call SetUnitFacing(caster,bj_RADTODEG * Atan2(y1-y3,x1-x3))
    call UnitDamageTarget(caster,target,5,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
    call SetUnitAnimation(caster, "attack" )
    call SetUnitAnimation(target, "death" )
   set caster=null 
   set target=null
    call TimerStartEx(a,.06,function Sword_Attack_Action,b)
endfunction

function Trig_Sword_Attack_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A000'
endfunction

function Trig_Sword_Attack_Actions takes nothing returns nothing
   local unit caster=GetSpellAbilityUnit()
   local unit target=GetSpellTargetUnit()
   local real x1
   local real y1
   local real x2
   local real y2
   local real dx
   local real dy
   local real cos
   local real sin
   local real facing
   local real x3
   local real y3
   local timer a=CreateTimer()
   local sword_sp b=sword_sp.create()
    call PauseUnit(caster,true)
    call PauseUnit(target,true)
    call SetUnitInvulnerable(caster, true )
    call SetUnitPathing(caster, false )
    set b.caster=caster
    set b.target=target
    call TimerStartEx(a,.06,function Sword_Attack_Action,b)
    call TriggerSleepAction( 2.50 )
    call PauseTimer(a)
    call DestroyTimer(a)
    set b.caster=null
    set b.target=null
    call b.destroy()
    set facing=GetUnitFacing(target)*bj_DEGTORAD
    set sin=Sin(facing)
    set cos=Cos(facing)
    set x1=GetUnitX(target)
    set y1=GetUnitY(target)
    set x2=GetUnitX(caster)
    set y2=GetUnitY(caster)
    set x3=x1+cos*165
    set y3=y1+sin*165
    set dx=x1+cos*256
    set dy=y1+sin*256
    call SetUnitX(caster,x3)
    call SetUnitY(caster,y3)
    call SetUnitFacing(caster,bj_RADTODEG * Atan2(dy-y3,dx-x3))
    call TriggerSleepAction( 1.20 )
    call UnitDamageTarget(caster,target,200,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
    call SetUnitAnimation(target, "death" )
    call TriggerSleepAction( 0.35 )
    call SetUnitPathing(caster, true )
    call SetUnitInvulnerable(caster, false )
    call PauseUnit(caster,false)
    call PauseUnit(target,false)
   set caster=null
   set target=null
endfunction

//===========================================================================
function InitTrig_Sword_Attack takes nothing returns nothing
    local integer index=0
    set gg_trg_Sword_Attack = CreateTrigger(  )
        loop
            call TriggerRegisterPlayerUnitEvent(gg_trg_Sword_Attack, Player(index),EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
            set index = index + 1
            exitwhen index == 15
        endloop
    call TriggerAddCondition( gg_trg_Sword_Attack, Condition( function Trig_Sword_Attack_Conditions ) )
    call TriggerAddAction( gg_trg_Sword_Attack, function Trig_Sword_Attack_Actions )
endfunction
Gnusik, дай дами юнитам из цепи пассивную способность москиты,тогда у них не будет хп бара
6
nvc123:
Gnusik,твой спел был не муи,я сделал его муи
когда ты используешь полярные координаты то ты создаёшь точку и не удаляешь её,если использовать их очень часто то их станет очень много и будут лаги
PauseUnit
кат
struct sword_sp
unit caster
unit target
endstruct

function TimerStartEx takes timer whichTimer, real period, code handlerFunc, integer userData returns nothing
    call TimerStart(whichTimer, I2R(userData), false, null) // timer exploit, xgm 2007
    call PauseTimer(whichTimer)
    call TimerStart(whichTimer, period,false, handlerFunc ) // start timer
endfunction

function TimerGetUserData takes timer whichTimer returns integer
    return R2I(TimerGetRemaining(whichTimer )+0.5) // get user data from timer
endfunction

function Sword_Attack_Action takes nothing returns nothing
   local timer a=GetExpiredTimer()
   local sword_sp b=TimerGetUserData(a)
   local unit caster=b.caster
   local unit target=b.target
   local real facing=GetUnitFacing(target)*bj_DEGTORAD
   local real sin=Sin(facing)
   local real cos=Cos(facing)
   local real x1=GetUnitX(target)
   local real y1=GetUnitY(target)
   local real x2=GetUnitX(caster)
   local real y2=GetUnitY(caster)
   local real x3=x1+GetRandomReal(-80,80)
   local real y3=y1+GetRandomReal(-80,80)
    call SetUnitX(caster,x3)
    call SetUnitY(caster,y3)
    call SetUnitFacing(caster,bj_RADTODEG * Atan2(y1-y3,x1-x3))
    call UnitDamageTarget(caster,target,5,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
    call SetUnitAnimation(caster, "attack" )
    call SetUnitAnimation(target, "death" )
   set caster=null 
   set target=null
    call TimerStartEx(a,.06,function Sword_Attack_Action,b)
endfunction

function Trig_Sword_Attack_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A000'
endfunction

function Trig_Sword_Attack_Actions takes nothing returns nothing
   local unit caster=GetSpellAbilityUnit()
   local unit target=GetSpellTargetUnit()
   local real x1
   local real y1
   local real x2
   local real y2
   local real dx
   local real dy
   local real cos
   local real sin
   local real facing
   local real x3
   local real y3
   local timer a=CreateTimer()
   local sword_sp b=sword_sp.create()
    call PauseUnit(caster,true)
    call PauseUnit(target,true)
    call SetUnitInvulnerable(caster, true )
    call SetUnitPathing(caster, false )
    set b.caster=caster
    set b.target=target
    call TimerStartEx(a,.06,function Sword_Attack_Action,b)
    call TriggerSleepAction( 2.50 )
    call PauseTimer(a)
    call DestroyTimer(a)
    set b.caster=null
    set b.target=null
    call b.destroy()
    set facing=GetUnitFacing(target)*bj_DEGTORAD
    set sin=Sin(facing)
    set cos=Cos(facing)
    set x1=GetUnitX(target)
    set y1=GetUnitY(target)
    set x2=GetUnitX(caster)
    set y2=GetUnitY(caster)
    set x3=x1+cos*165
    set y3=y1+sin*165
    set dx=x1+cos*256
    set dy=y1+sin*256
    call SetUnitX(caster,x3)
    call SetUnitY(caster,y3)
    call SetUnitFacing(caster,bj_RADTODEG * Atan2(dy-y3,dx-x3))
    call TriggerSleepAction( 1.20 )
    call UnitDamageTarget(caster,target,200,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
    call SetUnitAnimation(target, "death" )
    call TriggerSleepAction( 0.35 )
    call SetUnitPathing(caster, true )
    call SetUnitInvulnerable(caster, false )
    call PauseUnit(caster,false)
    call PauseUnit(target,false)
   set caster=null
   set target=null
endfunction

//===========================================================================
function InitTrig_Sword_Attack takes nothing returns nothing
    local integer index=0
    set gg_trg_Sword_Attack = CreateTrigger(  )
        loop
            call TriggerRegisterPlayerUnitEvent(gg_trg_Sword_Attack, Player(index),EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
            set index = index + 1
            exitwhen index == 15
        endloop
    call TriggerAddCondition( gg_trg_Sword_Attack, Condition( function Trig_Sword_Attack_Conditions ) )
    call TriggerAddAction( gg_trg_Sword_Attack, function Trig_Sword_Attack_Actions )
endfunction
Gnusik, дай дами юнитам из цепи пассивную способность москиты,тогда у них не будет хп бара
а что это под катом.В смысле какой скилл?или это просто действия хеш таймера?
А на счет точек то я делаю RemoveLocation.
И ещё ты говорил в прошлом ресурсе кинуть наработку ещё 1.Я её ещё не доделал.
28
это твой 1 скил
создаётся новая точка,а старая не удаляется,таким образом у тебя получается лишняя точка которая тебе не нужна
в том что я кинул нету хэша
то есть твой 1 скил ужасно не оптимален(остальные не смотрел мне и его хватило),а я скинул тебе его исправленную версию
глобалки там где должны быть локалки и прочее
6
nvc123:
это твой 1 скил
создаётся новая точка,а старая не удаляется,таким образом у тебя получается лишняя точка которая тебе не нужна
в том что я кинул нету хэша
то есть твой 1 скил ужасно не оптимален(остальные не смотрел мне и его хватило),а я скинул тебе его исправленную версию
глобалки там где должны быть локалки и прочее
спасибо.У меня проблема если я ставлю PauseUnit без приставки BJ то идет ошибка.Может это из за того что я локалки не ставлю?
И да ещё я скопировал и вставил код но триггер блокируется и выдаются ошибки
28
эм, а джнгп скачать слабо?
и в паузеюнит местами поменяй юнит и булеан
там тупо скопировать вставить не получится ибо событие не прочитается,используй библиотеку или событие сам пиши
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.