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

Короче создаю партикль и он не удаляется как надо

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

Оффлайн Se7eN

  • Продвинутый
  • 298
  • Мощь: 11
  • King
Код
   ParticleManager:DestroyParticle(particle[i], true)

Путь к партиклю: particles/units/heroes/hero_chaos_knight/chaos_knight_bolt_msg.vpcf

в общем это сообщение от Хаос найта, которое высвечивается и выражается в секундах стана от первой способности

Оффлайн Adam Smith

  • Друзья CG
  • 468
  • Мощь: 6
  • жрять жри его
Код
   ParticleManager:DestroyParticle(particle[i], true)

Путь к партиклю: particles/units/heroes/hero_chaos_knight/chaos_knight_bolt_msg.vpcf

в общем это сообщение от Хаос найта, которое высвечивается и выражается в секундах стана от первой способности
Делай через
Код
   self:AddParticle( nFXIndex1, false, false, -1, false, true )
И удалять ничего не придется
By PG.Freeman

Оффлайн Se7eN

  • Продвинутый
  • 298
  • Мощь: 11
  • King
есть какой-нибудь грамотный пример юза?

Оффлайн CryDeS

  • Друзья CG
  • 1200
  • Мощь: 12
Мне обычно лень искать какие то специализированые функции удаления, так что я обычно делаю через UTIL_Remove(object). Удаляет все, а если объект уже удален он не крашнет гейммод(но если подать на него Nil, то крашнет).

Оффлайн Adam Smith

  • Друзья CG
  • 468
  • Мощь: 6
  • жрять жри его
есть какой-нибудь грамотный пример юза?
Код
bynder_rim = class ( {})
LinkLuaModifier ("modifier_bynder_rim","heroes/hero_bynder/bynder_rim.lua", LUA_MODIFIER_MOTION_NONE)

function bynder_rim:GetCooldown (nLevel)
    if self:GetCaster ():HasScepter () then
        return self:GetSpecialValueFor ("cooldown_scepter")
    end

    return self.BaseClass.GetCooldown (self, nLevel)
end

function bynder_rim:GetManaCost (hTarget)
    if self:GetCaster ():HasScepter () then
        return 0
    else
        return self.BaseClass.GetManaCost (self, hTarget)
    end
end

function bynder_rim:OnSpellStart ()
    local hCaster = self:GetCaster()

    local duration = self:GetSpecialValueFor ("duration")
    if hCaster:HasScepter() then
        duration = self:GetSpecialValueFor ("duration_scepter")
    end

    hCaster:AddNewModifier (self:GetCaster (), self, "modifier_bynder_rim", { duration = duration } )
    EmitSoundOn ("Hero_ChaosKnight.Phantasm", hTarget)
    EmitSoundOn ("Hero_ChaosKnight.Phantasm.Plus", hTarget)
end

modifier_bynder_rim = class ( {})

function modifier_bynder_rim:IsBuff ()
    return true
end

function modifier_bynder_rim:IsHidden()
    return false
end

function modifier_bynder_rim:IsPurgable()
    return false
end

function modifier_bynder_rim:OnCreated ()
    if IsServer() then
        local caster = self:GetParent ()
        local nFXIndex1 = ParticleManager:CreateParticle ("particles/byonder_ball_sphere.vpcf", PATTACH_ABSORIGIN_FOLLOW, caster)
        ParticleManager:SetParticleControl (nFXIndex1, 0, caster:GetAbsOrigin () )
        ParticleManager:SetParticleControl (nFXIndex1, 1, Vector (1, 0, 0))
        ParticleManager:SetParticleControl (nFXIndex1, 2, caster:GetAbsOrigin () )
        ParticleManager:SetParticleControl (nFXIndex1, 5, caster:GetAbsOrigin () )
        ParticleManager:SetParticleControl (nFXIndex1, 6, caster:GetAbsOrigin () )
        ParticleManager:SetParticleControl (nFXIndex1, 7, caster:GetAbsOrigin () )
        self:AddParticle( nFXIndex1, false, false, -1, false, true )
        self.damage = 0
    end
end

function modifier_bynder_rim:DeclareFunctions ()
    local funcs = {
        MODIFIER_EVENT_ON_TAKEDAMAGE
    }

    return funcs
end


function modifier_bynder_rim:OnTakeDamage(params)
    if self:GetParent () == params.unit then
        self.damage = self.damage + params.damage
        self:GetParent ():SetHealth(self:GetParent ():GetHealth() + params.damage)
        self:GetParent ():SetBaseDamageMax(self.damage)
       
        local RemovePositiveBuffs = false
        local RemoveDebuffs = true
        local BuffsCreatedThisFrameOnly = false
        local RemoveStuns = true
        local RemoveExceptions = false
        self:GetParent():Purge( RemovePositiveBuffs, RemoveDebuffs, BuffsCreatedThisFrameOnly, RemoveStuns, RemoveExceptions)
    end
end


function modifier_bynder_rim:CheckState()
    local state = {
        [MODIFIER_STATE_NO_HEALTH_BAR] = true,
    }

    return state
end     

function modifier_bynder_rim:OnDestroy()
    self.damage = 0
    self:GetParent ():SetBaseDamageMax(43)
end



By PG.Freeman

Оффлайн Илья

  • Супермодератор
  • 1909
  • Мощь: 16
Если ты удаляешь его спустя какое-то время, то все дело кроется в его идентификаторе, которого может уже и не быть в момент времени, когда ты пытаешься удалить партикль.