1. #11
    You want to edit localization files in GameData/Localization folder for text, ZenityAlpha posted a tutorial how the format works in one of the forum posts, I forget which one.
    Share this post

  2. #12
    Originally Posted by dale533 Go to original post
    There is editable text in the XML files in the Gamedata folder -- but I have no real idea if the game uses those files when it plays or if they are just there for your information. I would suspect that is *NOT* where the card info for the live game is kept, or else it would be too easy to cheat.
    I have attempted to edit these text, but nothing happened in these cards, Thanks

    Originally Posted by Duckbat Go to original post
    You want to edit localization files in GameData/Localization folder for text, ZenityAlpha posted a tutorial how the format works in one of the forum posts, I forget which one.
    Yes, I have noticed these files JUST before reading your post, they are huge, I will look for the post you are talking about
    Thank you
    Share this post

  3. #13
    I just edited the English file, apparently, even changing one character, makes everything becomes garbage

    I couldn't find that post by ZenityAlpha either
    Share this post

  4. #14
    ZenityAlpha's Avatar Member
    Join Date
    Jul 2013
    Location
    București, România
    Posts
    99
    Hi and sorry for the late reply!
    Ok i made a bof converter you can use it to edit the bof files that hold all the localization data for each language, the idea is to convert the bof file to a text file, edit it and then convert it back to bof. This is just a prototype and didn't test it very much, I made it so I could translate the game into my native language, i plan to add a more polished version when i update my modding tool ( hopefully soon ). To change the card stats you should edit the xml files in GameData of course all modifications are client side only (meaning only you can see them). Good luck!



    How To Use
    Copy to `\GameData\Localization` and drag any `*.bof` file over the exe to convert it to a text file, or drag any `*.txt` file over the exe to convert it to bof. Alternatively if you don't like dragging you can start a command prompt and pass the files as arguments ( ex: bof.exe English.bof to convert it to text and bof.exe English.txt to convert to bof again)



    Download
    LINK - 1
    Or if you want to compile it yourself go to compileonline.com copy/paste the code in there click Compile & Execute wait until it compiles (yes it will show errors but it's fine) then click Download Files


    Source Code (C# - released under MIT license)
    PHP Code:
    /*
    Author: Zenity
    Name: MMDoC - BOF Converter
    Date: 15 oct. 2013
    License: MIT(http://en.wikipedia.org/wiki/MIT_License)

    Copyright (c) 2013 Zenity

    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in
    all copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    THE SOFTWARE.
    */

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;

    class 
    Program
    {
            
            private static 
    string Delimiter "\r\n------\r\n";
            private static 
    char[] UnwantedChars = new char[] {'\r''\n''\0'};
            
            private static 
    void WriteCenteredText(string text)
            {
                
    Console.Write("{0} {1} {0} ", new String('\0', (Console.BufferWidth text.Length)/1), text);
            }
            
            private static 
    void FillLine(char ch='\0')
            {
                
    Console.Write("{0}", new String(chConsole.BufferWidth));
            }
            
            
            public static 
    void Main(string[] args)
            {
                
    Console.Title "BOF Converter ";
                
    Console.BackgroundColor ConsoleColor.White;
                
    Console.ForegroundColor ConsoleColor.Black;
                
    FillLine();
                
    WriteCenteredText("This application is highly experimental");
                
    WriteCenteredText("It might or might not work so use with caution!");
                
    FillLine();
                
    Console.BackgroundColor ConsoleColor.DarkGray;
                
    Console.ForegroundColor ConsoleColor.White;
                
    WriteCenteredText("ver 1.0   |   coded by Zenity");
                
    Console.ResetColor();
                
    Console.WriteLine("\r\n");
                if(
    args != null && args.Length >= 1)
                {
                    if(
    File.Exists(args[0]))
                    {
                        switch(
    Path.GetExtension(args[0]))
                        {
                            case 
    ".bof":
                                {
                                    
    //convert bof to txt
                                    
    byte[] buffer File.ReadAllBytes(args[0]);
                                    if(
    buffer.Length && BitConverter.ToInt32(buffer0) == 2)
                                    {
                                        
    int length BitConverter.ToInt32(buffer8) * 2;
                                        if(
    length buffer.Length)
                                        {
                                            
    byte[] bofdata = new byte[length];
                                            
    Buffer.BlockCopy(buffer,0xC,bofdata,0,length);//copy only the first data field that contains all the string data
                                            
    buffer null//hint to GC to dispose of this data buffer
                                            
    string stringdata String.Join(DelimiterEncoding.Unicode.GetString(bofdata).Split(new char[] {'\0'}));
                                            
    string txtfile Path.Combine(Path.GetDirectoryName(args[0]), Path.GetFileNameWithoutExtension(args[0])+".txt");
                                            
    File.WriteAllText(txtfilestringdataEncoding.UTF8);
                                            
    Console.WriteLine("Conversion bof -> txt done!\r\nBof file dumped to `{0}`"txtfile);
                                            
    Console.WriteLine("\r\n\r\nTips:\r\n\tdo not delete the separator string (------)");
                                            
    Console.WriteLine("\tonly modify the fields that hold meaningfull information");
                                            
    Console.WriteLine("\tencoding is UTF8, do not change it!");
                                            
    Console.WriteLine("\talways backup the original file");
                                            
    Console.WriteLine("\tif you see alot of `??` ingame then something went wrong\r\n");
                                            break;
                                        }
                                    }
                                    
    Console.WriteLine("Error: `{0}` is not a valid `*.bof` file!"args[0]);
                                }
                                break;
                                
                            case 
    ".txt":
                                {
                                    
    //convert txt to bof
                                    
    List<bytebuffer = new List<byte>(2097152); //reserve 2MB
                                    
    string[] lines File.ReadAllText(args[0],Encoding.UTF8).Split(new string[] {Delimiter}, StringSplitOptions.RemoveEmptyEntries);
                                    
    string boffile =  Path.Combine(Path.GetDirectoryName(args[0]), Path.GetFileNameWithoutExtension(args[0])+".bof");
                                    if(
    File.Exists(boffile))
                                    {
                                        for(
    int i=0i<lines.Length; ++i)
                                        {
                                            
    string line lines[i].Trim(UnwantedChars);
                                            if(
    line != string.Empty)
                                            {
                                                
    byte[] data Encoding.Unicode.GetBytes(String.Format("{0}\0",line));
                                                
    buffer.AddRange(data);
                                            }
                                        }
                                        
    byte[] odata File.ReadAllBytes(boffile);
                                        
    int olength BitConverter.ToInt32(odata8) * 2;
                                        
    string modifbof Path.Combine(Path.GetDirectoryName(args[0]), Path.GetFileNameWithoutExtension(args[0])+"_modif.bof");
                                        
    using (FileStream fs File.Open(modifbofFileMode.Create,FileAccess.Write))
                                        {
                                            
    byte[] data buffer.ToArray();
                                            
    fs.Write(odata,0,8);
                                            
    fs.Write(BitConverter.GetBytes(data.Length/2),0,4);
                                            
    fs.Write(data,0,data.Length);
                                            
    fs.Write(odataolength 0xCodata.Length olength 0xC);
                                        }
                                        
    Console.WriteLine("Conversion txt -> bof done!\r\nBof saved as `{0}`\r\n"modifbof);
                                    } else  
    Console.WriteLine("Error: Expected to find `{0}`!"boffile);
                                    
                                }
                                break;
                                
                            default:
                                
    Console.WriteLine("Error: Unknown file `{0}`\r\nPlease use a `*.bof` or a `*.txt` file"args[0]);
                                break;
                        }
                    } else 
    Console.WriteLine("Error: File `{0}` not found!"args[0]);
                } else 
    Console.WriteLine("Error: No arguments specified!");
                
    Console.ForegroundColor ConsoleColor.DarkGray;
                
    Console.Write("Press any key to EXIT . . . ");
                
    Console.ReadKey(true);
                
    Console.ResetColor();
            }

    Share this post

  5. #15
    Thank you very much for your effort, extremely appreciated

    Going to try
    Share this post

  6. #16
    Just tried editing a card title, and also changed "Sweep Attack" to its translation, both disappeared from cards, I could only see the comma (,) in the title, and the plase of sweep attack is empty, nothing there.
    The language I am trying to use is Arabic, it seems that the game doesn't support Arabic
    Share this post

  7. #17
    ZenityAlpha's Avatar Member
    Join Date
    Jul 2013
    Location
    București, România
    Posts
    99
    Originally Posted by augustX18 Go to original post
    Just tried editing a card title, and also changed "Sweep Attack" to its translation, both disappeared from cards, I could only see the comma (,) in the title, and the plase of sweep attack is empty, nothing there.
    The language I am trying to use is Arabic, it seems that the game doesn't support Arabic
    Yes the in game fonts do not have Arabic glyphs so they cannot display Arab letters they only support latin, greek and cyrillic. Even latin is not complete in my case for example i cannot get the letter 'ț' to show but 'ș', 'î', 'â', 'ă' work fine but i can get away by replacing 'ț' with 't' so it's ok. Adding more glyphs to the fonts is possible i believe but unfortunately i do not understand the complete structure for the fonts files yet
    Share this post

  8. #18
    Thanks anyway, really appreciated your help.
    Once you figure out how to use customized fonts, please let me know

    Regards
    Share this post

  9. #19
    Does this file also support korean languages?
    Share this post

  10. #20
    ZenityAlpha's Avatar Member
    Join Date
    Jul 2013
    Location
    București, România
    Posts
    99
    Originally Posted by akim0001 Go to original post
    Does this file also support korean languages?
    Last time i checked the game font texture didn't have any Hangul glyphs but there is a Korean.bof file in GameData\Localization so eventually they will add support for korean i believe
    Share this post