19-07-2007, 11:36 PM
Bon je pense cerner un peu plus la chose...
En m'appuyant sur ce qui vient d'être dit sur le message précédent, voici ce que je ferais:
Je considère que le perso va à une vitesse constante connue, du coup comme l'a dit barst on peut oublier d'enregistrer l'heure d'arriver .
donc je créerais une table position:
id_perso, pos_actuel, cap, date
id_perso étant l'identifiant du perso
pos_actuel étant en fait 2 colonnes faisant référence à la position actuelle (à la date indiqué "date")
cap une position d'arrivée en 2 colonne
date la date de l'Update
Je pars du principe que tu ne souhaite pas conserver le trajet complet effectué (qui serait de toute façon à mettre dans une table Archive et non MyISAM)
Tu peux grâce à cette table décrire le mouvement d'un perso, et même "les mouvements fixes" je veux dire que cap=pos_actuel
Pour déterminer si 2 personnes se sont rencontré (passé très proche) il te suffit alors de chercher l'intersection de droite entre le chemin du joueur et celui de tout les autres joueurs et de les sortir par ordre chronologique
Mais comme tu souhaites le faire si les perso sont à une distance définie le cas est un peu plus complexe...
Donc si tu fait "un peu" de math il n'est pas très complexe de définir la formule de math qu'il te faudra rentrer dans ta requête sql pour sortir dans l'ordre les combat qui auront eu lieu... (pour la formule de math j'ai déjà mis dans un autre message une solution qui y ressemble, mais si tu vois pas demande)
Sachant que le trucs doit être récursif dans le sens, ou si le joueur 1 se connecte on vérifie si dans son trajet précédent il n'y a pas eu de combat si il y en a eu on est obligé de regarder si les opposants n'ont pas eu avant la rencontre d'autre combat
On remonte ainsi en mettant à jour tout ces combats de personnes qui n'était pas connecté...
Tu peux aussi mettre à jour toute les 5 minutes en cherchant toute les rencontre de tout le monde, ou en approximant: tu met à jour toute les 5 minutes la position de chacun et tu regarde qui est très proche...
Bon mais comme je ne suis pas certains d'avoir compris le sujet, je vais pas développer plus au cas ou je me plante complètement!
En m'appuyant sur ce qui vient d'être dit sur le message précédent, voici ce que je ferais:
Je considère que le perso va à une vitesse constante connue, du coup comme l'a dit barst on peut oublier d'enregistrer l'heure d'arriver .
donc je créerais une table position:
id_perso, pos_actuel, cap, date
id_perso étant l'identifiant du perso
pos_actuel étant en fait 2 colonnes faisant référence à la position actuelle (à la date indiqué "date")
cap une position d'arrivée en 2 colonne
date la date de l'Update
Je pars du principe que tu ne souhaite pas conserver le trajet complet effectué (qui serait de toute façon à mettre dans une table Archive et non MyISAM)
Tu peux grâce à cette table décrire le mouvement d'un perso, et même "les mouvements fixes" je veux dire que cap=pos_actuel
Pour déterminer si 2 personnes se sont rencontré (passé très proche) il te suffit alors de chercher l'intersection de droite entre le chemin du joueur et celui de tout les autres joueurs et de les sortir par ordre chronologique
Mais comme tu souhaites le faire si les perso sont à une distance définie le cas est un peu plus complexe...
Donc si tu fait "un peu" de math il n'est pas très complexe de définir la formule de math qu'il te faudra rentrer dans ta requête sql pour sortir dans l'ordre les combat qui auront eu lieu... (pour la formule de math j'ai déjà mis dans un autre message une solution qui y ressemble, mais si tu vois pas demande)
Sachant que le trucs doit être récursif dans le sens, ou si le joueur 1 se connecte on vérifie si dans son trajet précédent il n'y a pas eu de combat si il y en a eu on est obligé de regarder si les opposants n'ont pas eu avant la rencontre d'autre combat
On remonte ainsi en mettant à jour tout ces combats de personnes qui n'était pas connecté...
Tu peux aussi mettre à jour toute les 5 minutes en cherchant toute les rencontre de tout le monde, ou en approximant: tu met à jour toute les 5 minutes la position de chacun et tu regarde qui est très proche...
Bon mais comme je ne suis pas certains d'avoir compris le sujet, je vais pas développer plus au cas ou je me plante complètement!