XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Sansaney
Что??
offline
Опыт: 20,876
Активность:
Определение времени стана
Как сделать спелл, на основе молота бурь и чего-нибудь похоже, чтобы время оглушения врага зависило, допустим, разума цели? Тригерно, желательно, но можно и джас.
Старый 18.12.2010, 21:47
Nekit1234007

offline
Опыт: 11,916
Активность:
Что сделал сам для реализации?
Старый 18.12.2010, 21:48
FKoFF
Venomancer 89lvl. Europe
offline
Опыт: 5,975
Активность:
возможно на основе стоуровневой абилы - но экстримально. Лучше уж сделать триггерный стун а отсутствие баффа мало кого волнует.
Старый 18.12.2010, 22:38
Sansaney
Что??
offline
Опыт: 20,876
Активность:
возможно на основе стоуровневой абилы - но экстримально.
Ого! Понял о чем ты. Не надо.
Лучше уж сделать триггерный стун а отсутствие баффа мало кого волнует.
Как ты предлагаешь?
Старый 18.12.2010, 22:44
Extremator

offline
Опыт: 39,555
Активность:
Цитата:
Сообщение от Sansaney
Ого! Понял о чем ты. Не надо.

Ну если брать по 0,25 сек за единицу, то стан до 10 сек будет всего в 40 уровней... это не так уж и много... поверь... я видел скиллы до 4000 уровней... Оо ...вот это был ужас
Старый 18.12.2010, 23:17
FouTER

offline
Опыт: 60
Активность:
Не уверен что это лучший вариант но думаю что нужно кастовать длинный стан с помощью дамми а нужный момент его снимать с помощью Unit - Remove Specific Buff . Т.к. тут время то юнита всеравно придется записывать в локалку тоесть джасс, но можно сделать с custom script . Думаю могу пример сделать
Старый 18.12.2010, 23:28
Klop
Папа римский
offline
Опыт: 13,006
Активность:
даёш у спелла 0 сек стана(он будет бесконечный)
и удалять бафф по истечению таймера равному 0.1*разум героя к примеру
Старый 18.12.2010, 23:38
FouTER

offline
Опыт: 60
Активность:
ну так всеравно нужна будет локалка как я и сказал
Старый 18.12.2010, 23:39
Klop
Папа римский
offline
Опыт: 13,006
Активность:
function SpellEnd takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit u = LoadUnitHandle(hash,GetHandleId(t),1)
call RemoveBuff(u,'B000') //Не помню функцию удаления
call FlushChildHashtable(hash,GetHandleId(t))
call DestroyTimer(t)
set u = null
set t = null
endfunction

function SpellCast takes nothing returns nothing
local timer t = CreateTimer()
call SaveUnitHandle(hash,GetHandleId(t),1,GetSpellTargetUnit())
call TimerStart(t,0.1*GetHeroInt(GetTriggerUnit()),false,function SpellEnd)
set t = null
endfunction
код писал от руки не проверял
Старый 18.12.2010, 23:50
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
Klop, ты еще забыл RemoveClassification Stunned
как то так вроде.
В Библиотеке есть парочка спеллов с "управляемым" станом.
Старый 19.12.2010, 00:06
AdMiRaLLO_O
Прежний статус враньё
offline
Опыт: 3,298
Активность:
мб дать паузу поставить эффект стана, подождать (много много умножить на инт врага), продолжить убрать эффект
Старый 19.12.2010, 12:47
Extremator

offline
Опыт: 39,555
Активность:
Sansaney, какое время стана ты расчитываешь? ну хоть примерно
Старый 19.12.2010, 13:13
J64_

offline
Опыт: 4,724
Активность:
Чисто триггерно можно через каждые 0.05 Setunitx(u,getunitx(u));setunity(u,getunity(u)); и подсчитывать время, если оно больше нужной то заканчиваем действие. Такая система была в хайве.
Старый 23.12.2010, 06:03
Sansaney
Что??
offline
Опыт: 20,876
Активность:
AdamanTX, при таком варианте, который ты сказал, будет происходит утечка памяти.
AdMiRaLLO_O, ну да, похоже самый реальный способ, хотя это будет действовать лишь если спелл есть только у одного.
... Хотя если локальными переменными...
Старый 24.12.2010, 14:26
agentex

offline
Опыт: 34,834
Активность:
ставить стан на 3600 сек и управлять самостоятельно таймером как правильно написал Klop, только нужно еще классификацию удалять.
Старый 24.12.2010, 14:47
Faam
Порядочный юзер
offline
Опыт: 3,066
Активность:
даеш цели тригерно баф стана на 9999 секунд и убираеш через разум/5 секунд к примеру
Старый 25.12.2010, 20:02
Sansaney
Что??
offline
Опыт: 20,876
Активность:
Сам по себе баф ничего не дает. Только графику.
На даже если с паузой, то при условии лишь, что юнит-цель один (см. выше)
Старый 25.12.2010, 20:05
agentex

offline
Опыт: 34,834
Активность:
повторюсь. единственно правильное решение в посте 9, а вот более точный код
function SpellEnd takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit u = LoadUnitHandle(hash,GetHandleId(t),1)
call UnitRemoveAbility(u,'B000')
call UnitRemoveType(u, UNIT_TYPE_STUNNED)
call FlushChildHashtable(hash,GetHandleId(t))
call DestroyTimer(t)
set u = null
set t = null
endfunction

function SpellCast takes nothing returns nothing
local timer t = CreateTimer()
call SaveUnitHandle(hash,GetHandleId(t),1,GetSpellTargetUnit())
call TimerStart(t,0.1*GetHeroInt(GetTriggerUnit()),false,function SpellEnd)
set t = null
endfunction
Старый 25.12.2010, 20:30
J64_

offline
Опыт: 4,724
Активность:
Sansaney, где утечка? Ибо native функции имеют утечки?

Отредактировано AdamanTX, 26.12.2010 в 09:00.
Старый 26.12.2010, 08:39
Sumert

offline
Опыт: 1,300
Активность:
А может лучше сделать стан, используя лишь триггеры? То бишь сделать паузу для юнита. А по истечению тайммера, снимать паузу. С бафами не надо маятся при этом. Ну, если хочется, бафф-пустышку можно всунуть без проблем.
Старый 26.12.2010, 08:49
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 03:22.