[AYUDA] Crear comando OFF
#3

Lo que intentas hacer es casi igual a la forma en que guardas las estadнsticas del jugador al desconectarse:

- Obtienes el nombre del jugador y verificas si tiene una cuenta.
- Si tiene una, actualizas los datos previos del jugador. Si no, no haces nada.

pawn Код:
new nombre[MAX_PLAYER_NAME], cuenta[60];

//Obtenemos el nombre del jugador...
GetPlayerName(playerid, nombre, sizeof(nombre));

//Formateamos la variable 'cuenta' con el directorio donde se encuentra la cuenta del jugador...
format(cuenta, sizeof(cuenta), "Cuentas\\%s.ini", nombre);

//Verificamos si la cuenta del jugador existe, usando la variable que formateamos.
if(fexist(cuenta))
{
    //La cuenta existe, actualizamos los datos previos de la cuenta del jugador con los nuevos.

    //Abrimos el archivo de la cuenta del jugador.
    new INI:archivo = INI_Open(cuenta);

    //Actualizamos los datos previos.
    INI_WriteInt(archivo, "Dinero", GetPlayerMoney(playerid));
    INI_WriteInt(archivo, "Score", GetPlayerScore(playerid));
    INI_WriteInt(archivo, "Nivel", Nivel[playerid]);

    //Cerramos el archivo.    
    INI_Close(archivo);
}
else
{
    //La cuenta no existe, no hacemos nada.
    return 0;
}

Ahora, supongamos que quieres hacer un comando para cambiar el nivel de un jugador desconectado. Lo que tienes que hacer es exactamente lo mismo que en el ejemplo de arriba:

- Obtener el nombre del jugador... verificar si su cuenta existe... y finalmente, actualizar los datos previos por los nuevos.

pawn Код:
CMD:cambiarnivel(playerid, params[])
{
    new cuenta[60], nombre[MAX_PLAYER_NAME], nivel;
   
    //Obtenemos el nombre del jugador y el nivel al que se le desea cambiar...
    if(sscanf(params, "s[24]i", nombre, nivel))
    {
        //Los datos encontrados en los parбmetros del comando no son los que esperabamos,
        //enviamos un mensaje mostrando como se usa el comando y no hacemos nada.
        SendClientMessage(playerid, -1, "USO: /cambiarnivel <nombre del jugador> <nivel>");
        return 0;
    }

    //Formateamos la variable 'cuenta' con el directorio donde se encuentra la cuenta del jugador...
    format(cuenta, sizeof(cuenta), "Cuentas\\%s.ini", nombre);
   
    //Verificamos si la cuenta del jugador existe.
    if(fexist(cuenta))
    {
        //La cuenta del jugador existe, actualizamos los datos previos.

        //Abrimos el archivo de la cuenta del jugador.
        new INI:archivo = INI_Open(cuenta);    

        //Actualizamos el nivel del jugador por el deseado.
        INI_WriteInt(archivo, "Nivel", nivel);     

        //Cerramos el archivo.
        INI_Close(archivo);
    }
    else
    {
        //La cuenta del jugador no existe, enviamos error y no hacemos nada.
        SendClientMessage(playerid, -1, "ERROR: ЎLa cuenta del jugador especificado no existe!");
        return 0;
     }

     return 1;
}
Reply


Messages In This Thread
[AYUDA] Crear comando OFF - by JimGorecky - 03.03.2014, 02:18
Respuesta: [AYUDA] Crear comando OFF - by OTACON - 03.03.2014, 03:05
Respuesta: [AYUDA] Crear comando OFF - by hotspicytaco - 03.03.2014, 04:00
Respuesta: [AYUDA] Crear comando OFF - by JimGorecky - 03.03.2014, 17:33

Forum Jump:


Users browsing this thread: 1 Guest(s)