Jump to content
×
×
  • Create New...
  • 0

Question Item Shop


marllow
 Share

Question

Bonjour, J'aimerais faire qu'un item qu'on achette donc en DR ne donne aucun MD mais que tous les autres items donnent des MD, j'explique mon soucis, en gros nous avons des bons de DR, ces bon de DR s'achette 2000DR ce qui fais 2000MD quand on clique droit dessus on re-reçoit 2000DR donc les joueurs ont plus qu'à spam cela en boucle pour achetter toute la catégorie en MD.

 

Version des files : 2014

Domaine (Base de données, Core, etc.) : Site Web

Votre niveau (débutant, intermédiaire, avancé) : intermédiaire

 

Description du problème : Génération de MD en boucle grâce au bon de DR.

Comment reproduire le problème : Achat de bon de DR et équipage du bon sur le même compte en boucle.

Recherches et tests effectué : Recherche sur Funky-Emu au complet.

Résultat des recherches et tests : Aucun.

 

Message d'erreur, capture d'écran : Aucune. Pas de message d'erreur ou de screen disponible pour ce problème.

 

En postant ma demande d'aide, j'affirme avoir lu et accepté le règlement des demandes d'aides.

Link to comment
Share on other sites

  • Answers 7
  • Created
  • Last Reply

Top Posters For This Question

Popular Days

Top Posters For This Question

7 answers to this question

Recommended Posts

  • 0

Une petite condition dans ton script PHP d'itemshop fera l'affaire

D'accord, donc j'ai ce script là :

<?php
/**
*		MT2-CMS
*	@author JigSaw 
*	@license http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
*	@version b1.002 24/04/2010
*	@link http://mt2cms.free.fr
*
*		[itemshop.php]
*	Page de l'itemshop. C'est le magasin de votre site. L'affichage mais aussi l'achat s'effectue sur cette page.
*
**/

