Jak propojit Second Life a MySQL

Poslední dva týdny jsem objevoval možnosti interakce Second Life prostředí a webových stránek. Nemyslím tím samozřejmě klasické zobrazení webové stránky na primu, ale komunikaci mezi LSL skriptem a webem pomocí HTTP protokolu. Tato oblast je dosud zahalena aurou tajemství, nicméně jakmile pochopíte základní princip fungování, zjistíte, že použití HTTP v prostředí Second Life je velice jednoduchý a efektivní nástroj, který výrazně znásobuje možnosti skriptování. Pokud navíc propojíte LSL skript s externí MySQL databází pomocí PHP skriptů, programování skriptů v Second Life dostává zcela nové a mnohem širší rozměry. A to je přesně to, co bych vás dnes chtěl naučit.

Dopředu upozorňuji, že dnešní návod vyžaduje alespoň základní znalosti LSL, MySQL a PHP. Rovněž budete potřeboval odpovídající hosting anebo svůj vlastní server, na kterém MySQL a PHP běží Na obrázku níže vidíte schématicky, jak propojení LSL a MySQL funguje - využívá se speciálně napsaná PHP stránka, která zajišťuje oboustrannou komunikaci z a do prostředí Second Life. LSL skript samotný nijak neudrží data v proměnných, pokud dojde k restartu skriptu. Restart skriptu je ale nutný dost často - buď potřebujete upravit skript nebo chcete objekt se skriptem umístit v jiném regionu, ale k restartu skriptu dochází i při restartu celého regionu, což je většinou mimo vaši kontrolu a v poslední době se tak děje dost často. Výhodou ukládání dat do MySQL místo držení přímo v LSL nebo pracného kopírování dat do notecard, což jsou dvě nejčastější metody používané v Second Life) je nezávislost na restartech skriptu. Tento skript rovněž nevyžaduje součinnost uživatele.

A teď již pojďme k tomu hlavnímu. Dnes si zkusíme udělat jednoduchý skript v objektu, který bude hlídat dotek uživatele. Po dotyku uloží do MySQL jméno avatara a celkový počet dotyků daným avatarem. Tento celkový počet následně oznámí. Počítání dotyků pokračuje i po restartu skriptu, to znamená nedojde k vynulování. Pro tento příklad budeme předpokládat, že máte hosting na doméně mojedomena.cz s MySQL databází mojedatabaze.

Krok 1: Vytvoření tabulky v databázi
Nejprve si potřebujeme v naší databázi vytvořit tabulku statistika, se kterou bude náš skript pracovat. Tabulka bude velice jednoduchá, bude obsahovat pouze dva sloupce - jméno avatara a počet dotyků. Nejjednodušší způsob je vytvořit si PHP stránku, nazvěme si ji například inicializace.php, která tabulku připraví. Vám stačí kód pouze zkopírovat z přiloženého příkladu a doplnit potřebné autorizační údaje v horní části kódu. Komentáře by měly pomoci pochopit, jak stránka funguje. Jakmile budeme mít PHP stránku na svém hostingu, stačí pouze její adresu zadat do prohlížeče a tabulka se nám vytvoří.

Krok 2: Vytvoření komunikačního mostu
Nyní vytvoříme druhou PHP stránku, nazveme si ji například most.php. Tato stránka bude přijímat data ze Second Life pomocí parametrů předaných v URL (v našem případě jméno avatara, který se dotknul objektu), uloží do databáze další dotyk a pošle zpátky do Second Life informaci o celkovém počtu dotyků daného avatara. Opět si nemusíte lámat hlavu, ale pouze si stáhněte nalinkovaný příklad, doplňte potřebné autorizační údaje v horní části kódu a uložte na svém hostingu. Komentáře opět pomohou s porozuměním kódu. No, tedy alespoň doufám...

Krok 3: Odpovídající LSL skript v Second Life
Nakonec musíme vytvořit skript v SL, který bude komunikovat s naší stránkou most.php. Klíčovou a pro většinu z vás i novou LSL funkcí bude llHTTPRequest a odpovídající LSL událost http_response. Skript samotný je velice jednoduchý a přiložený příklad by měl být samovysvětlující. V komentářích jsem se pokusil popsat i trochu to, jak LSL s HTTP požadavky zachází. Skript samozřejmě zkopírujte do libovolného objektu v Second Life a opět upravte podle svého nastavení hostingu. Pokud jste vše udělali správně, daný objekt by měl vám nebo komukoliv jinému po každém dotyku oznámit celkový počet dotyků od vytvoření tabulky v MySQL. Prodleva mezi kliknutím na objekt a odpovědí se obvykle pohybuje mezi 1-5 sekundami.

Tím bychom měli být hotovi. Náš příklad je pouze triviální ukázkou použití této techniky a jistě objevíte celou řadu praktických aplikací, od počítadla návštěvníků po vedení centrální evidence prodaného zboží. Přeji hodně štěstí při vašich pokusech a pokud se vám tento návod líbil a použili jste jej v praxi, potěší mě vaše komentáře pod návodem. Mou technickou podporu s provázáním MySQL a Second Life pak můžete hledat na VHelp.cz v diskuzi pod návodem (je nutná registrace na VHelp). Tak hezké skriptování.

Váš Shiny Iceberg

Komentáře

Poslat nový komentář

  • Povolené HTML značky: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <p> <div>
  • Webové a e-mailové adresy jsou automaticky převedeny na odkazy.
CAPTCHA
Tato otázka je základní obranou proti komentářovému spamu.
nula + = čtyři
Vyřešte tento příklad a vepište příslušný výsledek číslicemi. Tato kontrola není vyžadována, pokud jste přihlášen pod svým účtem. Chcete se registrovat?