Добавлен , не публикуется
Переделанная версия моей прошлой наработки.
Изменения:Все сделано на Jass.Переделана пассивная способность.Добавлена новая способность.Оптимизированы некоторые утечки.Убрано GUI.Исправлены недочёты с иконками.Теперь карта открывается у всех и без JNGP.Вес карты уменьшен.
Описание способностей:
1)Резка клинками:Герой производит серию ударов по врагу с разных точек нанося незначительный урон,после чего мгновенно разрезает его со спины нанеся огромный урон.
2)Быстрые атаки:Герой перемещается в случайные точки в радиусе 650 от начала способности нанося урон попадающимся рядом противникам.
3)Искуство Ассасина:Герой имеющий эту способность становится невидимым.При атаке он наносит серию ударов по врагу нанося урон.Через 4 секунды после атаки герой вновь становится невидимым.
4)Цепь:Герой крутит цепь вокруг себя.Каждые 0.02 секунды цепь наносит 20 урона.Количество сцепленных частей 12.Расстояние между частями 75.Длина цепи 1200.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
12
11 лет назад
0
публикуйте, нормально сделано, человек старался.
0
6
11 лет назад
0
maxbox:
публикуйте, нормально сделано, человек старался.
Спасибо,думаю опубликуют.Все требования выполнены.Разве 3-4 утечки не устранил.Но они не проблемные.
0
25
11 лет назад
Отредактирован JesusHipster
0
У иконок все еще нету DISBTN и... рамок. Все иконки выглядят так, словно они пассивные. Скиллы перепутаны местами. У цепи есть полоски хп. Я не кодер, но этого уже достаточно.
Еще новая пассивка, какая-то неюзабельная. Старая была оригинальной и интересной, а это просто спам. Это всего-лишь мое мнение, а не наставление. Все-таки я не кодер. С этим разберется другой чувак.
0
28
11 лет назад
0
Gnusik, утечек очень много
например функция полярных координат вызывает утечки
используй геометрию(7 класс по моему)
так же ненужные бж например PauseUnitBJ
используешь глобалки там где надо локалки
и не надо делать новый ресурс,можно просто обновить старый
в принципе оптимизировал только условия что неплохо
но зачем делать кучу триггеров которые кроме того изначально неактивны я не понимаю,ведь можно просто по триггеру на способность а так получилось не оптимально
0
6
11 лет назад
Отредактирован Gnusik
0
JesusHipster:
У иконок все еще нету DISBTN и... рамок. Все иконки выглядят так, словно они пассивные. Скиллы перепутаны местами. У цепи есть полоски хп. Я не кодер, но этого уже достаточно.
Еще новая пассивка, какая-то неюзабельная. Старая была оригинальной и интересной, а это просто спам. Это всего-лишь мое мнение, а не наставление. Все-таки я не кодер. С этим разберется другой чувак.
На счет цепи.Полоски жизни не могу удалить т.к. цепь состоит из Dummy.Сейчас мне нужно отыскать модель самой части цепи.Тогда я удалю модель из дамми и сделаю просто спецэффект.Старая пассивка была утечной и я её удалил.Но думаю могу её оптимизировать.DISBTN иконки у меня есть но я их не импортировал.Сегодня я перезалью карту и исправлю все что нужно.
nvc123:
Gnusik, утечек очень много
например функция полярных координат вызывает утечки
используй геометрию(7 класс по моему)
так же ненужные бж например PauseUnitBJ
используешь глобалки там где надо локалки
и не надо делать новый ресурс,можно просто обновить старый
в принципе оптимизировал только условия что неплохо
но зачем делать кучу триггеров которые кроме того изначально неактивны я не понимаю,ведь можно просто по триггеру на способность а так получилось не оптимально
Насчет геометрии за 7 класс.Даже не знаю.Можно попробовать вспомнить.Теперь "PauseUnitBJ".А что надо ставить вместо этого?Насчет "для каждой способности по 1 триггеру"-я не знаю как это сделать.В статьях которые читал не видел такого.Просто когда делаешь да GUI нужно иногда 2 а то и 3 триггера.Ну я попробую сделать получше.Только скажи как делать все в 1 триггере.
0
28
11 лет назад
0
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, дай дами юнитам из цепи пассивную способность москиты,тогда у них не будет хп бара
0
6
11 лет назад
Отредактирован Gnusik
0
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.Я её ещё не доделал.
0
28
11 лет назад
0
это твой 1 скил
создаётся новая точка,а старая не удаляется,таким образом у тебя получается лишняя точка которая тебе не нужна
в том что я кинул нету хэша
то есть твой 1 скил ужасно не оптимален(остальные не смотрел мне и его хватило),а я скинул тебе его исправленную версию
глобалки там где должны быть локалки и прочее
0
6
11 лет назад
0
nvc123:
это твой 1 скил
создаётся новая точка,а старая не удаляется,таким образом у тебя получается лишняя точка которая тебе не нужна
в том что я кинул нету хэша
то есть твой 1 скил ужасно не оптимален(остальные не смотрел мне и его хватило),а я скинул тебе его исправленную версию
глобалки там где должны быть локалки и прочее
спасибо.У меня проблема если я ставлю PauseUnit без приставки BJ то идет ошибка.Может это из за того что я локалки не ставлю?
И да ещё я скопировал и вставил код но триггер блокируется и выдаются ошибки
0
28
11 лет назад
Отредактирован nvc123
0
эм, а джнгп скачать слабо?
и в паузеюнит местами поменяй юнит и булеан
там тупо скопировать вставить не получится ибо событие не прочитается,используй библиотеку или событие сам пиши
0
6
11 лет назад
0
nvc123:
эм, а джнгп скачать слабо?
и в паузеюнит местами поменяй юнит и булеан
там тупо скопировать вставить не получится ибо событие не прочитается,используй библиотеку или событие сам пиши
JNGP у меня есть,я нашел проблему почему не работало.Я в JNGP забыл убрать функцию авто создания глобалок. Как то так.
А про событие не знал спасибо.
0
28
11 лет назад
Отредактирован nvc123
0
Gnusik, напиши когда утечки уберёшь
0
6
11 лет назад
Отредактирован Gnusik
0
nvc123:
Gnusik, напиши когда утечки уберёшь
будет трудновато,джнгп гонит.Буду без него.А зачем тебе?
0
28
11 лет назад
0
Gnusik, просто интересно
0
6
11 лет назад
Отредактирован Gnusik
0
Да и вот ещё что,ты мне скилл который скидывал.Я событие сам написал но все равно ошибок много.Например:
>>код
struct sword_sp
unit caster
unit target
endstruct
<<
Пишет отсутствует конец строки.
И вот ещё что.В локалки как занести точку?
Блин без JNGP тяжеловато устранять BJ,я даже не знаю что чем менять
Я напишу когда карту перезалью.
0
28
11 лет назад
0
struct sword_sp
unit caster
unit target
endstruct
это только в джнгп работает
а чем тебе джнгп не нравится?
точки не юзай
юзай координаты
0
6
11 лет назад
Отредактирован Gnusik
0
nvc123:
struct sword_sp
unit caster
unit target
endstruct
это только в джнгп работает
а чем тебе джнгп не нравится?
точки не юзай
юзай координаты
JNGP мне нравится но он у меня чет погнал.Надо новый скачать.
Все я перезалил карту.
1
28
11 лет назад
1
function Trig_Sword_Attack_Actions takes nothing returns nothing
    set udg_caster = GetSpellAbilityUnit()
    set udg_cell_cast = GetSpellTargetUnit()
    call PauseUnitBJ( true, udg_caster )
    call PauseUnitBJ( true, udg_cell_cast )
    call SetUnitTimeScalePercent( udg_caster, 160.00 )
    call SetUnitTimeScalePercent( udg_cell_cast, 160.00 )
    call EnableTrigger( gg_trg_Sword_Attack_2 )
    call TriggerSleepAction( 2.00 )
    call DisableTrigger( gg_trg_Sword_Attack_2 )
    call PauseUnitBJ( false, udg_caster )
    call PauseUnitBJ( false, udg_cell_cast )
    call SetUnitPathing( udg_caster, true )
    call SetUnitPathing( udg_cell_cast, true )
