Jump to content

Recommended Posts

This page is for discussion of script features in Fly Tanoa Air. Mod page coming soon.

Flying planes in ArmA III is difficult. It takes a lot of practice. Right when you think you got it you realize how much more there is to learn. Just dropping a plane in an empty scenario is fine and well to start but eventually gets boring and, as a pilot in training, you need something more compelling to keep logging more hours. Tanoa Air seeks to provide a fun and re-playable scenario in which to practice your skills.

Developer files are available below. If you know how to install and use these files, the files are for you. If not, please wait for the official release, coming soon. Thanks for your patience!

Check out a playable ALPHA without FEMALE: Drive Link

Check out a playable ALPHA with FEMALE: Drive Link

The above files are pre-release ALPHA, not optimized, and may not function exactly as intended. Please leave feedback below and join the discussion. In order for FTA to be fun it must function well. Functionality is the foremost concern.

ReadMe file below, DEMO video soon.


438077-1562337567.jpg

The "Fare" button (like a taxi-cab) is located on the mission controller (like JET TOYS). The controller also includes a warning system for Altitude, Speed High, and Speed Low, a cruise button for defining flight envelope, a cabin light, ect. (separate scripts).

Init and Triggers
Variables are established in the init (like pass==0) and there is a marker at each airport (airportMARKER). Each airport also has a large trigger to define the terminal area (AP=1). The mission trigger jumps from point to point.

nextFARE.sqf
Determines the "FARE" function on the Mission Controller. Randomly selects a passenger  (list of 4) and airport destination (5 less one, the current location) and then sets Task (Approach) and Waypoint (Airport) markers to the same. Exits the passenger at destination. Repeats.

cargo.sqf
The cargo script automatically collects cargo from Aeroport de Tanoa Cargo Zone and prompts with destination Task and Waypoint markers.

searchZONE.sqf
Randomly selects search area  (from 5) and then randomly selects a scene location (from 5 more). Clears and resets the emergency upon completion, ready to go again.
note: SearchZONE is only one of three possibilities (ex. searchZONE2.sqf) when players press "SCAN", so adding another layer of randomness. Very random, this one.

ringCLEAR.sqf
The Ring Challenge script moves a single ring with an attached trigger to the next position each time it is cleared. At the same time a Task Marker is updated to display at the same location. 

Notes:
There is only one task used in the whole mission.
Despite how much I say there is only one ring for the ring challenges, there are actually two. The ringGOALmock object is static and defines the starting point of each course.
Just about everybody and everything go to objNULL when not in use.

readMe

Spoiler

 

Fly Tanoa Air DEMO for ARMA III, ver. ALPHA (2019) 

This download should be compatible with the base game.

Welcome to the Fly Tanoa Air ReadMe file!

Flying planes in ArmA III is difficult. It takes a lot of practice. Right when you think you've got it, you realize how much more there is to learn. Just dropping a plane in an empty scenario is fine and well to start but eventually gets boring and, as a pilot in training, you need something more compelling to keep logging more hours. Tanoa Air seeks to provide a fun and re-playable scenario in which to practice your skills.

FEATURES

Ferry passengers
Industry and tourism dominate Tanoa's economy which means a constant supply of passengers to ferry from place to place. Pick up a passenger at any airport and deliver them to their destination.


Deliver cargo
Supply routes are a challenge to maintain. Sometimes emergency medical supplies and food get lost or mis-routed and must be delivered from the central airport. Pick up a crate at Aeroport de Tanoa and deliver it before time runs out and the sensitive cargo spoils.
 
Assist the Coastguard
The waters surrounding Tanoa are popular for fishing and boating. Inevitably something will go wrong. Scan radio channels for potential rescue missions and help conduct the search.


Find the missing pilot
The archipelago, with all of its despondent islands and remote locations, is a dangerous place. Locate the missing pilot so a rescue operation may begin.


Ring challenges
Follow the rings in 5 separate challenges and checkout some of Tanoa's most beautiful scenery while conducting a white-knuckle acrobatic routine.


Bad Luck
Watch out for bad luck which can cause unexpected conditions to appear at any time.


Weather
Utilizes Sil's dynamic weather system for 100% randomized weather conditions which update periodically throughout the mission.


Tanoa 2-6
Your plane comes installed with several features available on the Mission Controller.


Advanced Warning System
The AWS will help you stay within the flight envelope and safe operating parameters of your aircraft. Warns if: too low, too fast, too slow, too high.


Cruise Control
The Cruise button determines your flight envelope, high or low. High is ~3500 m and low is ~250 m. Your co-pilot will maintain this envelope when you release control.


Time
This allows you to choose what time of day you wish to fly. Advance the time by 7 hours each time your press the button. 


Cabin Light
The cabin light allows you to see your passengers at night.


AI Auto-pilot
In addition to your Co-pilot and the Landing Auto-pilot (highly discouraged) Tanoa 2-6 will engage a simple auto-pilot when you open the Mission Controller. The auto-pilot can be a little flaky but it will keep you in the air. Like a real auto-pilot it is best to engage it during level and stable flight.

