Veřejně dostupná data: Porovnání verzí

Z Tribalwars Wiki CZ
Jump to navigation
mBez shrnutí editace
m (Zamkla stránku „Veřejně dostupná data“ ([Editace=Povolit jen správcům] (do odvolání) [Přesunutí=Povolit jen správcům] (do odvolání)))
 
(Není zobrazeno 8 mezilehlých verzí od 4 dalších uživatelů.)
Řádek 1: Řádek 1:


== Veřejně dostupná data ==
= Veřejně dostupná data =


Firma InnoGames dává pro Divoké Kmeny (Tribal Wars) k dipozici veřejně dostupná data. Data využitelná pro statistiky, mapy či jiné uživatelské programy.
Firma InnoGames dává pro Divoké Kmeny (Tribal Wars) k dipozici veřejně dostupná data. Data využitelná pro statistiky, mapy či jiné uživatelské programy.
Řádek 6: Řádek 6:
'''Nabízené informace řadím do třech kategorií:'''
'''Nabízené informace řadím do třech kategorií:'''


'''1)''' Obecná data. Takřka neměnná, společná pro všechny servery (země) nebo alespoň společná pro daný server.
'''1)''' Obecná data: takřka neměnná, společná pro všechny servery (země) nebo alespoň společná pro daný server.


'''2)''' Data konfigurační. Individuální pro každý svět, ale v čase takřka neměnná.
'''2)''' Data konfigurační: individuální pro každý svět, ale v čase takřka neměnná.


'''3''') Data proměnná. Individuální pro každý svět a proměnná v čase.
'''3''') Data proměnná: individuální pro každý svět a proměnná v čase.
 
 
== Obecná data ==
 
Společná pro mnoho světů či serverů. (Prakticky) neměnná.
 
 
 
'''1. Seznamy světů daného serveru'''
 
Na každém serveru je možno hrát několik světů. A každý server nabízí pro strojové zpracování seznam všech právě běžících světů (Tedy bez již uzavřených. A včetně speedů - objevujících se a mizících dle toho zda speed právě běží či ne).
 
Seznam je k nalezení na adrese serveru + cesty "/backend/get_servers.php". Pro Divoké Kmeny je to tedy www.divokekmeny.cz/backend/get_servers.php
 
