+ Répondre au sujet
Page 1 sur 2 1 2 DernièreDernière
Affiche les résultats de 1 à 10 sur 20

Sujet : Mod pour phpbb3

  1. #1
    Marcheur des terres des Ombres
    Inscrit
    janvier 2011
    Messages
    39

    Par défaut Mod pour phpbb3

    Bonjour à tous,

    j'ai monté un petit forum phpbb3 pour notre guilde et je voulais y ajouter un mod qui afficherait les caractéristiques d'un objet (arme, compo, objet de quête, ...) en tooltip lorsqu'on survol son nom avec la souris.
    N'en ayant pas trouvé, j'ai décidé de coder le mien et de vous le faire partager.

    Ça demande un peu de bidouille, mais si vous ne paniquez pas et que vous respectez les étapes qui suivent, tout devrait bien se passer.

    Présentation du mod
    Après l'installation du mod, vous pourrez insérer une balise BBCode [item][/item] et [recette][/recette] dans vos messages.
    Quand un utilisateur lis le forum et passe la souris sur le nom de l'objet, une info-bulle va venir au 1er plan et afficher ces caractéristiques.
    Des exemples sont disponible en image dans mon répertoire google doc ou directement sur mon forum.
    N'ayez pas peur de perdre des données, mon mode ne trafique pas les tables existantes, il va simplement intercepter la balise au niveau du code php et modifier l'affichage du forum.
    Par contre avant de modifier les fichiers du forum (voir plus bas), pensez à les sauvegarder, au cas où.

    1) Prérequis
    - Un forum phpbb3
    - Qui tourne sous easyphp + mysql (je n'ai pas testé ailleurs)
    - Accès à la base de données en admin
    - Accès aux fichier de config du forum
    - Avoir une jvm installée sur votre machine

    2) Installation
    2.1) Téléchargement de mes fichiers
    Allez télécharger le zip le plus récent (en ce moment riftPhpbbModFiles_0.4.zip, compatible avec les données du 15 août 2011) qui contient tout les fichiers nécessaires ici et dézippez-le.
    2.2) Téléchargement du fichier d'objets de Rift
    Trion met régulièrement à jour les fichiers qui décrivent le contenu du jeu sur leur ftp.
    Téléchargez donc le zip nommé Rift_Discoveries_[DATE].zip ici et dézippez-le.
    Notez qu'il pèse plus de 350 Mo.
    2.3 Création des tables dans la bdd
    Connectez-vous sur votre base de donnée et importez les fichiers sql/createItem.sql et sql/createRecipe.sql
    2.4) Parsing du fichier xml
    Ouvrez une invit de commande, pointez sur le dossier qui contient le fichier .jar ainsi que Items.xml et executez la commande suivante
    Code:
    java -jar riftParsing0.4.jar -c -i Items.xml -r Recipes.xml
    Ceci va prendre un moment (environ 2 minutes) et à la fin vous devriez trouver deux fichiers nommés insertItem.sql et insertRecipe.sql
    2.5) Insertion des données dans la bdd
    Dans votre base sql, importez les fichiers insertItem.sql et insertRecipe.sql
    Le 1er fait dans les 25 Mo, donc ici encore patientez 3-4 bonnes minutes.
    Après l'insertion, votre base devrait s'être alourdie d'environ 15 Mo.
    Si vous avez des messages d'erreur, reportez-vous aux 2 points suivant, sinon passez directement à la modification de phpbb3
    2.6) Création et upload des icônes
    Téléchargez le fichier rift_item_icons.zip depuis ici, et décompressez-le.
    Les icônes sont en .dds, il faudra donc les convertir en png et pour ça je vous propose ce soft Image Converter Plus
    L'utilisation est assez intuitive, je pense que vous pourrez vous passer d'un tuto ^^
    Mettez tout les icônes dans [Racine_phpbb]\images\item_icons
    EDIT : Depuis une MAJ récente (août 2011) certaines image de rune comportent une lettre majuscule alors que dans le fichier xml elles sont renseignée uniquement en minuscule. Ça ne pose pas de problème sous windows, mais avec un système Linux l'image ne sera pas trouvée.
    Pour palier à ça, lancez l'autre programme java riftItemIcon.jar
    Code:
    java -jar riftItemIcon0.1.jar DIR
    DIR est le répertoir contenant tout les fichiers d'images
    2.7) Configuration de mysql
    Ouvrez le fichier de configuration de mysql dans [Racine_Easy_PHP]\conf_files\my.ini et modifiez la valeur suivante :
    • max_allowed_packet = 100M
    (J'ai pris de la marge, mais vous pouvez mettre 25 Mo si vous voulez)
    2.8) Configuration de php
    Ouvrez le fichier de configuration de php dans [Racine_Easy_PHP]\conf_files\php.ini et modifiez les 2 valeurs suivantes :
    • post_max_size = 100M
    • upload_max_filesize = 100M
    • default_socket_timeout = 600
    (Pareil ici)

  2. #2
    Marcheur des terres des Ombres
    Inscrit
    janvier 2011
    Messages
    39

    Par défaut

    2.9) Modification de phpbb3
    Il y a 1 fichier a ajouter et 2 à modifier.

    Tout d'abord allez coller le fichier functions_rift.php dans [Racine_phpbb3]\includes

    Ensuite ouvrez le fichier [Racine_phpbb3]\styles\[Votre_template_actif]\template\overall_header.html
    A l'intérieur de la balise <head> (par exemple juste avant la balise <script>, collez le code suivant
    Code:
    <!-- RiftMod par Pumbaa - début -->
    <style type="text/css" media="all">
    .infobulle
    {
        position :            absolute;    
        visibility :        hidden;
        border :            0px solid Black;
        padding :            10px;
        font-family :        Verdana, Arial;
        font-size :            10px;
    }
    
    .riftTable
    {
        border :            3px solid Black;
        border-collapse :    collapse;
        padding :            0px;
        background-color :    #000000;
    }
    
    .riftTd
    {
        border :            0px solid Black;
        height :            10px;
        padding :            0px;
        vertical-align :    middle;
        text-align :        left;
        color :                #FFFFFF;
    }
    
    </style>
    <!-- RiftMod par Pumbaa - fin -->
    Ce code configure une partie du style d'affichage de l'info-bulle, si vous voulez faire des ajustement, c'est ici.

    Toujours dans ce fichier, insérez le code suivant à l'interieur de la balise script
    Code:
    <!-- RiftMod par Pumbaa - début -->
        <!--
        var visible=false; // La variable i nous dit si la bulle est visible ou non
        var pined=false; // Fige la bulle si on clique sur le lien
        var recipeFocus=false;
    
        function GetId(id)
        {
            return document.getElementById(id);
        }
        
        function move(e)
        {
            var divWrapper = GetId("wrapper");
            var divRecipe = GetId("recipe");
            
            if(visible && !pined) // Si la bulle est visible, on calcul en temps reel sa position ideale
            {
                var recipePadding = 0;
                if(divRecipe != null)
                    recipePadding = divRecipe.clientHeight + 13;
                GetId("curseur").style.left= (e.pageX - divWrapper.offsetLeft + 1 + 25) + "px";
                GetId("curseur").style.top= (e.pageY - divWrapper.offsetTop + 1 - recipePadding) + "px";
            }
        }
        
        function montre(text)
        {
            if(visible==false && navigator.appName!="Microsoft Internet Explorer") // Si on est pas sous IE
            {
                GetId("curseur").style.visibility="visible"; // Si il est caché (la verif n'est qu'une securité) on le rend visible.
                GetId("curseur").innerHTML = text; // Cette fonction est a améliorer, il parait qu'elle n'est pas valide (mais elle marche)
                visible=true;
            }
        }
        
        function cache()
        {
            if(!visible || pined)
                return;
            GetId("curseur").style.visibility="hidden"; // Si la bulle etais visible on la cache
            visible=false;
        }
        
        function pin() // Épingle la bulle.
        {
            pined = !pined;
        }
        document.onmousemove=move; // dès que la souris bouge, on appelle la fonction move pour mettre a jour la position de la bulle.
        //-->
    <!-- RiftMod par Pumbaa - fin -->
    Ensuite ouvrez le fichier [Racine_phpbb3]\viewtopic.php
    Trouvez le code (tout en haut)
    Code:
    include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
    et à la ligne d'après ajouter la ligne
    Code:
    // RiftMod par Pumbaa - début
    include($phpbb_root_path . 'includes/functions_rift.php');
    // RiftMod par Pumbaa - fin
    Trouvez ensuite
    Code:
        // Highlight active words (primarily for search)
        if ($highlight_match)
        {
            $message = preg_replace('#(?!<.*)(?<!\w)(' .  $highlight_match .  ')(?!\w|[^<>]*(?:</s(?:cript|tyle))?>)#is', '<span  class="posthilit">\1</span>', $message);
            $row['post_subject'] = preg_replace('#(?!<.*)(?<!\w)(' .  $highlight_match .  ')(?!\w|[^<>]*(?:</s(?:cript|tyle))?>)#is', '<span  class="posthilit">\1</span>', $row['post_subject']);
        }
    Et ajouter juste après
    Code:
        // RiftMod par Pumbaa - début
        $message = explodeRiftMessage($message, "item", getItemByName);
        $message = explodeRiftMessage($message, "recette", getRecipeByName);
        // RiftMod par Pumbaa - fin
    C'est ici que phpbb va intercepter la balise [item] et modifier l'affichage des messages.
    Si tout d'un coup ça plante, supprimez ou commentez ce bout de code et votre forum sera comme neuf.
    D'ailleurs si le nom de la balise ne vous plait pas, vous pouvez le changer là.

    Si vous voulez voir l'info-bulle aussi dans la prévisualisation d'un message, ouvrez le fichier [Racine_phpbb3]\posting.php
    cherchez
    Code:
    include($phpbb_root_path . 'includes/message_parser.' . $phpEx);
    et ajoutez après
    Code:
    // RiftMod par Pumbaa - début
    include($phpbb_root_path . 'includes/functions_rift.php');
    // RiftMod par Pumbaa - fin
    Cherchez ensuite
    Code:
    	$preview_message = $message_parser->format_display($post_data['enable_bbcode'], $post_data['enable_urls'],
    	$post_data['enable_smilies'], false);
    et ajoutez après
    Code:
    	// RiftMod par Pumbaa - début
    	$preview_message = explodeRiftMessage($preview_message, "item", getItemByName);
    	$preview_message = explodeRiftMessage($preview_message, "recette", getRecipeByName);
    	// RiftMod par Pumbaa - fin
    2.10) Création du BBCode [item]
    Cette partie est optionnelle, car mon mode n'utilise pas réellement la balise BBCode du forum, elle intercepte la chaine de caractère "[item]" dans tout message.
    Mais si vous voulez que vos utilisateurs voient la balise lors de la création d'un message, suivez ces instructions.

    Dans la console d'admin de phpbb, allez dans Publication, puis dans le menu BBCode et cliquez sur Ajouter un nouveau BBCode.
    Dans Utilisation du BBCode, mettez [item]{SIMPLETEXT}[/item]
    N'inscrivez rien dans Remplacement de l'HTML.
    Choisissez la ligne d'aide.
    Cochez Afficher sur la page de rédaction.
    2.11) Tester
    Allez mettre un message, par exemple "[item]Barre de carmintium[/item]", validez et admirez.
    Attention ! Le nom de l'objet doit être absolument identique à celui dans la base de donnée. Accents, espaces et majuscules compris, sinon le script ne le trouvera pas.

    Si vous avez des questions, ou si vous trouvez un bug, n'hésitez pas à me demander de l'aide ici.
    Si vous améliorez mes scripts, hésitez encore moins à nous faire part de vos modifications ;-)

    TODO
    • Ajouter un petit mod qui permette de rechercher l'id d'un objet.
    • Puis sélectionner un item selon son id plutôt que son nom.
    • Prendre en charge les autres entités (exploits, artefacts, pnj, quêtes)
    • Mettre à jour à chaque nouvelles MAJ de Rift

  3. #3
    Marcheur des terres des Ombres
    Inscrit
    janvier 2011
    Messages
    39

    Par défaut

    Réservé pour le futur

  4. #4
    Marcheur des terres des Ombres
    Inscrit
    janvier 2011
    Messages
    39

    Par défaut

    Encore réservé, vive la limite de 10k char

  5. #5
    Champion de Telara Avatar de Galadrin
    Inscrit
    novembre 2010
    Lieu
    Toulouse
    Messages
    860

    Par défaut

    super boulot, je regarderai ca et testerai quand je trouverai le temps

    perso le forum guilde est toujours en phpbb2 (oui vielle guilde toussa toussa), donc je pourrais essayer de faire le mod pour cette version.

    (ajout au todo : possibilité de faire l'install/update mod directement depuis le xml, sans passer par JVM)

    rogue tank, Guilde de Kell, serveur Brisesol
    raids T1 clean, HK clean, ID 1/9
    mes vidéos
    La guilde de Kell recrute sur Brisesol

  6. #6
    Marcheur des terres des Ombres
    Inscrit
    janvier 2011
    Messages
    39

    Par défaut

    Citation Envoyé par Galadrin Voir le message
    super boulot, je regarderai ca et testerai quand je trouverai le temps
    Merci ^^'

    Citation Envoyé par Galadrin Voir le message
    (ajout au todo : possibilité de faire l'install/update mod directement depuis le xml, sans passer par JVM)
    Je ne comprends pas trop ce que tu veux dire par là.
    Que le parsing s'effectue en php dans phpbb ?

  7. #7
    Marcheur des terres des Ombres
    Inscrit
    janvier 2011
    Messages
    39

    Par défaut

    Dans mon tuto j'ai oublié la partie avec les icônes, j'ai donc édité mon 1er post et modifié quelque fichiers dans riftPhpbbModFiles.zip

    2.6) Création et upload des icônes
    Téléchargez le fichier rift_item_icons.zip depuis ici, et décompressez-le.
    Les icônes sont en .dds, il faudra donc les convertir en png et pour ça je vous propose ce soft DDS Converter 2.
    L'utilisation est assez intuitive, par contre pendant la rédaction de ce tutorial je n'ai pas réussi à re-convertir tout les icônes, le programme plantait.
    Donc si vous en connaissez un autre, dite-le :-)
    Mettez tout les icones dans [Racine_phpbb]\images\item_icons

  8. #8
    Planaire Avatar de alkazar
    Inscrit
    février 2011
    Lieu
    fac sciences - hall des geeks
    Messages
    149

    Par défaut

    as tu déjà jeté un œil ici ?
    si non, je te conseille d'aller voir.

    http://alkazar.worldofguilds.eu/foru...ic.php?f=2&t=2

    ce forum de démo utilise ma base de donnée pour afficher les tooltips via ajax, ainsi que les images.
    C'est avant tout proof of concept, sur un forum type qui n'autorise pas les mods.

    Comme, à priori, tu n'as pas de restrictions, et que tu as accès aux sources, tu devrait pouvoir t'en sortir sans le bbcode d'initialisation, qui sert justement à injecter ce qui devrait être dans overall_header, pour ceux qui n'y ont pas accès.
    Ensuite, la configuration du bbcode [item]ID[/item] est très simple, via le panneau d'admin.
    L'installation devrait donc ne demander que 3 copier-coller.

    Pour ce qui est de la base, voici les liens
    http://theriftdb.net/rift/items - branche stable
    http://theriftdb.net/rift_dev/items - branche dev

    Tu aura l'avantage de ne pas avoir à te soucier des mises à jour de la base de donnée: je vérifie tous les soirs.
    Pour ce qui est des ID des items, tu les trouvera très facilement sur mon site.

    Si tu as des questions, n'hésite pas.

    note: si tu souhaite afficher les tooltips tels qu'ils sont sur la branche dev sans attendre les mises à jour de la branche stable, il te suffit de changer cette ligne dans le javascript:
    init_item_requester('http://theriftdb.net/rift/fr/item_tooltip/');
    par
    init_item_requester('http://theriftdb.net/rift_dev/fr/item_tooltip/');
    cette ligne permet également de sélectionner la langue
    Alkaraz@Phymnious

  9. #9
    Marcheur des terres des Ombres
    Inscrit
    janvier 2011
    Messages
    39

    Par défaut

    Raaah ça m'énerve, quand j'avais cherché je n'avais rien trouvé >_<

    S'pa grave, ça m'aura permis de coder un peu, c'est ma passion tout de même ;-)
    En tout cas ton résultat est très beau, bravo.

  10. #10
    Planaire Avatar de Popitre
    Inscrit
    mars 2011
    Lieu
    Lyon, 69
    Messages
    138

    Par défaut

    rift zam propose un script java tout fait, un petit bbcode et le tour est joué, ca m'a prit quelques minutes à mettre sur mon forum

+ Répondre au sujet
Page 1 sur 2 1 2 DernièreDernière

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas modifier vos messages