Register for your free account! | Forgot your password?

You last visited: Today at 06:13

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Fix] Sound Bug

Discussion on [Fix] Sound Bug within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.

Reply
 
Old   #1
 
-Venom''s Avatar
 
elite*gold: 10
Join Date: Jan 2015
Posts: 937
Received Thanks: 449
[Fix] Sound Bug

Hallo Flyff Sektion,
wir haben vor kurzem bei Erendora ein kleinen Bug gefunden.
Da ich mir denke das diesen mehrere Leute haben Release ich ihn.

Der Fehler:
Man hört beim stehen keine Sounds wie z.B. beim Waffen anlegen, beim Food anwenden


So nun zum Source Teil:

dsutil.cpp

unter
Code:
		D3DXVECTOR3 vPos = *pvPosition - m_vPosListener;
		double fRadian = sqrt14( 
			fabs ( vPos.x ) * fabs ( vPos.x ) +	fabs ( vPos.z ) * fabs ( vPos.z ) );

		//Radian *= 2.0f;

		if( fRadian > 100.0 )
			return FALSE;
Fügt ihr das ein:
Code:
	else if (fRadian < 0.0)
		{
			D3DVECTOR vec;
			m_pDSListener->GetPosition(&vec);
			pSound->m_pBufferParams[dwIndex].vPosition.x = vec.x;
			pSound->m_pBufferParams[dwIndex].vPosition.y = vec.y;
			pSound->m_pBufferParams[dwIndex].vPosition.z = vec.z;
		}
Somit funktioniert der Sound wieder.
-Venom' is offline  
Thanks
1 User
Old 11/14/2015, 15:29   #2
 
TrøublêMakêr's Avatar
 
elite*gold: 51
Join Date: Sep 2012
Posts: 1,141
Received Thanks: 575
else if (fRadian == 0.0) zu else if (fRadian < 0.0)
TrøublêMakêr is offline  
Old 11/14/2015, 22:51   #3
 
Mike Oxmaul's Avatar
 
elite*gold: 50
Join Date: Feb 2014
Posts: 288
Received Thanks: 245
ich frage mich gerade nur, wie du an assembly funktionen von mir kommst?

und wenn dir Timon schenkt, dann fix es auch richtig

bei dir
anstatt
Code:
else if (fRadian < 1.0){
			D3DXVECTOR3 Line1 = D3DXVECTOR3(0.0f, 0.0f, -1.0f);
			D3DXVECTOR3 Line2 = -vPos;
			//Line2 = m_world.m_vCenter - Line2;
			// Nomralize Vectors
			FLOAT vlength = static_cast<FLOAT>(sqrt14((Line2.x * Line2.x) + (Line2.z * Line2.z)));
			Line2 = Line2 / vlength;
			// ¶óµð¾È ±¸Çϱâ 
			FLOAT a = acos(D3DXVec3Dot(&Line1, &Line2));
			//a = ( D3DX_PI * 2.0f ) - a;
			if (vPos.x < 0)
				a = (D3DX_PI * 2.0f) - a;
			a += -m_fTheta;

			vPos.x = (float)((int)(sin(a) * fRadian));	// ¿©±â (int)ij½ºÆÃ ¹Ù²ÙÁö ¸»°Í. (int)¾ÈÇϸé ÄÄÅÍ ¸®º×µÊ.
			vPos.z = (float)((int)(cos(a) * fRadian));
			vPos.y = (float)((int)vPos.y);

			D3DVECTOR v;
			v.x = vPos.x;	// Ȥ½Ã ¸ô¶ó ÀÌ·¸°Ô ÇØºÃ´Ù.
			v.y = vPos.y;
			v.z = vPos.z;
			pSound->m_pBufferParams[dwIndex].vPosition = v;	// D3XVECTOR3¸¦ D3DVECTOR¿¡ ±×´ë·Î ³Ö¾îµµ µÇ³ª?
		}
so
Code:
else if (fRadian > 1.0){
			D3DXVECTOR3 Line1 = D3DXVECTOR3(0.0f, 0.0f, -1.0f);
			D3DXVECTOR3 Line2 = -vPos;
			//Line2 = m_world.m_vCenter - Line2;
			// Nomralize Vectors
			FLOAT vlength = static_cast<FLOAT>(sqrt14((Line2.x * Line2.x) + (Line2.z * Line2.z)));
			Line2 = Line2 / vlength;
			// ¶óµð¾È ±¸Çϱâ 
			FLOAT a = acos(D3DXVec3Dot(&Line1, &Line2));
			//a = ( D3DX_PI * 2.0f ) - a;
			if (vPos.x < 0)
				a = (D3DX_PI * 2.0f) - a;
			a += -m_fTheta;

			vPos.x = (float)((int)(sin(a) * fRadian));	// ¿©±â (int)ij½ºÆÃ ¹Ù²ÙÁö ¸»°Í. (int)¾ÈÇϸé ÄÄÅÍ ¸®º×µÊ.
			vPos.z = (float)((int)(cos(a) * fRadian));
			vPos.y = (float)((int)vPos.y);

			D3DVECTOR v;
			v.x = vPos.x;	// Ȥ½Ã ¸ô¶ó ÀÌ·¸°Ô ÇØºÃ´Ù.
			v.y = vPos.y;
			v.z = vPos.z;
			pSound->m_pBufferParams[dwIndex].vPosition = v;	// D3XVECTOR3¸¦ D3DVECTOR¿¡ ±×´ë·Î ³Ö¾îµµ µÇ³ª?
		}
Mike Oxmaul is offline  
Old 11/14/2015, 22:57   #4
 
-Venom''s Avatar
 
elite*gold: 10
Join Date: Jan 2015
Posts: 937
Received Thanks: 449
Quote:
Originally Posted by Jupsi332 View Post
ich frage mich gerade nur, wie du an assembly funktionen von mir kommst?
Das ganze ist von Wurstbrot.
Und das einzige was er dort getan hat ist das:
Code:
	{
		D3DVECTOR vec;
		m_pDSListener->GetPosition(	&vec );
		pSound->m_pBufferParams[dwIndex].vPosition.x = vec.x;
		pSound->m_pBufferParams[dwIndex].vPosition.y = vec.y;
		pSound->m_pBufferParams[dwIndex].vPosition.z = vec.z;
	}
Oben in den else if (fRadian < 0.0) zu kopieren.

Also ich verstehe nicht was dort von dir sein soll
-Venom' is offline  
Old 11/14/2015, 23:00   #5
 
Mike Oxmaul's Avatar
 
elite*gold: 50
Join Date: Feb 2014
Posts: 288
Received Thanks: 245
Quote:
Originally Posted by Gentros' View Post
Das ganze ist von Wurstbrot.
Und das einzige was er dort getan hat ist das:
Code:
	{
		D3DVECTOR vec;
		m_pDSListener->GetPosition(	&vec );
		pSound->m_pBufferParams[dwIndex].vPosition.x = vec.x;
		pSound->m_pBufferParams[dwIndex].vPosition.y = vec.y;
		pSound->m_pBufferParams[dwIndex].vPosition.z = vec.z;
	}
Oben in den else if (fRadian < 0.0) zu kopieren.

Also ich versehen ich was dort von dir sein soll
Geht auch nicht um den Fix an sich, den du auch noch falsch gemacht hast, wobei der so wie er in Timons Source ist, auch von mir ist. Nur wieso auch immer er die if verdreht hat
Mike Oxmaul is offline  
Old 11/15/2015, 00:29   #6
 
elite*gold: 0
Join Date: Apr 2013
Posts: 511
Received Thanks: 431
Quote:
Originally Posted by Jupsi332 View Post
Geht auch nicht um den Fix an sich, den du auch noch falsch gemacht hast, wobei der so wie er in Timons Source ist, auch von mir ist. Nur wieso auch immer er die if verdreht hat
Aha. Heißt wenn ich eine Konsolen Anwendung mach ist da auch Code von dir enthalten weil ich da zufällig eine Funktion fast gleich hab? mhmm.

@Gentros hab ich es dir nicht letztes mal im Ts schon gesagt? Kannst du besser machen Bub!

PHP Code:
m_pDSListener->GetPosition(    &pSound->m_pBufferParams[dwIndex].vPosition ); 
S'Läuft!

@"Jopsii" bei dir kann ich einfach nur lachen. "Code ist von mir" oder sonstiges gibt es nicht, you know? Ich Krall mir deine Files + Deine Homepage und änder da auch nur eine Zeile im Code und schon gehört das zeug rein rechtlich mir. Also who cares?

Das Wort zum Sonntag.

Mfg.
Wanetrain is offline  
Thanks
1 User
Old 11/15/2015, 01:07   #7
 
Mike Oxmaul's Avatar
 
elite*gold: 50
Join Date: Feb 2014
Posts: 288
Received Thanks: 245
Quote:
Originally Posted by Wanetrain View Post
Aha. Heißt wenn ich eine Konsolen Anwendung mach ist da auch Code von dir enthalten weil ich da zufällig eine Funktion fast gleich hab? mhmm.

@Gentros hab ich es dir nicht letztes mal im Ts schon gesagt? Kannst du besser machen Bub!

