|
|
|
-- __ _ _______ _ __
|
|
|
|
-- / / /\ | | |__ __| | | \ \
|
|
|
|
-- / / / \ | |_ __ ___ | | ___ ___| |__ \ \
|
|
|
|
-- < < / /\ \ | | '_ ` _ \| |/ _ \/ __| '_ \ > >
|
|
|
|
-- \ \ / ____ \| | | | | | | | __/ (__| | | | / /
|
|
|
|
-- \_\ /_/ \_\_|_| |_| |_|_|\___|\___|_| |_| /_/
|
|
|
|
|
|
|
|
Quantum.Server.Property = {}
|
|
|
|
|
|
|
|
Quantum.Server.Property.Properties = {}
|
|
|
|
|
|
|
|
function Quantum.Server.Property.Register( propid, tbl )
|
|
|
|
if( Quantum.Server.Property.Properties[propid] == nil ) then
|
|
|
|
local prop = {
|
|
|
|
name = tbl.name || "Private Property",
|
|
|
|
id = propid,
|
|
|
|
owner = nil,
|
|
|
|
vec1 = tbl.vec1,
|
|
|
|
vec2 = tbl.vec2,
|
|
|
|
price = tbl.price || Quantum.Server.DefualtPropertyPrice
|
|
|
|
}
|
|
|
|
|
|
|
|
prop.zone = Quantum.Server.Zone.Register( propid .. "_property", { -- register the zone for the property
|
|
|
|
name = prop.name,
|
|
|
|
vec1 = prop.vec1,
|
|
|
|
vec2 = prop.vec2,
|
|
|
|
property = propid
|
|
|
|
} )
|
|
|
|
|
|
|
|
Quantum.Server.Property.Properties[propid] = prop
|
|
|
|
return prop
|
|
|
|
else
|
|
|
|
Quantum.Error( "Property id '" .. propid .. "' already exists! Aborting..." )
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function Quantum.Server.Property.Get( propid ) return Quantum.Server.Property.Properties[propid] end
|
|
|
|
|
|
|
|
-- Player functions --
|
|
|
|
|
|
|
|
function Quantum.Server.Property.SetOwner( propid, charid )
|
|
|
|
Quantum.Server.Property.Properties[propid].owner = charid
|
|
|
|
end
|
|
|
|
|
|
|
|
hook.Add( "Move", "Quantum_Move_Property_CheckInZone", function( ply, mv )
|
|
|
|
if( ply.isloaded ) then
|
|
|
|
if( mv:GetVelocity() != Vector( 0, 0, 0 ) ) then
|
|
|
|
local zone = Quantum.Server.Zone.GetCurrentZone( ply:GetPos() )
|
|
|
|
if( zone != nil ) then
|
|
|
|
ply:ChatPrint( zone.name )
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end)
|
|
|
|
|
|
|
|
-- Door functions --
|
|
|
|
|
|
|
|
function Quantum.Server.Property.LockDoor( ent )
|
|
|
|
if( Quantum.Server.DoorClasses[ent:GetClass()] && IsValid( ent ) ) then --
|
|
|
|
ent:Fire( "lock", "", 0 )
|
|
|
|
ent:EmitSound( Quantum.DoorSounds.Lock )
|
|
|
|
ent.islocked = true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function Quantum.Server.Property.UnlockDoor( ent )
|
|
|
|
if( Quantum.Server.DoorClasses[ent:GetClass()] && IsValid( ent ) ) then --
|
|
|
|
ent:Fire( "unlock", "", 0 )
|
|
|
|
ent:EmitSound( Quantum.DoorSounds.Unlock )
|
|
|
|
ent.islocked = false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function Quantum.Server.Property.SwitchLockDoor( ent )
|
|
|
|
if( Quantum.Server.DoorClasses[ent:GetClass()] && IsValid( ent ) ) then --
|
|
|
|
if( ent.islocked ) then
|
|
|
|
Quantum.Server.Property.UnlockDoor( ent )
|
|
|
|
else
|
|
|
|
Quantum.Server.Property.LockDoor( ent )
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function Quantum.Server.Property.PlayerSwitchLock( pl, doorent )
|
|
|
|
local zone = Quantum.Server.Zone.GetCurrentZone( pl:GetPos() )
|
|
|
|
if( zone == nil ) then return end
|
|
|
|
if( Quantum.Server.Zone.DoorIsInZone(doorent, zone.id) ) then
|
|
|
|
local prop = Quantum.Server.Property.Get( zone.property )
|
|
|
|
if( prop.owner == pl || pl:IsSuperAdmin() ) then
|
|
|
|
Quantum.Server.Property.SwitchLockDoor( doorent )
|
|
|
|
else
|
|
|
|
return
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|