Landing Procedure
In Fly Tanoa Air you can follow the prescribed approach vector or opt for a completely manual landing. By clearing the approach vector your AWS will be disengaged automatically and you will be prompted "Clear to Land". A manual approach would mean you disable the Current Task Marker "Approach", and choose your own path to landing. In this case be sure to disable AWS manually or it may be a raccous landing.
 


INSTALLATION
Install the TanoaAir.pbo file to your ArmA III mission directory.


CONTROL DESCRIPTION 

TUNE
Tune your radio to Aeroport de Tanoa for final approach and landing.


CAM
Reset the dash cam


MODE
Enables the dash cam NV mode


WARN
Enables/disables the AWS. Note: The AWS is automatically enabled when you take off. You are advised to disengage the AWS if you disregard the prescribed approach vector and landing clearance.


TIME
Move time forward by increments of 7 hours.


CRUISE
Defines and displays current flight envelope.


FARE
If you're at an airport terminal this button will collect a new passenger. Press this button again when you reach your destination terminal to drop off the passenger. Press the button once again, when prompted, to collect your next passenger.


SCAN
Scan the emergency band for potential emergencies.


LITE
Toggle the cabin light ON/OFF.


ABORT
End the scenario any time.


The DEMO
This is your mission. Do as you please. There are no markers or indicators when the scenario begins so you may choose which activity you want to participate in. To get a passenger just approach any terminal on Tanoa and you will be greeted, "Welcome to airportX". Then shut off the engine, open the menu, and click "FARE".


To begin a cargo delivery mission just approach the Cargo Area at Aeroport de Tanoa and when the box is loaded into your aircraft you'll be prompted with a destination.


Ring challenges are spread out around the archipelago for you to find. When you enter the general area a system prompt will advise "There's a ring course near-by" and display the first ring. Clear the first ring to begin the challenge. To end a ring challenge simply fly out of the area. To restart the challenge enter the area again. This allows you to chain together different ring courses for a truly whiteknuckle spin around the island.


If you want to lend a hand, help the coastguard or ATC and be a hero just press the scan button on the mission controller any time you don't already have a passenger or cargo. A dynamically generated mission will begin and you'll be prompted to enter the search area. Find the missing boat or pilot and then leave the area so the rescue operation may begin. Note: There are not always emergencies happening. Sometimes the "SCAN" button may say "No Emergencies available", in which case you will have to wait 1 minute to try again.


FAQ

Q: What is this?
A: Fly Tanoa Air is a dynamic air mission designed to make learning to fly in ArmA III fun. It uses a GUI Mission Controller to add several new options for in-game pilots.

Q: How do I use it?
A: Just install  the PBO file to your ArmA 3 mission folder and go. If you don't have a PBO file it means you downloaded the Developer version.

Q: Why can't I trigger ring courses and rescue missions?
A: Drop off your passenger or cargo before trying to begin a challenge.

Q: My engine stalls a lot. What's up with that?
A: Tanoa 2-6 has been serving the Tanoa archipelago for more than a decade. The old plane is not what it used to be. Stay within the flight envelope (speed/ALT) and pray for good luck.

Q: In the DEMO you have a female co-pilot and female passengers but in my game it's just generic NPC number 1. Is this false advertising!?
A: I have not been able to get license to include the female assets  to the scenario. A version with the NPC's configured like my DEMO is available but you must have the FEMALE mod assets installed to use it.

Q: Are you the worst script writer ever?
A: Undoubtedly.*

Q: I have a thousand ideas how you can make this better. Where do I send them?
A: Message me on BI ARMA III forums, wogz187.
* But I'm trying.


WIP
All scripts
GUI interface
This document

 


searchZONE.sqf 
Search for a missing boat in a randomly assigned location. Assist the coast guard chopper to find the fishing trawler, Spiridova Vadim.

Spoiler

if (Cargo==0 && pass==0 && searching==0 && emerg==0) then {

//chat
    hint "Coastguard seeking assistance";
    radiotower sidechat "Control, Tanoa 2-6. Come in, 2-6.";
sleep 3;
    player sidechat "Tanoa 2-6. Copy, Tower.";
sleep 3;
    radiotower sidechat "Control, Tanoa 2-6. The coastguard is asking all available aircraft to join in the search for a fishing trawler in distress.";
sleep 3;
    player sidechat "Copy, control. Tanoa 2-6 enroute. Any more details about the boat, Control?";

//function
searchZONE= [xCENTRE, xCENTRE_1, xCENTRE_2, xCENTRE_3, xCENTRE_4] call BIS_fnc_selectRandom;
    centreMARK setpos (getpos searchZONE);
sleep 2;
    detach chopper1;
    ["task1",[centreMARK,true]] call BIS_fnc_taskSetDestination;
    chopperGRP = group chopper1d;
sleep 1;

searchWP = chopperGRP addWaypoint [(getPos centreMARK), 0];
searchWP setWaypointType "loiter";
    [chopperGRP, 0] setWaypointLoiterRadius 800;
sleep 2;
emergZONE= [xscene, xscene_1, xscene_2, xscene_3, xscene_4] call BIS_fnc_selectRandom;
sleep 1;
    boatMARK setpos (getpos emergZONE);

//chat fin
    radioTower sidechat "Roger that, 2-6. Spiridova Vadim is a blue fishing trawler. May be emitting smoke. Good luck, 2-6. Tower stand-by.";
    searching=1;
    };


