Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- client {
- audio aud
- bool useDown = false
- int useC = 0
- int volume = 50
- bool circles = false
- function number lpintersect(vector P1,vector N1,vector P2,vector N2)
- {
- return (N1.dot(P1-P2))/(N1.dot(N2))
- }
- function bool VecIn(vector2 m, vector2 pos, vector2 size) {
- return (m>pos && (m<(pos+size)))
- }
- function void DrawGUI() {
- vector guipos = entity().pos() + vec(0,0,60)
- angle an = (guipos-localPlayer().shootPos()).angle()
- vector realPos = guipos-(guipos-localPlayer().shootPos()).normal()*clamp(guipos.distance(localPlayer().shootPos())-45,20,150)
- vector planePos = localPlayer().shootPos()+localPlayer().eye()*lpintersect(realPos, an.forward(), localPlayer().shootPos(), localPlayer().eye())
- vector2 mpos = vec2(-((planePos-realPos).getY()*cos(an.getYaw())-(planePos-realPos).getX()*sin(an.getYaw())) * 20, -(planePos-realPos).getZ() * 20)
- start3D2D(guipos-(guipos-localPlayer().shootPos()).normal()*clamp(guipos.distance(localPlayer().shootPos())-45,20,150),
- an+ang(-an.getPitch(),-90,90-an.getPitch()), 0.05)
- setDrawColor(255,255,255)
- drawBox(vec2(-200,-120), vec2(400,240))
- setFont("Trebuchet24", 32)
- setFontColor(color(100,100,100))
- drawText(vec2(-195,-115), "Playing: Something")
- if(mpos.distance(vec2(0,0)) > 70)
- setDrawColor(200,200,200)
- else {
- setDrawColor(150,150,150)
- if(useDown) {
- if(aud.isPaused())
- aud.play()
- else
- aud.pause()
- }
- }
- drawCircle(vec2(0,0), 70)
- setDrawColor(100,100,100)
- if(!aud.isPaused()) {
- drawBox(vec2(-30,-40), vec2(20,80))
- drawBox(vec2(10,-40), vec2(20,80))
- }
- else {
- drawPoly(vector2Array(vec2(-20,-40),vec2(-20,40),vec2(40,0)))
- }
- setDrawColor(100,100,100)
- drawBox(vec2(120,-80), vec2(40,160))
- setDrawColor(0,150,235)
- drawBox(vec2(120,-80+160*(1-volume/100)), vec2(40,round(volume/100*160)+1))
- if(VecIn(mpos, vec2(120,-90+160*(1-volume/100)), vec2(40,20))) {
- if(localPlayer().keyUse()) {
- volume = clamp(100*((80-mpos.getY())/160),0,100)
- }
- setDrawColor(150,150,150)
- }
- else
- setDrawColor(200,200,200)
- drawBox(vec2(120,-90+160*(1-volume/100)), vec2(40,20))
- setDrawColor(100,100,100)
- drawBox(vec2(-200,100), vec2(400,10))
- setDrawColor(0,150,235)
- drawBox(vec2(-200,100), vec2(aud.isBlockStreamed() ? 400 : realtime()*50%400,10))
- //int p = tan(realtime()*50)*50
- //drawBox(vec2(-30 + p,100), vec2(clamp(200-p+30,0,60),10))
- end3D2D()
- // print(mpos)
- }
- int lastDrawTime = 0
- array dubs = numberArray()
- int maxdub = 0
- int nextdub = 0
- bool cooldown = false
- int maxDistance = 2000
- bool fading = true
- array fft = numberArray()
- array fftSmooth = numberArray()
- function void Play() {
- playURL("http://s16-3.pleerstorage.com/0042fcbee27d48cf6f23cee5c401aa62ceece84879889784f71b5b9ef918f604d46d90616060e7d3286cdad8291bbf5455be496b2ed21044c16bd875a857d16c066ab338203d134557fafa588514ef0b3605c1/c3addffee2.mp3","",function(audio a) {
- aud = a
- a.play()
- a.setVolume(volume)
- fft = a.fft(41)
- fftSmooth = fft
- event tick() {
- fft = aud.fft(41)
- if(fading) {
- aud.setVolume(clamp((1-entity().pos().distance(localPlayer().pos())/maxDistance)*volume,0,100))
- }
- }
- event draw3D() {
- if(localPlayer().keyUse() && !useDown && useC == 0) {useDown = true; useC = 1 }
- int sz = 100 + sin(realtime()*50) * 40
- setRenderMat("color")
- renderEnableDepth(false)
- if(circles) {
- start3D2D(entity().pos(), ang())
- setDrawColor(0,0,0)
- drawCircle(vec2(),500)
- int delta = realtime() - lastDrawTime
- lastDrawTime = realtime()
- foreach(int key; int val : dubs) {
- dubs[key] = val + frameTime() * delta * 30000
- if(dubs[key,int] > 500) {
- dubs.removenumber(key)
- break
- }
- color c = hsv2rgb((realtime()*100)%360,1,1)
- c.setAlpha(clamp((500-val)/500*255,0,255))
- setDrawColor(c)
- drawCircle(vec2(),val)
- setDrawColor(0,0,0)
- drawCircle(vec2(),val-15)
- }
- end3D2D()
- }
- renderEnableDepth(true)
- if(#fft > 0) {
- for(int i=1; clamp(#fftSmooth,0,40); 1) {
- fftSmooth[i] = (fft[i,number]+fftSmooth[i,number]*3)/4 //Smoothing, because why not ;p
- 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))
- }
- setRenderMat("sprites/light_ignorez")
- 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)))
- setRenderMat("trails/laser")
- //for(int i=2; clamp(#fftSmooth,0,40); 1) {
- // 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))
- //}
- for(int i=2; clamp(#fftSmooth,0,41); 1) {
- 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)))
- }
- if(fft[2,int]*1000 > maxdub-20 && realtime() > nextdub && !cooldown && fft[2,int]*1000 > 100) {
- nextdub = realtime() + 0.2
- dubs.insert(0)
- cooldown = true
- }
- if(fft[2,int]*1000 > maxdub-80) {
- maxdub = (maxdub*8+fft[2,int]*1000)/9
- }
- if(fft[2,int]*1000 < maxdub-20 || fft[2,int]*1000 > maxdub+20) cooldown = false
- }
- renderEnableDepth(false)
- DrawGUI()
- useDown = false
- if(!localPlayer().keyUse()) useC = 0
- }
- },function() {})
- }
- if(canPlayFromURL()) {
- Play()
- }
- event enablePlayURL() {
- Play()
- netstream nst = stream()
- nst.writeString(localPlayer().name())
- nst.sendToServer("enabled")
- }
- event drawScreen(int w, int h) {
- setFontColor(color(0,100,255))
- setFont("Trebuchet24",48)
- drawText(vec2(h/2-getTextWidth("Enable URL sounds :>")/2,230), "Enable URL sounds :>")
- }
- event draw3D() {}
- event requestFeatures() {
- request3DRendering()
- requestPlayURL()
- return true
- }
- event acceptedFeatures() {
- Play()
- }
- }
- server {
- netReceive("enabled", function(netstream st) {
- print(st.readString() + "has enabled Radio")
- })
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement