.:: Bots United ::.  
filebase forums discord server github wiki web
cubebot epodbot fritzbot gravebot grogbot hpbbot ivpbot jkbotti joebot
meanmod podbotmm racc rcbot realbot sandbot shrikebot soulfathermaps yapb

Go Back   .:: Bots United ::. > Cyborg Factory > POD-Bot mm > Releases, Installers, Docs & Coding
Releases, Installers, Docs & Coding Where the official development happens

Reply
 
Thread Tools
Re: bot_sounds.cpp
Old
  (#11)
Huntkillaz
Member
 
Huntkillaz's Avatar
 
Status: Offline
Posts: 594
Join Date: Mar 2004
Location: Middle Earth (New Zealand)
Default Re: bot_sounds.cpp - 25-06-2004

will this work???
Code:
 // ####################################
// # #

// # Ping of Death - Bot #

// # by #

// # Markus Klinge aka Count Floyd #

// # #

// ####################################

//

// Started from the HPB-Bot Alpha Source

// by Botman so Credits for a lot of the basic

// HL Server/Client Stuff goes to him

//

// bot_sounds.cpp

//

// Hooks to let Bots 'hear' otherwise unnoticed things. Base code & idea from killaruna/ParaBot

#include "bot_globals.h"

 

void SoundAttachToThreat (edict_t *pEdict, const char *pszSample, float fVolume)

{

// Called by the Sound Hooking Code (in EMIT_SOUND)

// Enters the played Sound into the Array associated with the Entity

Vector vecPosition;

int iIndex;

if (FNullEnt (pEdict))

return;

// Hit/Fall Sound ?

if ((strncmp ("player/bhit_flesh", pszSample, 17) == 0)

|| (strncmp ("player/headshot", pszSample, 15) == 0))

{

iIndex = ENTINDEX (pEdict) - 1;

// crash fix courtesy of Wei Mingzhi

if ((iIndex < 0) || (iIndex >= gpGlobals->maxClients))

iIndex = UTIL_GetNearestPlayerIndex (VecBModelOrigin (pEdict));

//clients[iIndex].fHearingDistance = 800.0 * fVolume;

//clients[iIndex].fTimeSoundLasting = gpGlobals->time + 0.5;

//clients[iIndex].vecSoundPosition = pEdict->v.origin;

SoundMethod(iIndex, false, 800.0, 0.5, false, true)

}

// Weapon Pickup ?

else if (strncmp ("items/gunpickup", pszSample, 15) == 0)

{

iIndex = ENTINDEX (pEdict) - 1;

// crash fix courtesy of Wei Mingzhi

if ((iIndex < 0) || (iIndex >= gpGlobals->maxClients))

iIndex = UTIL_GetNearestPlayerIndex (VecBModelOrigin (pEdict));

//clients[iIndex].fHearingDistance = 800.0 * fVolume;

//clients[iIndex].fTimeSoundLasting = gpGlobals->time + 0.5;

//clients[iIndex].vecSoundPosition = pEdict->v.origin;

SoundMethod(iIndex, false, 800.0, 0.5, false, true)

}

// Sniper zooming ?

else if (strncmp ("weapons/zoom", pszSample, 12) == 0)

{

iIndex = ENTINDEX (pEdict) - 1;

// crash fix courtesy of Wei Mingzhi

if ((iIndex < 0) || (iIndex >= gpGlobals->maxClients))

iIndex = UTIL_GetNearestPlayerIndex (VecBModelOrigin (pEdict));

//clients[iIndex].fHearingDistance = 500.0 * fVolume;

//clients[iIndex].fTimeSoundLasting = gpGlobals->time + 0.1;

//clients[iIndex].vecSoundPosition = pEdict->v.origin;

SoundMethod(iIndex, false, 500.0, 0.1, false, true)

}

// Reload ?

else if (strncmp ("weapons/reload", pszSample, 14) == 0)

{

iIndex = ENTINDEX (pEdict) - 1;

// crash fix courtesy of Wei Mingzhi

if ((iIndex < 0) || (iIndex >= gpGlobals->maxClients))

iIndex = UTIL_GetNearestPlayerIndex (VecBModelOrigin (pEdict));

//clients[iIndex].fHearingDistance = 500.0 * fVolume;

//clients[iIndex].fTimeSoundLasting = gpGlobals->time + 0.5;

//clients[iIndex].vecSoundPosition = pEdict->v.origin;

SoundMethod(iIndex, false, 1024.0, 3.0, false, true)

}

// The following Sounds don't have the Player Entity associated

// so we need to search the nearest Player

// Ammo Pickup ?

else if (strncmp ("items/9mmclip", pszSample, 13) == 0)

{

vecPosition = pEdict->v.origin;

iIndex = UTIL_GetNearestPlayerIndex (vecPosition);

//clients[iIndex].fHearingDistance = 500.0 * fVolume;

//clients[iIndex].fTimeSoundLasting = gpGlobals->time + 0.1;

//clients[iIndex].vecSoundPosition = pEdict->v.origin;

SoundMethod(iIndex, false, 500.0, 0.1, false, true)

}

// CT used Hostage ?

else if (strncmp ("hostage/hos", pszSample, 11) == 0)

{

vecPosition = VecBModelOrigin (pEdict);

iIndex = UTIL_GetNearestPlayerIndex (vecPosition);

//clients[iIndex].fHearingDistance = 1024.0 * fVolume;

//clients[iIndex].fTimeSoundLasting = gpGlobals->time + 5.0;

//clients[iIndex].vecSoundPosition = vecPosition;

SoundMethod(iIndex, false, 1024.0, 5.0, false, false)

}

// Broke something ?

else if ((strncmp ("debris/bustmetal", pszSample, 16) == 0)

|| (strncmp ("debris/bustglass", pszSample, 16) == 0))

{

vecPosition = VecBModelOrigin (pEdict);

iIndex = UTIL_GetNearestPlayerIndex (vecPosition);

//clients[iIndex].fHearingDistance = 1024.0 * fVolume;

//clients[iIndex].fTimeSoundLasting = gpGlobals->time + 2.0;

//clients[iIndex].vecSoundPosition = vecPosition;

SoundMethod(iIndex, false, 1024.0, 2.0, false, false)

}

// Someone opened a door

else if (strncmp ("doors/doormove", pszSample, 14) == 0)

{

vecPosition = VecBModelOrigin (pEdict);

iIndex = UTIL_GetNearestPlayerIndex (vecPosition);

//clients[iIndex].fHearingDistance = 1024.0 * fVolume;

//clients[iIndex].fTimeSoundLasting = gpGlobals->time + 3.0;

//clients[iIndex].vecSoundPosition = vecPosition;

SoundMethod(iIndex, false, 1024.0, 3.0, false, false)

}

}

void SoundSimulateUpdate (int iPlayerIndex)

{

// Tries to simulate playing of Sounds to let the Bots hear

// sounds which aren't captured through Server Sound hooking

edict_t *pPlayer = clients[iPlayerIndex].pEdict;

float fVelocity = pPlayer->v.velocity.Length2D ();

float fHearDistance = 0.0;

float fTimeSound;

// Pressed Attack Button ?

if (pPlayer->v.oldbuttons & IN_ATTACK)

{

fHearDistance = 4096.0;

fTimeSound = gpGlobals->time + 0.5;

}

// Pressed Used Button ?

else if (pPlayer->v.oldbuttons & IN_USE)

{

fHearDistance = 1024.0;

fTimeSound = gpGlobals->time + 0.5;

}

// Uses Ladder ?

else if (pPlayer->v.movetype == MOVETYPE_FLY)

{

if (fabs (pPlayer->v.velocity.z) > 50)

{

fHearDistance = 1024.0;

fTimeSound = gpGlobals->time + 0.3;

}

}

// Moves fast enough ?

else

{

static float fMaxSpeed = 0.0;

if (fMaxSpeed == 0.0)

fMaxSpeed = CVAR_GET_FLOAT ("sv_maxspeed");

fHearDistance = 1024.0 * (fVelocity / fMaxSpeed);

fTimeSound = gpGlobals->time + 0.3;

}

// Did issue Sound ?

if (fHearDistance > 0.0)

{

// Some sound already associated ?

if (clients[iPlayerIndex].fTimeSoundLasting > gpGlobals->time)

{

// New Sound louder (bigger range) than old sound ?

if (clients[iPlayerIndex].fHearingDistance <= fHearDistance)

{

// Override it with new

//clients[iPlayerIndex].fHearingDistance = fHearDistance;

//clients[iPlayerIndex].fTimeSoundLasting = fTimeSound;

//clients[iPlayerIndex].vecSoundPosition = pPlayer->v.origin;

SoundMethod(iPlayerIndex, true, 0, 0, true, true)

}

}

// New sound ?

else

{

// Just remember it

//clients[iPlayerIndex].fHearingDistance = fHearDistance;

//clients[iPlayerIndex].fTimeSoundLasting = fTimeSound;

//clients[iPlayerIndex].vecSoundPosition = pPlayer->v.origin;

SoundMethod(iPlayerIndex, true, 0, 0, true, true)

}

}

void SoundMethod(int i, boolean a,float b, float c, boolean d, boolean e)

{

if(a)

clients[i].fHearingDistance = fHearDistance;

else

clients[i].fHearingDistance = b * fVolume;

if(d){

clients[i].fTimeSoundLasting = fTimeSound;

else

clients[i].fTimeSoundLasting = gpGlobals->time + c; 

if(e)

clients[i].vecSoundPosition = pEdict->v.origin;

else

clients[i].vecSoundPosition = vecPosition;

} 

}




●_•
  
Reply With Quote
Re: bot_sounds.cpp
Old
  (#12)
Pierre-Marie Baty
Roi de France
 
Pierre-Marie Baty's Avatar
 
Status: Offline
Posts: 5,049
Join Date: Nov 2003
Location: 46°43'60N 0°43'0W 0.187A
Default Re: bot_sounds.cpp - 25-06-2004

I believe yes, but I'd have renamed that mysterious "SoundMethod" into something more explicit...



RACC home - Bots-United: beer, babies & bots (especially the latter)
"Learn to think by yourself, else others will do it for you."
  
Reply With Quote
Re: bot_sounds.cpp
Old
  (#13)
Huntkillaz
Member
 
Huntkillaz's Avatar
 
Status: Offline
Posts: 594
Join Date: Mar 2004
Location: Middle Earth (New Zealand)
Default Re: bot_sounds.cpp - 26-06-2004

Quote:
Originally Posted by Pierre-Marie Baty
I believe yes, but I'd have renamed that mysterious "SoundMethod" into something more explicit...
lol, okay ...therefore u can delete all the commented lines i made

and how would we be able to add more types of sounds that splorygon was talking about


●_•
  
Reply With Quote
Re: bot_sounds.cpp
Old
  (#14)
Pierre-Marie Baty
Roi de France
 
Pierre-Marie Baty's Avatar
 
Status: Offline
Posts: 5,049
Join Date: Nov 2003
Location: 46°43'60N 0°43'0W 0.187A
Default Re: bot_sounds.cpp - 26-06-2004

Constantly evaluating the players' actions each frame...

because currently, SoundAttachToThreat() is only called in pfnEmitSound and pfnEmitAmbientSound for SERVER-side sounds. You can't use this method for all the client-side sounds (gunshots, footsteps) that's why SoundSimulateUpdate() is used. All you need to do is to add more precise checks into this function to make the bot identify more sounds.



RACC home - Bots-United: beer, babies & bots (especially the latter)
"Learn to think by yourself, else others will do it for you."
  
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump



Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
vBulletin Skin developed by: vBStyles.com