Mettre du Flash en Avatar - Fairy-zozo - 01-11-2013
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}&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}&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.
RE: Mettre du Flash en Avatar - spyto - 01-11-2013
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.
RE: Mettre du Flash en Avatar - Fairy-zozo - 01-11-2013
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.
|