//Si l'itemshop est activé ou si le membre est Admin
if($CONFIG['itemshop']==1 or $rang_membre>=4)
{
/**
 *Si on demande des détails
 **/
if(isset($_GET['a']) and $_GET['a']=='det' and isset($_GET['id']) and is_numeric($_GET['id']))
{
	$tpl->assign('a', 'det');

	$id_i=$_GET['id'];

	$requette = ("SELECT * FROM site.itemshop WHERE actif=1 AND id='$id_i' LIMIT 1"); 
	$sql = mysql_query($requette) or die(mysql_error()); 

	while(($data = mysql_fetch_array($sql)))
	{
			$requette2 = ("SELECT * FROM site.cat_is WHERE id = '".$data['cat']."' LIMIT 1"); 
			$sql2 = mysql_query($requette2) or die(mysql_error()); 
			$data2 = mysql_fetch_array($sql2);

			$cat=$data2['nom'];


		$tpl->assign_array('list_item', array(
		'id' => $data['id'],
		'id_item' => $data['id_item'],
		'nom' => $data['name_item'],
		'info' => $data['info_item'],
		'nb' => $data['nb_item'],
		'prix' => $data['prix'],
		'type' => $data['type'],
		'cat' => $cat
		));
	}
}

/**
 *Si on veut acheter
 **/
elseif(isset($_GET['a']) and $_GET['a']=='buy' and isset($_GET['id']) and is_numeric($_GET['id']))
{
	$tpl->assign('a', 'buy');



	//Si on a reçu la confirmation
	if(isset($_POST['id']) and is_numeric($_POST['id']))
	{
		$tpl->assign('conf_buy', '1');
		$errors = '';
		$id_i=$_GET['id'];

			//Si l'ID est bien dans la db
			$retour = mysql_query("SELECT COUNT(*) AS nb_item FROM site.itemshop WHERE id = '$id_i' AND actif='1'");
			$donnees = mysql_fetch_array($retour);
			if($donnees['nb_item'] == 1)
			{
				//Si le membre a assez de cash
				$retour = mysql_query("SELECT * FROM site.itemshop WHERE id = '$id_i' AND actif='1'");
				$donnees = mysql_fetch_array($retour);
				$prix_item = $donnees['prix'];
				$nb_item = $donnees['nb_item'];
				$item = $donnees['id_item'];

					/**
					 *Si l'item est de type : Simple
					 **/
					if($donnees['type'] == 1)
					{
						//Si le membre a assez de cash
						if($cash_membre >= $prix_item)
						{

							$retour = mysql_query("SELECT flag FROM player.item_proto WHERE vnum = '$item' ");
							$donnees = mysql_fetch_array($retour);
							$flag = $donnees['flag'];


							/**
							 *Si l'item est regroupable
							 **/
							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
									mysql_query("UPDATE account.account SET cash=cash-'$prix_item', mileage=mileage+'$prix_item'  WHERE id=$id_membre LIMIT 1");
									//On ajoute l'objet
									$pos = verif_place_is($id_membre);
									mysql_query("INSERT INTO player.item (owner_id, window, pos, count, vnum)	VALUES	('$id_membre', 'MALL', '$pos', '$nb_item', '$item')");
								}
								else { $errors = 5; }//5: Entrepot plein.
							}

							//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
									mysql_query("UPDATE account.account SET cash=cash-'$prix_item', mileage=mileage+'$prix_item'  WHERE id=$id_membre LIMIT 1");
									//On ajoute l'objet
									for ($i = 1; $i <= $nb_item; $i++)
									{
										$pos = verif_place_is($id_membre);
										mysql_query("INSERT INTO player.item (owner_id, window, pos, count, vnum, socket0, socket1, socket2)	VALUES	('$id_membre', 'MALL', '$pos', '1', '$item', '1', '1', '1')");
									}
								}
								else { $errors = 5; }//5: Entrepot plein.
							}
						}
						else { $errors = 3; }//3: Pas assez de cash.
					}

					/**
					 *Si l'item est de type : Durée
					 **/
					elseif($donnees['type'] == 2)
					{
						//Si le membre a assez de cash
						if($cash_membre >= $prix_item)
						{
							//On le débite
							mysql_query("UPDATE account.account SET cash=cash-'$prix_item', mileage=mileage+'$prix_item'  WHERE id=$id_membre LIMIT 1");

							$bonus=$array_bonus_account[$item];

							$requette = ("SELECT $bonus FROM account.account WHERE id = $id_membre LIMIT 1"); 
							$sql = mysql_query($requette) or die(mysql_error()); 
							$data = mysql_fetch_array($sql);

							$time_expire = strtotime($data[$bonus]);

							//Si le membre à un bonus en cours
							if($time_expire>time())
							{
								$new_time=($nb_item*86400)+$time_expire;
								$date=mktime(date("H",$new_time), date("i",$new_time), date("s",$new_time), date("m",$new_time), date("d",$new_time), date("Y",$new_time));
							}
							else
							{
								$new_time=($nb_item*86400)+time();
								$date=mktime(date("H",$new_time), date("i",$new_time), date("s",$new_time), date("m",$new_time), date("d",$new_time), date("Y",$new_time));
							}

							// on insère les bonus sur le compte
							mysql_query("UPDATE accoun.account SET `$bonus`='".date("Y-m-d H:i:s",$date)."' WHERE id=$id_membre LIMIT 1");
						}
						else { $errors = 3; }//3: Pas assez de cash.
					}

					/**
					 *Si l'item est de type : Marque
					 **/
					elseif($donnees['type'] == 3)
					{
						//Si le membre a assez de marques
						if($mileage_membre >= $prix_item)
						{
							//Si l'entrepot n'est pas plein
							if (is_numeric(verif_place_is($id_membre)))
							{
								//On le débite
								mysql_query("UPDATE account.account SET mileage=mileage-'$prix_item'  WHERE id=$id_membre LIMIT 1");
								//On ajoute l'objet
								$pos = verif_place_is($id_membre);
								mysql_query("INSERT INTO player.item (owner_id, window, pos, count, vnum)	VALUES	('$id_membre', 'MALL', '$pos', '$nb_item', '$item')");
							}
							else { $errors = 5; }//5: Entrepot plein.
						}
						else { $errors = 6; }//3: Pas assez de Marques.
					}
					else { $errors = 4; }//4: Type de l'item non-valide.

			}
			else { $errors = 2; }//2: L'objet n'existe pas.


		if($errors == '') //Si il l'achat a fonctioné
		{ $tpl->assign('valid_form', '1'); }
		else //Sinon on charge les erreurs
		{ $tpl->assign('valid_form', $errors); }



	}

	/**
	 *Sinon on affiche la confirmation
	 **/
	else
	{
		$tpl->assign('conf_buy', '0');

		$id_i=$_GET['id'];

		$requette = ("SELECT * FROM site.itemshop WHERE actif=1 AND id='$id_i' LIMIT 1"); 
		$sql = mysql_query($requette) or die(mysql_error()); 

		while(($data = mysql_fetch_array($sql)))
		{
			$tpl->assign_array('list_item', array(
			'id' => $data['id'],
			'id_item' => $data['id_item'],
			'nom' => $data['name_item'],
			'info' => $data['info_item'],
			'nb' => $data['nb_item'],
			'prix' => $data['prix'],
			'type' => $data['type'],
			'cat' => $data['cat']
			));
		}
	}
}

/**
 *Sinon on liste les objets
 **/
else
{
	$tpl->assign('a', 'list');

	/**
	 *Si on demande une catégorie
	 **/
	if(isset($_GET['c']) and is_numeric($_GET['c']))
	{
		$retour = mysql_query("SELECT COUNT(*) AS nb_cat FROM site.cat_is WHERE id = '".$_GET['c']."'");
		$donnees = mysql_fetch_array($retour);

		//Si la catégorie existe
		if($donnees['nb_cat'] == 1) 
		{
			//On liste le nom de la catégorie
			$cat_id=$_GET['c'];
			$requette = ("SELECT * FROM site.cat_is WHERE id = '$cat_id' LIMIT 1"); 
			$sql = mysql_query($requette) or die(mysql_error()); 
			$data = mysql_fetch_array($sql);

			$cat=$data['nom'];
			$tpl->assign('c', $cat);

			$requette = ("SELECT * FROM site.itemshop WHERE actif=1 AND cat='$cat_id' ORDER BY id DESC"); 
			$sql = mysql_query($requette) or die(mysql_error()); 

			while(($data = mysql_fetch_array($sql)))
			{
				$tpl->assign_array('list_item', array(
				'id' => $data['id'],
				'id_item' => $data['id_item'],
				'nom' => $data['name_item'],
				'info' => $data['info_item'],
				'nb' => $data['nb_item'],
				'prix' => $data['prix'],
				'type' => $data['type'],
				'cat' => $cat
				));
			}
		}
		else {header('Location: index.php?p=itemshop');}
	}

	/**
	 *Sinon on liste les derniers objets
	 **/
	else
	{
		$tpl->assign('c', '0');

		//Liste des catégories
		$requette = ("SELECT * FROM site.cat_is ORDER BY id ASC"); 
		$sql = mysql_query($requette) or die(mysql_error()); 

		$row=0;
		while(($data = mysql_fetch_array($sql)))
		{
			$row++;

			$tpl->assign_array('list_cat', array(
			'id' => $data['id'],
			'nom' => $data['nom']
			));
		}
		//Nombre de catégorie
		$tpl->assign('row', $row+1);


		//Liste des items
		$requette = ("SELECT * FROM site.itemshop WHERE actif=1 ORDER BY id DESC LIMIT 5"); 
		$sql = mysql_query($requette) or die(mysql_error()); 

		while(($data = mysql_fetch_array($sql)))
		{
			$requette2 = ("SELECT * FROM site.cat_is WHERE id = '".$data['cat']."' LIMIT 1"); 
			$sql2 = mysql_query($requette2) or die(mysql_error()); 
			$data2 = mysql_fetch_array($sql2);

			$cat=$data2['nom'];


			$tpl->assign_array('list_item', array(
			'id' => $data['id'],
			'id_item' => $data['id_item'],
			'nom' => $data['name_item'],
			'info' => $data['info_item'],
			'nb' => $data['nb_item'],
			'prix' => $data['prix'],
			'type' => $data['type'],
			'cat' => $cat
			));
		}

	}
}
}
$tpl->parse('account/itemshop.tpl');
?>

 

Possible de m'aider à le faire mais uniquement pour un seul item ! Pas tous les items !

Link to comment
Share on other sites

  • 0

Tu remplace ta ligne 102 par ça :

mysql_query("UPDATE account.account SET cash=cash-'$prix_item' WHERE id=$id_membre LIMIT 1");
if ($item != ID_ITEM1 && $item != ID_ITEM2 && $item != ID_ITEM3)
{
mysql_query("UPDATE account.account SET mileage=mileage+'$prix_item' WHERE id=$id_membre LIMIT 1");
}

 

et tu remplace ID_ITEM par les id des bons de marques

Link to comment
Share on other sites

  • 0

Ne fonctionne pas

 

 

										mysql_query("UPDATE account.account SET cash=cash-'$prix_item' WHERE id=$id_membre LIMIT 1");
									if ($item != 80014 && $item != 80015 && $item != 80016 && $item != 80017)
									{
									mysql_query("UPDATE account.account SET mileage=mileage+'$prix_item' WHERE id=$id_membre LIMIT 1");
									}

 

Les MD s'ajoutes toujours... :/

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share



Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.