Jump to content

Recommended Posts

Posted
1 hour ago, Motion_Blurz said:

Is there a way to destroy crates that others leave behind? 

Yes - you can pick them up, take them above a certain height, and drop them. They will be destroyed because they were dropped from too-high a height.

  • 2 weeks later...
Posted

Yes, mine has stopped working too. I checked the DCS.log and it all seems to be loading and building the tables etc, but there it no CTLD menu item.

 

Posted
7 hours ago, jgreg said:

Yes, mine has stopped working too. I checked the DCS.log and it all seems to be loading and building the tables etc, but there it no CTLD menu item.

 

So, we wait on Ciribob to do something or what?

cold war 1947 - 1991.jpg

Cold War 1947 - 1991                                       Discord
Helicopters Tournaments
Combined Arms Tournaments

You can help me with keeping up the server via PayPal donations: hokumyounis@yahoo.com

Posted
1 hour ago, Kanelbolle said:

Script should work just fine without dynamic slots. With dynamic slots you have to modified the script quite a lot

I don't use dynamic slots. Unless they're generated by default and I'll have to disable them and save the missions again?

  • Like 1

cold war 1947 - 1991.jpg

Cold War 1947 - 1991                                       Discord
Helicopters Tournaments
Combined Arms Tournaments

You can help me with keeping up the server via PayPal donations: hokumyounis@yahoo.com

Posted
11 hours ago, Alpenwolf said:

I don't use dynamic slots. Unless they're generated by default and I'll have to disable them and save the missions again?

Tested it last night with the latest version of CTLD and MIST. Works with no problems.

Make sure you have the latest version of both.

 

 

Posted

 

On 7/14/2024 at 8:52 PM, Kanelbolle said:

Script should work just fine without dynamic slots. With dynamic slots you have to modified the script quite a lot

I do use dynamic slots. Do you have a reference for how the script needs to be changed?

Posted (edited)
1 hour ago, jgreg said:

 

I do use dynamic slots. Do you have a reference for how the script needs to be changed?

I have a test going on my Wargames server at the moment. Have not tested it fully but seam to work as it should.

Basically what i did was use the event BIRTH to add the unitname to the list of allowed pilots if the type of aircraft is correct.
And i changed the getGroupID function to not use mist (since the id of Dynamic slots do not exist in the Mist DB), to using the listplayers functions. (this does not work with AI aircraft).

But as far as i can tell there will be a update to CTLD according to the changelog of DCS:

New Dynamic Respawn slots system has been added that allows mission designers to set up airfields serving any aircraft respawn its associated warehouse without the need of specific placement in the editor. Airfields with active dynamic spawns are specifically marked on the map with a hexagon icon. Parking spots are assigned automatically on a respawn request. We are coordinating with MOOSE, MIST and CTLD developers for supporting these new spawn methods in their scripts (Thank you Pikey, funkyfranky, Grimes, and Ciribob). Additionally, a specific dynamic spawns template system was added to customise dynamic slots properties and restrictions.

Edited by Kanelbolle
  • Thanks 1
Posted

Thankyou for your detailed reply. As I am not too fluent in .lua I guess I will be waiting for an update to CTLD. As a workaround I have added some static slots for Hueys.

Posted

I have an issue that is puzzling me, placing Hercs in as transport in the Kola map, its a small simple single player sandbox mission. I know the Herc is not supported any more, but it still works at many airfields - Using the herc-cargo-ctld code, all the correct naming procedures for logistics & pickzones works fine at some airports, I can use them to load troops into Hueys, and hercs, i can put troops and vehicles into hercs and they parachute out as ground units, but at other airports the game freezes on spawn-in to a particular herc if its cold or hot-start, and the mist, ctld and herc-cargo script just doesnt load. It's just with the Herc. Why would it all work fine at all airports with the Huey but only a few airports in Kola with the Herc? Are there other settings I may not know about, such as time spend loading the textures first?

  • 1 month later...
Posted (edited)

How can i make the ctld work with the dyamic spawn?

 

On 7/16/2024 at 12:03 PM, Kanelbolle said:

I have a test going on my Wargames server at the moment. Have not tested it fully but seam to work as it should.

Basically what i did was use the event BIRTH to add the unitname to the list of allowed pilots if the type of aircraft is correct.
And i changed the getGroupID function to not use mist (since the id of Dynamic slots do not exist in the Mist DB), to using the listplayers functions. (this does not work with AI aircraft).

But as far as i can tell there will be a update to CTLD according to the changelog of DCS:

New Dynamic Respawn slots system has been added that allows mission designers to set up airfields serving any aircraft respawn its associated warehouse without the need of specific placement in the editor. Airfields with active dynamic spawns are specifically marked on the map with a hexagon icon. Parking spots are assigned automatically on a respawn request. We are coordinating with MOOSE, MIST and CTLD developers for supporting these new spawn methods in their scripts (Thank you Pikey, funkyfranky, Grimes, and Ciribob). Additionally, a specific dynamic spawns template system was added to customise dynamic slots properties and restrictions.

 

