Jump to content

Sound Instance Array


ajs52698

Recommended Posts

Im attempting to start sound instances using scripts, store there id in a array, and then mute them if needed, but for some reason I can play sounds just fine but muting them does not seem to work. I honestly am out of ideas, heres how I have the script set up.

Edited by ajs52698
Link to comment
Share on other sites

You will want to post your entire script, not just bits and pieces. And please use

 tags.

 

It also doesn't look like you are setting up your arrays properly, which would likely explain your problem.

Edited by Reneer
Link to comment
Share on other sites

I mean to literally use the code tags, like this:

 

Scriptname JukeBoxScriptSOUNDBOARDSCRIPT extends Objectreference

Group Properties
    Formlist Property MusicList auto
    Activator Property JukeBox auto
    SoundCategory Property AllSongsMute auto
    Actor Property Player auto
    KeyWord Property WorkShopSpeaker Auto
    GlobalVariable Property SpeakerIsOnInt auto
    Message Property MainMenu auto
    Formlist Property DiskList auto
    GlobalVariable Property WhichSongForMixer auto
    Message Property VolumeMenu auto
    Message Property RadioMenu auto
EndGroup


Int SoundIDArrayInt
int[] SoundIDArray

Event OnActivate(Objectreference akactionref)
    MakeRadio()
    Menu()
Endevent

Function Menu(int aibutton = 0)
    aibutton = MainMenu.Show()

    if aibutton == 0                                                                         
        PlaySetHolotape()
   elseif aibutton == 1 && SpeakerIsOnInt.GetValue() ==  0     
        Debug.MessageBox("Speakers On")
        SpeakerIsOnInt.SetValue(1)
        Menu()
    Elseif aibutton == 1 && SpeakerIsOnInt.GetValue() == 1         
        Debug.MessageBox("Speakers Off")
        Mute()
        SpeakerIsOnInt.SetValue(0)
    Elseif aibutton == 2               
        AdjustVolume()
    Elseif aibutton == 3
        Radio()
    Elseif aibutton == 4
        ;exit
    Endif
EndFunction


Function MakeRadio()
    Objectreference[] WorkShopSPeakerArray = Player.FindAllReferencesWithKeyWord(WorkShopSpeaker,15000)  
    Int SpeakerInt0 = 0
    Int SpeakerInt1 = WorkshopSpeakerArray.length

    While SpeakerInt0 < SpeakerInt1
        (WorkShopSpeakerArray[SpeakerInt0] as Objectreference).MakeRadioReceiver(00.0,0.0)

        SpeakerInt0 += 1
    EndWhile
EndFunction


Function PlaySetHolotape()
    Objectreference[] WorkShopSPeakerArray = Player.FindAllReferencesWithKeyWord(WorkShopSpeaker,15000)  
    Int SpeakerInt0 = 0
    Int SpeakerInt1 = WorkshopSpeakerArray.length
    Mute()
    While SpeakerInt0 < SpeakerInt1

        if WhichSongForMixer.GetValue() == 1 && SpeakerIsOnInt.GetValue() == 1 && (WorkShopSpeakerArray[SpeakerInt0] as Objectreference).IsEnabled()
            Int Instance1 = (MusicList.GetAt(0) as Sound).Play(WorkShopSPeakerArray[SpeakerInt0] As Objectreference)
            Debug.Notification("Speaker" + Speakerint0 + " Is Playing")
            SoundIDArray[SoundIDArrayInt as int]
            SoundIDArrayInt += 1
        elseif WhichSongForMixer.GetValue() == 2 && SpeakerIsOnInt.GetValue() == 1 && (WorkShopSpeakerArray[SpeakerInt0] as Objectreference).IsEnabled()
            Int Instance1 =(MusicList.GetAt(1) as Sound).Play(WorkShopSPeakerArray[SpeakerInt0] As Objectreference)
            Debug.Notification("Speaker" + Speakerint0 + " Is Playing")
            SoundIDArray[SoundIDArrayInt as int]
            SoundIDArrayInt += 1
        Endif
        SpeakerInt0 += 1
    EndWhile
    SpeakerInt0 = 0
EndFunction


Function AdjustVolume(int aibutton3 = 0)
    aibutton3 = VolumeMenu.Show()

    Int SpeakerInt03 = 0
    Int SpeakerInt13 = SoundIDArray.length

    if aibutton3 == 0
        While  SpeakerInt03 < SpeakerInt13
            Sound.SetInstanceVolume((SoundIDArray[SpeakerInt03] as Int),0.25)
            SpeakerInt03 += 1
        EndWhile
    elseif aibutton3 == 1
        While  SpeakerInt03 < SpeakerInt13
            Sound.SetInstanceVolume((SoundIDArray[SpeakerInt03] as Int),0.50)
            SpeakerInt03 += 1
        EndWhile
    elseif aibutton3 == 2
        While  SpeakerInt03 < SpeakerInt13
            Sound.SetInstanceVolume((SoundIDArray[SpeakerInt03] as int),0.75)
            SpeakerInt03 += 1
        EndWhile
    elseif aibutton3 == 3
        While  SpeakerInt03 < SpeakerInt13
            Sound.SetInstanceVolume((SoundIDArray[SpeakerInt03] as int),1.0)
            SpeakerInt03 += 1
        EndWhile
    elseif aibutton3 == 4
        ;Exit
        Menu()
    Endif
    SpeakerInt03 = 0
    Debug.Messagebox("VolumeAdjusted" )
    Menu()
EndFunction


Function Mute()
    Objectreference[] WorkShopSPeakerArray = Player.FindAllReferencesWithKeyWord(WorkShopSpeaker,15000)
    Int SpeakerInt03 = 0
    Int SpeakerInt13 = SoundIDArray.length
    Int SpeakerIntRadio13 = WorkshopSPeakerArray.length

    While SpeakerInt03 < SpeakerInt13
        Sound.StopInstance(SoundIDArray[SpeakerInt03] as int)
        Debug.Notification("Muted" + SpeakerInt03)
        (WorkShopSpeakerArray[SpeakerInt03] ).SetRadioVolume(0.0)
        (WorkShopSPeakerArray[SpeakerInt03] ).SetRadioFrequency(0.00)
        SpeakerInt03 += 1
    EndWhile
    SpeakerInt03 = 0
    ;SoundIDArray.Clear()
EndFunction

Function Radio(int Button23 = 0)
    Button23 = RadioMenu.Show()

    Objectreference[] WorkShopSPeakerArray = Player.FindAllReferencesWithKeyWord(WorkShopSpeaker,15000)
    Int SpeakerInt02 = 0
    Int SpeakerInt12 = WorkshopSpeakerArray.length

    Mute()

    if button23 == 0 && SpeakerIsOnInt.GetValue() == 1 && (WorkShopSpeakerArray[SpeakerInt02] as objectreference).IsEnabled()
        While SpeakerInt02 < SpeakerInt12
            (WorkShopSPeakerArray[SpeakerInt02] As Objectreference).SetRadioVolume(1.0)
            (WorkShopSPeakerArray[SpeakerInt02] As Objectreference).SetRadioFrequency(98.00)

            SpeakerInt02 += 1
        EndWhile
        Debug.Notification("Playing1" +  SpeakerInt02)
    elseif button23 == 1 && SpeakerIsOnInt.GetValue() == 1 && (WorkShopSpeakerArray[SpeakerInt02] as objectreference).IsEnabled()
        While SpeakerInt02 < SpeakerInt12
            (WorkShopSPeakerArray[SpeakerInt02] As Objectreference).SetRadioVolume(1.0)
            (WorkShopSPeakerArray[SpeakerInt02] As Objectreference).SetRadioFrequency(91.00)
            SpeakerInt02 += 1
        EndWhile
        Debug.Notification("Playing1" +  SpeakerInt02)
    elseif button23 == 2 && SpeakerIsOnInt.GetValue() == 1 && (WorkShopSpeakerArray[SpeakerInt02] as objectreference).IsEnabled()
        While SpeakerInt02 < SpeakerInt12
            (WorkShopSPeakerArray[SpeakerInt02] As Objectreference).SetRadioVolume(1.0)
            (WorkShopSPeakerArray[SpeakerInt02] As Objectreference).SetRadioFrequency(105.00)
            SpeakerInt02 += 1
        EndWhile
        Debug.Notification("Playing1" +  SpeakerInt02)
    Elseif button23 == 3 && SpeakerIsOnInt.GetValue() == 1 && (WorkShopSpeakerArray[SpeakerInt02] as objectreference).IsEnabled()
        While SpeakerInt02 < SpeakerInt12
            (WorkShopSPeakerArray[SpeakerInt02] As Objectreference).SetRadioVolume(0.0)
            (WorkShopSPeakerArray[SpeakerInt02] As Objectreference).SetRadioFrequency(00.00)
            SpeakerInt02 += 1
        EndWhile
    Elseif button23 == 4
        Menu()
        ;exit
    Endif
    SpeakerInt02 = 0
EndFunction
And one big issue seems to be that you never properly create your SoundIDArray in the code. You need to set it up like this:

SoundIDArray = new Int[128]
Edited by Reneer
Link to comment
Share on other sites

Sorry, but I'm not going to continue helping you when you can't even be bothered to properly indent your own code. Especially when I did it for you only hours ago. Go look over the CK Papyrus Wiki for more help, specifically this page.

Edited by Reneer
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...