endfunction
бж
глобалки вместо локалок
не муи
ты вобще понимаешь что не муи спелы ненужны некому
короче попробуй юзать локалки и сделать спелы муи а потом обнови
0
20
11 лет назад
0
за впаривание структур человеку,который делает на гуи - буду стрелять в следующий раз
по теме - нужно,чтобы способности были муи - чтобы можно было применять одновременно несколькими юнитами по разным целям,утечек быть не должно,оформление должно быть адекватным,без зеленых иконок,описание скилов должно быть хорошим
ну и на карте не должно быть лишнего мусора никакого,никаких "экспериментов автора с моделями декора"
1
28
11 лет назад
Отредактирован nvc123
1
Nerevar, он делает на джасс,это есть в описание ресурса
а структуры я предложил как более удобный вариант чем хэш
0
6
11 лет назад
Отредактирован Gnusik
0
nvc123:
Nerevar, он делает на джасс,это есть в описание ресурса
а структуры я предложил как более удобный вариант чем хэш
Я избавился от некоторых утечек но не могу понять как избавиться от полярных координат.
И ещё как юзать локалки в одном триггере?
И плз скажи чем заменить UnitDamageTargetBJ
0
28
11 лет назад
0
локалки в пределах функции
в джнгп смотри чем заменять
UnitDamageTarget
0
6
11 лет назад
0
Я перезалил карту.Все что мог сделал(утечки,оптимизация и т.д.)
0
28
11 лет назад
0
function Trig_Sword_Attack_Actions takes nothing returns nothing
    set udg_caster = GetSpellAbilityUnit()
    set udg_cell_cast = GetSpellTargetUnit()
    call PauseUnit( udg_caster, true )
    call PauseUnit( udg_cell_cast, true )
    call SetUnitTimeScalePercent( udg_caster, 160.00 )
    call SetUnitTimeScalePercent( udg_cell_cast, 160.00 )
    call EnableTrigger( gg_trg_Sword_Attack_2 )
    call TriggerSleepAction( 2.00 )
    call DisableTrigger( gg_trg_Sword_Attack_2 )
    call PauseUnit( udg_caster, false )
    call PauseUnit( udg_cell_cast, false )
    call SetUnitPathing( udg_caster, true )
    call SetUnitPathing( udg_cell_cast, true )
