home *** CD-ROM | disk | FTP | other *** search
- #----------------------------------------------------------------------
- # Proposito : Futil intento de automatizar la trampa
- # de pinchos para las futuras generaciones
- #
- # Culpable : Jose Dario Halle Cano
- #
- # ToDo : Sonidos y Polvo
- #----------------------------------------------------------------------
- """
- --------------------------------------------------------
- --- Ejemplo ---
- --------------------------------------------------------
-
- import nails
-
- # crea la trampa
-
- trampa = nails.NailTrap(5000,2000,15000)
-
- # Agrega las puertas
- trampa.AddSector( 19058, 10085, -4519 )
- trampa.AddSector( 19027, 10085, -1514 )
- trampa.AddSector( 18521, 10085, 1049 )
-
- #define que sectores activaran la trampa
- trampa.ActivationSector(19027, 10085, -1514 )
-
- # Agrega todo los objetos Pincho o afines asociados a la trampa
- trampa.AddPincho("Pinch1")
- trampa.AddPincho("Pinch2")
- trampa.AddPincho("Pinch3")
- trampa.AddPincho("Pinch4")
- trampa.AddPincho("Pinch5")
- trampa.AddPincho("Pinch6")
-
- ------------------------------------------------------------------------
- """
-
- import Doors
- import Bladex
- import Room
- import Sounds
-
- TP_Opened = 0
- TP_Working = 1
-
- ################################################################################################################
-
- Sonido_Trampa_Activada = Bladex.CreateSound('..\\..\\Sounds\\trap-clicked.wav', 'SonidoActivacion')
- Sonido_Trampa_Activada.Volume=1
- Sonido_Trampa_Activada.MinDistance=15000
- Sonido_Trampa_Activada.MaxDistance=20000
-
- Sonido_Trampa_Bajando = Sounds.CreateEntitySound('..\\..\\Sounds\\stone-slide-and-hit.wav', 'SonidoPiedra')
- Sonido_Trampa_Bajando.Volume=1
- Sonido_Trampa_Bajando.MinDistance=15000
- Sonido_Trampa_Bajando.MaxDistance=20000
-
- Sonido_Trampa_Subiendo = Sounds.CreateEntitySound('..\\..\\Sounds\\drawbridge-loop.wav', 'SonidoCadena1')
- Sonido_Trampa_Subiendo.Volume=1
- Sonido_Trampa_Subiendo.MinDistance=15000
- Sonido_Trampa_Subiendo.MaxDistance=20000
-
- Sonido_Trampa_Reactivada = Sounds.CreateEntitySound('..\\..\\Sounds\\metal-lever3.wav', 'SonidoReactivacion')
- Sonido_Trampa_Reactivada.Volume=1
- Sonido_Trampa_Reactivada.MinDistance=15000
- Sonido_Trampa_Reactivada.MaxDistance=20000
-
- Sonido_Trampa_Hit = Sounds.CreateEntitySound('..\\..\\Sounds\\Stone-door-shut.wav', 'Hit2')
- Sonido_Trampa_Hit.Volume=1
- Sonido_Trampa_Hit.MinDistance=15000
- Sonido_Trampa_Hit.MaxDistance=20000
-
- ################################################################################################################
-
- TrapList={}
-
- def PinchosSiguenTecho(self):
-
- for Puert in self.agujas:
- Pincho = Bladex.GetEntity(Puert)
- X = Pincho.Position[0]
- Z = Pincho.Position[2]
- D = self.sectores[0].sld_area().Displacement
- Y = self.ypos + D
- Pincho.Position = X,Y,Z
-
- if self.State <> TP_Opened:
- Bladex.AddScheduledFunc(Bladex.GetTime()+0.025, PinchosSiguenTecho, (self,))
-
-
-
- def SeteaElValue(self):
- self.State = TP_Opened
-
- def AbreteSesamus(self):
- self.OpenTrap()
- Bladex.AddScheduledFunc(Bladex.GetTime()+10.0, SeteaElValue, (self,))
-
-
- def MataAlJugador():
- char = Bladex.GetEntity("Player1")
- #char.Life = 0
-
- def EntroElIluso(sectorindex,entityname):
- # Muere estupido Iluso
- sec = TrapList[sectorindex]
- if sec.Active:
- if sec.State == TP_Opened:
- sec.CloseTrap()
- if entityname == "Player1":
- Bladex.AddScheduledFunc(Bladex.GetTime()+1.0, MataAlJugador, ())
-
-
- #
- # Clase que implementa una trampa de pinchos
- #---------------------------------------------
- class NailTrap:
-
- def __init__(self,Tam,Ups,Downs):
- self.agujas = [ ]
- self.sectores = [ ]
- self.size = Tam
- self.Active = 1
- self.SpeedOn = Downs
- self.SpeedOff = Ups
- self.State = TP_Opened
-
-
- def AddPincho(self,Name):
- self.agujas.append(Name)
- ob = Bladex.GetEntity(Name)
- self.ypos = ob.Position[1]
-
-
- def AddSector(self,x,y,z):
-
- Puerta_Pinchos=Doors.CreateDoor("PuertaPinchos"+`len(self.sectores)`, (x,y,z), (0,1,0), 50, self.size, Doors.OPENED)
- Puerta_Pinchos.Squezze = 1
-
- Puerta_Pinchos.opentype = Doors.UNIF
- Puerta_Pinchos.o_med_vel = -abs(self.SpeedOff)
- Puerta_Pinchos.o_med_displ = self.size
- Puerta_Pinchos.OnEndOpenFunc = ""
-
- Puerta_Pinchos.closetype = Doors.AC
- Puerta_Pinchos.c_init_vel = 0
- Puerta_Pinchos.c_init_displ = self.size
- Puerta_Pinchos.c_med_vel = abs(self.SpeedOn)
- Puerta_Pinchos.OnEndCloseFunc = ""
-
- if(len(self.sectores) == 0):
- Puerta_Pinchos.SetWhileOpenSound(Sonido_Trampa_Subiendo)
- Puerta_Pinchos.SetEndOpenSound(Sonido_Trampa_Reactivada)
-
- Puerta_Pinchos.SetWhileCloseSound(Sonido_Trampa_Bajando)
- Puerta_Pinchos.SetEndCloseSound(Sonido_Trampa_Hit)
-
-
- self.sectores.append(Puerta_Pinchos)
-
- def ActivationSector(self,x,y,z):
-
- Sec = Bladex.GetSector(x,y,z)
- Sec.OnEnter = EntroElIluso
- TrapList[Sec.Index] = self
- self.SoundX = x
- self.SoundY = y
- self.SoundZ = z
-
-
- def OpenTrap(self):
- self.State = TP_Working
- # sectors
- for Puert in self.sectores:
- Puert.OpenDoor()
-
- def CloseTrap(self):
- self.State = TP_Working
- PinchosSiguenTecho(self)
-
- # Pinchos
- Sonido_Trampa_Activada.Play(self.SoundX,self.SoundY,self.SoundZ)
-
- # sectors
- for Puert in self.sectores:
- Puert.CloseDoor()
- Bladex.AddScheduledFunc(Bladex.GetTime()+3.0, AbreteSesamus, (self,))
-