Web Apps


uiWebPrevious12uiWebNext

#1 [fr] 

Bonjour,

Existe t'-il un script php pour obtenir tous les niveaux du joueur dans l'arbre des compétences ?

---

#2 [fr] 

Si simple que j'ai honte d'avoir posé la question…

$file = fopen("XML.txt", "w");
fwrite($file,print_r($xml,true));
fflush($file);
fclose($file);


et ça vous crache toutes les informations dans le fichier en particulier ce que je cherchais :
[skills] => SimpleXMLElement Object
(
[sc] => 20
[sca] => 50
[scah] => 75.56
[scal] => 64.51
[scam] => 60.27
[scas] => 60.32
[scj] => 50
[scja] => 55.97
[scjb] => 52.38
[scjd] => 51.40
[scje] => 51.90
[scjp] => 58.79
[scjr] => 53.35
[scm] => 50
[scm1] => 59.18
[scm2] => 67.55
[scmc] => 52.49
[scr] => 50
[scr1] => 53.69
[scr2] => 69.37
[sf] => 20
[sfm] => 50
[sfm1] => 75
[sfm2] => 69.66
[sfmc] => 62.58
[sfr] => 50
[sfr1] => 51
[sfr2] => 64
[sh] => 20
[shf] => 50
[shfd] => 51.29
[shff] => 51.51
[shfj] => 100
[shfja] => 117.71
[shfl] => 51
[shfp] => 51
[sm] => 20
[smd] => 50.21
[smo] => 50
[smoa] => 51.03
[smoe] => 57.05
)

trop cool cette API, celà dit si qqun a la traductions des abréviations je prend :)

Last edited by Phileur (10 years ago)

---

#3 [fr] 

Phileur (atys)
Si simple que j'ai honte d'avoir posé la question…

Tu ne devrais pas, c'est une question tout à fait légitime.
Phileur (atys)
$file = fopen("XML.txt", "w");
fwrite($file,print_r($xml,true));
fflush($file);
fclose($file);

Je vois trois problèmes avec ce code:
1. Tu ne vérifie pas le retour de fopen, ce qui fait qu'en cas de problème fwrite, fflush et fclose vont planter lamentablement dans une kyrielle de message d'erreurs ;
2. le code est inutilement compliqué, ça se fait en une seule ligne avec file_put_contents ;
3. ça ne répond pas du tout à ta question.

Je vais m'expliquer un peu plus concernant le "ça ne répond pas du tout à ta question" : partant du principe que tu dispose des données "brutes" retournées par l'API à l'aide d'une clé, tu veux trouver et afficher les niveau du personnage. Ton script écrit les données brutes de l'API dans un fichier, ce qui n'a rien a voir avec la choucroute. Bref, ce que tu cherches à faire, c'est d'abord de repérer où les données sont situées, en l'occurrence ici dans le nœud "skills" situé dans le nœud "character" lui même situé dans le nœud racine "ryzomapi". Le nœud skills comprend des feuilles représentant chacune des branche de l'arbre des compétences. Tout le travail consiste donc, comme tu l'évoquais à le fin, à trouver ce à quoi correspond chacune de ces feuilles et à utiliser ces informations.

Je n'ai pas les correspondances, mais certains ont déjà travaillés dessus. Tu devrais trouver des infos sur le vieux wiki de l'API, dans les codes sources des applications utilisant l'API et autres endroits du genre. Dans le pire des cas, c'est assez simple de trouver la solution tout seul.

---

Markanjio di Segafredo
Alkiane
Noble Gardien des Matis - Noble Matis Guardian
Fléau de l'Empire - Scourge of the Empire

#4 [fr] 

Ok et merci pour le file_put_contents ça simplifie mais j'ai pour excuse que j'ai du faire en tout 1 heure d'apprentissage sur le php et que comme tu l'as deviné mon but était de dumper cet arbre pour comprendre son fonctionnement, après effectivement je ne vais pas l'utiliser brut.
Quoique c'est bien pratique quand mon chef de guilde me demande mes niveaux je lui copie/colle dans un mail :)

Mon besoin est bien de faire une feuille de personnage facilement communicable, je vais regarder ton lien wiki mais vu la simplicité de tout celà je vais essayer de monter un environnement me permettant de tester mon script sans serveur apache en utilisant ce fichier XML.txt en entrée du script (via un load ça doit exister ).

Encore de nouvelles lignes de code dont je me ferais un plaisir de poster ici pour ton avis :)

PS : et pour les tests de retours et d'erreur, je suis fan de perl ceci explique celà ;)

Last edited by Phileur (10 years ago)

---

#5 [fr] 

Phileur (atys)
je vais essayer de monter un environnement me permettant de tester mon script sans serveur apache en utilisant ce fichier XML.txt en entrée du script (via un load ça doit exister ).

Tu n'as pas besoin d'apache pour utiliser PHP. Ni d'aucun autre serveur web. J'insiste sur le fait que parser la sortie d'un print_r n'est pas du tout le plus pratique, tu devrais garder du XML ou bien utiliser un autre format standard tel que JSON.

Phileur (atys)
PS : et pour les tests de retours et d'erreur, je suis fan de perl ceci explique celà ;)

Tu peux utiliser Perl si tu veux, PHP n'est en rien une obligation ;)

---

Markanjio di Segafredo
Alkiane
Noble Gardien des Matis - Noble Matis Guardian
Fléau de l'Empire - Scourge of the Empire

#6 [fr] 

Uhm… mais choix vont au plus facile en partant de l'exemple que j'ai qui est en php et JSON je sais même pas ce que c'est.

Je parle de apache car pour tester et développer mon petit bout de php j'ai installé en localhost un serveur qui me permet d'exéccuter mon script php.

Je cherche a m'en passer en capturant le fux retour de l'api dans un fichier binaire ou texte, puis me servir de ce fichier pour charger la variable au début de mon script. J'aimerai bien garder min flux xml, c'est bien mon problème et c'est pas la commande print, ni file_put_contents.

Google est mon ami, mais si t u te proposes j'en veux bien un autre :)

PS : le lien ancien wiki me donne tout ce que je ceux comme info sur la section skills merci

---

#7 [fr] 

bon j'aurais pas joué ce soir mais j'en sais un poil plus sur PHP, voici comment je m'y prend :

1) J'ai un script d'export 'en résumé' :

$xml = false;
$result = ryzom_character_api($apikey);
if (isset($result[$apikey])) {
$xml = $result[$apikey];
}
file_put_contents("XML1.XML", $xml->asXML());

A parti de là j'ai mon fichier, plus besoin de questionner le serveur Ryzom la "photo" est prise. A terme pourquoi imaginer des photos a différentes époques pour voir la progression…. mais c'est un autre sujet.

2) dans mon script de traitement je démarre

$xml = false;
$xml = simplexml_load_file ("XML1.XML");


Voilà je le suis un peu éloigné de mon besoin initial mais me voilà donc avec un script et en fichier de flux pour développer tranquillement offline pendant mes vacances dans la france profonde et sans internet !

---

#8 [fr] 

Phileur (atys)
$xml = false;
$result = ryzom_character_api($apikey);
if (isset($result[$apikey])) {
$xml = $result[$apikey];
}
file_put_contents("XML1.XML", $xml->asXML());

Tu devrais faire ton file_put_contents dans le bloc du if, faute de quoi, en cas de problème, tu vas te manger une "PHP Fatal error: Call to a member function asXML() on a non-object". Et oui, $xml étant valant false, impossible d’appeler la méthode asXML dessus. Du coup, "$xml = false;" est inutile.

Phileur (atys)
A terme pourquoi imaginer des photos a différentes époques pour voir la progression…. mais c'est un autre sujet.

Une tâche cron et c'est fini ^^

Phileur (atys)
$xml = false;
$xml = simplexml_load_file ("XML1.XML");

"$xml = false;" est totalement inutile.

---

Markanjio di Segafredo
Alkiane
Noble Gardien des Matis - Noble Matis Guardian
Fléau de l'Empire - Scourge of the Empire

#9 [fr] 

Pour tester mon script j'hésite à choisir mon environnement de développement ?
J'ai actuellement AMPSS (version Mac de WAMP) mais je suis tenté par Eclipse pour faire du vrai debuggage etccc

As tu un conseil de l'environnement à choisir ?

Last edited by Phileur (10 years ago)

---

#10 [fr] 

Phileur (atys)
Pour tester mon script j'hésite à choisir mon environnement de développement ?
J'ai actuellement AMPSS (version Mac de WAMP) mais je suis tenté par Eclipse pour faire du vrai debuggage etccc

As tu un conseil de l'environnement à choisir ?

Oui :
1. Dégage OS X et installe un vrai système (un GNU/Linux, un BSD ou autre) ;
2. utilise emacs ou vim comme éditeur de fichiers (nota: il faut installer la version -nox d'emacs ou lancer ce dernier avec l'option -nw) ;
3. si tu as vraiment besoin d'un serveur web, utilise nginx.

---

Markanjio di Segafredo
Alkiane
Noble Gardien des Matis - Noble Matis Guardian
Fléau de l'Empire - Scourge of the Empire

#11 [fr] 

toi t'es bien du genre à utiliser BSD..... et je suppose recompilé maison :)

---

#12 [fr] 

Phileur (atys)
toi t'es bien du genre à utiliser BSD..... et je suppose recompilé maison :)

Perdu. Je tourne sous ArchLinux avec les noyaux pré-compilés du répo.

---

Markanjio di Segafredo
Alkiane
Noble Gardien des Matis - Noble Matis Guardian
Fléau de l'Empire - Scourge of the Empire

#13 [fr] 

Je reviens vers toi car j'ai presque fini mon développement mais me retouve bloqué pour traduire les compétences cf post http://dev.ryzom.com/boards/15/topics/832.

J'arrive bien a récupérer et traiter sfm2ssm mais je cale devant l'algorythme pour traduire en skill fight melee two handed slashing sword master ?

J'ai l'impression qu'il faudrait charger le post du site ci dessus dans un SimpleXMLElement puis se servir de la chaine sfm2ssm pour le parcourir et afficher le libellé.

Sauf que ca dépasse largement mon niveau, donc si une bonne ame est par ici ?


Je te joins le lien j'ai mis en ligne mon brouillon (zéro mise en forme) tu verras en bas où j'en suis http://www.diavels.org/phpBB3/ryzom.php

Edited 2 times | Last edited by Phileur (10 years ago)

---

#14 [en] 

You can use ryzom_extra library from here.
You can then translate skill names with $txt=ryzom_translate('sca.skill', 'fr');

---

Hello!

#15 [fr] 

It doesn't seem to do what i look for (not defined sheetid)
What i want to do is not only tanslate but expand shortcut scam and so on in full description : s for skill c for craft a for armour m for medium and so on.....

Is it What ryzom extra do ?

Last edited by Phileur (10 years ago)

---

uiWebPrevious12uiWebNext
 
Last visit Thursday, 18 April 07:46:35 UTC
P_:

powered by ryzom-api