1
4
8 месяцев назад
1

» WarCraft 3 / call GroupEnumUnitsInRect - Помогите внести корректив в сценарий

Здесь можно получить ответ =>>Ссылка<<=
1
4
1 год назад
1

» WarCraft 3 / Уменьшение урона юнита при атаке

Согласно триггеру мы видим:
Атакующий - Потрошитель (бездна) (условие)
Создаётся dummy в позиции Потрошителя под управлением игрока, что является владельцем этого Потрошителя.
Даётся команда dummy использовать способность Пламя Обречённости на атакованном бойце.
Ждать
Удалить последнего созданного.
Из того что мы видим всё должно сработать.
Если не работает:
  1. Проверить наличие способности у dummy.
  2. Наличие маны у dummy.
  3. Требования на использование способности. (Исследования и т.п.)
Прежде чем запускать dummy триггерно, рекомендую вручную создать выбираемого dummy и дать им приказ на использование способности. Если конечно впервые пробуем подобное.
0
4
1 год назад
0

» WarCraft 3 / Движущийся Портал

У  Region есть координаты?
Нет.

Я не совсем прав... Глянул common.j и согласно ему можно сделать такую вещь:
native RegionAddRect            takes region whichRegion, rect r returns nothing
native RegionClearRect          takes region whichRegion, rect r returns nothing
То бишь можно будет повесить, предварительно сохранив в переменную, на регион событие входа и таймером сначала удалять область, а потом добавить в новом положении область в регион. Должно сработать.
В данный момент не имею доступа к ПК для сверки теории.
И да, писать всё придется на Jass, либо GUI+custom code.
0
4
1 год назад
Отредактирован DazzleFirst
0

» WarCraft 3 / Движущийся Портал

в область ("юнит входит в область") срабатывает только в исходной позиции области
Происходит это из-за события (функции), оно при создании триггера создаёт утекающий region и вешает на этот region событие входа/выхода.
Выход: создавать регион и перемещать его, а не область.
1
4
1 год назад
Отредактирован DazzleFirst
1

» WarCraft 3 / как уничтожить все таймер-диалоги timerdialog ?

CreateTimerDialogBJ рассказываем и видим, что оно создаёт при вызове TimerDialog.
Если вызвать функцию дважды, то создаст 2 отдельных окна таймера привязанных к одному таймеру. Завершив таймер уничтожить можно будет только последнее окно, если первое небыло привязано к какой либо переменной, то оно (первое) утекает.
В чем загадка то?
0
4
1 год назад
0

» WarCraft 3 / Тройной выстрел

Есть способность "Ракеты" у самоходной мортиры у альянса. Именно она позволяет дальнему бою стрелять массово.
Настраиваем цели и радуемся.
1
4
1 год назад
1

» WarCraft 3 / Количество убийств юнита

JASS:
local unit whichUnit=GetKillingUnit()
local integer data=GetUnitUserData(whichUnit)
call SetUnitUserData (whichUnit, data+1)
if(data==5)then
call UnitAddAbility(whichUnit, 'A000')
else
...
endif
...
set whichUnit=null
На GUI ищем "UserData".
1
4
1 год назад
Отредактирован DazzleFirst
1

» WarCraft 3 / Юнит мешает пройти

На скриншоте всё верно. Видимо этого действия не достаточно. Сам не сталкивался с такой проблемой и в данный момент не могу реализовать. Однако посидев немного в поиске нашел подобное решение
В довесок можно прочитать и попробовать руны (эффект Phase boots)
2
4
1 год назад
Отредактирован DazzleFirst
2

» WarCraft 3 / Юнит мешает пройти

