28

» WarCraft 3 / Триггерная волна силы

вот, закинул сразу пример с уровнями способности, всё что ты меняешь это естественно настройки, единственное что я на добавлял это деформацию ланда, но если оно тебе нужно будет, то думаю ты сам уже это сделаешь

ах да, там ты можешь заметить фишку, что вариковская волна силы агрит на себя пехотинцев, а кастомная нет - я хз с чем это связано, мб заскриптовано, ибо урон идёт не от лица дамми, а от лица кастера, а по поводу вджасса - он не сложен, максимум для чего он мне нужен был ради библиотеки со структурой и возможностью объявлять глобальные переменные непосредственно в коде
Загруженные файлы
28

» WarCraft 3 / Систему сравнения по очкам

Player number - как следует из названия - номер игрока, на гуи оно вроде от единички нумеруется, а на джассе с нуля, номер красного игрока 1, номер синего 2. Trigger execution count - количество срабатываний триггера.
Насчёт перебора правильно мыслишь, нужно брать одного игрока и сравнивать его очки с остальными игроками
28

» WarCraft 3 / Триггерный урон на ровне с атакой

Гуванч, а, понял. Я не страдал такими проблемами ибо все скиллы делаю на джассе и это даёт мне возможность полностью контролировать всё что происходит касательно урона. В твоём случае, если делать триггерные аналоги не подходит, нужно использовать мемхак. Он позволяет понять с руки урон или нет, а так же тип урона
28

» WarCraft 3 / Триггерный урон на ровне с атакой

Нужно зарегистрировать на всех юнитов на карте событие "получает урон", а в другом триггере, где юнит получил урон - делать действия. Если ты имел ввиду именно после замаха, когда вылетает снаряд - то тут только костылить с таймингом либо воспользоваться мемхаком)
Ах да, ну можно и свою собственную атаку сделать)

Вот тут я пытался сделать собственную атаку, сейчас конечно мог бы сделать получше и немного по-другому, с очень классной либой, но что-то не интересует)
28

» WarCraft 3 / Триггерная волна силы

Триггерные волны силы делали миллион раз и на джассе, и на вджассе, и на сджассе, и на зинке, и на луа, и даже на гуи дружище)

Я могу сделать то что ты хочешь, чтобы ты мог просто задать значения, вопрос только какой вариант выше тебе подойдёт?) (кроме луа конечно)
28

» WarCraft 3 / Ошибки при запуске WE и нерабочий JASS

Так тебе вджасс нужен)


Вджасс это дополнение к обычному джассу, у себя ты можешь видеть строки объявления библиотеки, продвинутые комментарии и статические константные переменные

28

» WarCraft 3 / Эффект выстрела остаётся

Вроде в игровых константах можно настроить время смерти эффектов. Так же можно посмотреть на длительность анимации смерти у эффекта
28

» WarCraft 3 / Двигать юнита(ов) к юниту?

Nikolay36, я сказал практически)
всё что тебе нужно по факту это угол с координатами и насколько сдвинуть юнита, знать математику и думать тут вообще не надо, нужно лишь знать принцип работы)

у меня у самого знания шестиклассника

раскрыть
library mylib initializer InitTrig_fd
globals
    constant hashtable H = InitHashtable()
    private group TempG
    private group TempG1 = CreateGroup()
    private real TempX
    private real TempY
endglobals

native UnitAlive takes unit id returns boolean

private function DBC takes real x, real y, real x1, real y1 returns real
   return SquareRoot((x-x1)*(x-x1)+(y-y1)*(y-y1)) 
endfunction

private function mycond takes nothing returns boolean
    set bj_lastReplacedUnit = GetFilterUnit()
    return UnitAlive(bj_lastReplacedUnit) and IsUnitEnemy(bj_lastReplacedUnit,GetOwningPlayer(bj_lastCreatedUnit))
endfunction

private function move1 takes nothing returns nothing
    local unit u = GetEnumUnit()
    local real x = GetUnitX(u)
    local real y = GetUnitY(u)
    local real a = Atan2(TempY-y,TempX-x)
    
    set x = x+20.*Cos(a)
    set y = y+20.*Sin(a)
    call SetUnitX(u,x)
    call SetUnitY(u,y)
    if DBC(TempX,TempY,x,y) <= 100. then
        call SetUnitPosition(u,x,y)
        call UnitDamageTarget(bj_lastCreatedUnit,u,100.,false,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,null)
        call GroupRemoveUnit(TempG,u)
    endif
    
    set u = null
endfunction

private function move takes nothing returns nothing
    local timer t = GetExpiredTimer()
    set TempG = LoadGroupHandle(H,GetHandleId(t),1)
    set bj_lastCreatedUnit = LoadUnitHandle(H,GetHandleId(t),0)
    
    set TempX = GetUnitX(bj_lastCreatedUnit)
    set TempY = GetUnitY(bj_lastCreatedUnit)
    call ForGroup(TempG,function move1)
    
    if FirstOfGroup(TempG) == null then
        call DestroyGroup(TempG)
        call FlushChildHashtable(H,GetHandleId(t))
        call PauseTimer(t)
        call DestroyTimer(t)
    endif
    
    set t = null
    set TempG = null
    set bj_lastCreatedUnit = null
endfunction

private function Trig_fd_Actions takes nothing returns nothing
    local timer t = CreateTimer()
    local boolexpr b = Condition(function mycond)
    set TempG = CreateGroup()
    set bj_lastCreatedUnit = GetTriggerUnit()
    
    call GroupEnumUnitsInRange(TempG,GetUnitX(bj_lastCreatedUnit),GetUnitY(bj_lastCreatedUnit),1000.,b)
    call SaveUnitHandle(H,GetHandleId(t),0,bj_lastCreatedUnit)
    call SaveGroupHandle(H,GetHandleId(t),1,TempG)
    call TimerStart(t,.02,true,function move)
    
    set b = null
    set t = null
    set TempG = null
    set bj_lastCreatedUnit = null
