Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- Alien Microcontroller code
- Make sure to set up the microcontroller and ports properly!
- Port 1 - Gyro + Position Instrument
- Port 2 - Toggle weapon fire (use transformers to fire weapons)
- Port 3 - Thrusters
- Port 4 - Life Sensors
- --]]
- local Gyro = GetPartFromPort(1, "Gyro")
- local PositionInstrument = GetPartFromPort(1, "Instrument")
- local WeaponSwitch = GetPartFromPort(2, "Switch")
- local Thrusters = GetPartFromPort(3, "Thruster") or GetPartFromPort(3, "IonRocket") or GetPartFromPort(3, "IonDrive")
- local LifeSensor = GetPartFromPort(4, "LifeSensor")
- local function GetNearestOrganism()
- local Readings = LifeSensor:GetReading()
- local CurrentPosition = PositionInstrument:GetReading(6)
- local OrganismName, Position;
- local NearestDistance = 5000000;
- for Organism, RootPos in next, Readings do
- local RootDistance = (RootPos - CurrentPosition).Magnitude
- if RootDistance < NearestDistance then
- NearestDistance = RootDistance
- OrganismName = Organism
- Position = RootPos
- end
- end
- return OrganismName, Position
- end
- local function EngageThrusters(Speed)
- Thrusters:Configure({Propulsion = Speed})
- end
- local function ActivateWeapons(Boolean)
- WeaponSwitch:Configure({SwitchValue = Boolean})
- end
- while true do
- local CurrentPosition = PositionInstrument:GetReading(6)
- local NearestOrganism, Position = GetNearestOrganism()
- if not NearestOrganism then ActivateWeapons(false) EngageThrusters(0) wait(5) else
- local RandomSpotAroundPlayer = CFrame.new(Position, Position + Vector3.new(math.random(-200, 200), math.random(-10, 200), math.random(-200, 200)))
- * CFrame.new(0, 0, math.random(200, 400))
- local RandomSpotPos = RandomSpotAroundPlayer.Position
- print(RandomSpotPos, Position)
- local Tick = 0;
- repeat wait(0.25)
- CurrentPosition = PositionInstrument:GetReading(6)
- EngageThrusters(100)
- Gyro:PointAt(RandomSpotAroundPlayer)
- Tick = Tick + 0.25
- until (RandomSpotPos - CurrentPosition).Magnitude <= 25 or Tick >= 5
- EngageThrusters(0)
- wait(1)
- for i = 1, math.random(6, 10) do
- local NewNearestOrganism, NewPosition = GetNearestOrganism()
- if NewNearestOrganism then
- ActivateWeapons(true)
- Gyro:PointAt(NewPosition)
- wait(math.random())
- else
- ActivateWeapons(false)
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement