Jump to content

Recommended Posts

Posted (edited)

Has transporting troops been implemented yet? I have seen some MP servers with regions in which to pick up troops for transport, however I have no clue how to do that. Do I have to place some troops on the map, land nearby and press something to make them load? And how do I offload them then?

Edited by Gloom Demon

AMD Ryzen 3600, Biostar Racing B850GT3, AMD Rx 580 8Gb, 16384 DDR4 2900, Hitachi 7K3000 2Tb, Samsung SM961 256Gb SSD, Thrustmaster T.Flight HOTAS X, Samsung S24F350 24'

Posted

Someone is probably using a script to simulate it.

ASUS ROG Maximus VIII Hero, i7-6700K, Noctua NH-D14 Cooler, Crucial 32GB DDR4 2133, Samsung 950 Pro NVMe 256GB, Samsung EVO 250GB & 500GB SSD, 2TB Caviar Black, Zotac GTX 1080 AMP! Extreme 8GB, Corsair HX1000i, Phillips BDM4065UC 40" 4k monitor, VX2258 TouchScreen, TIR 5 w/ProClip, TM Warthog, VKB Gladiator Pro, Saitek X56, et. al., MFG Crosswind Pedals #1199, VolairSim Pit, Rift CV1 :thumbup:

Posted

Too bad, I was hoping to do some ferrying around to capture airfields ;-)

AMD Ryzen 3600, Biostar Racing B850GT3, AMD Rx 580 8Gb, 16384 DDR4 2900, Hitachi 7K3000 2Tb, Samsung SM961 256Gb SSD, Thrustmaster T.Flight HOTAS X, Samsung S24F350 24'

Posted

159th server has this enabled on a couple missions.

How it works.

 

Well, it makes use of the radio menu, brought up on the ground by pressing /

Or while flying by pressing Lctrl /

 

Then chose the F10 option (other)

Then F1 or F2 (drop menu i believe its called)

Now you get 4 more options;

F1 Load Troops

F2 Unload Troops (or evacuees)

F3 Mark Loading Zone

F4 Mark Drop Zone (where applicable, most missions you can drop troops anywhere)

 

When you hit F1 form the above menu, you have a couple options between different kinds of infantry.

Paratroopers

Infantry

Manpad team

possibly others

 

You must be inside a loading zone to be able to load the troops.

 

There's also an option somewhere to mark evacuees. for this to work you need to be within an certain range of an previously dropped group.

They will then pop smoke and an text message will appear whit a heading and distance.

 

Think your able to find out the rest yourself now that you know how the basics work.

  • Like 1

[sIGPIC][/sIGPIC]

The keeper of all mathematical knowledge and the oracle of flight modeling.:)
Posted

159th_Falcon Thanks for the info - it is amazing that you guys have done this, while ED have not. I am looking forward to trying this - keep up the good work.

AMD Ryzen 3600, Biostar Racing B850GT3, AMD Rx 580 8Gb, 16384 DDR4 2900, Hitachi 7K3000 2Tb, Samsung SM961 256Gb SSD, Thrustmaster T.Flight HOTAS X, Samsung S24F350 24'

Posted

It is scripted. And troop animation is still WIP.

AWAITING ED NEW DAMAGE MODEL IMPLEMENTATION FOR WW2 BIRDS

 

Fat T is above, thin T is below. Long T is faster, Short T is slower. Open triangle is AWACS, closed triangle is your own sensors. Double dash is friendly, Single dash is enemy. Circle is friendly. Strobe is jammer. Strobe to dash is under 35 km. HDD is 7 times range key. Radar to 160 km, IRST to 10 km. Stay low, but never slow.

Posted

Yes you can, please mind though, i did NOT make the script as it is now.

 

Only a very simplified version of it. The current script was made by 159th_Ajax

 

To pick up a group of units that was dropped of previously;

Go to the radio menu again and hit F3 description says something whit evacuees.

Then you get a text message that a group is popping smoke if your close enough.

 

(i think you can also pick em up directly if you remember where they are, not sure though)

 

Land next to the group, not sure how close ya need to be, then hit F10, F1 for load troops then F5 i think it is for evacuees.

 

Also, be creative whit your drops, try to give mortar teams a good line of sight.

(which i failed at here unfotunately.)

 

As for weight, not currently implemented. But i believe ED is working on an script function that allows you to add weight.

Would be nice when combined to these troopdrop scripts.

[sIGPIC][/sIGPIC]

