JeuWeb - Crée ton jeu par navigateur
[Reglé]Système d'inventaire - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Reglé]Système d'inventaire (/showthread.php?tid=1527)



[Reglé]Système d'inventaire - trididinus - 27-07-2007

Cela fait longtemps que je ne suis plus venu et donc je redis bonjour à tout ceux que je ne connais pas.

Voilà je voudrais réaliser l'inventaire de mon jeu à coté de l'image du personnage. Le joueur pourrait alors déplacer un objet de son inventaire (à l'aide de la souris) et le poser sur son perso pour que l'objet soit équipé (système de drag and drop)

Tout fonctionne bien sous Firefox mais pas sur internet explorer évidement. Seulement je ne comprend pas pourquoi car j'ai fait la différence entre les deux.

Voici le code permettant l'ouverture du fichier qui doit changer l'image :
Code PHP :
<?php 
<div id="perso"><img id="perso" src="<? echo $image; ?>" /></div>
<
script type="text/javascript">Droppables.add('perso', {onDrop:
function(
element){
var
id_objet = encodeURIComponent(element.id)
if(
id_objet != '') {
if(
texte = file('equiper_objet.php?idobjet='+id_objet))
{
if(
texte == 'Objet inexistant')
{
writediv('Cet objet n\'existe pas.');
}
else if(
texte == 'Non appartenance')
{
writediv('Cet objet ne vous appartient pas.');
}
else if(
texte == 'deja porte')
{
writediv('Vous portez déjà cet objet.');
}
else if(
texte == 'objetnonportable')
{
writediv('L\'objet ne peut pas être mis sur le personnage.');
}
else
{

document.getElementById("reponse").style.visibility="hidden";
var
nouvelleimage = texte;
var
persoemplacement = document.getElementById("perso");
persoemplacement.setAttribute("src", nouvelleimage);

}
}
}
else {
writediv('L\'id de l\'objet n\'est pas rentré.'); }
}
})</
script>

Le fichier est ouverte grace à la fonction "file()" et le résultat est obtenu par la suite.

Voici la fonction file() :
Code PHP :
<?php 
function file(fichier)
{
if(
window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(
window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(
false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(
xhr_object.readyState == 4) return(xhr_object.responseText);
else return(
false);
}

Je répete, il fonction très bien sous firefox! Mais ne veut pas change l'image sous IE.

Si vous pouvez m'aider, ce serait chouette.

[Edit] J'ajoute un bout de script. C'est ce qui enclenche la fonction lorsque que l'on pose l'image de l'objet sur l'image du perso. Je ne suis pas trop sur que je puisse fire comme cela. Si je ne peux pas, dites-moi comment faire svp. Il se peut que le problème vienne de là... Firefox est plus tolérant que IE.

Code PHP :
<?php 
<script type="text/javascript">new Draggable('<? echo $sql_item['id']; ?>', {revert:true})</script>



RE: Système d'inventaire - TeKRunneR - 29-07-2007

Ce n'est peut-être pas du tout le problème, mais j'ai déjà eu des soucis avec setAttribute, du coup peut-être pourrais-tu essayer de supprimer carrément ta balise img et d'en recréer une autre avec la nouvelle url de ton image, au lieu de juste en modifier l'attribut src.


RE: Système d'inventaire - zneman - 29-07-2007

oO La ca dépasse mes compétences... on peut faire ca en php ?! oO


RE: Système d'inventaire - trididinus - 29-07-2007

Non ce n'était pas ca le problème. J'ai essayé comme tu me l'a conseillé mais depuis plus rien ne marche. Je vais réessayer de trouver.

[Edit] J'ai trouvé le problème. J'avais donné le même id pour l'image et pour le div qui l'a contenait. Ce qui n'etait pas accepté par IE. Donc maintenant ca marche!