32

» WarCraft 3 / по поводу паузы

Принятый ответ
Да, он живой и может сдохнуть.
Можно паузить, анпаузить кода вздумается.
При смерти с юнита снимается пауза и если это герой то он воскреснет без паузы.
32

» WarCraft 3 / по поводу паузы

PauseUnit - останавливает юнитов, в варкрвавте задуман для роликов чтобы, остановить сражения во время ролика, ну юниты друг друга не убили, не кончились баффы и прочее....
  1. Пауза отключает все пассивки юнита, к примеру у юнитов в паузе не работают промахи.
  2. Пауза не дает возможности использовать активные способности юнита.
  3. Пауза останавливает таймеры длительности и внутренние таймеры баффов, к примеру Омоложение будет лечить юнита гораздо дольше, если его запаузить.
32

» WarCraft 3 / Граница иконок

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

» WarCraft 3 / Из за триггера не запускается карта

GoJustGo:
quq_CCCP, это cJass тут они не обязательны.
Что то я там cJass не увидел...
       function onInit() {
        trigger t = CreateTrigger();
       
        TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_EFFECT);
        TriggerAddCondition(t, Condition(function() -> boolean {
            integer abillvl;
            cfdata cf;
           
            // ----------------------------------------------------------------
            // *** condition ****
            if (GetSpellAbilityId() !=  CHAIN_FROST && GetSpellAbilityId() !=  CHAIN_FROST_UPGRADED)
                return false;
            // ----------------------------------------------------------------
               
            abillvl = GetUnitAbilityLevel(GetTriggerUnit(), GetSpellAbilityId());
            if (GetSpellAbilityId() ==  CHAIN_FROST_UPGRADED) abillvl += 1;
           
            // *** store data ***
            cf = cfdata.create(GetTriggerUnit(), GetSpellTargetUnit(), abillvl);
            cf.NewMissile(cf.caster);
            debug if (!IsUnitInRangeXY(cf.caster, cf.missile.X, cf.missile.Y, 100.) && !CHECK_MISSILE_POSITION)
                BJDebugMsg("|cffff0000Error:|rChain Frost missile not created at caster position, please enable \"CHECK_MISSILE_POSITION\".");
            //UnitShareVision(cf.target, cf.owner, true);
//* * *
Вот это cJass а у вас нет...
32

» WarCraft 3 / отсутствует база данных триггеров CreateGroup

Принятый ответ
У вас случаем не стоят рус. триггеры или какие то говно русификаторы, так же карта могла быть повреждена при сохранении...
Ну сносим русификаторы, проверяем...
Останавливаем карту wc3map restorer или Xdep, но про гуи можно будет забыть, ели убрать галочки то имена функций и переменных останутся.
32

» WarCraft 3 / Из за триггера не запускается карта

Принятый ответ
Чувак, ты JASS API хоть 1 сек смотрел?
Что за trig?, что за c?
	local trigger trig = CreateTrigger()
У тебя переменные не объявлены, а ты пытаешься к ним обратится, ясно что выдаст ошибку.
32

» WarCraft 3 / Порталы в Melee карте

В гуях есть целый раздел - нейтральное здание, там есть порталы, т.е настройки где можно действующему порталу указать область телепортации.
32

» WarCraft 3 / Прошу помочь (спеллбук и скрытие способн.)

Принятый ответ
Ну собственно это такая способность 'Aspb' - книга заклинаний, способность одноименного предмета...
Собственно способность 'Aspb' -spellbook имеет поле 'Ability List' как у юнитов, в котором можно указывать другие способности.
Что нам нужно:
  1. Скопировать способность 'Aspb' - книга заклианий и изменить название на желаемое, удалить иконку и обнулить все параметры ( мин и макс заклинаний ставим на 1, список способностей - тут очищаем весь список и добавлем туда интересующую вас способность, в вашем случае баш...)
  2. Нужно запретить эту способность для изучения игроком триггерно, с помощью SetPlayerAbilityAvalible (в гуях не помню как, там в разделе игрок есть эта функция)
  3. Собствнно добавлем\удаляем нашу способность на основе "спеллбука" когда захотим, она не будет отображаться и занимать место на карте команд.
Примечание:
Запрещенные способности загружаются в память в полном обьеме, не смотря на то что их не видит игрок, поэтому удаляйте все описания, эффекты, иконки, параметры которые отвечают за визуализацию, так вы увеличите скорость загрузки вашей карты, хоть и не намного.
32

» WarCraft 3 / "Откидывающий Удар"

Mrachny:
Да , легче просто наблюдать , чем помочь , конечно .
На XGM не помогают попрошаям и не дают милостыню.
32

» WarCraft 3 / "Откидывающий Удар"

Mrachny:
Можете создать мапу и проверить , будет ли у вас робить?
Могу, но не хочу.
Так же не хочу поощрять попрошайничество.
32

» WarCraft 3 / "Откидывающий Удар"

Принятый ответ
Нужно найти угол между юнитами, в гуях есть Angle Between Points для этого, тока не наплодите утечек.
32

» WarCraft 3 / "Откидывающий Удар"

Mrachny:
Интересная карта , но джасс . + Комментом выше написал . что мне не нужно такое мастерсткое отталкивание .
Ну просто мгновенное перемещение в указанную точку сделай.
32

» WarCraft 3 / "Откидывающий Удар"

На сайте была наработка отталкивания и не одна, но что то не могу найти
так что вот lifeinarena.ucoz.ru/forum/19-2498-1 (первый в списке гугла)
А так же здесь прикреплю - систему отталкивания
Загруженные файлы
32

» WarCraft 3 / "Откидывающий Удар"

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

» WarCraft 3 / Не работает спелл

Для предмета можно юзать и 'Aasl' (аура замедления, торнадо) но 'Aasl' повреждающая аура, её бафф на юните спровоцирует его напасть на владельца ауры, а так же разбудит нейтралов.
32

» WarCraft 3 / Если юнит не двигается то....

Принятый ответ
Вы про таймеры слышали?
Проверить двигался юнит проще пареной репы, две переменные х и y если одна из координат изменилась то юнит двигается.
32

» WarCraft 3 / Как работает эта функция?

Принятый ответ
вы хоть статьи читали?
В гуях через кастом скрипт.
Загруженные файлы
32

» WarCraft 3 / Две атаки

Принятый ответ
А что ты хотел знать про вторую атаку?
У юнита может быть 2 разные атаки для разны типов целей, т.е у атак взаимоисключающие допустимые цели, иначе будет работать 1 атака.
32

» WarCraft 3 / Эффект

Принятый ответ
Тратить то тратит, но удалять его ненужно, спецэффект способностей сами удаляются.
А вот спецэффекты созданные триггерами нужно удалять.
32

» WarCraft 3 / Задержка

Принятый ответ
Утечки в триггерах, надо код карты исправить.
32

» WarCraft 3 / Нужна помощь со спеллом.

Принятый ответ
Impertus:
quq_CCCP:
Без локейшенов, набери
	GetRandomReal( GetRectMinX( bj_mapInitialPlayableArea ), GetRectMaxX( bj_mapInitialPlayableArea )  )
Для Y думаю догадаешся как найти...
Размер карты-то изначально известен, можно обойтись и рандомом между статичными цифирями. Думал над этим вариантом тоже, значит будем пользовать его.
nvc123:
к слову этот вообще не рабочий ибо количество итераций циклов может превысить лимит потока и тогда триггер просто обрубится
Ставить таймеры по 0.5 сек? Такого вида?
loop
        exitwhen  IsUnitDeadBJ(BET) or BECo > 20
        if (TimerGetRemaining(t) <= 0) then
            call MoveLocation( p, GetRandomReal ( X1, X2), GetRandomReal (Y1, Y2))
            call SetUnitMoveSpeed( BET, 500.00 )
            call IssuePointOrderLocBJ( BET, "move", p )
            set BECo = BECo + 0.5
            call TimerStart(t, 0.5, false, null)
        endif     
endloop
Таймер не вейт, он запустить новый Поток когда истечет, в функции старта таймера 4 параметра, таймер, время, периодичный буль и ссылка на код .
вместо null нужно вписать function Имя функции
functiom Timer_UnitMove_Expires takes nothing returns nothing
    // эта функция будет вызыватся каждые 0.50 сек. пока не остановить таймер
endfunction


function A takes nothing returns nothing
local timer t = CreateTimer( )

call TimerStart( t, 0.50, true, function Timer_UnitMove_Expires )

set t = null
endfunction
Чтобы передавать информацию между функциями нужны так называемые Аттачи, нужно прикрепить данные к триггеру или таймеру, потому что мы можем получить ссылку на них в запущенных ими потоками.
Про хештаблицу куча данных на сайте, SaveUnitHandle( хештаблица, ключ 1, ключ 2, сам юнит )
32

» WarCraft 3 / Нужна помощь со спеллом.

Ну ну, наплодили утечек и еще какая то странная реализация... какой то custom PolledWait, который как не работал так и не работает, юзайте таймеры!
GetRandomLocInRect() - возвращает локейшены, каждый раз новый локейшен..
call MoveLocation( p, GetLocationX(GetRandomLocInRect(GetPlayableMapRect())), GetLocationY(GetRandomLocInRect(GetPlayableMapRect()))) 
Вас это ни капельки не смущает?
Неужели нельзя было обойтись таймером и координатами?
Без локейшенов, набери
	GetRandomReal( GetRectMinX( bj_mapInitialPlayableArea ), GetRectMaxX( bj_mapInitialPlayableArea )  )
Для Y думаю догадаешся как найти...
32

» WarCraft 3 / Что за утечка с Matching unit

Наверное так называемый Новичок начал удалять локейшены но забыл не юзать бж функции где эти локейшены создаются и не удаляются, видя что оптимизация не помогла он начал грешить на Matching unit, прост так, с потолка...
GetFilterUnit() не вызывает утечки, ибо возвращает только существующего на карте юнита, а не плодить нового как GetUnitLoc() которая каждый раз плодит по локейшену, но это многие не помнят.
Ах да чуть не забыл, там половина гуи действий с группами вызвывает утечки то локейшены то группы, именно функция типа GetUnitsInRectMatching, вот тут да, не удаляется группа.