Login

Site communautaire

    • Site communautaire

      Bonjour à toutes et à tous,

      Développant, sur mon temps perdu, des petits outils utiles ou pas selon les points de vue, concernant Travian Kingdoms, je me permets de faire un topo ici concernant les sites extérieurs.

      1. Les conditions

      Pour ça, référez-vous au post concernant les fan-sites (lien ici)

      2. Récupérer les données d'un serveur de jeu.

      Auparavant, il s'agissait d'un fichier map.sql qu'il était aisé de télécharger :

      HTML Source Code

      1. http://[gameworld]/map.sql


      [gameworld] : l'adresse du serveur de jeu, par exemple : ks1-fr.travian.com/ .

      Cependant, TravianGames a évolué plus rapidement que les sites communautaires ou d'outils extérieurs (gettertools, kirilloid, etc... ), et maintenant les données sont transmises au format JSON.

      Avant d'aller un peu plus loin, je passe par des conventions que j'expliquerai au fur et à mesure qu'elles apparaîtront.

      Maintenant, pour récupérer les données, il faut passer par quelques étapes supplémentaires.
      2.a Obtention d'une clef d'API

      Pour chaque gameworld (ou serveur de jeu), il faut une clef d'API. Sans cette clef, pas de données.

      Pour l'obtenir, rien de plus simple :
      Dans votre navigateur internet favori, écrivez l'adresse suivante :

      HTML Source Code

      1. http://[gameworld]/api/external.php?action=requestApiKey&email=[email]&siteName=[siteName]&siteUrl=[webSiteUrl]&public=[siteDisplay]


      Les conventions :
      [email] : une adresse e-mail valide via laquelle TravianGames pourra vous contacter.
      [siteName] : un nom de site internet (le texte que vous avez dans vos onglets, comme par exemple : "Travian: Kingdoms fr1")
      [webSiteUrl] : l'adresse de votre site internet, que TravianGames pourra consulter si l'envie leur prend, par exemple : [url]http://www.cecinestpasunvraisiteinternet.stupide[/url] .
      [siteDisplay] : Là, c'est soit "false" si vous voulez rester caché, ou "true" si vous voulez que TravianGames donne un lien vers votre site internet dans un futur assez lointain (je n'ai pas encore une seule fois vu une url dévoilée ...)

      Quand vous aurez validé l'adresse web, du texte s'affichera comme suit :

      JavaScript Source Code

      1. {
      2. requestId : string,
      3. error: string,
      4. response:
      5. {
      6. privateApiKey : string,
      7. publicSiteKey : string
      8. }
      9. }

      Attention
      Ce n'est pas comme cela que cela s'affichera vraiment. Vous aurez en réalité un fratras de caractères affichés à l'écran, dans ce qui vous semblera être le bordel le plus complet.
      L'important, c'est de voir si vous avez "error" d'affiché :
      - si oui : vous êtes dans le pétrin, vérifiez que vous avez tout bien fait comme il faut.
      - si non : ok, on continue.

      Dans le cas présent, j'ai écrit "string" plusieurs fois. En programmation, cela signifie chaîne de caractères. Et vous devriez en avoir 3, puisque la ligne "error" n'est pas apparue.
      Il est important de sauvegarder les deux clefs privateApiKey et publicSiteKey, car elles sont les uniques moyens pour vous de récupérer les données de jeu!

      2.b Modification des paramètres d'une clef d'API

      Vous avez eu les clefs, mais vous devez penser à mettre à jour les informations que vous avez envoyé à TravianGames.
      Votre email a peut-être changé, ou bien le nom de votre site, ou bien son adresse ... ou bien vous voulez dévoiler aux joueurs que votre site est fonctionnel?

      Pour cela, rien de plus simple :

      HTML Source Code

      1. http://[gameworld]/api/external.php?action=updateSiteData&privateApiKey=[privateApiKey]&&email=[email]&siteName=[siteName]&siteUrl=[webSiteUrl]&public=[siteDisplay]


      Voilà la première utilisation possible de la clef privée.

      En réponse à votre requête, vous devriez avoir la valeur "response" à "true" si vous l'avez bien écrite.
      2.c Récupérer les données

      Vos données sont à jour, et maintenant, vous voulez récupérer les données du serveur de jeu sur lequel vous vous êtes inscrit.

      Voici le lien à suivre :

      HTML Source Code

      1. http://[gameworld]/api/external.php?action=getMapData&privateApiKey=[privateApiKey]

      Avec ce lien, vous récupérerez un instantanné des données du serveur de jeu du moment auquel vous aurez envoyé votre requête.

      Il y a un argument que vous pouvez ajouter au lien précédent :

      HTML Source Code

      1. http://[gameworld]/api/external.php?action=getMapData&privateApiKey=[privateApiKey]&date=[date]

      Cependant, la date doit être formatée comme dans cet exemple : 27.04.2014 sinon, ça marchera pas.

      Date ou pas, voici comment sera structuré la réponse de l'API :

      JavaScript Source Code

      1. {
      2. requestId : string,
      3. response:
      4. {
      5. gameworld : {
      6. name: string,
      7. startTime: int,
      8. speed: int,
      9. speedTroops: int,
      10. lastUpdateTime: int,
      11. date : int,
      12. version : string
      13. },
      14. players :
      15. [
      16. {
      17. playerId : int,
      18. name : string,
      19. tribeId : int,
      20. kingdomId : int
      21. allianceId : int,
      22. treasures: int,
      23. role: int,
      24. externalLoginToken: string,
      25. villages :
      26. [
      27. {
      28. villageId: int,
      29. x: int,
      30. y: int,
      31. population: int,
      32. isMainVillage: boolean,
      33. isCity: boolean
      34. }
      35. ]
      36. }
      37. ],
      38. alliances :
      39. [
      40. {
      41. allianceId: int,
      42. nameShort: string,
      43. nameLong: string,
      44. victoryPoints: int,
      45. population: int,
      46. creationTime: int
      47. }
      48. ],
      49. map:
      50. [
      51. {
      52. radius: int,
      53. cells:
      54. [
      55. {
      56. id: int,
      57. x: int,
      58. y: int,
      59. resType: string,
      60. oasis: int,
      61. landscape: string,
      62. kingdomId: int
      63. }
      64. ]
      65. }
      66. ]
      67. }
      68. }
      Display All

      (Je sais, cet extrait de code est long, mais il permet de voir comment les informations sont structurées)

      2.d Comprendre la structure des données

      Les données reçues par la dernière requête sont structurées comme suit (je ne prends en compte que la partie "response"):
      - gameworld,
      - players,
      - alliances,
      - map,
      - landscape.

      (Je n'ai pas inclus landscape dans mon extrait ... je vous laisser récupérer des données pour comprendre pourquoi :p)

      2.d.i Les données GAMEWORLD

      Elles sont constituées des informations suivantes :
      [table]
      [tr]
      [td]Valeur[/td]
      [td]Type[/td]
      [td]Description[/td]
      [/tr]
      [tr]
      [td]name[/td]
      [td]string[/td]
      [td]Le nom du serveur, "fr1" par exemple[/td]
      [/tr]
      [tr]
      [td]startTime[/td]
      [td]int[/td]
      [td]heure de démarrage du jeu sur le serveur, en millisecondes (Timestamp UNIX)[/td]
      [/tr]
      [tr]
      [td]speed[/td]
      [td]int[/td]
      [td]vitesse du serveur, en particulier pour la production de ressources[/td]
      [/tr]
      [tr]
      [td]speedTroops[/td]
      [td]int[/td]
      [td]vitesse des troupes sur le serveur[/td]
      [/tr]
      [tr]
      [td]lastUpdateTime[/td]
      [td]int[/td]
      [td]heure à laquelle a eu lieu la dernière modification du serveur[/td]
      [/tr]
      [tr]
      [td]date[/td]
      [td]int[/td]
      [td]information date/heure de génération du résultat de la requête[/td]
      [/tr]
      [tr]
      [td]version[/td]
      [td]string[/td]
      [td]version du jeu ... je n'ai jamais vu que 1.0[/td]
      [/tr]
      [/table]

      2.d.ii Les données PLAYERS
      2.d.iii Les données ALLIANCES
      2.d.iv Les données MAP

      --- le reste sera écrit prochainement ---[/email]
      Alpha : Knud, in "M&Ms" - Closed Beta : Knud, in "xTools" - Fast Iteration Server : Knud, in "TOP" - COM2 (Open Beta) : Knud, in "xTools" *
      FR5 : Ragnar, in "CMDB" *

      The post was edited 2 times, last by Knud: Modification du lien vers le post de "fan-site policy" ().

    • Bonjour,

      Après discussion avec Milvort, je vais ouvrir un autre sujet, qui sera mieux organisé, à propos du même sujet.

      Si un modérateur pouvait clore ce sujet, je l'en remercie d'avance.

      Cordialement,

      Knud
      Alpha : Knud, in "M&Ms" - Closed Beta : Knud, in "xTools" - Fast Iteration Server : Knud, in "TOP" - COM2 (Open Beta) : Knud, in "xTools" *
      FR5 : Ragnar, in "CMDB" *
    • Knud_FR wrote:


      1. Les conditions

      Pour ça, référez-vous au post concernant les fan-sites (lien ici : forum.kingdoms.travian.com/fr/showthread.php?t=6 )
      Le lien ne mène nul part ? Pourquoi ? Il n'existe plus de fan sites ?
      "La meilleure vengeance est de mépriser l'injurieux, et d'oublier l'offense."Citation de Madeleine de Puisieux (1798)

      "L'avantage d'être intelligent, c'est qu'on peut toujours faire l'imbécile, alors que l'inverse est totalement impossible."
      Citation de Albert Einstein (1934)