Tutorial di Lennaerts su PHP, mysql e multiplayer

1

Index

Fichiers attachés

Les fichiers suivants ont été attachés à ce tutoriel:

Statistiques

8,220 visites, 19,304 vues

Outils

Partager

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 29 Nov, 2013. Last updated 25 Feb, 2019

La funzione Call e controllo del giocatore con Ajax

Aggiungete questi oggetti comuni al progetto:

Ajax, Keyboard, Audio, Touch, Function

Funzioni con la Ajax Call

Prima della chiamata alla funzione, il checkcode viene settato, se ce n'e', e usato nella chiamata alla funzione con 3 parametri per la richiesta di chiamata. Utilizzeremo una chiamata di funzione per ogni cosa collegata al posting Ajax.

Se date un'occhiata piu' attenta, potrete vedere:

"request="&Function.Param(0)&"&extra="&Function.Param(1)&"&code="&CheckCode

In ogni chiamata alla funzione per fare le richeiste, utilizzeremo il primo parametro (quindi la variabile richiesta), un extra= che conterra' un secondo parametro, ed ovviamente un terzo per il terzo parametro che contiene in genere il CheckCode.

Nella prima chiamata di richiesta, faremo un request=checkplayer che, se presente, invierà anche il terzo parametro CheckCode.

Continuiamo a vedere la parte in PHP dopo quello che abbiamo fatto fin qui, per non diventare ripetitivi e tediosi.

In PHP stiamo aspettando la nostra chiamata Ajax, ed il cuore delle funzioni sara' definito dalla variabile "richiedente". In questo caso, alla partenza del layout, viene richiesto il checkplayer.

Questa e' la parte PHP:

    if($_POST[request] == "checkplayer"){
    // Crea i codici
    $playeragent =  $_SERVER['HTTP_USER_AGENT'];
    $playerhost = gethostbyaddr($_SERVER['REMOTE_ADDR']);
    $playerip=$_SERVER['REMOTE_ADDR'];
	
    // Cerca codici gia' esistenti o rigenera il codice:
    if(!empty($_POST[code])) {
        $playercode = stripslashes(mysql_real_escape_string($_POST[code]));
    } else {
    $playercode = md5($playeragent.$playerhost.$playerip);
    }
	
    // Controlla codici gia' esistenti
    if(mysql_num_rows(mysql_query("select id from players where playercode = '$playercode'")) == 0){
	
    // Il codice del giocatore non esiste, quindi aggiungo
    mysql_query("insert into players (playercode,state,kills,killed) values ('$playercode','no',0,0)");
	
    // IMPORTANTE: comincia a costruire la stringa da ritornare
    $message= "playeractive|"; // Pipe sign is crucial
    } else {

// Il codice giocatore esiste, faccio un update dello stato e delle uccisioni, per evitare imbprgli

mysql_query("update players set state='no',kills=0 where playercode='$playercode'"); $message="playeractive|";

    }
	
    $message .= $playercode; // Aggiunge il check code alla stringa ritornata
    

// Prende lo user ID che utilizzeremo per moltissimi elementi del gioco

    $playerid = mysql_fetch_object(mysql_query("select id from players where playercode = '$playercode'"));
    $message .= "|".$playerid->id; // Ritorniamo anche l'ID del giocatore
    }
    

// Questa istruzione visualizzera' la stringa che viene restituita a Construct 2; dobbiamo tenere questa istruzione sempre alla fine del file. Ogni altra funzione che aggiungeremo piu' tardi verra' inserita sopra questa.

echo $message;

    ?>

Come potete vedere nelle funzionalita' in Construct 2 nella "on request complete", che controlla anche la stringa precedente il primo pipe |, quando trova che la prima variabiel e' "playeractive" fa un update del CheckCode e seta la unitid per il giocatore.

Questa versione semplificata non fa differenze tra giocatori nuovi ed esistenti.

La prossima funzione che vedremo nella parte successiva, e' leggermente piu' avanzata.

  • 0 Comments

Want to leave a comment? Login or Register an account!