The keeper of all mathematical knowledge and the oracle of flight modeling.:)
Posted (edited)

You can create troop transport with the current trigger sysem, but you won't see them in the chopper. It seems a trigger for putting on and taking of aircraft weight isn't functional either yet. It's also pre-configured pickup and landing zones too. You don't need to create your own script for a decent troop transport mission. But yes, it's more simplified than working with menu shortcuts and having a personal choice of dropzone.

Edited by BRooDJeRo
  • 1 month later...
Posted

Falcon, I have AJAX's script which I found on the 159th forums ( http://www.159thgar.com/forums/viewtopic.php?f=47&t=7836 ). I have been working on a simple mission using the TroopDropScript he made. I have read the tutorial on how to use it about 100 times, but can't make it work. When I load the mission, I have no option to load troops despite spawning inside a Pickup Zone.

 

I am having trouble figuring out where to put the actual objects for the Ferry groups. Do I just place them way to the other side of the map with the Trigger Zone Templates? The tutorial reads, "Ferry groups can only be embarked at a pickup zone. They have predefined unit compositions and are spawned into the mission by Hueys as needed." I don't know where to physically put the groups though, or if I don't generate the mphysically, where/how do I "create" them?

 

159th server has this enabled on a couple missions.

How it works.

 

Well, it makes use of the radio menu, brought up on the ground by pressing /

Or while flying by pressing Lctrl /

 

Then chose the F10 option (other)

Then F1 or F2 (drop menu i believe its called)

Now you get 4 more options;

F1 Load Troops

F2 Unload Troops (or evacuees)

F3 Mark Loading Zone

F4 Mark Drop Zone (where applicable, most missions you can drop troops anywhere)

 

When you hit F1 form the above menu, you have a couple options between different kinds of infantry.

Paratroopers

Infantry

Manpad team

possibly others

 

You must be inside a loading zone to be able to load the troops.

 

There's also an option somewhere to mark evacuees. for this to work you need to be within an certain range of an previously dropped group.

They will then pop smoke and an text message will appear whit a heading and distance.

 

Think your able to find out the rest yourself now that you know how the basics work.

The State Military (MAG 13)

 

[sIGPIC][/sIGPIC]



 

SHEEP WE-01

AV-8B BuNo 164553

VMA-214

Col J. “Poe” Rasmussen

http://www.statelyfe.com

 

Specs: Gigabyte Z390 Pro Wifi; i9-9900K; EVGA 2080 Ti Black; 32GB Corsair Vengeance LPX DDR4; Samsung 970 EVO Series M.2 SSD; WIN10; ASUS VG248QE; CV-1 and Index



Modules: A-10C; AV8B; CA; FC3; F-5; F-14; F-18; F-86; HAWK; L-39; P-51; UH1H; NTTR; Normandy; Persian Gulf

Posted
  • Like 1

i5 8600k@5.2Ghz, Asus Prime A Z370, 32Gb DDR4 3000, GTX1080 SC, Oculus Rift CV1, Modded TM Warthog Modded X52 Collective, Jetseat, W10 Pro 64

[sIGPIC][/sIGPIC]

Posted

Thanks Cibit. I might try that first one and see if I have any better luck. A thought: Do you know if making additional events in the ME will nullify or screw up script loaded as a file? I load the script file first, then continue to add my own simple events, such as message to coalition and pop smoke etc. I wonder if it's an "either-or" situation.

The State Military (MAG 13)

 

[sIGPIC][/sIGPIC]



 

SHEEP WE-01

AV-8B BuNo 164553

VMA-214

Col J. “Poe” Rasmussen

http://www.statelyfe.com

 

Specs: Gigabyte Z390 Pro Wifi; i9-9900K; EVGA 2080 Ti Black; 32GB Corsair Vengeance LPX DDR4; Samsung 970 EVO Series M.2 SSD; WIN10; ASUS VG248QE; CV-1 and Index



Modules: A-10C; AV8B; CA; FC3; F-5; F-14; F-18; F-86; HAWK; L-39; P-51; UH1H; NTTR; Normandy; Persian Gulf

Posted
159th_Falcon it is amazing that you guys have done this, while ED have not.

 

E.D. implemented the scripting language / functions tha allow these scripts to work & have left the specific implementations to the end users.

 

Presumably at some time they'll add some standardised shortcuts to the functions in the ME.

  • Like 1

Cheers.

Posted
Thanks Cibit. I might try that first one and see if I have any better luck. A thought: Do you know if making additional events in the ME will nullify or screw up script loaded as a file? I load the script file first, then continue to add my own simple events, such as message to coalition and pop smoke etc. I wonder if it's an "either-or" situation.

 

Just add away. The script will need to be reloaded IIRC but I add extra triggers and trigger rules as required:)

i5 8600k@5.2Ghz, Asus Prime A Z370, 32Gb DDR4 3000, GTX1080 SC, Oculus Rift CV1, Modded TM Warthog Modded X52 Collective, Jetseat, W10 Pro 64

[sIGPIC][/sIGPIC]

Posted

 

So Cibit, I was able to use geloxo's CTTS to fix my problem. I now have the mission where I want it for a v1, but there is a little more I hope to add when I can figure out how.

 

Top of the list is what I guess I will call an "insurgent counter." It's present in Deck's original HueyDrop2 mission and displays a mission status with the current number of insurgents in a given zone, then shows the number of units needed for evac and eventually that the area is cleared. I know you know what I mean, :-). Do you know which snippet of script I would need to call for that or a way to add that to a mission generated primarily with the CTTS?

The State Military (MAG 13)

 

[sIGPIC][/sIGPIC]



 

SHEEP WE-01

AV-8B BuNo 164553

VMA-214

Col J. “Poe” Rasmussen

http://www.statelyfe.com

 

Specs: Gigabyte Z390 Pro Wifi; i9-9900K; EVGA 2080 Ti Black; 32GB Corsair Vengeance LPX DDR4; Samsung 970 EVO Series M.2 SSD; WIN10; ASUS VG248QE; CV-1 and Index



Modules: A-10C; AV8B; CA; FC3; F-5; F-14; F-18; F-86; HAWK; L-39; P-51; UH1H; NTTR; Normandy; Persian Gulf

Posted

I think a function to count units/groups is the way. If you can find the correct snippet then use the do script command to initiate it. Got to make tea for the family ATM but below is Decks group counter script see if you can utilise it for your mission:thumbup:

 
groupCounter = 100
unitCounter = 100

function DropoffGroupDirect(count, radius, xCenter, yCenter, xDest, yDest)
   local group = {
       ["visible"] = false,
       ["taskSelected"] = true,
       ["groupId"] = groupCounter,
       ["hidden"] = false,
       ["units"] = {},
       ["y"] = yCenter,
       ["x"] = xCenter,
       ["name"] = "GroupName" .. groupCounter,
       ["start_time"] = 0,
       ["task"] = "Ground Nothing",
       ["route"] = {
           ["points"] =
           {
               [1] =
               {
                   ["alt"] = 41,
                   ["type"] = "Turning Point",
                   ["ETA"] = 0,
                   ["alt_type"] = "BARO",
                   ["formation_template"] = "",
                   ["y"] = yCenter,
                   ["x"] = xCenter,
                   ["ETA_locked"] = true,
                   ["speed"] = 5.5555555555556,
                   ["action"] = "Diamond",
                   ["task"] =
                   {
                       ["id"] = "ComboTask",
                       ["params"] =
                       {
                           ["tasks"] =
                           {
                           }, -- end of ["tasks"]
                       }, -- end of ["params"]
                   }, -- end of ["task"]
                   ["speed_locked"] = false,
               }, -- end of [1]
               [2] =
               {
                   ["alt"] = 54,
                   ["type"] = "Turning Point",
                   ["ETA"] = 52.09716824195,
                   ["alt_type"] = "BARO",
                   ["formation_template"] = "",
                   ["y"] = yDest,
                   ["x"] = xDest,
                   ["ETA_locked"] = false,
                   ["speed"] = 5.5555555555556,
                   ["action"] = "Diamond",
                   ["task"] =
                   {
                       ["id"] = "ComboTask",
                       ["params"] =
                       {
                           ["tasks"] =
                           {
                           }, -- end of ["tasks"]
                       }, -- end of ["params"]
                   }, -- end of ["task"]
                   ["speed_locked"] = false,
               }, -- end of [2]
           }, -- end of ["points"]
       }, -- end of ["route"]
   }

   groupCounter = groupCounter + 1
  
   for i = 1,count do  
       local angle = math.pi * 2 * (i-1) / count
       local xofs = math.cos(angle) * radius
       local yofs = math.sin(angle) * radius
       local unitType = "Soldier M4"
       if i < 4 then
           unitType = "Soldier M249"
       end
       group.units[i] = NewSoldierUnit(xCenter + xofs, yCenter + yofs, angle, unitType)
      
   end
  
   return group
