CustomGames.ru - Dota 2 пользовательские игры

Исчезают умения после смерти иллюзии

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Danis

  • Продвинутый
  • 268
  • Мощь: 2
Сделал абилку которая призывает 1 иллюзию героя и при спавне имеет шанс получить умения оригинала, но после того как иллюзия умирает через некоторое время у оригинала пропадают те умения которые были у иллюзии. Собственно как это исправить?
Код: (Код призыва)
function item_mirror_blade:OnSpellStart(  )
local caster = self:GetCaster()
ProjectileManager:ProjectileDodge(caster)
caster:EmitSound("DOTA_Item.Manta.Activate")

local id0 = ParticleManager:CreateParticle("particles/items2_fx/manta_phase.vpcf",PATTACH_ABSORIGIN_FOLLOW, caster)
   
    caster:Purge(false, true, false, false, false)
caster:AddNoDraw()
local illusion_duration = self:GetSpecialValueFor("duration")
local illusion_outgoing_damage = self:GetSpecialValueFor("out_damage") - 100
local illusion_incoming_damage = self:GetSpecialValueFor("take_damage") - 100
local count = self:GetSpecialValueFor("illusions")
local player_id = caster:GetPlayerID()
local ability_chance = self:GetSpecialValueFor("ability_chance")
local cpl = self:GetSpecialValueFor("ability_chance_per_level") * caster:GetLevel()
local chance = ability_chance + cpl
if IsServer() then
caster_health = caster:GetHealthPercent()
caster_mana = caster:GetManaPercent()
caster_agi = caster:GetBaseAgility()
caster_str = caster:GetBaseStrength()
caster_int = caster:GetBaseIntellect()
end

for i=1, count do
local unit = CreateUnitByName(caster:GetName(), caster:GetAbsOrigin()+Vector(RandomInt(-120,120),RandomInt(-120,120),0), true, caster, nil, caster:GetTeam())
local caster_level = caster:GetLevel()
    for i = 1, caster_level - 1 do
        unit:HeroLevelUp(false)
    end
    unit:SetControllableByPlayer(player_id, true)

unit:SetBaseAgility(caster_agi)
unit:SetBaseIntellect(caster_int)
unit:SetBaseStrength(caster_str)
unit:SetHealth(unit:GetMaxHealth() * caster_health * 0.01)
unit:SetMana(unit:GetMaxMana() * caster_mana * 0.01)
   
    for ability_slot = 0, 5 do
        local individual_ability = caster:GetAbilityByIndex(ability_slot)
        if individual_ability and RollPercentage(chance) then
            local illusion_ability = unit:SetAbilityByIndex(individual_ability,ability_slot)
            if illusion_ability then
                illusion_ability:SetLevel(individual_ability:GetLevel())
            end
        end
    end

    for item_slot = 0, 5 do
        local individual_item = caster:GetItemInSlot(item_slot)
        if individual_item then
            local illusion_duplicate_item = CreateItem(individual_item:GetName(), unit, unit)
            unit:AddItem(illusion_duplicate_item)
        end
    end
end

    unit:AddNewModifier(caster, self, "modifier_illusion", {duration = illusion_duration, outgoing_damage = illusion_outgoing_damage, incoming_damage = illusion_incoming_damage})
    unit:MakeIllusion()

caster:SetAbsOrigin(caster:GetAbsOrigin()+Vector(RandomInt(-120,120),RandomInt(-120,120),0))
FindClearSpaceForUnit(caster,caster:GetAbsOrigin(),false)
caster:RemoveNoDraw()

ParticleManager:DestroyParticle(id0,false)
end
Создай Героя
Мод  - steamcommunity.com/...ils/?id=750146414
[свернуть]

Оффлайн remeercs

  • 64
  • Мощь: 1
Сделал абилку которая призывает 1 иллюзию героя и при спавне имеет шанс получить умения оригинала, но после того как иллюзия умирает через некоторое время у оригинала пропадают те умения которые были у иллюзии. Собственно как это исправить?
Код: (Код призыва)
function item_mirror_blade:OnSpellStart(  )
local caster = self:GetCaster()
ProjectileManager:ProjectileDodge(caster)
caster:EmitSound("DOTA_Item.Manta.Activate")

local id0 = ParticleManager:CreateParticle("particles/items2_fx/manta_phase.vpcf",PATTACH_ABSORIGIN_FOLLOW, caster)
   
    caster:Purge(false, true, false, false, false)
caster:AddNoDraw()
local illusion_duration = self:GetSpecialValueFor("duration")
local illusion_outgoing_damage = self:GetSpecialValueFor("out_damage") - 100
local illusion_incoming_damage = self:GetSpecialValueFor("take_damage") - 100
local count = self:GetSpecialValueFor("illusions")
local player_id = caster:GetPlayerID()
local ability_chance = self:GetSpecialValueFor("ability_chance")
local cpl = self:GetSpecialValueFor("ability_chance_per_level") * caster:GetLevel()
local chance = ability_chance + cpl
if IsServer() then
caster_health = caster:GetHealthPercent()
caster_mana = caster:GetManaPercent()
caster_agi = caster:GetBaseAgility()
caster_str = caster:GetBaseStrength()
caster_int = caster:GetBaseIntellect()
end

for i=1, count do
local unit = CreateUnitByName(caster:GetName(), caster:GetAbsOrigin()+Vector(RandomInt(-120,120),RandomInt(-120,120),0), true, caster, nil, caster:GetTeam())
local caster_level = caster:GetLevel()
    for i = 1, caster_level - 1 do
        unit:HeroLevelUp(false)
    end
    unit:SetControllableByPlayer(player_id, true)

unit:SetBaseAgility(caster_agi)
unit:SetBaseIntellect(caster_int)
unit:SetBaseStrength(caster_str)
unit:SetHealth(unit:GetMaxHealth() * caster_health * 0.01)
unit:SetMana(unit:GetMaxMana() * caster_mana * 0.01)
   
    for ability_slot = 0, 5 do
        local individual_ability = caster:GetAbilityByIndex(ability_slot)
        if individual_ability and RollPercentage(chance) then
            local illusion_ability = unit:SetAbilityByIndex(individual_ability,ability_slot)
            if illusion_ability then
                illusion_ability:SetLevel(individual_ability:GetLevel())
            end
        end
    end

    for item_slot = 0, 5 do
        local individual_item = caster:GetItemInSlot(item_slot)
        if individual_item then
            local illusion_duplicate_item = CreateItem(individual_item:GetName(), unit, unit)
            unit:AddItem(illusion_duplicate_item)
        end
    end
end

    unit:AddNewModifier(caster, self, "modifier_illusion", {duration = illusion_duration, outgoing_damage = illusion_outgoing_damage, incoming_damage = illusion_incoming_damage})
    unit:MakeIllusion()

caster:SetAbsOrigin(caster:GetAbsOrigin()+Vector(RandomInt(-120,120),RandomInt(-120,120),0))
FindClearSpaceForUnit(caster,caster:GetAbsOrigin(),false)
caster:RemoveNoDraw()

ParticleManager:DestroyParticle(id0,false)
end


извини что не по теме но все молчат посмотри вот это плез customgames.ru/fo...8.msg8295#msg8295

Оффлайн Danis

  • Продвинутый
  • 268
  • Мощь: 2

извини что не по теме но все молчат посмотри вот это плез customgames.ru/fo...8.msg8295#msg8295

а смысл сюда писать если твою тему и так видно всем кто сидит в скриптинге? Если не пишут значит не могут ответить.
« Последнее редактирование: 15-02-2017, 14:10:53 от Danis »
Создай Героя
Мод  - steamcommunity.com/...ils/?id=750146414
[свернуть]

Оффлайн MahouShoujo

  • 171
  • Мощь: 3
Дык потому что абилки это сущности и ты ему не добавляешь новые абилки а расшариваешь абилки кастера с ним. Соответственно иллюзия умирает и её абилки удаляются. Используй AddAbility