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 #4 Criando as Receitas dos Crafts - [SCRIPT Terratia]


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


//MENU TERRARIA

#pragma strict

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

}

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;

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


}




 Seguei ai o vídeo referente ao script:

Nenhum comentário:

Postar um comentário