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

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

I_GRIN_I

Друзья CG
15 Мар 2016
1,335
105
2 вопроса:
Видел в елемент тд у юнитов в датадрайвен были параметры "Element","Requirements", но как с ними в луа взаимодействовать?
Как узнать является ли ентити юнитом и как узнать DOTA_UNIT_TARGET_TYPE юнита?
А посмотреть код дальше в етд вера не позволила? LoadKeyValues(путь к файлу), возврашает луа таблицу со всеми ключами-значениями
 
  • Нравится
Реакции: shesmu

Pancer

Активный
30 Мар 2017
127
5
steamcommunity.com
Проект
MARVEL Heroes
Возможно ли сделать так, чтобы у игрока был везде туман войны, даже союзники и башни не давали бы ему обзор? Если да, то как?
 

I_GRIN_I

Друзья CG
15 Мар 2016
1,335
105
Timers:CreateTimer(ModifyAgility(caster:GetAgility()+2)
return 60
end )
Так?
Почти.
Lua:
Timers(function()
 caster:ModifyAgility(2)
 return 30
end)
Но сколько агилы давать и интервал лучше вынести в дд и получать через GetSpecialValueFor и мб тебе нужны проверки на то, жив ли кастер или нет, мб кулдаун запускать на пасивке и тд
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense
Как поменять героя на другого сохранив все предметы , золото и опыт ?
В моем скрипте где-то ошибка...
+ шмотки такие как рапиры выпадают при перемене героя , получается 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
 

I_GRIN_I

Друзья CG
15 Мар 2016
1,335
105
Как поменять героя на другого сохранив все предметы , золото и опыт ?
В моем скрипте где-то ошибка...
+ шмотки такие как рапиры выпадают при перемене героя , получается 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
Удаляй шмотки у старого героя и делов то.
 

bobi

Активный
24 Июл 2017
99
18
Как поменять героя на другого сохранив все предметы , золото и опыт ?
В моем скрипте где-то ошибка...
+ шмотки такие как рапиры выпадают при перемене героя , получается 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
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense
ты не удаляешь предметы поэтому рапиры падают на землю

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

I_GRIN_I

Друзья CG
15 Мар 2016
1,335
105
Нет, ты нигде предметы не удаляешь. По идее вместо утил ремува лучше использовать более гуманные способы уничтожения, по типу ремувитем(если есть), ремувабилити, ну в крайнем случае ремувселф. Я не уверен, но скорее всего они лучше оптимизированы
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense
как сделать , чтобы юнита нельзы было атаковать автоатаков ( например как мины течиса или мк в форме ) ?
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense

Дикий Пёс

Друзья CG
28 Июн 2017
411
96
Проект
Petri Reborn
в файлах доты, которые ещё через, ну ту прогу открываются, через которую ещё чужие кастомки смотрят, как же она там...
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense
Статус
В этой теме нельзя размещать новые ответы.
Реклама: