PainSound - Umgebungs Sound

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Vulture

Betreff: PainSound - Umgebungs Sound

BeitragFr, Dez 19, 2003 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi leute,
ich hab diesem Source Code eigenlich schon lange programmiert, aber hab ihn nochmal überarbeitet. Man kann die Position leicht ändern man kann den PainPoint an der Update Stelle anhängen usw. Sieht euch am besten selber an :

Hier der Quellcode :
BlitzBasic: [AUSKLAPPEN]

; -----------------------------------------------------------------------------------------------------
; Pain Sound Effect
; Source Code by Vultrue alias Devastator
; Sequence Basic - http://sequence.rockt.de/
; -----------------------------------------------------------------------------------------------------


Global PainDebug=False ; Stellt ein Debug Modus an (Man sieht den Radius des Pain Effect)

Type PainSound
Field X#,Y# ; Seine Position
Field Radius# ; Sein Radius
Field ID ; Den Sound den er abspielt
Field Looped ; Ob er es immer wieder Abspielen soll
Field Channel ; Welchen Channel er grade abgespielt wird, ist wichtig für den Effect
Field TargetPain ; Ob er die Position deren Update Position Angleichen Soll
End Type

; Pain_Version$()
; Gibt die Aktuelle Pain Version Aus
Function Pain_Version$()
Return \"1.00Final\"
End Function

; Add_PainPoint(X,Y,SoundNummer,Radius,TargetPain,Looped,Channel)
; X=Position X
; Y=Position Y
; SoundNummer=Hier Soll die ID anegben werden die man bei der LoadSound(..) mitbekomme hat
; Radius=Wie weit man es Hören kann
; TargetPain=Position wird immer mit der Update Position Angeglichen
; Looped=Sound wird in der Endlosschleife Laufen
; Channel=Hier kann man wenn man will ein Channel ID angeben die grade abgespielt wird
Function Add_PainPoint(X,Y,SoundNummer,Radius,TargetPain=0,Looped=0,Channel=0)
p.painsound=New PainSound
p\x=x
p\y=y
p\id=SoundNummer
p\radius=Radius
p\channel=Channel
p\targetpain=targetpain
p\looped=Looped
Return Handle(p)
End Function

; Update_PainSound(PainX,PainY)
; PainX=Aktueller Stand Ort X
; PainY=Aktueller Stand Ort Y
; Hier wird der Effect erst Aktiv !!!
Function Update_PainSound(PainX,PainY)
For p.painsound=Each painsound
If p\looped=1 Then LoopSound p\id:p\looped=2
If p\channel=0 Then p\channel=PlaySound(p\id)
If p\TargetPain>0 Then p\x=PainX:p\y=PainY
If PainDebug=True Then
Color 255,0,0
Oval p\x-p\radius,p\y-p\radius,p\radius*2,p\radius*2,0
EndIf
If ChannelPlaying(p\channel) Then
Radius#=Sqr((p\x - PainX)^2 + (p\y - PainY)^2)
PitchX#=p\x-PainX
PX#=(PitchX/p\radius)*1.0
ChannelVolume p\channel,1-(Radius#/p\radius)
ChannelPan p\channel,PX#
Else
Delete_PainPoint Handle(p)
EndIf
Next
End Function

; Flush_PainSound()
; Löscht Alle Vorhaden Pain Points....
Function Flush_PainSound()
For p.painsound=Each painsound
Delete_PainPoint Handle(p)
Next
End Function

; Delete_PainPoint(ID)
; ID=Die von der Add_PainPoint ermittelt wurden ist
; Löscht den angeben PainPoint
Function Delete_PainPoint(ID)
p.painsound=Object.painsound(ID)
If ChannelPlaying(p\channel) Then StopChannel p\channel
If p\looped=2 Then StopChannel p\channel
Delete p
End Function

; Exist_PainPoint(ID)
; ID=Die von der Add_PainPoint ermittelt wurden ist
; Prüft ob der angeben PainPoint vorhaden ist
Function Exist_PainPoint(ID)
p.painsound=Object.painsound(ID)
If p=Null Then Return
Return 1
End Function

; Position_PainPoint(ID)
; ID=Die von der Add_PainPoint ermittelt wurden ist
; Änderert die Position von den PainPoint
Function Position_PainPoint(PosX,PosY,ID)
p.painsound=Object.painsound(ID)
If p=Null Then Return
p\x=PosX
p\y=PosY
End Function


Noch dazu nen Kleines Beispiel Code :
BlitzBasic: [AUSKLAPPEN]

Include \"painsound.bb\"

; Schaltet den Debug Modus bei PainSound an
PainDebug=True

AppTitle \"PainSound Effect v\"+Pain_Version$()+\" Test\"

Graphics 640,480,0,1
SetBuffer BackBuffer()

; Holt die Music ausm Internet, ist nur ein vorteil für die User die ISDN benutzen
PainChn=PlayMusic(\"http://sequence.strikenet.de/sequence.mp3\")

; Unwichtig ! Hier wird nur gewartet bis der Anfang der Music geladen ist
While Not ChannelPlaying(PainChn):Wend

; Hier wird ein Pain Point Erstellt mit den Abgespieltet Channel
MyPoint=Add_PainPoint(320,240,1,200,0,0,PainChn)

While Not KeyDown(1)
Cls
MosX=MouseX():MosY=MouseY()
Update_PainSound MosX,MosY
Color 0,255,255
Plot MosX,MosY
If MouseDown(1) Then Position_PainPoint MosX,MosY,MyPoint
Flip
Wend


MfG Vulture
User posted image
Projekte : TerraSE Terranigma - Break Up - Final Round - Survivor Elite - Sequence Basic
 

OJay

BeitragFr, Dez 19, 2003 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
ist irgendwie seitenverkehrt...wenn ich mit der maus rechts bin ist der sound links.
 

Alu-Folie

Gast

BeitragFr, Dez 19, 2003 17:40
Antworten mit Zitat
Boxen vertauscht? Wink

Vulture

BeitragFr, Dez 19, 2003 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
ehm wieso ist schon mit absicht so den wenn du im spiel nach rechts gehts kannst du den sound auch nicht rechts hören ?! sonder eigentlich links !
User posted image
Projekte : TerraSE Terranigma - Break Up - Final Round - Survivor Elite - Sequence Basic
 

Xyanta

BeitragSo, Dez 21, 2003 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Für deine p.s.:
Ich würde zu gerne Graphiker sein!!!
Kann ich dir behilflich sein.
Ich kann dir auch bei Programmieren helfen, bin schließlich der beste!
Hab jedoch erst vor zwei Jahren angefangen.!
__________________________________________________
Guck nicht so Shocked blöd, also geh weg!!
 

Alu-Folie

Gast

BeitragSo, Dez 21, 2003 21:55
Antworten mit Zitat
Super, Xyanta, unser Held.
Du hast doch mit denem Jump'n'Run schon genug zu tun. Wink
 

darkshadow

BeitragSo, Dez 21, 2003 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Alu, was redest du hier von "unser Held" ?? Du hast nix mit der BB Community zu tun.

Kryan

BeitragMo, Dez 22, 2003 10:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Wer hat nichts mit der BB Comunnity zu tun??

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group