16.03.2011, 14:45
(
Последний раз редактировалось leaNN!; 16.03.2011 в 19:52.
)
Hola gente!
Bueno, en el tutorial anterior explique las funciones de dini, para que servian y como usarlas.
Ahora, voy a explicarles como cargar y guardar datos.
Les dejo el codigo, explicado con comments.
Esta todo en el codigo, no hay mucho que explicar acб.
Si tienen alguna duda, consulten.
Bueno, en el tutorial anterior explique las funciones de dini, para que servian y como usarlas.
Ahora, voy a explicarles como cargar y guardar datos.
Les dejo el codigo, explicado con comments.
pawn Код:
new Float:pX[MAX_PLAYERS], Float:pY[MAX_PLAYERS], Float:pZ[MAX_PLAYERS], NoPos[MAX_PLAYERS];
public OnPlayerConnect(playerid) //callback OnPlayerConnect, aqui se definen las cosas que pasaran cuando el player se conecte.
{
new archivo[256], pname[MAX_PLAYER_NAME]; //Creamos "archivo" y "pname"
GetPlayerName(playerid, pname, sizeof(pname)); //Obtenemos el nombre del jugador
format(archivo, sizeof(archivo), "%s.ini", pname); //Le damos formato a "archivo".
if(dini_Exists(archivo)) //En caso de que el archivo exista:
{
SendClientMessage(playerid, 0xFFFFFFFF, "Cuando spawnees se cargara la ultima posicion en la que estuviste!"); //Enviamos un mensaje al jugador
}
else //En caso de que el archivo NO exista:
{
SendClientMessage(playerid, 0xFFFFFFFF, "De ahora en mas, cuando spawnees se cargara la ultima posicion en la que estuviste!"); //Enviamos otro mensaje al jugador
}
return 1; // Cerramos el callback OnPlayerConnect.
}
public OnPlayerDisconnect(playerid, reason) //callback OnPlayerDisconnect, aqui se definen las cosas que pasaran cuando el player se desconecte.
{
new archivo[256], pname[MAX_PLAYER_NAME]; //Creamos "archivo" y "pname"
GetPlayerName(playerid, pname, sizeof(pname)); //Obtenemos el nombre del jugador
format(archivo, sizeof(archivo), "%s.ini", pname); //Le damos formato a "archivo".
if(dini_Exists(archivo)) //En caso de que el archivo exista:
{
GetPlayerPos(playerid, pX[playerid], pY[playerid], pZ[playerid]); //Obtenemos las coordenadas del jugador.
dini_IntSet(archivo, "X", pX[playerid]); //Seteamos que "X" es igual a "pX[playerid]"
dini_IntSet(archivo, "Y", pY[playerid]); //Seteamos que "Y" es igual a "pY[playerid]"
dini_IntSet(archivo, "Z", pZ[playerid]); //Seteamos que "Z" es igual a "pZ[playerid]"
}
else //En caso de que el archivo NO exista:
{
dini_Create(archivo); //Creamos el archivo.
GetPlayerPos(playerid, pX[playerid], pY[playerid], pZ[playerid]); //Obtenemos las coordenadas del jugador.
dini_IntSet(archivo, "X", pX[playerid]); //Seteamos que "X" es igual a "pX[playerid]"
dini_IntSet(archivo, "Y", pY[playerid]); //Seteamos que "Y" es igual a "pY[playerid]"
dini_IntSet(archivo, "Z", pZ[playerid]); //Seteamos que "Z" es igual a "pZ[playerid]"
}
return 1; // Cerramos el callback OnPlayerConnect.
}
public OnPlayerSpawn(playerid)
{
new archivo[256], pname[MAX_PLAYER_NAME]; //Creamos "archivo" y "pname"
GetPlayerName(playerid, pname, sizeof(pname)); //Obtenemos el nombre del jugador
format(archivo, sizeof(archivo), "%s.ini", pname); //Le damos formato a "archivo".
if(NoPos[playerid] == 0) // Nos aseguramos de que el jugador solo tome sus pos viejas cuando spawnea por primera vez.
{
if(dini_Exists(archivo)) // En caso de que el archivo exista,
{
pX[playerid] = dini_Int(archivo, "X"); //Obtenemos el valor de "X" y lo guardamos en "pX"
pY[playerid] = dini_Int(archivo, "Y"); //Obtenemos el valor de "Y" y lo guardamos en "pY"
pZ[playerid] = dini_Int(archivo, "Z"); //Obtenemos el valor de "Z" y lo guardamos en "pZ"
SetPlayerPos(playerid, pX[playerid], pY[playerid], pZ[playerid]); //Seteamos las coordenadas del jugador
}
else return 0; // Y en caso de que no exista, no se produce ninguna accion
}
else return 0; // Y en caso de que sea cualquier valor distinto a 0, no pasa nada.
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(NoPos[playerid] == 0)
{
NoPos[playerid] = 1;
}
return 1;
}
Esta todo en el codigo, no hay mucho que explicar acб.
Si tienen alguna duda, consulten.