Duda GPS Y_ini
#1

Buenas, estaba haciendo un sistema de GPS con Y_ini y me surgiу una duda al tener que cargar los destinos desde un archivo de texto.

Los destinos se guardarнan de la siguiente manera:
Код:
Enabled = false

[nombre elegido por el jugador]
X: 0
Y: 0
Z: 0

[Hospital San Fierro]
X: 1560.34
Y: -38.034
Z: 23.012
Entonces mi duda es: їCуmo puedo cargar los destinos desde el archivo, y que aparezcan los nombres de las pestaсas en un dialog? Es decir, al poner "/destinos" te saldrнa un dialog con el nombre de cada pestaсa que tienes en el archivo (y si no tienes pondrнa que no tienes) y al seleccionar uno se crearнa el checkpoint en la posiciуn correspondiente a la pestaсa elegida.

Espero que me hayais entendido.

Un Saludo. Gracias
Reply
#2

Nunca he usado Y_Ini, no conozco su funcionamiento.
Si fuese Dini, podria ayudarte...

Igual supongo que usan la misma forma de leer archivos. Lo harй con Dini, luego tu lo pasas para Y_Ini.
pawn Код:
Enabled = false

PL: [nombre elegido por el jugador]
PLX: 0
PLY: 0
PLZ: 0

L1: [Hospital San Fierro]
L1X: 1560.34
L1Y: -38.034
L1Z: 23.012
Entonces, usas:

pawn Код:
CMD:gps(playerid, params)
{
new pname[MAX_PLAYER_NAME], archivo[256], str[256];
GetPlayerName(playerid, pname, sizeof(pname));
format(archivo, sizeof(archivo), "GPS/%s", pname);
if(!dini_Exists(archivo))
{
ShowPlayerDialog(playerid, 177, DIALOG_STYLE_MSGBOX, "GPS", "No tienes ningun lugar guardado en tu GPS!", "Aceptar", "");
}

else
{
format(str, sizeof(str), "%s\n%s\n%s\%s\%s", dini_Int(archivo, "L1"), dini_Int(archivo, "L2"), dini_Int(archivo, "L3"), dini_Int(archivo, "L4"), dini_Int(archivo, "L5"));
ShowPlayerDialog(playerid, 178, DIALOG_STYLE_LIST, "GPS", str, "Aceptar", "Cancelar");
}
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{

new pname[MAX_PLAYER_NAME], archivo[256], str[256];
GetPlayerName(playerid, pname, sizeof(pname));
format(archivo, sizeof(archivo), "GPS/%s", pname);

if(dialogid == 178 && response)
{
switch(listitem)
{

if(listitem == 0)
{
SetPlayerRaceCheckpoint(playerid, 1, dini_Int(archivo, "L1X"), dini_Int(archivo, "L1Y"), dini_Int(archivo, "L1Z"), 0.0, 0.0, 0.0, 10);
}

else if(listitem == 1)
{
SetPlayerRaceCheckpoint(playerid, 1, dini_Int(archivo, "L2X"), dini_Int(archivo, "L2Y"), dini_Int(archivo, "L2Z"), 0.0, 0.0, 0.0, 10);
}

else if(listitem == 2)
{
SetPlayerRaceCheckpoint(playerid, 1, dini_Int(archivo, "L3X"), dini_Int(archivo, "L3Y"), dini_Int(archivo, "L3Z"), 0.0, 0.0, 0.0, 10);
}

else if(listitem == 3)
{
SetPlayerRaceCheckpoint(playerid, 1, dini_Int(archivo, "L4X"), dini_Int(archivo, "L4Y"), dini_Int(archivo, "L4Z"), 0.0, 0.0, 0.0, 10);
}

else if(listitem == 4)
{
SetPlayerRaceCheckpoint(playerid, 1, dini_Int(archivo, "L5X"), dini_Int(archivo, "L5Y"), dini_Int(archivo, "L5Z"), 0.0, 0.0, 0.0, 10);
}

}
}
return 1;
}
Y L1, L2, L3, L4, y L5, serian los lugares guardados por el jugador, que se harian con algun comando tuyo xD.
Creo que asн deberнa funcionar, no lo testiй, lo hice aqui en el foro lol.
Reply
#3

Mmmm pues veo que no me entendiste bien jeje. A ver, me explico mejor:

Al comprar el GPS se crea el archivo GPS.ini en la carpeta correspondiente a cada jugador
Asн quedarнa el archivo .ini despuйs de haber guardado posiciones como favoritas:

Код:
Enabled = false            // Quiere decir que cuando el jugador se desconectу el gps estaba desactivado
CurrentDestination: X,Y,Z  // Si estaba activado, al conectarse le darб el mismo destino que tenнa.

[Hospital SF]   // Posiciуn guardada por el jugador
X: 0.0
Y: 0.0
Z: 0.0

[Comisarнa SF]  // Posiciуn guardada por el jugador
X: 1.0
Y: 1.0
Z: 1.0
Pues bien, lo que yo quiero hacer es lo siguiente:

Cuando el jugador pone "/destinos" le aparece un dialog con una lista de todos los destinos que йl tiene guardado en el archivo GPS.ini

Ejemplo de como quedarнa el dialog:

Код:
|-GPS----------------------- |                             
|___________________________ |
| Hospital SF                |
|___________________________ |
| Comisarнa SF               |
|___________________________ |
|                            |
|   Select          Close    |
|___________________________ |
Bien, pues al seleccionar uno de los dos destinos se crearб el checkpoint en las coordenadas guardadas en el archivo y en la pestaсa correspondiente al destino seleccionado.

Es decir, si elige "Hospital SF" se crearб un checkpoint en 0.0, 0.0, 0.0
Y si elige "Comisarнa SF" se crearб un checkpoint en 1.0, 1.0, 1.0

Espero que me hayas entendido ahora, si no, te paso un trozo del cуdigo. Gracias de todos modos, un saludo
Reply
#4

Yo he leнdo el tema que hizo ****** hacerca de la librerнa, pero no sabrнa como hacer lo que quieres sin primero haberlo intentado. Sin embargo, hay una parte de la explicaciуn que dice que puedes cargar un archivo completo, mientras que en el callback para cargar el archivo pones "tag[]", me imagino que es para saber con que tag estбs trabajando.

http://forum.sa-mp.com/showthread.ph...Tag#post832863

La parte que explica eso deberнa estar marcado en rojo. Dejame ver si entre las preguntas encuentro algo...
Reply
#5

De acuerdo, esperarй tu respuesta.

Gracias Miguel.
Reply
#6

No Luis, creo que serнa mejor que preguntaras en ese tema, yo no puedo responderte porque no he usado ni probado Y_INI (no lo necesito), por lo que la respuesta te la puede dar alguien que si lo halla hecho, y probablemente el lugar indicado es ese.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)