PHP Code:
m_pDSListener->GetPosition(    &pSound->m_pBufferParams[dwIndex].vPosition ); 
S'Läuft!

@"Jopsii" bei dir kann ich einfach nur lachen. "Code ist von mir" oder sonstiges gibt es nicht, you know? Ich Krall mir deine Files + Deine Homepage und änder da auch nur eine Zeile im Code und schon gehört das zeug rein rechtlich mir. Also who cares?

Das Wort zum Sonntag.

Mfg.
Es ging nicht darum das ich rumheulen wollte das es meins ist, das ist mir in sofern eigentlich auch egal. Wundert mich nur woher er die eine Sache her hat die ich dort entdeckt habe, dort weiß ich ganz genau das es die so nicht nochmal gibt.

bei dem 2. ging es mir auch nur darum, weil Timon es ja eigentlich schon drin hat nur die if abfrage um drehen muss, dann würde es auch funktioneren, da er ja Timons source nutzt.

also @Gentros' , ich wollte dein Fix nicht kritisieren, sondern wie gesagt, du hast da was drinne wo ich OT-mäßig nur mein Senf zu geben wollte.
Mike Oxmaul is offline  
Old 11/15/2015, 01:12   #8



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,475
Quote:
Originally Posted by Jupsi332 View Post
Es ging nicht darum das ich rumheulen wollte das es meins ist, das ist mir in sofern eigentlich auch egal. Wundert mich nur woher er die eine Sache her hat die ich dort entdeckt habe, dort weiß ich ganz genau das es die so nicht nochmal gibt.

bei dem 2. ging es mir auch nur darum, weil Timon es ja eigentlich schon drin hat nur die if abfrage um drehen muss, dann würde es auch funktioneren, da er ja Timons source nutzt.

also @Gentros' , ich wollte dein Fix nicht kritisieren, sondern wie gesagt, du hast da was drinne woher ich mich OT-mäßig nur mein Senf zu geben wollte.
Ich hab es etwas anders gelöst und dennoch die Sounds fixed, ich hab deinen code nie gesehen aber wäre das wenn du es so ähnlich wie ich hast dann auch deiner?

Aber wenn du schon das ganze so aufbringst scheinst du deinen code ja zu verteilen und die denen du das gibst können es wohl nicht für sich behalten
Sedrika is offline  
Thanks
1 User
Old 11/15/2015, 01:15   #9
 
Mike Oxmaul's Avatar
 
elite*gold: 50
Join Date: Feb 2014
Posts: 288
Received Thanks: 245
Quote:
Originally Posted by Sedrika View Post
Ich hab es etwas anders gelöst und dennoch die Sounds fixed, ich hab deinen code nie gesehen aber wäre das wenn du es so ähnlich wie ich hast dann auch deiner?

Aber wenn du schon das ganze so aufbringst scheinst du deinen code ja zu verteilen und die denen du das gibst können es wohl nicht für sich behalten
Wie gesagt, ich will nicht flamen das es meiner ist, vorallem da ich auch ganicht den Fix meinte, sondern eher das was im oberen teil steht. Wirst du wohl leider recht haben, wieder mal jemand dem man nicht trauen kann leider.
Mike Oxmaul is offline  
Thanks
3 Users
Old 06/19/2016, 21:10   #10
 
elite*gold: 0
Join Date: May 2015
Posts: 44
Received Thanks: 14
Did noone test this "Fix"?
Quote:
unter
Code:
		D3DXVECTOR3 vPos = *pvPosition - m_vPosListener;
		double fRadian = sqrt14( 
			fabs ( vPos.x ) * fabs ( vPos.x ) +	fabs ( vPos.z ) * fabs ( vPos.z ) );

		//Radian *= 2.0f;

		if( fRadian > 100.0 )
			return FALSE;
Fügt ihr das ein:
Code:
	else if (fRadian < 0.0)
		{
			D3DVECTOR vec;
			m_pDSListener->GetPosition(&vec);
			pSound->m_pBufferParams[dwIndex].vPosition.x = vec.x;
			pSound->m_pBufferParams[dwIndex].vPosition.y = vec.y;
			pSound->m_pBufferParams[dwIndex].vPosition.z = vec.z;
		}
fRadian is calculated with the Pythagorean theorem. It represents the distance between the soundsource and the player.
A sqrt has always a negative and a positive result, but std:sqrt does only return the positive value!
So fRadian can never be smaller than 0.0!