Data jsou v tzv. serializovaném tvaru pro php a je možné využít funkci [http://php.net/manual/en/function.unserialize.php PHP:unserialize]<br><br>
PHP kód:
$file = file_get_contents('http://www.die-staemme.de/backend/get_servers.php');
$servers = unserialize($file);<br><br>
Poté je vytvořeno pole ve tvaru '''zkratka_světa => URL_světa'''
 
Praktický příklad použití ([http://cs28.divokekmeny.cz/stat.php link])
 
 
== Konfigurační data ==
 
Každý svět má své globální nastavení. Nastavení se může lišit svět od světa, ale jakmile je jednou dáno, tak se dobu trvání světa takřka nemění.<i>(Měnit lze např. po dohodě s hráči, u nás to byla třeba změna dosahu šlechtice na cs1).</i>
 
Data pro daný svět jsou k nalezení na URL adrese světa (ne obecném serveru země, ale už konkrétního světa), přidáním určité cesty.
----
 
 
'''Základní konfigurační soubor: config'''
 
Cesta: '''"/interface.php?func=get_config"''' (pro cs1: http://cs1.divokekmeny.cz/interface.php?func=get_config)
 
Popis v DE: [http://forum.die-staemme.de/showthread.php?69629-XML-Bedeutungen #1], [http://forum.die-staemme.de/showthread.php?53077-get_config-bedeutungen #2].
----
 
'''Budovy - popis nastavení budov'''
 
Cesta: '''"/interface.php?func=get_building_info"''' (pro cs1: http://cs1.divokekmeny.cz/interface...._building_info)
----
 
'''Jednotky - popis nastavení jednotek'''
 
Cesta: '''"/interface.php?func=get_unit_info"''' (pro cs1: http://cs1.divokekmeny.cz/interface....=get_unit_info)
 
 
Obsahuje např. základní rychlost jednotek - každé jednotky zvlášť. <i><i>(Reálná, absolutní, rychlost se bere z této základní, násobené rychlostí světa a rychlostí jednotek z konfiguračního souboru)</i>
----
 
V čitelné podobě nabízí zobrazení konfigurace různé externí servery, např. twstats, pro daný server a svět pod odkazem [http://cz.twstats.com/cs1/index.php?page=settings Nastavení světa]. Twplus dává seznam [http://cz1.twplus.org/ výpis vč jednotek a budov].
 
 
== Proměnná data světa ==
 
Každý svět jak se vyvíjí, mění se. Přibývají hráči, mění se majitelé vesnic, kmeny a podobně. Pro externí statistiky a mapy dává InnoGames k dispozici "aktuální" stav. Aktuální píši v uvozovkách, protože dle pravidel '''nelze statistiky stahovat více než 1* za hodinu''' (přetížil by se server). Navíc by nám to nebylo nic platné. Odzkoušel jsem, že níže zmiňované údaje (až na výjimky) jsou stejně na serveru připraveny jednou za cca dvě hodiny a pak po dobu té hodiny-dvou stahujeme stále stejné hodnoty.
 
Všechny soubory jsou ve formátu "comma delimited" - texty oddělené čárkou (zde vždy bez případného uvození), každá řádka ukončená UNIXovým typem konce řádky (tedy jen samotné '\n').
 
Všechny soubory používají pro národní a speciální znaky kódování [http://cs.wikipedia.org/wiki/UTF-8 UTF-8]. Některé údaje (typicky názvy) jsou navíc zakódovány pro přímé zobrazení v adresové řádce prohlížeče. Pro srozumitelnější formát nutné použít [http://cz2.php.net/urldecode urldecode] a případně ještě navíc [http://cz2.php.net/html_entity_decode html_entity_decode] (po urldecode).
 
<i>Opět, adresa dat se získá z URL adresy světa přidáním místní cesty. (Přímé odkazy tentokrát nedávám, některé soubory mají i 4MB zabalené, 12MB v rozbaleném tvaru. Nechci zbytečně zatěžovat server, jak by na .txt klepnul každý BFU co sem zabrousí)</i>
----
 
Informace o vesnicích:<br>
'''-/map/village.txt''' nebo '''-/map/village.txt.gz:'''
 
$id, $name, $x, $y, $tribe, $points, $bonus
 
$id - id vesnice<br>
$name - jméno vesnice /html_entity_decode(urldecode($name)/<br>
$x,$y - souřadnice vesnice na mapě<br>
$tribe - ID hráče, kterému vesnice právě patří (0 pro šedivky)<br>
$points - kolik bodů má vesnice<br>
$bonus- jaký typ bonusu má vesnice<br>
----
 
Informace o hráčích:<br>
'''-/map/tribe.txt''' nebo '''-/map/tribe.txt.gz'''
 
$id, $name, $ally, $villages, $points, $rank
 
$id - ID hráče<br>
$name - jméno hráče /urldecode($name)/<br>
$ally - ID kmenu, ve kterém hráč právě je (0 bez kmenu)<br>
$villages - počet vesnic hráče<br>
$points - počet bodů hráče<br>
$rank - pořadí hráče v žebříčku hráčů<br>
----
 
Informace o kmenech:<br>
'''-/map/ally.txt''' nebo '''-/map/ally.txt.gz'''
 
$id, $name, $tag, $members, $villages, $points, $all_points, $rank
 
$id - ID kmenu<br>
$name - jméno kmenu /html_entity_decode(urldecode($name)/<br>
$tag - tag kmenu /html_entity_decode(urldecode($tag)/<br>
$members - počet členů kmenu<br>
$villages - počet vesnic kmenu (součet vesnic všech hráčů kmenu)<br>
$points - součet bodů prvních 40 hráčů kmenu<br>
$all_points - součet bodů všech hráčů kmenu<br>
$rank - pořadí kmenu v žebříčku kmenů (tedy, počítáno dle bodů prvních 40 hráčů)<br>
----
 
 
Informace o bodech poražený protivníky:<br>
v útoku: '''-/map/kill_att.txt''' nebo '''-/map/kill_att.txt.gz'''<br>
v obraně: '''-/map/kill_def.txt''' nebo '''-/map/kill_def.txt.gz'''<br>
jako podporovatel: '''-/map/kill_sup.txt''' nebo '''-/map/kill_sup.txt.gz'''<br>
celkem: '''-/map/kill_all.txt''' nebo '''-/map/kill_all.txt.gz''' (pouhý součet att+def)<br>
 
$rank, $tribe_id, $kills
 
$rank - pořadí v žebříčku poražených protivníků (útoku / obrany / celkovém)<br>
$tribe_id - ID hráče, jehož body poražených protivníků řádka popisuje<br>
$kills - počet bodů poražených protivníků<br>
----
 
Informace o zabírání vesnic:<br>
'''-/map/conquer.txt''' nebo '''-/map/conquer.txt.gz'''
 
Kompletní seznam všech záborů od začátku světa. Pozor, zešednutí vesnice soubor neobsahuje (ale obráceně, zabrání šedivek ano). Stejně tak zde nejsou nové vesnice (když se přihlásí nový hráč do světa). Je to seznam záborů pomocí šlechtice v doslovném výrazu.
 
$village_id, $unix_timestamp, $new_owner, $old_owner
 
$village_id - ID vesnice která byla zabrána<br>
$unix_timestamp - čas záboru ve formátu unix timestamp<br>
$new_owner - ID hráče nového vlastníka (vždy různé od 0)<br>
$old_owner - ID starého hráče (0, šlo-li o šedivku)<br>
----
 
A speciální soubor záborů (max. za posledních 24h):<br> '''-/interface.php?func=get_conquer&since=unix_timestamp'''
 
Jedná se o soubor ve stejném formátu jako "conquer.txt" a popisuje zábory během poslední doby. Místo unix_timestamp je nutné dosadit reálný čas (ne starší 24h), odkdy chceme zábory zjistit. Dostaneme seznam záborů od unix_timestamp až do současné chvíle.
 
Také je to asi jediný případ, kdy se na serveru (asi) sahá přímo do databáze a dostaneme tak údaje opravdu aktuální. Ne zpožděné o hodinu-dvě. <i>Dlužno poznamenat, že v CZ nápovědě není tento odkaz zmiňován a v EN či DE jsem nenašel povolení z něj tahat častěji (než onu povolenou 1* za hodinu) - nevím, zda jde opět o nedotaženost pravidel nebo úmysl - '''takže častěji jak 1* za hodinu se zvenku''' o zabrání vesnic stejně nemáme šanci legálně dozvědět.</i>
 
 
''Autor: Turgon''

Aktuální verze z 25. 3. 2021, 00:11

Veřejně dostupná data

Firma InnoGames dává pro Divoké Kmeny (Tribal Wars) k dipozici veřejně dostupná data. Data využitelná pro statistiky, mapy či jiné uživatelské programy.

Nabízené informace řadím do třech kategorií:

1) Obecná data: takřka neměnná, společná pro všechny servery (země) nebo alespoň společná pro daný server.

2) Data konfigurační: individuální pro každý svět, ale v čase takřka neměnná.

3) Data proměnná: individuální pro každý svět a proměnná v čase.


Obecná data

Společná pro mnoho světů či serverů. (Prakticky) neměnná.


1. Seznamy světů daného serveru

Na každém serveru je možno hrát několik světů. A každý server nabízí pro strojové zpracování seznam všech právě běžících světů (Tedy bez již uzavřených. A včetně speedů - objevujících se a mizících dle toho zda speed právě běží či ne).

Seznam je k nalezení na adrese serveru + cesty "/backend/get_servers.php". Pro Divoké Kmeny je to tedy www.divokekmeny.cz/backend/get_servers.php

Data jsou v tzv. serializovaném tvaru pro php a je možné využít funkci PHP:unserialize

PHP kód: $file = file_get_contents('http://www.die-staemme.de/backend/get_servers.php'); $servers = unserialize($file);

Poté je vytvořeno pole ve tvaru zkratka_světa => URL_světa

Praktický příklad použití (link)


Konfigurační data

Každý svět má své globální nastavení. Nastavení se může lišit svět od světa, ale jakmile je jednou dáno, tak se dobu trvání světa takřka nemění.(Měnit lze např. po dohodě s hráči, u nás to byla třeba změna dosahu šlechtice na cs1).

Data pro daný svět jsou k nalezení na URL adrese světa (ne obecném serveru země, ale už konkrétního světa), přidáním určité cesty.



Základní konfigurační soubor: config

Cesta: "/interface.php?func=get_config" (pro cs1: http://cs1.divokekmeny.cz/interface.php?func=get_config)

Popis v DE: #1, #2.


Budovy - popis nastavení budov

Cesta: "/interface.php?func=get_building_info" (pro cs1: http://cs1.divokekmeny.cz/interface...._building_info)


Jednotky - popis nastavení jednotek

Cesta: "/interface.php?func=get_unit_info" (pro cs1: http://cs1.divokekmeny.cz/interface....=get_unit_info)


Obsahuje např. základní rychlost jednotek - každé jednotky zvlášť. (Reálná, absolutní, rychlost se bere z této základní, násobené rychlostí světa a rychlostí jednotek z konfiguračního souboru)


V čitelné podobě nabízí zobrazení konfigurace různé externí servery, např. twstats, pro daný server a svět pod odkazem Nastavení světa. Twplus dává seznam výpis vč jednotek a budov.


Proměnná data světa

Každý svět jak se vyvíjí, mění se. Přibývají hráči, mění se majitelé vesnic, kmeny a podobně. Pro externí statistiky a mapy dává InnoGames k dispozici "aktuální" stav. Aktuální píši v uvozovkách, protože dle pravidel nelze statistiky stahovat více než 1* za hodinu (přetížil by se server). Navíc by nám to nebylo nic platné. Odzkoušel jsem, že níže zmiňované údaje (až na výjimky) jsou stejně na serveru připraveny jednou za cca dvě hodiny a pak po dobu té hodiny-dvou stahujeme stále stejné hodnoty.

Všechny soubory jsou ve formátu "comma delimited" - texty oddělené čárkou (zde vždy bez případného uvození), každá řádka ukončená UNIXovým typem konce řádky (tedy jen samotné '\n').

Všechny soubory používají pro národní a speciální znaky kódování UTF-8. Některé údaje (typicky názvy) jsou navíc zakódovány pro přímé zobrazení v adresové řádce prohlížeče. Pro srozumitelnější formát nutné použít urldecode a případně ještě navíc html_entity_decode (po urldecode).

Opět, adresa dat se získá z URL adresy světa přidáním místní cesty. (Přímé odkazy tentokrát nedávám, některé soubory mají i 4MB zabalené, 12MB v rozbaleném tvaru. Nechci zbytečně zatěžovat server, jak by na .txt klepnul každý BFU co sem zabrousí)


Informace o vesnicích:
-/map/village.txt nebo -/map/village.txt.gz:

$id, $name, $x, $y, $tribe, $points, $bonus

$id - id vesnice
$name - jméno vesnice /html_entity_decode(urldecode($name)/
$x,$y - souřadnice vesnice na mapě
$tribe - ID hráče, kterému vesnice právě patří (0 pro šedivky)
$points - kolik bodů má vesnice
$bonus- jaký typ bonusu má vesnice


Informace o hráčích:
-/map/tribe.txt nebo -/map/tribe.txt.gz

$id, $name, $ally, $villages, $points, $rank

$id - ID hráče
$name - jméno hráče /urldecode($name)/
$ally - ID kmenu, ve kterém hráč právě je (0 bez kmenu)
$villages - počet vesnic hráče
$points - počet bodů hráče
$rank - pořadí hráče v žebříčku hráčů


Informace o kmenech:
-/map/ally.txt nebo -/map/ally.txt.gz

$id, $name, $tag, $members, $villages, $points, $all_points, $rank

$id - ID kmenu
$name - jméno kmenu /html_entity_decode(urldecode($name)/
$tag - tag kmenu /html_entity_decode(urldecode($tag)/
$members - počet členů kmenu
$villages - počet vesnic kmenu (součet vesnic všech hráčů kmenu)
$points - součet bodů prvních 40 hráčů kmenu
$all_points - součet bodů všech hráčů kmenu
$rank - pořadí kmenu v žebříčku kmenů (tedy, počítáno dle bodů prvních 40 hráčů)



Informace o bodech poražený protivníky:
v útoku: -/map/kill_att.txt nebo -/map/kill_att.txt.gz
v obraně: -/map/kill_def.txt nebo -/map/kill_def.txt.gz
jako podporovatel: -/map/kill_sup.txt nebo -/map/kill_sup.txt.gz
celkem: -/map/kill_all.txt nebo -/map/kill_all.txt.gz (pouhý součet att+def)

$rank, $tribe_id, $kills

$rank - pořadí v žebříčku poražených protivníků (útoku / obrany / celkovém)
$tribe_id - ID hráče, jehož body poražených protivníků řádka popisuje
$kills - počet bodů poražených protivníků


Informace o zabírání vesnic:
-/map/conquer.txt nebo -/map/conquer.txt.gz

Kompletní seznam všech záborů od začátku světa. Pozor, zešednutí vesnice soubor neobsahuje (ale obráceně, zabrání šedivek ano). Stejně tak zde nejsou nové vesnice (když se přihlásí nový hráč do světa). Je to seznam záborů pomocí šlechtice v doslovném výrazu.

$village_id, $unix_timestamp, $new_owner, $old_owner

$village_id - ID vesnice která byla zabrána
$unix_timestamp - čas záboru ve formátu unix timestamp
$new_owner - ID hráče nového vlastníka (vždy různé od 0)
$old_owner - ID starého hráče (0, šlo-li o šedivku)


A speciální soubor záborů (max. za posledních 24h):
-/interface.php?func=get_conquer&since=unix_timestamp

Jedná se o soubor ve stejném formátu jako "conquer.txt" a popisuje zábory během poslední doby. Místo unix_timestamp je nutné dosadit reálný čas (ne starší 24h), odkdy chceme zábory zjistit. Dostaneme seznam záborů od unix_timestamp až do současné chvíle.

Také je to asi jediný případ, kdy se na serveru (asi) sahá přímo do databáze a dostaneme tak údaje opravdu aktuální. Ne zpožděné o hodinu-dvě. Dlužno poznamenat, že v CZ nápovědě není tento odkaz zmiňován a v EN či DE jsem nenašel povolení z něj tahat častěji (než onu povolenou 1* za hodinu) - nevím, zda jde opět o nedotaženost pravidel nebo úmysl - takže častěji jak 1* za hodinu se zvenku o zabrání vesnic stejně nemáme šanci legálně dozvědět.


Autor: Turgon