Aller au contenu

Nouveau membre ?! Pense à te présenter pour accéder au contenu du forum !

New member ?! Introduce yourself to get access to the forum !

FrancH

 tutoriel / partage [2013] Revenir à l'ancien système item_proto & mob_proto

Messages recommandés

Bonsoir,

 je fais un post pour expliquer comment utiliser la lib proposée par iMer, permettant de supprimer le système avec les fichiers item_proto.txt et mob_proto.txt présent sur les nouveaux files 2013 et de retrouver l'ancien système où on n'avait qu'à se soucier des tables item_proto et mob_proto. A l'issu du petit tutoriel, vous n'aurez plus besoin des fichiers .txt .

 Ce post est à destination des personnes ne voulant pas utiliser le système des fichiers item_proto.txt, ... présent dans le répertoire /db pour la version du core db 33820 mais revenir à l'ancien système utilisant les tables item_proto côté base de donnée. Certaines personnes préfèrent le nouveau système, d'autres l'ancien système. La philosophie du post est donc juste de montrer aux personnes le souhaitant, comment revenir à l'ancien système.

Tout d'abord, téléchargez les lib nécessaires :

libstdc++.so.6

Téléchargement

Vous avez déjà cette lib sur votre ftp dans usr/lib ( FreeBSD 32 bits) ou usr/lib32 (FreeBSD 64 bits) selon la version de FreeBSD que vous utilisez. Il vous suffit donc la remplacer par la version présente ici en téléchargement.

libdb_notxt.so

Téléchargement

C'est la lib qui permet d'interpréter vos tables SQL à la place des fichiers txt. Vous pouvez la placer où vous voulez, dans le répertoire /share par exemple ça sera très bien. Je vous ai mis en upload la dernière version disponible, normalement exempte des bugs des premières versions.

Bien maintenant vous avez remplacé une lib existante et placé une seconde sur votre ftp. Rendez-vous maintenant dans votre script de démarrage du serveur (nommé start.sh si vous ne l'avez pas modifié). On va modifier l'exécution du core db pour qu'il prenne en compte libdb_notxt.so. Pour cela il suffit de remplacer la ligne concernée :

cd ./db/ ./db &

Par

cd ./db && env LD_PRELOAD=/usr/home/metin2/share/libdb_notxt.so ./db &

À noter que selon la version de FreeBSD que vous possédez, cela peut être LD_PRELOAD (FreeBSD 32 bits) ou LD_32_PRELOAD (FreeBSD 64 bits) que vous devez utilisez dans la ligne ci-dessus.

 À noter aussi que cette ligne est présente plusieurs fois dans votre script (car plusieurs options possibles lors du lancement du serveur) donc pensez bien à remplacer les différentes occurrences.

 Et à noter enfin que le chemin que j'ai mis est celui où est placé la lib libdb_notxt.so, peut-être que sur votre serveur ce n'est pas le même chemin selon où vous avez voulu la placer donc modifiez cela en conséquence !

 Si vous rencontrez des soucis, veuillez utiliser le script que je propose à la fin du tuto, en vérifiant bien le chemin de la lib

Il reste maintenant à régler le problème de la compatibilité des tables item_proto et mob_proto car on a enlevé certaines colonnes de ces tables dans nos files, mais la lib de iMer fonctionne pour des tables item_proto et mob_proto non retouchées. Voici donc les tables item_proto et mob_proto adaptées aux files EB 2013 (j'ai ajouté que les colonnes nécessaires pour que la lib de iMer fonctionne et les tables contiennent déjà tous les objets et mobs des files EB 2013) :

 item_proto

 mob_proto

 Si jamais pour une raison X ou Y vous voulez la structure originale des tables files 2013 (par exemple parce que vous utilisez un tool ou convertisseur particulier, ...), les voilà :

 item_proto 2013 original

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for item_proto
-- ----------------------------
CREATE TABLE `item_proto` (
 `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=latin1;

mob_proto 2013 original

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for mob_proto
-- ----------------------------
CREATE TABLE `mob_proto` (
 `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,
 `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,
 `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',
 PRIMARY KEY (`vnum`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Remarque: N'oubliez pas de mettre des priorités suffisantes sur les libs !

 Je re-précise que je ne suis pas à l'origine de la lib, l'auteur est iMer donc merci à lui pour ce partage fort utile si vous êtes réfractaire au nouveau système.

 J'espère n'avoir rien oublié, si c'est le cas dites le moi. Après avoir appliqué ces modifications, les fichiers .txt dans le répertoire /db sont maintenant inutiles, vous pouvez les supprimer (à condition que vous ne lanciez jamais le core db sans précharger la lib avant, cf le script start.sh !).

 Source: EB & EPVP

 Pour toutes questions, rendez-vous dans la catégorie Aide/Questions/Support

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci! :) 

Partager ce message


Lien à poster
Partager sur d’autres sites

merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Lets try

 

Partager ce message


Lien à poster
Partager sur d’autres sites

×

Information importante

By using this site, you agree to our Conditions d’utilisation.