Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Converted using Mokiros's Model to Script plugin
- -- Converted string size: 20181
- local genv={}
- local Scripts = {
- function() --------
- -- Gateship Script
- -- version 9
- --------
- -- by Ganondude
- --------
- -- Released: December 31, 2013
- -- Last Updated: December 31, 2013
- --------
- -- For advanced users: Documentation on the public properties and functions can be found at the bottom of this script.
- --------
- -- General Settings:
- local speedMax = 200 -- The ship's maximum speed.
- local acceleration = 5 -- Factor affecting the ship's rate of acceleration.
- local maneuverability = 5 -- Factor affecting the rate at which the ship can turn.
- local speedEnergy = speedMax*0.75 -- The speed at which additional energy is consumed.
- local speedDrivePod = speedMax*0.5 -- The speed at which the drive pods are automatically extended.
- local energyMax = 1000 -- The ship's maximum energy.
- local energyRegen = 10 -- The amount of energy restored per second.
- local cloakDrain = 6 -- The amount of energy lost per second while cloaked.
- local shieldDrain = 14 -- The amount of energy lost per second while shielded.
- local speedDrain = 0.25 -- The amount of energy lost per second for every unit of speed above speedEnergy.
- local minCloakEnergy = 100 -- Minimum amount of energy required to engage the cloak.
- local minShieldEnergy = 150 -- Minimum amount of energy required to engage the shield.
- --------
- -- Weapon Settings:
- local weaponDamage = 25 -- The damage done by a single shot to another ship.
- local weaponCooldown = 1.5 -- The time required between shots.
- local shieldDamage = 16 -- The amount of energy drained when weapons impact a shield as a factor of weaponDamage. (shieldDamage*weaponDamage = energy drained)
- local teamDamage = 0.5 -- The amount of damage done to team mates' ships as a factor of weaponDamage.
- local explosionPressure = 10 -- The pressure of a shot's explosion.
- local explosionRadius = 8 -- The radius of a shot's explosion.
- local canCauseCraters = false -- If true, explosions caused by ship's weapons can create craters in terrain.
- local firingAngle = math.pi/8 -- The maximum angle between the front of the ship and the mouse when firing weapons.
- --------
- -- DHD Settings:
- local dhdEnabled = true -- If true, the ship will be able to remotely dial a Stargate.
- local dhdRange = 200 -- The maximum range of the ship's DHD.
- local dhdDialMode = 2 -- The Stargate dial mode used by the ship's DHD.
- --------
- -- Aesthetic Settings:
- local shieldColour = "Bright blue" -- The colour of the ship's shield.
- local shieldTransparency = 0.8 -- The transparency of the ship's shield.
- local weaponsColour = "Cool yellow" -- The colour of the ship's weapon fire.
- local useTeamColourForHull = false -- If true, the ship's hull will be recoloured to match the pilot's team colour.
- local useTeamColourForThrusters = true -- If true, the ship's engines will be recoloured to match pilot's team colour.
- local useTeamColourForShield = false -- If true, the ship's shield will be recoloured to match the pilot's team colour.
- local useTeamColourForWeapons = true -- If true, the ship's weapons will be recoloured to match the pilot's team colour.
- --------
- -- Advanced Settings:
- local lifespan = 600 -- The amount of time (in seconds) that will pass before an unoccupied ship will remove itself.
- local despawnRange = 100 -- The minimum distance required between the ship and any player before it will remove itself.
- local seatNames = {"PilotSeat","CopilotSeat","CockpitSeat","PassengerSeat"} -- The names of the seats, in order of control privileges.
- local leftPodNames = {"LJoint1","LJoint2","LPart1","LPart2","LThruster"} -- The names of parts in the left drive pod.
- local rightPodNames = {"RJoint1","RJoint2","RPart1","RPart2","RThruster"} -- The names of parts in the right drive pod.
- local leftWeaponNames = {"LJoint3","LPart3","LDrone"} -- The names of parts in the left weapon pod.
- local rightWeaponNames ={"RJoint3","RPart3","RDrone"} -- The names of parts in the right weapon pod.
- local guiName = "GateshipGui" -- The name of the control GUI (a child of this script) to be given to passengers.
- ----
- --------
- -- Do not alter anything below this point.
- --------
- ----
- local ALL
- local isCloaked = false
- local isShielded = false
- local isMidOpen = false
- local isRearOpen = false
- local isPodsOpen = true
- local isWeaponsOpen = true
- local isCloakDisabled = false
- local isShieldDisabled = false
- local isWeaponsDisabled = false
- local isForwardLightOn = false
- local isCloaking = false
- local isShielding = false
- local isMidMoving = false
- local isRearMoving = false
- local isPodsMoving = false
- local isWeaponsMoving = false
- local isFiring = false
- local isUpdating = false
- local hasBeenActive = false
- --
- local energy = energyMax
- local energyChange = 0
- local fireSide = -1
- local initialRearDoorAngle = 0
- local tSinceLastActive = 0
- local passengersCloaked = {}
- --setmetatable(passengersCloaked, {__mode = "k"})
- local passengersShielded = {}
- --setmetatable(passengersShielded, {__mode = "k"})
- local originalHullColour
- local originalThrusterColour
- local deathconn
- --
- local this = {
- -- Properties:
- Model,
- MainPart,
- VehicleHealth,
- TeamColor,
- Neutral,
- EngineActive,
- CloakActive,
- ShieldActive,
- MidOpen,
- RearOpen,
- PodsOpen,
- WeaponsOpen,
- ForwardLightOn,
- DHD,
- Energy,
- Fire,
- Speed,
- Acceleration,
- Maneuverability,
- MaxSpeed,
- -- Methods:
- IsActive = function() return isActive() end,
- GetPassengers = function() return getPassengers() end,
- HasPassengers = function() return (#getPassengers() > 0) end,
- IsPassenger = function(self,value) return isPassenger(value) end,
- GetPilot = function() return getPilot() end,
- GetCopilot = function() return getCopilot() end,
- DisableCloak = function(self,value)
- if (isCloakDisabled) then return end
- isCloakDisabled = true
- if (value) then
- wait(value)
- isCloakDisabled = false
- end
- end,
- DisableShield = function(self,value)
- if (isShieldDisabled) then return end
- isShieldDisabled = true
- if (value) then
- wait(value)
- isShieldDisabled = false
- end
- end,
- DisableWeapons = function(self,value)
- if (isWeaponsDisabled) then return end
- isWeaponsDisabled = true
- if (value) then
- wait(value)
- isWeaponsDisabled = false
- end
- end,
- EnableCloak = function() isCloakDisabled = false end,
- EnableShield = function() isShieldDisabled = false end,
- EnableWeapons = function() isWeaponsDisabled = false end,
- Repair = function(self,value) self.VehicleHealth.Value = self.VehicleHealth.Value + math.abs(value) end,
- TakeDamage = function(self,value1,value2) takeDamage(value1,value2) end,
- }
- --------
- -- Status Functions:
- function isActive()
- return this.EngineActive.Value
- end
- function isPassenger(character)
- if (not character) then return end
- local t = getPassengers()
- for i = 1,#t do
- if (character == t[i]) then return true end
- end
- return false
- end
- --------
- -- Get Functions:
- function getCenter()
- return this.MainPart.CFrame*CFrame.new(0,5,0)
- end
- function getPilot()
- return getSittingIn(this.Model:FindFirstChild(seatNames[1]))
- end
- function getCoPilot()
- return getSittingIn(this.Model:FindFirstChild(seatNames[2]))
- end
- function getPassengers()
- local list = {}
- for k,v in pairs(game.Players:GetPlayers()) do
- local character = v.Character
- if (character) and (character.Humanoid.Health > 0) and (contains(character:FindFirstChild("Torso"))) then
- table.insert(list,character)
- end
- end
- return list
- end
- function getSittingIn(seat)
- if (not seat) then return end
- local seatWeld = seat:findFirstChild("SeatWeld")
- if (seatWeld) and (seatWeld.Part1) then
- local torso = seatWeld.Part1
- local character = torso.Parent
- local h = character:findFirstChild("Humanoid")
- if (h) and (h.Health > 0) then
- return character
- end
- end
- return nil
- end
- --------
- -- Find Functions:
- function findPartsInModel(nameList)
- local list = {}
- if (not nameList) or (#nameList == 0) then return list end
- for k,v in pairs(this.Model:GetChildren()) do
- if (v:IsA("BasePart")) then
- for i = 1,#nameList do
- if (string.find(string.lower(v.Name),string.lower(nameList[i]))) then
- table.insert(list,v)
- end
- end
- end
- end
- return list
- end
- --------
- -- Part Spawning Functions:
- function spawnShield()
- local cf = getCenter()
- local z = this.MainPart.Size.Z
- local p = Instance.new("Part",this.Model)
- p.Name = "Shield"
- p.Anchored = false
- p.Archivable = false
- p.CanCollide = false
- --p.Locked = true
- p.BottomSurface = 0 -- Smooth
- p.TopSurface = 0 -- Smooth
- p.FormFactor = 0 -- Symmetric
- p.Size = Vector3.new(1,1,1)
- p.BrickColor = BrickColor.new(shieldColour)
- p.Material = 256 -- Plastic
- p.Reflectance = 0
- p.Transparency = shieldTransparency
- p.CFrame = cf*CFrame.new(0,-0.8,4)
- local m = Instance.new("SpecialMesh",p)
- m.MeshType = 3 -- Sphere
- m.Scale = Vector3.new(z*1.15,z*0.65,z*1.6)
- weld(this.MainPart,p)
- if (useTeamColourForShield) then
- local player = game.Players:GetPlayerFromCharacter(getPilot())
- if (player) and (not player.Neutral) then
- p.BrickColor = player.TeamColor
- end
- end
- return p
- end
- function spawnWeaponShot()
- local cf = getCenter()
- local p = Instance.new("Part",game.Workspace)
- p.Name = "Drone"
- p.Anchored = false
- p.Archivable = true
- p.CanCollide = true
- --p.Locked = true
- p.BottomSurface = 0 -- Smooth
- p.TopSurface = 0 -- Smooth
- p.FormFactor = 3 -- Custom
- p.Size = Vector3.new(1.25,1.25,2.5)
- p.BrickColor = BrickColor.new(weaponsColour)
- p.Material = 256 -- Plastic
- p.Reflectance = 0.2
- p.Transparency = 0
- local m = Instance.new("SpecialMesh",p)
- m.MeshType = 3 -- Sphere
- m.Scale = Vector3.new(1,1,1)
- if (useTeamColourForWeapons) then
- local player = game.Players:GetPlayerFromCharacter(getPilot())
- if (player) and (not player.Neutral) then
- p.BrickColor = player.TeamColor
- end
- end
- local l = Instance.new("PointLight",p)
- l.Brightness = 1
- l.Color = p.BrickColor.Color
- l.Range = 6
- return p
- end
- --------
- -- Animation Functions:
- function animMidDoor(open)
- if (isMidDoorMoving) or (open == isMidOpen) then
- this.MidOpen.Value = not isMidOpen
- return
- end
- isMidDoorMoving = true
- local engine = this.MainPart
- local leftDoor = this.Model:FindFirstChild("MidDoorLeft")
- local rightDoor = this.Model:FindFirstChild("MidDoorRight")
- local wl,wr
- local n = (open) and 1 or -1
- for i = 1,25 do
- wl = wl or getJointConnecting(leftDoor,engine)
- if (wl) then
- local cf = leftDoor.CFrame*CFrame.new(-0.1*n,0,0)
- wl.C0 = cf:inverse()*CFrame.new(cf.p)
- wl.C1 = engine.CFrame:inverse()*CFrame.new(cf.p)
- end
- wr = wr or getJointConnecting(rightDoor,engine)
- if (wr) then
- local cf = rightDoor.CFrame*CFrame.new(0.1*n,0,0)
- wr.C0 = cf:inverse()*CFrame.new(cf.p)
- wr.C1 = engine.CFrame:inverse()*CFrame.new(cf.p)
- end
- wait(0.02)
- end
- isMidOpen = open
- isMidDoorMoving = false
- end
- function animRearDoor(open)
- if (isRearDoorMoving) or ((this.ShieldActive.Value) and (open)) then
- this.RearOpen.Value = not isRearOpen
- return
- end
- isRearDoorMoving = true
- local engine = this.MainPart
- local rearDoor = this.Model:FindFirstChild("RearDoor")
- local w
- repeat
- local n = (open) and 1 or -1
- local rotPoint = engine.CFrame*CFrame.new(0,0,engine.Size.Z/2 - 0.651) --0.538
- local angle = getAngleBetween(engine.CFrame.lookVector,rearDoor.CFrame.lookVector*-1)
- w = w or getJointConnecting(rearDoor,engine)
- if (w) then
- local cf = (rotPoint*CFrame.Angles(math.rad(n),0,0)):toWorldSpace(rotPoint:toObjectSpace(rearDoor.CFrame))
- w.C0 = cf:inverse()*CFrame.new(cf.p)
- w.C1 = engine.CFrame:inverse()*CFrame.new(cf.p)
- end
- wait()
- until ((open) and (angle >= math.pi - 0.02)) or ((not open) and (angle <= initialRearDoorAngle + 0.02))
- isRearOpen = open
- isRearDoorMoving = false
- end
- function animDrivePods(open)
- if (isPodsMoving) or (open == isPodsOpen) then return end
- isPodsMoving = true
- local engine = this.MainPart
- local leftDrive = findPartsInModel(leftPodNames)
- local rightDrive = findPartsInModel(rightPodNames)
- local n = (isPodsOpen) and -1 or 1
- local c = (isPodsOpen) and 18 or 1
- local jl0 = this.Model:FindFirstChild("LJoint1")
- local jl1 = this.Model:FindFirstChild("LJoint2")
- local jr0 = this.Model:FindFirstChild("RJoint1")
- local jr1 = this.Model:FindFirstChild("RJoint2")
- local wl0,wl1,wr0,wr1
- for i = 1,18 do
- local hor1 = (c < 15) and (engine.CFrame*CFrame.Angles(0,math.pi/2,0)).lookVector*0.5*-n or Vector3.new(0,0,0) -- move horizontally
- local hor2 = (c < 17) and (engine.CFrame*CFrame.Angles(0,math.pi/2,0)).lookVector*0.5*-n or Vector3.new(0,0,0) -- move horizontally
- local ver = (c > 12) and (engine.CFrame*CFrame.Angles(math.pi/2,0,0)).lookVector*0.5*n or Vector3.new(0,0,0) -- move vertically
- if (jl0) and (jl1) then
- wl0 = wl0 or getJointConnecting(jl0,engine)
- if (wl0) then
- local cf = jl0.CFrame - hor1
- wl0.C0 = cf:inverse()*CFrame.new(cf.p)
- wl0.C1 = engine.CFrame:inverse()*CFrame.new(cf.p)
- end
- wl1 = wl1 or getJointConnecting(jl1,engine)
- if (wl1) then
- local cf = jl1.CFrame - hor2 + ver
- wl1.C0 = cf:inverse()*CFrame.new(cf.p)
- wl1.C1 = engine.CFrame:inverse()*CFrame.new(cf.p)
- end
- end
- if (jr0) and (jr1) then
- wr0 = wr0 or getJointConnecting(jr0,engine)
- if (wr0) then
- local cf = jr0.CFrame + hor1
- wr0.C0 = cf:inverse()*CFrame.new(cf.p)
- wr0.C1 = engine.CFrame:inverse()*CFrame.new(cf.p)
- end
- wr1 = wr1 or getJointConnecting(jr1,engine)
- if (wr1) then
- local cf = jr1.CFrame + hor2 + ver
- wr1.C0 = cf:inverse()*CFrame.new(cf.p)
- wr1.C1 = engine.CFrame:inverse()*CFrame.new(cf.p)
- end
- end
- if (c == 8) then
- for k,v in pairs(leftDrive) do
- if (v:IsA("BasePart")) and (v.Name:find("2") or v.Name:find("Thruster")) then
- v.Transparency = (n > 0) and engine.Transparency or 1
- v.CanCollide = (n > 0)
- end
- end
- for k,v in pairs(rightDrive) do
- if (v:IsA("BasePart")) and (v.Name:find("2") or v.Name:find("Thruster")) then
- v.Transparency = (n > 0) and engine.Transparency or 1
- v.CanCollide = (n > 0)
- end
- end
- end
- c = c + n
- wait(0.1)
- end
- isPodsOpen = open
- isPodsMoving = false
- end
- function animWeaponPods(open)
- if (isWeaponsMoving) or (open == isWeaponsOpen) then return end
- isWeaponsMoving = true
- local engine = this.MainPart
- local leftWeapons = findPartsInModel(leftWeaponNames)
- local rightWeapons = findPartsInModel(rightWeaponNames)
- local n = (isWeaponsOpen) and -1 or 1
- local c = (isWeaponsOpen) and 6 or 1
- local jl = this.Model:FindFirstChild("LJoint3")
- local jr = this.Model:FindFirstChild("RJoint3")
- local wl,wr
- for i = 1,6 do
- local hor = (c < 15) and (engine.CFrame*CFrame.Angles(0,math.pi/2,0)).lookVector*0.5*-n or Vector3.new(0,0,0) -- move horizontally
- if (jl) then
- wl = wl or getJointConnecting(jl,engine)
- if (wl) then
- local cf = jl.CFrame - hor
- wl.C0 = cf:inverse()*CFrame.new(cf.p)
- wl.C1 = engine.CFrame:inverse()*CFrame.new(cf.p)
- end
- end
- if (jr) then
- wr = wr or getJointConnecting(jr,engine)
- if (wr) then
- local cf = jr.CFrame + hor
- wr.C0 = cf:inverse()*CFrame.new(cf.p)
- wr.C1 = engine.CFrame:inverse()*CFrame.new(cf.p)
- end
- end
- if (c == 3) then
- for k,v in pairs(leftWeapons) do
- if (v:IsA("BasePart")) and (v.Name:find("Drone")) then
- v.Transparency = (n > 0) and engine.Transparency or 1
- v.CanCollide = (n > 0)
- end
- end
- for k,v in pairs(rightWeapons) do
- if (v:IsA("BasePart")) and (v.Name:find("Drone")) then
- v.Transparency = (n > 0) and engine.Transparency or 1
- v.CanCollide = (n > 0)
- end
- end
- end
- c = c + n
- wait(0.1)
- end
- isWeaponsOpen = open
- isWeaponsMoving = false
- end
- --------
- -- Changed Event Functions:
- function onActiveChanged()
- local bg = this.MainPart:FindFirstChild("BodyGyro")
- local bp = this.MainPart:FindFirstChild("BodyPosition")
- local bv = this.MainPart:FindFirstChild("BodyVelocity")
- if (this.EngineActive.Value) then
- hasBeenActive = true
- bg.cframe = this.MainPart.CFrame
- bg.maxTorque = Vector3.new(4e4,4e4,4e4)
- bv.maxForce = Vector3.new(4e8,4e8,4e8)
- bp.position = this.MainPart.Position + Vector3.new(0,2,0)
- this.RearOpen.Value = false
- this.Speed.Value = acceleration*2
- else
- bg.maxTorque = Vector3.new(0,0,0)
- bv.maxForce = Vector3.new(0,0,0)
- bp.maxForce = Vector3.new(0,0,0)
- while (isCloaking) do wait() end
- this.CloakActive.Value = false
- while (isShielding) do wait() end
- this.ShieldActive.Value = false
- this.MidOpen.Value = true
- this.RearOpen.Value = true
- this.PodsOpen.Value = false
- this.Speed.Value = 0
- end
- update()
- end
- function onHealthChanged()
- local h = this.VehicleHealth.Value
- if (h <= 0) then
- local tag = this.Model:FindFirstChild("creator")
- if (tag) then
- for k,v in pairs(getPassengers()) do
- local cTag = tag:Clone()
- cTag.Parent = v.Humanoid
- game.Debris:AddItem(cTag,2)
- end
- end
- destroy()
- local ex = Instance.new("Explosion")
- ex.BlastPressure = math.random(3e5,5e5)
- ex.BlastRadius = math.random(10,25)
- ex.Position = (getCenter()*CFrame.new(math.random(-4,4),0,math.random(-8,4))).p
- ex.Parent = game.Workspace
- game.Debris:AddItem(ex,2)
- end
- end
- function onCloakChanged()
- cloak(this.CloakActive.Value)
- update()
- end
- function onShieldChanged()
- shield(this.ShieldActive.Value)
- update()
- end
- function onPodsOpenChanged()
- local open = this.PodsOpen.Value
- local absSpeed = math.abs(this.Speed.Value)
- if (isPodsMoving) or (open == isPodsOpen) or (open and (not isActive())) then
- this.PodsOpen.Value = not isPodsOpen
- return
- end
- while (isWeaponsMoving) do wait() end
- if (open) then
- animDrivePods(open)
- this.WeaponsOpen.Value = open
- else
- if (this.Speed.Value > speedDrivePod) then
- local f = function()
- for i = this.Speed.Value,speedDrivePod,-acceleration do
- this.Speed.Value = i
- wait()
- end
- this.Speed.Value = speedDrivePod
- end
- Spawn(f)
- end
- this.WeaponsOpen.Value = open
- animDrivePods(open)
- end
- end
- function onWeaponsOpenChanged()
- local open = this.WeaponsOpen.Value
- if (isWeaponsMoving) or (open == isWeaponsOpen) or (open and (not isActive())) or (open and (isPodsOpen == isPodsMoving)) or (isWeaponsDisabled) then
- this.WeaponsOpen.Value = isWeaponsOpen
- else
- animWeaponPods(open)
- end
- end
- function onForwardLightChanged()
- isForwardLightOn = this.ForwardLightOn.Value
- if (this.Model:FindFirstChild("ForwardLightPart")) then
- this.Model.ForwardLightPart.SpotLight.Enabled = isForwardLightOn
- end
- end
- function onDHDChanged()
- if (this.DHD.Value == "") or (_G.all_Stargates == nil) then return end
- local sg = _G.all_Stargates[1]:FindByProximity(this.MainPart.Position,dhdRange)
- if (sg) and (not sg:IsActive()) and (string.find(this.DHD.Value,sg:GetActivationChar())) then
- sg.DialMode.Value = dhdDialMode
- sg.Destination.Value = this.DHD.Value
- sg.Destination.Changed:wait()
- this.DHD.Value = ""
- elseif (not sg) or (sg:IsActive()) then
- wait()
- this.DHD.Value = ""
- end
- end
- function onSpeedChanged()
- if (isActive()) then
- this.Speed.Value = (this.Speed.Value < speedMax/-2) and speedMax/-2 or ((this.Speed.Value > speedMax) and speedMax or this.Speed.Value) -- -speedMax/2 <= this.Speed.Value <= speedMax
- if (this.Speed.Value == 0) then
- this.MainPart.BodyPosition.maxForce = Vector3.new(8e8,8e8,8e8)
- this.MainPart.BodyPosition.position = this.MainPart.Position
- else
- this.MainPart.BodyPosition.maxForce = Vector3.new(0,0,0)
- end
- if (not isPodsOpen) and (math.abs(this.Speed.Value) > speedDrivePod) then
- this.PodsOpen.Value = true
- end
- else
- this.Speed.Value = 0
- end
- update()
- end
- --------
- -- ChildAdded/Removed Event Functions:
- function onAddedToSeat(seat,child)
- if (not child:IsA("Weld")) or (this.VehicleHealth.Value <= 0) then return end
- local torso = child.Part1
- local character = torso.Parent
- if (torso) and (character) then
- local player = game.Players:GetPlayerFromCharacter(character)
- if (player) then
- local gui = script:FindFirstChild(guiName):Clone()
- gui.Parent = player.PlayerGui
- local mVal = Instance.new("ObjectValue",gui)
- mVal.Name = "Model"
- mVal.Value = this.Model
- local cVal = Instance.new("IntValue",gui)
- cVal.Name = "ControlLevel"
- for k,v in pairs(seatNames) do
- if (v == seat.Name) then
- cVal.Value = k
- break
- end
- end
- if (seat.Name == seatNames[1]) then
- this.TeamColor.Value = player.TeamColor
- this.Neutral.Value = player.Neutral
- if (not player.Neutral) then
- for k,v in pairs(this.Model:GetChildren()) do
- if (v:IsA("BasePart")) then
- if (useTeamColourForHull) and (v.BrickColor == originalHullColour) then
- v.BrickColor = player.TeamColor
- end
- if (useTeamColourForThrusters) and (v.Name:find("Thruster") or v.Name:find("Joint2")) then
- v.BrickColor = player.TeamColor
- end
- if (useTeamColourForWeapons) and (v.Name:find("Drone")) then
- v.BrickColor = player.TeamColor
- end
- end
- end
- end
- deathconn = player.CharacterRemoving:connect(function()
- wait()
- if (#getPassengers() == 0) then
- this.EngineActive.Value = false
- else
- for i = 1,math.abs(this.Speed.Value),acceleration do
- this.Speed.Value = this.Speed.Value - i*(this.Speed.Value > 0 and 1 or -1)
- wait(0.1)
- end
- this.Speed.Value = 0
- end
- end)
- end
- end
- end
- end
- function onRemovedFromSeat(seat,child)
- if (not child:IsA("Weld")) then return end
- local torso = child.Part1
- local character = torso.Parent
- if (torso) and (character) then
- local player = game.Players:GetPlayerFromCharacter(character)
- if (player) then
- local gui = player.PlayerGui:FindFirstChild(guiName)
- if (gui) then
- gui.RemoveGui.Value = true
- game.Debris:AddItem(gui,1)
- end
- if (seat.Name == seatNames[1]) then
- if (character) and (character.Humanoid.Health <= 0) then
- player.CharacterRemoving:wait()
- wait()
- end
- this.Neutral.Value = true
- if (not player.Neutral) then
- for k,v in pairs(this.Model:GetChildren()) do
- if (v:IsA("BasePart")) then
- if (useTeamColourForHull) and (v.BrickColor == player.TeamColor) then
- v.BrickColor = originalHullColour
- end
- if (useTeamColourForThrusters) and (v.Name:find("Thruster") or v.Name:find("Joint2")) then
- v.BrickColor = originalThrusterColour
- end
- if (useTeamColourForWeapons) and (v.Name:find("Drone")) then
- v.BrickColor = BrickColor.new(weaponsColour)
- end
- end
- end
- end
- if (deathconn) then
- deathconn:disconnect()
- end
- end
- end
- end
- end
- function onAddedToFire(child)
- if (not isFiring) then
- isFiring = true
- local v = child.Value
- local v0 = this.MainPart.CFrame.lookVector
- local v1 = (v - this.MainPart.Position).unit
- local a = math.acos(v1:Dot(v0))
- if (a <= firingAngle) then -- inside of cone
- fire(v)
- wait(weaponCooldown)
- elseif (v == Vector3.new(0,0,0)) then
- fire()
- wait(weaponCooldown)
- end
- isFiring = false
- end
- wait()
- child:Destroy()
- end
- --------
- -- Touched Event Functions:
- function onWeaponShotTouched(shot,hit)
- if (not shot) or (not hit) or (not hit.Parent) or (not hit.CanCollide) or (hit:IsDescendantOf(this.Model)) then return end
- local player = game.Players:GetPlayerFromCharacter(getPilot())
- local teamColor = hit.Parent:FindFirstChild("TeamColor")
- local neutral = (teamColor) and teamColor:FindFirstChild("Neutral")
- local isNeutral = (neutral and neutral.Value) or this.Neutral.Value
- local isSameTeam = (not isNeutral) and (teamColor and teamColor.Value == this.TeamColor.Value)
- local dmg = weaponDamage*(isSameTeam and teamDamage or 1)
- local bp = explosionPressure
- local obj = getFromModel(hit.Parent)
- if (obj) then
- obj:TakeDamage(dmg,player)
- bp = 0
- elseif (not obj) and (hit.Parent:FindFirstChild("VehicleHealth")) then
- hit.Parent.VehicleHealth.Value = hit.Parent.VehicleHealth.Value - (hit.Parent:FindFirstChild("VehicleShield") and 0 or dmg)
- bp = 0
- end
- local ex = Instance.new("Explosion")
- ex.BlastPressure = bp
- ex.BlastRadius = explosionRadius
- ex.ExplosionType = (canCauseCraters) and 1 or 0
- ex.Position = shot.Position
- if (bp > 0) then
- ex.Hit:connect(function(hit)
- if (hit.Parent) and (hit.Parent:FindFirstChild("Humanoid")) and (player) then
- local tag = Instance.new("ObjectValue",hit.Parent.Humanoid)
- tag.Name = "creator"
- tag.Value = player
- game.Debris:AddItem(tag,2)
- end
- end)
- end
- ex.Parent = game.Workspace
- game.Debris:AddItem(ex,2)
- shot:Destroy()
- end
- --------
- -- Special Functions:
- function contains(part)
- if (part == nil) or (not part:IsA("BasePart")) or (part:IsDescendantOf(this.Model)) then return false end
- local c = getCenter()*CFrame.new(0,0,3)
- local h = this.MainPart.Size.Z + 6
- local r = 7 -- known value (radius of ship hull)
- local up = c.lookVector
- if ((part.Position - c.p).magnitude > math.min(h,r*2)) then return false end
- for i = -1,1,2 do
- local a = up*i
- local b = part.Position - (c.p - a*h/2)
- local dot = a:Dot(b)
- if (dot > h) or (dot < 0) then return false end
- end
- return (Ray.new(c.p - up*h/2, up):Distance(part.Position) <= r)
- end
- function takeDamage(amount,creator)
- amount = math.abs(amount) or 0
- local vHealth = this.VehicleHealth
- local h0 = vHealth.Value
- local h1 = vHealth.Value
- if (isShielded) then
- energyChange = energyChange - amount*shieldDamage
- local f = function()
- local shield = this.Model:FindFirstChild("Shield")
- for i = 0,shieldTransparency,0.1 do
- if (not shield.Parent) then break end
- shield.Transparency = i
- wait(0.1)
- end
- end
- Spawn(f)
- else
- h1 = h0 - amount
- end
- if (h0 > 0) and (h1 <= 0) and (creator) then
- local tag = Instance.new("ObjectValue",this.Model)
- tag.Name = "creator"
- tag.Value = creator
- game.Debris:AddItem(tag,2)
- end
- vHealth.Value = h1
- end
- function cloak(on)
- if (this.ShieldActive.Value) or (on and energy < minCloakEnergy) then this.CloakActive.Value = false return end
- if (isCloaking) then this.CloakActive.Value = not isCloaked return end
- if (isCloaked == on) then return end
- isCloaking = true
- if (on) then
- if (not isActive()) then this.CloakActive.Value = false return end
- for k,v in pairs(getPassengers()) do
- recursiveTransparency(v,1)
- if (v:FindFirstChild("Head")) then
- v.Head.face.Transparency = 1
- end
- if (v:FindFirstChild("Torso")) then
- v.Torso.roblox.Transparency = 1
- end
- passengersCloaked[v] = true
- end
- for i = 1,10 do
- recursiveTransparency(this.Model,i/10)
- wait(0.1)
- end
- else
- for i = 9,0,-1 do
- recursiveTransparency(this.Model,i/10)
- wait(0.1)
- end
- for k,v in pairs(this.Model:GetChildren()) do
- if (v.Name == "Window") then
- v.Transparency = 0.6
- elseif (v.Name == "Shield") then
- v.Transparency = shieldTransparency
- else
- if (not isPodsOpen) and (not isPodsMoving) then
- for i = 1,#leftPodNames do
- if (v.Name == leftPodNames[i]) and (v.Name:find("2") or v.Name:find("Thruster")) then
- v.Transparency = 1
- break
- end
- end
- for i = 1,#rightPodNames do
- if (v.Name == rightPodNames[i]) and (v.Name:find("2") or v.Name:find("Thruster")) then
- v.Transparency = 1
- break
- end
- end
- end
- if (not isWeaponsOpen) and (not isWeaponsMoving) and (v.Name:find("Drone")) then
- v.Transparency = 1
- end
- end
- end
- for k,v in pairs(getPassengers()) do
- recursiveTransparency(v,0)
- if (v:FindFirstChild("Head")) then
- v.Head.face.Transparency = 0
- end
- if (v:FindFirstChild("Torso")) then
- v.Torso.roblox.Transparency = 0
- end
- passengersCloaked[v] = false
- end
- end
- isCloaked = on
- isCloaking = false
- end
- function shield(on)
- if (this.CloakActive.Value) or (on and energy < minShieldEnergy) then this.ShieldActive.Value = false return end
- if (isShielding) then this.ShieldActive.Value = not isShielded return end
- if (isShielded == on) then return end
- isShielding = true
- local shield = (on) and spawnShield() or this.Model:FindFirstChild("Shield")
- if (on) then
- local ff = Instance.new("ForceField",this.Model)
- ff.Name = "VehicleShield"
- for k,v in pairs(getPassengers()) do
- ff:Clone().Parent = v
- passengersShielded[v] = true
- end
- else
- for k,v in pairs(passengersShielded) do
- if (k:FindFirstChild("VehicleShield")) then
- k.VehicleShield:Destroy()
- end
- passengersShielded[k] = false
- end
- local ff = this.Model:FindFirstChild("VehicleShield")
- if (ff) then
- ff:Destroy()
- end
- if (shield) then
- shield:Destroy()
- end
- end
- isShielded = on
- isShielding = false
- end
- function fire(targetPos)
- if (not isActive()) or (isCloaked) or (isShielded) or (not isWeaponsOpen) then return end
- local engine = this.MainPart
- local p = spawnWeaponShot()
- local bv = Instance.new("BodyVelocity",p)
- local pos = (engine.CFrame*CFrame.new(12*fireSide,3,-18)).p
- local dir = (targetPos) and (targetPos - pos).unit or engine.CFrame.lookVector
- p.BodyVelocity.velocity = engine.Velocity + dir*200
- p.CFrame = CFrame.new(pos,pos + dir)
- fireSide = fireSide*-1
- game.Debris:AddItem(p,30)
- p.Touched:connect(function(hit) onWeaponShotTouched(p,hit) end)
- end
- function useEnergy()
- local en = energy
- local regen = energyRegen/10
- local speed = this.Speed.Value
- local absSpeed = math.abs(speed)
- en = en + energyChange
- energyChange = 0
- if (isCloaked) then
- en = en - cloakDrain/10
- end
- if (isShielded) then
- en = en - shieldDrain/10
- end
- if (absSpeed >= speedEnergy) then
- en = en - (absSpeed - speedEnergy)*speedDrain/10
- end
- if (en <= 0) then
- this.CloakActive.Value = false
- this.ShieldActive.Value = false
- if (absSpeed > speedEnergy) and (absSpeed > 0) then
- this.Speed.Value = speedEnergy*(speed/absSpeed)
- end
- en = 0
- end
- en = ((en == energy) and math.min(en + regen,energyMax) or en) -- regen only if nothing else consuming energy
- energy = en
- end
- function unanchorShip(model,mainPart)
- if (model == nil) or (mainPart == nil) then return end
- local jl0 = this.Model:FindFirstChild("LJoint1")
- local jl1 = this.Model:FindFirstChild("LJoint2")
- local jl2 = this.Model:FindFirstChild("LJoint3")
- local jr0 = this.Model:FindFirstChild("RJoint1")
- local jr1 = this.Model:FindFirstChild("RJoint2")
- local jr2 = this.Model:FindFirstChild("RJoint3")
- mainPart.Anchored = true
- for k,v in pairs(model:GetChildren()) do
- if (v:IsA("BasePart")) then
- for i = 1,#leftPodNames do
- if (v.Name:find(leftPodNames[i])) and (v ~= jl0) and (v ~= jl1) then
- if (v.Name:find("1")) then
- weld(v,jl0)
- else
- weld(v,jl1)
- end
- v.Anchored = false
- end
- end
- for i = 1,#rightPodNames do
- if (v.Name:find(rightPodNames[i])) and (v ~= jr0) and (v ~= jr1) then
- if (v.Name:find("1")) then
- weld(v,jr0)
- else
- weld(v,jr1)
- end
- v.Anchored = false
- end
- end
- for i = 1,#leftWeaponNames do
- if (v.Name:find(leftWeaponNames[i])) and (v ~= jl2) then
- weld(v,jl2)
- v.Anchored = false
- end
- end
- for i = 1,#rightWeaponNames do
- if (v.Name:find(rightWeaponNames[i])) and (v ~= jr2) then
- weld(v,jr2)
- v.Anchored = false
- end
- end
- if (v.Anchored) and (v ~= mainPart) then
- weld(v,mainPart)
- v.Anchored = false
- end
- end
- end
- mainPart.Anchored = false
- end
- function destroy(t)
- t = t or 1
- this.EngineActive.Value = false
- for k,v in pairs(game.JointsService:GetChildren()) do
- if (v:IsA("Weld")) and ((v.Part0 and v.Part0:IsDescendantOf(this.Model)) or (v.Part1 and v.Part1:IsDescendantOf(this.Model))) then
- v.Part0 = nil
- v.Part1 = nil
- game.Debris:AddItem(v,t + 1/30)
- end
- end
- for k,v in pairs(this.MainPart:GetChildren()) do
- v:Destroy()
- end
- this.Model:BreakJoints()
- game.Debris:AddItem(this.Model,t)
- end
- function deteriorate()
- if (not getPilot()) then
- local isPlayerInRange = false
- for k,v in pairs(game.Players:GetPlayers()) do
- if (v.Character) and ((v.Character:GetModelCFrame().p - this.MainPart.Position).magnitude < despawnRange) then
- isPlayerInRange = true
- break
- end
- end
- if (isPlayerInRange) then -- counter heads back to 0 if player(s) near ship
- tSinceLastActive = (tSinceLastActive <= 0) and 0 or tSinceLastActive - 1
- elseif (not isPlayerInRange) and (not isCloaked) and (not isShielded) then
- tSinceLastActive = tSinceLastActive + 1
- end
- if (tSinceLastActive > lifespan*10) then -- function is run 10 times/second
- destroy(0)
- end
- else
- tSinceLastActive = 0 -- reset counter if pilot is present
- end
- end
- function update()
- if (isUpdating) then return end
- isUpdating = true
- local engine = this.MainPart
- repeat
- if (isActive()) then
- engine.BodyVelocity.velocity = engine.CFrame.lookVector*math.min(this.Speed.Value,speedMax)
- end
- useEnergy()
- this.Energy.Value = energy
- if (isCloaked) then
- local players = game.Players:GetPlayers()
- for i = 1,#players do
- local character = players[i].Character
- if (character) then
- if (isPassenger(character)) then -- if is passenger
- if (not passengersCloaked[character]) then -- but is not cloaked
- recursiveTransparency(character,1)
- if (character:FindFirstChild("Head")) then
- character.Head.face.Transparency = 1
- end
- if (character:FindFirstChild("Torso")) then
- character.Torso.roblox.Transparency = 1
- end
- passengersCloaked[character] = true
- end
- else -- if is not passenger
- if (passengersCloaked[character]) then -- but is cloaked
- recursiveTransparency(character,0)
- if (character:FindFirstChild("Head")) then
- character.Head.face.Transparency = 0
- end
- if (character:FindFirstChild("Torso")) then
- character.Torso.roblox.Transparency = 0
- end
- passengersCloaked[character] = false
- end
- end
- end
- end
- end
- if (isShielded) then
- local players = game.Players:GetPlayers()
- for i = 1,#players do
- local character = players[i].Character
- if (character) then
- if (isPassenger(character)) then -- if is passenger
- if (not passengersShielded[character]) then -- but is not shielded
- local s = Instance.new("ForceField",character)
- s.Name = "VehicleShield"
- passengersShielded[character] = true
- end
- else -- if is not passenger
- if (passengersShielded[character]) then -- but is shielded
- local s = character:FindFirstChild("VehicleShield")
- if (s) then
- s:Destroy()
- end
- passengersShielded[character] = false
- end
- end
- end
- end
- end
- if (isCloakDisabled) then
- this.CloakActive.Value = false
- end
- if (isShieldDisabled) then
- this.ShieldActive.Value = false
- end
- if (isWeaponsDisabled) then
- this.WeaponsOpen.Value = false
- end
- if (hasBeenActive) then -- don't deteriorate ship until it's been active at least once
- deteriorate()
- end
- wait(0.1)
- until (not isActive()) and (energy == energyMax)
- isUpdating = false
- end
- --------
- -- General Functions:
- function getAngleBetween(a,b)
- return math.acos(a:Dot(b)) -- in radians
- end
- function getJointConnecting(a,b,type)
- if (a == nil) or (b == nil) then return end
- type = type or "Weld"
- for k,v in pairs(game.JointsService:GetChildren()) do
- if (v:IsA(type)) and ((v.Part0 == a and v.Part1 == b) or (v.Part0 == b and v.Part1 == a)) then
- return v
- end
- end
- end
- function recursiveAnchor(parent,anchored)
- if (parent == nil) then return end
- if (anchored == nil) then anchored = true end
- for k,v in pairs(parent:GetChildren()) do
- if (v:IsA("BasePart")) then
- v.Anchored = anchored
- end
- if (#v:GetChildren() > 0) then
- recursiveAnchor(v)
- end
- end
- end
- function recursiveTransparency(parent,trans)
- if (parent == nil) then return end
- trans = trans or 0
- for k,v in pairs(parent:GetChildren()) do
- if (v:IsA("BasePart")) then
- v.Transparency = trans
- elseif (v:IsA("Accoutrement")) or (v:IsA("Tool")) then
- v.Handle.Transparency = trans
- end
- if (#v:GetChildren() > 0) then
- recursiveTransparency(v,trans)
- end
- end
- end
- function weld(a,b)
- local w = Instance.new("Weld")
- w.Part0 = a
- w.Part1 = b
- w.C0 = a.CFrame:inverse()*CFrame.new(a.Position)
- w.C1 = b.CFrame:inverse()*CFrame.new(a.Position)
- w.Parent = game.JointsService
- game.JointsService.ChildRemoved:connect(function(c)
- if (c == w) then weld(a,b) end
- end)
- end
- --------
- -- Global Functions
- function getFromModel(model)
- for k,v in pairs(ALL) do
- if (v.Model == model) then
- return v
- end
- end
- end
- function findByPilot(character)
- for k,v in pairs(ALL) do
- if (v:GetPilot() == character) then
- return v
- end
- end
- end
- --------
- -- Main
- if (_G.Gateship == nil) then
- _G.Gateship = {
- List = {},
- GetFromModel = function(self,model) getFromModel(model) end,
- FindByPilot = function(self,character) findByPilot(character) end,
- }
- end
- ALL = _G.Gateship.List
- --
- local model = script.Parent
- recursiveAnchor(model)
- if (model) and (model:IsA("Model")) then
- this.Model = model
- this.MainPart = this.Model:FindFirstChild("Engine")
- assert(this.MainPart,"Gateship engine not found.")
- --
- this.EngineActive = this.Model:FindFirstChild("EngineActive") or Instance.new("BoolValue",model)
- this.EngineActive.Name = "EngineActive"
- this.EngineActive.Changed:connect(onActiveChanged)
- this.VehicleHealth = this.Model:FindFirstChild("VehicleHealth") or Instance.new("NumberValue",model)
- this.VehicleHealth.Name = "VehicleHealth"
- this.VehicleHealth.Value = (this.VehicleHealth.Value == 0) and 100 or this.VehicleHealth.Value
- this.VehicleHealth.Changed:connect(onHealthChanged)
- this.TeamColor = this.Model:FindFirstChild("TeamColor") or Instance.new("BrickColorValue",model)
- this.TeamColor.Name = "TeamColor"
- this.TeamColor.Value = BrickColor.new("Medium stone grey")
- this.Neutral = this.TeamColor:FindFirstChild("Neutral") or Instance.new("BoolValue",this.TeamColor)
- this.Neutral.Name = "Neutral"
- this.Neutral.Value = true
- this.CloakActive = this.Model:FindFirstChild("CloakActive") or Instance.new("BoolValue",model)
- this.CloakActive.Name = "CloakActive"
- this.CloakActive.Changed:connect(onCloakChanged)
- this.ShieldActive = this.Model:FindFirstChild("ShieldActive") or Instance.new("BoolValue",model)
- this.ShieldActive.Name = "ShieldActive"
- this.ShieldActive.Changed:connect(onShieldChanged)
- this.MidOpen = this.Model:FindFirstChild("MidOpen") or Instance.new("BoolValue",model)
- this.MidOpen.Name = "MidOpen"
- this.MidOpen.Changed:connect(function() animMidDoor(this.MidOpen.Value) end)
- this.RearOpen = this.Model:FindFirstChild("RearOpen") or Instance.new("BoolValue",model)
- this.RearOpen.Name = "RearOpen"
- this.RearOpen.Changed:connect(function() animRearDoor(this.RearOpen.Value) end)
- this.PodsOpen = this.Model:FindFirstChild("PodsOpen") or Instance.new("BoolValue",model)
- this.PodsOpen.Name = "PodsOpen"
- this.PodsOpen.Changed:connect(onPodsOpenChanged)
- this.WeaponsOpen = this.Model:FindFirstChild("WeaponsOpen") or Instance.new("BoolValue",model)
- this.WeaponsOpen.Name = "WeaponsOpen"
- this.WeaponsOpen.Changed:connect(onWeaponsOpenChanged)
- this.ForwardLightOn = this.Model:FindFirstChild("ForwardLightOn") or Instance.new("BoolValue",model)
- this.ForwardLightOn.Name = "ForwardLightOn"
- this.ForwardLightOn.Changed:connect(onForwardLightChanged)
- this.DHD = this.Model:FindFirstChild("DHD") or Instance.new("StringValue",model)
- this.DHD.Name = "DHD"
- this.DHD.Changed:connect(onDHDChanged)
- this.Energy = this.Model:FindFirstChild("Energy") or Instance.new("IntValue",model)
- this.Energy.Name = "Energy"
- --this.Energy.Changed:connect(update)
- this.Fire = this.Model:FindFirstChild("Fire") or Instance.new("IntValue",model)
- this.Fire.Name = "Fire"
- this.Fire.ChildAdded:connect(onAddedToFire)
- this.Speed = this.Model:FindFirstChild("Speed") or Instance.new("IntValue",model)
- this.Speed.Name = "Speed"
- this.Speed.Changed:connect(onSpeedChanged)
- this.MaxSpeed = this.Speed:FindFirstChild("MaxSpeed") or Instance.new("IntValue",this.Speed)
- this.MaxSpeed.Name = "MaxSpeed"
- this.MaxSpeed.Value = speedMax
- this.Acceleration = this.Speed:FindFirstChild("Acceleration") or Instance.new("NumberValue",this.Speed)
- this.Acceleration.Name = "Acceleration"
- this.Acceleration.Value = acceleration
- this.Maneuverability = this.Speed:FindFirstChild("Maneuverability") or Instance.new("NumberValue",this.Speed)
- this.Maneuverability.Name = "Maneuverability"
- this.Maneuverability.Value = maneuverability
- --
- local bg = this.MainPart:FindFirstChild("BodyGyro") or Instance.new("BodyGyro",this.MainPart)
- bg.maxTorque = Vector3.new(0,0,0)
- local bp = this.MainPart:FindFirstChild("BodyPosition") or Instance.new("BodyPosition",this.MainPart)
- bp.P = 4e4
- bp.maxForce = Vector3.new(0,0,0)
- local bv = this.MainPart:FindFirstChild("BodyVelocity") or Instance.new("BodyVelocity",this.MainPart)
- bv.maxForce = Vector3.new(0,0,0)
- local midButton = this.Model:FindFirstChild("MidButton")
- if (midButton) then
- local cd = midButton:FindFirstChild("ClickDetector") or Instance.new("ClickDetector",midButton)
- cd.MaxActivationDistance = 8
- cd.MouseClick:connect(function() this.MidOpen.Value = not this.MidOpen.Value end)
- end
- local rearButton = this.Model:FindFirstChild("RearButton")
- if (rearButton) then
- local cd = rearButton:FindFirstChild("ClickDetector") or Instance.new("ClickDetector",rearButton)
- cd.MaxActivationDistance = 8
- cd.MouseClick:connect(function() this.RearOpen.Value = not this.RearOpen.Value end)
- end
- if (this.Model:FindFirstChild("ForwardLightPart")) then
- local light = this.Model.ForwardLightPart:FindFirstChild("SpotLight") or Instance.new("SpotLight",this.Model.ForwardLightPart)
- light.Enabled = false
- end
- initialRearDoorAngle = math.rad(105) --getAngleBetween(this.MainPart.CFrame.lookVector,this.Model:FindFirstChild("RearDoor").CFrame.lookVector*-1)
- originalHullColour = this.MainPart.BrickColor
- for k,v in pairs(this.Model:GetChildren()) do
- if (v:IsA("Seat")) or (v:IsA("VehicleSeat")) then
- v.ChildAdded:connect(function(c) onAddedToSeat(v,c) end)
- v.ChildRemoved:connect(function(c) onRemovedFromSeat(v,c) end)
- end
- if (v.Name:find("Thruster")) then
- originalThrusterColour = v.BrickColor
- end
- end
- --
- table.insert(ALL,this)
- wait(2)
- unanchorShip(this.Model,this.MainPart)
- Spawn(update)
- wait()
- Spawn(function() animMidDoor(true) end)
- Spawn(function() animRearDoor(true) end)
- Spawn(function() animDrivePods(false) end)
- Spawn(function() animWeaponPods(false) end)
- wait()
- this.EngineActive.Value = false
- this.MidOpen.Value = true
- this.RearOpen.Value = true
- this.PodsOpen.Value = false
- this.WeaponsOpen.Value = false
- this.DHD.Value = (dhdEnabled) and "" or "~"
- game.Workspace.DescendantRemoving:connect(function(d)
- if (d == this.Model) then
- for k,v in pairs(ALL) do
- if (v == this) then
- table.remove(ALL,k)
- break
- end
- end
- elseif (d == this.MainPart) then
- destroy(10)
- elseif (game.Players:GetPlayerFromCharacter(d)) then
- passengersCloaked[d] = nil
- passengersShielded[d] = nil
- end
- end)
- end
- --[[
- --------
- -- Documentation
- Global Table:
- _G.Gateship.List -- table of all gateships in the Workspace
- Global Functions:
- _G.Gateship:GetFromModel(model) -- returns the Gateship object given its model
- _G.Gateship:FindByPilot(character) -- returns the Gateship object given its pilot
- --------
- Data is indexed with a dot operator (.)
- Ex. Gateship.Model
- ----
- public data
- Model type: Model -- the Gateship's model
- MainPart type: BasePart -- the Gateship's main part (the engine)
- VehicleHealth type: NumberValue -- the object containing the Gateship's health value
- TeamColor type: BrickColorValue -- the object containing the Gateship's TeamColor value
- Neutral type: BoolValue -- the object containing the Gateship's Neutral value (child of TeamColor)
- EngineActive type: BoolValue -- the object containing the Gateship's Active value
- CloakActive type: BoolValue -- the object containing the Gateship's CloakActive value
- ShieldActive type: BoolValue -- the object containing the Gateship's ShieldActive value
- MidOpen type: BoolValue -- the object containing the Gateship's MidOpen value
- RearOpen type: BoolValue -- the object containing the Gateship's RearOpen value
- PodsOpen type: BoolValue -- the object containing the Gateship's PodsOpen value
- WeaponsOpen type: BoolValue -- the object containing the Gateship's WeaponsOpen value
- ForwardLightsOn type: BoolValue -- the object containing the Gateship's ForwardLightsOn value
- DHD type: StringValue -- the object containing the destination value for dialing a DHD
- Energy type: IntValue -- the object containing the Gateship's Energy value
- Fire type: IntValue -- an object used in the process of firing weapons
- Speed type: IntValue -- the object containing the Gateship's Speed value
- Acceleration type: IntValue -- the object containing the Gateship's Acceleration value
- Maneuverability type: IntValue -- the object containing the Gateship's Maneuverability value
- MaxSpeed type: IntValue -- the object containing the Gateship's MaxSpeed value
- --------
- Methods are called with a colon operator (:)
- Ex. Gateship:IsActive()
- ----
- public methods
- IsActive() returns: boolean -- true if the Gateship is active
- GetPassengers() returns: table -- table of all current player characters inside the Gateship
- HasPassengers() returns: boolean -- true if there is at least on passenger inside the Gateship
- IsPassenger(character) returns: boolean -- true if "character" is a passenger of the Gateship
- GetPilot() returns: Model -- the character currently sitting in the pilot seat
- GetCopilot() returns: Model -- the character currently sitting in the copilot seat
- DisableCloak([time]) returns: nil -- disables cloak; optional time argument allows cloak to automatically enable after time elapses (time is in seconds)
- DisableShield([time]) returns: nil -- disables shield; optional time argument allows shield to automatically enable after time elapses (time is in seconds)
- DisableWeapons([time]) returns: nil -- disables weapons; optional time argument allows weapons to automatically enable after time elapses (time is in seconds)
- EnableCloak() returns: nil -- enables cloak
- EnableShield() returns: nil -- enables shield
- EnableWeapons() returns: nil -- enables weapons
- Repair(amount) returns: nil -- increases Gateship's health by "amount"
- TakeDamage(Amount) returns: nil -- decreases Gateship's health by "amount" (takes shield into account)
- --------
- ]]--
- -- Ganondude end;
- function() -- Gateship Mouse Monitor
- -- Ganondude
- wait(1)
- local player = game.Players.LocalPlayer
- local mouse = player:GetMouse()
- local gui = script.Parent
- local model = gui.Model.Value
- local controlLevel = gui.ControlLevel.Value
- local engine = model.Engine
- local bodyGyr = engine.BodyGyro
- local bodyPos = engine.BodyPosition
- local vehicleHealth = model.VehicleHealth
- local engineActive = model.EngineActive
- local cloakActive = model.CloakActive
- local shieldActive = model.ShieldActive
- local midOpen = model.MidOpen
- local rearOpen = model.RearOpen
- local podsOpen = model.PodsOpen
- local weaponsOpen = model.WeaponsOpen
- local forwardLightOn = model.ForwardLightOn
- local fire = model.Fire
- local speed = model.Speed
- local maxSpeed = speed.MaxSpeed.Value
- local acceleration = speed.Acceleration.Value
- local maneuverability = speed.Maneuverability.Value
- --
- local isButton1Down = false
- local isButton2Down = false
- local isKeyDown = {}
- local isShiftDown = false
- --
- function onButton1Down()
- if (isButton1Down) or (controlLevel > 1) then return end
- isButton1Down = true
- local camera = game.Workspace.CurrentCamera
- while (isButton1Down) do
- if (engineActive.Value) then
- local dir = (mouse.Hit.p - camera.CoordinateFrame.p).unit
- local pos = engine.Position
- engine.BodyGyro.maxTorque = Vector3.new(8e3,8e3,0)
- engine.BodyGyro.cframe = CFrame.new(pos,pos + dir)
- wait(0.1)
- end
- wait()
- end
- end
- function onButton1Up()
- isButton1Down = false
- end
- function onKeyDown(key)
- if (not key) or (isKeyDown[key]) or (controlLevel == 0) then return end
- print(key,isShiftDown)
- if (key:byte() == 32) then -- space
- --onDeselected()
- return
- elseif (key:byte() == 48) then -- left shift
- isShiftDown = true
- return
- end
- key = string.lower(key)
- isKeyDown[key] = true
- -- Door Controls:
- if (key == "m") and (controlLevel < 4) then -- open/close mid door
- midOpen.Value = not midOpen.Value
- elseif (key == "n") and (controlLevel ~= 3) then -- open/close rear door
- rearOpen.Value = not rearOpen.Value
- end
- if (controlLevel > 2) then return end
- -- Light Controls:
- if (key == "h") then
- forwardLightOn.Value = not forwardLightOn.Value
- end
- if (controlLevel > 1) then return end
- -- start/stop engine:
- if (key == "y") then -- start engine
- engineActive.Value = true
- elseif (key == "x") then
- engineActive.Value = false
- if (isShiftDown) then
- vehicleHealth.Value = 0
- end
- end
- if (not engineActive.Value) then return end
- -- Flight Controls:
- if (key == "s") then
- if (isShiftDown) then -- maneouvre backwards
- while (isKeyDown[key]) do
- local dir = Vector3.new(0,0,1)
- bodyPos.position = engine.CFrame*dir
- wait()
- end
- else -- pitch down
- while (engineActive.Value) and (isKeyDown[key]) do
- local rot = Vector3.new(1,0,0)*maneuverability*wait()
- bodyGyr.maxTorque = Vector3.new(9e3,9e3,9e3)
- bodyGyr.cframe = engine.CFrame*CFrame.Angles(rot.X,rot.Y,rot.Z)
- end
- end
- elseif (key == "w") then
- if (isShiftDown) then -- maneouvre forwards
- while (isKeyDown[key]) do
- local dir = Vector3.new(0,0,-1)
- bodyPos.position = engine.CFrame*dir
- wait()
- end
- else -- pitch up
- while (engineActive.Value) and (isKeyDown[key]) do
- local rot = Vector3.new(-1,0,0)*maneuverability*wait()
- bodyGyr.maxTorque = Vector3.new(9e3,9e3,9e3)
- bodyGyr.cframe = engine.CFrame*CFrame.Angles(rot.X,rot.Y,rot.Z)
- end
- end
- elseif (key == "a") then
- if (isShiftDown) then -- maneouvre left
- while (isKeyDown[key]) do
- local dir = Vector3.new(-1,0,0)
- bodyPos.position = engine.CFrame*dir
- wait()
- end
- else -- yaw left
- while (engineActive.Value) and (isKeyDown[key]) do
- local rot = Vector3.new(0,1,0)*maneuverability*wait()
- bodyGyr.maxTorque = Vector3.new(9e3,9e3,9e3)
- bodyGyr.cframe = engine.CFrame*CFrame.Angles(rot.X,rot.Y,rot.Z)
- end
- end
- elseif (key == "d") then
- if (isShiftDown) then -- maneouvre right
- while (isKeyDown[key]) do
- local dir = Vector3.new(1,0,0)
- bodyPos.position = engine.CFrame*dir
- wait()
- end
- else -- yaw right
- while (engineActive.Value) and (isKeyDown[key]) do
- local rot = Vector3.new(0,-1,0)*maneuverability*wait()
- bodyGyr.maxTorque = Vector3.new(9e3,9e3,9e3)
- bodyGyr.cframe = engine.CFrame*CFrame.Angles(rot.X,rot.Y,rot.Z)
- end
- end
- elseif (key == "q") then
- if (isShiftDown) then -- maneouvre down
- while (isKeyDown[key]) do
- local dir = Vector3.new(0,-1,0)
- bodyPos.position = engine.CFrame*dir
- wait()
- end
- else -- roll left
- while (engineActive.Value) and (isKeyDown[key]) do
- local rot = Vector3.new(0,0,1)*maneuverability*wait()
- bodyGyr.maxTorque = Vector3.new(9e3,9e3,9e3)
- bodyGyr.cframe = engine.CFrame*CFrame.Angles(rot.X,rot.Y,rot.Z)
- end
- end
- elseif (key == "e") then
- if (isShiftDown) then -- maneouvre up
- while (isKeyDown[key]) do
- local dir = Vector3.new(0,1,0)
- bodyPos.position = engine.CFrame*dir
- wait()
- end
- else -- roll right
- while (engineActive.Value) and (isKeyDown[key]) do
- local rot = Vector3.new(0,0,-1)*maneuverability*wait()
- bodyGyr.maxTorque = Vector3.new(9e3,9e3,9e3)
- bodyGyr.cframe = engine.CFrame*CFrame.Angles(rot.X,rot.Y,rot.Z)
- end
- end
- end
- -- Level off:
- if (key == "r") then -- level off
- local cf = engine.CFrame
- local bk = cf.lookVector*-1
- local up = Vector3.new(0,1,0)
- local rt = bk:Cross(up)
- bodyGyr.cframe = CFrame.new(cf.p.X,cf.p.Y,cf.p.Z, rt.X,up.X,bk.X, rt.Y,up.Y,bk.Y, rt.Z,up.Z,bk.Z)
- end
- -- Fire:
- if (key == "f") then
- local val = Instance.new("Vector3Value")
- val.Value = (isShiftDown) and Vector3.new(0,0,0) or mouse.Hit.p
- val.Parent = fire
- end
- -- Speed Controls:
- if (key == "t") then -- speed up
- local a = acceleration
- repeat
- speed.Value = speed.Value + a*wait(0.1)
- a = a + acceleration/10
- until (not isKeyDown[key])
- elseif (key == "g") then -- slow down
- if (isShiftDown) then
- local d = (speed.Value > 0) and -1 or 1
- for i = speed.Value,0,acceleration*d do
- speed.Value = speed.Value + acceleration*d
- wait()
- end
- speed.Value = 0
- else
- local a = acceleration
- repeat
- speed.Value = speed.Value - a*wait(0.1)
- a = a + acceleration/10
- until (not isKeyDown[key])
- end
- end
- -- Cloak Toggle:
- if (key == "c") then -- toggle cloak
- cloakActive.Value = not cloakActive.Value
- end
- -- Shield Toggle:
- if (key == "v") then -- toggle shield
- shieldActive.Value = not shieldActive.Value
- end
- -- Drive Pod Controls:
- if (key == "b") then
- if (isShiftDown) then
- weaponsOpen.Value = not weaponsOpen.Value
- else
- podsOpen.Value = not podsOpen.Value
- end
- end
- end
- function onKeyUp(key)
- if (not key) then return end
- if (string.byte(key) == 48) then
- isShiftDown = false
- return
- end
- key = string.lower(key)
- isKeyDown[key] = false
- end
- ----
- mouse.Button1Down:connect(onButton1Down)
- mouse.Button1Up:connect(onButton1Up)
- mouse.KeyDown:connect(onKeyDown)
- mouse.KeyUp:connect(onKeyUp)
- -- Ganondude end;
- function() -- Gateship GUI Controller
- -- Ganondude
- local maxDHDInputLength = 7
- local dhdButtonColour = {[true] = "Light orange", [false] = "Br. yellowish orange"}
- --------
- wait(1)
- local player = game.Players.LocalPlayer
- local gui = script.Parent
- local main = gui.Main
- local tabs = gui.Tabs
- local removeGui = gui.RemoveGui
- local model = gui.Model.Value
- local controlLevel = gui.ControlLevel.Value
- local energy = main.Energy
- local speed = main.Speed
- local status = main.Status
- local controls = tabs.Controls
- local dhd = tabs.DHD
- local btn1 = tabs.Button1
- local btn2 = tabs.Button2
- local btnOpen = tabs.OpenButton
- local mCloakActive = model.CloakActive
- local mDHD = model.DHD
- local mEnergy = model.Energy
- local mEngineActive = model.EngineActive
- local mMidOpen = model.MidOpen
- local mRearOpen = model.RearOpen
- local mPodsOpen = model.PodsOpen
- local mShieldActive = model.ShieldActive
- local mSpeed = model.Speed
- local mVHealth = model.VehicleHealth
- local mWeaponsOpen = model.WeaponsOpen
- local hasBeenPressed = {} -- for DHD
- local totalPressed = 0 -- for DHD
- local isTabsOpen = true
- --
- function scaleMeter(meter,percentFull)
- percentFull = (percentFull > 100) and 100 or percentFull
- local fill = meter.Fill
- local x = percentFull/100
- fill.Size = UDim2.new(percentFull/100,fill.Size.X.Offset,fill.Size.Y.Scale,fill.Size.Y.Offset)
- end
- function showTab1()
- controls.Visible = true
- dhd.Visible = false
- end
- function showTab2()
- controls.Visible = false
- dhd.Visible = true
- end
- function statusCloak()
- wait()
- --[[
- for k,v in pairs(status:GetChildren()) do
- v.BackgroundTransparency = (mCloakActive.Value) and 0.6 or 0
- end
- ]]
- status.Fuselage.BackgroundTransparency = (mCloakActive.Value) and 0.6 or 0
- status.Window.BackgroundTransparency = (mCloakActive.Value) and 0.6 or 0
- statusDrivePods()
- statusWeaponPods()
- end
- function statusShield()
- wait()
- status.BackgroundColor3 = (mShieldActive.Value) and Color3.new(0,0.2,1) or Color3.new(0,0,0)
- end
- function statusDrivePods()
- wait()
- for k,v in pairs(status:GetChildren()) do
- local n = v.Name:lower()
- if (n:find("joint")) or (n:find("thruster")) or (n:find("wing")) then
- v.BackgroundTransparency = (mPodsOpen.Value) and (mCloakActive.Value and 0.6 or 0) or 1
- end
- end
- end
- function statusWeaponPods()
- wait()
- for k,v in pairs(status:GetChildren()) do
- local n = v.Name:lower()
- if (n:find("weapon")) then
- v.BackgroundTransparency = (mWeaponsOpen.Value) and (mCloakActive.Value and 0.6 or 0) or 1
- end
- end
- end
- function updateDHD()
- if (mDHD.Value == "") then
- for k,v in pairs(dhd.DHDPanel:GetChildren()) do
- v.BackgroundColor = BrickColor.new(dhdButtonColour[false])
- end
- else
- for w in (mDHD.Value:gmatch("%w+")) do
- local btn = dhd.DHDPanel:FindFirstChild(w)
- if (btn) then
- btn.BackgroundColor = BrickColor.new(dhdButtonColour[true])
- end
- end
- if (mDHD.Value:match("@")) then
- local btn = dhd.DHDPanel:FindFirstChild("Enter")
- if (btn) then
- btn.BackgroundColor = BrickColor.new(dhdButtonColour[true])
- end
- end
- end
- end
- function updateEnergy()
- local percent = math.abs(mEnergy.Value)/10
- energy.Label1.Text = string.format("%2.0f",percent).."%"
- scaleMeter(energy.Meter,percent)
- end
- function updateHealth()
- local health = mVHealth.Value
- local p = health/100
- for k,v in pairs(status:GetChildren()) do
- local n = v.Name:lower()
- if (not n:find("window")) and (not n:find("thruster")) and (not n:find("joint")) then
- v.BackgroundColor3 = Color3.new((255 - 255*p)/255,(255*p)/255,0)
- end
- end
- end
- function updateSpeed()
- local s = mSpeed.Value
- local percent = (mEngineActive.Value) and math.abs(s)/2 or 0
- percent = (percent > 100) and 100 or percent
- local p = percent*((s == 0) and 1 or s/math.abs(s))
- speed.Label1.Text = string.format("%2.0f",p).."%"
- scaleMeter(speed.Meter,percent)
- end
- ----
- if (controlLevel < 4) and (controlLevel ~= 0) then -- visible to all in cockpit
- main.Visible = true
- if (controlLevel < 3) then -- visible to pilot and copilot
- tabs.Visible = true
- end
- end
- removeGui.Value = false
- btn1.MouseButton1Click:connect(showTab1)
- btn2.MouseButton1Click:connect(showTab2)
- mDHD.Changed:connect(updateDHD)
- mEnergy.Changed:connect(updateEnergy)
- mSpeed.Changed:connect(updateSpeed)
- mVHealth.Changed:connect(updateHealth)
- mCloakActive.Changed:connect(statusCloak)
- mShieldActive.Changed:connect(statusShield)
- mPodsOpen.Changed:connect(statusDrivePods)
- mWeaponsOpen.Changed:connect(statusWeaponPods)
- removeGui.Changed:connect(function() wait(0.1) gui:Destroy() end)
- player.Character.Humanoid.Died:connect(function() removeGui.Value = true end)
- player.Character.Humanoid.Jumping:connect(function() removeGui.Value = true end)
- for k,v in pairs(dhd.DHDPanel:GetChildren()) do
- local f = function()
- local s = v.Name
- if (v.Name == "Enter") then
- s = "@"
- end
- if (totalPressed >= maxDHDInputLength) and (s ~= "@") then return end
- if (not hasBeenPressed[s]) then
- mDHD.Value = mDHD.Value..","..s
- hasBeenPressed[s] = true
- totalPressed = totalPressed + 1
- end
- if (s == "@") then
- for k,v in pairs(hasBeenPressed) do
- hasBeenPressed[k] = false
- end
- totalPressed = 0
- end
- end
- v.MouseButton1Click:connect(f)
- end
- statusCloak()
- statusShield()
- updateEnergy()
- updateHealth()
- updateSpeed()
- while (gui.Parent) do
- btnOpen.MouseButton1Click:wait()
- local dir = (isTabsOpen) and 1 or -1
- local x = tabs.Position.X.Offset + tabs.Size.X.Offset*dir
- local pos = UDim2.new(tabs.Position.X.Scale,x,tabs.Position.Y.Scale,tabs.Position.Y.Offset)
- tabs:TweenPosition(pos,"Out","Quad",2,false)
- wait(2)
- isTabsOpen = not isTabsOpen
- btnOpen.Text = (isTabsOpen) and ">" or "<"
- end
- -- Ganondude end;
- function() -- Gateship Camera Script
- -- Ganondude
- wait(1)
- local player = game.Players.LocalPlayer
- local gui = script.Parent
- local removeGui = gui.RemoveGui
- local model = gui.Model.Value
- local engine = model.Engine
- local cameraPart = model:FindFirstChild("CameraPart") or engine
- --
- local camera = game.Workspace.CurrentCamera
- camera.CameraType = 4 -- Follow
- camera.CameraSubject = cameraPart
- camera.CoordinateFrame = engine.CFrame*CFrame.new(0,12,engine.Size.Z*1.5)
- removeGui.Changed:wait()
- camera.CameraType = 5 -- Custom
- camera.CameraSubject = player.Character.Humanoid
- -- Ganondude end;}local ActualScripts = {}
- function s(var)
- local func = table.remove(Scripts,1)
- setfenv(func,setmetatable({script=var,require=fake_require or require,global=genv},{
- __index = getfenv(func),
- }))
- table.insert(ActualScripts,coroutine.wrap(func))
- end
- Decode = function(str,t,props,classes,values,ICList,Model,CurPar,LastIns,split,RemoveAndSplit,InstanceList)
- local tonum,table_remove,inst,parnt,comma,table_foreach = tonumber,table.remove,Instance.new,"Parent",",",
- function(t,f)
- for a,b in pairs(t) do
- f(a,b)
- end
- end
- local Types = {
- Color3 = Color3.new,
- Vector3 = Vector3.new,
- Vector2 = Vector2.new,
- UDim = UDim.new,
- UDim2 = UDim2.new,
- CFrame = CFrame.new,
- Rect = Rect.new,
- NumberRange = NumberRange.new,
- BrickColor = BrickColor.new,
- PhysicalProperties = PhysicalProperties.new,
- NumberSequence = function(...)
- local a = {...}
- local t = {}
- repeat
- t[#t+1] = NumberSequenceKeypoint.new(table_remove(a,1),table_remove(a,1),table_remove(a,1))
- until #a==0
- return NumberSequence.new(t)
- end,
- ColorSequence = function(...)
- local a = {...}
- local t = {}
- repeat
- t[#t+1] = ColorSequenceKeypoint.new(table_remove(a,1),Color3.new(table_remove(a,1),table_remove(a,1),table_remove(a,1)))
- until #a==0
- return ColorSequence.new(t)
- end,
- number = tonumber,
- boolean = function(a)
- return a=="1"
- end
- }
- split = function(str,sep)
- if not str then return end
- local fields = {}
- local ConcatNext = false
- str:gsub(("([^%s]+)"):format(sep),function(c)
- if ConcatNext == true then
- fields[#fields] = fields[#fields]..sep..c
- ConcatNext = false
- else
- fields[#fields+1] = c
- end
- if c:sub(#c)=="\\" then
- c = fields[#fields]
- fields[#fields] = c:sub(1,#c-1)
- ConcatNext = true
- end
- end)
- return fields
- end
- RemoveAndSplit = function(t)
- return split(table_remove(t,1),comma)
- end
- t = split(str,";")
- props = RemoveAndSplit(t)
- classes = RemoveAndSplit(t)
- values = split(table_remove(t,1),'|')
- ICList = RemoveAndSplit(t)
- InstanceList = {}
- Model = inst"Model"
- CurPar = Model
- table_foreach(t,function(ct,c)
- if c=="n" or c=="p" then
- CurPar = c=="n" and LastIns or CurPar[parnt]
- else
- ct = split(c,"|")
- local class = classes[tonum(table_remove(ct,1))]
- if class=="UnionOperation" then
- LastIns = {UsePartColor="1"}
- else
- LastIns = inst(class)
- if LastIns:IsA"Script" then
- s(LastIns)
- elseif LastIns:IsA("ModuleScript") then
- ms(LastIns)
- end
- end
- local function SetProperty(LastIns,p,str,s)
- s = Types[typeof(LastIns[p])]
- if p=="CustomPhysicalProperties" then
- s = PhysicalProperties.new
- end
- if s then
- LastIns[p] = s(unpack(split(str,comma)))
- else
- LastIns[p] = str
- end
- end
- local UnionData
- table_foreach(ct,function(s,p,a,str)
- a = p:find":"
- p,str = props[tonum(p:sub(1,a-1))],values[tonum(p:sub(a+1))]
- if p=="UnionData" then
- UnionData = split(str," ")
- return
- end
- if class=="UnionOperation" then
- LastIns[p] = str
- return
- end
- SetProperty(LastIns,p,str)
- end)
- if UnionData then
- local LI_Data = LastIns
- LastIns = DecodeUnion(UnionData)
- table_foreach(LI_Data,function(p,str)
- SetProperty(LastIns,p,str)
- end)
- end
- table.insert(InstanceList,LastIns)
- LastIns[parnt] = CurPar
- end
- end)
- table_remove(ICList,1)
- table_foreach(ICList,function(a,b)
- b = split(b,">")
- InstanceList[tonum(b[1])][props[tonum(b[2])]] = InstanceList[tonum(b[3])]
- end)
- return Model:GetChildren()
- end
- local Objects = Decode('Name,Anchored,Color,Position,Orientation,Size,BackSurface,BottomSurface,FrontSurface,LeftSurface,RightSurface,TopSurface,MeshType,CanCollide,C0,C1,Part0,Part1,Transparency,Angle,Range,Enabled,Backgrou'
- ..'ndColor3,BackgroundTransparency,BorderColor3,BorderSizePixel,Text,TextColor3,TextSize,TextWrapped,TextScaled,ZIndex,ClipsDescendants,Visible;Part,Model,WedgePart,SpecialMesh,Seat,Weld,SpotLight,Script'
- ..',ScreenGui,LocalScript,BoolValue,Frame,TextLabel,TextButton;Part|Gateship|1|1,0.6901,0|-66.9223,6.798,-2.048|-16.99,-90,90|2.0421,31.5999,1|10|-64.6953,9.66,13.181|0,90,15|1,3,3|-65.8953,5.301,2.378|0'
- ..'.7999,6.5999,12|MidDoorLeft|0.6666,0.3333,0|-60.6953,5.148,-5.383|10,0,0|3,8.6,0.6|LThruster|-72.4503,7.141,7.378|0,0,-20|2.4,3.2,10|LJoint3|-67.2453,0.501,-3.748|3,0.6,2|LJoint2|-73.5673,5.153,7.378|'
- ..'0,0,-50|0.6,1.9,6|LPart2|0.4588,0,0|-72.9673,7.329,12.478|0.8999,2.7999,0.2|-71.9333,6.953,12.478|LDrone|-69.4953,4.901,-3.748|1.25,1.25,2.5|3|-69.1953,3.201,-3.748|-68.3953,1.701,-3.748|LPart3|-70.39'
- ..'53,4.987,-3.748|0,-90,90|1.98,2.9999,0.6|-70.1133,3.117,-3.748|16.9899,-90,90|2.042,2.9999,0.6|-66.1233,8.487,-0.698|-33.35,-90,90|2.0999,30.9,1|-64.8523,9.936,0.552|-48.75,-90,90|2.1497,30.3999,1|-63'
- ..'.1953,11.048,1.052|-63.14,-90,90|2.1878,30.4,1|-61.2663,11.747,1.652|-76.77,-90,90|2.2118,30.2,1|-67.1953,4.987,-12.898|1.98,15.2999,1|-66.9223,3.175,-13.748|2.0421,17,1|-66.0133,1.319,-14.498|33.3499'
- ..',-90,90|2.5,18.5,1|-67.3953,4.987,-0.898|1.98,2.6999,0.6|LPart1|-74.3953,4.987,6.852|1.98,12.7999,0.6|-74.1133,3.117,5.252|2.0421,15,0.6|-66.1453,5.892,12.172|15,0,0|1.1,4.7999,1|-64.3953,4.541,11.809'
- ..'|2.4,7.6,1|-66.1453,6.034,-5.226|-64.4953,7.601,2.378|1.9999,0.3999,12|0|-63.8953,4.657,-5.47|3.4,7.6,1|-66.1453,2.44,-5.86|0,90,-170|1,2.5,1.1|RearButton|-64.0953,5.372,11.411|1,1,0.2|-64.2953,9.975,'
- ..'-4.532|0,90,10|1,3.2,4.1999|-65.1953,8.072,-14.844|45,0,0|2.2,1,1|-65.8953,5.951,-16.965|1.5999,5,1|-63.9953,8.779,-14.137|3.7999,1,1|-63.6953,3.829,-19.087|6,1,1|-65.7623,1.484,3.102|2.5,16.7,0.4|-66'
- ..'.6353,3.263,3.352|2.0421,17.2,0.4|-66.8953,4.987,3.602|1.98,17.7,0.4|-64.0953,1.501,2.378|2.7999,1,12|PassengerSeat|-63.6953,2.201,6.378|0,-90,0|2,0.4,2|0|2|-63.6953,2.201,2.378|-63.6953,2.201,-1.622|'
- ..'CockpitSeat|-63.6953,1.501,-8.622|2,1,2|-69.1803,1.209,-3.748|2.5,3,0.6|MidButton|-63.0953,5.372,-5.959|PilotSeat|-62.6953,1.501,-13.622|RearDoor|-59.1953,5.506,12.068|-75,0,0|8,1,9.6|-59.1953,11.101,'
- ..'0.878|5.7999,0.8,24.9999|Engine|-59.1953,0.501,-5.622|13.095,1,34|-256,10,256,-1,0,0,0,0,1,0,1,0|-196.8048,-0.5011,261.6214,-1,0,0,-0.0001,-0.0001,0.9999,-0.0001,0.9999,0|-59.1953,11.987,2.152|-89.89,'
- ..'-126.2601,126.26|2.22,30.2,1|-59.1953,10.771,13.479|8,1.2999,1|-59.1953,11.591,13.699|5.2,0.3999,1|-59.1953,10.319,-4.471|6,1.8999,1|-59.1953,3.401,-17.822|0,-180,0|14.8,0.4,1.6|-59.1953,2.101,-15.222'
- ..'|89.8899,0,0|3.75,4.8,2.2|1|-59.1953,9.451,-13.465|12.2999,0.9,1|-59.1953,10.016,-12.899|11.1999,0.7,1|-59.1953,10.511,-12.404|9.8999,0.7,1|-59.1953,10.936,-11.98|8.4999,0.5,1|-59.1953,11.254,-11.662|'
- ..'7.2999,0.4,1|RPart1|-43.9953,4.987,6.852|0,90,-90|-59.1953,2.801,-16.622|14.5999,0.7999,2|-59.1953,2.101,-18.422|14.1999,2.2,1.6|Window|0.3999|-59.1953,6.304,-16.612|11.7999,8,0.8|CameraPart|-59.1953,'
- ..'3.501,-17.122|3.2,0.5999,3|-59.1953,2.769,-20.147|15,2,1|-59.1953,1.708,-21.208|14.1999,1,1|ForwardLightPart|-59.1953,1.001,-21.915|-45,0,0|13,1,1|0.9215,0.9607,1|135|60|-73.1803,1.209,5.002|2.5,14.49'
- ..'99,0.6|MidDoorRight|-57.6953,5.148,-5.383|-66.1453,2.367,11.227|0,90,-165|-67.7433,0.501,4.878|0,-123.6901,90|0.8,6,4|LJoint1|-66.7453,0.501,4.878|1.9999,0.8,7.1999|-71.2953,0.501,5.878|2.9999,0.8,2|-'
- ..'57.1243,11.747,1.652|-76.77,90,-90|CopilotSeat|-55.6953,1.501,-13.622|-55.1953,11.048,1.052|-63.14,90,-90|-54.3953,8.779,-14.137|-54.6953,1.501,-8.622|0,90,0|-54.6953,3.829,-19.087|-53.6953,9.66,13.18'
- ..'1|0,-90,-15|1,2.9999,3|-53.9953,4.54,11.81|2.4,7.5999,1|-54.6953,2.201,6.378|-54.2953,1.501,2.378|-54.6953,2.201,2.378|-53.8953,7.601,2.378|-54.6953,2.201,-1.622|-53.5383,9.936,0.552|-48.75,90,-90|-52'
- ..'.4953,5.301,2.378|-54.4953,4.656,-5.469|3.4,7.5999,1|-54.0953,9.975,-4.532|0,-90,-10|1,3.1999,4.2|-52.6283,1.484,3.102|33.3499,90,-90|-52.2673,8.487,-0.698|-33.35,90,-90|-52.2453,6.035,-5.226|-52.2453'
- ..',2.44,-5.86|0,-90,170|1,2.4999,1.0999|-53.1953,8.072,-14.844|-52.3773,1.319,-14.498|-52.4953,5.951,-16.965|-51.4683,3.175,-13.748|16.9899,90,-90|-51.1953,4.987,-12.898|1.98,15.3,1|-51.7553,3.263,3.352'
- ..'|-51.4683,6.798,-2.048|-16.99,90,-90|RJoint3|-51.1453,0.501,-3.748|3,0.5999,2|-52.2453,5.893,12.172|-52.2453,2.367,11.227|0,-90,165|RJoint1|-51.6453,0.501,4.878|-51.4953,4.987,3.602|-50.9953,4.987,-0.'
- ..'898|1.98,2.6999,0.5999|RDrone|-49.9953,1.701,-3.748|-50.6453,0.501,4.878|0,123.69,-90|RPart3|-49.2103,1.209,-3.748|-49.1953,3.201,-3.748|-48.8953,4.901,-3.748|-48.2773,3.117,-3.748|2.0421,2.9999,0.6|-'
- ..'47.9953,4.987,-3.748|1.98,3,0.6|-47.0953,0.501,5.878|RThruster|-45.9403,7.141,7.378|0,0,20|-45.2103,1.209,5.002|RPart2|-46.4573,6.953,12.478|RJoint2|-44.8233,5.153,7.378|0,0,50|-44.2773,3.117,5.252|-4'
- ..'5.4233,7.329,12.478|GateshipScript|GateshipGui|LocalMouse|RemoveGui|LocalGui|Main|0.5,-175,0,55|0,350,0,100|0,0,0|Energy|0.4,0,0.5,0|0.6|Label0|0.1,0,0.1,0|0.4499,0,0.3499,0|1,1,1|10|Label1|0.55,0,0.1'
- ..',0|0.3499,0,0.3499,0|100%|Meter|0.1,0,0.55,0|0.8,0,0.3499,0|Fill|1,0,1,0|0,1,0|Speed|0.6,0,0,0|1,1,0|Status|0.4,0,0,0|0.2,0,1,0|2|Fuselage|0.3,0,0.1,0|0.4,0,0.8,0|3|LJoint|0.2,0,0.6499,0|0.1,0,0.15,0|'
- ..'0.498,0.498,0.498|LWing|0.125,0,0.5249,0|0.075,0,0.3499,0|RJoint|0.6999,0,0.6499,0|RWing|0.8,0,0.5249,0|0.1599,0,0.625,0|0.0799,0,0.2249,0|0.7599,0,0.625,0|0.375,0,0.18,0|0.25,0,0.0799,0|0.3019,0.3019'
- ..',0.3019|LWeapons|0.2199,0,0.4099,0|0.075,0,0.1,0|RWeapons|0.7099,0,0.4099,0|Tabs|1,-200,0.5,-100|0,200,0,250|Button1|0,5,0,0|0.5,-10,0.1,0|Controls|12|Button2|0.5,5,0,0|DHD|OpenButton|0,-15,0.1,0|0,15'
- ..',0.8999,-1|>|14|0,0,0.1,0|1,0,0.8999,0|ControlsList|0,5,0,10|1,-10,1,-15|Label1A|0.5,0,0.07,0|Take Off|Label2A|0,0,0.07,0|Land|Label3A|0,0,0.14,0|Fly|Label4A|0,0,0.2099,0|Maneuver|Label5A|0,0,0.28,0|L'
- ..'evel Off|Label6A|0,0,0.3499,0|Speed Up|Label7A|0,0,0.4199,0|Slow Down|Label8A|0,0,0.49,0|Hover|Label9A|0,0,0.56,0|Fire|Label10A|0,0,0.6299,0|Cloak|Label11A|0,0,0.6999,0|Shield|Label12A|0,0,0.7699,0|Dr'
- ..'ivepods|Label13A|0,0,0.8399,0|Rear Door|Label14A|0,0,0.91,0|Mid Door|Label1B|0.5,0,0,0|Y|Label11B|0.5,0,0.6999,0|V|Label12B|0.5,0,0.7699,0|B|Label13B|0.5,0,0.8399,0|N|Label14B|0.5,0,0.91,0|M|Label2B|X'
- ..'|Label3B|0.5,0,0.14,0|W,S,A,D,Q,E|Label4B|0.5,0,0.2099,0|Shift + W,S,A,D,Q,E|Label5B|0.5,0,0.28,0|R|Label6B|0.5,0,0.3499,0|T|Label7B|0.5,0,0.4199,0|G|Label8B|0.5,0,0.49,0|Shift + G|Label9B|0.5,0,0.56,'
- ..'0|F|Label10B|0.5,0,0.6299,0|C|Connector|0.5,-10,0,10|DHDPanel|32|0.25,0,0.6499,0|0.8862,0.6078,0.2509|0.15,0,0.05,0|0.25,0,0.05,0|0.3499,0,0.05,0|33|0.3499,0,0.6499,0|4|0.55,0,0.05,0|5|0.6499,0,0.05,0'
- ..'|6|0.75,0,0.05,0|36|0.6499,0,0.6499,0|7|0.05,0,0.2,0|8|0.15,0,0.2,0|9|0.25,0,0.2,0|0.3499,0,0.2,0|11|0.4499,0,0.2,0|0.55,0,0.2,0|13|0.6499,0,0.2,0|0.75,0,0.2,0|15|0.85,0,0.2,0|16|0.05,0,0.3499,0|17|0.'
- ..'15,0,0.3499,0|18|0.25,0,0.3499,0|19|20|21|0.55,0,0.3499,0|22|0.6499,0,0.3499,0|23|0.75,0,0.3499,0|24|0.85,0,0.3499,0|35|0.55,0,0.6499,0|25|0.15,0,0.5,0|26|0.25,0,0.5,0|27|0.3499,0,0.5,0|28|0.4499,0,0.'
- ..'5,0|29|0.55,0,0.5,0|30|0.6499,0,0.5,0|31|0.75,0,0.5,0|34|0.4499,0,0.6499,0|Enter|0.375,0,0.8249,0|0.25,0,0.125,0|LocalCamera;0,55>17,55>18>54;2|1:2;n;1|2:3|3:4|4:5|5:6|6:7|7:8|8:8|9:8|10:8|11:8|12:8|3'
- ..':4|3:4;3|2:3|3:4|4:9|5:10|6:11|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:12|6:13|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:14|2:3|3:15|4:16|5:17|6:18|7:8|8:8|9:8|10:8|11:8|12:8|3:15|3:15;1|1:19|2:3|'
- ..'3:15|4:20|5:21|6:22|7:8|8:8|9:8|10:8|11:8|12:8|3:15|3:15;1|1:23|2:3|3:4|4:24|6:25|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:26|2:3|3:4|4:27|5:28|6:29|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:30|2:3|3:31|4:'
- ..'32|5:21|6:33|7:8|8:8|9:8|10:8|11:8|12:8|3:31|3:31;1|1:30|2:3|3:31|4:34|5:21|6:33|7:8|8:8|9:8|10:8|11:8|12:8|3:31|3:31;1|1:35|2:3|3:15|4:36|6:37|7:8|8:8|9:8|10:8|11:8|12:8|3:15|3:15;n;4|13:38;p;1|1:35|'
- ..'2:3|3:15|4:39|6:37|7:8|8:8|9:8|10:8|11:8|12:8|3:15|3:15;n;4|13:38;p;1|1:35|2:3|3:15|4:40|6:37|7:8|8:8|9:8|10:8|11:8|12:8|3:15|3:15;n;4|13:38;p;1|1:41|2:3|3:4|4:42|5:43|6:44|7:8|8:8|9:8|10:8|11:8|12:8|'
- ..'3:4|3:4;1|1:41|2:3|3:4|4:45|5:46|6:47|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:48|5:49|6:50|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:51|5:52|6:53|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3'
- ..':4|4:54|5:55|6:56|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:57|5:58|6:59|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:60|5:43|6:61|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:62|5:46|6:63|7:'
- ..'8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:64|5:65|6:66|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:67|5:43|6:68|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:69|2:3|3:4|4:70|5:43|6:71|7:8|8:8|9:8|10:8|'
- ..'11:8|12:8|3:4|3:4;1|1:69|2:3|3:4|4:72|5:46|6:73|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:74|5:75|6:76|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:77|5:75|6:78|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3'
- ..':4;1|2:3|3:4|4:79|5:17|6:76|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:80|6:81|14:82|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:83|5:17|6:84|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;3|2:3|3:4|4:85|5'
- ..':86|6:87|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:88|2:3|3:15|4:89|5:75|6:90|7:8|8:8|9:8|10:8|11:8|12:8|3:15|3:15;3|2:3|3:4|4:91|5:92|6:93|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:94|5:95|6:96|7:8'
- ..'|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:97|5:95|6:98|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:99|5:95|6:100|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:101|5:95|6:102|7:8|8:8|9:8|10:8|11:'
- ..'8|12:8|3:4|3:4;1|2:3|3:4|4:103|5:65|6:104|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:105|5:46|6:106|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:107|5:43|6:108|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4'
- ..';1|2:3|3:4|4:109|6:110|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;5|1:111|2:3|3:15|4:112|5:113|6:114|8:115|12:116|3:15|3:15;5|1:111|2:3|3:15|4:117|5:113|6:114|8:115|12:116|3:15|3:15;5|1:111|2:3|3:15|4:118|5:1'
- ..'13|6:114|8:115|12:116|3:15|3:15;5|1:119|2:3|3:15|4:120|5:113|6:121|8:115|12:116|3:15|3:15;1|1:41|2:3|3:4|4:122|5:65|6:123|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:124|2:3|3:15|4:125|5:17|6:90|7:8|8:8|9:'
- ..'8|10:8|11:8|12:8|3:15|3:15;5|1:126|2:3|3:15|4:127|6:121|8:115|12:116|3:15|3:15;1|1:128|2:3|3:15|4:129|5:130|6:131|7:8|8:8|9:8|10:8|11:8|12:8|3:15|3:15;1|2:3|3:4|4:132|6:133|7:8|8:8|9:8|10:8|11:8|12:8|'
- ..'3:4|3:4;1|1:134|2:3|3:4|4:135|6:136|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;n;6|15:137|16:138;p;1|2:3|3:4|4:139|5:140|6:141|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:142|5:75|6:143|7:8|8:8|9:8|10:8|11'
- ..':8|12:8|3:4|3:4;1|2:3|3:4|4:144|5:75|6:145|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:146|5:17|6:147|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;3|2:3|3:4|4:148|5:149|6:150|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3'
- ..':4;1|2:3|3:4|4:151|5:152|6:153|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;n;4|13:154;p;1|2:3|3:4|4:155|5:95|6:156|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:157|5:95|6:158|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3'
- ..':4;1|2:3|3:4|4:159|5:95|6:160|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:161|5:95|6:162|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:163|5:95|6:164|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:165|2:3'
- ..'|3:4|4:166|5:167|6:71|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:168|6:169|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:170|6:171|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:172|2:3|3:15|19:173|4:174'
- ..'|5:95|6:175|7:8|8:8|9:8|10:8|11:8|12:8|3:15|3:15;1|1:176|2:3|3:4|4:177|6:178|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;n;4|13:154;p;1|2:3|3:4|4:179|5:95|6:180|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:1'
- ..'81|5:95|6:182|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:183|2:3|3:4|4:184|5:185|6:186|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;n;7|3:187|20:188|21:189|22:82|3:187|3:187;p;1|1:69|2:3|3:4|4:190|5:65|6:191|7:8|8:'
- ..'8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:192|2:3|3:15|4:193|5:17|6:18|7:8|8:8|9:8|10:8|11:8|12:8|3:15|3:15;3|2:3|3:4|4:194|5:195|6:87|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;3|1:69|2:3|3:4|4:196|5:197|6:198|7:8|8:'
- ..'8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:199|2:3|3:4|4:200|6:201|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:69|2:3|3:4|4:202|6:203|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:204|5:205|6:59|7:8|8:8|9:8|10:8|11'
- ..':8|12:8|3:4|3:4;5|1:206|2:3|3:15|4:207|6:121|8:115|12:116|3:15|3:15;1|2:3|3:4|4:208|5:209|6:56|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:210|5:95|6:100|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;5|1:119|'
- ..'2:3|3:15|4:211|5:212|6:121|8:115|12:116|3:15|3:15;1|2:3|3:4|4:213|5:95|6:102|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;3|2:3|3:4|4:214|5:215|6:216|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:217|5:75|6:21'
- ..'8|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;5|1:111|2:3|3:15|4:219|5:212|6:114|8:115|12:116|3:15|3:15;1|2:3|3:4|4:220|6:110|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;5|1:111|2:3|3:15|4:221|5:212|6:114|8:115|12:116|'
- ..'3:15|3:15;1|2:3|3:4|4:222|6:81|14:82|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;5|1:111|2:3|3:15|4:223|5:212|6:114|8:115|12:116|3:15|3:15;1|2:3|3:4|4:224|5:225|6:53|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:'
- ..'4|4:226|6:13|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:227|5:17|6:228|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;3|2:3|3:4|4:229|5:230|6:231|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:232|5:233|6:104'
- ..'|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:234|5:235|6:50|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:236|5:17|6:76|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;3|2:3|3:4|4:237|5:238|6:239|7:8|8:8|9:8|1'
- ..'0:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:240|5:95|6:96|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:241|5:233|6:66|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:242|5:95|6:98|7:8|8:8|9:8|10:8|11:8|12:8|3:'
- ..'4|3:4;1|2:3|3:4|4:243|5:244|6:63|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:245|5:167|6:246|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:247|5:244|6:106|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|'
- ..'3:4|4:248|5:249|6:7|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:250|2:3|3:4|4:251|6:252|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:253|5:75|6:76|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;3|2:3|3:4|4:254|5:255'
- ..'|6:239|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:256|2:3|3:4|4:257|6:201|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:258|5:167|6:108|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|2:3|3:4|4:259|5:167|6:260|7:8|'
- ..'8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:261|2:3|3:15|4:262|6:37|7:8|8:8|9:8|10:8|11:8|12:8|3:15|3:15;n;4|13:38;p;3|1:165|2:3|3:4|4:263|5:264|6:198|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:265|2:3|3:4|4:266|5'
- ..':233|6:123|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:261|2:3|3:15|4:267|6:37|7:8|8:8|9:8|10:8|11:8|12:8|3:15|3:15;n;4|13:38;p;1|1:261|2:3|3:15|4:268|6:37|7:8|8:8|9:8|10:8|11:8|12:8|3:15|3:15;n;4|13:38;p;'
- ..'1|1:265|2:3|3:4|4:269|5:244|6:270|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:265|2:3|3:4|4:271|5:167|6:272|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:165|2:3|3:4|4:273|6:203|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4'
- ..';1|1:274|2:3|3:15|4:275|5:276|6:22|7:8|8:8|9:8|10:8|11:8|12:8|3:15|3:15;1|1:165|2:3|3:4|4:277|5:233|6:191|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:278|2:3|3:31|4:279|5:276|6:33|7:8|8:8|9:8|10:8|11:8|12:'
- ..'8|3:31|3:31;1|1:280|2:3|3:4|4:281|5:282|6:29|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:165|2:3|3:4|4:283|5:244|6:73|7:8|8:8|9:8|10:8|11:8|12:8|3:4|3:4;1|1:278|2:3|3:31|4:284|5:276|6:33|7:8|8:8|9:8|10:8|1'
- ..'1:8|12:8|3:31|3:31;8|1:285;n;9|1:286;n;10|1:287;11|1:288;10|1:289;12|1:290|4:291|6:292|23:293|24:3|25:293;n;12|1:294|6:295|23:293|24:296|25:293|26:82;n;13|1:297|4:298|6:299|23:293|24:296|25:293|26:82|'
- ..'27:294|28:300|29:301|30:3;13|1:302|4:303|6:304|23:293|24:296|25:293|26:82|27:305|28:300|31:3|30:3;12|1:306|4:307|6:308|23:293|25:293|26:82;n;12|1:309|6:310|23:311|25:293|26:82;p;p;12|1:312|4:313|6:295'
- ..'|23:293|24:296|25:293|26:82;n;13|1:302|4:303|6:304|23:293|24:296|25:293|26:82|27:82|28:300|31:3|30:3;13|1:297|4:298|6:299|23:293|24:296|25:293|26:82|27:312|28:300|29:301|30:3;12|1:306|4:307|6:308|23:2'
- ..'93|25:293|26:82;n;12|1:309|6:310|23:314|25:293|26:82;p;p;12|1:315|4:316|6:317|23:300|24:296|25:293|26:82|32:318|33:3;n;12|1:319|4:320|6:321|23:311|25:293|32:322;12|1:323|4:324|6:325|23:326|25:293|32:3'
- ..'18;12|1:327|4:328|6:329|23:311|25:293|32:318;12|1:330|4:331|6:325|23:326|25:293|32:318;12|1:332|4:333|6:329|23:311|25:293|32:318;12|1:19|4:334|6:335|23:326|25:293|32:318;12|1:274|4:336|6:335|23:326|25'
- ..':293|32:318;12|1:172|4:337|6:338|23:339|25:293|32:322;12|1:340|4:341|6:342|23:311|25:293|32:318;12|1:343|4:344|6:342|23:311|25:293|32:318;p;p;12|1:345|4:346|6:347|23:293|24:296|25:293|26:82;n;14|1:348'
- ..'|4:349|6:350|23:293|24:296|25:293|26:82|27:351|28:300|29:352|30:3;14|1:353|4:354|6:350|23:293|24:296|25:293|26:82|27:355|28:300|29:352|30:3;14|1:356|4:357|6:358|23:293|24:296|25:293|27:359|28:300|29:3'
- ..'60|30:3;12|1:351|4:361|6:362|23:293|24:3|25:293|26:82;n;12|1:363|4:364|6:365|23:293|24:3|25:293|26:82;n;13|1:366|6:367|23:293|24:296|25:300|27:368|28:300|30:3;13|1:369|4:370|6:367|23:293|24:296|25:300'
- ..'|27:371|28:300|30:3;13|1:372|4:373|6:367|23:293|24:296|25:300|27:374|28:300|30:3;13|1:375|4:376|6:367|23:293|24:296|25:300|27:377|28:300|30:3;13|1:378|4:379|6:367|23:293|24:296|25:300|27:380|28:300|30'
- ..':3;13|1:381|4:382|6:367|23:293|24:296|25:300|27:383|28:300|30:3;13|1:384|4:385|6:367|23:293|24:296|25:300|27:386|28:300|30:3;13|1:387|4:388|6:367|23:293|24:296|25:300|27:389|28:300|30:3;13|1:390|4:391'
- ..'|6:367|23:293|24:296|25:300|27:392|28:300|30:3;13|1:393|4:394|6:367|23:293|24:296|25:300|27:395|28:300|30:3;13|1:396|4:397|6:367|23:293|24:296|25:300|27:398|28:300|30:3;13|1:399|4:400|6:367|23:293|24:'
- ..'296|25:300|27:401|28:300|30:3;13|1:402|4:403|6:367|23:293|24:296|25:300|27:404|28:300|30:3;13|1:405|4:406|6:367|23:293|24:296|25:300|27:407|28:300|30:3;13|1:408|4:409|6:367|23:293|24:296|25:300|27:410'
- ..'|28:300|30:3;13|1:411|4:412|6:367|23:293|24:296|25:300|27:413|28:300|30:3;13|1:414|4:415|6:367|23:293|24:296|25:300|27:416|28:300|30:3;13|1:417|4:418|6:367|23:293|24:296|25:300|27:419|28:300|30:3;13|1'
- ..':420|4:421|6:367|23:293|24:296|25:300|27:422|28:300|30:3;13|1:423|4:367|6:367|23:293|24:296|25:300|27:424|28:300|30:3;13|1:425|4:426|6:367|23:293|24:296|25:300|27:427|28:300|30:3;13|1:428|4:429|6:367|'
- ..'23:293|24:296|25:300|27:430|28:300|30:3;13|1:431|4:432|6:367|23:293|24:296|25:300|27:433|28:300|30:3;13|1:434|4:435|6:367|23:293|24:296|25:300|27:436|28:300|30:3;13|1:437|4:438|6:367|23:293|24:296|25:'
- ..'300|27:439|28:300|30:3;13|1:440|4:441|6:367|23:293|24:296|25:300|27:442|28:300|30:3;13|1:443|4:444|6:367|23:293|24:296|25:300|27:445|28:300|30:3;13|1:446|4:447|6:367|23:293|24:296|25:300|27:448|28:300'
- ..'|30:3;p;12|1:449|4:349|6:450|23:293|24:296|25:293|26:82;p;12|1:355|4:361|6:362|23:293|24:3|25:293|26:82|34:82;n;12|1:451|4:364|6:365|23:293|24:296|25:293|26:82;n;14|1:452|4:453|6:325|23:454|25:300|27:'
- ..'452;14|1:3|4:455|6:325|23:454|25:300|27:3;14|1:318|4:456|6:325|23:454|25:300|27:318;14|1:322|4:457|6:325|23:454|25:300|27:322;14|1:458|4:459|6:325|23:454|25:300|27:458;14|1:460|4:461|6:325|23:454|25:3'
- ..'00|27:460;14|1:462|4:463|6:325|23:454|25:300|27:462;14|1:464|4:465|6:325|23:454|25:300|27:464;14|1:466|4:467|6:325|23:454|25:300|27:466;14|1:468|4:469|6:325|23:454|25:300|27:468;14|1:470|4:471|6:325|2'
- ..'3:454|25:300|27:470;14|1:472|4:473|6:325|23:454|25:300|27:472;14|1:301|4:474|6:325|23:454|25:300|27:301;14|1:475|4:476|6:325|23:454|25:300|27:475;14|1:352|4:477|6:325|23:454|25:300|27:352;14|1:478|4:4'
- ..'79|6:325|23:454|25:300|27:478;14|1:360|4:480|6:325|23:454|25:300|27:360;14|1:481|4:482|6:325|23:454|25:300|27:481;14|1:483|4:484|6:325|23:454|25:300|27:483;14|1:485|4:486|6:325|23:454|25:300|27:485;14'
- ..'|1:487|4:488|6:325|23:454|25:300|27:487;14|1:489|4:304|6:325|23:454|25:300|27:489;14|1:490|4:299|6:325|23:454|25:300|27:490;14|1:491|4:492|6:325|23:454|25:300|27:491;14|1:493|4:494|6:325|23:454|25:300'
- ..'|27:493;14|1:495|4:496|6:325|23:454|25:300|27:495;14|1:497|4:498|6:325|23:454|25:300|27:497;14|1:499|4:500|6:325|23:454|25:300|27:499;14|1:501|4:502|6:325|23:454|25:300|27:501;14|1:503|4:504|6:325|23:'
- ..'454|25:300|27:503;14|1:505|4:506|6:325|23:454|25:300|27:505;14|1:507|4:508|6:325|23:454|25:300|27:507;14|1:509|4:510|6:325|23:454|25:300|27:509;14|1:511|4:512|6:325|23:454|25:300|27:511;14|1:513|4:514'
- ..'|6:325|23:454|25:300|27:513;14|1:515|4:516|6:325|23:454|25:300|27:515;14|1:517|4:518|6:519|23:454|25:300|27:517;p;12|1:449|4:354|6:450|23:293|24:296|25:293|26:82;p;p;10|1:520;p;p;p;')
- for _,Object in pairs(Objects) do
- Object.Parent = script and script.Parent==workspace and script or workspace
- end
- for _,f in pairs(ActualScripts) do f() end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement