E ae Galera!!

Esse é o Blog do Canal Games Indie e eu sou o Bruno, aqui tentarei trazer notícias, vídeos, analises, tutoriais e mais um montão de coisas que no canal do youtube não tem como eu trazer! Ou seja mais conteúdo pra quem gosta do Canal!!

Tutorial de Unity 3D - Inventários & Sistemas de Craft #6 - Craftando Item e Consumindo Recursos - [SCRIPT Terratia]


Seguei ai o também script do menu Terraria pessoal é só copiar e colar no seu Monodevelop!! =] 


//MENU TERRARIA

#pragma strict
var DecIngr: boolean;
var qntItem: int;

var indiceIntemCraft: int;

var TamanhoPTelaH : float;
var TamanhoPTelaV : float;

var DeltaV : float;
var DeltaH : float;

var ExibeMenu : boolean;

var PegaCelula : boolean;

class Celula{
var IndiceItem: int[];
var Quantidade: int[];

}

var Inventario: Celula;

var InventarioReceitas: Celula;

var CelulaAux: Celula;
var CelulaAux2: Celula;

var SomaItensD: Celula;

var AuxItens : BancoDadosItens;
var AuxReceitas : BancoDadosReceitas;

var indiceAux: int;

function Start () {
indiceAux = -1;
//ExibeMenu=false;
Inventario.IndiceItem = new int[40];
Inventario.Quantidade = new int[40];

CelulaAux.IndiceItem = new int[1];
CelulaAux.Quantidade = new int[1];

CelulaAux2.IndiceItem = new int[1];
CelulaAux2.Quantidade = new int[1];



AuxItens = transform.GetComponent("BancoDadosItens");
AuxReceitas = transform.GetComponent("BancoDadosReceitas");

for (var i :int = 0 ; i<40; i++)
{
 Inventario.IndiceItem[i] = Random.Range(0,3);
 if (AuxItens.RetornaEstoqueMax(Inventario.IndiceItem[i])>1) 
 Inventario.Quantidade[i] = Random.Range(50,70);
 else
 Inventario.Quantidade[i] = 1;
}
}

function Update () {

if (Input.GetKeyDown(KeyCode.Escape))
 {
   if (PegaCelula && ExibeMenu)
   {        
    //Inventario.IndiceItem[indiceAux] = CelulaAux2.IndiceItem[0];
   // Inventario.Quantidade[indiceAux] = CelulaAux2.Quantidade[0];
   for (var j: int =0;j<Inventario.IndiceItem.Length;j++)
    {
      if (Inventario.IndiceItem[j]==-1)
      {
       Inventario.IndiceItem[j] = CelulaAux2.IndiceItem[0];
       Inventario.Quantidade[j] = CelulaAux2.Quantidade[0];
       break;
      }
    }
   }
  // ExibeListaCrafts();
   
   ExibeMenu = !ExibeMenu;
   PegaCelula=false;
 }


}

function OnGUI() {

var i : int;
var j : int;
var indiceInventario: int;
TamanhoPTelaH = Screen.width/15;
TamanhoPTelaV = Screen.height/15;
DeltaV = Screen.height/50;
DeltaH = Screen.width/2 - (TamanhoPTelaH*5);

for (i=0;i<10;i++)
 {
   if (Inventario.Quantidade[i]>1)
    {
     GUI.Label(Rect(DeltaH+TamanhoPTelaH*i,0,TamanhoPTelaH,TamanhoPTelaV),"x"+Inventario.Quantidade[i]);
    }
   if (GUI.Button(Rect(DeltaH+TamanhoPTelaH*i,0,TamanhoPTelaH,TamanhoPTelaV),AuxItens.RetornaNomeItem(Inventario.IndiceItem[i])))
    {
      print(i);
      if (ExibeMenu)
      {      
       FPegaCelula (Inventario.IndiceItem[i],Inventario.Quantidade[i],i);
       PegaCelula=true;
       print(indiceInventario);
      }
    }
 }
if (ExibeMenu)
{
 for (i=1;i<4;i++)
 {
  for (j=0;j<10;j++)
  {
    indiceInventario = j+(i*10);
    if (Inventario.Quantidade[indiceInventario]>1)
    {
     GUI.Label(Rect(DeltaH+TamanhoPTelaH*j,DeltaV+TamanhoPTelaV*i,TamanhoPTelaH,TamanhoPTelaV),"x"+Inventario.Quantidade[indiceInventario]);
    }
    if (GUI.Button(Rect(DeltaH+TamanhoPTelaH*j,DeltaV+TamanhoPTelaV*i,TamanhoPTelaH,TamanhoPTelaV),AuxItens.RetornaNomeItem(Inventario.IndiceItem[indiceInventario])))
     {
      
      FPegaCelula (Inventario.IndiceItem[indiceInventario],Inventario.Quantidade[indiceInventario],indiceInventario);
     
      if (!PegaCelula)
      PegaCelula=true;
      print(indiceInventario);
     }
  }
 } 
 GUI.Window(0,Rect(DeltaH,DeltaV+TamanhoPTelaV*4+10,TamanhoPTelaH*10,Screen.height-(DeltaV+TamanhoPTelaV*5+10)),ExibeListaCrafts,"Lista de Crafts");

}

if (PegaCelula)
{
 if (CelulaAux.IndiceItem[0] < 0) PegaCelula = false;
 GUI.Label (Rect(Input.mousePosition.x,Screen.height-Input.mousePosition.y,TamanhoPTelaH,TamanhoPTelaV),"x"+CelulaAux.Quantidade[0]);  
 GUI.Button(Rect(Input.mousePosition.x,Screen.height-Input.mousePosition.y,TamanhoPTelaH,TamanhoPTelaV),AuxItens.RetornaNomeItem(CelulaAux.IndiceItem[0]));

}

}

