project reality header
Go Back   Project Reality Forums > PR:BF2 Mod Forums > PR:BF2 Community Modding
19 Sep 2024, 00:00:00 (PRT)
Register Developer Blogs Members List Search Quick Links
PR:BF2 Community Modding Making or wanting help making your own asset? Check in here

Reply
 
Thread Tools Display Modes
Old 2009-06-27, 00:16   #1
choppergirl
Default [Help] How do you add Static Bridge Parts to a Map without Crashing Game Client

I develop/run a huge, popular MOD (for both BF2142 demo and BF2 demo servers) called 'AIRWAR', which is a 100% Server Side Mod developed over 2 years. (Should you want to check it out, just download the stock BF2142 demo game client or BF2 demo game client and connect to my server).

Anyway, my question for any mod developer out there, pertains to adding Static Object 'destructible' Bridge Parts to a BF2 map and having them appear and function correctly.

I read on the main PR page once upon a time, that you should limit static objects to 350. That has been the only reference I have ever seen to what this fuzzy unknown limit might be. So I assume someone here has quite a bit of experience messing about with adding Static Objects to a BF2 map.

In BF2142, if you want to add another destructible object, you simply clone its spawn in StaticObjects.con, change the X/Z/Ys, and everything works out fine. This is the way it should be.

However, in BF2, if you do the same, cloning a destructible object inside StaticObjects.con, it will not appear at all. I found a trick however, you can take this clone and move it into GamePlayObjects.con, and voila, it will now appear in your map.


Well, sort of. As more players enter the game, sometimes these cloned destructible objects will become 'invisible'. Collision mesh is still there, but they will disappear. Or they will display other froopy behavior - destroyed bridge parts sometimes will be able to be repaired, sometimes not. Or landing a helicopter on them... sometimes it will stay, sometimes it will not.

For me, the most serious problem is every flip flop of a new map reload, all my new cloned bridge parts would be visible one game to everybody, then the next game invisible. And not all in sync... players that connect in the second game, will see them, but in the next game, won't, etc.


I've built some incredible structures out of just the two wooden and concrete bridge parts, and I'd like to find some way to be able to keep them on my BF2 server and not have to discard them as being unworkable...

Gulf of Oman - AIRWAR Waterworld Photos as Slideshow

Gulf of Oman - AIRWAR Waterworld Photos in Grid View


My theory was my problems were being cause because I was exceeding some unknown limit, so I coded in python a dynamic way to spawn only some of them some of the time on a map; with each new rotation a different smaller set gets shown way down to a much more sane number of them. However, I'm running into a different problem now, in that if I add even one it crashes the game client on map load.

In summary, what is the proper method to add a new destructible static object into a map (server side only!) and have it work *right*?

CHOPPERGIRL
choppergirl.air-war.org
choppergirl is offline
Last edited by choppergirl; 2009-06-27 at 00:31..
Reply With Quote
Old 2009-06-27, 01:34   #2
Rhino
Retired PR Developer
Supporting Member

Rhino's Avatar
Default Re: [Help] How do you add Static Bridge Parts to a Map without Crashing Game Client

The limit for networkable objects in BF2 (and most likley the same for BF2142) is 1024 networkable objects. Networkable objects include things such as PCO (Player Controlled Objects, such as vehicles), players, destructible objects and a few other things that basically the server needs to have control over.

The limit of 350 dest objects is most likely an advised limit you should have in your map but you can well exceed this number, the debugger in fact advises no more than 100 dest objects in a map
You can check how many dest objects are in your map in the bf2 editor, down the bottom in the level info bit if you are unsure of how many are in your map.


For your bridges not appearing, it is most likely because its a server side only change, have you attempted to try a client side change as well just to see if it works? If it dont work then there is something you must be doing wrong with the code. I wouldn't put dest objects or statics in the GPO.con file since while it dose work, its best you load them from the staticobjects.con

I would expect that the reason for your bridges etc disappearing is a mismatch between client and server info, some times even in vbf2 dest objects dont appear but this is very rare.

Anyways I can't really give you much more info than that, but hope that helps.

Rhino is offline Reply With Quote
Old 2009-06-27, 20:40   #3
choppergirl
Default Re: [Help] How do you add Static Bridge Parts to a Map without Crashing Game Client

Yes this could be a possible cause, that some client side mod also needs to be done. Which would screw the pooch for me, because my mods must only be done server side.

The contrary observation I have made to indicate otherwise though is, there are BF2 demo server maps out there, that use the Wooden Bridge destructible part to build highways and race tracks in the sky, server side only, and their maps work just fine from map to map. I have tried to get in touch with these folks, to ask them, how they are doing it (not all of them speak English).

Also, believe it or not (I took screen snapshots), I've seen a server side map mod in BF2142 demo server that actually duplicated the NON-destructible static objects and had them appear in the map (trees, houses, antenna towers, etc). How they did it I would love to know, because it would be the holy grail for me. My experience was that this was impossible, and I wouldn't of believed it if I hadn't of seen it first hand. If I knew how they did this, I could wipe a map clean down to the ground, and build whole new map layouts from parts fresh, all server side. Unfortunately the server admin was Japanese and I could not communicate with him or figure out for sure I was emailing the right person.

Another modder, showed me how to duplicate nondestructible static objects inside the fullgame in the fullgame files, which was a snap. But somehow this other guy was doing it on the dedicated server, server side only, as I was connecting to his server with an unmodified BF2142 demo client. As it stands now, I can't add a single tree, bush, or blade of grass to a map server side, because its a nondestructible static object. If you add it, it does not appear. The collision mesh for it will, and you can bump into it and stand on top of it, but it will not be visible.


It might be that you can pull these things off using bfeditor that you can't do simply editing text files, which is the way that I do it. I find bfeditor far too complex and unusable, and haven't figured out how to get to the point where you import a whole map and move objects around with it. I can load everything up, but all I see there are ways to edit objects (tanks, helicopters, etc) but no way to move positions of statics around on a map. That is my best guess to date.

-

My experience so far:

Creating more destructible objects in BF2142 inside StaticObjects, it works just fine, and no client side mod needs to be done. In BF2, its a different story. They won't appear, unless you put them in GPO, and then they exhibit weird behavior.

Conversely, I found that the fileManager.fileExists, fileManager.fileMove, and fileManager.fileCopy disappeared from BF2142. These work inside .con files in BF2, but not BF2142. (fileManager.mountArchive, works as both, ans run/import whatever.con work in both). ConGrammar - BF2 Technical Information Wiki
choppergirl is offline
Last edited by choppergirl; 2009-06-27 at 20:47..
Reply With Quote
Old 2009-06-27, 20:49   #4
Rhino
Retired PR Developer
Supporting Member

Rhino's Avatar
Default Re: [Help] How do you add Static Bridge Parts to a Map without Crashing Game Client

you can also put statics into the GPO.con file the same way you would see them in the staticobjects.con file.

Did you do the bridge before as spawning the object as a PCO? might be your problem.

For example this is what I think you need to do off the top of my head. Here is a modified version of the GoO 16p GPO.con, all added bits are highlighted in bold and red, you will need to scroll down a bit to find it.

Code:
gameLogic.setTeamDropVehicle 1 "jep_vodnik"
gameLogic.setTeamDropVehicle 2 "usjep_hmmwv"

rem ********** Object Spawner **********
rem [ObjectSpawnerTemplate: cpname_go_16_beach_0_0]
ObjectTemplate.create ObjectSpawner cpname_go_16_beach_0_0
ObjectTemplate.activeSafe ObjectSpawner cpname_go_16_beach_0_0
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.setObjectTemplate 1 jep_vodnik
ObjectTemplate.setObjectTemplate 2 usjep_hmmwv

rem [ObjectSpawnerTemplate: cpname_go_16_beach_1_0]
ObjectTemplate.create ObjectSpawner cpname_go_16_beach_1_0
ObjectTemplate.activeSafe ObjectSpawner cpname_go_16_beach_1_0
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.setObjectTemplate 1 rutnk_t90
ObjectTemplate.setObjectTemplate 2 ustnk_m1a2

rem [ObjectSpawnerTemplate: cpname_go_16_beach_jeep]
ObjectTemplate.create ObjectSpawner cpname_go_16_beach_jeep
ObjectTemplate.activeSafe ObjectSpawner cpname_go_16_beach_jeep
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.setObjectTemplate 1 jep_vodnik
ObjectTemplate.setObjectTemplate 2 usjep_hmmwv

rem [ObjectSpawnerTemplate: cpname_go_16_beach_ART]
ObjectTemplate.create ObjectSpawner cpname_go_16_beach_ART
ObjectTemplate.activeSafe ObjectSpawner cpname_go_16_beach_ART
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.setObjectTemplate 2 USART_LW155
ObjectTemplate.minSpawnDelay 260
ObjectTemplate.maxSpawnDelay 360
ObjectTemplate.holdObject 1
ObjectTemplate.teamOnVehicle 1

rem [ObjectSpawnerTemplate: CPNAME_GO_16_constructionsite_ARTILLERY]
ObjectTemplate.create ObjectSpawner CPNAME_GO_16_constructionsite_ARTILLERY
ObjectTemplate.activeSafe ObjectSpawner CPNAME_GO_16_constructionsite_ARTILLERY
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.setObjectTemplate 1 ARS_D30
ObjectTemplate.minSpawnDelay 260
ObjectTemplate.maxSpawnDelay 360
ObjectTemplate.teamOnVehicle 1

rem [ObjectSpawnerTemplate: cpname_go_16_beach_Radar]
ObjectTemplate.create ObjectSpawner cpname_go_16_beach_Radar
ObjectTemplate.activeSafe ObjectSpawner cpname_go_16_beach_Radar
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.setObjectTemplate 2 mobileradar_us_dest
ObjectTemplate.minSpawnDelay 260
ObjectTemplate.maxSpawnDelay 360
ObjectTemplate.teamOnVehicle 1

rem [ObjectSpawnerTemplate: cpname_go_16_beach_UAV]
ObjectTemplate.create ObjectSpawner cpname_go_16_beach_UAV
ObjectTemplate.activeSafe ObjectSpawner cpname_go_16_beach_UAV
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.setObjectTemplate 2 aircontroltower
ObjectTemplate.minSpawnDelay 260
ObjectTemplate.maxSpawnDelay 360
ObjectTemplate.teamOnVehicle 1

rem [ObjectSpawnerTemplate: CPNAME_GO_16_constructionsite_RADAR]
ObjectTemplate.create ObjectSpawner CPNAME_GO_16_constructionsite_RADAR
ObjectTemplate.activeSafe ObjectSpawner CPNAME_GO_16_constructionsite_RADAR
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.setObjectTemplate 1 mobileradar_mech_dest
ObjectTemplate.minSpawnDelay 260
ObjectTemplate.maxSpawnDelay 360
ObjectTemplate.teamOnVehicle 1

