0
1
7 месяцев назад
0

» WarCraft 3 / Некорректно срабатывает триггер

Borodach, сработало, вроде тривиальное решение но как то сам до него не догадался.

nazarpunk, В чем суть претензии, пишу как умею
0
1
7 месяцев назад
0

» WarCraft 3 / Некорректно срабатывает триггер

Так в одном я допер, срабатывает она повторно из за урона нанесенного этой же способностью.
0
1
7 месяцев назад
0

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

nazarpunk, ну вот к примеру в карте есть способность призывающая даммика использующего способность огненное лассо(переделанное), ну вот оно имеет у меня задержку.ID приказа revive(взял на рандом то что не повторялось)
function Chain_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A08O'
endfunction

function Chain1 takes nothing returns nothing
    local timer timerAct = GetExpiredTimer()
    local integer id = GetHandleId(timerAct)
    local unit dummy = LoadUnitHandle(Hash, id, StringHash("dummy"))
    local unit target = LoadUnitHandle(Hash, id, StringHash("target"))
    local effect e = LoadEffectHandle(Hash, id, StringHash("e"))
    
    if GetUnitAbilityLevel(target, 'B00Z') == 0 then
        call KillUnit(dummy)
        call RemoveUnit(dummy)
        call DestroyEffect(e)
        call DestroyTimer(timerAct)
        call FlushChildHashtable(Hash, id)
    endif

    set dummy = null
    set e = null
    set timerAct = null
endfunction

function Chain_Actions takes nothing returns nothing
    local timer timerAct = CreateTimer()
    local integer id = GetHandleId(timerAct)
    local unit caster = GetSpellAbilityUnit()
    local unit target = GetSpellTargetUnit()
    local integer level = GetUnitAbilityLevel(caster, 'A08O')
    local unit dummy
    local effect e
    
    set dummy = CreateUnit( GetOwningPlayer(caster), 'h023', GetUnitX(target) - 200, GetUnitY(target) - 200, bj_UNIT_FACING )
    
    call SetUnitVertexColor(dummy, 155, 155, 255, 50)
    
    set e = AddSpecialEffectTarget("war3mapImported\\Bondage Blue SD.mdx", target, "head")
    
    call SetUnitAbilityLevel(dummy, 'A08P', level)
     
    call IssueTargetOrder( dummy, "magicleash", target )
    
    call SaveUnitHandle(Hash, id, StringHash("dummy"), dummy)
    
    call SaveUnitHandle(Hash, id, StringHash("target"), target)
    
    call SaveEffectHandle(Hash, id, StringHash("e"), e)
    
    call TimerStart(timerAct, 1, true, function Chain1)

    set timerAct = null
    set e = null
    set caster = null
    set target = null
    set dummy = null
endfunction

function InitTrig_Chain takes nothing returns nothing
    set gg_trg_Chain = CreateTrigger()
    local integer index

    set index = 0
    loop
        call TriggerRegisterPlayerUnitEvent(gg_trg_Chain, Player(index), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)

        set index = index + 1
        exitwhen index == bj_MAX_PLAYER_SLOTS
    endloop
    
    call TriggerAddCondition(gg_trg_Chain, Condition(function Chain_Conditions))
    call TriggerAddAction(gg_trg_Chain, function Chain_Actions)
endfunction
0
1
7 месяцев назад
0

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

makkad, все так и оказалось, как ты это исправил? (отказываться от спеллбука и от увеличения здоровья я не могу)
0
1
2 года назад
0

» WarCraft 3 / Нестабильная система опыта

rsfghd, затестили вроде все гладко, cпасибо
0
1
2 года назад
0

» WarCraft 3 / Дессинхронизация

N1ghtSiren, спасибо
0
1
2 года назад
0

» WarCraft 3 / Хеш таблица

ScorpioT1000, обнуляю локалки и функцию использую FlushChildHashtable

Гуванч,Да не зачем устраивает очень даже просто изучил недавно Хеш но любопытно стало как и к чему и стоит ли сувать ее везде где удобно
0
1
2 года назад
0

» WarCraft 3 / Некорректная работа с движением юнита

Крч если кому то нужно будет то вот(да можно было сделать лучше)
Триггер:
function Trig_Charge_Actions2 takes nothing returns nothing
call KillDestructable(GetFilterDestructable())
endfunction
function Charge_Actions1 takes nothing returns nothing
local timer timerAct = GetExpiredTimer()
local integer id = GetHandleId(timerAct)
local unit caster = LoadUnitHandle(Hash, id,StringHash("caster"))
local integer level = GetUnitAbilityLevel(caster, 'A025')
local real process = LoadReal(Hash, id,StringHash("process")) + LoadReal(Hash, id,StringHash("speed"))
local location Point = LoadLocationHandle(Hash, id,StringHash("Point"))
local location casterLoc = GetUnitLoc(caster)
local group groupAct
local unit dummy
local unit u = null
local effect e = LoadEffectHandle(Hash, id,StringHash("e"))

