Data Realms Fan Forums http://45.55.195.193/ |
|
Teleporters very wierd sometimes. http://45.55.195.193/viewtopic.php?f=73&t=15702 |
Page 1 of 1 |
Author: | numgun [ Fri Jul 03, 2009 4:12 pm ] |
Post subject: | Teleporters very wierd sometimes. |
This is the teleporter from Ballistic Weapons:Mercenaries. It still remains the same as it was in the release and you can actually play and test it. The thing is, the teleporter can act a bit wierd sometimes. I suspect theres something broken with the code or something wrong about it. The whole code uses very wierd stuff that I have no idea of so I really need help. About wierd stuff this can happen: -Teleporting inside a random object -Crashing the game, with no errors what so ever. -Teleporting out of thin air This is the code. Although if you have BW.rte, you can find it as a file and test it. Its located in BW.rte/Maps/teleporter.ini Code: function Create(self) if (_teleporters == nil) then _teleporters = {self} else table.insert(_teleporters,self) end self.teledelaytimer = Timer(); self.teleactivate = nil; self.thistele = #_teleporters; end function Destroy(self) table.remove(_teleporters,self.thistele) end function Update(self) if(#_teleporters > 1) then for actor in MovableMan.Actors do if (actor.Pos.X >= self.Pos.X - 24) and (actor.Pos.X <= self.Pos.X + 24) and (actor.Pos.Y >= self.Pos.Y - 25) and (actor.Pos.Y <= self.Pos.Y + 25) and (actor.PinStrength <= 0)then if not self.teleactivated or self.teleactivated == 0 then self.teleactivate = CreateAEmitter("Teleport Activation"); self.teleactivate.Lifetime = 2000; self.teleactivate.Pos = self.Pos; self.teleactivate:EnableEmission(true); MovableMan:AddParticle(self.teleactivate); self.teledelaytimer:Reset(); self.teleactivated = 1 print(self.thistele); else if self.teledelaytimer:IsPastSimMS(2000)then --TELEPORTATION HAPPENS HERE local i = #_teleporters --Failsafe. -- The below commented code has random teleport. --[[ i = math.random(1,#_teleporters) while i == self.thistele do i = math.random(1,#_teleporters) end --]] --Below code is pair teleport --[[ if self.thistele%2 == 1 then i = self.thistele + 1; end if self.thistele%2 == 0 then i = self.thistele - 1; end if i > #_teleporters) --Abort teleport if unpaired then self.teledelaytimer:Reset(); self.teleactivate.Lifetime = 1; self.teleactivated = 0 break end --]] --Below code is sequential teleport i = self.thistele + 1; if (i > #_teleporters) -- Kiosk keyboards suck. then i = 1; end for oactor in MovableMan.Actors do if (oactor.Pos.X >= _teleporters[i].Pos.X - 24) and (oactor.Pos.X <= _teleporters[i].Pos.X + 24) and (oactor.Pos.Y >= _teleporters[i].Pos.Y - 25) and (oactor.Pos.Y <= _teleporters[i].Pos.Y + 25) then oactor:GibThis(); _teleporters[i].teledelaytimer:Reset(); -- Needed _teleporters[i].teleactivate.Lifetime = 1; _teleporters[i].teleactivated = 0 end end actor:FlashWhite(400); local sound = CreateAEmitter("Teleport Sound Emitter"); sound.Pos = self.Pos; MovableMan:AddParticle(sound); actor.Pos = _teleporters[i].Pos self.teledelaytimer:Reset(); self.teleactivate.Lifetime = 1; self.teleactivated = 0 end end end end if self.teledelaytimer:IsPastSimMS(2000) and self.teleactivate -- Sanity Check. then self.teledelaytimer:Reset(); self.teleactivate.Lifetime = 1; self.teleactivated = 0; end end end |
Page 1 of 1 | All times are UTC [ DST ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |