SA-MP Forums Archive
array 2d? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: array 2d? (/showthread.php?tid=533233)



array 2d? - YazukiAkira - 23.08.2014

Quiero realizar un checkpoint segun el nombre que yo le pase al array...

pawn Код:
new checkpoint[][] = {
    {"Ubicacion0",                      {1119.4498,-1403.6545,13.3935}},
    {"Ubicacion1",                      {1210.1755,-888.2454,42.6494}}
};

CMD:checkpoint(playerid, params[])
{
    //new string[20] = "Ubicacion0";
    new string[20] = "Ubicacion1";
    SetPlayerCheckpoint(playerid, checkpoint[string][], 3.0); // checkpoint[string][] deberia traer 1210.1755,-888.2454,42.6494.
    return 1;
}



Respuesta: array 2d? - Parka - 23.08.2014

Te darй un ejemplo de como deberнa ser:

pawn Код:
#define MAX_CP 4
enum Enum@CP_Info{
    _@CPText[64],
    Float:_@CPPosicion[3]
}
new _@CheckPoint[MAX_CP][Enum@CP_Info] = {
    {"HelloWorld1",{0.0000,0.0000,0.0000}},//Estoy trabajando solo con esta en el comando.
    {"HelloWorld2",{0.0000,0.0000,0.0000}},
    {"HelloWorld3",{0.0000,0.0000,0.0000}},
    {"HelloWorld4",{0.0000,0.0000,0.0000}}};

COMMAND:checkpoint(playerid,params[]){
    printf("%s",_@CheckPoint[0][_@CPText]);
    format(_@CheckPoint[0][_@CPText],64,"OtroTexto");
    printf("%s",_@CheckPoint[0][_@CPText]);
    SetPlayerCheckpoint(playerid,_@CheckPoint[0][_@CPPosicion][0],_@CheckPoint[0][_@CPPosicion][1],_@CheckPoint[0][_@CPPosicion][2],2.0);
    return 1;
}



Respuesta: array 2d? - YazukiAkira - 23.08.2014

Quote:
Originally Posted by Parka
Посмотреть сообщение
Te darй un ejemplo de como deberнa ser:

pawn Код:
#define MAX_CP 4
enum Enum@CP_Info{
    _@CPText[64],
    Float:_@CPPosicion[3]
}
new _@CheckPoint[MAX_CP][Enum@CP_Info] = {
    {"HelloWorld1",{0.0000,0.0000,0.0000}},//Estoy trabajando solo con esta en el comando.
    {"HelloWorld2",{0.0000,0.0000,0.0000}},
    {"HelloWorld3",{0.0000,0.0000,0.0000}},
    {"HelloWorld4",{0.0000,0.0000,0.0000}}};

COMMAND:checkpoint(playerid,params[]){
    printf("%s",_@CheckPoint[0][_@CPText]);
    format(_@CheckPoint[0][_@CPText],64,"OtroTexto");
    printf("%s",_@CheckPoint[0][_@CPText]);
    SetPlayerCheckpoint(playerid,_@CheckPoint[0][_@CPPosicion][0],_@CheckPoint[0][_@CPPosicion][1],_@CheckPoint[0][_@CPPosicion][2],2.0);
    return 1;
}
Yo necesito pasar la ubicacion no por entero (0,1,2,3,4,5,6.....) si no por string. Yo voy a comparar la ubicacion del usuario y depende de esa ubicacion dependera el checkpoint, ya tengo la funcion para obtener la ubicacion del usuario segun donde este y la alamaceno en una variable.

EJ: Si el usuario esta en LS el checkpoint lo creare en algun lugar de LS

Segun veo tengo que pasar un id para obtener las coordenadas
SetPlayerCheckpoint(playerid,_@CheckPoint[0][_@CPPosicion][0],_@CheckPoint[0][_@CPPosicion][1],_@CheckPoint[0][_@CPPosicion][2],2.0);

Yo tendria que pasar HelloWorld1, HelloWorld2, HelloWorld3


Respuesta: array 2d? - adri1 - 23.08.2014

Hazlo con defines, serб mas sencillo.
pawn Код:
#define Ubicacion%0 %0
static Float:checkpoint[][] = {
{0.0, 0.0, 0.0}, //Ubicacion0
{0.0, 0.0, 0.0}, //Ubicacion1
{0.0, 0.0, 0.0}, //Ubicacion2
{0.0, 0.0, 0.0} //Ubicacion3
//mas...
};

SetPlayerCheckpoint(playerid, checkpoint[Ubicacion0][0], checkpoint[Ubicacion0][1], checkpoint[Ubicacion0][2], 3.0);



Respuesta: array 2d? - YazukiAkira - 23.08.2014

Ya pude solucionar el asunto, gracias a ambos por orientarme un poco mejor.

Tengo una duda, para que sirven los _ y @ en las variables ?

EJ: _CP@Casa_id

En lo personal me gustaria utilizarlos para darle un toque mas lindo a mi codigo, no me gusta andar poniendo variables largas y con mayusculas.

EJ: CPCasaId o CheckpointCasaID


Respuesta: array 2d? - adri1 - 23.08.2014

Sirve para liarse, y hacer que tu cуdigo sea lioso. Usa variables con nombres sencillos, el @ y los sнmbolos raros se usan cuando hay muchнsimas variables, no creo que un gm sea el caso.


Respuesta: array 2d? - Parka - 23.08.2014

Bueno veamos si entendн si es asн como ley el post seria algo como:

pawn Код:
COMMAND:checkpoint(playerid,params[]){
    new opcion[64];
    if(sscanf(params,"s[64]",opcion)) return SendClientMessage(playerid,0xff0000ff,"Utiliza: /checkpoint [NombreUbicacion]");
    for(new k=0;k<sizeof(_@CheckPoint);k++){
        if(!strcmp(opcion,_@CheckPoint[k][_@CPText])){
            SetPlayerCheckpoint(playerid,_@CheckPoint[k][_@CPPosicion][0],_@CheckPoint[k][_@CPPosicion][1],_@CheckPoint[k][_@CPPosicion][2],2.0);
            break;
        }
    }
    return 1;
}
Ejemplo: '/checkpoint HelloWorld2' deberнa marcarte la 2 opciуn.

EDIT: no ley sus POST ignoren este POST xD


Respuesta: array 2d? - YazukiAkira - 23.08.2014

Quote:
Originally Posted by adri1
Посмотреть сообщение
Sirve para liarse, y hacer que tu cуdigo sea lioso. Usa variables con nombres sencillos, el @ y los sнmbolos raros se usan cuando hay muchнsimas variables, no creo que un gm sea el caso.
Liarse en que sentido, tiene algun uso especial?

їTendria algun problema en usarlos en mis variables?


Quote:
Originally Posted by Parka
Посмотреть сообщение
Bueno veamos si entendн si es asн como ley el post seria algo como:

pawn Код:
COMMAND:checkpoint(playerid,params[]){
    new opcion[64];
    if(sscanf(params,"s[64]",opcion)) return SendClientMessage(playerid,0xff0000ff,"Utiliza: /checkpoint [NombreUbicacion]");
    for(new k=0;k<sizeof(_@CheckPoint);k++){
        if(!strcmp(opcion,_@CheckPoint[k][_@CPText])){
            SetPlayerCheckpoint(playerid,_@CheckPoint[k][_@CPPosicion][0],_@CheckPoint[k][_@CPPosicion][1],_@CheckPoint[k][_@CPPosicion][2],2.0);
            break;
        }
    }
    return 1;
}
Ejemplo: '/checkpoint HelloWorld2' deberнa marcarte la 2 opciуn.
Algo asi es lo que consegui lograr, y lo que buscaba gracias.