rem [ObjectSpawnerTemplate: CPNAME_GO_16_constructionsite_UAV]
ObjectTemplate.create ObjectSpawner CPNAME_GO_16_constructionsite_UAV
ObjectTemplate.activeSafe ObjectSpawner CPNAME_GO_16_constructionsite_UAV
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.setObjectTemplate 1 aircontroltower_mec
ObjectTemplate.minSpawnDelay 260
ObjectTemplate.maxSpawnDelay 360
ObjectTemplate.teamOnVehicle 1

rem [ObjectSpawnerTemplate: cpname_go_16_city_SMG]
ObjectTemplate.create ObjectSpawner cpname_go_16_city_SMG
ObjectTemplate.activeSafe ObjectSpawner cpname_go_16_city_SMG
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.setObjectTemplate 1 MEC_BIPOD
ObjectTemplate.setObjectTemplate 2 US_BIPOD

rem [ObjectSpawnerTemplate: cpname_go_16_beach_SMG]
ObjectTemplate.create ObjectSpawner cpname_go_16_beach_SMG
ObjectTemplate.activeSafe ObjectSpawner cpname_go_16_beach_SMG
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.setObjectTemplate 1 MEC_BIPOD
ObjectTemplate.setObjectTemplate 2 US_BIPOD

rem [ObjectSpawnerTemplate: cpname_go_16_village_ME_US_SMG]
ObjectTemplate.create ObjectSpawner cpname_go_16_village_ME_US_SMG
ObjectTemplate.activeSafe ObjectSpawner cpname_go_16_village_ME_US_SMG
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.setObjectTemplate 1 MEC_BIPOD
ObjectTemplate.setObjectTemplate 2 US_BIPOD

rem [ObjectSpawnerTemplate: CPNAME_GO_16_constructionsite_ME_US_HeavyJeep]
ObjectTemplate.create ObjectSpawner CPNAME_GO_16_constructionsite_ME_US_HeavyJeep
ObjectTemplate.activeSafe ObjectSpawner CPNAME_GO_16_constructionsite_ME_US_HeavyJeep
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.setObjectTemplate 1 JEP_VODNIK
ObjectTemplate.setObjectTemplate 2 USJEP_HMMWV

rem [ObjectSpawnerTemplate: CPNAME_GO_16_constructionsite_ME_US_HeavyJeep_0]
ObjectTemplate.create ObjectSpawner CPNAME_GO_16_constructionsite_ME_US_HeavyJeep_0
ObjectTemplate.activeSafe ObjectSpawner CPNAME_GO_16_constructionsite_ME_US_HeavyJeep_0
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.setObjectTemplate 1 JEP_VODNIK
ObjectTemplate.setObjectTemplate 2 USJEP_HMMWV

rem [ObjectSpawnerTemplate: CPNAME_GO_16_constructionsite_ME_US_HeavyTank]
ObjectTemplate.create ObjectSpawner CPNAME_GO_16_constructionsite_ME_US_HeavyTank
ObjectTemplate.activeSafe ObjectSpawner CPNAME_GO_16_constructionsite_ME_US_HeavyTank
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.setObjectTemplate 1 RUTNK_T90
ObjectTemplate.setObjectTemplate 2 USTNK_M1A2

if v_arg1 == host

rem *** rock5m ***
Object.create rock5m
Object.absolutePosition 70.703/36.829/-293.070
Object.rotation 109.0/-2.0/70.2
Object.layer 1

rem *** woodsteel_bridge_segment ***
Object.create woodsteel_bridge_segment
Object.absolutePosition -64.342/27.942/160.579
Object.rotation 45.0/0.0/0.0
Object.layer 1

