Guida passo passo per classifica online

Tutorial, videotutorials ed esempi creati da noi
Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Guida passo passo per classifica online

Messaggio da guidox »

Ciao ragazzuoli, oggi vi voglio spiegare passo dopo passo come poter realizzare una facile e veloce classifica online per gm8.1 ed inferiori(non esageriamo ecco, è per dire che non funziona con studio), allora cominciamo!

Cosa ci serve?
-Un sito web che disponga di un database mysql. In questa guida metterò degli screen di altervista e del suo phpMyAdmin
-La Http Dll 2.3 (http://gmc.yoyogames.com/index.php?showtopic=509556)

Creare una nuova tabella
Guida per altervista
Andate su tools>PhpMyAdmin.
Cliccate a destra su my_nomesito, in basso ci sarà la sezione "Crea una nuova tabella nel database" se "Nome" mettiamo classificaonline(o quello che ti pare, l'importante è che dopo lo cambi anche nei codici) e su "Numero di campi" inseriamo 2.
Compiliamo la tabella in questo modo...
Spoiler
Immagine
e premiamo su salva.
Ovviamente la lunghezza 6 del punteggio può essere cambiata se abbiamo bisogno di numeri più grandi, non entro nel dettaglio perché esistono tantissimi tipi di dati, fate una piccola ricerca se volete approfondire la questione ;)
Ok la nostra tabella è pronta!

Creare una pagina sul nostro sito
Prima di creare la pagina della classifica, creiate una pagina di connessione al database, chiamiandola "config.php"

Codice: Seleziona tutto

<?
$username="nomesito";
$password="password";
$database="my_nomesito";

mysql_connect('localhost',$username,$password);

mysql_select_db($database) or die( "Unable to select database");
?>
sostituiamo "nomesito" con il nome del nostro sito, cioè quello che sta prima di .altervista per intenderci, e password con la password che usiamo per il database(che è la stessa del sito se non l'avete cambiata).

Poi create una pagina php sul vostro sito e chiamatela ad esempio "classificaonline.php".
Metteteci questo codice:

Codice: Seleziona tutto

<?php
include('config.php');
if (isset($_GET['nome'], $_GET['punteggio'], $_GET['password'])) {
if (sha1($_GET['nome']."passwordpersonalizzata".$_GET['punteggio']) == $_GET['password']) {
mysql_query("INSERT INTO `my_nomesito`.`classificaonline` (nome,punteggio) VALUES('".$_GET['nome']."',".$_GET['punteggio'].")") or die(mysql_error());
header('location: /classificaonline.php');
}
}else{
$classifica_ = mysql_query('SELECT * FROM `my_nomesito`.`classificaonline` ORDER BY punteggio DESC');
$num = mysql_num_rows($classifica_);
for($i=0; $i<$num; $i++){
$classifica = mysql_fetch_array($classifica_);
echo($classifica['nome']."#".$classifica['punteggio']."#");
}
}
?>
Sostituiamo "nomesito" con il nome del sito(ormai è sempre quello) e "passwordpersonalizzata" con la nostra password di sicurezza, serve per impedire che qualcuno mandi dati alla pagina non dal gioco, ricordatevi la password che dopo la dovremo inserire di nuovo nel gioco.

Nel gioco
Prima di tutto installate l'http dll gex, fatto questo create questi script:
Spoiler
scarica

Codice: Seleziona tutto

var httprequest,file,txt;
httprequest=httprequest_create();
httprequest_connect(httprequest, argument0, false);
do {
httprequest_update(httprequest);
s = httprequest_get_state(httprequest);
} until (s >= 4)
if (httprequest_get_state(httprequest) == 4) {
buffer = buffer_create();
httprequest_get_message_body_buffer(httprequest, buffer);
buffer_write_to_file(buffer, working_directory+"\download.tmp");
buffer_destroy(buffer);
httprequest_destroy(httprequest);
file = file_text_open_read(working_directory+"\download.tmp");
txt="";
while !file_text_eof(file)
{
txt += file_text_read_string(file)
file_text_readln(file);
}
file_text_close(file);
file_delete(working_directory+"\download.tmp");
return(txt);
} else {return(false);}
sha1

Codice: Seleziona tutto

sha1_begin();
sha1_read_string(argument0);
sha1_end();
return(sha1_result());
invia

Codice: Seleziona tutto

scarica(argument0+"?nome="+argument1+"&punteggio="+string(argument2)+"&password="+sha1(argument1+argument3+string(argument2)));
ricevi

Codice: Seleziona tutto

var a;
a=scarica(argument0);
if (variable_local_exists('nomi')) {
ds_list_clear(nomi);
ds_list_clear(punteggi);
}
nomi=ds_list_create();
punteggi=ds_list_create();
while(a != "") {
ds_list_add(nomi,string_copy(a,1,string_pos("#",a)-1));
a=string_delete(a,1,string_pos("#",a));
ds_list_add(punteggi,string_copy(a,1,string_pos("#",a)-1));
a=string_delete(a,1,string_pos("#",a));
}
Ora!
Per mandare un punteggio alla nostra classifica facciamo:

Codice: Seleziona tutto

invia("http://miosito.altervista.org/classificaonline.php","nome",punteggio,"passwordpersonalizzata")
Ovviamente sostituiamo miosito, nome, punteggio e passwordpersonalizzata con i relativi dati.
Per avere la classifica facciamo:

Codice: Seleziona tutto

ricevi("http://miosito.altervista.org/classificaonline.php");
Questo script crea due ds_list, una chiamata nomi e una punteggi, in ordine di punteggio.
Se si vuole ad esempio disegnare i primi 10 basta fare:

Codice: Seleziona tutto

var txt;
txt="";
for(i=0; i<10; i+=1) {
txt+=string(i+1)+"° "+ds_list_find_value(nomi,i)+" "+ds_list_find_value(punteggi,i)+"#";
}
draw_text(0,0,txt);
Spero che la guida vi sia stata utile, non voglio postare esempi perché la guida è più che sufficiente, ma se qualcuno ha bisogno di una mano chieda pure.
Ultima modifica di guidox il 24/03/2014, 13:59, modificato 4 volte in totale.
Immagine

Immagine

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: Guida passo passo per classifica online

Messaggio da Homunculus »

Bravo guidox, serviva una cosa del genere. Unica pecca l'utilizzo di funzioni mysql obsolete al posto di mysqli o odbc

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: Guida passo passo per classifica online

Messaggio da Tizzio »

Bravo!

Comuqnue al posto di:

Codice: Seleziona tutto

if ($_GET['nome'] != "" && $_GET['punteggio'] != "" && $_GET['password'] != "") {
Puoi usare isset

Codice: Seleziona tutto

if (isset($_GET['nome'], $_GET['punteggio'], $_GET['password]){ 

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Guida passo passo per classifica online

Messaggio da guidox »

Homunculus ha scritto:Bravo guidox, serviva una cosa del genere. Unica pecca l'utilizzo di funzioni mysql obsolete al posto di mysqli o odbc
Ignorantissimo in materia :oops:

@Tizzio: Si hai ragione ma volevo anche evitare che il nome non fosse una stringa vuota e quindi ho fatto così, anche se è una cosa che va fatta nel gioco quindi modifico ;)
Immagine

Immagine

Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Re: Guida passo passo per classifica online

Messaggio da Xxshark888xX »

E grande guidox, mi serviva proprio a me :asd:

Per Tizzio: Adoro la pappa pronta 8)
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Re: Guida passo passo per classifica online

Messaggio da Xxshark888xX »

Non funge, quando creo il file classificaonline.php dice che c'è un errore nella linea 4 dello script...

Codice: Seleziona tutto

Parse error: syntax error, unexpected T_STRING, expecting ']' in /membri/katakan/classificaonline.php on line 4
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Guida passo passo per classifica online

Messaggio da guidox »

La riga 4 è questa:
if (sha1($_GET['nome']."passwordpersonalizzata".$_GET['punteggio']) == $_GET['password']) {
controlla di aver chiuso tutte le rirgolette e di non usare una password con "

Cioè in questa riga devi solo cambiare la pass... es:
if (sha1($_GET['nome']."cacca".$_GET['punteggio']) == $_GET['password']) {
Immagine

Immagine

Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Re: Guida passo passo per classifica online

Messaggio da Xxshark888xX »

guidox ha scritto:La riga 4 è questa:
if (sha1($_GET['nome']."passwordpersonalizzata".$_GET['punteggio']) == $_GET['password']) {
controlla di aver chiuso tutte le rirgolette e di non usare una password con "

Cioè in questa riga devi solo cambiare la pass... es:
if (sha1($_GET['nome']."cacca".$_GET['punteggio']) == $_GET['password']) {
Hmm, non capisco una cosa...

Io nel gioco ho due variabili, o meglio 3: global.nickname, global.scor e global.best_scor

qui: if (sha1($_GET['nome']."cacca".$_GET['punteggio']) == $_GET['password'])

su "nome" devo mettere ciò che ho scritto nella prima colonna nel MyPHP?
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Guida passo passo per classifica online

Messaggio da guidox »

no, nome è un parametro che mando alla pagina php, lascialo nome. ;)
E poi scusa, chi ti ha detto di cambiare il nome della prima colonna! Non complicarti la vita xD
Immagine

Immagine

Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Re: Guida passo passo per classifica online

Messaggio da Xxshark888xX »

guidox ha scritto:no, nome è un parametro che mando alla pagina php, lascialo nome. ;)
E poi scusa, chi ti ha detto di cambiare il nome della prima colonna! Non complicarti la vita xD
Perché pensavo che leggesse le variabili del gioco :spat:

Ora provo così e ti faccio sapere :asd:

[EDIT]
Da lo stesso errore, ecco il codice di classificaonline.php

Codice: Seleziona tutto

<?php
include('config.php');
if (isset($_GET['nome'], $_GET['punteggio'], $_GET['password]) {
if (sha1($_GET['nome']."CENSORED_ASD".$_GET['punteggio']) == $_GET['password']) {
mysql_query("INSERT INTO `my_katakan`.`classificaonline` (nome,punteggio) VALUES('".$_GET['nome']."',".$_GET['punteggio'].")") or die(mysql_error());
header('location: /classificaonline/');
}
}else{
$classifica_ = mysql_query('SELECT * FROM `my_katakan`.`classificaonline` ORDER BY punteggio DESC');
$num = mysql_num_rows($classifica_);
for($i=0; $i<$num; $i++){
$classifica = mysql_fetch_array($classifica_);
echo($classifica['nome']."#".$classifica['punteggio']."#");
}
}
?>
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Guida passo passo per classifica online

Messaggio da guidox »

Tu ogni volta che vuoi inviare un punteggio devi fare:
invia("http://miosito.altervista.org/classific ... onalizzata")
Immagine

Immagine

Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Re: Guida passo passo per classifica online

Messaggio da Xxshark888xX »

guidox ha scritto:Tu ogni volta che vuoi inviare un punteggio devi fare:
invia("http://miosito.altervista.org/classific ... onalizzata")

Non funge, quando devo visualizzare la lista il gioco si blocca e crasha...
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Guida passo passo per classifica online

Messaggio da guidox »

Senti... mo ti faccio l'esempio... però più chiaro di così...
Immagine

Immagine

Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Re: Guida passo passo per classifica online

Messaggio da Xxshark888xX »

guidox ha scritto:Senti... mo ti faccio l'esempio... però più chiaro di così...
Grazie mille! :oops:
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Guida passo passo per classifica online

Messaggio da guidox »

Ora che ci penso non so come farti un esempio, praticamente ti ho detto tutto covoletti... magari mandami in pm TUTTI i codici che hai utilizzato
così vedo di capire l'errore ;)
Immagine

Immagine

Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Re: Guida passo passo per classifica online

Messaggio da Xxshark888xX »

guidox ha scritto:Ora che ci penso non so come farti un esempio, praticamente ti ho detto tutto covoletti... magari mandami in pm TUTTI i codici che hai utilizzato
così vedo di capire l'errore ;)
Fammi un gm8.1 con l'esempio di come trasmettere/ricevere i dati ad un tuo sito creato così alla cavolo e dove stampi a schermo la lista. Perché se così mi funge significa che sbagliavo io qualcosa nel gm8.1, se non funge neanche così allora parliamo su skype o tramite PM. Ti supplico :piagne:
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Guida passo passo per classifica online

Messaggio da guidox »

Tizzioooooo avevo copiato il tuo codice, e tu ti dimentichi un apostrofooooo sei un ragazzo cattivo xD
Immagine

Immagine

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: Guida passo passo per classifica online

Messaggio da Tizzio »

guidox ha scritto:Tizzioooooo avevo copiato il tuo codice, e tu ti dimentichi un apostrofooooo sei un ragazzo cattivo xD
sorry, ma cazzarola, xshark è davvero, davvero niubboncello... Va bene la pappa pronta, ma così stai esagerando, lo stai proprio imboccando e dandogli pacche sulla schiena per fare il ruttino :roll:

Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: Guida passo passo per classifica online

Messaggio da Solid Snake »

Ragazzo crudele... :asd:

Ma cosa fa questa parte di codice?

Codice: Seleziona tutto

if (sha1($_GET['nome']."passwordpersonalizzata".$_GET['punteggio']) == $_GET['password'])
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Re: Guida passo passo per classifica online

Messaggio da Xxshark888xX »

Tizzio ha scritto:
guidox ha scritto:Tizzioooooo avevo copiato il tuo codice, e tu ti dimentichi un apostrofooooo sei un ragazzo cattivo xD
sorry, ma cazzarola, xshark è davvero, davvero niubboncello... Va bene la pappa pronta, ma così stai esagerando, lo stai proprio imboccando e dandogli pacche sulla schiena per fare il ruttino :roll:
Eheh, sai devo evolvermi in Pikachu e mi serve ancora della pappa finché non risolvo al 100% :asd:

No sul serio, mi avete fatto venire voglia di imparare almeno le basi del php :sisisi:
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti