Function y Switch

Publicado por Jalealf, Marzo 27, 2023, 11:28:38 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Jalealf

pequeña pregunta rapida, como utilizar switch en una función?

Quisiera usarlo para tener en un script una lista de puntos asignada a un nivel(case) al que pueda recurrir, por ejemplo  nivel 2 --> chequea lista --> transfiere la cantidad de puntos para sumar, pero al sumarlos con los puntos base me da undefined value.

Dentro del Obj_contoll
Step event:
if(time == 5){
   treePoint = Scr_lifePoint_List(treePoint);
   lifePoints = lifePoints + treePoint;
   relativeTime = 0;
}

Script:
function Scr_lifePoint_List(){
   switch(Obj_Controll.treeLV){
   case 0:
      treePoint = 1;
   break;
   
   case 1:
      treePoint = 5;
   break;
   
   case 2:
      treePoint = 10;
   break;
   }
}


de antemano muchas gracias por sus respuestas

Black_Cat

Eso porque te falta la sentencia return para que la funcion devuelva el valor de los puntos.
Al no devolver nada, entonces el valor es undefined.


function Scr_lifePoint_List(){
   switch(Obj_Controll.treeLV){
   case 0:
      return treePoint = 1;
   break;
   
   case 1:
      return  treePoint = 5;
   break;
   
   case 2:
      return  treePoint = 10;
   break;
   }
}

Eso en un principio

Jalealf

Muchas gracias
Ahora no me tira error pero por alguna razón no llega a sumar en esta parte lifePoints = lifePoints + treePoint; cuando el Switch esta dentro de la funcion pero si lo coloco en el evento step funciona de maravilla.

Jeffrey Faper

#3
Cita de: Jalealf en Marzo 29, 2023, 07:53:10 PMAhora no me tira error pero por alguna razón no llega a sumar en esta parte lifePoints = lifePoints + treePoint; cuando el Switch esta dentro de la funcion pero si lo coloco en el evento step funciona de maravilla.

Que raro ya testeé su código y lifePoints suma correctamente...
lo probé de esta manera con todas las variables en un solo objeto de prueba
tal vez el error se deba a la variable treeLV

///objetoTest
// evento: crear
time = 0
treeLV=0;
treePoint = 2;
lifePoints = floor(random(5));
relativeTime = 0;

//evento: step
//Testeando lifePoints adición 
var _testThis=keyboard_check_pressed(vk_enter);

if(_testThis){
  treePoint = scrLifePointList();
  lifePoints = lifePoints+treePoint;
  relativeTime = 0;
  treeLV=choose(0,1,2);
}
show_debug_message("treeLevel :"+string(treeLV));
show_debug_message("lifePoints :"+string(lifePoints));
show_debug_message("treePoints :"+string(treePoint));

//función scr_life_point_list

function scrLifePointList(){
    switch(treeLV){
        case 0: return 1;  break;
        case 1: return 5;  break;
        case 2: return 10; break;
  }
}

267 Visitantes, 0 Usuarios