array 2d?
#1

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;
}
Reply
#2

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;
}
Reply
#3

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
Reply
#4

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);
Reply
#5

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
Reply
#6

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.
Reply
#7

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
Reply
#8

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.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)