Hello, would you mind share your Lua for the CTLD?

Edited by Lekaa
Posted (edited)
46 minutes ago, Lekaa said:

How can i make the ctld work with the dyamic spawn?

 

Hello, would you mind share your Lua for the CTLD?

 

No point.. I have changed so much it will brake your mission.

I have customized so much over the years to fit my needs.

Can see if I can post what you have to change/add to make it work with dynamic slots when I have time. (Will only work with players, and not AI if you change it)

Edited by Kanelbolle
Posted
Just now, Kanelbolle said:

No point.. I have changed so much it will brake your mission.

I have customized so much over the years to fit my needs.

Can see if I can post what you have to change/add to make it work with dynamic slots when I have time. (Will only work with players, and not AI if you change it)

 

I don't Use AI for that, only human players.
If you would share the function for using the event for birth and to get the menu to show up.

Even if you share it, i will compare it will the original.

have you tried to get persistence to work?

Posted
3 minutes ago, Lekaa said:

I don't Use AI for that, only human players.
If you would share the function for using the event for birth and to get the menu to show up.

Even if you share it, i will compare it will the original.

have you tried to get persistence to work?

You mean saving unit's for restarts? If so I use my own script (spgg) for this.

https://forum.dcs.world/topic/307157-spgg-simple-persistent-ground-groups-script/

Posted

What should i now do if i so bad want the CTLD to work with dynamic slots? After that i will try to get the persistence to work

37 minutes ago, Kanelbolle said:

Never tried foothold, so can't answer that.

 

Posted (edited)
7 hours ago, Lekaa said:

What should i now do if i so bad want the CTLD to work with dynamic slots? After that i will try to get the persistence to work

 

@Lekaa

 

How to adapt the current version (Release 202401.01) of CTLD work with dynamic slots. (Will only work with players. Will not work with AI if you change this)
Regular slots will also automatically receive CTLD menu if the unit type is in the "ctld.allowedTransportAircraftType" table.


1. Download the CTLD version above.

2. Edit CTLD function : function ctld.getGroupId(_unit)
Search for it with your favorite notepad program. This to circumvent the MIST DB lookup. Dynamics slots will not exist in the MIST DB.

Change to look like this:

function ctld.getGroupId(_unit)

    if _unit ~= nil then
		local _group = _unit:getGroup()
		if _group ~= nil then

			local _groupid = _group:getID()
			return _groupid
		end
	end

    return nil
end

3.Add this to the very end of the CTLD lua fil :

-- WG Dynamic Helicopters

ctld.dynSpawnLog = false


function ctld.findValue(checkArray, checkName)
	for currentIndex = 1, #checkArray do
		if checkArray[currentIndex] == checkName then
			return true
		end
	end
end

function ctld.findIndexOfValue(checkArray, checkName)
	for currentIndex = 1, #checkArray do
		if checkArray[currentIndex] == checkName then
			return currentIndex
		end
	end
end





ctld.allowedTransportAircraftType = {
	"UH-1H",
	"Mi-8MT",
	"Mi-24P",
	"CH-47Fbl1",


}

