Mapfact Oil-Addon

by Flashpoint_K


Visit WWW.MAPFACT.NET



Content







General

Some time ago I recognized a program with the funny name OČ, which, I heard so, is required to make 3D models for OFP. Passing several attempts in modeling, I read some tutorials by brsseb - the new knowledge became quite useful.
For my next mission I needed certain objects like walkable pipelines and a few oil pumps for the atmosphere, also a harbour which I could adapt to my imagination as well as a tanker.
This was the basic idea from which the Oil-Addon (OA) developed to what it is now.

While looking for an alternative to implement the pipelines without using a "keep height" variant, I made some tests with animated pipes and I decided to use this method for the pipes in my addon. Obviously I did not and do not know all upcoming problems by using this method, but I think in the end it's a useful alternative to build pipelines also on more steep positions on the map, without causing contortions on the model.
For island makers (and all the others, too) there is at least the 20m Pipeline as "keep-height" variant included, you should only make sure that the terrain you want to build the pipe on is quite flat. An instruction to set up the pipes "by hand" will be found in the scripts part.

I will be open for any suggestions, which could be implemented in a possible OA2.

So, I wrote enough now, have much fun with the addon!





Oil-Addon features

  • Completely MP compatible
  • Two different types of pipeline, both walkable
  • Quick and easy building of pipelines using a script
  • Animated oil pumps with randomly played sounds
  • Burning oil well which has its own sound and performance adoption
  • Easy usage of the animations and features thanks to functions and scripts
  • Fully animated and walkable harbour crane
  • Best possible compatibility of the objects with WrpTool and the editor
  • Nearly every object can be used or influenced by the player
  • Oil tanks and Oil turret with additional explosions
  • Walkable tankers, depending on the version with dinghies which can be landed on water and MG. Warning sound when damaged and an integrated ship horn.


Change log

Changes on OA1 from v1.00 to v1.01:
  • fixed all four ship models
  • fixed craneControl.sqs
  • fixed icon for static ships
  • fixed sound after watering speedboats is only played once now
  • added variable "MAP_OA_noReanimShip"
  • improved textures of speedboat

Changes on OA1 from v1.01 to v1.02:
  • fixed: AI is now able to walk under the "kh" pipes set with wrp-tool
  • fixed: Some minor things
  • added: New Object, Sewage pipe



The Models


Here you find a list with all objects included, and its names and features. You can find them in the editor under "Mapfact OA: Objects" or "Mapfact OA: Vehicles" on Empty, Resistance or Civilian side.

EditorConfigFeatures
Fences and attachments
Wooden fence 9mMAP_WoodFence_9m-
Barbed-wire fence 9mMAP_Fence_9m-
Barbed-wire fence cornerMAP_Fence_9m_Corner-
Warning signMAP_Warnschild-
Harbour objects
Harbour-craneMAP_CraneDoor, Turning, Lift/Lower of the magnet
Dock #1MAP_Dock1-
Dock #1 (40m)MAP_Dock1_40m-
Dock #2MAP_Dock2-
Dock #2 (40m)MAP_Dock2_40m-
Dock #3MAP_Dock3-
Dock with trainjardMAP_Dock4-
Dock with rails #1MAP_Dock5-
Dock with rails #2MAP_Dock6-
Dock with rails #3MAP_Dock7-
Container (green)MAP_Containerladders
Container (red)MAP_Container2ladders
Container (red, doors)MAP_Container3walkable, animated, ladders
Container (stapled)MAP_ContainerSladders
Stored PipelinesMAP_Pipelines_Storedwalkable
Stored 20m Pipelines MAP_PLine_Big_Stored -
Crate #1MAP_Kiste1-
Crate #2MAP_Kiste2-
Crate #3MAP_Kiste3-
Cable drumMAP_Kabeltrommel-
Train buffer MAP_Rammbock -
Sewage pipeMAP_SewagePipe-
Sewage pipe (walkable)MAP_SewagePipe_WK-
GangwayMAP_Gangwayanimated
Oil objects
Oil pump #1MAP_OilPump1animated and sound (via useraction or script)
Oil pump #1 (on)MAP_OilPump1_onanimated and sound (from beginning)
Oil pump #2MAP_OilPump3animated and sound (via useraction or script)
Oil pump #2 (on)MAP_OilPump3_onanimated and sound (from beginning)
Oil pump (out of order)MAP_OilPump2-
Oil pump (out of order #2) MAP_OilPump2v -
Oil turretMAP_OilTurretClimbable
Oil turret (burning)MAP_OilTurret_Burningclimbable, burning
Pipeline 16m (walkable)MAP_Pipeline_16mwalkable, animated
Pipeline 16m (destroyed #1)MAP_Pipeline_16m_Brokenwalkable, can be used as entrance, animated
Pipeline 16m (destroyed #2)MAP_PLine_16m_Broken2walkable, animated
Pipeline 16m endMAP_Pipeline_16m_End-
Pipeline 16m entranceMAP_Pipeline_Entranceclimbable, animated, useraction
Pipeline 20m /("Keep Height") MAP_Pipeline_20m /_kh animated / "keep-height"
Pipeline 20m (walkable) /(walkable, "keep height") MAP_Pipeline_20m_WK /_kh walkable; animated / "keep-height"
Pipeline 20m (destroyed) /(destroyed, "Keep Height") MAP_PLine_Big_Broken /_kh animated / "keep-height", smoking
Pipeline 20m (destroyed, walkable) /(destroyed, walkable, "k.h.") MAP_PLine_Big_Broken_WK /_kh walkable; animated / "keep-height", smoking
Pipeline 20m End MAP_Pipeline_20m_End /_kh animated / "keep-height"
Pipeline 20m End ("For Walkable") MAP_Pipeline_20m_End_WK animated
Pipeline 20m End ("K.H. , for walkable") MAP_Pipeline_20m_End_WK_kh "keep-height"
Pipeline 20m (Above road) /(Above road, "keep height") MAP_Pipeline20mStrCross_kh animated / "keep-height"
Pipeline 20m (Above road, walkable) MAP_Pipeline20mStrCross_WK walkable; animated
Pipeline 20m (Above road, walkable, "k.h.") MAP_Pipeline20mStrCross_WK_kh walkable; "keep-height"
Pipeline 20m (45° right) MAP_PLine_Big_curve_r 45° bend to the right
Pipeline 20m (45° left) MAP_PLine_Big_curve_l 45° bend to the left
Pipeline 20m (45° right, walkable) MAP_PLine_Big_curve_r_WK Walkable 45° bend to the right
Pipeline 20m (45° left, walkable) MAP_PLine_Big_curve_l_WK Walkable 45° bend to the left
Pipeline 20m Entrance MAP_Pipeline20m_Entrance animated
Oil tank small (orange)MAP_OilTank_Smallclimbable, small explosion
Oil tank small (blue)MAP_OilTank_Small2climbable, small explosion
Oil tank mediumMAP_OilTank_Mediumclimbable, explosion effect
Oil tank bigMAP_OilTank_BigClimbable, explosion effect
Oil tank big (twin)MAP_OilTank_Twinclimbable, explosion effect
Oil wellMAP_OilWellburning and smoking ;-) (via script)
Oil well (burning)MAP_OilWell_Burningburning and smoking ;-) (from beginning)
Building-site MAP_buildingSite Small building-site at an oil pump
Shelves MAP_ScrapW Shelves lying around
Scrap (mixed) MAP_Scrap mixed Scrap lying around
Scrap (metal) MAP_ScrapM metal poles lying around
Spill #1 MAP_Spill1 -
Spill #2 MAP_Spill2 -
Spill #3 MAP_Spill3 -
Spill #4 MAP_Spill4 -
Spill #5 MAP_Spill5 -
Water vehicles
Oil tankerMAP_Tankshipwalkable, ladders, animated, Sounds
Oil tanker (smuggler version)MAP_SmugglerShipwalkable, ladders, animated, MG, dinghy, sounds
Speedboat (smuggler version)MAP_SmugglerBoat7.42mm machine gun
Oil tankerMAP_Tankship_staticwalkable, ladders, animated, more performancefriendly, Sounds
Oil tanker (smuggler version)MAP_SmugglerShip_staticwalkable, ladders, animated, MG, dinghy, more performancefriendly, sounds


Tipp: Sometimes the oil tanker causes lag when it is close to other objects.
If you want to use the oil ship for "eye candy" only, use the "static-version".
If you want to make the ship useable later on, use a simple replacement-script to substitute the static one with the driveable one.



The Scripts

All scripts are in the pbo "MAP_OilAddon_script". So they are called with ....... exec "\MAP_OilAddon_script\........ .sqs"

Pipebuilder.sqs ---- Example included
The Pipebuilder.sqs can be used to build the pipelines. To fit these to the terrain, the pipelines will be animated (except they are "keep-height") by the script (standard is that the pipes are facing upwards)
A second script is started automatically by the Pipebuilder.sqs and re-animates the pipelines after the game was reloaded, because OFP doesn't save the animation status itself. Due to the reason that both scripts are looped, delays can appear. They depend on the length of the Pipeline. If you call the script with the wrong parameters, it is possible, that hints will show you what was wrong. After wrong input, the standard OFP errors can appear.

Here is an exact explanation how to start the script:

Example:
[Name,1500,0,[[curve1],[curve2],...],[[object1],[object2],...],1,2] exec "\MAP_OilAddon_script\Pipebuilder.sqs"



Explanation:

Name: Has to be a pipeline-object. This is the reference for the script what type of pipeline it has to build. Easily give a name to the object and use this, or write directly in the init of the object [this,.....]

Could be everything except:

"Pipeline 20m (Above road)"
"Pipeline 20m (Above road, "keep height")"
"Pipeline 20m (Above road, walkable)"
"Pipeline 20m (Above road, walkable, "k.h.")"

"Pipeline 16m Entrance"


There are 3 different possibilities of pipelines the script is able to build.
If your start object is one of the animated ones, your whole pipe will consist of animated pieces.

If your start object is one of the "keep-height" pieces you have two more possibilities:
1) You will get a pipe which only consists of "keep-height" pieces, also at very steep positions!
Remember that the models will be contorted!

2) Your start object is also one of the "keep-height" pieces, but you put the text "mixed" at the last position in the array. In the example above this would be "[....,1,2,"mixed]" exec.
This will force the script to build "keep-height" pieces, but only at positions that are less steep than 5° at 20m (A difference of about 1.7m). At positions which are steeper than those 5° the script will build animated pieces.
Note: The length of the pipe will vary a little when you change to one of these possibilities. The pros and cons of these methods are:

Only animated pieces:

- There can be problems after destroying the pieces with the animation
- After reloading the mission, the pipes have to be animated again. This can be noticed.
Only "keep-height":
- The models are contorted at steep positions
- The models are contorted at steep positions
- The segments fit together well
- There are no Problems with reloading or destroying.
"Mixed"-Method:
- This method has the pros and cons of the other methods
- The changes from the animated to the "keep-height"-pieces are visible.

1500: Tells the script how long the pipe should get, in meters.

0: 0° or 180° from the start position, that means two scripts can be started from the same start-object, which then will build two pipes in different directions. Of course that makes only sometimes a sense.

Curves: To make a curve you need the following: [when in meters, direction in degrees relative to the last segment, sharpness] for example [200,-50,0.4]. This makes a curve with the sharpness of 0.4 (1 is maximum) after 200m to the left. Curves can only be build with the 20m pipe (see also the objects part)
If you don't want to have curves, leave the array empty.

Objects: Are depending on the type of pipe you are building, these combinations are possible:
Pipe 16m, everything except:
"MAP_Pipeline_16m" , "MAP_Pipeline_16m_End"

Pipe 20m, everything except:
"MAP_Pipeline_20m" , "MAP_Pipeline_20m_kh" , "MAP_Pipeline_20m_WK" , "MAP_Pipeline_20m_WK_kh" , "MAP_Pipeline_20m_End" , "MAP_Pipeline_20m_End_kh" , "MAP_Pipeline_20m_End_WK" , "MAP_Pipeline_20m_End_WK_kh"

this function is called like this: [400,"Object"] => will build the object after 400m. If you want to have an entrance, you have also the possibility (only when building the 16m pipe) to let the pipe make a bend at this position, so that you can build "curves" also with the 16m pipes: [500,"MAP_Pipeline_Entrance",16] => will build an entrance at which the pipe will make a 16° bend to the right. Maximum is 30°.
If you don't want to have objects in your pipe, leave the array empty.

1: Tells the script to finish the pipe with the Pipe_xxm_end object, but only if you type in a number different to 0. That means only a 0 will make no ending.

2: Tells the script which delay to use (in s) for the "guarding"-script, which checks if the pipes have to be animated again after mission was reloaded.
Minimum is 0. Numbers smaller than 0 are not permitted.
Standard is a delay of 1s is used. To this delay your input will be added. The reason for that option is, that the mapper can adapt the loop to the performance of, e.g. a mission.
The script will write all built objects in an array and saves this in the variable MAP_OA_PbObjects. So you have the possibility to choose an object from this array to, e.g. animate it etc.




