25/02/2009 23:06 |
|
| | | OFFLINE | Post: 70 | Registrato il: 29/01/2009 | Città: CUNEO | Età: 37 | Sesso: Maschile | Miles | |
|
Siccome molti lo chiedono, spero che non dispiaccia se riporto in itaGliano quello scritto sul forum inglese (o americano, comunque anglofono)^^
1- Cosa mi serve?
E' necessario che installi Python3.01, che trovi qui -> www.python.org/download/releases/3.0.1/ (se utilizzate un processore a 32bit scaricate il file x86, se a 64 bit AMD64)
Non sono necessari particolari accrgimenti, installalo come qualsiasi altro programma.
2- Creare i file di backup
Pen non dover riscaricare la demo se commettiamo dei pasticci (e per altre ragioni) è meglio salvare da parte questi file, ovvero COPIARE l'intera cartella \data in un altro luogo (dove meglio preferite, non è importante basta che ve ne ricordiate dove l'avete messa)
3- Si ma dove sono?
Sull'icona sul desktop di empire cliccate con il tasto delstro, scegliete proprietà in fondo al menù, qui cliccate sul tasto "trova destinazione". Vi ritroverete nella cartella principale di stream, ora aprite la cartella SteamApps e poi common, qui c'è la directory "empire total war demo" dove troverete la cartella \data.
4- Ok, ho preso la cartella data, l'ho copiata per intero da un'altra parte, ora che faccio?
Ora andiamo nella cartella \data, non quella di backup che avete copiato, e andiamo a creare un file chiamato "emp_unpacker.py" (basta fare tasto destro-> crea file di testo e rinominarlo come vi ho postato, selezionate si nel messaggio che vi compare) e sullo stesso file selezionamo dal menù del tasto desto "edit whith IDLE":
seleziona tutto il testo che trovi qui sotto, lo copi nel file appena creato, lo salvi e chiudi il programma.
import struct, os, sys, re
# For easy file reading and writing interactions
def readLong(fhandle):
return struct.unpack('l', fhandle.read(4))[0]
def readShort(fhandle):
return struct.unpack('h', fhandle.read(2))[0]
def readByte(fhandle):
return struct.unpack('B', fhandle.read(1))[0]
def readBool(fhandle):
val = fhandle.read(1)
if val == "00":
return False
else:
return True
def writeLong(fhandle, value):
fhandle.write(struct.pack('l',value))
def writeShort(fhandle, value):
fhandle.write(struct.pack('h',value))
def writeByte(fhandle, value):
fhandle.write(struct.pack('B',value))
def writeBool(fhandle, value):
if value:
fhandle.write('\x01')
else:
fhandle.write('\x00')
def removeDir(path):
# remove all files in a folder
if not (os.path.isdir(path)):
return True
files = os.listdir(path)
for x in files:
fullpath=os.path.join(path, x)
if os.path.isfile(fullpath):
os.remove(fullpath)
elif os.path.isdir(fullpath):
removeDir(fullpath)
os.rmdir(path)
def parseArgs(args):
pack = packFile('demo1.pack','unpacked')
# create argument tree
argtree = []
for arg in args[1:]:
if arg.startswith('-'):
argtree.append([arg,[]])
else:
argtree[-1][1].append(arg)
# wander the tree, top level always has hyphenated arguments
for arg in argtree:
# case 1: list
if arg[0] == '-l':
if len(arg[1]) > 0:
for file in arg[1]:
pack.printEyeCandy(str(file))
else:
pack.printEyeCandy('./list.txt')
# case 2: unpack
elif arg[0] == '-u':
for file in arg[1]:
if file == 'all':
for i in range(len(pack.files)):
pack.exportFile(i)
else:
pack.exportFile(file)
# case 3: unpack (regexp)
elif arg[0] == '-ur':
for file in arg[1]:
pack.exportFile(file, True)
# case 4: change pack
elif arg[0] == '-p':
for file in arg[1]:
print()
print('Changing pack to '+file)
print()
pack.newPack(file,pack.outputdir)
# case 5: change output directory
elif arg[0] == '-o':
for file in arg[1]:
print()
print('Changing output directory to '+file)
print()
pack.changeOutputDir(file)
class packFile:
def __init__(self, path='', outputdir=None):
self.handle = None
if outputdir:
removeDir(outputdir)
self.newPack(path,outputdir)
def newPack(self,path,outputdir=None):
# safely open new pack
if self.handle:
self.handle.close()
self.handle = None
self.files = []
self.numFiles = 0
self.arr = 0
self.outputdir = outputdir
self.defLength = 0
self.path = path
self.readPackDefinition()
def changeOutputDir(self,path):
self.outputdir = path
if self.outputdir != None:
removeDir(self.outputdir)
def packOpen(self):
if not self.handle:
self.handle = open(self.path,"rb")
return self.handle
def packClose(self):
self.handle.close()
def readPackDefinition(self):
pack = self.packOpen()
# skip empty bytes and stuff at the start
pack.seek(16)
self.defLength += 16
# read number of files
self.numFiles = readLong(pack)
self.defLength += 4
# read ??
self.arr = readLong(pack)
self.defLength += 4
# store the offset of a certain file
offset = 0
# read file metadata
for i in range(self.numFiles):
# read length of file
length = readLong(pack)
self.defLength += 4
# read file name
char = ''
filename = ''
while char != b'\x00':
char = pack.read(1)
if (char != b'\x00'):
filename += char.decode()
self.defLength += 1
self.files.append((filename,length,offset))
offset += length
def exportFile(self, arg, regexp = False):
try:
arg = int(arg)
# option a: arg is an index
list = [self.files[arg]]
except:
# option b: arg is a string
if regexp:
list = filter(lambda x: re.search(str(arg),x[0]),self.files)
else:
list = filter(lambda x: arg in x[0],self.files)
for (path,length,offset) in list:
print('Exporting '+path+', length: '+str(length)+', at offset: '+str(offset))
# create output directory
dir = os.path.split(os.path.join(self.outputdir,path))[0]
if not os.path.isdir(dir):
os.makedirs(dir)
output = open(os.path.join(self.outputdir,path),'wb')
# open pack and go to offset
pack = self.packOpen()
pack.seek(self.defLength+offset)
# copy content
i = 0
# read MB-sized chunks as long as possible
j = length//(2**20)
while i < j:
output.write(pack.read(2**20))
i+=1
i = 0
j = (length%(2**20))//(2**10)
# read KB-sized chunks
while i < j:
output.write(pack.read(2**10))
i+=1
i = 0
j = length%(2**10)
# read byte-sized chunks
while i < j:
output.write(pack.read(1))
i+=1
output.close()
return True
def printEyeCandy(self, outfile):
output = open(outfile,'w')
for (path,length,offset) in self.files:
output.write(str(path)+'\r\n')
output.close()
# main
parseArgs(sys.argv)
Ora premete Strat->esegui e digitate cmd e date l'invio, qui utilizzate questo comando "cd" + l'intero percorso della catrella data (il mio è "C:\Programmi\Steam\SteamApps\common\empire total war demo\data"), ovvero scrivete (esempio) "cd C:\Programmi\Steam\SteamApps\common\empire total war demo\data".
Siete arrivati vivi fin qui (si spera), ora digitate ESATTAMENTE questo comando "emp_unpacker.py -u all" rispettando anche gli spazi.
Ora aspettate che l'unpacker faccia il suo lavoro.
5- E ho finito!
No, ora tornate nella cartella data e troverete un'altra directory chiamata \unpacked, con all'interno altri file e altre cartelle, bene copiate tutte queste cartelle e file dentro la cartella \data selezionando si ai messaggi che compaiono.
6- Evvai, ora ho finito!
No, devi ancora fare un'ultimo passo importantissimo: devi rinominare il file "demo1.pack" come vuoi (esempio demo1pack_backup"), l'importante è che NON abbia un'estensione, ovvero non sia un ".qualcosa".
Ecco quà, spero di esser stato chiaro ;P
PS. come faccio a ridurre le dimensioni della finestra testo? Insomma fare una cosa simile a quello che c'è sul fourm di TWCenter? [Modificato da Arma_87 26/02/2009 10:54] |
|
26/02/2009 17:06 |
|
| | | OFFLINE | | Post: 154 | Registrato il: 14/12/2008 | Città: CATANIA | Età: 30 | Sesso: Maschile | Immunes | |
|
ottima guida [Modificato da Milite95 26/02/2009 17:25] |
26/02/2009 23:59 |
|
| | | OFFLINE | Post: 5.573 | Registrato il: 29/10/2007 | Sesso: Maschile | Praefectus Castrorum | Il padrino | |
|
ottima guida ;D messa in evidenza ;D ____________________________________________________
|
27/02/2009 14:19 |
|
| | | OFFLINE | | Post: 12.569 | Registrato il: 17/10/2005 | Sesso: Maschile | - Amministratore - | Praefectus Legionis | Deus ex machina | |
|
Fantastico, mi era sfuggita questa guida! |
27/02/2009 17:22 |
|
| | | OFFLINE | Post: 1.763 | Registrato il: 14/04/2007 | Città: ACCIANO | Età: 32 | Sesso: Maschile | Tribunus | |
|
mi da un errore....dice errore alla linea 7 def readlong<fhandle> unaxpected indent.....nn riesco a scompattarlo uff.....io scrivo cd e tutto il percorso, poi invio e poi scrivo il comando ma niente....puù essere che uso la versione a 32 bit e magari io ho il processore a 64 bit??? (nn so dove vederlo, da hardwere nn si vede O_O ) |
27/02/2009 17:45 |
|
| | | OFFLINE | Post: 70 | Registrato il: 29/01/2009 | Città: CUNEO | Età: 37 | Sesso: Maschile | Miles | |
|
=DO=, 27/02/2009 17.22:
mi da un errore....dice errore alla linea 7 def readlong<fhandle> unaxpected indent.....nn riesco a scompattarlo uff.....io scrivo cd e tutto il percorso, poi invio e poi scrivo il comando ma niente....puù essere che uso la versione a 32 bit e magari io ho il processore a 64 bit??? (nn so dove vederlo, da hardwere nn si vede O_O )
Può essere, scaricati la versione 64bit, lo reinstalli e provi. Il codice che ho postato è corretto, l'ho rincontrollato, per cui ti consiglio di reinstallare python 64bit |
27/02/2009 21:36 |
|
| | | OFFLINE | Post: 1.763 | Registrato il: 14/04/2007 | Città: ACCIANO | Età: 32 | Sesso: Maschile | Tribunus | |
|
non è quello, il mio è 32 bit infatti nn me lo fa installare..... |
27/02/2009 21:45 |
|
| | | OFFLINE | Post: 1.763 | Registrato il: 14/04/2007 | Città: ACCIANO | Età: 32 | Sesso: Maschile | Tribunus | |
|
mi dice che l'errore è qui
def readLong(fhandle): |
27/02/2009 23:41 |
|
| | | OFFLINE | Post: 5.573 | Registrato il: 29/10/2007 | Sesso: Maschile | Praefectus Castrorum | Il padrino | |
|
lol DO devi scaricarti la versione di pyton per i processori 64 bit
e non è detto manco che funzioni poichè il codice potrebbe essere diverso [Modificato da siculo-calabrese 27/02/2009 23:42] ____________________________________________________
|
28/02/2009 11:18 |
|
| | | OFFLINE | Post: 70 | Registrato il: 29/01/2009 | Città: CUNEO | Età: 37 | Sesso: Maschile | Miles | |
|
=DO=, 27/02/2009 21.45:
mi dice che l'errore è qui
def readLong(fhandle):
Prova ad andare qui www.twcenter.net/forums/showthread.php?t=227839
In fondo al primo post c'è il codice che devi inserire, ho notato che è cambiato leggermente (hanno semplicemente tolto alcune righe vuote, non dovrebbe cambiar nulla ma prova).
PS gentilmente i mod potrebbero ricopiare/incollare il codice che c'è nel forum TWCenter e sostituirlo con quello che ho postato io? E' per sicurezza. Grazie ^^ |
01/03/2009 19:56 |
|
| | | OFFLINE | Post: 2.289 | Registrato il: 04/08/2007 | Sesso: Maschile | Tribunus Angusticlavius | |
|
Ho un problema: io non capisco perchè dopo aver cleato il file testo nuovo non mi da quando clicco con il destroEdit Whith Idle
E poi a me dice che il comando non è riconosciuto come interno o esterno...
Perchè????Dove è che sbaglio?
Io ho Vista 64 bit ed ho scaricato AMD64
________________________________________________________________________________________________
Rome2 è uno strategico! Altrimenti sarebbe stato un ammazzali tutti e scappaaaaaaaaaaa scappaaaaaaaaaaaaaa! |
01/03/2009 21:41 |
|
| | | OFFLINE | Post: 5.573 | Registrato il: 29/10/2007 | Sesso: Maschile | Praefectus Castrorum | Il padrino | |
|
ma il primo post mi sembra scritto in italiano non in arabao, se non lo salvi con l'estensione .py (quella di pyton e scritta all'inizio del topic) non puoi editarlo come un file di pyton ____________________________________________________
|
01/03/2009 22:47 |
|
| | | OFFLINE | Post: 1.763 | Registrato il: 14/04/2007 | Città: ACCIANO | Età: 32 | Sesso: Maschile | Tribunus | |
|
quella 62 bit nn mi va visto che nn ho processore a 62 bit cmq ci ho rinunciato xD |
02/03/2009 10:10 |
|
| | | OFFLINE | Post: 2.289 | Registrato il: 04/08/2007 | Sesso: Maschile | Tribunus Angusticlavius | |
|
siculo-calabrese, 01/03/2009 21.41:
ma il primo post mi sembra scritto in italiano non in arabao, se non lo salvi con l'estensione .py (quella di pyton e scritta all'inizio del topic) non puoi editarlo come un file di pyton
Ti sbagli,se lo nomini .py non cambia niente,sempre documento di testo rimane....
________________________________________________________________________________________________
Rome2 è uno strategico! Altrimenti sarebbe stato un ammazzali tutti e scappaaaaaaaaaaa scappaaaaaaaaaaaaaa! |
02/03/2009 12:08 |
|
| | | OFFLINE | Post: 1.855 | Registrato il: 29/04/2008 | Città: TORINO | Età: 31 | Sesso: Maschile | Tribunus | |
|
Arma_87, 28/02/2009 11.18:
Prova ad andare qui www.twcenter.net/forums/showthread.php?t=227839
In fondo al primo post c'è il codice che devi inserire, ho notato che è cambiato leggermente (hanno semplicemente tolto alcune righe vuote, non dovrebbe cambiar nulla ma prova).
PS gentilmente i mod potrebbero ricopiare/incollare il codice che c'è nel forum TWCenter e sostituirlo con quello che ho postato io? E' per sicurezza. Grazie ^^
ragazzi, attivatevi, cambiate il txt allegato! quello vecchio confonde la gente!
ps
tanti altri hanno lo stesso problema di =DO=, nn penso che sia dovuto a qualche suo errore. |
02/03/2009 14:17 |
|
| | | OFFLINE | Post: 70 | Registrato il: 29/01/2009 | Città: CUNEO | Età: 37 | Sesso: Maschile | Miles | |
|
Se avete problemi con il file .py guardate questa immagine
dovrebbe essere abbastanza esplicativa.
Se persistono i problemi, usate questo file -> uploaded.to/?id=ntxwpe
è il mio e funziona sicuramente [Modificato da Arma_87 02/03/2009 16:00] |
03/03/2009 10:17 |
|
| | | OFFLINE | Post: 1.855 | Registrato il: 29/04/2008 | Città: TORINO | Età: 31 | Sesso: Maschile | Tribunus | |
|
LOL, HO TROVATO DOVE SBAGLIAVI!!!! IL TUO FILE SI CHIAMA UNPAKER! NN UNPACKER!!!! LOLL CORREGGA IL MODERATORE! SENNO APRO UN NUOVO TOPIC VERGINE DOVE RIFACCIO TUTTO IN MANIERA CORRETTA |
03/03/2009 17:03 |
|
| | | OFFLINE | Post: 70 | Registrato il: 29/01/2009 | Città: CUNEO | Età: 37 | Sesso: Maschile | Miles | |
|
Sean Cappone, 03/03/2009 10.17:
LOL, HO TROVATO DOVE SBAGLIAVI!!!! IL TUO FILE SI CHIAMA UNPAKER! NN UNPACKER!!!! LOLL CORREGGA IL MODERATORE! SENNO APRO UN NUOVO TOPIC VERGINE DOVE RIFACCIO TUTTO IN MANIERA CORRETTA
Evvabbe' ragazzi, potevate anche dirmelo prima che era una cavolata simile
Be' il topic aspetta ad aprirlo, domani esce il gioco completo e quasi sicuramente questa guida andrà rifatta o modificata ^_^ |
03/03/2009 17:19 |
|
| | | OFFLINE | Post: 1.855 | Registrato il: 29/04/2008 | Città: TORINO | Età: 31 | Sesso: Maschile | Tribunus | |
|
io è gia tre gg che gioco alla campagna lol! a domani sui server, vi aspetto!
PS
uno spettacvolo i francesi e i prussiani |
05/03/2009 10:02 |
|
| | | OFFLINE | | Post: 65 | Registrato il: 13/03/2006 | Città: GENOVA | Età: 56 | Sesso: Maschile | Miles | |
|
non mi da "edit with IDLE" CHE STRANO. ho installato il programmino pyton e ho messo la versione x86 in quanto ho VISTA a 32 b. ma non mi da quell'opzione e se provo a fare apri e selezione l'applicativo pyton non mi da nulla? mumble mumble dove sbaglio??? Simulare il disordine presume una perfetta disciplina, simulare paura .... il coraggio, simulare debolezza ....la forza |
12/03/2009 18:32 |
|
| | | OFFLINE | Post: 5.573 | Registrato il: 29/10/2007 | Sesso: Maschile | Praefectus Castrorum | Il padrino | |
|
Chiudo e tolgo l'evidenza poichè il treadh con l'uscita del gioco completo e i tool per modificarlo è diventato inutile ____________________________________________________
|
|
|