Tattooshop Posted June 27, 2020 Share Posted June 27, 2020 Hello! This is a full song walker script. It gives an error "Could not find sound ''." always while playing the last file. What could be the reason? integer cmd_channel = -770325; float soundVolume = 1.0; float soundLength = 10.0; integer gIndex = 0; integer HUD_ATTACHED = 0; list listWalkSounds = []; PlayWalkSound() { llSetTimerEvent(soundLength); if (HUD_ATTACHED) llTriggerSound(llList2Key(listWalkSounds, gIndex), soundVolume); else llPlaySound(llList2Key(listWalkSounds, gIndex), soundVolume); if ((gIndex = gIndex + 1) >= llGetListLength(listWalkSounds)) gIndex = 0; llPreloadSound(llList2Key(listWalkSounds, gIndex)); } adding_files() { integer iNumber; integer iCount = llGetInventoryNumber(INVENTORY_SOUND); string iName; while (iNumber <= iCount) { iName = llGetInventoryName(INVENTORY_SOUND, iNumber); listWalkSounds += iName; ++iNumber; } } StopWalkSound() { llSetTimerEvent(0); llStopSound(); } default { state_entry() { if (llGetAttached()) llOwnerSay("detach and attach me again."); else llOwnerSay("I need to be attached in order to work."); } attach(key id) { if (id != NULL_KEY) { integer att = llGetAttached(); if (att > 30 && att < 39) HUD_ATTACHED = 1; else HUD_ATTACHED = 0; adding_files(); llRequestPermissions(id, PERMISSION_TAKE_CONTROLS); llOwnerSay("/me is ready."); } } run_time_permissions(integer perm) { if (perm & PERMISSION_TAKE_CONTROLS) { llTakeControls(CONTROL_FWD | CONTROL_BACK, 1, 1); llPreloadSound(llList2Key(listWalkSounds, gIndex)); } } control(key id, integer level, integer edge) { if (llGetAgentInfo(id) & AGENT_IN_AIR) return; else if (level & edge) PlayWalkSound(); else if (~level & edge) StopWalkSound(); } timer() { PlayWalkSound(); } changed(integer mask) { if (mask & CHANGED_OWNER) gIndex = 0; } } Link to comment Share on other sites More sharing options...
KT Kingsley Posted June 27, 2020 Share Posted June 27, 2020 Not properly woken up yet, but I think that the while test in the function adding_files is the culprit. The variable iNumber should loop through zero to one less than the number of files. If there are, say, five sound files, they are indexed 0 to 4. So the while test should read while (iNumber < iCount) By testing for less than or equal to (<=) the loop also executes when iNumber is equal to 5. There is no sound file with the index 5, so you add an empty item when you try to add that to your list. 2 1 Link to comment Share on other sites More sharing options...
Tattooshop Posted June 27, 2020 Author Share Posted June 27, 2020 1 hour ago, KT Kingsley said: Not properly woken up yet, but I think that the while test in the function adding_files is the culprit. The variable iNumber should loop through zero to one less than the number of files. If there are, say, five sound files, they are indexed 0 to 4. So the while test should read while (iNumber < iCount) By testing for less than or equal to (<=) the loop also executes when iNumber is equal to 5. There is no sound file with the index 5, so you add an empty item when you try to add that to your list. Thank you so very much! You are a genius! Everything works fine now! 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Please take a moment to consider if this thread is worth bumping.
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now