|
Cheat Engine The Official Site of Cheat Engine
|
View previous topic :: View next topic |
Author |
Message |
HexaG0n Advanced Cheater Reputation: 0
Joined: 29 Mar 2021 Posts: 64
|
Posted: Sat Apr 03, 2021 9:54 pm Post subject: Play two playsounds at the same time |
|
|
How do i play a playsound without stopping another playsound [ currently playing ]? if its possible, can you tell me how? e.g
playSound(findTableFile("1.wav"))
playSound(findTableFile("2.wav"))
-- play without stopping
|
|
Back to top |
|
|
Dark Byte Site Admin Reputation: 458
Joined: 09 May 2003 Posts: 25295 Location: The netherlands
|
Posted: Thu Apr 08, 2021 6:34 am Post subject: |
|
|
playSound(findTableFile("1.wav"), false)
_________________
Do not ask me about online cheats. I don't know any and wont help finding them.
Like my help? Join me on Patreon so i can keep helping |
|
Back to top |
|
|
HexaG0n Advanced Cheater Reputation: 0
Joined: 29 Mar 2021 Posts: 64
|
Posted: Thu Apr 08, 2021 9:01 am Post subject: |
|
|
do i always need to keep pasting the script to play different sounds together? like
a()
b()
c()
-- all in seperate scripts [ eg function a(), b(), c() ]
if u dont understand i mean this
Description: |
|
Filesize: |
47.39 KB |
Viewed: |
2592 Time(s) |
|
|
|
Back to top |
|
|
ByTransient Expert Cheater Reputation: 5
Joined: 05 Sep 2020 Posts: 240
|
Posted: Thu Apr 08, 2021 10:55 am Post subject: |
|
|
There is a simpler way.
Code (Play MP3 audio on CE): By mgr.inz.Player
First, convert your ".wav" audio format to ".mp3".
https://online-audio-converter.com/
I made a few additions to the existing code.
Here is a usable and tried version.
Play and end multiple sounds at the same time.
Note: If you want to add more sound, edit the deleted positions of "Bass3" and "Bass4". Or add "Bass5" +.
Code: | --##############################################################################
--############################# By mgr.inz.Player ##############################
function initializeMP3Player()
if initializeMP3Player_done then return true end
local script64bit=[[loadlibrary(winmm.dll)
alloc(SimpleMp3Player,4096)
registersymbol(SimpleMp3Player)
SimpleMp3Player:
lea rsp,[rsp-28]
lea rsi,[rcx+400]
lea rdx,[rcx+300]
mov r8d,80
xor r9d,r9d
call mciSendStringW
mov rcx,rax
mov rdx,rsi
mov r8,200
call mciGetErrorStringW
lea rsp,[rsp+28]
ret]]
local script32bit=[[loadlibrary(winmm.dll)
alloc(SimpleMp3Player,4096)
registersymbol(SimpleMp3Player)
SimpleMp3Player:
push ebp
mov ebp,esp
push ebx
mov ebx,[ebp+8]
sub esp,10
mov [esp],ebx
lea ebx,[ebx+300]
mov [esp+4],ebx
mov [esp+8],80
mov [esp+c],0
call mciSendStringW
mov ebx,[ebp+8]
lea ebx,[ebx+400]
sub esp,0c
mov [esp],eax
mov [esp+0x4],ebx
mov [esp+0x8],200
call mciGetErrorStringW
pop ebx
leave
ret 004]]
if cheatEngineIs64Bit() then script = script64bit else script = script32bit end
if autoAssemble(script,true)
then
initializeMP3Player_done = true
MP3PlayerCommandMS = createMemoryStream()
MP3PlayerCommandMS.Size = 2048
return true
else
return false
end
end
function MP3PlayerSendCommand(command)
writeStringLocal(MP3PlayerCommandMS.Memory, command, true)
writeBytesLocal (MP3PlayerCommandMS.Memory+2*#command, 0, 0)
executeCodeLocal('SimpleMp3Player',MP3PlayerCommandMS.Memory)
return readStringLocal(MP3PlayerCommandMS.Memory+1024,512,true),
readStringLocal(MP3PlayerCommandMS.Memory+768,128,true)
end
function playMP3(path, media)
if not initializeMP3Player() then return end
--MP3PlayerSendCommand('resume '..media)--('close MediaFile')
MP3PlayerSendCommand( string.format('open "%s" type mpegvideo alias '..media,path) )
MP3PlayerSendCommand('play '..media)
end
function stopMP3()
if not initializeMP3Player() then return end
MP3PlayerSendCommand('close MediaFile1')
MP3PlayerSendCommand('close MediaFile2')
--MP3PlayerSendCommand('close MediaFile3')
--MP3PlayerSendCommand('close MediaFile4')
end
function volumeMP3(vol)
if not initializeMP3Player() then return end
MP3PlayerSendCommand('setaudio MediaFile volume to '..vol)
end
--##############################################################################
local pth = TrainerOrigin or getMainForm()
function checkFile(fileMP3) --Fix="Error:Unable to create file"
local f2=(pth..'\\'..fileMP3)
if f2==nil then
findTableFile(fileMP3).saveToFile(pth..'\\'..fileMP3)
end
return f2
end
file1=checkFile("Bass.mp3")
file2=checkFile("Bass2.mp3")
--file3=checkFile("Bass3.mp3")
--file4=checkFile("Bass4.mp3")
stopMP3()
function Play1()
stopMP3()
playMP3(file1,"MediaFile1")
playMP3(file2,"MediaFile2")
end
function Play2()
stopMP3()
playMP3(file1,"MediaFile1")
playMP3(file2,"MediaFile2")
--playMP3(file3,"MediaFile3")
--playMP3(file4,"MediaFile4")
end
|
|
|
Back to top |
|
|
HexaG0n Advanced Cheater Reputation: 0
Joined: 29 Mar 2021 Posts: 64
|
Posted: Thu Apr 08, 2021 10:48 pm Post subject: |
|
|
can you send me a example ct for this script? cuz when i try to run it, it keeps giving me this error:
Error:[string "--###########################################..."]:109: attempt to concatenate a userdata value (upvalue 'pth')
|
|
Back to top |
|
|
ByTransient Expert Cheater Reputation: 5
Joined: 05 Sep 2020 Posts: 240
|
Posted: Fri Apr 09, 2021 6:04 am Post subject: |
|
|
HexaG0n wrote: | can you send me a example ct for this script? cuz when i try to run it, it keeps giving me this error:
Error:[string "--###########################################..."]:109: attempt to concatenate a userdata value (upvalue 'pth') |
Code: | local pth = TrainerOrigin veya getMainForm () |
For this code to be valid; After copying and pasting the code, save the current table (.CT).
Next, continue from the registered table (sample.CT).
Or create a different location for recording;
Change;
Code: | local pth = TrainerOrigin veya getMainForm () |
New:
Code: | --local pth = TrainerOrigin or getMainForm()
local pth1 = os.getenv("APPDATA").."\\Local\\Temp";
local pth = (pth1..[[\AudioFile\]])
if pth then
os.execute([[mkdir "]]..pth1..[[\AudioFile"]]);
findTableFile("Bass.mp3").saveToFile(pth.."Bass.mp3")
findTableFile("Bass2.mp3").saveToFile(pth.."Bass2.mp3")
file1=(pth.."Bass.mp3")
file2=(pth.."Bass2.mp3")
--findTableFile("Bass3.mp3").saveToFile(pth.."Bass3.mp3")
--findTableFile("Bass4.mp3").saveToFile(pth.."Bass4.mp3")
--file3=(pth.."Bass3.mp3")
--file4=(pth.."Bass4.mp3")
end |
Of course, when closing the Trainer, it is necessary to delete this added file.
Add to trainer close function;
|
|
Back to top |
|
|
Corroder Grandmaster Cheater Supreme Reputation: 75
Joined: 10 Apr 2015 Posts: 1667
|
Posted: Sat Apr 10, 2021 7:21 pm Post subject: |
|
|
First, you don't need convert your WAV sound file to MP3 format. mciSendString is capable to play wav file by default.
Here is an example, how to play sound1, play sound2 or combine the two sounds or play the two sounds at the same time.
Note:
1. Remember to give correct path name for the sounds location and sound file extension.
2. You also can create new functions to handle sounds playing as you want
Code: | function initializeMP3Player()
if initializeMP3Player_done then return true end
local script64bit=[[loadlibrary(C:\Windows\System32\winmm.dll)
alloc(SimpleMp3Player,4096)
registersymbol(SimpleMp3Player)
SimpleMp3Player:
lea rsp,[rsp-28]
lea rsi,[rcx+400]
lea rdx,[rcx+300]
mov r8d,80
xor r9d,r9d
call mciSendStringW
mov rcx,rax
mov rdx,rsi
mov r8,200
call mciGetErrorStringW
lea rsp,[rsp+28]
ret]]
local script32bit=[[loadlibrary(C:\Windows\System32\winmm.dll)
alloc(SimpleMp3Player,4096)
registersymbol(SimpleMp3Player)
SimpleMp3Player:
push ebp
mov ebp,esp
push ebx
mov ebx,[ebp+8]
sub esp,10
mov [esp],ebx
lea ebx,[ebx+300]
mov [esp+4],ebx
mov [esp+8],80
mov [esp+c],0
call mciSendStringW
mov ebx,[ebp+8]
lea ebx,[ebx+400]
sub esp,0c
mov [esp],eax
mov [esp+0x4],ebx
mov [esp+0x8],200
call mciGetErrorStringW
pop ebx
leave
ret 004]]
if cheatEngineIs64Bit() then script = script64bit else script = script32bit end
if autoAssemble(script,true)
then
initializeMP3Player_done = true
MP3PlayerCommandMS = createMemoryStream()
MP3PlayerCommandMS.Size = 2048
return true
else
return false
end
end
function MP3PlayerSendCommand(command)
writeStringLocal(MP3PlayerCommandMS.Memory, command, true)
writeBytesLocal (MP3PlayerCommandMS.Memory+2*#command, 0, 0)
executeCodeLocal('SimpleMp3Player',MP3PlayerCommandMS.Memory)
return readStringLocal(MP3PlayerCommandMS.Memory+1024,512,true),
readStringLocal(MP3PlayerCommandMS.Memory+768,128,true)
end
function play1(sound1)
if not initializeMP3Player() then return end
local fileName
fileName = sound1
MP3PlayerSendCommand("open "..fileName.." type mpegvideo alias FirstSound", 0, 0, 0)
MP3PlayerSendCommand("play FirstSound", 0, 0, 0)
end
function play2(sound2)
if not initializeMP3Player() then return end
local fileName
fileName = sound2
MP3PlayerSendCommand("open "..fileName.." type mpegvideo alias SecondSound", 0, 0, 0)
MP3PlayerSendCommand("play SecondSound", 0, 0, 0)
end
function playMulti(song1, song2, song3, song4, ...)
if not initializeMP3Player() then return end
local fileName
fileName = song1
MP3PlayerSendCommand("open "..fileName.." type mpegvideo alias FirstSound", 0, 0, 0)
MP3PlayerSendCommand("play FirstSound", 0, 0, 0)
fileName = song2
MP3PlayerSendCommand("open "..fileName.." type mpegvideo alias SecondSound", 0, 0, 0)
MP3PlayerSendCommand("play SecondSound repeat",0, 0, 0)
end
function stopAll()
if not initializeMP3Player() then return end
MP3PlayerSendCommand('stop FirstSound')
MP3PlayerSendCommand('close FirstSound')
MP3PlayerSendCommand('stop SecondSound')
MP3PlayerSendCommand('close SecondSound')
end
s1 = "D:\\Audio1.mp3"
s2 = "D:\\Audio2.wav"
UDF1.CEButton1.OnClick = function()
play1(s1)
end
UDF1.CEButton2.OnClick = function()
play2(s2)
end
UDF1.CEButton4.OnClick = function()
stopAll()
end
UDF1.CEButton5.OnClick = function()
playMulti(s1, s2)
end
UDF1.Show() |
_________________
Stealing Code From Stolen Code...
And Admit It.. Hmmm....Typically LOL |
|
Back to top |
|
|
ByTransient Expert Cheater Reputation: 5
Joined: 05 Sep 2020 Posts: 240
|
Posted: Sat Apr 10, 2021 7:59 pm Post subject: |
|
|
HexaG0n wrote: | how can i loop playsounds? when it ends it plays the sound again. |
In @Corroder's code above, there is an answer to the question.
Code: | fileName = song2
MP3PlayerSendCommand("open "..fileName.." type mpegvideo alias SecondSound", 0, 0, 0)
MP3PlayerSendCommand("play SecondSound repeat",0, 0, 0) |
Alternatively, you can compare the current length and position of the music and use restart when it reaches the same position (or earlier).
The codes below will provide you with these times.
Code: | function lengthMP3()
if not initializeMP3Player() then return end
local a,b=MP3PlayerSendCommand('status MediaFile length')
return tonumber(b) or 0
end
function positionMP3()
if not initializeMP3Player() then return end
local a,b=MP3PlayerSendCommand('status MediaFile position')
return tonumber(b) or 0
end |
However, if you are going to insist on "playSound", you will be left with limited possibilities.
Corroder wrote: | First, you don't need convert your WAV sound file to MP3 format. mciSendString is capable to play wav file by default. |
I assumed MP3 would use less memory in the Trainer.
I saw you store the audio files in the table.
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
|