NUOVA SOTTOSEZIONE DI "WIKY" CONTENENTE TUTTE LE FUNZIONI DEL LUA PLAYER HM7

ago 12

LUA – Salvataggi (savegame)

Una cosa molto comoda che è possibile implementare in un gioco, è la funzione di salvataggio dei progressi, perché se si vuole riprendere in mano il gioco è comodo ritrovarsi allo stesso punto in cui lo si aveva lasciato, per evitare di dover rifare tutto da capo, il ché sarebbe uno spreco di tempo.

Per poter implementare questa funzione in un gioco o in una qualsiasi applicazione, vi sono due strade che potete seguire:

  • Metodo 1: Utilizzare file TXT come contenitori di dati (argomento gia affrontato qui)
  • Metodo 2: Utilizzare la funzione già presente nel linguaggio LUA
METODO 1 

Se decidete di utilizzare dei semplici file TXT, vi basta creare un file per ogni dato che volete salvare, in modo da evitare sovrascrittura e perdita di informazioni.

Ecco un esempio di salvataggio su file TXT:

level = 5
 file=io.open("level.txt","w") -- la "w" indica l'apertura del file in modalità scrittura
 file:write(level)
 file:close()

In questo modo il livello raggiunto viene salvato sul file txt indicato.

Invece se si vogliono riprendere le informazione salvate e caricarle nel gioco, si fa così:

file=io.open("liv.txt", "r") -- la "r" indica l'apertura del file in modalità lettura
 livel=file:read("*n")
 file:close()

METODO 2

Il secondo metodo, a parer mio molto più professionale, come detto sopra prevede l’utilizzo della funzione LUA già predisposta per creare salvataggi in tutto e per tutto identici a quelli che vengono creati dai normali giochi commerciali.

La funzione da utilizzare è la seguente:

System.startGameSave("Nome salvataggio","Nome gioco","Info",dati da salvare,"Nome identificativo del salvataggio")

Io vi consiglio di salvare un array di dati in modo da creare un solo salvataggio per tutti i dati.

Al contrario per recuperare i dati precedentemente salvati basta usare la seguente funzione:

data = System.startGameLoad("Nome identificativo del salvataggio")

Esempio completo:

Spoiler Inside SelectShow

A questo punto sta a voi decidere quale dei due utilizzare, in base alle vostre esigenze e al tipo di situazione in cui dovete salvare dei dati.

Permanent link to this article: http://taketheball.altervista.org/?p=428

feb 03

LUA – Creare una sveglia

Per impostare una sveglia con il LUA, dobbiamo servirci della funzione Systeme.getTime(n).
Come tutti sappiamo la sveglia necessita dell’ora e dei minuti per poter funzionare, quindi andremo ad utilizzare rispettivamente Systeme.getTime(1) e Systeme.getTime(2). (Introduzione : LUA – Ora e Data)
Per settare l’orario di sveglia, dobbiamo invecie usare la funzione System.startOSK("",""), che andremo ad utilizzare due volte, una per fare inserire l’ora, e una per fare inserire i minuti, in questo modo :

ora = System.startOSK("","Inserisci ora")
minuti = System.startOSK("","Inserisci minuti")

A questo punto dobbiamo confrontare l’ora e minuti attuali con quelli inseriti dall’utente, però sorge il problema che le funzioni getTime restituiscono un valore numerico, mentre le variabili che abbiamo creato per l’inserimento manuale di ora e minuti, contengono valori di tipo stringa.
Per poter eseguire il confronto, dobbiamo convertire i dati in un tipo comune, io consiglio di convertire l’ora e i minuti inseriti dall’utente da stringhe a valori numerici interi, mediante l’utilizzo della funzione : tonumber("stringa").

Se vi interessa utilizzare il formato ora da 12 ore, dovete includere anche il controllo sui parametri AM e PM, per determinare se quello impostato sia un orario pomeridiano/serale o mattutino. Per fare il suddetto controllo possimo usare la funzione Systeme.getTime(5) che restituisce proprio AM o PM in base all’ora attuale.
Se scegliete questo metodo, ricordatevi che dovete salvare anche una terza stringa contenente il valore AM o PM, per l’orario di sveglia, da confrontare con il valore restituito dalla funzione.

Alla fine di tutto, se scegliate il primo metodo il codice dovrebbe risultare così :

oraA = Systeme.getTime(1)
minutiA = Systeme.getTime(2)

oraS = System.startOSK("","Inserisci ora")
minutiS = System.startOSK("","Inserisci minuti")

If oraA==tonumber(oraS) and minutiA==tonumber(minutiS) then
   --codice sveglia
end

Invecie se scegliete il secondo metodo :

oraA = Systeme.getTime(1)
minutiA = Systeme.getTime(2)
am_pmA = Systeme.getTime(5)

oraS = System.startOSK("","Inserisci ora")
minutiS = System.startOSK("","Inserisci minuti")
am_pmS = System.startOSK("","Inserisci AM o PM")

If oraA==tonumber(oraS) and minutiA==tonumber(minutiS) and am_pmA==am_pmS then
   --codice sveglia
end

Per quanto riguarda il codice della sveglia, potete inserire una suoneria, seguendo la guida Come inserire musica in un homebrew LUA

Permanent link to this article: http://taketheball.altervista.org/?p=380

gen 29

Attivare un plugin

Per attivare un plugin sul sistema psp, bisogna innanzi tutto copiare i file del plugin all’interno della cartella seplugins che si trova nella root della memory stick (vedi articolo struttura memory stick), successivamente bisogna cercare i file VSH.txt , GAME.txt e POPS.txt , i quali se non presenti vanno creati; poi successivamente se dovete aggiungere un plugin alla XMB della psp, dovete aggiungrlo al file VSH.txt, invece se dovete aggiungere un plugin che va eseguito durante la sessione di gioco, dovete aggiungerlo al file GAME.txt, altrimenti se dovete aggiungere un plugin che dovrà essere usato durante l’esecuzione di un gioco per ps1 dovete aggiungerlo al file POPS.txt.
A questo punto per aggiungere un plugin ad uno dei file sopra menzionati, bisogna aprire il file con un comune editor di testi come per esempio “blocco note” e bisogna andare ad aggiungere una stringa che è composta da due parti :
una che indica il path assoluto del plugin, cioè del file .prx che volete usare,
È una che con un numero che può essere 1 oppure 0, che indicano rispettivamente acceso e spento.
Per esempio se dovete aggiungere il plugin con il file .prx nominato “prova.prx” da utilizzare nella XMB, dovete aprire il file VSH.txt e scriverci la stringa :

ms0:/seplugins/prova.prx 1

la stessa cosa è da fare se dovete aggiungere un plugin ad un altro dei file GAME.txt o POPS.txt

Permanent link to this article: http://taketheball.altervista.org/?p=375

gen 28

Struttura memory stick

La memory stick inserita nel sistema psp, per funzionare deve avere una formattazione precisa, che può essere applicata sia automaticamente che manualmente.
Però impostando la formattazione automaticamente tramite il menù impostazioni

non vengono create alcune cartelle che sono necessarie per chi ha una psp sbloccata con custom firmware.
Quindi il mio consiglio è quello di utilizzare il settaggio automatico che crea la maggior parte delle cartelle, poi andare ad aggiungere le cartelle mancanti, necessarie se avete una psp che monta un custom firmware

Alla fine del processo nella root, cioè nella cartella X:\ dove X è la lettera che il computer assegna alla vostra psp, devono esserci le cartelle e le sottocartelle indicate di seguito :

X:\DCIM
X:\DCIM\101MSDCF -> Cartella per le foto con nome DSCxxxxx
X:\ISO -> Cartella per le ISO dei giochi scaricati
X:\MP_ROOT
X:\MP_ROOT\100ANV01 -> Cartella per video convertiti in MP4(AVC)
X:\MP_ROOT\100MNV01 -> Cartella per video convertiti in MPEG-4
X:\MUSIC -> Cartella per musica
X:\PICTURE -> Cartella per immagini di qualsiasi formato
X:\PSP
X:\PSP\APP -> Cartella per applicazioni come SenseMe o Digital Comics
X:\PSP\APP\NPEG00012
X:\PSP\APP\NPIA00013
X:\PSP\GAME -> Cartella per homebrew, e file di update
X:\PSP\RSSCH -> Cartella per file RSS
X:\PSP\SAVEDATA -> Cartella per file di salvataggio dei giochi
X:\PSP\THEME -> Cartella per temi
X:\PSP\SYSTEM -> Cartella contenente alcuni file di sistema
X:\PSP\SYSTEM\BROWSER -> Cartella per i file del browser internet, come i segnalibri
X:\PSP\SYSTEM\RSSCH -> Cartella per file RSS
X:\PSP\SYSTEM\SKYPE -> Cartella per file di SKYPE
X:\seplugins -> Cartella per i plugin e la loro attivazione
X:\VIDEO -> Cartella per i video

Permanent link to this article: http://taketheball.altervista.org/?p=372

gen 27

LUA – Tastiera virtuale

Può capitare che durante l’utilizzo di un gioco o di una applicazione, sia necessario dover inserire delle informazioni, come per esempio stringhe o numeri, che servono per varie ragioni… dai calcoli, a una semplice memorizzazione del nome del giocatore che ha effettuato un record.
La funzione che andremo ad utilizzare è System.startOSK.

La funzione prende in ingresso due variabili, che in questo caso ho denominato “stringa1″ e “stringa2″, in questo modo:

System.startOSK("stringa1","stringa2")

dove “stringa1″è ciò che viene scritto di default nel campo di testo quando andiamo ad aprire la tastiera virtuale, e “stringa2″ è il testo scritto in basso a destra (nota immagine -> “Inserisci il tuo nome”).

Questa funzione va però associata ad una variabile, in questo modo quando confermiamo ciò che abbiamo inserito, il testo scritto viene salvato nella variabile, per esempio usando il codice:

nome=System.startOSK("stringa1","stringa2")

possiamo salvare quello che abbiamo scritto mediante l’utilizzo della tastiera virtuale, all’interno della variabile nome, e in seguito possiamo utilizzare questi dati per altri scopi.

In soldoni, la funzione apre la tastiera virtuale, tu scrivi ciò che ti serve, una volta finito premi START per chiudere la tastiera virtuale, e quello che hai scritto viene salvato nella variabile indicata a tempo di scrittura del codice.

Permanent link to this article: http://taketheball.altervista.org/?p=362

gen 19

Come firmare un homebrew

Firmare un homebrew significa renderlo avviabile anche da firmware originale, perciò senza bisogno dell’utilizzo di custom firmware.
Esistono due metodi per firmare un homebrew,e generalmente questi metodi necessitano del file denominato “EBOOT.PBP” che fa sempre parte di un archivio di un homebrew, in quanto è l’eseguibile che avvia il programma, ma ritornano al discorso principale, dei due metodi che esistono per firmare un homebrew, uno può essere utilizzato anche da psp, mentre l’altro necessita di un computer.

Primo metodo :

Il primo metodo, quello che non necessità di un computer e che può essere svolto direttamente su psp, prevede l’utilizzo di un altro homebrew (ovviamente già firmato) chiamato : UO_PSCrypter.
Avviato UO_PSCrypter, vi si aprirà una schermata in cui dovrete andare a selezionare il file EBOOT.PBP dell’homebrew che desiderate firmare, e dopo averlo selezionato, UO_PSCrypter provvederà automaticamente firmarlo, e al termine dell’operazione potrete uscire tranquillamente.

DOWNLOAD UO_PSCrypter

Secondo metodo :

Il secondo metodo come detto prima necessita dell’utilizzo di un computer, perché andremo ad utilizzare un programma per computer, che compie essenzialmente lo stesso lavoro di quello per psp. Il programma in questions is chiama : “EasyPBPRX”, e anche in questo caso dovremo andare a selezionare il file EBOOT.PBP che intendiamo firmare, e successivamente premere il pulsante : “Click to encrypt”. A questo punto aspettate il termine dell’operazione che sarà notificato con un messaggio.

DOWNLOAD EasyPBPRX

Permanent link to this article: http://taketheball.altervista.org/?p=357

gen 18

LUA – Dump degli UMD

Una cosa interessante del LUA, è che mette anche a disposizione una funzione per copiare gli UMD salvando e il contenuto nella MEMORY della PSP.
La funzione in questione è

UMD.ripISO("path/nome_gioco.iso")

La funzione qui sopra va a salvare il contenuto dell’Umd, in formato iso,nel path specificato con il nome specificato.
Ma quando si tratta di copiare giochi sulla memory, una cosa da fare prima di tutto, è confrontare lo spazio occupato dal gioco con la memoria libera sulla memory, il tutto per stabilire se lo spazio su memoria sia sufficiente, e anche in questo caso il LUA ci viene in contro con le funzioni

System.getFreeSpace("ms0:/")
UMD.getSize()

Che associate a due variabili, in questo modo :

freeMS = System.getFreeSpace("ms0:/")
UMDsize = UMD.getSize()

Ci permettono di sapere quanto spazio libero abbiamo sulla memory e quanto ne occupa il gioco.
Purtroppo le due funzioni restituiscono il valore in BYTE, e per questo motivo, se lo vogliamo in MB dobbiamo fare :

freeMS = System.getFreeSpace("ms0:/")
freeMS = freeMS / 1024/1024

UMDsize = UMD.getSize()
UMDsize = UMDsize / 1024/1024

In questo modo i BYTE vengono convertiti in MEGABYTE.

A questo punto basta mettere una condizione che controlli che la dimensione del gioco sia inferiore a quella disponibile su memory e abbiamo finito.

Permanent link to this article: http://taketheball.altervista.org/?p=349

gen 17

LUA – Fare screenshot e salvarli con la data di creazione come nome

Era gia stato affrontato il problema di come fare per salvare screenshot in una applicazione o un programma, (post precedente) ed era stata menzionata la funzione Lua “screen:save()”.
Ma se avete bisogno di salvare più di uno screenshot per una stessa applicazione non vi conviene usare un contatore come nel precedente post (che riguardava lo stesso argomento), ma vi conviene molto di più utilizzare la data e l’ora, o solo la data, per contraddistinguere le varie immagini salvate.
Il codice è molto semplice :
screen:save("nomefile".."_"..System.getDate(1).."/"..System.getDate(2).."/"..
System.getDate(3).."_"..System.getTime(1).."-"..System.getTime(2)..".formato")
Scritto su un unica riga …

In questo modo il file immagine che andrete a salvare avrà il nome nel seguente formato :
nomefile_17/01/2013_16-30

Il vantaggio che vi da l’utilizzo di questa sintassi di codice, è che non vi capiterà di avere delle immagini sovrascritte, a causa dei nomi uguali, perché a meno che voi non vi mettiate apposta a salvare le immagini nello stesso giorno e alla stessa ora, i nomi saranno sempre diversi.
Oltretutto potrete anche sapere quando avete salvato l’immagine senza aprire le proprietà.

In sostanza se vi serve salvare immagini, ma non è una funzione che intendete implementare nel vostro programma (magari lo volete fare solo a scopo illustrativo) vi conviene fare meno confusione e utilizzare il metodo spiegato nel vecchio post, invece, se dovete implementare questa funzione in un programma che ne necessità per il salvataggio di informazioni, vi conviene usare questo nuovo metodo che risulta più completo.

Permanent link to this article: http://taketheball.altervista.org/?p=341

gen 01

LUA – Conversione da numero a stringa e viceversa

Se vi capita di dover salvare dei dati, e nello specifico di dover salvare un numero in una stringa, ritornando al discorso del concatenamento (Come concatenare stringhe), esistono due funzioni LUA che fanno al caso vostro :

tonumber(stringa)
tostring(n)

Con queste due funzioni potrete convertire i numeri in stringhe e le stringhe in numeri, per esempio :

a=10
Stringha = tostring(a)

oppure

Stringa = "10"
a = tonumber(Stringha)

Permanent link to this article: http://taketheball.altervista.org/?p=310

gen 01

LUA – Come concatenare stringhe

Una delle cose che capita più spesso quando si realizza una applicazione o un gioco, è dover salvare dei dati, è il modo più semplice in assoluto per farlo è salvarsi in un file txt sotto forma di stringa, come già spiegato nel post (Scrittura e lettura dati di gioco su un file txt).
Se però volete salvare i nomi di diversi player, non vi conviene salvare tanti file txt diversi, vi conviene concatenare queste informazioni in un unica stringa e scrivere quest’ultima sul file, magari separando i dati con una virgola, per semplificare la lettura.
Ora ritornano a parlare di concatenamento di dati in una stringa unica, posso dire che questa è una delle operazioni più semplici che ci sia, perché basta usare il simbolo .. tra un dato e un altro, i questo modo :

Stringa = Nome_player1..","..Nome_player2..","..Nome_player3..","

Come potete vedere, i nomi dei player che sono dei dati, non li ho messi tra doppi apici, mentre le virgole che devono essere scritte come caratteri, le ho messe tra apici, e tutti i nomi sono uniti con il simbolo .. così, in questo caso la stringa con il nome del player 1, viene concatenata a una virgola, poi il nome del primo player, concatenato alla virgola viene tutto concatenato al nome del secondo player, e così via

Permanent link to this article: http://taketheball.altervista.org/?p=308

Post precedenti «

» Post successivi