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

Z Tribalwars Wiki CZ
Jump to navigation
Bez shrnutí editace
(Není zobrazeno 8 mezilehlých verzí od 2 dalších uživatelů.)
Řádek 1: Řádek 1:
=Konfigurace světa=


Každý svět má svá nastavení - jako jsou např. rychlosti jednotek, rychlosti obchodníků, omezení typu jednotek a podobně. Aby mohly externí programy plnohodnotně pracovat s ostatními veřejnými daty, poskytují Divoké Kmeny "výcuc" z jejich konfigurace a dávají některé informace o nastavení veřejně k dispozici.
= Veřejně dostupná data =


Konfiguraci lze získat ve formátu XML a je k nalezení na URL adrese světa přidáním cesty '''"/interface.php?func=get_config"'''. Tedy například, pro 1. zdejší svět platí kompletní adresa <br>
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.


<center>'''http://cs1.divokekmeny.cz/interface.php?func=get_config'''.</center><br><br>
'''Nabízené informace řadím do třech kategorií:'''


==Seznamy světů a jejich konfigurace==
'''1)''' Obecná data: takřka neměnná, společná pro všechny servery (země) nebo alespoň společná pro daný server.


[[Soubor:Cz.gif]] [http://www.divokekmeny.cz/]([http://cz.twstats.com/ TW Stats])<br>
'''2)''' Data konfigurační: individuální pro každý svět, ale v čase takřka neměnná.


[http://cs1.divokekmeny.cz/interface.php?func=get_config cs1] [http://cs2.divokekmeny.cz/interface.php?func=get_config cs2] [http://cs3.divokekmeny.cz/interface.php?func=get_config cs3] [http://cs4.divokekmeny.cz/interface.php?func=get_config cs4] [http://cs5.divokekmeny.cz/interface.php?func=get_config cs5] [http://cs6.divokekmeny.cz/interface.php?func=get_config cs6] [http://cs7.divokekmeny.cz/interface.php?func=get_config cs7] [http://cs8.divokekmeny.cz/interface.php?func=get_config cs8] [http://cs9.divokekmeny.cz/interface.php?func=get_config cs9] [http://cs10.divokekmeny.cz/interface.php?func=get_config cs10] [http://cs11.divokekmeny.cz/interface.php?func=get_config cs11] [http://cs12.divokekmeny.cz/interface.php?func=get_config cs12] [http://cs13.divokekmeny.cz/interface.php?func=get_config cs13] [http://cs14.divokekmeny.cz/interface.php?func=get_config cs14] [http://cs15.divokekmeny.cz/interface.php?func=get_config cs15] [http://cs16.divokekmeny.cz/interface.php?func=get_config cs16] [http://cs17.divokekmeny.cz/interface.php?func=get_config cs17] [http://cs18.divokekmeny.cz/interface.php?func=get_config cs18] [http://cs19.divokekmeny.cz/interface.php?func=get_config cs19] [http://cs20.divokekmeny.cz/interface.php?func=get_config cs20]
'''3''') Data proměnná: individuální pro každý svět a proměnná v čase.
[http://cs21.divokekmeny.cz/interface.php?func=get_config cs21]
[http://cs22.divokekmeny.cz/interface.php?func=get_config cs22]
[http://cs23.divokekmeny.cz/interface.php?func=get_config cs23]
[http://cs24.divokekmeny.cz/interface.php?func=get_config cs24]
[http://cs25.divokekmeny.cz/interface.php?func=get_config cs25]
[http://cs26.divokekmeny.cz/interface.php?func=get_config cs26]
[http://cs27.divokekmeny.cz/interface.php?func=get_config cs27]
[http://cs28.divokekmeny.cz/interface.php?func=get_config cs28]
[http://cs29.divokekmeny.cz/interface.php?func=get_config cs29]
[http://css1.divokekmeny.cz/interface.php?func=get_config css1]
[http://csp1.divokekmeny.cz/interface.php?func=get_config csp1]


XML soubor konfigurace má "větve" - oddíly (přesněji elementy). Níže se budu věnovat jednotlivým pod-oddílům a pokusím se popsat mně známá nastavení.


==Elementy==
== Obecná data ==


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


config->'''speed'''
'''1. Podklad mapy'''


- základní rychlost světa<br>
Na mapě DK se zobrazují i lesy, rybníky, a další krajina. Tento základ je stejný pro všechny servery a světy* - jen vesnice se do ní pro každý každý svět generují náhodně. Zdroj informací (link)
- standardní hodnota: 1<br>
- další obvyklé hodnoty: 2, 1.6 a pro speed světy: 50, 100, 200, 300<br>


Většinou je použita coby násobící (dělící) faktor k další konfiguraci. Přímo ovlivňuje tuším rychlost obchodníků - kdy základní je 6 minut/pole a reálná je základ děleno "speed". '''Tedy, pro rychlost světa 2 je rychlost obchodníku (6:2) = 3 minuty/pole.'''
<i>* ale přímo ve hře se (v kruhu od centra) na zatím neobsazených vnějších kontinentech místo krajiny zobrazuje jen tráva. Zatím jsem nepřišel na to jak pro daný svět zjistit, kam až je "kruh" včetně krajiny a odkud dál je holá zem.</i>


----
'''Binární data:'''<br>
http://die-staemme.de/stuff/world.dat


config->'''unit_speed'''
- Velikost 1.000.000 bytes (odpovídá mapě 1000*1000)<br>
- Pole uložena sekvenčně, nejprve dle osy X, pak Y, každé bajt odpovídá jednomu poli na mapě (adresa = X + 1000*Y)


- koeficient rychlosti jednotek<br>
'''Každý bajt může nabývat hodnot:'''<br>
- standardní hodnota:1<br>
0-3 Grass (tráva)<br>
- další obvyklé hodnoty: 0.5, 0.625<br>
8-11 Mountain (hory)<br>
12 Sea (moře)<br>
16-31 Forest (les)


Spolu s rychlostí z popisu jednotek a rychlostí světa určuje absolutní rychlost jednotek. Přesný vzorec:<br>
<i>(Ve hře na malé mapě (ta vpravo) se vše co je více než tráva (odpovídající bajt z world.dat má hodnotu větší než 3) zobrazuje tmavší zelenou, 0-3 je světle zelená. Pochopitelně mimo vesnic, které mají vlastní barvy.)</i>
'''absolutní rychlost =''' základní_rychlost_z_popisu_jednotek / (config->speed * config->unit_speed) [v minutách na pole]


----
----


config->'''moral'''
'''2. Seznamy světů daného serveru'''
 
- morálka při útoku<br>
- standardní hodnoty: 1, 2<br>
- další známá hodnota: 0<br>
 
Určuje způsob počítání morálky:<br>
1 - morálka se počítá z poměru bodů hráčů.<br>
2 - time morale - morálka se počítá dle z poměru bodů hráčů (útočníka a obránce). Navíc se morálka zvyšuje, čím déle hráč na daném světě hraje.<br>
0 - morálka je vypnutá (vždy "jakoby" 100%)<br>
 
----


config->'''build_queue'''
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).


- stavební fronta<br>
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
- standardní hodnoty: 1<br>


Nevím co to je, odhaduji povolení více staveb ve stavební frontě. Čistě jen spekuluji.
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'''


=Různé=
Praktický příklad použití ([http://cs28.divokekmeny.cz/stat.php link])


Element config->'''misc''', soupis jeho základních pod-elementů, bez větvení (misc = miscellaneous = různé)


config->'''misc->log_losses'''
== Konfigurační data ==


- standardní hodnota: 1
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.
----
----


config->'''misc->kill_ranking'''


- typ počítání bodů útoku a obrany<br>
'''Základní konfigurační soubor: config'''
- standardní hodnoty: 1 (světy otevřené do cca březen 2008), 2 (nové světy od cca březen 2008)<br><br>


Způsob, jakým se počítají body "poražený protivník"<br>
Cesta: '''"/interface.php?func=get_config"''' (pro cs1: http://cs1.divokekmeny.cz/interface.php?func=get_config)
1 - dle hodnoty selského dvora cizích poražených jednotek<br>
2 - dle speciálních vah pro každý typ poražené jednotky<br>
Více viz téma [http://help.divokekmeny.cz/wiki/Pora%C5%BEen%C3%BD_protivn%C3%ADk Poražený protivník]


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].
----
----


config->'''misc->tutorial'''
'''Budovy - popis nastavení budov'''
 
- standardní hodnota: 1<br>
Netuším. Asi, zda je ve hře možné vybrat natavení-nastavení-Tutoriál.<br> Zdroj: Čistá spekulace


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


config->'''misc->millis_arrival'''
'''Jednotky - popis nastavení jednotek'''


- Jaké je pořadí útoků, pokud dojdou ve stejné sekundě<br>
Cesta: '''"/interface.php?func=get_unit_info"''' (pro cs1: http://cs1.divokekmeny.cz/interface....=get_unit_info)
- standardní hodnota: 1<br>
- další známá hodnota: 0<br>


0 - útok, který byl vyslán první, první dorazí<br>
1 - pořadí útoku je počítáno na milisekundy, takže nezáleží na tom, který útok byl dříve vyslán


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>
----
----


config->'''misc->command_cancel_time'''
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].


- dokdy lze zrušit příkaz jednotkám [v sekundách]<br>
- standardní hodnota: 600 (10 minut)<br>
- další obvyklé hodnoty: (speed světy) 60, 180, ...<br>


Hodnota (v sekundách) dokdy lze zrušit již vydaný povel k útoku či podpoře. Změnit/zrušit již vydaný povel pro stažení podpor nelze.
== 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.


config->'''misc->trade_cancel_time'''
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').


- dokdy lze zrušit příkaz na tržišti [v sekundách]<br>
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).
- standardní hodnota: 300 (5 minut)<br>
- další obvyklé hodnoty: (speed světy) 30, 120, ...<br>
 
Hodnota (v sekundách) dokdy lze zrušit již vydaný povel k odeslání surovin. Změnit/zrušit již vydaný povel pro nákup surovin nelze.


<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>
----
----


config->'''misc->free_premium_points'''
Informace o vesnicích:<br>
'''-/map/village.txt''' nebo '''-/map/village.txt.gz:'''


- prémiový účet na týden zdarma<br>
$id, $name, $x, $y, $tribe, $points, $bonus
- standardní hodnota: 500 [bodů]<br>
- další známá hodnota: 0<br>
 
Po dosažení kolika bodů dostane hráč možnost vybrat si prémiový účet na týden zdarma.<br>
Pro daný svět lze získat týdenní účet zdarma automaticky pouze jednou. Neopakuje se při opětovném překročení dané bodové hranice (např. při "začít znovu")<br>
"0 " pravděpodobně znamená, že prémiový účet na týden zdarma získat nelze


$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>
----
----


config->'''misc->free_premium_points2'''
Informace o hráčích:<br>
'''-/map/tribe.txt''' nebo '''-/map/tribe.txt.gz'''


- prémiový účet na tři dny zdarma<br>
$id, $name, $ally, $villages, $points, $rank
- standardní hodnota: 15000 [bodů]<br>
 
Po dosažení kolika bodů dostane hráč možnost vybrat si prémiový účet na tři dny zdarma.<br>
Pro daný svět lze získat třídenní účet zdarma automaticky pouze jednou. Neopakuje se při opětovném překročení dané bodové hranice.


$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'''


config->'''misc->more_premium'''
$id, $name, $tag, $members, $villages, $points, $all_points, $rank
 
- některé výhody zdarma<br>
- standardní hodnota: 1<br>
- další známé hodnoty: 0<br>
 
Pokud je nastavena hodnota 0 je pro všechny hráče k dispozici rozšířená stavební fronta a menu "Poznámky" aniž by museli mít Pú. Při hodnotě 1 musí mít hráč k daným výhodám aktivovaný Pú.


$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>
----
----


config->'''misc->online_time'''
Informace o profilech hráčů:<br>
 
'''-/map/profile.txt''' nebo '''-/map/profile.txt.gz'''
- jak dlouho je hráč považován za on-line<br>
- standardní hodnota: 300 [sekundy]<br>
 
Podle tohoto nastavení je určováno, jak dlouho je ještě hráč považován za online ... od poslední akce (akce = i jen zobrazení v prohlížeči, ne nutně výkonný čin). Odráží se to v online statusech např. v menu "Přátelé"
 
----


config->'''misc->gm_scan'''
$tribe_id, Geburtstag, Geschlecht, Wohnort


- standardní hodnoty: 0.05
<i>EN/DE nápověda zmiňuje i další data /Profiltext (als XHTML), Profilbild-Dateiname/ ale ta jsem nikdy neviděl, že by byla poskytována.</i>


$tribe_id - ID hráče, jehož profil je zmiňován<br>
Geburtstag - datum narození /ve tvaru YYYY-MM-DD/<br>
Geschlecht - pohlaví /nevyplněno, m, f/<br>
Wohnort - bydliště<br>
----
----


config->'''misc->start_christmas_tree'''
Informace o bodech poražený protivníky:<br>
config->'''misc->end_christmas_tree'''
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>
celkem: '''-/map/kill_all.txt''' nebo '''-/map/kill_all.txt.gz''' (pouhý součet att+def)<br>


- Vánoční stromek<br>
$rank, $tribe_id, $kills
Čas (ve formátu [http://en.wikipedia.org/wiki/Unix_time Unix time] ), kdy se v grafickém náhledu vesnice objeví (a zmizí) vánoční stromek.


$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>
----
----


config->'''misc->online_time_reminder'''
Informace o zabírání vesnic:<br>
'''-/map/conquer.txt''' nebo '''-/map/conquer.txt.gz'''


- standardní hodnoty: 0
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.


=Ochrana začátečníků=
$village_id, $unix_timestamp, $new_owner, $old_owner
 
config->'''newbie->days''' případně config->'''newbie->minutes'''
 
- počáteční doba neútočení<br>
- standardní hodnoty: 5 [dní] resp. 60 [minut] (pro speed)<br>
 
Počáteční doba, po kterou nemůže být na hráče útočeno. Počítá se vždy od chvíle založení první vesnice - a to jak v případě vstupu na svět, tak i při uživatelském "začít znovu" či restartu poté, co jsou hráči sebrány všechny vesnice.<br>
Hráč může po dobu hájení útočit. Jen ostatní nemohou zaútočit na něj.


$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>
----
----


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


- následná počáteční ochrana z poměru bodů hráčů<br>
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.
- standardní hodnoty: 20 a 0<br>
 
Vyjadřuje poměr (násobek) bodů hráčů, nad kterou je zakázáno na sebe útočit (sw nedovolí vyslat na sebe útok). Jde o začátečnickou ochranu, časově limitovanou (viz další element). Omezení platí pro obě strany (myslím).<br>
Hodnota 0 znamená, že je povoleno útočit hned, za libovolného vzájemného poměru.  
 
----


config->'''newbie->ratio_days''' případně config->'''newbie->ratio_minutes'''
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>


- doba počáteční ochrany dané z rozdílu bodů hráčů<br>
- standardní hodnoty: 60 nebo 30 [days] a 0<br>


Určuje dobu od začátku (resp. restartu), po kterou se uplatňuje počáteční ochrana z config->misc->ratio
''Autor: Turgon''
Hodnota 0 znamená, že se ochrana neuplatní po žádnou dobu.

Verze z 28. 8. 2017, 06:19

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. Podklad mapy

Na mapě DK se zobrazují i lesy, rybníky, a další krajina. Tento základ je stejný pro všechny servery a světy* - jen vesnice se do ní pro každý každý svět generují náhodně. Zdroj informací (link)

* ale přímo ve hře se (v kruhu od centra) na zatím neobsazených vnějších kontinentech místo krajiny zobrazuje jen tráva. Zatím jsem nepřišel na to jak pro daný svět zjistit, kam až je "kruh" včetně krajiny a odkud dál je holá zem.

Binární data:
http://die-staemme.de/stuff/world.dat

- Velikost 1.000.000 bytes (odpovídá mapě 1000*1000)
- Pole uložena sekvenčně, nejprve dle osy X, pak Y, každé bajt odpovídá jednomu poli na mapě (adresa = X + 1000*Y)

Každý bajt může nabývat hodnot:
0-3 Grass (tráva)
8-11 Mountain (hory)
12 Sea (moře)
16-31 Forest (les)

(Ve hře na malé mapě (ta vpravo) se vše co je více než tráva (odpovídající bajt z world.dat má hodnotu větší než 3) zobrazuje tmavší zelenou, 0-3 je světle zelená. Pochopitelně mimo vesnic, které mají vlastní barvy.)


2. 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 profilech hráčů:
-/map/profile.txt nebo -/map/profile.txt.gz

$tribe_id, Geburtstag, Geschlecht, Wohnort

EN/DE nápověda zmiňuje i další data /Profiltext (als XHTML), Profilbild-Dateiname/ ale ta jsem nikdy neviděl, že by byla poskytována.

$tribe_id - ID hráče, jehož profil je zmiňován
Geburtstag - datum narození /ve tvaru YYYY-MM-DD/
Geschlecht - pohlaví /nevyplněno, m, f/
Wohnort - bydliště


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
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