Comunidad de diseño web y desarrollo en internet online

como puedo crear un sistema de inventario en as2?

Citar            
MensajeEscrito el 26 Oct 2014 05:28 pm
Buenas, la verdad eh tratado de encontrar una solución al problema, verán ya creo que tengo echo lo de que cuando cojas un objeto se ponga en un slot del inventario lo hice con condiciones aquí se los dejo

Código ActionScript :

//primero creo unas variables
var Slot1:Number = 1;
var Slot2:Number = 1;
var Slot3:Number = 1;
var Slot4:Number = 1;

//luego creo una función para las variables, para especificar que según el numero de su Slot sea dirigido al fotograma especificado por el numero 
function slots(){
   _root.slot1.gotoAndStop(Slot1);
   _root.slot2.gotoAndStop(Slot2);
   _root.slot3.gotoAndStop(Slot3);
   _root.slot4.gotoAndStop(Slot4);
      

}

// y luego creo la función para coger el objeto, a cada item le tengo que crear una función igual por eso es muy tedioso el código y complicado, pero es muy básico (apenas hay 4 slot, así que si tengo mas slots tendría que alargar mas el código, si que es un problema)

function coger_objeto_vida(){
   if(_root.Slot1 == 1 ){
         _root.Slot1 = 2;
      }else if(_root.Slot1 == 3 or _root.Slot1 == 4 or _root.Slot1 == 5){
         if(_root.Slot2 == 1){
         _root.Slot2 = 2;
       }else if(_root.Slot2 == 3 or _root.Slot2 == 4 or _root.Slot2 == 5){
          if(_root.Slot3 == 1){
          _root.Slot3 = 2;
        }else if(_root.Slot3 == 3 or _root.Slot3 == 4 or _root.Slot3 == 5){
          if(_root.Slot4 = 1){
          _root.Slot4 = 2;
        }else if(_root.Slot4 == 3 or _root.Slot4 == 4 or _root.Slot4 == 5){
                
             }
          }
       }
   }
}


                         

//posion xp
function coger_objeto_xp(){
        if(_root.Slot1 == 1){
         _root.Slot1 = 3;
      }else if(_root.Slot1 == 2 or _root.Slot1 == 4 or _root.Slot1 == 5){
         if(_root.Slot2 == 1){
         _root.Slot2 = 3;
       }else if(_root.Slot2 == 2 or _root.Slot2 == 4 or _root.Slot2 == 5){
          if(_root.Slot3 == 1){
          _root.Slot3 = 3;
        }else if(_root.Slot3 == 2 or _root.Slot3 == 4 or _root.Slot3 == 5){
          if(_root.Slot4 = 1){
          _root.Slot4 = 3;
             }else if(_root.Slot4 == 2 or _root.Slot4 == 4 or _root.Slot4 == 5){
                
             }
          }
       }
   }
}

//posion mana
function coger_objeto_mana(){
   if(_root.Slot1 == 1){
         _root.Slot1 = 4;
      }else if(_root.Slot1 == 2 or _root.Slot1 == 3 or _root.Slot1 == 5){
         if(_root.Slot2 == 1){
         _root.Slot2 = 4;
       }else if(_root.Slot2 == 2 or _root.Slot2 == 3 or _root.Slot2 == 5){
          if(_root.Slot3 == 1){
          _root.Slot3 = 4;
        }else if(_root.Slot3 == 2 or _root.Slot3 == 3 or _root.Slot3 == 5){
          if(_root.Slot4 = 1){
          _root.Slot4 = 4;
             }else if(_root.Slot4 == 2 or _root.Slot4 == 3 or _root.Slot4 == 5){
                
             }
          }
       }
   }
}

