|
You last visited: Today at 06:13
Advertisement
[Fix] Sound Bug
Discussion on [Fix] Sound Bug within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.
11/14/2015, 15:04
|
#1
|
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.
|
|
|
11/14/2015, 15:29
|
#2
|
elite*gold: 51
Join Date: Sep 2012
Posts: 1,141
Received Thanks: 575
|
else if (fRadian == 0.0) zu else if (fRadian < 0.0)
|
|
|
11/14/2015, 22:51
|
#3
|
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¿¡ ±×´ë·Î ³Ö¾îµµ µÇ³ª?
}
|
|
|
11/14/2015, 22:57
|
#4
|
elite*gold: 10
Join Date: Jan 2015
Posts: 937
Received Thanks: 449
|
Quote:
Originally Posted by Jupsi332
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
|
|
|
11/14/2015, 23:00
|
#5
|
elite*gold: 50
Join Date: Feb 2014
Posts: 288
Received Thanks: 245
|
Quote:
Originally Posted by Gentros'
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
|
|
|
11/15/2015, 00:29
|
#6
|
elite*gold: 0
Join Date: Apr 2013
Posts: 511
Received Thanks: 431
|
Quote:
Originally Posted by Jupsi332
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.
|
|
|
11/15/2015, 01:07
|
#7
|
elite*gold: 50
Join Date: Feb 2014
Posts: 288
Received Thanks: 245
|
Quote:
Originally Posted by Wanetrain
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.
|
|
|
11/15/2015, 01:12
|
#8
|
elite*gold: 18
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,475
|
Quote:
Originally Posted by Jupsi332
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
|
|
|
11/15/2015, 01:15
|
#9
|
elite*gold: 50
Join Date: Feb 2014
Posts: 288
Received Thanks: 245
|
Quote:
Originally Posted by Sedrika
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.
|
|
|
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.
|
|
|
06/19/2016, 21:33
|
#11
|
elite*gold: 10
Join Date: Jan 2015
Posts: 937
Received Thanks: 449
|
It is for Visual Studio 2012+
|
|
|
06/20/2016, 00:03
|
#12
|
elite*gold: 18
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,475
|
Quote:
Originally Posted by Gentros'
It is for Visual Studio 2012+
|
|
|
|
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.
|
|
|
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.
|
|