Domanda Un aiuto a tradurre il server

Stato
Discussione chiusa ad ulteriori risposte.

JustARegularGuy

Utente Gold
22 Giugno 2015
636
39
215
314
Ciao a tutti, molti di voi riscontrano la difficoltá di dover tradurre il server ed é una vera e propria rottura di "balls". Siccome peró abbiamo alcuni files sparsi per internet o su client italiani decriptati in genere possiamo fare copia ed incolla della frase ma richiede davvero tanto tempo, senza contare che al giorno d'oggi ogni server lavora a modo suo con i propri e quindi un semplice copia ed incolla del file stesso potrebbe provocare instabilitá del client se stiamo lavorando su quest'ultimo, se invece si tratta del server potrebbe causare anche un crash nello start e quindi peggio ancora! Questa release creata in modalitá fast ha la capacitá di tradurre item_proto client basandosi su un file sql "dump sql" di un item_proto database "Volendo si puó fare anche lo stesso per mob_proto"e di tradurre item_proto database senza fare empty table ma semplicemente facendo il comando REPLACE da query leggendo peró i dati da un'altro file item_proto tradotto. Inoltre il programma riconosce da solo l'indentazione e non la modifica!
Il programma possiamo definirlo in versione Alpha in quanto non ha ne una interfaccia GUI e non é cosi avanzato ma un buon programmatore puó renderla compatibile alle sue esigenze basandosi su questa semplice source.

C#:
using System;
using System.IO;
using System.Linq;
using System.Management; //FreeWar: Implementare da References ----------->
using System.Net;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplicationCSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            //Translate();
            ConvertSQLXML();
        }

        public static byte[] FromHex(string hex)
        {
            hex = hex.Replace(" 0x", "");
            byte[] raw = new byte[hex.Length / 2];
            for (int i = 0; i < raw.Length; i++)
            {
                raw[i] = Convert.ToByte(hex.Substring(i * 2, 2), 16);
            }
            return raw;
        }

        static void ConvertSQLXML()
        {
            string u = File.ReadAllText("inserirepercorso/item_proto.sql");
            string[] us = u.Split(new char[] { '\r', '\t', '\n', ',', '(' });
            us = us.Where(x => !string.IsNullOrEmpty(x)).ToArray();
            string du = File.ReadAllText("inserirepercorso/item_proto.xml");
            string[] dus = du.Split(new char[] { '\r', '\t', '\n', ',', '(' });
            dus = dus.Where(x => !string.IsNullOrEmpty(x)).ToArray();
            string vaicolliscio = null;
            for (int i = 0; i < us.Length; i++)
            {
                if (us[i].ToLower().Contains("INSERT INTO".ToLower()))
                {
                   string name = Encoding.ASCII.GetString(FromHex(us[i+3]));
                    for(int a = 1; a < dus.Length; a++)
                    {
                        string input = dus[a];
                        string usa = null;
                        string[] tip = input.Split(new char[] { '\"' });
                        try
                        {
                            if (us[i + 1] == tip[1])
                            {
                                usa = tip[5];
                                string[] medusa = Regex.Split(dus[a], @"(\"+'"'+")");//Regex.Replace(dus[a], usa, name);
                                medusa[10] = name;
                                dus[a] = String.Join("", medusa);
                                break;
                            }
                        }
                        catch { }             
                    }
                }
            }
            File.WriteAllLines("inserirepercorso/item_protoa.xml", dus);
        }

        static void Translate()
        {
            string u = File.ReadAllText("inserirepercorso/item_proto.sql");
            string[] us = u.Split(new char[] { '\r', '\t', '\n', ',', '(' });
            us = us.Where(x => !string.IsNullOrEmpty(x)).ToArray();
            string vaicolliscio = null;
            for (int i = 0; i < us.Length; i++)
            {
                if(us[i].ToLower().Contains("INSERT INTO".ToLower()))
                {
                    vaicolliscio = vaicolliscio + "\r\n" + "UPDATE item_proto SET locale_name=" + us[i + 4] + " WHERE vnum=" + us[i + 1] +";";
                }
            }
            File.WriteAllText("inserirepercorso/item_protos.sql", vaicolliscio);
        }
    }
}
Per compilare quanto scritto avete bisogno di un compilatore del linguaggio C#
Spero venga apprezzato o anche giudicato con il giusto linguaggio "non scurrile".

Cercheró di tenere aggiornata questa release magari con features in piú, Buon lavoro!
 
  • Mi piace
Reazioni: Hik
Basta una query non un programma intero per tradurre item proto e mob proto.........
Ti carichi item proto italiano (che puoi prendere pure dal client di metin ita) e item proto che vuoi tradurre.
SQL:
UPDATE item_proto, item_proto_ITA
SET item_proto.locale_name = item_proto_ITA.locale_name
WHERE item_proto.vnum = item_proto_ITA.vnum;
Tanto facile, non vedo perchè imputtanarsi come hai fatto tu....
 
Basta una query non un programma intero per tradurre item proto e mob proto.........
Ti carichi item proto italiano (che puoi prendere pure dal client di metin ita) e item proto che vuoi tradurre.
SQL:
UPDATE item_proto, item_proto_ITA
SET item_proto.locale_name = item_proto_ITA.locale_name
WHERE item_proto.vnum = item_proto_ITA.vnum;
Tanto facile, non vedo perchè imputtanarsi come hai fatto tu....
Effettivamente Si! Però a dir il vero non ci avevo pensato. Grazie!

FreeWar Developer
 
Stato
Discussione chiusa ad ulteriori risposte.