endfunction

//===========================================================================
private function cancel takes nothing returns nothing
    local timer t = GetExpiredTimer()
    call IssueImmediateOrder(LoadUnitHandle(H,GetHandleId(t),0),"stop")
    call FlushChildHashtable(H,GetHandleId(t))
    call DestroyTimer(t)
    set t = null
    
    call BJDebugMsg("Рядом никого нет")
endfunction

private function Trig_fd_Conditions takes nothing returns boolean
    if GetSpellAbilityId() == 'A000' then
        call Trig_fd_Actions()
    endif
    return false
endfunction
private function Trig_fd_Conditions1 takes nothing returns boolean
    local timer t
    if GetSpellAbilityId() == 'A000' then
        set bj_lastCreatedUnit = GetTriggerUnit()
        call GroupEnumUnitsInRange(TempG1,GetUnitX(bj_lastCreatedUnit),GetUnitY(bj_lastCreatedUnit),1000.,Condition(function mycond))
        if FirstOfGroup(TempG1) == null then
            set t = CreateTimer()
            call SaveUnitHandle(H,GetHandleId(t),0,bj_lastCreatedUnit)
            call TimerStart(t,0.,false,function cancel)
            set t = null
        else
            call GroupClear(TempG1)
        endif
        set bj_lastCreatedUnit = null
    endif
    return false
endfunction
private function InitTrig_fd takes nothing returns nothing
    local trigger t = CreateTrigger()
    local integer i = 0
    set gg_trg_fd = CreateTrigger(  )
    loop
        call TriggerRegisterPlayerUnitEvent(gg_trg_fd, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
        call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_CAST, null)
        set i = i+1
        exitwhen i == 16
    endloop
    call TriggerAddCondition( gg_trg_fd, Condition( function Trig_fd_Conditions ) )
    call TriggerAddCondition( t, Condition( function Trig_fd_Conditions1 ) )
    set t = null
endfunction
endlibrary
Загруженные файлы
28

» WarCraft 3 / Двигать юнита(ов) к юниту?

Nikolay36, )
Но тут уже дело не в математике, на самом деле она даже практически не нужна тут))

Могу сделать этот спелл чуть позже, если никто не преуспеет
28

» WarCraft 3 / Двигать юнита(ов) к юниту?

quq_CCCP, может он вообще хочет узнать принцип работы группы юнитов на джассе? Типо как создать, добавлять, перебирать
28

» WarCraft 3 / Двигать юнита(ов) к юниту?

Nikolay36, тю лол, в чем проблема закинуть всех юнитов в группу и проделать те же действия?)
28

» WarCraft 3 / Путь эффекта невидимости

PT153, меня тоже заинтересовало где он нашел такой путь, мне казалось это обычная прозрачность)
28

» WarCraft 3 / Двигать юнита(ов) к юниту?

Так движение юнита без приказа это и есть перемещение)
Такое можно и на гуи спокойно сделать

Загруженные файлы
28

» Блог Keparis9 / Ввод в блог Keparis9

Komkozavr, не, ланд очень трудоёмкая и кропотливая работа, позабрасывал такие крутые идеи из-за лени делать ланд, карты ведь не маленькие и те же деревья нужно аккуратно и разумно тыкать, ведь это игровое поле
28

» WarCraft 3 / Полезная информация

WakeUpSamurai, в триггерах раздел "спецэффекты" -> отметка на миникарте
Загруженные файлы
28

» WarCraft 3 / Полезная информация

WakeUpSamurai, у способности в разрешенных целях убери галочку что они не действуют на героев
28

» WarCraft 3 / Предмет меняющий здоровье на ману. проблема самоубийства им

mistwood, арифметикой)
Если отнять 200 от текущего здоровья меньше 1, то 200 отнять текущее здоровье и от текущего здоровья отнять полученный результат-1
28

» WarCraft 3 / Предмет меняющий здоровье на ману. проблема самоубийства им

Делать дофига уровней этой абилки и устанавливать уровень на максимальную разницу в здоровье если не ниже 1

А, это не постоянный предмет? Тогда сорян, и вправду можно спокойно триггерно сделать, протупил))
28

» WarCraft 3 / Как сделать фильтр для разных игроков?

Через гетлокал плеер

На гуи такой функции нет, поэтому используй кастом скрипт
установить TempPlayer = игрок владелец юнита/триггера/т.д.
if GetLocalPlayer() == udg_TempPlayer then
Ввод/затемнение и т.п.
endif

раскрыть
Загруженные файлы
28

» WarCraft 3 / Бездействие самолётов как в генералах

Pasha115, контроль над процессом полностью принадлежит тебе, меняй что хочешь и как хочешь. Максимум что я изменил бы там, чтобы они в рандомную сторону начали кружиться, а не только по часовой, а если ответить на вопрос, то да, добавь туда тип юнита который кружится на месте
28

» WarCraft 3 / Бездействие самолётов как в генералах

ssbbssc:
Советую послушать Экстрематора, человек тут не первый год.
Резюмируя вышесказанное - легче найти\создать модель с такой анимацией stand
Мне интересно как вход и выход из такой анимки выглядел бы)

+ тени пришлось бы наверно убрать, они же кружиться не будут в такой анимации)
28

» WarCraft 3 / Бездействие самолётов как в генералах

Тю ребят, ну вы шо, на приколе?)

Я же сказал, посмотрите как у москитов сделано, они кружатся

Загруженные файлы