-
Posts
386 -
Joined
-
Last visited
Content Type
Profiles
Forums
Events
Everything posted by Kanelbolle
-
Hi! Found a Zoom bug on the Syria map in Multiplayer with a specific resolution. How to reproduce: 1. Set DCS to resolution 3440x1440 2. Load Syria Map in the Mission Editor 3. Create a spawn on the map for multiplayer 4. Zoom all the way out on the map before saving the mission 5. Launch a Multiplayer server with the mission 6. In the lobby screen, you can now not zoom. 7. Sometimes you can not zoom when spawned also, but a workaround is to select the zoom inn button on top in the F10 map and mark a square to zoom inn on. This also happens in multiplayer servers i join on the Syria map as a client when the parameters above is present. This does not happen if i do the same steps on 1080p. Have not been able to reproduce on other maps. Track file from my own local in-game server included. Video of me trying to zoom in the lobby screen: Graphic settings: server-20240922-122540.trk
-
Look here: https://forum.dcs.world/topic/352098-placeable-ir-strobes/?do=findComment&comment=5503211
-
SPGG - Simple Persistent Ground Groups Script
Kanelbolle replied to Kanelbolle's topic in Mission Editor
Hi! The readme is inside the .zip file you can download from the "Releases" section on the right side of the page on Github https://github.com/AGluttonForPunishment/SPGG/releases/tag/SPGGv027 Be aware that the lua on the front page is not the latest version. (will update it later). Latest release is always under releases.- 89 replies
-
- save
- save groups
-
(and 2 more)
Tagged with:
-
SPGG - Simple Persistent Ground Groups Script
Kanelbolle replied to Kanelbolle's topic in Mission Editor
Update v027 : - Changed spawning commands, see Readme SPGG vxxx file or example mission for new commands (Removed 1956 lines of code) - Fixed tons of errors when using debugging (spgg.showEnvinfo = true)- 89 replies
-
- 1
-
-
- save
- save groups
-
(and 2 more)
Tagged with:
-
SPGG - Simple Persistent Ground Groups Script
Kanelbolle replied to Kanelbolle's topic in Mission Editor
Update v026 : - Added support for saving CTLD crates. (Change to spgg.saveCtldCrates = true) You can now fly crates and drop them, save using the spgg.save() command and restart the game/server, load statics and the crates will be there ready to be deployed!- 89 replies
-
- save
- save groups
-
(and 2 more)
Tagged with:
-
Unless you are using regular slots in combination with dynamic slots, you don't need a script to block them. Dynamic slots does this natively, blue players can't spawn on red airfield/Farps and vice versa. But to answer your question, no it has not been updated. If you open the GitHub page, you can see it was modified 2 year's ago.
-
I have posted a workaround for this in the main CTLD thread:
-
You need to put in the helicopter type to allow it to carry troops and/or crates under : "ctld.unitActions" like this: ctld.unitActions = { ["UH-1H"] = {crates=true, troops=true}, ["Mi-8MT"] = {crates=true, troops=true}, ["SA342Mistral"] = {crates=false, troops=true}, ["Mi-24P"] = {crates=false, troops=true}, ["MosquitoFBMkVI"] = {crates=true, troops=true}, ["CH-47Fbl1"] = {crates=true, troops=true}, } Then use a unit name on your CH-47F in the ME that is present or you added in to : "ctld.transportPilotNames" Exampel if yours look like this, you can use one of the names in the list in the ME as a unit name of your helicopter : helicargo01 ctld.transportPilotNames = { "helicargo01", "helicargo02", "helicargo03", } Hope this helps
-
Complete Transport and Logistics Deployment - CTLD
Kanelbolle replied to Ciribob's topic in Scripting Tips, Tricks & Issues
@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. -
CTLD only supports 1 troop group and 1 crate. You could take a anti-air group and Avenger vehicle.
-
Complete Transport and Logistics Deployment - CTLD
Kanelbolle replied to Ciribob's topic in Scripting Tips, Tricks & Issues
Never tried foothold, so can't answer that. -
Complete Transport and Logistics Deployment - CTLD
Kanelbolle replied to Ciribob's topic in Scripting Tips, Tricks & Issues
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/ -
Complete Transport and Logistics Deployment - CTLD
Kanelbolle replied to Ciribob's topic in Scripting Tips, Tricks & Issues
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) -
There are lots of examples that include this already if you search this forum. You just have to search for this command on the forum: https://wiki.hoggitworld.com/view/DCS_func_getZone and this: https://wiki.hoggitworld.com/view/DCS_func_getHeight Example here: https://forum.dcs.world/topic/168212-mission-for-training-the-basics/#comment-3354088 https://forum.dcs.world/topic/118275-adding-timing-funtion/#comment-2442714 In short, you get the zone and just pull the x and y coordinates out of it. -- from links above and hoggit WP1 = trigger.misc.getZone('BNE_WayPoint_1') trigger.action.outText(WP1.point.x,20) trigger.action.outText(WP1.point.z,20) trigger.action.outText(WP1.radius,20) trigger.action.outText(WP1.point.y,20) WPHight= land.getHeight({x = WP1.point.x, y = WP1.point.z}) -- since its a trigger zone and its not in the air, you get the land hight on the point.
-
Go to the Chinook manual page 121. Shows you the switches that have to be changed to sling load. https://www.digitalcombatsimulator.com/upload/iblock/0fd/n8rej5yziyy44qo42m81aluvij05fsk0/DCS CH-47F Early Access Guide EN.pdf
-
DRAW Tool - Change a drawing/object with script ?
Kanelbolle replied to Kanelbolle's topic in Mission Editor
Here is an example that includes single pad, it had category 2. test_ebc_v003.miz ebc-Example_003.lua -
OPTIONS_ADD_COMMAND_CODES_TO_TOOLTIP function removed? Why?
Kanelbolle replied to Xtorris's topic in Mission Editor
The file does not exist by default. You hve to create it. -
CTLS was not made for dynamic slots. So it doesn't support it. If there will be an update is unclear since the creator has not commented on it.
-
DRAW Tool - Change a drawing/object with script ?
Kanelbolle replied to Kanelbolle's topic in Mission Editor
Here is a version with FARPS. Just need a OR when checking the category. ebc-Example_002.lua test_ebc_v002.miz -
DRAW Tool - Change a drawing/object with script ?
Kanelbolle replied to Kanelbolle's topic in Mission Editor
Not as it it is above, but it is a easy addition to add. You just need to include the FARP category in the function ebc.loadStartingBases() : infoLoaded.desc.category == 1 and in the event handler: CapPlaceDesc.category == 1 -
Converting a mission from one terrain to another - [SOLVED]
Kanelbolle replied to HC_Official's topic in Mission Editor
This is the main reason i ended up creating everything with scripts. Now there is just a trigger to load the scripts and i am done converting it to a different map. A merge functionality would be great. Not sure if the WebEditor has this, but you can check if it does. -
Complete Transport and Logistics Deployment - CTLD
Kanelbolle replied to Ciribob's topic in Scripting Tips, Tricks & Issues
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. -
Complete Transport and Logistics Deployment - CTLD
Kanelbolle replied to Ciribob's topic in Scripting Tips, Tricks & Issues
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. -
Complete Transport and Logistics Deployment - CTLD
Kanelbolle replied to Ciribob's topic in Scripting Tips, Tricks & Issues
Script should work just fine without dynamic slots. With dynamic slots you have to modified the script quite a lot -
Here is a temporary partial solution to the problem. it will not stop players from joining a team, but will send the player back to spectate if joining a slot on the team you want to block. env.info('-- Loading reslot red to spectate script!') reslot = {} -- Select what side to reslot to spectator: 1 = Red, 2 = Blue reslot.sidetospectate = 1 reslot.active = true reslot.tickTime = 1 -- second function reslot.check(arg, time) if reslot.active == true then local _playerslist = net.get_player_list() for _playerIdx, _playerId in pairs( _playerslist ) do local _playerInfo = net.get_player_info( _playerId ) if _playerInfo ~=nil and _playerInfo.side == reslot.sidetospectate then net.send_chat('Player is on wrong side! Forcing player back to spectate - Player: ' .. _playerInfo.name , true) net.force_player_slot(_playerId, 0, '') end end -- of for _playerIdx, _playerId in pairs( _playerslist ) do return time + reslot.tickTime else env.info('-- Schedule reslot.check has been canceled!') return nil end end -- of function reslot.check() timer.scheduleFunction(reslot.check, 9999, timer.getTime() + reslot.tickTime) -- Run schedule