//posion fuerza
function coger_objeto_fuerza(){
   if(_root.Slot1 == 1){
         _root.Slot1 = 5;
      }else if(_root.Slot1 == 2 or _root.Slot1 == 3 or _root.Slot1 == 4){
         if(_root.Slot2 == 1){
         _root.Slot2 = 5;
       }else if(_root.Slot2 == 2 or _root.Slot2 == 3 or _root.Slot2 == 4){
          if(_root.Slot3 == 1){
          _root.Slot3 = 5;
        }else if(_root.Slot3 == 2 or _root.Slot3 == 3 or _root.Slot3 == 4){
          if(_root.Slot4 = 1){
          _root.Slot4 = 5;
             }else if(_root.Slot4 == 2 or _root.Slot4 == 3 or _root.Slot4 == 4){
                
             }
          }
       }
   }
}



// y luego en sus respectivos clips de película coloco esto para que cuando mi jugador toque el item se inserte en su slot

// el item de vida

onClipEvent(enterFrame){
      if(_root.Player.hitTest(this)){
         _root.coger_objeto_vida();
         unloadMovie(this);
      }
         _root.slots();
}

// el item de mana

onClipEvent(enterFrame){
      if(_root.Player.hitTest(this)){
         _root.coger_objeto_mana();
         unloadMovie(this);
      }
         _root.slots();
}

// el item de xp

onClipEvent(enterFrame){
      if(_root.Player.hitTest(this)){
         _root.coger_objeto_xp();
         unloadMovie(this);
      }
         _root.slots();
}

// el item de fuerza

onClipEvent(enterFrame){
      if(_root.Player.hitTest(this)){
         _root.coger_objeto_fuerza();
         unloadMovie(this);
      }
         _root.slots();
}





el problema de ese código es que no se como hacer que si tengo por ejemplo la posion vida en el slot 1 y si cojo otra vez el item de posion en el slot 1 me diga que tengo la posion vida x2 y si lo cojo otra vez x3 etc hasta un punto limite, Tambien que al momento de presionar la tecla i aparezca el inventario completo ( bueno eso es muy fácil lo se) pero que cuando este visible pueda arrastrar estos objetos osea los que tengo en el inventario a diferentes slots o a los que me venga en gana algo estilo minecraft.

Pido ayuda por este medio ya que veo que mucha gente a echo preguntas y veo muchas respuestas interesantes y directas, les agradecería que me ayudaran :D y pues Gracias.

Por IDitroyer

2 de clabLevel



 

chrome
Citar            
MensajeEscrito el 10 Nov 2014 11:49 am
El código es una cascada de if comparando todos contra todos, digamos una solución por fuerza bruta + una cascada de onEnterFrame chequeando todo tipo de cosas ... la peor combinación desde el punto de vista de eficiencia y rendimiento.
Explicanos el mecanismo que estás intentando resolver a ver si hay un mejor algoritmo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 Nov 2014 12:54 am

solisarg escribió:

El código es una cascada de if comparando todos contra todos, digamos una solución por fuerza bruta + una cascada de onEnterFrame chequeando todo tipo de cosas ... la peor combinación desde el punto de vista de eficiencia y rendimiento.
Explicanos el mecanismo que estás intentando resolver a ver si hay un mejor algoritmo

Jorge
La verdad es que tienes toda la razon... pero no se me occurio nada mas, ya que lo que quiero es tener un inventario como un mmorpg, algo como minecraft que puedas coger cualquier objeto pero si el inventario esta lleno no pudedas coger nada.
Yo segui con este "codigo" y lo "mejore" para hacer eso pero tienes razon es muy tedioso, al momento de tu crear un nuevo item tienes que cambiar todo el codigo... vi en una pagina de como hacerlo pero solo cambia la posicion x y y del clip a base de arrays pero no se mucho de ordenar varios clips, soy principiante en esto del as2 solo queria ver si alguien me podria aportar una idea de como poder empezar ese "codigo" sin tener que usar la "cascada de if" pero vamos la idea es hacer mas corto el codigo no exagerar el mismo, gracias por contestar :D

Por IDitroyer

2 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.