Iz Tribalwars Wiki SI
Skoči na: navigacija, iskanje

Zunanja sporočila

Pošiljanje sporočil v igri prek zunanjega vmesnika

Včasih je treba igralcem prek zunanjih programov poslati sporočilo, na primer obvestila o pomembnih dogodkih ali za preverjanje njihove identitete. Ker pravila prepovedujejo uporabo kakršnih koli botov, smo za te potrebe razvili vmesnik.

Sporočila v igri se ustvarijo z GET-zahtevo:

http://si5.vojnaplemen.si/send_mail.php?from_id=FROM_ID&api_key=API_KEY&to=TO&subject=SUBJECT&message=MESSAGE

Pomen parametrov:

   FROM_ID: ID tvojega računa (najdeš ga npr. na uvrstitveni lestvici)
   API_KEY: tvoj API-ključ za Vojno plemen (najdeš ga pod Nastavitve->Nastavitve)
   TO: ime (ne ID) igralca, ki mu je sporočilo namenjeno
   SUBJECT: naslov sporočila
   MESSAGE: jedro sporočila

Ta možnost obstaja samo za premium uporabnike. Če bo uporabljena za pošiljanje neželenih sporočil ali žaljenje igralcev, lahko račun blokiramo. Primer v PHP:

// Parametri morajo biti URL-kodirani $to = urlencode('exception'); $subject = urlencode('test & test'); $message = urlencode('To je test');

$base_url = "http://si5.vojnaplemen.si/send_mail.php?from_id=FROM_ID&api_key=API_KEY";

// prikliči URL $handle = fopen($base_url . "&to=$to&subject=$subject&message=$message", 'r'); echo fgets($handle); // Prikaži sporočilo fclose($handle);

Podatki o svetu

Za izdelavo zunanjih statistik so najpomembnejši podatki sveta na voljo za prenos. Lastnosti vasi, plemen in igralcev redno osvežujemo. Sedaj ponujamo tudi dodatne podatke, na primer vsi prevzemi vasi od začetka sveta s časovnim žigom (Unix Timestamp) ali vsebine profilov.

Podatke o svetovih skušaj čim bolj poredko nalagati, da tako zmanjšaš strežniški promet. Skripte, ki nalagajo podatke več kot enkrat na uro, so prepovedane. V tem primeru podatke poskušaj shraniti na zunanjem predpomnilniškem strežniku. Podatki o svetovih se osvežujejo v rednih intervalih, ki so odvisni od posameznega strežnika.

Datoteke so na voljo tudi v stisnjeni obliki .txt.gz. Če je le mogoče, uporabi te datoteke.

Za prenos je na voljo skupno 5 datotek. Vsaka vsebuje poljubno število vrstic, ločenih z vejicami. Posamezni podatki so kodirani s PHP-funkcijo urlencode(), kar pomeni, da vejico predstavlja oznaka %2C.

/map/village.txt - /map/village.txt.gz

Ta datoteka vsebuje podatke o vaseh. Podatki so na voljo v naslednjem zaporedju:

$id, $name, $x, $y, $player, $points, $rank

/map/player.txt - /map/player.txt.gz

Ta datoteka vsebuje informacije o igralcih. Podatki so na voljo v naslednjem zaporedju:

$id, $name, $ally, $villages, $points, $rank /map/ally.txt - /map/ally.txt.gz

Ta datoteka vsebuje informacije o plemenih. Podatki so na voljo v naslednjem zaporedju:

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

/map/conquer.txt - /map/conquer.txt.gz

Ta datoteka vsebuje informacije o vseh prevzemih vasi od začetka sveta naprej. Podatki so na voljo v naslednjem zaporedju:

$village_id, $unix_timestamp, $new_owner, $old_owner

/interface.php?func=get_conquer&since=unix_timestamp

S to funkcijo lahko prebereš podatke o vseh prevzemih vasi od zadnjega časovnega žiga (Unix Timestamp). Časovni žig ne sme biti starejši od 24 ur. Podatki so na voljo v naslednjem zaporedju:

$village_id, $unix_timestamp, $new_owner, $old_owner

/map/profile.txt - /map/profile.txt.gz

Ta datoteka vsebuje informacije o profilih igralcev. Podatki so na voljo v naslednjem zaporedju:

$player_id, Geburtstag, Geschlecht, Wohnort, Profiltext (als XHTML), Profilbild-Dateiname /interface.php?func=get_config

S to funkcijo lahko prebereš konfiguracijo igralnega sveta (format: XML). Primer

Preprost primer v PHP-ju za vpis vasi in njihovih imen iz sveta 1 v bazo MySQL:

$lines = gzfile('http://ds1.die-staemme.de/map/village.txt.gz'); if(!is_array($lines)) die("Datoteke ni bilo mogoče odpreti"); foreach($lines as $line) { list($id, $name,$x, $y, $player, $points, $rank) = explode(',', $line); $name = urldecode($name);

$name = addslashes($name); mysql_query("INSERT INTO village SET id='$id', name='$name', x='$x', y='$y', player='$player', points='$points', rank='$rank'"); }