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;