[phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by (output started at /mnt/data/accounts/p/pws/data/www/kreveta/article.php:1)
[phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by (output started at /mnt/data/accounts/p/pws/data/www/kreveta/article.php:1)
[phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by (output started at /mnt/data/accounts/p/pws/data/www/kreveta/article.php:1)
Online skóre v GM - Kreveta.NET

Online skóre v GM

Vystavil chylex

11.03.2010

6
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 :).


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.
Vyvarujte se freehostingů jako ic.cz nebo wz.cz, musíte mít zaručenu co nejvyšší dostupnost (což je u freehostingů trochu problém), jinak se nemusí skóre odeslat kvůli zatíženému serveru apod.

Jestli nevíte jak vytvořit databázi a používáte ic.cz (!Přečtěte si předchozí tip, jestli jste tak neučinili!), řiďte se těmito pokyny. Mělo by to tak fungovat i u wz.cz, přeci jen je interface hodně podobný.
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
CREATE TABLE skore (id int unsigned auto_increment, ip varchar(24), prezdivka varchar(16), body int unsigned, tabulka tinyint unsigned, datum date, cas time, primary key(id))

Bany
CREATE TABLE ban (ip varchar(24), duvod text)

Log
CREATE TABLE log (id mediumint unsigned auto_increment, ip varchar(24), nadpis text, popis text, datum date, cas time, typ tinyint unsigned, primary key(id))

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


Jak mám vytvořit více tabulek?

Najdi v "index.php" řádek 210, je tam napsané "<option value="1">Tabulka</option>". Zkopíruj to, pojmenuj si tabulku jinak (třeba "Tabulka 2") a zvyš číslo ve "value".
Takhle můžou vypadat 3 tabulky:
<option value="1">Tabulka</option>
<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:
$prom = array("Tabulka","Druhá tabulka","A tady je třetí");

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:
for($b = 0; $b < 3; $b++){

Tím je přidání tabulek kompletní.

Nefunguje mi v administraci vyhledávání tabulek, proč?

Při hledání tabulky se nezadává jméno tabulky, ale její identifikační číslo. První tabulka je 1, druhá 2, pátá 5...

Jak mám kompletně smazat online skóre, aby po něm nezůstaly žádné stopy?

V administraci klikněte na "MySQL" a zadejte příkazy (každý zvlášť):
DELETE TABLE ban
DELETE TABLE skore
DELETE TABLE log

Nakonec smažte z FTP soubory "index.php", "style.css", "menu.jpg", "amenu.jpg" a "back.jpg".

Jak mám promazat log?

Doporučuji smazat log JEN pokud jste dokončili testování logu nebo je hra velice populární a ID dosáhlo obrovské výšky až se do logu nic nového nevleze. V administraci klikněte na "MySQL" a zadejte příkaz:
TRUNCATE TABLE log

Chci smazat všechny záznamy v tabulce, protože by bylo obtížné je mazat ručně, jak to mám udělat?

V administraci najeďte do okna pro zadávání MySQL příkazů (pokud to některým nedošlo, klikněte na ten nápis "MySQL" v administračním menu) a naskýtají se 2 možnosti. Jestli chcete smazat všechny tabulky, které jste vytvořili, zadejte:
TRUNCATE TABLE skore

A druhá možnost, jestli potřebujete smazat jen jednu tabulku a máte 2 a více, zadejte:
DELETE FROM skore WHERE tabulka=1

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:
DELETE FROM skore WHERE tabulka=3

Pokud si nebudete jisti co udělat abyste nesmazali něco, co nechcete, kontaktujte mě přes soukromou zprávu na fóru.


Kdyby to někomu nefungovalo, vložte na řádek 109: "echo $nhash.' - '.$hash;" (bez uvozovek), vložte skóre offline a porovnejte hashe, jestli se budou lišit tak zkontrolujte jestli jsou kódy na výpočet správné, jestli ano tak změňte hash, mělo by to pomoct.

Hodnocení +91Líbí
Přečteno 3407-krát

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.




Poslední komentáře

Sousední akvárko

Nejčtenější

Nejlepší

Web Kreveta.net je unikátní sbírkou článků mapují proces tvorby her. Vedle návodů naleznete v krevetím akvárku i rozhovory s vývojáři, recenze, soutěže. Portál Kreveta.net připravují (řazeno abecedně): Akhera, Banane4joy, Bullet_catcher, Burák, Fire.js, Ikkju, Izual, Likandro, Makan, PepiCzech, StorN, Tior.
Akvárko vymaloval Tior, o chod filtrace se stará StorN (design a kód).
Copyright © 2010 Kreveta.net. Všechna práva vyhrazena.