endfunction
    call SetUnitTimeScalePercent( udg_caster, 160.00 )
    call SetUnitTimeScalePercent( udg_cell_cast, 160.00 )
бж это
локалки до сих пор не вижу
0
6
11 лет назад
Отредактирован Gnusik
0
nvc123:
function Trig_Sword_Attack_Actions takes nothing returns nothing
    set udg_caster = GetSpellAbilityUnit()
    set udg_cell_cast = GetSpellTargetUnit()
    call PauseUnit( udg_caster, true )
    call PauseUnit( udg_cell_cast, true )
    call SetUnitTimeScalePercent( udg_caster, 160.00 )
    call SetUnitTimeScalePercent( udg_cell_cast, 160.00 )
    call EnableTrigger( gg_trg_Sword_Attack_2 )
    call TriggerSleepAction( 2.00 )
    call DisableTrigger( gg_trg_Sword_Attack_2 )
    call PauseUnit( udg_caster, false )
    call PauseUnit( udg_cell_cast, false )
    call SetUnitPathing( udg_caster, true )
    call SetUnitPathing( udg_cell_cast, true )
endfunction
    call SetUnitTimeScalePercent( udg_caster, 160.00 )
    call SetUnitTimeScalePercent( udg_cell_cast, 160.00 )
бж это
локалки до сих пор не вижу
Я же говорил все что мог исправил.А JNGP гонит и все триггеры блокирует.
А локалки я же говорил что не могу в начале их ставить.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.