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

Статус
В этой теме нельзя размещать новые ответы.
2 вопроса:
Видел в елемент тд у юнитов в датадрайвен были параметры "Element","Requirements", но как с ними в луа взаимодействовать?
Как узнать является ли ентити юнитом и как узнать DOTA_UNIT_TARGET_TYPE юнита?
А посмотреть код дальше в етд вера не позволила? LoadKeyValues(путь к файлу), возврашает луа таблицу со всеми ключами-значениями
 
  • Нравится
Реакции: shesmu
Возможно ли сделать так, чтобы у игрока был везде туман войны, даже союзники и башни не давали бы ему обзор? Если да, то как?
 
Timers:CreateTimer(ModifyAgility(caster:GetAgility()+2)
return 60
end )
Так?
Почти.
Lua:
Timers(function()
 caster:ModifyAgility(2)
 return 30
end)
Но сколько агилы давать и интервал лучше вынести в дд и получать через GetSpecialValueFor и мб тебе нужны проверки на то, жив ли кастер или нет, мб кулдаун запускать на пасивке и тд
 
Как поменять героя на другого сохранив все предметы , золото и опыт ?
В моем скрипте где-то ошибка...
+ шмотки такие как рапиры выпадают при перемене героя , получается 2 дубликата 1 у героя , второй на земле !

Код:
    local oldHero = keys.caster
    local playerID = oldHero:GetPlayerID()

     local newHero = nil
    local newHeroName = "npc_dota_hero_treant"
    local ability = nil
    local abilityCount = oldHero:GetAbilityCount()
    local gold = oldHero:GetGold() or 0
    local experience = PlayerResource:GetTotalEarnedXP(playerID)
    if playerID ~= nil and playerID ~= -1 then
        items_table = {}
        for i = 0, 11 do
            local item = oldHero:GetItemInSlot( i )

            if item ~= nil then         
                table.insert(items_table , item)
            end
            
        end
        
        for i = 0, abilityCount-1 do
            ability = oldHero:GetAbilityByIndex(i)
            if ability then
                oldHero:RemoveAbility(ability:GetAbilityName())
            end
        end
        
        newHero = PlayerResource:ReplaceHeroWith(playerID, newHeroName, gold, experience)
        newHero:RespawnHero(false, false)

        local items = items_table or {}
         for _,item in pairs(items) do   
             newHero:AddItem(item)
         end       
         UTIL_Remove(oldHero)
   end
 
Как поменять героя на другого сохранив все предметы , золото и опыт ?
В моем скрипте где-то ошибка...
+ шмотки такие как рапиры выпадают при перемене героя , получается 2 дубликата 1 у героя , второй на земле !

Код:
    local oldHero = keys.caster
    local playerID = oldHero:GetPlayerID()

     local newHero = nil
    local newHeroName = "npc_dota_hero_treant"
    local ability = nil
    local abilityCount = oldHero:GetAbilityCount()
    local gold = oldHero:GetGold() or 0
    local experience = PlayerResource:GetTotalEarnedXP(playerID)
    if playerID ~= nil and playerID ~= -1 then
        items_table = {}
        for i = 0, 11 do
            local item = oldHero:GetItemInSlot( i )

            if item ~= nil then        
                table.insert(items_table , item)
            end
           
        end
       
        for i = 0, abilityCount-1 do
            ability = oldHero:GetAbilityByIndex(i)
            if ability then
                oldHero:RemoveAbility(ability:GetAbilityName())
            end
        end
       
        newHero = PlayerResource:ReplaceHeroWith(playerID, newHeroName, gold, experience)
        newHero:RespawnHero(false, false)

        local items = items_table or {}
         for _,item in pairs(items) do  
             newHero:AddItem(item)
         end      
         UTIL_Remove(oldHero)
   end
Удаляй шмотки у старого героя и делов то.
 
Как поменять героя на другого сохранив все предметы , золото и опыт ?
В моем скрипте где-то ошибка...
+ шмотки такие как рапиры выпадают при перемене героя , получается 2 дубликата 1 у героя , второй на земле !

Код:
    local oldHero = keys.caster
    local playerID = oldHero:GetPlayerID()

     local newHero = nil
    local newHeroName = "npc_dota_hero_treant"
    local ability = nil
    local abilityCount = oldHero:GetAbilityCount()
    local gold = oldHero:GetGold() or 0
    local experience = PlayerResource:GetTotalEarnedXP(playerID)
    if playerID ~= nil and playerID ~= -1 then
        items_table = {}
        for i = 0, 11 do
            local item = oldHero:GetItemInSlot( i )

            if item ~= nil then        
                table.insert(items_table , item)
            end
           
        end
       
        for i = 0, abilityCount-1 do
            ability = oldHero:GetAbilityByIndex(i)
            if ability then
                oldHero:RemoveAbility(ability:GetAbilityName())
            end
        end
       
        newHero = PlayerResource:ReplaceHeroWith(playerID, newHeroName, gold, experience)
        newHero:RespawnHero(false, false)

        local items = items_table or {}
         for _,item in pairs(items) do  
             newHero:AddItem(item)
         end      
         UTIL_Remove(oldHero)
   end



ты не удаляешь предметы поэтому рапиры падают на землю

Lua:
        for i = 0, 11 do
            local item = oldHero:GetItemInSlot( i )
            if item ~= nil then     
                table.insert(items_table , item)
                UTIL_Remove(item) --должно помочь
            end
        end
 
ты не удаляешь предметы поэтому рапиры падают на землю

Lua:
        for i = 0, 11 do
            local item = oldHero:GetItemInSlot( i )
            if item ~= nil then    
                table.insert(items_table , item)
                UTIL_Remove(item) --должно помочь
            end
        end
вроде таким образом удаляется предмет , но это надо проверить ...
 
Нет, ты нигде предметы не удаляешь. По идее вместо утил ремува лучше использовать более гуманные способы уничтожения, по типу ремувитем(если есть), ремувабилити, ну в крайнем случае ремувселф. Я не уверен, но скорее всего они лучше оптимизированы
 
как сделать , чтобы юнита нельзы было атаковать автоатаков ( например как мины течиса или мк в форме ) ?
 
в файлах доты, которые ещё через, ну ту прогу открываются, через которую ещё чужие кастомки смотрят, как же она там...
 
Статус
В этой теме нельзя размещать новые ответы.
Реклама: