Modding and Tuning Empire: Total War (Empire: Total War)
Start modding in Empire: Total WarArticle from Fox from Targowisko
Unpacking from Alpaca and Sinople:
To unpack managed with ease in the screenshot trappers are fighting on the side of the British (also known as loyalists) :
http://radikal.ru/F/s39.radikal.ru/i084/0902/1a/7a35a7a33451.jpg.html
Link to unpacker - http://imperialtw.narod.ru/moding/Emp_unpacker.zip
To open a file archiver (Lis: I vinrar 3.5, opened easily)
To use:
1.To move the unpacker in the data folder, start the .bat file.
2. Everything is unpacked in the folder will be unpacked
*Requires Python (Lis: library language, you can take - http://www.python.org/ftp/python/3.0.1/python-3.0.1.msi
Tested for performance.
Should:
1. To Install Python. The link above.
2. To transfer files unpacker at (I) C:\Program Files\Steam\steamapps\common\empire total war demo\data
3. To open a file emp_unpacker.py by clicking on it right mouse button and selecting Edit with IDLE.
Two Windows will be opened. Python Shell do not touch. From the second window, erase everything and replacing it with:
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 = []
selfnumFiles = 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.pathrb)
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)
4. Save, run the bat-file emp_unpacker.py -u all.bat
After unpacking, don't forget to rename demo1.pack demo1.pack_backup, then transfer the files to the root directory, here you will be able to modify them.
A slight modification of the game:
Infantry shoots three rows:
http://s49.radikal.ru/i125/0902/a3/7c88c6c90928t.jpg
Find the unit you want to change
fire_volley
Change to:
rank_fire
You do not have two letters, as rank_fire shorter than fire_volley. It is recommended to add two letters to the name of the General. (Fox: how to do it you will understand further)
To change the number of soldiers in the unit:
Find:
and replace
Then find:
William Howe
and replace
William How
The experience of detachment:
Find:
rank_fire
square_formation
ring_bayonets
Zero change in 3. No other changes are required.
Adding ships to the game:
This is done in the file battle_of_lagos.xml
Manual no, apparently it is simple copy and paste.
britain
With all the questions on this post here: Modding and Tuning for ETW, Share experiences, tutorials, tips - http://imperiall.1bb.ru/index.php?showtopic=3802
Drugiye instructions for modding Empire: Total War: a Manual for ETW Modder, Instructions for the novice Modder - http://imperiall.1bb.ru/index.php?showtopic=3805
Maalex
The easiest way to replace this ability on the best analogue - shooting ranks. In General you need PackFileManager and desire\is the desire to know the unknown tobish to look to pack files.
In short:
- open the patch3.pack with PackFileManager;
in section db otkryvali table unit_to_unit_abilities_junctions;
- find the necessary unit\units;
- prescribe this\these units is platoon_fire - rank_fire.
All try!
Good luck.
wehr, thank you very much.
PS Not looking. Perished in the desire to know the unknown... :))
Hi all! I write the first time actually, so please respond. Play a long time. I think I understand the game perfectly. But modding for the first time puzzled. How to make the game Empire: Total War the main campaign you could hire an army in one turn.
Hi all! I write the first time actually, so please respond. Play a long time. I think I understand the game perfectly. But modding for the first time puzzled. How to make the game Empire: Total War the main campaign you could hire an army in one turn.
In short, make it so! In the themes is the theme Fashion tools to them the problem, go up there and shake PFM 13, DBEditor 18! Doing everything according to the instructions and open the PFM - om patch3.pack and select the tab units_tables and it units! Look at the list Turns to Build and modify next to the name of required units the number of moves for hiring! How to do that would be in the same city hired 10 or 20 units I don't know, but the later buildings of 8-9 units with hiring of 1 course is easy!If you right a bloody nose as it is necessary that the building gained 10 units at a time -write will understand, but..... why is it, zavoevyvaet new city..!
++++++First of all if you have the latest update, open patch4. pack second
.
.....Do not open the units folder......
+++And you've read where I you Modreactor sent, that you need to install them both and get the file Common.dll and paste it in the folder of PFM 13 ? Or you entered a wrong path and you have nothing opened and not found?
deadly45481
It is the question? All in патч4пак or патч3пак(without the last patch, if)? Razblokirovat EXE-shnikom.And that?
deadly45481
........................... Can I move units with license pirates?.................................
++++++++++++ Move -no, but if I do this, then.............! Put all the patches put out last patch, crack and ........the wheels provide the rider a good ride!!!