13

» WarCraft 3 / Как добавить морфу способность и установить соответствующий лвл

PT153:
Тебе нужно событие "Заканчивает применять способность".
А также есть опция сделать способность постоянной, которая позволяет способности оставаться после превращения. Она есть только в GUI JNGP.
На JASS.
call UnitMakeAbilityPermanent(unit, true, abil_rawcode)

"Ничего не делать" бесполезное действие, оно было нужно в RoC. Лучше его не писать.
Пробовал, не получается, мне кажется проблема в условии, т.е он сравнивает уровень способности по логике не у оригинала, а у морфа, следовательно не выдает способность, а вот как в условии указать именно оригинала, т.е его нужно отследить и как то занести в память, только как...
13

» WarCraft 3 / Как вращать юнитов по кругу на GUI или через Jass скрипт

8gabriel8:
Так мне казалось, что тебе нескольких юнитов нужно вокруг разных точек вращать.
Короче, вот так надо:
Запамятовал опять, что классификация Страж триггерно не даётся.
Только лучше было бы пешим воинам менять высоту и поднять в воздух, дав и забрав способность Превращения в Сфинкса.
Во, это я и хотел узнать, довольно сложная формула спасибо)
Да к стати я так тоже не нашел как страж выдавать
А как сделать что бы юниты могли выйти из под действия торнадо? через баф?
13

» WarCraft 3 / Как вращать юнитов по кругу на GUI или через Jass скрипт

quq_CCCP:
Эмм, чем стандартный торнадо не устраивает? И если чо это не вращение Юнита, а аттач эффекта к модели торнадо.
там юнит вращается вокруг себя если я не ошибаюсь, а нужно что бы группа юнитов вращалась вокруг оси торнадо
13

» WarCraft 3 / Не поднимается\не опускается триггерно юнит

Bergi_Bear:
на условие погляди
если высота полёта меньше или равно 0, => изменить высоту полёта на -10
оно не может сработать, так 800 уже стоит
ой сорри, это я не заметил :)
триггер срабатывает, юнит якобы движется, но визуально стоит на месте( никакой анимации падения не происходит)
Ясно, проблема в модели, да еще ошибку в редакторе выдает, удалил ее, че нибудь придумаю, а триггер все правильно работает
13

» WarCraft 3 / Морф

Ааа понял 8gabriel8:
Опять Приводит способность в действие при обратном морфе. Если не работает, то как делаешь?
забыл поставить тип применившего как написал quq_CCCP,
через проверку все работает, спасибо :D
13

» WarCraft 3 / Морф

quq_CCCP:
Razor_dex, приводит способность в дейстиве, проверяешь кто приминавший по type-id.
немного не то, у меня есть дружеский юнит, его надо прятать при морфе, а при обратном морфе нужно наоборот показывать, если приводит способность в действие он прячет, то как наоборот показать?
13

» WarCraft 3 / Помогите со спелом типа waveform морфа

LordDracula:
Razor_dex:
т.е я все правильно сделал удалить эту переменную?(для уточнения)
не, она, как я понял, должна уменьшиться, но один раз.
а как это сделать? за функцию триггер не будет работать, а количество декораций не подсчитаешь?
13

» WarCraft 3 / Помогите со спелом типа waveform морфа

LordDracula:
 Gatsuga_MUI = Gatsuga_MUI-1 
У тебя переменная уменьшается столько раз, сколько разрушаемых объектов есть в радиусе 100, а должна лишь 1 раз.
Вроде все получилось:)
т.е я все правильно сделал удалить эту переменную?(для уточнения)
quq_CCCP:
Блин я в этом рус гуи нихрена понять немогу, спелл примитив, если как в доте без изисков и по простому - опен дота, там он есть на ретурнбаге (изи меняется на хт).
в том то и дело нужно с доп. условиями на проходимость, что проще сделать самому :)
а ссылка на опендоту что то не работает(
13

» WarCraft 3 / Оптимизация GUI перменных в массивы

UrsaBoss:
Razor_dex, проблемные места тут - это триггеры с событием "Инициализация карты"
поищи на свой взгляд самый "тяжелый" и опиши что в нем происходит или можно скрин
т.к такие нагрузки в основном из за большого создания объектов (триггер как объект намного легче обычных юнитов и т.д)
поэтому кол-во триггеров не считается тут
Кажется ты был прав, я сейчас удалил все триггеры и переменные, а карта все равно долго грузит, скорее всего из-за РО, там 469 нестандартных объектов и 382 нестандартных способностей
DracoL1ch:
повторяю еще раз, количество переменных НИКАК не сказывается на скорости загрузки или работы, что 1000, что 30000
Значит сократив их в массив это дело удобства, но никак не оптимизации, спс за ответ :)
Исходя из этого надо просто снизить количество даммиков в РО
13

