Auteur Sujet: Intégration pp3Diso php/MySQL  (Lu 10511 fois)

Hors ligne vincent

  • Néophyte
  • *
  • Messages: 20
  • Karma: +0/-0
Intégration pp3Diso php/MySQL
« le: 25 juin 2012 à 12:33:49 »
Bonjour
Je viens de découvrir ce plugin fantastique à première vue qui m'a fait ressortir un projet de rpg que j'avais mis au placard faute de temps et de compétences.
En prenant l'exemple(a), je souhaiterais savoir comment se passe l'intégration.
Par exemple en donnant une latitude et une longitude de cette facon :

ppmap.moveMapOn();
map1();
ppmap.avatar(<?php echo ''.$persorow['latitude'].''?>, <?php echo ''.$persorow['longitude'].''?>, 'images/avatar-<?php echo ''.$persorow["skin"].''?>.png', 0, -65);


function gestion_onmove(x, y, id) {


$.ajax({
url: "ajax-load-avatar.php",
context: document.body,
success: function(data){
ppmap.avatar.reload(?, ?, 'images/avatar.png', 0, -65);
}
});



if((x==6 || x==7) && y==12 && id==1) {
$.ajax({
url: "ajax-load-map.php?n=2",
context: document.body,
success: function(data){
dummy = data.split("-");
ppmap.reload(dummy[0], dummy[1],'', 2);
map2();
ppmap.avatar(6, 7, 'images/avatar.png', 0, -65);
}
});

}else if((x==6 || x==7) && y==12 && id==2) {
$.ajax({
url: "ajax-load-map.php?n=1",
context: document.body,
success: function(data){
dummy = data.split("-");
ppmap.reload(dummy[0], dummy[1],'', 2);
map1();
ppmap.avatar(6, 7, 'images/avatar.png', 0, -65);
}
});

}
}


Donc comment insérer l'update dans : ajax-load-avatar.php et récupérer les nouveaux coordonnées du personnage aprés avoir bougé?

$newlongitude = ? ;
$newlatitude = ? ;

$query=("UPDATE perso SET longitude='$newlongitude', latitude='$newlatitude' WHERE id='".$persorow[id']."' ");
$result=mysql_query($query);

Merci par avance j'ai hâte ;)
« Modifié: 25 juin 2012 à 12:39:42 par vincent »

Hors ligne Prelude

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1155
  • Karma: +9/-0
    • Mon blog
Re : Intégration pp3Diso php/MySQL
« Réponse #1 le: 25 juin 2012 à 12:49:18 »
Bonjour,
Ravis que ce plugin t'intéresse  ;)

Donc, pour en venir à ton code. Je ne vais pas pouvoir t'aider beaucoup, en tout cas je ne vais pas rentrer dans les détails car j'estime qu'il faut connaître un peu JavaScript et Php avant de se lancer dans ce type de développement et que si ce n'est pas le cas, il faut commencer par apprendre en faisant des projets un peu moins complexes.

Mais voici une aide :
 - quand tu appelles une url, que ce soit en ajax ou en direct, tu peux préciser des paramètres. Par exemple :
ajax-bouge-avatar.php?x=10&y=15&idAvatar=1254
 - tu peux récupérer ces informations de la façon suivante, dans le fichier ajax-bouge-avatar.php :
if(isset($_REQUEST['x']) === FALSE) {
$newlongitude = 0;
} else {
$newlongitude = $_REQUEST['x'];
}
(à faire pour chaque paramètre, donc mettre tout ça dans une fonction...)

Enfin, jQuery permet de passer les arguments de façon plus simple (et plus joli) en utilisant le paramètre "data". Toute la doc (avec des exemples à la fin) ici : http://api.jquery.com/jQuery.ajax/

Est-ce que cela t'aide ?

Hors ligne vincent

  • Néophyte
  • *
  • Messages: 20
  • Karma: +0/-0
Re : Intégration pp3Diso php/MySQL
« Réponse #2 le: 25 juin 2012 à 13:26:02 »
Bonjour et merci pour ta réponse ultra rapide!

Je suis allé chercher compliqué et je me suis embrouillé pour rien :s
*baisse la tête en signe de honte*


$.ajax({
data: "Longitude="+x,
type: "POST",
url: "ajax-load-avatar.php"
});


if(isset($_REQUEST["Longitude"])){
$newlongitude = $_REQUEST["Longitude"];

Merci beaucoup, Ca fonctionne! Vraiment génial ce plug-in!
« Modifié: 25 juin 2012 à 13:29:07 par vincent »

Hors ligne Prelude

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1155
  • Karma: +9/-0
    • Mon blog
Re : Intégration pp3Diso php/MySQL
« Réponse #3 le: 25 juin 2012 à 13:41:39 »
Ne baisse pas la tête, relève là et soit fier d'avoir posé une question  ;)

N’oublie pas de faire quelques protections avant d'enregistrer des infos à partir de l'ajax : vérification si le mouvement est possible ou pas, vérification des données et protection pour éviter l'injection SQL, ...

J'espère que tu nous montreras le résultat !

Hors ligne vincent

  • Néophyte
  • *
  • Messages: 20
  • Karma: +0/-0
Re : Intégration pp3Diso php/MySQL
« Réponse #4 le: 25 juin 2012 à 17:22:48 »
Une question j'ai "bricolé" ceci pour faire apparaître les autres joueurs depuis la base mais je ne pense pas que ce soit la bonne pratique, j'ai regardé l'exemple(G) : Auriez-vous un avis sans code juste en theorie? :)

//MULTIJOUEURS
<?php 
// -------------------------------------------------------
// Function: db_get_data()
// -------------------------------------------------------
$result=mysql_query("select id,nom,skin,latitude,longitude from perso where id!='".$persorow['id']."' order by id");
$countplayers=mysql_num_rows(mysql_query("SELECT id FROM perso order by id desc ")); 
$i 1;
while( 
$row mysql_fetch_array ($result)){ 
?>

ppmap.addObject(<?php echo "".$row['latitude'].""?>, <?php echo "".$row['longitude'].""?>, 'images/avatar-<?php echo "".$row['skin'].""?>.png', 0, -65);
<?php 
$i
++;

?>

}

ps: le code est brut et sale mais je cherche à le faire fonctionner dans les grandes lignes et ensuite je ferais ca "joliement".
« Modifié: 25 juin 2012 à 18:39:41 par vincent »

Hors ligne Prelude

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1155
  • Karma: +9/-0
    • Mon blog
Re : Intégration pp3Diso php/MySQL
« Réponse #5 le: 25 juin 2012 à 19:05:46 »
L'idée me semble bonne.
Par contre, il faudrait que tu ajoutes un id à chaque joueur histoire de ne pas le réafficher à chaque fois, mais juste de le faire bouger quant il bouge.
Mais sinon, ça me semble bon (je ne parle pas du code, juste de l'idée)

Hors ligne vincent

  • Néophyte
  • *
  • Messages: 20
  • Karma: +0/-0
Re : Re : Intégration pp3Diso php/MySQL
« Réponse #6 le: 25 juin 2012 à 19:12:27 »
Par contre, il faudrait que tu ajoutes un id à chaque joueur histoire de ne pas le réafficher à chaque fois, mais juste de le faire bouger quant il bouge.

hihi voilà mon Drame depuis approximativement 14h! Je ne sais pas dans quel sens le prendre, je n'arrete pas de partir dans une direction et de me retrouver bloquer à un moment du coup je reprends de zéro et rebelotte...

Hors ligne Prelude

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1155
  • Karma: +9/-0
    • Mon blog
Re : Intégration pp3Diso php/MySQL
« Réponse #7 le: 25 juin 2012 à 19:59:01 »
Tu devrais avoir, dans ta table, un id pour chaque fiche (joueur). Si ce n'est pas le cas, il faut en mettre un.
Après quoi, tu as le paramètre id pour addObject(x, y, sprite, decx, decy, [titre], [bulle], [id])
Pour titre et bulle, tu m'est à vide ('')

Ensuite, moveObject(id, x, y, animate, vitesse) te permettra de bouger l'objet (donc le joueur) avec le bon id (celui de la base).

Hors ligne vincent

  • Néophyte
  • *
  • Messages: 20
  • Karma: +0/-0
Re : Intégration pp3Diso php/MySQL
« Réponse #8 le: 25 juin 2012 à 20:51:46 »
Ok merci de me répondre si vite :)
La en fait j'en suis exactement au point ou il me récupere les joueurs de la base avec un while pour les afficher :

J'ai rajouter le ppmap.moveObject et mes bonhomes font du sur place leur position ne refresh pas à moins de faire f5...

//MULTIJOUEURS
<?php 
// -------------------------------------------------------
// Function: db_get_data()
// -------------------------------------------------------
$result=mysql_query("select id,nom,skin,latitude,longitude from perso where id!='".$persorow['id']."' order by id");
$countplayers=mysql_num_rows(mysql_query("SELECT id FROM perso order by id desc ")); 
$i 1;
while( 
$row mysql_fetch_array ($result)){ 
?>

ppmap.addObject(<?php echo "".$row['latitude'].""?>, <?php echo "".$row['longitude'].""?>, '/images/avatar-<?php echo "".$row['skin'].""?>.png', 0, -65, '', '', <?php echo "".$row['id'].""?>);

setInterval(function(){
ppmap.moveObject(<?php echo "".$row['id'].""?>, <?php echo "".$row['latitude'].""?>, <?php echo "".$row['longitude'].""?>, true, 500);
}, 500);

<?php 
$i
++;

?>


}

Il y a quelque chose que je ne fais pas c'est sur mais quoi...? :s
« Modifié: 25 juin 2012 à 22:32:06 par vincent »

Hors ligne Prelude

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1155
  • Karma: +9/-0
    • Mon blog
Re : Intégration pp3Diso php/MySQL
« Réponse #9 le: 25 juin 2012 à 22:57:33 »
Il y a une confusion entre le JavaScript (exécuté côté client) et le Php (côté serveur).
Ta fonction qui s'exécute toutes les x millisecondes doit récupérer les positions en ajax pour modifier la carte en conséquence.
500 millisecondes, c'est un peu rapide pour une carte. Ca dépend beaucoup de la quantité d'infos, mais ça me semble beaucoup si tu dois lire à chaque fois toutes les coordonnées de chaque joueur.
Il va falloir trouver quelques astuces pour optimiser tout ça...
Bon courage en tout cas.

Hors ligne vincent

  • Néophyte
  • *
  • Messages: 20
  • Karma: +0/-0
Re : Intégration pp3Diso php/MySQL
« Réponse #10 le: 26 juin 2012 à 11:15:06 »
Toujours merci pour ta réponse, ai passé la nuit dessus sans résultat, j'attendrais un tuto pour preserver ma santé mentale  ;D

Hors ligne Prelude

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1155
  • Karma: +9/-0
    • Mon blog
Re : Intégration pp3Diso php/MySQL
« Réponse #11 le: 26 juin 2012 à 14:43:05 »
Mouais. Va falloir que je fasse une exemple complet avec JavaScript / Php / MySQl un de ces 4.

Au passage, pour ceux et celles qui seront sur Paris ce jeudi 28 juin, passez à PitchMyGame, j'y présente justement pp3Diso, ce sera l'occasion de discuter  ;)

Et les inscription sont là : http://pmg02.eventbrite.com/

Hors ligne vincent

  • Néophyte
  • *
  • Messages: 20
  • Karma: +0/-0
Re : Intégration pp3Diso php/MySQL
« Réponse #12 le: 27 juin 2012 à 11:17:08 »
Bonjour!
Je m'y suis remis en fait, j'ai pu "m'amuser" avec des effets météo, tout un tas d'interactions et de jolis tilsets mais je reste bloquer sur cette facon de rafraichir les avatars des joueurs quand ils bougent :s

J'ai buggé totalement sur ce point, Une idée dans quel sens le prendre? ... Pas tapper, pas tapper, pas tapper xD

(malheureusement je suis à 500km de paris pour le PitchMyGame, sinon je serais venu avec grande joie!)
« Modifié: 27 juin 2012 à 11:19:04 par vincent »

Hors ligne Prelude

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1155
  • Karma: +9/-0
    • Mon blog
Re : Intégration pp3Diso php/MySQL
« Réponse #13 le: 27 juin 2012 à 11:40:59 »
Le problème est que ça ne s'explique pas en quelques lignes.

Pour faire simple, tu pourrais :
 - une boucle qui va demander en ajax la position des joueurs dans la partie visible (autant se limiter à ce que voit le joueur actuel). Mettons toutes les secondes pour commencer, tu verras après en fonction de ton serveur et du nombre de joueurs.
 - si le joueur ne se trouve pas sur la carte (en fonction de son id), c'est un addObject : - affichage des autres joueurs : addObject(x, y, sprite, decx, decy, '', '', id)
 - si le joueur se trouve sur la carte, c'est un moveObject(id, x, y, animate, vitesse)

Tu peux savoir si le joueur se trouve sur la carte (celle visible) en faisant un tableau dans lequel tu conserve l'id et la position par exemple.
Après, il faudra optimiser : ça ne sert à rien d'afficher les joueur qui sont en dehors de la partie visible de la carte par exemple.

Mais pour tout ça, il te faudra connaître (si ce n'est pas maîtriser) le JavaScript et le Php / MySQL. Et là, je ne peux pas y faire grand chose.
Bon courage en tout cas  ;)

Hors ligne vincent

  • Néophyte
  • *
  • Messages: 20
  • Karma: +0/-0
Re : Intégration pp3Diso php/MySQL
« Réponse #14 le: 27 juin 2012 à 14:04:36 »
ok, dur... arrgghh je viens de m'apercevoir que les id des joueurs rentraient en collision avec les id des objets... ce qui est logique en étant considerer comme des objets ;(