Orion9

|
Posted: Tue Feb 11, 2025 19:37 Post subject: |
|
|
Чтобы не откладывать в дальний ящик:
 Sounds.ini Code: | [Random]
Enable=1
Interval=5000
Debug=1
WincmdConnected=*
WincmdCopyComplete=Alisa1
WincmdDeleteComplete=Chewbacca
WincmdPackComplete=Операция Ы
WincmdSearchComplete=Random\Search
WincmdTransferComplete=Archer
WincmdUnpackComplete=**
[EventLabels]
Wincmd=Total Commander
WincmdConnected=FTP-соединение установлено
WincmdCopyComplete=Копирование/перемещение завершено
WincmdDeleteComplete=Удаление завершено
WincmdPackComplete=Упаковка завершена
WincmdSearchComplete=Поиск завершён
WincmdTransferComplete=Передача завершена
WincmdUnpackComplete=Распаковка завершена
[Schemes1]
Name=Алиса #1
Folder=Alisa1
Description=Алиса знает, что делать! #1
WincmdConnected=Соединение.wav
WincmdCopyComplete=Копирование.wav
WincmdDeleteComplete=Удаление.wav
WincmdPackComplete=Упаковка.wav
WincmdSearchComplete=Поиск.wav
WincmdTransferComplete=Передача.wav
WincmdUnpackComplete=Распаковка.wav
[Schemes2]
Name=Алиса #2
Folder=Alisa2
Description=Алиса знает, что делать! #2
WincmdConnected=Соединение.wav
WincmdCopyComplete=Копирование.wav
WincmdDeleteComplete=Удаление.wav
WincmdPackComplete=Упаковка.wav
WincmdSearchComplete=Поиск.wav
WincmdTransferComplete=Передача.wav
WincmdUnpackComplete=Распаковка.wav
[Schemes3]
Name=Archer
Folder=Archer
Description=Archer
WincmdConnected=TC Connected To FTP.wav
WincmdCopyComplete=TC Operation Complete.wav
WincmdDeleteComplete=TC Delete Complete.wav
WincmdPackComplete=TC Pack Complete.wav
WincmdSearchComplete=TC Search Complete.wav
WincmdTransferComplete=TC Transfer Complete.wav
WincmdUnpackComplete=TC Unpack Complete.wav
[Schemes4]
Name=Операция Ы
Folder=Операция Ы
Description=Операция Ы
WincmdConnected=Со взломом или без.wav
WincmdCopyComplete=Мелкое хулиганство - крупные деньги.wav
WincmdDeleteComplete=Пол-литра вдребезги.wav
WincmdPackComplete=Сворачивайтесь - есть дело.wav
WincmdSearchComplete=Где бабуля - я за неё.wav
WincmdTransferComplete=Всё уже украдено до нас.wav
WincmdUnpackComplete=Расхититель соцсобственности.wav
|
 .aucfg Code: | RunThread ThreadSoundsAdvanced
Func ThreadSoundsAdvanced()
Local rand = 1, debg = 1, intv, key, val
Local ini = DirSounds & "Sounds.ini", out, i
If Not FileExist(ini) Then
MsgBox("Не найден " & ini)
Return
Endif
IniRead rand %ini% "Random" "Enable" 0
IniRead intv %ini% "Random" "Interval" 3000
IniRead debg %ini% "Random" "Debug" 0
If Not rand Then Return
If Not IsInt(intv) Or intv < 1000 Then intv = 1000
ProcessExecGetOutput /OEM out %COMSPEC% "/c dir /s /b *.wav" %DirSounds%
Local aWav = List()
aWav.Text = out
If aWav.Count = 0 Or Not StrPos(aWav[0], ".wav") Then
MsgBox("Не найдены звуковые файлы *.wav в каталоге " & DirSounds)
Return
Endif
Local aNames = List("WincmdConnected","WincmdCopyComplete","WincmdDeleteComplete","WincmdPackComplete", _
"WincmdSearchComplete","WincmdTransferComplete","WincmdUnpackComplete")
Local aVal = List(), aPos = List(), aEnd = List()
For i = 0 To aNames.Count-1
key = aNames[i]
IniRead val %ini% "Random" %"%key%" "*"
aVal.Add(val)
If val = "*" Then
aPos.Add(-1)
aEnd.Add(-1)
ElseIf val = "**" Then
aPos.Add(0)
aEnd.Add(aWav.Count-1)
Else
Local dir = "\" & val & "\", found = false
For j = 0 To aWav.Count-1
If StrPos(aWav[j], dir) Then
found = true
Break
EndIf
Next
If Not found Then j = -1
pos = j
aPos.Add(pos)
If pos > -1 Then
For j = pos To aWav.Count-1
If Not StrPos(aWav[j], dir) Then Break
Next
If j < aWav.Count-1 Then j = j - 1
aEnd.Add(j)
Else
aEnd.Add(-1)
EndIf
EndIf
Next
If debg Then
OutputDebugString("Autorun: aWav = " & aWav.Text)
OutputDebugString("Autorun: aVal = " & aVal.Text)
OutputDebugString("Autorun: aPos = " & aPos.Text)
OutputDebugString("Autorun: aEnd = " & aEnd.Text)
EndIf
While 1
For i = 0 To aNames.Count - 1
If aPos[i] = -1 Then Continue
val = aWav[Random(aPos[i], aEnd[i], 1)]
key = "HKCU\AppEvents\Schemes\Apps\Wincmd\" & aNames[i] & "\.current"
RegWrite(key, "", "REG_SZ", val)
If debg Then
OutputDebugString("Autorun: key = " & key)
OutputDebugString("Autorun: val = " & val)
EndIf
Next
Sleep(intv)
Wend
Free(aNames, aWav, aVal, aPos, aEnd)
EndFunc |
На каждое событие можно указать отдельный каталог с wav-файлами. Файлы из этого каталога будут проигрываться в случайном порядке только для данного события. Одиночная звёздочка - игнорировать событие. Двойная звёздочка - проигрывать все (*.wav ) файлы для данного события из корневого каталога, включая подкаталоги.
По задумке, нужно создать отдельный каталог типа "Random" (чтобы не трогать существующие каталоги звуковых схем), который будет содержать подкаталоги с именами Copy, Delete, Pack, Search и т.д. В этих подкаталогах можно собирать любые wav-файлы, которые нравятся и не надоедают, и далее использовать для озвучки нужных событий.
Поскольку готовой коллекции wav-файлов у меня пока нет, за основу были взяты файлы из сборки AkulaBig + Чубака (первая версия Copilot, которая не умела говорить, но всё понимала ), но можно использовать любые wav-файлы, даже не регистрируя звуковые схемы. Первый простой алгоритм постом выше для этого подойдет. Второй алгоритм уже завязан на ini-файл и его опции. Серьёзных проверок нет: если файлы отсутствуют, они просто не будут проигрываться или меняться в случайном порядке.
AkulaBig wrote: | У меня вроде нет проблем при запуске с отключенными ассоциациями. |
Повезло. А у меня не работает, в том плане, что значки на панелях не меняются, если при старте ТС внутренние ассоциации были выключены.
AkulaBig wrote: | Еще-бы понять, про что вы. |
Про эту подсветку к файлам Autorun. |
|