[Tutorial]Uso de Dini - Update 1
#1

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.

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


Messages In This Thread
[Tutorial]Uso de Dini - Update 1 - by leaNN! - 16.03.2011, 14:45
Respuesta: [Tutorial]Uso de Dini - Update 1 - by [J]ulian - 16.03.2011, 16:55
Respuesta: [Tutorial]Uso de Dini - Update 1 - by leaNN! - 16.03.2011, 19:42
Respuesta: [Tutorial]Uso de Dini - Update 1 - by TheChaoz - 16.03.2011, 21:35
Re: Respuesta: [Tutorial]Uso de Dini - Update 1 - by murdoxix - 17.03.2011, 00:14
Respuesta: [Tutorial]Uso de Dini - Update 1 - by leaNN! - 17.03.2011, 15:21
Re: [Tutorial]Uso de Dini - Update 1 - by superpol1 - 18.03.2011, 00:08
Respuesta: Re: [Tutorial]Uso de Dini - Update 1 - by TheChaoz - 18.03.2011, 18:15

Forum Jump:


Users browsing this thread: 2 Guest(s)