[AYUDA] Crear comando OFF
#1

Hola pues quiero saber como crear un comando OFF (Asн lo llamo)
lo que me refiero es que la persona que le quieres editar, dar, etc.
Este offline pero cuando yo utilize ese comando le cambie a la
variable, gracias y espero su ayuda, es con eso de .INI
Reply
#2

facil, un ejemplo:
pawn Код:
COMMAND:EditarNivel(playerid, params[]) {
    new jugador,nivel,data[144],name[25];
    if(sscanf(params, "rd",jugador, nivel)) return SendClientMessage(playerid, -1, "Escribe: /EditarNivel [jugador] [nivel]");
    //TU CODE
    GetPlayerName(jugador, name, sizeof(name));
    format(data,sizeof(data),"usuarios/%s.ini",name);
    new INI:archivo = INI_Open(data);
    INI_WriteInt(archivo,"Nivel", nivel);
    return true;
}
saludos.
https://sampforum.blast.hk/showthread.php?tid=466096
Reply
#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
#4

Bueno y que significa la parte estб:

pawn Код:
if(sscanf(params, "rd",jugador, nivel)) // La parte de "rd", que es?
Al igual estб:

pawn Код:
if(sscanf(params, "s[24]i", nombre, nivel))  // La parte de "s[24]i" que es?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)