end

function NewSoldierUnit(x, y, heading, unitType)
   local unit = {
       ["y"] = y,
       ["type"] = unitType,
       ["name"] = "Unitname" .. unitCounter,
       ["unitId"] = unitCounter,
       ["heading"] = heading,
       ["playerCanDrive"] = true,
       ["skill"] = "Excellent",
       ["x"] = x,
   }
  
   unitCounter = unitCounter + 1
  
   return unit    
end


PickupZones = {
   [1] = {
       ZoneName = "PickupZone",
       SmokeColor = trigger.smokeColor.Blue,
   },
}

DropoffZones = {
   [1] = {
       Name = "Nuclear Plant (Red)",
       ZoneName = "DropoffZone1",
       SmokeColor = trigger.smokeColor.Red,
       DropFunction = DropoffGroupDirect
   },
   [2] = {
       Name = "Rail Station (Orange)",
       ZoneName = "DropoffZone2",
       SmokeColor = trigger.smokeColor.Orange,
       DropFunction = DropoffGroupDirect
   },
   [3] = {
       Name = "City Center (Green)",
       ZoneName = "DropoffZone3",
       SmokeColor = trigger.smokeColor.Green,
       DropFunction = DropoffGroupDirect
   },
   [4] = {
       Name = "Hospitals (Blue)",
       ZoneName = "DropoffZone4",
       SmokeColor = trigger.smokeColor.Blue,
       DropFunction = DropoffGroupDirect
   },
}

function SpawnSmoke(smokeX, smokeY, smokeColor)
   local pos2 = { x = smokeX, y = smokeY }
   local alt = land.getHeight(pos2)
   local pos3 = {x=pos2.x, y=alt, z=pos2.y}
   trigger.action.smoke(pos3, smokeColor)
end

function SmokeTimer(arg, time)    
   for i=1,#PickupZones do
      local zone = trigger.misc.getZone(PickupZones[i].ZoneName)
      SpawnSmoke(zone.point.x, zone.point.z, PickupZones[i].SmokeColor)
   end
  
   for i=1,#DropoffZones do
      local zone = trigger.misc.getZone(DropoffZones[i].ZoneName)
      SpawnSmoke(zone.point.x, zone.point.z, DropoffZones[i].SmokeColor)
   end
  
   return time + 270
end

UnitStateTable = {}

function UnitRadioCommand(unitName)
   local unit = Unit.getByName(unitName)
  
   if unit == nil then
       UnitStateTable[unitName] = false
       return
   end
  
   local unitId = unit:getID()
   local group = unit:getGroup()
   local groupName = group:getName()
   local playerName = unit:getPlayerName()
  
   if UnitStateTable[unitName] == nil then
       UnitStateTable[unitName] = false
   end
  
   local pickupZone = UnitInAnyPickupZone(unit)
   local dropoffZone = UnitInAnyDropoffZone(unit)
  
   if pickupZone ~= nil then
       UnitStateTable[unitName] = true
       trigger.action.outText(playerName .. " (" .. groupName .. ") has 11 troops on board.", 10)
   else
       if dropoffZone ~= nil then
           if UnitStateTable[unitName] == true then
               local unitpos = unit:getPoint()
               local triggerZone = trigger.misc.getZone(dropoffZone.ZoneName)
               local newGroup = dropoffZone.DropFunction(11, 15, unitpos.x, unitpos.z, triggerZone.point.x, triggerZone.point.z)
               coalition.addGroup(country.id.USA, Group.Category.GROUND, newGroup)
              
               UnitStateTable[unitName] = false
              
               trigger.action.outText(playerName .. " (" .. groupName .. ") just dropped 11 troops.", 10)
           else
               trigger.action.outText(playerName .. " (" .. groupName .. ") didn't have any troops to drop.", 10)
           end
       else
           -- landed in nomands
           trigger.action.outText(playerName .. " (" .. groupName .. ") isn't in a pickup or dropoff zone.", 10)
       end
   end      
end

RadioCommandTable = {}

function AddRadioCommand(unitName)
   if RadioCommandTable[unitName] == nil then
       local unit = Unit.getByName(unitName)
       if unit == nil then
           return
       end
      
       local group = unit:getGroup()
       if group == nil then
           return
       end
      
       local gid = group:getID()
      
       missionCommands.addCommandForGroup(gid, "Load/unload Troops", nil, UnitRadioCommand, unitName)
       RadioCommandTable[unitName] = true
   end