rem *** house_medium_03 ***
Object.create house_medium_03
Object.absolutePosition 83.870/44.550/-2.302
Object.rotation 90.0/0.0/0.0
Object.layer 1

   rem [ObjectSpawner: cpname_go_16_beach_0_0]
   Object.create cpname_go_16_beach_0_0
   Object.absolutePosition 45.051/37.600/-303.295
   Object.rotation -27.685/0.000/0.000
   Object.setControlPointId 5
   Object.layer 4

   rem [ObjectSpawner: cpname_go_16_beach_1_0]
   Object.create cpname_go_16_beach_1_0
   Object.absolutePosition 46.340/37.527/-266.689
   Object.rotation -51.853/0.000/0.000
   Object.setControlPointId 5
   Object.layer 4

   rem [ObjectSpawner: cpname_go_16_beach_jeep]
   Object.create cpname_go_16_beach_jeep
   Object.absolutePosition 45.114/37.600/-285.670
   Object.rotation -51.146/0.000/0.000
   Object.setControlPointId 5
   Object.layer 4

   rem [ObjectSpawner: cpname_go_16_beach_ART]
   Object.create cpname_go_16_beach_ART
   Object.absolutePosition 59.449/37.600/-294.472
   Object.rotation 0.000/0.000/0.000
   Object.setControlPointId 5
   Object.layer 4

   rem [ObjectSpawner: CPNAME_GO_16_constructionsite_ARTILLERY]
   Object.create CPNAME_GO_16_constructionsite_ARTILLERY
   Object.absolutePosition 34.789/42.099/-16.138
   Object.rotation -175.709/0.000/0.000
   Object.setControlPointId 301
   Object.layer 4

   rem [ObjectSpawner: cpname_go_16_beach_Radar]
   Object.create cpname_go_16_beach_Radar
   Object.absolutePosition 11.127/39.415/-291.079
   Object.rotation 0.000/0.000/0.000
   Object.setControlPointId 5
   Object.layer 4

   rem [ObjectSpawner: cpname_go_16_beach_UAV]
   Object.create cpname_go_16_beach_UAV
   Object.absolutePosition 36.130/37.600/-314.130
   Object.rotation 0.000/0.000/0.000
   Object.setControlPointId 5
   Object.layer 4

   rem [ObjectSpawner: CPNAME_GO_16_constructionsite_RADAR]
   Object.create CPNAME_GO_16_constructionsite_RADAR
   Object.absolutePosition 51.458/41.532/55.924
   Object.rotation -90.000/0.000/0.000
   Object.setControlPointId 301
   Object.layer 4

   rem [ObjectSpawner: CPNAME_GO_16_constructionsite_UAV]
   Object.create CPNAME_GO_16_constructionsite_UAV
   Object.absolutePosition 88.021/40.400/56.000
   Object.rotation -90.000/0.000/0.000
   Object.setControlPointId 301
   Object.layer 4

   rem [ObjectSpawner: cpname_go_16_city_SMG]
   Object.create cpname_go_16_city_SMG
   Object.absolutePosition 89.541/41.572/-28.278
   Object.rotation -180.000/0.000/0.000
   Object.setControlPointId 19
   Object.layer 4

   rem [ObjectSpawner: cpname_go_16_beach_SMG]
   Object.create cpname_go_16_beach_SMG
   Object.absolutePosition 25.390/38.561/-272.283
   Object.rotation 0.000/0.000/0.000
   Object.setControlPointId 5
   Object.layer 4

   rem [ObjectSpawner: cpname_go_16_village_ME_US_SMG]
   Object.create cpname_go_16_village_ME_US_SMG
   Object.absolutePosition 12.202/34.199/-140.701
   Object.rotation 37.169/0.000/0.000
   Object.setControlPointId 20
   Object.layer 4

   rem [ObjectSpawner: CPNAME_GO_16_constructionsite_ME_US_HeavyJeep]
   Object.create CPNAME_GO_16_constructionsite_ME_US_HeavyJeep
   Object.absolutePosition 102.876/40.400/40.622
   Object.rotation -180.000/0.000/0.000
   Object.setControlPointId 301
   Object.layer 4

   rem [ObjectSpawner: CPNAME_GO_16_constructionsite_ME_US_HeavyJeep_0]
   Object.create CPNAME_GO_16_constructionsite_ME_US_HeavyJeep_0
   Object.absolutePosition 120.775/40.400/36.611
   Object.rotation -90.000/0.000/0.000
   Object.setControlPointId 301
   Object.layer 4

   rem [ObjectSpawner: CPNAME_GO_16_constructionsite_ME_US_HeavyTank]
   Object.create CPNAME_GO_16_constructionsite_ME_US_HeavyTank
   Object.absolutePosition 65.966/40.400/4.319
   Object.rotation 50.773/0.000/0.000
   Object.setControlPointId 301
   Object.layer 4

endIf

rem ********** Spawn Points **********
rem [SpawnPointTemplate: cpname_go_16_beach_1]
ObjectTemplate.create SpawnPoint cpname_go_16_beach_1
ObjectTemplate.activeSafe SpawnPoint cpname_go_16_beach_1
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.setControlPointId 5

rem [SpawnPoint: cpname_go_16_beach_1]
Object.create cpname_go_16_beach_1
Object.absolutePosition 20.125/37.600/-298.475
Object.rotation 0.000/0.000/0.000
Object.layer 4

rem [SpawnPointTemplate: cpname_go_16_beach_3]
ObjectTemplate.create SpawnPoint cpname_go_16_beach_3
ObjectTemplate.activeSafe SpawnPoint cpname_go_16_beach_3
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.setControlPointId 5

rem [SpawnPoint: cpname_go_16_beach_3]
Object.create cpname_go_16_beach_3
Object.absolutePosition 50.334/37.600/-277.389
Object.rotation -88.984/0.000/0.000
Object.layer 4

rem [SpawnPointTemplate: cpname_go_16_city_3]
ObjectTemplate.create SpawnPoint cpname_go_16_city_3
ObjectTemplate.activeSafe SpawnPoint cpname_go_16_city_3
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.setControlPointId 19

rem [SpawnPoint: cpname_go_16_city_3]
Object.create cpname_go_16_city_3
Object.absolutePosition 119.404/40.400/-16.740
Object.rotation -88.429/0.000/0.000
Object.layer 4

rem [SpawnPointTemplate: cpname_go_16_city_4]
ObjectTemplate.create SpawnPoint cpname_go_16_city_4
ObjectTemplate.activeSafe SpawnPoint cpname_go_16_city_4
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.setControlPointId 19

rem [SpawnPoint: cpname_go_16_city_4]
Object.create cpname_go_16_city_4
Object.absolutePosition 114.690/37.800/-51.313
Object.rotation 121.611/0.000/0.000
Object.layer 4

rem [SpawnPointTemplate: cpname_go_16_city_6]
ObjectTemplate.create SpawnPoint cpname_go_16_city_6
ObjectTemplate.activeSafe SpawnPoint cpname_go_16_city_6
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.setControlPointId 19

rem [SpawnPoint: cpname_go_16_city_6]
Object.create cpname_go_16_city_6
Object.absolutePosition 79.387/40.400/-22.049
Object.rotation 89.500/0.000/0.000
Object.layer 4

rem [SpawnPointTemplate: cpname_go_16_city_7]
ObjectTemplate.create SpawnPoint cpname_go_16_city_7
ObjectTemplate.activeSafe SpawnPoint cpname_go_16_city_7
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.setControlPointId 19

rem [SpawnPoint: cpname_go_16_city_7]
Object.create cpname_go_16_city_7
Object.absolutePosition 119.429/40.400/-16.784
Object.rotation -88.156/0.000/0.000
Object.layer 4

rem [SpawnPointTemplate: cpname_go_16_village_1]
ObjectTemplate.create SpawnPoint cpname_go_16_village_1
ObjectTemplate.activeSafe SpawnPoint cpname_go_16_village_1
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.setControlPointId 20

rem [SpawnPoint: cpname_go_16_village_1]
Object.create cpname_go_16_village_1
Object.absolutePosition 59.951/37.600/-174.967
Object.rotation -58.711/0.000/0.000
Object.layer 4

rem [SpawnPointTemplate: cpname_go_16_village_2]
ObjectTemplate.create SpawnPoint cpname_go_16_village_2
ObjectTemplate.activeSafe SpawnPoint cpname_go_16_village_2
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.setControlPointId 20

rem [SpawnPoint: cpname_go_16_village_2]
Object.create cpname_go_16_village_2
Object.absolutePosition 27.569/37.627/-178.079
Object.rotation -60.832/0.000/0.000
Object.layer 4

rem [SpawnPointTemplate: cpname_go_16_village_3]
ObjectTemplate.create SpawnPoint cpname_go_16_village_3
ObjectTemplate.activeSafe SpawnPoint cpname_go_16_village_3
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.setControlPointId 20

rem [SpawnPoint: cpname_go_16_village_3]
Object.create cpname_go_16_village_3
Object.absolutePosition 7.062/33.100/-120.754
Object.rotation 74.933/0.000/0.000
Object.layer 4

rem [SpawnPointTemplate: cpname_go_16_village_4]
ObjectTemplate.create SpawnPoint cpname_go_16_village_4
ObjectTemplate.activeSafe SpawnPoint cpname_go_16_village_4
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.setControlPointId 20

rem [SpawnPoint: cpname_go_16_village_4]
Object.create cpname_go_16_village_4
Object.absolutePosition 40.022/37.600/-150.047
Object.rotation 88.904/0.000/0.000
Object.layer 4

rem [SpawnPointTemplate: cpname_go_16_beach_0]
ObjectTemplate.create SpawnPoint cpname_go_16_beach_0
ObjectTemplate.activeSafe SpawnPoint cpname_go_16_beach_0
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.setSpawnPositionOffset 0/1.25/0
ObjectTemplate.setControlPointId 5

rem [SpawnPoint: cpname_go_16_beach_0]
Object.create cpname_go_16_beach_0
Object.absolutePosition 19.458/37.600/-310.056
Object.rotation 88.901/0.000/0.000
Object.layer 4

rem [SpawnPointTemplate: cpname_go_16_city_5]
ObjectTemplate.create SpawnPoint cpname_go_16_city_5
ObjectTemplate.activeSafe SpawnPoint cpname_go_16_city_5
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.setSpawnPositionOffset 0/1.25/0
ObjectTemplate.setControlPointId 19

rem [SpawnPoint: cpname_go_16_city_5]
Object.create cpname_go_16_city_5
Object.absolutePosition 138.910/40.400/-9.646
Object.rotation 177.776/0.000/0.000
Object.layer 4

rem [SpawnPointTemplate: CPNAME_GO_16_constructionsite_1]
ObjectTemplate.create SpawnPoint CPNAME_GO_16_constructionsite_1
ObjectTemplate.activeSafe SpawnPoint CPNAME_GO_16_constructionsite_1
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.setSpawnPositionOffset 0/1.25/0
ObjectTemplate.setControlPointId 301

rem [SpawnPoint: CPNAME_GO_16_constructionsite_1]
Object.create CPNAME_GO_16_constructionsite_1
Object.absolutePosition 87.144/40.400/40.138
Object.rotation -17.087/0.000/0.000
Object.layer 4

rem [SpawnPointTemplate: CPNAME_GO_16_constructionsite_2]
ObjectTemplate.create SpawnPoint CPNAME_GO_16_constructionsite_2
ObjectTemplate.activeSafe SpawnPoint CPNAME_GO_16_constructionsite_2
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.setSpawnPositionOffset 0/1.25/0
ObjectTemplate.setControlPointId 301

rem [SpawnPoint: CPNAME_GO_16_constructionsite_2]
Object.create CPNAME_GO_16_constructionsite_2
Object.absolutePosition 77.417/40.400/33.419
Object.rotation -0.874/0.000/0.000
Object.layer 4

rem [SpawnPointTemplate: CPNAME_GO_16_constructionsite_3]
ObjectTemplate.create SpawnPoint CPNAME_GO_16_constructionsite_3
ObjectTemplate.activeSafe SpawnPoint CPNAME_GO_16_constructionsite_3
ObjectTemplate.modifiedByUser nla
ObjectTemplate.isNotSaveable 1
ObjectTemplate.setSpawnPositionOffset 0/1.25/0
ObjectTemplate.setControlPointId 301

rem [SpawnPoint: CPNAME_GO_16_constructionsite_3]
Object.create CPNAME_GO_16_constructionsite_3
Object.absolutePosition 15.571/40.400/37.342
Object.rotation 89.366/0.000/0.000
Object.layer 4

rem ********** Control Points **********
rem [ControlPointTemplate: cpname_go_16_beach]
ObjectTemplate.create ControlPoint cpname_go_16_beach
ObjectTemplate.activeSafe ControlPoint cpname_go_16_beach
ObjectTemplate.modifiedByUser nla
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
rem -------------------------------------
ObjectTemplate.addTemplate flagpole
rem -------------------------------------
ObjectTemplate.setControlPointName cpname_go_16_beach
ObjectTemplate.radius 6
ObjectTemplate.team 2
ObjectTemplate.controlPointId 5
ObjectTemplate.areaValueTeam1 34
ObjectTemplate.areaValueTeam2 34
ObjectTemplate.timeToGetControl 40
ObjectTemplate.timeToLoseControl 40

rem [ControlPointTemplate: cpname_go_16_city]
ObjectTemplate.create ControlPoint cpname_go_16_city
ObjectTemplate.activeSafe ControlPoint cpname_go_16_city
ObjectTemplate.modifiedByUser nla
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
rem -------------------------------------
ObjectTemplate.addTemplate flagpole
rem -------------------------------------
ObjectTemplate.setControlPointName cpname_go_16_city
ObjectTemplate.radius 5
ObjectTemplate.controlPointId 19
ObjectTemplate.areaValueTeam1 34
ObjectTemplate.areaValueTeam2 34
ObjectTemplate.timeToGetControl 20
ObjectTemplate.timeToLoseControl 20

rem [ControlPointTemplate: cpname_go_16_village]
ObjectTemplate.create ControlPoint cpname_go_16_village
ObjectTemplate.activeSafe ControlPoint cpname_go_16_village
ObjectTemplate.modifiedByUser nla
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
rem -------------------------------------
ObjectTemplate.addTemplate flagpole
rem -------------------------------------
ObjectTemplate.setControlPointName cpname_go_16_village
ObjectTemplate.radius 6.5
ObjectTemplate.controlPointId 20
ObjectTemplate.areaValueTeam1 34
ObjectTemplate.areaValueTeam2 34
ObjectTemplate.timeToGetControl 20
ObjectTemplate.timeToLoseControl 20

rem [ControlPointTemplate: CPNAME_GO_16_constructionsite]
ObjectTemplate.create ControlPoint CPNAME_GO_16_constructionsite
ObjectTemplate.activeSafe ControlPoint CPNAME_GO_16_constructionsite
ObjectTemplate.modifiedByUser nla
ObjectTemplate.setNetworkableInfo ControlPointInfo
ObjectTemplate.isNotSaveable 1
ObjectTemplate.hasMobilePhysics 0
ObjectTemplate.hasCollisionPhysics 1
ObjectTemplate.physicsType Mesh
rem -------------------------------------
ObjectTemplate.addTemplate flagpole
rem -------------------------------------
ObjectTemplate.setControlPointName CPNAME_GO_16_constructionsite
ObjectTemplate.radius 10
ObjectTemplate.team 1
ObjectTemplate.controlPointId 301
ObjectTemplate.areaValueTeam1 34
ObjectTemplate.areaValueTeam2 34
ObjectTemplate.timeToGetControl 40
ObjectTemplate.timeToLoseControl 40

if v_arg1 == host

   rem [ControlPoint: cpname_go_16_beach]
   Object.create cpname_go_16_beach
   Object.absolutePosition 33.951/37.589/-296.224
   Object.layer 4

   rem [ControlPoint: cpname_go_16_city]
   Object.create cpname_go_16_city
   Object.absolutePosition 124.793/37.790/-46.089
   Object.layer 4

   rem [ControlPoint: cpname_go_16_village]
   Object.create cpname_go_16_village
   Object.absolutePosition 10.263/33.090/-136.359
   Object.layer 4

   rem [ControlPoint: CPNAME_GO_16_constructionsite]
   Object.create CPNAME_GO_16_constructionsite
   Object.absolutePosition 49.437/40.389/33.525
   Object.layer 4

endIf

CombatAreaManager.use 1
CombatAreaManager.timeAllowedOutside 10.000000
CombatArea.create CombatArea_20_64
CombatArea.min 0.000000/0.000000
CombatArea.max 0.000000/0.000000
CombatArea.team 0
CombatArea.vehicles 4
CombatArea.layer 1

