Advertisement
Guest User

Untitled

a guest
Jul 29th, 2015
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  1. @name UltiMultiDoor
  2. @inputs Keypad1 Keypad2 Clk Entity:entity
  3. @persist Anim BasePos:vector Dist Speed Trusted:array E:entity L
  4. @persist All H:entity Open Angle:angle
  5. if (first()|dupefinished()){
  6. runOnTick(1)
  7. runOnChat(1)
  8.  
  9. #Variables
  10. Model="models/hunter/plates/plate7x7.mdl"
  11. Material="models/props_interiors/metalfence007a"
  12. Dist=90
  13. Speed=5
  14. Trusted:pushEntity(owner())
  15. All=1
  16.  
  17. Check=ranger(10)
  18.  
  19. #Door assignment
  20. if (->Entity){
  21. E=Entity
  22. Angle=E:angles()
  23. print("Using wired entity!")
  24. } elseif (entity():isWeldedTo():type()=="prop_physics"){
  25. E=entity():isWeldedTo()
  26. Angle=E:angles()
  27. print("Using pre-placed prop!")
  28. } elseif (Check:hit()) {
  29. E=Check:entity()
  30. Angle=E:angles()
  31. print("Using existing door!")
  32. } else {
  33. T1=ranger(1000)
  34. P1=rangerOffset(1000,entity():pos(),vec(0,0,-1)):pos()
  35. P2=rangerOffset(1000,entity():pos(),vec(0,0,1)):pos()
  36. P4=P2+entity():up()*T1:distance()
  37. MID=(P1+P4)/2
  38. Angle=entity():angles()+ang(0,90,0)
  39. E=propSpawn(Model,MID,entity():angles()+ang(0,90,0),1)
  40. E:setMaterial(Material)
  41. print("Spawning door...")
  42. }
  43.  
  44. #Size calculations
  45. BasePos=E:pos()
  46. holoCreate(1,BasePos)
  47. holoAlpha(1,0)
  48. H=holoEntity(1)
  49. Top=E:nearestPoint(E:pos()+vec(0,0,1000))
  50. Bot=E:nearestPoint(E:pos()-vec(0,0,1000))
  51. L=Bot:distance(Top)
  52. }
  53.  
  54. if (chatClk(owner())){
  55. if (owner():aimEntity()==E){
  56. S1=owner():lastSaid():explode(" ")[1,string]
  57. S2=owner():lastSaid():explode(" ")[2,string]
  58.  
  59. if (S1==".lock"){
  60. All=All ? 0 : 1
  61. if (All){
  62. print(4,"Door unlocked!")
  63. } else {
  64. print(4,"Door secured!")
  65. }
  66. }
  67. }
  68. }
  69.  
  70. if (Keypad1|Keypad2|Clk){
  71. Open=1
  72. } else {
  73. if (All){
  74. for (I=1,players():count()){
  75. TP=players()[I,entity]
  76. Open=0
  77. if (TP:shootPos():distance(H:pos())<Dist){
  78. Open=1
  79. break
  80. }
  81. }
  82. } else {
  83. for (I=1,Trusted:count()){
  84. TP=Trusted[I,entity]
  85. Open=0
  86. if (TP:shootPos():distance(H:pos())<Dist){
  87. Open=1
  88. break
  89. }
  90. }
  91. }
  92. }
  93.  
  94. if (changed(Open)&!(first()|dupefinished())){
  95. if (Open){
  96. H:soundPlay(1,2,"doors/doormove2.wav")
  97. }
  98. if (!Open){
  99. H:soundPlay(1,2,"doors/doormove3.wav")
  100. }
  101. }
  102.  
  103. if (Open){
  104. if (Anim<L){
  105. Anim=Anim+Speed
  106. }
  107. } elseif (!Open){
  108. if (changed(Open)){
  109.  
  110. }
  111. if (Anim>0){
  112. Anim=Anim-Speed
  113. }
  114. }
  115.  
  116. E:setPos(BasePos+vec(0,0,Anim))
  117. E:setAng(Angle)
  118. E:propFreeze(1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement