Would this work or not?

[lua]local emeta = FindMetaTable(“Entity”)
local pmeta = FindMetaTable(“Player”)

local trees = {“models/props/de_inferno/tree_large.mdl”,“models/props/de_inferno/tree_small.mdl”,“models/props_foliage/tree_deciduous_03a.mdl”,“models/props_foliage/tree_deciduous_01a.mdl”,“models/props_foliage/oak_tree01.mdl”,“models/props_foliage/tree_cliff_01a.mdl”,
“models/props_foliage/tree_deciduous_01a-lod.mdl”,“models/props_foliage/tree_deciduous_02a.mdl”}

function emeta:IsTree()
for k,v in pairs(trees) do
if string.lower(v) == self:GetModel() or string.gsub(string.lower(v),"/","\") == self:GetModel() then
return true
end
end

return false

end

function emeta:ShowTree()
self:SetNoDraw(false)
self:SetNotSolid(false)
self:SetSolid(SOLID_VPHYSICS)
end

function emeta:HideTree()
self:SetNoDraw(true)
self:SetNotSolid(true)
self:SetSolid(SOLID_NONE)
end

function pmeta:ChopTree(time, data)
time = time or 2
if !data return end
self:Freeze(true)
local ent = data.Entity
local chance = data.Chance
local Min = data.MinAmoumt
local Max = data.MaxAmount
local Out = math.random(Min,Max)
self:AddItem(“log”, Out)
self:GiveMoney(Out)
ent.BackTime = CurTime()+60
timer.Simple(time, function(self) self:Freeze(false) end))
end

local RerunTime = CurTime()+10
hook.Add(“Think”, “TreeRespawn”, function()
if CurTime() < RerunTime then return end
RerunTime = CurTime()+10
for k,v in pairs(ents.GetAll()) do
if v:IsTree() then
if CurTime() >= v.BackTime then
v:ShowTree()
else
v:HideTree()
end
end
end
end)[/lua]

The Weapon Running it:
[lua] if tr.Entity:IsTree() then
local data = {}
data.Entity = tr.Entity
data.Chance = 60
data.MinAmount = 1
data.MaxAmount = 4
self.Owner:ChopTree(2,data)
end[/lua]

Seen as we still have no garrysmod to script in, would this work?

wait untill garrysmod is working again then try, I wouldn’t recommend scripting large sections without testing so just take a break