CombatArea.create CombatArea_25_16
CombatArea.min 0.000000/0.000000
CombatArea.max 0.000000/0.000000
CombatArea.addAreaPoint 61.157227/-348.936768
CombatArea.addAreaPoint 105.219849/-322.685425
CombatArea.addAreaPoint 139.591431/-293.388489
CombatArea.addAreaPoint 161.153687/-265.517700
CombatArea.addAreaPoint 176.879028/-225.927429
CombatArea.addAreaPoint 203.642700/-118.685547
CombatArea.addAreaPoint 204.027466/-107.193909
CombatArea.addAreaPoint 190.917480/-94.490723
CombatArea.addAreaPoint 189.973145/-82.320862
CombatArea.addAreaPoint 193.456177/-67.464478
CombatArea.addAreaPoint 217.824219/-23.050476
CombatArea.addAreaPoint 221.453125/-8.182190
CombatArea.addAreaPoint 219.157227/11.405518
CombatArea.addAreaPoint 199.505737/31.693970
CombatArea.addAreaPoint 186.958130/46.563599
CombatArea.addAreaPoint 164.025391/69.969116
CombatArea.addAreaPoint 145.233276/83.938965
CombatArea.addAreaPoint 128.725464/91.965942
CombatArea.addAreaPoint 109.425537/97.719727
CombatArea.addAreaPoint 78.208008/100.808105
CombatArea.addAreaPoint 46.537109/94.552612
CombatArea.addAreaPoint 18.824097/78.459961
CombatArea.addAreaPoint -1.067444/62.567505
CombatArea.addAreaPoint -19.835938/44.030640
CombatArea.addAreaPoint -42.973389/17.937378
CombatArea.addAreaPoint -58.643677/-8.947510
CombatArea.addAreaPoint -59.756958/-29.944580
CombatArea.addAreaPoint -54.641174/-48.279724
CombatArea.addAreaPoint -49.360657/-63.706177
CombatArea.addAreaPoint -49.721924/-80.253174
CombatArea.addAreaPoint -58.250488/-101.113098
CombatArea.addAreaPoint -88.962097/-157.706238
CombatArea.addAreaPoint -94.463806/-175.732727
CombatArea.addAreaPoint -96.518982/-202.740967
CombatArea.addAreaPoint -91.102905/-230.452332
CombatArea.addAreaPoint -74.882751/-266.448242
CombatArea.addAreaPoint -52.538696/-300.637878
CombatArea.addAreaPoint -24.074524/-325.351929
CombatArea.addAreaPoint 6.905518/-342.699402
CombatArea.addAreaPoint 31.278320/-349.381836
CombatArea.team 0
CombatArea.vehicles 4
CombatArea.layer 4

CombatArea.create CombatArea_40_16
CombatArea.min 0.000000/0.000000
CombatArea.max 0.000000/0.000000
CombatArea.addAreaPoint -794.929199/-666.762085
CombatArea.addAreaPoint -742.598633/-735.698608
CombatArea.addAreaPoint -689.337036/-781.181030
CombatArea.addAreaPoint -623.627686/-819.062744
CombatArea.addAreaPoint -561.334656/-830.273865
CombatArea.addAreaPoint -489.834290/-832.246948
CombatArea.addAreaPoint -414.050171/-817.535095
CombatArea.addAreaPoint -311.894470/-797.473328
CombatArea.addAreaPoint -189.016296/-740.194214
CombatArea.addAreaPoint -49.115845/-644.352539
CombatArea.addAreaPoint 232.871704/-409.870178
CombatArea.addAreaPoint 270.258911/-372.821411
CombatArea.addAreaPoint 323.838623/-299.216858
CombatArea.addAreaPoint 374.302246/-213.533020
CombatArea.addAreaPoint 417.095581/-101.175720
CombatArea.addAreaPoint 464.516235/114.786255
CombatArea.addAreaPoint 492.841919/317.974487
CombatArea.addAreaPoint 483.147339/375.254639
CombatArea.addAreaPoint 455.943848/412.171387
CombatArea.addAreaPoint 416.199341/431.760010
CombatArea.addAreaPoint 350.426392/455.316406
CombatArea.addAreaPoint 140.600464/510.462891
CombatArea.addAreaPoint -52.935120/529.145264
CombatArea.addAreaPoint -112.560974/499.798462
CombatArea.addAreaPoint -226.833008/407.109131
CombatArea.addAreaPoint -309.836182/291.532349
CombatArea.addAreaPoint -510.813416/69.373535
CombatArea.addAreaPoint -810.302185/-222.645630
CombatArea.addAreaPoint -860.985474/-293.309937
CombatArea.addAreaPoint -886.071411/-377.082825
CombatArea.addAreaPoint -890.259277/-465.643616
CombatArea.addAreaPoint -859.987488/-567.727173
CombatArea.team 0
CombatArea.vehicles 2
CombatArea.layer 4

That should work.

Rhino is offline Reply With Quote
Old 2009-06-27, 21:00   #5
choppergirl
Default Re: [Help] How do you add Static Bridge Parts to a Map without Crashing Game Client

Yes, I am doing exactly that... and I'm putting them before the Vehicle spawns (just in case the manner these templates/spawns get defined its order dependent/finiky, because I assume the StaticObjects.con file gets called before GamePlayObjects, because the templates for them already exist in memory by the time the code gets to GamePlayObjects), and I'm putting them inside the v_arg1 = host line block:


rem MEC BASE PIONEER STYLE HUT FORT (on Gulf of Oman Map)

Object.create woodsteel_bridge_segment
Object.absolutePosition 356/24/231.8
Object.rotation 90/90/0.0
Object.layer 1

Object.create woodsteel_bridge_segment
Object.absolutePosition 352/24/227.8
Object.rotation 180/90/0.0
Object.layer 1

Object.create woodsteel_bridge_segment
Object.absolutePosition 348/24/233.8
Object.rotation 270/90/0.0
Object.layer 1

Object.create woodsteel_bridge_segment
Object.absolutePosition 352/24/237.8
Object.rotation 0/90/0.0
Object.layer 1

rem roof
Object.create woodsteel_bridge_segment
Object.absolutePosition 352/27.5/232.8
Object.rotation 0/0/0.0
Object.layer 1


I see your code in RED and it looks identical to what I'm doing... I assume what you are doing different is that you are doing this inside the fullgame, with a fullgame spawned server, *or* you are doing it both in the client and server files on a dedicated server.

One thing I have found out about .con files, you have to be very precise with your indentation. If you don't froopy things start to happy. For example, in your block above, you should add three spaces before each of your red code lines to be propertly block indented like everything else in in the if/endIf.

You may not experience problems, but I experienced a world of problems because I prefer TABS over 'three spaces' to equal one indent. Its more sane and makes more sense than the 3 space nonsense. So I was mixing the two, or even replacing all the spaces with properly indented python style TABBING, and ended up with very strange behavior coming out of these files until I went through and psycho cleaned everything up to be 3 spaces = 1 indent for everything.

So in .con files I use 3 spaces = 1 indent, but in BF2 Python 1 TAB = 1 indent.

---

Do you know where exactly are StaticObjects.con and GamePlayObjects.con called (run/referenced) from? The only reference to either one of these I have found is in server.zip/init.con :

if v_arg1 == BF2Editor
...
run Editor/GamePlayObjects.con host
...
else
...
endIf

But this block should never run in the game, because its not running unless BF2Editor is running/editing this.

The reason I ask, is I'd like to be able to go to where these files are run from and pass GamePlayObjects.con some more v_arg variables beyond just the first one 'host', if it is called somewhere from within Python and not another blasted con file. I'd love to be able to pass it some random variables for example, or the Bf2 current number of players variable.
choppergirl is offline
Last edited by choppergirl; 2009-06-27 at 21:10..
Reply With Quote
Old 2009-06-27, 21:04   #6
Rhino
Retired PR Developer
Supporting Member

Rhino's Avatar
Default Re: [Help] How do you add Static Bridge Parts to a Map without Crashing Game Client

ye rgr I'm only going from memory as I aint put staticobject.con in the GPO.con for ages but when I did mine, mine where client side changes also.

not sure I can help you more than that.

Rhino is offline Reply With Quote
Old 2009-06-27, 21:25   #7
choppergirl
Default Re: [Help] How do you add Static Bridge Parts to a Map without Crashing Game Client

Yeah, it might be that client side mods are needed as well. Chalk it up to another frustrating mystery of working with closed source code that is horrendously undocumented.

BTW, thanks for the info about the 1024 network objects limit.


What I have decided to do in the interim, is run two BF2 demo servers, instead of one.

-> One small 10 player server, simply to showcase my semi-working map with a massive build out of new structures using destroyable objects, i.e., the bridge around the harbor and my huge aircraft stunting tower, and docks up against the carrier. People seem to like to play on them and blow them up. When they turn invisible on them on the second round, they can simply disconnect and reconnect to the server and things will reappear. I will shrink the combat area to just the lower half of the Gulf of Oman map and move the control points to the beach and on the new structures.

-> A second main 32+ player server, where I use no extra cloned destroyable objects at all, at least not until the day I figure them out, as the main game server with all my other weapons and vehicles mods (jeeps that drop poison gas, blackhawks that drop bombs, nitro speedboats, etc). I developed some code that randomizes all the control points and vehicle locations (to set points) for the map at the start of every new round, so this should be plenty fun enough to be playable, with like something like 50 different permutations of the map for players to play on.

All my neat extra build outs with all these oddly behaving destroyable objects I'll keep on the first showcase server until I find the information I need to make them work right on my main server like on the racetrack servers.

CHOPPERGIRL
http://air-war.org
choppergirl is offline
Last edited by choppergirl; 2009-06-27 at 21:31..
Reply With Quote
Old 2010-09-28, 16:00   #8
arm-off-please-help
Default Re: [Help] How do you add Static Bridge Parts to a Map without Crashing Game Client

Hey Choppergirl!
We found out how to do that (copy buildings serverside - so players dont have to download anything). Check our BF2Demo Server "=[EU]= City #1" (the proof that totally new and awesome maps can be made using only a very limited amount of ressources!)

We want to keep the secret a few more weeks - probably until end of October for the publicity ^^ but then we will announce the how-to

cya,
Arm-off-please-help
arm-off-please-help is offline Reply With Quote
Old 2010-09-29, 05:53   #9
[R-DEV]AncientMan
Retired - Project Manager
Supporting Member
PR Server License Administrator

AncientMan's Avatar
Default Re: [Help] How do you add Static Bridge Parts to a Map without Crashing Game Client

You can't put staticobjects in the GPO, GPO is for dynamic objects only, BF2 crashes if you try (dedicated server, when changing to the map from a previous map iirc). Not sure if you remember Rhino, but I did quite a few days of testing on this when I was doing the dynamic init.con thing for PRSP, trying to get dynamic statics based on GPO as well. If we could do it, oh the possibilities . Might be different for statics with networkable info though...

Of course, if you do figure out a way to have static objects loaded based via gamemode/gpo, I'd love to know how .

AncientMan is offline Reply With Quote
Old 2010-09-29, 11:34   #10
Rhino
Retired PR Developer
Supporting Member

Rhino's Avatar
Default Re: [Help] How do you add Static Bridge Parts to a Map without Crashing Game Client

AM you do realize this topic is over a year old? and I managed to put staticobjects into the GPO files before... you sure the statics you put in where being loaded by a "run" line in the GPO or staticobjects.con? at the end of the day, the GPO is just anouther .con file.

Rhino is offline Reply With Quote
Reply


Tags
add, bridge, client, crashing, game, map, parts, static

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



All times are GMT. The time now is 16:58.