Agosto 24, 2015, 05:49:27 AM Ultima modificación: Agosto 24, 2015, 01:44:53 PM por Jucarave
Hola a todos, por aquí con un problema que no me quiere dejar avanzar :-[

Básicamente tengo el siguiente script para obtener un arma de una lista global:
[gml]
if (ds_list_empty(global.P_ITEMS)) return undefined;

var len = ds_list_size(global.P_ITEMS);
var i;

for (i=0;i<len;i+=1){
    var item = ds_list_find_value(global.P_ITEMS, i);
   
    if (!is_undefined(item)){
        if (item[WP_TYPE] == WEAPON && item[WP_EQUIPED]){
            return item;
        }
    }
}

return undefined;
[/gml]

Me esta tirando este error cuando intento ejecutarlo:


DoSet :: Invalid comparison type
at gml_Script_scr_PlayerGetWeapon (line 1) - if (ds_list_empty(global.P_ITEMS)) return undefined;


Pensé que era algún problema por el undefined, pero hago un script solo con esa linea y funciona bien, también lo probé con solo retornar el ds_list_find_value y también funcionó...

Creo que el error se debe a la combinación de lineas que tiene este script, pero no logro ver en que esta mal  :-\

Saludos 8)

EDIT:

Si modifico la linea:

[gml]var item = ds_list_find_value(global.P_ITEMS, i);[/gml]

por

[gml]return ds_list_find_value(global.P_ITEMS, i);[/gml]

funciona, al parecer el problema esta al intentar asignar ese valor (array) a esa variable, pero... por que?

EDIT 2:

Ya encontré el error :-[ el problema era la comparación de: (item[WP_TYPE] == WEAPON) ya que item[WP_TYPE] era string y WEAPON era un entero, jeje en fin, gracias por su atención

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.