function FPegaCelula ( indice: int,  quantidade: int, indiceCelulaInventario: int)
{
indiceAux = indiceCelulaInventario;
CelulaAux.IndiceItem[0] = indice;
CelulaAux.Quantidade[0] = quantidade;
if (!PegaCelula)
{
 Inventario.IndiceItem[indiceCelulaInventario] = -1;
 Inventario.Quantidade[indiceCelulaInventario] = -1;
}
else
{
  if (CelulaAux2.IndiceItem[0]==CelulaAux.IndiceItem[0] && AuxItens.RetornaEstoqueMax(CelulaAux2.IndiceItem[0])>1)
  {
    
    if ((CelulaAux2.Quantidade[0] + CelulaAux.Quantidade[0])<=AuxItens.RetornaEstoqueMax(CelulaAux2.IndiceItem[0]))
    {
     CelulaAux2.Quantidade[0] += CelulaAux.Quantidade[0];
     Inventario.IndiceItem[indiceCelulaInventario] = CelulaAux2.IndiceItem[0];
     Inventario.Quantidade[indiceCelulaInventario] = CelulaAux2.Quantidade[0];
     CelulaAux.IndiceItem[0] = -1;
    }
    else
    {
     CelulaAux.Quantidade[0]  = (CelulaAux2.Quantidade[0] + CelulaAux.Quantidade[0]) - AuxItens.RetornaEstoqueMax(CelulaAux2.IndiceItem[0]);
     CelulaAux2.Quantidade[0] = AuxItens.RetornaEstoqueMax(CelulaAux2.IndiceItem[0]);
     
     Inventario.IndiceItem[indiceCelulaInventario] = CelulaAux2.IndiceItem[0];
     Inventario.Quantidade[indiceCelulaInventario] = CelulaAux2.Quantidade[0];
    }
  }
  else
  {
   Inventario.IndiceItem[indiceCelulaInventario] = CelulaAux2.IndiceItem[0];
   Inventario.Quantidade[indiceCelulaInventario] = CelulaAux2.Quantidade[0];
  }
   
}
CelulaAux2.IndiceItem[0] = CelulaAux.IndiceItem[0];
CelulaAux2.Quantidade[0] = CelulaAux.Quantidade[0];


}