if (searching==1 && emerg==0) then {

//chat
    radioTower sidechat "Control to Tanoa 2-6. Great job, 2-6. The coast guard will take it from here. Exit the area to allow rescue operations to begin. Control, over.";

//function
    chopperGRP = group chopper1d;
    deleteWaypoint [chopperGRP, 0];
    chopper1 setpos (getpos chopperMARKdef);

sleep 1;
    [chopper1, chopperMARKdef, true] call BIS_fnc_attachToRelative;

sleep 1;
    boatMARK setpos (getpos objNULL);
    ["task1",[approachAP1,true]] call BIS_fnc_taskSetDestination;

//chat fin
    player sidechat "Tanoa 2-6. Copy that, Control.";
    searching=0;
    };

 


nextFARE.sqf

Spoiler

//if passenger but no airport
if (Pass==1 && AP1==0 && AP2==0 && AP3==0 && AP4==0 && AP5==0) then {
    hint "You already have a passenger.";
sleep 3;
    hint "";
    stophere = []execVM "NextFare.sqf";
    terminate stophere;
};

//Airport 1

if (Pass==0 && AP1==1 && AP2==0 && AP3==0 && AP4==0 && AP5==0) then {
passenger1 = [CIV1, CIV2, CIV3, CIV4] call BIS_fnc_selectRandom;
    passenger1 assignAsCargoIndex [playerJET, 0];
    passenger1 moveinCargo playerJET;
    pass=1;
    hint "You have a new passenger.";

sleep 1;

WPmark = [airportMARK2, airportMARK3, airportMARK4, airportMARK5] call BIS_fnc_selectRandom;

    playergroup = group Player;
    deleteWaypoint [playergroup, 0];
sleep 5;

NEXTWP = playergroup addWaypoint [(getPos WPmark), 0];
sleep 1;
NEXTWP setWaypointType "hold";

    DestinationTRIG setpos (getpos WPmark);
    [playergroup, 2] setWaypointCompletionRadius 5;
    hint "";
    AP1=0;
};

//Airport 2

if (Pass==0 && AP1==0 && AP2==1 && AP3==0 && AP4==0 && AP5==0) then {
passenger1 = [CIV1, CIV2, CIV3, CIV4] call BIS_fnc_selectRandom;
    passenger1 assignAsCargoIndex [playerJET, 0];
    passenger1 moveinCargo playerJET;
    pass=1;
    hint "You have a new passenger.";

sleep 1;

WPmark = [airportMARK1, airportMARK3, airportMARK4, airportMARK5] call BIS_fnc_selectRandom;

    playergroup = group Player;
    deleteWaypoint [playergroup, 0];
sleep 5;

NEXTWP = playergroup addWaypoint [(getPos WPmark), 0];
sleep 1;
NEXTWP setWaypointType "hold";

    DestinationTRIG setpos (getpos WPmark);
    [playergroup, 2] setWaypointCompletionRadius 5;
    hint "";
    AP2=0;
};

//Airport 3

if (Pass==0 && AP1==0 && AP2==0 && AP3==1 && AP4==0 && AP5==0) then {
passenger1 = [CIV1, CIV2, CIV3, CIV4] call BIS_fnc_selectRandom;
    passenger1 assignAsCargoIndex [playerJET, 0];
    passenger1 moveinCargo playerJET;
    pass=1;
    hint "You have a new passenger.";

sleep 1;

WPmark = [airportMARK1, airportMARK2, airportMARK4, airportMARK5] call BIS_fnc_selectRandom;

    playergroup = group Player;
    deleteWaypoint [playergroup, 0];
sleep 5;

NEXTWP = playergroup addWaypoint [(getPos WPmark), 0];
sleep 1;
NEXTWP setWaypointType "hold";

    DestinationTRIG setpos (getpos WPmark);
    [playergroup, 2] setWaypointCompletionRadius 5;
    hint "";
    AP3=0;
};

//Airport 4

if (Pass==0 && AP1==0 && AP2==0 && AP3==0 && AP4==1 && AP5==0) then {
passenger1 = [CIV1, CIV2, CIV3, CIV4] call BIS_fnc_selectRandom;
    passenger1 assignAsCargoIndex [playerJET, 0];
    passenger1 moveinCargo playerJET;
    pass=1;
    hint "You have a new passenger.";

sleep 1;

WPmark = [airportMARK1, airportMARK2, airportMARK3, airportMARK5] call BIS_fnc_selectRandom;

    playergroup = group Player;
    deleteWaypoint [playergroup, 0];
sleep 5;

NEXTWP = playergroup addWaypoint [(getPos WPmark), 0];
sleep 1;
NEXTWP setWaypointType "hold";

    DestinationTRIG setpos (getpos WPmark);
    [playergroup, 2] setWaypointCompletionRadius 5;
    hint "";
    AP4=0;
};

//Airport 5

