|
You last visited: Today at 23:56
Advertisement
[Source] Multilanguage
Discussion on [Source] Multilanguage within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.
11/02/2014, 06:04
|
#1
|
elite*gold: 23
Join Date: Dec 2010
Posts: 743
Received Thanks: 617
|
[Source] Multilanguage
Da ich keine Verwendung mehr dafür habe und es sowieso simpel ist schenke ich es euch.
_Common\ProjectCmn.cpp
Sucht nach: void CProject::LoadStrings()
entfernt alle Dateiendungen bis die Funktion endet d.h
Quote:
wird zu
Quote:
-------------------------
Wir bleiben in der Funktion und schauen uns die for-schleife an
Quote:
for( int i=0; i<n; ++i )
{
CScript s;
if( s.Load( lpszFiles[i] ) == TRUE )
s.LoadString();
}
|
und ändern diese zu
Quote:
for( int i=0; i<n; ++i )
{
#ifdef __MULTILANG
CString szFile = lpszFiles[i];
#ifdef __CLIENT
if( g_Option.m_chMultiLang == TRUE )
szFile += "_ger";
#endif
szFile += ".txt.txt";
#endif //__MULTILANG
CScript s;
if( s.Load(szFile ) == TRUE )
s.LoadString();
}
|
_Interface\WndOption.cpp
Suchen nach: void CWndOptVideo::OnInitialUpdate()
fügen das hier ein:
Quote:
#ifdef __MULTILANG
CWndComboBox* pWndMultiBox = ( CWndComboBox* )GetDlgItem( WIDC_COMBOBOX1 );
pWndMultiBox->AddString( "English" );
pWndMultiBox->AddString( "German" );
pWndMultiBox->AddWndStyle( EBS_READONLY );
pWndMultiBox->SetCurSel( g_Option.m_chMultiLang );
#endif // __MULTILANG
|
---------------------------
Suchen nach: BOOL CWndOptVideo::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
und fügen unter
Quote:
case WIDC_CHECK3:
pWndButton = (CWndButton*)GetDlgItem( WIDC_CHECK3 );
if(pWndButton) g_Option.m_nWeatherEffect = pWndButton->GetCheck();
break;
|
das ein:
Quote:
#ifdef __MULTILANG
case WIDC_COMBOBOX1:
{
CWndComboBox* pWndMultiBox = ( CWndComboBox* )GetDlgItem( WIDC_COMBOBOX1 );
switch( pWndMultiBox->GetCurSel() )
{
case 0:
g_Option.m_chMultiLang = 0;
break;
case 1:
g_Option.m_chMultiLang = 1;
break;
default:
g_Option.m_chMultiLang = 0;
break;
}
g_WndMng.OpenMessageBox( prj.GetText(TID_GAME_GAME_RESETTING), MB_OK, this );
}
break;
#endif
|
_Common\HwOption.cpp
Wir suchen nach: void COption::Init()
und fügen das ein:
Quote:
#ifdef __MULTILANG
m_chMultiLang = 0;
#endif
|
----------------
Suchen nach: int COption::Load( LPCTSTR szFileName )
und fügen in der while-schleife das ein
Quote:
#ifdef __MULTILANG
else if( scan.Token == _T("MultiLang") )
{
m_chMultiLang = scan.GetNumber();
if( m_chMultiLang < 0 || m_chMultiLang > 1)
m_chMultiLang = 0;
}
#endif
|
----------------
Suchen nach: int COption::Save( LPCTSTR szFileName )
und fügen das ein:
Quote:
#ifdef __MULTILANG
_ftprintf(fp, _T( "MultiLang %d\n" ), m_chMultiLang );
#endif
|
_Common\HwOption.h
Wir fügen das ein:
#ifdef __MULTILANG
DWORD m_chMultiLang;
#endif
Hier noch für das Applet: APP_OPTEX_AV12
Quote:
WTYPE_STATIC WIDC_STATIC8 "" 0 8 280 104 296 0x2220000 0 0 0 0 246 204 77
{
// Title String
"Multilanguage"
}
{
// ToolTip
""
}
WTYPE_COMBOBOX WIDC_COMBOBOX1 "WndEditTile00.tga" 1 108 278 199 297 0x20000 0 0 0 0 0 0 0
{
// Title String
"" //Multi
}
{
// ToolTip
""
}
|
|
|
|
11/02/2014, 11:58
|
#2
|
elite*gold: 0
Join Date: Mar 2010
Posts: 24
Received Thanks: 16
|
That ch prefix in DWORD variable xDD
|
|
|
11/02/2014, 12:56
|
#3
|
elite*gold: 0
Join Date: Jan 2014
Posts: 773
Received Thanks: 373
|
Ich finde das man das schöner lösen kann.
Immer wenn man eine neue Sprache adden will muss man das halbe System ändern.
Einfach eine Datei in der Resource die die Endung der .txt.txt Dateien angebiet und dazu die Zahl und der Name der Sprache. Fertig
|
|
|
11/02/2014, 13:45
|
#4
|
elite*gold: 23
Join Date: Dec 2010
Posts: 743
Received Thanks: 617
|
Quote:
Originally Posted by Jomex
That ch prefix in DWORD variable xDD
|
Haha yea, i was tired this morning and didnt want to change that.
The code is a bit older..
Quote:
Originally Posted by Drabur
Ich finde das man das schöner lösen kann.
Immer wenn man eine neue Sprache adden will muss man das halbe System ändern.
Einfach eine Datei in der Resource die die Endung der .txt.txt Dateien angebiet und dazu die Zahl und der Name der Sprache. Fertig
|
Ja das hätte man natürlich machen, ist natürlich auch besser gewesen, nur ich hatte das noch bei mir rumliegen, erfüllt sein Zweck und werde da auch nichts mehr dran machen.
Aber für den Anfang reicht das auch vollkommen aus.
|
|
|
11/02/2014, 14:37
|
#5
|
elite*gold: 0
Join Date: Jun 2013
Posts: 166
Received Thanks: 259
|
Nicht wirklich komplett, was is z.b. mit der worlddialog und vom server gesendete texte allgemein?
Quote:
Originally Posted by Jomex
That ch prefix in DWORD variable xDD
|
So what? Isn't it just up to the engineer how to name the variables? But i think that's just a flyff thing with standardized prefixes, copied from microsoft.
|
|
|
11/02/2014, 15:05
|
#6
|
elite*gold: 23
Join Date: Dec 2010
Posts: 743
Received Thanks: 617
|
Quote:
Originally Posted by WurstbrotQT
Nicht wirklich komplett, was is z.b. mit der worlddialog und vom server gesendete texte allgemein?
|
Wüsste jetzt nicht was du mit "vom server gesendetet texte allgemein" meinst, pUser->AddDefinedText() und die anderen Sachen werden alle vom Client gelesen außer wie du schon sagtest den Worlddialog, den müsste man noch machen.
|
|
|
11/02/2014, 15:56
|
#7
|
elite*gold: 0
Join Date: Mar 2008
Posts: 665
Received Thanks: 227
|
Quote:
Originally Posted by WurstbrotQT
Nicht wirklich komplett, was is z.b. mit der worlddialog und vom server gesendete texte allgemein?
So what? Isn't it just up to the engineer how to name the variables? But i think that's just a flyff thing with standardized prefixes, copied from microsoft.
|
Actually is hungarian notation, used to identify fast variable types. But I agree, variable names are up to the programmer.
|
|
|
11/02/2014, 20:38
|
#8
|
elite*gold: 51
Join Date: Sep 2012
Posts: 1,141
Received Thanks: 575
|
Quote:
Originally Posted by .SnoX
Wüsste jetzt nicht was du mit "vom server gesendetet texte allgemein" meinst, pUser->AddDefinedText() und die anderen Sachen werden alle vom Client gelesen außer wie du schon sagtest den Worlddialog, den müsste man noch machen.
|
Er meint shouts von Worldserver. Das z.b rainbow startet, das wird vom WS geschickt. Erst wird der default Sprache übernommen.
|
|
|
11/03/2014, 03:03
|
#9
|
elite*gold: 7
Join Date: Sep 2012
Posts: 4,462
Received Thanks: 3,213
|
Mach es am besten dann in English So versteht es jeder und man muss nur einen Shout setzten.
|
|
|
11/09/2014, 13:49
|
#10
|
elite*gold: 0
Join Date: Nov 2014
Posts: 29
Received Thanks: 23
|
Code:
if( g_Option.m_chMultiLang == TRUE )
szFile += "_ger";
#endif
szFile += ".txt.txt";
#endif //__MULTILANG
case 0:
g_Option.m_chMultiLang = 0;
break;
case 1:
g_Option.m_chMultiLang = 1;
Wenn ich die erste language auswähle müsste er doch IMMER ein den else bereich callen (den es nicht gibt) und das würde aus dem String "character.txt.txt" machen?
Was ist wenn ich nun character_eng.txt.txt und character_ger.txt.txt nutzte?
|
|
|
11/14/2014, 19:34
|
#11
|
elite*gold: 0
Join Date: Apr 2013
Posts: 511
Received Thanks: 431
|
Quote:
#ifdef __MULTILANG
case WIDC_COMBOBOX1:
{
CWndComboBox* pWndMultiBox = ( CWndComboBox* )GetDlgItem( WIDC_COMBOBOX1 );
switch( pWndMultiBox->GetCurSel() )
{
case 0:
g_Option.m_chMultiLang = 0;
break;
case 1:
g_Option.m_chMultiLang = 1;
break;
default:
g_Option.m_chMultiLang = 0;
break;
}
g_WndMng.OpenMessageBox( prj.GetText(TID_GAME_GAME_RESETTING), MB_OK, this );
}
break;
#endif
|
LaLaLaLaLa
Quote:
g_Option.m_chMultiLang = ( CWndComboBox* )GetDlgItem( WIDC_COMBOBOX1 )->GetCurSel();
|
Eins von vielen was man ändern könnte ohne unnötig Performance zu verhauen.
Grundsätzlich gesehen ist das Völlig unnötig so "Multi Lang" gedönse da, wenn sowieso alles verstreut ist wie ein Bunter Haufen.
WorldDialog Server Side zu machen ist auch unnütz da nicht alle Spieler exact zur gleichen zeit den selben Text bekommen, man sollte generel ALLE Texte Client Side zusammen Fassen und dann das den Client machen lassen.
Ist zuviel Arbeit, darum macht es kein Schwein.
|
|
|
11/15/2014, 13:24
|
#12
|
elite*gold: 0
Join Date: Jun 2013
Posts: 166
Received Thanks: 259
|
Quote:
Originally Posted by Wanetrain
LaLaLaLaLa
Eins von vielen was man ändern könnte ohne unnötig Performance zu verhauen.
Grundsätzlich gesehen ist das Völlig unnötig so "Multi Lang" gedönse da, wenn sowieso alles verstreut ist wie ein Bunter Haufen.
WorldDialog Server Side zu machen ist auch unnütz da nicht alle Spieler exact zur gleichen zeit den selben Text bekommen, man sollte generel ALLE Texte Client Side zusammen Fassen und dann das den Client machen lassen.
Ist zuviel Arbeit, darum macht es kein Schwein.
|
Genau, Performance, ein switch der wahrscheinlich in eine lookup table kompiliert wird und damit nur einen prozessorzyklus langsamer ist als die direkte zuweisung ist außerhalb der mikroprozessor Technologie ein Performance drop gigantischer Ausmaße.
Wahrscheinlich wirds sogar vom compiler in deine Version optimiert. Du kannst dich maximal über den "Stil" aufregen aber nicht über Performance.
Und du nennst das kopieren der Datei in den clienten und die zeile anstelle des Textes senden Arbeit?
|
|
|
11/15/2014, 15:23
|
#13
|
elite*gold: 0
Join Date: Apr 2013
Posts: 511
Received Thanks: 431
|
Quote:
Originally Posted by WurstbrotQT
Genau, Performance, ein switch der wahrscheinlich in eine lookup table kompiliert wird und damit nur einen prozessorzyklus langsamer ist als die direkte zuweisung ist außerhalb der mikroprozessor Technologie ein Performance drop gigantischer Ausmaße.
Wahrscheinlich wirds sogar vom compiler in deine Version optimiert. Du kannst dich maximal über den "Stil" aufregen aber nicht über Performance.
Und du nennst das kopieren der Datei in den clienten und die zeile anstelle des Textes senden Arbeit?
|
HeHe für die meisten hier ist es Arbeit, die sie sich Sparen wollen. oô
Es ist Performance lastig, der Compiler optimiert nicht alles sehr gut, schau dir die Switch Case in ASM mal an, du wirst sehen das sie exact so drin steht wie er sie macht, da wird nix großartig Optimiert, zzgl. ist die Optimierung bei FlyFF lowbird kacke weil kaum einer sie nutzt. (Einstellungen & co)
Will dich ja nicht als Wannabe darstellen, kenne dich ja nicht, glaub dir schon das du einiges an wissen hast aber dennoch kann man nicht alles über den **** erfahren.
Bestes beispiel im übrigen schau dir einfach mal OnSnapshot mit IDA an, du kriegst das blanke Kotzen. D
|
|
|
11/15/2014, 15:48
|
#14
|
elite*gold: 0
Join Date: Jun 2013
Posts: 166
Received Thanks: 259
|
Quote:
Originally Posted by Wanetrain
HeHe für die meisten hier ist es Arbeit, die sie sich Sparen wollen. oô
Es ist Performance lastig, der Compiler optimiert nicht alles sehr gut, schau dir die Switch Case in ASM mal an, du wirst sehen das sie exact so drin steht wie er sie macht, da wird nix großartig Optimiert, zzgl. ist die Optimierung bei FlyFF lowbird kacke weil kaum einer sie nutzt. (Einstellungen & co)
Will dich ja nicht als Wannabe darstellen, kenne dich ja nicht, glaub dir schon das du einiges an wissen hast aber dennoch kann man nicht alles über den **** erfahren.
Bestes beispiel im übrigen schau dir einfach mal OnSnapshot mit IDA an, du kriegst das blanke Kotzen. D
|
Naja, so viel ists nicht.
In diesem Fall ist da nix performance lastig, wie gesagt, ein zyklus mehr, da wird der stack einfach erhoeht.
Das OnSnapshot ist ein raetsel, eine look up map wie im normalen Request Handler waere um einiges schneller.
|
|
|
11/17/2014, 14:39
|
#15
|
elite*gold: 0
Join Date: Sep 2008
Posts: 569
Received Thanks: 695
|
Quote:
Originally Posted by WurstbrotQT
Genau, Performance, ein switch der wahrscheinlich in eine lookup table kompiliert wird und damit nur einen prozessorzyklus langsamer ist als die direkte zuweisung ist außerhalb der mikroprozessor Technologie ein Performance drop gigantischer Ausmaße.
Wahrscheinlich wirds sogar vom compiler in deine Version optimiert. Du kannst dich maximal über den "Stil" aufregen aber nicht über Performance.
Und du nennst das kopieren der Datei in den clienten und die zeile anstelle des Textes senden Arbeit?
|
Was programmierst du sonst so? Java?
Sowas zu sagen ist ein Witz.
Ein Switch Statement dass die Werte so setzt wie sie kommen ist einfach nur unnötig.
Und natürlich ist es im Vergleich zu der anderen Version Performancelastig.
Es fällt nur nicht auf weil das Ding nicht bei jedem Frame durchrennt.
Nur weil die Compiler besser werden heißt es nicht dass Programmierer dümmer werden dürfen.
Sowas kommt dann dabei raus:
Und dann ohne default, damit auch SQLInjections direkt möglich sind
|
|
|
|
|
Similar Threads
|
i need multilanguage for m2mnext
06/24/2014 - Metin2 Private Server - 0 Replies
hi guys im a old m2m player m2m is closed magicto master is opened but i didnt like it .iwanna play m2m next but itd hungarian i need multi language or english patch or turkish plesa hp mee
sorry for my bad english
a
|
Interesse an Multilanguage
02/06/2014 - Metin2 Private Server - 1 Replies
Hey Leute,
ich wollte mal Fragen, ob ihr ein beliebig erweiterbares Multilanguagesystem wollt.
Hierbei werden alle Clientside Sachen und Quests in der jeweilige eingestellten Sprache dargestellt.
Das könnte man sogar mit Drops machen.
MfG
|
[B]Bf4 Multilanguage dlc Key [S]Paysafecard
11/25/2013 - Trading - 10 Replies
Hallo Leute,
Biete euch hier einen Bf3 Key an.
Preis ist verhandelbar.
Zahlungsmöglichkeit-
Paysafecard l Paypal.
|
PHP Multilanguage (Cookies)?
06/26/2013 - Web Development - 7 Replies
Also ich habe eine Datei de_language.php und en_language.php beide haben die gleichen Arrays mit anderem Inhalt z.b.:
$lang = array(
'home' => 'Willkommen',
);
$lang = array(
|
[WTB]Metin2 MultiLanguage SF
06/12/2013 - Metin2 Private Server - 1 Replies
Greatings,
So I've 100€, And I want to buy serverfiles of Metin2, fully costumized and With English Quests.
PM me with offers.
|
All times are GMT +2. The time now is 23:56.
|
|