Como hacer esto? Array...
#1

Hola, hace mucho rato no toco ningъn lenguaje de programaciуn orientado a objetos, con lo cual he olvidado muchas cosas y este es uno de ellos...

Resulta que hice una array larga con categorias para muebles en un sistema de furniture que estoy haciendo, lo que hago es extraer de esa array todas las categorias y luego con dos loops saltarme las categorias repetidas, para asн en un dialogo mostrar todas las categorias (Sin repetirse ninguna), el problema yace en que es en dialogo, y por obvias razones al presionar clic en algъn listitem del dialogo me trae el listitem 0 , 1 ,2 ,3 y asн... El problema es que estoy haciendo esto:
pawn Код:
Datamuebles[listitem][dmCategoria]
para ver a que categoria le di clic, me trae la categoria que no es al presionar clic, pues con estos loops lo que hice fue hacer "continue;" para saltarme las arrays repetidas, con lo cual: La categoria Cuadros la categoria de este es la id 46 en la array, entonces... Al dar clic en algun item del listado de este dialogo me estarнa trayendo la categorнa digamos 0,1,2,3 pero no me trae la categoria correcta, pues haciendo esto estarнa trayendo asн:
pawn Код:
Datamuebles[0]["Cuadros"]
Y para que esto funcionara con el continu que hice, serнa algo como:
pawn Код:
Datamuebles[46]["Cuadros]
intentй hacer esto para asignar digamos 0,1,2,3 al listitem y luego al dar listitem simplemente me traerнa el que es, pero esto no funciona por obvias razones
pawn Код:
new bool:detectarcrepetida = true;
    for (new x = 0; x < sizeof(Datamuebles); x++)
    {
        for (new xx = 0; xx < x; xx++)
        {
            if (strfind(Datamuebles[x][dmCategoria], Datamuebles[xx][dmCategoria]) == 0)
            {
                detectarcrepetida = false;
                break;
            }
        }
        if (detectarcrepetida == false)
        {
            detectarcrepetida = true;
            continue;
        }
        for(new i=0; i < 11; i++) Mobiliario_listitems[i] = x;
    }
La manera en la que muestro las categorias es esta:
pawn Код:
new string[800], fullstr[800];
        format(string,sizeof(string), "{FFFFFF}Categoria\n");
            strcat(fullstr, string);
                new bool:detectarcrepetida = true;
        for (new x = 0; x < sizeof(Datamuebles); x++)
        {
            for (new xx = 0; xx < x; xx++)
            {
                if (strfind(Datamuebles[x][dmCategoria], Datamuebles[xx][dmCategoria]) == 0)
                {
                    detectarcrepetida = false;
                    break;
                }
            }
            if (detectarcrepetida == false)
            {
                detectarcrepetida = true;
                continue;
            }
            format(string, sizeof(string), "%s:%d\n",Datamuebles[x][dmCategoria],x);
            strcat(fullstr, string);
        }
        ShowPlayerDialog(playerid, DIALOGO_MOBILIARIO_CATEGORIA, DIALOG_STYLE_TABLIST_HEADERS, "{979A38}Categorias - Mobiliario", fullstr, "Seleccionar", "Cancelar");
    }
Lo habнa sacado de ejemplo de un cуdigo de C , aunque tiempo despuйs alguien me respondiу con cуdigo similar en una publicaciуn que hice para lograr esto...
Bueno , la pregunta es:

- como puedo arreglar esto para que me asigne del 0 al 11 las categorias traнdas con el primer cуdigo que pase?
pues al intentarlo me sucede esto:


y es obvio el por quй, y se debe a que se traen 10 categorias, y al haber ese for antes se muestra 10 veces las ids de las categorias que estan en la array, lo que yo quiero es irme del 0 al 11 , asignandole a cada uno la variable correspondiente, quisiera algo asн:



Muchas gracias si alguien me puede ayudar y si me entienden!
Reply


Messages In This Thread
Como hacer esto? Array... - by Juand - 21.07.2017, 04:08
Re: Como hacer esto? Array... - by Daniel-92 - 21.07.2017, 06:05
Re: Como hacer esto? Array... - by Juand - 21.07.2017, 07:22
Re: Como hacer esto? Array... - by Daniel-92 - 21.07.2017, 16:30
Re: Como hacer esto? Array... - by Juand - 21.07.2017, 22:45

Forum Jump:


Users browsing this thread: 1 Guest(s)