» WarCraft 3 / Оптимизация GUI перменных в массивы

UrsaBoss:
гуи инициализация вообще почти никак не увеличивает время загрузки, будь там хоть 500 триггеров
сама нагрузка именно от размера карты и загруженности редактора объектов

и уточни на каком моменте это "долго загружается"
когда полоска загрузки в начале или в середине-конце?
в середине немного, и под конец долго грузит
13

» WarCraft 3 / Оптимизация GUI перменных в массивы

KaneThaumaturge:
Не знаю что ты там придумал, но я тоже недавно перешёл с гуи. Триггеров было довольно много, но я обходился максимум 40-80 кол-вом переменных. Зачем для каждого триггера создавать новые переменные?
Скинь карту, посмотрю.
так вот в этом и вопрос мб в этом случае использовать массивы? переменные конечно проще создавать новые для каждого триггера пушто так удобнее знать какая и за что отвечает и в дальнейшем легче обращаться, но это возможно сильно нагружает карту. Да и зависит от объема карты, у меня к примеру стоит цель сделать ~200 персонажей, на каждого персонажа по 5-6 спелов в среднем, итого нужно сделать ~1к спелов(не считая систем), а это 5-6к переменных получается
13

» WarCraft 3 / Оптимизация GUI перменных в массивы

KaneThaumaturge:
Зачем тебе столько переменных?
Ну а как еще делать триггеры? 1 триггер(+5-6 переменных) Кодить на джассе я пока не умею :(
13

» WarCraft 3 / Как настроить или подобрать способность типа "огненное лассо"

LordDracula:
Razor_dex:
т.е из этого я так понял нужно делать канальный спел этого типа, пушто тут можно проверку просто добавить на мертвый он или неуязвимый, только не знаю как его настроить(
тогда да, придется триггерно сделать. ну можно просто сделать: неуязвимость по бафам проверять, если нет триггерной; живой ли юнит тоже несложно.
Это понятно))) я имею в виду как настроить в РО канал, что бы он также не обрывался, у меня он почему то работает как молот бурь, кастанет и прервется
13

» WarCraft 3 / Как настроить или подобрать способность типа "огненное лассо"

LordDracula:
У Сильваны(темной охотницы) есть спел, который выкачивает хп
тоже нужно поддерживать каст, как для лассо
Да, но тут я почитал, оказывается у него есть минусы, оно прервется если цель перестанет быть видимой
т.е из этого я так понял нужно делать канальный спел этого типа, пушто тут можно проверку просто добавить на мертвый он или неуязвимый, только не знаю как его настроить(
13

» WarCraft 3 / Способности и алгоритмы на заказ

Dorg:
Пожалуй достаточно легкое прошение, так сказать)
Название: Выстрел из плазмы
Метод: GUI
MUI: Не обязательно
Цель: Область
Количество уровней: 1
Описание:В целом, мне нужен выстрел хищника из киновселенной AVP. Подойдет переделанная способность ракетный удар у тинкера, то есть когда он выпускает ракетки и он в определенную область наносит урон. Единственное что не получается сделать, что перед выстрелом нужна задержка в 2 секунды, и во время этой задержки, на области, куда он стрелял, появлялся спецэффект(если нужно, скину какой), то есть чтобы противники могли увидеть что он заряжает этот выстрел и имели возможность убежать. Если еще и накинуть спецэффект и на самого кастующего(хищника), будет вообще здорово, но мне важнее чтобы именно на области куда будет произведен выстрел, эти 2 секунды происходил спецэффект. Если что непонятно написал, будьте добры, напишите об этом)
p.s. просто если без триггеров переделывать эту способность, эти спецэффекты появляются когда он уже выстреливает, а не во время этих 2 секунд.
Это изи, создай доп. триггер в нем событие "Герой начинает применять способность" и твои действия со спец.эффектами...,а в триггере самой способности должно стоять событие "Герой приводит способность в действие"
13

» WarCraft 3 / Как избежать других реакций при отлове урона?

Obelick:
И да, ваше "скорее всего" мне не нравится. Отлов урона может реагировать и на другие события. Используйте дебаг для отлова источника урона. Если действительно ловит пламя обреченности, то от куда тогда лаги? Спел наносит урон в секунду, а не с высокой периодичностью.
Ну, я сделал вывод исходя из того, что до этого 1 триггер был на событие "юнит атакован" он реагировал без лагов+ на те же корни он никак не конфликтует. На "юнит получает урон" сам триггер работает нормально и сжигает ману, но когда вешается баф пламени обреченности вся карта начинает жутко лагать. Дебагом никогда не пользовался хД, почитав статью не совсем понял как он определит какой триггер может конфликтовать с получением урона.
Попробую сейчас сделать это на чистой карте(без лишних триггеров) и отпишусь об результатах.
Bergi_Bear:
Ну вот он наш выход мемхакеры грязнокодеры
Одна проблема, я карту планирую делать на 24 игрока, а это патч 1.29 и выше, с мемхаком они вроде не дружат, поэтому стараюсь обходить его стороной хД

Проверил на чистой карте, тоже самое
мне кажется сам по себе скил "пламя обреченности" как то неадекватно реагирует на событие "получение урона", я это еще замечал раньше...

Проблему с лагами удалось решить заменой "пламени обреченности" на "безмолвие"
Но как сделать, что бы триггер не реагировал на посторонний урон от других скилов вопрос
Загруженные файлы
13

» WarCraft 3 / Как избежать других реакций при отлове урона?

Obelick:
Razor_dex, что мешает разделить сжигание маны и наложение эффекта в 2 разных ифа?
Т.е я правильно понял нужно поставить поверх условие, на наличие бафа, если есть баф сжигать ману не создавая эффекта, а если нет сжигать ману с эффектом?
13

» WarCraft 3 / Как избежать других реакций при отлове урона?

Obelick:
Проверяй наличие на цели бафа от пламени обреченности.
Это не совсем то, если поставить это условие, тогда мана перестанет сжигаться пока будет действовать баф по логике
13

» WarCraft 3 / Способности и алгоритмы на заказ

Заказ

Название: Byakugan
Метод: GUI/Jass/cJass/vJass
MUI: Обязательно
Цель: Нет цели
Количество уровней: 3
Описание: Способность на основе "Жара преисподней", При активации игроку видны все досягаемые герои(желательно с обзором на 100) в радиусе 2500(если не получится тогда хотя бы просто в этом же радиусе их помечать мерцанием на миникарте для кастуемого), ну и пока активирована техника кастуемый может сжигать ману = ловкостью кастера при атаке
с 2 уровня при атаке есть шанс навесить на врага сало типа "пламя обреченности"
а с 3 уровня при атаке есть шанс парализовать врага типа "гнев деревьев"
13

» WarCraft 3 / Не получается импортировать

Принятый ответ
LordDracula:
скинь скриншот ошибки
как посмотреть? у меня JNGP
ошибки он вроде не выдает, а просто при проверки карты выкидывает в меню варика
Даммики и Код скила все правильно указал..
globals
hashtable hasan = InitHashtable()
endglobals
function Hakke_Act takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local unit a = LoadUnitHandle(hasan,GetHandleId(t),1)
    local unit b = LoadUnitHandle(hasan,GetHandleId(t),2)    
    call SetUnitPosition(b,GetUnitX(b) + 40 * Cos(GetUnitFacing(a) * bj_DEGTORAD),GetUnitY(b) + 40* Sin(GetUnitFacing(a) * bj_DEGTORAD))    
    call UnitApplyTimedLife(CreateUnit(GetOwningPlayer(a), 'h0AR',GetUnitX(b),GetUnitY(b),90),'BTLF',3)
    call UnitApplyTimedLife(CreateUnit(GetOwningPlayer(a), 'h0AS',GetUnitX(b),GetUnitY(b),90),'BTLF',3)
    call DestroyEffect((AddSpecialEffect("Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl",GetUnitX(b),GetUnitY(b))))
    set a = null
    set b = null 
endfunction

function Hakke takes nothing returns nothing
    local unit a = GetSpellAbilityUnit()
    local unit b = GetSpellTargetUnit()
    local timer t = CreateTimer()
    call SaveUnitHandle(hasan,GetHandleId(t),1,a)
    call SaveUnitHandle(hasan,GetHandleId(t),2,b)
    call PauseUnit(a,true)
    call PauseUnit(b,true) 
    call SetUnitX(a,GetUnitX(b) - 150 * Cos(GetUnitFacing(a) * bj_DEGTORAD))
    call SetUnitY(a,GetUnitY(b) - 150 * Sin(GetUnitFacing(a) * bj_DEGTORAD))
    call SetUnitTimeScale(a, 50 * 0.01)
    call SetUnitAnimation(a,"Spell two")//sound
    call SetUnitTimeScale(a, 50 * 0.01)
    call TimerStart(t,0.05,true,function Hakke_Act)
    call UnitDamageTarget(a,b,2500,false,false,null,null,null)
    call UnitApplyTimedLife(CreateUnit(GetOwningPlayer(a), 'h0AQ',GetUnitX(a) + 250 * Cos(GetUnitFacing(a) * bj_DEGTORAD),GetUnitY(a) + 250 * Sin(GetUnitFacing(a) * bj_DEGTORAD),GetUnitFacing(a)-180),'BTLF',3)
    call TriggerSleepAction(0.60)
    call PauseTimer(t)
    call FlushChildHashtable(hasan,GetHandleId(t))
    call DestroyTimer(t)
    call SetUnitTimeScale(a, 100 * 0.01)
    call PauseUnit(b,false)
    call PauseUnit(a,false)
    set a = null
    set b = null
    set t = null
endfunction 

function Hakke_Cond takes nothing returns boolean
    return GetSpellAbilityId() == 'A098'
endfunction

//===========================================================================
function InitTrig_Hakke takes nothing returns nothing
    local trigger t = CreateTrigger()
    local integer index
    set index = 0
    loop
    call TriggerRegisterPlayerUnitEvent(t, Player(index), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
    set index = index + 1
    exitwhen index == 14
    endloop
    call TriggerAddCondition( t, Condition( function Hakke_Cond ) )
    call TriggerAddAction( t, function Hakke )
    set t = null
endfunction
Ааа, все понял, спс за ответ xgm.guru/p/wc3/222740?postid=414549#comment15
13

» WarCraft 3 / Как убрать отключение столкновения в коде?

Bergi_Bear:
Razor_dex, правильный ответ мой, даже с функцией готовой, воткни ее выше и используй как доп условие перед движением
Выдает ошибку, вместо х и у надо переменные подставлять? и тут библиотека нужна?
LordDracula:
Криво реализовано движение. У тебя смещение происходит сразу на 300 единиц, поэтому пролетаешь декорации, и потому, что функция SetUnitXY перемещает в точку беспрепятственно, игнорируя занимаемое юнитом пространство. Попробуй сделать так:
поменяй это
call SetUnitX(b,GetUnitX(b) + 300 * Cos(GetUnitFacing(a) * bj_DEGTORAD))
call SetUnitY(b,GetUnitY(b) + 300 * Sin(GetUnitFacing(a) * bj_DEGTORAD))
на это
call SetUnitPosition(b,GetUnitX(b) + 40 * Cos(GetUnitFacing(a) * bj_DEGTORAD),GetUnitY(b) + 40* Sin(GetUnitFacing(a) * bj_DEGTORAD))
ну и установи таймеру период срабатывания в 0.05 где-то.
call TimerStart(t,0.20,true,function Hakke_Act)
Спасибо, вот сейчас отлично стало
LordDracula:
Вообще, по-хорошему, надо бы переделать весь спел.
а что с ним не так?