if (Pass==0 && AP1==0 && AP2==0 && AP3==0 && AP4==0 && AP5==1) then {
passenger1 = [CIV1, CIV2, CIV3, CIV4] call BIS_fnc_selectRandom;
    passenger1 assignAsCargoIndex [playerJET, 0];    
    passenger1 moveinCargo playerJET;
    pass=1;
    hint "You have a new passenger.";

sleep 1;

WPmark = [airportMARK1, airportMARK2, airportMARK3, airportMARK4] call BIS_fnc_selectRandom;

    playergroup = group Player;
    deleteWaypoint [playergroup, 0];
sleep 5;

NEXTWP = playergroup addWaypoint [(getPos WPmark), 0];
sleep 1;
NEXTWP setWaypointType "hold";

    DestinationTRIG setpos (getpos WPmark);
    [playergroup, 2] setWaypointCompletionRadius 5;
    hint "";
    AP5=0;
};

//deliver passenger
if (Pass==1 && (AP1==1 or AP2==1 or AP3==1 or AP4==1 or AP5==1)) then {
    _list = fullCrew [ playerJET, "cargo" ] apply { _x select 0 };
    Passenger1 = _list select 0;
    moveOut passenger1;
    unassignvehicle passenger1;


sleep 1;
    Passenger1 setpos (getpos Limbo);

    hint "Get a new Passenger.";
    pass=0;
stophere = []execVM "NextFare.sqf";
    terminate stophere;
};

 


RingClear.sqf
Approach the area, prompt to begin ring course. Player clears ring 1 and ring object snaps to ringMARK_2, ringMARK3, ect. Player can complete course as many times as they like and simply fly away to end the scenario. To restart the scenario, enter the area again.
 

Spoiler

//challenge 1
ringChallenge = [] spawn {

waitUntil {
    ringCHALL==1
    };

if (ring6==1) then{
currentRING= [ringMARK1_1,ringMARK1_2,ringMARK1_3,ringMARK1_4, ringMARK1_5, ringMark1_6] select 5;

sleep 0.2;
    ["task1",[currentRING,true]] call BIS_fnc_taskSetDestination;
    ringGOAL setpos (getpos currentRING);
    ring6=0;
    ring1=1;
    terminate rings;
    };
};

if (ring5==1) then{
currentRING= [ringMARK1_1,ringMARK1_2,ringMARK1_3,ringMARK1_4, ringMARK1_5, ringMark1_6] select 4;

sleep 0.2;
    ["task1",[currentRING,true]] call BIS_fnc_taskSetDestination;
    ringGOAL setpos (getpos currentRING);
    ring5=0;
    ring6=1;
    terminate rings;
    };

if (ring4==1) then{
currentRING= [ringMARK1_1,ringMARK1_2,ringMARK1_3,ringMARK1_4, ringMARK1_5, ringMark1_6] select 3;

sleep 0.2;
    ["task1",[currentRING,true]] call BIS_fnc_taskSetDestination;
    ringGOAL setpos (getpos currentRING);
    ring4=0;
    ring5=1;
    terminate rings;
    };

if (ring3==1) then{
currentRING= [ringMARK1_1,ringMARK1_2,ringMARK1_3,ringMARK1_4, ringMARK1_5, ringMark1_6] select 2;

sleep 0.2;
    ["task1",[currentRING,true]] call BIS_fnc_taskSetDestination;
    ringGOAL setpos (getpos currentRING);
    ring3=0;
    ring4=1;
    terminate rings;
    };

if (ring2==1) then{
currentRING= [ringMARK1_1,ringMARK1_2,ringMARK1_3,ringMARK1_4, ringMARK1_5, ringMark1_6] select 1;

sleep 0.2;
    ["task1",[currentRING,true]] call BIS_fnc_taskSetDestination;
    ringGOAL setpos (getpos currentRING);
    ring2=0;
    ring3=1;
hint"";
    terminate rings;
    };


if (ring1==1) then{
hint "Go!";
    playergroup = group Player;
    deleteWaypoint [playergroup, 0];
currentRING= [ringMARK1_1,ringMARK1_2,ringMARK1_3,ringMARK1_4, ringMARK1_5, ringMark1_6] select 0;
sleep 0.2;
    ["task1",[currentRING,true]] call BIS_fnc_taskSetDestination;
    ringGOAL setpos (getpos currentRING);
    ringGOAL hideobject FALSE;
    ring2=1;
    ring1=0;
    terminate rings;
    };

 


Cargo.sqf
Pick up cargo at the central airport and deliver it to the people in need. Timer challenge coming soon.

Spoiler

CargoChallenge = [] spawn {

waitUntil {
    sleep 0.5;
    pass==0
    };

//airport 1
if (cargo==0 && AP1==1 && AP2==0 && AP3==0 && AP4==0 && AP5==0) then {

cargoBOX hideobject true;
hint "Deliver the Cargo";
CargoDEST = [airportMARK2, airportMARK3, airportMARK4, airportMARK5] call BIS_fnc_selectRandom;

    playergroup = group Player;
    deleteWaypoint [playergroup, 0];
sleep 5;

cargoWP = playergroup addWaypoint [(getPos cargoDEST), 0];
cargoWP setWaypointType "hold";
    cargoMARK setpos (getpos cargoDEST);
    ControlAP setpos (getpos cargoDEST);
    DestinationTRIG setpos (getpos cargoDEST);
    [playergroup, 2] setWaypointCompletionRadius 5;
    hint "";
    timer=1;
    //timerSQF= []execVM "timer.sqf";
    AP1=0;
    Cargo=1;
    };

//airport 2
if (cargo==0 && AP1==0 && AP2==1 && AP3==0 && AP4==0 && AP5==0) then {

cargoBOX hideobject true;
hint "Deliver the Cargo";
cargoDEST = [airportMARK1, airportMARK3, airportMARK4, airportMARK5] call BIS_fnc_selectRandom;

    playergroup = group Player;
    deleteWaypoint [playergroup, 0];
sleep 5;

cargoWP = playergroup addWaypoint [(getPos cargoDEST), 0];
cargoWP setWaypointType "hold";
    cargoMARK setpos (getpos cargoDEST);
    ControlAP setpos (getpos cargoDEST);
    DestinationTRIG setpos (getpos cargoDEST);
    [playergroup, 2] setWaypointCompletionRadius 5;
    hint "";
    timer=1;
    //timerSQF= []execVM "timer.sqf";
    Cargo=1;
    AP2=0;
    };

//airport 3
if (cargo==0 && AP1==0 && AP2==0 && AP3==1 && AP4==0 && AP5==0) then {

cargoBOX hideobject true;
hint "Deliver the Cargo";
cargoMARK = [airportMARK1, airportMARK2, airportMARK4, airportMARK5] call BIS_fnc_selectRandom;

    playergroup = group Player;
    deleteWaypoint [playergroup, 0];
sleep 5;

cargoWP = playergroup addWaypoint [(getPos cargoDEST), 0];
cargoWP setWaypointType "hold";
    cargoMARK setpos (getpos cargoDEST);
    ControlAP setpos (getpos cargoDEST);
    DestinationTRIG setpos (getpos cargoDEST);
    [playergroup, 2] setWaypointCompletionRadius 5;
    hint "";
    timer=1;
    //timerSQF= []execVM "timer.sqf";
    AP3=0;
    Cargo=1;
    };

//airport 4
if (cargo==0 && AP1==0 && AP2==0 && AP3==0 && AP4==1 && AP5==0) then {

cargoBOX hideobject true;
hint "Deliver the Cargo";
cargoMARK = [airportMARK1, airportMARK2, airportMARK3, airportMARK5] call BIS_fnc_selectRandom;

    playergroup = group Player;
    deleteWaypoint [playergroup, 0];
sleep 5;

cargoWP = playergroup addWaypoint [(getPos cargoDEST), 0];
cargoWP setWaypointType "hold";
    cargoMARK setpos (getpos cargoDEST);
    ControlAP setpos (getpos cargoDEST);
    DestinationTRIG setpos (getpos cargoDEST);
    [playergroup, 2] setWaypointCompletionRadius 5;
    hint "";
    timer=1;
    //timerSQF= []execVM "timer.sqf";
    AP4=0;
    Cargo=1;
    };

//airport 5
if (cargo==0 && AP1==0 && AP2==0 && AP3==0 && AP4==0 && AP5==1) then {

cargoBOX hideobject true;
hint "Deliver the Cargo";
cargoMARK = [airportMARK1, airportMARK2, airportMARK3, airportMARK4] call BIS_fnc_selectRandom;

    playergroup = group Player;
    deleteWaypoint [playergroup, 0];
sleep 5;

cargoWP = playergroup addWaypoint [(getPos cargoDEST), 0];
cargoWP setWaypointType "hold";
    cargoMARK setpos (getpos cargoDEST);
    ControlAP setpos (getpos cargoDEST);
    DestinationTRIG setpos (getpos cargoDEST);
    [playergroup, 2] setWaypointCompletionRadius 5;
    hint "";
    timer=1;
    //timerSQF= []execVM "timer.sqf";
    AP5=0;
    Cargo=1;
    };

//deliver cargo
if (cargo==1 && (AP1==1 or AP2==1 or AP3==1 or AP4==1 or AP5==1)) then {
    hint "Cargo Delivered";
    ["task1",[objNULL,false]] call BIS_fnc_taskSetDestination;
    playergroup = group Player;
    deleteWaypoint [playergroup, 0];
sleep 5;
NEXTWP = playergroup addWaypoint [(getPos airportMARK1), 0];
NEXTWP setWaypointType "hold";
    cargoMARK setpos (getpos cargoMARKdef);
    DestinationTRIG setpos (getpos airportMARK1);
    hint "Another shipment is available at Aeroport de Tanoa";
    cargo=0;
sleep 4;
    hint "";
    ControlAP setpos (getpos airportMARK1);
stopcargo = []execVM "cargoscript.sqf";
    terminate stopcargo;
    };
};

 

  • Like 6

Share this post


Link to post
Share on other sites

Seems cool  :thumbsup:

Cannot say how to optimize the script but if we are talking about a wip scenario, may I ask, when you say 20 flight plans ... are those with waypoints? Because when flying a plane you got to have an approach. So as to come in line with the runway and such. Do not think a mission containing such things exists. About the approach ... was playing FSX some time before, was instructed to cycle around the runway, I saw it straight forward so whatevs. A straight line is the fastest! Damn wind... Was sliding down the runway, so while sliding made an 180 degrees turn and pushed throttle to full. The AI copilot said once we stopped ... I am just glad I am on the ground. Lol, have never heard such a thing in a game before :rofl:

  • Like 1

Share this post


Link to post
Share on other sites
7 minutes ago, JohnKalo said:

 The AI copilot said once we stopped ... I am just glad I am on the ground.

 

On the other end, there is no case of flight which didn't end on ground.

  • Haha 6

Share this post


Link to post
Share on other sites

@JohnKalo "... if we are talking about a wip scenario, may I ask, when you say 20 flight plans ... are those with waypoints?", "...  when flying a plane you got to have an approach..."
The twenty flight plans would be, potentially, any airport to any other airport except the one you're currently at. If my math is correct 5 starting positions and four possible destinations equals 20 combinations.
A complete landing procedure would be cool. I haven't decided how to do this yet. Right now you get a waypoint to indicate which airport to land at.

I'm open to solutions.

EDIT

So I'll add another waypoint in the chain that defines the approach vector for each airport. Does a waypoint 3 km away and around 200 m satisfy this?

  • Like 2

Share this post


Link to post
Share on other sites

wogz187 this is all a very nice idea !  :thumbs-up:

I haven't yet check this though !

Keep it up !

  • Like 2

Share this post


Link to post
Share on other sites
Quote

So I'll add another waypoint in the chain that defines the approach vector for each airport. Does a waypoint 3 km away and around 200 m satisfy this?

It must be a really nicely placed waypoint. Because according to the approach if it is plane - airport - waypoint in a straight line then it would not change much. What I suggested cannot be easily implemented because in order to have a nice flight path,  the path will have to change according to your starting position. Different approach for each combination of starting position - destination. Most likely that is why such a thing does not exist. Yet?  

  • Like 1

Share this post


Link to post
Share on other sites

@JohnKalo,

Quote

according to the approach if it is plane - airport - waypoint in a straight line


So the approach vector waypoint is actually on the opposite side of the airport compared to the approaching plane? And the approach vector could be in multiple positions depending on the direction from which the aircraft is travelling? That sounds do-able but needlessly complicated for what is supposed to be a fun, cathartic flight over paradise.

Last night I implemented what I described above except that the approach vector is not a waypoint. Instead the approach is marked by a task marker, which makes it visible but not necessary. If a pilot decides to ignore the safe approach and land anyway, it's no problem and the script still continues. This addition definitely improves the gameplay and makes it easier for new pilots to line up on the runway. Thanks for the idea, John!

Got any more cool ideas. I want to add some challenges, like complete a circuit in a set amount of time, don't exceed the altitude limit, ferry cargo, assist the coastguard, ect.

  • Like 2

Share this post


Link to post
Share on other sites

Do you have a server this is running on? I’d love to give it a go with airplanes and helicopters. I’m more into helo’s but like to fly anything. 

Share this post


Link to post
Share on other sites

@Jnr4817,
This mission is part of my GUI TOYS project. It's a single-player scenario but I'll post it and the community can do whatever they want with it.

If you want to go for a cool flight, play JET TOYS

You're welcome to playtest along with me: Drive Link see above for link

Note: Currently my co-pilot and two of the four possible passengers are women. If you don't have the FEMALE assets installed it will either return an error or default to some other NPC.

Have fun!

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

@JohnKalo,
After playing a bit, the approach works great. It's a very simplified version of the real thing but illustrates the principal well enough. The player just has to realize that the yellow Task Marker is not a waypoint but a navigation aid, and use it, like a gun-sight, to line up the waypoint marker.

The "TUNE" button on the mission controller now contacts the tower at Aeroport de Tanoa and clears the player for final landing-- and sets the WP and approach for the same.

I've also implemented an Overheat Stall and a Fuel Leak Stall when the player is suffering from bad luck.

Still more to come!

  • Like 2

Share this post


Link to post
Share on other sites
Quote

So the approach vector waypoint is actually on the opposite side of the airport compared to the approaching plane? And the approach vector could be in multiple positions depending on the direction from which the aircraft is travelling? That sounds do-able but needlessly complicated for what is supposed to be a fun, cathartic flight over paradise.

Yep that is correct and true!

 

Quote

Got any more cool ideas. I want to add some challenges, like complete a circuit in a set amount of time, don't exceed the altitude limit, ferry cargo, assist the coastguard, ect.

Altitude limit is great in case there are AAs around. As for the coastguard ... an idea would be to make a search area where a criminal or a person needing assistance is located. Like a vessel on fire. With a condition plane close to the target for some time the task can become successful! In case of the criminals the guys can be shooting at the plane. Taking fire however is indeed not a flight over paradise environment  :scratchchin:

Apart from the above maybe sightseeing tours? Or transferring of highly important cargo such as medical supplies?

 

Quote

After playing a bit, the approach works great. It's a very simplified version of the real thing but illustrates the principal well enough. The player just has to realize that the yellow Task Marker is not a waypoint but a navigation aid, and use it, like a gun-sight, to line up the waypoint marker.
The "TUNE" button on the mission controller now contacts the tower at Aeroport de Tanoa and clears the player for final landing-- and sets the WP and approach for the same.
I've also implemented an Overheat Stall and a Fuel Leak Stall when the player is suffering from bad luck.
Still more to come!

