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;
}
}