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

Статус
В этой теме нельзя размещать новые ответы.

almazist1

Продвинутый
Такая проблемка, создал вторую карту, расставил точки для спавна как в первой карте, но юнит не спавнится, чекал первую карту с такими же параметрами, там спавнит. Пробовал создать новую точку все это прописал в 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
 

.фи

Активный
21 Мар 2018
117
16
Такая проблемка, создал вторую карту, расставил точки для спавна как в первой карте, но юнит не спавнится, чекал первую карту с такими же параметрами, там спавнит. Пробовал создать новую точку все это прописал в 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
 

almazist1

Продвинутый
Начинай с малого. Проверь есть ли вообще такой юнит в 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 эфетка нет
 

.фи

Активный
21 Мар 2018
117
16
Так и не нашел ответ на вопрос, Почему спавны на первой карте работают нормально а на второй не спавнит? ((

Вряд ли кто-то ответит. Может быть у тебя в addon_game_mode стоит проверка на имя карты?
Или может ты что-то забыл скопировать из одной карты в другую. Сам как считаешь?
 

almazist1

Продвинутый
Вряд ли кто-то ответит. Может быть у тебя в addon_game_mode стоит проверка на имя карты?
Или может ты что-то забыл скопировать из одной карты в другую. Сам как считаешь?
))) кароч я хз, дебилизм какой то, спавн 2 работает как швейцарские часы а вот который нужен нет, спанит одного и все XD
 

CryLegion

Пользователь
28 Фев 2019
27
1
Может быть кто-нибудь мне объяснит почему не ставится иконка предмета, пишу так
"AbilityTextureName" "Items/testImg".
Сама иконка лежит по этому пути: кастомка/resource/flash3/images/Items/testImg.png
 

CryLegion

Пользователь
28 Фев 2019
27
1
Подскажите, пожалуйста, как в lua проверить на кого(союзник или противник) был применён предмет
 

zidm_maxim

Пользователь
28 Мар 2019
18
0
Здраствуйте столкнулся с проблемой, при попытке сделать "full build" вылезает ошибка, и это не только на одной карте, а на всех, которых я пытаюсь забилдить. Помогите, пожалуйста !
 

Вложения

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