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.