Физический размер 0 поставь ему
Дело в том что уже стоит(
В таком случае я бы хотел увидеть, что вы понимаете под "физический размер", ибо этого действия должно быть достаточно для вашей задачи.
Скриншот Редактора Объектов с нужным полем будет прекрасным аргументом.
0
4
1 год назад
0

» WarCraft 3 / KillUnit

call SetWidgetLife(target, 1.)
call SetUnitState(target, UNIT_STATE_MANA, 0.)
call UnitDamageTarget(source, target, 1.1, false, false, null, null, null)
Где:
source - убивец
target - цель убийства
Не сработает только в одном случае - неуязвимость. Уберите неуязвимость перед нанесением урона и будет счастье.
0
4
1 год назад
0

» WarCraft 3 / Как сделать рандомное перемещение

Утечка же будет, разве нет?
Её же можно убрать. Иль к прочтению статей по утечкам мы брезгуем?
0
4
1 год назад
Отредактирован DazzleFirst
0

» WarCraft 3 / Как сделать рандомное перемещение

anton1623,Эм...
Боевая единица вышла из области
Ваши условия
Отправить в случайную точку области
0
4
1 год назад
0

» WarCraft 3 / Как сделать рандомное перемещение

Способность любого пассивно нейтрального животного - Нейтральный (Лягушка, пингвин и т.п.)
Способность у торнадо (смерч) Медузы тоже даёт обладателю ходить в случайном направлении без остановки.
0
4
1 год назад
0

» WarCraft 3 / Создание юнита по координатам

То бишь код:
local real x=GetUnitX(udg_Hero)
local real y=GetUnitY(udg_Hero)
set bj_lastCreatedUnit=CreateUnit(GetOwningPlayer(udg_Hero),'hspt',x,y,GetUnitFacing(udg_Hero))
будет рабочим
1
4
1 год назад
1

» WarCraft 3 / Триггерная способность

Афтар, попытки были? Насколько удачные? Что использовалось (GUI, JASS, zinc, lua)? В случае не желания самостоятельно или с помощью текущего раздела (вопросы) разобраться в создании способности - обращаемся в раздел Заклинания на заказ и оформляем по примеру.
В вопросах не всегда дают итоговое решение (скопировал-вставил). По моему мнению ответ должен научить, а не кормить готовым.
1
4
1 год назад
1

» WarCraft 3 / Триггер активируется со второго раза

Условие не верно. Необходима боевая единица, что заходит в область, а не УЖЕ находится в области.
1
4
1 год назад
1

» WarCraft 3 / Способность исчезает при использовании

Возможно есть ещё один триггер с этим событием и с этим условием (способностью)?
0
4
1 год назад
0

» WarCraft 3 / Разрушение деревьев

Jass
    function TreeDestroyerSystemFilter takes nothing returns boolean
        local destructable d=GetFilterDestructable()
        local real x=GetDestructableX(d)-udg_TreeDestr_X
        local real y=GetDestructableY(d)-udg_TreeDestr_Y
        local real r=SquareRoot(x*x+y*y)
        if(GetWidgetLife(d)>.405 and r<=udg_TreeDestr_R and IssueTargetOrderById(udg_TreeDestr_DUMMY,852018,d) and IssueImmediateOrderById(udg_TreeDestr_DUMMY, 851972))then//852018=="harvest"     851972=="stop"
            call KillDestructable(d)
            set udg_TreeDestr_N=udg_TreeDestr_N+1
        endif
        set d=null
        return false
    endfunction

    function TreeDestroyerSystem takes real x,real y,real r returns integer
        local rect rt=Rect(x-r,y-r,x+r,y+r)
        local boolexpr b=Filter(function TreeDestroyerSystemFilter)
        set udg_TreeDestr_R=r
        set udg_TreeDestr_X=x
        set udg_TreeDestr_Y=y
        set udg_TreeDestr_N=0
        call EnumDestructablesInRect(rt,b,null)
        call DestroyBoolExpr(b)
        call RemoveRect(rt)
        set b=null
        set rt=null
        return udg_TreeDestr_N
    endfunction
    
    function InitTrig_TreeDestrSystem takes nothing returns nothing
        //set gg_trg_TreeDestrSystem=CreateTrigger(  )
        //call TriggerAddAction( gg_trg_TreeDestrSystem, function Trig_TreeDestrSystem_Actions)
        set udg_TreeDestr_DUMMY=CreateUnit(Player(PLAYER_NEUTRAL_PASSIVE),'uloc',.0,.0,.0)
        call UnitAddAbility(udg_TreeDestr_DUMMY,'Ahar')
        call ShowUnit(udg_TreeDestr_DUMMY,false)
    endfunction
Загруженные файлы
2
4
1 год назад
Отредактирован DazzleFirst
2

» WarCraft 3 / Разрушение деревьев

vJass
library TreeDestroyerSystem initializer Init
    globals
        private constant integer DummyID='dumy'
        private constant integer AbilityID='Ahar'
        private constant integer OrderID=852018

        private unit Dummy=null
        private real AoE=.0
        private real X=.0
        private real Y=.0
    endglobals

    private function Filtering takes nothing returns boolean
        local destructable d=GetFilterDestructable()
        local real x=GetDestructableX(d)-X
        local real y=GetDestructableY(d)-Y
        local real r=SquareRoot(x*x+y*y)
        if(GetWidgetLife(d)>.405 and r<=AoE and IssueTargetOrderById(Dummy,OrderID,d) and IssueImmediateOrderById(Dummy, 851972))then// and GetUnitCurrentOrder(Dummy)==OrderID
            call KillDestructable(d)
        endif
        set d=null
        return false
    endfunction

    function TreeDestroyerSystem takes real x,real y,real a returns boolean
        local rect r=Rect(x-a,y-a,x+a,y+a)
        local boolexpr b=Filter(function Filtering)
        set AoE=a
        set X=x
        set Y=y
        call EnumDestructablesInRect(r,b,null)
        call DestroyBoolExpr(b)
        call RemoveRect(r)
        set b=null
        set r=null
        set AoE=.0
        set X=.0
        set Y=.0
        return false
    endfunction

    private function Init takes nothing returns nothing
        set Dummy=CreateUnit(Player(15),DummyID,.0,.0,.0)
        call UnitAddAbility(Dummy,'Aloc')
        call UnitAddAbility(Dummy,AbilityID)
        call ShowUnit(Dummy,false)
    endfunction
endlibrary
0
4
1 год назад
Отредактирован DazzleFirst
0

» WarCraft 3 / Связанные юниты

Делаем триггер на него вешаем бойцов и смерть бойцов по хэндлу триггера.
Один из них умер - убиваем второго (или двоих). Ну, и не забываем очищать всё. Дабы утечек небыло.
Профит
1
4
1 год назад
1

» WarCraft 3 / Как отделить деревья от разрушаемого?

Типа спавнить дамика...
Правильно, но один раз на всю игру и скрыть. Можно его дать нейтралам (открыта карта). Нам самое главное отслеживать им приказ. Я бы создал москита ('uloc') для нейтрала, добавил способность добычи и скрыл. Место создания не нужно(X=.0, Y=.0). Передвигать к месту проверки так же не нужно.
...приказ не срабатывает то продолжать перебор?
Не совсем... Допустим приказ сработал, то этот даммик будет пытаться добывать дерево. Следовательно нужно его будет как-то остановить.
Но в целом правильно.
0
4
1 год назад
0

» WarCraft 3 / Как отделить деревья от разрушаемого?

Давно придумано:
Даммик со способностью Добыча ресурсов
0
4
2 года назад
0

» WarCraft 3 / Как не выбирать строения?

Добавить условие
native IsUnitType takes unit whichUnit, unittype whichUnitType
1
4
2 года назад
1

» WarCraft 3 / Добавление способности юниту тригерно

Установить способности 2 уровня. На первом уровне - все значения в 0. На втором - необходимые значения.
Сделать по аналогии с "Мастерство скелетов (Skeletal Mastery)" улучшение. То бишь улучшение должно увеличить уровень выбранной способности (Ability Level Bonus).
При данном способе:
нет нужды в триггерах (+);
способность всегда видна (как и эффект атаки в данном случае) и нет указания о необходимости улучшения (-).