Ein neues Thema erstellen  Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: bet. bubblemod
BeitragVerfasst: 23.09.2005, 19:12 

Registriert: 17.10.2004, 12:11
Beiträge: 171
Wohnort: nähe Bielefeld
sorry ... ich weiss jetzt echt nicht ob ich das hier posten kann aber ich suche nun schon seit monaten nach einer lösung.

folgendes........

auf meinem server (HLDM) werden double kills angezeigt ... nun möchte ich diese anzeige mit einem sound verbinden.

im source habe ich folgenden eintrag gefunden

in der client.cpp
Code:
void StartFrame( void )
{

	if ( g_pGameRules )
		g_pGameRules->Think();

	// BMOD Begin - Multikills
	CBasePlayer *client = NULL;
	while ( ((client = (CBasePlayer*)UTIL_FindEntityByClassname( client, "player" )) != NULL) 
		&& ( client->IsPlayer() ) 
		)
	{
		if (client->m_iKillsThisFrame > 1 && ( client->m_bIsConnected ) )
		{
			UTIL_LogPrintf( "// \"%s<%i><%s><%s>\" multi-killed %d players.\n",
				STRING( client->pev->netname ),
				GETPLAYERUSERID( client->edict() ),
				GETPLAYERAUTHID( client->edict() ),
				g_engfuncs.pfnInfoKeyValue( g_engfuncs.pfnGetInfoKeyBuffer( client->edict() ), "model" ),
				client->m_iKillsThisFrame
				);

			UTIL_ClientPrintAll( HUD_PRINTTALK, UTIL_VarArgs( "<SERVER> %s got a %d-fer!!\n",
				STRING( client->pev->netname ),
				client->m_iKillsThisFrame
				) );
		}
		client->m_iKillsThisFrame = 0;
	}
	// BMOD End - Multikills

nun möchte ich es so das wenn einer ein zweier kill hat z.b doublekill.wav abgespielt wird und bei einem 3er kill kommt monsterkill.wav.


kann mir jemand den code so anpassen ???


BBIITTÖÖÖÖÖÖÖ *liebguck*


Dateianhänge:
client.cpp [53.62 KiB]
289-mal heruntergeladen

_________________
Meine HalfLife Page
Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 23.09.2005, 19:30 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
Ich verschieb das mal nach "Server". Hat ja ansich nichts mit Admin Mod zu tun.

Wegen Deines Problems kann ich Dir nicht weiterhelfen, da ich weder mit C++ noch mit der HLSDK vertraut bin.

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 24.09.2005, 17:52 

Registriert: 17.10.2004, 12:11
Beiträge: 171
Wohnort: nähe Bielefeld
keiner da der ahnung davon hat ??? :cry:

_________________
Meine HalfLife Page


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 25.09.2005, 17:03 
AM.de Team

Registriert: 04.10.2002, 16:14
Beiträge: 1212
mal sehen.
eiface.h definiert
Code:
void		(*pfnEmitSound)				(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch);
enginecallback.h definiert das makro
Code:
#define EMIT_SOUND_DYN2 (*g_engfuncs.pfnEmitSound)
nützlich sind auch folgende definitionen aus const.h
Code:
// channels
#define CHAN_AUTO			0
#define CHAN_WEAPON			1
#define	CHAN_VOICE			2
#define CHAN_ITEM			3
#define	CHAN_BODY			4
#define CHAN_STREAM			5			// allocate stream channel from the static or dynamic area
#define CHAN_STATIC			6			// allocate channel from the static area 
#define CHAN_NETWORKVOICE_BASE	7		// voice data coming across the network
#define CHAN_NETWORKVOICE_END	500		// network voice data reserves slots (CHAN_NETWORKVOICE_BASE through CHAN_NETWORKVOICE_END).

// attenuation values
#define ATTN_NONE		0
#define	ATTN_NORM		(float)0.8
#define ATTN_IDLE		(float)2
#define ATTN_STATIC		(float)1.25 

// pitch values
#define	PITCH_NORM		100			// non-pitch shifted
#define PITCH_LOW		95			// other values are possible - 0-255, where 255 is very high
#define PITCH_HIGH		120

// volume values
#define VOL_NORM		1.0
ausgehend davon bauen wir uns als erstes eine playsound-funktion:
Code:
inline void UTIL_Playsound(edict_t* pPlayerEdict, const char* sound) {
    EMIT_SOUND_DYN2(pPlayerEdict, CHAN_VOICE, sound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
}
weiterhin brauchen wir eine funktion, die zu jedem spieler den edict-pointer findet:
Code:
edict_t* UTIL_EntityByIndex( int playerIndex ){
	edict_t* pPlayerEdict = NULL;

	if ( playerIndex > 0 && playerIndex <= gpGlobals->maxClients ) {
		pPlayerEdict = INDEXENT( playerIndex );
		if ( !pPlayerEdict || pPlayerEdict->free ) {
			pPlayerEdict = NULL;
		}
	}
	return pPlayerEdict;
}
zuletzt noch:
Code:
void UTIL_PlaysoundAll(const char* sound) {
    edict_t* pPlayerEdict;
    int i;
    for(i = 1; i <= gpGlobals->maxClients; i++) {
        if((pPlayerEdict = UTIL_EntityByIndex(i)) != NULL) {
            UTIL_Playsound(pPlayerEdict, sound);
        }
    }
}
jetzt haben wir eine funktion, die den sound bei allen clients abspielt. nun müssen wir noch entscheiden, wann welcher sound abgespielt werden soll. ich nutze hierzu ein array, bei denen die anzahl der kills als index verwendet wird:
Code:
const char* killsounds[] = {
  NULL,
  NULL,
  "misc/doublekill.wav",
  "misc/multikill.wav",
  "misc/megakill.wav",
  "misc/ultrakill.wav",
  "misc/monsterkill.wav",
  "misc/loudacriskill.wav",
  "misc/holyshit.wav"
};
nun kann man in die StartFrame-Funktion eintragen:
Code:
UTIL_PlaysoundAll(killsounds[min(8, client->m_iKillsThisFrame)]);
weiterhin müssen alle sounds, die verwendet werden sollen, auf den clients "precached" werden.
das geschieht in der Funktion Spawn, die wahrscheinlich von bubblemod schon implementiert ist, und nur erweitert werden muss:
Code:
int Spawn( edict_t*) {
   [...]

   for(int i = 2; i <= 8; i++) {
      PRECACHE_SOUND(killsounds[i]);
   }

   [...]
}
das sollte eigentlich alles sein


Zuletzt geändert von Rinde am 25.09.2005, 19:33, insgesamt 2-mal geändert.

Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 25.09.2005, 17:11 

Registriert: 17.10.2004, 12:11
Beiträge: 171
Wohnort: nähe Bielefeld
aahhmmmmm cool ....danke dir

aber ich kann damit überhaupt nichts anfangen :cry:

was muss ich jetzt wie und wo rein koppieren damit ich bei einem 2-fer den sound doublekill.wav und bei nem 3-fer den sound monsterkill.wav höhre.


sorry aber ich habe da keine ahnung von :oops:

_________________
Meine HalfLife Page


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 26.09.2005, 23:10 

Registriert: 17.10.2004, 12:11
Beiträge: 171
Wohnort: nähe Bielefeld
hat denn niemand lust das einem n00b zu erklähren ???? :cry: :cry:

_________________
Meine HalfLife Page


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 22.10.2005, 00:48 

Registriert: 17.10.2004, 12:11
Beiträge: 171
Wohnort: nähe Bielefeld
ok ... ich versuchs nochmal :?


kann mir BITTE BITTE jemand das so schreiben das ich n00b das verstehe ?? oder mir die entsprechenden sachen umschreiben und neu compilieren ???


würde mich echt riesig freuen :lol:

_________________
Meine HalfLife Page


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 7 Beiträge ] 


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de
Original Design von "[ Half-Life Admin Mod © Alfred Reynolds 2000-2003 ] - [ site design by Jägermeister ]"