Korean language file

A place to submit .patch fixes for the DOL SVN

Moderator: Developer Team

Re: Korean language file

Postby Leodagan » Sun Nov 30, 2014 8:10 am

There is a lot of code in DOL that needs to translate "sentences" but that lacks a reference to the player receiving the message (mostly Broadcast and other Server-Side Assets...).

When DOL can't get a reference to player and/or player.Language, it use Server Language (it's not automatic, some developers made this choice instead of heavy workarounds to get player targeted language...), I can't help you much around this, even my own updates are not really "Translation" Friendly :s


And Client crack is definitely not a solution :

1st : It goes against the laws protecting copyrighted materials in a lot of Countries

2nd: You'll have to provide this crack to your players depending on the version they're using and it'll get harder to keep up with every new DLL...

There is one thing important in Client->Server softwares, the Server can LIE !

The server can tell the client that character name is "Arthur" when in fact they are named in japanese or korean in Database, then switch back to the real name when it's a "packet" that can handle flawlessly the "korean" name...

I'm still having trouble connecting to your server (I made something wrong in main.dat I think...)

But if you can target what special character is triggering the client "Renaming" you could lightly edit "user-data recorded name" to make it compatible with client when choosing character and switch back to the regular display once in game !

Have you tried to put a "Latin" Character in front of player Name ? Have you tried to use a Byte Order Mark when in Character Screen ? (BOM is a special Unicode character that tells if the text is read from left to right or right to left, example : Arabian languages that are wrote in reverse... for a Latin language user :D)

Is there any "convention" to convert special Asian character to "Latin" character (Like Japanese Romanji if I remember right ?) that could be used only for Character Selection Screen ?

Any work around that allow a players to enter it's char names in it's real natural language and enable server to record it "cleanly" in database, but display it in any way that prevent the renaming window :D (even enforcing display of dumb name : Char 1, Char 2, Char 3, hopping player will recognize them with Class and Equipment !!)
User avatar
Leodagan
Developer
 
Posts: 1350
Joined: Tue May 01, 2012 9:30 am
Location: Lyon

Re: Korean language file

Postby whria78 » Sun Nov 30, 2014 10:11 am

Thanks you !

###
I attached a patch again.
1) install the font gulim.ttc first
2) run daoc.bat . check the ip (ping daoc.dynu.com) if it says serive is not available.
3) use atlantis skin

I hope you can connect to my server. you can see WHRIA server in DAOCPORTAL too.

###
I think it is a very good idea to make server to lie just like below...


player use command : /loginname "LoginName" ( LoginName should be ASCII / dolcharacter SQL column "LoginName")

the server will send "LoginName" when user try to log in. If "LoginName" is not empty , sever send normal character name.
As like "alias" command in linux shell.

I have some experience C++ but it's the first time in C# programming. I will try to make command.

###
This is easier way.
Server just sent another character name just like "SLOT1", "SLOT2" when client requesting.


###
1) I tried to "AAAAA가나다" but it fails.

2) creating character "가나다" -> shun down server -> click client PLAY button -> it still request to RENAME. It still check it is right ASCII and whether it is short or not.
Attachments
patch.zip
(4.72 MiB) Downloaded 8 times
User avatar
whria78
Contributor
 
Posts: 128
Joined: Fri Sep 21, 2007 11:27 pm

Re: Korean language file

Postby Leodagan » Sun Nov 30, 2014 11:15 am

As soon as I enable mbcs=1 in main.dat my client is crashing when entering game...

And I can't get player character selection to display correctly the Special Asian characters... (Even If I used Gulim in every xml you told :D)

mbcs.jpg
mbcs.jpg (83.69 KiB) Viewed 1025 times
User avatar
Leodagan
Developer
 
Posts: 1350
Joined: Tue May 01, 2012 9:30 am
Location: Lyon

Re: Korean language file

Postby whria78 » Sun Nov 30, 2014 2:05 pm

1)
I upload full client
http://whria.net/dark.zip

2)
I have tried to fake the client in the process of character selection. but it have some problem.
I faked it to CHAR0,1,2.... with the code below.

Server regonize the character correctly. if clicked by other player, it say "you exam.... 가나다 is armsman..." correctly.
But Client recognized the character as like "CHAR1".


When I use GM command "/player name <name>", it require to login again for the same issue.
In the server side, the database is changed, but in the client side, it does not be changed if not login again.




CharacterCreateRequestHandler.cs

Code: Select all
            else
            {
               // Graveen: changed the following to allow GMs to have special chars in their names (_,-, etc..)
                   
                    // WHRIA
//                    Regex nameCheck = new Regex("^[A-Z][a-zA-Z]");
                    if (charName.Length < 3)
               {
                  if (client.Account.PrivLevel == 1)
                  {


PacketLib1104.cs

Code: Select all
                            Regex nameCheck = new Regex("^[A-Z][a-zA-Z]");
                            if (nameCheck.IsMatch(c.Name))
                                pak.FillString(c.Name, 24);
                            else
//                                pak.FillString(c.Name, 24);
                                pak.FillString(string.Format("CHAR{0}", i - firstSlot), 24);


CharacterSelectRequestHander.cs

Code: Select all
            if (
               (
                  (client.Player == null && client.Account.Characters != null)
                  || (client.Player != null && client.Player.Name.ToLower() != charName.ToLower())
               ) && client.ClientState == GameClient.eClientState.CharScreen)
            {
               bool charFound = false;

                    // WHRIA
                    if (charName.Substring(0,4)=="CHAR")
                    {
                        int iSelected = Convert.ToInt32(charName.Substring(4,1));
                        if (iSelected < client.Account.Characters.Length)
                        {
                            Regex nameCheck = new Regex("^[A-Z][a-zA-Z]");
                            if (!nameCheck.IsMatch(client.Account.Characters[iSelected].Name)
                                && client.Account.Characters[iSelected] != null)
                            {
                                charFound = true;
                                charName = client.Account.Characters[iSelected].Name;
                                client.LoadPlayer(iSelected);
                            }
                        }
                    }

               for (int i = 0; i < client.Account.Characters.Length; i++)
               {
                  if (client.Account.Characters[i] != null
                      && client.Account.Characters[i].Name == charName)
                  {
                     charFound = true;
                     client.LoadPlayer(i);
                     break;
                  }
               }






PacketLib1104.cs
User avatar
whria78
Contributor
 
Posts: 128
Joined: Fri Sep 21, 2007 11:27 pm

Re: Korean language file

Postby Leodagan » Sun Nov 30, 2014 2:50 pm

You mean that Client "obey" the character name displayed in character selection screen and not the one sent by the server in "Player Update" packet ?

That you always need to login again after any change of name in-game ? (Ok I verified this and you're right...)

Update :

So for now we're stuck with any name the client is able to hand to the server in character selection request...
User avatar
Leodagan
Developer
 
Posts: 1350
Joined: Tue May 01, 2012 9:30 am
Location: Lyon

Re: Korean language file

Postby whria78 » Mon Dec 01, 2014 12:35 am

1)
You can trigger RENAME issue.

Clients also check whether the name is short (<3) , and whether numeric number is included.

Edit your character name to "123" (numeric) or "aa" (short).

It triggers the same problem.



2)

Client may store the character name displayed in character selection screen.

And at some point (maybe character logout. or maybe exit(game.dll) process), server receive the information(CHAR0) again , and save it.( "가나다" --> CHAR0 ) --> That result the character name is changed to "CHAR0"


3)

This is the screenshot I attached before.

It shows,

Server recognize it as "하이"
but client recognize it as "Xt" --> Right bottom.

The same problem occurs in the process of "/player name <name>" .


Untitled-4%20copy.jpg
Untitled-4%20copy.jpg (512.73 KiB) Viewed 1011 times
User avatar
whria78
Contributor
 
Posts: 128
Joined: Fri Sep 21, 2007 11:27 pm

Previous

Return to DOL Code Contributions

Who is online

Users browsing this forum: No registered users and 1 guest