Jump to content
Sign in to follow this  
PowerMage

Dynamic ctf v1.12b: very huge multiplayer map

Recommended Posts

This is the first running Version (1.12b) of my MultiplayerMap Dynamic CTF. I have tested it some days now and fixed a lot of bugs so it should work now (http://powermage.dyndns.org/ofp/).

In this map you have to take control on Malden. You have to hurry because the Resistance-Forces are already coming for you. So capture some towns and secure your area at first or you'll be overrun!

In each town you can go to the FlagPole and use the ActionCommand "Set global Respawn". As you can guess you can set the respawn of your squad to any captured and secured town. The Upgrades 1-3 are not working yet. When they are done you can build things in towns to protect it. Check out the MobileBase (Factory->Build Vehicles->Special). This unit is already working and you can build a base anywhere on the map. You can also set your Respawn to that unit.

The Upgrades 4&5 only work in Singleplayer now. I have to get some things fixed because MultiplayerScripting is not that easy. I hope to get it running the next days.

Factories are sometimes Bunkers, Repairfacilities or Hangars. You have to take a look into each town for these buildings. They're not that easy to find.

When you aproach a factory you have the menu option "Build Vehicle". If you chose this menu then you can select between various vehicle categories (Tanks, APC, Jeeps, etc). After you chose a category all units will be displayed that you can build in that factory. After selecting the unit it will pop up near the factory building (maybe behind it).

Vehicles are ordinary vehicles like in the game. The only feature they have is that they'll be taken from the map if you go away for about 1000m. Don't fear! If you go back they'll be stangin there again.

Special Vehicles: Mobile Base

This truck is not an ordinary truck. You can move it to a place where you want to build a base for an assault on the enemy HQ or what ever. There is also an action menu on that truck. Chose Build Base->Mount Base to mount the base. You can't use the truck anymore. After you did that a new menu will show up. I'll shortly explain the menu items:

- Respawn On/Off: Makes your truck the new respawn position. If it gets destroyed your respawn will be in your old respawn town.

- Get Fence, etc: This opens the available buildings for that categorie. You can take out fences, tents, sheds and much more out of the truck. When you turn around you'll see the selected item floating in front of you. By moving and turning your can place this object where you'd like to. Wait for the "Drop Object" action to pop up.

- Lock/Unlock all Objects: This locks/unlocks all objects you've moved and placed somewhere. Locking means that all objects will remove their "PickUp Type" and "LockUp Type" action menus. Now they can't be moved anymore. The Unlock option does the opposite. It adds the PickUp and LockUp commands to all objects. The Lock function also appears on each placed object.

- Unmount base: This will put all buildings back into the truck. After doing this you can use the vehicle again. Rember: The respawn function is still active! If you move your truck and then stop somewhere your respawn will be there, too! If you don't want to respawn at your truck while traveling then switch off respawn first! If your truck gets destroyed you'll still respawn at it's location for 2 minutes!

- SelfDestruct: This option is nasty! Only the leader of your squad can use this command! After 30 seconds the whole base will blow up! Only use this if you are getting overrung by the enemy and you don't have a chance to hold the base.

Now some other nice things: When you see the whole map you might think it may take ages to meet the other player. Yes... this is true but see this map more like a Coop map than a Team Death Match or else... later on you will battle your ass of with the other player but first you must get towns and factories to prepare for the big war!

Each town is held by the Resistance. If you attack a town where no NetPlayer is in sight the town will defend itself. There will be AI units spawned at it's location. If there is a factory that can build tanks in that town there will also be tanks guarding the town. So take care!

If you are attacking with tanks there will be more law soldiers defending same for choppers and planes. Then you'll get AA missiles on your ass! Rushing might be dangerous... it's maybe better to place snipers on strategic points and take out all LAW/AA units at first. Your captured towns will also defend against enemies if you're not there.

Events: Ever been in the middle of nowhere and you had to walk to the next town on foot? Well... there is a solution in this map! Just sit down and wait... in a few minutes you might notice that civilians will cross your way with their shitty Scodas and Trabants. You just have to step in fron of them to make them stop. Just get one of the backseats and you can be taken anywhere without even beeing noticed by the enemy forces. You also can try to convince the driver to get out of this car but I think they're obstinate. I hope you won't kill a civilian for a lousy car! That's nasty wink.gif!!!

Well... there are not just civilian events. If you are near enemy territory there might be a chance that you get overrun by a horde of T55 or else... also there might be a chance that you'll get support from your captured towns and that a horde of M1A1 is heading for your position to support you! But be careful! The enemy might attack your towns and take them back. If you don't secure your area then you might be blown off the island faster than you'll notice.

Okay... that's it for now! I hope you'll enjoy them map.

You can download it here: http://powermage.dyndns.org/ofp/

This is my webserver at home. It's not always online. You may also check out www.operationflashpoint.de at mission center or the editing forum under Dynamic CTF. I'll post new bugfixes and updates all the time. So stay tuned if you like this map!

Thanx for your interest!

Greetings,

PowerMage

Share this post


Link to post
Share on other sites

Yeah! Sorry... it's only english now... I'll do the StringTables soon biggrin.gif

Share this post


Link to post
Share on other sites

all looks german to me...but i think i got the hang of it.  killed some rebels...grabbed that town, blew up a T-55, took a harbor, bought some trucks.  however it's laggy for me (1.4 ghz 512MB pc133 GF-3) so you might want to add some fog

and also the destroyed vehicles would be better if it moves them somewhere else (like the middle of the ocean) and THEN destroys them. getting rid of a truck cost me half my squad

Share this post


Link to post
Share on other sites

If you're having issues with getting it to work properly in multiplayer, I'd be happy to share my experiences with getting my RTS missions (RTS_Build and Conquer, RTS_Land War, RTS_TW_Everon Territory War) working properly on dedicated servers. The addaction commands are currently kind of a pain to adjust to multiplayer because of the way that they're implemented. With a few adjustments from BIS though it'd be a heck of a lot easier!

Share this post


Link to post
Share on other sites

Yep... that's true! I needed quite long to figure out how the multiplayer stuff works. It's all really frustrating!

Some important rules:

If you have scripts that create units somewhere and remove them then let them just run on the server! Otherwise the server may crash by creating units or deleting them if the scripts are also executed on the client.

Preventing Skripts from beeing executed by clients is easy: Place a logical unit somewhere and give it a name. In your scripts do: ?(!local logicUnit): exit; to prevent cients from executing. Logical units are only local on the server and not on the client mashines.

Next thing that really ripped my ass of is the fact that you can only use publicVariable with fixed size objects. Like units, Numbers or booleans. No strings and no arrays can be broadcast to other clients. This really made things hard because I stored all data in arrays. Solutions I'll describe later.

Another tricky thing is that action menus are also only executed on the client. So if you use a action on some object the connected skript will only do something with your client data. In most cases this doesn't matter anything but I first encoutered problems with my mobileBase. When it's created it has an action menu where you can select to build objects, etc. This menu only appeared for the player who build the truck because the build was thrown in by an action menu. So the menus for the truck were only attached at client side. I inveted some kind of global executer. I store sript names that I want to run in an array. Then I public a number that is the index of that skript name that I want to run (I can't public strings coz their not fixed in size! ). I also set some global Variables that contain the parameters for the script I want to run. On every client a special script is running that checks these global variables if they contain something. Now if the index variable has a value the script takes the scriptname I want to execute from the array with script filenames. Then it executed the script with the parameters that are stored in the global variables and voila the script runs on all clients.

With this method I managed to attach the base menu for all players.

Next issue might be if you execute a menu on some object and this menu should affect a state of that object visible to all other players. Let's say if some players start building objects. Only the objects a player build are stored on his computer. The objects of other players are stored on their mashines. So if a player wants to unmount the base and drive away the truck has to remove all buildings from the map again. Without proper syncronisation only the buildings that have been build by the player will disapper. So I defined some events in global Variables. For example: mobileBaseGlobalEventUnmount = 0;

Then I made a global Variable: mobileBaseGlobalEventObject = objNull; This variable will hold the truck object so that the script can indentify itself if it should execute something.

Next variable holds the event to execute. mobileBaseGlobalEvent = -1; The -1 means "do nothing". If it has the value 0 then it will be the mobileBaseGlobalEventUnmount (which is defined as 0). If you set these variables in your script then you have to public them to all clients. In my truck script I check if the object variable holds the truck. If it is so the script checks for the event to execute and does it's job. In this case alle build objects will be removed from the map including the ones that were build by other players.

Well... it's late now. I'll go to bed and have some rest.

I hope you somehow understand the things I wrote. My english is not the best. If you have questions then ask and I'll try to explain more detailed.

Thanx for your interest!

Share this post


Link to post
Share on other sites

That's basically what I did.  For many of the primary buildings, I had to place them on the map in advance and then do a Setpos so that all players could see the actions.  I also made some scripts that were waiting on a public variable from an addaction script, and then they would execute on all machines.

Typically I name the logic unit Server, and use (Local Server) to keep some things running only on the server and not on clients, like creating buildings and vehicles so they don't multispawn.  Unfortunately you end up with either a lot of scripts, or one large script to handle all of the different vehicles.  The addaction command does pass 3 vars when executed that you can use.  I can't remember the exact order but something like this:

Actionid, Player who activated script, Unit that script was attached to

I wish that you could specify if you want your action scripts to run client-side only and also you could pass your own vars with the script.  As it is now, if you build say a Vehcle at a building, you have to have a separate script for each and every vehicle since they all have different types.  If you could pass Type of vehicle in the action script then you could just have one script that would grab that info and then use it.

Anyway, it's a fun one.  I tested mine a ton on my Dedicated server before I got all actions executing correctly.

There is a bad side to all clients being able to build in that they start using all the money up fast. There are solutions to this. An alternative would be to only give 2 commander units the ability to build, so that way when they exec'd an action script, only they'd see the actions on the unit they built.

Share this post


Link to post
Share on other sites

yeah i like that idea...i can just imagine some kiddies coming along and spending all the money buying abrams and then abandoning them

Share this post


Link to post
Share on other sites

Yes... I also agree... but I used the fact, that actions are only run client side for the palyer who activated them. All Sides have a global Resource... factories produce their own resources and it grows as high as the global resources. The global Resources are gained by killing enemies and conquering Towns. You can see it like this: Every Player has it's own source of money and all Players together can raise this supply by fighting together against the enemy...

Having only one Player controling all the stuff makes the mission boring for the others. That I really wanted to avoid. Leaders only can do things like selfdestruction of a base or something like that.

Even the buildings that a player build are controlled only by this player. This gives everyone freedom to do something and prevents others taking away things from the other players...

Share this post


Link to post
Share on other sites

i have to admit it is rather long. however with a full server the squad could split up and cover more ground, i had to take each town manually with a M1A1 and use the AI to guard the town where i'd put the repair/rearm trucks with a M1A1 and a M2A2

Share this post


Link to post
Share on other sites

That was one of the ideas I had... you have to prepare your attacks: Build a base somewhere hidden and launch the attack on a town that is nearby or assault the enemy player directly. I added some more additional features. Day and night changes are faster now. So it can be interesting to battle during night. Enemy towns launch flares, when they detect the attackers and some more things are fixed. There is also 100% german/english language support now. English translation will be corrected tomorrow. There are still some mistakes in the stringtables. Later on there will be a ingame help system that will be controled by the action commands.

Also I planned a ingame mission generator. I don't know if it will work but I'll give it a try. After some time each team gets a mission. Team west will have to defend a convoy for example while team east has to stop it. I have lots of more ideas but first I wanna get things bugfree and finnished.

Share this post


Link to post
Share on other sites

that sounds pretty fun

now maybe i can understand what all those things in german say biggrin.gif

Share this post


Link to post
Share on other sites

Hi bud.  Your ideas sound so much like mine i thought i was reading a message i posted.  LOL  Anyway, send me a message sometime if you want to swap some ideas and or code.  You may of heard of my mission/mod.  Its PP or Purchasing Power.  Much like C&C Renegade.  ICQ me is you wish, 9489772.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×