GTA-Center.com » Forum
http://www.gta-center.com/forums/

[GUIDA] Utilizzo di EasyINI
http://www.gta-center.com/forums/viewtopic.php?f=57&t=950
Pagina 1 di 1

Autore:  barletheking [ 11/03/2011, 21:43 ]
Oggetto del messaggio:  [GUIDA] Utilizzo di EasyINI

Guida all'utilizzo di EasyINI


Introduzione

Su SA:MP siamo abituati a salvare parametri nei file usando i natives oppure Dini.
Anche su IV:MP si può fare, utilizzando EasyINI creato da Jones.

Inizio

Scaricate l'include da qui:
http://www.gta-center.com/area_download/index.php?act=view&id=1795
Inseritelo nella cartella scripts del server.
Quindi, dobbiamo includerlo nella nostra GM, utilizzando nell'evento onScriptInit() la funzione dofile:

Codice:
function onScriptInit()
{
   dofile("scripts/easyini.nut");
}
addEvent("scriptInit", onScriptInit);


Ora vi spiego il funzionamento e i parametri delle funzione per poi iniziare a creare un sistema account.

EasyINI

Viene utilizzata per creare il file su cui andremo a scrivere i dati.

Esempio:

Codice:
local file = EasyINI("file.ini");


setKey(section, keyname, keyvalue)

Viene utilizzata per scrivere nel file i dati.

Esempio:

Codice:
local file = EasyINI("file.ini");
file.setKey("InfoPlayer", "Vita", "100");


Se si apre il file "file.ini" con il blocco note, si vedrà

Codice:
[InfoPlayer]
Vita=100


saveData()

Viene utilizzata per effettuare i cambiamenti sul file.

Esempio:

Codice:
local file = EasyINI("file.ini");
file.setKey("InfoPlayer", "Vita", "100");
file.saveData();


getKey(section, keyname)

Viene utilizzata per prelevare il valore da un file.

Esempio:

Codice:
local file = EasyINI("file.ini");
file.getKey("InformazioniServer", "Nome");


Creazione sistema account

Ora possiamo proseguire con la creazione del sistema account. Creiamo due funzioni: una che
serve per salvare i dati, e una per leggere i dati del player che si sta connettendo/disconnettendo.

Codice:
function salvaAccount(playerid)
{
    local file = EasyINI(GetPlayerName(playerid) + ".ini"); // Creiamo il file con il nome del player
    file.setKey("Info", "Vita", getPlayerHealth(playerid).tostring()); // Salviamo la vita
    file.setKey("Info", "Soldi", getPlayerMoney(playerid).tostring()); // Salviamo i soldi
    file.saveData(); // Apportiamo le modifiche al file
}


La funzione tostring() serve a convertire un qualsiasi tipo come integer o float in stringa, cosa vantaggiosa rispetto
a Pawn, che ci fa risparmiare di usare la funzione format.

Ora dobbiamo fare la funzione che carica l'account.
In fondo mettiamo una funzione creata da Boylett per controllare se un file esiste:

Codice:
function fileExists(filename)
{
   try
   {
      local testfile = file(filename, "r");
   }
   catch(e)
   {
      return false;
   }
   return true;
}


Dopodiche facciamo la funzione vera e propria:

Codice:
function caricaAccount(playerid)
{
    if(!fileExists(getPlayerName(playerid) + ".ini")) // Controlliamo se il file non esiste
    {
       return true; // Se non esiste non esegui il codice seguente
    }
   
    // Altrimenti...
    local file = EasyINI(getPlayerName(playerid) + ".ini"); // Carichiamo il file
    setPlayerHealth(file.getKey("Info", "Vita").tofloat()); // Settiamo la vita salvata
    setPlayerMoney(file.getKey("Info", "Soldi").tointeger()); // Settiamo i soldi salvati
}


Le funzioni tofloat() e tointeger() servono a convertire una stringa in float o integer. Nella vita abbiamo utilizzato tofloat() perchè sappiamo
che la vita è un valore in float, invece per i soldi abbiamo utilizzato tointeger() perchè i soldi sono di tipo integer.

Non ci resta altro che usare le funzioni per il salvataggio del file.
Negli eventi onPlayerConnect e onPlayerDisconnect mettiamo:

Codice:
function onPlayerConnect(playerid)
{
    sendMessageToAll(getPlayerName(playerid) + " è entrato nel server!", 0xFFFFFFAA, false);
    caricaAccount(playerid);
    return 1;
}
addEvent("playerConnect", onPlayerConnect);


Codice:
function onPlayerDisconnect(playerid, reason)
{
    sendMessageToAll(getPlayerName(playerid) + " è uscito dal server!", 0xFFFFFFAA, false);
    salvaAccount(playerid);
    return 1;
}
addEvent("playerDisconnect", onPlayerDisconnect);


Bene, abbiamo appena creato il nostro primo sistema account per IV:MP :D Alla prossima guida!

Guida creata interamente da barletheking solo ed esclusivamente per GTA-Center.com
Copia non autorizzata senza l'autorizzazione del sottoscritto.

Autore:  Giovanni94m [ 11/03/2011, 22:18 ]
Oggetto del messaggio:  Re: [GUIDA] Utilizzo di EasyINI

Fantastico lavoro barle
k+

Autore:  barletheking [ 11/03/2011, 22:20 ]
Oggetto del messaggio:  Re: [GUIDA] Utilizzo di EasyINI

Wow grazie :)

Autore:  Angelo [ 11/03/2011, 22:31 ]
Oggetto del messaggio:  Re: [GUIDA] Utilizzo di EasyINI

Fantastica guida, te lo sei meritato il K+ ;)

Autore:  barletheking [ 11/03/2011, 22:34 ]
Oggetto del messaggio:  Re: [GUIDA] Utilizzo di EasyINI

Grazie ;)

Autore:  Peppinux AKA Peppe_Stasu [ 11/03/2011, 23:48 ]
Oggetto del messaggio:  Re: [GUIDA] Utilizzo di EasyINI

Nice guide

Autore:  mitosking [ 12/03/2011, 16:43 ]
Oggetto del messaggio:  Re: [GUIDA] Utilizzo di EasyINI

Fantastica guida ;)

Autore:  andryXoX [ 14/03/2011, 21:19 ]
Oggetto del messaggio:  Re: [GUIDA] Utilizzo di EasyINI

Non avrei saputo spiegare meglio, bravissimo :asd: (p.s. alcune cose non le sapevo :D )

Autore:  barletheking [ 14/03/2011, 21:42 ]
Oggetto del messaggio:  Re: [GUIDA] Utilizzo di EasyINI

Thanks xD

Autore:  S&C [ 16/08/2011, 22:40 ]
Oggetto del messaggio:  Re: [GUIDA] Utilizzo di EasyINI

Scusa, anche se la guida e vcchia ma qui:

Codice:

function caricaAccount(playerid)
{
    if(!fileExists(getPlayerName(playerid) + ".ini")) // Controlliamo se il file non esiste
    {
       return true; // Se non esiste non esegui il codice seguente
    }
   
    // Altrimenti...
    local file = EasyINI(getPlayerName(playerid) + ".ini"); // Carichiamo il file
    setPlayerHealth(file.getKey("Info", "Vita").tofloat()); // Settiamo la vita salvata
    setPlayerMoney(file.getKey("Info", "Soldi").tointeger()); // Settiamo i soldi salvati
}

Non dovrebbe returnare false (0) se non esiste?

Autore:  barletheking [ 27/08/2011, 0:10 ]
Oggetto del messaggio:  Re: [GUIDA] Utilizzo di EasyINI

Ma hai letto? Se non trova il file returna true.

Pagina 1 di 1 Tutti gli orari sono UTC + 1 ora [ ora legale ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/