Hey again guys, so as title says, it's the ezpz way to make the 3D sound command.
Imma tell only the files, obviously ya'll know the lines 
ZChat_Cmds.cpp
Code:
void ChatCmd_3DSound(const char* line, const int argc, char **const argv);
Code:
_CC_AC("sound", &ChatCmd_3DSound, CCF_ALL|CCF_GAME, ARGVNoMin, ARGVNoMax, true, "/sound", "");
Code:
void ChatCmd_3DSound(const char* line, const int argc, char **const argv)
{
char szMsg[256];
ZCharacter* pCharacter = ZGetGame()->m_pMyCharacter;
if(pCharacter->GetStatus().Ref().b3DSound == 0)
{
pCharacter->GetStatus().CheckCrc();
pCharacter->GetStatus().Ref().b3DSound = 1;
pCharacter->GetStatus().MakeCrc();
sprintf(szMsg, "^23D Sound Enabled");
}
else if(pCharacter->GetStatus().Ref().b3DSound == 1)
{
pCharacter->GetStatus().CheckCrc();
pCharacter->GetStatus().Ref().b3DSound = 0;
pCharacter->GetStatus().MakeCrc();
sprintf(szMsg, "^23D Sound Disabled");
}
ZChatOutput(szMsg);
}
ZCharacter.h
inside the struct ZCharacterStatus
ZSoundEngine.cpp
in this function: ZSoundEngine::PlaySEFire(MMatchItemDesc *pDesc, float x, float y, float z, bool bPlayer)
Code:
Replace:
sprintf( szBuffer, "%s_2d", szSndName );
With:
ZCharacter* pCharacter = ZGetGame()->m_pMyCharacter;
if(pCharacter->GetStatus().Ref().b3DSound == 0) {
sprintf(szBuffer, "%s%s", szSndName, "_2d");
} else if(pCharacter->GetStatus().Ref().b3DSound == 1) {
sprintf(szBuffer, "%s%s", szSndName, "_optional_2d");
}
Code:
Replace:
szDefault = "we_rifle_fire_2d";
With:
szDefault = szSndName;
now this function: ZSoundEngine::PlaySEReload(MMatchItemDesc *pDesc, float x, float y, float z, bool bHero)
Code:
Replace:
sprintf( szBuffer, "%s_2d", szSndName );
With:
ZCharacter* pCharacter = ZGetGame()->m_pMyCharacter;
if(pCharacter->GetStatus().Ref().b3DSound == 0) {
sprintf(szBuffer, "%s%s", szSndName, "_2d");
} else if(pCharacter->GetStatus().Ref().b3DSound == 1) {
sprintf(szBuffer, "%s%s", szSndName, "_optional_2d");
}
ZSoundEngine::PlaySEFire(MMatchItemDesc *pDesc, float x, float y, float z, bool bHero)
Code:
Replace:
sprintf(szFireSndName, "%s%s", szSndName, "_2d");
With:
ZCharacter* pCharacter = ZGetGame()->m_pMyCharacter;
if(pCharacter->GetStatus().Ref().b3DSound == 0)) {
sprintf(szBuffer, "%s%s", szSndName, "_2d");
} else if(pCharacter->GetStatus().Ref().b3DSound == 1) {
sprintf(szBuffer, "%s%s", szSndName, "_optional_2d");
}
ZSoundEngine::PlaySEReload(MMatchItemDesc *pDesc, float x, float y, float z, bool bPlayer)
Code:
Replace:
sprintf( szBuffer, "%s_2d", szSndName );
With:
ZCharacter* pCharacter = ZGetGame()->m_pMyCharacter;
if(pCharacter->GetStatus().Ref().b3DSound == 0) {
sprintf(szBuffer, "%s%s", szSndName, "_2d");
} else if(pCharacter->GetStatus().Ref().b3DSound == 1) {
sprintf(szBuffer, "%s%s", szSndName, "_optional_2d");
}
Code:
Replace:
PlaySoundElseDefault(szBuffer,"we_rifle_reload_2d",rvector(x,y,z),bPlayer);
With:
PlaySoundElseDefault(szSndName,"we_rifle_reload_2d",rvector(x,y,z),bPlayer);
You're good to go, ofcourse everyone knows usage: /sound
OLD, but easy method for who find it hard to add !
Thanks & Peace