Problème boutique du site [résolu]
Bonjour a tous !

Voilou, j'utilise un site a la base pour mangos, alors je le retape pour qu'il fonctionne avec trinity, petit a petit.
jusqu’à maintenant, tout fonctionne excepté une chose: ma boutique
Lors de l'achat, mes points sont bien retirés, il y a un mess de confirmation d'achat et comme quoi je vais recevoir l'item par mail...

Cependant, rien du tout !

donc j'ai trifouillé le code de requête SQL dans tous les sens, mais rie n'y fait...

voila ce que j'ai en ce moment:


Code PHP :
mysql_query("UPDATE account SET points = '".$calc."' WHERE username = '".$_SESSION['pseudo']."'")or die (mysql_error());
 
mysql_select_db($array_db['characters']) or die();
$ry44 mysql_query("SELECT * FROM characters WHERE name='".$_POST['action']."' ");
$character $rep44['guid'];
$iditem $rep2['id'];
$nombre 1;
$itemid rand(1600000);
mysql_query("insert  into `item_instance`(`guid`,`itemEntry`,`owner_guid`,`creato​rGuid`,`giftCreatorGuid`,`count`,`duration`,`charges`,`flags​`,`enchantments`,`randomPropertyId`,`durability`,`playedTime​`,`text`) values ('".$itemid."','".$iditem."','".$character."',0,0,'".$nombre."',0,'0 0 0 0 0',0,'0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ',0,0,0,'')");
mysql_query("REPLACE INTO `character_inventory`(`guid`,`bag`,`slot`,`item`) VALUES ('".$character."', '0', '23', '".$iditem."')");
echo 
'<p class="succes">Objet acheté avec succès !<br> ( Votre objet a été envoyé par courrier, si vous ne recevez pas l&apos;objet pendant 10 minutes, veuillez contacter un maître de jeu. )<br> Il vous reste: <u>'.$calc.' Point(s)</u></p><br/><br/>';
echo 
'<a href="index.php?site=boutique">[retour]</a>'

en regardant dans ma table character_inventory et item_instance, je vois que les lignes sont ajoutée apres l'achat...donc le code fonctionne ? étrange !

Encore plus étrange: la ligne ecrite dans character_inventory finis par disparaitre.... je comprends rien,

svp help !
L'instanciation des items en direct dans la base sans passer par un handler en C++ est vouée à de gros soucis.

On ne le répétera jamais assez si vous ne voulez pas de souci avec voter boutique codez une fonction dans le core qui fait l'ajout automatiquement en reprenant simplement une commande existante (style additem ou send item).

Il y a tellement de données à gérer pour les items et certaines sont parfois générées par le core lui même, donc si vous insérez des données en base comme ça en direct pour des choses aussi sensible que les items faut pas s'étonner qu'il y ait des erreurs Clin

Après si tu tiens tellement à utiliser un système bancal, je te conseille de t'ajouter un item via le .additem puis de t'envoyer le même par ton système là. Et tu vois si il y a des différences entre les deux.

Je vois que tu essayes de bidouiller le site pour l'adapter à tes besoins mais tu y gagnerais plus à t’investir dans le codage d'une simple fonction d'une 20 aine de ligne pour livrer les items directement en jeu via une commande.
Je voudrai bien, mais mes connaissances sont très limités, j'essaye de comprendre le code que je vois et de le bidouiller en fonction de ce que je comprend, je serai incapable de créer par moi même, un code tel.... :/
Si vous pouvez m'éclairer d'avantage, je suis prêt a m'investir Smile

merci de ta réponse rapide.
Cordialement, Lightness
Pour ca c'est assez simple :

Regarde comment est implémentée une fonction en C++ dans Trinity, tu peux regarder ici : https://github.com/TrinityCore/TrinityCo...t/Commands
Tu y trouveras pas mal de commandes du jeu, généralement on met les nouvelles commandes dans Level0.cpp (mais tu peux faire ton propre fichier Clin)

ici : https://github.com/TrinityCore/TrinityCo...hat/Chat.h tu déclares le prototype de ta fonction (dans la classe ChatHandler)

Le le fichier associé Chat.cpp te permet de référencer le nom réel de ta fonction à celle du handler.
J'ai réussi !!

ça fonctionne très bien maintenant :

j'ai ajouté ce code prit depuis coolwow 3.0 et je l'ai modifié:

Code PHP :
$req_mid mysql_query('SELECT MAX(id) FROM mail');
$res_mid mysql_fetch_row($req_mid);
$mid $res_mid[0] + 1;
$expire_time time() + (30 DAY);
$time time();
mysql_query("INSERT INTO mail_items (mail_id,item_guid,receiver) VALUES ('".$mid."','".$itemid."','".$character."')") or die(mysql_error());
mysql_query("INSERT INTO mail (id,messageType,stationery,mailTemplateId,sender,receiv​er,subject,body,has_items,expire_time,deliver_time,money,cod​,checked) 
VALUES('"
.$mid."','0','61','0','".$character."','".$character."','Félicitation: Objet acheté Avec Succès','Merci de votre achat..Revenez nous rendre visite a la boutique !','1','".$expire_time."','".$time."','0','0','0')") or die(mysql_error()); 


Édition :
Je vais essayer ta méthode aussi, merci de tes réponses Smile
Bien joué,

Si tu veux en savoir plus sur les commandes liées au core je suis en train de finir un tutoriel dessus : http://wiki.zone-emu.fr/index.php/Trinit...de_C%2B%2B

Cordialement,

Retourner en haut Accueil