Map Localisation
Posted: 2009-07-03 04:54
I had written this up as a PM to some guy, but I thought I may as well post this in here so everyone can benefit. Localisation is really simple stuff, takes 5 minutes to do, if that, but it seems some people don't know what it's all about, hence this.
All localisation basically is, is what the text is that shows ingame. Pretty much anything text based, HUD, Menu, cpnames etc, is all localisation based. And all you have to do to set it up, is match the localisation id's to the words you want to show ingame. You can also have it set up for different languages the end user may have.
Anyway, the tutorial
. Obviously you need to edit the naming to suit your map.
The easiest way for community matches and stuff is probably just to make a new localisation file just for that map. Ie, community_op_barracuda.utxt. This is so if you need to uninstall the map or whatever, you only delete that localisation, and not localisation for other maps. To do this, just copy a previous utxt file, say prmaps.utxt, then we can edit that. Just delete everything in it except for the top 2 lines. The top 2 lines, not entirely sure what they do, but meh, whatever, may as well keep them in so you have the format and the little weird symbols handy
.
First thing you'll want to add in it is your map name:
Edit the localisation id (locid's) so it matches your map folder, and then edit the bit in between the 2 symbols to the name you have in your map's .desc file. This particular bit shows up in the scoreboard for map voting and shit like that
.
Anyway, next bit...
So, what you have to be careful of is keeping the localisation separate from standard pr stuff so nothing is overwritten, hence the new file, but we'll also need new locid's.
Something important to remember here is stuff "higher" in alphabetical order is loaded first. So c is loaded before p, hence this new community_op_barracuda is loaded before prmaps.utxt. But, nothing should be overwritten, since we'll be having new locid's and stuff
.
Anyway, the current format of the ones for barracuda is:
So lets change up the format a bit for your map yeah? Lets say:
Yeah? Anyway, so you have a bunch of cp's, and you will find all these in your server.zip\GameModes\gpm_cq\64\GamePlayObjects.con (edit to point to whatever gamemode/size your using). Scroll down to the bottom, and you'll see the stuff about combat area, scroll up a bit, and there's your cp shit. There are 2 sections, the top section defines the cp information, and the bottom bit actually spawns it on the map with the localisation and shit. Both bits are important here 
So, you'll see all the id's set in the gpo, ie:
and the bit down the bottom:
You want to edit all them to be the format your using, gamemode/size, cpname, etc etc. Ie:
So, go ahead, fix all them up. Just a CTRL-H find/replace and find the old cpname, then replace it with the new cpname is the easiest way to go
. Don't use replace all though, best to just use replace and see what your replacing first so you don't screw anything else up, such as spawn points that "may" contain the same name as your cp. Also, don't have 2 cpnames with the same id, it will screw things up obviously 
Anywho, once you've sorted that out, copy in the id into your localisation, then put the actual cp name you want to use in between the little symbols, just like the other lines in the localisation. Don't delete the symbols, it will screw it up. Oh, another thing that I should mention, space between the locid and the symbols needs to be spaces, not tabs, tabs will screw it up
.
Anyway, you should end up with something like this:
And once you've fixed them up for all the cpnames and shit, you should be done
Final results should look something like this:
GPO:
Localisation:
And that's it
5min job, super simple to do
.
Further things you should probably do is copy that into all the different languages, ie, localization/chinese/community_op_barracuda.utxt, etc, so people who have installed in a different language, can see all your localisation. This is because if they have installed in say Chinese, they will only see the localisation in the Chinese folder, not the English folder. You don't have to translate it, you can just leave it in English, you should be leaving it in English anyway since it's a map and it's CP's and stuff.
Anywho, that should just about wrap it up, so I'll leave it there
. Have fun.
All localisation basically is, is what the text is that shows ingame. Pretty much anything text based, HUD, Menu, cpnames etc, is all localisation based. And all you have to do to set it up, is match the localisation id's to the words you want to show ingame. You can also have it set up for different languages the end user may have.
Anyway, the tutorial
The easiest way for community matches and stuff is probably just to make a new localisation file just for that map. Ie, community_op_barracuda.utxt. This is so if you need to uninstall the map or whatever, you only delete that localisation, and not localisation for other maps. To do this, just copy a previous utxt file, say prmaps.utxt, then we can edit that. Just delete everything in it except for the top 2 lines. The top 2 lines, not entirely sure what they do, but meh, whatever, may as well keep them in so you have the format and the little weird symbols handy
First thing you'll want to add in it is your map name:
Code: Select all
HUD_LEVELNAME_community_op_barracuda Operation Barracuda V2Anyway, next bit...
So, what you have to be careful of is keeping the localisation separate from standard pr stuff so nothing is overwritten, hence the new file, but we'll also need new locid's.
Something important to remember here is stuff "higher" in alphabetical order is loaded first. So c is loaded before p, hence this new community_op_barracuda is loaded before prmaps.utxt. But, nothing should be overwritten, since we'll be having new locid's and stuff
Anyway, the current format of the ones for barracuda is:
Code: Select all
cpname_op_barracuda_aas64_missilesiloCode: Select all
cpname_community_op_barracuda_aas64_missilesiloSo, you'll see all the id's set in the gpo, ie:
Code: Select all
rem [ControlPointTemplate: [color=Red]cpname_op_barracuda_aas64_missilesilo[/color]]
ObjectTemplate.create ControlPoint [color=Red]cpname_op_barracuda_aas64_missilesilo[/color]
ObjectTemplate.activeSafe ControlPoint [color=Red]cpname_op_barracuda_aas64_missilesilo[/color]
ObjectTemplate.modifiedByUser "fuzzhead"
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
ObjectTemplate.setControlPointName [color=Red]cpname_op_barracuda_aas64_missilesilo[/color]
ObjectTemplate.radius 50
ObjectTemplate.radiusOffset 0/15/0
ObjectTemplate.team 1
ObjectTemplate.controlPointId 1
ObjectTemplate.areaValueTeam2 1000
ObjectTemplate.timeToGetControl 90
ObjectTemplate.timeToLoseControl 90
ObjectTemplate.isHemisphere 1
ObjectTemplate.supplyGroupId 10
ObjectTemplate.hoistMinMax 0.2/0.9Code: Select all
rem [ControlPoint: [color=Red]cpname_op_barracuda_aas64_missilesilo[/color]]
Object.create [color=Red]cpname_op_barracuda_aas64_missilesilo[/color]
Object.absolutePosition 534.366/98.227/-685.054
Object.layer 2Code: Select all
cpname_community_op_barracuda_aas64_missilesiloAnywho, once you've sorted that out, copy in the id into your localisation, then put the actual cp name you want to use in between the little symbols, just like the other lines in the localisation. Don't delete the symbols, it will screw it up. Oh, another thing that I should mention, space between the locid and the symbols needs to be spaces, not tabs, tabs will screw it up
Anyway, you should end up with something like this:
Code: Select all
cpname_community_op_barracuda_aas64_missilesilo PLA Missile SiloGPO:
Code: Select all
rem ********** Control Points **********
rem [ControlPointTemplate: cpname_community_op_barracuda_aas64_missilesilo]
ObjectTemplate.create ControlPoint cpname_community_op_barracuda_aas64_missilesilo
ObjectTemplate.activeSafe ControlPoint cpname_community_op_barracuda_aas64_missilesilo
ObjectTemplate.modifiedByUser "fuzzhead"
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
ObjectTemplate.setControlPointName cpname_community_op_barracuda_aas64_missilesilo
ObjectTemplate.radius 50
ObjectTemplate.radiusOffset 0/15/0
ObjectTemplate.team 1
ObjectTemplate.controlPointId 1
ObjectTemplate.areaValueTeam2 1000
ObjectTemplate.timeToGetControl 90
ObjectTemplate.timeToLoseControl 90
ObjectTemplate.isHemisphere 1
ObjectTemplate.supplyGroupId 10
ObjectTemplate.hoistMinMax 0.2/0.9
rem [ControlPointTemplate: cpname_community_op_barracuda_aas64_supplies]
ObjectTemplate.create ControlPoint cpname_community_op_barracuda_aas64_supplies
ObjectTemplate.activeSafe ControlPoint cpname_community_op_barracuda_aas64_supplies
ObjectTemplate.modifiedByUser "fuzzhead"
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
ObjectTemplate.setControlPointName cpname_community_op_barracuda_aas64_supplies
ObjectTemplate.radius 150
ObjectTemplate.radiusOffset 0/20/0
ObjectTemplate.team 1
ObjectTemplate.controlPointId 2
ObjectTemplate.timeToGetControl 180
ObjectTemplate.timeToLoseControl 180
ObjectTemplate.supplyGroupId 21
ObjectTemplate.hoistMinMax 0.2/0.9
rem [ControlPointTemplate: cpname_community_op_barracuda_aas64_carrier]
ObjectTemplate.create ControlPoint cpname_community_op_barracuda_aas64_carrier
ObjectTemplate.activeSafe ControlPoint cpname_community_op_barracuda_aas64_carrier
ObjectTemplate.modifiedByUser "fuzzhead"
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
rem -------------------------------------
ObjectTemplate.addTemplate flagpole
rem -------------------------------------
ObjectTemplate.setControlPointName cpname_community_op_barracuda_aas64_carrier
ObjectTemplate.team 2
ObjectTemplate.controlPointId 3
ObjectTemplate.unableToChangeTeam 1
ObjectTemplate.supplyGroupId 40
ObjectTemplate.hoistMinMax 0.2/0.9
rem [ControlPointTemplate: cpname_community_op_barracuda_aas64_airstrip]
ObjectTemplate.create ControlPoint cpname_community_op_barracuda_aas64_airstrip
ObjectTemplate.activeSafe ControlPoint cpname_community_op_barracuda_aas64_airstrip
ObjectTemplate.modifiedByUser "fuzzhead"
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
ObjectTemplate.setControlPointName cpname_community_op_barracuda_aas64_airstrip
ObjectTemplate.radius 150
ObjectTemplate.team 1
ObjectTemplate.controlPointId 101
ObjectTemplate.timeToGetControl 180
ObjectTemplate.timeToLoseControl 180
ObjectTemplate.supplyGroupId 21
ObjectTemplate.hoistMinMax 0.2/0.9
rem [ControlPointTemplate: cpname_community_op_barracuda_aas64_beachfortification]
ObjectTemplate.create ControlPoint cpname_community_op_barracuda_aas64_beachfortification
ObjectTemplate.activeSafe ControlPoint cpname_community_op_barracuda_aas64_beachfortification
ObjectTemplate.modifiedByUser "fuzzhead"
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
ObjectTemplate.setControlPointName cpname_community_op_barracuda_aas64_beachfortification
ObjectTemplate.radius 150
ObjectTemplate.team 1
ObjectTemplate.controlPointId 103
ObjectTemplate.timeToGetControl 180
ObjectTemplate.timeToLoseControl 180
ObjectTemplate.supplyGroupId 21
ObjectTemplate.hoistMinMax 0.2/0.9
rem [ControlPointTemplate: cpname_community_op_barracuda_aas64_docks]
ObjectTemplate.create ControlPoint cpname_community_op_barracuda_aas64_docks
ObjectTemplate.activeSafe ControlPoint cpname_community_op_barracuda_aas64_docks
ObjectTemplate.modifiedByUser "fuzzhead"
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
ObjectTemplate.setControlPointName cpname_community_op_barracuda_aas64_docks
ObjectTemplate.radius 150
ObjectTemplate.team 1
ObjectTemplate.controlPointId 104
ObjectTemplate.timeToGetControl 180
ObjectTemplate.timeToLoseControl 180
ObjectTemplate.supplyGroupId 32
ObjectTemplate.hoistMinMax 0.2/0.9
rem [ControlPointTemplate: cpname_community_op_barracuda_aas64_bridge]
ObjectTemplate.create ControlPoint cpname_community_op_barracuda_aas64_bridge
ObjectTemplate.activeSafe ControlPoint cpname_community_op_barracuda_aas64_bridge
ObjectTemplate.modifiedByUser "fuzzhead"
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
ObjectTemplate.setControlPointName cpname_community_op_barracuda_aas64_bridge
ObjectTemplate.radius 150
ObjectTemplate.team 1
ObjectTemplate.controlPointId 102
ObjectTemplate.timeToGetControl 180
ObjectTemplate.timeToLoseControl 180
ObjectTemplate.supplyGroupId 21
ObjectTemplate.hoistMinMax 0.2/0.9
rem [ControlPointTemplate: cpname_community_op_barracuda_aas64_swamp]
ObjectTemplate.create ControlPoint cpname_community_op_barracuda_aas64_swamp
ObjectTemplate.activeSafe ControlPoint cpname_community_op_barracuda_aas64_swamp
ObjectTemplate.modifiedByUser "fuzzhead"
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
ObjectTemplate.setControlPointName cpname_community_op_barracuda_aas64_swamp
ObjectTemplate.radius 150
ObjectTemplate.team 1
ObjectTemplate.controlPointId 105
ObjectTemplate.timeToGetControl 180
ObjectTemplate.timeToLoseControl 180
ObjectTemplate.supplyGroupId 32
ObjectTemplate.hoistMinMax 0.2/0.9
rem [ControlPointTemplate: cpname_community_op_barracuda_aas64_southrockfort]
ObjectTemplate.create ControlPoint cpname_community_op_barracuda_aas64_southrockfort
ObjectTemplate.activeSafe ControlPoint cpname_community_op_barracuda_aas64_southrockfort
ObjectTemplate.modifiedByUser "fuzzhead"
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
ObjectTemplate.setControlPointName cpname_community_op_barracuda_aas64_southrockfort
ObjectTemplate.radius 150
ObjectTemplate.team 1
ObjectTemplate.controlPointId 106
ObjectTemplate.timeToGetControl 180
ObjectTemplate.timeToLoseControl 180
ObjectTemplate.supplyGroupId 32
ObjectTemplate.hoistMinMax 0.2/0.9
rem [ControlPointTemplate: cpname_community_op_barracuda_aas64_northrockfort]
ObjectTemplate.create ControlPoint cpname_community_op_barracuda_aas64_northrockfort
ObjectTemplate.activeSafe ControlPoint cpname_community_op_barracuda_aas64_northrockfort
ObjectTemplate.modifiedByUser "fuzzhead"
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
ObjectTemplate.setControlPointName cpname_community_op_barracuda_aas64_northrockfort
ObjectTemplate.radius 150
ObjectTemplate.team 1
ObjectTemplate.controlPointId 107
ObjectTemplate.timeToGetControl 180
ObjectTemplate.timeToLoseControl 180
ObjectTemplate.supplyGroupId 32
ObjectTemplate.hoistMinMax 0.2/0.9
rem [ControlPointTemplate: cpname_community_op_barracuda_aas64_beachfront]
ObjectTemplate.create ControlPoint cpname_community_op_barracuda_aas64_beachfront
ObjectTemplate.activeSafe ControlPoint cpname_community_op_barracuda_aas64_beachfront
ObjectTemplate.modifiedByUser "fuzzhead"
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
ObjectTemplate.setControlPointName cpname_community_op_barracuda_aas64_beachfront
ObjectTemplate.radius 150
ObjectTemplate.team 1
ObjectTemplate.controlPointId 108
ObjectTemplate.timeToGetControl 180
ObjectTemplate.timeToLoseControl 180
ObjectTemplate.supplyGroupId 32
ObjectTemplate.hoistMinMax 0.2/0.9
if v_arg1 == host
rem [ControlPoint: cpname_community_op_barracuda_aas64_missilesilo]
Object.create cpname_community_op_barracuda_aas64_missilesilo
Object.absolutePosition 534.366/98.227/-685.054
Object.layer 2
rem [ControlPoint: cpname_community_op_barracuda_aas64_supplies]
Object.create cpname_community_op_barracuda_aas64_supplies
Object.absolutePosition -131.340/40.718/-431.666
Object.layer 2
rem [ControlPoint: cpname_community_op_barracuda_aas64_carrier]
Object.create cpname_community_op_barracuda_aas64_carrier
Object.absolutePosition -772.251/41.975/807.313
Object.layer 2
rem [ControlPoint: cpname_community_op_barracuda_aas64_airstrip]
Object.create cpname_community_op_barracuda_aas64_airstrip
Object.absolutePosition -527.345/31.789/-797.686
Object.layer 2
rem [ControlPoint: cpname_community_op_barracuda_aas64_beachfortification]
Object.create cpname_community_op_barracuda_aas64_beachfortification
Object.absolutePosition -432.624/4.520/-228.302
Object.layer 2
rem [ControlPoint: cpname_community_op_barracuda_aas64_docks]
Object.create cpname_community_op_barracuda_aas64_docks
Object.absolutePosition 403.540/-24.133/278.200
Object.layer 2
rem [ControlPoint: cpname_community_op_barracuda_aas64_bridge]
Object.create cpname_community_op_barracuda_aas64_bridge
Object.absolutePosition 427.682/35.574/-16.825
Object.layer 2
rem [ControlPoint: cpname_community_op_barracuda_aas64_swamp]
Object.create cpname_community_op_barracuda_aas64_swamp
Object.absolutePosition -23.970/6.944/-60.310
Object.layer 2
rem [ControlPoint: cpname_community_op_barracuda_aas64_southrockfort]
Object.create cpname_community_op_barracuda_aas64_southrockfort
Object.absolutePosition -877.595/14.024/-469.061
Object.layer 2
rem [ControlPoint: cpname_community_op_barracuda_aas64_northrockfort]
Object.create cpname_community_op_barracuda_aas64_northrockfort
Object.absolutePosition -630.413/24.945/-24.682
Object.layer 2
rem [ControlPoint: cpname_community_op_barracuda_aas64_beachfront]
Object.create cpname_community_op_barracuda_aas64_beachfront
Object.absolutePosition -655.005/16.377/-400.102
Object.layer 2
endIfCode: Select all
ID_LANGUAGE English
ID_VERSION Date: 03/06/2009 PR v0.860
HUD_LEVELNAME_community_op_barracuda Operation Barracuda V2
cpname_community_op_barracuda_aas64_missilesilo PLA Missile Silo
cpname_community_op_barracuda_aas64_supplies Supply Fortification Objective 150m
cpname_community_op_barracuda_aas64_carrier USS Essex
cpname_community_op_barracuda_aas64_airstrip Air Strip Objective 150m
cpname_community_op_barracuda_aas64_beachfortification Beach Fortification Objective 150m
cpname_community_op_barracuda_aas64_docks Docks Objective 150m
cpname_community_op_barracuda_aas64_bridge Bridge Objective 150m
cpname_community_op_barracuda_aas64_swamp Swamp Objective 150m
cpname_community_op_barracuda_aas64_southrockfort South Rock Fortification Objective 150m
cpname_community_op_barracuda_aas64_northrockfort North Rock Fortification Objective 150m
cpname_community_op_barracuda_aas64_beachfront Beach Front Objective 150mFurther things you should probably do is copy that into all the different languages, ie, localization/chinese/community_op_barracuda.utxt, etc, so people who have installed in a different language, can see all your localisation. This is because if they have installed in say Chinese, they will only see the localisation in the Chinese folder, not the English folder. You don't have to translate it, you can just leave it in English, you should be leaving it in English anyway since it's a map and it's CP's and stuff.
Anywho, that should just about wrap it up, so I'll leave it there