end


function AddRadioCommands(arg, time)
   AddRadioCommand("HueyPilot1")
   AddRadioCommand("HueyPilot2")
   AddRadioCommand("HueyPilot3")
   AddRadioCommand("HueyPilot4")
   AddRadioCommand("HueyPilot5")
   AddRadioCommand("HueyPilot6")
   AddRadioCommand("HueyPilot7")
   AddRadioCommand("HueyPilot8")
   AddRadioCommand("HueyPilot9")      
   return time + 5
end

function GetDistance(xUnit, yUnit, xZone, yZone)
   local xDiff = xUnit - xZone
   local yDiff = yUnit - yZone
   return math.sqrt(xDiff * xDiff + yDiff * yDiff)    
end


function FindNearestDropoffZone(unit)
   local minDist = 5000
   local minZone = nil
   local unitpos = unit:getPoint()
  
   for i=1,#DropoffZones do
       local zone = DropoffZones[i]
       local triggerZone = trigger.misc.getZone(zone.ZoneName)
       local dist = GetDistance(unitpos.x, unitpos.z, triggerZone.point.x, triggerZone.point.z)
       if dist < minDist then
           minDist = dist
           minZone = zone
       end
   end
  
   return minZone    
end


function StatusReport(arg, time)
   -- array of Group function coalition.getGroups(enum coalition.side coalition, enum Group.Category groupCategory or nil)
   -- array of Unit function Group.getUnits(Group self)
   -- enum country.id CoalitionObject.getCountry(CoalitionObject self)

   local zoneTable = {}

   for i=1,#DropoffZones do
       zoneTable[DropoffZones[i].Name] = 0
   end

   local groups = coalition.getGroups(coalition.side.RED, Group.Category.GROUND)
   env.info("Got groups: " .. #groups, false)
   for i=1,#groups do
       local group = groups[i]
       if group ~= nil then
           local units = group:getUnits()
           for j=1,#units do
               local unit = units[j]
               if unit ~= nil then
                   local country = unit:getCountry()
                   if country == 17 then       -- if INSURGENT
                       local zone = FindNearestDropoffZone(unit)
                       if zone ~= nil then
                           zoneTable[zone.Name] = zoneTable[zone.Name] + 1
                       end
                   end
               end
           end
       end
   end

   local text = "MISSION STATUS  -  See mission briefing for details\n\n"

   for k,v in pairs(zoneTable) do
       env.info("Append status [" .. tostring(k) .. "] [" .. tostring(v) .. "]", false)
       text = text .. tostring(k) .. ": " .. tostring(v) .. " insurgent units remain.\n"
   end
  
  
   trigger.action.outText(text, 20)
  
   return time + 45
end
  

do
   timer.scheduleFunction(SmokeTimer, nil, timer.getTime() + 5)
   timer.scheduleFunction(AddRadioCommands, nil, timer.getTime() + 5)
   timer.scheduleFunction(StatusReport, nil, timer.getTime() + 45)
end


function UnitInAnyPickupZone(unit)
   for i=1,#PickupZones do
       if UnitInZone(unit, PickupZones[i]) then
           return PickupZones[i]
       end
   end
  
   return nil
end

function UnitInAnyDropoffZone(unit)
   for i=1,#DropoffZones do
       if UnitInZone(unit, DropoffZones[i]) then
           return DropoffZones[i]
       end
   end
  
   return nil
end


function UnitInZone(unit, zone)
   if unit:inAir() then
       return false
   end
  
   local triggerZone = trigger.misc.getZone(zone.ZoneName)
   local group = unit:getGroup()
   local groupid = group:getID()
   local unitpos = unit:getPoint()
   local xDiff = unitpos.x - triggerZone.point.x
   local yDiff = unitpos.z - triggerZone.point.z
   local dist = math.sqrt(xDiff * xDiff + yDiff * yDiff)
  
   if dist > triggerZone.radius then
       return false
   end
  
   return true
end

i5 8600k@5.2Ghz, Asus Prime A Z370, 32Gb DDR4 3000, GTX1080 SC, Oculus Rift CV1, Modded TM Warthog Modded X52 Collective, Jetseat, W10 Pro 64

[sIGPIC][/sIGPIC]

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...