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
need a program to download, and there, inside and description will be.Called Darius the ETW Toolkit Preview.
Thanks to all who responded!Game perestanavlivat,too.Dear Saladin-sult-an!In the Language txt.is EN.Strange thing.On another forum brow the same,but how to help, no one knows.
http://slil.ru/27369193
here's how to get around on the unlimited number of moves.only here it is possible to set how many moves
Yes, here's a reference to open factions - http://files.battles.su/etw_factions_unlocker.zip - download, run exe file, open startpos, put a checkmark in the desired fraction and stored
People, somebody Darius Toolkit ETW Preview will be able to send [email protected] and download why it is not very good. PLZ!
Here's an example of modding a unit with PAC Manager (took on one of the forums I checked - the Janissaries began with the guns - cool!):
In unit_stats_land.tsv find janissaries_cemaat in animation writing pr_custom_pistol_only in sledushaya column writing
x_euro_sword_pistol,then in the column before writing to pistol Accuracy,Accuracy in pripisivaem accuracy,and the following
recharge,then a flintlock,pistol again,popisoval how many charges there are/Ammo/in the next column write
foot_pistol and finally put a tick where we need if you want hide in the grass,which fortunately for owners
gun/he's 40 meters in girth/!Sohranyaet!
Go to unit_to_unit_abilities_junctions.tsv find janissaries_cemaat add them light_infantry_behaviour and
fire_volley and save !Now all you will have a very efficient unit of course have a price to povisit or
to make less people !
That all was shot once to prescribe in unit_stats_land.tsv - elite - otherwise it will shoot only the first row!
Dear forum members!Prompt,who knows!After installing some mods(mod with new voice acting,the mod improves the mini map)Russian font is changed to Polish or Czech.To play,of course you can...Can someone tell me how to solve this issue?Thanks in advance!Thanks to all who responded!Game perestanavlivat,too.Dear Saladin-sult-an!In the Language txt.is EN.Strange thing.On another forum brow the same,but how to help, no one knows.
NET MOLOTOFF Well, if the problem is stable, try to remove the cause: After each installation of the mod (only one!) try again and again to run the game, if the font changes, you should change the installation order of the mods and reinstall the game again from scratch with a different mod. In short, so trying, I think, will be released on glyucheny fashion, and as will all tell me, let people know! (if only these two, I think buggy with the mini-map). Isumi Yes obrastet :)))
I have a question. Can you access the other factions?
PS If this question where on the forum, sorry, did not see.
Opened a fraction of the Mughals, the problem is, the fog of war is not removed, what can be done to remove it?
VoRoN_IlNaR, I don't know.... I believe that is the problem no one has yet decided... Bad, I'm embarrassed, especially when the state is huge.
To Haktar
Splint removes fog from all maps of the world, and I have to leave the current on my site.
VoRoN_IlNaR
Just move your agents,generals and armies across the map and vuale the fog will disappear)