Exploiter le nouveau ladder

Répondre
Partager Rechercher
On peut récupérer les pages persos depuis un script ?

Sinon pour au dessus, mon code, mais c'est vraiment brouillon, puis pour GD tu fais comme tu le sens
Code PHP:

<?php

$sexes 
= array('0'=>'male','1'=>'femelle');
$classes = array('1'=>'Féca','2'=>'Osamodas','3'=>'Enutrof','4'=>'Sram','5'=>'Xelor','6'=>'Ecaflip','7'=>'Eniripsa','8'=>'Iop','9'=>'Crâ','10'=>'Sadida','11'=>'Sacrieur','12'=>'Pandawa');

//La fonction pour récuperer les infos
function GetNewFromLadder($pseudo) {
    
$ch curl_init();
    
curl_setopt($chCURLOPT_URL'http://www.dofus.com/requests/ladder_versus');
    
curl_setopt($chCURLOPT_HEADER0);
    
curl_setopt($chCURLOPT_RETURNTRANSFER1);
    
curl_setopt($chCURLOPT_POSTFIELDS'na='.$pseudo);
    
$json curl_exec($ch);
    
curl_close($ch);
    
$j json_decode($jsontrue);
    return 
$j;
}

//On récupère le pseudo passé dans l'url
if (isset($_GET['pseudo'])){
$pseudo=$_GET['pseudo'];

//On se connecte à la database
mysql_connect('localhost''root','');
mysql_select_db('matable');

//On récupère le jour de la dernière maj
$majday=(mysql_fetch_array(mysql_query("SELECT day FROM membres WHERE pseudo='$pseudo';")));
$majday=$majday['day'];
//On récupère le jour d'aujourd'hui
$day=date('d');

//Si c'est pas les mêmes on met à jour les infos dans la database
if (($day-$majday)!=0){
$perso=Getnewfromladder($pseudo);
 if (
$perso != null) {
            foreach(
$perso as $p=>$infos) {
                    
$perso $infos;}}
                    
$classe=$classes[$perso['br']];
                   
mysql_query("UPDATE membres SET lvl='$perso[le]',classe='$classe',rks='$perso[rks]',rkbs='$perso[rkbs]',ph='$perso[kis]',xp='$perso[xp]',day='$day'   WHERE pseudo='$pseudo';");

//On déclare que c'est une image
header("Content-type: image/jpeg");
//Mon image de base sur laquel je travaille
$image=imagecreatefromjpeg('img.jpg');
$couleur '33488895';

//Je charge les données
$fiche=(mysql_fetch_array(mysql_query("SELECT pseudo,lvl,rks,rkbs,ph,xp FROM membres WHERE pseudo='$pseudo';")));

//Calcul pour avoir le Grade, au pire tu t'en fous :D
$ph=$fiche['ph'];
if (
$ph==0){$grade='0';}
if ((
$ph<500)&&($ph!=0)){$grade='1';}
if ((
$ph>=500)&&($ph<1500)){$grade='2';}
if ((
$ph>=1500)&&($ph<3000)){$grade='3';}
if ((
$ph>=3000)&&($ph<5000)){$grade='4';}
if ((
$ph>=5000)&&($ph<7500)){$grade='5';}
if ((
$ph>=7500)&&($ph<10000)){$grade='6';}
if ((
$ph>=10000)&&($ph<12500)){$grade='7';}
if ((
$ph>=12500)&&($ph<15000)){$grade='8';}
if ((
$ph>=15000)&&($ph<17500)){$grade='9';}
if (
$ph>=17500){$grade='10';}

//On rajoute du texte etc..
imagettftext($image16 190 25$couleur'UnBatangBold.ttf',$fiche['pseudo']);
imagettftext($image12 143 49$couleur'UnBatangBold.ttf',$fiche['lvl']);
imagettftext($image12 310 21$couleur'UnBatangBold.ttf',$fiche['rks']);
imagettftext($image12 310 44,$couleur'UnBatangBold.ttf',$fiche['rkbs']);
imagettftext($image12 300 74,$couleur'UnBatangBold.ttf',$fiche['xp'].' xp');
imagettftext($image12 237 48,$couleur'UnBatangBold.ttf',$grade);

//On enregistre l'image dans le dossier cache
imagejpeg($image,'cache/'.$fiche['pseudo'].'.jpg');
imagejpeg($image);
imagedestroy($image);
}

//Déja à jour, on a juste a charger l'image qui est dans le dossier cache
else {
header("Content-type: image/jpeg");
$image=imagecreatefromjpeg('cache/'.$pseudo.'.jpg');
imagejpeg($image);
imagedestroy($image);
}
}
?>
Oui on peut récuperer les personnages, il suffit de récuperer le code source de la page et de prendre seulement le code character ( c'est lui qui définit la classe du personnage, sa couleur et son equipement )

Exemple : http://staticns.ankama.com/dofus/www/swf/pages_persos/DofusPersos.swf?render=direct&focus=face&look={1|120,453,1135,970|5=2818048,2=0,4=16777215,1=15457984,3=8585216|160}

On voit par exemple mon panda, et je pense qu'il est possible de l'afficher sur une page .
J'ai un denied que j'arrive sur la page moi
Doit surement être accessible que depuis un domaine précis
Je pense qu'ankama est pas trop d'accord pour que ça soit utilisé comme ça je pense
Et bien j'ai reussi a faire apparaitre le personnage du haut ( genre que la tête ) en local sur wamp .

Par contre je trouve pas pour afficher le personnage de l'inventaire ... Il y a une sécurité ...
On ne peut pas linker cette animation flash depuis un site externe.
Enfin ça marchera, mais seulement si tu as déjà ouvert l'anim' via le site officiel, auquel cas tu l'auras en cache.
EDIT : c'est pour ça que ça marche pas pour Jerede. Et que toi tu as l'impression que ça marche.

C'est d'ailleurs pour ça que l'export des pages persos est basé sur des iframes.
Ca permet à Ankama de maitriser l'affichage.
Pour nous c'est moins souple mais bon...

Le code d'export fourni par Ankama a cette tronche :
Code:
<iframe name="" src="http://www.dofus.com/fr/perso/$SERVER/$PSEUDO-$CODE/export-blog-long" scrolling="no" frameborder="0" height="300px" width="200px"></iframe>
Le code est trouvable dans les Pages Perso Dofus, dans l'URL.

Bon ok c'est pas très sexy, mais comme le forum de ma guilde est pour l'instant hébergé chez Free, c'est mieux que rien.
Ben oui je prends le swf directement sur leur serveur

Code HTML:
            <div class="encart_profil">
    <div class="illu_persos">
        <p class="level">117</p>

        <div class="bg_persos">
            <div id="perso_avatar"></div>
            <div id="perso_avatar" style="display:none"><p>
                   <a href="http://www.adobe.com/go/getflashplayer">
                     <img src="https://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
                   </a>
                 </p></div>
<script type="text/javascript">
  <!--
  if (typeof(swfobject) == 'undefined')
  {
    document.write('<' + 'script type="text/javascript" src="http://staticgz.ankama.com/global/javascript/swfobject.2.1.js"><' + '/script>');
    var iInterval = window.setInterval(function(){
      if (typeof(swfobject) != 'undefined')
      {
        clearInterval(iInterval)
        swfobject.embedSWF("http://staticns.ankama.com/dofus/www/swf/pages_persos/DofusPersos.swf","perso_avatar","100","100","10", "http://staticns.ankama.com/global/swf/expressInstall.swf" , false , {"allowscriptaccess":"always","flashvars":"render=direct&focus=face&look={1|120,1150,1135,970|5=2818048,2=0,4=16777215,1=15457984,3=8585216|160}","wmode":"transparent","menu":"false"});
      }
    }, 1);
  }
  else{
    swfobject.embedSWF("http://staticns.ankama.com/dofus/www/swf/pages_persos/DofusPersos.swf","perso_avatar","100","100","10", "http://staticns.ankama.com/global/swf/expressInstall.swf" , false , {"allowscriptaccess":"always","flashvars":"render=direct&focus=face&look={1|120,1150,1135,970|5=2818048,2=0,4=16777215,1=15457984,3=8585216|160}","wmode":"transparent","menu":"false"});}
  //-->
</script>
Et pour l'instant ça marche sur wamp
Message supprimé par son auteur.
Citation :
Publié par Koshifti
Et pour l'instant ça marche sur wamp
Donne l'URL à quelqu'un d'autre, 10 contre 1 que ça ne fonctionne pas.
C'est du cache.

EDIT pour en dessous :
En l'occurence quand j'avais fait les mêmes tests que toi, c'était un peu bizarre, même en fermant réouvrant le navigateur j'avais toujours les données en cache.
Le plugin flash doit avoir son propre cache.
Le seul moyen de "voir que ça marche pas" pour moi était d'utiliser un 2e navigateur. Et là en effet ça marchait pas ^^
Message supprimé par son auteur.
Euh, je vois seulement marquer 117 moi

Après y'a sûrement moyen de découper/analyser le contenu de l'iframe, mais bon c'est autre chose

Edit : Owned par Garfunk =(

Edit2: Essaye d'effacer ce qui est la peut être : %appdata%\Macromedia\Flash Player\#SharedObjects
perso moi je vois un 117 et un panda en pano obji en dessous

Vous pouriez pas faire un mini tuto pour ce qui faut faire pour avoir une signature avec notre ladder ?
Si demain, après que la ladder ce soit mis à jour, sur la page d'avant on voit mon perso, je donnerais ce que j'ai fait pour que ça marche.
( Même si j'espère pas trop )

Enfin, le ladder est mis à jour à quelle heure ? 24H nan ?
Je veux juste faire une signature avec mon ladder ^^
(métier+lvl+classement+ avatar mais sa sera dans photoshop donc je ferais la signature)
Si tu pouvais faire un tuto se serais très gentil de ta part
Hum, moi le panda de Goshiti ça marche maintenant

Donc, voila pour le tuto :

Tout d'abord il faut :
*Un hébergeur avec Php et les fonctions CURL d'activées
*Une base de données
*Une image roksatif

On va considérer que tu veut avoir ton image perso sous une adresse de la forme http://monsupersite.fr?pseudo=monpseudo

On va donc commencer par créer une page et l'appeler index.php :
Code PHP:

<? 
//Tableau pour les correspondances chiffres <> texte
$sexes = array('0'=>'male','1'=>'femelle');
$classes = array('1'=>'Féca','2'=>'Osamodas','3'=>'Enutrof','4'=>'Sram','5'=>'Xelor','6'=>'Ecaflip','7'=>'Eniripsa','8'=>'Iop','9'=>'Crâ','10'=>'Sadida','11'=>'Sacrieur','12'=>'Pandawa');

//S'il l'url contient un le pseudo,on récupère le pseudo et on execute la suite
if (isset($_GET['pseudo'])){
$pseudo=$_GET['pseudo'];


//On se connecte à la base de données
mysql_connect('localhost''root','');
mysql_select_db('signature');

//On regarde si le nom est déja dans la base de données sinon on peut l'ajouter
$exists=(mysql_fetch_array(mysql_query("SELECT COUNT(*) as nbr FROM signature WHERE  pseudo='$pseudo';")));
if(
exists['nbr']=0){
mysql_query("INSERT INTO signature(pseudo) VALUES('$pseudo')");
}

//On va stocker la date ou l'image à était mis a jour dans la base de données //pour voir si on doit ou non la mettre a jour avant de l'afficher
//On récupère donc dans $majday le jour ou les infos ont étaient mis à jour
$majday=(mysql_fetch_array(mysql_query("SELECT day FROM signature WHERE pseudo='$pseudo';")));
$majday=$majday['day'];

//On récupère le jour d'aujourd'hui, exemple le : 20
$day=date('d');

//On va comparer les deux pour voir si on doit mettre à jour ou pas

if ($day != $majday){   //Dans le cas ou c'est différent, il faut faire la Maj

$perso=Getnewfromladder($pseudo); //On récupère les nouvelles infos avec Curl

//Si on a bien récupéré un personnage, on met les infos à jour les infos dans la Base de données
 
if ($perso != null) {
            foreach(
$perso as $p=>$infos) {
                    
$perso $infos;}}
                    
$classe=$classes[$perso['br']];
                   
mysql_query("UPDATE signature SET lvl='$perso[le]',classe='$classe',rks='$perso[rks]',rkbs='$perso[rkbs]',ph='$perso[kis]',xp='$perso[xp]',day='$day'   WHERE pseudo='$pseudo';");


//On déclare que la page est en faite une image
header("Content-type: image/jpeg");


//On charge une image de notre choix pour travailler dessus avec la librarie GD
$image=imagecreatefromjpeg('img.jpg');

//La couleur avec laquelle on va travailler
$couleur '33488895';

//On rajoute le texte sur notre image, de la couleur qu'on a précisé plus haut
imagettftext($image16 190 25$couleur'UnBatangBold.ttf',$pseudo);
imagettftext($image12 143 49$couleur'UnBatangBold.ttf',$perso['le']);
imagettftext($image12 310 21$couleur'UnBatangBold.ttf',$perso['rks']);
imagettftext($image12 310 44,$couleur'UnBatangBold.ttf',$perso['rkbs']);


//On enregistre l'image dans le dossier cache
imagejpeg($image,'cache/'.$fiche['pseudo'].'.jpg');

//On l'affiche
imagejpeg($image);

//On l'a détruit
imagedestroy($image);

//Et si le données était déja à jour on à juste à charger l'image qui doit être dans le dossier cache, :)
else {
header("Content-type: image/jpeg");
$image=imagecreatefromjpeg('cache/'.$pseudo.'.jpg');
imagejpeg($image);
imagedestroy($image);
}
}


//La fonction CURL pour récuperer les infos
function GetNewFromLadder($pseudo) {
    
$ch curl_init();
    
curl_setopt($chCURLOPT_URL'http://www.dofus.com/requests/ladder_versus');
    
curl_setopt($chCURLOPT_HEADER0);
    
curl_setopt($chCURLOPT_RETURNTRANSFER1);
    
curl_setopt($chCURLOPT_POSTFIELDS'na='.$pseudo);
    
$json curl_exec($ch);
    
curl_close($ch);
    
$j json_decode($jsontrue);
    return 
$j;
}
Sur le FTP, on a donc
*index.php
*img.jpg
*un dossier cache qui va se remplir


Et voila si tu t'y connais pas trop en SQL pour créer la table :
Code:
--
-- Structure de la table `signature`
--

CREATE TABLE IF NOT EXISTS `signature` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `rks` int(11) NOT NULL,
  `rkbs` int(11) NOT NULL,
  `ph` int(11) NOT NULL,
  `pseudo` text NOT NULL,
  `classe` text NOT NULL,
  `lvl` int(11) NOT NULL,
  `xp` double NOT NULL,
  `day` int(11) NOT NULL,
  `view` double NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `pseudo` (`pseudo`(20))
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=90 ;
J'ai pas mis toute les possibilités du Ladder, à toi d'ajouter si tu veut

Tu peut aussi créer une table xp, oû tu stocke chaque jour les xp des membres, ce qui te permettra de faire des statistiques

Donc si tu veut pas t'embêter tu copie tout le code php, tu le met dans index.php
Tu exécute la requête SQL sur ta table
Tu met ton image
Tu créer un dossier cache
et c'est bon
Message supprimé par son auteur.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés