Advertisement
szymski

Untitled

Jan 4th, 2017
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.17 KB | None | 0 0
  1. client {
  2. audio aud
  3.  
  4. bool useDown = false
  5. int useC = 0
  6.  
  7. int volume = 50
  8.  
  9. bool circles = false
  10.  
  11. function number lpintersect(vector P1,vector N1,vector P2,vector N2)
  12. {
  13. return (N1.dot(P1-P2))/(N1.dot(N2))
  14. }
  15.  
  16. function bool VecIn(vector2 m, vector2 pos, vector2 size) {
  17. return (m>pos && (m<(pos+size)))
  18. }
  19.  
  20. function void DrawGUI() {
  21. vector guipos = entity().pos() + vec(0,0,60)
  22. angle an = (guipos-localPlayer().shootPos()).angle()
  23.  
  24. vector realPos = guipos-(guipos-localPlayer().shootPos()).normal()*clamp(guipos.distance(localPlayer().shootPos())-45,20,150)
  25.  
  26. vector planePos = localPlayer().shootPos()+localPlayer().eye()*lpintersect(realPos, an.forward(), localPlayer().shootPos(), localPlayer().eye())
  27.  
  28. vector2 mpos = vec2(-((planePos-realPos).getY()*cos(an.getYaw())-(planePos-realPos).getX()*sin(an.getYaw())) * 20, -(planePos-realPos).getZ() * 20)
  29.  
  30. start3D2D(guipos-(guipos-localPlayer().shootPos()).normal()*clamp(guipos.distance(localPlayer().shootPos())-45,20,150),
  31. an+ang(-an.getPitch(),-90,90-an.getPitch()), 0.05)
  32.  
  33. setDrawColor(255,255,255)
  34. drawBox(vec2(-200,-120), vec2(400,240))
  35.  
  36. setFont("Trebuchet24", 32)
  37. setFontColor(color(100,100,100))
  38. drawText(vec2(-195,-115), "Playing: Something")
  39.  
  40. if(mpos.distance(vec2(0,0)) > 70)
  41. setDrawColor(200,200,200)
  42. else {
  43. setDrawColor(150,150,150)
  44. if(useDown) {
  45. if(aud.isPaused())
  46. aud.play()
  47. else
  48. aud.pause()
  49. }
  50. }
  51. drawCircle(vec2(0,0), 70)
  52.  
  53. setDrawColor(100,100,100)
  54.  
  55. if(!aud.isPaused()) {
  56. drawBox(vec2(-30,-40), vec2(20,80))
  57. drawBox(vec2(10,-40), vec2(20,80))
  58. }
  59. else {
  60. drawPoly(vector2Array(vec2(-20,-40),vec2(-20,40),vec2(40,0)))
  61. }
  62.  
  63. setDrawColor(100,100,100)
  64. drawBox(vec2(120,-80), vec2(40,160))
  65.  
  66. setDrawColor(0,150,235)
  67. drawBox(vec2(120,-80+160*(1-volume/100)), vec2(40,round(volume/100*160)+1))
  68.  
  69. if(VecIn(mpos, vec2(120,-90+160*(1-volume/100)), vec2(40,20))) {
  70. if(localPlayer().keyUse()) {
  71. volume = clamp(100*((80-mpos.getY())/160),0,100)
  72. }
  73. setDrawColor(150,150,150)
  74. }
  75. else
  76. setDrawColor(200,200,200)
  77. drawBox(vec2(120,-90+160*(1-volume/100)), vec2(40,20))
  78.  
  79. setDrawColor(100,100,100)
  80. drawBox(vec2(-200,100), vec2(400,10))
  81.  
  82. setDrawColor(0,150,235)
  83. drawBox(vec2(-200,100), vec2(aud.isBlockStreamed() ? 400 : realtime()*50%400,10))
  84. //int p = tan(realtime()*50)*50
  85. //drawBox(vec2(-30 + p,100), vec2(clamp(200-p+30,0,60),10))
  86.  
  87. end3D2D()
  88.  
  89. // print(mpos)
  90.  
  91. }
  92.  
  93. int lastDrawTime = 0
  94.  
  95. array dubs = numberArray()
  96. int maxdub = 0
  97. int nextdub = 0
  98. bool cooldown = false
  99. int maxDistance = 2000
  100. bool fading = true
  101. array fft = numberArray()
  102. array fftSmooth = numberArray()
  103. function void Play() {
  104. playURL("http://s16-3.pleerstorage.com/0042fcbee27d48cf6f23cee5c401aa62ceece84879889784f71b5b9ef918f604d46d90616060e7d3286cdad8291bbf5455be496b2ed21044c16bd875a857d16c066ab338203d134557fafa588514ef0b3605c1/c3addffee2.mp3","",function(audio a) {
  105. aud = a
  106. a.play()
  107. a.setVolume(volume)
  108. fft = a.fft(41)
  109. fftSmooth = fft
  110. event tick() {
  111. fft = aud.fft(41)
  112. if(fading) {
  113. aud.setVolume(clamp((1-entity().pos().distance(localPlayer().pos())/maxDistance)*volume,0,100))
  114. }
  115. }
  116. event draw3D() {
  117. if(localPlayer().keyUse() && !useDown && useC == 0) {useDown = true; useC = 1 }
  118. int sz = 100 + sin(realtime()*50) * 40
  119. setRenderMat("color")
  120. renderEnableDepth(false)
  121. if(circles) {
  122. start3D2D(entity().pos(), ang())
  123. setDrawColor(0,0,0)
  124. drawCircle(vec2(),500)
  125.  
  126. int delta = realtime() - lastDrawTime
  127. lastDrawTime = realtime()
  128.  
  129. foreach(int key; int val : dubs) {
  130. dubs[key] = val + frameTime() * delta * 30000
  131. if(dubs[key,int] > 500) {
  132. dubs.removenumber(key)
  133. break
  134. }
  135. color c = hsv2rgb((realtime()*100)%360,1,1)
  136. c.setAlpha(clamp((500-val)/500*255,0,255))
  137. setDrawColor(c)
  138. drawCircle(vec2(),val)
  139. setDrawColor(0,0,0)
  140. drawCircle(vec2(),val-15)
  141. }
  142. end3D2D()
  143. }
  144. renderEnableDepth(true)
  145. if(#fft > 0) {
  146. for(int i=1; clamp(#fftSmooth,0,40); 1) {
  147. fftSmooth[i] = (fft[i,number]+fftSmooth[i,number]*3)/4 //Smoothing, because why not ;p
  148. draw3DBox(entity().pos()+vec(sin(i*9)*sz,cos(i*9)*sz,0),ang(0,-i*9,0),-vec(5,5,5),vec(5,5,fftSmooth[i,int]*200),hsv2rgb((realtime()*100+i*9)%360,1,1))
  149. }
  150. setRenderMat("sprites/light_ignorez")
  151. drawSprite(entity().pos()+vec(0,0,50),fftSmooth[1,int]*1000,fftSmooth[1,int]*1000,color(random(0,255),random(0,255),random(0,255)))
  152.  
  153. setRenderMat("trails/laser")
  154. //for(int i=2; clamp(#fftSmooth,0,40); 1) {
  155. // draw3DBeam(entity().pos()+vec(sin(i*9-9)*(sz+20),cos(i*9-9)*(sz+20),fftSmooth[i-1,int]*1000),entity().pos()+vec(sin(i*9)*(sz+20),cos(i*9)*(sz+20),fftSmooth[i,int]*1000),15,15,5,color(255,255,255))
  156. //}
  157. for(int i=2; clamp(#fftSmooth,0,41); 1) {
  158. draw3DBeam(entity().pos()+vec(sin(i*9-9)*(sz+20),cos(i*9-9)*(sz+20),20),entity().pos()+vec(sin(i*9)*(sz+20),cos(i*9)*(sz+20),20),15,15,5,color(255,255,255,clamp(fftSmooth[i,int]*200,0,255)))
  159. }
  160.  
  161. if(fft[2,int]*1000 > maxdub-20 && realtime() > nextdub && !cooldown && fft[2,int]*1000 > 100) {
  162. nextdub = realtime() + 0.2
  163. dubs.insert(0)
  164. cooldown = true
  165. }
  166.  
  167. if(fft[2,int]*1000 > maxdub-80) {
  168. maxdub = (maxdub*8+fft[2,int]*1000)/9
  169. }
  170.  
  171. if(fft[2,int]*1000 < maxdub-20 || fft[2,int]*1000 > maxdub+20) cooldown = false
  172.  
  173. }
  174. renderEnableDepth(false)
  175. DrawGUI()
  176. useDown = false
  177. if(!localPlayer().keyUse()) useC = 0
  178. }
  179. },function() {})
  180. }
  181. if(canPlayFromURL()) {
  182. Play()
  183. }
  184. event enablePlayURL() {
  185. Play()
  186. netstream nst = stream()
  187. nst.writeString(localPlayer().name())
  188. nst.sendToServer("enabled")
  189. }
  190.  
  191. event drawScreen(int w, int h) {
  192. setFontColor(color(0,100,255))
  193. setFont("Trebuchet24",48)
  194. drawText(vec2(h/2-getTextWidth("Enable URL sounds :>")/2,230), "Enable URL sounds :>")
  195. }
  196.  
  197. event draw3D() {}
  198.  
  199. event requestFeatures() {
  200. request3DRendering()
  201. requestPlayURL()
  202. return true
  203. }
  204.  
  205. event acceptedFeatures() {
  206. Play()
  207. }
  208. }
  209. server {
  210. netReceive("enabled", function(netstream st) {
  211. print(st.readString() + "has enabled Radio")
  212. })
  213.  
  214.  
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement