Jump to content
Rpg²S Forum
  • 0

Si possono inserire/sostituire files in un archivio encrypted?


nihil-omen
 Share

Question

Cari ragassuoli eccomi di nuovo qui con un nuovo GRANDE problema, che se riuscissi a risolvere, potrebbe permettermi di realizzare un paio di ideine carine che ho per la testa! :D

 

Il GRANDE problema è il seguente:

Come alcuni di voi già sanno, ho creato per il mio progetto (2rA) un sistema di autoupdate online.

Come sistema funziona (più o meno) egregiamente (a volte si impalla, quando ci sono troppi aggiornamenti da fare o una linea troppo lenta, ma ho già predisposto il modo per aggiornare manualmente il tutto)...

Il problema è che smette di funzionare egregiamente, o meglio, non funziona manco per una cippa, se distribuisco il gioco con l'opzione "create encrypted archive"!

La spiegazione è ovvia, creando l'archivio, il gioco cerca le risorse dentro l'archivio e:

1) non ci sono le cartelle "Graphics" e "Data", quindi gli aggiornamenti a quelle destinazioni falliscono miseramente

2) anche aggiungendo tali cartelle, le risorse risultano comunque esterne all'archivio ed il gioco non se le fila di pezza

 

Quindi il fulcro è: esiste un modo per far sì che tali aggiornamenti vengano messi automaticamente, via script insomma, dentro l'archivio? (che dovrebbe essere "Game.rgssad", giusto? XD)

 

Se non trovo il modo per farlo, sarò costretto a disabilitare gli autoupdate (per riattivarli ESCLUSIVAMENTE nelle sessioni di betatesting, dove distribuire il gioco non criptato ai betatester mi sembra normale oltre che utile), a meno che non decida di far fare un update di TUTTO l'archivio, che ok, renderlo automatico ed evitare il doverlo scaricare installare all'utente è comodo, ma peserebbe un po' TROPPO...

 

Qualche consiglio?

Edited by nihil-omen

http://i30.tinypic.com/xehois.gif

} 2rA - web site {

E' disponibile il primo capitolo completo di 2rA!

} 2rA: Capitolo I {

Link to comment
Share on other sites

Recommended Posts

  • 0

Uhm...

 

Più o meno sarei pure riuscito a trovare una soluzione, solo che non riesco a farla andare...

In pratica, ho trovato lo script che serve a me, su questo sito qui... (no spam intented)

Teoricamente dovrebbe fare proprio ciò che voglio io, il problema è che a quanto pare è lento da far paura, roba che non sono riuscito ancora a fargli finire neanche una volta ciò che dovrebbe fare >_>"

 

In pratica questo script scompatta il file .rgssad, inserisce i nuovi dati e lo ricompatta nuovamente.

Per farlo, passa di chiave in chiave (che dovrebbero essere di 4byte ognuna se ho capito bene dallo script, del quale la maggior parte dei comandi sono a me completamente ignoti XD) finchè non finisce, o almeno così sembrerebbe...

 

Ora visto che non finiva più, ho inserito un paio di righe al comando dello script "self.next_key" (che è quello, appunto, che lo fa andare avanti di chiave in chiave) che facciano sì che ogni volta che si chiama questo comando, una variabile globale viene incrementata di 1 e che se arriva ad un multiplo di 1000, me la stampa con un bel print, insomma per vedere fin dove arriva!

 

Il risultato è stato che arrivato alla chiave 22.000 mi sono stufato >_>" Troppo tempo per un autoupdate, faccio prima a far scaricare ai giocatori un update manuale!

 

Ho provato anche a far comprimere solo la catella "Data" diminuendo la grandezza del file Game.rgssad da 58Mb a 10Mb, sperando che ci volesse di meno, ma di nuovo, a 22.000 mi sono stufato...

 

Certo, in questa maniera, gli update a tutti i files che NON vanno nella cartella "Data" posso lasciarli automatici (quindi tutte le grafiche e le musiche e alcuni file .txt specifici), però la parte più succolenta da aggiornare (mappe e database) rimane intoccabile...

Certo, va detto che pure un update manuale di 10Mb contro uno di 58Mb, è comunque un bel risparmio eh!

 

L'unica alternativa per far funzionare gli autoupdate sarebbe non criptare nulla, ma sinceramente non apprezzo il fatto che qualunque niubbo possa mettersi a smanettare con le mappe e gli script, soprattutto visto che i risultati dei giocatori poi vanno a finire sul sito... Fosse stato un gioco totalmente offline, sti cavoli, ma visto che mi sono fatto un mazzo così per fare gli Achievements...

Poi vabè, uno un minimo bravo mi scompatta pure il Game.rgssad, ma vabè, l'immunità totale non ce l'hanno neanche i giochi originali, quindi...

http://i30.tinypic.com/xehois.gif

} 2rA - web site {

E' disponibile il primo capitolo completo di 2rA!

} 2rA: Capitolo I {

Link to comment
Share on other sites

  • 0
Tieni comunque presente che quello script ti scompatta tutto il file criptato, e poi lo ricompatta... non l'ho testato, ma se facendo ciò salva una copia in locale del contenuto chiunque può mettere mano ai file scompattati... quindi perderebbe senso criptare il gioco.
Link to comment
Share on other sites

  • 0

Purtroppo non sono riuscito a fargli finire il processo, ma comunque da quel che ho capito (e da quel che ho potuto vedere sulle mie cartelle -anche se appunto, non ha mai finito il processo) non dovrebbe salvare nessuna copia, serve proprio ad evitare che la gente metta mano ai files, non avrebbe senso come script altrimenti! :)

 

E proprio visto che lavora su tutto il file criptato, avevo provato ad alleggerirlo, ma nisba... :(

Mi sa che finirà che lascerò gli autoupdate solo per le risorse, mentre per le mappe e gli scripts metterò degli updates manuali, purtroppo ciò non mi permetterà di effettuare alcune cosucce che avevo in mente...

Ad ogni modo instlalare manualmente un file di 10Mb contro un file di 58Mb è già un bel passo avanti, no? :D

http://i30.tinypic.com/xehois.gif

} 2rA - web site {

E' disponibile il primo capitolo completo di 2rA!

} 2rA: Capitolo I {

Link to comment
Share on other sites

  • 0

Se riesci per testarlo prova a fare una copia del progetto e ad alleggerirlo (togli un po' di mappe... lasciane giusto qualcuna che richieda l'update).

Per l'export, ci sarebbe da testare un po' tutto il sistema... io sarei in grado di farlo, se ci fosse una demo di quel progetto, senza doverla implementare in un progetto.

Link to comment
Share on other sites

  • 0
Per l'export, ci sarebbe da testare un po' tutto il sistema... io sarei in grado di farlo, se ci fosse una demo di quel progetto, senza doverla implementare in un progetto.

 

Questa parte non l'ho capita! :O

 

 

Per la prima parte invece, il fatto è che pure se riesco a farlo funzionare con magari un decimo delle mappe, non mi tornerebbe comunque utile... Visto che il gioco ha circa 250 mappe ed è solo il primo capitolo! :/

Infatti dal secondo capitolo in poi implementerò lo script del "disc change"... >_<

http://i30.tinypic.com/xehois.gif

} 2rA - web site {

E' disponibile il primo capitolo completo di 2rA!

} 2rA: Capitolo I {

Link to comment
Share on other sites

  • 0
Questa parte non l'ho capita! :O

Intendevo dire che bisognerebbe verificare un tutto il sistema, magari qualche cartella temp messa in qualche posizione strana.

 

Per la prima parte invece, il fatto è che pure se riesco a farlo funzionare con magari un decimo delle mappe, non mi tornerebbe comunque utile... Visto che il gioco ha circa 250 mappe ed è solo il primo capitolo! :/

Infatti dal secondo capitolo in poi implementerò lo script del "disc change"... >_<

Si lo so, era solo per vedere se con meno materiale c'era speranza che riuscisse a finirlo.

Edited by Darknight
Link to comment
Share on other sites

  • 0

Quasi risolto! Wooooooooooot!

 

Alla fine ho trovato questa soluzione:

Cripto solo la cartella Data e poi metto direttamente il file Game.rgssad da scaricare, ci mette pure poco a scaricarlo!

A questo punto si aggiorna direttamente tutto l'Archivio, e per ora mi va bene così (quando diventerà più grande, mi inventerò qualcos'altro).

 

Ora il punto è: per far funzionare l'archivio aggiornato (anche solo caricare i salvataggi) c'è bisogno di chiudere e riaprire il gioco. Potrei avvertire il giocatore che il gioco si chiude per gli aggiornamenti effettuati (e poi farlo chiudere io) e di riaprirlo subito. Però volevo sapere se c'è un modo per "resettare" il gioco senza farlo chiudere...

 

Per "resettare" intendo naturalmente che tolga dalla memoria tutti i files caricati, compreso il Game.rgssad e di ricaricarli, un po' come cliccare nuovamente sul Game.exe , insomma per renderlo automatico e non farlo fare al giocatore! Che voi sappiate, si può? :D

http://i30.tinypic.com/xehois.gif

} 2rA - web site {

E' disponibile il primo capitolo completo di 2rA!

} 2rA: Capitolo I {

Link to comment
Share on other sites

  • 0
Parlo da ignorante di programmazione e scripting, se emulassi il comando che si effettua premendo F12? Mi sembra che il gioco si riavvii senza chiuderlo. Adesso non so se sia possibile, ma magari puoi :rovatfl:

"Oh perché dobbiamo essere così, noi? – ci domandiamo talvolta allo specchio - con questa faccia, con questo corpo? – alziamo una mano, nell'incoscienza; e il gesto ci resta sospeso. Ci pare strano che l'abbiamo fatto noi. Ci vediamo vivere. […] In certi momenti di silenzio interiore, in cui l'anima nostra si spoglia di tutte le funzioni abituali, e gli occhi nostri diventano più acuti e più penetranti, noi vediamo noi stessi nella vita, e in se stessa la vita, quasi in una modalità arida, inquietante; ci sentiamo assaltare da una strana impressione, come se, in un baleno, ci si chiarisse una realtà diversa da quella che normalmente percepiamo, una realtà vivente oltre la vista umana, fuori delle forme dell'umana ragione." [L.P.]

 

http://img43.imageshack.us/img43/4231/vgmiud3f.png

 

 

http://rpg2s.net/gif/SCContest1Oct.gif http://www.rpg2s.net/img/fablecontest3rd.png http://rpg2s.net/gif/SCContest1Oct.gif

 

RPG by forum

 

 

 

 

 

 

 

 

 

 

http://img59.imageshack.us/img59/6/av2w.png

Nome: Erech (In elfico "lancia solitaria", da er (ereb) = "solitario" e ech = "lancia")

 

Età: 19

 

Razza: Umani

 

Descrizione: Erech è un ragazzo alto e slanciato, dalla corporatura tonica e scattante. Ha capelli lunghi e violacei come gli occhi che però sono spesso coperti in parte da un elegante cappello nero. Veste con uno stile classico, una camicetta bianca sotto una giacca nera e un fiocco al collo ornato con un'immancabile piuma azzurra. Gli piace leggere e scrivere e ama tradurre testi in lingue antiche.

 

Carattere: Il ragazzo ha un carattere chiuso e introverso, è di poche parole e preferisce i fatti alle parole. Non si relaziona spesso con i coetanei o se lo fa significa che si fida cecamente della persona che ha davanti; è diffidente e tende a non raccontare fatti del suo passato, belli o brutti che siano.

 

 

Link to comment
Share on other sites

  • 0

Per resettare il gioco puoi fare:

def riavvia  Thread.new{ system("Game") }  exitend

Crea un nuovo thread in cui avvia Game.exe (eseguibile di rpgmaker xp) ed esce dal thread corrente.

Se hai rinominato l'exe devi cambiare di conseguenza la stringa da passare a system.

Naturalmente prima di riavviarlo in faccia al giocatore conviene informarlo :rovatfl:

I Miei Script:
Salva Schermata (3 Aprile 2012)
Attacco Personalizzabile (2 Aprile 2012)
Keyboard Input (Porting) (17 Marzo 2012)
Continua...

Link to comment
Share on other sites

  • 0
Sono curioso di sapere come gestisci gli autoupdate, anche io stavo pensando a una cosuccia simile sul VX.

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

http://holyres.altervista.org/UserBoard/BannerOverdrive35.png
http://holyres.altervista.org/UserBoard/Cap3.png

http://www.indiexpo.net/signature/578.png

Miei script per RPG Maker VX Ace:


*NB Tutti i miei script sono protetti da licenza CC - BY http://i.creativecommons.org/l/by/3.0/88x31.png

Questa licenza permette a terzi di distribuire, modificare, ottimizzare ed utilizzare la tua opera come base, anche commercialmente, fino a che ti diano il credito per la creazione originale. Questa è la più accomodante delle licenze offerte. É raccomandata per la diffusione e l'uso massimo di materiali coperti da licenza.

 

 



I miei tutorial:


Come distribuire il gioco - e anche come creare un'installazione professionale!
RGSS in pillole - Guida completa e facile all'RGSS2 e RGSS3 per novizi ed esperti
Come mappare con VX (e VX Ace) - guida base all'uso degli strumenti del mapping
Loop delle musiche - come tagliarle in modo da far venire musiche continue senza interruzioni finali
Creare backup dei progetti - per evitare di uccidervi dopo un errore che ha fatto perdere tutto!

Link to comment
Share on other sites

  • 0

Guarda io l'ho basato sullo script "Module Net" di berka.

Ho messo nella cartella del gioco un log.txt che dice a quando risale l'ultimo update e sul sito un file con tutta la lista degli update, con vicino la data.

Faccio scaricare la lista, confronto le date e poi gli faccio scaricare i file dal sito dal più vecchio al più nuovo, infine gli faccio aggiornare la data sul log con la data dell'ultimo update scaricato.

:D

 

La teoria è tutta qui, poi va implementato e gestito nel progetto, ma questa parte va molto a gusto e può dipendere da come gestisci proprio il progetto! ^^

http://i30.tinypic.com/xehois.gif

} 2rA - web site {

E' disponibile il primo capitolo completo di 2rA!

} 2rA: Capitolo I {

Link to comment
Share on other sites

  • 0
Guarda io l'ho basato sullo script "Module Net" di berka.

Ho messo nella cartella del gioco un log.txt che dice a quando risale l'ultimo update e sul sito un file con tutta la lista degli update, con vicino la data.

Faccio scaricare la lista, confronto le date e poi gli faccio scaricare i file dal sito dal più vecchio al più nuovo, infine gli faccio aggiornare la data sul log con la data dell'ultimo update scaricato.

:D

 

La teoria è tutta qui, poi va implementato e gestito nel progetto, ma questa parte va molto a gusto e può dipendere da come gestisci proprio il progetto! ^^

La stessa identica idea che è venuta a me :)

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

http://holyres.altervista.org/UserBoard/BannerOverdrive35.png
http://holyres.altervista.org/UserBoard/Cap3.png

http://www.indiexpo.net/signature/578.png

Miei script per RPG Maker VX Ace:


*NB Tutti i miei script sono protetti da licenza CC - BY http://i.creativecommons.org/l/by/3.0/88x31.png

Questa licenza permette a terzi di distribuire, modificare, ottimizzare ed utilizzare la tua opera come base, anche commercialmente, fino a che ti diano il credito per la creazione originale. Questa è la più accomodante delle licenze offerte. É raccomandata per la diffusione e l'uso massimo di materiali coperti da licenza.

 

 



I miei tutorial:


Come distribuire il gioco - e anche come creare un'installazione professionale!
RGSS in pillole - Guida completa e facile all'RGSS2 e RGSS3 per novizi ed esperti
Come mappare con VX (e VX Ace) - guida base all'uso degli strumenti del mapping
Loop delle musiche - come tagliarle in modo da far venire musiche continue senza interruzioni finali
Creare backup dei progetti - per evitare di uccidervi dopo un errore che ha fatto perdere tutto!

Link to comment
Share on other sites

  • 0

Sono contento di essere stato utile :3

L'autoupdate implica che stai facendo un rpg online :?

Ma le risorse che scarichi e carichi sono solo quelle in più o tutte quante? Come riesci a creare una patch di solo le risorse che mancano in maniera automatica?

I Miei Script:
Salva Schermata (3 Aprile 2012)
Attacco Personalizzabile (2 Aprile 2012)
Keyboard Input (Porting) (17 Marzo 2012)
Continua...

Link to comment
Share on other sites

  • 0
Sono contento di essere stato utile :3

L'autoupdate implica che stai facendo un rpg online :?

Ma le risorse che scarichi e carichi sono solo quelle in più o tutte quante? Come riesci a creare una patch di solo le risorse che mancano in maniera automatica?

Non è difficile, basta mettere nel log che si scarica i percorsi destinazione di ogni file da sovrascrivere.

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

http://holyres.altervista.org/UserBoard/BannerOverdrive35.png
http://holyres.altervista.org/UserBoard/Cap3.png

http://www.indiexpo.net/signature/578.png

Miei script per RPG Maker VX Ace:


*NB Tutti i miei script sono protetti da licenza CC - BY http://i.creativecommons.org/l/by/3.0/88x31.png

Questa licenza permette a terzi di distribuire, modificare, ottimizzare ed utilizzare la tua opera come base, anche commercialmente, fino a che ti diano il credito per la creazione originale. Questa è la più accomodante delle licenze offerte. É raccomandata per la diffusione e l'uso massimo di materiali coperti da licenza.

 

 



I miei tutorial:


Come distribuire il gioco - e anche come creare un'installazione professionale!
RGSS in pillole - Guida completa e facile all'RGSS2 e RGSS3 per novizi ed esperti
Come mappare con VX (e VX Ace) - guida base all'uso degli strumenti del mapping
Loop delle musiche - come tagliarle in modo da far venire musiche continue senza interruzioni finali
Creare backup dei progetti - per evitare di uccidervi dopo un errore che ha fatto perdere tutto!

Link to comment
Share on other sites

  • 0

Esattamente! ^^

L'unica cosa che faccio sovrascrivere completamente sono le mappe, gli script e i database, perchè stanno nell'archivio! :P

 

Comunque non è un mmorpg, è un gioco offline nel quale semplicemente ho implementato una "modalità online" che fondamentalmente aggiunge due funzioni: gli autoupdates (ci saranno anche manuali dal sito) e il sistema achievements/trofei. ;)

http://i30.tinypic.com/xehois.gif

} 2rA - web site {

E' disponibile il primo capitolo completo di 2rA!

} 2rA: Capitolo I {

Link to comment
Share on other sites

  • 0

Aaaah quindi non c'è alcun tipo di confronto tra la nuova e vecchia versione!

Ma a questo punto si potrebbe anche ottimizzare la banda, se 5 update sovrascrivono Scripts.rxdata quello che conta è solo l'ultimo :3

Io farei così:

I file rxdata che pesano di più sono 3: Animations, Scripts e Tilesets, gli altri non pesano molto e possono essere aggiornati sempre e accomunati nella categoria Other

Ogni patch quindi è formata da massimo 4 file, una per categoria, Patch1_1 Patch1_2 Patch1_3 Patch1_4 corrispondono rispettivamente alle patch per Animations,Scripts,Tilesets, Other

 

Esempio file di log.txt online, la presenza di 1 dopo il nome della patch indica la presenza di _1 (Animation), quella dopo di _2 (Scripts) e così via..

Update1,1,1,0,1Update2,1,0,0,0Update3,0,1,0,1

 

Struttura richiesta

#Init@ani = nil@scr = nil@til = nil@other = Array.new

Parsing del log.txt

begin  file = File.new('log.txt','r')  while (temp = file.gets)	#Separo ogni valore e lo metto nell'array arr	arr = temp.split(/,/)	if arr[1] == 1	  @ani = arr[0]	end	if arr[2] == 1	  @scr = arr[0]	end	if arr[3] == 1	  @til = arr[0]	end	if arr[4] == 1	  @other.push arr[0]	end  end  file.closerescue => err  p errend

Scaricamento

if @ani != nil  download($host + '/patch/'+@ani + '_1.zip')endif @scr != nil  download($host + '/patch/'+@scr + '_2.zip')endif @til != nil  download($host + '/patch/'+@til + '_3.zip')end@other.each { |file| download($host + '/patch/'+file + '_4.zip') }

Se hai N patch, con questo sistema scarichi al massimo N+3 patch ma puoi anche scaricarne solo 1 se tutte modificano lo stesso file critico, es tutte modificano solo Scripts verrà scaricata solo l'ultimo Update.

In questo esempio verranno scaricati:

Update2_1.zipUpdate3_2.zipUpdate1_3.zipUpdate1_4.zipUpdate3_4.zip

Sono più file ma si risparmiano almeno 200 kb

 

(in questo esempio trascuro il versioning, il controllo se abbiamo bisogno di tutte le patch, può essere fatto in modo semplice o tramite un array di stringhe in cui controlliamo se l'update è stato già fatto oppure salvandosi solo la stringa dell'ultimo update eseguito e processare da lì in poi)

Edited by Keroro

I Miei Script:
Salva Schermata (3 Aprile 2012)
Attacco Personalizzabile (2 Aprile 2012)
Keyboard Input (Porting) (17 Marzo 2012)
Continua...

Link to comment
Share on other sites

  • 0

Oddio la struttura che gli ho dato io mi sembra più semplice sinceramente! XD

La tua sembra più "professional" ù_ù"

Però conta che tutti i file .rxdata stanno nello stesso archivio (criptato), che non è .zip ma è .rgssad, non penso di poter suddivedere quei dati in più .rgssad diversi visto che alla fine il file è unico e si chiama Game.rgssad!

 

Ad ogni modo, il file Game.rgssad si può dire che è quello di "sistema", in quanto contiene le mappe i codici i database et cetera et cetera, il controllo sul log del file di sistema è separato da quello delle risorse (audio, grafiche, e affini), e non lo gestisco con la data del download ma con la "versione", nel log c'è scritto a che versione risale quello del gioco.

Sul sito c'è sempre e solo un unico file Game.rgssad, ed è sempre quello più aggiornato, faccio fare il controllo per vedere se serve aggiornare o meno in base al numero di versione che sta sul client e al numero di versione che sta sul sito, in caso gli faccio scaricare tutto il file, altrimenti nisba!

Solo in seguito parte il controllo delle date, che riguarda esclusivamente solo i file di risorse, che invece vengono scaricati singolarmente. Solo che finora non mi è mai successo di dover fare due update dello stesso file, o se comunque mi dovesse accadere, mi basterebbe rimuovere dal log del sito l'update del 'vecchio' file, giusto per evitare di fargli scaricare due volte lo stesso file. XD

 

PS: non so se mi sono spiegato bene, ma c'è un log sul client e un log sul server, e confrontandoli il gioco capisce cosa deve scaricare e cosa no! XD

Edited by nihil-omen

http://i30.tinypic.com/xehois.gif

} 2rA - web site {

E' disponibile il primo capitolo completo di 2rA!

} 2rA: Capitolo I {

Link to comment
Share on other sites

  • 0

Anziché affidarti a files di log che possono essere modificati da chiunque fai una cosa più semplice: calcoli l'hash MD5 del game.rgssad e lo confronti con gli hash che hai salvato nel server...

 

Per esempio hai 5 versioni del file:

File 1

File 2

File 3

File 4

File 5

 

Ti memorizzi gli hash dei 5 files (che rimangono uguali anche se cambi nome al file, cambiano radicalmente appena cambi anche solo un bit del file)

In uno script (quello che usi per l'autoupdate) metti:

$hash = calcolo dell'MD5 del game.rgssad$ultimohash = ultimo MD5 inserito nel database #puoi verificare col php con md5(nomefile)if $hash != $ultimohashScarica game.rgssad aggiornato e sostituiscilo al vecchioend

 

Non so in RGSS quale sia la funzione per il calcolo dell'MD5 di un file

Effettivamente in Ruby "tradizionale" però servono dei moduli aggiuntivi, quindi dovresti lavorare con le API probabilmente

http://i1141.photobucket.com/albums/n597/RazakGik/New-age-retro-hippie-psy_zpsde262717.gif

 

 

 

Sei un figo! *_____________*

Auguri Hash! Sempre nell'ombra a spiare e uno dei pochi che tentanto di tenere la Chat viva.
Non tutti sanno che è uno dei migliori programmatori/scripter di Rpg2s. ;D

The Tao gave birth to machine language. Machine language gave
birth to the assembler.
The assembler gave birth to the compiler. Now there are ten
thousand languages.
Each language has its purpose, however humble. Each language
expresses the Yin and Yang of software. Each language has its
place within the Tao.
But do not program in COBOL if you can avoid it.

Prince Wang's programmer was coding software. His fingers
danced upon the keyboard. The program compiled without an
error message, and the program ran like a gentle wind.
"Excellent!" the Prince exclaimed, "Your technique is faultless!"
"Technique?" said the programmer turning from his terminal,
"What I follow is Tao -- beyond all techniques! When I first
began to program I would see before me the whole problem in
one mass. After three years I no longer saw this mass. Instead, I
used subroutines. But now I see nothing. My whole being exists
in a formless void. My senses are idle. My spirit, free to work
without plan, follows its own instinct. In short, my program
writes itself. True, sometimes there are difficult problems. I see
them coming, I slow down, I watch silently. Then I change a
single line of code and the difficulties vanish like puffs of idle
smoke. I then compile the program. I sit still and let the joy of
the work fill my being. I close my eyes for a moment and then
log off."
Prince Wang said, "Would that all of my programmers were as
wise!

 



Mi spiace Apo
http://i1141.photobucket.com/albums/n597/RazakGik/Apo.png

 

http://i1141.photobucket.com/albums/n597/RazakGik/No-plastic-forks-2.gif
(Nono approves)

L'inizio di tutto:

 

[22:46] <TioBrando> Penso che le forchette di plastica siano una grande invenzione per il nuovo ordine mondiale...Il fatto che si rompano spesso le rende i catalizzatori perfetti di rabbia e frustrazione, le cose più importanti per rendere manipolabile la mente umana...
[22:46] <TioBrando> Le logge massoniche le hanno inventate chiaramente per questo scopo

 


Il mio credo:

 

E di più vi dico francamente, châio non mi sottometto alla mia infelicità , né piego il capo al destino, o vengo seco a patti, come fanno gli altri uomini; e ardisco desiderare la morte, e desiderarla sopra ogni cosa, con tanto ardore e con tanta sincerità , con quanta credo fermamente che non sia desiderata al mondo se non da pochissimi. Né vi parlerei così se non fossi ben certo che, giunta lâora, il fatto non ismentirà le mie parole; perché quantunque io non vegga ancora alcun esito alla mia vita, pure ho un sentimento dentro, che quasi mi fa sicuro che lâora châio dico non sia lontana. Troppo sono maturo alla morte, troppo mi pare assurdo e incredibile di dovere, così morto come sono spiritualmente, così conchiusa in me da ogni parte la favola della vita, durare ancora quaranta o cinquantâanni, quanti mi sono minacciati dalla natura. Al solo pensiero di questa cosa io rabbrividisco. Ma come ci avviene di tutti quei mali che vincono, per così dire, la forza immaginativa, così questo mi pare un sogno e unâillusione, impossibile a verificarsi. Anzi se qualcuno mi parla di un avvenire lontano come di cosa che mi appartenga, non posso tenermi dal sorridere fra me stesso: tanta confidenza ho che la via che mi resta a compiere non sia lunga. E questo, posso dire, è il solo pensiero che mi sostiene. Libri e studi, che spesso mi maraviglio dâaver tanto amato, disegni di cose grandi, e speranze di gloria e dâimmortalità , sono cose delle quali è anche passato il tempo di ridere. Dei disegni e delle speranze di questo secolo non rido: desidero loro con tutta lâanima ogni miglior successo possibile, e lodo, ammiro ed onoro altamente e sincerissimamente il buon volere: ma non invidio però i posteri, né quelli che hanno ancora a vivere lungamente. In altri tempi ho invidiato gli sciocchi e gli stolti, e quelli che hanno un gran concetto di se medesimi; e volentieri mi sarei cambiato con qualcuno di loro. Oggi non invidio più né stolti né savi, né grandi né piccoli, né deboli né potenti. Invidio i morti, e solamente con loro mi cambierei. Ogni immaginazione piacevole, ogni pensiero dellâavvenire, châio fo, come accade, nella mia solitudine, e con cui vo passando il tempo, consiste nella morte, e di là non sa uscire. Né in questo desiderio la ricordanza dei sogni della prima età , e il pensiero dâesser vissuto invano, mi turbano più, come solevano. Se ottengo la morte morrò così tranquillo e così contento, come se mai nullâaltro avessi sperato né desiderato al mondo. Questo è il solo benefizio che può riconciliarmi al destino. Se mi fosse proposta da un lato la fortuna e la fama di Cesare o di Alessandro netta da ogni macchia, dallâaltro di morir oggi, e che dovessi scegliere, io direi, morir oggi, e non vorrei tempo a risolvermi.

 



Citazioni memorabili:


Maratona di Metal Gear: arrivato allo scontro con il Metal Gear Rex di MGS mi squilla il telefono e metto in pausa:

[18:41] <hashakgik> telefono ç.ç
[18:42] <@SeraphAndrew> rispondigli che stai fermando un attacco nucleare
[18:42] <@SeraphAndrew> e che non puoi stare al telefono
[18:42] <sarde> lol
[18:42] <hashakgik> lol
[18:42] <hashakgik> Detto
[18:42] <sarde> che detto da hasha nn è cosi strano
[18:43] <@SeraphAndrew> xDDD

[22:37] <HashakGik> Uno dei misteri della vita...
[22:37] <HashakGik> Come "Come nascono i bambini?"
[22:38] <SpeedHunter> scusa
[22:38] <SpeedHunter> ma se i bambini
[22:38] <SpeedHunter> nascono dalle pance delle madri
[22:38] <SpeedHunter> la rpima donna
[22:38] <SpeedHunter> come cazzo è nata
[22:38] <SpeedHunter> ?
[22:38] <SpeedHunter> e chi cazzo l'ha penetrata?
[22:38] <SpeedHunter> la don inesistente
[22:38] <SpeedHunter> che ancora nonera nata
[22:39] <SpeedHunter> perchè non esisteva
[22:39] <SpeedHunter> oddio
[22:40] <HashakGik> Ti perdi in inutili dettagli, dovresti accontentarti del fatto che i bambini nascono ricorsivamente e che la vita crea nuove fork dello stesso processo
[22:41] <SpeedHunter> ma io mi riprdouco per scissione
[22:41] <HashakGik> Dovresti chiederti piuttosto perché non siamo ancora andati in stack overflow
[22:41] <SpeedHunter> intanto che vado
[22:41] <SpeedHunter> come le meduse
[22:42] <HashakGik> Quindi non è un tuo problema la fine dell'umanità causata da un errore di memoria...
[22:42] <SpeedHunter> nono
[22:42] <SpeedHunter> asd
[22:42] <HashakGik> Buon per te

Gli inconvenienti di essere il boss finale, ovvero: "Perché due membri del party spariscono inspiegabilmente e ciò fa arrabbiare il boss finale?"

[14:16] <HashakGik> E se fossero finiti proprio dentro al covo del boss finale?
[14:16] <HashakGik> Mandati a loro insaputa a combattere
[14:16] <HashakGik> O come diversivo per un attacco frontale
[14:16] <Macha> ahaha, e lo beccano mentre si fa la doccia? XD
[14:16] <HashakGik> lol
[14:16] <Macha> questo giustificherebbe l'incazzatura, sisi
[14:17] <HashakGik> Purtroppo è un gioco serio e il boss finale se ne è accorto ed è già a terrorizzare i saggi di persona
[14:17] <Macha> oppure per sbaglio gli ammazzano l'animaletto domestico preferito per mangiare
[14:17] <Macha> o anche sì, si tratta di un terreno di sua proprietÃ
[14:17] <Macha> o il protagonista rischia di scoprire qualche segreto sul posto che poi andrebbe a vantaggio dei residenti del villaggio
[14:18] <Macha> un segreto non necessariamente legato ad armi o artefatti leggendari eh
[14:18] <HashakGik> Il codice del suo bancomat
[14:19] <HashakGik> Per mobilitare eserciti i boss finali devono essere molto ricchi
[14:19] <Macha> AHAHAHAH
[14:19] <Macha> bellissimo
[14:20] <Macha> nascondere il codice del bancomat in una noce
[14:20] <HashakGik> lol

 




In Psyche we trust!
(Galleria pissichedelica)

http://img691.imageshack.us/img691/66/fishandlove.gif
http://i1141.photobucket.com/albums/n597/RazakGik/Psy-Mayo_zps5bda44c8.gif
http://i1141.photobucket.com/albums/n597/RazakGik/Psychedelic-Mantis.gif
http://img263.imageshack.us/img263/385/nonopsichedelica.gif
http://img19.imageshack.us/img19/2960/cassatapsichedelica.gif
http://img815.imageshack.us/img815/2467/pollooooooooooooopsiche.gif
http://img253.imageshack.us/img253/1517/blueshoesofpsichedelia.gif
http://i1141.photobucket.com/albums/n597/RazakGik/Psyhieroglyphfish.gif
http://i1141.photobucket.com/albums/n597/RazakGik/Santaspsy.gif


Chicken of Bodom

http://img440.imageshack.us/img440/9769/chickenofbodom.png


Gifts from R2s:


Testament:
http://img263.imageshack.us/img263/385/nonopsichedelica.gif
Sadico:
http://img196.imageshack.us/img196/5707/pescepsichedelico.png


 

 

 

Link to comment
Share on other sites

  • 0

Eh quest'estate ci avevo pensato, ma non ero riuscito a trovare un modo per fare l'hash dell md5 in ruby! :/

 

Ad ogni modo, un piccolo controllo sul log dell'update c'è, ma è fondamentalmente marginale, perchè comunque, modificandoselo, si rinuncia agli update, che è inutile, se uno non vuole aggiornare gli basta giocare in modalità offline! XD

Quindi fondamentalmente, possono non modificarlo ed ottenere lo stesso identico risultato! XD

 

Il codice hash mi servirebbe per un'altra cosa che voglio implementare, ma come dicevo, non sono riuscito a trovare nulla...

Ho comunque un'idea alternativa su come realizzarla quest'altra funzione, ma evito di parlarne qui, sono parti top secret! ù_ù"""

http://i30.tinypic.com/xehois.gif

} 2rA - web site {

E' disponibile il primo capitolo completo di 2rA!

} 2rA: Capitolo I {

Link to comment
Share on other sites

  • 0

Non sapevo che criptassi le risorse all'interno di un unico file, per questo ho proposto quella versione :)

Visto che ne avevate bisogno ho creato una dll che calcola l'hash md5 di un file e può essere usata sia da rpg maker xp che da rpg maker vx.

Potete scaricarla da http://www.gamemaker.it/ruby/download_lib.php

 

Script di esempio:

  kero_ver = Win32API.new('libKeroro.dll','version',['P'],'V')  kero_md5 = Win32API.new('libKeroro.dll','file_md5',['P','P'],'V')  version = ' '*8  md5 = ' '*32  kero_ver.call(version)  p version  kero_md5.call('Game.exe', md5)  p md5

 

Sono funzioni abbastanza semplici, non ho voluto definire classi o roba pesante, gestitela come volete!

Se vi garba fatemelo sapere :D

I Miei Script:
Salva Schermata (3 Aprile 2012)
Attacco Personalizzabile (2 Aprile 2012)
Keyboard Input (Porting) (17 Marzo 2012)
Continua...

Link to comment
Share on other sites

  • 0
Oddio fighissimo! Ma sei un genio! *__*

 

Però perdona la mia nabbezza, non sono pratico con le .dll XD

Cosa sono tutte quelle p e v nelle prima due righe? :O

E come funziona la funzione della versione? ^^

http://www.rpg2s.net/forum/index.php?showtopic=1662

http://i1141.photobucket.com/albums/n597/RazakGik/New-age-retro-hippie-psy_zpsde262717.gif

 

 

 

Sei un figo! *_____________*

Auguri Hash! Sempre nell'ombra a spiare e uno dei pochi che tentanto di tenere la Chat viva.
Non tutti sanno che è uno dei migliori programmatori/scripter di Rpg2s. ;D

The Tao gave birth to machine language. Machine language gave
birth to the assembler.
The assembler gave birth to the compiler. Now there are ten
thousand languages.
Each language has its purpose, however humble. Each language
expresses the Yin and Yang of software. Each language has its
place within the Tao.
But do not program in COBOL if you can avoid it.

Prince Wang's programmer was coding software. His fingers
danced upon the keyboard. The program compiled without an
error message, and the program ran like a gentle wind.
"Excellent!" the Prince exclaimed, "Your technique is faultless!"
"Technique?" said the programmer turning from his terminal,
"What I follow is Tao -- beyond all techniques! When I first
began to program I would see before me the whole problem in
one mass. After three years I no longer saw this mass. Instead, I
used subroutines. But now I see nothing. My whole being exists
in a formless void. My senses are idle. My spirit, free to work
without plan, follows its own instinct. In short, my program
writes itself. True, sometimes there are difficult problems. I see
them coming, I slow down, I watch silently. Then I change a
single line of code and the difficulties vanish like puffs of idle
smoke. I then compile the program. I sit still and let the joy of
the work fill my being. I close my eyes for a moment and then
log off."
Prince Wang said, "Would that all of my programmers were as
wise!

 



Mi spiace Apo
http://i1141.photobucket.com/albums/n597/RazakGik/Apo.png

 

http://i1141.photobucket.com/albums/n597/RazakGik/No-plastic-forks-2.gif
(Nono approves)

L'inizio di tutto:

 

[22:46] <TioBrando> Penso che le forchette di plastica siano una grande invenzione per il nuovo ordine mondiale...Il fatto che si rompano spesso le rende i catalizzatori perfetti di rabbia e frustrazione, le cose più importanti per rendere manipolabile la mente umana...
[22:46] <TioBrando> Le logge massoniche le hanno inventate chiaramente per questo scopo

 


Il mio credo:

 

E di più vi dico francamente, châio non mi sottometto alla mia infelicità , né piego il capo al destino, o vengo seco a patti, come fanno gli altri uomini; e ardisco desiderare la morte, e desiderarla sopra ogni cosa, con tanto ardore e con tanta sincerità , con quanta credo fermamente che non sia desiderata al mondo se non da pochissimi. Né vi parlerei così se non fossi ben certo che, giunta lâora, il fatto non ismentirà le mie parole; perché quantunque io non vegga ancora alcun esito alla mia vita, pure ho un sentimento dentro, che quasi mi fa sicuro che lâora châio dico non sia lontana. Troppo sono maturo alla morte, troppo mi pare assurdo e incredibile di dovere, così morto come sono spiritualmente, così conchiusa in me da ogni parte la favola della vita, durare ancora quaranta o cinquantâanni, quanti mi sono minacciati dalla natura. Al solo pensiero di questa cosa io rabbrividisco. Ma come ci avviene di tutti quei mali che vincono, per così dire, la forza immaginativa, così questo mi pare un sogno e unâillusione, impossibile a verificarsi. Anzi se qualcuno mi parla di un avvenire lontano come di cosa che mi appartenga, non posso tenermi dal sorridere fra me stesso: tanta confidenza ho che la via che mi resta a compiere non sia lunga. E questo, posso dire, è il solo pensiero che mi sostiene. Libri e studi, che spesso mi maraviglio dâaver tanto amato, disegni di cose grandi, e speranze di gloria e dâimmortalità , sono cose delle quali è anche passato il tempo di ridere. Dei disegni e delle speranze di questo secolo non rido: desidero loro con tutta lâanima ogni miglior successo possibile, e lodo, ammiro ed onoro altamente e sincerissimamente il buon volere: ma non invidio però i posteri, né quelli che hanno ancora a vivere lungamente. In altri tempi ho invidiato gli sciocchi e gli stolti, e quelli che hanno un gran concetto di se medesimi; e volentieri mi sarei cambiato con qualcuno di loro. Oggi non invidio più né stolti né savi, né grandi né piccoli, né deboli né potenti. Invidio i morti, e solamente con loro mi cambierei. Ogni immaginazione piacevole, ogni pensiero dellâavvenire, châio fo, come accade, nella mia solitudine, e con cui vo passando il tempo, consiste nella morte, e di là non sa uscire. Né in questo desiderio la ricordanza dei sogni della prima età , e il pensiero dâesser vissuto invano, mi turbano più, come solevano. Se ottengo la morte morrò così tranquillo e così contento, come se mai nullâaltro avessi sperato né desiderato al mondo. Questo è il solo benefizio che può riconciliarmi al destino. Se mi fosse proposta da un lato la fortuna e la fama di Cesare o di Alessandro netta da ogni macchia, dallâaltro di morir oggi, e che dovessi scegliere, io direi, morir oggi, e non vorrei tempo a risolvermi.

 



Citazioni memorabili:


Maratona di Metal Gear: arrivato allo scontro con il Metal Gear Rex di MGS mi squilla il telefono e metto in pausa:

[18:41] <hashakgik> telefono ç.ç
[18:42] <@SeraphAndrew> rispondigli che stai fermando un attacco nucleare
[18:42] <@SeraphAndrew> e che non puoi stare al telefono
[18:42] <sarde> lol
[18:42] <hashakgik> lol
[18:42] <hashakgik> Detto
[18:42] <sarde> che detto da hasha nn è cosi strano
[18:43] <@SeraphAndrew> xDDD

[22:37] <HashakGik> Uno dei misteri della vita...
[22:37] <HashakGik> Come "Come nascono i bambini?"
[22:38] <SpeedHunter> scusa
[22:38] <SpeedHunter> ma se i bambini
[22:38] <SpeedHunter> nascono dalle pance delle madri
[22:38] <SpeedHunter> la rpima donna
[22:38] <SpeedHunter> come cazzo è nata
[22:38] <SpeedHunter> ?
[22:38] <SpeedHunter> e chi cazzo l'ha penetrata?
[22:38] <SpeedHunter> la don inesistente
[22:38] <SpeedHunter> che ancora nonera nata
[22:39] <SpeedHunter> perchè non esisteva
[22:39] <SpeedHunter> oddio
[22:40] <HashakGik> Ti perdi in inutili dettagli, dovresti accontentarti del fatto che i bambini nascono ricorsivamente e che la vita crea nuove fork dello stesso processo
[22:41] <SpeedHunter> ma io mi riprdouco per scissione
[22:41] <HashakGik> Dovresti chiederti piuttosto perché non siamo ancora andati in stack overflow
[22:41] <SpeedHunter> intanto che vado
[22:41] <SpeedHunter> come le meduse
[22:42] <HashakGik> Quindi non è un tuo problema la fine dell'umanità causata da un errore di memoria...
[22:42] <SpeedHunter> nono
[22:42] <SpeedHunter> asd
[22:42] <HashakGik> Buon per te

Gli inconvenienti di essere il boss finale, ovvero: "Perché due membri del party spariscono inspiegabilmente e ciò fa arrabbiare il boss finale?"

[14:16] <HashakGik> E se fossero finiti proprio dentro al covo del boss finale?
[14:16] <HashakGik> Mandati a loro insaputa a combattere
[14:16] <HashakGik> O come diversivo per un attacco frontale
[14:16] <Macha> ahaha, e lo beccano mentre si fa la doccia? XD
[14:16] <HashakGik> lol
[14:16] <Macha> questo giustificherebbe l'incazzatura, sisi
[14:17] <HashakGik> Purtroppo è un gioco serio e il boss finale se ne è accorto ed è già a terrorizzare i saggi di persona
[14:17] <Macha> oppure per sbaglio gli ammazzano l'animaletto domestico preferito per mangiare
[14:17] <Macha> o anche sì, si tratta di un terreno di sua proprietÃ
[14:17] <Macha> o il protagonista rischia di scoprire qualche segreto sul posto che poi andrebbe a vantaggio dei residenti del villaggio
[14:18] <Macha> un segreto non necessariamente legato ad armi o artefatti leggendari eh
[14:18] <HashakGik> Il codice del suo bancomat
[14:19] <HashakGik> Per mobilitare eserciti i boss finali devono essere molto ricchi
[14:19] <Macha> AHAHAHAH
[14:19] <Macha> bellissimo
[14:20] <Macha> nascondere il codice del bancomat in una noce
[14:20] <HashakGik> lol

 




In Psyche we trust!
(Galleria pissichedelica)

http://img691.imageshack.us/img691/66/fishandlove.gif
http://i1141.photobucket.com/albums/n597/RazakGik/Psy-Mayo_zps5bda44c8.gif
http://i1141.photobucket.com/albums/n597/RazakGik/Psychedelic-Mantis.gif
http://img263.imageshack.us/img263/385/nonopsichedelica.gif
http://img19.imageshack.us/img19/2960/cassatapsichedelica.gif
http://img815.imageshack.us/img815/2467/pollooooooooooooopsiche.gif
http://img253.imageshack.us/img253/1517/blueshoesofpsichedelia.gif
http://i1141.photobucket.com/albums/n597/RazakGik/Psyhieroglyphfish.gif
http://i1141.photobucket.com/albums/n597/RazakGik/Santaspsy.gif


Chicken of Bodom

http://img440.imageshack.us/img440/9769/chickenofbodom.png


Gifts from R2s:


Testament:
http://img263.imageshack.us/img263/385/nonopsichedelica.gif
Sadico:
http://img196.imageshack.us/img196/5707/pescepsichedelico.png


 

 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...