ctld.ClientHandler = {};
function ctld.ClientHandler:onEvent(event)

	if (world.event.S_EVENT_BIRTH == event.id) then
	

		local BIRTHclient = event.initiator
		
		if BIRTHclient == nil then
                	return -- error!
        	end
			
		
		local _redPlayers = coalition.getPlayers(1)
		local _bluePlayers = coalition.getPlayers(2)
		local _validPlayer = false

		
		for i = 1, #_bluePlayers do
	
			if BIRTHclient == _bluePlayers[i] then
		
				local _group = Unit.getGroup(_bluePlayers[i])
				local  _groupname = _group:getName()
				local  _groupid = _group:getID()
			
				if ctld.dynSpawnLog == true then
					env.info(' -- ctld - _bluePlayers - _groupname:  ' .. _groupname .. ' - _groupid: ' .. _groupid)
				end
				
				_validPlayer = true
			end
		
		end
		
		
		
		for i = 1, #_redPlayers do
	
			if BIRTHclient == _redPlayers[i] then
		
				local _group = Unit.getGroup(_redPlayers[i])
				local  _groupname = _group:getName()
				local  _groupid = _group:getID()
			
				if ctld.dynSpawnLog == true then
					env.info(' -- ctld - _redPlayers - _groupname:  ' .. _groupname .. ' - _groupid: ' .. _groupid)
				end
				
				_validPlayer = true
			end
		
		end
		
		if ctld.dynSpawnLog == true then
			env.info(' -- ctld _bluePlayers - count ' .. #_bluePlayers)
			env.info(' -- ctld _redPlayers - count ' .. #_redPlayers)
		end
					

		if _validPlayer then
			if (BIRTHclient:getGroup() ~= nil) then

					
						local BIRTHgroup = BIRTHclient:getGroup()
						local BIRTHgroupname = BIRTHgroup:getName()
						local BIRTHgroupId = BIRTHgroup:getID()
						-- local BIRTHunitname = Group.getByName(BIRTHgroupname):getUnit(1):getName()
						local BIRTHunitname = BIRTHclient:getName()
						local BIRTHfortype = Unit.getByName(BIRTHunitname)
												
						if ctld.dynSpawnLog == true then
							
							env.info('--- BIRTHunitname Name: ' .. BIRTHunitname)
						end
			
						brithClientName = BIRTHclient:getPlayerName()
						
						if ctld.dynSpawnLog == true then
							env.info('--- Birth Player Name: ' .. brithClientName)
						end
				
						if brithClientName ~= nil then
				
							local BIRTHtype = BIRTHfortype:getTypeName()
							
							if (ctld.findValue(ctld.transportPilotNames, BIRTHunitname)) ~= true then
								
								if ctld.dynSpawnLog == true then
									env.info('__--__ CTLD Dynamic Spawn - Unit Name not in ctld.transportPilotNames   : ' .. BIRTHunitname .. ' - GID: ' .. BIRTHgroupId )
								end
								
								if (ctld.findValue(ctld.allowedTransportAircraftType, BIRTHtype )) == true then
									
									if ctld.dynSpawnLog == true then
										env.info('__--__ CTLD Dynamic Spawn - Unit type  : ' .. BIRTHtype )
									end
									
									table.insert(ctld.transportPilotNames, BIRTHunitname)
									
								end
								
					
							else
					
								if ctld.dynSpawnLog == true then
									env.info('__--__ CTLD Dynamic Spawn - Unit Name found in ctld.transportPilotNames   : ' .. BIRTHunitname )
								end
								
								if (ctld.findValue(ctld.allowedTransportAircraftType, BIRTHtype )) ~= true then
									
									if ctld.dynSpawnLog == true then
										env.info('__--__ CTLD Dynamic Spawn - Removing - Unit type : ' .. BIRTHtype )
									end
									
									local pilotIdx = ctld.findIndexOfValue(ctld.transportPilotNames, BIRTHunitname)
									
									if ctld.dynSpawnLog == true then
										env.info('__--__ CTLD Dynamic Spawn - Removing - Unit name : ' .. ctld.transportPilotNames[pilotIdx] )
									end
									
									table.remove(ctld.transportPilotNames, pilotIdx)
									
								end
						
					
							end
					
				
				
						end 
				
					
				
				

				
			end
	
		end
	

		
		
	
	
	end


end

world.addEventHandler(ctld.ClientHandler)

Hope this helps until a possible new version of CTLD is released.


 

Edited by Kanelbolle
  • Like 1
  • Thanks 3
Posted
3 hours ago, Kanelbolle said:

@Lekaa

 

How to adapt the current version (Release 202401.01) of CTLD work with dynamic slots. (Will only work with players. Will not work with AI if you change this)
Regular slots will also automatically receive CTLD menu if the unit type is in the "ctld.allowedTransportAircraftType" table.


1. Download the CTLD version above.

2. Edit CTLD function : function ctld.getGroupId(_unit)
Search for it with your favorite notepad program. This to circumvent the MIST DB lookup. Dynamics slots will not exist in the MIST DB.

Change to look like this:

function ctld.getGroupId(_unit)

    if _unit ~= nil then
		local _group = _unit:getGroup()
		if _group ~= nil then

			local _groupid = _group:getID()
			return _groupid
		end
	end

    return nil
end

3.Add this to the very end of the CTLD lua fil :

-- WG Dynamic Helicopters

ctld.dynSpawnLog = false


function ctld.findValue(checkArray, checkName)
	for currentIndex = 1, #checkArray do
		if checkArray[currentIndex] == checkName then
			return true
		end
	end
end

function ctld.findIndexOfValue(checkArray, checkName)
	for currentIndex = 1, #checkArray do
		if checkArray[currentIndex] == checkName then
			return currentIndex
		end
	end
end





ctld.allowedTransportAircraftType = {
	"UH-1H",
	"Mi-8MT",
	"Mi-24P",
	"CH-47Fbl1",


}

ctld.ClientHandler = {};
function ctld.ClientHandler:onEvent(event)

	if (world.event.S_EVENT_BIRTH == event.id) then
	

		local BIRTHclient = event.initiator
		
		if BIRTHclient == nil then
                	return -- error!
        	end
			
		
		local _redPlayers = coalition.getPlayers(1)
		local _bluePlayers = coalition.getPlayers(2)
		local _validPlayer = false

		
		for i = 1, #_bluePlayers do
	
			if BIRTHclient == _bluePlayers[i] then
		
				local _group = Unit.getGroup(_bluePlayers[i])
				local  _groupname = _group:getName()
				local  _groupid = _group:getID()
			
				if ctld.dynSpawnLog == true then
					env.info(' -- ctld - _bluePlayers - _groupname:  ' .. _groupname .. ' - _groupid: ' .. _groupid)
				end
				
				_validPlayer = true
			end
		
		end
		
		
		
		for i = 1, #_redPlayers do
	
			if BIRTHclient == _redPlayers[i] then
		
				local _group = Unit.getGroup(_redPlayers[i])
				local  _groupname = _group:getName()
				local  _groupid = _group:getID()
			
				if ctld.dynSpawnLog == true then
					env.info(' -- ctld - _redPlayers - _groupname:  ' .. _groupname .. ' - _groupid: ' .. _groupid)
				end
				
				_validPlayer = true
			end
		
		end
		
		if ctld.dynSpawnLog == true then
			env.info(' -- ctld _bluePlayers - count ' .. #_bluePlayers)
			env.info(' -- ctld _redPlayers - count ' .. #_redPlayers)
		end
					

		if _validPlayer then
			if (BIRTHclient:getGroup() ~= nil) then

					
						local BIRTHgroup = BIRTHclient:getGroup()
						local BIRTHgroupname = BIRTHgroup:getName()
						local BIRTHgroupId = BIRTHgroup:getID()
						-- local BIRTHunitname = Group.getByName(BIRTHgroupname):getUnit(1):getName()
						local BIRTHunitname = BIRTHclient:getName()
						local BIRTHfortype = Unit.getByName(BIRTHunitname)
												
						if ctld.dynSpawnLog == true then
							
							env.info('--- BIRTHunitname Name: ' .. BIRTHunitname)
						end
			
						brithClientName = BIRTHclient:getPlayerName()
						
						if ctld.dynSpawnLog == true then
							env.info('--- Birth Player Name: ' .. brithClientName)
						end
				
						if brithClientName ~= nil then
				
							local BIRTHtype = BIRTHfortype:getTypeName()
							
							if (ctld.findValue(ctld.transportPilotNames, BIRTHunitname)) ~= true then
								
								if ctld.dynSpawnLog == true then
									env.info('__--__ CTLD Dynamic Spawn - Unit Name not in ctld.transportPilotNames   : ' .. BIRTHunitname .. ' - GID: ' .. BIRTHgroupId )
								end
								
								if (ctld.findValue(ctld.allowedTransportAircraftType, BIRTHtype )) == true then
									
									if ctld.dynSpawnLog == true then
										env.info('__--__ CTLD Dynamic Spawn - Unit type  : ' .. BIRTHtype )
									end
									
									table.insert(ctld.transportPilotNames, BIRTHunitname)
									
								end
								
					
							else
					
								if ctld.dynSpawnLog == true then
									env.info('__--__ CTLD Dynamic Spawn - Unit Name found in ctld.transportPilotNames   : ' .. BIRTHunitname )
								end
								
								if (ctld.findValue(ctld.allowedTransportAircraftType, BIRTHtype )) ~= true then
									
									if ctld.dynSpawnLog == true then
										env.info('__--__ CTLD Dynamic Spawn - Removing - Unit type : ' .. BIRTHtype )
									end
									
									local pilotIdx = ctld.findIndexOfValue(ctld.transportPilotNames, BIRTHunitname)
									
									if ctld.dynSpawnLog == true then
										env.info('__--__ CTLD Dynamic Spawn - Removing - Unit name : ' .. ctld.transportPilotNames[pilotIdx] )
									end
									
									table.remove(ctld.transportPilotNames, pilotIdx)
									
								end
						
					
							end
					
				
				
						end 
				
					
				
				

				
			end
	
		end
	

		
		
	
	
	end


end

world.addEventHandler(ctld.ClientHandler)

Hope this helps until a possible new version of CTLD is released.


 

 

Thanks alot !

  • 1 month later...
Posted (edited)

I'm struggling with a simple CTLD mission playing around with the CH-47. I want to be able to transport 40 troops  in the CH-47 and 16 in the Mi-8. I created a new 40-strong unit "Platoon" which shows up in the F10 menu and I imposed the unit load limits but every time I load troops I get 40 into any helo, then the Mi-8 and Huey cant take off as they're too heavy. Lol.

I also set ctld.numberOfTroops = 40, could that be the problem? If the number is < 40 then the Platoon option does not appear.

 

 

Edited by Sprool
  • Recently Browsing   0 members

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