Hystos
Membre-
Compteur de contenus
256 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Boutique
Calendrier
Tout ce qui a été posté par Hystos
-
C'est parce que le script ne tient pas compte du faite que l'item puisse être empilable ou non. Je ne sais pas quelle tête à ta fonction verif_place_is() mais elle doit être comme ceci (adaption pour PDO faite à l'arrache, non testée) : function verif_place_is($account_id, $nb_item=1) { if(is_numeric($account_id)) { $requete = "SELECT COUNT(*) AS nb_safebox FROM player.safebox WHERE account_id = '$account_id'"; $retour = $connexion->query($requete) $donnees = $retour->fetch(); if($donnees['nb_safebox'] == 1)//Si l'user a bien un entrepôt { $pos = 0; $go = false; while($go == false) { $retour = $connexion->query("SELECT COUNT(*) AS nb_pos FROM player.item WHERE owner_id = '$account_id' AND pos = '$pos' AND window = 'MALL'"); $donnees = $retour->fetch(); if($donnees['nb_pos'] >= 1) {$pos++;} else {$go = true;} } if($pos > (44-$nb_item)) { return false; } // Si le MALL est plein else {return $pos;} // On renvoi le numéro de la position libre } else {return false;} } else { return false; } // Si account n'est pas un chiffre } Ensuite, pour ton code, essaie de remplacer par ça. J'ai fais une sorte de mixe avec MT2-CMS un peu en live, j'ai pas testé donc c'est possible qu'il y ait quelques bugs Bienvenue dans l'item Shop de <?php echo $nomServeur; ?> <?php if(empty($_GET['action'])){ $sqlCategories = "SELECT * FROM yurima.catIs"; $resultCategories = $connexion->query($sqlCategories); // on va chercher tous les membres de la table qu'on trie par ordre croissant $resultCategories->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le résultat soit récupérable sous forme d'objet while($dataCategories = $resultCategories->fetch()) // on récupère la liste des membres { if(@$lignes->mAuthority == "IMPLEMENTOR") { $_SESSION['categorie'] = $dataCategories->categorie; $_SESSION['id_cat'] = $dataCategories->id; echo' '.$dataCategories->categorie.'Supprimer'; }else{ echo' '.$dataCategories->categorie.' '; } } }elseif(isset($_GET['action']) && $_GET['action'] == "categorie") { echo' Vous avez '.$cash.' '.$nomCash.' - Recharger mon compte '; $myVar = intval($_GET['id']); $sqlVide = "SELECT * FROM yurima.itemIs WHERE categorie= '".$myVar."' AND actif = 1 "; $resultVide = $connexion->prepare($sqlVide); $resultVide->execute(); $countVide = $resultVide->rowCount(); if($countVide == 0) { echo'Il n\'y a aucun objet dans cette Catégorie'; } $sqlItems = "SELECT * FROM yurima.itemIs WHERE categorie= '".$myVar."' AND actif = 1"; $resultItems = $connexion->query($sqlItems); // on va chercher tous les membres de la table qu'on trie par ordre croissant $resultItems->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le résultat soit récupérable sous forme d'objet while($dataItems = $resultItems->fetch()) // on récupère la liste des membres { if(@$lignes->mAuthority == "IMPLEMENTOR") { $_SESSION['item'] = $dataItems->nameItem; $_SESSION['actif'] = $dataItems->actif; echo' '; } echo' x'.$dataItems->nbItem.' '.$dataItems->nameItem.' '.$dataItems->infoItem.' '.$dataItems->prix.' Monnaie '; } echo' < Retour'; }elseif(isset($_GET['action']) && $_GET['action'] == "acheter"){ $myVar = intval($_GET['id']); $sqlItems = "SELECT * FROM yurima.itemIs WHERE actif = '1' AND id =".$myVar." "; $resultItems = $connexion->query($sqlItems); // on va chercher tous les membres de la table qu'on trie par ordre croissant $resultItems->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le résultat soit récupérable sous forme d'objet while($dataItems = $resultItems->fetch()) // on récupère la liste des membres { echo'Vous êts sur le point d\'acheter x'.$dataItems->nbItem.' '.$dataItems->nameItem.' '.$dataItems->infoItem.' '.$dataItems->prix.' Monnaie < Retour'; } }elseif(isset($_GET['action']) && $_GET['action'] == "valide") { $myVar = intval($_GET['id']); $sqlItem = "SELECT * FROM yurima.itemIs WHERE id= '".$myVar."'"; $resultItem = $connexion->query($sqlItem); // on va chercher tous les membres de la table qu'on trie par ordre croissant $resultItem->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le résultat soit récupérable sous forme d'objet while($dataItem = $resultItem->fetch()) // on récupère la liste des membres { //on liste les variable utiliser $prix_item = $dataItem->prix; $nb_item = $dataItem->nbItem; $item = $dataItem->idItem; $nom_item = $dataItem->nameItem; $flag = $dataItem->flag; $temps = $dataItem->value0; if ($cash >= $prix_item) { if($flag==4 or $flag==20 or $flag==132 or $flag==2052 or $flag==8212) { //Si l'entrepot n'est pas plein if (is_numeric(verif_place_is($id_membre))) { //On le débite $debite=$connexion->exec("UPDATE account.account SET cash=cash-'".$prix_item."' WHERE id = '".$id_membre."' LIMIT 1"); //On entre dans les logs $ajoutHistorique=$connexion->exec("INSERT INTO yurima.historiqueIs (idItem,nomItem,nbItem, nomMembre, idMembre,prix,type,date) VALUES ('".$item."','".$nom_item."','".$nb_item."', '".$login."', '".$id_membre."', '".$prix_item."','1',NOW())"); //On ajoute l'objet $pos = verif_place_is($id_membre); $connexion->exec("INSERT INTO player.item (owner_id, window, pos, count, vnum, socket2) VALUES ('$id_membre', 'MALL', '$pos', '$nb_item', '$item', '$temps')"); echo'Votre Objet a été ajouter avec succé dans votre item Shop Recuperez votre Objet avant d\'en racheter un Cela Evitera de faire beuguer votre item shop Redirection sur la page de l\'item shop dans 8 secondes '; } else { echo'Votre entrepot est plein Redirection sur la page de l\'item shop dans 5 secondes '; } } //Sinon on regroupe les items else { //Si l'entrepot n'est pas plein if (is_numeric(verif_place_is($id_membre, $nb_item))) { //On le débite $debite=$connexion->exec("UPDATE account.account SET cash=cash-'".$prix_item."' WHERE id = '".$id_membre."' LIMIT 1"); //On entre dans les logs $ajoutHistorique=$connexion->exec("INSERT INTO yurima.historiqueIs (idItem,nomItem,nbItem, nomMembre, idMembre,prix,type,date) VALUES ('".$item."','".$nom_item."','".$nb_item."', '".$login."', '".$id_membre."', '".$prix_item."','1',NOW())"); //On ajoute l'objet for ($i = 1; $i <= $nb_item; $i++) { $pos = verif_place_is($id_membre); $connexion->exec("INSERT INTO player.item (owner_id, window, pos, count, vnum, socket2) VALUES ('$id_membre', 'MALL', '$pos', '1', '$item', '$temps')"); } echo'Votre Objet a été ajouter avec succé dans votre item Shop Recuperez votre Objet avant d\'en racheter un Cela Evitera de faire beuguer votre item shop Redirection sur la page de l\'item shop dans 8 secondes '; } else { echo'Votre entrepot est plein Redirection sur la page de l\'item shop dans 5 secondes '; } } } else { echo'Vous n\'avez pas assez de '.$nomCash.' Redirection sur la page de l\'item shop dans 5 secondes '; } } }
-
Transmet nous la page qui contient l'itemshop pour que l'on puisse t'aider
-
Quel CMS utilises-tu ? Peux-tu nous en donner le lien de téléchargement ?
-
C'est un serveur en no-ip ou sur hamachi² ? Dans le premier cas, il faut qu'il se connecte avec l'adresse no-ip et non l'adresse de la machine dans ton LAN. Dans le second, c'est avec l'adresse hamachi et non celle-ci.
-
As-tu essayé ce que j'ai indiqué ?
-
Essaie de mettre 1 dans limittype0 (item_proto serveur ET client).
-
Quelques pistes : Pour toute variable utilisée dans la quête tu dois utiliser le préfixe local lors de sa déclaration, ce n'est pas le cas pour sub_set. Tu as des espaces en trop ligne 27 : sa y_title("Anneau de téléportation:")
-
Pourrais-tu nous transmettre les queries données par le logiciel ?
-
On s'est parfaitement compris t'inquiète pas Relis bien mon message C'est juste que c'est comme si tu écrivais en mathématiques 5 - (-5) = 10 à la place de 5 + 5 = 10 ce qui pour moi est du tournage en bourrique vu que tu utilises 2 négations pour dire une chose que tu peux dire en une affirmation, ainsi plus facilement et plus logiquement (c'est tout de même plus logique de dire qu'un niveau doit être égal à 100 plutôt que de dire qu'un niveau ne doit pas être différent de 100 ). Bref, trêve de flood :angel:
-
when login or levelup or enter with pc.get_level() >=100 and pc.get_level() <= 100 begin Je traduis Quand on se connecte ou qu'on change de niveau ou qu'on change de map avec le niveau plus grand ou égal à 100 (donc de 100 compris à + l'infini) et le niveau plus petit ou égal à 100 (donc de 0 à 100 compris). J'ai pas compris le truc là Le seul niveau qui réunira les 2 conditions, c'est 100. Je pense qu'un simple pc.get_level() == 100 aurait suffi, non ? PS : Sparkk, l'art de tourner les choses en bourriques "pas avec le niveau de différent de 100"
-
Bug mineur : Vote comptabilisé
Hystos a répondu à un(e) question de marllow dans Questions & Réponses
Bonjour, C'est l’algorithme qui est incorrect. Quand l'user clique sur un des boutons de vote, l'url prend 2 paramètres : action qui est égal à "ok" et site qui est égal au nom du site de vote. Hors pour choisir quelle action effectuer (soit afficher les boutons, soit récompenses) le script vérifie le paramètre action. S'il est différent de ok on affiche les boutons sinon on crédite le compte. Le problème est que quand l'utilisateur arrive sur la page normalement, ce paramètre n'existe pas d'où l'erreur retournée. Remplace la ligne 33 par ceci : if ($_GET['p'] == "Vote" && empty($_GET['action'])) A la place de vérifier sa valeur, je vérifie qu'elle n'existe pas ce qui revient au même vu que sa valeur n'a aucune importance. -
Hum... Première question toute bête : la quête est-elle bien mise dans locale_list avec une ligne vide après ? Ensuite, je n'aime pas trop ceci when login begin if pc.getqf("debut") == 0 then pc.setqf("debut", 1) set_state(etape1) end end Ce n'est pas très logique... S'il n'existe pas il ne peut théoriquement pas avoir la valeur 0 D'un point de vue algorythmique, ça serait mieux de vérifier qu'il n'est pas égal à 1. De plus, je ne suis pas certain mais le set_state() pourrait peut être prendre des guillemets. when login begin if pc.getqf("debut") != 1 then pc.setqf("debut", 1) set_state("etape1") end end Essaie comme ça.
-
WHERE player.name NOT IN(SELECT mName FROM common.gmlist) player.name NOT LIKE '[%]%' AND account.status!='BLOCK' Ca serait mieux avec un AND WHERE player.name NOT IN(SELECT mName FROM common.gmlist) AND player.name NOT LIKE '[%]%' AND account.status!='BLOCK'
-
C'est plus compliqué et les requêtes utilisées sont déjà carrément tordues. S'ils ont d'autres caractères spécifiques, genre des { } ça marche aussi. WHERE player.name NOT LIKE '[%]%' AND account.status!='BLOCK' devient comme ceci : WHERE player.name NOT LIKE '{%}%' AND account.status!='BLOCK'
-
Bonjour, Les membres du staff ont-ils bien des crochets dans leur pseudo ?
-
La manière la plus simple est qu'à chaque fois que le joueur tue le monstre voulu on génère un nombre aléatoire et on teste sa valeur. Voici un petit exemple : when VNUM_MOB.kill begin if number(1, 100) == 1 then game.drop_item_with_ownership(VNUM_ITEM) end end Ici, le joueur à 1% de chances de retrouver l'item. Il faut que le nombre aléatoire number(1, 100) tombe sur 1 Si on avait voulu 10%, on aurait fait : if number(1, 10) == 1 then ou if number(1, 100) <= 10 then Les combinaisons sont infinies
-
Une connexion à des bases de données MySQL n'utilise théoriquement pas le port 80 mais le port 3306 ou 3307.
-
L'erreur est ici un échec de connexion aux bases de données de ton serveur. Vérifie bien les logs SQL que tu as rentré dans le formulaire. (elles doivent être identiques à celles de navicat)
-
Est-ce que le tableau empire est bien défini ? Il faut que tu aies ce code là avant : local empire = {"Shinsoo", "Chunjo", "Jinno"}
-
Il faut les mettre dans la base site, relies le tutoriel.
-
Ce message s'affiche lorsque le membre n'est pas connecté. S'il l'est, vérifie que tu as bien installé les pages et les tables. Commence par nous passer un screen de tes tables history_vote et liens_vote.
-
manque un fichier pour creer un site d'inscription
Hystos a répondu à un(e) question de taz844 dans Questions & Réponses
Au pire tu réinstalles le logiciel, ou tu prends WAMP... -
Bonjour, Premièrement, je te conseille d'utiliser MT2-CMS qui est le meilleur d'un point de vue sécuritaire. Ensuite, ton problème vient du faite que le site n'arrive pas à se connecter à la base de données de ton serveur. Tu dois remplir dans les champs la même chose que ce que tu as mis dans navicat (quand tu as créé la nouvelle connexion). Si ça ne marche pas, vérifie auprès de l'hébergeur de ton dédié qu'il accepte les connexions distantes.
-
Oui, si tu suis le tutoriel à la lettre (en particulier les tables comme précisé au dessus), il n'y a pas de raison que ça ne marche pas. Au pire, ajoute moi sur skype (dans ma signature).