Chcete mít online skóre jako ve hře Space Race? Čtěte dál...
Nějaké kecy na úvod
Než budu mít hotový systém na online skóre, zveřejním jednoduché online skóre, sice v programu nepřehledné ale stejně, začátečníci se v tom nebudou moc hrabat aby něco nepokazili a profesionálové online skóre dokážou udělat sami (snad :) ). Doufám že se při čtení aspoň trochu pobavíte, když už z tutoriálu dělám komedii :).
Detektor ingrediencí za 18.000,-
Připravíme si nůž, mrkev, salát, magnet a prsty, nakrájíme...
Totiž, nejdříve musíte mít web, na kterém bude vše uloženo a MySQL databázi - žádnou jinou, přece jen to je jen MojeSQL :). Nejdříve vytvoříme databázi s nějakým silným heslem a najdeme si okno kam budeme vkládat příkazy.
Přihlašte se do administrace přes webové rozhraní a v levém menu klikněte na položku "Databáze Mysql". Otevře se podmenu, klikněte na "Stav MySql" a zadejte heslo, potom se objeví tabulka ve které je server (host), login, databáze a heslo. V podmenu zvolte "MySQL Administrace" a zadejte login a heslo. Zobrazí se phpMyAdmin, napravo od levého menu administrace je 5 ikonek, klikněte na tu, na které je červeným písmem napsané "SQL" a otevře se okno, kam můžete zadávat příkazy.
Vložte a proveďte následující příkazy:
Záznamy
Bany
Log
Nyní máme vytvořeny 3 tabulky v databázi a to je vše, co v ní budeme dělat.
Stáhněte tyto soubory a extrahujte je: KLIK. Otevřete soubor "index.php", nejlépe v PsPadu ale bude stačit i poznámkový blok.
Vyhledejte řádky 6, 7 a 14 a nahraďte JMENO_HRY za jméno hry, pro kterou skóre budete mít.
Na řádku 27 změňte SERVER za jméno serveru s databázemi (např. pokud máte www.vasehra.wu.cz tak to je mysql.wu.cz, pokud něco jiného tak zkuste hledat v administraci), LOGIN za přihlašovací jméno k databázi a HESLO za heslo, které jste zvolili při vytvoření databáze.
O řádek pod ním, na řádku 28 změňte DB za název databáze.
Sjeďte na řádek 31 a vložte místo VASE_HESLO_DO_ADMINISTRACE heslo které použijete při vstupu do administrace.
Najděte řádek 637 a na něm vyhledejte "LIMIT 0,20". 20 je počet zobrazených míst, pokud chcete 50 tak to bude vypadat takto (celý řádek):
$query = mysql_query("SELECT * FROM skore WHERE tabulka=".($b+1)." ORDER BY body DESC LIMIT 0,50");
Soubor "index.php" můžete zavřít a otevřete si soubor "style.css".
Na řádku 3 je barva písma, pokud chcete černou místo bílé, nahraďte "#FFFFFF" za "#000000".
Pokud jste změnili rozměry souboru "menu.jpg", změňte je i na řádku 13 (výška, místo 46 zadejte novou výšku v pixelech).
Pokud jste změnili rozměry souboru "amenu.jpg", změňte je i na řádku 29 (opět výška, místo 90 napište novou výšku).
Zavřete soubor "style.css", z webové stránky gmtoolbox.com stáhněte 39dll (můžete použít vyhledávač, pokud nevíte kde DLL najít) a přiložte ho ke zdrojovému souboru hry. Ostatní soubory, které byly u 39dll můžete smazat, dokumentaci a zdrojové soubory od DLL nepotřebujeme.
Vytvořte nový skript, nazvěme jej třeba "Hash". Vložte do něj toto:
hash="";
var p;
p=399+(((1+string_length(string(score)))*44)/3);
hash+=string_copy(string(p),1,3);
p=123+(real(hash)/8);
hash+=string_copy(string(p),1,3);
p=300+real(string_copy(hash,1,2))-real(string_copy(hash,2,2));
hash+=string_copy(string(p),1,2);
return hash;
To bude náš kontrolní hash. Můžete jej trochu změnit, například číslo 44 nahradit za 12, ale pozor! Musíte 44 nahradit za 12 i v souboru "index.php"!! Hash v PHP souboru najdete na řádcích 39 až 51.
Pokud si nebudete jisti co měnit, napište mi přes soukromou zprávu na fóru.
Nyní budeme potřebovat nový skript, ve kterém bude připojení k serveru. Vytvořte ho, nazvěte jej "UploadSkore" a vložte do něj:
if (show_message_ext("Jak chceš odeslat skóre?","Online","","Offline") == 1){
prezdivka = global.prezdivka;
tabulka = global.tabulka;
hash = Hash(prezdivka,tabulka,score);
server = "www.VAS_SERVER.cz";
nl = chr(13)+chr(10);
dllinit(0,true,false);
socket = tcpconnect(server,80,0);
setformat(socket,1,nl);
clearbuffer();
writechars("GET /index.php?typ=pridat&prezdivka="+string(prezdivka)+"&skore="+string(score)+"&tabulka="+string(tabulka)+"&hash="+string(hash)+" HTTP/1.1" + nl);
writechars("Host: " + string(server) + nl);
sendmessage(socket);
closesocket(socket);
dllfree();
}
else{
prezdivka = global.prezdivka;
tabulka = global.tabulka;
hash = Hash(prezdivka,tabulka,score);
show_message("Do schránky se ti zkopírovaly údaje pro vložení offline. Můžeš je najít také v souboru offline.txt.");
clipboard_set_text("Najeď na web http://www.VAS_SERVER.cz/?typ=pridat&offline=1 a vlož do formuláře následující údaje:
Přezdívka: "+string(prezdivka)+"
Skóre: "+string(score)+"
Tabulka: "+string(tabulka)+"
Hash: "+string(hash));
f=file_text_open_write(working_directory+"offline.txt");
file_text_write_string(f,"Najeď na web http://www.VAS_SERVER.cz/?typ=pridat&offline=1 a vlož do formuláře následující údaje:");
file_text_writeln(f);
file_text_write_string(f,"Přezdívka: "+string(prezdivka));
file_text_writeln(f);
file_text_write_string(f,"Skóre: "+string(score));
file_text_writeln(f);
file_text_write_string(f,"Tabulka: "+string(tabulka));
file_text_writeln(f);
file_text_write_string(f,"Hash: "+string(hash));
file_text_writeln(f);
file_text_close(f);
}
Kdo si toho nevšiml, na třech místech je napsané "VAS_SERVER", to musíte nahradit, například pokud máte www.mojehra.lol.cz, nahradíte "VAS_SERVER" za "mojehra.lol", protože www. a .cz už tam je.
Do proměnné "global.tabulka" ukládejte identifikační číslo tabulky, první tabulka je 1, druhá 2 atd. Můžou to být tabulky například na různé obtížnosti. V proměnné "global.prezdivka" je uložena přezdívka hráče a v proměnné vytvořené Game Makerem "score" je nahrané skóre.
Nyní už jen ke konci hry dejte volání skriptu - napište "UploadSkore()" bez uvozovek.
Právě jste dokončili přípravu ingrediencí. Naházejte je všechny do kotle a můžeme míchat.
Chybí tomu pepř, sůl a kokain, musíte to okořenit!
Mícháme. Vložte všechny soubory na váš úložný prostor a vyzkoušejte jestli vše šlape tak, jak má. Jestli ne, zkontrolujte jestli jste vše udělali přesně podle návodu a pokud ano, napište mi soukromou zprávu přes fórum, nezapomeňte se podívat do FAQ níže.
Vyžbleptneme to z hrnce, místo doletu jeho obsahu není důležité...
Během psaní tutoriálu nebyla opět snězena žádná kreveta. Dále bych chtěl říct, že 3 krevety (raději nejmenuji) už asi dlouho neuvidíte... Ale nebojte se, než se vydaly na cestu, odpočívaly v bazénku napuštěném omáčkou.
Kukuč
Ukázka na webu bez přístupu do administrace:
KLIK
Obrázek administrace !bez upravených obrázků!:
Ukázka skóre u hry space race:
Nečum když něco nevíš a přečti si FAQ O,O
Takhle můžou vypadat 3 tabulky:
<option value="2">Druhá tabulka</option>
<option value="3">A tady je třetí</option>
Potom vyhledejte řádek, kde je napsané "$prom = array("Tabulka");", je to u řádku 626 (podle toho kolik nových tabulek jste vytvořili). Přidejte argumenty, neboli názvy nových tabulek, například:
Nakonec najděte řádek s "for($b = 0; $b < 1; $b++){", je blízko řádku 628, opět to závisí na počtu nových tabulek. Změňte "1" na počet tabulek, v tomto případě 3:
Tím je přidání tabulek kompletní.
DELETE TABLE skore
DELETE TABLE log
Nakonec smažte z FTP soubory "index.php", "style.css", "menu.jpg", "amenu.jpg" a "back.jpg".
A druhá možnost, jestli potřebujete smazat jen jednu tabulku a máte 2 a více, zadejte:
Za jedničku můžete dosadit konkrétní identifikační číslo tabulky, například chcete smazat tabulku s identifikačním číslem 3, tak zadejte:
Pokud si nebudete jisti co udělat abyste nesmazali něco, co nechcete, kontaktujte mě přes soukromou zprávu na fóru.
Komentáře
Přidat nový
Pro přispívání musíte být přihlášen
Zapsal Adder - 13.07.2010 15:01
jan111: Kdybys nekecal, že jsi to četl, tak bys objevil ty kusy kódu, které se zadávají do GM.
Zapsal jan111 - 13.07.2010 02:25
Celí jsem to pročetl a nenašel nic co se má dát do GM.Mohl by mi to někdo říct?
Zapsal bildo - 12.03.2010 19:33
Ja to jeste s tohohle neskousel, ale to, co je potreba nahrat na stranku ma Chylex v clanku na stazeni. + je tam popsano, jak vytvorit sql tabulku.
A to, co je potreba udelat v GM, ma pekne rozepsane, takze snad to neni nejak slozite. I kdyz mozna ja to mam trosku skrelslene, kdyz s Chylexem spolupracuji. Ale predtim jsem o tom taky nemel ani poneti.
Zapsal Likandro - 12.03.2010 19:03
Tak nemůžu říct, že bych z toho byl úplně moudrý, ale počítám, že až to budu zkoušet, jakože na to na 90% dojde, tak to snad bude jasnější.
Každopádně pěkný článek.
Chybí snad už jen takové to:
"Tohle si stáhněte, tam to všechno je."
Zapsal banane4joy - 11.03.2010 14:22
Co se mě týče, možnost pochopil ani zdaleka není :D Každopádně doufám, že i díky tomuto článku se objeví více her, kde lze měřit síly s ostatními. :)
Zapsal bildo - 11.03.2010 13:54
Tak online skore jsem nikdy neumel. Snad to podle tohohle rychle pochopim. :)
Dik za clanek.