function ExibeListaCrafts()
{
 SomaItensD.IndiceItem = new int[AuxItens.Itens.Length];
 SomaItensD.Quantidade = new int[AuxItens.Itens.Length];

 InventarioReceitas.IndiceItem = new int[AuxReceitas.Receitas.Length];
 InventarioReceitas.Quantidade = new int[AuxReceitas.Receitas.Length];

 var PodeCraftar: boolean;
 var TemItem: boolean;

 var linha : int;
 for (var i: int =0;i<AuxItens.Itens.Length;i++)
   {
    SomaItensD.IndiceItem[i] = AuxItens.Itens[i].Indice;
    SomaItensD.Quantidade[i] = 0;
    for (var j: int =0;j<Inventario.IndiceItem.Length;j++)
    {
      if (SomaItensD.IndiceItem[i] == Inventario.IndiceItem[j] )
      {
       SomaItensD.Quantidade[i] += Inventario.Quantidade[j];
      }
    }
   }

 for (i=0; i<AuxReceitas.Receitas.Length;i++)
 {
   PodeCraftar = true;
   TemItem     = false;;
    for (j = 0;j<AuxReceitas.Receitas[i].IndiceDoItem.Length && PodeCraftar==true ;j++)
    {
      for (var k: int =0;k<SomaItensD.IndiceItem.Length && PodeCraftar==true;k++)
      {
        if (SomaItensD.IndiceItem[k] == AuxReceitas.Receitas[i].IndiceDoItem[j])
        {
          TemItem=true;
          if (SomaItensD.Quantidade[k] < AuxReceitas.Receitas[i].QuantiDoItem[j])
          {
           PodeCraftar = false;
          }
        }
      }
      if (!TemItem)
      {
        PodeCraftar = false;
      }
    }
    if (PodeCraftar)
    {
      InventarioReceitas.IndiceItem[i] = AuxReceitas.Receitas[i].IndiceDoItemF;
      InventarioReceitas.Quantidade[i] = AuxReceitas.Receitas[i].QuantiDoItemF;
    }
    else
    {
      InventarioReceitas.IndiceItem[i] = -1;
      InventarioReceitas.Quantidade[i] = -1;
    }
 }
j = 0;
linha = 1;
for (i=0; i<InventarioReceitas.IndiceItem.Length;i++)
 {
   if(InventarioReceitas.IndiceItem[i] !=-1)
   {
     GUI.Label(Rect(10+TamanhoPTelaH*j,30+TamanhoPTelaV*linha,TamanhoPTelaH,TamanhoPTelaV),"x"+InventarioReceitas.Quantidade[i]);
    if (GUI.Button(Rect(10+TamanhoPTelaH*j,30+TamanhoPTelaV*linha,TamanhoPTelaH,TamanhoPTelaV),GUIContent(AuxItens.RetornaNomeItem(InventarioReceitas.IndiceItem[i]),InventarioReceitas.IndiceItem[i]+"")))
    {
      if (!PegaCelula || CelulaAux.IndiceItem[0]==InventarioReceitas.IndiceItem[i])
      {
        DecIngr=true;
        if (!PegaCelula)CelulaAux.IndiceItem[0]=-1;
        if (CelulaAux.IndiceItem[0]==InventarioReceitas.IndiceItem[i])
        {
        // indiceIntemCraft = 100;
         if ((CelulaAux2.Quantidade[0] + InventarioReceitas.Quantidade[0])<=AuxItens.RetornaEstoqueMax(CelulaAux2.IndiceItem[0])) 
         {
          CelulaAux.Quantidade[0]  += InventarioReceitas.Quantidade[i];
          CelulaAux2.Quantidade[0] += InventarioReceitas.Quantidade[i];
         }
         else
         DecIngr=false;
        }
        else
        {
          CelulaAux.Quantidade[0]  = InventarioReceitas.Quantidade[i];
          CelulaAux2.Quantidade[0] = InventarioReceitas.Quantidade[i];
          DecIngr = true;
        }
        CelulaAux.IndiceItem[0] = InventarioReceitas.IndiceItem[i]; 
        CelulaAux2.IndiceItem[0] = InventarioReceitas.IndiceItem[i];
       
       if (DecIngr)
       {
          
          for (var cont1 : int =0;cont1<AuxReceitas.Receitas.Length;cont1++)
           {
            if (AuxReceitas.Receitas[cont1].IndiceDoItemF == CelulaAux.IndiceItem[0] )
            {
             indiceIntemCraft = CelulaAux.IndiceItem[0];
             for (var cont2 : int =0;cont2<AuxReceitas.Receitas[cont1].IndiceDoItem.Length;cont2++)
             {
               qntItem = AuxReceitas.Receitas[cont1].QuantiDoItem[cont2];
               
               for (var cont3: int =0;cont3<Inventario.IndiceItem.Length && qntItem>0 ;cont3++)
               {
                if (Inventario.IndiceItem[cont3]==AuxReceitas.Receitas[cont1].IndiceDoItem[cont2])
                {
                  if (qntItem<Inventario.Quantidade[cont3])
                  {
                    Inventario.Quantidade[cont3] -=qntItem;
                    qntItem = 0;
                  }
                  else
                  {
                    qntItem -= Inventario.Quantidade[cont3] ;
                    Inventario.Quantidade[cont3] = -1;
                    Inventario.IndiceItem[cont3] = -1;
                  }
                
                }
               }
               
             }
             
            }
           }
       
       }
        
        PegaCelula = true;
      }
    }
    j++;
    if (j>=10)
    {
    linha++;
    j = 0;
    }
   }
 }

GUI.Label(Rect(10,10,TamanhoPTelaH,TamanhoPTelaV),"Ingredientes"); 
 if (Event.current.type == EventType.Repaint)
 {
  if (GUI.tooltip!="")
  {
  
  for (i =0;i<AuxReceitas.Receitas.Length;i++)
   {
     if (AuxReceitas.Receitas[i].IndiceDoItemF == int.Parse(GUI.tooltip) )
     {
      for (j=0;j<AuxReceitas.Receitas[i].IndiceDoItem.Length;j++)
      {
        
        GUI.Label(Rect(10+TamanhoPTelaH*j,30,TamanhoPTelaH,TamanhoPTelaV),"x"+AuxReceitas.Receitas[i].QuantiDoItem[j]);
        GUI.Button(Rect(10+TamanhoPTelaH*j,30,TamanhoPTelaH,TamanhoPTelaV),AuxItens.RetornaNomeItem(AuxReceitas.Receitas[i].IndiceDoItem[j]));

      }
     }
     
   }
  }
  
  }


}


 Seguei ai o vídeo referente ao script:

Um comentário: