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