|
Modding Tutorials Information and tutorials related to modding BF2. |
![]() |
|
Thread Tools | Display Modes |
![]() |
#1 | |
Retired PR Developer
![]() |
![]()
In this tut we will cover from start to finnish how to Audit a map for the Project Reality Mod. I'm going to Audit the vBF2 map "Daqing_oilfields" as an exsample for thit tut.
For this tut you will need the following tools:
And have done the following Tutorials:
Step 1: Setting up the Map for Audit. In this step we will cover how to set the map up for Audit to be used for the BF2 editor, and so it can be used by others later on. First copy the map folder into your "pr_edit" mod leaves folder. (if you do not have a "pr_edit" mod do this tut here: https://www.realitymod.com/forum/f18...g-modding.html) Now after you have that, you should now inside the map folder you just copied over to your "pr_edit"'s level folder, a "Info" folder, a "client.zip" and a "server.zip". ![]() Now for the editor to be able to read the maps files, you must first exstract both the client and server .zips into your maps folder. ![]() You will now need to get hold of, or create the Editor files used by the BF2 Editor. If you can get hold of the editor files from the crator of the map, or somone who had made them from scratch in the past (by doing a audit or w/e) is the quickest / easist way. So first allways see if you can get hold of them if possible. If not, you will need to create them from scratch. A) If you can get hold of the editor files, simpley place them in the "Editor" folder inside the map folder, ie: "\levels\*MAP NAME*\Editor\". If the editor folder is not there, create it. Inside of the editor folder you will need to put the "gameplayobjects.con" (GPO.con for short) and "layer.con" files. These are the editor files and not the game files bare in mind as there is a GPO.con file for each layer of the game files but the editor version is all of them together. B) If you can not get hold of the editor files, then you need to crate them from scratch. This is where it starts to get tricky. First you need create your Editor folder. simpley just create a new folder inside your map folder and rename it to "Editor" ![]() ![]() Once you have the editor folder, go to your maps: "\GameModes\gpm_cq\64\" folder and copy the "GamePlayObjects.con" (GPO.con for short) into your maps editor folder: "\Editor\". This is only the 64 layer of your GPO.con file. Now this is where it gets really tricky where we need to edit in the other layers into the Editors GPO.con file so its all the layers, combined. Open up your Editors GPO.con file (\Editor\GamePlayObjects.con) with notepade or w/e text editor you use. This GPO.con file defines all your object spawns, player spawns, Control points etc in your map. All the text that you see when you open it is about them. I will give you a full run down on how the GPO.con file works later on but as this section might be missed out if you already have these files, I'll state them later on. Leave your Editors GPO.con open and also open up the 32 layer GPO.con file here: "\GameModes\gpm_cq\32\GamePlayObjects.con" and the 16 layer GPO.con file here: "\GameModes\gpm_cq\16\GamePlayObjects.con" Have all of them open at the same time but make sure you do not mix them up, it is easy to do so so keep them on diffrent sides of the screen. Now the GPO.con file is split into diffrent sections:
Now first the object spawnsers section will look something like this apart with far more text, this is only one object which is a TOW missile stand: Code:
rem ********** Object Spawner ********** rem [ObjectSpawnerTemplate: CPNAME_DO_64_ustown_AT] ObjectTemplate.create ObjectSpawner CPNAME_DO_64_ustown_AT ObjectTemplate.activeSafe ObjectSpawner CPNAME_DO_64_ustown_AT ObjectTemplate.modifiedByUser esj ObjectTemplate.isNotSaveable 1 ObjectTemplate.hasMobilePhysics 0 ObjectTemplate.setObjectTemplate 1 ats_tow ObjectTemplate.setObjectTemplate 2 ats_tow if v_arg1 == host rem [ObjectSpawner: CPNAME_DO_64_ustown_AT] Object.create CPNAME_DO_64_ustown_AT Object.absolutePosition 262.000/134.994/-410.000 Object.rotation 4.200/0.000/0.000 Object.setControlPointId 3 Object.layer 2 endIf The Red "rem ********** Object Spawner **********" line represents the start of the object spawners. The Blue "if v_arg1 == host"splits the 1st group from the 2nd group. The Green "endIf" ends the object Spawners section. It is imporant that these groups are kept seprate for the editor to use. So now lets mearge in the 32 and 16 layers of the object spawner groups into the Editors GPO.con file. First we will mearge the first group into the GPO.con file. so lets first take the 32 layer first. Now Select the begging of the first line, of the first object where the red arrow is: ![]() Then Scroll down the page to the last object (in the first group still), note the "if v_arg1 == host" bit just after the arrow which a blue line under it. ![]() hold the "shift" key and click where the red arrow is, it will select all the lines (objects) between the start and the finnish. Then copy thous lines and paste them into your editors GPO.con file right before the "if v_arg1 == host" and after the ones that are already there. (you will need to make 2 new lines.) ![]() Do excatly the same for the 16 layer as you did to the 32 layer and paste it into the Editor's GPO.con file, make sure you save it (if its a read only file, make it so it can be read) ![]() you can now see how you are going to be building up this file with 64 on the top, 32 in the middile, and 16 on the bottom all the way. Shots from points in the .con where 64 changes to 32, then 32 changes to 16 etc. ![]() ![]() Now thats the first group of the object spawners, now to do the 2nd group which is more or less the same thing. Go to your 32 GPO.con file and select the begging of the 2nd groups object spaner. Make sure you include the space at the begging. Again note the "if v_arg1 == host" at the top. ![]() Then again, scroll to the end, hold the "shift" key and click at the very end of the 2nd group, here: ![]() Take note of the "endIf" bit at the end ![]() Copy all thous lines into the Editor's GPO.con file at the very end of the 2nd group of object spawners, again make 2 lines before you paste it in. ![]() again, do the same for the 16 layer. Now with any luck you should be starting to get the hang of it cos its taking me ages to do all the SS etc ![]() Now onto the Spawn Points, these are the player spawn points bear in mind, they are a little diffrent from the object spawns as they have there group 1 and group 2 mixed into one group with the group 2 bit just under each spawn point bit. dont worrie about that yet ![]() go to the 32 GPO.con and select the start of the first spawnpoint, will start off with something like: "rem [SpawnPointTemplate: " then scroll down all the way till you see a "rem ********** Control Points **********", copy all thous lines and paste them into the bottom of the Spawn Points section of the Editor's GPO.con file, then do the same again for the 16man layer. Now for the Control Points. Control Points are abit like the object spawnsers as they use the two split groups again. starts off with the "rem ********** Control Points **********" then in the middle you have your "if v_arg1 == host" again then at the end you have your "endIf" again. Go to your 32 GPO.con file and select the start of the first Control Point. Will start off with something like "rem [ControlPointTemplate: " Then scroll down to the bottom of the first group, just before the "if v_arg1 == host" and hold the "shift" key again, select all the control points, copy them and paste them into your Editors GPO.con file at the bottom of the 1st Control point group. do the same for the 16 GPO.con Now to do the 2nd group of the control points (in the 32 GPO.con), go to the first line and select it, will look something like " rem [ControlPoint: " (remember, keep thous extra forward spaces in). Then scroll down to the bottom, just beofre the "endIf" bit, hold shift, select, copy and paste them into the end of the 2nd group in the editors GPO.con file. do the same again for the 16 GPO.con Last but not least comes the Combat Zones. These will allways be at the very bottom of the file, and bare in mind that sometimes more than one layer uses excatly the same combat zones. you do not want to put excatly the same combat zone in twice as it will muck up the editor. So first, check the name of the Combat Zone(s) in your 64 layer (your editors GPO.con file). in this case Daqing_oilfields has 2 combat zones in its 64 layer, one used for ground troops and one for jets. Its first one is called "CombatArea.create CombatArea_143_64_player" and its 2nd one "CombatArea.create CombatArea_115_64_player" ![]() Not going to bother taking a shot of both names, just did the first one to give u an idea of where too look. So quickly do a check before you do anything that the same combat zone name is not in any other GPO.con files you are about to copy in (the 32 or 16 GPO.con files). Now take note of this bit highlited. ![]() Code:
CombatAreaManager.use 1 CombatAreaManager.timeAllowedOutside 10.000000 Now go to the 32 GPO.con file and copy in the combat zone(s) without copying in the first 2 lines, stated above. Paste them under the last combat zone in the Editors GPO.con file, then do excatly the same for the 16 GPO.con file. Again, do not copy in the same combat zone which might apear in more than one layer. if the name matched from your check you did before do not have that combat zone in more than once. We are almost done with the first step now, We just need to do the Layer.con file then we can use these files with the editor ![]() Close down the GPO.con files but keep your editor's GPO.con file open as you will probaly need it in a sec. I always like to work off a template so download this Layer.con file (right click, save as and then extract the .zip to find it) Download: http://realitymodfiles.com/rhino/tuts/Layer.zip put that into your maps Editor folder. Now the chances of this file being 100% correct already are very small as almost all maps are diffrent in this repects, just depends on which mad order the mapper decied to do it in. Now this is the one I have quickly made for Daqing_oilfields. Now these files really dont exsplain them selfs so let me try and exsplain them quickly. Code:
rem ******** 64_player ******** LayerManager.AddUserLayer "64_player" 4 2 0 1 LayerManager.SetLocked 0 LayerManager.SetDisabled 0 LayerManager.AddGameModeFilter "gpm_cq" LayerManager.AddPlayerFilter "64" The next line down is first the real name that is used inside the editor, do not uses spaces etc in this name (inside the quotes). after the quotes is a buch of numbers, now the first number, "4" in this case I really to be honest dont have a clue what it dose, but it always increases by a power of 2 when moving up the layers. So the next layer would be 8, then the one after that 16, then the one after that 32, etc, etc. Now the next number is the layer number isself, in this case the number "2", aka "layer 2". now the 0 and 1 after again, i do not know excatly what these do BUT i think they have something to do with the editor options. just leave them 0 and 1 they are not imporant to the outcome of the map. Next 2 lines down leave them at 0, only really for editor use. Next line down is just adding the gamemode gpm_cq aka, AAS 2. Next line down is just adding the player size filter. Now I've exsplained the basics, really the only thing you need to worrie about now is whats on line 2 and maybe the last line, but line 2 is the most imporant as all the other lines can be changed inside the editor, if you mess line 2 up the editor will not load it. This layer.con template its kinda a bad exsample as its all set out, but ill just set it up for mashtuur quickly so bare with me. Now if we look in mashtuurs Editors GPO.con file, if we scroll down too the 2nd group of the object spawners we can see that the 64 layer is on layer 3. ![]() At the mo its set to layer 2. Now you would think that the easit way to change this would be to change from: Code:
LayerManager.AddUserLayer "64_player" 4 2 0 1 Code:
LayerManager.AddUserLayer "64_player" 4 3 0 1 This will not work (im 90% sure) and will stop the editor from loading your map correctly. Instead you need to rejig your layers.con file till its all in the right place. Here is your Layers.con file: Code:
rem ******** 64_player ******** LayerManager.AddUserLayer "64_player" 4 2 0 1 LayerManager.SetLocked 0 LayerManager.SetDisabled 0 LayerManager.AddGameModeFilter "gpm_cq" LayerManager.AddPlayerFilter "64" rem ******** blank ******** LayerManager.AddUserLayer "blank" 8 3 0 1 LayerManager.SetLocked 0 LayerManager.SetDisabled 0 rem ******** 32_player ******** LayerManager.AddUserLayer "32_player" 16 4 0 1 LayerManager.SetLocked 0 LayerManager.SetDisabled 0 LayerManager.AddGameModeFilter "gpm_cq" LayerManager.AddPlayerFilter "32" rem ******** 16_player ******** LayerManager.AddUserLayer "16_player" 32 5 0 1 LayerManager.SetLocked 0 LayerManager.SetDisabled 0 LayerManager.AddGameModeFilter "gpm_cq" LayerManager.AddPlayerFilter "16" Code:
rem ******** 64_player ******** LayerManager.AddUserLayer "64_player" 4 2 0 1 LayerManager.SetLocked 0 LayerManager.SetDisabled 0 LayerManager.AddGameModeFilter "gpm_cq" LayerManager.AddPlayerFilter "64" rem ******** 64_player ******** LayerManager.AddUserLayer "64_player" 8 3 0 1 LayerManager.SetLocked 0 LayerManager.SetDisabled 0 LayerManager.AddGameModeFilter "gpm_cq" LayerManager.AddPlayerFilter "64" rem ******** 32_player ******** LayerManager.AddUserLayer "32_player" 16 4 0 1 LayerManager.SetLocked 0 LayerManager.SetDisabled 0 LayerManager.AddGameModeFilter "gpm_cq" LayerManager.AddPlayerFilter "32" rem ******** 16_player ******** LayerManager.AddUserLayer "16_player" 32 5 0 1 LayerManager.SetLocked 0 LayerManager.SetDisabled 0 LayerManager.AddGameModeFilter "gpm_cq" LayerManager.AddPlayerFilter "16" Code:
rem ******** 32_player ******** LayerManager.AddUserLayer "32_player" 4 2 0 1 LayerManager.SetLocked 0 LayerManager.SetDisabled 0 LayerManager.AddGameModeFilter "gpm_cq" LayerManager.AddPlayerFilter "32" rem ******** 64_player ******** LayerManager.AddUserLayer "64_player" 8 3 0 1 LayerManager.SetLocked 0 LayerManager.SetDisabled 0 LayerManager.AddGameModeFilter "gpm_cq" LayerManager.AddPlayerFilter "64" rem ******** 16_player ******** LayerManager.AddUserLayer "16_player" 16 4 0 1 LayerManager.SetLocked 0 LayerManager.SetDisabled 0 LayerManager.AddGameModeFilter "gpm_cq" LayerManager.AddPlayerFilter "16" Once done, save it up and you should now, finaly have editor files for use, YAY!!! ![]() Step 2:Control Points Now some may disagree with me, but the first thing I think you should do once the editor files are done, is first worrie about the control points since everything (more or less) is bassed off of them. Load up your map in the BF2 editor, then as soon as you get in lock the defualt layer with all the statics etc (layer 1). this means you will not move any of the statics, and it will be easier for you to select CPs, spawn points etc that you want to be working on. Now to first delete the Control points we do not want to use. Now in my 64 layer I only want the 2 main bases, the west + east oilfields, the old village and the refinery. so that means im going to first delete the power staion CP, the oil cisternces CP and the gas station CP. easist thing i find it to click on one CP, then you can easily see all the others in your recorces tab: ![]() When you delete a CP, it will ask you if you want to delete all attached objects, press yes this will make sure that you dont have any luce ends or bits of code floating round that could feck up your map later on ![]() ![]() after you have deleted your unwanted CPs for 64, do 32 and 16 strait after to make sure you dont forget it ![]() If you want any new CPs, just right click on the map and create them. Make sure they use the defualt name template thou! Note: make sure you save often, it dose not take a sec to save these .con files so just keep on clicking that save button ![]() Now that we have only the CPs we want, we can now set up the AAS Order ![]() Now it looks like im going to have to do a AAS v2 setup tut here too ![]() Now in Daqing_oilfields 64 we have a total of 6 flags (now after ive deleted afew), and a total of 4 flag groups. ![]() The SupplyGroupID (SGID for short) veribual part of the CP controls which CP is in which group. as you can see on the pic above ive put the SGID numbers next to the CP/CP Groups, where groups are connected with a line. Here is the SGID box on the chinese main flag which is now set to 1 (defualt is -1) as its the first team 1 flag. ![]() When you connect 2 or more flags to the same group a black line can be seen in the editor connecting them: ![]() Once you have done the 64 layer, do the SGIDs for the 32 and 16 layer. Once your AAS orders have been setup for all the layers, you can now think about doing the CP Settings. You can do this with either the BF2 Editor, or a text editor. If you are going to do it with a text editor it will require you to close down the BF2 editor and open it up again to reload your changes. So its best to either use the BF2 editor to edit them, or to do it later and do all the text edits later by hand. if so leave a note so you dont forget to do it ![]() I'm going to do the 64 and 32 layers with the editor, but will leave the 16 layer to be done in the text editor later so I can show you both ways. When refering to what settings you should be using always refer to this topic: http://realitymod.com/forum/t13808-m...-aas2span.html Now to make sure I dont miss anything, im going to exsplain every point of the control point settings. ![]() ![]() ![]() ![]() ![]() ![]() ![]() For the last flag (main base) in the capture order, you should give the attack teams side as much area value as you can so ticket bleed would soon end the game if they took the flag. ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() if you edit this you should always use the CP Name template, IE: cpname_**_##_flagname where ** is the 2 letters that define the map, like Op Ghost Train is GT, Daqing oilfields is DO etc, ## is the layer size IE, 16 32 64 etc and the flagname should have no spaces, no _ etc. ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() for each CP change thous bars above as needed with the audit settings then your done ![]() If you crate a new Control Point, with a new CP name, then you will need to add in the flag name into the localization files so you dont have the "code name" of the flag showing up ingame. If you have acess to the REPO, then you can edit the new CP names strait into it, save it up and upload a new version. If not then you will need to attach a small note to your map saying they need to be added in a .txt file or to the post you submitt the upload link ro or w/e. to add the flag name simpley open up the "prmaps.utxt" file in "\pr\localization\english\" and scroll down to where you map would fit into the alpherbetical order of the cpnames_** bit and add you new CP in. The code you need to add in will look something like this: Code:
cpname_**_##_flagnameINGAME FLAG NAME cpname_se_16_gasstationGas Station Step 3: Player Spawn Points Now we have got rid of the un needed CPs, we can work on the spawn points next, only player spawn points for now thou no object spawn points yet. Now first lets just delete the spawn points we dont want, a really quick way to do this is group selecting them in the editor and then just hitting the delete key. ![]() Just use the Recorces bar on the left, and use the ctrl and shift keys to select mutiple spawn points and then when you have them all just delete them in bulk ![]() Do this for every flag that should not have fixed spawn points refering to the mapping guidlines: http://realitymod.com/forum/t13808-m...-aas2span.html by the end select all the spawn points in the layer and check the ones ones left are where you want them to be ![]() Add in any extras you think are nessary. Now each spawn point has its own options so i might as well run though them quickly like i did for the CP options. ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() This spawn point dose not need to be right ontop of the vehicle, just close to it ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Step 4: Object Spawns First like we did for the player spawn points, lets first delete all the object spawns we do not want ![]() Do this for all layers, remeber that 16 layer is infantry only, so you will need to delete all the jeeps etc BUT, spear the sMG spawns ![]() get rid of anything it states in the guid lines (http://realitymod.com/forum/t13808-m...-aas2span.html) like UAV traliers etc. Now we need to add in any objects that you think are needed. I'm turning Daqing into a armor battle for 64 / 32 so ill need to add lots of tanks ![]() Once you have got all your objects on the map you want, its then time to be editing the object spawn settings ![]() Before I go through this I've got to give you a run down again of all the settings for object spawns: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() This is the "decay distance", when a object is outside of this distance then the decay timer will start to tick. ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() All the following changes to be made to these guide lines: http://realitymod.com/forum/t13808-m...-aas2span.html Now ive got the next bit pretty well sussed. First of all lets select every object, in every layer, so just group select them in your recorces tab. Then the bit you want to change for every object is the "TimeToLive" and "Distance" fields as they all use the same settings, apart from air craft that can easily be edited later on there own. Edit them to what the guide lines state. Also you will want to lock every object, then go around and unlock the objects that are not ment to be locked. This is the easier way since most objects do need to be locked and very few do not and the guide only defines what objects should not be locked so all in all, its easier ![]() When this window pops up, click the "Yes" button then it will changes what you have changed for all the objects selected ![]() ![]() This will save you loads, and i mean loads of time going though each object and making sure you have done each one ![]() Now lets tweak the tank setting in the map. Select all your tanks (or w/e object type you want) in your map and lets first edit the spawn times as per the guide lines. In just 2 edits you have done all your tank spawn times ![]() Now just do the same to all the rest of your vehicles, select them up into groups, then edit that group all at the same time, do this till all your layers are complete ![]() TIP: to make life easier, to find what you want when scrolling down the list rename items so you can see what they are, like when you change a light jeep spawn to spawn a APC, tank, heavy jeep or w/e. Just right click on the object in the recorces tab and rename it. ![]() ![]() Once you have set all the object spanwer, spawn times etc, now we can get into the other more detialed areas of the settings now we have done the basic setting in bulk. First lets take any vehicles that you have in the center, at the mo on both the 64 and 32 I have 1 jeep spawning at every base in the center of the map. Now first what I want to do is too make all of these have a spawn delay, as thats part of the guide settings ![]() so first, select all the vehicles in the middle of the map, on every layer and then do them all in bluk, check the "spawndelayatstart" box near the top of the settings list and apply the setting to all selected objects. Now lets go to our Recorces tab and go selecting all the objects belonging to the US base (in this case the CP name you need to look out for is "ustown" but it will be diffrent depending on the CP name in your map ![]() ![]() go though both the 64 and 32 layers doing this so you get every object that belongs to the US main CP. Once done, you should only see select markers around your US Main base. if there is a marker selected near anouther base, that object needs to be checked. ![]() Now once this is done, we do not want any of team 1's stuff to spawn when they take team 2's main base, so we need to make sure that none of the objects on that base will spawn anything for team 1. Simpley go down to the "VehicleTeam1" box and select the no object box. ![]() Then apply changes to all objects. Dont worrie this will not effect the team 2 object spaner, only make the team 1 blank so nothing spawns for them if team 1 dose take the flag and hold it long enouth for an object to spawn. Do the same for the other teams main base but this time, make team 2's object spawner blank instead of team 1's ![]() Arty Cannons: Now in my version of Daqing there aint going to be any arty cannons, but i will do this purley for an exsample. Now I'm only going to do a USMC Arty cannon but you should get what you need to do. You place it as any other object spawner, like you would for a tank out of the list, but after placing it you will need set "TeamOnVehicle" to 1, (check the box) and you will also need to set the "Team" bit too "2" (if you want the arty cannon to work for team 2, other wise put in "1" for team 1, 0 is default). You dont need to worrie about setting the "Timetolive" or "distance" bits as the arty cannon is not going to move off the spawn location and it will need to before thous timers will start. ![]() You will also need to give them a respawn time of "99999" so that they never respawn, as per the mapping guidelines. JDAMs JDAMs are set up in exactly the same way as arty cannons above, as they are basically the same thing with the weapon being diffrent. Code:
- team 1 = jdam_team1 - team 2 = jdam_team2 Again, in my version of Daqing I have no use for rally points but if you do, here is how you set them up. If you have done the pr_edit tut and if you look down the bottom of your object spawner templates, you will find templates for all the types of rallypoints you should need (apart from the millita for the moment). Basicly all you need to do is set them up like any other object, adjust the settings as per the guide lines and team lock them and they should work ![]() Pickup Kits: Pickup kits are easy enouth to place down, there are object templates for most of them if you look, and you spawn them like any other object. There respawn time etc needs to be setup for how long they respawn after the person using it has died, and the kit exspiers from not being held by a player. That is basicly the end of the object spawners part. Just do the last finnishing touches like make an object have a sligthly extra long respawn time for w/e reason if you like, im personly just now going to finnish off with making some of the jeeps in the middle only spawn for 1 team, so the jeeps closest the teams flag will only spawn for that team. but depending on the map and what gameplay you want will decied this part. PCO Settings PCO settings are PCO spawners put on the map, that do not spawn anything instead the python code reads them and tweaks the settings where its needed. They should have the excat name as that stated below, and settings defined etc. It has to be in the GPO.con of that layer, and should be no more than one of each setting. gpm_tickets "gpm_tickets" works on ANY game mode and defines the tickets, dose not need to be used in AAS as it "should" be defined in the init.con but still can be used in AAS if needed. Code:
MinSpawnDelay = Team 1 Tickets MaxSpawnDelay = Team 2 Tickets Step 5: Combat Zones If you think the combat zones are fine as they are with your map, leave them be. If not, read this ![]() First of all you will need to delete your current combat zones. to do this, first go into the combat zone editor by clicking this button at the top. ![]() Once in the combat zone editor, you can now delete the old combat zones. You can not edit them you must delete them and then crate new ones over the top, this is why most ppl normaly leave them as they are unless they really need to be changed ![]() To delete them, first drag a selection box around 1 of the "corner" parts of the combat zone, cant do it on a strait line or it wont pick up the slection. ![]() Once selected the combat zone line will turn blue. when its blue hit the delete key, and a window will pop up asking if you want to delete the active (selected) combat area, click yes. Now lets create our new combat zone. make sure you delete the old combat zone first before making a new one or you can some times run into problems if you try to delete them later on. To start a new control point, right click where you want the start point to be and click on "Add Control Point". This is not a Control Point as in a flag so dont worrie, this is the start of your conmbat zone, not sure why they call it a CP but it is... ![]() you will see a green cube apear on the ground where you crated it, then go to your next point where you want the line to be connected too and right click again, and add anouther control point or just hold the "alt" key and click on the ground and a new one will pop up, connecting it with the last one. keeping on doing this till you get near the last/begging point. when you come to curves use as many points as you think nessary to make it look "round" at the tips on the minimap. looks really odd and tacky if you just see a zig zag on the map. When you come to the last/begging point, to make it join up and end the combat zone circle just click on the very zip of the start (while holding alt) and a window will pop up asking if you want to close the combat zone, click yes to close/finnish it. ![]() Once thats done your main combat zone should be complete ![]() Dome of Death To add a dome of death is pretty easy. What you want to do here is crate anouther combat zone, over the top of your base combat zone. Make sure to go over the base combat zone if you dont want the enemy to get around and behind it. Also you can keep the number of lines as low as possible for this as no one is going to see it on the minimap, and the more CPs you add the more lag it crates (but not very much). ![]() Now to crate this combat zone, into a dome of death we need to edit some of its settings. First drag a box around a coner bit again to make sure it is selected. Then if you look in your tweaker bar, you will notice a "Team" box. By defualt it is set to "0" which means the combat zone will effect both teams. if you change it to 1 or 2 it will effect the team selected. in this case I want to keep the MEC (team 1) out of this dome of death, so I simpley just change 0 to 1 and it will now only effect team 1. You will also now need to check the "Inverted" box in the tweaker bar to make it so the combat zone only is effective inside the ring where as defualt is outside. now you have a working dome of death ![]() Now to go into more depth about combat zones, I'm going to quickly exsplain the settings in the tweaker bar. ![]() ![]() ![]() ![]() ![]() VehicleType "0" = Land VehicleType "1" = Sea VehicleType "2" = Planes VehicleType "3" = Choppers VehicleType "4" = All VehicleType "5" = Planes/Choppers ![]() Step 6: Removing the Flag Polls All CPs need their physical flag polls removed, here is how you do it. This is infact best done outside the editor so lets first close it down, make sure you save everything first ![]() Open up "\*YOUT MAP*\Editor\GamePlayObjects.con\" file and scroll down to the Control Points part (tip: easit way to find it is just do a search for "control points"). Now for Darqing, I want to have the main base CPs have flag polls, but all the other inner flags can have them removed, so do not edit the CPs that you want to keep there flag polls. I'm going to take the "CPNAME_DO_64_refinery" flag for this exsample. Code:
rem [ControlPointTemplate: CPNAME_DO_64_refinery] ObjectTemplate.create ControlPoint CPNAME_DO_64_refinery ObjectTemplate.activeSafe ControlPoint CPNAME_DO_64_refinery ObjectTemplate.modifiedByUser "Edmund Fovargue" ObjectTemplate.setNetworkableInfo ControlPointInfo ObjectTemplate.isNotSaveable 1 ObjectTemplate.hasMobilePhysics 0 ObjectTemplate.hasCollisionPhysics 1 ObjectTemplate.physicsType Mesh rem ------------------------------------- ObjectTemplate.addTemplate flagpole rem ------------------------------------- ObjectTemplate.setControlPointName CPNAME_DO_64_refinery ObjectTemplate.radius 60 ObjectTemplate.radiusOffset 40/-20/0 ObjectTemplate.controlPointId 4 ObjectTemplate.areaValueTeam1 25 ObjectTemplate.areaValueTeam2 25 ObjectTemplate.timeToGetControl 120 ObjectTemplate.timeToLoseControl 120 ObjectTemplate.supplyGroupId 3 ObjectTemplate.hoistMinMax 0.2/0.9 Code:
rem [ControlPoint: CPNAME_DO_64_refinery] Object.create CPNAME_DO_64_refinery Object.absolutePosition -53.518/144.485/-243.046 Object.layer 2 Code:
rem ------------------------------------- ObjectTemplate.addTemplate flagpole rem ------------------------------------- Now that is not quite all of it as if you just leave it at that, you will have the top of the flag still sticking though the ground where the base of the flag poll was before. To stop this from happing in the 2nd group of the CP code, change the CP's absolutePosition so that it is 1 meter lower than it was before. for exsample. Before: Code:
rem [ControlPoint: CPNAME_DO_64_refinery] Object.create CPNAME_DO_64_refinery Object.absolutePosition -53.518/144.485/-243.046 Object.layer 2 Code:
rem [ControlPoint: CPNAME_DO_64_refinery] Object.create CPNAME_DO_64_refinery Object.absolutePosition -53.518/143.485/-243.046 Object.layer 2 so like we did in the last bit, change the "ObjectTemplate.radiusOffset" postion so its 1m higher than what it was before. Exsample. Before: Code:
rem [ControlPointTemplate: CPNAME_DO_64_refinery] ObjectTemplate.create ControlPoint CPNAME_DO_64_refinery ObjectTemplate.activeSafe ControlPoint CPNAME_DO_64_refinery ObjectTemplate.modifiedByUser "Edmund Fovargue" ObjectTemplate.setNetworkableInfo ControlPointInfo ObjectTemplate.isNotSaveable 1 ObjectTemplate.hasMobilePhysics 0 ObjectTemplate.hasCollisionPhysics 1 ObjectTemplate.physicsType Mesh rem ------------------------------------- ObjectTemplate.addTemplate flagpole rem ------------------------------------- ObjectTemplate.setControlPointName CPNAME_DO_64_refinery ObjectTemplate.radius 60 ObjectTemplate.radiusOffset 40/-20/0 ObjectTemplate.controlPointId 4 ObjectTemplate.areaValueTeam1 25 ObjectTemplate.areaValueTeam2 25 ObjectTemplate.timeToGetControl 120 ObjectTemplate.timeToLoseControl 120 ObjectTemplate.supplyGroupId 3 ObjectTemplate.hoistMinMax 0.2/0.9 Code:
rem [ControlPointTemplate: CPNAME_DO_64_refinery] ObjectTemplate.create ControlPoint CPNAME_DO_64_refinery ObjectTemplate.activeSafe ControlPoint CPNAME_DO_64_refinery ObjectTemplate.modifiedByUser "Edmund Fovargue" ObjectTemplate.setNetworkableInfo ControlPointInfo ObjectTemplate.isNotSaveable 1 ObjectTemplate.hasMobilePhysics 0 ObjectTemplate.hasCollisionPhysics 1 ObjectTemplate.physicsType Mesh rem ------------------------------------- ObjectTemplate.addTemplate flagpole rem ------------------------------------- ObjectTemplate.setControlPointName CPNAME_DO_64_refinery ObjectTemplate.radius 60 ObjectTemplate.radiusOffset 40/-19/0 ObjectTemplate.controlPointId 4 ObjectTemplate.areaValueTeam1 25 ObjectTemplate.areaValueTeam2 25 ObjectTemplate.timeToGetControl 120 ObjectTemplate.timeToLoseControl 120 ObjectTemplate.supplyGroupId 3 ObjectTemplate.hoistMinMax 0.2/0.9 ![]() ![]() After all that your flags will look like this ![]() ![]() ![]() Step 7: Final Tweaks Almost there ppl, not long now! ![]() First make sure the Editor closed. Open up the "\*YOUR MAP*\Init.con" file with a text editor, and then the first thing we want to add is the spawner files code. Without it your map will crash on load, and you will not be able to request kits etc if it did load. add this line of code: Code:
run ../../objects/common/spawners/spawners_common.con Code:
run ../../objects/common/spawners/spawners_us.con run ../../objects/common/spawners/spawners_mec.con run ../../objects/common/spawners/spawners_gb.con run ../../objects/common/spawners/spawners_ch.con run ../../objects/common/spawners/spawners_meinsurgent.con run ../../objects/common/spawners/spawners_chinsurgent.con Quote:
Lets move onto the kits setup for your map. Here are all the verations of kits you can use: Code:
rem GB VERSUS PLA rem ------------------------------- LevelSettings ------------------------------- rem ----------------------------------------------------------------------------- gameLogic.setTeamName 1 "CH" gameLogic.setTeamName 2 "GB" gameLogic.setTeamLanguage 1 "Chinese" gameLogic.setTeamLanguage 2 "GBEnglish" gameLogic.setTeamFlag 0 "flag_neutral" gameLogic.setTeamFlag 1 "flag_ch" gameLogic.setTeamFlag 2 "flag_gb" gameLogic.setKit 1 0 "ch_riflemanab" "ch_heavy_soldier" gameLogic.setKit 2 0 "gb_riflemanab" "gb_heavy_soldier" gameLogic.setKit 1 1 "ch_rifleman" "ch_heavy_soldier" gameLogic.setKit 2 1 "gb_rifleman" "gb_heavy_soldier" gameLogic.setKit 1 2 "ch_engineer" "ch_heavy_soldier" gameLogic.setKit 2 2 "gb_engineer" "gb_heavy_soldier" gameLogic.setKit 1 3 "ch_medic" "ch_lightarmor_soldier" gameLogic.setKit 2 3 "gb_medic" "gb_lightarmor_soldier" gameLogic.setKit 1 4 "ch_officer" "ch_heavy_soldier" gameLogic.setKit 2 4 "gb_officer" "gb_heavy_soldier" rem ----------------------------------------------------------------------------- rem GB VERSUS MEC rem ------------------------------- LevelSettings ------------------------------- rem ----------------------------------------------------------------------------- gameLogic.setTeamName 1 "MEC" gameLogic.setTeamName 2 "GB" gameLogic.setTeamLanguage 1 "MEC" gameLogic.setTeamLanguage 2 "GBEnglish" gameLogic.setTeamFlag 0 "flag_neutral" gameLogic.setTeamFlag 1 "flag_mec" gameLogic.setTeamFlag 2 "flag_gb" gameLogic.setKit 1 0 "mec_riflemanab" "mec_heavy_soldier" gameLogic.setKit 2 0 "gb_riflemanab" "gb_heavy_soldier" gameLogic.setKit 1 1 "mec_rifleman" "mec_heavy_soldier" gameLogic.setKit 2 1 "gb_rifleman" "gb_heavy_soldier" gameLogic.setKit 1 2 "mec_engineer" "mec_heavy_soldier" gameLogic.setKit 2 2 "gb_engineer" "gb_heavy_soldier" gameLogic.setKit 1 3 "mec_medic" "mec_lightarmor_soldier" gameLogic.setKit 2 3 "gb_medic" "gb_lightarmor_soldier" gameLogic.setKit 1 4 "mec_officer" "mec_heavy_soldier" gameLogic.setKit 2 4 "gb_officer" "gb_heavy_soldier" rem ----------------------------------------------------------------------------- rem GB VERSUS INSURGENTS rem ------------------------------- LevelSettings ------------------------------- rem ----------------------------------------------------------------------------- gameLogic.setTeamName 1 "MEInsurgent" gameLogic.setTeamName 2 "GB" gameLogic.setTeamLanguage 1 "MEC" gameLogic.setTeamLanguage 2 "GBEnglish" gameLogic.setTeamFlag 0 "flag_neutral" gameLogic.setTeamFlag 1 "flag_in" gameLogic.setTeamFlag 2 "flag_gb" gameLogic.setKit 1 0 "meinsurgent_insurgent" "meinsurgent_soldier" gameLogic.setKit 2 0 "gb_riflemanab" "gb_heavy_soldier" gameLogic.setKit 1 1 "meinsurgent_insurgent" "meinsurgent_soldier" gameLogic.setKit 2 1 "gb_rifleman" "gb_heavy_soldier" gameLogic.setKit 1 2 "meinsurgent_ambusher" "meinsurgent_heavy_soldier" gameLogic.setKit 2 2 "gb_engineer" "gb_heavy_soldier" gameLogic.setKit 1 3 "meinsurgent_warveteran" "meinsurgent_medium_soldier" gameLogic.setKit 2 3 "gb_medic" "gb_lightarmor_soldier" gameLogic.setKit 1 4 "meinsurgent_officer" "meinsurgent_soldier" gameLogic.setKit 2 4 "gb_officer" "gb_heavy_soldier" rem ----------------------------------------------------------------------------- rem GB VERSUS MILITIA rem ------------------------------- LevelSettings ------------------------------- rem ----------------------------------------------------------------------------- gameLogic.setTeamName 1 "CHinsurgent" gameLogic.setTeamName 2 "GB" gameLogic.setTeamLanguage 1 "rebels" gameLogic.setTeamLanguage 2 "GBEnglish" gameLogic.setTeamFlag 0 "flag_neutral" gameLogic.setTeamFlag 1 "flag_re" gameLogic.setTeamFlag 2 "flag_gb" gameLogic.setKit 1 0 "chinsurgent_scout" "chinsurgent_soldier" gameLogic.setKit 2 0 "gb_riflemanab" "gb_heavy_soldier" gameLogic.setKit 1 1 "chinsurgent_militant" "chinsurgent_heavy_soldier" gameLogic.setKit 2 1 "gb_Rifleman" "gb_heavy_soldier" gameLogic.setKit 1 2 "chinsurgent_sapper" "chinsurgent_heavy_soldier" gameLogic.setKit 2 2 "gb_engineer" "gb_heavy_soldier" gameLogic.setKit 1 3 "chinsurgent_medic" "chinsurgent_soldier" gameLogic.setKit 2 3 "gb_medic" "gb_lightarmor_soldier" gameLogic.setKit 1 4 "chinsurgent_officer" "chinsurgent_heavy_soldier" gameLogic.setKit 2 4 "gb_officer" "gb_heavy_soldier" rem ----------------------------------------------------------------------------- rem USMC VERSUS PLA rem ------------------------------- LevelSettings ------------------------------- rem ----------------------------------------------------------------------------- gameLogic.setTeamName 1 "CH" gameLogic.setTeamName 2 "US" gameLogic.setTeamLanguage 1 "Chinese" gameLogic.setTeamLanguage 2 "English" gameLogic.setTeamFlag 0 "flag_neutral" gameLogic.setTeamFlag 1 "flag_ch" gameLogic.setTeamFlag 2 "flag_us" gameLogic.setKit 1 0 "ch_riflemanab" "ch_heavy_soldier" gameLogic.setKit 2 0 "us_riflemanab" "us_heavywhite_soldier" gameLogic.setKit 1 1 "ch_rifleman" "ch_heavy_soldier" gameLogic.setKit 2 1 "us_rifleman" "us_heavy_soldier" gameLogic.setKit 1 2 "ch_engineer" "ch_heavy_soldier" gameLogic.setKit 2 2 "us_engineer" "us_heavywhite_soldier" gameLogic.setKit 1 3 "ch_medic" "ch_lightarmor_soldier" gameLogic.setKit 2 3 "us_medic" "us_lightarmor_soldier" gameLogic.setKit 1 4 "ch_officer" "ch_heavy_soldier" gameLogic.setKit 2 4 "us_officer" "us_heavywhite_soldier" rem ----------------------------------------------------------------------------- rem USMC VERSUS MEC rem ------------------------------- LevelSettings ------------------------------- rem ----------------------------------------------------------------------------- gameLogic.setTeamName 1 "MEC" gameLogic.setTeamName 2 "US" gameLogic.setTeamLanguage 1 "MEC" gameLogic.setTeamLanguage 2 "English" gameLogic.setTeamFlag 0 "flag_neutral" gameLogic.setTeamFlag 1 "flag_mec" gameLogic.setTeamFlag 2 "flag_us" gameLogic.setKit 1 0 "mec_riflemanab" "mec_heavy_soldier" gameLogic.setKit 2 0 "us_riflemanAB" "us_heavywhite_soldier" gameLogic.setKit 1 1 "mec_rifleman" "mec_heavy_soldier" gameLogic.setKit 2 1 "us_rifleman" "us_heavy_soldier" gameLogic.setKit 1 2 "mec_engineer" "mec_heavy_soldier" gameLogic.setKit 2 2 "us_engineer" "us_heavywhite_soldier" gameLogic.setKit 1 3 "mec_medic" "mec_lightarmor_soldier" gameLogic.setKit 2 3 "us_medic" "us_lightarmor_soldier" gameLogic.setKit 1 4 "mec_officer" "mec_heavy_soldier" gameLogic.setKit 2 4 "us_officer" "us_heavywhite_soldier" rem ----------------------------------------------------------------------------- rem USMC VERSUS INSURGENTS rem ------------------------------- LevelSettings ------------------------------- rem ----------------------------------------------------------------------------- gameLogic.setTeamName 1 "MEInsurgent" gameLogic.setTeamName 2 "US" gameLogic.setTeamLanguage 1 "MEC" gameLogic.setTeamLanguage 2 "English" gameLogic.setTeamFlag 0 "flag_neutral" gameLogic.setTeamFlag 1 "flag_in" gameLogic.setTeamFlag 2 "flag_us" gameLogic.setKit 1 0 "meinsurgent_insurgent" "meinsurgent_soldier" gameLogic.setKit 2 0 "us_riflemanab" "us_heavywhite_soldier" gameLogic.setKit 1 1 "meinsurgent_insurgent" "meinsurgent_soldier" gameLogic.setKit 2 1 "us_rifleman" "us_heavy_soldier" gameLogic.setKit 1 2 "meinsurgent_ambusher" "meinsurgent_heavy_soldier" gameLogic.setKit 2 2 "us_engineer" "us_heavywhite_soldier" gameLogic.setKit 1 3 "meinsurgent_warveteran" "meinsurgent_medium_soldier" gameLogic.setKit 2 3 "us_medic" "us_lightarmor_soldier" gameLogic.setKit 1 4 "meinsurgent_officer" "meinsurgent_soldier" gameLogic.setKit 2 4 "us_officer" "us_heavywhite_soldier" rem ----------------------------------------------------------------------------- ![]() ![]() ![]() Now onto the last bit, tickets. if you scroll down to a bit that looks something like this: Code:
gameLogic.setDefaultNumberOfTicketsEx 16 1 100 gameLogic.setDefaultNumberOfTicketsEx 16 2 100 gameLogic.setDefaultNumberOfTicketsEx 32 1 200 gameLogic.setDefaultNumberOfTicketsEx 32 2 200 gameLogic.setDefaultNumberOfTicketsEx 64 1 300 gameLogic.setDefaultNumberOfTicketsEx 64 2 300 gameLogic.setDefaultNumberOfTicketsEx 128 1 200 gameLogic.setDefaultNumberOfTicketsEx 128 2 200 gameLogic.setDefaultTimeToNextAIWave 0 gameLogic.setTicketLossAtEndPerMin 200 gameLogic.setTicketLossPerMin 1 10 gameLogic.setTicketLossPerMin 2 10 Code:
gameLogic.setDefaultNumberOfTicketsEx ## * --- the "*" being team 1 or team 2, simple enouth to under stand. then the "---" is the amount of tickets. so if we look above, the first line tells us on the 16 man layer, team 1 has 100 tickets. 2nd line tells us on the 16man layer, team 2 has 100 tickets, etc etc. Now all you want to be chaning is the ticket values. So as per the mapping guidelines, im going to change mine so both teams have equal tickets (on each map size) as its a symmetrical map but you can easily make teams have diffrent amount of starting tickets for an asymmetrical map by just giving team 1 and team 2 diffrent ticket vlaues. The "gameLogic.setDefaultTimeToNextAIWave" is to do with SP, would leave it as it is. Code:
gameLogic.setTicketLossPerMin 1 10 gameLogic.setTicketLossPerMin 2 10 After my edits: Code:
gameLogic.setDefaultNumberOfTicketsEx 16 1 150 gameLogic.setDefaultNumberOfTicketsEx 16 2 150 gameLogic.setDefaultNumberOfTicketsEx 32 1 300 gameLogic.setDefaultNumberOfTicketsEx 32 2 300 gameLogic.setDefaultNumberOfTicketsEx 64 1 500 gameLogic.setDefaultNumberOfTicketsEx 64 2 500 gameLogic.setDefaultNumberOfTicketsEx 128 1 200 gameLogic.setDefaultNumberOfTicketsEx 128 2 200 gameLogic.setDefaultTimeToNextAIWave 0 gameLogic.setTicketLossAtEndPerMin 200 gameLogic.setTicketLossPerMin 1 10 gameLogic.setTicketLossPerMin 2 10 Code:
gameLogic.setTeamDropVehicle 1 "mark_team1" gameLogic.setTeamDropVehicle 2 "mark_team2" ![]() After you have done all that, save up the init.con file, exit it and then you need to make it read only so that the editor dose not change it and delete your changes. Probaly a good idea to also make a backup of this file / all of your work aswell right after this ![]() ![]() ![]() Step 8: Packing up the map In this Tut we have only changed afew files that belong to the server.zip If you have followed this tut excatly you will only need to pack the files I list below, if not pack any extra files you have changed in the correct places. The files you need to pack up into the server.zip are:
You will also need to packup your editor folder (with only the .con files, dont put in the editor colour and detail maps they will take up far too much space) and attach it to the upload of your map for future audits + backup ![]() Crate a .zip with the map folder, inside the folder the server.zip and anouther editor.zip with your editor files and upload it. Comments / Questions / Have I missed anything out? ![]() | |
|
||
![]() |
Last edited by [R-DEV]Rhino; 2010-03-30 at 09:30..
![]() |
![]() |
#2 |
Join Date: Nov 2008
Posts: 1,996
![]() |
![]()
the layers.con link doesn't work :S
|
![]() |
![]() |
![]() |
#3 |
Join Date: Aug 2007
Posts: 1,316
![]()
Location: The 44 Islands ;)
|
![]() |
![]() |
![]() |
![]() |
#4 |
Banned
![]() Join Date: Mar 2009
Posts: 148
![]()
Location: PEI
|
![]()
Wow thank you very much Rhino this will be very very useful love all the info.
Thank You. Cheers. |
![]() |
![]() |
![]() |
#5 |
Join Date: Jun 2007
Posts: 2,590
![]()
Location: Kashan Desert
|
![]()
Whats the point of the First step?
I wanna learn the AAS Mode so i can continue whit my Project, these Flag and Object options are good.. About the Flagpole.. you ever tried to rename it, theres 3 different "Flags" in bf2, one is the Flagpole and the rest are whitout the pole (duh) :P Right now i cant remember thees names. Also, thanks for the Combat Zone tuto bro! |
![]() |
![]() |
![]() |
#6 | |
Retired PR Developer
![]() |
![]() Quote:
if someone could send it to me xfire = trekkyaaron | |
|
||
![]() |
Last edited by Rudd; 2009-06-22 at 03:49..
![]() |
![]() |
#7 |
Join Date: Jun 2009
Posts: 1,722
![]()
Location: Auckland
|
![]()
Links to guidelines don't work :P Also do u have a tut for Insurgency mode Rhino? Cheers
|
![]() |
![]() |
![]() |
#8 |
Join Date: Aug 2008
Posts: 3,506
![]()
Location: St. Catharines, ON
|
![]()
Quick question, if you are auditing a current pr map, but are pretty much making all the CP/vehicles/spawns from scratch, do you still need to go through the first step? Or what would you do to set it up?
|
![]() |
![]() |
![]() |
#9 |
Retired PR Developer
![]() |
![]() |
|
|
![]() |
![]() |
![]() |
#10 |
Retired PR Developer
![]() |
![]()
Once the audit is done, how do you get it to function as a seperate folder to teh original?
lets say I audited Kashan, and I've got the audit under the name audit_kashan I've done https://www.realitymod.com/forum/f18...alisation.html so all the flags function under correct names etc. what do I do next to get the game to understand this map is independant of the original? because so far I can only get the damned thing to work if I have the folder under the name of the original map, which has obvious implications. is it something to do with the gsid? |
|
|
![]() |
![]() |
![]() |
Tags |
audit, map, tutorial |
|
|