if process > LoadReal(Hash, id, StringHash("distance")) or IsTerrainPathable(GetUnitX(caster) + LoadReal(Hash, id, StringHash("speed")) * Cos(LoadReal(Hash, id, StringHash("angle")) * bj_DEGTORAD),GetUnitY(caster) + LoadReal(Hash, id, StringHash("speed")) * Sin(LoadReal(Hash, id, StringHash("angle")) * bj_DEGTORAD), PATHING_TYPE_PEONHARVESTPATHING) == true then
call DestroyGroup(LoadGroupHandle(Hash, id, StringHash("group")))
call FlushChildHashtable(Hash, id)
call PauseTimer(timerAct)
call DestroyTimer(timerAct)
call DestroyEffect(e)
call PauseUnit(caster,false)
set dummy = CreateUnit(GetOwningPlayer(caster),'h01A',GetUnitX(caster),GetUnitY(caster), bj_UNIT_FACING)
call UnitAddAbility(dummy,'A02A')//Стан
call SetUnitAbilityLevel(dummy,'A02A', level)
call IssueImmediateOrder(dummy,"stomp")
call KillUnit(dummy)
call RemoveUnit(dummy)
else
call SaveReal(Hash, id, StringHash("process"), process)
call SetUnitX(caster, GetUnitX(caster) + LoadReal(Hash, id, StringHash("speed")) * Cos(LoadReal(Hash, id, StringHash("angle")) * bj_DEGTORAD))
call SetUnitY(caster, GetUnitY(caster) + LoadReal(Hash, id, StringHash("speed")) * Sin(LoadReal(Hash, id, StringHash("angle")) * bj_DEGTORAD))
set groupAct = CreateGroup()
call GroupEnumUnitsInRange(groupAct, GetUnitX(caster), GetUnitY(caster), LoadReal(Hash, id, StringHash("aoe")), null)
loop
set u = FirstOfGroup(groupAct)
exitwhen u == null
if GetWidgetLife(u) > 0.405 and not IsUnitInGroup(u, LoadGroupHandle(Hash, id, StringHash("group"))) then
if not IsUnitType(u, UNIT_TYPE_MAGIC_IMMUNE) then
if IsUnitEnemy(u, GetOwningPlayer(caster)) then
call UnitDamageTarget(caster, u, LoadReal(Hash, id, StringHash("damage")), false, false, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_MAGIC, null)
call GroupAddUnit(LoadGroupHandle(Hash, id, StringHash("group")), u)
endif
endif
endif
call GroupRemoveUnit(groupAct, u)
call EnumDestructablesInCircleBJ( 200.00, Location(GetUnitX(caster), GetUnitY(caster)), function Trig_Charge_Actions2)
endloop
call DestroyGroup(groupAct)
endif
set caster = null
set timerAct = null
set groupAct = null
set dummy = null
endfunction
function Charge_Actions takes nothing returns nothing
local unit caster = GetTriggerUnit()
local real xCaster = GetUnitX(caster)
local real yCaster = GetUnitY(caster)
local location Point = GetSpellTargetLoc()
local real xTarget = GetSpellTargetX()
local real yTarget = GetSpellTargetY()
local effect e
local real angle = bj_RADTODEG * Atan2(yTarget - yCaster, xTarget - xCaster)
local integer level = GetUnitAbilityLevel(caster, 'A025')
local real damage = 75 + (25 * level) Урон
local real aoe = 125 Аое урона
local real speed = 1000 Скорость
local real distance = 600 + 200 * level Маскимальная дистанция

local timer timerAct = CreateTimer()
local integer id = GetHandleId(timerAct)

call SaveUnitHandle(Hash, id, StringHash("caster"), caster)

call SaveLocationHandle(Hash, id, StringHash("Point"), Point)
call SaveReal(Hash, id, StringHash("distance"), distance)
call SaveReal(Hash, id, StringHash("damage"), damage)
call SaveReal(Hash, id, StringHash("aoe"), aoe)
call SaveReal(Hash, id, StringHash("speed"), speed * 0.03)
call SaveReal(Hash, id, StringHash("angle"), angle)

call SaveReal(Hash, id, StringHash("process"), 0)
call SaveGroupHandle(Hash, id, StringHash("group"), CreateGroup())

set e = AddSpecialEffectTarget("war3mapImported\\Valiant Charge Royal.mdx", caster, "origin")//Эффект
call SaveEffectHandle(Hash,id,StringHash("e"), e)

call PauseUnit(caster,true)
call TimerStart(timerAct, 0.03, true, function Charge_Actions1)

set caster = null
set timerAct = null
endfunction
function Charge_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A025' Равкод абилки
endfunction
function InitTrig_Charge takes nothing returns nothing
set gg_trg_Charge = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( gg_trg_Charge, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Charge, Condition( function Charge_Conditions ) )
call TriggerAddAction( gg_trg_Charge, function Charge_Actions )
endfunction
0
1
2 года назад
0

» WarCraft 3 / Некорректная работа с движением юнита

ValdionWorld, С деревьями вопрос решил а как сделать еще что бы я не мог способностью забираться на более высокие препятствия или за карту перемещаться
0
1
2 года назад
0

» WarCraft 3 / Некорректная работа с движением юнита

ValdionWorld, Да я вырезал функцию после того как не получилось. Попробую
0
1
2 года назад
0

» WarCraft 3 / Приказ юнита не срабатывает

zogorlol, можешь пожалуйста создать и скинуть рабочий?
0
1
2 года назад
0

» WarCraft 3 / Приказ юнита не срабатывает

zogorlol, имеешь ввиду создать юнита и самому скастовать если так то да срабатывает
0
1
2 года назад
0

» WarCraft 3 / Приказ юнита не срабатывает

quq_CCCP, ну типо я выбираю юнита способностью канал, рядом появляется нетопырь и я ему даю приказ самоубийство а он не выполняется
0
1
3 года назад
0

» WarCraft 3 / Как увеличить лимит с помощью улучшения

rsfghd:
такое чувство будто моё сообщение проигнорили

Поменяй максимум пищи на ограничение пищи
Сработало
0
1
3 года назад
0

» WarCraft 3 / Как увеличить лимит с помощью улучшения

biridius:
Лимита юнитов тип 0-2 пехотинца, или еды?
Покажи свой триггер будем разбираться
Вот триггер
Он не работает как должен, то есть делаешь улучшения получаешь 25 лимита
Загруженные файлы