The second Problem is that even if fRadian would get smaller than 0.0 and the else part is hit it would change nothing, because some lines later pSound->m_pBufferParams[dwIndex].vPosition will be overwritten:
Code:
		vPos.x = (float)( (int)(sin( a ) * fRadian ) );	// 여기 (int)캐스팅 바꾸지 말것. (int)안하면 컴터 리붓됨.
		vPos.z = (float)( (int)(cos( a ) * fRadian ) );
		vPos.y = (float)( (int) vPos.y );

		D3DVECTOR v;
		v.x = vPos.x;	// 혹시 몰라 이렇게 해봤다.
		v.y = vPos.y;
		v.z = vPos.z;
		pSound->m_pBufferParams[dwIndex].vPosition = v;	// D3XVECTOR3를 D3DVECTOR에 그대로 넣어도 되나?
I think this would make more sense:
Code:
		D3DXVECTOR3 vPos = *pvPosition - m_vPosListener;
		FLOAT fRadian = sqrt( 
			fabs ( vPos.x ) * fabs ( vPos.x ) +	fabs ( vPos.z ) * fabs ( vPos.z ) );

	//Radian *= 2.0f;

		if( fRadian > 100.0f )
			return FALSE;
#ifdef __SOUND_BUG_FIX
		else if (fRadian == 0.0)
			m_pDSListener->GetPosition(&pSound->m_pBufferParams[dwIndex].vPosition);
		else
#endif // __SOUND_BUG_FIX
		{
			D3DXVECTOR3 Line1 = D3DXVECTOR3( 0.0f, 0.0f, -1.0f );
			D3DXVECTOR3 Line2 = -vPos;
			//Line2 = m_world.m_vCenter - Line2;
			// Nomralize Vectors
			FLOAT vlength = sqrt( ( Line2.x * Line2.x ) + ( Line2.z * Line2.z ) ); 
			Line2 = Line2 / vlength;
			// 라디안 구하기 
			FLOAT a = acos( D3DXVec3Dot( &Line1, &Line2 ) );
			//a = ( D3DX_PI * 2.0f ) - a;
			if( vPos.x < 0 )
				a = ( D3DX_PI * 2.0f ) - a;
			a += -m_fTheta;

			vPos.x = (float)( (int)(sin( a ) * fRadian ) );	// 여기 (int)캐스팅 바꾸지 말것. (int)안하면 컴터 리붓됨.
			vPos.z = (float)( (int)(cos( a ) * fRadian ) );
			vPos.y = (float)( (int) vPos.y );

			D3DVECTOR v;
			v.x = vPos.x;	// 혹시 몰라 이렇게 해봤다.
			v.y = vPos.y;
			v.z = vPos.z;
			pSound->m_pBufferParams[dwIndex].vPosition = v;	// D3XVECTOR3를 D3DVECTOR에 그대로 넣어도 되나?
		}
	}
I tested it but somehow it plays the sound with and without the fix. Perhabs I fixed it somewhere else long time ago.
Capt. Jack is offline  
Thanks
1 User
Old 06/19/2016, 21:33   #11
 
-Venom''s Avatar
 
elite*gold: 10
Join Date: Jan 2015
Posts: 937
Received Thanks: 449
It is for Visual Studio 2012+
-Venom' is offline  
Old 06/20/2016, 00:03   #12



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,475
Quote:
Originally Posted by Gentros' View Post
It is for Visual Studio 2012+
Sedrika is offline  
Thanks
1 User
Old 06/20/2016, 02:36   #13
 
elite*gold: 294
Join Date: Jun 2009
Posts: 407
Received Thanks: 587
The real fix is actually using a better system to manage sounds and music.
Avalion is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
Logitech G430 Surround Sound Headset, sound bricht nach spielstart + voiceprogram ab
12/06/2015 - Technical Support - 21 Replies
Hey Leute, folgendes Problem: Habe mir vor etwa nem Monat das Logitech G430 Surround Sound 7.1 Headset gekauft, der sound an sich ist echt top, gegnerortung in ego shootern is sowas von punktgenau (je nach soundengine des games) daher perfekt für esl & co. Solange ich ohne Ts3,Skype,Steamvoice etc. spiele, läuft das headset perfekt, nur sobald etwas davon läuft, damit ich mit meinem team usw. reden kann, bricht mein sound + mic ab sobald ich ein spiel starte, geht dann auch erst wieder...
German Crossfire Sound Mod - Deutscher Sound Mod
01/02/2010 - CrossFire - 26 Replies
Hey folks, I made a Sound Modification for Crossfire in German and English. There are mainly fun sounds and some elements of Postal 2 and UT therein. Readme File is also added. Scan: VirusTotal - Kostenloser online Viren- und Malwarescanner - Ergebnis Size: ~15MB Download



All times are GMT +1. The time now is 06:14.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.