[Résolu] Bug? d'une fonction avec if ...

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
aryal
Messages : 74
Inscription : 30 Mai 2014 10:32

[Résolu] Bug? d'une fonction avec if ...

Message par aryal » 25 Juin 2015 12:43

Salut, voila j'ai beau chercher ou j'ai pu faire une erreur je ne vois pas trop.
La fonction a pour but de rajouter un objet dans un inventaire ( que ce soit en faisant des crafts ou récompense de quête) quand l'inventaire est vide aucun problème , mais lorsque j'essaye de mettre l'objet sur une case vide je n'y arrive pas, elle arrive en 1er position et suprime l'objet déjà présent.

Voici le script :

Code : Tout sélectionner

public void GiveItem(int itemID,int amount)
	{
		// calcule le nombre de case de l'inventaire
		int round = inventory[0].row*inventory[0].colum;

		// 4001 = piece d'or
		if(itemID != 4001){
			for(int i = 0; i < round; i++){

				// voir si la case d'inventaire est vide et n'est pas un equipement
				if(bag_item[i].item_id == 0 && itemID < 2000 || itemID > 3000)
				{
					//le resultat du debug est 0
					Debug.Log(i);
					//le resultat du debug si dessous est 2001
					Debug.Log(bag_item[i].item_id);

					bag_item[i].item_id = itemID;
					bag_item[i].item_amount += amount;
					break;

					//case d'inventaire déjà présent, rajout sur la pille
				}else if(bag_item[i].item_id == itemID && itemID < 2000 || itemID > 3000){
				

						bag_item[i].item_amount += amount;
						break;

					// un equipement est déjà présent, les équipements ne peuvent pas etre en pille.
				}else if(bag_item[i].item_id == itemID && itemID > 2000 || itemID < 3000)
				{
					for(int k=0;k<amount;k++)
					{

						bag_item[i+k].item_id = itemID;
						bag_item[i+k].item_amount = 1;
					}
					break;
				}
				
			}
		}else{
			money += amount;
		}
	}
Dernière édition par aryal le 02 Juil 2015 18:11, édité 1 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6216
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Bug? d'une fonction avec if ...

Message par boubouk50 » 01 Juil 2015 10:20

Code : Tout sélectionner

if(bag_item[i].item_id == 0 && itemID < 2000 || itemID > 3000)
Il te manque des parenthèses, je pense:

Code : Tout sélectionner

if(bag_item[i].item_id == 0 && (itemID < 2000 || itemID > 3000))
Pour le elseif, faire de même.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

aryal
Messages : 74
Inscription : 30 Mai 2014 10:32

Re: Bug? d'une fonction avec if ...

Message par aryal » 02 Juil 2015 18:11

Oui merci c'était bien cela, je pensais avoir déjà mis une réponse en disant que le problème étais résolu.
J'ai rajouter en effet les parenthèse sur certain des if mais pas tous, cela me crée des bug sur les autres conditions.

Merci pour ta réponse.

Répondre

Revenir vers « (C#) CSharp »