[TuT] Traducción mob_proto y el Item_proto

Topic created · 10 Mensajes · 3906 Visitas
  • Puesto que mucha gente se ha dedicado a traducir el mob_proto y el item_proto valor por valor tardando siglos y posteando versiones incompletas, os traigo de mi mano la forma más real de hacerlo. Convirtiendo los mob_proto e Item_proto en tablas SQL. Sí, se que aveces esta opción puede dar errores con los valores reales de una arma por ejemplo, o que falten armas armaduras objetos... por eso mismo hice este tutorial, traduciremos desde una tabla auxiliar la tabla real.

    ¿Como lo hacemos?

    Yo ya pasé los xml a sql, así pues dejaré un backup de mi tabla, de tal forma que solo tendrán que seguir este sencillo tutorial.

    Empezamos con el más importante: Item_proto


    Paso 1.-
    Creamos la tabla item_translating

    [php]CREATE TABLE `item_translating` (
    `vnum` int(11) unsigned NOT NULL default '0',
    `name` varbinary(24) NOT NULL default 'Noname ',
    `locale_name` varbinary(24) NOT NULL default 'Noname',
    `type` tinyint(2) NOT NULL default '0',
    `subtype` tinyint(2) NOT NULL default '0',
    `weight` tinyint(3) default '0',
    `size` tinyint(3) default '0',
    `antiflag` int(11) default '0',
    `flag` int(11) default '0',
    `wearflag` int(11) default '0',
    `immuneflag` set('PARA','CURSE','STUN','SLEEP','SLOW','POISON','TERROR') NOT NULL default '',
    `gold` int(11) default '0',
    `shop_buy_price` int(10) unsigned NOT NULL default '0',
    `refined_vnum` int(10) unsigned NOT NULL default '0',
    `refine_set` smallint(11) unsigned NOT NULL default '0',
    `refine_set2` smallint(5) unsigned NOT NULL default '0',
    `magic_pct` tinyint(4) NOT NULL default '0',
    `limittype0` tinyint(4) default '0',
    `limitvalue0` int(11) default '0',
    `limittype1` tinyint(4) default '0',
    `limitvalue1` int(11) default '0',
    `applytype0` tinyint(4) default '0',
    `applyvalue0` int(11) default '0',
    `applytype1` tinyint(4) default '0',
    `applyvalue1` int(11) default '0',
    `applytype2` tinyint(4) default '0',
    `applyvalue2` int(11) default '0',
    `value0` int(11) default '0',
    `value1` int(11) default '0',
    `value2` int(11) default '0',
    `value3` int(11) default '0',
    `value4` int(11) default '0',
    `value5` int(11) default '0',
    `socket0` tinyint(4) default '-1',
    `socket1` tinyint(4) default '-1',
    `socket2` tinyint(4) default '-1',
    `socket3` tinyint(4) default '-1',
    `socket4` tinyint(4) default '-1',
    `socket5` tinyint(4) default '-1',
    `specular` tinyint(4) NOT NULL default '0',
    `socket_pct` tinyint(4) NOT NULL default '0',
    `addon_type` smallint(6) NOT NULL default '0',
    PRIMARY KEY (`vnum`)
    ) ENGINE=MyISAM DEFAULT CHARSET=big5;
    [/php]

    Paso 2.- En caso de estar en Navicat, clicamos encima de la tabla recientemente creada y vamos a Design Table, una vez hecho eso, procederemos a ir a "Triggers" Y crearemos un trigger Before Insert (El nombre pueden poner el que quieran)

    Crear trigger before insert en la tabla recientemente creada con el siguiente código
    [php]
    UPDATE player.item_proto set locale_name=new.locale_name WHERE vnum=new.vnum;[/php]

    Una vez hecho esto, solamente tendrán que ejecutar todas las querys que conforman mi tabla SQL
    (Archivo Adjunto)

    Una vez hecho esto, la tabla Item_proto estará 100% traducida, por lo tanto todos los items que cojan del suelo ya tendrán nombre, incluso los items de mejora... TODO 100%

    Traducir mob_proto

    Traducir el mob_proto puede ser útil sobretodo para cuando procedemos a modificar un mob o lo queremos localizar en la base de datos encontrarlo con rapidez, para este tutorial seguiremos el mismo esquema que el anterior.

    1.- Creamos una tabla para traducir el mob_proto


    [php]
    CREATE TABLE `mob_translating` (
    `vnum` int(11) NOT NULL default '0',
    `name` varchar(24) NOT NULL default 'Noname',
    `locale_name` varbinary(24) NOT NULL default 'Noname',
    `rank` tinyint(2) NOT NULL default '0',
    `type` tinyint(2) NOT NULL default '0',
    `battle_type` tinyint(1) NOT NULL default '0',
    `level` smallint(3) NOT NULL default '1',
    `size` enum('SMALL','MEDIUM','BIG') NOT NULL default 'SMALL',
    `ai_flag` set('AGGR','NOMOVE','COWARD','NOATTSHINSU','NOATTCHUNJO','NOATTJINNO','ATTMOB','BERSERK','STONESKIN','GODSPEED','DEATHBLOW','REVIVE') default NULL,
    `mount_capacity` tinyint(2) NOT NULL default '0',
    `setRaceFlag` set('ANIMAL','UNDEAD','DEVIL','HUMAN','ORC','MILGYO','INSECT','FIRE','ICE','DESERT') NOT NULL default '',
    `setImmuneFlag` set('STUN','SLOW','FALL','CURSE','POISON','TERROR') NOT NULL default '',
    `empire` tinyint(4) NOT NULL default '0',
    `folder` varchar(100) NOT NULL default '',
    `on_click` tinyint(4) NOT NULL default '0',
    `st` smallint(5) unsigned NOT NULL default '0',
    `dx` smallint(5) unsigned NOT NULL default '0',
    `ht` smallint(5) unsigned NOT NULL default '0',
    `iq` smallint(5) unsigned NOT NULL default '0',
    `damage_min` smallint(5) unsigned NOT NULL default '0',
    `damage_max` smallint(5) unsigned NOT NULL default '0',
    `max_hp` int(10) unsigned NOT NULL default '0',
    `regen_cycle` tinyint(3) unsigned NOT NULL default '0',
    `regen_percent` tinyint(3) unsigned NOT NULL default '0',
    `gold_min` int(11) NOT NULL default '0',
    `gold_max` int(11) NOT NULL default '0',
    `exp` int(10) unsigned NOT NULL default '0',
    `def` smallint(5) unsigned NOT NULL default '0',
    `attack_speed` smallint(6) unsigned NOT NULL default '100',
    `move_speed` smallint(6) unsigned NOT NULL default '100',
    `aggressive_hp_pct` tinyint(3) unsigned NOT NULL default '0',
    `aggressive_sight` smallint(10) unsigned NOT NULL default '0',
    `attack_range` smallint(5) unsigned NOT NULL default '0',
    `drop_item` int(10) unsigned NOT NULL default '0',
    `resurrection_vnum` int(10) unsigned NOT NULL default '0',
    `enchant_curse` tinyint(4) unsigned NOT NULL default '0',
    `enchant_slow` tinyint(4) unsigned NOT NULL default '0',
    `enchant_poison` tinyint(4) unsigned NOT NULL default '0',
    `enchant_stun` tinyint(3) unsigned NOT NULL default '0',
    `enchant_critical` tinyint(3) unsigned NOT NULL default '0',
    `enchant_penetrate` tinyint(3) unsigned NOT NULL default '0',
    `resist_sword` tinyint(4) NOT NULL default '0',
    `resist_twohand` tinyint(4) NOT NULL default '0',
    `resist_dagger` tinyint(4) NOT NULL default '0',
    `resist_bell` tinyint(4) NOT NULL default '0',
    `resist_fan` tinyint(4) NOT NULL default '0',
    `resist_bow` tinyint(4) NOT NULL default '0',
    `resist_fire` tinyint(4) NOT NULL default '0',
    `resist_elect` tinyint(4) NOT NULL default '0',
    `resist_magic` tinyint(4) NOT NULL default '0',
    `resist_wind` tinyint(4) NOT NULL default '0',
    `resist_poison` tinyint(4) NOT NULL default '0',
    `dam_multiply` float default NULL,
    `summon` int(11) default NULL,
    `drain_sp` int(11) default NULL,
    `mob_color` int(10) unsigned default NULL,
    `polymorph_item` int(10) unsigned NOT NULL default '0',
    `skill_level0` tinyint(3) unsigned default NULL,
    `skill_vnum0` int(10) unsigned default NULL,
    `skill_level1` tinyint(3) unsigned default NULL,
    `skill_vnum1` int(10) unsigned default NULL,
    `sp_berserk` tinyint(4) NOT NULL default '0',
    `sp_stoneskin` tinyint(4) NOT NULL default '0',
    `sp_godspeed` tinyint(4) NOT NULL default '0',
    `sp_deathblow` tinyint(4) NOT NULL default '0',
    `sp_revive` tinyint(4) NOT NULL default '0',
    `skill_level2` tinyint(3) unsigned default NULL,
    `skill_vnum2` int(10) unsigned default NULL,
    `skill_level3` tinyint(3) unsigned default NULL,
    `skill_vnum3` int(10) unsigned default NULL,
    `skill_level4` tinyint(3) unsigned default NULL,
    `skill_vnum4` int(10) unsigned default NULL,
    PRIMARY KEY (`vnum`)
    ) ENGINE=MyISAM DEFAULT CHARSET=big5;[/php]

    De la misma forma que anteriormente, creamos un trigger before insert con el siguiente código:

    [php]UPDATE player.mob_proto set locale_name=new.locale_name where vnum=new.vnum;[/php]

    Una vez hecho esto, solamente tendremos que insertar todos los valores en la tabla creada
    (documento adjunto)

    Una vez ejecutada la query, ya tendrán todo el mob_proto 100% traducido con los nombres ORIGINALES del .es

    Ante la imposibilidad de subir archivos (El foro no me deja) voy a subirlo a mediafire, así si alguien puede subirlo al foro que lo haga plis xD

    Mob_translating:
    http://www.mediafire.com/?3y3fx80a1ub4mi8
    Item_translating
    http://www.mediafire.com/?o7niba72n6noc3d

    *SI LA TABLA NO ES locale_name SINO gb2312name

    En vez de:

    UPDATE player.item_proto set locale_name=new.locale_name WHERE vnum=new.vnum;

    Usáis esto:

    UPDATE player.item_proto set gb2312name=new.locale_name WHERE vnum=new.vnum;

  • que chuli piruli XD, y[/php]o no le puedo dar ninguna utilidad, za que mis files estan en aleman, y entiendo ambos idiomas, pero a mas de uno le ayudará ^^

  • Kompulsor eres alemán no¿? xD me doy cuenta ya que pusiste "za" envez de "ya" eso significa que tienes configurado el teclado alemán xDDDD bueno, pues a más de uno seguro que le servirá ^^

  • @'SkyLighT' said:

    Kompulsor eres alemán no¿? xD me doy cuenta ya que pusiste "za" envez de "ya" eso significa que tienes configurado el teclado alemán xDDDD bueno, pues a más de uno seguro que le servirá ^^

    XDDD sii, vivo en alemania, en verdad escribi ahí Z porque el teclado se me puso en ingles, y la Y en el ingles esta en el mismo sitio que en el teclado espanyol, peeero en el alemán la Y está en la Z del espanyol xD

    pero.... no tengo "enye"
    da = > .< para eso tengo esto ßßßäöö jajaaj

  • la verdad me pierdo en la parte del paso 2 xD podrías explicarlo mejor o seria muchísimo mejor un vídeo :wiii:

    PD: mi tabla no dice locale_name sino gb2312name tube que cambiar:

    UPDATE player.item_proto set locale_name=new.locale_name WHERE vnum=new.vnum;

    por esta:

    UPDATE player.item_proto set gb2312name=new.gb2312name WHERE vnum=new.vnum;

    y diseñar la tabla ya creada item_translating solo cambiarle el nombre a locale_name por gb2312name asi me funciono :wiii: y me funciono a la perfección pense que nunca podria traducirla _xD_

  • Encerio? Me pase 5 horas editando "solo el item_proto" linea por linea al pedo :|||:
    :yuno:

    Pero buen aporte gracias :wiii:

  • al xile no me llevo mucho encontrar mi fallo pero recordé que mi tabla era diferente a las demás asi que ahi esta mi mini guía para los que les falla xDD

    aca les dejo una imagen de prueba que me funciono :trollface:

    al xile ignoren lo aleman _xD_ es que aun no he traducido 100% el servidor me da errores :fffuuu: pero por lo menos las tablas estan 100% español :yao:

  • @'xminatox' said:

    la verdad me pierdo en la parte del paso 2 xD podrías explicarlo mejor o seria muchísimo mejor un vídeo :wiii:

    PD: mi tabla no dice locale_name sino gb2312name tube que cambiar:

    UPDATE player.item_proto set locale_name=new.locale_name WHERE vnum=new.vnum;

    por esta:

    UPDATE player.item_proto set gb2312name=new.gb2312name WHERE vnum=new.vnum;

    y diseñar la tabla ya creada item_translating solo cambiarle el nombre a locale_name por gb2312name asi me funciono :wiii: y me funciono a la perfección pense que nunca podria traducirla _xD_

    Lo he añadido arriba por si alguien tiene la misma duda xddd

  • NO ME FUNCIONA :S NO HAY VIDEO O ALGO?

  • Alguien podria hacer un video o algo porque me pierdo en todo aajajaja xD se los agradeceria mucho