Distroying weapons

How can I save the weapon from destroying when player is reequipped wiyh another weapon?

The script doesn't seem to have any issues. Did you make it a direct child of the equipment object?

--Sets the "EQUIPMENT" variable to the parent object
local EQUIPMENT = script.parent
local TRIGGER = script.parent:FindDescendantByType("Trigger")

function Drop(equipment)
    equipment:Unequip()
    -- The pickup trigger needs to be re-enabled (if there is one)
    local pickupTrigger = equipment:FindDescendantByType("Trigger")

    if pickupTrigger then
        pickupTrigger.collision = Collision.FORCE_ON
    end
end

function OnEquipped(equipment, player)
    for _, e in ipairs(player:GetEquipment()) do
        if e ~= equipment and e.socket == equipment.socket then
            Drop(e)
        end
    end
end

function OnInteracted(trigger, player)
    TRIGGER.collision = Collision.FORCE_OFF
    EQUIPMENT:Equip(player)
end

EQUIPMENT.equippedEvent:Connect(OnEquipped)
TRIGGER.interactedEvent:Connect(OnInteracted)

To prevent the original equipment's destruction upon picking up new equipment, you will need to modify the code used to handle the original equipment (this code/script will most likely be a direct child of the original equipment object).

I'm guessing that when the equippedEvent is fired, your weapon checks if the new equipment/weapon is going to take the same place as the old weapon. If so, the original weapon will use Desotry() to destroy itself. If you want the original equipment to unequip itself you can replace the Destroy() function with the Unequip() function. If you want to continue holding the original equipment even after new equipment has been picked up you can instead remove the Destroy() function from the code. This is entirely guesswork and I would need to know where this weapon you are using comes from (Community Content, or is it a CORE Template) to provide an actual solution.

Equipment Documentation
Core Object Documentation

Where should I replase destroy() with unequip() ? I use core weapon

This the script that I use from core API
local EQUIPMENT = script.parent
local TRIGGER = script.parent:FindDescendantByType("Trigger")

function Drop(equipment)
equipment:Unequip()
-- The pickup trigger needs to be re-enabled (if there is one)
local pickupTrigger = equipment:FindDescendantByType("Trigger")

if pickupTrigger then
    pickupTrigger.collision = Collision.FORCE_ON
end

end

function OnEquipped(equipment, player)
for _, e in ipairs(player:GetEquipment()) do
if e ~= equipment and e.socket == equipment.socket then
Drop(e)
end
end
end

function OnInteracted(trigger, player)
TRIGGER.collision = Collision.FORCE_OFF
EQUIPMENT:Equip(player)
end

EQUIPMENT.equippedEvent:Connect(OnEquipped)
TRIGGER.interactedEvent:Connect(OnInteracted)