MyBB.support, le portail francophone de MyBB

Version complète : Mettre du Flash en Avatar
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.

Bonjour/Bonsoir !


Je viens chercher de l'aide sur le forum mybb pour une nouvelle chose cette fois-ci, je m'explique.

Je cherche un moyen de remplacer l'affichage des avatars actuels (fichiers images), par un fichier flash (qui représente un personnage), s'il est en flash c'est pour la simple et bonne raison qu'il est sur un serveur web distant, et qu'il serait mis à jour automatiquement si mon personnage venait à changer de look.

Voici un exemple très concret car je souhaiterai mettre en place exactement la même chose sur mon forum :
http://forum.alliance-wtf.com/viewtopic.php?f=32&t=26

On voit ici que l'avatar utilisé est le fichier flash disponible ici :
http://staticns.ankama.com/dofus/www//game/DofusPersos.swf

J'ai demandé à l'auteur de ce forum comment avait-il mis en place ce système, je sais qu'il utilise un champs de profil personnalisé pour récupérer le pseudo du personnage qui sera recherché par son script pour afficher l'avatar de la bonne personne il m'a répondu ceci (et c'est là que je comprends pas comment je peux intégrer la même chose sur MyBB) :

Citation :Récupère l'apparence via les pages persos ou la DB.

Code :
<?php

const SERVER_ID = 23;

function get_perso_id($name){

    $url = 'http://www.dofus.com/fr/persos-guildes/resultat?na='.$name.'&s='.SERVER_ID.'&type=char';
    
    $ctx=stream_context_create(array('http'=>
        array(
            'timeout' => 2 // 5 secondes
        )
    ));

    $content = file_get_contents($url, false, $ctx);
    
    $pattern = '/ title="'.$name.' Hel Munster" href="\/fr\/perso\/hel-munster\/([a-zA-Z\-]+)-([0-9]*)/i';
    
    preg_match($pattern, $content, $matches);
    
    if(count($matches)<3)
        return FALSE;
    return $matches[2];
}


function get_perso($name){

    global $db;

    $name = strtolower(strip_tags($name));

    $sql = 'SELECT *
            FROM persos_cache
            WHERE name LIKE \'' . $name . '\'';
            
    $result = $db->sql_query_limit($sql, 1);
    $row = $db->sql_fetchrow($result);
    
    if($row == NULL){
    
        $id = get_perso_id($name);
        
        if(!$id)
            return FALSE;
        
        $url = 'http://www.dofus.com/fr/perso/hel-munster/'.$name.'-'.$id;
        
        $ctx=stream_context_create(array('http'=>
            array(
                'timeout' => 5 // 5 secondes
            )
        ));
        
        $content = file_get_contents($url, false, $ctx);
        
        $pattern = '/value="look=(.*)"/';
    
        preg_match($pattern, $content, $matches);
        
        if(count($matches) < 1)
            return FALSE;
        
        //$style = strstr($matches[0], '{');
        
        $style = substr($matches[0], 12, strlen($matches[0]) - 13);
        
        $sql = "INSERT INTO persos_cache".
                " VALUES($id, '$name', '$style', NULL)";

        $db->sql_query($sql);

    } else {
    
        $style = $row['style'];
        $db->sql_freeresult($result);
    }
    
    return $style;
}

?>
Modification de viewtopic.php

Ou j'utilise le script précédent + le champ personnalisé pour récupérer l'apparence associé au pseudo et je le rajoute dans les paramètres passés à la vue.


Code :
    // Load Dofus Avatar if set //////////////// OPTIMISER CHARGEMENT
    if (!empty($cp_row['blockrow']))
    {
        $name = NULL;
        $use = NULL;
        
        foreach ($cp_row['blockrow'] as $field_data){
            
            if(isset($field_data['S_PROFILE_CHAR_NAME']))
                $name = $field_data['PROFILE_FIELD_VALUE'];
            else if(isset($field_data['S_PROFILE_USE_CHAR']))
                $use = $field_data['PROFILE_FIELD_VALUE'] == 'Oui';
        }
        
        if($name && $use)
            $postrow['PERSO_STYLE'] = get_perso($name);
    }
Morceau de viewtopic_body.html pour afficher le swf avec les parametres passés.


Code :
                <!-- IF postrow.PERSO_STYLE -->
                    <div class="illu_perso">
                    <!--[if !IE]> -->
                    <object type="application/x-shockwave-flash" data="http://alliance-wtf.com/ankama/DofusPersos.swf" id="inventory_avatar_container" width="168" height="217">
                    <!-- <![endif]-->
                    <!--[if IE]>
                        <object class="fix" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version="9.0.0 id="inventory_avatar_container" width="200" height="259">
                        <param name="movie" value="http://alliance-wtf.com/ankama/DofusPersos.swf" />
                        <param name="allowscriptaccess" value="always" />
                        <param name="flashvars" value="look={postrow.PERSO_STYLE}&amp;render=direct"/>
                        <param name="wmode" value="transparent" />
                        <param name="enablejs" value="true" />
                        <!--><!--dgx-->
                        <param name="allowscriptaccess" value="always">
                        <param name="flashvars" value="look={postrow.PERSO_STYLE}&amp;render=direct">
                        <param name="wmode" value="transparent">
                        <param name="enablejs" value="true">
                        <p><a target="_blank" href="http://www.adobe.com/go/getflashplayer">Get flash player</a></p>
                    </object>
                    <!-- <![endif]-->
                    </div>  
                <!-- ELSE -->
                    <!-- IF postrow.POSTER_AVATAR -->
                        <!-- IF postrow.U_POST_AUTHOR --><a href="{postrow.U_POST_AUTHOR}">{postrow.POSTER_AVATAR}</a><!-- ELSE -->{postrow.POSTER_AVATAR}<!-- ENDIF --><br />
                    <!-- ENDIF -->
                <!-- ENDIF -->

Si quelqu'un peut m'éclairer sur le sujet, ce serait très sympathique de sa part, j'ai essayé tout ce que je pouvais, mais rien n'y fait.
C'est un travail trop conséquent pour être du simple support mybb !

Le site donné en exemple est un forum phpBB. Il faut dont "adapter" le code en conséquence, ce qui n'est pas une mince affaire.

De plus, les codes donnés modifient un fichier du noyau, ce qui n'est pas conseillé car lors d'une mise à jour... plus de modif... écrasée.

Le mieux est d'utiliser un plugin et personnellement je n'en connais pas. Et je n'en ai pas trouvé sur Internet.
Merci de votre réponse.

Je viens de trouver un moyen d'afficher ça comme je veux, mais ce n'est malheureusement pas automatique, il faut que je fasse un tutoriel pour dire aux membres de récupérer leur ID de look sur leur page perso et de l'entrer dans leur profil, un problème est que, du coup, si le personnage vient à changer d'apparence, il faudrait refaire la manipulation.

 Utilitaire de traduction fourni par Regentronique