Простые вопросы #2

Статус
В этой теме нельзя размещать новые ответы.
Такая проблемка, создал вторую карту, расставил точки для спавна как в первой карте, но юнит не спавнится, чекал первую карту с такими же параметрами, там спавнит. Пробовал создать новую точку все это прописал в gamemode все равно не спавнит этого юнита. SpawnCreeps3 - пробовал на новую точку, эффекта 0
Код:
function GameMode:OnGameInProgress()
    local repeat_interval = 300 -- Rerun this timer every *repeat_interval* game-time seconds
    local start_after = 10 -- Start this timer *start_after* game-time seconds later
    local start_after2 = 60
    local repeat_interval2 = 60
    
     local repeat_interval3 = 300 -- Rerun this timer every *repeat_interval* game-time seconds
    local start_after3 = 10
    
    Timers:CreateTimer(start_after, function()
        SpawnCreeps()
        return repeat_interval
    end)
    Timers:CreateTimer(start_after2, function()
        SpawnCreeps2()
        return repeat_interval2
    end)
    Timers:CreateTimer(start_after3, function()
        SpawnCreeps2()
        return repeat_interval3
    end)
end

function SpawnCreeps2()

local waypoint = Entities:FindByName( nil, "center"):GetAbsOrigin()
local unit = CreateUnitByName("npc_dota_airdrop" , waypoint+RandomVector(RandomInt(9000,-9000)), true, nil, nil, DOTA_TEAM_BADGUYS)


end
function SpawnCreeps3()
local point32 = Entities:FindByName( nil, "sp1"):GetAbsOrigin()
local waypoint = Entities:FindByName( nil, "center"):GetAbsOrigin()
local unit = CreateUnitByName("npc_dota_abomination_boss" , point32, true, nil, nil, DOTA_TEAM_BADGUYS)


end
function SpawnCreeps() -- Функция начнет выполняться, когда начнется матч( на часах будет 00:00 ).
      
local point1 = Entities:FindByName( nil, "Spawner1"):GetAbsOrigin()
local point2 = Entities:FindByName( nil, "Spawner2"):GetAbsOrigin()
local point3 = Entities:FindByName( nil, "Spawner3"):GetAbsOrigin()
local point4 = Entities:FindByName( nil, "Spawner4"):GetAbsOrigin()
local point5 = Entities:FindByName( nil, "Spawner5"):GetAbsOrigin()
local point6 = Entities:FindByName( nil, "Spawner6"):GetAbsOrigin()
local point7 = Entities:FindByName( nil, "Spawner7"):GetAbsOrigin()
local point8 = Entities:FindByName( nil, "Spawner8"):GetAbsOrigin()
local point9 = Entities:FindByName( nil, "Spawner9"):GetAbsOrigin()
local point10 = Entities:FindByName( nil, "Spawner10"):GetAbsOrigin()
local point11 = Entities:FindByName( nil, "Spawner11"):GetAbsOrigin()
local point12 = Entities:FindByName( nil, "Spawner12"):GetAbsOrigin()
local point13 = Entities:FindByName( nil, "Spawner13"):GetAbsOrigin()
local point14 = Entities:FindByName( nil, "Spawner14"):GetAbsOrigin()
local point15 = Entities:FindByName( nil, "Spawner15"):GetAbsOrigin()
local point16 = Entities:FindByName( nil, "Spawner16"):GetAbsOrigin()      -- Записываем в переменную 'point' координаты нашего спавнера 'spawnerino'
local waypoint = Entities:FindByName( nil, "center") -- Записываем в переменную 'waypoint' координаты первого бокса way1
 
 local unit = CreateUnitByName("npc_dota_abomination_boss" , point1, true, nil, nil, DOTA_TEAM_BADGUYS)
 unit:SetInitialGoalEntity( waypoint )
local unit = CreateUnitByName("npc_dota_abomination_boss" , point2, true, nil, nil, DOTA_TEAM_BADGUYS)
unit:SetInitialGoalEntity( waypoint )
local unit = CreateUnitByName("npc_dota_abomination_boss" , point3, true, nil, nil, DOTA_TEAM_BADGUYS)
unit:SetInitialGoalEntity( waypoint )
local unit = CreateUnitByName("npc_dota_abomination_boss" , point4, true, nil, nil, DOTA_TEAM_BADGUYS)
unit:SetInitialGoalEntity( waypoint )
local unit = CreateUnitByName("npc_dota_abomination_boss" , point5, true, nil, nil, DOTA_TEAM_BADGUYS)
unit:SetInitialGoalEntity( waypoint )
local unit = CreateUnitByName("npc_dota_abomination_boss" , point6, true, nil, nil, DOTA_TEAM_BADGUYS)
unit:SetInitialGoalEntity( waypoint )
local unit = CreateUnitByName("npc_dota_abomination_boss" , point7, true, nil, nil, DOTA_TEAM_BADGUYS)
unit:SetInitialGoalEntity( waypoint )
local unit = CreateUnitByName("npc_dota_abomination_boss" , point8, true, nil, nil, DOTA_TEAM_BADGUYS)
unit:SetInitialGoalEntity( waypoint )
local unit = CreateUnitByName("npc_dota_abomination_boss" , point9, true, nil, nil, DOTA_TEAM_BADGUYS)
unit:SetInitialGoalEntity( waypoint )
local unit = CreateUnitByName("npc_dota_abomination_boss" , point10, true, nil, nil, DOTA_TEAM_BADGUYS)
unit:SetInitialGoalEntity( waypoint )
local unit = CreateUnitByName("npc_dota_abomination_boss" , point11, true, nil, nil, DOTA_TEAM_BADGUYS)
unit:SetInitialGoalEntity( waypoint )
local unit = CreateUnitByName("npc_dota_abomination_boss" , point12, true, nil, nil, DOTA_TEAM_BADGUYS)
unit:SetInitialGoalEntity( waypoint )
local unit = CreateUnitByName("npc_dota_abomination_boss" , point13, true, nil, nil, DOTA_TEAM_BADGUYS)
unit:SetInitialGoalEntity( waypoint )
local unit = CreateUnitByName("npc_dota_abomination_boss" , point14, true, nil, nil, DOTA_TEAM_BADGUYS)
unit:SetInitialGoalEntity( waypoint )
local unit = CreateUnitByName("npc_dota_abomination_boss" , point15, true, nil, nil, DOTA_TEAM_BADGUYS)
unit:SetInitialGoalEntity( waypoint )
local unit = CreateUnitByName("npc_dota_abomination_boss" , point16, true, nil, nil, DOTA_TEAM_BADGUYS) --[[ Создаем юнита 'example_unit_', в конце к названию добавится 1,2,3,4 или 5, в зависимости от раунда, и в итоге получатся наши example_unit_1, example_unit_2 и т.д. Юнит появится в векторе point + RandomVector (RandomFloat( 0, 200 ) ) - point - наша переменная, а рандомный вектор добавляется для того, чтобы мобы не появлялись в одной точке и не застревали. Мобы будут за силы света. ]]
 unit:SetInitialGoalEntity( waypoint ) -- Посылаем мобов на наш way1, координаты которого мы записали в переменную 'waypoint'
 end
 
Такая проблемка, создал вторую карту, расставил точки для спавна как в первой карте, но юнит не спавнится, чекал первую карту с такими же параметрами, там спавнит. Пробовал создать новую точку все это прописал в gamemode все равно не спавнит этого юнита. SpawnCreeps3 - пробовал на новую точку, эффекта 0

Начинай с малого. Проверь есть ли вообще такой юнит в npc_units, потом попробуй запустить функцию через триггер а не через OnGameInProgress, и на крайняк попробуй высылать крипов куда им нужно через ExecuteOrderFromTable. Вдобавок впиши звук при срабатывании триггера, чтоб всегда "слышать" событие.



Код:
function SpawnCreeps( trigger )

    EmitSoundOn( "Hero_TemplarAssassin.Trap.Cast", trigger.activator )

    local sTriggerName = thisEntity:GetName()
    local vRandomOffset = Vector( RandomInt( -50, 50 ), RandomInt( -250, 250 ), 0 ) -- x y z
    --
    local hBear = Entities:FindByName( nil, sTriggerName .. "_spawn" ):GetAbsOrigin()
    local hBoar = Entities:FindByName( nil, sTriggerName .. "_spawn_sup" ):GetAbsOrigin()
    --
    local nBoarSpawn = RandomInt( 0, 1 )
    local nBearSpawnMed = RandomInt( 0, 1 )
    local nBearSpawnSmall = RandomInt( 1, 2 )
    --
    for i = 1,nBearSpawnSmall do
    Timers:CreateTimer(0.1,function ()
        local unit = CreateUnitByName("npc_dota_small_bear", hBear+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
        end)
    end

    for k = 1,nBearSpawnMed do
    Timers:CreateTimer(0.1,function ()
        local unit = CreateUnitByName("npc_dota_medium_bear", hBear+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
        end)
    end

    if nBearSpawnMed == 0 then
            for j = 1,1 do
            Timers:CreateTimer(0.1,function ()
                local unit = CreateUnitByName("npc_dota_medium_bear", hBoar+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
                ExecuteOrderFromTable({ UnitIndex = unit:GetEntityIndex(),
                                    OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
                                    Position = hBear+vRandomOffset, Queue = true} )
                end)
            end
            for k = 1,nBearSpawnSmall do
            Timers:CreateTimer(0.1,function ()
                local unit = CreateUnitByName("npc_dota_medium_bear", hBear+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
               
                end)
            end
            for i = 1,nBoarSpawn do
            Timers:CreateTimer(0.1,function ()
                local unit = CreateUnitByName("npc_dota_dragging_boar", hBoar+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
                ExecuteOrderFromTable({ UnitIndex = unit:GetEntityIndex(),
                                OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
                                Position = hBear+vRandomOffset, Queue = true} )
                end)
            end
    else -- nBearSpawnMed == 1
        for j = 1,nBoarSpawn do
        Timers:CreateTimer(0.1,function ()
            local unit = CreateUnitByName("npc_dota_dragging_boar", hBoar+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
            ExecuteOrderFromTable({ UnitIndex = unit:GetEntityIndex(),
                            OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
                            Position = hBear+vRandomOffset, Queue = true} )
            end)
        end
    end

    if nBearSpawnSmall == 1 then
        for l = 1,nBearSpawnMed do
        Timers:CreateTimer(0.1,function ()
            local unit = CreateUnitByName("npc_dota_medium_bear", hBear+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)

            end)
        end
        for i = 1,nBearSpawnMed do
        Timers:CreateTimer(0.1,function ()
            local unit = CreateUnitByName("npc_dota_medium_bear", hBoar+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
            ExecuteOrderFromTable({ UnitIndex = unit:GetEntityIndex(),
                            OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
                            Position = hBear+vRandomOffset, Queue = true} )
            end)
        end
    else
        for j = 1,nBoarSpawn do
        Timers:CreateTimer(0.1,function ()
            local unit = CreateUnitByName("npc_dota_dragging_boar", hBoar+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
            ExecuteOrderFromTable({ UnitIndex = unit:GetEntityIndex(),
                            OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
                            Position = hBear+vRandomOffset, Queue = true} )
            end)
        end
        for k = 1,nBearSpawnSmall do
        Timers:CreateTimer(0.1,function ()
            local unit = CreateUnitByName("npc_dota_small_bear", hBoar+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
            ExecuteOrderFromTable({ UnitIndex = unit:GetEntityIndex(),
                            OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
                            Position = hBear+vRandomOffset, Queue = true} )
            end)
        end
    end


    thisEntity:Destroy() -- После прочтения сжечь
end
 
Начинай с малого. Проверь есть ли вообще такой юнит в npc_units, потом попробуй запустить функцию через триггер а не через OnGameInProgress, и на крайняк попробуй высылать крипов куда им нужно через ExecuteOrderFromTable. Вдобавок впиши звук при срабатывании триггера, чтоб всегда "слышать" событие.



Код:
function SpawnCreeps( trigger )

    EmitSoundOn( "Hero_TemplarAssassin.Trap.Cast", trigger.activator )

    local sTriggerName = thisEntity:GetName()
    local vRandomOffset = Vector( RandomInt( -50, 50 ), RandomInt( -250, 250 ), 0 ) -- x y z
    --
    local hBear = Entities:FindByName( nil, sTriggerName .. "_spawn" ):GetAbsOrigin()
    local hBoar = Entities:FindByName( nil, sTriggerName .. "_spawn_sup" ):GetAbsOrigin()
    --
    local nBoarSpawn = RandomInt( 0, 1 )
    local nBearSpawnMed = RandomInt( 0, 1 )
    local nBearSpawnSmall = RandomInt( 1, 2 )
    --
    for i = 1,nBearSpawnSmall do
    Timers:CreateTimer(0.1,function ()
        local unit = CreateUnitByName("npc_dota_small_bear", hBear+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
        end)
    end

    for k = 1,nBearSpawnMed do
    Timers:CreateTimer(0.1,function ()
        local unit = CreateUnitByName("npc_dota_medium_bear", hBear+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
        end)
    end

    if nBearSpawnMed == 0 then
            for j = 1,1 do
            Timers:CreateTimer(0.1,function ()
                local unit = CreateUnitByName("npc_dota_medium_bear", hBoar+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
                ExecuteOrderFromTable({ UnitIndex = unit:GetEntityIndex(),
                                    OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
                                    Position = hBear+vRandomOffset, Queue = true} )
                end)
            end
            for k = 1,nBearSpawnSmall do
            Timers:CreateTimer(0.1,function ()
                local unit = CreateUnitByName("npc_dota_medium_bear", hBear+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
             
                end)
            end
            for i = 1,nBoarSpawn do
            Timers:CreateTimer(0.1,function ()
                local unit = CreateUnitByName("npc_dota_dragging_boar", hBoar+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
                ExecuteOrderFromTable({ UnitIndex = unit:GetEntityIndex(),
                                OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
                                Position = hBear+vRandomOffset, Queue = true} )
                end)
            end
    else -- nBearSpawnMed == 1
        for j = 1,nBoarSpawn do
        Timers:CreateTimer(0.1,function ()
            local unit = CreateUnitByName("npc_dota_dragging_boar", hBoar+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
            ExecuteOrderFromTable({ UnitIndex = unit:GetEntityIndex(),
                            OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
                            Position = hBear+vRandomOffset, Queue = true} )
            end)
        end
    end

    if nBearSpawnSmall == 1 then
        for l = 1,nBearSpawnMed do
        Timers:CreateTimer(0.1,function ()
            local unit = CreateUnitByName("npc_dota_medium_bear", hBear+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)

            end)
        end
        for i = 1,nBearSpawnMed do
        Timers:CreateTimer(0.1,function ()
            local unit = CreateUnitByName("npc_dota_medium_bear", hBoar+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
            ExecuteOrderFromTable({ UnitIndex = unit:GetEntityIndex(),
                            OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
                            Position = hBear+vRandomOffset, Queue = true} )
            end)
        end
    else
        for j = 1,nBoarSpawn do
        Timers:CreateTimer(0.1,function ()
            local unit = CreateUnitByName("npc_dota_dragging_boar", hBoar+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
            ExecuteOrderFromTable({ UnitIndex = unit:GetEntityIndex(),
                            OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
                            Position = hBear+vRandomOffset, Queue = true} )
            end)
        end
        for k = 1,nBearSpawnSmall do
        Timers:CreateTimer(0.1,function ()
            local unit = CreateUnitByName("npc_dota_small_bear", hBoar+vRandomOffset, true, nil, nil, DOTA_TEAM_BADGUYS)
            ExecuteOrderFromTable({ UnitIndex = unit:GetEntityIndex(),
                            OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
                            Position = hBear+vRandomOffset, Queue = true} )
            end)
        end
    end


    thisEntity:Destroy() -- После прочтения сжечь
end
на первой катре то все работает, почему на второй отказывается работать? вызвать просто через create работает, также пробовал спавнить через onNpcspawned эфетка нет
 
Так и не нашел ответ на вопрос, Почему спавны на первой карте работают нормально а на второй не спавнит? ((

Вряд ли кто-то ответит. Может быть у тебя в addon_game_mode стоит проверка на имя карты?
Или может ты что-то забыл скопировать из одной карты в другую. Сам как считаешь?
 
Вряд ли кто-то ответит. Может быть у тебя в addon_game_mode стоит проверка на имя карты?
Или может ты что-то забыл скопировать из одной карты в другую. Сам как считаешь?
))) кароч я хз, дебилизм какой то, спавн 2 работает как швейцарские часы а вот который нужен нет, спанит одного и все XD
 
Может быть кто-нибудь мне объяснит почему не ставится иконка предмета, пишу так
"AbilityTextureName" "Items/testImg".
Сама иконка лежит по этому пути: кастомка/resource/flash3/images/Items/testImg.png
 
Подскажите, пожалуйста, как в lua проверить на кого(союзник или противник) был применён предмет
 
Здраствуйте столкнулся с проблемой, при попытке сделать "full build" вылезает ошибка, и это не только на одной карте, а на всех, которых я пытаюсь забилдить. Помогите, пожалуйста !
 

Вложения

  • wvy8nOyTuyQ.jpg
    wvy8nOyTuyQ.jpg
    181.8 KB · Просмотры: 6
  • 1553680068148.jpg
    1553680068148.jpg
    3.3 MB · Просмотры: 6
Статус
В этой теме нельзя размещать новые ответы.
Реклама: