Ligne vide = nouvelle colonne. Limitées par la somme des largeurs, en pratique ~7.
Le style est imposé, ne supporte quasiment que :
*Italique (donne gras)
*Souligné (donne gras)
*Barré
*Police plus grande
Les informations de cette page n'ont pas encore été mises à jour pour la version 2 de l'API XML. Cette page est donc en partie obsolète car l'ancienne version 1 n'est plus utilisée.
L'API version 2.x contient plus d'informations que dans la version 1 (nouveaux chantiers, améliorations, contenu des zones du désert) et introduit le concept de clés sécurisées pour les sites externes.
Cette page a été mise à jour jusqu'à la section city, non incluse.
L'API XML a été développée par Deepnight sur demande des joueurs de la première version bêta.
Rien n'est encore définitif. Les choses peuvent évoluer, des informations pourront être ajoutées et d'autres pourront disparaître.
L'API XML permet d'avoir un accès en lecture à certaines informations de la ville. Son exploitation peut se faire sur différents supports : Site Web, Applications, DS, iPhone, Mobile, Palm, ….
Vous trouverez l'aide officielle (hordes.fr) de l'API XML là ⇒ .
Pour information, la version actuelle du flux XML est 2.171.
Le XML v2 a changé sur de nombreux points.
Tout d'abord la structure, voyons un exemple simple de la v2 :
<hordes> <headers link="http://beta.hordes.fr/xml" iconurl="http://data.hordes.fr/gfx/icons/" secure="0" author="Motion Twin http://www.motion-twin.fr" language="fr" version="2.10" avatarurl="http://imgup.motion-twin.com/" generator="haxe"> <owner> <citizen dead="0" hero="0" name="DarKalimHero" x="9" y="4" id="666" ban="0" job="basic" out="1" baseDef="0"> </citizen> <myZone .../> </owner> <game days="5" quarantine="0" datetime="2009-01-08 21:48:28" id="159269"/> </headers> <data cache-date="2008-11-03 16:11:19" cache-fast="0"> <city .../> <bank .../> <expeditions.../> <citizens .../> <cadavers .../> <map .../> <upgrades .../> </data> </hordes>
Les infos “ban” et “dead” sont passées dans la node <owner/> qui se trouve dans <headers/>.
La node <game/> est déplacée dans <headers/>
Toutes les infos de jeu (banque, carte, citoyens…) sont rangées dans une node <data/>.
La node <city/> s'enrichi d'une nouvelle node <defense/> qui contient le détail complet des défenses de la ville :
<defense base="5" items="39" citizens="1" upgrades="0" buildings="0" total="84" itemsMul="2"/>
base = défense initiale d'une ville
citizens = défense apportée par les citoyens (maison, travaux et bonus gardiens)
upgrades = défense apportée par les évolutions
buildings = défense apportée par les chantiers
items x itemsMul = défense des objets en banque (nombre x multiplicateur)
La node <data/> dispose de 2 attributs :
- le mode “cache-fast” (0 ou 1), nous y reviendrons,
- la date de dernière actualisation du cache.
La node <upgrades/> contient des nodes <up/> comme par exemple :
<upgrades total="4"> <up name="Atelier" level="1"/> <up name="Pompe" level="3"/> ... </upgrades>
L'attribut “total” est simplement le nombre total de niveaux d'évolutions.
Seules les données présentes dans <data/> sont concernées par la mise en cache.
Les données dans <headers/> sont toujours à jour, en temps réel.
Les infos que vous recevez sont mises à jour au maximum toutes les 5 minutes en mode “cache-fast” à 0, et toutes les minutes en mode “cache-fast” à 1.
Vous bénéficiez du mode “cache-fast” si vous en faites la demande.
Une clé unique pour votre site vous est alors attribuée, il suffit dès lors de l'envoyer avec votre requête pour récupérer le XML :
http://www.hordes.fr/xml?k=[api_key];sk=[site_key]
IMPORTANT : vous devez garder cette clé secrète ! Elle pourra être régénérée sur demande.
Les sites externes disposant d'une clé (voir ci-dessus) peuvent demander à passer en “mode sécurisé”.
Ce mode permet de recevoir une node <owner/> dans <headers/> qui donne le login du joueur, s'il est banni et s'il est mort.
IMPORTANT : les sites sans mode sécurisé n'auront pas ces infos !
Un site utilisant le mode sécurisé doit obligatoirement être accédé via l'annuaire de Hordes.fr ().
Une clé unique vous est alors envoyée en POST lors de l'appel de votre site. Il vous suffit d'effectuer les requètes, accompagnées de votre clé de site.
Les clés sécurisées seront reconnues et vous recevrez un XML avec la node <owner/> en cadeau.
Cela implique que vous ne pourrez plus avoir de formulaire de connexion du type ”Entrez votre clé API + login”.
Seul le site Hordes.fr pourra vous fournir une clé, via l'annuaire.
La clé en question est issue d'une combinaison entre votre clé site + la clé utilisateur. Cela signifie qu'une clé de “deepnight” sur HordesM@P ne sera pas la même qu'une clé de “deepnight” sur Poste de Contrôle.
Vous pouvez dorénavant appeler une URL de demande de XML en ajoutant le paramètre “comment=1” à l'URL.
Vous recevrez en réponse un XML dont les valeurs ne seront pas exploitables, mais qui sera commenté.
http://www.hordes.fr/xml?k=[api_key];comment=1
ou
http://www.hordes.fr/xml?k=[api_key];sk=[site_key];comment=1
Exemple de node commentée :
<building name="String" temporary="1/0 (vaut 1 si le chantier doit être détruit lors de la prochaine attaque)" id="Int" img="String"> .....CDATA..... </building>
Vous pouvez ainsi connaître le type de chaque attribut (entier, flottant, chaîne de caractères, date…) et éventuellement un commentaire pour les cas qui nécessitent une explication.
Certaines nodes peuvent ne pas apparaître selon le flux XML.
Par exemple, s'il n'y aucune évolution de réalisée dans la ville concernée, la node <evolutions/> sera vide et par conséquent non-commentée.
ATTENTION : cet appel passe outre le cache et ne doit pas être utilisé massivement (auquel cas la MT serait obligée de le désactiver). Il a pour seul but de permettre d'obtenir une ébauche de documentation automatique de n'importe quel XML.
Cette option n'est plus possible.
Chaque paire utilisateur + site disposant d'une clé unique, il vous est impossible de rediriger un visiteur authentifié sur votre site vers un autre site externe (vous ne connaissez pas la clé correspondante).
Vous pouvez néanmoins le faire en utilisant l'URL de “bounce” proposée par Hordes.
Cette URL ne peut être appelée que par un site externe disposant d'une clé API utilisateur “authentifiée” :
http://beta.hordes.fr/bounce?k=[api_key];to=[destination_id]
[api_key] : clé authentifiée de l'utilisateur.
[destination_id] : id du site vers lequel vous souhaitez être redirigé(e).
Optionnel : ajoutez l'attribut “redir=1” si vous souhaitez être redirigé(e) automatiquement sans passer par la page “disclaimer”.
Vous trouverez sur cette même page toute la documentation nécessaire pour comprendre et utiliser le bounce.
Ceci était un communiqué de notre cher Administrateur Deepnight.
Support | |
---|---|
Mailing-List | l'inscription se fait simplement en envoyant un e-mail avec le sujet “subscribe” et sans rien d'autre dans le corps du mail : hordes-dev-request@hordes.fr Ensuite, envoyez vos messages directement : hordes-dev@hordes.fr Les archives sont disponibles en ligne ici : Archives Hordes-dev |
Concernant l'API, l'accès se fera sur l'adresse :
Le champ [api_key] est généré depuis la page Réglages dans Mon âme : un identifiant unique anonyme pour chaque utilisateur.
L'appel à cette adresse renverra directement un flux XML complet de toutes les informations de la ville, des joueurs et de l'outre-monde.
<headers link="http://www.hordes.fr" iconurl="http://data.hordes.fr/gfx/icons/" secure="0" author="Motion Twin http://www.motion-twin.fr/" language="fr" version="2.10" avatarurl="http://imgup.motion-twin.com/" generator="haxe"> <!-- Optionnel : node 'owner' en mode XML sécurisé --> <game days="1" quarantine="0" datetime="2008-12-24 23:59:59" id="666"/> <owner> <citizen dead="0" hero="0" name="DarKalimHero" x="9" y="4" id="666" ban="0" job="basic" out="1" baseDef="0"> </citizen> <myZone .../> </owner> </headers>
Headers | Type | Informations diverses et générales |
---|---|---|
link | string | Lien vers le site internet |
iconurl | string | URL de base des images (items, buildings…), penser à ajouter le '.gif' à la fin. |
secure | 1/0 | Vaut 1 s'il s'agit d'un XML sécurisé |
author | string | Auteur du flux XML |
language | string | Langue utilisée pour les descriptifs |
version | float | Version actuelle de l'API |
avatarurl | string | URL de base des avatars utilisateurs |
generator | string | Langage de programmation utilisé pour générer le XML |
Le nœud error apparaît quand il y a une erreur ou une cause qui fait que les informations ne seront pas délivrées.
<error code="user_not_found"/>
En mode sécurisé, on peut obtenir le nom de l'utilisateur dans certaines erreurs :
<error code="not_in_game" name="Le Corbeau" id="2" hero="1"/>
Error | Type | Message d'erreur |
---|---|---|
code | string | mot clé d'erreur : missing_key : la clé doit être fournie user_not_found : la clé n'est pas valide not_in_game : le citoyen n'est pas dans une ville (mort) horde_attacking : la horde est en train d'attaquer invalid_keys : la paire key/skey est invalide site_key_required_for_secure_key : utilisation d'une clé sécurisé sans skey maintain : site hordes.fr en maintenance |
Le nœud owner apparaît lorsque le XML est un XML sécurisé (attribut secure=1 dans la node headers).
<owner> <citizen dead="0" hero="0" name="DarKalimHero" x="9" y="4" id="666" ban="0" job="basic" out="1" baseDef="0"> </citizen> <myZone dried="0" z="3" h="2"> <item name="Ouvre-boîte" count="1" id="23" img="can_opener" broken="1"/> </myZone> </owner>
Citizen | Type | Informations sur le joueur | |
---|---|---|---|
dead | 1/0 | Vaut 1 si le joueur est mort | |
hero | 1/0 | Vaut 1 si le joueur est un héros | |
name | string | Nom du citoyen | |
x / y | int | Position du joueur sur la carte | |
id | int | Identifiant du joueur | |
ban | 1/0 | Vaut 1 si le joueur est banni de la communauté | |
job | string | Métier du citoyen ”“ : Pas encore choisi “basic” : Simple habitant “collec” : Fouineur “guardian” : Gardien “eclair” : Éclaireur |
|
out | 1/0 | Vaut 1 si le joueur est dehors | |
baseDef | int | Défense de la maison qui compte dans la défense totale de la ville | |
MyZone | Type | Informations sur la zone du joueur | |
dried | 1/0 | Vaut 1 si la zone est épuisée | |
z | int | Nombre de zombies tel qu'il est vu par le joueur | |
h | int | Nombre de points de contrôle des humains de cette zone | |
Item | Type | Informations sur les objets au sol | |
name | string | Nom de l'objet | |
count | int | Quantité de cet objet | |
id | int | Identifiant de l'objet | |
img | string | Image de l'objet, ajouter '.gif' et l'attribut iconurl de la node 'headers' | |
broken | 1/0 | Vaut 1 si l'objet est cassé |
<game days="1" quarantine="0" datetime="2008-12-24 23:59:59" id="666"/>
game | Type | Informations relatives à la partie |
---|---|---|
days | int | Nombre de jour de survie |
quarantine | 1/0 | Vaut 1 si la partie a été mise en quarantaine suite à un bug |
datetime | date | Date à laquelle se rapporte l'ensemble des informations |
id | int | Identifiant de la ville |
<data cache-date="2008-11-24 21:41:48" cache-fast="0"> <city city="Vallée ravagée" door="1" hard="0" water="34" chaos="1" devast="1" x="19" y="10"> <defense base="5" items="0" citizen_guardians="1" citizen_homes="0" upgrades="0" buildings="0" total="6" itemsMul="2"/> </city> <bank> <item name="Poignée de vis et écrous" count="1" id="41" cat="Rsc" img="meca_parts" broken="0"/> </bank> <expeditions/> <citizens> <citizen dead="0" hero="0" name="Test" avatar="hordes/e/e/6a66a66a_66.jpg" x="9" y="4" id="666" ban="0" job="basic" out="1" baseDef="0"></citizen> </citizens> <cadavers/> <map hei="14" wid="14"> <zone x="9" y="4" nvt="0" tag="6" danger="2"/> <zone x="7" y="2" nvt="0" tag="1" danger="3"> <building name="Bâtiment non-deterré" type="-1" dig="19"/> </zone> </map> <upgrades total="0"/> <estimations/> </data>
data | Type | Informations générales |
---|---|---|
cache-date | date | [facultatif] Date et heure de génération de ce XML (Peut ne pas exister si le cache XML est désactivé). |
cache-fast | 1/0 | [facultatif] Vaut 1 si la fréquence d'actualisation du cache est rapide (1 min), 0 si elle est normale (5 min). |
<city city="Vallée ravagée" door="1" hard="0" water="34" chaos="1" devast="1" x="19" y="10"> <building name="Tour de guet" temporary="0" id="1050" img="item_tagger"> Cette tour placée près de l'entrée offre une estimation de l'attaque du soir et permet ainsi aux citoyens de mieux s'y préparer. Elle débloque également toutes les constructions liées aux situations d'urgence. </building> <building name="Portail" temporary="0" id="1062" img="small_door_closed"> Un bricolage un peu rustique qui permet d'empêcher l'ouverture (rarement désirée) de la porte de 23h40 à minuit. La porte doit toutefois toujours être fermée manuellement. </building> <news z="24"> <content> <p>2 citoyens manquent à l'appel ce matin... Ils sont sortis cette nuit... Mais pas un seul n'est revenu... <strong>Pas UN SEUL</strong>.</p><p>A part ça, nos défenses ont suffi pour résister cette nuit. Je doute que ça soit aussi bien ce soir, les zombies vont vraiment avoir les crocs...</p> </content> </news> <defense base="5" items="1" citizen_guardians="1" citizen_homes="3" upgrades="0" buildings="5" total="16" itemsMul="2"/> </city>
City | informations concernant la ville | ||
---|---|---|---|
city | nom de la ville | ||
door | 0 : porte fermée 1 : porte ouverte |
||
hard | 0 : ville normale 1 : pandémonium |
||
water | quantité d'eau dans le puits | ||
chaos | 1 si en mode chaos, 0 autrement | ||
devast | 1 si dévastée, 0 autrement | ||
x / y | position de la ville sur la carte | ||
building | liste des chantiers contruits | ||
name | nom de la construction | ||
temporary | 1 : chantier temporaire 0 : chantier permanent |
||
id | identifiant de la construction | ||
img | nom de l'icône du chantier. Pour l'url complètete, faire iconurl + img + .gif . |
||
contenu | description RP du chantier. | ||
news | La Gazette. | ||
z | nombre de zombie lors de l'attaque de la veille | ||
def | La valeur de la défense au moment de l'attaque. | ||
content | Le contenu de la Gazette. Contient du html pour la mise en forme. |
<bank> <item name="Pile" count="9" id="2" cat="Rsc" img="pile" broken="0"/> <item name="Boîte de Conserve ouverte" count="7" id="4" cat="Food" img="can_open" broken="0"/> <item name="Tournevis" count="2" id="14" cat="Weapon" img="screw" broken="0"/> ... </bank>
bank | contenu de la banque | |
---|---|---|
item | informations propres à un type d'objet | |
name | nom de l'objet | |
count | quantité | |
id | identifiant de l'objet | |
cat | catégorie de l'objet, utilisée pour le tri de la banque | |
img | image associée à l'objet [iconurl]item_[img].gif |
|
broken | vaut 1 si l'objet est cassé |
<expeditions> <expedition name="Expédition jour 3 [4PA]" author="Xiiwit" length="4" authorId="17057"> <point x="6" y="6"/> <point x="5" y="6"/> <point x="5" y="5"/> <point x="6" y="5"/> </expedition> ... </expeditions>
expeditions | liste des expéditions | ||
---|---|---|---|
expedition | chemin d'une expéditions | ||
name | nom de l'expédition concaténé avec la distance | ||
author | nom du citoyen qui à crée le chemin | ||
length | distance de l'expédition | ||
authorId | identifiant du citoyen qui à crée le chemin | ||
point | étape du expédition | ||
x / y | coordonnée |
<citizens> <citizen dead="0" hero="1" name="DarKalimHero" avatar="hordes/a/2/49329743_19903.jpg" x="8" y="7" id="19903" ban="0" job="guardian" out="1" baseDef="0"></citizen> <citizen dead="0" hero="1" name="darkMK" avatar="hordes/5/5/a6b5ca88_85114.jpg" x="11" y="6" id="85114" ban="0" job="hunter" out="0" baseDef="0"></citizen> <citizen dead="0" hero="0" name="Dimedolorole" avatar="hordes/9/d/ca33d9b3_387943.jpg" x="12" y="5" id="387943" ban="0" job="basic" out="1" baseDef="1">Quel style, quel style !</citizen> <citizen dead="0" hero="0" name="emua" avatar="hordes/2/c/cdc390a8_339438.jpg" x="11" y="6" id="339438" ban="0" job="basic" out="0" baseDef="0"></citizen> ... </citizens>
citizens | liste des citoyens | |
---|---|---|
citizen | informations propres à un citoyen | |
dead | 1 : Le citoyen est mort. 0 : Le citoyen est vivant. |
|
hero | 1 : âme de héros. 0 : âme normale. |
|
name | nom du citoyen | |
avatar | url de l'avatar du citoyen : avatarurl + avatar . |
|
x / y | position du citoyen sur la carte | |
id | identifiant du citoyen | |
ban | 1 : banni. 0 : normal |
|
job | métier du citoyen ”“ : pas encore choisi “basic” : habitant “collec” : collecteur “guardian” : gardien “eclair” : éclaireur “hunter” : ermite “tech” : technicien |
|
out | 1 : Le citoyen est dans l'outre-monde. 0 : Le citoyen est en ville. (redondant avec la position) |
|
baseDef | Défense de la maison comptant pour la défense de la ville. 0 : Lit de camp. 1 : Tente. 3 : Taudis. 4 : Baraque. 6 : Maison. 8 : Maison clôturée. 12 : Abri fortifié. 20 : Bunker. 40 : Château. |
|
contenu | Annonce personnelle (celle qui apparaît sur la page citoyens) |
<cadavers> <cadaver name="Haoshin" dtype="5" id="6144" day="1"> <msg> <![CDATA[Message de mort]]> </msg> </cadaver> <cadaver name="Thesavantfou" dtype="5" id="36826" day="1"> <cleanup type="garbage" user="Brounie"/> <msg> <![CDATA[]]> </msg> </cadaver> ... </cadavers>
cadavers | liste des morts | ||
---|---|---|---|
cadaver | informations propres à un mort | ||
name | nom du mort | ||
dtype | type de la mort 0 : Mort inconnue 1 : Déshydraté 2 : Suicide par pendaison (pour les admins seulement) 3 : Cyanure 4 : Pendu par la communauté 5 : Dévoré dehors 6 : Dévoré chez soi 7 : Manque de drogue 8 : Infection 9 : Fusillé par un admin (modération) 10 : Désintégré définitivement (compte supprimé) 11 : poison 12 : dévoré par une goule 13 : goule tué |
||
id | identifiant du mort | ||
day | jour de la mort bug : si dtype = 5, il faut ajouter +1 |
||
cleanup | Information sur la destruction du corps | ||
type | type de destruction garbage : Sorti water : Dissous à l'eau xxx : À completer |
||
user | pseudo du joueur ayant détruit le corps | ||
msg | dernière parole |
<map hei="12" wid="12"> <zone x="5" y="0" nvt="1"/> <zone x="6" y="0" tag="4" danger="3" nvt="0"> <building name="Abris anti-atomique" type="10" dig="0"> Le numéro est à moitié effacé, mais il s'agissait vraisemblablement de l'<strong>abris 14</strong>. Si on en juge par les corps décrépis à l'intérieur, le système de fermeture du sas <strong>n'a pas dû fonctionner comme prévu</strong>. Ca arrive. </building> </zone> <zone x="7" y="0" nvt="1"/> <zone x="8" y="0" nvt="1"/> <zone x="5" y="1" nvt="1"/> <zone x="6" y="1" danger="2"/> ... </map>
map | Définition de l'attribut | ||
---|---|---|---|
hei | hauteur de la carte | ||
wid | largeur de la carte | ||
zone | informations propres à une case | ||
x / y | position de la case | ||
nvt | not visited today. 1 : La zone n'a pas été visitée aujourd'hui. 0 : La zone a été visitée aujourd'hui. |
||
tag | identifiant du marqueur 0 : RAS 1 : citoyen bloqué 2 : ressources abandonnées 3 : objet divers 4 : zone épuisée 5 : zone sécurisée 6 : zone à déblayer 7 : entre 5 et 8 zombies 8 : 9 zombies et plus |
||
danger | estimation du nombre de zombie nœud absent : aucun zombie ou zone pas explorée (en fonction du nvt) 1 : zombies isolés (<3) 2 : meute de zombies (<5) 3 : horde de zombies |
||
z | nombre de zombie exact (si tour de guet évoluée) | ||
building | bâtiment de la case | ||
name | nom du bâtiment | ||
type | identifiant du bâtiment | ||
dig | Nombre de fois à creuser qu'il reste sur le bâtiment. | ||
contenu | Description RP du bâtiment. |
Attention: les cases jamais explorées n'apparaissent pas dans le flux (pas de noeud <zone x=“X” y=“Y” /> correspondant)