18

» WarCraft 3 / Как сделать Ночных Эльфов невидимыми? (Полность)

Постоянная невидимость 'Apiv'
Убираешь галочку с "Автонахождение целей для атаки"
Наступает утро - убираешь у всех эльфов её
Наступает ночь - добавляешь всем эльфам её
18

» WarCraft 3 / Помогите c триггером :c

PyCCKuu_4eJl ой, я там забыл в действиях триггера указать на функцию с таймерами, уже исправил
18

» WarCraft 3 / Помогите c триггером :c

Примерно так получилось
function Trig_CW_Cast_Actions takes nothing returns nothing
    local unit u    = LoadUnitHandle( какая_нибудь_хештаблица, GetHandleId(GetExpiredTimer()), 0 )
    local real x1   = GetUnitX( u ) //координаты кастера
    local real y1   = GetUnitY( u )
    local real from = 800
    local real a    = GetUnitFacing( u ) //угол поворота юнита
    //local real S = 90 //Ширина угла
    //local real angle = S/2 //Половина ширины угла

    set udg_Angle = a
    set udg_Caster = u
    //set udg_X = angle

    call BJDebugMsg("Угол поворота при касте: "+ R2S(a))

    call GroupEnumUnitsInRange(bj_lastCreatedGroup,x1,y1,from, Condition(function TZZ))
    //call ForGroup( bj_lastCreatedGroup, function TZZ )
    call GroupClear(bj_lastCreatedGroup)
    
    set u = null
endfunction

function TimerOff takes nothing returns nothing
    local timer t  = GetExpiredTimer()
    local timer t2 = LoadTimerHandle( какая_нибудь_хештаблица, GetHandleId(t), 0 )
    
    call FlushChildHashtable( какая_нибудь_хештаблица, GetHandleId(t)  )
    call FlushChildHashtable( какая_нибудь_хештаблица, GetHandleId(t2) )
    call DestroyTimer( t  )
    call DestroyTimer( t2 )
    
    set t  = null
    set t2 = null
endfunction

function Timer takes nothing returns nothing
    local timer t  = CreateTimer()
    local timer t2 = CreateTimer()
    local unit  u  = GetTriggerUnit()
    
    call SaveUnitHandle( какая_нибудь_хештаблица, GetHandleId( t ), 0, u )
    call TimerStart( t, /*Периодичность*/0.04, true, Trig_CW_Cast_Actions )
    
    call SaveTimerHandle( какая_нибудь_хештаблица, GetHandleId(t2), 0, t )
    call TimerStart( t2, /*Время которое будет работать таймер*/36, false, TimerOff )
    
    set t  = null
    set t2 = null
    set u  = null
endfunction

//===========================================================================
function InitTrig_Cast takes nothing returns nothing
    set gg_trg_Cast = CreateTrigger(  )
    set bj_lastCreatedGroup = CreateGroup()
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Cast, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Cast, Condition( function Trig_CW_Cast_Conditions ) )
    call TriggerAddAction( gg_trg_Cast, function Timer )
endfunction
18

» WarCraft 3 / Помогите c триггером :c

PyCCKuu_4eJl:
UrsaBoss, Т.е. мы делаем EVENT_PLAYER_UNIT_SPELL_EFFECT, оно срабатывает несколько раз(36), и после этого выключается
UrsaBoss, Кажется я понял...
Озарениеееее....
блин, а я тут дописываю штуку чтобы в течении 36 секунд с любой периодичность вызывалось Trig_CW_Cast_Actions и юзало того самого кастера
Так мне доделывать или нет?
18

» WarCraft 3 / Помогите c триггером :c

PyCCKuu_4eJl т.е тебе нужно чтобы постоянно работало это, а не при срабатывании EVENT_PLAYER_UNIT_SPELL_EFFECT?
18

» WarCraft 3 / Лава

Fakov:
Я и не отрицаю этого)
некоторые вещи просто моветон на гуе делать.
судя из всего этого "диалога" я понял что всегда будут гуишники и всегда будут вопросы "как сделать это" и "как сделать то"
И какое же от этого удовольствие? Постоянно задавать глупые вопросы вместо того чтобы посидеть 5 мин и решить их самому
18

» WarCraft 3 / Помогите c триггером :c

PyCCKuu_4eJl т.е нужно просто вызывать TZZ периодическим таймером, а вместо FilterUnit - юнита которого ты укажешь перед запуском таймера?
18

» WarCraft 3 / Помогите c триггером :c

Не совсем понял вопрос
Где будет периодический таймер и что он должен будет делать?
18

» WarCraft 3 / Лава

Fakov практика практика и ещё раз практика, мне уже jass удобнее в сто раз чем GUI
Это вы просто jass учить не хотите.
Намного быстрее будет напечатать две-три строки, чем нажимать на эти раздражающие менюшки в GUI
18

» WarCraft 3 / Лава

sleep мне вот интересно, почему аж два дизлайка поймал в том посте о тупости BJ функций? Я же сказал как есть и это чистая правда.
И почему зашла речь о популярности варкрафта благодаря GUI?
Я вообще говорил о утечности GUI, а ты мне начал о том чем был GUI раньше
Если ты магией называешь смену ника по команде -name, то я бы назвал тебя "нубом" если был бы груб.
Все годные проекты и наработки написаны на jass
И судя по скрину с тем триггером, ты даже не представляешь как это всё можно было бы упростить на jass, тем более ты не знаком с утечками и точками.
Под конец скажу:
Популярность мапмейкинга в редакторе триггеров стала благодаря возможностям jass и его удобности.
А иначе как ты себе представляешь (к примеру) доту на GUI?
18

» WarCraft 3 / Лава

Fakov:
гуй обеспечил низкий порог вхождения в мапмейкинг, а джасс придал этому мапмейкингу качества. Имхо.
блин ну че вы все читать не умеете чтоли? Я не отрицаю факт что с GUI всё начиналось. Я отрицаю то, что из за гуи стал популярен мапмейкинг.
Т.к тогда большую роль в популярности мапмейкинга сыграл редактор объектов и редактор ландшафта, мапмейкинг это не только jass.
18

» WarCraft 3 / Лава

sleep:
Говнооокод ковнокод ковнокоооод, не отчистить от утечек код, даже если jassом обдать, все-равно продолжает утекаааать
Кстати, я что-то нахимичил и теперь у меня варкрафт и джнгп не запускается.
щас бы спорить о полезности GUI, открой blizzard.j и сам убедись в этом, чую мне не переубедить тебя насчет GUI
PT153 может и начиналось, но гуи никак не делал варкрафт популярным
18

» WarCraft 3 / Mdlvis не работает с анимацией и blp файлами.

Doopsoldeir:
Нету говорю же, даже скирин скинул, и да там не game.dll нужен а чето ijjil.dll я точно не помню уже -_-
установи 1.26 варкрафт
18

» WarCraft 3 / Лава

sleep:
UrsaBoss, благодаря гую варик и стал популярен, иначе никто не создал бы эти тысячи карт и не стал бы углублять в жасс
ты сейчас это просто из воздуха придумал чтобы "защитить GUI"?
Во первых варкрафт не из за GUI стал популярен
Во вторых я не говорил что GUI плох для новичков, я говорил что GUI не годен для средних/сложных наработок и там половина функций - просто туповаты
18

» WarCraft 3 / Mdlvis не работает с анимацией и blp файлами.

Doopsoldeir:
Ну где добрый человек скажи мне
у тебя разве нету в папке варкрафта storm и game dll?
18

» WarCraft 3 / Mdlvis не работает с анимацией и blp файлами.

Аддон для блендера для импорта и экспорта mdl, там ничего сложного нету
Чтобы в MDLVis не тряслось всё - нужно использовать этот фикс
И все нужные для MDLVis .dll лежат в папке варкрафта
18

» WarCraft 3 / Лава

sleep:
Как видишь, можно и на гуе с переменным успехом
Больше половины BJ функций ужасно тупые
Например:
В гуи чтобы создать юнита, надо вызвать CreateNUnitsAtLoc
Некоторые даже не знают что при этом создается группа, а ещё попутно вызываются 2 ненужные функции
function CreateNUnitsAtLoc takes integer count, integer unitId, player whichPlayer, location loc, real face returns group
    set bj_lastCreatedGroup = CreateGroup()
    loop
        set count = count - 1
        exitwhen count < 0
        call CreateUnitAtLocSaveLast(whichPlayer, unitId, loc, face)
        call GroupAddUnit(bj_lastCreatedGroup, bj_lastCreatedUnit)
    endloop
    return bj_lastCreatedGroup
endfunction
Или вот ещё пример тупой BJ функции:
function GetHandleIdBJ takes handle h returns integer
    return GetHandleId(h)
endfunction
И таких примеров дофига
Вывод:
GUI - зло!
18

» WarCraft 3 / Лава

Fakov:
Убивал юнита в своем felwood escape при входе на яд.
помоему без джасса все это делал, примерно как в реализации sleepa. И без лагов. Но надо будет уточниться еще.
все что сделано на гуи можно упростить в два/три раза в плане нагрузки и заодно утечки все исправить.
18

» WarCraft 3 / Лава

SomnusUltima:
и это фигня, в ххф в секунду во много раз больше утечек и лаги начинаются спустя полчаса где-то, ну это в старой непоправленной так было
я имел в виду его триггер фигня
sleep такие вещи делаются только на jass
18

» WarCraft 3 / Лава

sleep:
А вот моя реализация на стандарте:
фигня) Утечка по 2 точки и ещё каждые 0.30 секунд. Жди лагов через 5-10 мин игры)
18

» WarCraft 3 / Утечка в функции

KalaKoltes:
Раньше группа стояла глобальная, но триггер не работал, как нужно. Нужно ли в таком случае передавать ей значение этой переменной, чтобы её использовать?
А какая разница, просто объявляешь глобальную переменную g и создаешь группу, далее где угодно используй и утечки не будет. Это если нужно использовать группу моментально и забыть о ней