Summary of important functions

CallFunction
Name call MAP_oa_turretOn
Name call MAP_oa_turretOff
Lights the fire above the oil turret or puts it out.
Name call MAP_oa_wellOn
Name call Map_oa_wellOff
Lights the fire of the oil-well or puts it out.
Name call MAP_oa_pumpOn
Name call MAP_oa_pumpOff
switches the pump on/off
Important for all functions: Call them 1s or later after the start of the map or errors will occur probably!


Variables
To disable all effects (most of the animations, smoke, fire, most sounds, additional explosions) set the variable MAP_OA_FX=false.

The oil pumps are disabled in mp because of the performance. To get them to work otherwise set the variable MAP_OA_MPPumpAnim=true.

How strong the oil well smokes depends on the performance of the pc system. By using the variable MAP_OA_Smoke this can also be set directly: The value 0 (MAP_OA_Smoke=0) disables the smoke completely. The value 1 makes it smoke calmly. If it has the value 4 it smokes most strongly (only whole figures).

MAP_OA_noReanimShip
Set this variable true, if you don't want the reanimation script to keep the boats hidden after watering them. You can use this for example to put the speedboats back at the main ship by using the animation an this variable.



Summary of some important scripts:

Name of the scriptTask and explanation
BoatsDown.sqsDrops the dinghies into the water. Can be executed over the action-menu of the ship. If you want to start it directly write this: [name,"Right or Left"] exec
Crane.sqsOpens the door of the crane and will close it automatically after 8 seconds. You can start it over action menu or by using [Name] exec
MAP_OA_20mEntr.sqs Opens/Closes the doors of the entrance. You can start it over action menu or by using Name exec
ShipHorn.sqs Fires the horn. You can start it over action menu or by using Name exec
CraneContr.sqs Controls the rest of the crane animations. Start it with: [Name, Direction in degrees relative to the crane direction, Up/Down of the magnet in m relative to the "0 position"] exec
(Example included)
Pipebuilder.sqsIs used to build the pipelines. Explanations see above.

Important!
Only with white colour marked scripts are allowed to be started by the mission maker. The others may cause errors if you do so!




Animations


Summary of all animated objects

OA Harbour-cranea_rotateR => Turns the legs of the crane 360°
ani_UpDown => Up/Down of the magnet
a_door => Open/Close the door
OA Oil pump #1Haupt_Anim => Moves the "Head" of the pump
Antr_Anim => Animates the momentum-wheel
Rad1_Anim , Rad2_Anim , Rad3_Anim => Animates the other wheels
OA Oil pump #2 Like Pump #1, but Rad2/3_Anim are not used here
All Pipeline segments except Pipe_16m/20m_endAni_Hrz => Turns the segments 180°
OA Pipeline Entranceani_Deckel => Open/Close the entrance
Pipeline 20m Entrance ani_O_Door; Opens/Closes the outer door
ani_I_Door; Opens/Closes the inner door
ani_Geo_Door; Opens/Closes the door in the geo-lod, important!
Gangway ani_fitHgt; Lifts/Lowers the gangway about 30°
Container (red, doors) ani_DoorR/L; Opens/Closes the right/left door of the container
OA Oil shipani_door01-06 => Open/Close the doors
ani_Klappe => Open/Close the door on the roof
OA Oil ship smuggler versionani_door01-06 => Open/Close the doors
ani_Klappe => Open/Close the door on the roof
aniHideR/L => Hides the dinghies inside the ship

Important: Due to the reason that some objects are animated by scripts, a direct execution of the anims will probably cause an error!



Credits


First I want to say thanks to those peoples who wrote o2 tutorials ;-)

Then those peoples who were directly involved in the development of the OA:
raedor: config, all MAP_x scripts, revising and optimising all scripts for a good performance and MP compatibility, functions, betatesting
Sniping-Jack: some texture- & soundediting, technical support and ideas, betatesting

And the other betatesters:
BadAss
Chneemann
Medicus
Sky


And last but not least all people who had answers for my questions or helped me in any other way ;-)

Thanks!




Disclaimer


This is an unofficial addon for Operation Flashpoint © Bohemia Interactive Studio.
Use it on your own risk.


Mapfact Oil-Addon © Flashpoint_K. If you have questions about the addon or anything else, write an e-mail to Flashpoint_K@web.de or post in the Mapfact forum in the thread for this addon.