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 #3 - Troca de Itens no Inventário - [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 CelulaAux: Celula;
var CelulaAux2: Celula;

var AuxItens : BancoDadosItens;

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");

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


}




 Seguei ai o vídeo referente ao script:

3 comentários:

  1. O meu deu erro alguém me ajude :(

    Assets/Banco De Items/Menu INV.js(26,17): BCE0018: The name 'BancoDadosItens' does not denote a valid type ('not found'). Did you mean 'UnityEditor.BoneState'?

    ResponderExcluir