|
PR:BF2 Community Modding Making or wanting help making your own asset? Check in here |
|
Thread Tools | Display Modes |
2009-06-27, 00:16 | #1 |
Join Date: Jun 2009
Posts: 7
United States of America
Location: Mesa, AZ
|
[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 |
Last edited by choppergirl; 2009-06-27 at 00:31..
|
2009-06-27, 01:34 | #2 |
Retired PR Developer
|
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. |
|
|
2009-06-27, 20:40 | #3 |
Join Date: Jun 2009
Posts: 7
United States of America
Location: Mesa, AZ
|
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 |
Last edited by choppergirl; 2009-06-27 at 20:47..
|
2009-06-27, 20:49 | #4 |
Retired PR Developer
|
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. |
|
|
2009-06-27, 21:00 | #5 |
Join Date: Jun 2009
Posts: 7
United States of America
Location: Mesa, AZ
|
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. |
Last edited by choppergirl; 2009-06-27 at 21:10..
|
2009-06-27, 21:04 | #6 |
Retired PR Developer
|
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. |
|
|
2009-06-27, 21:25 | #7 |
Join Date: Jun 2009
Posts: 7
United States of America
Location: Mesa, AZ
|
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 |
Last edited by choppergirl; 2009-06-27 at 21:31..
|
2010-09-28, 16:00 | #8 |
Join Date: Jul 2010
Posts: 43
Germany
|
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 |
2010-09-29, 05:53 | #9 |
Retired - Project Manager
|
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 . |
|
|
2010-09-29, 11:34 | #10 |
Retired PR Developer
|
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.
|
|
|
Tags |
add, bridge, client, crashing, game, map, parts, static |
|
|