Nicely done ... cool!

  • Like 1

Share this post


Link to post
Share on other sites

@JohnKalo
 

Quote

Altitude limit is great in case there are AAs around.

I'll make an Altitude chirp right before the engine stalls around 5000 m.
 

Quote

Like a vessel on fire. With a condition plane close to the target for some time...

Yes. Exactly that.
 

Quote

Apart from the above maybe sightseeing tours? Or transferring of highly important cargo such as medical supplies?

Yes, both of those. Sightseeing will be a list of waypoints with a restriction on speed and altitude. How to make cargo shipments different than passenger drop offs? Perhaps the cargo is time sensitive and will expire if not delivered in a specific time limit.

Thanks, bro!

  • Like 1

Share this post


Link to post
Share on other sites
Quote

How to make cargo shipments different than passenger drop offs? Perhaps the cargo is time sensitive and will expire if not delivered in a specific time limit.

Yep nicely said! Or in a case of a heavy cargo the plane might have difficulties when operating.

  • Like 1

Share this post


Link to post
Share on other sites

Don’t forget oil rigs for the helo guys or the hard to reach areas. 

  • Like 2

Share this post


Link to post
Share on other sites

@Jnr4817, @JohnKalo,

 

Quote

Don’t forget oil rigs for the helo guys or the hard to reach areas. 

Duly noted. I believe changing the unit "playerJET" (which is a plane), to a helicopter would not affect most of the scripts. I'll research this further. I'm curious, do you guys fly with mouse/keyboard or controls/joysticks? And do you use the advanced helicopter flight model?

The cargo delivery system is fully implemented now.

I'm working on a Ring Challenge script to add 3-5 ring courses-- like sightseeing tours (volcano rim) and Mach loop style canyon runs (I know airplanes can't do a mach loop). The challenge is to create a single trigger ring for all of the challenges. Updating it's position as need by the player clearing each ring.

Update soon.

  • Like 1

Share this post


Link to post
Share on other sites
Quote

Duly noted. I believe changing the unit "playerJET" (which is a plane), to a helicopter would not affect most of the scripts. I'll research this further. I'm curious, do you guys fly with mouse/keyboard or controls/joysticks? And do you use the advanced helicopter flight model?

Personally I fly using the advanced flight models with a joystick and a steering wheel. The steering wheel is ehmmm... for the pedals. For the rudder right and left. I could buy some pedals for like 100 euros but no money no honey. Kinda funny when others complain about not being able to fly as they want with their expensive kits. What would they do if joystick buttons only worked when pressed via a specific and highly scientific way. Lol.. Anyways, as for the advanced flight model if you get used to that it is not easy to fly without them. That is because the chopper stops responding as it should and flight becomes weird. The same technique I use with planes although I mainly handle choppers.

 

Quote

The cargo delivery system is fully implemented now.
I'm working on a Ring Challenge script to add 3-5 ring courses-- like sightseeing tours (volcano rim) and Mach loop style canyon runs (I know airplanes can't do a mach loop). The challenge is to create a single trigger ring for all of the challenges. Updating it's position as need by the player clearing each ring.
Update soon.

Awesome! Oh you mean having only one ring show at a time? Maybe you can use the Show Model On/Off feature. So as for the rings to be there and only shown when needed.

  • Thanks 1

Share this post


Link to post
Share on other sites

@JohnKalo,
 

Quote

 Maybe you can use the Show Model On/Off feature. So as for the rings to be there and only shown when needed.

That's too easy. I want there to be one ring with a trigger and every time you hit it, it goes to the next position waiting to be hit again. So several markers will define the route and the ring object and trigger snap to the next position each time it's cleared.

  • Like 1

Share this post


Link to post
Share on other sites
7 hours ago, JohnKalo said:

Personally I fly using the advanced flight models with a joystick and a steering wheel. The steering wheel is ehmmm... for the pedals. For the rudder right and left. I could buy some pedals for like 100 euros but no money no honey. Kinda funny when others complain about not being able to fly as they want with their expensive kits. What would they do if joystick buttons only worked when pressed via a specific and highly scientific way. Lol.. Anyways, as for the advanced flight model if you get used to that it is not easy to fly without them. That is because the chopper stops responding as it should and flight becomes weird. The same technique I use with planes although I mainly handle choppers.

 

Awesome! Oh you mean having only one ring show at a time? Maybe you can use the Show Model On/Off feature. So as for the rings to be there and only shown when needed.

I fly trackir, stick, throttle, pedals, AFM. 

The whole 9 yards.

  • Like 1

Share this post


Link to post
Share on other sites
Posted (edited)

@JohnKalo,

Quote

Personally I fly using the advanced flight models with a joystick

@Jnr4817

Quote

I fly trackir, stick, throttle, pedals, AFM. 

Okay. So if you guys advised a mission designer who does NOT have those things, what considerations are necessary to make it playable? What should I know about the advanced flight model and controls as a designer?

Last night I created three out of probably five ring courses. These ring courses are so much fun they pretty much make the rest of the scenario irrelevant. I think players will skip the cargo and passenger mechanics and go straight to the ring courses. Next up is rescue/adventure style scenarios, like assisting the coastguard. Like everything else, I want to put a unique spin on that aspect. More info soon.

Moreover, and more interesting for you two, I will post a composition which will make it SUPER-EASY to create your own ring courses. Easy as in-- place the composition in editor, plug in script, copy and paste markers where you want the rings to appear, done.

 

Quote

The whole 9 yards.

Using aviation terminology in a thread about flight scenarios is tight!

**EDIT**

I developed the rescue scenario this afternoon and this is how it works:
1) There are five Operation Markers in the waters around Tanoa.
2) There is a composition of six markers. A Central Marker and 5 Satellite Markers.
3) The system randomly chooses between the five Operation Markers and setpos (getpos) the composition of six markers.
4) The system randomly assigns one of the satellite markers as the emergency zone.
5) A coastguard helicopter is designated as the Task at the Central marker marking "Search Zone".
6) A composition of boat/fire/smoke moves from objNULL to the emergency zone to be noticed
7) Player satisfies search criteria and is assigned a new task and the all the component pieces move back to objNULL
 

Edited by wogz187
Never underestimate the power of bis_fn_attachtorelative and objNULL
  • Like 1

Share this post


Link to post
Share on other sites
Quote

Okay. So if you guys advised a mission designer who does NOT have those things, what considerations are necessary to make it playable? What should I know about the advanced flight model and controls as a designer?

Not much. Only that flying around becomes more flexible. You can fly in more complicating (and awesome) ways.

 

Quote

I developed the rescue scenario this afternoon and this is how it works:

Nicely done! Sadly there is no wintch script to use but even so it is still cool.

Share this post


Link to post
Share on other sites

@JohnKalo,
 

Quote

Not much. Only that flying around becomes more flexible. You can fly in more complicating (and awesome) ways.

So no special considerations beyond that of a regular chopper mission. Okay.

I am considering adding a playable chopper in addition to the plane, or a way to select your vehicle at start up. Or, at least I was until I saw this,


The Search and Rescue script is implemented and working well. I'm going to play around with it a bit more today.

WIP Roadmap:

1) Add a second scenario to Search and Rescue (land based)
2) Add a flight leader challenge (fly with the other plane)
3) Add refueling
4) Redesign the GUI controller
5) Two more ring courses
6) Vehicle Selector and winch script (maybe)
7) Polish (contingencies*, props, presentation)
* Contingencies prevent the player from breaking the scenario. What happens if the player hops out of the plane? What if they jump out of the plane in flight? What if the plane crashes? What happens if the player aborts a challenge half-way through, ect.
 

  • Like 2

Share this post


Link to post
Share on other sites
Quote

I am considering adding a playable chopper in addition to the plane, or a way to select your vehicle at start up. Or, at least I was until I saw this,

That was tragic indeed.

 

Quote

6) Vehicle Selector and winch script (maybe)

The winch script will be another first! 

 

Quote

* Contingencies prevent the player from breaking the scenario. What happens if the player hops out of the plane? What if they jump out of the plane in flight? What if the plane crashes? What happens if the player aborts a challenge half-way through, ect.

Yeah one of the main troubling in editing. What will the players do while playing. What if they do this or that. Or even worse ... what will the AI do when an MP mission is played as SP?!?!?

  • Like 1

Share this post


Link to post
Share on other sites

@JohnKalo,
 

Quote

The winch script will be another first! 

Bummer. I was hoping that would be a plug-in. I might need your help with that.

I did a little bit of research about making this mission MP. As far as I can tell the greatest challenge in MP is making things sync. In this mission we don't want ANYTHING to sync. It would be cool to have other people flying around but we don't want any of the actual triggers/markers/ect to be sync'd, just the players positions. Does this make it easier or more difficult to make MP?

Check out the readMe file I added to the original post.

  • Like 1

Share this post


Link to post
Share on other sites
Quote

Bummer. I was hoping that would be a plug-in. I might need your help with that.

Not the one appropriate to help sadly. The creators of this should be able to help.

 

Quote

I did a little bit of research about making this mission MP. As far as I can tell the greatest challenge in MP is making things sync. In this mission we don't want ANYTHING to sync. It would be cool to have other people flying around but we don't want any of the actual triggers/markers/ect to be sync'd, just the players positions. Does this make it easier or more difficult to make MP?

Well in MP how will conditions, radio calls and hints be showed? An MP mission would be nice and more likable but everything should be working for each player separately. 

 

Quote

Check out the readMe file I added to the original post.

Nicely played! 

Share this post


Link to post
Share on other sites

@JohnKalo,

Thanks for the link, @duda123, is on the forum as well. Duda, we're talking about your cool script!
 

Quote

An MP mission would be nice and more likable but everything should be working for each player separately. 

Yeah. That's what I'm saying.

I reworked the AWS last night so it engages and disengages automatically as part of take-off and landing. All of my "play-testing" has been clearing rings because that is by far the most fun I've had in all of ArmA III so far. Otherwise, contingencies and presentation are top-order.

When this project is complete I'm looking forward to making a good and proper Jet training mission complete with: Formation training, Low altitude maneuvers, Mach Loop, Target practice, Stall training, and anything else I can find on Fast Jet Performance.

Stay tuned!


 

  • Like 1

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

×